diff --git a/Makefile b/Makefile index ac5b298df4..d2eee36de6 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ REPO := $(notdir $(shell pwd)) BIN := apimachinery # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) -CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false,maxDescLen=0" +CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false" # https://github.com/appscodelabs/gengo-builder CODE_GENERATOR_IMAGE ?= appscode/gengo:release-1.16 API_GROUPS ?= kubedb:v1alpha1 catalog:v1alpha1 config:v1alpha1 dba:v1alpha1 diff --git a/api/crds/bindata.go b/api/crds/bindata.go index b614ebd93c..f35616b2cd 100644 --- a/api/crds/bindata.go +++ b/api/crds/bindata.go @@ -20,7 +20,6 @@ // dba.kubedb.com_postgresmodificationrequests.yaml // dba.kubedb.com_proxysqlmodificationrequests.yaml // dba.kubedb.com_redismodificationrequests.yaml -// kubedb.com_dormantdatabases.yaml // kubedb.com_elasticsearches.yaml // kubedb.com_etcds.yaml // kubedb.com_mariadbs.yaml @@ -32,7 +31,6 @@ // kubedb.com_postgreses.yaml // kubedb.com_proxysqls.yaml // kubedb.com_redises.yaml -// kubedb.com_snapshots.yaml package crds import ( @@ -109,7 +107,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _catalogKubedbCom_elasticsearchversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcd\x6e\xdb\x38\x10\xbe\xeb\x29\xe6\x05\xac\x85\xb1\x97\x85\x6e\x59\x27\x9b\x75\x9b\xa6\x46\xf3\x73\x0d\x46\xe2\xc4\x66\x4d\x91\x0c\x39\x74\x63\x14\x7d\xf7\x82\xa2\x65\x4b\xb6\x9c\x38\x05\x82\xa2\xbc\xcd\xa7\xf9\xf9\xe6\x8f\x14\x5a\x79\x4f\xce\x4b\xa3\x0b\x40\x2b\xe9\x99\x49\x47\xc9\xe7\xcb\x7f\x7c\x2e\xcd\x5f\xab\x71\x49\x8c\xe3\x6c\x29\xb5\x28\x60\x12\x3c\x9b\xfa\x0b\x79\x13\x5c\x45\xe7\xf4\x28\xb5\x64\x69\x74\x56\x13\xa3\x40\xc6\x22\x03\xa8\x1c\x61\x04\x6f\x65\x4d\x9e\xb1\xb6\x05\xe8\xa0\x54\x06\xa0\xb0\x24\xe5\xa3\x0e\x00\x5a\x5b\xc0\x32\x94\x24\xca\x0c\x40\x63\x4d\x05\x90\x42\xcf\xb2\xf2\x84\xae\x5a\xac\x12\x2f\x9f\x57\xc8\xa8\xcc\x3c\x4f\xca\x79\x65\xea\xcc\x5b\xaa\xa2\x1b\x14\xa2\x89\x8f\x6a\xe6\xa4\x66\x72\x13\xa3\x42\xad\x9b\x10\x23\xf8\x70\xf3\xf9\x7a\x86\xbc\x28\x20\x8f\x06\xf9\xc6\x63\x13\x3e\x05\xbc\xef\x20\xbc\xb6\x54\x80\x67\x27\xf5\x7c\xd0\x5c\x94\xb9\xac\x71\x4e\x1d\xfb\xf3\x7f\x1f\xa6\x9f\xce\x2e\x2f\x4e\x73\x80\x81\x17\x33\x15\xe6\xb2\x4b\xe1\xec\xee\xf6\xff\x87\xd9\xd5\xdd\xe5\xf4\xfa\x44\x1a\x64\x1d\x55\xc8\x24\xba\x44\xfa\x60\x72\x52\x1a\xa3\x08\xf5\xbe\x97\xb6\x57\xf9\x41\xa3\xba\xb4\x36\x79\x26\x4f\x02\x39\x8a\x73\x67\x82\x2d\x60\xa0\x21\xc9\x6c\xd3\xda\xc8\x63\x6e\x9c\x6c\xe5\x51\xb4\x47\xcf\xc6\xd1\x46\xde\xf6\x3d\x0a\x68\xad\xaf\x8c\x48\xdf\xd2\x9c\x5d\x74\x07\xa1\xdb\x24\x25\x3d\x7f\x3c\xaa\x72\x25\x3d\x37\x6a\x56\x05\x87\xea\xc8\x40\x35\x1a\x7e\x61\x1c\x5f\xef\x38\x8f\x80\x7c\x77\x3e\xbc\xd4\xf3\xa0\xd0\x0d\xfb\xc8\x00\xac\x23\x4f\x6e\x45\x77\x7a\xa9\xcd\x37\xfd\x9f\x24\x25\x7c\x01\x8f\xa8\x7c\xcc\xc4\x57\x26\x16\x6e\xa2\x82\x67\x72\x11\x08\xa5\xdb\xec\x8d\x2f\xe0\xfb\x8f\x0c\x60\x85\x4a\x8a\xa6\x03\x89\x83\xb1\xa4\xcf\x66\xd3\xfb\xbf\x6f\xaa\x05\xd5\x98\xc0\x18\xc9\x58\x72\xbc\x2d\x67\xda\x9e\xed\xde\x6e\xb1\x83\xd9\x49\xa7\xa9\xe8\x6b\x4a\xdd\xfd\xed\x2b\x9a\xf2\x2b\x55\xbc\x85\xdb\xcd\x6b\xcf\x10\xb9\x86\xe0\x76\xd6\xfb\xf8\x91\xf8\xf1\x88\x72\x5f\xf5\x98\xf3\x78\x9a\x55\x3c\x84\x5f\xf0\x0f\xe0\xe8\x29\x48\x47\x62\xdf\x6c\x04\xbb\xc5\x7e\x25\xff\x86\xe8\x76\xd9\x86\x73\xdb\xed\xdd\xee\xd0\xb3\x35\x8e\xc9\xfd\x21\x29\xc6\x7b\x7d\x62\x34\xa3\xd4\xef\xcf\x19\x60\xfd\x34\x7d\xf7\x5c\x47\x6d\x94\x53\x6b\x60\x8d\xb8\xa1\x2a\x38\xc9\xeb\x99\x51\xb2\x1a\xc8\xf7\xa5\x4a\xc4\x75\x2a\xd1\x53\x63\xbb\x8e\x57\xcd\x9b\xcb\xe2\x35\x5a\xbf\x30\xcc\xe4\x7e\xd9\xcb\xf1\x22\x1d\x12\x3c\x50\x19\x24\x70\x6a\xfd\xd8\x18\xf5\xa6\x8a\xfd\xc6\x79\x5f\x1d\x5e\xa6\x2f\x04\x1e\x0a\x3a\x82\xbd\xe7\xbd\x85\x37\xef\x5c\x2b\xb6\x17\x41\x0f\xec\xad\x5b\xef\xcb\xc0\x10\xf6\xbe\x37\x45\xee\x21\xdd\x57\xec\x68\xd6\x7b\x50\x9b\x3e\xac\xc6\xa8\xec\x02\xc7\x3b\x6c\xf3\x2f\x95\xfe\x0a\x3a\x9f\x01\x9a\xe7\x4f\x14\xc0\x2e\xa4\x3a\xc7\x17\x3e\x76\x30\x21\x3f\x03\x00\x00\xff\xff\xcc\xe0\x01\x36\x5b\x0a\x00\x00") +var _catalogKubedbCom_elasticsearchversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x57\xcd\x8e\xdb\x36\x10\xbe\xfb\x29\x06\xe8\x21\x97\x58\xc6\xa2\x97\x42\xb7\xad\xb3\x4d\xdd\x26\xa9\x11\x6f\xf6\x1a\x8c\xc4\xb1\xcd\x2e\x45\x32\x9c\xa1\x1b\xb7\xe8\xbb\x17\xa4\x2c\x5b\xb2\xb5\xce\x16\x68\x0a\x44\x37\x8e\x86\xf3\xf3\x7d\x9c\x19\x12\xbd\x7e\xa0\xc0\xda\xd9\x12\xd0\x6b\xfa\x2c\x64\xd3\x8a\x8b\xc7\x1f\xb8\xd0\x6e\xb6\xbb\xa9\x48\xf0\x66\xf2\xa8\xad\x2a\x61\x1e\x59\x5c\xf3\x9e\xd8\xc5\x50\xd3\x2b\x5a\x6b\xab\x45\x3b\x3b\x69\x48\x50\xa1\x60\x39\x01\xa8\x03\x61\x12\xde\xeb\x86\x58\xb0\xf1\x25\xd8\x68\xcc\x04\xc0\x60\x45\x86\x93\x0e\x00\x7a\x5f\xc2\x63\xac\x48\x55\x13\x00\x8b\x0d\x95\x40\x06\x59\x74\xcd\x84\xa1\xde\xee\xda\xb8\xb8\xa8\x51\xd0\xb8\x4d\xd1\x2a\x17\xb5\x6b\x26\xec\xa9\x4e\x66\x50\xa9\xec\x1f\xcd\x32\x68\x2b\x14\xe6\xce\xc4\xc6\x66\x17\x53\xf8\x65\xf5\xdb\xbb\x25\xca\xb6\x84\x22\x6d\x28\x0e\x16\xb3\xfb\xd6\xe1\x43\x4f\x22\x7b\x4f\x25\xb0\x04\x6d\x37\xa3\xdb\x55\x55\xe8\x06\x37\xd4\xdb\xff\xea\xc7\x8f\x8b\xb7\xb7\xaf\xef\x9e\x67\x00\xa3\x6c\x97\x26\x6e\x74\x3f\x84\xdb\x0f\xf7\x3f\x7f\x5c\xbe\xf9\xf0\x7a\xf1\xee\x99\x61\x90\x0f\x54\xa3\x90\xea\x07\x32\x14\xb6\x46\x2a\xe7\x0c\xa1\x3d\xb7\xd2\x71\x55\x5c\x10\xd5\x0f\xeb\x90\x67\x6b\x49\xa1\xa4\xe5\x26\xb8\xe8\x4b\x18\x21\xa4\xdd\x76\xa0\x36\xc5\xb1\x71\x41\x77\xeb\x69\xda\x8f\x2c\x2e\xd0\x61\x7d\xe4\x3d\x2d\xd0\x7b\xae\x9d\x6a\xff\xb5\xe7\xec\xae\x7f\x10\xfa\x24\x19\xcd\xf2\xeb\x93\x2a\x6f\x34\x4b\x56\xf3\x26\x06\x34\x4f\x1c\xa8\xac\xc1\x5b\x17\xe4\xdd\x29\xe6\x29\x10\xf7\xcf\x07\x6b\xbb\x89\x06\xc3\xb8\x8d\x09\x80\x0f\xc4\x14\x76\xf4\xc1\x3e\x5a\xf7\x87\xfd\x49\x93\x51\x5c\xc2\x1a\x0d\xa7\x4c\xb8\x76\x09\xb8\xb9\x89\x2c\x14\x92\x20\x56\xe1\x50\x37\x5c\xc2\x5f\x7f\x4f\x00\x76\x68\xb4\xca\x0c\xb4\x31\x38\x4f\xf6\x76\xb9\x78\xf8\x7e\x55\x6f\xa9\xc1\x56\x98\x3c\x39\x4f\x41\x8e\x70\xb6\xd5\x73\xac\xdb\xa3\x0c\x40\x11\xd7\x41\xfb\x6c\x11\x5e\x24\x53\xad\x0e\xa8\x54\xa9\xc4\x20\x5b\x82\x43\x0a\xa4\x80\xb3\x1b\x70\x6b\x90\xad\x66\x08\x94\x73\xb2\x92\x43\xea\x99\x85\xa4\x82\x16\x5c\xf5\x3b\xd5\x52\xc0\x2a\xe5\x1d\x38\x61\x18\x8d\x82\xda\xd9\x1d\x05\x81\x40\xb5\xdb\x58\xfd\xe7\xd1\x32\x83\xb8\xec\xd2\xa0\xd0\x81\x99\xee\xcb\xd5\x6a\xd1\x24\x10\x22\xbd\x04\xb4\x0a\x1a\xdc\x43\xa0\xe4\x03\xa2\xed\x59\xcb\x2a\x5c\xc0\x5b\x17\x08\xb4\x5d\xbb\x12\xb6\x22\x9e\xcb\xd9\x6c\xa3\xa5\xeb\x54\xb5\x6b\x9a\x68\xb5\xec\x67\xb5\xb3\x12\x74\x15\xc5\x05\x9e\x29\xda\x91\x99\xb1\xde\x4c\x13\x7f\x5a\xa8\x96\x18\x68\x86\x5e\x4f\x73\xe0\x56\x72\x93\x69\xd4\x77\x47\x7a\x5e\xf4\x22\x3d\x2b\xc7\xf6\xcb\x87\xf4\x49\xdc\xd3\xf9\x04\xcd\x80\x87\x6d\x6d\xfc\x27\x78\x93\x28\xa1\xf2\xfe\x6e\x75\x0f\x9d\xd3\x4c\xc1\x10\xf3\x8c\xf6\x69\x1b\x9f\x80\x4f\x40\x69\xbb\xa6\xd0\x12\xb7\x0e\xae\xc9\x16\xc9\x2a\xef\xb4\x95\xbc\xa8\x8d\x26\x3b\x04\x9d\x63\xd5\x68\x49\x4c\x7f\x8a\xc4\x92\xf8\x29\x60\x8e\xd6\x3a\x81\x8a\x20\xfa\x54\xe7\xaa\x80\x85\x85\x39\x36\x64\xe6\xc8\xf4\xd5\x61\x4f\x08\xf3\x34\x41\xfa\x65\xe0\xfb\x63\x66\xa8\xd8\xa2\x75\x14\x77\x03\x62\x94\xa1\xb1\xd6\xb1\xf2\x54\x27\xd2\x12\x72\x69\x33\xac\x5d\x18\x96\x3e\xf4\xdb\xc3\xd3\x95\x99\xab\xf3\xd8\xe8\x87\xf2\xb3\x38\x6e\xa3\x6c\x13\x10\x75\x2e\xb8\xd4\xb4\x36\xda\x42\x64\x52\x50\xed\x87\x51\x42\xdd\x36\x92\xe2\xcc\xde\x28\x4a\xd9\x51\x75\xd5\xf5\x2b\x14\xac\x90\x09\x16\xc7\x89\xf6\xe5\xb4\xd2\x97\x27\xe0\xa5\xf8\x4a\x24\x90\x8f\x9b\x0e\xa4\xce\xb7\x4d\x41\x8f\x78\x1f\xe5\xb3\x4d\xa0\x9b\x71\xd7\x53\x3b\xaa\x75\x8c\x31\x44\xc6\xca\x10\x54\x31\xd5\xd3\x06\x83\x22\x05\xc8\xe0\x2a\x76\x86\x84\x52\xf7\xb9\x48\xa9\x22\x16\xc0\x9d\xd3\x8a\xd4\xcb\x14\x95\xae\xd1\x98\x3d\xa8\x48\xa9\xaf\x6d\x71\x97\x0a\xb9\x22\xb2\xc0\xd1\x53\x60\x52\xa4\xc6\xf9\x39\x0d\xe2\xd3\x47\x9f\xbd\x0b\x42\xe1\x6a\x2e\x77\x07\xa5\x6f\x89\xa6\x74\x25\x9c\x3b\x2b\xa8\xed\x17\xb2\x5b\x58\x2d\x69\x7a\xb4\xaa\xff\x4b\x8e\x00\xfb\x4f\x8b\xaf\x8e\xcd\xb4\xf3\xf2\x5c\xcc\xbc\x53\x2b\xaa\x63\xd0\xb2\x5f\x3a\xa3\xeb\x91\x7c\x07\xc8\x2d\x57\xcb\xf6\xc2\xf5\x2f\xe0\x52\x87\x92\xcf\x0e\xf6\xe9\xea\xf3\x9f\x61\x70\x69\xfa\xb9\x89\x8b\x73\xe6\x7a\xaa\xf7\x49\xe3\x5b\x3a\xff\xbb\xcb\x7b\xd9\x45\x52\x0f\x17\xa3\xe4\x4a\x6c\x63\x71\x4d\xe1\xec\x31\xd1\x89\x0f\xb7\xea\x6e\xd9\x75\x99\x81\x70\x50\xa1\x83\x3f\x23\xe7\x70\xf0\x3f\xd3\x35\x90\x5c\x0e\xc5\x11\x60\xce\x44\x1d\x42\xb0\xbb\x41\xe3\xb7\x78\x73\x92\x1d\x5e\x6e\xed\x1b\xa4\xf7\x1b\x20\x5f\xb6\x55\x09\x12\x62\x4b\x45\x7a\x4f\x24\x92\x5b\xc9\x3f\x01\x00\x00\xff\xff\x84\xa8\x09\xf5\xc9\x0e\x00\x00") func catalogKubedbCom_elasticsearchversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -124,12 +122,12 @@ func catalogKubedbCom_elasticsearchversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_elasticsearchversions.yaml", size: 2651, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_elasticsearchversions.yaml", size: 3785, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_etcdversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\xcd\x72\xd3\x30\x10\xbe\xfb\x29\xf6\x05\x62\x26\xc3\x85\xd1\xad\xb4\x85\x29\x3f\xa5\x43\xa1\x57\x66\x2d\x6d\x13\x11\x59\x12\xd2\x2a\x94\x61\x78\x77\x46\x96\xed\xd8\x4e\x4a\x39\xc2\xde\xf6\xd3\xfe\x7c\xfe\xb4\x2b\xa3\xd7\x77\x14\xa2\x76\x56\x00\x7a\x4d\x0f\x4c\x36\x7b\xb1\xde\xbd\x88\xb5\x76\xcf\xf6\xeb\x86\x18\xd7\xd5\x4e\x5b\x25\xe0\x3c\x45\x76\xed\x47\x8a\x2e\x05\x49\x17\x74\xaf\xad\x66\xed\x6c\xd5\x12\xa3\x42\x46\x51\x01\xc8\x40\x98\xc1\x4f\xba\xa5\xc8\xd8\x7a\x01\x36\x19\x53\x01\x18\x6c\xc8\xc4\x1c\x03\x80\xde\x0b\xd8\xa5\x86\x54\x53\x01\x58\x6c\x49\x00\xb1\x54\xfb\x42\x27\xd6\x12\x19\x8d\xdb\xd4\x25\xa6\x96\xae\xad\xa2\x27\x99\xb3\x51\xa9\xae\x2d\x9a\x9b\xa0\x2d\x53\x38\x77\x26\xb5\xb6\xab\xbc\x82\x37\xb7\x1f\xae\x6f\x90\xb7\x02\xea\x9c\x50\xf7\x15\xbb\xae\xa5\xcf\xdd\x04\xe1\x1f\x9e\x04\x44\x0e\xda\x6e\x4e\xa6\xab\xa6\xd6\x2d\x6e\x68\x92\x7f\xf1\xf2\xcb\xd5\xfb\xb3\xd7\x97\x7f\x59\x80\x7c\x20\x89\x4c\x6a\x5a\x62\x0e\x96\x22\x8d\x73\x86\xd0\x2e\xab\x0c\xe2\xd6\x47\xca\x4e\x0a\x9e\xf5\x0c\x4b\x25\x85\x9c\xdd\x4d\x70\xc9\x0b\x38\x21\x65\x49\xeb\xef\x22\xf3\xd8\xb8\xa0\x07\x7f\x95\xf3\x31\xb2\x0b\xd4\xfb\xe3\x45\x65\x07\xbd\x8f\xd2\xa9\x72\x56\x06\xe3\x92\xa5\x9a\xaa\x6a\x74\xe4\xb7\xcb\x93\x77\x3a\x72\x77\xea\x4d\x0a\x68\xe6\xf7\xdd\x1d\xc4\xad\x0b\x7c\x7d\x20\xb6\xca\x21\xd3\xfb\x8b\xda\x6e\x92\xc1\x30\xcb\xad\x00\x7c\xa0\x48\x61\x4f\x9f\xed\xce\xba\xef\xf6\x95\x26\xa3\xa2\x80\x7b\x34\x31\xd3\x8c\xd2\x65\x55\xce\x4d\x8a\x4c\x21\x03\xa9\x09\xfd\x14\x47\x01\x3f\x7f\x55\x00\x7b\x34\x5a\x75\xf2\x96\xde\xce\x93\x3d\xbb\xb9\xba\x7b\x7e\x2b\xb7\xd4\x62\x01\x73\x27\xe7\x29\xf0\xa8\x55\x99\xe5\x71\x8b\x46\xec\x68\x30\x8a\x75\x72\x3d\x15\x34\xdd\xa6\x79\xa0\x6b\xbe\x92\xe4\x11\x1e\x16\x62\xb0\x53\xe4\xb2\xa9\x66\xee\x3f\x1e\x99\xad\x1b\xf7\x63\xf8\x11\xb2\xc5\x02\x7d\x4b\x3a\x90\x5a\xa6\xad\xe0\xb0\x3c\x4f\x7c\x4c\x47\x74\x5c\x8b\x65\xa1\xe5\x86\x1c\x8c\x1e\xbc\x0b\x4c\xe1\x3f\xf9\x44\x76\xce\x1c\x31\xfa\x47\xb9\xee\x8f\xa7\xfa\x0f\x8d\x4f\x35\x5d\x41\xff\x6c\x0c\xee\x70\x5b\x33\xb0\xd3\x64\x86\x4c\x97\xfe\x51\x92\x0b\x68\x60\x0b\xfb\x35\x1a\xbf\xc5\xf5\x01\xeb\x7f\x0d\xe5\xa9\x9c\x1c\x03\x74\xcf\x86\x12\xc0\x21\x15\x59\xf2\xb3\x97\x05\x2f\xc8\xef\x00\x00\x00\xff\xff\xaa\xc7\x7d\x2a\x21\x07\x00\x00") +var _catalogKubedbCom_etcdversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\x4d\x6f\x23\x37\x0f\xbe\xfb\x57\x10\x78\x0f\x7b\x59\x8f\x11\xbc\x97\x62\x6e\xa9\x93\x16\x69\xbb\xdb\x60\x93\xe6\x5a\x70\x24\xda\x56\xa3\x91\x54\x91\x72\x37\x2d\xfa\xdf\x0b\x6a\x3c\xf6\xf8\x23\xd9\x5e\x7a\xd8\xb9\x91\x22\x1f\x92\x0f\x45\x8e\x30\xb9\x27\xca\xec\x62\x68\x01\x93\xa3\xcf\x42\x41\x25\x6e\x9e\xbf\xe1\xc6\xc5\xc5\xf6\xaa\x23\xc1\xab\xd9\xb3\x0b\xb6\x85\x65\x61\x89\xfd\x27\xe2\x58\xb2\xa1\x1b\x5a\xb9\xe0\xc4\xc5\x30\xeb\x49\xd0\xa2\x60\x3b\x03\x30\x99\x50\x95\x8f\xae\x27\x16\xec\x53\x0b\xa1\x78\x3f\x03\xf0\xd8\x91\x67\xb5\x01\xc0\x94\x5a\x78\x2e\x1d\xd9\x6e\x06\x10\xb0\xa7\x16\x48\x8c\xdd\x0e\xe9\x70\x63\x50\xd0\xc7\x75\x33\xd8\x34\x26\xf6\x33\x4e\x64\xd4\x1b\xad\xad\x61\xd1\xdf\x67\x17\x84\xf2\x32\xfa\xd2\x87\x8a\x3c\x87\x1f\x1e\x7e\xfe\x78\x8f\xb2\x69\xa1\x51\x87\x66\x87\x58\xa3\x0e\x71\x9e\x26\x1a\x79\x49\xd4\x02\x4b\x76\x61\x7d\xd1\xdd\x76\x8d\xeb\x71\x4d\x13\xff\x9b\x6f\x7f\xbd\xfb\x70\xfd\xfd\xed\xbf\x04\xa0\x94\xc9\xa0\x90\x9d\x42\x1c\x2b\x07\x90\x2e\x46\x4f\x18\x4e\x51\x46\x72\x9b\x33\x66\x27\x80\xd7\xbb\x0c\x07\x24\x8b\xa2\xe2\x3a\xc7\x92\x5a\xb8\x40\xe5\xe0\xb6\xeb\x85\xe6\xb1\x8e\xd9\x8d\xf2\x5c\xfd\x91\x25\x66\xda\xc9\xfb\x46\xa9\x80\x29\xb1\x89\x76\x38\x1b\x2e\xc6\xad\x18\x3b\x65\xd5\x3b\x96\x1f\x4f\x4f\x7e\x72\x2c\xf5\x34\xf9\x92\xd1\x1f\xf7\xbb\x1e\xf0\x26\x66\xf9\x78\x48\x6c\xae\x26\xd3\xfe\xb1\x0b\xeb\xe2\x31\x1f\xf9\xce\x00\x52\x26\xa6\xbc\xa5\x5f\xc2\x73\x88\x7f\x84\xef\x1c\x79\xcb\x2d\xac\xd0\xb3\xa6\xc9\x26\x2a\x2b\x4b\x5f\x58\x28\xab\xa2\x74\x79\x77\x8b\xb9\x85\xbf\xfe\x9e\x01\x6c\xd1\x3b\x5b\xe9\x1d\x62\xc7\x44\xe1\xfa\xfe\xee\xe9\xff\x0f\x66\x43\x3d\x0e\x4a\x8d\x14\x13\x65\xd9\x73\x35\xdc\xe5\xfd\x14\xed\x75\x00\x96\xd8\x64\x97\x2a\x22\xbc\x53\xa8\xc1\x06\xac\xce\x0d\x31\xc8\x86\x60\x57\x02\x59\xe0\x1a\x06\xe2\x0a\x64\xe3\x18\x32\xd5\x9a\x82\xd4\x94\x26\xb0\xa0\x26\x18\x20\x76\xbf\x91\x91\x06\x1e\xb4\xee\xcc\xca\x5d\xf1\x16\x4c\x0c\x5b\xca\x02\x99\x4c\x5c\x07\xf7\xe7\x1e\x99\x41\x62\x0d\xe9\x51\x68\xd7\x88\xf1\xab\x43\x14\xd0\x2b\x09\x85\xde\x03\x06\x0b\x3d\xbe\x40\x26\x8d\x01\x25\x4c\xd0\xaa\x09\x37\xf0\x21\x66\x02\x17\x56\xb1\x85\x8d\x48\xe2\x76\xb1\x58\x3b\x19\xf7\x86\x89\x7d\x5f\x82\x93\x97\x85\x89\x41\xb2\xeb\x8a\xc4\xcc\x0b\x4b\x5b\xf2\x0b\x76\xeb\x39\x66\xb3\x71\x42\x46\x4a\xa6\x05\x26\x37\xaf\x89\x07\xa9\xb3\xdf\xdb\xff\xed\xdb\xf3\x6e\x92\xe9\xc9\xac\x0d\x5f\xbd\x81\xaf\xf2\xae\xb7\x10\x1c\x03\xee\xdc\x86\xfc\x0f\xf4\xaa\x4a\x59\xf9\x74\xfb\xf0\x08\x63\xd0\xda\x82\x63\xce\x2b\xdb\x07\x37\x3e\x10\xaf\x44\xb9\xb0\xa2\x3c\x34\x6e\x95\x63\x5f\x11\x29\xd8\x14\x5d\x90\x2a\x18\xef\x28\x1c\x93\xce\xa5\xeb\x9d\x68\xa7\x7f\x2f\xc4\xa2\xfd\x69\x60\x89\x21\x44\x81\x8e\xa0\x24\x1d\x62\xdb\xc0\x5d\x80\x25\xf6\xe4\x97\xc8\xf4\x9f\xd3\xae\x0c\xf3\x5c\x29\xfd\x32\xf1\xd3\xa5\x7f\x6c\x38\xb0\xb5\x57\x8f\x7b\xfb\x62\x87\x26\x0b\xe2\x21\x91\xd1\x5e\x29\x61\xea\x03\xab\x98\x21\x45\x96\x75\x26\x86\xe9\x1e\x78\x7d\x16\x2b\x7e\x77\x2c\x9f\x44\xbc\x41\xc1\x0e\x99\xe0\x6e\xbf\xd7\xbf\x8c\x59\xc7\x44\xed\xcf\xd5\xaf\xd0\x33\x7c\xda\x5d\x97\xc9\x9e\xba\xcd\xc1\x5d\x88\x7e\x91\xbe\xa1\x80\xf1\x7f\xf1\x76\x69\x7b\xb3\x91\x2e\x86\xc2\xd8\x79\x82\xae\xe8\xf5\x5d\x63\xb6\x64\x01\x19\x62\xc7\xd1\x93\x90\x0e\xfb\x59\x49\x1d\xb1\x00\x6e\xa3\xb3\x64\xdf\x6b\x56\xce\xa0\xf7\x2f\x60\x0b\xe9\x1a\xd9\xe0\x56\xe7\xa6\x23\x0a\xc0\x25\x51\x66\xb2\x64\x9b\x8b\xc5\x1c\x7e\x6a\x87\x8f\x3e\xa7\x98\x85\xf2\x9b\xb5\xdc\xee\x8c\xbe\xa6\x36\x49\x8c\xfe\x2c\xa3\xa3\xaa\x1e\xd5\xe2\x6b\x2a\x69\x7b\xfe\x67\x3b\x2b\xea\xe9\x6c\x34\xdf\xc8\xed\x52\x5e\x73\xd8\xbd\x2e\x46\x71\xbc\x21\x47\xca\xca\xee\x91\xe6\x7c\x27\x5c\xa8\xe3\x44\x35\x16\x04\xdb\x2b\xf4\x69\x83\x57\x07\xdd\xee\x05\x39\xbc\xa8\x26\xc7\x00\xf5\x75\x61\x5b\x90\x5c\x06\xe6\xf4\x75\xa4\x3d\x19\x34\xff\x04\x00\x00\xff\xff\xd7\x49\xdc\xe2\x48\x0b\x00\x00") func catalogKubedbCom_etcdversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -144,12 +142,12 @@ func catalogKubedbCom_etcdversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_etcdversions.yaml", size: 1825, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_etcdversions.yaml", size: 2888, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_memcachedversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\x4d\x73\xd3\x3c\x10\xbe\xfb\x57\xec\x1f\x88\xdf\xc9\xbc\x17\xc6\xb7\xd2\x02\x53\xa0\x25\x43\xa1\x57\x66\x2d\x6d\x13\x11\x7d\x21\xad\x42\x3b\x0c\xff\x9d\x91\x65\x27\x4e\xec\x7e\x1c\xb8\xb0\xb7\x7d\xb4\xfb\xe8\xf1\x7e\xc8\xe8\xd5\x2d\x85\xa8\x9c\x6d\x00\xbd\xa2\x7b\x26\x9b\xbd\x58\x6f\x5f\xc5\x5a\xb9\xff\x76\xcb\x96\x18\x97\xd5\x56\x59\xd9\xc0\x79\x8a\xec\xcc\x67\x8a\x2e\x05\x41\x17\x74\xa7\xac\x62\xe5\x6c\x65\x88\x51\x22\x63\x53\x01\x88\x40\x98\xc1\x2f\xca\x50\x64\x34\xbe\x01\x9b\xb4\xae\x00\x34\xb6\xa4\x63\x8e\x01\x40\xef\x1b\xd8\xa6\x96\x64\x5b\x01\x58\x34\xd4\x80\x21\x23\x50\x6c\x48\xee\x8a\xa6\x58\x0b\x64\xd4\x6e\x5d\x97\xc0\x5a\x38\x53\x45\x4f\x22\x53\xa0\x94\xdd\xdd\xa8\x57\x41\x59\xa6\x70\xee\x74\x32\xb6\xa3\x5f\xc0\xfb\x9b\x4f\xd7\x2b\xe4\x4d\x03\x75\x4e\xa8\x7b\xc6\xee\xea\x72\xd9\xed\x08\xe1\x07\x4f\x0d\x44\x0e\xca\xae\x67\xd3\x65\x5b\x2b\x83\x6b\x1a\xe5\x5f\xbc\xfe\x76\x79\x75\xf6\xee\xcd\x0b\x09\xc8\x07\x12\xc8\x24\xc7\x14\xc7\x60\x21\x69\x9d\xd3\x84\xf6\x94\x65\xa8\x70\x3d\x29\xef\x88\xf0\xac\x57\x58\x98\x24\x72\x76\xd7\xc1\x25\xdf\xc0\x4c\x29\x4b\x5a\xdf\x90\xac\x63\xed\x82\x1a\xfc\x45\xce\xc7\xc8\x2e\x50\xef\xef\xbb\x95\x1d\xf4\x3e\x0a\x27\xcb\x59\x99\x8e\xab\xa1\x7d\xe3\xd2\x6a\x15\xf9\xc3\xec\xf1\x47\x15\xb9\x0b\xf1\x3a\x05\xd4\x33\xed\xef\x4e\xe3\xc6\x05\xbe\x3e\xe8\x5c\x80\x11\xe3\x6e\x46\x65\xd7\x49\x63\x98\xe6\x57\x00\x3e\x50\xa4\xb0\xa3\xaf\x76\x6b\xdd\x4f\xfb\x56\x91\x96\xb1\x81\x3b\xd4\x31\x2b\x8f\xc2\xe5\x42\x9d\xeb\x14\x99\x42\x06\x52\x1b\xfa\xe9\x8e\x0d\xfc\xfa\x5d\x01\xec\x50\x2b\xd9\x55\xbc\xdc\xef\x3c\xd9\xb3\xd5\xe5\xed\xff\x37\x62\x43\x06\x0b\x98\x6f\x72\x9e\x02\xef\xcb\x57\x66\x7c\xbf\x5d\x7b\x6c\x32\x2b\xc5\xba\x0a\x3e\x17\x34\xde\xb2\xe3\x40\xd7\x7e\x27\xc1\x7b\x78\xd8\x91\xc1\xe6\xc4\x65\x93\xed\xb1\xff\x78\x64\xb6\x6e\x03\xa6\xf0\x23\x62\x8b\x05\xfa\x91\x54\x20\x79\x9a\xb6\x80\xc3\x3e\x3d\xf3\x31\x9d\xd0\xfd\xa6\x9c\x12\x9d\x2e\xcd\xc1\xe8\xde\xbb\xc0\x14\xfe\x91\x4f\xf4\x4e\xde\x90\x48\x41\xf1\xc3\xca\x69\x25\x66\xf4\x3d\xa5\x3c\xcf\x45\x8b\x91\xba\xdc\x87\xbc\x2f\x7f\xed\x33\xa6\xd4\x2f\xfd\xa6\xdd\x74\xfa\x9f\x50\x31\xa7\x60\x01\xfd\x8b\x33\xb8\x43\x57\x8f\xc0\x99\xda\x1d\x9d\x8f\xdf\x8b\x47\x25\x9f\x40\x83\x76\xd8\x2d\x51\xfb\x0d\x2e\x0f\x58\xff\x8f\x29\x6f\xee\xe8\x18\xa0\x7b\x6c\x64\x03\x1c\x52\x29\x52\x7e\x3f\xf3\x48\x15\xe4\x4f\x00\x00\x00\xff\xff\x74\xac\x36\xe2\x6f\x07\x00\x00") +var _catalogKubedbCom_memcachedversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\x51\x8f\x23\x35\x0c\x7e\xef\xaf\xb0\xc4\xc3\xbd\x5c\xa7\x5a\xf1\x82\xe6\x6d\xe9\x2e\x68\x81\x3d\xaa\xeb\xb1\xaf\xc8\x93\xb8\x6d\xd8\x4c\x12\x62\xa7\x5c\x41\xfc\x77\x94\xcc\x4c\x3b\x6d\x67\xf7\x0e\x09\x1e\x2e\x6f\x71\xec\xcf\xf6\x67\x3b\x09\x06\xf3\x44\x91\x8d\x77\x35\x60\x30\xf4\x51\xc8\xe5\x1d\x57\xcf\xdf\x70\x65\xfc\x62\x7f\xd3\x90\xe0\xcd\xec\xd9\x38\x5d\xc3\x32\xb1\xf8\xf6\x3d\xb1\x4f\x51\xd1\x1d\x6d\x8c\x33\x62\xbc\x9b\xb5\x24\xa8\x51\xb0\x9e\x01\xa8\x48\x98\x85\x1f\x4c\x4b\x2c\xd8\x86\x1a\x5c\xb2\x76\x06\x60\xb1\x21\xcb\x59\x07\x00\x43\xa8\xe1\x39\x35\xa4\x9b\x19\x80\xc3\x96\x6a\x68\xa9\x55\xa8\x76\xa4\xf7\x5d\x4c\x5c\x29\x14\xb4\x7e\x5b\x75\x8a\x95\xf2\xed\x8c\x03\xa9\x0c\x81\x5a\x17\xdf\x68\x57\xd1\x38\xa1\xb8\xf4\x36\xb5\xae\xc0\xcf\xe1\x87\xf5\xcf\xef\x56\x28\xbb\x1a\xaa\x6c\x50\xf5\x88\xc5\x75\xe7\xec\x69\x24\x91\x43\xa0\x1a\x58\xa2\x71\xdb\x49\x73\xdd\x54\xa6\xc5\x2d\x8d\xec\xef\xbe\xfd\xf5\xe1\xf1\xf6\xfb\xfb\xcf\x04\xa0\x10\x49\xa1\x90\x1e\x43\x9c\x0b\x3b\x90\xc6\x7b\x4b\xe8\x2e\x51\x06\x86\xab\x2b\x7a\x47\x80\xb7\x7d\x84\x1d\x92\x46\xc9\xdb\x6d\xf4\x29\xd4\x30\x41\x65\x67\xd6\x17\x24\xc7\xb1\xf5\xd1\x0c\xfb\x79\xb6\x47\x16\x1f\xa9\xdf\x1f\xab\x95\x37\x18\x02\x2b\xaf\xbb\xb3\xae\x3b\x1e\x87\xf2\x8d\xa9\xb5\x86\xe5\xc7\xc9\xe3\x9f\x0c\x4b\x51\x09\x36\x45\xb4\x13\xe5\x2f\xa7\xbc\xf3\x51\xde\x9d\xe2\x9c\x43\xab\xc6\xd5\x64\xe3\xb6\xc9\x62\xbc\xb6\x9f\x01\x84\x48\x4c\x71\x4f\xbf\xb8\x67\xe7\xff\x70\xdf\x19\xb2\x9a\x6b\xd8\xa0\xe5\x1c\x39\x2b\x9f\x89\x5a\xda\xc4\x42\x31\x0b\x52\x13\xfb\xee\xe6\x1a\xfe\xfa\x7b\x06\xb0\x47\x6b\x74\x61\xbc\xf3\xef\x03\xb9\xdb\xd5\xc3\xd3\xd7\x6b\xb5\xa3\x16\x3b\x61\xf6\xe4\x03\x45\x39\xd2\xd7\xf5\xf8\x71\xba\x8e\x32\x00\x4d\xac\xa2\x09\x05\x11\xde\x64\xa8\x4e\x07\x74\x9e\x27\x62\x90\x1d\x41\x9f\x02\x69\xe0\xe2\x06\xfc\x06\x64\x67\x18\x22\x95\x9c\x9c\x94\x90\x46\xb0\x90\x55\xd0\x81\x6f\x7e\x23\x25\x15\xac\x73\xde\x91\x33\x7f\xc9\x6a\x50\xde\xed\x29\x0a\x44\x52\x7e\xeb\xcc\x9f\x47\x64\x06\xf1\xc5\xa5\x45\xa1\xbe\x22\xc3\x2a\x73\xe5\xd0\x66\x12\x12\xbd\x05\x74\x1a\x5a\x3c\x40\xa4\xec\x03\x92\x1b\xa1\x15\x15\xae\xe0\xd1\x47\x02\xe3\x36\xbe\x86\x9d\x48\xe0\x7a\xb1\xd8\x1a\x19\xee\x13\xe5\xdb\x36\x39\x23\x87\x85\xf2\x4e\xa2\x69\x92\xf8\xc8\x0b\x4d\x7b\xb2\x0b\x36\xdb\x39\x46\xb5\x33\x42\x4a\x52\xa4\x05\x06\x33\x2f\x81\x3b\x29\xd7\x41\xab\xbf\x3a\x96\xe7\xcd\x28\xd2\x8b\xf1\xeb\x56\x69\xca\x17\x79\xcf\x3d\x09\x86\x01\x7b\xb3\x2e\xfe\x13\xbd\x59\x94\x59\x79\x7f\xbf\xfe\x00\x83\xd3\x52\x82\x73\xce\x0b\xdb\x27\x33\x3e\x11\x9f\x89\x32\x6e\x43\xb1\x2b\xdc\x26\xfa\xb6\x20\x92\xd3\xc1\x1b\x27\x65\xa3\xac\x21\x77\x4e\x3a\xa7\xa6\x35\x92\x2b\xfd\x7b\x22\x96\x5c\x9f\x0a\x96\xe8\x9c\x17\x68\x08\x52\xc8\x73\xad\x2b\x78\x70\xb0\xc4\x96\xec\x12\x99\xfe\x77\xda\x33\xc3\x3c\xcf\x94\x7e\x9a\xf8\xf1\x63\x70\xae\xd8\xb1\x75\x14\x0f\x57\xf9\x64\x85\x2e\xaf\x8b\x75\x20\x95\x0b\x96\x59\xcb\x86\xb0\xf1\xf1\x34\xf2\x30\xbe\x12\x5e\x9e\xc8\xe2\xa5\x39\xdf\x5f\xf8\xbd\x43\xc1\x06\x99\xe0\xe1\x78\xe1\x7f\x1a\xb3\x0c\x4b\xd6\xbf\x16\xbf\x40\x52\xb7\x72\x8d\x4d\x24\x7d\x69\x36\x07\x33\xe1\x7d\x92\xc4\x2e\x81\xe1\x21\x79\x3d\xb5\xa3\xda\x40\x17\x43\x62\x6c\x2c\x41\x93\x72\x13\x6f\x31\x6a\xd2\x80\x0c\xbe\x61\x6f\x49\x28\x8f\xfc\x55\x4a\x0d\xb1\x00\xee\xbd\xd1\xa4\xdf\xe6\xa8\x8c\x42\x6b\x0f\xa0\x13\xe5\xcb\x64\x87\xfb\x3c\x3d\x0d\x91\x03\x4e\x81\x22\x93\x26\x5d\x4d\x26\x73\x7a\xed\x4e\x8b\x3e\x06\x1f\x85\xe2\xab\xb9\xdc\xf7\x4a\x5f\x52\x99\x82\xd7\x6b\x52\x29\x1a\x39\xac\xbc\x35\x6a\x22\xbe\xb3\x1c\x57\xeb\x55\xf7\x42\xff\x8b\xf4\x74\xdf\xbe\xc5\xc1\x21\xbf\x9b\xff\x59\xae\xd7\xd0\x9f\x9b\xf8\xfe\xfa\x15\xbc\x4a\xf6\xe9\x6a\x80\x5f\x09\x74\x2a\xc8\x39\xf4\x9f\x93\x61\x3b\xf4\xd1\x99\x70\xa2\x06\x67\xe7\xd7\xf7\xc8\x44\x56\x17\xa2\x21\x3d\xd8\xdf\xa0\x0d\x3b\xbc\x39\xc9\xfa\xef\x68\xf7\x3d\x1b\x1d\x03\x94\x7f\x89\xae\x41\x62\xea\x78\xcc\x5f\xad\xdc\x9a\x9d\xe4\x9f\x00\x00\x00\xff\xff\x3a\x42\xa2\x40\x9a\x0b\x00\x00") func catalogKubedbCom_memcachedversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -164,12 +162,12 @@ func catalogKubedbCom_memcachedversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_memcachedversions.yaml", size: 1903, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_memcachedversions.yaml", size: 2970, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_mongodbversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcb\x6e\xdb\x3a\x10\xdd\xeb\x2b\xe6\x07\xac\x0b\xe3\x6e\x2e\xb4\x4b\x9c\xdb\x22\x6d\x93\x1a\x4d\x9b\x6d\x31\x12\x27\x32\x6b\x8a\xc3\x92\x23\x37\x41\xd1\x7f\x2f\x28\xfa\x21\x59\x72\x1e\xdd\x14\xe1\x8e\x87\xf3\x38\x3c\x33\x23\x0a\x9d\xbe\x25\x1f\x34\xdb\x02\xd0\x69\xba\x17\xb2\x71\x17\xf2\xf5\x7f\x21\xd7\xfc\xcf\x66\x5e\x92\xe0\x3c\x5b\x6b\xab\x0a\x58\xb4\x41\xb8\xf9\x44\x81\x5b\x5f\xd1\x05\xdd\x69\xab\x45\xb3\xcd\x1a\x12\x54\x28\x58\x64\x00\x95\x27\x8c\xe0\x67\xdd\x50\x10\x6c\x5c\x01\xb6\x35\x26\x03\x30\x58\x92\x09\xd1\x06\x00\x9d\x2b\x60\xdd\x96\xa4\xca\x0c\xc0\x62\x43\x05\x34\x6c\x6b\x56\xe5\x26\x31\x0a\x79\x85\x82\x86\xeb\x3c\x99\xe5\x15\x37\x59\x70\x54\xc5\x00\xa8\x54\x97\x19\xcd\xd2\x6b\x2b\xe4\x17\x6c\xda\xc6\x76\xc1\x67\xf0\xee\xe6\xe3\xf5\x12\x65\x55\x40\x1e\x1d\xf2\x6d\xc4\x2e\x71\x4a\x75\xdb\x43\xe4\xc1\x51\x01\x41\xbc\xb6\xf5\xa4\xbb\x2a\x73\xdd\x60\x4d\x3d\xff\x8b\xf3\xaf\x97\x57\x67\x6f\xff\x7f\x66\x00\x72\x9e\x2a\x14\x52\xfd\x10\x43\x30\x05\x29\x99\x0d\xa1\x3d\x8e\xb2\xd3\x37\x1f\x89\xdb\x0b\x78\xb6\x65\x98\x22\x29\x94\xb8\xad\x3d\xb7\xae\x80\x09\x29\x93\xdb\xb6\x1c\x91\x47\xcd\x5e\xef\xf6\xb3\xe8\x8f\x41\xd8\xd3\x76\xbf\xaf\x55\xdc\xa0\x73\xa1\x62\x95\xce\x52\x6f\x5c\xc5\xe2\x5d\x9c\xf7\x85\x35\x3a\xc8\xfb\x89\xc3\x0f\x3a\x48\x67\xe0\x4c\xeb\xd1\x8c\x0a\xdf\x9d\x85\x15\x7b\xb9\x3e\x30\x9c\x41\x53\xf7\xeb\x18\xb4\xad\x5b\x83\xfe\xd8\x3b\x03\x70\x9e\x02\xf9\x0d\x7d\xb1\x6b\xcb\x3f\xec\x1b\x4d\x46\x85\x02\xee\xd0\x84\xc8\x38\x54\x1c\x05\x5a\x98\x36\x08\xf9\x08\xb4\xa5\xdf\xf6\x74\x28\xe0\xe7\xaf\x0c\x60\x83\x46\xab\x4e\xe9\x94\x9d\x1d\xd9\xb3\xe5\xe5\xed\xbf\x37\xd5\x8a\x1a\x4c\x60\xcc\xc4\x8e\xbc\xec\x65\x4b\x9d\xbd\x9f\xa9\x3d\x36\xea\x91\xb4\x3a\xe5\x9e\x32\xea\xcf\xd6\xd0\x90\xcb\x6f\x54\xc9\x1e\xde\xcd\xc6\x6e\x4d\x91\x8b\x4b\x95\xc3\xfd\x69\xcb\xb8\xba\xce\x1f\xc3\x27\xc8\xa6\xe5\xe9\x7b\xab\x3d\xa9\x63\xb7\x19\x1c\xe6\xe8\x89\xcb\x74\x44\xf7\x13\x72\x1c\xe8\x78\x58\x0e\x8b\xee\x1d\x7b\x21\xff\x4a\xae\x18\x3f\xa0\x0b\xb6\x82\xda\xbe\x1a\xce\x8e\xd5\x0d\x55\xad\xd7\xf2\xb0\x64\xa3\xab\x09\x7e\x8f\x31\x8f\xbd\x5c\x62\xa0\xce\xf7\x21\x4e\xf8\x0b\xaf\x01\x10\x2c\xba\xb0\x62\x11\xf2\x7f\x1c\xe5\xb4\x18\x63\x82\x23\x93\x49\x02\xcf\xd5\x4f\x98\xcd\x8b\x14\xfb\x8b\xb5\xde\x8c\xbf\x64\x8f\x24\x9e\x4a\x3a\x83\xed\xab\xb1\xdb\xee\x26\x74\x00\x0e\xe6\x60\x70\x32\xd1\x6d\x83\xf3\x4e\xcd\x01\xd2\x7f\x25\x4e\x5e\xef\x08\xda\xdd\x13\x36\x73\x34\x6e\x85\xf3\x03\xb6\xfd\xa7\x48\x6f\x6c\xef\x18\xa0\x7b\x64\x54\x01\xe2\xdb\x24\x68\x7c\x2f\x63\xa9\x12\xf2\x3b\x00\x00\xff\xff\xd8\x42\x17\x5c\x5d\x09\x00\x00") +var _catalogKubedbCom_mongodbversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x57\xcd\x6e\xe3\x36\x10\xbe\xfb\x29\x06\xe8\x61\x2f\x6b\x19\x41\x2f\x85\x6e\x59\x27\x2d\xd2\x36\x5b\x63\x9d\xe6\x5a\x8c\xc4\xb1\xcc\x86\x22\x59\x72\xe8\xae\x5b\xf4\xdd\x8b\xa1\x24\x5b\xb2\x9d\x64\x0b\x74\x0f\xd1\x8d\xc3\xf9\xfd\x3e\xce\x90\x42\xaf\x1f\x29\x44\xed\x6c\x09\xe8\x35\x7d\x66\xb2\xb2\x8a\xc5\xd3\x77\xb1\xd0\x6e\xb1\xbb\xaa\x88\xf1\x6a\xf6\xa4\xad\x2a\x61\x99\x22\xbb\xf6\x13\x45\x97\x42\x4d\x37\xb4\xd1\x56\xb3\x76\x76\xd6\x12\xa3\x42\xc6\x72\x06\x50\x07\x42\x11\x3e\xe8\x96\x22\x63\xeb\x4b\xb0\xc9\x98\x19\x80\xc1\x8a\x4c\x14\x1d\x00\xf4\xbe\x84\xa7\x54\x91\xaa\x66\x00\x16\x5b\x2a\xa1\x75\xb6\x71\xaa\xda\x75\x19\xc5\xa2\x46\x46\xe3\x9a\xa2\x53\x2b\x6a\xd7\xce\xa2\xa7\x5a\x1c\xa0\x52\x39\x32\x9a\x55\xd0\x96\x29\x2c\x9d\x49\xad\xcd\xce\xe7\xf0\xe3\xfa\x97\x8f\x2b\xe4\x6d\x09\x85\x18\x14\xbd\xc7\x1c\xb8\x0b\xf5\x38\x92\xf0\xde\x53\x09\x91\x83\xb6\xcd\x45\x73\x55\x15\xba\xc5\x86\x46\xf6\x37\x1f\x7e\xbb\xbb\xbf\xfe\xe1\xf6\x0b\x1d\x90\x0f\x54\x23\x93\x1a\xbb\x98\x0a\x3b\x27\x95\x73\x86\xd0\x9e\x7a\x19\xf0\x2d\xce\xc0\x1d\x39\xbc\xee\x33\xec\x3c\x29\x64\x59\x36\xc1\x25\x5f\xc2\x05\x28\x3b\xb3\x9e\x0e\xc9\xa3\x71\x41\x0f\xeb\xb9\xd8\x63\x64\x17\xa8\x5f\x1f\xb8\x92\x05\x7a\x1f\x6b\xa7\xba\xbd\xee\x6c\xdc\x0b\x79\x37\x1f\xc6\xc0\x1a\x1d\xf9\xa7\x0b\x9b\x3f\xeb\xc8\x59\xc1\x9b\x14\xd0\x9c\x11\x9f\xf7\xe2\xd6\x05\xfe\x78\xcc\x70\x0e\x6d\x33\xe6\x31\x6a\xdb\x24\x83\xe1\xd4\x7a\x06\xe0\x03\x45\x0a\x3b\xfa\xd5\x3e\x59\xf7\xa7\xfd\x5e\x93\x51\xb1\x84\x0d\x9a\x28\x19\xc7\xda\x09\x40\x4b\x93\x22\x53\x10\x41\xaa\x42\x7f\xa6\x63\x09\x7f\xff\x33\x03\xd8\xa1\xd1\x2a\x23\xdd\x45\x77\x9e\xec\xf5\xea\xee\xf1\xdb\x75\xbd\xa5\x16\x3b\xa1\x44\x72\x9e\x02\x1f\x60\xeb\x4e\xf6\xa1\xa7\x0e\x32\x00\x45\xb1\x0e\xda\x67\x8f\xf0\x4e\x5c\x75\x3a\xa0\xa4\x8b\x28\x02\x6f\x09\xfa\x12\x48\x41\xcc\x61\xc0\x6d\x80\xb7\x3a\x42\xa0\x5c\x93\xe5\x9c\xd2\xc8\x2d\x88\x0a\x5a\x70\xd5\xef\x54\x73\x01\x6b\xa9\x3b\x44\x41\x2f\x19\x05\xb5\xb3\x3b\x0a\x0c\x81\x6a\xd7\x58\xfd\xd7\xc1\x73\x04\x76\x39\xa4\x41\xa6\x9e\x8d\xe1\xcb\xfd\x64\xd1\x08\x08\x89\xde\x03\x5a\x05\x2d\xee\x21\x90\xc4\x80\x64\x47\xde\xb2\x4a\x2c\xe0\xde\x05\x02\x6d\x37\xae\x84\x2d\xb3\x8f\xe5\x62\xd1\x68\x1e\xa6\x48\xed\xda\x36\x59\xcd\xfb\x45\xed\x2c\x07\x5d\x25\x76\x21\x2e\x14\xed\xc8\x2c\xa2\x6e\xe6\x18\xea\xad\x66\xaa\x39\x05\x5a\xa0\xd7\xf3\x9c\xb8\xe5\x3c\x06\x5a\xf5\xcd\x81\x9e\x77\xa3\x4c\x4f\xda\xae\xfb\xf2\x61\x7c\x16\x77\x39\x8d\xa0\x23\x60\x6f\xd6\xe5\x7f\x84\x57\x44\x82\xca\xa7\xdb\xf5\x03\x0c\x41\x33\x05\x53\xcc\x33\xda\x47\xb3\x78\x04\x5e\x80\xd2\x76\x43\xa1\x23\x6e\x13\x5c\x9b\x3d\x92\x55\xde\x69\xcb\x79\x51\x1b\x4d\x76\x0a\x7a\x4c\x55\xab\x59\x98\xfe\x23\x51\x64\xe1\xa7\x80\x25\x5a\xeb\x18\x2a\x82\xe4\xa5\x9f\x55\x01\x77\x16\x96\xd8\x92\x59\x62\xa4\xaf\x0e\xbb\x20\x1c\xe7\x02\xe9\xeb\xc0\x8f\xaf\x80\xa9\x62\x87\xd6\x41\x3c\x8c\xf0\x8b\x0c\x4d\x07\xc5\xda\x53\x2d\x74\x09\x66\x62\x06\x1b\x17\x86\x76\x87\xf1\x30\x78\xbe\x1b\x73\x84\x6a\xba\x3e\x89\x79\x83\x8c\x15\x46\x82\xbb\xc3\x90\x7f\xdd\x67\x6e\x14\xd1\x3f\x17\x3f\x03\x50\xf7\x09\xbf\x3a\x90\x3a\x35\x9b\x83\xbe\x10\xfd\x22\x80\x5d\x01\xc3\xe5\xf1\x72\x69\x07\xb5\x01\xae\x08\x29\x62\x65\x08\xaa\x24\x07\xb8\xc1\xa0\x48\x01\x46\x70\x55\x74\x86\x98\xa4\xdd\xcf\x4a\xaa\x28\x32\xe0\xce\x69\x45\xea\xbd\x64\xa5\x6b\x34\x66\x0f\x2a\x91\x0c\x92\x2d\xee\xa4\x73\x2a\x22\x0b\x31\x79\x0a\x91\x14\xa9\xe2\x62\x31\xc7\x1b\xee\xf8\xd1\x67\xef\x02\x53\x78\xb1\x96\xdb\x5e\xe9\x2d\xd1\x24\xef\xa3\xa5\xb3\x8c\xda\xbe\x52\xdd\x9d\xd5\x2c\xe3\xba\x53\x7d\x4b\x35\x7a\xa7\xd6\x54\xa7\xa0\x79\xbf\x72\x46\xd7\x17\xf2\x9b\x54\xba\x5a\xaf\xba\x97\xc7\x7f\x28\x4f\xf5\x2d\x9a\x03\xec\xe5\x55\xf0\xbf\xd5\x7a\xee\xfa\x4b\x0b\x67\xe7\xcc\xcb\xa5\x3e\x88\xc6\x5b\xe2\x72\x77\xfe\x70\x39\x2b\xea\xf1\x6c\xee\xbe\x90\xdb\xa5\xbc\xe6\xd0\xbf\x23\x87\xe5\xd0\xfe\x13\xe1\xa4\x75\x26\x3b\x17\x0e\xdc\x64\x3f\xf3\x32\x91\x9c\x5f\x15\x17\x10\x38\x11\x0d\x50\xc0\xee\x0a\x8d\xdf\xe2\xd5\x51\xd6\xff\x65\x74\xaf\xee\xd1\x36\x40\x7e\x76\xaa\x12\x38\xa4\x0e\x73\x79\x41\x0b\x9b\x9d\xe4\xdf\x00\x00\x00\xff\xff\xf9\x41\xda\x7c\x6f\x0d\x00\x00") func catalogKubedbCom_mongodbversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -184,12 +182,12 @@ func catalogKubedbCom_mongodbversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_mongodbversions.yaml", size: 2397, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_mongodbversions.yaml", size: 3439, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_mysqlversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcd\x72\xd3\x30\x10\xbe\xfb\x29\xf6\x05\x62\x26\xc3\x85\xf1\xad\xa4\xc0\x14\xda\x12\x08\xf4\xca\xac\xad\x6d\x22\x22\x6b\x55\x69\x1d\x9a\x61\x78\x77\x46\x56\x7e\xec\xc4\xe9\x0f\x17\xa6\xba\xed\xb7\xda\xdd\x4f\x9f\x76\x2d\xa3\xd3\x37\xe4\x83\x66\x5b\x00\x3a\x4d\xf7\x42\x36\x5a\x21\x5f\xbe\x09\xb9\xe6\x57\xab\x71\x49\x82\xe3\x6c\xa9\xad\x2a\x60\xd2\x04\xe1\xfa\x2b\x05\x6e\x7c\x45\xe7\x74\xab\xad\x16\xcd\x36\xab\x49\x50\xa1\x60\x91\x01\x54\x9e\x30\x82\xdf\x74\x4d\x41\xb0\x76\x05\xd8\xc6\x98\x0c\xc0\x60\x49\x26\xc4\x3d\x00\xe8\x5c\x01\xcb\xa6\x24\x55\x66\x00\x16\x6b\x2a\xa0\x5e\x87\x3b\xb3\x4a\x7c\x42\x5e\xa1\xa0\xe1\x79\x9e\x36\xe5\x15\xd7\x59\x70\x54\xc5\x70\x54\xaa\xad\x8b\x66\xea\xb5\x15\xf2\x13\x36\x4d\x6d\xdb\xd4\x23\xf8\x38\xfb\x7c\x3d\x45\x59\x14\x90\xc7\x80\x7c\x93\xb1\x2d\x9b\x0a\xdd\x74\x10\x59\x3b\x2a\x20\x88\xd7\x76\x3e\x18\xae\xca\x5c\xd7\x38\xa7\x4e\xfc\xf9\xdb\x1f\x17\x57\x67\x1f\xde\x3d\x31\x01\x39\x4f\x15\x0a\xa9\x6e\x8a\x3e\x98\x92\x94\xcc\x86\xd0\x1e\x66\xd9\xaa\x9b\x1f\x49\xdb\x49\x78\xb6\x61\x98\x32\x29\x94\x68\xce\x3d\x37\xae\x80\x01\x29\x53\xd8\xe6\x32\x22\x8f\x39\x7b\xbd\xb5\x47\x31\x1e\x83\xb0\xa7\x8d\xbd\xbb\xa9\x68\xa0\x73\xa1\x62\x95\x7c\xa9\x33\xae\xd6\xb3\x2f\x97\x5d\x59\x8d\x0e\xf2\xe9\xc8\x75\xa9\x83\xb4\x6e\x67\x1a\x8f\xe6\xe0\xca\x5b\x4f\x58\xb0\x97\xeb\x3d\xb7\x11\xd4\xeb\xee\x0d\x06\x6d\xe7\x8d\x41\xdf\x8f\xcd\x00\x9c\xa7\x40\x7e\x45\xdf\xed\xd2\xf2\x2f\xfb\x5e\x93\x51\xa1\x80\x5b\x34\x21\x32\x0d\x15\x47\x61\x26\xa6\x09\x42\x3e\x02\x4d\xe9\x37\x9d\x1c\x0a\xf8\xfd\x27\x03\x58\xa1\xd1\xaa\x55\x38\xd5\x66\x47\xf6\x6c\x7a\x71\xf3\x7a\x56\x2d\xa8\xc6\x04\xc6\x4a\xec\xc8\xcb\x4e\xae\xd4\xcf\xbb\x49\xda\x61\x47\xbd\x91\x56\xab\xd8\x63\x9b\xba\x13\xd5\xdf\xc8\xe5\x4f\xaa\x64\x07\x6f\x67\x62\xbb\x86\xc8\xc5\xa5\xca\xbe\x7d\x7a\x67\x5c\x6d\xc7\x1f\xc3\x27\xc8\xa6\xe5\xe9\xae\xd1\x9e\xd4\x61\xd8\x08\xf6\xf3\xf3\xc8\x61\x5a\xa2\xbb\xc9\x38\x4c\x74\x38\x24\xfb\x45\xf7\x8e\xbd\x90\x7f\x21\x47\x8c\x9f\xcd\x09\x5b\x41\x6d\x5f\x0c\x67\xc7\x6a\x46\x55\xe3\xb5\xac\xa7\x6c\x74\x35\xc0\xef\x21\xe6\xb1\x97\x4b\x0c\xd4\xc6\xae\xe3\x7c\x3f\xf3\x18\x00\xc1\xa2\x0b\x0b\x16\x21\xff\xcf\x59\x4e\x8b\x71\x4c\xf0\x68\xcb\x20\x81\xa7\xea\x27\xcc\xe6\x59\x8a\xfd\xc7\xbb\x5e\x1d\x7f\xc9\x1e\x28\x3c\x54\x74\x04\x9b\xd7\x62\x6b\x6e\x27\xb4\x07\xf6\xe6\xa0\xe7\x19\xe8\xb6\x9e\xbf\x55\xb3\x87\x74\xdf\x88\x93\xc7\x3b\x80\xb6\xe7\x84\xd5\x18\x8d\x5b\xe0\x78\x8f\x6d\xfe\x25\xd2\xdb\xda\x71\x03\xb4\x8f\x8c\x2a\x40\x7c\x93\x04\x8d\xef\x64\xbc\xaa\x84\xfc\x0d\x00\x00\xff\xff\x5e\x02\xb2\xed\x53\x09\x00\x00") +var _catalogKubedbCom_mysqlversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x57\x4d\x6f\x23\x37\x0f\xbe\xfb\x57\x10\x78\x0f\x7b\x59\x8f\x11\xbc\x97\x62\x6e\xa9\x93\x16\x69\x37\x5b\x77\x9d\xe6\x5a\x70\x46\xb4\xad\x46\x23\x69\x45\xca\x5d\xb7\xe8\x7f\x2f\x24\x8d\xed\x19\xdb\x49\xb6\x40\x7b\xc8\xdc\x44\xf1\xf3\x79\x44\x9a\x46\xaf\x1f\x29\xb0\x76\xb6\x06\xf4\x9a\xbe\x08\xd9\x74\xe2\xea\xe9\x1b\xae\xb4\x9b\x6d\xaf\x1a\x12\xbc\x9a\x3c\x69\xab\x6a\x98\x47\x16\xd7\x7d\x22\x76\x31\xb4\x74\x43\x2b\x6d\xb5\x68\x67\x27\x1d\x09\x2a\x14\xac\x27\x00\x6d\x20\x4c\xc2\x07\xdd\x11\x0b\x76\xbe\x06\x1b\x8d\x99\x00\x18\x6c\xc8\x70\xd2\x01\x40\xef\x6b\x78\x8a\x0d\xa9\x66\x02\x60\xb1\xa3\x1a\xba\x1d\x7f\x36\xdb\x92\x0f\x57\x2d\x0a\x1a\xb7\xae\x8a\x52\xd5\xba\x6e\xc2\x9e\xda\x64\x8e\x4a\xe5\xb8\x68\x16\x41\x5b\xa1\x30\x77\x26\x76\x36\xbb\x9e\xc2\x0f\xcb\x9f\x3e\x2e\x50\x36\x35\x54\xc9\xa0\xea\x3d\xe6\xb0\x25\xd0\xe3\x40\x22\x3b\x4f\x35\xb0\x04\x6d\xd7\x17\xcd\x55\x53\xe9\x0e\xd7\x34\xb0\xbf\xf9\xf6\xd7\xbb\xfb\xeb\xef\x6f\xbf\xd2\x01\xf9\x40\x2d\x0a\xa9\xa1\x8b\xb1\xb0\x38\x69\x9c\x33\x84\xf6\xd4\xcb\x1e\xdd\xea\x0c\xda\x81\xc3\xeb\x3e\xc3\xe2\x49\xa1\xa4\xe3\x3a\xb8\xe8\x6b\xb8\x00\x65\x31\xeb\xc9\x48\x79\xac\x5d\xd0\xfb\xf3\x34\xd9\x23\x8b\x0b\xd4\x9f\x0f\x4c\xa5\x03\x7a\xcf\xad\x53\xe5\xae\xbc\x8c\xfb\xdd\xf2\xe7\x0f\x43\x58\x8d\x66\xf9\xf1\xec\xea\x83\x66\xc9\xd7\xde\xc4\x80\xe6\x84\xf2\x7c\xc3\x1b\x17\xe4\xe3\x31\xb7\x29\x74\xbb\x21\x83\xac\xed\x3a\x1a\x0c\x63\xdb\x09\x80\x0f\xc4\x14\xb6\xf4\x8b\x7d\xb2\xee\x77\xfb\x9d\x26\xa3\xb8\x86\x15\x1a\x4e\x99\x72\xeb\x12\x30\x73\x13\x59\x28\x24\x41\x6c\x42\xff\x92\xb9\x86\x3f\xff\x9a\x00\x6c\xd1\x68\x95\x11\x2e\xb1\x9d\x27\x7b\xbd\xb8\x7b\xfc\xff\xb2\xdd\x50\x87\x45\x98\x22\x39\x4f\x41\x0e\x70\x95\xf7\x7c\xe8\xa4\x83\x0c\x40\x11\xb7\x41\xfb\xec\x11\xde\x25\x57\x45\x07\x54\xea\x1d\x62\x90\x0d\x41\x5f\x02\x29\xe0\x1c\x06\xdc\x0a\x64\xa3\x19\x02\xe5\x9a\xac\xe4\x94\x06\x6e\x21\xa9\xa0\x05\xd7\xfc\x46\xad\x54\xb0\x4c\x75\x07\x4e\xd8\x45\xa3\xa0\x75\x76\x4b\x41\x20\x50\xeb\xd6\x56\xff\x71\xf0\xcc\x20\x2e\x87\x34\x28\xd4\x33\xb1\xff\x72\x1f\x59\x34\x09\x84\x48\xef\x01\xad\x82\x0e\x77\x10\x28\xc5\x80\x68\x07\xde\xb2\x0a\x57\x70\xef\x02\x81\xb6\x2b\x57\xc3\x46\xc4\x73\x3d\x9b\xad\xb5\xec\x67\x47\xeb\xba\x2e\x5a\x2d\xbb\x59\xeb\xac\x04\xdd\x44\x71\x81\x67\x8a\xb6\x64\x66\xac\xd7\x53\x0c\xed\x46\x0b\xb5\x12\x03\xcd\xd0\xeb\x69\x4e\xdc\x4a\x6e\xff\x4e\xfd\xef\x40\xcf\xbb\x41\xa6\x27\xed\x56\xbe\xfc\x08\x9f\xc5\x3d\xbd\x43\xd0\x0c\xd8\x9b\x95\xfc\x8f\xf0\x26\x51\x42\xe5\xd3\xed\xf2\x01\xf6\x41\x33\x05\x63\xcc\x33\xda\x47\x33\x3e\x02\x9f\x80\xd2\x76\x45\xa1\x10\xb7\x0a\xae\xcb\x1e\xc9\x2a\xef\xb4\x95\x7c\x68\x8d\x26\x3b\x06\x9d\x63\xd3\x69\x49\x4c\x7f\x8e\xc4\x92\xf8\xa9\x60\x8e\xd6\x3a\x81\x86\x20\xfa\xd4\xc7\xaa\x82\x3b\x0b\x73\xec\xc8\xcc\x91\xe9\x3f\x87\x3d\x21\xcc\xd3\x04\xe9\xeb\xc0\x0f\x07\xff\x58\xb1\xa0\x75\x10\xef\x47\xf7\x45\x86\x86\x23\x62\xe9\xa9\x4d\x64\x25\xc4\x92\x11\xac\x5c\x00\xef\x58\xd6\x81\x18\x86\x93\xe0\xf9\x66\xcc\x01\x9a\xf1\xf9\x24\xe4\x0d\x0a\x36\xc8\x04\x77\x87\xd9\xfe\xba\xcf\xdc\x27\x49\xff\x5c\xfc\x0c\x3e\xe5\x4b\xf4\xea\x40\xea\xd4\x6c\x0a\xfa\x42\xf4\x8b\xf8\x95\x02\xf6\xbf\x19\x2f\x97\x76\x50\xdb\xc3\xc5\x10\x19\x1b\x43\xd0\xc4\xf4\x7e\xd7\x18\x14\x29\x40\x06\xd7\xb0\x33\x24\x94\xba\xfd\xac\xa4\x86\x58\x00\xb7\x4e\x2b\x52\xef\x53\x56\xba\x45\x63\x76\xa0\x22\xa5\x39\xb2\xc1\x6d\x6a\x9c\x86\xc8\x02\x47\x4f\x81\x49\x91\xaa\x2e\x16\x73\xfc\x61\x3b\x7e\xf4\xc5\xbb\x20\x14\x5e\xac\xe5\xb6\x57\x7a\x4b\x34\xa5\xa5\x68\xee\xac\xa0\xb6\xaf\x54\x77\x67\xb5\xa4\x69\x5d\x54\xdf\x52\x8d\xde\xa9\x25\xb5\x31\x68\xd9\x2d\x9c\xd1\xed\x85\xfc\x46\x95\x2e\x96\x8b\xb2\x70\xfc\x83\xf2\x54\xdf\xa2\x39\xc0\x2e\xad\x04\xff\x5a\xad\xe7\xae\xbf\xb6\x70\x71\xce\xbc\x5c\xea\x43\xd2\x78\x4b\x5c\x6e\xcf\xf7\x96\xb3\xa2\x1e\xcf\xe6\xee\x0b\xb9\x5d\xca\x6b\x0a\xfd\xfa\xb8\x3f\xee\xdb\x7f\x24\x1c\xb5\xce\xe8\xe6\xc2\x83\x1b\xdd\x67\x5e\x46\x92\xf3\x9f\x8a\x0b\x08\x9c\x88\xf6\x50\xc0\xf6\x0a\x8d\xdf\xe0\xd5\x51\xd6\xff\xb9\x28\xcb\xf6\xe0\x1a\x20\x6f\x9d\xaa\x06\x09\xb1\x60\x9e\x16\xe7\xc4\x66\x91\xfc\x1d\x00\x00\xff\xff\x1b\xb3\xd8\x8d\x64\x0d\x00\x00") func catalogKubedbCom_mysqlversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -204,12 +202,12 @@ func catalogKubedbCom_mysqlversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_mysqlversions.yaml", size: 2387, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_mysqlversions.yaml", size: 3428, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_perconaxtradbversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\x4d\x6f\xdb\x3c\x0c\xbe\xfb\x57\xf0\x0f\xc4\x2f\x82\xf7\x32\xf8\xd6\xa6\xdb\xd0\x7d\x74\xc1\xba\x15\xbb\x0d\xb4\xc5\x26\x5a\x64\x49\xa3\xe8\x2c\xc5\xb0\xff\x3e\xc8\xb2\x13\x3b\x71\xda\x1e\x76\x29\x6f\x7c\x44\x52\x0f\xbf\x24\xf4\xfa\x8e\x38\x68\x67\x0b\x40\xaf\x69\x27\x64\xa3\x16\xf2\xcd\xab\x90\x6b\xf7\xdf\x76\x5e\x92\xe0\x3c\xdb\x68\xab\x0a\x58\x34\x41\x5c\xfd\x99\x82\x6b\xb8\xa2\x2b\xba\xd7\x56\x8b\x76\x36\xab\x49\x50\xa1\x60\x91\x01\x54\x4c\x18\xc1\x2f\xba\xa6\x20\x58\xfb\x02\x6c\x63\x4c\x06\x60\xb0\x24\x13\xa2\x0d\x00\x7a\x5f\xc0\xa6\x29\x49\x95\x19\x80\xc5\x9a\x0a\xf0\xc4\x95\xb3\xb8\x13\x46\x55\x6e\x13\xaf\x90\x57\x28\x68\xdc\x2a\x4f\xc6\x79\xe5\xea\x2c\x78\xaa\x62\x18\x54\xaa\xbd\x1f\xcd\x92\xb5\x15\xe2\x85\x33\x4d\x6d\xdb\x2b\x66\xf0\xee\xf6\xd3\xcd\x12\x65\x5d\x40\x1e\x1d\xf2\x2e\x62\x7b\x7d\xba\xf0\x6e\x80\xc8\x83\xa7\x02\x82\xb0\xb6\xab\x49\x77\x55\xe6\xba\xc6\x15\x0d\xfc\xaf\x2e\xbf\x5f\x7f\xbc\x78\xfb\xfa\x99\x01\xc8\x33\x55\x28\xa4\x86\x21\xc6\x60\x0a\x52\x3a\x67\x08\xed\x71\x94\xbe\xca\xf9\x49\x89\x07\x01\x2f\x3a\x86\x29\x92\x42\x89\xea\x8a\x5d\xe3\x0b\x98\x28\x65\x72\xeb\x9a\x12\x79\xac\x1c\xeb\x5e\x9f\x45\x7f\x0c\xe2\x98\x3a\x7d\xdf\xb1\xa8\xa0\xf7\xa1\x72\x2a\x9d\xa5\x09\x59\xa6\x16\x7e\x13\xc6\xab\xcb\x61\x79\x8d\x0e\xf2\xfe\xac\xc9\x07\x1d\xa4\x35\xf3\xa6\x61\x34\x67\x46\xa1\xb5\x08\x6b\xc7\x72\x73\xe0\x3c\x03\xbf\x1b\x76\x36\x68\xbb\x6a\x0c\xf2\x74\x8c\x0c\xc0\x33\x05\xe2\x2d\x7d\xb5\x1b\xeb\x7e\xd9\x37\x9a\x8c\x0a\x05\xdc\xa3\x09\x31\x93\x50\xb9\x58\xb8\x85\x69\x82\x10\x47\xa0\x29\xb9\x9b\xf8\x50\xc0\xef\x3f\x19\xc0\x16\x8d\x56\x6d\x07\x12\x07\xe7\xc9\x5e\x2c\xaf\xef\xfe\xbf\xad\xd6\x54\x63\x02\xe3\x4d\xce\x13\xcb\xbe\x9c\x69\xee\xf7\x1b\xb7\xc7\x4e\x66\x27\x49\x5b\xd1\xa7\x8c\x86\x9b\x37\x36\x74\xe5\x0f\xaa\x64\x0f\xf7\x3b\xd3\xcb\x14\xb9\x28\xaa\x1c\xeb\xe7\x2d\xa3\xb4\x1b\x71\x0a\x9f\x21\x9b\x84\xe9\x67\xa3\x99\xd4\xb1\xdb\x0c\x0e\xfb\xf5\x44\x32\x2d\xd1\xfd\xe6\x1c\x07\x3a\x5e\xa2\x83\xd0\xce\x3b\x16\xe2\x17\x92\x62\x7c\x5e\x17\xce\x0a\x6a\xfb\x62\x38\x7b\xa7\x6e\xa9\x6a\x58\xcb\xc3\xd2\x19\x5d\x4d\xf0\x7b\x8c\x79\x9c\xe5\x12\x03\xb5\xbe\x0f\x71\xcf\xff\x59\x1a\xa7\xa1\x9f\x9b\xd3\xf6\x74\x63\x1f\x61\x31\xc5\x60\x06\xdd\xab\xd9\xab\xfd\x24\x8e\xc0\x51\xbf\x47\x27\x13\x55\x1d\x9d\x0f\x5f\xc0\xb3\xc9\x1c\x41\x7d\x56\xb0\x9d\xa3\xf1\x6b\x9c\x1f\xb0\xee\x07\x4d\x3f\xca\xe0\x18\xa0\x7d\x3a\x55\x01\xc2\x4d\x2a\x5f\xfc\x1d\xe2\xb0\x25\xe4\x6f\x00\x00\x00\xff\xff\x30\xc6\x40\x2c\x51\x08\x00\x00") +var _catalogKubedbCom_perconaxtradbversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcd\x6e\x23\x37\x0c\xbe\xfb\x29\x08\xf4\x90\xcb\x7a\x8c\xa0\x97\x62\x6e\x59\x27\x2d\xd2\x76\x37\xc6\x3a\x0d\x7a\x2b\x38\x23\xda\x56\xa3\x91\x54\x89\x72\xe3\x16\x7d\xf7\x82\xd2\xd8\x1e\xc7\x93\x64\x0b\x74\x0f\x3b\x37\x71\x28\x92\xdf\xc7\x1f\x11\xbd\x7e\xa0\x10\xb5\xb3\x35\xa0\xd7\xf4\xc4\x64\xe5\x14\xab\xc7\xef\x62\xa5\xdd\x6c\x7b\xd9\x10\xe3\xe5\xe4\x51\x5b\x55\xc3\x3c\x45\x76\xdd\x27\x8a\x2e\x85\x96\xae\x69\xa5\xad\x66\xed\xec\xa4\x23\x46\x85\x8c\xf5\x04\xa0\x0d\x84\x22\xbc\xd7\x1d\x45\xc6\xce\xd7\x60\x93\x31\x13\x00\x83\x0d\x99\x28\x3a\x00\xe8\x7d\x0d\x8f\xa9\x21\xd5\x4c\x00\x2c\x76\x54\x83\xa7\xd0\x3a\x8b\x4f\x1c\x50\x35\xdb\x12\x57\xac\x5a\x64\x34\x6e\x5d\x15\xe5\xaa\x75\xdd\x24\x7a\x6a\xc5\x0c\x2a\x95\xfd\xa3\x59\x04\x6d\x99\xc2\xdc\x99\xd4\xd9\xec\x62\x0a\x3f\x2e\xef\x3e\x2e\x90\x37\x35\x54\x72\xa1\xea\x2d\x66\xf7\xc5\xe1\xc3\x40\xc2\x3b\x4f\x35\x44\x0e\xda\xae\x47\xaf\xab\xa6\xd2\x1d\xae\x69\x70\xff\xfa\xfd\x6f\xb7\x1f\xae\x7e\xb8\xf9\x4c\x03\xe4\x03\xb5\xc8\xa4\x86\x26\x4e\x85\xc5\x48\xe3\x9c\x21\xb4\xcf\xad\xec\x59\xae\xce\x28\x1e\x18\xbc\xea\x23\x2c\x96\x14\xb2\x1c\xd7\xc1\x25\x5f\xc3\x08\x95\xe5\x5a\x9f\x14\x89\x63\xed\x82\xde\x9f\xa7\x72\x1f\x23\xbb\x40\xfd\xf9\x90\x31\x39\xa0\xf7\xb1\x75\xaa\xfc\x2b\x15\xb2\x28\x29\xfc\x95\x03\x5e\xbf\x1f\xd2\x6b\x74\xe4\x9f\x5e\x54\xf9\x59\x47\xce\x6a\xde\xa4\x80\xe6\x85\x52\xc8\x1a\x71\xe3\x02\x7f\x3c\xc6\x3c\x05\xff\x34\xcc\x6c\xd4\x76\x9d\x0c\x86\x71\x1b\x13\x00\x1f\x28\x52\xd8\xd2\x2f\xf6\xd1\xba\x3f\xed\xf7\x9a\x8c\x8a\x35\xac\xd0\x44\x41\x12\x5b\x27\xc4\xcd\x4d\x8a\x4c\x41\x04\xa9\x09\x7d\xc5\xc7\x1a\xfe\xfe\x67\x02\xb0\x45\xa3\x55\xce\x40\x89\xc1\x79\xb2\x57\x8b\xdb\x87\x6f\x97\xed\x86\x3a\x2c\x42\xf1\xe4\x3c\x05\x3e\xd0\x59\xea\xfe\xd0\x71\x07\x19\x80\xa2\xd8\x06\xed\xb3\x45\xb8\x10\x53\x45\x07\x94\xf4\x18\x45\xe0\x0d\x41\x0f\x81\x14\xc4\xec\x06\xdc\x0a\x78\xa3\x23\x04\xca\x98\x2c\xe7\x90\x06\x66\x41\x54\xd0\x82\x6b\x7e\xa7\x96\x2b\x58\x0a\xee\x10\x85\xc3\x64\x14\xb4\xce\x6e\x29\x30\x04\x6a\xdd\xda\xea\xbf\x0e\x96\x23\xb0\xcb\x2e\x0d\x32\xf5\x99\xd9\x7f\xb9\xcf\x2c\x1a\x21\x21\xd1\x3b\x40\xab\xa0\xc3\x1d\x04\x12\x1f\x90\xec\xc0\x5a\x56\x89\x15\x7c\x70\x81\x40\xdb\x95\xab\x61\xc3\xec\x63\x3d\x9b\xad\x35\xef\x67\x4c\xeb\xba\x2e\x59\xcd\xbb\x59\xeb\x2c\x07\xdd\x24\x76\x21\xce\x14\x6d\xc9\xcc\xa2\x5e\x4f\x31\xb4\x1b\xcd\xd4\x72\x0a\x34\x43\xaf\xa7\x39\x70\xcb\x79\x3c\x74\xea\x9b\x43\x7a\x2e\x06\x91\x3e\x6b\xc7\xf2\xe5\x22\x7d\x91\x77\xa9\x4f\xd0\x11\xb0\xbf\x56\xe2\x3f\xd2\x2b\x22\x61\xe5\xd3\xcd\xf2\x1e\xf6\x4e\x73\x0a\x4e\x39\xcf\x6c\x1f\xaf\xc5\x23\xf1\x42\x94\xb6\x2b\x0a\x25\x71\xab\xe0\xba\x6c\x91\xac\xf2\x4e\x5b\xce\x87\xd6\x68\xb2\xa7\xa4\xc7\xd4\x74\x9a\x25\xd3\x7f\x24\x8a\x2c\xf9\xa9\x60\x8e\xd6\x3a\x86\x86\x20\x79\xe9\x73\x55\xc1\xad\x85\x39\x76\x64\xe6\x18\xe9\x8b\xd3\x2e\x0c\xc7\xa9\x50\xfa\x36\xf1\xc3\x07\xe2\x54\xb1\xb0\x75\x10\xef\x47\xfb\x68\x86\xc6\x46\xc7\xd2\x53\x2b\x49\x13\xe6\xe4\x32\xac\x5c\x38\x55\x84\xe1\x78\x78\xb9\x33\xb3\xb7\xe6\xf4\xfc\xcc\xff\x35\x32\x36\x18\x09\x6e\x0f\x0f\xc1\xdb\x36\x73\xd3\x88\xfe\xb9\xf8\x05\xb2\xca\x27\xb9\xd6\x81\xd4\xf3\x6b\x53\xd0\x23\xde\x47\xc9\x2c\x00\xf6\x0f\xcc\xeb\xd0\x0e\x6a\x7b\xba\x22\xa4\x88\x8d\x21\x68\x92\x14\xf3\x1a\x83\x22\x05\x18\xc1\x35\xd1\x19\x62\x92\xd6\x3f\x83\xd4\x50\x64\xc0\xad\xd3\x8a\xd4\x3b\x89\x4a\xb7\x68\xcc\x0e\x54\x22\x19\x2a\x1b\xdc\x4a\x17\x35\x44\x16\x62\xf2\x14\x22\x29\x52\xd5\x28\x98\xe3\x2b\x78\xfc\xe8\xc9\xbb\xc0\x14\x5e\xc5\x72\xd3\x2b\x7d\x4d\x69\x92\x4d\x6a\xee\x2c\xa3\xb6\x6f\xa0\xbb\xb8\xb5\x9a\x65\x76\x17\xdd\x02\x12\xee\xef\xae\xef\x6a\x08\xd4\xb9\x2d\x81\x5e\x81\x4c\x06\x4b\x42\xee\xc5\xd7\x41\x80\x77\x6a\x49\x6d\x0a\x9a\x77\x0b\x67\x74\x3b\x12\xdf\xe9\x2c\x58\x2e\xca\xea\xf2\x1f\xe0\xa9\xbe\x7f\xb3\x83\x9d\x2c\x11\xff\x1b\xd6\x73\xd3\x9f\x0b\x7c\x7b\xbe\x0e\x9c\x81\x7d\x38\x9b\x60\xaf\x04\x3a\x16\xe4\x14\xfa\xad\x6d\x7f\xdc\x37\xd2\x89\xf0\xa4\x08\x4f\xfe\x8c\x64\xe7\xe4\xff\xf9\x88\x1d\xc1\xfb\x4c\xb4\x07\x0e\xdb\x4b\x34\x7e\x83\x97\x47\x59\xbf\xc1\x97\x8d\x76\xf0\x1b\x20\xaf\x6e\xaa\x06\x0e\xa9\x30\x2c\xdb\xa9\x14\x6d\x91\xfc\x1b\x00\x00\xff\xff\x71\x3e\x1f\x4a\xd1\x0c\x00\x00") func catalogKubedbCom_perconaxtradbversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -224,12 +222,12 @@ func catalogKubedbCom_perconaxtradbversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_perconaxtradbversions.yaml", size: 2129, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_perconaxtradbversions.yaml", size: 3281, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_pgbouncerversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x54\x4d\x93\xd3\x30\x0c\xbd\xe7\x57\xe8\x0f\x34\x4c\x87\x0b\xe3\x5b\xe9\x16\x66\xf9\x58\x3a\x2d\xf4\xca\x28\xb1\x36\x35\x75\x6c\xe3\x8f\xb2\x0c\xc3\x7f\x67\x6c\xa7\x69\xda\xa4\x2c\x57\x74\xf3\xb3\xf5\xf4\xf2\x24\x05\x8d\xd8\x91\x75\x42\x2b\x06\x68\x04\x3d\x79\x52\xf1\xe4\xca\xc3\x2b\x57\x0a\xfd\xe2\x38\xaf\xc8\xe3\xbc\x38\x08\xc5\x19\x2c\x83\xf3\xba\xdd\x90\xd3\xc1\xd6\x74\x47\x8f\x42\x09\x2f\xb4\x2a\x5a\xf2\xc8\xd1\x23\x2b\x00\x6a\x4b\x18\xc1\xcf\xa2\x25\xe7\xb1\x35\x0c\x54\x90\xb2\x00\x90\x58\x91\x74\xf1\x0d\x00\x1a\xc3\xe0\x10\x2a\xe2\x55\x01\xa0\xb0\x25\x06\xa6\xa9\x74\x50\x35\xd9\x63\xd6\xe4\xca\x1a\x3d\x4a\xdd\x94\xf9\x61\x59\xeb\xb6\x70\x86\xea\x48\x81\x9c\xa7\xda\x28\xd7\x56\x28\x4f\x76\xa9\x65\x68\x55\xa2\x9f\xc1\xbb\xed\xa7\x87\x35\xfa\x3d\x83\x32\x26\x94\x1d\x63\x2a\x9d\x8b\xed\x06\x88\xff\x69\x88\x81\xf3\x56\xa8\x66\x32\xdd\x25\x4d\xa5\x68\xb1\xa1\x01\xc7\x76\xb5\xd9\xad\x36\x5f\xef\x3f\x2e\xde\xae\xfe\x8d\x88\x93\xb1\x54\xa3\x27\x3e\xa0\xb9\xbb\x04\x33\x49\xa5\xb5\x24\x54\xd7\x2c\x27\xa7\xcb\x91\xcd\x03\xc2\x45\xa7\x32\x33\x71\xf4\xf1\xd8\x58\x1d\x0c\x83\x09\x4b\x73\x5a\xd7\x98\xa8\xa3\xd1\x56\x9c\xce\xb3\x98\x8f\xce\x6b\x4b\xdd\xb9\xef\x5a\x3c\xa0\x31\xae\xd6\x3c\xdf\xe5\x29\x59\x37\xaf\x73\x1b\x87\x16\x4b\xe1\xfc\xfb\xc9\xeb\x0f\xc2\xf9\xf4\xc4\xc8\x60\x51\x4e\x8c\x41\xba\x75\x7b\x6d\xfd\xc3\x59\xe7\x0c\x4c\x35\xec\xaa\x13\xaa\x09\x12\xed\x38\xbf\x00\x30\x96\x52\x0b\xbf\xa8\x83\xd2\x3f\xd4\x1b\x41\x92\x3b\x06\x8f\x28\x5d\x54\xee\x6a\x1d\x8d\x5a\xca\xe0\x3c\xd9\x08\x84\xca\x76\x53\xee\x18\xfc\xfa\x5d\x00\x1c\x51\x0a\x9e\x1c\xcf\xf5\xb5\x21\xb5\x58\xdf\xef\x5e\x6e\xeb\x3d\xb5\x98\xc1\x58\x49\x1b\xb2\xbe\xb7\x2f\xcf\x7a\xbf\x65\x3d\x36\x9a\x95\x1c\xc9\xc1\xe7\x1e\x0d\xb7\xed\xf2\xa1\xae\xbe\x51\xed\x7b\xf8\xb4\x2b\xa7\x98\x12\x17\xe3\x3c\x95\x97\xf8\x78\x16\xcf\x41\x4f\x46\x5b\x4f\xf6\x3a\xe3\x56\x8d\x18\x69\x7f\xc6\xf0\x8d\xcf\xcc\x61\xe9\x7b\x10\x76\xac\x6c\x06\xe7\x6d\x7c\xc6\x86\x64\x45\x1a\x87\xff\x44\xec\x71\x3c\x2d\x7f\x29\x3c\x55\x74\xd6\xf7\xe7\x02\xcc\x2e\x5c\x40\xc3\x1d\xba\x29\xeb\x0a\x3a\xe9\x83\xe3\x1c\xa5\xd9\xe3\xfc\x8c\x75\xff\xdf\xfc\x1f\x1a\x5c\x77\x1d\xe0\x0c\xbc\x0d\xd9\x88\xf8\x4f\x89\x16\x67\xe4\x4f\x00\x00\x00\xff\xff\xf0\xde\xef\xad\x8b\x06\x00\x00") +var _catalogKubedbCom_pgbouncerversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\x4d\x93\x23\x35\x0c\xbd\xe7\x57\xa8\x8a\xc3\x5e\x36\x9d\x9a\xe2\x42\xf5\x6d\xc9\x06\x6a\x80\x5d\xa6\x26\x4b\xae\x94\xda\x56\x3a\x66\xdc\xb6\xb1\xe4\xb0\x03\xc5\x7f\xa7\x6c\x77\x92\xce\xc7\xcc\x72\xe1\x80\x6f\x56\x4b\x4f\xf2\x7b\x92\xdd\x18\xcc\x86\x22\x1b\xef\x5a\xc0\x60\xe8\xb3\x90\xcb\x3b\x6e\x9e\xbe\xe1\xc6\xf8\xc5\xfe\xae\x23\xc1\xbb\xd9\x93\x71\xba\x85\x65\x62\xf1\xc3\x23\xb1\x4f\x51\xd1\x7b\xda\x1a\x67\xc4\x78\x37\x1b\x48\x50\xa3\x60\x3b\x03\x50\x91\x30\x1b\x3f\x99\x81\x58\x70\x08\x2d\xb8\x64\xed\x0c\xc0\x62\x47\x96\xb3\x0f\x00\x86\xd0\xc2\x53\xea\x48\x77\x33\x00\x87\x03\xb5\x10\xfa\xce\x27\xa7\x28\xee\x6b\x4d\xdc\x28\x14\xb4\xbe\x6f\xaa\x63\xa3\xfc\x30\xe3\x40\x2a\x43\xa0\xd6\x25\x37\xda\x87\x68\x9c\x50\x5c\x7a\x9b\x06\x57\xe0\xe7\xf0\xc3\xfa\xe7\x8f\x0f\x28\xbb\x16\x9a\x1c\xd0\x8c\x88\x25\x75\x4d\xb6\x99\x58\xe4\x39\x50\x0b\x2c\xd1\xb8\xfe\x66\x38\x97\x9a\x1a\x33\x60\x4f\x13\x8c\xf5\xea\x71\xb3\x7a\xfc\xf5\xfe\xc3\xbb\xef\x57\xff\x0e\x48\x53\x88\xa4\x50\x48\x4f\x60\xde\x9f\x1b\x2b\x48\xe7\xbd\x25\x74\x97\x28\x07\xa6\x9b\x2b\x9a\x27\x80\xef\xc6\x2a\x2b\x92\x46\xc9\xdb\x3e\xfa\x14\x5a\xb8\x41\x69\x0d\x1b\x85\xc9\x75\xf4\x3e\x9a\xc3\x7e\x9e\xe3\x91\xc5\x47\x1a\xf7\x47\xd5\xf2\x06\x43\x60\xe5\x75\xfd\x56\xbb\xe4\xa1\xff\xb6\xca\x38\xa5\xd8\x1a\x96\x1f\x6f\x7e\xfe\xc9\xb0\x14\x97\x60\x53\x44\x7b\xa3\x0d\xca\x57\xde\xf9\x28\x1f\x4f\x75\xce\x21\x74\x53\x55\xd9\xb8\x3e\x59\x8c\xd7\xf1\x33\x80\x10\xa9\x48\xf8\x8b\x7b\x72\xfe\x0f\xf7\x9d\x21\xab\xb9\x85\x2d\x5a\xce\x95\xb3\xf2\x99\xa8\xa5\x4d\x2c\x14\xb3\x21\x75\x71\xec\x72\x6e\xe1\xaf\xbf\x67\x00\x7b\xb4\x46\x17\xc6\x6b\x7e\x1f\xc8\xbd\x7b\xb8\xdf\x7c\xbd\x56\x3b\x1a\xb0\x1a\x73\x26\x1f\x28\xca\x91\xbe\xda\xeb\xc7\x29\x3b\xda\x00\x34\xb1\x8a\x26\x14\x44\x78\x93\xa1\xaa\x0f\xe8\x3c\x57\xc4\x20\x3b\x82\xf1\x08\xa4\x81\x4b\x1a\xf0\x5b\x90\x9d\x61\x88\x54\xce\xe4\xa4\x94\x34\x81\x85\xec\x82\x0e\x7c\xf7\x1b\x29\x69\x60\x5d\x79\xc8\xfc\x25\xab\x41\x79\xb7\xa7\x28\x10\x49\xf9\xde\x99\x3f\x8f\xc8\x0c\xe2\x4b\x4a\x8b\x42\xa3\x22\x87\x55\xe6\xcb\xa1\xcd\x24\x24\x7a\x0b\xe8\x34\x0c\xf8\x0c\x91\x72\x0e\x48\x6e\x82\x56\x5c\xb8\x81\x0f\x3e\x12\x18\xb7\xf5\x2d\xec\x44\x02\xb7\x8b\x45\x6f\xe4\x70\xaf\x28\x3f\x0c\xc9\x19\x79\x5e\x28\xef\x24\x9a\x2e\x89\x8f\xbc\xd0\xb4\x27\xbb\x60\xd3\xcf\x31\xaa\x9d\x11\x52\x92\x22\x2d\x30\x98\x79\x29\xdc\x49\xb9\x16\x06\xfd\xd5\x51\x9e\x37\x93\x4a\x2f\xc6\xaf\xae\xd2\x94\x2f\xf2\x9e\x7b\x12\x0c\x03\x8e\x61\xb5\xfe\x13\xbd\xd9\x94\x59\x79\x5c\xad\x3f\xc1\x21\x69\x91\xe0\x9c\xf3\xc2\xf6\x29\x8c\x4f\xc4\x67\xa2\x8c\xdb\x52\xac\xc2\x6d\xa3\x1f\x0a\x22\x39\x1d\xbc\x71\x52\x36\xca\x1a\x72\xe7\xa4\x73\xea\x06\x23\x59\xe9\xdf\x13\xb1\x64\x7d\x1a\x58\xa2\x73\x5e\xa0\x23\x48\x21\xcf\xb5\x6e\xe0\xde\xc1\x12\x07\xb2\x4b\x64\xfa\xcf\x69\xcf\x0c\xf3\x3c\x53\xfa\x65\xe2\xa7\x8f\xc2\xb9\x63\x65\xeb\x68\x3e\x5c\xe9\x37\x15\xba\xbc\x2e\xd6\x81\x54\x16\x2c\xb3\x96\x03\x61\xeb\xe3\x69\xe4\x61\x7a\x25\xbc\x3c\x91\x35\xcb\xe1\xd6\x3d\xb7\x5f\xe4\x3f\x5d\xce\x07\x6c\x86\xc4\xd8\x59\x82\x2e\x65\xc5\x7b\x8c\x9a\x34\x20\x83\xef\xd8\x5b\x12\xca\xf3\x71\x01\x09\xd0\x11\x0b\xe0\xde\x1b\x4d\xfa\x6d\xe6\xc1\x28\xb4\xf6\x19\x74\xa2\x3c\x79\x3b\xdc\xe7\x56\xeb\x88\x1c\x70\x0a\x14\x99\x34\xe9\xe6\x02\xe6\xf2\x69\x38\x2d\xfa\x1c\x7c\x14\x8a\xaf\x9e\x65\x35\x3a\xc1\xfd\xf1\x21\xfb\x32\x4f\x79\x95\x87\xef\xda\xfc\x82\xf0\x75\xe5\xbe\x35\xf1\x9a\xdd\x39\x98\x1b\xd9\x6f\x36\x46\x5e\xf5\xe9\x7d\x5d\x22\x14\xec\x90\xe9\xff\x74\xac\xfd\xf5\x83\x70\x75\xae\xcd\x55\x2f\xbf\x52\xdb\xad\xba\xe6\xc7\xb6\x38\x33\x56\x4a\xcf\x4c\xd7\x63\x73\xa3\xf2\x0b\xd3\xe1\x08\xb0\xbf\x43\x1b\x76\x78\x77\xb2\x8d\x7f\x61\xf5\x6f\x64\xf2\x79\x94\x53\xb7\x20\x31\x55\xae\xf2\x9f\x45\x56\xa1\x5a\xfe\x09\x00\x00\xff\xff\xfc\xe5\x3b\xd6\x91\x0a\x00\x00") func catalogKubedbCom_pgbouncerversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -244,12 +242,12 @@ func catalogKubedbCom_pgbouncerversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_pgbouncerversions.yaml", size: 1675, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_pgbouncerversions.yaml", size: 2705, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_postgresversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\x4d\x6f\xdb\x3c\x0c\xbe\xfb\x57\xf0\x0f\xc4\x2f\x82\xf7\x32\xf8\xd6\xb5\xdb\xd0\x7d\x74\xc1\xba\xf5\x3a\xd0\x16\xeb\x68\x91\x25\x4d\xa4\xb3\x16\xc3\xfe\xfb\x20\xcb\x4e\x9c\xd8\xe9\xc7\x2e\xc3\x78\xe3\x23\x7e\xe9\x21\x29\xa1\xd7\x37\x14\x58\x3b\x5b\x00\x7a\x4d\x77\x42\x36\x6a\x9c\x6f\x5e\x70\xae\xdd\x7f\xdb\x65\x49\x82\xcb\x6c\xa3\xad\x2a\xe0\xbc\x65\x71\xcd\x27\x62\xd7\x86\x8a\x2e\xe8\x56\x5b\x2d\xda\xd9\xac\x21\x41\x85\x82\x45\x06\x50\x05\xc2\x08\x7e\xd6\x0d\xb1\x60\xe3\x0b\xb0\xad\x31\x19\x80\xc1\x92\x0c\x47\x1b\x00\xf4\xbe\x80\x4d\x5b\x92\x2a\x33\x00\x8b\x0d\x15\xe0\x1d\x4b\x1d\x88\xb7\xa9\x24\xce\x2b\x14\x34\xae\xce\x93\x5d\x5e\xb9\x26\x63\x4f\x55\x8c\x80\x4a\x75\xa9\xd1\xac\x82\xb6\x42\xe1\xdc\x99\xb6\xb1\x5d\xf4\x05\xbc\xbd\xfe\x78\xb5\x42\x59\x17\x90\x47\x87\xbc\x8f\xd8\x65\x4e\xb9\x6e\x46\x88\xdc\x7b\x2a\x80\x25\x68\x5b\xcf\xba\xab\x32\xd7\x0d\xd6\x34\xf2\xbf\x78\xf9\xf5\xf2\xc3\xd9\x9b\x57\x4f\x0c\x40\x3e\x50\x85\x42\x6a\x1c\xe2\x10\x4c\x41\x4a\xe7\x0c\xa1\x3d\x8e\x32\x10\x9c\x4f\xd8\x1d\x05\x3c\xeb\x2b\x4c\x91\x14\x4a\x54\xeb\xe0\x5a\x5f\xc0\x0c\x95\xc9\xad\xef\x47\xac\xa3\x76\x41\x0f\xfa\x22\xfa\x23\x8b\x0b\xd4\xeb\xbb\x66\x45\x05\xbd\xe7\xca\xa9\x74\x96\x86\x63\xd5\x77\x6f\xcc\xac\xd1\x2c\xef\xe6\x4e\xdf\x6b\x96\xce\xc2\x9b\x36\xa0\x99\xf6\xbe\x3b\xe4\xb5\x0b\x72\xb5\x2f\x72\x01\xbe\x1e\xb7\x92\xb5\xad\x5b\x83\x61\xe2\x9e\x01\xf8\x40\x4c\x61\x4b\x5f\xec\xc6\xba\x1f\xf6\xb5\x26\xa3\xb8\x80\x5b\x34\x1c\xab\xe6\xca\x45\x92\xce\x4d\xcb\x42\x21\x02\x6d\x19\xfa\xc1\xe6\x02\x7e\xfe\xca\x00\xb6\x68\xb4\xea\xd8\x4e\xe9\x9d\x27\x7b\xb6\xba\xbc\xf9\xff\xba\x5a\x53\x83\x09\x8c\x99\x9c\xa7\x20\x3b\xea\xd2\x78\xef\x16\x6b\x87\x4d\xe6\x24\x49\xc7\xde\x63\x46\xe3\x05\x3b\x34\x74\xe5\x37\xaa\x64\x07\x0f\xfb\x31\xc8\x5c\x71\x51\x54\x79\xa8\x9f\xb6\x8c\xd2\x4d\xff\x14\x3e\x51\x6c\x92\x40\xdf\x5b\x1d\x48\x1d\xbb\x2d\x60\xbf\x4b\x8f\x5c\xa6\x2b\x74\xb7\x25\xc7\x81\x8e\x17\x66\x2f\x74\xe7\x5d\x10\x0a\xff\xc8\x15\xbd\x53\xd7\x54\xb5\x41\xcb\xfd\xca\x19\x5d\xcd\xd4\xf7\x50\xe5\x71\x2e\x4a\x64\xea\x7c\xef\xe3\xba\x3c\xf3\x1a\x00\x6c\xd1\xf3\xda\x89\x50\xf8\xe3\x28\xa7\xc9\x98\x16\x38\x31\x99\x2d\xe0\xa9\xfc\x89\x73\xe6\x59\x8c\xfd\xc5\x5e\x6f\xa7\xaf\xc2\x03\x89\xe7\x92\x2e\xa0\x7f\x85\x07\x75\x98\xf6\x03\x70\x66\xa6\x0e\xce\x3b\xce\x0e\x90\xf1\xc3\x7a\xf2\x12\x47\xd0\x70\x1b\xd8\x2e\xd1\xf8\x35\x2e\xf7\x58\xff\x13\xa7\x9f\x69\x74\x0c\xd0\x3d\xcb\xaa\x00\x09\x6d\xa2\x2d\xfe\x32\xb1\x21\x09\xf9\x1d\x00\x00\xff\xff\xbb\x98\x9e\x26\x94\x08\x00\x00") +var _catalogKubedbCom_postgresversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcd\x8e\x23\x35\x10\xbe\xe7\x29\x4a\xe2\xb0\x97\x4d\x47\x23\x2e\xa8\x6f\x43\x66\x40\x03\xec\x12\x6d\x86\xb9\xa2\xea\x76\xa5\x63\xc6\x6d\x1b\x57\x39\x6c\x40\xbc\x3b\xb2\xdd\x49\x3a\x49\xcf\xec\x22\xc1\x61\x7d\x73\xb9\x7e\xbf\xcf\x55\x36\x7a\xfd\x44\x81\xb5\xb3\x35\xa0\xd7\xf4\x51\xc8\xa6\x1d\x57\xcf\xdf\x70\xa5\xdd\x62\x77\xd3\x90\xe0\xcd\xec\x59\x5b\x55\xc3\x32\xb2\xb8\xfe\x03\xb1\x8b\xa1\xa5\x3b\xda\x68\xab\x45\x3b\x3b\xeb\x49\x50\xa1\x60\x3d\x03\x68\x03\x61\x12\x3e\xea\x9e\x58\xb0\xf7\x35\xd8\x68\xcc\x0c\xc0\x60\x43\x86\x93\x0e\x00\x7a\x5f\xc3\x73\x6c\x48\x35\x33\x00\x8b\x3d\xd5\xe0\x1d\x4b\x17\x88\x77\x25\x25\xae\x5a\x14\x34\xae\xab\x8a\x5e\xd5\xba\x7e\xc6\x9e\xda\xe4\x01\x95\xca\xa1\xd1\xac\x82\xb6\x42\x61\xe9\x4c\xec\x6d\xf6\x3e\x87\x1f\xd6\x3f\xbf\x5f\xa1\x6c\x6b\xa8\x92\x41\x35\x78\xcc\x91\x4b\xac\xa7\x91\x44\xf6\x9e\x6a\x60\x09\xda\x76\x93\xe6\xaa\xa9\x74\x8f\x1d\x8d\xec\xef\xbe\xfd\xf5\xe1\xdd\xed\xf7\xf7\x9f\xe9\x80\x7c\xa0\x16\x85\xd4\xd8\xc5\xb9\xb0\x38\x69\x9c\x33\x84\xf6\xd2\xcb\x01\xe0\xea\x0a\xdd\x91\xc3\xdb\x21\xc3\xe2\x49\xa1\xa4\x6d\x17\x5c\xf4\x35\x4c\x40\x59\xcc\x06\x3e\x52\x1e\x9d\x0b\xfa\xb0\x9f\x27\x7b\x64\x71\x81\x86\xfd\x91\xac\xb4\x41\xef\xb9\x75\xaa\x9c\x95\xcb\xb1\x1a\xd8\x1b\x23\x6b\x34\xcb\x8f\x53\xa7\x3f\x69\x96\xac\xe1\x4d\x0c\x68\xae\xb9\xcf\x87\xbc\x75\x41\xde\x9f\x92\x9c\x83\xef\xc6\x54\xb2\xb6\x5d\x34\x18\xae\xcc\x67\x00\x3e\x10\x53\xd8\xd1\x2f\xf6\xd9\xba\x3f\xec\x77\x9a\x8c\xe2\x1a\x36\x68\x38\x65\xcd\xad\x4b\x20\x2d\x4d\x64\xa1\x90\x04\xb1\x09\xc3\xc5\xe6\x1a\xfe\xfa\x7b\x06\xb0\x43\xa3\x55\x46\xbb\x84\x77\x9e\xec\xed\xea\xe1\xe9\xeb\x75\xbb\xa5\x1e\x8b\x30\x45\x72\x9e\x82\x1c\xa1\x2b\xd7\xfb\xd8\x58\x47\x19\x80\x22\x6e\x83\xf6\xd9\x23\xbc\x49\xae\x8a\x0e\xa8\xd4\x4a\xc4\x20\x5b\x82\xa1\x04\x52\xc0\x39\x0c\xb8\x0d\xc8\x56\x33\x04\xca\x35\x59\xc9\x29\x8d\xdc\x42\x52\x41\x0b\xae\xf9\x8d\x5a\xa9\x60\x9d\xea\x0e\x9c\xe0\x8b\x46\x41\xeb\xec\x8e\x82\x40\xa0\xd6\x75\x56\xff\x79\xf4\xcc\x20\x2e\x87\x34\x28\x34\xf0\x71\x58\xb9\xa7\x2c\x9a\x04\x42\xa4\xb7\x80\x56\x41\x8f\x7b\x08\x94\x62\x40\xb4\x23\x6f\x59\x85\x2b\x78\xe7\x02\x81\xb6\x1b\x57\xc3\x56\xc4\x73\xbd\x58\x74\x5a\x0e\xa3\xa4\x75\x7d\x1f\xad\x96\xfd\xa2\x75\x56\x82\x6e\xa2\xb8\xc0\x0b\x45\x3b\x32\x0b\xd6\xdd\x1c\x43\xbb\xd5\x42\xad\xc4\x40\x0b\xf4\x7a\x9e\x13\xb7\x92\x47\x41\xaf\xbe\x3a\xd2\xf3\x66\x94\xe9\x45\xeb\x95\x95\x2f\xe4\x8b\xb8\xa7\x0b\x09\x9a\x01\x07\xb3\x92\xff\x09\xde\x24\x4a\xa8\x7c\xb8\x5f\x3f\xc2\x21\x68\xa6\xe0\x1c\xf3\x8c\xf6\xc9\x8c\x4f\xc0\x27\xa0\xb4\xdd\x50\x28\xc4\x6d\x82\xeb\xb3\x47\xb2\xca\x3b\x6d\x25\x6f\x5a\xa3\xc9\x9e\x83\xce\xb1\xe9\xb5\x24\xa6\x7f\x8f\xc4\x92\xf8\xa9\x60\x89\xd6\x3a\x81\x86\x20\xfa\xd4\xd3\xaa\x82\x07\x0b\x4b\xec\xc9\x2c\x91\xe9\x7f\x87\x3d\x21\xcc\xf3\x04\xe9\xa7\x81\x1f\xbf\x03\xe7\x8a\x05\xad\xa3\xf8\x30\xc6\x27\x19\xba\x98\x15\x6b\x4f\x6d\xe2\x2b\x81\x96\xec\x60\xe3\xc2\xb1\xe1\x61\x3c\x0f\x5e\xee\xc7\x1c\xa3\x39\xdf\x5f\x44\xbd\x43\xc1\x06\x99\xe0\xe1\x38\xea\x3f\xed\x33\xb7\x4a\xd2\xbf\x16\xbf\x00\x51\x59\x89\x61\x1d\x48\x5d\x9a\xcd\x41\x4f\x44\x9f\x84\xb0\x14\x70\x78\x42\x5e\x2f\xed\xa8\x76\x80\x8b\x21\x32\x36\x86\xa0\x89\xe9\x0a\x77\x18\x14\x29\x40\x06\xd7\xb0\x33\x24\x94\x1a\xfe\xaa\xa4\x86\x58\x00\x77\x4e\x2b\x52\x6f\x53\x56\xba\x45\x63\xf6\xa0\x22\xa5\x51\xb2\xc5\x5d\xea\x9d\x86\xc8\x02\x47\x4f\x81\x49\x91\xaa\x26\x8b\x39\xbd\x73\xa7\x45\x1f\xbd\x0b\x42\xe1\xd5\x5a\xee\x07\xa5\x2f\x89\x26\xef\xd4\x9a\xda\x18\xb4\xec\x57\xce\xe8\x76\x22\xbf\xf3\x06\x58\xaf\xca\xdb\xfc\x2f\xca\x53\xc3\xf5\xcd\x01\xf6\xe9\xd1\xfc\xcf\x6a\xbd\x76\xfd\xb9\x85\x8b\x73\xe6\xf5\x52\x1f\x93\xc6\x97\xc4\xe5\xee\xfa\x59\xbf\x2a\xea\xe9\x6a\x26\xbd\x92\xdb\x54\x5e\x73\x18\x7e\x5a\x87\xed\xa1\x35\xce\x84\x13\xd7\xea\xec\x3c\xa3\x7f\x26\xb9\x1e\x96\x13\x75\x5e\x88\x0e\x05\xc3\xee\x06\x8d\xdf\xe2\xcd\x49\x36\xfc\xb6\xcb\xef\x73\x74\x0c\x90\xbf\x5e\xaa\x06\x09\xb1\x20\x9b\x7e\x92\x89\xb3\x22\xf9\x27\x00\x00\xff\xff\x75\xd1\xd2\x83\x78\x0c\x00\x00") func catalogKubedbCom_postgresversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -264,12 +262,12 @@ func catalogKubedbCom_postgresversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_postgresversions.yaml", size: 2196, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_postgresversions.yaml", size: 3192, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_proxysqlversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\xc1\x72\x13\x31\x0c\xbd\xef\x57\xe8\x07\xb2\x4c\x86\x0b\xe3\x5b\xa7\x05\xa6\x50\x4a\x20\xd0\x2b\xa3\xb5\xd5\xd4\xc4\x6b\xbb\xb2\x1d\x9a\x61\xf8\x77\xc6\xeb\x4d\xb2\xe9\x6e\xda\x1e\xb8\xa0\x9b\x9f\x2c\xe9\xf9\x49\xda\x45\xaf\x6f\x88\x83\x76\x56\x00\x7a\x4d\x0f\x91\x6c\x3e\x85\x7a\xfd\x26\xd4\xda\xbd\xda\xcc\x1b\x8a\x38\xaf\xd6\xda\x2a\x01\xe7\x29\x44\xd7\x7e\xa5\xe0\x12\x4b\xba\xa0\x5b\x6d\x75\xd4\xce\x56\x2d\x45\x54\x18\x51\x54\x00\x92\x09\x33\xf8\x4d\xb7\x14\x22\xb6\x5e\x80\x4d\xc6\x54\x00\x06\x1b\x32\x21\xdf\x01\x40\xef\x05\xac\x53\x43\xaa\xa9\x00\x2c\xb6\x24\xc0\xb3\x7b\xd8\x86\x7b\xb3\x29\x94\x42\x2d\x31\xa2\x71\xab\xba\xdc\xab\xa5\x6b\xab\xe0\x49\xe6\x0c\xa8\x54\x57\x1a\xcd\x82\xb5\x8d\xc4\xe7\xce\xa4\xd6\x76\xd9\x67\xf0\x61\xf9\xf9\x7a\x81\xf1\x4e\x40\x9d\x03\xea\x3e\x63\x57\xb9\xd4\xba\x19\x20\x71\xeb\x49\x40\x88\xac\xed\x6a\x32\x5c\x35\xb5\x6e\x71\x45\x83\xf8\x45\xe6\xba\xfc\x72\xf5\xe3\xf2\xd3\xd9\xfb\xb7\x2f\x4c\x43\x9e\x49\x62\x24\x35\x48\x74\x71\x0c\x96\x24\x8d\x73\x86\xd0\x3e\xce\xb2\x93\xb9\x1e\x69\x3c\x48\x78\xd6\xf3\x2c\x99\x14\xc6\x7c\x5c\xb1\x4b\x5e\xc0\x84\xa0\x25\xac\xef\x4a\xe6\xb1\x72\xac\x77\xe7\x59\x8e\xc7\x10\x1d\x53\x7f\xde\xb7\x2c\x1f\xd0\xfb\x20\x9d\x2a\xbe\x32\x22\x3b\x5d\x86\xfa\x1a\x1d\xe2\xc7\x29\xef\x95\x0e\xb1\xbb\xe1\x4d\x62\x34\xe3\x09\xe8\x9c\x41\xdb\x55\x32\xc8\x23\x77\x05\xe0\x99\x02\xf1\x86\xbe\xdb\xb5\x75\xbf\xec\x3b\x4d\x46\x05\x01\xb7\x68\x42\x66\x15\xa4\xcb\x22\x9c\x9b\x14\x22\x71\x06\x52\xc3\xfd\xf8\x06\x01\xbf\xff\x54\x00\x1b\x34\x5a\x75\x6a\x96\x37\x3b\x4f\xf6\x6c\x71\x79\xf3\x7a\x29\xef\xa8\xc5\x02\xe6\x4a\xce\x13\xc7\xbd\x34\x65\x88\xf7\xeb\xb3\xc7\x46\x73\x50\xac\x53\xe7\xb9\x4b\xc3\x35\x3a\xbe\xe8\x9a\x9f\x24\xe3\x1e\xde\x6d\xc1\xce\xa6\xc8\x65\x3b\x4c\xdc\x31\x3e\x9e\xb3\x83\xd1\x83\x77\x1c\x89\x1f\x47\x9c\xaa\x91\xad\xdb\x8e\x31\x7c\xe2\x99\xc5\x98\xee\x93\xe6\x31\xb3\x19\x1c\x76\xed\x19\x19\x3a\x5a\x4e\x2d\x49\x26\xd6\x71\xbb\x70\x46\xcb\x09\x7e\x4f\x31\xcf\x72\x37\x18\xa8\x8b\xdd\x5e\xe7\x0d\xfa\x57\xcf\x18\xa7\x7e\xf1\x9b\xfa\x39\xff\x4f\x5a\xb0\x19\xef\xc0\x13\x85\xa7\x8a\xce\xf6\x53\x77\x04\x4e\xf4\xf6\xd8\xdf\xeb\x74\x04\x0e\xbf\xf5\x27\x89\x3f\x82\x76\x2f\x80\xcd\x1c\x8d\xbf\xc3\xf9\x01\xeb\xff\x28\xe5\xdb\x3a\x70\x03\x74\x1f\x1e\x25\x20\x72\x2a\x52\xe5\xef\x64\x6e\x42\x41\xfe\x06\x00\x00\xff\xff\xa1\x56\xfe\x57\x5c\x07\x00\x00") +var _catalogKubedbCom_proxysqlversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\xcd\x8e\x1b\x37\x0c\xbe\xfb\x29\x08\xf4\x90\x4b\x3c\xc6\xa2\x97\x62\x6e\x0b\x67\x5b\x6c\x9b\xa4\x6e\x9c\xee\xb5\xe0\x48\xb4\xad\xae\x46\x52\x44\xca\x5d\xb7\xe8\xbb\x17\x92\xc6\xf6\xf8\x67\x37\x29\xd0\x1e\xa2\x9b\x28\xea\x23\xf9\xf1\x47\xc2\x60\x1e\x28\xb2\xf1\xae\x05\x0c\x86\x9e\x84\x5c\xde\x71\xf3\xf8\x1d\x37\xc6\xcf\xb6\x37\x1d\x09\xde\x4c\x1e\x8d\xd3\x2d\xcc\x13\x8b\xef\x3f\x10\xfb\x14\x15\xbd\xa1\x95\x71\x46\x8c\x77\x93\x9e\x04\x35\x0a\xb6\x13\x00\x15\x09\xb3\xf0\xa3\xe9\x89\x05\xfb\xd0\x82\x4b\xd6\x4e\x00\x2c\x76\x64\x39\xeb\x00\x60\x08\x2d\x3c\xa6\x8e\x74\x37\x01\x70\xd8\x53\x0b\x21\xfa\xa7\x1d\x7f\xb2\xdb\xea\x12\x37\x0a\x05\xad\x5f\x37\x55\xaf\x51\xbe\x9f\x70\x20\x95\x11\x50\xeb\x62\x1a\xed\x22\x1a\x27\x14\xe7\xde\xa6\xde\x15\xf4\x29\xfc\xb8\xfc\xf9\xfd\x02\x65\xd3\x42\x93\x2f\x34\x03\x62\xb1\x5c\x6d\x3d\x8c\x24\xb2\x0b\xd4\x02\x4b\x34\x6e\x7d\xf5\xba\xee\x1a\xd3\xe3\x9a\x46\xf7\x17\xd9\xd7\xe5\x2f\x6f\x7f\xbb\x7f\x77\xfb\xc3\xdd\x17\xc2\x50\x88\xa4\x50\x48\x8f\x80\xde\x9c\x0a\x2b\x48\xe7\xbd\x25\x74\xe7\x28\x7b\x9a\x9b\x0b\x8e\x47\x80\xb7\x83\x9f\x15\x49\xa3\xe4\xed\x3a\xfa\x14\x5a\xb8\x42\x68\xbd\x36\x64\x25\xfb\xb1\xf6\xd1\xec\xf7\xd3\x7c\x1f\x59\x7c\xa4\x61\x7f\x48\x59\xde\x60\x08\xac\xbc\xae\x67\xb5\x44\xf6\xbc\x8c\xf9\xb5\x86\xe5\xa7\x6b\xa7\x6f\x0d\x4b\xd1\x08\x36\x45\xb4\x97\x15\x50\x0e\xd9\xb8\x75\xb2\x18\x2f\x8e\x27\x00\x21\x12\x53\xdc\xd2\xaf\xee\xd1\xf9\x3f\xdc\xf7\x86\xac\xe6\x16\x56\x68\x39\x7b\xc5\xca\x67\x12\xe6\x36\xb1\x50\xcc\x82\xd4\xc5\xa1\x7c\xb9\x85\xbf\xfe\x9e\x00\x6c\xd1\x1a\x5d\xd8\xac\x31\xfb\x40\xee\x76\x71\xff\xf0\xed\x52\x6d\xa8\xc7\x2a\xcc\x96\x7c\xa0\x28\x07\x6a\x6a\x11\x1f\xda\xe7\x20\x03\xd0\xc4\x2a\x9a\x50\x10\xe1\x55\x86\xaa\x3a\xa0\x73\xc3\x10\x83\x6c\x08\x86\x10\x48\x03\x17\x33\xe0\x57\x20\x1b\xc3\x10\xa9\xc4\xe4\xa4\xb8\x34\x82\x85\xac\x82\x0e\x7c\xf7\x3b\x29\x69\x60\x99\xe3\x8e\x0c\xbc\xf1\xc9\x6a\x50\xde\x6d\x29\x0a\x44\x52\x7e\xed\xcc\x9f\x07\x64\x06\xf1\xc5\xa4\x45\xa1\x81\xef\xfd\x2a\x9d\xe3\xd0\x66\x12\x12\xbd\x06\x74\x1a\x7a\xdc\x41\xa4\x6c\x03\x92\x1b\xa1\x15\x15\x6e\xe0\x9d\x8f\x04\xc6\xad\x7c\x0b\x1b\x91\xc0\xed\x6c\xb6\x36\xb2\x1f\x18\xca\xf7\x7d\x72\x46\x76\x33\xe5\x9d\x44\xd3\x25\xf1\x91\x67\x9a\xb6\x64\x67\x6c\xd6\x53\x8c\x6a\x63\x84\x94\xa4\x48\x33\x0c\x66\x5a\x1c\x77\x52\x1a\xbe\xd7\xdf\x1c\xd2\xf3\x6a\xe4\xe9\x59\x6b\xd5\x55\x0a\xee\x59\xde\x73\xc1\x81\x61\xc0\xe1\x5a\xf5\xff\x48\x6f\x16\x65\x56\x3e\xdc\x2d\x3f\xc2\xde\x68\x49\xc1\x29\xe7\x85\xed\xe3\x35\x3e\x12\x9f\x89\x32\x6e\x45\xb1\x26\x6e\x15\x7d\x5f\x10\xc9\xe9\xe0\x8d\x93\xb2\x51\xd6\x90\x3b\x25\x9d\x53\xd7\x1b\xc9\x99\xfe\x94\x88\x25\xe7\xa7\x81\x39\x3a\xe7\x05\x3a\x82\x14\x72\xcf\xea\x06\xee\x1d\xcc\xb1\x27\x3b\x47\xa6\xff\x9d\xf6\xcc\x30\x4f\x33\xa5\x9f\x27\x7e\x3c\xed\x4f\x15\x2b\x5b\x07\xf1\x7e\x58\x5f\xcd\xd0\xd9\x2c\x58\x06\x52\x39\x5f\x99\xb4\x7c\x0f\x56\x3e\x1e\x74\x60\x3c\xc0\x9f\xef\xc7\x6a\x63\x3f\x4f\x4f\xe5\x67\xd6\x8f\x63\x77\x8f\xcd\x90\x18\x3b\x4b\xd0\xa5\x9c\xef\x35\x46\x4d\x1a\x90\xc1\x77\xec\x2d\x09\xe5\xee\x38\x83\x04\xe8\x88\x05\x70\xeb\x8d\x26\xfd\x3a\xb3\x60\x14\x5a\xbb\x03\x9d\x28\xf7\xdd\x06\xb7\xb9\xd0\x3a\x22\x07\x9c\x02\x45\x26\x4d\xba\x39\x83\x39\x1f\xfa\xc7\x45\x4f\xc1\x47\xa1\xf8\x62\x2c\x77\x83\x12\xdc\x1f\x1e\xa9\xcf\xf3\x94\x57\x79\xd4\x2e\xc5\xcf\xa4\xbd\xae\x5c\xb5\x26\x5e\xb2\x3b\x05\x73\xc5\xfa\xd5\xb2\x28\x6e\x79\xbd\x24\x95\xa2\x91\xdd\xc2\x5b\xa3\xae\xf8\x77\x5a\x2d\xcb\x45\x7d\xa8\xfe\x45\x78\xb9\x46\x3b\x64\x2a\x06\x76\xef\xf3\xeb\xf8\x5f\xc5\x7a\x09\xfd\xc5\x81\x0f\x6f\xd8\xcb\xd1\x0e\x4a\x5f\x53\x46\xb7\x97\x2f\xe1\x45\x5c\x0f\x17\x6d\xfc\x82\x6f\xd7\xfc\x9a\x1e\x3a\xe2\x44\x78\xa5\x9a\x4e\xcf\x07\x3e\x4f\x84\x97\x33\xe5\x4a\x6c\x67\xa2\x7d\x90\xb0\xbd\x41\x1b\x36\x78\x73\x94\x0d\x5f\xcf\xfa\x09\x1b\x1d\x03\x94\x1f\x8a\x6e\x41\x62\xaa\x6c\xe6\x0f\x55\xce\x53\x95\xfc\x13\x00\x00\xff\xff\x74\x53\x6b\x2b\x85\x0b\x00\x00") func catalogKubedbCom_proxysqlversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -284,12 +282,12 @@ func catalogKubedbCom_proxysqlversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_proxysqlversions.yaml", size: 1884, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_proxysqlversions.yaml", size: 2949, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _catalogKubedbCom_redisversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x55\xcb\x72\xdb\x3a\x0c\xdd\xeb\x2b\xf0\x03\xd6\x1d\xcf\xdd\x74\xb4\x4b\x93\xb6\x93\x3e\x52\x4f\xd2\x66\xdb\x81\x48\xc4\x66\x4d\x91\x2c\x08\xba\xc9\x74\xfa\xef\x1d\x8a\x92\x2d\x3f\xf2\x58\x74\x53\xec\x70\x40\x80\x47\x07\x00\x85\xc1\xdc\x12\x47\xe3\x5d\x03\x18\x0c\xdd\x0b\xb9\xec\xc5\x7a\xfd\x2a\xd6\xc6\xff\xb7\x99\xb7\x24\x38\xaf\xd6\xc6\xe9\x06\xce\x53\x14\xdf\x5d\x53\xf4\x89\x15\x5d\xd0\x9d\x71\x46\x8c\x77\x55\x47\x82\x1a\x05\x9b\x0a\x40\x31\x61\x06\xbf\x98\x8e\xa2\x60\x17\x1a\x70\xc9\xda\x0a\xc0\x62\x4b\x36\xe6\x33\x00\x18\x42\x03\xeb\xd4\x92\x6e\x2b\x00\x87\x1d\x35\xc0\xa4\x4d\xdc\x14\x3e\xb1\x56\x28\x68\xfd\xb2\x2e\x87\x6a\xe5\xbb\x2a\x06\x52\x39\x1d\xb5\xee\xef\x45\xbb\x60\xe3\x84\xf8\xdc\xdb\xd4\xb9\xbe\xf4\x0c\xde\xdf\x7c\xbe\x5a\xa0\xac\x1a\xa8\x73\x42\x3d\x54\xec\xaf\x2d\x17\xdd\x4e\x10\x79\x08\xd4\x40\x14\x36\x6e\x79\x32\x5d\xb7\xb5\xe9\x70\x49\x93\xfc\x8b\xd7\xdf\x2e\x3f\x9d\xbd\x7b\xf3\xc2\x02\x14\x98\x14\x0a\xe9\x69\x89\x7d\xb0\x14\x69\xbd\xb7\x84\xee\xb0\xca\xa8\x6e\x7d\x24\xed\xa4\xe0\xd9\xc0\xb0\x54\xd2\x28\xd9\x5d\xb2\x4f\xa1\x81\x13\x52\x96\xb4\xa1\x19\x99\xc7\xd2\xb3\x19\xfd\x59\xce\xc7\x28\x9e\x69\xf0\xb7\x9d\xca\x0e\x86\x10\x95\xd7\x25\x56\x26\xe3\x3a\xb7\x6e\x2a\xab\x35\x51\x3e\x1c\x85\x3e\x9a\x28\x7d\x38\xd8\xc4\x68\x0f\x5a\xde\x47\xe2\xca\xb3\x5c\xed\xb8\xcd\x80\xf5\xb4\x83\xd1\xb8\x65\xb2\xc8\xfb\xb9\x15\x40\x60\x8a\xc4\x1b\xfa\xea\xd6\xce\xff\x74\x6f\x0d\x59\x1d\x1b\xb8\x43\x1b\x33\xd3\xa8\x7c\x16\xe6\xdc\xa6\x28\xc4\x19\x48\x2d\x0f\x93\x1c\x1b\xf8\xf5\xbb\x02\xd8\xa0\x35\xba\x57\xb8\xdc\xed\x03\xb9\xb3\xc5\xe5\xed\xff\x37\x6a\x45\x1d\x16\x30\xdf\xe4\x03\xb1\x6c\xe5\x2a\xf3\xbc\xdd\xa4\x2d\x76\x34\x1b\xc5\x7a\xc5\x9e\x3b\x34\xdd\xa8\xfd\x83\xbe\xfd\x4e\x4a\xb6\xf0\xb8\x13\xa3\x9d\x22\x97\x4d\xb7\xfb\xfe\xe3\x27\xb3\xf5\x13\x7f\x0c\x3f\x42\xb6\x18\xd3\x8f\x64\x98\xf4\x61\xda\x0c\x76\xfb\xf3\xcc\xc7\xf4\x44\xb7\x9b\x71\x58\xe8\x70\x49\x76\x46\xf7\xc1\xb3\x10\xff\x23\x9f\x18\xbc\xbe\x21\x95\xd8\xc8\xc3\xc2\x5b\xa3\x4e\xf0\x7b\x8a\x79\x9e\x8b\x16\x23\xf5\xb9\x0f\x79\x57\xfe\xda\x67\x1c\x97\x7e\xe9\x37\x6d\x8e\xa7\xff\x09\x16\xa7\x18\xcc\x60\x78\x61\x46\x77\xec\xea\x1e\x78\x42\xbb\xbd\xf8\xf4\xad\x78\x94\xf2\x01\x34\x72\x87\xcd\x1c\x6d\x58\xe1\x7c\x87\x0d\xff\x94\xf2\xc6\x4e\xc2\x00\xfd\x63\xa3\x1b\x10\x4e\x45\xa4\xfc\x5e\xe6\x91\x2a\xc8\x9f\x00\x00\x00\xff\xff\x7a\x06\x61\x2f\x5b\x07\x00\x00") +var _catalogKubedbCom_redisversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x56\x4f\x8f\x63\x35\x0c\xbf\xf7\x53\x58\xe2\xb0\x97\xed\xab\x46\x5c\xd0\xbb\x0d\x9d\x01\x0d\xb0\x4b\x35\x5d\xe6\x8a\xfc\x12\xb7\x0d\x93\x97\x84\xd8\x29\x5b\x10\xdf\x1d\x25\x79\x6d\x5f\xff\xcc\xec\x22\xc1\x61\x73\x8b\x63\xff\x6c\xff\x6c\x27\xc1\x60\x9e\x28\xb2\xf1\xae\x05\x0c\x86\x3e\x0a\xb9\xbc\xe3\xe6\xf9\x1b\x6e\x8c\x9f\x6d\x6f\x3a\x12\xbc\x99\x3c\x1b\xa7\x5b\x98\x27\x16\xdf\x3f\x12\xfb\x14\x15\xdd\xd1\xca\x38\x23\xc6\xbb\x49\x4f\x82\x1a\x05\xdb\x09\x80\x8a\x84\x59\xf8\xc1\xf4\xc4\x82\x7d\x68\xc1\x25\x6b\x27\x00\x16\x3b\xb2\x9c\x75\x00\x30\x84\x16\x9e\x53\x47\xba\x9b\x00\x38\xec\xa9\x85\x48\xda\xf0\xb6\xc6\xc3\x8d\x42\x41\xeb\xd7\x4d\x55\x6a\x94\xef\x27\x1c\x48\x65\x73\xd4\xba\xf8\x45\xbb\x88\xc6\x09\xc5\xb9\xb7\xa9\x77\x05\x7a\x0a\x3f\x2c\x7f\x7e\xbf\x40\xd9\xb4\xd0\x64\x83\x66\x40\x2c\x6e\xab\xa3\xa7\x91\x44\x76\x81\x5a\x60\x89\xc6\xad\xaf\x9a\xeb\xae\x31\x3d\xae\x69\x64\x7f\xf7\xed\xaf\x0f\xef\x6e\xbf\xbf\xff\x4c\x00\x0a\x91\x14\x0a\xe9\x31\xc4\xa9\xb0\x82\x74\xde\x5b\x42\x77\x8e\xb2\x67\xb7\xb9\xa0\x76\x04\x78\x3b\x44\x58\x91\x34\x4a\xde\xae\xa3\x4f\xa1\x85\x2b\x54\x56\xb3\xa1\x18\x39\x8e\xb5\x8f\x66\xbf\x9f\x66\x7b\x64\xf1\x91\x86\xfd\xa1\x52\x79\x83\x21\xb0\xf2\xba\x9e\xd5\xce\x78\xcc\xa5\x1b\xd3\x6a\x0d\xcb\x8f\x17\x47\x3f\x19\x96\x72\x1c\x6c\x8a\x68\xcf\x4a\x5e\x4e\x78\xe3\xa3\xbc\x3f\xc6\x36\x85\xa8\xc7\x15\x64\xe3\xd6\xc9\x62\x3c\xb5\x9d\x00\x84\x48\x4c\x71\x4b\xbf\xb8\x67\xe7\xff\x70\xdf\x19\xb2\x9a\x5b\x58\xa1\xe5\x1c\x29\x2b\x9f\x89\x99\xdb\xc4\x42\x31\x0b\x52\x17\x87\x4e\xe6\x16\xfe\xfa\x7b\x02\xb0\x45\x6b\x74\x61\xb8\xfa\xf6\x81\xdc\xed\xe2\xe1\xe9\xeb\xa5\xda\x50\x8f\x55\x98\x3d\xf9\x40\x51\x0e\x74\xd5\x7e\x3e\x4c\xd2\x41\x06\xa0\x89\x55\x34\xa1\x20\xc2\x9b\x0c\x55\x75\x40\xe7\xd9\x21\x06\xd9\x10\x0c\x29\x90\x06\x2e\x6e\xc0\xaf\x40\x36\x86\x21\x52\xc9\xc9\x49\x09\x69\x04\x0b\x59\x05\x1d\xf8\xee\x37\x52\xd2\xc0\x32\xe7\x1d\x39\x73\x97\xac\x06\xe5\xdd\x96\xa2\x40\x24\xe5\xd7\xce\xfc\x79\x40\x66\x10\x5f\x5c\x5a\x14\x1a\x2a\xb1\x5f\x65\x8e\x1c\xda\x4c\x42\xa2\xb7\x80\x4e\x43\x8f\x3b\x88\x94\x7d\x40\x72\x23\xb4\xa2\xc2\x0d\xbc\xf3\x91\xc0\xb8\x95\x6f\x61\x23\x12\xb8\x9d\xcd\xd6\x46\xf6\x77\x87\xf2\x7d\x9f\x9c\x91\xdd\x4c\x79\x27\xd1\x74\x49\x7c\xe4\x99\xa6\x2d\xd9\x19\x9b\xf5\x14\xa3\xda\x18\x21\x25\x29\xd2\x0c\x83\x99\x96\xc0\x9d\x94\xf1\xef\xf5\x57\x87\xf2\xbc\x19\x45\x7a\x36\x6e\x75\x95\x26\x7c\x91\xf7\xdc\x87\x60\x18\x70\x30\xab\xf1\x1f\xe9\xcd\xa2\xcc\xca\xe3\xfd\xf2\x03\xec\x9d\x96\x12\x9c\x72\x5e\xd8\x3e\x9a\xf1\x91\xf8\x4c\x94\x71\x2b\x8a\xb5\x70\xab\xe8\xfb\x82\x48\x4e\x07\x6f\x9c\x94\x8d\xb2\x86\xdc\x29\xe9\x9c\xba\xde\x48\xae\xf4\xef\x89\x58\x72\x7d\x1a\x98\xa3\x73\x5e\xa0\x23\x48\x21\xcf\xb1\x6e\xe0\xc1\xc1\x1c\x7b\xb2\x73\x64\xfa\xdf\x69\xcf\x0c\xf3\x34\x53\xfa\x69\xe2\xc7\x17\xff\xa9\x62\x65\xeb\x20\xde\x5f\xdd\x57\x2b\x34\xbe\x22\x96\x81\x54\x2e\x56\x66\x2c\x1b\xc1\xca\xc7\x3a\xea\x30\xbe\x06\x5e\x9e\xc4\x82\xde\x9d\xee\xcf\xfc\xdd\xa1\x60\x87\x4c\xf0\x70\xb8\xd8\x3f\x8d\x59\x86\x24\xeb\x5f\x8a\x5f\x20\xa7\xae\x5c\x5b\x13\x49\x9f\x9b\x4d\xc1\x5c\xf1\x7e\x95\xbc\x9a\xc0\xfe\xc1\x78\x3d\xb5\x83\xda\x9e\x2e\x86\xc4\xd8\x59\x82\x2e\xe5\xe6\x5d\x63\xd4\xa4\x01\x19\x7c\xc7\xde\x92\x50\x1e\xf5\x8b\x94\x3a\x62\x01\xdc\x7a\xa3\x49\xbf\xcd\x51\x19\x85\xd6\xee\x40\x27\xca\x97\xc8\x06\xb7\x79\x6a\x3a\x22\x07\x9c\x02\x45\x26\x4d\xba\xb9\x9a\xcc\xf1\x55\x3b\x2e\xfa\x18\x7c\x14\x8a\xaf\xe6\x72\x3f\x28\x7d\x49\x65\x0a\x5e\x2f\x49\xa5\x68\x64\xb7\xf0\xd6\xa8\x2b\xf1\x9d\xe4\xb8\x58\x2e\xea\x4b\xfc\x2f\xd2\xd3\x43\xfb\x16\x07\xbb\xfc\x56\xfe\x67\xb9\x5e\x42\x7f\x6e\xe2\xdb\xcb\xd7\xef\x22\xd9\xa7\x8b\x01\x7e\x25\xd0\x6b\x41\x4e\x61\xf8\x84\xec\xb7\xfb\x3e\x3a\x11\x5e\xa9\xc1\xc9\xf9\xe5\x3d\x72\x25\xab\x33\xd1\x3e\x3d\xd8\xde\xa0\x0d\x1b\xbc\x39\xca\x86\x6f\x67\xfd\x86\x8d\x8e\x01\xca\x7f\x44\xb7\x20\x31\x55\x1e\xf3\x97\x2a\xb7\x66\x95\xfc\x13\x00\x00\xff\xff\xc4\x46\x99\xa5\x7e\x0b\x00\x00") func catalogKubedbCom_redisversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -304,12 +302,12 @@ func catalogKubedbCom_redisversionsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "catalog.kubedb.com_redisversions.yaml", size: 1883, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "catalog.kubedb.com_redisversions.yaml", size: 2942, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_elasticsearchmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcb\x6e\xdb\x4a\x0c\xdd\xeb\x2b\xf8\x03\xf6\x85\x71\x37\x85\x76\x45\x1f\x40\xd1\x07\x8a\xb4\xc9\x9e\x9a\xa1\xed\xa9\xe7\x15\x92\x72\x9b\xbf\x2f\x66\xc6\x51\x14\xdb\x89\x5d\xed\x78\x78\xf8\x3e\x1a\xcc\xee\x8e\x58\x5c\x8a\x3d\x60\x76\xf4\x47\x29\x16\x4b\x96\xbb\x37\xb2\x74\xe9\xbf\xfd\x6a\x20\xc5\x55\xb7\x73\xd1\xf6\xf0\x6e\x14\x4d\xe1\x86\x24\x8d\x6c\xe8\x3d\xad\x5d\x74\xea\x52\xec\x02\x29\x5a\x54\xec\x3b\x00\xc3\x84\x05\xfc\xe9\x02\x89\x62\xc8\x3d\xc4\xd1\xfb\x0e\xc0\xe3\x40\x5e\x0a\x07\x00\x73\xee\x61\x37\x0e\x64\x87\x0e\x20\x62\xa0\x1e\xc8\xa3\xa8\x33\x42\xc8\x66\x1b\x92\x75\x6b\x67\x6a\x2a\xa6\xfb\x91\x44\x65\x69\x07\x5c\xb6\xa0\xa5\x49\xa1\x93\x4c\xa6\xa4\xdb\x70\x1a\x73\x0f\x47\xde\x96\xf6\x50\xcf\xa0\xd2\x26\xb1\x7b\xb4\x17\x50\xfa\x15\x4d\x4c\x07\x7b\x6a\xa6\x18\x98\xb3\x98\x64\x9b\xaf\x0d\xff\x61\xde\xdd\xd7\x59\x77\x37\xad\xbb\x4a\xf5\x4e\xf4\xf3\x55\xf4\x2f\xee\x10\x92\xfd\xc8\xe8\xaf\x98\xbe\xb2\x65\x9b\x58\xbf\x3d\xcd\xb5\x00\x92\x90\x2c\xd3\x7d\x73\xbb\xb8\x19\x3d\xf2\xe5\x74\x1d\x40\x66\x12\xe2\x3d\xdd\xc6\x5d\x4c\xbf\xe3\x47\x47\xde\x4a\x0f\x6b\xf4\x52\x06\x17\x93\x32\xf5\x50\x8b\x65\x34\x64\x3b\x80\x3d\x7a\x67\x6b\x9a\x56\x3e\x65\x8a\x6f\xbf\x7f\xba\xfb\xff\x87\xd9\x52\xc0\x06\x96\xcc\x29\x13\xeb\xb4\xed\x76\xf1\x49\x6b\x13\x06\xa0\x0f\xa5\x86\x28\xbb\xb8\x99\xe0\xba\xf0\x4b\xa4\xb9\xe6\x9e\x13\xd3\xf0\x8b\x8c\x4e\xf0\xa3\x4a\x5e\x27\x29\xea\x28\x73\xda\xb9\x19\xaa\x92\x52\xb4\x55\xf5\x47\x38\x80\x53\x0a\x27\xe0\xcb\x89\xda\x57\xce\x74\x9b\x2d\x2a\x95\x1f\xe6\x1c\x03\x60\x9d\x38\xa0\xf6\x45\xb2\xb4\x50\x17\xe8\x2c\xeb\xec\x96\x9e\xbe\x40\x22\xb8\x79\xa1\xc2\x85\x58\x26\x94\xe7\x77\xbb\x3a\xb4\xba\xff\x3d\xb0\xa8\xd4\x31\xd9\xd3\xd0\x45\x0d\x3c\x81\xcf\x5e\x75\xee\x42\x66\x7c\x78\x5d\x06\x47\xd0\xfe\xf1\x69\xdc\xaf\xd0\xe7\x2d\xae\x9e\xb0\x7a\xca\xc5\xe1\xdd\x9a\xb9\x01\xea\x1f\x65\x7b\x50\x1e\x5b\x93\xe5\x8d\x29\x7b\x6f\xc8\xdf\x00\x00\x00\xff\xff\x39\x47\x8c\xca\x72\x05\x00\x00") +var _dbaKubedbCom_elasticsearchmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x4f\x6f\x1c\xb7\x0f\xbd\xef\xa7\x20\xf0\x3b\xe4\x92\xdd\x85\xf1\xbb\x14\x73\x0b\x9c\x14\x08\xda\x14\x45\x9c\xe4\xce\x91\xb8\xbb\xac\x35\x92\x42\x52\x9b\xba\x9f\xbe\x90\xb4\xff\xbd\xae\x5d\x03\x9d\x9b\x28\xea\xf1\xf1\x91\xa2\x06\x33\x7f\x23\x51\x4e\x71\x00\xcc\x4c\x7f\x1a\xc5\xba\xd2\xc5\xfd\x4f\xba\xe0\xb4\xdc\xde\x8c\x64\x78\x33\xbb\xe7\xe8\x07\xb8\x2d\x6a\x69\xfa\x4c\x9a\x8a\x38\x7a\x4f\x2b\x8e\x6c\x9c\xe2\x6c\x22\x43\x8f\x86\xc3\x0c\xc0\x09\x61\x35\x7e\xe1\x89\xd4\x70\xca\x03\xc4\x12\xc2\x0c\x20\xe0\x48\x41\xab\x0f\x00\xe6\x3c\xc0\x7d\x19\xc9\x8f\x33\x80\x88\x13\x0d\x40\x01\xd5\xd8\x29\xa1\xb8\xcd\x94\x3c\xaf\xd8\x35\x28\xa1\xef\x85\xd4\x74\xe1\x47\x5c\xf4\x43\x0b\x97\xa6\x99\x66\x72\x15\x6e\x2d\xa9\xe4\x01\x2e\x76\x3b\xec\x2e\x9e\x43\xa3\x75\x12\xde\xaf\xe7\x50\xf9\xaa\x25\xa1\xdd\xfa\x40\xa6\x2e\x30\x67\x75\xc9\xf7\xbd\x9e\xfc\x87\x53\x76\x9f\x4e\xd8\x7d\xee\xec\x9a\x6b\x60\xb5\x5f\x5e\xe4\xfe\x2b\xef\x8e\xe4\x50\x04\xc3\x0b\xb2\x6f\xde\xba\x49\x62\xbf\x1d\xf3\x9a\x03\xe9\x94\xbc\xd0\xf7\xbe\xcd\x71\x5d\x02\xca\xf3\x70\x33\x80\x2c\xa4\x24\x5b\xfa\x1a\xef\x63\xfa\x11\x7f\x66\x0a\x5e\x07\x58\x61\xd0\x9a\xb8\xba\x94\x69\x80\x16\x2c\xa3\x23\x3f\x03\xd8\x62\x60\xdf\x60\x7a\xf8\x94\x29\xbe\xfb\xfd\xe3\xb7\xff\xdf\xb9\x0d\x4d\xd8\x8d\x15\x39\x65\x12\x3b\xa8\xdd\x2b\x7e\xe8\xb5\x83\x0d\xc0\x93\x3a\xe1\xdc\x10\xe1\x4d\x85\xea\x3e\xe0\x6b\x77\x91\x82\x6d\x08\xb6\xdd\x46\x1e\xb4\x85\x81\xb4\x02\xdb\xb0\x82\x50\xcb\x21\x5a\xa3\x74\x02\x0b\xd5\x05\x23\xa4\xf1\x0f\x72\xb6\x80\xbb\x9a\xa7\x68\x95\xaf\x04\x0f\x2e\xc5\x2d\x89\x81\x90\x4b\xeb\xc8\x7f\x1d\x90\x15\x2c\xb5\x90\x01\x6d\x5f\xd3\xfd\xc7\xd1\x48\x22\x86\x2a\x42\xa1\xb7\x80\xd1\xc3\x84\x0f\x20\x54\x63\x40\x89\x27\x68\xcd\x45\x17\xf0\x29\x09\x01\xc7\x55\x1a\x60\x63\x96\x75\x58\x2e\xd7\x6c\xfb\xdb\xe5\xd2\x34\x95\xc8\xf6\xb0\x74\x29\x9a\xf0\x58\x2c\x89\x2e\x3d\x6d\x29\x2c\x95\xd7\xf3\x5a\x3b\x36\x72\x56\x84\x96\x98\x79\xde\x88\x47\x6b\x57\x74\xf2\xff\x93\xdd\x55\xd4\x37\x27\x4c\xed\xa1\x96\x4d\x4d\x38\xae\x0f\xe6\xd6\xc3\x4f\xea\x5e\x5b\x16\x58\x01\x77\xc7\x3a\xff\xa3\xbc\xd5\x54\x55\xf9\xfc\xe1\xee\x0b\xec\x83\xb6\x12\x9c\x6b\xde\xd4\x3e\x1e\xd3\xa3\xf0\x55\x28\x8e\x2b\x92\x5e\xb8\x95\xa4\xa9\x21\x52\xf4\x39\x71\xb4\xb6\x70\x81\x29\x9e\x8b\xae\x65\x9c\xd8\x6a\xa5\xfb\x25\x00\x4b\x0b\xb8\xc5\x18\x93\xc1\x48\x50\xb2\x47\x23\xbf\x80\x8f\x11\x6e\x71\xa2\x70\x8b\x4a\xff\xb9\xec\x55\x61\x9d\x57\x49\x9f\x17\xfe\x74\x34\x9e\x3b\x76\xb5\x0e\xe6\xfd\x30\xbb\x5a\xa1\xe7\xa6\xc9\x5d\x26\x57\x0b\x58\x55\xac\x40\xb0\x4a\x72\x3e\x02\xce\x54\xdd\x5d\xa8\x67\x29\x19\x5a\xd1\xd7\x93\x6a\xc7\x0f\xb4\xfa\xea\xdf\x12\xbb\x36\x4a\xea\xe7\x52\xf4\xed\xf1\xb9\xb0\x5f\x70\xbc\x3d\xb8\xd5\x99\x1e\x98\xfc\xfe\x86\xef\x3a\xea\x2d\x68\x71\x1b\xc0\xb6\x2f\x69\x8b\x01\x92\x5c\x20\x56\xcc\xc8\x18\x16\x17\x76\x36\x9a\x1e\x85\x7f\x9a\x72\xff\x6a\xee\x5f\x5b\xdb\xd6\x17\xf2\x9a\xc7\x45\x0a\xb6\x7f\x48\x9b\x76\x7d\x38\xa9\xed\x5a\xbf\x67\xc3\x7a\xd4\xe3\x2a\xe0\x2a\xc9\x84\x36\xd4\x47\x8f\xe6\x15\xf0\xaa\xd7\xd5\x06\x3e\x7e\x13\xa9\xe2\xfa\x25\x94\x37\x65\xc2\x08\x42\xe8\x71\x0c\xb4\x3f\x08\x3f\xd8\x36\xe0\xc9\x90\x83\x02\x8e\xa9\xd8\x69\x25\xae\xc2\xf6\x26\x7c\x15\x5d\x21\xd4\xf3\xc7\xe6\x09\xb6\xa3\x30\xad\x76\xee\x07\x8d\x77\xa4\x5e\x1f\xbe\x6d\x3f\x1f\x7c\x1f\xe7\xd0\x7d\x2d\xe0\x5b\x70\x45\x84\xa2\x85\x07\x78\xd7\x76\xc8\x43\x12\x78\x4f\x91\xc9\x5f\xf6\xe1\x0b\xf8\xd4\x30\x2c\xe4\x1f\x33\x9a\xb7\x83\x8f\xcc\x57\x07\xc2\xe9\x16\x8a\xe0\xc3\x3f\x4f\x90\x0b\xd3\x76\xff\xab\xb9\xbd\xc1\x90\x37\x78\x73\xb4\xb5\x9b\x32\xdf\xfd\x07\x9e\x6c\x03\xb4\x3f\x14\x3f\x80\x49\xe9\x24\xeb\x3f\x5b\xed\xc2\x6e\xf9\x3b\x00\x00\xff\xff\xf1\xc5\xbd\x92\xc2\x0a\x00\x00") func dbaKubedbCom_elasticsearchmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -324,12 +322,12 @@ func dbaKubedbCom_elasticsearchmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_elasticsearchmodificationrequests.yaml", size: 1394, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_elasticsearchmodificationrequests.yaml", size: 2754, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_etcdmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xc9\x8e\x13\x41\x0c\xbd\xf7\x57\xf8\x07\x12\x14\x71\x41\x7d\x43\x2c\x12\x62\x11\x1a\x98\xb9\xbb\xab\x9c\xa4\x48\x6d\x63\xbb\x03\xf3\xf7\xa8\xaa\x92\x4e\x26\xdb\x40\xdf\xfc\xfc\xbc\xbf\x2e\xcc\xee\x81\x58\x5c\x8a\x3d\x60\x76\xf4\x47\x29\x16\x4b\xe6\x9b\x37\x32\x77\xe9\xd5\x76\x31\x90\xe2\xa2\xdb\xb8\x68\x7b\x78\x37\x8a\xa6\x70\x47\x92\x46\x36\xf4\x9e\x96\x2e\x3a\x75\x29\x76\x81\x14\x2d\x2a\xf6\x1d\x80\x61\xc2\x02\xfe\x74\x81\x44\x31\xe4\x1e\xe2\xe8\x7d\x07\xe0\x71\x20\x2f\x85\x03\x80\x39\xf7\xb0\x19\x07\xb2\x43\x07\x10\x31\x50\x0f\xa4\xc6\x86\x64\xdd\xd2\x99\x9a\x81\xe9\x71\x24\x51\x99\xdb\x01\xe7\x8d\x3b\x37\x29\x74\x92\xc9\x94\x2c\x2b\x4e\x63\xee\xe1\xc4\xdb\xb2\xed\xca\x18\x54\x5a\x25\x76\x7b\x7b\x06\xa5\x4d\xd1\xc4\xb4\xb3\xa7\x1e\x8a\x81\x39\x8b\x49\xb6\xf9\xda\xcc\x1f\xd4\xd8\xaf\x47\x4d\xdd\xb5\xa6\x2a\xc3\x3b\xd1\xcf\xb7\x58\x5f\xdc\x8e\x99\xfd\xc8\xe8\xaf\x8f\x58\x49\xb2\x4e\xac\xdf\x0e\xcd\xcf\xf6\x74\xa6\xc7\x46\x70\x71\x35\x7a\xe4\xab\x79\x3a\x80\xcc\x24\xc4\x5b\xba\x8f\x9b\x98\x7e\xc7\x8f\x8e\xbc\x95\x1e\x96\xe8\xa5\x8c\x25\x26\x65\xea\xa1\x56\xc9\x68\xc8\x76\x00\x5b\xf4\xce\xd6\x34\xad\x6e\xca\x14\xdf\x7e\xff\xf4\xf0\xfa\x87\x59\x53\xc0\x06\x96\xcc\x29\x13\xeb\xb4\xcb\x76\xc6\x49\x40\x13\x06\xa0\x4f\xa5\x86\x28\xbb\xb8\x9a\xe0\xba\xce\x97\x48\xc7\x42\x7a\x4e\x4c\xc3\x2f\x32\x3a\xc1\x7b\x0d\xdc\x26\x29\xea\x28\xc7\xb4\x4b\x33\x54\x9d\xa4\x68\xab\x94\x4f\x70\x00\xa7\x14\xce\xc0\xeb\x89\xda\xe7\x51\xf4\x3e\x5b\x54\x2a\x7f\xc1\x25\x06\xc0\x32\x71\x40\xed\x8b\x20\x69\xa6\x2e\xd0\x45\xd6\xc5\x2d\x1d\xbe\x40\x22\xb8\xba\x52\xe1\x85\x58\x26\x94\xe7\x77\xfb\xe7\xd0\xea\xfe\xff\xc0\xa2\x52\xc7\x64\xcf\x43\x67\x35\xf0\x0c\xbe\x78\xd5\x63\x17\x32\xe3\xd3\x6d\x19\x9c\x40\xdb\xfd\x7b\xb7\x5d\xa0\xcf\x6b\x5c\x1c\xb0\x7a\xca\xd9\xee\x31\x3a\x72\x03\xd4\x3f\xca\xf6\xa0\x3c\xb6\x26\xcb\x0b\x52\xf6\xde\x90\xbf\x01\x00\x00\xff\xff\x9a\x4c\x53\x6f\x47\x05\x00\x00") +var _dbaKubedbCom_etcdmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\xc1\x8e\x1b\x37\x0c\xbd\xfb\x2b\x08\xf4\x90\x4b\x6c\x63\xd1\x4b\x31\xb7\x60\x93\x02\x41\x9b\xa2\xd8\x4d\x72\xe7\x48\xb4\xcd\xae\x46\x9a\x90\x94\xd3\xed\xd7\x17\x92\x3c\x63\xaf\xd7\xce\xa6\x01\x3a\x37\x51\xd4\xe3\xe3\x23\x45\x0d\x8e\xfc\x99\x44\x39\xc5\x0e\x70\x64\xfa\xdb\x28\x96\x95\xae\x1e\x7e\xd1\x15\xa7\xf5\xfe\xa6\x27\xc3\x9b\xc5\x03\x47\xdf\xc1\x6d\x56\x4b\xc3\x1d\x69\xca\xe2\xe8\x2d\x6d\x38\xb2\x71\x8a\x8b\x81\x0c\x3d\x1a\x76\x0b\x00\x27\x84\xc5\xf8\x91\x07\x52\xc3\x61\xec\x20\xe6\x10\x16\x00\x01\x7b\x0a\x5a\x7c\x00\x70\x1c\x3b\x78\xc8\x3d\xf9\x7e\x01\x10\x71\xa0\x0e\xc8\x9c\x1f\x92\xe7\x0d\xbb\x8a\x20\xf4\x25\x93\x9a\xae\x7c\x8f\xab\xe6\xbb\x72\x69\x58\xe8\x48\xae\xa0\x6c\x25\xe5\xb1\x83\xb3\xdd\x86\x76\x08\xe3\xd0\x68\x9b\x84\xa7\xf5\x12\x0a\x4d\xb5\x24\x74\x58\xcf\x1c\xca\x02\xc7\x51\x5d\xf2\x6d\xaf\xe5\xfc\xce\x9c\xff\x70\x42\xea\xae\x91\xaa\x1e\x81\xd5\x7e\xfb\x96\xd7\xef\x7c\xf0\x1c\x43\x16\x0c\xd7\x53\xac\x4e\xba\x4b\x62\x7f\x1c\xc9\x2f\x27\x77\xa1\x2f\xcd\x81\xe3\x36\x07\x94\xab\x38\x0b\x80\x51\x48\x49\xf6\xf4\x29\x3e\xc4\xf4\x35\xfe\xca\x14\xbc\x76\xb0\xc1\xa0\x25\x2d\x75\x69\xa4\x0e\x6a\x94\x11\x1d\xf9\x05\xc0\x1e\x03\xfb\x0a\xd3\xe2\xa6\x91\xe2\x9b\x3f\xdf\x7f\xfe\xf9\xde\xed\x68\xc0\x66\x2c\xc8\x69\x24\xb1\x59\xcb\x56\xc6\xb9\x81\x66\x1b\x80\x27\x75\xc2\x63\x45\x84\x57\x05\xaa\xf9\x80\x2f\x2d\x43\x0a\xb6\x23\xd8\x37\x1b\x79\xd0\x1a\x06\xd2\x06\x6c\xc7\x0a\x42\x35\x87\x68\x95\xd2\x09\x2c\x14\x17\x8c\x90\xfa\xbf\xc8\xd9\x0a\xee\x4b\x9e\xa2\x45\xb7\x1c\x3c\xb8\x14\xf7\x24\x06\x42\x2e\x6d\x23\xff\x33\x23\x2b\x58\xaa\x21\x03\xda\x54\xba\xe9\xe3\x68\x24\x11\x43\x11\x21\xd3\x6b\xc0\xe8\x61\xc0\x47\x10\x2a\x31\x20\xc7\x13\xb4\xea\xa2\x2b\xf8\x90\x84\x80\xe3\x26\x75\xb0\x33\x1b\xb5\x5b\xaf\xb7\x6c\xd3\x95\x71\x69\x18\x72\x64\x7b\x5c\xbb\x14\x4d\xb8\xcf\x96\x44\xd7\x9e\xf6\x14\xd6\xca\xdb\x25\x8a\xdb\xb1\x91\xb3\x2c\xb4\xc6\x91\x97\x95\x78\xb4\x7a\xef\x06\xff\x93\x1c\xee\x97\xbe\x3a\x61\x6a\x8f\xa5\x6c\x6a\xc2\x71\x3b\x9b\x6b\x87\x5e\xd5\xbd\x74\x26\xb0\x02\x1e\x8e\x35\xfe\x47\x79\x8b\xa9\xa8\x72\xf7\xee\xfe\x23\x4c\x41\x6b\x09\x9e\x6a\x5e\xd5\x3e\x1e\xd3\xa3\xf0\x45\x28\x8e\x1b\x92\x56\xb8\x8d\xa4\xa1\x22\x52\xf4\x63\xe2\x68\x75\xe1\x02\x53\x7c\x2a\xba\xe6\x7e\x60\x2b\x95\x6e\xdd\x0f\x96\x56\x70\x8b\x31\x26\x83\x9e\x20\x8f\x1e\x8d\xfc\x0a\xde\x47\xb8\xc5\x81\xc2\x2d\x2a\xfd\xef\xb2\x17\x85\x75\x59\x24\x7d\x59\xf8\xd3\x79\xf7\xd4\xb1\xa9\x35\x9b\xa7\x51\x75\xb1\x42\x57\x86\xc6\xfd\x48\xae\xd4\xad\x88\x57\xce\xc3\x26\x09\x50\x40\x35\x76\x4a\x25\x8d\xe9\xee\xbc\x18\xdd\xd0\xb2\xfe\xe7\xf8\xf5\xd4\xcc\xa0\xad\x9e\x71\x78\x52\xd0\xe7\x7c\x2e\x0d\x8b\xf2\xb9\x14\x7d\x7d\x33\xce\xec\x67\xd4\x6e\x67\xb7\x32\x93\x03\x93\x9f\xee\xf0\xa1\x67\x5e\x83\x66\xb7\x03\xac\xfb\x92\xf6\x18\x20\xc9\x19\x62\xc1\x8c\x8c\x61\x75\x66\x67\xa3\xe1\x59\xf8\xeb\x94\xdb\x57\x72\xff\x54\x1b\xb3\x3c\x6c\x97\x3c\xce\x52\xb0\xe9\xfd\xab\xda\xb5\xf1\xa3\x76\x68\xee\x96\x0d\xeb\x51\x8f\x8b\x80\x9b\x24\x03\x5a\x57\x1e\x2d\x5a\x16\xc0\x8b\x5e\x17\x5b\xf4\xf8\x0d\xa4\x8a\xdb\xef\xa1\xbc\xcb\x03\x46\x10\x42\x8f\x7d\xa0\xe9\x20\x7c\x65\xdb\x81\x27\x43\x0e\x0a\xd8\xa7\x6c\xa7\x95\xb8\x08\xdb\x7a\xef\x87\xe8\x0a\xa1\x3e\x7d\x4e\xae\xb0\xed\x85\x69\x73\x70\x9f\x35\x3e\x90\xfa\xf1\xf0\x75\xfb\xe5\xe0\x53\x9c\xb9\xfb\x6a\xc0\xd7\xe0\xb2\x08\x45\x0b\x8f\xf0\xa6\xee\x90\x87\x24\xf0\x96\x22\x93\x3f\xef\xc3\xef\xe0\x53\xc2\xb0\x90\x7f\xce\x68\x59\x0f\x3e\x33\x5f\x9c\x03\xa7\x5b\x28\x82\x8f\xdf\x1e\x1c\x67\xa6\xfd\xf4\x87\xb8\xbf\xc1\x30\xee\xf0\xe6\x68\xab\x37\x65\x79\xf8\x7d\x3b\xd9\x06\xa8\xff\x20\xbe\x03\x93\xdc\x48\x96\x7f\xae\xd2\x85\xcd\xf2\x6f\x00\x00\x00\xff\xff\x34\xe1\xf0\x97\x79\x0a\x00\x00") func dbaKubedbCom_etcdmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -344,12 +342,12 @@ func dbaKubedbCom_etcdmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_etcdmodificationrequests.yaml", size: 1351, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_etcdmodificationrequests.yaml", size: 2681, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_memcachedmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcd\x8e\x12\x41\x10\xbe\xcf\x53\xd4\x0b\x80\x21\x5e\xcc\xdc\x8c\xc6\xc4\xe8\x1a\xb3\xba\x7b\xaf\xe9\x2e\xa0\xa5\xff\xb6\xaa\x06\xdd\xb7\x37\xdd\x0d\x03\x0b\x2c\xe8\xdc\xea\xab\xaf\xfe\xbf\x69\xcc\xee\x91\x58\x5c\x8a\x3d\x60\x76\xf4\x47\x29\x16\x4b\xe6\x9b\x77\x32\x77\xe9\xcd\x76\x31\x90\xe2\xa2\xdb\xb8\x68\x7b\xf8\x30\x8a\xa6\x70\x4f\x92\x46\x36\xf4\x91\x96\x2e\x3a\x75\x29\x76\x81\x14\x2d\x2a\xf6\x1d\x80\x61\xc2\x02\xfe\x74\x81\x44\x31\xe4\x1e\xe2\xe8\x7d\x07\xe0\x71\x20\x2f\x85\x03\x80\x39\xf7\xb0\x19\x07\xb2\x43\x07\x10\x31\x50\x0f\x81\x82\x41\xb3\x26\x1b\x92\x75\x4b\x67\x6a\x1a\xa6\xa7\x91\x44\x65\x6e\x07\x9c\xb7\x80\xb9\x49\xa1\x93\x4c\xa6\xa4\x5a\x71\x1a\x73\x0f\x27\xde\x96\x72\x57\xcb\xa0\xd2\x2a\xb1\xdb\xdb\x33\x28\xbd\x8a\x26\xa6\x9d\x3d\x35\x52\x0c\xcc\x59\x4c\xb2\xcd\xd7\x06\xbf\xdb\x77\x76\x77\xd4\xd9\x7d\xeb\xac\xd2\xbc\x13\xfd\x72\x93\xfa\xd5\xed\xe8\xd9\x8f\x8c\xfe\xc6\xc4\x95\x29\xeb\xc4\xfa\xed\x30\xcb\x0c\x82\x09\xc9\x32\x3d\x35\xb7\x8b\xab\xd1\x23\x5f\x4f\xd5\x01\x64\x26\x21\xde\xd2\x43\xdc\xc4\xf4\x3b\x7e\x72\xe4\xad\xf4\xb0\x44\x2f\x65\x50\x31\x29\x53\x0f\xb5\x50\x46\x43\xb6\x03\xd8\xa2\x77\xb6\xa6\x69\xa5\x53\xa6\xf8\xfe\xfb\xe7\xc7\xb7\x3f\xcc\x9a\x02\x36\xb0\x64\x4e\x99\x58\xa7\xed\xb6\xeb\x4e\xba\x9a\x30\x00\x7d\x2e\x35\x44\xd9\xc5\xd5\x04\xd7\x05\xdf\x22\x1d\xeb\xeb\x25\x31\x0d\xbf\xc8\xe8\x04\xef\x55\x71\x9d\xa4\xa8\xa3\x1c\xd3\x2e\xcd\x50\x95\x93\xa2\xad\x0a\x3f\xc1\x01\x9c\x52\x38\x03\x5f\x4f\xd4\x3e\x8f\xa2\x0f\xd9\xa2\x52\xf9\x39\x2e\x31\x00\x96\x89\x03\x6a\x5f\x24\x4a\x33\x75\x81\x2e\xb2\x2e\x6e\xe9\xf0\x05\x12\xc1\xd5\x2b\x15\x6e\xc4\x32\xa1\xbc\xbc\xdb\x3f\x87\x56\xf7\xff\x07\x16\x95\x3a\x26\x7b\x1e\x3a\xab\x81\x67\xf0\xc5\xab\x1e\xbb\x90\x19\x9f\xaf\xcb\xe0\x04\xda\xee\x9f\xc1\xed\x02\x7d\x5e\xe3\xe2\x80\xd5\x53\xce\x76\x6f\xd4\x91\x1b\xa0\xfe\x51\xb6\x07\xe5\xb1\x35\x59\xde\x94\xb2\xf7\x86\xfc\x0d\x00\x00\xff\xff\x86\x15\x1b\x50\x5e\x05\x00\x00") +var _dbaKubedbCom_memcachedmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x4f\x6f\x1b\xc7\x0f\xbd\xeb\x53\x10\xf8\x1d\x72\x89\x24\x18\xbf\x4b\xb1\xb7\xc0\x69\x81\xa0\x75\x51\xd8\x49\xee\xdc\x19\x4a\x62\x3d\x7f\x36\x24\x57\xa9\xfb\xe9\x8b\x99\xd1\xae\x64\x59\xb6\x53\x03\xdd\xdb\x70\x38\x8f\x8f\x8f\x1c\xce\xe2\xc0\x5f\x49\x94\x73\xea\x00\x07\xa6\xbf\x8c\x52\x59\xe9\xea\xfe\x27\x5d\x71\x5e\xef\xaf\x7a\x32\xbc\x5a\xdc\x73\xf2\x1d\x5c\x8f\x6a\x39\xde\x92\xe6\x51\x1c\x7d\xa4\x0d\x27\x36\xce\x69\x11\xc9\xd0\xa3\x61\xb7\x00\x70\x42\x58\x8c\x9f\x39\x92\x1a\xc6\xa1\x83\x34\x86\xb0\x00\x08\xd8\x53\xd0\xe2\x03\x80\xc3\xd0\xc1\xfd\xd8\x93\xef\x17\x00\x09\x23\x75\x10\x29\x3a\x74\x3b\xf2\x31\x7b\xde\xb0\xab\x30\x42\xdf\x46\x52\xd3\x95\xef\x71\xd5\x0e\xac\x5c\x8e\x0b\x1d\xc8\x15\xa8\xad\xe4\x71\xe8\xe0\x6c\xb7\x41\x1e\x62\x39\x34\xda\x66\xe1\x69\xbd\x84\xc2\x55\x2d\x0b\x1d\xd6\x33\x91\xb2\xc0\x61\x50\x97\x7d\xdb\x6b\x89\xdf\x4c\xcc\x6e\x4e\x98\xdd\x36\x66\xd5\x2d\xb0\xda\xaf\xaf\xba\xfe\xc6\x07\xf7\x21\x8c\x82\xe1\x95\x8c\xab\xa7\xee\xb2\xd8\xef\xc7\x5c\x96\x10\x5d\xcc\x5e\xe8\x5b\xdb\xe6\xb4\x1d\x03\xca\xcb\x50\x0b\x80\x41\x48\x49\xf6\xf4\x25\xdd\xa7\xfc\x3d\xfd\xc2\x14\xbc\x76\xb0\xc1\xa0\x25\x51\x75\x79\xa0\x0e\x6a\xa0\x01\x1d\xf9\x05\xc0\x1e\x03\xfb\x0a\xd3\x42\xe7\x81\xd2\x87\x3f\x3e\x7d\xfd\xff\x9d\xdb\x51\xc4\x66\x2c\xc8\x79\x20\xb1\x59\xdd\x56\xdd\xb9\xaf\x66\x1b\x80\x27\x75\xc2\x43\x45\x84\x77\x05\xaa\xf9\x80\x2f\x9d\x44\x0a\xb6\x23\xd8\x37\x1b\x79\xd0\x1a\x06\xf2\x06\x6c\xc7\x0a\x42\x35\x87\x64\x95\xd2\x09\x2c\x14\x17\x4c\x90\xfb\x3f\xc9\xd9\x0a\xee\x4a\x9e\xa2\x45\xba\x31\x78\x70\x39\xed\x49\x0c\x84\x5c\xde\x26\xfe\x7b\x46\x56\xb0\x5c\x43\x06\xb4\xa9\x8e\xd3\xc7\xc9\x48\x12\x86\x22\xc2\x48\xef\x01\x93\x87\x88\x0f\x20\x54\x62\xc0\x98\x4e\xd0\xaa\x8b\xae\xe0\x26\x0b\x01\xa7\x4d\xee\x60\x67\x36\x68\xb7\x5e\x6f\xd9\xa6\x9b\xe4\x72\x8c\x63\x62\x7b\x58\xbb\x9c\x4c\xb8\x1f\x2d\x8b\xae\x3d\xed\x29\xac\x95\xb7\x4b\x14\xb7\x63\x23\x67\xa3\xd0\x1a\x07\x5e\x56\xe2\xc9\xea\x75\x8c\xfe\x7f\x72\xb8\x76\xfa\xee\x84\xa9\x3d\x94\xb2\xa9\x09\xa7\xed\x6c\xae\x3d\xfb\xac\xee\xa5\x4d\x81\x15\xf0\x70\xac\xf1\x3f\xca\x5b\x4c\x45\x95\xdb\x9f\xef\x3e\xc3\x14\xb4\x96\xe0\xb1\xe6\x55\xed\xe3\x31\x3d\x0a\x5f\x84\xe2\xb4\x21\x69\x85\xdb\x48\x8e\x15\x91\x92\x1f\x32\x27\xab\x0b\x17\x98\xd2\x63\xd1\x75\xec\x23\x5b\xa9\x74\xbb\x00\x60\x79\x05\xd7\x98\x52\x36\xe8\x09\xc6\xc1\xa3\x91\x5f\xc1\xa7\x04\xd7\x18\x29\x5c\xa3\xd2\x7f\x2e\x7b\x51\x58\x97\x45\xd2\xd7\x85\x3f\x1d\x83\x8f\x1d\x9b\x5a\xb3\x79\x1a\x5e\x17\x2b\xf4\xd2\x04\xb9\x1b\xc8\x95\xe2\x15\x05\x0b\x08\x6c\xb2\x00\x05\x54\x63\xa7\x54\x72\x79\xa4\xe8\xe1\x32\xbd\x4a\xc7\xd0\x46\x7d\x1b\xa1\x7a\x74\xa6\xd4\x56\xff\x96\xd4\xa5\x11\x52\x3e\x97\x93\xaf\x0f\xcc\x99\xfd\x8c\xdf\xf5\xec\x56\x66\x77\x60\xf2\xd3\xcd\x3e\x74\xd2\x7b\xd0\xd1\xed\x00\xeb\xbe\xe4\x3d\x06\xc8\x72\x86\x58\x30\x13\x63\x58\x9d\xd9\xd9\x28\x3e\x09\xff\x3c\xe5\xf6\x95\xdc\xbf\xd4\x76\x2d\xaf\xe0\x25\x8f\xb3\x14\x6c\x7a\x2c\xab\x76\x6d\x28\xa9\x1d\x5a\xbe\x65\xc3\x7a\xd4\xe3\x22\xe0\x26\x4b\x44\xeb\xca\xe3\x46\xcb\x02\x78\xd1\xeb\x62\xe3\x1e\xbf\x48\xaa\xb8\xfd\x11\xca\xbb\x31\x62\x02\x21\xf4\xd8\x07\x9a\x0e\xc2\x77\xb6\x1d\x78\x32\xe4\xa0\x80\x7d\x1e\xed\xb4\x12\x17\x61\x5b\x03\xbe\x89\xae\x10\xea\xe3\x47\xe6\x19\xb6\xbd\x30\x6d\x0e\xee\xb3\xc6\x07\x52\x6f\x0f\x5f\xb7\x5f\x0f\x3e\xc5\x99\xbb\xaf\x06\x7c\x0f\x6e\x14\xa1\x64\xe1\x01\x3e\xd4\x1d\xf2\x90\x05\x3e\x52\x62\xf2\xe7\x7d\xf8\x03\x7c\x4a\x18\x16\xf2\x4f\x19\x2d\xeb\xc1\x27\xe6\x8b\xc3\xe0\x74\x0b\x45\xf0\xe1\xe5\xe9\x71\x66\xda\x4f\xbf\x93\xfb\x2b\x0c\xc3\x0e\xaf\x8e\xb6\x7a\x53\x96\x87\x7f\xbd\x93\x6d\x80\xfa\x67\xe2\x3b\x30\x19\x1b\xc9\xf2\x6f\x56\xba\xb0\x59\xfe\x09\x00\x00\xff\xff\xc3\x50\x20\xc6\xa6\x0a\x00\x00") func dbaKubedbCom_memcachedmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -364,12 +362,12 @@ func dbaKubedbCom_memcachedmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_memcachedmodificationrequests.yaml", size: 1374, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_memcachedmodificationrequests.yaml", size: 2726, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_mongodbmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcd\x6e\x13\x31\x10\xbe\xef\x53\xcc\x0b\x24\x28\xe2\x82\xf6\x06\x54\x48\x08\x8a\x50\xa1\xbd\xcf\xda\x93\xad\x89\xed\x71\x3d\xb3\x81\xbe\x3d\xb2\x9d\x6e\xd3\x24\x4d\x60\x6f\xf3\xcd\x37\xff\xdf\x1a\x93\xbb\xa3\x2c\x8e\x63\x0f\x98\x1c\xfd\x51\x8a\xc5\x92\xe5\xe6\x9d\x2c\x1d\xbf\xd9\xae\x06\x52\x5c\x75\x1b\x17\x6d\x0f\x1f\x27\x51\x0e\x37\x24\x3c\x65\x43\x57\xb4\x76\xd1\xa9\xe3\xd8\x05\x52\xb4\xa8\xd8\x77\x00\x26\x13\x16\xf0\xa7\x0b\x24\x8a\x21\xf5\x10\x27\xef\x3b\x00\x8f\x03\x79\x29\x1c\x00\x4c\xa9\x87\xcd\x34\x90\x1d\x3a\x80\x88\x81\x7a\x08\x1c\x47\xb6\x43\x60\xeb\xd6\xce\xd4\x24\x99\x1e\x26\x12\x95\xa5\x1d\x70\xd9\xe8\x4b\xc3\xa1\x93\x44\xa6\x24\x1a\x33\x4f\xa9\x87\x03\x6f\x4b\xb8\xab\x64\x50\x69\xe4\xec\x9e\xec\x05\x94\x4e\x45\x39\xd3\xce\x9e\xdb\x28\x06\xa6\x24\x86\x6d\xf3\xb5\xb1\xaf\x4b\x5f\x57\x1f\xae\xf7\xfa\xba\x69\x7d\x55\x92\x77\xa2\x5f\x2e\x10\xbf\xba\x1d\x39\xf9\x29\xa3\x3f\x3b\x6b\xe5\xc9\x3d\x67\xfd\xf6\x3c\xc5\x02\xc2\x18\xd8\x66\x7a\x68\x6e\x17\xc7\xc9\x63\x3e\x97\xa8\x03\x48\x99\x84\xf2\x96\x6e\xe3\x26\xf2\xef\xf8\xc9\x91\xb7\xd2\xc3\x1a\xbd\x94\x01\xc5\x70\xa2\x1e\x6a\x99\x84\x86\x6c\x07\xb0\x45\xef\x6c\x4d\xd3\x0a\x73\xa2\xf8\xfe\xfb\xe7\xbb\xb7\x3f\xcc\x3d\x05\x6c\x60\xc9\xcc\x89\xb2\xce\x5b\x6d\x37\x9d\xd5\x34\x63\x00\xfa\x58\x6a\x88\x66\x17\xc7\x19\xae\x8b\xbd\x44\xda\x57\xd5\x4b\x22\x0f\xbf\xc8\xe8\x0c\x3f\xa9\xe1\x3c\x49\x51\x27\xd9\xa7\x9d\x9a\xa1\x2a\x86\xa3\xad\xba\x3e\xc0\x01\x9c\x52\x38\x02\x5f\x4f\xd4\x3e\x8f\xa2\xb7\xc9\xa2\x52\xf9\x25\x4e\x31\x00\xd6\x9c\x03\x6a\x5f\xa4\x49\x0b\x75\x81\x4e\xb2\x4e\x6e\xe9\xf9\x0b\x24\x82\xe3\x2b\x15\x2e\xc4\x66\x42\x79\x79\xb7\x7f\x0e\xad\xee\xff\x0f\x2c\x2a\x75\x99\xec\x71\xe8\xa2\x06\x1e\xc1\x27\xaf\xba\xef\xc2\x9c\xf1\xf1\xbc\x0c\x0e\xa0\xed\xd3\xe3\xb7\x5d\xa1\x4f\xf7\xb8\x7a\xc6\xea\x29\x17\xbb\x97\x69\xcf\x0d\x50\xff\x28\xdb\x83\xe6\xa9\x35\x59\xde\x92\xb2\xf7\x86\xfc\x0d\x00\x00\xff\xff\x2b\x48\x71\xe8\x54\x05\x00\x00") +var _dbaKubedbCom_mongodbmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\xcf\x6f\x5b\x37\x0c\xbe\xfb\xaf\x20\xb0\x43\x2f\xb5\x8d\x60\x97\xe1\xdd\xba\x74\x03\x8a\xad\xc3\x90\xb4\xbd\xf3\x49\xb4\xcd\x45\x4f\x52\x49\xca\x5d\xf6\xd7\x0f\x92\xfc\x2b\x8e\x93\x74\x01\xf6\x6e\xa2\xa8\x8f\x1f\x3f\x52\xd4\xc3\xcc\x5f\x48\x94\x53\x1c\x00\x33\xd3\xdf\x46\xb1\xae\x74\x71\xf7\x93\x2e\x38\x2d\xb7\x57\x23\x19\x5e\xcd\xee\x38\xfa\x01\xae\x8b\x5a\x9a\x6e\x48\x53\x11\x47\xef\x69\xc5\x91\x8d\x53\x9c\x4d\x64\xe8\xd1\x70\x98\x01\x38\x21\xac\xc6\x4f\x3c\x91\x1a\x4e\x79\x80\x58\x42\x98\x01\x04\x1c\x29\x68\xf5\x01\xc0\x9c\x07\xb8\x2b\x23\xf9\x71\x06\x10\x71\xa2\x01\xa6\x14\xd7\xc9\x8f\x53\xf2\xbc\x62\xd7\x40\x84\xbe\x16\x52\xd3\x85\x1f\x71\xd1\xdd\x17\x2e\x4d\x33\xcd\xe4\x2a\xd0\x5a\x52\xc9\x03\x9c\xed\x76\xc0\x5d\x24\x87\x46\xeb\x24\xbc\x5f\xcf\xa1\x32\x55\x4b\x42\xbb\xf5\x81\x46\x5d\x60\xce\xea\x92\xef\x7b\x3d\xed\x8f\x95\xd7\xfb\x9f\x3f\x9e\xf0\xba\xe9\xbc\x9a\x53\x60\xb5\xdf\x5e\x70\xfc\x9d\x77\xce\x39\x14\xc1\xf0\x6c\xae\xcd\x4f\x37\x49\xec\x8f\x63\x16\x73\x98\xd6\x53\xf2\x42\x5f\xfb\x36\xc7\x75\x09\x28\xcf\x01\xcd\x00\xb2\x90\x92\x6c\xe9\x73\xbc\x8b\xe9\x5b\xfc\x95\x29\x78\x1d\x60\x85\x41\x6b\x82\xea\x52\xa6\x01\x5a\x98\x8c\x8e\xfc\x0c\x60\x8b\x81\x7d\x83\xe9\x81\x53\xa6\xf8\xee\xcf\x0f\x5f\x7e\xbc\x75\x1b\x9a\xb0\x1b\x2b\x72\xca\x24\x76\x50\xb5\xd7\xf4\xd0\x4d\x07\x1b\x80\x27\x75\xc2\xb9\x21\xc2\x9b\x0a\xd5\x7d\xc0\xd7\xfe\x21\x05\xdb\x10\x6c\xbb\x8d\x3c\x68\x0b\x03\x69\x05\xb6\x61\x05\xa1\x96\x43\xb4\x46\xe9\x04\x16\xaa\x0b\x46\x48\xe3\x5f\xe4\x6c\x01\xb7\x35\x4f\xd1\x2a\x5c\x09\x1e\x5c\x8a\x5b\x12\x03\x21\x97\xd6\x91\xff\x39\x20\x2b\x58\x6a\x21\x03\xda\xbe\x82\xfb\x8f\xa3\x91\x44\x0c\x55\x84\x42\x6f\x01\xa3\x87\x09\xef\x41\xa8\xc6\x80\x12\x4f\xd0\x9a\x8b\x2e\xe0\x63\x12\x02\x8e\xab\x34\xc0\xc6\x2c\xeb\xb0\x5c\xae\xd9\xf6\xf7\xc7\xa5\x69\x2a\x91\xed\x7e\xe9\x52\x34\xe1\xb1\x58\x12\x5d\x7a\xda\x52\x58\x2a\xaf\xe7\x28\x6e\xc3\x46\xce\x8a\xd0\x12\x33\xcf\x1b\xf1\x68\xed\x12\x4e\xfe\x07\xd9\x5d\x36\x7d\x73\xc2\xd4\xee\x6b\xd9\xd4\x84\xe3\xfa\x60\x6e\xbd\xfa\xa4\xee\xb5\x41\x81\x15\x70\x77\xac\xf3\x3f\xca\x5b\x4d\x55\x95\x9b\x5f\x6e\x3f\xc1\x3e\x68\x2b\xc1\x43\xcd\x9b\xda\xc7\x63\x7a\x14\xbe\x0a\xc5\x71\x45\xd2\x0b\xb7\x92\x34\x35\x44\x8a\x3e\x27\x8e\xd6\x16\x2e\x30\xc5\x87\xa2\x6b\x19\x27\xb6\x5a\xe9\xde\xfe\x60\x69\x01\xd7\x18\x63\x32\x18\x09\x4a\xf6\x68\xe4\x17\xf0\x21\xc2\x35\x4e\x14\xae\x51\xe9\x7f\x97\xbd\x2a\xac\xf3\x2a\xe9\xcb\xc2\x9f\x0e\xbf\x87\x8e\x5d\xad\x83\x79\x3f\xb4\x2e\x56\xe8\xe9\xd9\x71\x9b\xc9\xd5\xd2\x55\xfd\x2a\x04\xac\x92\x00\x05\x54\x63\xa7\x54\x33\x79\xa0\xe7\xee\x2a\xbd\x48\xc6\xd0\x8a\xbe\x86\x4e\x3b\x78\x20\xd4\x57\xff\x95\xd2\xa5\xf1\x51\x3f\x97\xa2\x6f\x4f\xca\x99\xfd\x8c\xdd\xf5\xc1\xad\xce\xeb\xc0\xe4\xf7\xb7\x7a\xd7\x45\x6f\x41\x8b\xdb\x00\xb6\x7d\x49\x5b\x0c\x90\xe4\x0c\xb1\x62\x46\xc6\xb0\x38\xb3\xb3\xd1\xf4\x28\xfc\xd3\x94\xfb\x57\x73\xff\xdc\x5a\xb5\xbe\x7b\x97\x3c\xce\x52\xb0\xfd\xf3\xd8\xb4\xeb\x03\x49\x6d\xd7\xee\x3d\x1b\xd6\xa3\x1e\x17\x01\x57\x49\x26\xb4\xa1\x3e\x68\x34\xaf\x80\x17\xbd\x2e\x36\xed\xf1\x9b\x48\x15\xd7\xdf\x43\x79\x53\x26\x8c\x20\x84\x1e\xc7\x40\xfb\x83\xf0\x8d\x6d\x03\x9e\x0c\x39\x28\xe0\x98\x8a\x9d\x56\xe2\x22\x6c\x6f\xbf\x57\xd1\x15\x42\x7d\xf8\xc0\x3c\xc1\x76\x14\xa6\xd5\xce\xfd\xa0\xf1\x8e\xd4\xeb\xc3\xb7\xed\x97\x83\xef\xe3\x1c\xba\xaf\x05\x7c\x0b\xae\x88\x50\xb4\x70\x0f\xef\xda\x0e\x79\x48\x02\xef\x29\x32\xf9\xf3\x3e\xfc\x0e\x3e\x35\x0c\x0b\xf9\xc7\x8c\xe6\xed\xe0\x23\xf3\xc5\x51\x70\xba\x85\x22\x78\xff\xfc\xec\x38\x33\x6d\xf7\x3f\x90\xdb\x2b\x0c\x79\x83\x57\x47\x5b\xbb\x29\xf3\xdd\xdf\xdd\xc9\x36\x40\xfb\x2b\xf1\x03\x98\x94\x4e\xb2\xfe\x8f\xd5\x2e\xec\x96\x7f\x03\x00\x00\xff\xff\x52\x53\xbf\x02\x98\x0a\x00\x00") func dbaKubedbCom_mongodbmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -384,12 +382,12 @@ func dbaKubedbCom_mongodbmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_mongodbmodificationrequests.yaml", size: 1364, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_mongodbmodificationrequests.yaml", size: 2712, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_mysqlmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xdb\x6e\x13\x31\x10\x7d\xdf\xaf\x98\x1f\x48\x50\xc4\x0b\xf2\x1b\x02\x21\x21\x5a\x04\x2d\xed\xfb\xac\x3d\x49\x4c\x7c\x8b\x67\x36\x90\xbf\x47\xb6\x93\x4d\x9a\x5b\xe9\xbe\xcd\x99\x33\xf7\xb3\xc6\x64\x9f\x29\xb3\x8d\x41\x01\x26\x4b\x7f\x85\x42\xb1\x78\xba\xfa\xc0\x53\x1b\xdf\x6d\x66\x3d\x09\xce\xba\x95\x0d\x46\xc1\xa7\x81\x25\xfa\x07\xe2\x38\x64\x4d\x9f\x69\x6e\x83\x15\x1b\x43\xe7\x49\xd0\xa0\xa0\xea\x00\x74\x26\x2c\xe0\x2f\xeb\x89\x05\x7d\x52\x10\x06\xe7\x3a\x00\x87\x3d\x39\x2e\x1c\x00\x4c\x49\xc1\x6a\xe8\xc9\xf4\x1d\x40\x40\x4f\x0a\xfc\x96\xd7\xce\x47\x63\xe7\x56\xd7\x14\x99\xd6\x03\xb1\xf0\xd4\xf4\x38\x6d\xe4\xa9\x8e\xbe\xe3\x44\xba\xa4\x59\xe4\x38\x24\x05\x27\xde\x96\x6e\x57\x47\xa3\xd0\x22\x66\xbb\xb7\x27\x50\xfa\x64\x89\x99\x76\xf6\xd8\x44\x31\x30\x25\xd6\xd1\x34\x5f\x1b\xfa\x7e\xfb\xf8\xf3\xee\xfe\xa8\xab\x87\xd6\x55\xa5\x38\xcb\xf2\xed\x26\xed\xce\xee\xa8\xc9\x0d\x19\xdd\x8d\x29\x2b\x8b\x97\x31\xcb\xf7\x43\xff\x13\xf0\x5b\x1f\x4d\xa6\x75\x73\xdb\xb0\x18\x1c\xe6\xeb\x69\x3a\x80\x94\x89\x29\x6f\xe8\x29\xac\x42\xfc\x13\xbe\x58\x72\x86\x15\xcc\xd1\x71\x19\x8c\x75\x4c\xa4\xa0\x16\x49\xa8\xc9\x74\x00\x1b\x74\xd6\xd4\x34\xad\x6c\x4c\x14\x3e\xfe\xf8\xfa\xfc\xfe\x51\x2f\xc9\x63\x03\x4b\xe6\x98\x28\xcb\xb8\xcd\x76\xc9\x51\x43\x23\x06\x20\xdb\x52\x83\x25\xdb\xb0\x18\xe1\xba\xd0\xd7\x48\xc7\x5a\x7a\x49\x8c\xfd\x6f\xd2\x32\xc2\x7b\x15\xdc\x26\x09\xca\xc0\xc7\xb4\x4b\x33\x54\xa5\xc4\x60\xaa\x9a\x4f\x70\x00\x2b\xe4\xcf\xc0\xeb\x89\xda\xe7\x90\xe5\x29\x19\x14\x2a\x3f\xc2\x25\x06\xc0\x3c\x66\x8f\xa2\x8a\x24\x69\x22\xd6\xd3\x45\xd6\xc5\x2d\x1d\x3e\x4f\xcc\xb8\xb8\x52\xe1\x95\xd8\x4c\xc8\x2f\xef\xf6\xdf\xa1\xd5\xfd\xf6\xc0\xa2\x52\x9b\xc9\x9c\x87\x4e\x6a\xe0\x19\x7c\xf1\xaa\xc7\x2e\xcc\x19\xb7\xb7\x65\x70\x02\x6d\xf6\x4f\xde\x66\x86\x2e\x2d\x71\x76\xc0\xea\x29\x27\xbb\xf7\xe8\xc8\x0d\x50\xff\x28\xa3\x40\xf2\xd0\x9a\x2c\x6f\x48\xd9\x7b\x43\xfe\x05\x00\x00\xff\xff\xce\xf1\x4b\x91\x4a\x05\x00\x00") +var _dbaKubedbCom_mysqlmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x41\x6f\x5b\x37\x0c\xbe\xfb\x57\x10\xd8\xa1\x97\xda\x46\xb0\xcb\xf0\x6e\x45\xba\x01\xc5\x9a\x61\x4b\xda\xde\xf9\x24\xda\xe6\xa2\x27\xbd\x90\x94\x3b\xef\xd7\x0f\x92\xec\x67\xc7\x71\x92\xb6\xc0\xde\x4d\x14\xf5\xf1\xe3\x47\x8a\x7a\x38\xf2\x17\x12\xe5\x14\x3b\xc0\x91\xe9\x1f\xa3\x58\x56\xba\xb8\xff\x45\x17\x9c\x96\xdb\xab\x9e\x0c\xaf\x66\xf7\x1c\x7d\x07\xd7\x59\x2d\x0d\xb7\xa4\x29\x8b\xa3\xf7\xb4\xe2\xc8\xc6\x29\xce\x06\x32\xf4\x68\xd8\xcd\x00\x9c\x10\x16\xe3\x27\x1e\x48\x0d\x87\xb1\x83\x98\x43\x98\x01\x04\xec\x29\x68\xf1\x01\xc0\x71\xec\xe0\x3e\xf7\xe4\xfb\x19\x40\xc4\x81\x3a\x18\x76\xfa\x10\x86\xe4\x79\xc5\xae\x42\x08\x3d\x64\x52\xd3\x85\xef\x71\xd1\x9c\x17\x2e\x0d\x33\x1d\xc9\x15\x98\xb5\xa4\x3c\x76\x70\xb6\xdb\xe0\xf6\x71\x1c\x1a\xad\x93\xf0\x61\x3d\x87\xc2\x53\x2d\x09\xed\xd7\x13\x89\xb2\xc0\x71\x54\x97\x7c\xdb\x6b\x49\xdf\xec\xee\xfe\xfa\x78\x73\xc2\xea\xb6\xb1\xaa\x2e\x81\xd5\x7e\x7f\xd1\xed\x23\xef\x5d\xc7\x90\x05\xc3\x0b\x59\x56\x2f\xdd\x24\xb1\x3f\x8e\xfc\xe7\x30\xec\x86\xe4\x85\x1e\xda\x36\xc7\x75\x0e\x28\xcf\xc3\xcc\x00\x46\x21\x25\xd9\xd2\xe7\x78\x1f\xd3\xd7\xf8\x1b\x53\xf0\xda\xc1\x0a\x83\x96\xc4\xd4\xa5\x91\x3a\xa8\x41\x46\x74\xe4\x67\x00\x5b\x0c\xec\x2b\x4c\x0b\x9b\x46\x8a\xef\xfe\xfc\xf0\xe5\xe7\x3b\xb7\xa1\x01\x9b\xb1\x20\xa7\x91\xc4\x26\x35\x5b\x25\xa7\x1e\x9a\x6c\x00\x9e\xd4\x09\x8f\x15\x11\xde\x14\xa8\xe6\x03\xbe\x74\x0d\x29\xd8\x86\x60\xdb\x6c\xe4\x41\x6b\x18\x48\x2b\xb0\x0d\x2b\x08\xd5\x1c\xa2\x55\x4a\x27\xb0\x50\x5c\x30\x42\xea\xff\x26\x67\x0b\xb8\x2b\x79\x8a\x16\xd9\x72\xf0\xe0\x52\xdc\x92\x18\x08\xb9\xb4\x8e\xfc\xef\x84\xac\x60\xa9\x86\x0c\x68\x87\xda\x1d\x3e\x8e\x46\x12\x31\x14\x11\x32\xbd\x05\x8c\x1e\x06\xdc\x81\x50\x89\x01\x39\x9e\xa0\x55\x17\x5d\xc0\x4d\x12\x02\x8e\xab\xd4\xc1\xc6\x6c\xd4\x6e\xb9\x5c\xb3\x1d\x6e\x8d\x4b\xc3\x90\x23\xdb\x6e\xe9\x52\x34\xe1\x3e\x5b\x12\x5d\x7a\xda\x52\x58\x2a\xaf\xe7\x28\x6e\xc3\x46\xce\xb2\xd0\x12\x47\x9e\x57\xe2\xd1\xea\xd5\x1b\xfc\x4f\xb2\xbf\x62\xfa\xe6\x84\xa9\xed\x4a\xd9\xd4\x84\xe3\x7a\x32\xd7\x1e\x7d\x56\xf7\xd2\x9a\xc0\x0a\xb8\x3f\xd6\xf8\x1f\xe5\x2d\xa6\xa2\xca\xed\xaf\x77\x9f\xe0\x10\xb4\x96\xe0\xb1\xe6\x55\xed\xe3\x31\x3d\x0a\x5f\x84\xe2\xb8\x22\x69\x85\x5b\x49\x1a\x2a\x22\x45\x3f\x26\x8e\x56\x17\x2e\x30\xc5\xc7\xa2\x6b\xee\x07\xb6\x52\xe9\xd6\xfc\x60\x69\x01\xd7\x18\x63\x32\xe8\x09\xf2\xe8\xd1\xc8\x2f\xe0\x43\x84\x6b\x1c\x28\x5c\xa3\xd2\xff\x2e\x7b\x51\x58\xe7\x45\xd2\xd7\x85\x3f\x1d\x79\x8f\x1d\x9b\x5a\x93\xf9\x30\xac\x2e\x56\xe8\xb9\xa9\x71\x37\x92\x2b\x85\x2b\xea\x15\x00\x58\x25\x01\x0a\xa8\xc6\x4e\xa9\xe4\xf1\x48\xcd\xfd\x45\x7a\x95\x8a\xa1\x65\xfd\x7e\x32\xf5\xd8\x44\xa7\xad\xbe\x97\xd0\xa5\xd1\x51\x3e\x97\xa2\xaf\x8f\xc8\x99\xfd\x8c\xdb\xf5\xe4\x56\x66\x74\x60\xf2\x87\x1b\xbd\xef\xa0\xb7\xa0\xd9\x6d\x00\xeb\xbe\xa4\x2d\x06\x48\x72\x86\x58\x30\x23\x63\x58\x9c\xd9\xd9\x68\x78\x12\xfe\x79\xca\xed\x2b\xb9\x7f\xae\x6d\x5a\x5e\xba\x4b\x1e\x67\x29\xd8\xe1\x41\xac\xda\xb5\x61\xa4\xb6\x6f\xf5\x96\x0d\xeb\x51\x8f\x8b\x80\xab\x24\x03\x5a\x57\x1e\x31\x9a\x17\xc0\x8b\x5e\x17\x1b\xf6\xf8\x0d\xa4\x8a\xeb\x6f\xa1\xbc\xc9\x03\x46\x10\x42\x8f\x7d\xa0\xc3\x41\xf8\xca\xb6\x01\x4f\x86\x1c\x14\xb0\x4f\xd9\x4e\x2b\x71\x11\xb6\x35\xdf\x0f\xd1\x15\x42\x7d\xfc\xb8\x3c\xc3\xb6\x17\xa6\xd5\xde\x7d\xd2\x78\x4f\xea\xc7\xc3\xd7\xed\xd7\x83\x1f\xe2\x4c\xdd\x57\x03\xbe\x05\x97\x45\x28\x5a\xd8\xc1\xbb\xba\x43\x1e\x92\xc0\x7b\x8a\x4c\xfe\xbc\x0f\xbf\x81\x4f\x09\xc3\x42\xfe\x29\xa3\x79\x3d\xf8\xc4\x7c\x71\x10\x9c\x6e\xa1\x08\xee\x5e\x9e\x1c\x67\xa6\xed\xe1\x97\x71\x7b\x85\x61\xdc\xe0\xd5\xd1\x56\x6f\xca\x7c\xff\x3f\x77\xb2\x0d\x50\xff\x48\x7c\x07\x26\xb9\x91\x2c\xff\x60\xa5\x0b\x9b\xe5\xbf\x00\x00\x00\xff\xff\x55\xd9\x4a\xf4\x8a\x0a\x00\x00") func dbaKubedbCom_mysqlmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -404,12 +402,12 @@ func dbaKubedbCom_mysqlmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_mysqlmodificationrequests.yaml", size: 1354, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_mysqlmodificationrequests.yaml", size: 2698, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_perconaxtradbmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcb\x6e\x1b\x3b\x0c\xdd\xcf\x57\xf0\x07\xec\x0b\xe3\x6e\x8a\xd9\xb5\x0d\x0a\x14\x7d\x20\x48\x9b\xa0\x5b\x8e\x44\x3b\xaa\xf5\x0a\xc9\x71\x93\xbf\x2f\x24\x39\x63\xc7\x76\x62\x77\x76\x3c\x3c\x7c\x9f\x11\x66\x77\x47\x2c\x2e\xc5\x1e\x30\x3b\x7a\x54\x8a\xc5\x92\xf9\xfa\x9d\xcc\x5d\xfa\x6f\xb3\x18\x48\x71\xd1\xad\x5d\xb4\x3d\x7c\x1c\x45\x53\xb8\x21\x49\x23\x1b\xba\xa2\xa5\x8b\x4e\x5d\x8a\x5d\x20\x45\x8b\x8a\x7d\x07\x60\x98\xb0\x80\x3f\x5d\x20\x51\x0c\xb9\x87\x38\x7a\xdf\x01\x78\x1c\xc8\x4b\xe1\x00\x60\xce\x3d\xac\xc7\x81\xec\xd0\x01\x44\x0c\xd4\x43\x26\x36\x29\xe2\xa3\x32\xda\x21\x24\xeb\x96\xce\xd4\x54\x4c\x0f\x23\x89\xca\xdc\x0e\x38\x6f\x41\x73\x93\x42\x27\x99\x4c\x49\xb7\xe2\x34\xe6\x1e\x0e\xbc\x2d\xed\xb6\x9e\x41\xa5\x55\x62\xf7\x6c\xcf\xa0\xf4\x2b\x9a\x98\xb6\xf6\xd4\x4c\x31\x30\x67\x31\xc9\x36\x5f\x1b\xfe\xba\x75\xf7\x4b\x19\xaf\x3e\x7c\xdb\xeb\xee\xa6\x75\x57\xa9\xde\x89\x7e\xb9\x88\xfe\xd5\x6d\x43\xb2\x1f\x19\xfd\x05\xd3\x57\xb6\xdc\x27\xd6\xef\xbb\xb9\x66\x90\x1f\x4d\x48\x96\xe9\xa1\xf9\x5d\x5c\x8d\x1e\xf9\x7c\xbe\x0e\x20\x33\x09\xf1\x86\x6e\xe3\x3a\xa6\x3f\xf1\x93\x23\x6f\xa5\x87\x25\x7a\x29\x93\x8b\x49\x99\x7a\xa8\xd5\x32\x1a\xb2\x1d\xc0\x06\xbd\xb3\x35\x4d\xab\x9f\x32\xc5\xf7\xd7\x9f\xef\xfe\xff\x61\xee\x29\x60\x03\x4b\xe6\x94\x89\x75\x5a\x77\x3b\xf9\x24\xb6\x09\x03\xd0\xa7\x52\x43\x94\x5d\x5c\x4d\x70\xdd\xf8\x39\xd2\xbe\xe8\x5e\x12\xd3\xf0\x9b\x8c\x4e\xf0\xb3\x4c\xde\x26\x29\xea\x28\xfb\xb4\x53\x33\x54\x29\xa5\x68\xab\xec\x0f\x70\x00\xa7\x14\x8e\xc0\xd7\x13\xb5\xcf\xa3\xe8\x6d\xb6\xa8\x54\xfe\x98\x53\x0c\x80\x65\xe2\x80\xda\x17\xcd\xd2\x4c\x5d\xa0\x93\xac\x93\x5b\xda\x7d\x81\x44\x70\xf5\x4a\x85\x33\xb1\x4c\x28\x2f\xef\x76\x71\x68\x75\xff\x7b\x60\x51\xa9\x63\xb2\xc7\xa1\xb3\x1a\x78\x04\x9f\xbc\xea\xbe\x0b\x99\xf1\xe9\x6d\x19\x1c\x40\x9b\xe7\xb7\x71\xb3\x40\x9f\xef\x71\xb1\xc3\xea\x29\x67\xdb\x87\x6b\xcf\x0d\x50\xff\x28\xdb\x83\xf2\xd8\x9a\x2c\x8f\x4c\xd9\x7b\x43\xfe\x06\x00\x00\xff\xff\x98\x3c\x0e\xf4\x73\x05\x00\x00") +var _dbaKubedbCom_perconaxtradbmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\xc1\x6e\x23\x37\x0c\xbd\xfb\x2b\x08\xf4\xb0\x97\xd8\x46\xd0\x4b\x31\xb7\x6d\xd2\x02\x8b\x76\x8b\x45\xb2\xbb\xe8\x95\x23\xd1\x36\x1b\x8d\xa4\x25\x39\xde\xa4\x5f\x5f\x48\xb2\xc7\x8e\xe3\x34\x69\x80\xce\x4d\x14\xf5\xf8\xf8\x48\x51\x83\x99\xbf\x92\x28\xa7\xd8\x01\x66\xa6\x7b\xa3\x58\x56\xba\xb8\xfb\x49\x17\x9c\x96\xdb\xcb\x9e\x0c\x2f\x67\x77\x1c\x7d\x07\x57\xa3\x5a\x1a\x6e\x48\xd3\x28\x8e\xae\x69\xc5\x91\x8d\x53\x9c\x0d\x64\xe8\xd1\xb0\x9b\x01\x38\x21\x2c\xc6\xcf\x3c\x90\x1a\x0e\xb9\x83\x38\x86\x30\x03\x08\xd8\x53\xd0\xe2\x03\x80\x39\x77\x70\x37\xf6\xe4\xfb\x19\x40\xc4\x81\x3a\xc8\x24\x2e\x45\xbc\x37\x41\xdf\x0f\xc9\xf3\x8a\x5d\x85\x12\xfa\x36\x92\x9a\x2e\x7c\x8f\x8b\x76\x68\xe1\xd2\x30\xd3\x4c\xae\xc0\xad\x25\x8d\xb9\x83\x93\xdd\x06\xbb\x8b\xe7\xd0\x68\x9d\x84\xf7\xeb\x39\x14\xbe\x6a\x49\x68\xb7\x9e\xc8\x94\x05\xe6\xac\x2e\xf9\xb6\xd7\x92\xff\xd4\xd8\xfd\x69\x82\xd7\x3f\x7f\x3c\x62\x77\xd3\xd8\x55\xd7\xc0\x6a\xbf\xbd\xca\xfd\x77\xde\x1d\xc9\x61\x14\x0c\xaf\xc8\xbe\x7a\xeb\x26\x89\xfd\x71\xc8\x6b\x0e\xf9\xde\x0d\xc9\x0b\x7d\x6b\xfb\x1c\xd7\x63\x40\x79\x19\x6f\x06\x90\x85\x94\x64\x4b\x5f\xe2\x5d\x4c\xdf\xe3\xaf\x4c\xc1\x6b\x07\x2b\x0c\x5a\x32\x57\x97\x32\x75\x50\xa3\x65\x74\xe4\x67\x00\x5b\x0c\xec\x2b\x4c\x8b\x9f\x32\xc5\xf7\x9f\x3e\x7c\xfd\xf1\xd6\x6d\x68\xc0\x66\x2c\xc8\x29\x93\xd8\x24\x77\x2b\xf9\xd4\x6c\x93\x0d\xc0\x93\x3a\xe1\x5c\x11\xe1\x5d\x81\x6a\x3e\xe0\x4b\x7b\x91\x82\x6d\x08\xb6\xcd\x46\x1e\xb4\x86\x81\xb4\x02\xdb\xb0\x82\x50\xcd\x21\x5a\xa5\x74\x04\x0b\xc5\x05\x23\xa4\xfe\x2f\x72\xb6\x80\xdb\x92\xa7\x68\xd1\x6f\x0c\x1e\x5c\x8a\x5b\x12\x03\x21\x97\xd6\x91\xff\x9e\x90\x15\x2c\xd5\x90\x01\x6d\x5f\xd4\xfd\xc7\xd1\x48\x22\x86\x22\xc2\x48\x17\x80\xd1\xc3\x80\x0f\x20\x54\x62\xc0\x18\x8f\xd0\xaa\x8b\x2e\xe0\x63\x12\x02\x8e\xab\xd4\xc1\xc6\x2c\x6b\xb7\x5c\xae\xd9\xf6\xd7\xcb\xa5\x61\x18\x23\xdb\xc3\xd2\xa5\x68\xc2\xfd\x68\x49\x74\xe9\x69\x4b\x61\xa9\xbc\x9e\xa3\xb8\x0d\x1b\x39\x1b\x85\x96\x98\x79\x5e\x89\x47\xab\x77\x74\xf0\x3f\xc8\xee\x2e\xea\xbb\x23\xa6\xf6\x50\xca\xa6\x26\x1c\xd7\x93\xb9\x36\xf1\xb3\xba\x97\x9e\x05\x56\xc0\xdd\xb1\xc6\xff\x20\x6f\x31\x15\x55\x6e\x7e\xb9\xfd\x0c\xfb\xa0\xb5\x04\x8f\x35\xaf\x6a\x1f\x8e\xe9\x41\xf8\x22\x14\xc7\x15\x49\x2b\xdc\x4a\xd2\x50\x11\x29\xfa\x9c\x38\x5a\x5d\xb8\xc0\x14\x1f\x8b\xae\x63\x3f\xb0\x95\x4a\xb7\x5b\x00\x96\x16\x70\x85\x31\x26\x83\x9e\x60\xcc\x1e\x8d\xfc\x02\x3e\x44\xb8\xc2\x81\xc2\x15\x2a\xfd\xef\xb2\x17\x85\x75\x5e\x24\x7d\x59\xf8\xe3\xd9\xf8\xd8\xb1\xa9\x35\x99\xf7\xd3\xec\x6c\x85\x5e\x1a\x27\xb7\x99\x5c\x29\x60\x51\xb1\x00\xc1\x2a\x09\x50\x40\x35\x76\x4a\x25\x9f\x47\xaa\xee\x2e\xd4\x8b\x94\x0c\x6d\xd4\xb7\x93\xaa\xc7\x27\x5a\x6d\xf5\x5f\x89\x9d\x1b\x25\xe5\x73\x29\xfa\xfa\xfa\x9c\xd8\x4f\x38\x5e\x4d\x6e\x65\xa8\x07\x26\xbf\xbf\xe1\xbb\x8e\xba\x00\x1d\xdd\x06\xb0\xee\x4b\xda\x62\x80\x24\x27\x88\x05\x33\x32\x86\xc5\x89\x9d\x8d\x86\x27\xe1\x9f\xa7\xdc\xbe\x92\xfb\x97\xda\xb6\xe5\x89\x3c\xe7\x71\x92\x82\xed\x5f\xd2\xaa\x5d\x1b\x4e\x6a\xbb\xd6\x6f\xd9\xb0\x1e\xf4\x38\x0b\xb8\x4a\x32\xa0\x75\xe5\xd5\xa3\x79\x01\x3c\xeb\x75\xb6\x81\x0f\xdf\x40\xaa\xb8\x7e\x0d\xe5\xcd\x38\x60\x04\x21\xf4\xd8\x07\xda\x1f\x84\xef\x6c\x1b\xf0\x64\xc8\x41\x01\xfb\x34\xda\x71\x25\xce\xc2\xb6\x26\x7c\x13\x5d\x21\xd4\xc7\x8f\xcd\x33\x6c\x7b\x61\x5a\xed\xdc\x27\x8d\x77\xa4\xde\x1e\xbe\x6e\xbf\x1c\x7c\x1f\x67\xea\xbe\x1a\xf0\x02\xdc\x28\x42\xd1\xc2\x03\xbc\xaf\x3b\xe4\x21\x09\x5c\x53\x64\xf2\xa7\x7d\xf8\x0a\x3e\x25\x0c\x0b\xf9\xa7\x8c\xe6\xf5\xe0\x13\xf3\xd9\x81\x70\xbc\x85\x22\xf8\xf0\xef\x13\xe4\xc4\xb4\xdd\xff\x6b\x6e\x2f\x31\xe4\x0d\x5e\x1e\x6c\xf5\xa6\xcc\x77\x3f\x82\x47\xdb\x00\xf5\x0f\xc5\x77\x60\x32\x36\x92\xe5\xa7\xad\x74\x61\xb3\xfc\x13\x00\x00\xff\xff\x82\x32\x3f\x32\xc3\x0a\x00\x00") func dbaKubedbCom_perconaxtradbmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -424,12 +422,12 @@ func dbaKubedbCom_perconaxtradbmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_perconaxtradbmodificationrequests.yaml", size: 1395, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_perconaxtradbmodificationrequests.yaml", size: 2755, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_pgbouncermodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcb\x6e\xdb\x4a\x0c\xdd\xeb\x2b\xf8\x03\xf6\x85\x71\x37\x85\x76\x7d\xa0\x40\xd1\x07\x82\xb4\xc9\x9e\x9a\xa1\x95\xa9\xe7\x15\x92\x72\x9b\xbf\x2f\x66\xc6\x91\x1d\xdb\xb1\x5b\xed\x78\x78\xf8\x3e\x1a\xcc\xee\x9e\x58\x5c\x8a\x3d\x60\x76\xf4\x5b\x29\x16\x4b\x96\x9b\x37\xb2\x74\xe9\xbf\xed\x6a\x20\xc5\x55\xb7\x71\xd1\xf6\xf0\x7e\x12\x4d\xe1\x96\x24\x4d\x6c\xe8\x03\xad\x5d\x74\xea\x52\xec\x02\x29\x5a\x54\xec\x3b\x00\xc3\x84\x05\xfc\xe1\x02\x89\x62\xc8\x3d\xc4\xc9\xfb\x0e\xc0\xe3\x40\x5e\x0a\x07\x00\x73\xee\x61\x33\x0d\x64\x87\x0e\x20\x62\xa0\x1e\xf2\x38\xa4\x29\x1a\xe2\x90\xac\x5b\x3b\x53\xd3\x30\x3d\x4e\x24\x2a\x4b\x3b\xe0\xb2\x05\x2c\x4d\x0a\x9d\x64\x32\x25\xd5\xc8\x69\xca\x3d\x1c\x79\x5b\xca\x5d\x2d\x83\x4a\x63\x62\xf7\x6c\x2f\xa0\xf4\x2a\x9a\x98\x76\xf6\xdc\x48\x31\x30\x67\x31\xc9\x36\x5f\x1b\xfc\x66\x7c\xd7\x3a\xfb\x7a\xd0\xd9\x6d\xeb\xac\xd2\xbc\x13\xfd\x7c\x95\xfa\xc5\xed\xe8\xd9\x4f\x8c\xfe\xca\xc4\x95\x29\x0f\x89\xf5\xdb\x7e\x96\x05\xe4\x21\x24\xcb\xf4\xd8\xdc\x2e\x8e\x93\x47\xbe\x9c\xaa\x03\xc8\x4c\x42\xbc\xa5\xbb\xb8\x89\xe9\x57\xfc\xe8\xc8\x5b\xe9\x61\x8d\x5e\xca\xa0\x62\x52\xa6\x1e\x6a\xa1\x8c\x86\x6c\x07\xb0\x45\xef\x6c\x4d\xd3\x4a\xa7\x4c\xf1\xed\xcd\xa7\xfb\xff\xbf\x9b\x07\x0a\xd8\xc0\x92\x39\x65\x62\x9d\xb7\xdb\xae\x3b\xeb\x6a\xc6\x00\xf4\xa9\xd4\x10\x65\x17\xc7\x19\xae\x0b\xbe\x46\x3a\xd4\xd7\x4b\x62\x1a\x7e\x92\xd1\x19\x7e\x56\xc5\x65\x92\xa2\x4e\x72\x48\x3b\x37\x43\x55\x4e\x8a\xb6\x2a\xfc\x08\x07\x70\x4a\xe1\x04\x7c\x3d\x51\xfb\x3c\x8a\xde\x65\x8b\x4a\xe5\xe7\x38\xc7\x00\x58\x27\x0e\xa8\x7d\x91\x28\x2d\xd4\x05\x3a\xcb\x3a\xbb\xa5\xfd\x17\x48\x04\xc7\x57\x2a\x5c\x89\x65\x42\x79\x79\xb7\xbf\x0e\xad\xee\x7f\x0f\x2c\x2a\x75\x4c\xf6\x34\x74\x51\x03\x4f\xe0\xb3\x57\x3d\x74\x21\x33\x3e\x5d\x96\xc1\x11\xb4\x7d\x7e\x06\xb7\x2b\xf4\xf9\x01\x57\x7b\xac\x9e\x72\xb1\x7b\xa3\x0e\xdc\x00\xf5\x8f\xb2\x3d\x28\x4f\xad\xc9\xf2\xa6\x94\xbd\x37\xe4\x4f\x00\x00\x00\xff\xff\x94\x2a\x45\x0e\x5e\x05\x00\x00") +var _dbaKubedbCom_pgbouncermodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x4f\x6f\x1c\xb7\x0f\xbd\xef\xa7\x20\xf0\x3b\xe4\x92\xdd\x85\xf1\xbb\x14\x73\x4b\x9d\x16\x08\xda\x14\x81\x9d\xe4\xce\x91\xb8\xbb\xac\x35\x92\x42\x52\x9b\xba\x9f\xbe\x90\xb4\xff\xbc\x5e\xdb\xa9\x81\xce\x4d\x14\xf5\xf8\xf8\x48\x51\x83\x99\xbf\x92\x28\xa7\x38\x00\x66\xa6\xbf\x8c\x62\x5d\xe9\xe2\xee\x27\x5d\x70\x5a\x6e\xaf\x46\x32\xbc\x9a\xdd\x71\xf4\x03\x5c\x17\xb5\x34\xdd\x90\xa6\x22\x8e\xde\xd3\x8a\x23\x1b\xa7\x38\x9b\xc8\xd0\xa3\xe1\x30\x03\x70\x42\x58\x8d\x9f\x79\x22\x35\x9c\xf2\x00\xb1\x84\x30\x03\x08\x38\x52\xd0\xea\x03\x80\x39\x0f\x70\x57\x46\xf2\xe3\x0c\x20\xe2\x44\x03\xe4\xf5\x98\x4a\x74\x24\x53\xf2\xbc\x62\xd7\x60\x84\xbe\x15\x52\xd3\x85\x1f\x71\xd1\x0f\x2c\x5c\x9a\x66\x9a\xc9\x55\xa8\xb5\xa4\x92\x07\x38\xdb\xed\x90\xbb\x58\x0e\x8d\xd6\x49\x78\xbf\x9e\x43\xe5\xaa\x96\x84\x76\xeb\x03\x91\xba\xc0\x9c\xd5\x25\xdf\xf7\x7a\xe2\x9f\xd6\x3f\x77\x66\x1f\x4f\x98\xdd\x74\x66\xcd\x2d\xb0\xda\x6f\x2f\xba\xfe\xce\x3b\xf7\x1c\x8a\x60\x78\x21\xe3\xe6\xa9\x9b\x24\xf6\xc7\x31\x97\x39\xe4\x71\x4a\x5e\xe8\x5b\xdf\xe6\xb8\x2e\x01\xe5\x79\xa8\x19\x40\x16\x52\x92\x2d\x7d\x89\x77\x31\x7d\x8f\xbf\x32\x05\xaf\x03\xac\x30\x68\x4d\x54\x5d\xca\x34\x40\x0b\x94\xd1\x91\x9f\x01\x6c\x31\xb0\x6f\x30\x3d\x74\xca\x14\xdf\x7d\xfa\xf0\xf5\xff\xb7\x6e\x43\x13\x76\x63\x45\x4e\x99\xc4\x0e\xea\xf6\xea\x1e\xfa\xea\x60\x03\xf0\xa4\x4e\x38\x37\x44\x78\x53\xa1\xba\x0f\xf8\xda\x49\xa4\x60\x1b\x82\x6d\xb7\x91\x07\x6d\x61\x20\xad\xc0\x36\xac\x20\xd4\x72\x88\xd6\x28\x9d\xc0\x42\x75\xc1\x08\x69\xfc\x93\x9c\x2d\xe0\xb6\xe6\x29\x5a\xa5\x2b\xc1\x83\x4b\x71\x4b\x62\x20\xe4\xd2\x3a\xf2\xdf\x07\x64\x05\x4b\x2d\x64\x40\xdb\xd7\x71\xff\x71\x34\x92\x88\xa1\x8a\x50\xe8\x2d\x60\xf4\x30\xe1\x3d\x08\xd5\x18\x50\xe2\x09\x5a\x73\xd1\x05\x7c\x4c\x42\xc0\x71\x95\x06\xd8\x98\x65\x1d\x96\xcb\x35\xdb\xfe\x26\xb9\x34\x4d\x25\xb2\xdd\x2f\x5d\x8a\x26\x3c\x16\x4b\xa2\x4b\x4f\x5b\x0a\x4b\xe5\xf5\x1c\xc5\x6d\xd8\xc8\x59\x11\x5a\x62\xe6\x79\x23\x1e\xad\x5d\xc7\xc9\xff\x4f\x76\xd7\x4e\xdf\x9c\x30\xb5\xfb\x5a\x36\x35\xe1\xb8\x3e\x98\x5b\xcf\x3e\xa9\x7b\x6d\x53\x60\x05\xdc\x1d\xeb\xfc\x8f\xf2\x56\x53\x55\xe5\xe6\x97\xdb\xcf\xb0\x0f\xda\x4a\xf0\x50\xf3\xa6\xf6\xf1\x98\x1e\x85\xaf\x42\x71\x5c\x91\xf4\xc2\xad\x24\x4d\x0d\x91\xa2\xcf\x89\xa3\xb5\x85\x0b\x4c\xf1\xa1\xe8\x5a\xc6\x89\xad\x56\xba\x5f\x00\xb0\xb4\x80\x6b\x8c\x31\x19\x8c\x04\x25\x7b\x34\xf2\x0b\xf8\x10\xe1\x1a\x27\x0a\xd7\xa8\xf4\x9f\xcb\x5e\x15\xd6\x79\x95\xf4\x65\xe1\x4f\xc7\xe0\x43\xc7\xae\xd6\xc1\xbc\x1f\x5e\x17\x2b\xf4\xdc\x04\xb9\xcd\xe4\x6a\xf1\xaa\x82\x15\x04\x56\x49\x80\x02\xaa\xb1\x53\xaa\xb9\x3c\x50\x74\x77\x99\x5e\xa4\x63\x68\x45\x5f\x47\xa8\x1d\x3d\x50\xea\xab\x7f\x4b\xea\xd2\x08\xa9\x9f\x4b\xd1\xb7\x07\xe6\xcc\x7e\xc6\xef\xfa\xe0\x56\x67\x77\x60\xf2\xfb\x9b\xbd\xeb\xa4\xb7\xa0\xc5\x6d\x00\xdb\xbe\xa4\x2d\x06\x48\x72\x86\x58\x31\x23\x63\x58\x9c\xd9\xd9\x68\x7a\x14\xfe\x69\xca\xfd\xab\xb9\x7f\x69\xed\x5a\x5f\xc1\x4b\x1e\x67\x29\xd8\xfe\xb1\x6c\xda\xf5\xa1\xa4\xb6\x6b\xf9\x9e\x0d\xeb\x51\x8f\x8b\x80\xab\x24\x13\xda\x50\x1f\x37\x9a\x57\xc0\x8b\x5e\x17\x1b\xf7\xf8\x4d\xa4\x8a\xeb\x1f\xa1\xbc\x29\x13\x46\x10\x42\x8f\x63\xa0\xfd\x41\xf8\xce\xb6\x01\x4f\x86\x1c\x14\x70\x4c\xc5\x4e\x2b\x71\x11\xb6\x37\xe0\xab\xe8\x0a\xa1\x3e\x7c\x64\x9e\x60\x3b\x0a\xd3\x6a\xe7\x7e\xd0\x78\x47\xea\xf5\xe1\xdb\xf6\xcb\xc1\xf7\x71\x0e\xdd\xd7\x02\xbe\x05\x57\x44\x28\x5a\xb8\x87\x77\x6d\x87\x3c\x24\x81\xf7\x14\x99\xfc\x79\x1f\xfe\x00\x9f\x1a\x86\x85\xfc\x63\x46\xf3\x76\xf0\x91\xf9\xe2\x30\x38\xdd\x42\x11\xbc\x7f\x7e\x7a\x9c\x99\xb6\xfb\xdf\xc9\xed\x15\x86\xbc\xc1\xab\xa3\xad\xdd\x94\xf9\xee\x5f\xef\x64\x1b\xa0\xfd\x99\xf8\x01\x4c\x4a\x27\x59\xff\xcd\x6a\x17\x76\xcb\x3f\x01\x00\x00\xff\xff\xe7\x8b\xde\x3c\xa6\x0a\x00\x00") func dbaKubedbCom_pgbouncermodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -444,12 +442,12 @@ func dbaKubedbCom_pgbouncermodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_pgbouncermodificationrequests.yaml", size: 1374, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_pgbouncermodificationrequests.yaml", size: 2726, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_postgresmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xdb\x6e\x13\x41\x0c\x7d\xdf\xaf\xf0\x0f\x24\x28\xe2\x05\xed\x1b\x02\x21\x21\x2e\xaa\x0a\xed\xbb\x77\xc6\xd9\x0e\x99\x5b\x6d\x6f\xa0\x7f\x8f\x66\x26\xdd\xa4\x49\x9a\xc0\xbe\xf9\xf8\xf8\x7e\x76\x30\xbb\x7b\x62\x71\x29\xf6\x80\xd9\xd1\x1f\xa5\x58\x2c\x59\x6e\xde\xc9\xd2\xa5\x37\xdb\xd5\x40\x8a\xab\x6e\xe3\xa2\xed\xe1\xc3\x24\x9a\xc2\x2d\x49\x9a\xd8\xd0\x47\x5a\xbb\xe8\xd4\xa5\xd8\x05\x52\xb4\xa8\xd8\x77\x00\x86\x09\x0b\xf8\xd3\x05\x12\xc5\x90\x7b\x88\x93\xf7\x1d\x80\xc7\x81\xbc\x14\x0e\x00\xe6\xdc\xc3\x66\x1a\xc8\x0e\x1d\x40\xc4\x40\x3d\xe4\x24\x3a\x32\x49\x48\xd6\xad\x9d\xa9\x59\x98\x1e\x27\x12\x95\xa5\x1d\x70\xd9\xf8\x4b\x93\x42\x27\x99\x4c\xc9\x34\x72\x9a\x72\x0f\x47\xde\x96\x71\x57\xca\xa0\xd2\x98\xd8\x3d\xdb\x0b\x28\xad\x8a\x26\xa6\x9d\x3d\xf7\x51\x0c\xcc\x59\x4c\xb2\xcd\xd7\xe6\xbe\xd9\x35\xf6\xed\xa0\xb1\xdb\xd6\x58\x65\x79\x27\xfa\xe5\x1a\xf3\xab\xdb\xb1\xb3\x9f\x18\xfd\xe5\x71\x2b\x51\x1e\x12\xeb\xf7\xfd\x20\x0b\xc8\x63\x48\x96\xe9\xb1\xb9\x5d\x1c\x27\x8f\x7c\x31\x53\x07\x90\x99\x84\x78\x4b\x77\x71\x13\xd3\xef\xf8\xc9\x91\xb7\xd2\xc3\x1a\xbd\x94\x21\xc5\xa4\x4c\x3d\xd4\x3a\x19\x0d\xd9\x0e\x60\x8b\xde\xd9\x9a\xa6\x55\x4e\x99\xe2\xfb\x9b\xcf\xf7\x6f\x7f\x98\x07\x0a\xd8\xc0\x92\x39\x65\x62\x9d\x37\xdb\x0e\x3b\x4b\x6a\xc6\x00\xf4\xa9\xd4\x10\x65\x17\xc7\x19\xae\xcb\xbd\x46\x3a\x94\xd6\x4b\x62\x1a\x7e\x91\xd1\x19\x7e\x56\xc4\x65\x92\xa2\x4e\x72\x48\x3b\x37\x43\x55\x4d\x8a\xb6\x8a\xfb\x08\x07\x70\x4a\xe1\x04\x7c\x3d\x51\xfb\x3c\x8a\xde\x65\x8b\x4a\xe5\xbf\x38\xc7\x00\x58\x27\x0e\xa8\x7d\x91\x27\x2d\xd4\x05\x3a\xcb\x3a\xbb\xa5\xfd\x17\x48\x04\xc7\x57\x2a\x5c\x89\x65\x42\x79\x79\xb7\x7f\x0e\xad\xee\xff\x0f\x2c\x2a\x75\x4c\xf6\x34\x74\x51\x03\x4f\xe0\xb3\x57\x3d\x74\x21\x33\x3e\x5d\x96\xc1\x11\xb4\x7d\x7e\x01\xb7\x2b\xf4\xf9\x01\x57\x7b\xac\x9e\x72\xb1\x7b\x9e\x0e\xdc\x00\xf5\x8f\xb2\x3d\x28\x4f\xad\xc9\xf2\x9e\x94\xbd\x37\xe4\x6f\x00\x00\x00\xff\xff\x61\x8c\xc4\xec\x59\x05\x00\x00") +var _dbaKubedbCom_postgresmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x51\x6f\x1b\x37\x0c\x7e\xf7\xaf\x20\xb0\x87\xbe\xd4\x36\x82\xbd\x0c\xf7\x56\xa4\x1b\x50\x6c\x1d\x8a\xa4\xed\x3b\x4f\xa2\x6d\x2e\x3a\x49\x25\x79\xee\xb2\x5f\x3f\x48\x3a\x9f\x1d\xc7\x49\xba\x00\xbb\x37\x51\xd4\xc7\x8f\x1f\x29\xea\x30\xf3\x57\x12\xe5\x14\x3b\xc0\xcc\xf4\xb7\x51\x2c\x2b\x5d\xdd\xfd\xa2\x2b\x4e\xeb\xfd\x55\x4f\x86\x57\x8b\x3b\x8e\xbe\x83\xeb\x51\x2d\x0d\x37\xa4\x69\x14\x47\xef\x69\xc3\x91\x8d\x53\x5c\x0c\x64\xe8\xd1\xb0\x5b\x00\x38\x21\x2c\xc6\xcf\x3c\x90\x1a\x0e\xb9\x83\x38\x86\xb0\x00\x08\xd8\x53\xd0\xe2\x03\x80\x39\x77\x70\x37\xf6\xe4\xfb\x05\x40\xc4\x81\x3a\xc8\x49\x6d\x2b\xa4\x43\xf2\xbc\x61\x57\x51\x84\xbe\x8d\xa4\xa6\x2b\xdf\xe3\xaa\xf9\xaf\x5c\x1a\x16\x9a\xc9\x15\xa4\xad\xa4\x31\x77\x70\xb6\xdb\x10\xa7\x50\x0e\x8d\xb6\x49\xf8\xb0\x5e\x42\xa1\xaa\x96\x84\xa6\xf5\xcc\xa3\x2c\x30\x67\x75\xc9\xb7\xbd\x96\xf7\xa7\x89\xd8\xc7\x13\x62\x37\x8d\x58\xf5\x0a\xac\xf6\xfb\x4b\x9e\x7f\xf0\xe4\x9d\xc3\x28\x18\x9e\x4f\xb7\x3a\xea\x2e\x89\xfd\x79\x4c\x64\x09\x79\x3b\x24\x2f\xf4\xad\x6d\x73\xdc\x8e\x01\xe5\x59\xa4\x05\x40\x16\x52\x92\x3d\x7d\x89\x77\x31\x7d\x8f\xbf\x31\x05\xaf\x1d\x6c\x30\x68\x49\x52\x5d\xca\xd4\x41\x8d\x93\xd1\x91\x5f\x00\xec\x31\xb0\xaf\x30\x2d\x72\xca\x14\xdf\x7d\xfa\xf0\xf5\xe7\x5b\xb7\xa3\x01\x9b\xb1\x20\xa7\x4c\x62\xb3\xb2\xad\xb0\x73\x4b\xcd\x36\x00\x4f\xea\x84\x73\x45\x84\x37\x05\xaa\xf9\x80\x2f\x4d\x44\x0a\xb6\x23\xd8\x37\x1b\x79\xd0\x1a\x06\xd2\x06\x6c\xc7\x0a\x42\x35\x87\x68\x95\xd2\x09\x2c\x14\x17\x8c\x90\xfa\xbf\xc8\xd9\x0a\x6e\x4b\x9e\xa2\x45\xb9\x31\x78\x70\x29\xee\x49\x0c\x84\x5c\xda\x46\xfe\x67\x46\x56\xb0\x54\x43\x06\xb4\x43\x11\x0f\x1f\x47\x23\x89\x18\x8a\x08\x23\xbd\x05\x8c\x1e\x06\xbc\x07\xa1\x12\x03\xc6\x78\x82\x56\x5d\x74\x05\x1f\x93\x10\x70\xdc\xa4\x0e\x76\x66\x59\xbb\xf5\x7a\xcb\x76\xb8\x44\x2e\x0d\xc3\x18\xd9\xee\xd7\x2e\x45\x13\xee\x47\x4b\xa2\x6b\x4f\x7b\x0a\x6b\xe5\xed\x12\xc5\xed\xd8\xc8\xd9\x28\xb4\xc6\xcc\xcb\x4a\x3c\x5a\xbd\x89\x83\xff\x49\xa6\x1b\xa7\x6f\x4e\x98\xda\x7d\x29\x9b\x9a\x70\xdc\xce\xe6\xda\xaf\x4f\xea\x5e\x7a\x14\x58\x01\xa7\x63\x8d\xff\x51\xde\x62\x2a\xaa\xdc\xfc\x7a\xfb\x19\x0e\x41\x6b\x09\x1e\x6a\x5e\xd5\x3e\x1e\xd3\xa3\xf0\x45\x28\x8e\x1b\x92\x56\xb8\x8d\xa4\xa1\x22\x52\xf4\x39\x71\xb4\xba\x70\x81\x29\x3e\x14\x5d\xc7\x7e\x60\x2b\x95\x6e\xfd\x0f\x96\x56\x70\x8d\x31\x26\x83\x9e\x60\xcc\x1e\x8d\xfc\x0a\x3e\x44\xb8\xc6\x81\xc2\x35\x2a\xfd\xef\xb2\x17\x85\x75\x59\x24\x7d\x59\xf8\xd3\x09\xf8\xd0\xb1\xa9\x35\x9b\x0f\x83\xeb\x62\x85\x9e\x19\x1f\xb7\x99\x5c\xa9\x5d\x11\xb0\x60\xc0\x26\x09\x50\x40\x35\x76\x4a\x25\x95\x07\x82\x4e\x77\xe9\x45\x36\x86\x36\xea\xab\xf8\xd4\x93\x33\xa3\xb6\xfa\xaf\x9c\x2e\x0d\x90\xf2\xb9\x14\x7d\x7d\x59\xce\xec\x67\xf4\xae\x67\xb7\x32\xb5\x03\x93\x3f\xdc\xeb\xa9\x8f\xde\x82\x8e\x6e\x07\x58\xf7\x25\xed\x31\x40\x92\x33\xc4\x82\x19\x19\xc3\xea\xcc\xce\x46\xc3\xa3\xf0\x4f\x53\x6e\x5f\xc9\xfd\x4b\x6d\xd6\xf2\xfc\x5d\xf2\x38\x4b\xc1\x0e\xaf\x64\xd5\xae\x8d\x24\xb5\xa9\xe1\x5b\x36\xac\x47\x3d\x2e\x02\x6e\x92\x0c\x68\x5d\x79\xd6\x68\x59\x00\x2f\x7a\x5d\x6c\xdb\xe3\x37\x90\x2a\x6e\x7f\x84\xf2\x6e\x1c\x30\x82\x10\x7a\xec\x03\x1d\x0e\xc2\x77\xb6\x1d\x78\x32\xe4\xa0\x80\x7d\x1a\xed\xb4\x12\x17\x61\x5b\xff\xbd\x8a\xae\x10\xea\xc3\x27\xe6\x09\xb6\xbd\x30\x6d\x26\xf7\x59\xe3\x89\xd4\xeb\xc3\xd7\xed\x97\x83\x1f\xe2\xcc\xdd\x57\x03\xbe\x05\x37\x8a\x50\xb4\x70\x0f\xef\xea\x0e\x79\x48\x02\xef\x29\x32\xf9\xf3\x3e\xfc\x01\x3e\x25\x0c\x0b\xf9\xc7\x8c\x96\xf5\xe0\x23\xf3\xc5\x59\x70\xba\x85\x22\x78\xff\xfc\xf0\x38\x33\xed\x0f\xff\x91\xfb\x2b\x0c\x79\x87\x57\x47\x5b\xbd\x29\xcb\xe9\x27\xef\x64\x1b\xa0\xfe\x97\xf8\x0e\x4c\xc6\x46\xb2\xfc\x95\x95\x2e\x6c\x96\x7f\x03\x00\x00\xff\xff\xcd\x30\x95\x12\x9f\x0a\x00\x00") func dbaKubedbCom_postgresmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -464,12 +462,12 @@ func dbaKubedbCom_postgresmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_postgresmodificationrequests.yaml", size: 1369, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_postgresmodificationrequests.yaml", size: 2719, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_proxysqlmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcd\x6e\x13\x41\x0c\xbe\xef\x53\xf8\x05\x12\x14\x71\x41\x7b\x43\x20\x24\x44\x41\xa5\xa5\xbd\x7b\x67\x9c\xd4\x64\xfe\x3a\xf6\x86\xf6\xed\xd1\xcc\x24\xdb\x34\x49\x13\xd8\x9b\x3f\x7f\xf6\xf8\xe7\x5b\x63\xe2\x7b\xca\xc2\x31\xf4\x80\x89\xe9\x49\x29\x14\x4b\xe6\xeb\x0f\x32\xe7\xf8\x6e\xb3\x18\x48\x71\xd1\xad\x39\xd8\x1e\x3e\x8d\xa2\xd1\xdf\x90\xc4\x31\x1b\xfa\x4c\x4b\x0e\xac\x1c\x43\xe7\x49\xd1\xa2\x62\xdf\x01\x98\x4c\x58\xc0\x5f\xec\x49\x14\x7d\xea\x21\x8c\xce\x75\x00\x0e\x07\x72\x52\x38\x00\x98\x52\x0f\xeb\x71\x20\x3b\x74\x00\x01\x3d\xf5\x90\x72\x7c\x7a\x96\x47\xe7\xa3\xe5\x25\x9b\x9a\x25\xd3\xe3\x48\xa2\x32\xb7\x03\xce\x1b\x7f\x6e\xa2\xef\x24\x91\x29\x99\x56\x39\x8e\xa9\x87\x03\x6f\xcb\xb8\x7d\xca\xa0\xd2\x2a\x66\xde\xd9\x33\x28\xa5\x8a\xc6\x4c\x5b\x7b\xaa\xa3\x18\x98\x92\x98\x68\x9b\xaf\xf5\x7d\x5d\x0a\xbb\xfd\x79\xf5\x7d\xaf\xb0\x9b\x56\x58\x65\x39\x16\xfd\x76\x89\x79\xc5\x5b\x76\x72\x63\x46\x77\xbe\xdd\x4a\x14\x0e\xab\xd1\x61\x3e\x4b\xed\x00\x52\x26\xa1\xbc\xa1\xbb\xb0\x0e\xf1\x4f\xf8\xc2\xe4\xac\xf4\xb0\x44\x27\xa5\x0b\x31\x31\x51\x0f\x3f\xca\x44\x12\x1a\xb2\x1d\xc0\x06\x1d\xdb\x9a\xa6\xcd\x24\x26\x0a\x1f\xaf\xbf\xde\xbf\xbf\x35\x0f\xe4\xb1\x81\x25\x73\x4c\x94\x75\x1a\x5d\xdb\xdc\xa4\x99\x09\x03\xd0\xe7\xf2\x86\x68\xe6\xb0\x9a\xe0\x3a\xbd\x4b\xa4\x7d\xed\xbc\x26\xc6\xe1\x37\x19\x9d\xe0\xdd\xca\xcf\x93\x14\x75\x94\x7d\xda\xa9\x1e\xaa\x2c\x62\xb0\x55\xbd\x07\x38\x00\x2b\xf9\x23\xf0\xed\x44\xed\x73\x28\x7a\x97\x2c\x2a\x15\xe1\x9f\x62\x00\x2c\x63\xf6\xa8\x7d\xd1\x1f\xcd\x94\x3d\x9d\x64\x9d\x9c\xd2\xcb\xe7\x49\x04\x57\x6f\xbc\x70\x21\x36\x13\xca\xeb\xbd\xfd\x73\x68\x75\xff\x7f\x60\x51\x29\x67\xb2\xc7\xa1\xb3\x1a\x78\x04\x9f\xdc\xea\xbe\x0b\x73\xc6\xe7\xf3\x32\x38\x80\x36\xbb\x13\xb7\x59\xa0\x4b\x0f\xb8\x78\xc1\xea\x2a\x67\xdb\xfb\xb3\xe7\x06\xa8\x7f\x94\xed\x41\xf3\xd8\x8a\x2c\x07\xa3\xcc\xbd\x21\x7f\x03\x00\x00\xff\xff\x92\xe5\xcd\xd6\x3a\x05\x00\x00") +var _dbaKubedbCom_proxysqlmodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\x41\x6f\x1b\x39\x0f\xbd\xfb\x57\x10\xf8\x0e\xbd\xc4\x36\x82\xef\xb2\x98\x5b\x91\xee\x02\xc5\xb6\x8b\x6e\xd2\xf6\xce\x91\x68\x9b\x1b\x8d\xa4\x92\x94\x5b\xef\xaf\x5f\x48\x63\x8f\x1d\xc7\x49\xba\x01\x76\x6e\xa2\xa8\xc7\xc7\x47\x8a\x1a\xcc\xfc\x95\x44\x39\xc5\x0e\x30\x33\xfd\x30\x8a\x75\xa5\x8b\xfb\x5f\x74\xc1\x69\xb9\xbd\xee\xc9\xf0\x7a\x76\xcf\xd1\x77\x70\x53\xd4\xd2\x70\x4b\x9a\x8a\x38\x7a\x47\x2b\x8e\x6c\x9c\xe2\x6c\x20\x43\x8f\x86\xdd\x0c\xc0\x09\x61\x35\x7e\xe6\x81\xd4\x70\xc8\x1d\xc4\x12\xc2\x0c\x20\x60\x4f\x41\xab\x0f\x00\xe6\xdc\xc1\x7d\xe9\xc9\xf7\x33\x80\x88\x03\x75\x90\x25\xfd\xd8\xe9\xb7\x30\x24\xcf\x2b\x76\x0d\x45\xe8\x5b\x21\x35\x5d\xf8\x1e\x17\xa3\xff\xc2\xa5\x61\xa6\x99\x5c\x45\x5a\x4b\x2a\xb9\x83\xb3\xdd\x11\x71\x1f\xca\xa1\xd1\x3a\x09\x1f\xd6\x73\xa8\x54\xd5\x92\xd0\x7e\x3d\xf1\xa8\x0b\xcc\x59\x5d\xf2\xe3\xde\x98\xf7\xa7\x4a\xec\xee\xcf\x0f\x1f\x4f\x88\xdd\x8e\xc4\x9a\x57\x60\xb5\xdf\x5f\xf2\xfc\xc0\x7b\xef\x1c\x8a\x60\x78\x3e\xdd\xe6\xa8\x1c\xd7\x25\xa0\x3c\xeb\x3a\x03\xc8\x42\x4a\xb2\xa5\x2f\xf1\x3e\xa6\xef\xf1\x37\xa6\xe0\xb5\x83\x15\x06\xad\x59\xa8\x4b\x99\x3a\xf8\xa3\x2a\x92\xd1\x91\x9f\x01\x6c\x31\xb0\x6f\x30\xa3\x26\x29\x53\x7c\xfb\xe9\xfd\xd7\xff\xdf\xb9\x0d\x0d\x38\x1a\x2b\x72\xca\x24\x36\x49\x37\x56\x6e\xea\x99\xc9\x06\xe0\x49\x9d\x70\x6e\x88\xf0\xa6\x42\x8d\x3e\xe0\x6b\x97\x90\x82\x6d\x08\xb6\xa3\x8d\x3c\x68\x0b\x03\x69\x05\xb6\x61\x05\xa1\x96\x43\xb4\x46\xe9\x04\x16\xaa\x0b\x46\x48\xfd\x5f\xe4\x6c\x01\x77\x35\x4f\x51\xd0\x4d\x2a\xc1\x83\x4b\x71\x4b\x62\x20\xe4\xd2\x3a\xf2\xdf\x13\xb2\x82\xa5\x16\x32\xa0\x1d\xaa\x74\xf8\x38\x1a\x49\xc4\x50\x45\x28\x74\x05\x18\x3d\x0c\xb8\x03\xa1\x1a\x03\x4a\x3c\x41\x6b\x2e\xba\x80\x8f\x49\x08\x38\xae\x52\x07\x1b\xb3\xac\xdd\x72\xb9\x66\x3b\xdc\x12\x97\x86\xa1\x44\xb6\xdd\xd2\xa5\x68\xc2\x7d\xb1\x24\xba\xf4\xb4\xa5\xb0\x54\x5e\xcf\x51\xdc\x86\x8d\x9c\x15\xa1\x25\x66\x9e\x37\xe2\xd1\xda\x55\x1b\xfc\xff\x64\x7f\xa5\xf4\xcd\x09\x53\xdb\xd5\xb2\xa9\x09\xc7\xf5\x64\x6e\x0d\xf9\xa4\xee\xb5\x09\x81\x15\x70\x7f\x6c\xe4\x7f\x94\xb7\x9a\xaa\x2a\xb7\xbf\xde\x7d\x86\x43\xd0\x56\x82\x87\x9a\x37\xb5\x8f\xc7\xf4\x28\x7c\x15\x8a\xe3\x8a\x64\x2c\xdc\x4a\xd2\xd0\x10\x29\xfa\x9c\x38\x5a\x5b\xb8\xc0\x14\x1f\x8a\xae\xa5\x1f\xd8\x6a\xa5\xc7\x06\x07\x4b\x0b\xb8\xc1\x18\x93\x41\x4f\x50\xb2\x47\x23\xbf\x80\xf7\x11\x6e\x70\xa0\x70\x83\x4a\xff\xb9\xec\x55\x61\x9d\x57\x49\x5f\x16\xfe\x74\xc4\x3d\x74\x1c\xd5\x9a\xcc\x87\xc9\x74\xb1\x42\xcf\xcc\x87\xbb\x4c\xae\xd6\xae\x0a\x58\x31\x60\x95\x04\x28\xa0\x1a\x3b\xa5\x9a\xca\x03\x41\xf7\x77\xe9\x45\x36\x86\x56\xf4\x55\x7c\xda\xc9\x89\xd1\xb8\xfa\xb7\x9c\x2e\x0d\x90\xfa\xb9\x14\x7d\x7b\x3a\xce\xec\x67\xf4\x6e\x26\xb7\x3a\x96\x03\x93\x3f\xdc\xeb\x7d\x1f\x5d\x81\x16\xb7\x01\x6c\xfb\x92\xb6\x18\x20\xc9\x19\x62\xc5\x8c\x8c\x61\x71\x66\x67\xa3\xe1\x51\xf8\xa7\x29\x8f\x5f\xcd\xfd\x4b\x6b\xd6\xfa\xbe\x5d\xf2\x38\x4b\xc1\x0e\xcf\x60\xd3\x6e\x1c\x49\x6a\xfb\x86\x1f\xb3\x61\x3d\xea\x71\x11\x70\x95\x64\x40\xeb\xea\xbb\x45\xf3\x0a\x78\xd1\xeb\x62\xdb\x1e\xbf\x81\x54\x71\xfd\x33\x94\x37\x65\xc0\x08\x42\xe8\xb1\x0f\x74\x38\x08\xdf\xd9\x36\xe0\xc9\x90\x83\x02\xf6\xa9\xd8\x69\x25\x2e\xc2\x8e\xfd\xf7\x2a\xba\x42\xa8\x0f\x9f\x98\x27\xd8\xf6\xc2\xb4\xda\xbb\x4f\x1a\xef\x49\xbd\x3e\x7c\xdb\x7e\x39\xf8\x21\xce\xd4\x7d\x2d\xe0\x15\xb8\x22\x42\xd1\xc2\x0e\xde\xb6\x1d\xf2\x90\x04\xde\x51\x64\xf2\xe7\x7d\xf8\x13\x7c\x6a\x18\x16\xf2\x8f\x19\xcd\xdb\xc1\x47\xe6\x8b\xb3\xe0\x74\x0b\x45\x70\xf7\xfc\xf0\x38\x33\x6d\x0f\x3f\x8a\xdb\x6b\x0c\x79\x83\xd7\x47\x5b\xbb\x29\xf3\xfd\x5f\xdc\xc9\x36\x40\xfb\x2f\xf1\x1d\x98\x94\x91\x64\xfd\xed\xaa\x5d\x38\x5a\xfe\x09\x00\x00\xff\xff\xd0\xf4\x7a\xf0\x80\x0a\x00\x00") func dbaKubedbCom_proxysqlmodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -484,12 +482,12 @@ func dbaKubedbCom_proxysqlmodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_proxysqlmodificationrequests.yaml", size: 1338, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_proxysqlmodificationrequests.yaml", size: 2688, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _dbaKubedbCom_redismodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x54\xcb\x8e\x13\x4b\x0c\xdd\xf7\x57\xf8\x07\x92\xab\xe8\x6e\x50\xef\x10\x08\x09\xf1\x10\x0a\xcc\xec\xdd\x55\x4e\x52\xa4\x5e\x63\xbb\x03\xf3\xf7\xa8\xaa\x92\x4e\x26\xaf\x81\xde\xf9\xf8\xf8\x7d\xba\x30\xbb\x47\x62\x71\x29\xf6\x80\xd9\xd1\x6f\xa5\x58\x2c\x99\x6f\xdf\xc8\xdc\xa5\xff\x76\x8b\x81\x14\x17\xdd\xd6\x45\xdb\xc3\xbb\x51\x34\x85\x25\x49\x1a\xd9\xd0\x7b\x5a\xb9\xe8\xd4\xa5\xd8\x05\x52\xb4\xa8\xd8\x77\x00\x86\x09\x0b\xf8\xc3\x05\x12\xc5\x90\x7b\x88\xa3\xf7\x1d\x80\xc7\x81\xbc\x14\x0e\x00\xe6\xdc\xc3\x76\x1c\xc8\x0e\x1d\x40\xc4\x40\x3d\x30\x59\x27\x21\x59\xb7\x72\xa6\xa6\x60\x7a\x1a\x49\x54\xe6\x76\xc0\x79\x23\xcf\x4d\x0a\x9d\x64\x32\x25\xcd\x9a\xd3\x98\x7b\x38\xf3\xb6\x74\xfb\x3a\x06\x95\xd6\x89\xdd\xc1\x9e\x41\xe9\x53\x34\x31\xed\xed\xa9\x89\x62\x60\xce\x62\x92\x6d\xbe\x36\xf4\xb2\x74\xf5\xe5\xa4\xab\x65\xeb\xaa\x52\xbc\x13\xfd\x74\x97\xf6\xd9\xed\xa9\xd9\x8f\x8c\xfe\xce\x94\x95\x25\x9b\xc4\xfa\xf5\xd8\xff\x0c\xd8\x86\x64\x99\x9e\x9a\xdb\xc5\xf5\xe8\x91\x6f\xa7\xe9\x00\x32\x93\x10\xef\xe8\x21\x6e\x63\xfa\x15\x3f\x38\xf2\x56\x7a\x58\xa1\x97\x32\x98\x98\x94\xa9\x87\x5a\x24\xa3\x21\xdb\x01\xec\xd0\x3b\x5b\xd3\xb4\xb2\x29\x53\x7c\xfb\xed\xe3\xe3\xff\xdf\xcd\x86\x02\x36\xb0\x64\x4e\x99\x58\xa7\x6d\xb6\x4b\x4e\x1a\x9a\x30\x00\x7d\x2e\x35\x44\xd9\xc5\xf5\x04\xd7\x85\xbe\x46\x3a\xd5\xd2\x4b\x62\x1a\x7e\x92\xd1\x09\x3e\xa8\xe0\x3e\x49\x51\x47\x39\xa5\x5d\x9b\xa1\x2a\x25\x45\x5b\xd5\x7c\x86\x03\x38\xa5\x70\x01\xde\x4e\xd4\x3e\x8f\xa2\x0f\xd9\xa2\x52\xf9\x11\xae\x31\x00\x56\x89\x03\x6a\x5f\x24\x49\x33\x75\x81\xae\xb2\xae\x6e\xe9\xf8\x05\x12\xc1\xf5\x8d\x0a\xaf\xc4\x32\xa1\xbc\xbc\xdb\x5f\x87\x56\xf7\xbf\x07\x16\x95\x3a\x26\x7b\x19\x3a\xab\x81\x17\xf0\xd5\xab\x9e\xba\x90\x19\x9f\xef\xcb\xe0\x0c\xda\x1d\x9e\xbc\xdd\x02\x7d\xde\xe0\xe2\x88\xd5\x53\xce\xf6\xef\xd1\x89\x1b\xa0\xfe\x51\xb6\x07\xe5\xb1\x35\x59\xde\x90\xb2\xf7\x86\xfc\x09\x00\x00\xff\xff\x85\xd3\x0c\xee\x4a\x05\x00\x00") +var _dbaKubedbCom_redismodificationrequestsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x56\xcf\x6f\x5b\x37\x0c\xbe\xfb\xaf\x20\xb0\x43\x2f\xb1\x8d\x60\x97\xe1\xdd\x8a\x74\x03\x8a\xad\xc3\x90\xb4\xbd\xf3\x49\xb4\xcd\x45\x4f\x52\x49\xca\x5d\xf6\xd7\x0f\x92\xfc\x2b\x8e\x93\xb4\x05\xf6\x6e\xa2\xa8\x8f\x1f\x3f\x52\xd4\xc3\xcc\x9f\x49\x94\x53\x1c\x00\x33\xd3\x3f\x46\xb1\xae\x74\x71\xff\x8b\x2e\x38\x2d\xb7\xd7\x23\x19\x5e\xcf\xee\x39\xfa\x01\x6e\x8a\x5a\x9a\x6e\x49\x53\x11\x47\xef\x68\xc5\x91\x8d\x53\x9c\x4d\x64\xe8\xd1\x70\x98\x01\x38\x21\xac\xc6\x8f\x3c\x91\x1a\x4e\x79\x80\x58\x42\x98\x01\x04\x1c\x29\x68\xf5\x01\xc0\x9c\x07\xb8\x2f\x23\xf9\x71\x06\x10\x71\xa2\x01\x84\x3c\xeb\x94\x3c\xaf\xd8\x35\x08\xa1\x2f\x85\xd4\x74\xe1\x47\x5c\x74\xe7\x85\x4b\xd3\x4c\x33\xb9\x0a\xb3\x96\x54\xf2\x00\x67\xbb\x1d\x6e\x17\xc7\xa1\xd1\x3a\x09\xef\xd7\x73\xa8\x3c\xd5\x92\xd0\x6e\x7d\x20\x51\x17\x98\xb3\xba\xe4\xfb\x5e\x4f\xfa\xb6\xb2\xfa\x70\xc2\xea\xb6\xb3\x6a\x2e\x81\xd5\x7e\x7f\xd1\xed\x0f\xde\xb9\xe6\x50\x04\xc3\x0b\x59\x36\x2f\xdd\x24\xb1\x3f\x8f\xfc\xe7\x20\x7e\x4a\x5e\xe8\x4b\xdf\xe6\xb8\x2e\x01\xe5\x79\x98\x19\x40\x16\x52\x92\x2d\x7d\x8a\xf7\x31\x7d\x8d\xbf\x31\x05\xaf\x03\xac\x30\x68\x4d\x4c\x5d\xca\x34\x40\x0b\x92\xd1\x91\x9f\x01\x6c\x31\xb0\x6f\x30\x3d\x6c\xca\x14\xdf\xfe\xf5\xfe\xf3\xcf\x77\x6e\x43\x13\x76\x63\x45\x4e\x99\xc4\x0e\x6a\xf6\x4a\x1e\x7a\xe8\x60\x03\xf0\xa4\x4e\x38\x37\x44\x78\x53\xa1\xba\x0f\xf8\xda\x35\xa4\x60\x1b\x82\x6d\xb7\x91\x07\x6d\x61\x20\xad\xc0\x36\xac\x20\xd4\x72\x88\xd6\x28\x9d\xc0\x42\x75\xc1\x08\x69\xfc\x9b\x9c\x2d\xe0\xae\xe6\x29\x5a\x65\x2b\xc1\x83\x4b\x71\x4b\x62\x20\xe4\xd2\x3a\xf2\xbf\x07\x64\x05\x4b\x2d\x64\x40\xdb\xd7\x6e\xff\x71\x34\x92\x88\xa1\x8a\x50\xe8\x0a\x30\x7a\x98\xf0\x01\x84\x6a\x0c\x28\xf1\x04\xad\xb9\xe8\x02\x3e\x24\x21\xe0\xb8\x4a\x03\x6c\xcc\xb2\x0e\xcb\xe5\x9a\x6d\x7f\x6b\x5c\x9a\xa6\x12\xd9\x1e\x96\x2e\x45\x13\x1e\x8b\x25\xd1\xa5\xa7\x2d\x85\xa5\xf2\x7a\x8e\xe2\x36\x6c\xe4\xac\x08\x2d\x31\xf3\xbc\x11\x8f\xd6\xae\xde\xe4\x7f\x92\xdd\x15\xd3\x37\x27\x4c\xed\xa1\x96\x4d\x4d\x38\xae\x0f\xe6\xd6\xa3\xcf\xea\x5e\x5b\x13\x58\x01\x77\xc7\x3a\xff\xa3\xbc\xd5\x54\x55\xb9\xfd\xf5\xee\x23\xec\x83\xb6\x12\x3c\xd6\xbc\xa9\x7d\x3c\xa6\x47\xe1\xab\x50\x1c\x57\x24\xbd\x70\x2b\x49\x53\x43\xa4\xe8\x73\xe2\x68\x6d\xe1\x02\x53\x7c\x2c\xba\x96\x71\x62\xab\x95\xee\xcd\x0f\x96\x16\x70\x83\x31\x26\x83\x91\xa0\x64\x8f\x46\x7e\x01\xef\x23\xdc\xe0\x44\xe1\x06\x95\xfe\x77\xd9\xab\xc2\x3a\xaf\x92\xbe\x2e\xfc\xe9\xc8\x7b\xec\xd8\xd5\x3a\x98\xf7\xc3\xea\x62\x85\x9e\x9b\x1a\x77\x99\x5c\x2d\x5c\x55\xaf\x02\xc0\x2a\x09\x50\x40\x35\x76\x4a\x35\x8f\x47\x6a\xee\x2e\xd2\xab\x54\x0c\xad\xe8\xf7\x93\x69\xc7\x0e\x74\xfa\xea\x7b\x09\x5d\x1a\x1d\xf5\x73\x29\xfa\xf6\x88\x9c\xd9\xcf\xb8\xdd\x1c\xdc\xea\x8c\x0e\x4c\x7e\x7f\xa3\x77\x1d\x74\x05\x5a\xdc\x06\xb0\xed\x4b\xda\x62\x80\x24\x67\x88\x15\x33\x32\x86\xc5\x99\x9d\x8d\xa6\x27\xe1\x9f\xa7\xdc\xbf\x9a\xfb\xa7\xd6\xa6\xf5\xa5\xbb\xe4\x71\x96\x82\xed\x1f\xc4\xa6\x5d\x1f\x46\x6a\xbb\x56\xef\xd9\xb0\x1e\xf5\xb8\x08\xb8\x4a\x32\xa1\x0d\xf5\x11\xa3\x79\x05\xbc\xe8\x75\xb1\x61\x8f\xdf\x44\xaa\xb8\xfe\x16\xca\x9b\x32\x61\x04\x21\xf4\x38\x06\xda\x1f\x84\xaf\x6c\x1b\xf0\x64\xc8\x41\x01\xc7\x54\xec\xb4\x12\x17\x61\x7b\xf3\xfd\x10\x5d\x21\xd4\xc7\x8f\xcb\x33\x6c\x47\x61\x5a\xed\xdc\x0f\x1a\xef\x48\xfd\x78\xf8\xb6\xfd\x7a\xf0\x7d\x9c\x43\xf7\xb5\x80\x57\xe0\x8a\x08\x45\x0b\x0f\xf0\xb6\xed\x90\x87\x24\xf0\x8e\x22\x93\x3f\xef\xc3\x6f\xe0\x53\xc3\xb0\x90\x7f\xca\x68\xde\x0e\x3e\x31\x5f\x1c\x04\xa7\x5b\x28\x82\x0f\x2f\x4f\x8e\x33\xd3\x76\xff\xcb\xb8\xbd\xc6\x90\x37\x78\x7d\xb4\xb5\x9b\x32\xdf\xfd\xcf\x9d\x6c\x03\xb4\x3f\x12\x3f\x80\x49\xe9\x24\xeb\x3f\x58\xed\xc2\x6e\xf9\x2f\x00\x00\xff\xff\x13\x62\xa0\xe5\x8a\x0a\x00\x00") func dbaKubedbCom_redismodificationrequestsYamlBytes() ([]byte, error) { return bindataRead( @@ -504,32 +502,12 @@ func dbaKubedbCom_redismodificationrequestsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "dba.kubedb.com_redismodificationrequests.yaml", size: 1354, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "dba.kubedb.com_redismodificationrequests.yaml", size: 2698, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_dormantdatabasesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x5d\x73\xdc\x3a\xae\x3f\x0a\xdf\xcf\xa7\xd0\x17\xf0\x3c\xf5\x9f\xd9\xb5\xeb\xa9\x75\x97\x89\xb3\x66\xe7\x4c\xd6\x8a\x2b\x4e\x66\xed\x5b\x5a\xa2\xbb\x79\xac\x16\xb5\x48\xca\x2f\x73\xea\x7c\xf7\x53\x2d\x59\xdd\xed\xf8\xa5\xf1\x03\x48\xb5\xba\x4d\xdc\xc5\x69\x89\x14\x09\x80\x00\x08\xe0\xa7\x5a\xf3\x6f\xed\xbc\xb1\xcd\x2f\x85\x6a\x8d\xbe\x0f\xba\x59\xff\xcb\xff\xf5\xe6\xff\xef\xff\x6a\xec\xff\xef\xf6\xff\x5c\xe9\xa0\xfe\xcf\x5f\x6e\x4c\x53\xfd\x52\x7c\xec\x7c\xb0\xab\x6f\xda\xdb\xce\x95\xfa\x5c\x5f\x9b\xc6\x04\x63\x9b\xbf\xac\x74\x50\x95\x0a\xea\x97\xbf\x14\x45\xe9\xb4\x5a\xff\xf1\xbb\x59\x69\x1f\xd4\xaa\xfd\xa5\x68\xba\xba\xfe\x4b\x51\xd4\xea\x4a\xd7\x7e\xfd\x9b\xa2\x50\x6d\xfb\x4b\x71\xd3\x5d\xe9\xea\xea\x2f\x45\xd1\xa8\x95\xfe\xa5\xa8\xac\x5b\xa9\x26\xac\x5f\x74\xa5\xbc\xf6\x7f\x1d\xfe\xff\xaf\xa5\x5d\xfd\xc5\xb7\xba\x5c\x3f\xa9\xaa\xaa\x1f\x52\xd5\x17\xce\x34\x41\xbb\x8f\xb6\xee\x56\x4d\xff\xd6\xb3\xe2\xff\xba\xfc\xfa\xfb\x85\x0a\xcb\x5f\x8a\xbf\xfa\xa0\x42\xe7\xff\xda\x2e\x95\xd7\xfd\x88\xc3\x18\x97\xfd\x9f\xfb\x3f\x84\x87\x56\xff\x52\xf8\xe0\x4c\xb3\xf8\xf9\xe9\xf1\x83\xfe\xfa\xec\x6b\x76\xde\xf5\x61\xa1\x77\x5e\x54\xa9\xb0\xfe\xe7\xc2\xd9\x6e\xf3\x69\xfd\xd4\x87\x9f\x3f\x7e\x77\xa9\x82\x5e\x58\x67\xc6\x7f\x9f\xad\x9f\x53\x3e\x58\xa7\x1f\xff\xbd\x59\x94\xf5\x3f\x54\xdb\xfa\xd2\x56\xe3\xff\xa9\x7e\x1d\x8b\x62\xd8\x8e\xf3\x61\xbd\xce\x1f\xd7\xab\xff\x9f\xda\xf8\xf0\xaf\x97\xfe\xf7\x8b\xf1\xa1\xff\x45\x5b\x77\x4e\xd5\xcf\x57\xbb\xff\x4f\xbf\xb4\x2e\xfc\xbe\x9d\xee\x59\x51\xb9\x55\x33\xfc\x97\x69\x16\x5d\xad\xdc\xb3\x27\xff\x52\x14\xad\xd3\x5e\xbb\x5b\xfd\xa3\xb9\x69\xec\x5d\xf3\xab\xd1\x75\xe5\x7f\x29\xae\x55\xdd\xff\xb7\x2f\xed\x7a\x85\xfa\xf7\xb6\xaa\xd4\xd5\xfa\x6f\xdd\x95\x7b\x64\xa4\xc7\xb1\x86\x1d\xfb\xa5\xf8\x7f\xfe\xdf\xbf\x14\xc5\xad\xaa\x4d\xd5\xaf\xfc\xf0\x9f\xb6\xd5\xcd\x87\x8b\xcf\xff\xfe\xfb\x65\xb9\xd4\x2b\x35\xfc\x71\x3d\xb0\x6d\xb5\x0b\x9b\xe5\x1c\x58\x6b\xc3\xd4\x9b\xbf\x3d\xdb\xed\x81\xfa\x75\xdc\xf7\xa3\x5d\xe6\x7e\xfa\x43\x7b\xf5\x7f\xeb\x32\x6c\xfe\x3c\xf2\xe8\x48\x2f\x4d\xae\xff\x16\x67\x16\xa6\x79\xfa\xb7\xd7\x7f\xfd\xda\x14\x28\xcf\xf5\xcb\xd1\x34\x36\xf4\x2b\xf9\xca\x0f\x9e\x0a\xd5\xdb\x2f\x2b\x5e\x5b\xa4\x97\x7e\xf2\xd3\xf2\xec\xd2\x42\x37\xda\xa9\xa0\xd7\x2c\xf1\xda\x48\x7b\xc7\xd9\xd5\x27\x73\xf8\xa8\x46\xf2\x31\xcd\x28\x1c\xec\x37\xd8\xbb\x46\xbb\x6f\xfa\x5a\x3b\xdd\x94\xaf\x7f\xab\x09\x7a\xf5\xc6\x42\xec\x63\xa7\x81\x5e\x96\x31\xc6\xa4\x07\xba\xaa\x6d\x79\xf3\x75\x3d\xff\x73\x5d\xeb\x40\x7c\xed\x95\xb5\xb5\x56\xcd\x1b\xbf\x2c\x6d\x13\x9c\xad\x6b\xed\xe2\xbc\xef\x67\x7d\xf1\xda\x9b\xf6\x7e\xf0\x5b\xac\x02\xbd\xa8\x33\x31\x26\xe4\xf4\x9f\x9d\x71\xfa\x8d\x57\x9d\xed\x6c\xf9\x1b\x3f\x5a\x2f\xd0\x1b\xff\xbd\xfe\xec\x37\xfe\xbb\x33\xaf\x3f\xbc\x57\xfa\xc6\x9f\x28\xe7\xd4\xc3\x0b\xbf\x78\xf3\x05\x3f\xab\xee\x91\xf6\x49\x83\xae\x95\x0f\xa6\xf4\x5a\xb9\x72\xf9\xda\xea\x51\x44\x4a\x75\x61\x79\x51\x77\x2f\x9c\x0b\xcf\xbf\x61\xcf\x66\x5e\xa9\xf2\xa6\x6b\xd7\xe7\x64\xd5\xd5\x6f\x72\x19\x4d\xd6\x8b\x42\xfd\xa7\x73\x7b\xd8\x95\xfe\xb2\xe2\x51\x2e\x95\x69\xf6\x89\xe5\x40\x44\x49\x18\x68\xa5\xee\x3f\xda\xa6\xd1\xe5\x9b\x07\xde\x2e\x5d\xaf\xad\x99\xf0\x4b\x61\x9a\xf0\xdf\xff\x45\x9e\xce\xda\xf6\x5c\x68\xb7\xf7\xf7\xad\xd3\xd7\xe6\x3e\xf2\x67\x12\x64\x61\xa0\xab\xbf\xc5\xdc\xb5\xab\xae\xbc\xd1\x21\x6f\xd9\x4f\xef\x8d\xbb\x65\xa5\xb3\xcd\xa7\xfb\xb5\x41\xbd\xff\x74\x05\x66\xb0\x28\xf7\xae\x6c\x66\x85\x67\x74\x58\x56\xa8\x6d\xa9\xea\x98\xbb\xa6\xee\xfc\xa7\xe1\xc0\xfa\xc7\xda\xe0\xba\x5c\x7b\x9d\x94\x8f\x43\xc6\x58\xd3\xb5\xff\xbe\xfe\x46\xd2\x6f\x41\x0e\xe9\xa7\xa3\x5c\x30\xfb\x8d\xc4\x9d\xf9\x6c\x99\xe4\xef\x7f\x83\x66\x45\x65\x94\xa2\x37\xa2\x54\xf5\xb5\xa9\x1f\xb0\xef\xde\x6f\x74\x6e\xe9\xd6\xd6\xdd\x4a\x7f\x3e\x4f\xb4\xb2\xfb\xad\xc0\x2d\x9d\x6d\x26\x43\x16\x0e\x02\xc7\x17\xa3\xb1\x71\x6e\xfc\x4d\x0a\xce\x2c\x55\xb9\x34\xcd\xe2\x37\x5b\xa5\x63\xcf\xca\xf8\x9b\xb7\xfc\xda\x28\x03\xfc\xf8\xf6\x39\xd9\xfb\x13\x8b\xef\x7e\x27\x4a\xf0\xf2\xd4\x42\x88\xc9\xc8\xc8\x0a\xe4\x1f\xff\xf8\xf6\x39\x89\x3c\xfd\x6a\xde\xf6\x04\x46\x42\xe5\x29\xbd\xce\xf3\xba\x74\x3a\x24\x95\x27\xbf\x54\xee\xcd\x48\x94\x70\x04\x8c\x67\xb6\x1f\x4c\xfb\xf9\x38\xf9\xd8\x7c\x53\xea\x76\x79\x4d\x62\x03\x94\x69\x56\xb6\x31\xc1\x3a\xe2\xaf\xf7\x46\xac\x7e\x26\x78\xff\xf7\x45\x0e\x9e\x53\xab\xc2\xab\xde\xbe\x78\x3a\x53\xc9\x14\x55\x27\x14\x2c\x99\xea\x87\xf8\xa6\xaf\xa9\x23\xa0\x4c\x54\x90\xa2\x68\x4f\x89\xcd\x19\x44\x91\x59\x53\xe7\x69\x51\x0d\xc6\x7c\x30\x3d\x32\x4a\x59\x74\xbd\x60\x9a\x8a\xf6\x89\x33\x73\x1b\xa6\x92\xab\x77\xc8\xf4\xef\xc2\x31\x29\x6d\x73\x6d\x16\xbf\xa9\x36\x05\xef\x57\xfa\x5a\x75\x75\x40\x1c\x93\x69\xbc\x5a\xe8\xf0\x05\x4f\x6a\x0e\xfb\x17\xc5\x8d\x26\x8b\xf0\x40\x0c\x09\x28\x7a\x33\x85\xbe\x17\x03\x71\x76\x64\x77\x8a\xc8\xbe\x0c\x84\x18\x22\xbb\x23\x81\x8b\x81\x08\xe0\x40\x67\xeb\x6d\x02\x7e\xbd\xfe\x10\xd0\xc2\x03\xf4\x13\x6e\xe1\x21\x5a\x16\x5e\x52\xdb\x0e\x17\xd3\xa9\x4e\x22\x4c\xad\x79\x93\x44\xa1\x39\x73\x9b\xcc\x12\x4a\x6e\x2b\x34\xb6\xd2\x17\xdd\x55\x6d\xfc\xf2\xf2\xbd\x1e\xea\x53\xc5\x33\x3f\x84\xe0\xcc\x55\x17\xe8\xeb\x85\xa5\x76\xbc\x3c\xcf\x94\x6b\x07\x06\x89\x7a\x49\x89\x2d\xd6\x95\xbd\x6b\xee\x94\xab\x3e\x5c\x90\x02\x85\xd9\x5e\x21\x10\xcf\x5e\xb9\x36\xba\xae\x00\xfd\x21\x19\xab\x00\x72\x73\x5e\x22\xa6\xa9\x54\x8c\x9f\x79\x01\xdb\x23\xa2\x51\x71\xbb\xa4\xe8\x45\x6e\x33\x57\x86\xe9\x04\x99\x1d\x45\xb6\x23\x9f\xd2\x98\xf3\xf9\xeb\xc4\x42\xb1\xc9\x38\x41\xe2\xbc\x5b\x12\xc8\x45\x65\x6e\x8d\xb7\x64\x4b\x28\xca\x98\xe3\x2a\x1f\x81\x28\x8e\x53\x4d\x2f\x89\x1c\x27\x66\x5e\x6e\x09\x34\x80\x5e\xb5\xe1\xe1\xdc\x24\x89\xd4\xad\x74\x65\xba\x55\xba\xe0\xb1\xf9\x8f\xfe\x62\x56\x86\x94\x60\xc2\x18\x01\x5a\xc7\xeb\x17\x13\x03\x7f\xa6\x99\xc5\x3a\xeb\xee\xdd\x25\x47\x04\xe5\x16\x3a\xfc\xf1\xc7\xef\x47\x7c\xaf\x74\x77\x67\xaa\xa3\x9d\x3e\x26\x55\xb5\xbe\xff\x77\xef\xfe\xe5\xe0\xc3\xcf\x34\x84\x87\x4e\xc6\x1b\xce\x37\x2f\x27\x1d\x68\xb8\xae\x6d\x79\x93\xe6\x42\xb0\x2f\x8d\x4b\x9c\xfc\xf1\x38\xc6\x8f\x1f\xc9\x6e\xaf\xa0\xd5\x5c\x94\xfa\x62\xed\xbc\xfb\xa0\x9b\x90\x2a\x0b\xee\x7d\xe6\x67\xb6\x55\x52\x46\x9a\x57\xe6\xd9\xf0\xb1\xd1\xb9\xd3\x84\x6f\xba\xb5\x49\x64\xdd\x38\x5d\x06\xeb\xc0\xf5\x83\x36\xa8\xb5\xde\x24\x1e\xe2\xd6\x20\x81\xb7\xa4\xf7\xe0\xdb\xef\x8d\xce\x06\x75\xe7\x83\x76\x69\xb2\xc3\x74\x53\xb5\xd6\x34\x81\x7c\x30\x33\xf4\xd3\x11\x67\x6f\x61\x3c\xb0\x59\x4c\x9a\xd2\xa0\x45\x3b\x20\x5e\x59\x5a\x1f\xa8\x51\x61\x94\x55\x92\x6e\x64\x48\x77\x44\x82\xaa\x3c\xc1\xae\x18\x9f\xe8\xda\xb7\x5c\xaa\xf6\x43\x17\x96\xe7\xc6\x97\xf6\x56\xa3\xba\x16\xb1\xf9\xc7\xa1\x2e\x69\xa5\x52\xfc\x81\x12\x9b\x4b\x7d\x13\x0d\x15\x2c\x14\x9a\xc6\x47\xf9\x33\xd5\xa9\xf4\xc8\x4d\x9f\x9b\xf5\x91\xf0\x46\x01\xbb\x78\x98\xd9\x05\xb5\x5a\xeb\x82\x7a\xbd\x03\xc1\xcf\x34\xb7\x80\x4d\x76\xcc\x13\xc6\x3c\x86\x70\xe4\x45\xcf\x21\xb3\x38\x46\xcc\x9f\x94\x1d\x3b\x5b\x4b\x19\xe9\x77\xbb\x1f\x18\xfb\x78\x5a\xd9\xae\x21\x5b\x0d\xd0\xaa\x35\x69\x8c\xd6\xa3\x36\x29\xd7\x52\xea\xd2\xc5\x4b\x93\x58\x3b\x67\x8f\x73\x8e\xcd\x79\xed\x26\xf8\x32\x44\xa7\x3f\xd6\xca\x90\x2e\xba\x60\x43\x69\xfd\xe2\x77\x14\x90\xd8\x7c\x6f\xf4\x1d\x5b\xda\x60\x9b\xe3\x0f\x9a\x55\x33\x49\x9f\x5f\x4f\x24\xfa\x1e\x59\x17\xee\xac\x4b\x78\xe3\x73\xf4\xb5\x23\xef\xa2\x84\xa2\x75\x76\xfd\x3b\xda\x34\x4e\x26\x25\xf1\x49\x97\xbb\xfd\x34\x49\x52\x22\x54\xcc\x22\x1d\xac\xc0\xbf\x4a\xf8\x98\x64\xa6\x03\xc1\x55\x26\x5b\x12\x24\x6e\x0d\x84\x67\x0c\x6e\x89\x9f\x3b\xb8\x25\x6e\x16\xe1\x96\xf0\x7c\xc2\x9f\x47\x67\x2f\x1f\x2f\x11\x6d\x20\xac\x6a\x65\xf7\x39\x28\x51\x6c\x4b\xcc\x94\xd2\xdd\x87\xe9\xde\xfe\x96\x50\x87\x79\x77\x3c\xd6\xc6\xa0\x15\x2f\x3f\x0f\x8a\x9c\xa4\x4f\x9f\x84\xd7\x16\x4c\x9c\xdf\xd2\xfb\xd1\x8d\xbc\x8c\xf6\x78\xe3\x17\xc2\x2c\xf7\x2d\x89\x55\x75\x21\xcb\x7c\x8f\x3a\x13\x89\xe6\x2b\x04\x79\xf1\x5b\x12\xa9\xb3\x22\x9f\x7c\x52\x1e\x90\x65\xd7\x6f\x29\x86\x80\x0a\x33\xee\xb7\x14\x45\x46\xd9\x59\xf8\x91\xe7\xc1\xcf\xcc\x8f\x3a\x11\xb9\xaa\x60\xe5\xed\x6f\x49\xa8\x29\x64\x46\xde\x31\x19\x6b\xcc\x41\x87\x7b\x97\x6c\xc0\xbc\x4c\xd9\xb9\x3b\xd2\x23\x2e\x3b\x77\xfb\x29\x3b\x77\xaf\x93\xd7\xee\xd6\x94\xfa\x43\x59\xda\xae\x09\xdf\xed\x8d\x06\xdd\x07\x41\x59\x6e\x57\x19\xdd\x4c\x5a\x93\x57\x14\xfa\xbe\x35\xae\x07\x7f\xb8\xd4\xa5\x6d\xe8\xc5\x25\x5b\x42\x3b\xec\x3e\x25\x89\xb6\xe1\xe9\x99\xc9\x2b\x18\x61\xed\xc0\xe2\xdd\xe4\xc5\x85\x60\x97\xc2\x21\xa6\x1d\xfb\x82\xe0\xcf\xce\x5e\x3d\x84\x24\x37\x44\x03\x30\xcf\xf1\x5e\x10\x39\xbd\x30\x3e\x24\x4c\x5e\x0e\xba\x51\x4d\xaa\x92\xcb\xa4\x8d\xf1\xc6\xdb\xb3\x59\xdc\x9d\x8d\xfb\x04\x5c\xb4\xc5\x96\x22\x77\x95\xe4\x82\x2d\x75\x1e\xe4\x4a\x2d\x12\x76\x1d\xd6\x0f\xeb\xdf\x26\x7b\xff\x09\x34\x35\xb5\x36\x55\xa6\x5a\xce\x34\x7c\x0f\x1d\x47\x7b\x01\x26\xfd\x32\x55\x6f\x52\x5f\xaa\x5a\x7f\xfe\x7a\x84\xca\x6f\xa1\x82\xbe\x53\xe9\x0e\xf7\xd6\xd9\x30\xc0\x6a\x9c\xdb\x95\x7a\x1b\x65\x48\x34\x50\x16\xf4\x64\x82\xee\x7d\xfd\xa9\x51\x57\x35\xdd\x45\x61\x2c\x6e\xb0\x4e\x2d\x74\x52\x80\x84\xc7\x31\x2e\x52\x9e\x37\xfe\xc1\x07\x9d\xae\x43\xc9\x60\xb7\xcd\xa6\x67\xfc\xa3\xf6\xa0\x79\x6e\xa3\xf8\xd0\x7e\xdd\xaf\x63\x74\x3d\x4d\x8e\x4e\x9f\x4c\x12\xd8\xfc\xfa\xd2\xe5\x3e\xba\x5b\xca\x7d\x74\x13\x39\x15\xa9\x5b\xdd\x4e\x00\x10\x82\x69\xb6\xe1\x6c\xb3\x49\xaa\x4c\x8e\x3e\xc9\xf9\xdd\x9a\x6e\xc9\xed\x85\xdd\x21\xde\x84\x11\x16\x8e\x83\x09\x43\x77\x95\xa4\x88\xeb\xd6\xb7\x4b\xed\xf4\xd1\x56\x13\x6c\x0c\xe0\xda\x94\x0f\xc9\x52\xfe\x7f\x1a\x67\x02\xe6\x43\x72\xe0\x26\xa8\x5f\x20\x26\xb2\x01\x2c\x4d\xfe\x69\x6b\xab\xef\x7a\xd5\xd6\x6a\xff\x5d\x06\x8a\x9b\x4b\xc1\xb3\xc6\xdf\x5c\xd0\x90\xe2\x9f\x3d\x32\xf3\xde\x63\x58\xd5\xe9\x1b\x28\xfb\x3f\x53\x5e\x5b\xf0\x28\x78\x05\x60\xfb\x67\x82\xd7\xf5\xfa\xda\x34\x26\x90\x6d\x16\x96\x41\x61\x2b\xfd\x01\x1c\x87\x3b\x56\xf1\x88\x3a\xab\x9d\xd3\xd5\x79\xb7\xde\xbd\x47\x24\x6f\xd3\x2c\x3e\x2f\x1a\xbb\xf9\xf3\xa7\x7b\x5d\x76\x48\x97\xad\x91\x98\x59\x57\xb2\x9c\xab\xe1\x9b\x78\xf9\x0f\xf2\xd1\x8b\x1e\x5b\x38\x94\xcb\x2d\xb2\xb2\x20\xb3\x95\x9d\xb6\x36\x52\x8c\xf4\xda\x42\x96\xc6\x36\x52\x94\xa4\xd6\xa2\x77\xf4\xb4\x53\x41\x96\x61\x1b\x75\x42\xb7\xaa\xee\xa4\x0b\x1c\x61\xaf\x07\x8a\xf6\x55\x92\xc4\xb0\x5d\x92\x26\x00\x17\x82\x84\xba\xed\xf3\x23\xd3\x08\x5e\x22\x2e\x39\x28\xa2\xac\x69\xaf\x5d\xfa\xb4\xfb\xac\x58\x7a\xca\x8a\xe5\x6d\xca\x8a\xe5\x75\xca\x8a\x25\xd2\x24\xee\xb4\x59\x2c\xc1\x2a\x80\x91\xe4\xb9\xe6\xb2\x4c\x73\x3e\x23\x9d\xed\x58\x9b\x8c\x87\x87\x45\x83\x1f\x14\x6c\x15\x97\x4b\xc6\x25\x4a\xe3\x27\x48\x0e\x93\xb5\xcb\x74\xa9\xeb\xbe\xa3\xeb\x77\xed\x78\x9a\x4e\xa0\x22\xb3\xbb\xf0\x02\xe5\x53\xfd\x0d\xca\xa7\xfa\x5b\x94\x4f\xf5\xe7\x2f\xc9\xee\xc2\x48\x59\xb1\xbc\x41\x59\xb1\xbc\x45\x59\xb1\x3c\x7f\xc9\xc1\xdc\x05\xfe\xf0\xdc\x6d\x3c\x7b\x6e\x29\xb2\x6c\x67\xf8\x93\x59\x8f\xb5\xb6\xca\xf7\x00\xc2\x7b\x80\xed\x12\xae\x77\xfb\x50\xd6\x7d\xad\xae\x74\x3d\xb2\x1d\x5f\xf7\xc4\x39\x40\xe3\xb9\x1a\x45\xac\x93\x22\x96\x65\x50\xc4\xb1\x0e\x8a\xb8\x47\x57\x3c\x2b\x21\xfa\xc4\xe2\x58\x0b\x45\x3c\x8b\xa1\x88\xfd\x85\xb1\x2c\x87\x22\x92\xf5\x50\x44\xb0\x20\x8a\x58\x56\x44\x11\xcb\x92\x28\xa2\xad\x73\xaf\x9d\xbe\xac\xf5\xa5\x90\x9b\x64\xf9\x0c\x2f\x53\x34\xce\x8c\x68\xbe\x89\x5e\xd2\x8c\xf9\x7b\x87\xf4\x0b\xa3\xac\xaa\x9c\xfb\x82\x6d\x6d\x6d\x17\x0f\xff\x92\x1c\x20\x11\x7a\x6a\x49\x74\xcc\xd9\xee\x57\xe4\x2b\x00\x8c\x44\x57\x00\x4f\x0d\xcd\x7c\x0f\x70\x5c\x7e\x42\x04\x03\x3d\xdf\x01\xbc\x40\x39\x54\xf7\x06\xe5\x50\xdd\x5b\x94\x43\x75\xcf\x5f\x22\xbe\x03\x90\x1a\xd6\xb1\x8d\xea\x88\xa6\x9f\x60\x81\x85\x2f\x90\x1a\xd1\x22\x09\x16\xaf\xa0\x8c\xb3\xc4\x46\xb3\x68\xfe\x12\x8b\x4d\x62\x28\x4f\x6e\x74\xb1\xe3\xc7\x4d\x30\x39\x86\x9c\x63\xc8\x31\x27\x52\xe4\x18\x32\x91\x72\x0c\x19\xa3\x1c\x43\xa6\x53\x8e\x21\xbf\x4e\x39\x86\x3c\xe5\x4b\x72\x0c\x79\xe7\x0d\x39\x86\x9c\x63\xc8\x39\x86\xbc\x9f\x72\x0c\x39\xfe\x04\x8a\x1c\x43\x7e\x85\x72\x0c\xf9\x6d\xca\x31\xe4\xd7\x29\xc7\x90\xb7\x94\x63\xc8\xa9\x5e\x90\x63\xc8\x39\x86\x0c\x3e\x3a\x41\x0c\x19\x7e\x44\xb9\xc5\x11\xb7\x24\xd7\xcd\x6d\xa2\xc9\xf3\x6c\x21\x1c\x5a\x87\x29\x09\xbd\x15\x31\xdd\x48\xbf\x3a\x0b\x86\xd1\xf9\xb6\xe4\x06\x79\xfa\x5f\xfa\x81\x05\x51\x28\x33\x63\xd9\xc6\xab\x50\x27\xf3\x50\x99\x22\x0c\xcc\x47\x67\x2a\x58\x3d\x1e\x77\x49\xa2\xca\x39\x46\x9e\x40\x85\xf3\x31\x6d\x65\xfc\x28\xc5\xb1\x15\x72\x87\x10\xbb\xf6\x60\x07\x3d\x1f\xa9\x56\xc0\x23\x72\x78\x55\x19\xaf\x44\x80\x54\x15\xb2\x8b\x08\x46\x55\x38\xb6\x0c\x3a\xf5\x60\x9c\xca\x06\x4a\x15\x30\xea\xd0\x67\x37\x1f\xb0\x93\x0c\x9c\x0f\xd8\x54\x0f\x72\xda\xa5\xaf\xd9\x00\x74\x61\x92\x36\x40\xef\x41\x71\x2e\xba\xba\xbe\xec\x65\x72\x5e\x10\x00\x13\xf9\x33\x53\x2c\x73\x63\xc2\xc7\xf1\x78\x9c\xd7\x22\x23\x2e\x38\x6b\x5a\x03\xb1\xb5\x18\x2f\x78\x51\xda\xd5\x4a\x35\xa0\xe2\x39\x86\x0f\x03\x62\x0e\x03\xb1\x3e\x4a\xd4\x5c\x89\x79\xd2\x89\xce\x39\x46\x44\x22\xd6\xa8\x78\x74\x62\x20\xe9\x7d\x97\x38\x52\x11\x67\x1a\x85\xfc\xca\x2d\x4a\x44\x9e\x6f\x60\x45\x9c\x84\xcc\xd8\xda\x9d\x08\xd7\xe4\x1a\x48\x7a\x91\x25\xb9\xc4\x12\x5f\x8d\xf0\x63\x1d\x03\xc5\xe0\x68\x69\xdc\x63\xa0\x28\x3c\x25\x8c\x81\x44\x9b\x89\x9c\xa7\xf8\x51\x91\x81\xc4\x9c\x25\x8f\x90\x0c\x14\x83\xc3\x22\x44\x4b\x06\x8a\xc2\x64\xa2\xc8\x49\xc4\x79\xc8\xa2\x28\xd1\x26\x22\xe7\x75\x76\x5c\x65\x20\x31\xab\xcb\x62\x2c\x03\x65\xd3\x20\xe2\x24\xb2\x69\x10\xa9\x01\x18\x33\x36\xce\xee\x00\x86\x44\x6c\x06\x12\x86\xa1\x18\x2e\x21\xee\x83\x4c\xee\x16\x6e\xdc\x15\xa6\x42\x92\x2a\x23\x89\x12\x10\x2b\x00\xa9\xf0\x4b\x05\x5f\x24\x78\xad\xd3\xd7\xe6\x7e\x72\xe7\x1a\x46\xe3\xdb\xa5\xcc\x2d\x87\xe1\x96\x89\x55\x5f\x1f\xbe\x9e\x24\x11\x65\x13\x28\x1f\xe0\xea\x26\x19\xb3\x36\xd7\xba\x7c\x28\x6b\xf0\x0b\xf9\xbc\xdf\x5a\x1f\x2e\x83\x72\x8c\x62\x0a\x99\xc0\xe9\x7b\x1a\xfe\x56\xec\x71\x0b\x6e\xa8\x78\x97\x4e\xa3\x18\x49\x68\x9b\x2d\x43\x68\xff\x49\x03\xcd\x7e\x4e\xf2\x4d\x5c\x5a\xcf\x1c\xbb\x88\xb3\x01\xeb\xef\xff\x1f\xad\x2a\xe0\x7a\xe7\x39\xcd\xa6\x86\x42\xea\x31\x15\xd1\x6b\x16\x66\x32\x9b\x38\x15\x02\x0c\x9f\xe2\xe9\x0b\xfa\x25\x11\x6b\x9c\x83\xd7\x07\xe0\xb8\xe6\xcf\xc7\x17\x6d\x69\x6b\x39\x67\xdd\x48\xaa\x79\xf8\xca\x0e\xae\xf4\xf9\xe0\xa2\xda\xc1\x9f\xdf\x23\x64\xee\xfb\xb3\x9b\xee\x4a\xbb\x46\x07\xed\xcf\x4c\x13\xce\xac\x3b\x1b\x5e\xf9\x4b\x11\x1c\x9b\xdd\x7c\xb9\xd4\x12\x65\x72\xf0\xea\xd6\x35\x8f\x1c\xe2\x44\x0d\x65\x7b\x69\xcb\x9b\x77\x7c\xa6\x66\xe9\xdc\x52\x12\xe9\x3c\x4e\xd1\x10\x3c\xdc\x3a\x7d\x19\x6c\x9b\xdd\x1b\x80\xb2\x7b\x93\xdd\x9b\xec\xde\x3c\xa3\xec\xde\xbc\x42\xd9\xbd\x19\x29\xbb\x37\xa7\x6e\x40\x65\xf7\x26\xbb\x37\x59\x3a\xe7\x2a\x9d\xc7\x29\x1a\xd3\x16\xb1\x14\x45\x6d\x6e\x75\xa3\xbd\xbf\x70\xf6\x6a\xb2\x9b\x26\x9e\x47\x24\xad\x4f\x14\x78\x42\xc7\xdb\x30\x43\x52\x75\xac\x4c\xdd\x39\xfd\x7d\xe9\xb4\x5f\xda\x9a\xb1\x74\xb2\xfe\x6a\x12\x15\xc5\xf6\xd8\x64\x4c\xc6\x3f\x55\x84\x4c\x22\xf6\xd0\x44\x1c\x1e\xc3\x33\x9b\x45\x9a\x9e\xd8\x1b\x9b\x45\xf6\xa9\xc0\x03\x93\x79\x5f\x91\xfa\x22\x71\xbd\x2e\xbe\xc7\x25\xdc\x36\xbe\x2d\x27\xb0\xe3\x62\xd8\x70\x11\xec\xb7\x04\xb6\x9b\xc4\xab\x3a\x58\x29\x3d\xcb\x5c\x14\x08\x8c\x69\x4c\x30\xaa\x3e\xd7\xb5\x7a\xb8\xd4\xa5\x6d\x38\x68\xdd\x87\x3b\xa0\x5b\xed\x8c\xad\x8e\x70\xe2\xbe\x2b\x4b\xed\xfd\x51\x5a\x45\x02\xaf\xfb\x48\xed\xa2\xac\x99\x23\x6a\xe6\x63\x52\x8f\xc1\xac\xb4\xed\xc2\xd1\x29\x18\xe6\x27\x4f\xd6\xfc\x6d\xbd\x8f\x53\x74\x0c\x10\x16\x1b\x0c\xc5\x75\x17\x4c\xe9\x97\xf6\x05\x97\x89\xff\x5a\x59\x7e\xbe\x98\x3c\xe3\x7e\x3d\xec\x71\x2e\xd8\x41\x7a\x0e\xb4\xce\x06\x5b\x5a\x56\x9a\xbe\x60\x60\x7e\x29\xd3\x13\xa9\x40\xb5\xe9\xb4\x89\xfd\x4e\xab\xca\xe4\xa8\xe4\x3e\xca\x51\xc9\x23\xb3\xbf\x73\x54\x12\xa4\x1c\x95\x2c\x72\x54\x32\x47\x25\xb3\xef\x8b\x52\x8e\x4a\x16\x39\x2a\x99\xa3\x92\x00\xe5\xa8\x24\x40\x59\x33\xcf\x47\x33\x1f\x93\x7a\x7c\x67\x51\xc9\xb1\x0d\x12\x8c\x0b\xcd\x95\xea\xda\xac\x0c\x1a\x9e\x2c\x22\xa2\x0c\x89\xa4\x43\xd8\xe0\x46\xfb\xf7\xf7\xe5\xcc\x07\xbd\x2e\x3b\x67\xc2\xc3\x47\xdb\x04\x7d\x0f\xaa\x62\x3e\x77\xaa\xba\xb6\x77\x17\xce\xdc\x9a\x5a\x2f\xf4\x27\x5f\xaa\x5a\x71\x00\x0b\x65\x3d\x3e\x4a\xd5\xaa\x2b\x53\x1b\xde\x4e\x0b\x01\x25\xaa\x77\x17\xea\x2a\x8a\xca\x71\x6a\xce\x8a\xa3\xfe\x6a\x51\x95\xde\xa3\x80\x30\x58\x45\x22\x17\xad\xb3\xe5\x6f\xb6\x6b\x18\x96\x99\x28\x9e\xaf\xaa\xaf\x4d\xfd\xf0\xcd\xda\xf0\xab\xa9\xb5\x7f\xf0\x41\x33\x3a\x0a\x4b\xbe\xdc\x75\xcd\x07\xff\x4f\x67\x3b\x06\x9b\xee\x58\x24\xff\xfd\x5f\x93\xba\x0d\xfd\xac\x7f\xb7\xcd\x7a\xe5\x0e\xb0\x5e\x3f\xbc\x66\x34\xcc\x3c\xdc\x72\x79\xfd\xc5\x34\xdd\xfd\xd7\xbe\xbb\xd4\xf4\x70\xb7\xfa\x56\x8b\x40\x28\xf8\xc8\x2c\x16\xed\xa0\x14\x69\xe0\xfe\xf1\x43\x0c\xdc\xb1\x38\x53\x3c\xb0\x40\xe5\xdf\x99\xa6\xb2\x77\xfe\x40\xbc\xb9\x58\x79\xf5\xd1\xe9\x4a\x37\xc1\xa8\xfa\xb2\xe5\x56\x6b\x0b\xb7\xed\xf9\x34\x0e\x86\xa4\xb4\x51\x70\x07\x9a\xc1\xe4\xfe\x40\x50\x2e\x74\x6d\xbe\x6d\x7e\x8b\xde\xa5\x31\x9a\x6f\x9b\x61\xca\xb7\xcd\xf9\xb6\x39\xdf\x36\xe7\xdb\x66\x32\xe5\x3b\x8d\x17\x28\xdf\x36\x13\x28\xdf\x36\xe7\xdb\xe6\x7c\xdb\xbc\x8f\xb2\x66\xce\xb7\xcd\x47\xa5\x60\xd8\x5e\x7c\x65\xc0\xbb\x34\x6e\x14\xb8\x1f\xea\x6b\x83\x22\x15\x71\x87\x0b\xda\xad\x4c\xd3\xdf\x15\xfe\xa6\xbd\x57\x0b\x8d\x23\x82\x31\x45\xe9\x85\xa1\xa7\x6b\x81\x1f\x02\x6b\x1c\x7c\x81\x6f\x6d\xdd\xad\xf4\xb9\xbe\x35\x70\xb2\xc2\xe4\xd5\x4d\x55\x3f\x4b\x2e\x24\x9c\x48\xa3\x1e\xa0\xd0\x86\x5f\xef\xb2\x5d\x27\xf8\xd1\xf9\xa3\xfe\x0c\x0c\xdb\x5f\x57\xce\x9d\x5f\x57\xeb\x49\x1e\x84\x5d\x87\x91\x9d\x6d\xd5\x82\x99\x67\x71\x7c\xf2\xb2\xbd\x51\xe6\x0f\xcc\xc5\x8e\xf1\xdd\xd5\x41\xf6\xf9\x71\xdc\x4f\xf7\x2d\xeb\xde\xeb\x20\xda\x69\x23\x15\x27\xa8\x9c\xee\xac\xbb\x31\xcd\xe2\xdc\x80\xdb\xc1\xda\x88\x53\xc0\xe1\x87\xa1\x7e\x38\xfa\x98\x05\xef\xc3\x55\xfc\x9c\xdb\x2d\x59\xc9\x37\xfb\x66\x4b\x10\xf5\x8f\x91\x21\xc0\x8a\xf4\xb2\x05\x9a\x79\x27\x24\xd9\x1a\x6e\xdc\x43\x56\xcc\x2e\xbb\x0b\x12\xf0\x84\xfc\x1e\x48\x76\x0b\x14\xe1\xf6\x45\x78\x03\x24\x9e\x81\xb4\x73\x27\xfb\xee\x47\x72\xf3\x23\xbc\xf7\x91\xdc\xfa\x70\xef\x7c\x64\xfd\x0f\x98\x51\x45\x76\x4c\x51\x1e\x51\x14\xc7\x13\xa3\x47\x13\xf9\xb7\x3c\x07\x31\x5a\x19\x01\x4c\xbe\xe9\xc9\x8d\xd3\x1f\xdd\x59\x95\x25\x49\x2c\x49\xc7\xc0\xd2\xac\xc7\x18\x90\x35\xd9\x64\x7f\x8b\xb2\xc9\x4e\x19\x32\x9b\xec\x18\x65\x93\x3d\x9b\xec\x10\x65\x93\x1d\x7b\xc3\x5c\x0c\x8d\x6c\xb2\xbf\xf5\x60\x36\xd9\xf7\x50\x96\xa4\x0d\x1d\x03\x4b\xb3\x43\xff\xc0\x23\x2c\x00\x16\x8e\xc0\xa0\xf6\x3d\x57\x28\x99\x76\x3d\xd3\x7e\x13\x30\x35\xef\xfc\x66\xb1\x92\xa4\x8c\x84\x9b\x85\xc5\x53\x18\x0c\x6f\x83\xcb\x28\x1c\xcd\xcd\xde\x6e\x81\x77\xc1\xe4\x4c\x99\x57\xc1\xf7\x28\x84\x6a\x5e\xe0\x49\x1c\x2c\xef\x9c\xe5\x3d\x70\x3d\x07\x49\x42\x26\xd3\x63\xe0\x78\x0b\xec\xcd\xe0\xd8\x36\x2c\xbb\x46\x66\xd3\x88\xec\x99\xa8\xb6\x0c\xcf\x23\x60\xce\x9e\x23\x26\xb0\xc9\xc4\x62\x71\x61\x31\xc6\xb4\xc7\x1c\xbb\xf4\x62\xda\x69\x4a\x0a\x2d\xa6\x9d\x29\xcb\xf7\x3b\x0a\xcb\x21\xeb\x43\x48\x1f\xce\x57\x41\xf1\xcb\x21\xa6\x14\x25\xf8\xd3\x1a\x5b\xe9\x4b\x5d\xeb\x32\x58\x72\xbe\x9d\xac\xeb\x1b\x83\xd1\xe0\xaf\x6a\x9d\xb1\xce\xd0\xf3\xff\x39\x5b\x84\x6f\xcf\x38\xab\x8f\xb5\xf2\x1e\x69\x8e\x01\x2f\x19\x0f\x02\x21\xc7\x05\x46\xca\x71\x81\xb7\x27\x9a\xe3\x02\x8f\x83\xe5\xb8\x00\x8d\x72\x5c\x60\x0f\xe5\xb8\xc0\x73\x7a\xc7\x76\x70\x8e\x0b\x3c\x52\x8e\x0b\xc4\x9f\x66\x8e\x0b\xbc\x48\x39\x2e\xf0\xfa\xd3\x87\xd6\x87\xf3\x55\x50\x27\x1a\x17\x80\x9b\xef\x73\xa4\x0e\x6f\xb8\x2f\x6f\x38\xcf\x6d\x26\xc0\xe1\x0d\x4e\x63\xfd\x63\xfa\x42\xf8\x91\xb5\x51\x53\x75\x35\xd6\x1a\x14\xfe\x1e\x66\x83\x7e\x0e\x07\x5f\xe3\x9d\xaf\xb9\x4d\x9c\x79\x6a\x9c\xd7\x9d\xfb\x00\x73\x64\xf4\xe2\xe6\xd5\x9b\xb3\xfa\x6f\x4f\xbb\x20\xfc\x6e\xdb\x5c\xdb\x87\xd5\x61\x9b\x6d\x1a\x70\xba\x6a\xb3\x07\xeb\x1f\x9c\x6a\x30\x4e\xf7\xec\x29\x4f\x24\xdf\xb5\x6d\xad\x57\xba\x09\xaa\xee\xb5\x02\xc4\x27\x8c\x98\x15\xbf\x65\x3d\xd7\x6c\xe5\x84\x43\xfc\x83\x2f\x43\x9d\x7a\x2d\xf8\xb1\x3b\x5e\xdc\x4e\x60\xba\x33\xe3\x75\x7c\x8d\xc0\x8a\xd3\x31\x62\x74\x9c\xf8\x9c\x28\xff\x13\x63\x44\x7e\x2f\x7b\x2e\x73\xc9\xfb\xd7\xb3\x37\x3d\x4e\xcf\x7a\x3e\xcf\x49\xfa\xd4\xcf\xd9\xc8\xd6\xee\xd6\x94\xfa\x43\x59\xda\xae\x09\x49\x2d\xed\x60\x6b\xed\x14\xc4\xab\xa0\xde\xe4\xb1\xb5\xbe\xbe\xd6\x25\x18\x5f\x61\xee\xe8\x8d\x9e\xa6\x9b\xdd\x7a\x19\x14\x70\x49\x2f\x1a\x6c\xbb\xaf\xac\xf6\x8f\xd3\x1f\xfa\x8c\xf3\x8a\xb5\x34\xc9\xdb\xf9\x00\x03\x90\x7f\xda\xda\xea\xdf\x7d\xc7\xb7\x8f\xb5\x32\x2b\x8a\x8a\x47\xa4\x4e\xf5\xc1\xe4\xdf\x6c\x45\x13\x51\x40\xfe\xc1\x1d\x42\x16\xba\x52\x41\x5d\xf6\x01\x2e\xca\x54\x50\x25\xa4\x5a\x03\xb9\xdc\x30\x2b\xde\x18\x7a\x2a\x04\xfc\x72\xc4\xd8\x04\x5f\x8e\x98\x79\x67\xfd\x57\x92\x7e\x48\xb4\x02\x21\xe1\x85\x02\xa0\x28\x83\x60\x81\xcf\xf9\xe7\x5b\xa1\x81\xce\xb9\x7f\x11\xf4\x73\x0f\xa4\xcf\xa1\x8c\xb2\x52\xa1\xec\x5b\x13\x6a\xef\x67\x67\x65\x9d\xa4\xe9\xd3\x5b\x12\x53\x74\x45\x95\x05\xb4\x40\xbf\x92\xd3\xe7\xf0\x46\xd3\xdf\x7f\xb6\xd9\xa4\xf9\x98\x52\x8f\xd2\xf3\x45\x5d\x69\x7a\x68\xe7\xb4\x34\x53\xb0\x4e\x2d\x34\x94\x6f\x0a\x7d\xc2\xd8\x48\xb8\x4a\xf5\xea\x04\xb3\x26\xaf\xa0\xd3\xfb\xf3\x01\x10\xc5\xd9\x39\x52\x84\x3d\xc5\xa7\xf8\xbf\xc7\xfc\x90\xab\x8e\x9a\x92\x01\xed\xb8\x6e\xaa\xd6\x1a\x1a\x82\x2e\xf4\xe2\xd6\xe9\x6b\x73\x1f\xfd\xb5\x4e\x2f\x88\x6d\xa1\x93\x6c\xe9\x20\xdb\x97\xba\x74\x9a\x14\xe4\x21\x4f\xe2\xf1\xcd\xdf\x09\xf7\x26\xf4\x77\xde\x99\xeb\xa8\xc2\x54\xda\x26\x28\xd3\xd0\x6e\x5b\x0e\xcf\x2d\xc4\x6d\x25\xfd\xac\x5c\xaf\xd1\xb5\x29\x55\x78\xdc\xfd\xb7\xe6\x4a\x5d\xd3\x4a\x5f\xab\xae\x0e\x14\x55\x8e\xe4\xad\xd0\xe3\x39\x24\x1b\x8a\x68\x68\x61\xe6\x2c\xd9\x8c\x05\x4f\xf7\x15\xf1\x58\xe4\x64\x02\xa1\x71\x32\x7a\xae\x2f\xa8\x02\xa9\x66\x25\xcd\x9c\x3c\xeb\x27\xba\xf7\x67\x70\x90\x6c\xbf\xc9\x68\xdb\xc1\xea\xa3\x69\x3c\x4a\xce\x81\x8f\xad\x99\x69\xca\xc1\x36\xd7\x66\xb1\x3f\xb4\x45\x15\x11\x75\xe7\x3f\xd5\xca\x07\x53\xfe\xa3\xb6\xe5\xcd\x65\xb0\x6e\xef\xf7\x20\xe2\x77\xed\x29\xe7\x4c\x01\x2b\x71\xe5\x82\xa1\xa2\x36\xa0\xe2\x87\x09\x1f\x82\xa8\x80\x65\xb4\x0c\x26\xf2\xe7\xf3\xc8\xab\x47\x15\xea\xb3\xcd\x04\x62\xd9\x34\xea\x3f\x9d\xd3\xe7\xc6\xdf\x44\xb5\x14\x54\xb9\x34\xcd\x22\x89\x93\x52\x19\x7f\x93\xc4\xb1\x5a\xbf\xf8\xc7\xb7\xcf\xd1\xdf\x9b\x48\xdc\xa8\xf1\x68\xf0\x70\x49\x23\x38\x74\xfe\x1e\xb7\x97\xf4\xc3\x1f\xdf\x3e\x47\x95\x83\x5f\xcd\xfe\x24\x29\x44\x0e\xd2\xe9\x21\xfa\x49\x57\xa0\x3c\xe0\x97\xca\xa5\x08\x02\xd0\x79\x60\xfb\x71\xfb\x7f\x3a\x4e\x36\x16\x1f\x94\xba\x5d\x5e\xef\xdd\x5a\x84\x09\x56\xb6\x31\xc1\xd2\xaa\x15\xe7\x71\x53\x47\xb5\x5c\x67\xa1\x5a\x46\x59\xa0\xc8\x2e\x3c\xe9\xe1\xd5\xdf\x34\xa9\x04\x04\x8d\xe8\x27\xbc\xf4\x83\x42\x96\xd4\x04\xca\x24\xb2\x3e\x4a\x47\x34\xf9\x35\x4d\xb5\xff\x73\x66\x60\x2e\xa7\x96\x87\x13\x67\xda\x93\x33\xc4\x07\x2f\xf2\x37\xb5\x37\x83\x01\xd9\x31\x20\xc4\x54\x24\xf7\xca\xc8\x87\x1b\x70\x0a\xe2\xb7\xa8\xd0\x0d\x2a\xe3\x72\x89\x1e\x82\x2a\xd8\x05\x69\x9c\x94\x2d\xac\xf4\x1c\xfe\x70\xec\xb6\x93\x7e\xd3\x49\x0c\x4f\x15\xdc\x6b\x3d\x9a\x45\x44\xd5\x7a\xd0\xb2\x51\xe3\x5f\x05\x78\x02\xd0\x55\x8e\x37\x51\x95\x8d\x33\xb7\x09\x2e\x07\x12\x9d\xbf\x8d\xad\xf4\x45\x77\x55\x1b\xbf\xbc\x7c\x0f\x07\x66\xea\x98\xd8\x87\x10\x9c\xb9\xea\x02\x6d\x5d\xf8\x77\xfe\xe9\xd6\x08\x08\x52\xf4\x9c\x1e\x4b\x0c\x2b\x7b\xd7\xdc\x29\x57\x7d\xb8\xd8\x1b\x7c\xca\x67\xff\x0e\xe1\x67\xff\xb5\xd1\x75\x45\x94\x73\xee\x18\xc5\x90\x8c\xfa\x6f\xed\x3c\x8c\x60\xcc\xcc\x4f\xea\x3f\x6b\x22\x80\x79\x4e\x56\xd3\x66\x7e\xa0\xf9\x01\x25\x2a\xbd\x53\xbb\x6b\x9b\x35\xfb\xeb\x44\xcc\xbd\x49\x03\xc0\x6b\x78\x98\xfc\x5d\x99\x5b\xe3\x27\xca\x45\x1c\x57\x73\xa6\xa2\x34\x4e\x2f\x9d\x24\xa1\x86\xfc\xe1\xcd\x73\xf2\x8b\xf5\xaa\x0d\x0f\x04\x90\x6b\x28\xba\xab\x2b\xd3\xad\xe2\x07\x1e\xcd\x7f\xf4\x17\xb3\x32\xb1\x33\xb3\xc8\x6b\x75\x1d\xb5\x60\x25\x91\x0d\x5f\x77\x27\x7d\xd9\x1c\x94\x5b\xe8\xf0\xc7\x1f\xbf\x1f\xd1\xdd\xc1\xdd\x9d\xa1\x95\xae\xcd\x61\xba\x74\x69\xa8\xf5\xfd\x50\xcf\xf5\x7e\x1d\x66\x4b\x2f\x90\x9e\xa3\x77\x97\x23\xee\xaf\xfd\x7c\xd6\xce\xf1\x75\x6d\xcb\x9b\xb8\x17\x3a\x95\x0a\xca\x27\xba\x3c\x7f\x7c\xf7\x8f\x1f\xd1\x6f\x26\xc8\x2b\xb6\x28\xf5\xc5\xda\xf9\xf4\x41\x37\x21\x76\x66\xcf\xe9\xe7\x8e\xb5\x55\x12\xc6\x38\x7c\x66\xcd\xf0\x61\xd1\xb8\xcc\x84\x6f\xba\xb5\x51\xe5\xd2\xb8\xbe\xa8\x0f\x58\x23\xf2\xe2\xb7\xd6\x9b\x44\xaf\xbe\x35\xd4\x40\x4f\x92\x7b\xc8\xed\xb7\x45\xdb\xda\xba\xf3\x41\xbb\xb8\x59\x30\x63\xa5\x09\xe9\xd0\x03\x75\xc7\x11\x65\xab\xd0\xf7\x75\xb3\x60\xfb\x05\x7b\xbf\x07\x4e\xde\xfb\xa5\xf5\x81\x12\x49\x44\xb6\x3e\xc9\x06\x85\xf8\xc7\x10\xa0\x4a\x23\xae\xb8\xf1\x91\xaf\xe1\xca\xa5\x6a\x3f\x74\x61\x79\x6e\x7c\x69\x6f\x35\xa2\xf3\xa8\xf6\xee\x38\xc4\xe5\x50\x22\x1d\x7f\x80\x44\x66\xc6\xd0\xd9\x3a\x58\x72\xe8\x12\x7b\xfb\x9f\xb1\x4f\x81\x47\xee\xf8\xdc\xac\xd5\xb1\xa2\x05\x25\x8f\x2f\x80\xd2\x5a\x17\x14\xad\x5c\x78\x0e\x41\x83\xec\x48\xbe\xf6\x73\xa2\x1f\x3e\x84\xb5\x2e\xfa\x5d\x3f\x98\x0a\x37\x7f\xee\xdb\x8d\xb3\xb5\x74\xec\xfd\xcd\xee\xc7\xc4\x3a\x12\x9a\xb8\xa6\xd7\x51\x19\x48\x43\x2f\xb5\x03\x26\xa4\x12\xce\xf6\xb3\xc7\x39\xc6\xda\xef\x76\xe3\xae\xef\xf4\x8c\x8a\x6a\x12\xac\x5f\x78\xa2\x6e\xed\xe6\xdb\xa2\xed\xc6\xd2\x06\xdb\x1c\x5f\x08\xa5\x3a\x60\x32\xec\x7a\xf0\x68\xeb\x6f\x5d\xb8\xb3\x2e\x41\xbc\xfd\xe8\x32\xb9\x4f\x2e\xc9\xb9\x75\x76\xfd\x9b\xfd\x43\x1f\x6d\xa2\x13\xd0\xc1\x2c\x69\xaa\x13\x39\x9d\x5c\x32\x48\xc1\x6b\xc4\xc4\xea\xdd\x24\x41\x61\x83\xbb\x66\x0d\xc4\x4c\x21\x19\x08\xcb\x47\xda\x12\x17\xa2\x64\x24\x4e\x8e\xd2\x96\x38\x00\x65\x85\x6c\xa9\xb8\x78\x71\x58\xb7\xac\xf1\x19\x72\xba\xca\x96\x18\xc9\x68\xbb\x0f\xa2\x28\x71\x78\xe3\x71\xe6\xe2\x23\xf9\xe7\x3f\x0f\x86\x22\x40\x30\xd6\x10\x48\x8b\xdd\xd2\xe9\xea\x30\x3c\x77\x35\xce\xb8\x85\x20\x9f\x75\x4b\x22\x55\x5a\xf0\x73\x5c\xa3\xcd\x80\x8f\x6a\xc9\xcb\x80\xdd\x12\x5b\xfd\x14\xf9\x14\x42\x88\x9f\x47\xbb\x25\xa9\xa0\x09\x72\x6b\xb7\x24\x96\x35\x56\xbe\x6d\xc4\xf1\x79\x39\xb8\xd1\x26\x20\x13\x75\x38\x43\x77\x4b\x02\x49\xe7\x1b\x51\x73\x37\x88\x18\x83\xf9\xbd\x2d\xda\x9e\xd2\xe9\x1a\x0d\xd9\xf1\xa1\x52\x76\x7c\x9e\x53\x76\x7c\x9e\x0f\x36\x81\xe3\xf3\x14\x4c\xe6\xbb\xbd\xd1\x80\xd9\xcd\x2c\x58\xeb\x2a\xa3\x9b\x49\xaa\x5e\x8a\x42\xdf\xb7\xe6\xa8\x90\x4e\x70\xdd\x30\x59\x3d\x10\x24\xd5\x30\x2f\x26\x2b\xd9\x01\x7a\x41\x0d\xf1\xd4\x58\x01\xe8\x3f\x3b\x7b\xf5\x10\xa2\xde\x2a\x2c\xa8\xb0\x23\x33\xb9\x54\x70\x7a\x61\x7c\x48\x90\x0a\x19\x74\xa3\x12\xb4\x92\x4e\xd0\x9e\x68\xbc\x59\x39\x60\xd2\xe6\xb0\x07\xc4\x0b\x98\x58\xdc\xef\xae\xa2\x5e\xbc\xa4\xca\xd2\x5a\xa9\x45\x82\x7e\x89\xfa\xa1\x87\x41\x8f\xfd\xde\x23\x6c\xef\x66\x6d\xec\xbc\x9b\x9c\x13\xf5\xda\xcf\x8f\xa1\x07\x5b\x2f\x70\x7b\x7f\x15\xbb\x53\x9b\x2f\x55\xad\x3f\x7f\x3d\x02\x85\xb4\x50\x41\xdf\xa9\xf8\x07\x66\xeb\x6c\xd0\xe5\xda\x10\x3e\xb7\x2b\x65\xe2\x67\x8f\x66\xa1\x7c\xf9\xe7\x54\x2c\x17\x5f\x7f\x6a\xd4\x55\x4d\x33\xc9\xc1\x05\x1c\x10\x1f\x92\xb4\x48\x7e\x7c\xf7\x45\x0a\x3d\xef\x1f\x7c\xd0\xf1\xeb\xdd\x93\x41\xcf\xd0\xb5\xe0\xa3\x94\xef\xf7\x48\x46\xd6\xdf\xff\xcb\x7e\xad\xa2\xe9\x4b\x52\x54\xf3\x68\x13\x67\xe6\xd1\x21\x28\x77\x07\xa4\x8f\x90\xbb\x03\x3e\x52\xaa\x46\x7e\x09\xdb\x7c\xd3\xb5\xce\x70\x96\xd8\xa8\x19\xe9\x47\x97\x88\xf9\x2e\xcc\x9d\x64\x67\xf0\xee\xab\x7d\x1b\xbf\x8e\x89\xfc\x95\xb7\xbe\x5d\x6a\xa7\x8f\x26\xb3\x78\x63\xc8\xd5\xa6\x7c\x88\x9e\x06\xfc\xd3\xfb\x13\x6e\x3c\x35\x6f\x27\x61\x0e\x33\x21\xf9\x86\xc8\x46\xa4\x9f\x55\x2a\xa8\x2b\xe5\x33\x5a\xd8\xcb\x94\xd1\xc2\x7e\xa6\x8c\x16\xf6\x4e\xd0\xc2\x2a\xe3\xd5\x55\xbd\x56\x0c\x9d\x33\xe1\x4d\xc6\xa6\x7d\x8a\xee\x43\x14\x97\x97\x5f\xe4\xaf\x5a\xaa\x7a\x4f\x6d\x06\xed\x3d\xa6\x79\xbb\x71\x1d\x55\xfc\x5b\xeb\xc3\xc2\x69\xff\xc7\x87\x37\x3f\x0e\x79\x65\x31\x62\xfd\xa4\xb0\xe4\x20\x84\xcc\x82\xe3\x48\xad\xd4\xfd\x47\xdb\x34\x43\xd4\x90\xde\xf7\x96\x71\x65\x8e\x7b\x91\x74\x14\xcf\x22\xb1\x25\x7b\xf5\xb7\x14\xbb\x4b\xc7\xe0\x2d\xf2\xd6\x26\xdb\x5a\x55\xde\x74\x6d\x12\x5b\x75\x51\x92\x56\x3d\xb3\xcd\x11\xb2\x4d\x6d\x4b\x5a\x7c\x06\xdd\x5d\x0e\x58\x27\x77\xac\x02\xf2\x34\x47\x62\xe5\x22\x41\x0d\xd9\x36\x73\x63\x66\x70\xf2\xf2\xb2\x90\x68\xcf\xd3\x91\xd0\x1c\x3e\xa4\x0c\xf7\xe9\x48\x60\x23\x6f\x2c\xff\x8b\x5c\x9e\xfb\x74\x4e\x40\xfe\x17\x19\x1c\x74\x24\x0e\x47\x83\x60\xa1\x23\xb1\xd8\x1a\x01\x0f\x15\x0f\x44\x04\x13\x15\x8d\x33\x91\x3a\xa0\x82\x8d\x8a\x06\x99\x4a\xa0\x71\x39\x23\x82\x92\x3e\x7d\x60\x3f\x38\xe9\x48\x3c\xb9\xa4\x02\x1e\x16\x4c\xb9\x9c\x4e\xbf\x62\xb7\x1c\x4f\xc7\x02\x79\x0c\x02\x37\x15\x8c\x84\xf3\x18\x19\xf4\x74\xe7\x11\x22\xf8\xe9\x48\x30\x9f\xd1\xc0\x50\x47\xe2\x30\x19\x92\x3d\x37\x12\xa3\x8a\x86\x99\xa9\xce\xa9\x63\x40\x93\xc5\x67\xad\x2a\x51\x70\xd5\xa7\x63\xa1\xb2\x89\x5c\xb2\x8d\xc4\xad\x8e\xc2\x8b\x4d\x84\x5c\x04\x96\xd1\x50\x13\x02\x05\x73\xc3\x75\x14\x31\x05\xf0\xe9\x9c\x10\x7d\x43\x02\x6f\x1d\x69\xc6\xee\xd3\xd4\xf2\x99\x85\xa6\xa7\x77\xeb\xa8\xc1\xdd\x7e\x38\x1c\x00\xa6\x8b\x8d\x34\x6d\x54\x00\x36\x0e\x18\xd6\x04\xbf\x22\x97\x55\x8f\x2b\x28\x31\xe5\xd5\xe2\xca\x2a\x71\x25\x75\xb8\xbc\x2a\x5c\xf6\x02\xf1\x2a\x70\xf1\xfa\x5b\x46\xf5\x2d\xb3\xf6\x96\x63\xb1\xa2\x5a\x9d\xb5\xdc\x9c\x9a\x5b\xce\x89\x88\xab\xce\xfd\xdd\xb7\x47\x62\x29\x4d\x32\xc6\xcf\x48\x73\x8e\x03\x71\x41\x73\x47\x3a\x55\xc3\x63\xea\x58\x34\x06\xb6\x3b\x12\x1f\x96\xe9\xe9\x9c\xa7\x58\x53\x46\x90\x8e\x82\x3b\xc4\x9e\x11\xa3\x1b\x59\xb6\xb1\xd8\x0f\x48\x6c\x2c\x7e\xa3\x34\x59\xf7\x26\x69\x93\x34\x81\x99\x57\xc8\x1b\xa4\x89\x46\xe7\x77\x4c\x92\xb4\x46\x63\x9a\x48\x45\xb6\x8b\xf7\x93\xbc\x19\x9a\x4c\x98\x22\x34\x42\x13\xca\x93\xa8\x09\x9a\x70\x6c\x59\x03\xb4\x83\x89\x32\xbb\xf5\x19\x5b\x92\xb9\x0e\xdc\x7c\xdd\x31\x78\x20\x2a\xa8\xf1\x48\xac\x5b\x1a\x32\xc8\xf1\x48\xbc\x0b\x00\x04\xf4\x58\x30\x12\xbc\xc6\xfb\xc1\x90\x47\x9a\x71\x4c\x9a\x88\xf5\xb3\x99\xd5\x89\x26\xf3\x60\xa0\xca\x23\xcd\xfb\xce\x91\x0c\xba\x3c\xd2\x9c\x3f\x07\x97\x4e\x32\x38\xf3\x48\x39\x90\x03\x80\x39\x8f\x74\x4c\xd1\x83\x7c\x03\xb7\x43\xef\x37\x68\x43\x04\x8f\x1e\x89\xa5\x16\x30\x30\xe9\x91\x78\x49\x85\x18\xb8\xb4\x60\x2c\x78\xa5\x61\xd0\xe9\x91\x66\x6c\x30\x1d\x41\x0e\x34\x1d\xac\xfa\xe9\x38\x33\x4d\x67\xc0\xf5\x07\x09\xd4\xfa\xe9\x94\x10\xae\xa6\x81\x5c\x8f\xc4\xd2\x1f\x08\xe8\xf5\x48\xcc\x4d\x44\x40\xb0\x85\x43\xd1\x41\xb1\x05\x03\xe1\xec\x42\x06\xcb\x7e\x3a\x2b\x84\x65\xa8\xe0\xd9\x23\x71\x98\x06\x02\xd3\x1e\x89\xa9\x03\x4f\x28\x9b\x11\xe7\x17\x2a\x08\xf7\xf6\x09\x20\xb2\x04\xf3\x16\x15\x9c\x7b\x24\x0e\x6b\x4d\xb2\xe1\x21\xfd\xf1\xcd\x38\x4a\x12\xee\x1c\x09\xe4\x7b\x24\x56\x11\x0d\x07\xf4\x7b\x24\x9e\xdf\xc3\x00\x01\x97\x0d\x38\x91\xd9\x07\x83\x84\xcb\x46\xa3\x81\x86\xcb\xc6\x80\x41\xc4\x45\xc3\xcd\x3a\xd0\x08\x80\x8d\x8f\x34\xe7\x60\x59\x0e\x74\xec\xd0\x94\xf1\x25\x14\xc4\x5c\x30\x47\xfc\x28\xdb\x0f\x6e\xbe\xfd\xed\x7e\x90\xf3\xed\x6f\x01\xb0\xf3\x91\xe0\xc5\x5d\xd9\xae\x81\xac\x1c\x78\x45\x09\xf0\xea\x23\xcd\xd6\x82\x9a\x52\xea\xa9\x70\xec\x4f\xc7\x99\x8f\xb5\x46\x84\x6b\x1f\x09\xe6\x58\x16\x7c\xfb\xe6\x61\x8e\xb1\x87\xc0\xb9\x8f\x34\x6b\x36\xc3\xf7\x9f\x0a\xfb\xfe\x74\x56\xc8\xae\x32\x60\xe0\x37\xcf\xce\x38\xa8\x49\x84\x89\x17\x0c\xc2\x89\xe2\xa5\x2b\x8d\xc1\xe0\xe4\x37\x4f\xcd\x77\x07\x73\xdf\x8b\xe4\xe5\x54\x64\x98\xfa\x9d\x07\x4e\x33\xd5\x17\x80\xb3\x1f\x69\xd2\x64\x5f\x06\xcc\xbd\x7c\xd0\x82\x0b\xe5\x28\x7e\x54\x8e\x30\x5b\xf0\x51\x21\x47\x12\x26\x37\x0e\xc4\x45\x89\x1c\x49\x8a\x16\x39\x92\x24\x2b\x77\x4b\x5c\xf4\xc8\xa7\xb3\x10\x2d\xa9\x04\xb5\xb6\x60\xa2\x4a\x6e\x9f\x65\xa0\x4b\x8e\x24\x48\xe3\xde\x7d\x01\x8a\x36\x39\x12\x27\xd0\xb0\x3b\x2e\x7b\xd3\x78\x28\x94\x4f\x07\x47\x4f\xf4\xa7\x4f\xb3\xd6\x9c\x05\xcb\x3f\xd2\xfb\xd5\xb9\x12\xf8\xfe\x98\xf3\x28\xa2\xc0\xf9\x8f\x14\xe5\x28\x28\x62\xc0\xfb\x47\x9e\x91\x54\x9b\x16\x62\xd8\xff\x91\xc4\xea\xb1\xc8\xa7\xed\x8b\xb3\x10\xf2\x88\xbc\x42\x66\x4b\xb1\x04\x3b\x42\xd5\xcc\x96\xa2\xc9\xb6\xa8\x92\x26\xc1\x7c\x64\xd5\x35\xd1\x27\x14\x47\xd5\xb0\x6b\x6f\xb6\x14\x41\xd3\xc8\x8d\xd0\x63\x35\x24\x05\x83\xd3\x80\xbd\x9e\xd3\xfb\x35\xa6\xb2\x03\xbb\xa5\x93\x39\x52\xb3\x03\x9b\x1d\x58\xf0\x69\xa6\xba\x75\xb7\xa6\xd4\x1f\xca\xd2\x76\x4d\xf8\x6e\x6f\x34\xc3\x0d\x12\xb6\x0a\xe8\x2a\xa3\x9b\x83\xd4\xf7\x16\x85\xbe\x6f\x8d\x53\xeb\xad\xbb\xd4\xa5\x6d\xb0\xc2\xb1\x2d\x71\x3a\xc8\x3f\x25\xa9\xe6\xe2\xeb\xac\x83\x55\x48\xb3\xb4\x0c\x9b\xd7\x27\x2b\x5a\x66\x74\xbb\x1d\xee\x15\x52\x5d\xe0\xfc\xd9\xd9\xab\x87\x90\xf4\xb6\x6f\xe1\x6c\x07\xdd\x3a\xcc\xfc\xb2\xcf\xe9\x85\xf1\x61\x82\xe2\x80\xa0\x1b\xd5\xa4\x2e\xf1\x9e\xa4\x81\xea\x78\x43\x3a\xbb\xfb\xd1\x71\x2f\xc1\x0b\xd5\x54\xd2\xe8\xae\x92\x5e\xa4\x4e\x95\x17\xbc\x52\x8b\x09\x3a\xed\xeb\x87\xf5\xef\x93\x8f\x73\x82\x8d\xb7\x89\x70\xe7\xa2\xa9\xe5\x6c\xdb\x0d\x4d\x99\x6d\x3b\xcb\x6e\xd8\xbd\x42\x20\xff\x3a\x75\xef\x6c\x5f\xaa\x5a\x7f\xfe\x7a\x02\x8a\xf6\x11\x88\x3f\x7d\x2a\x9c\xb3\x61\x80\xcd\x3a\xb7\x2b\x65\xd2\xd7\x61\x64\xe5\xb1\xa1\x29\x95\x87\xf7\xf5\xa7\x1e\x23\x93\x01\x61\x03\x2f\xfc\x80\xa8\x3c\x09\x98\xd1\x06\xbd\x79\x82\x73\xcf\x3f\xf8\xa0\xd3\x77\x80\xc2\x20\xc8\x05\x43\xe1\xda\xfe\x51\x2b\xd1\x3d\xdc\x51\x04\xe9\x4f\xf4\x6b\x9c\xec\x7c\x80\x6e\x19\x4e\x36\xa1\x71\xde\xbd\x4b\x73\x7f\xf8\xb7\x29\xf7\x87\x1f\x69\xb2\xd8\xde\x74\xad\xdb\x27\x04\x02\xc3\xb5\xe7\x70\xd6\xda\xa4\x95\x63\x27\x57\x40\x90\xcd\xd0\x1d\x9a\xcc\xb6\xd9\x1d\xca\xb7\xe9\x2b\xbe\x71\x61\xea\xae\x92\x16\x78\xde\xfa\x76\xa9\x9d\x3e\x99\x8a\x9f\x8d\xa1\x5f\x9b\xf2\x21\x79\x39\xce\x4f\xe3\x4d\xc8\xb0\x68\xfe\xe7\x84\xb5\x46\x40\x12\x27\x28\x0e\xd0\xcf\x5b\x13\x48\x71\x30\x94\x99\x87\xc2\xee\xcf\x4d\x59\x77\xde\xdc\x92\xf7\x1b\x3f\x15\x86\x81\xbe\x1b\x3a\x4f\xc1\x9b\xbc\x1d\xa2\x36\x4d\xea\x61\xfe\x97\x2e\x8e\xe0\x08\x10\x5f\x38\xed\x49\xae\x1d\xca\x17\x9d\x23\x5b\x7d\x29\x3f\xcf\xff\x3d\xc5\xc7\x25\x06\xe6\x1f\x7b\x47\x25\x1b\x20\x29\xba\xfe\x70\x21\x4c\xaf\x10\x48\xba\xfd\xc3\x79\x74\x09\x79\x07\xd0\x84\xfc\x9d\xb9\x4e\x22\x40\x9b\x8c\xec\xe3\xe4\x02\x60\x9b\xc8\x3f\xf5\xa5\x33\x6d\xb8\x24\xa5\x60\x23\xcb\xad\xee\xfc\xa7\x5a\xf9\x60\xca\x7f\xd4\xb6\xbc\xb9\x0c\xd6\x91\x18\x05\xdd\x52\xcc\xe8\xc3\xf7\x13\xed\x3a\xca\x89\xc6\xe0\x31\x18\xd4\x69\xc4\x4d\x03\xb4\xda\x1c\x5c\x59\xc4\xf2\x83\x2a\xcc\x21\x55\xd6\x23\xb7\x53\x5b\x49\xc0\xca\x46\x95\x4b\xd3\x2c\x90\x00\x2c\xcc\x9e\x23\x14\x7e\xd2\x01\x7e\x7c\x23\xd7\x16\xc2\xef\x4f\x2c\xbe\x37\xa6\x21\x3b\x17\x8c\x23\x39\xad\x10\x62\x32\x32\xb2\x02\xf9\xc7\x3f\xbe\x7d\x4e\x22\x4f\x54\x74\x72\x54\x9e\xd2\xeb\x3c\x3c\xe0\x09\xf3\x8c\x5f\x2a\x07\x45\x9d\x92\xea\xd5\xed\x07\xd3\x7e\x3e\x4e\x3e\x36\xdf\x94\xba\x5d\xd2\xda\x80\xa1\x4c\x83\x26\x56\x81\xf7\x4b\xec\xf8\x1c\x3d\xe6\x8f\x5c\xb2\xcc\x4e\x85\x8d\x32\x45\xd5\x09\x05\x4b\xa6\xd0\xb8\x36\x27\xb8\x38\x01\x2c\x2f\x1c\xb9\x45\xf2\xb0\x92\xea\x11\x20\x9b\x0a\xd3\x0b\xa6\xa9\x68\x9f\x38\x33\xb7\x61\x2a\xb9\x7a\x87\x4c\xff\x2e\x1c\x13\xa8\x91\x12\xba\xb3\x8c\xcc\x90\x69\xbc\x5a\xe8\xf0\x05\x4f\x6a\xde\x3d\x26\x9c\x01\xc2\xbc\xc2\xc4\x33\x3f\xf8\x59\x1f\xdc\x8c\x0f\x3c\xdb\x83\x79\x1f\x8e\x66\x79\x60\x19\x1e\x60\x76\x07\xe3\x72\x19\xb5\xf0\x10\x2d\x0b\x2f\x29\x9a\x2e\x82\x9e\x44\x98\x5a\xa3\xb5\xdd\x87\x15\x1a\x04\x06\x37\xb7\x18\x85\x04\xc5\xff\x54\x0e\xf5\xa9\xe2\x99\x38\x52\xbf\x0c\x67\x2f\xfd\xda\x81\x41\x22\x2a\xc0\x1b\x34\x0b\xb0\x09\x59\xb6\x57\x08\xc4\xb3\x57\x78\x7d\xcd\xf8\x19\xb2\x92\xde\x65\x82\x44\x59\x41\x7f\xb2\xc9\xb3\x4f\x79\x5d\xc7\x98\x09\xa5\xd9\x8e\xdc\x21\x59\x4f\x30\x51\x17\x5c\x49\xdf\x2f\x81\x5c\xb0\x7b\x7b\x09\xc6\xe4\xf7\xef\x9a\x5c\x14\x59\x5d\xb9\x58\x92\xc8\x71\x62\xe6\xe5\x96\x40\x03\x20\xa8\xf7\x70\x04\x1f\x42\xbb\xc7\x83\xc7\x28\xca\x7d\xca\xd4\x1a\x1a\xb2\xfd\xcc\x62\x9d\x00\xc0\xd4\xa9\x24\x47\xe0\xa8\xf5\xf3\xbb\x57\x82\x50\xea\xe7\x36\x7d\x4c\xaa\x20\x44\xfa\xf7\x15\x7c\x00\x91\xe7\xe7\xee\x0d\xe7\x9b\x97\x93\x0e\x34\x00\x08\xf2\xb0\x18\xe3\xc8\xf1\x78\x32\x15\x8e\x18\x9f\xd2\xda\x60\xa1\xc4\xcf\xcc\xf8\x98\x69\x7e\x26\x86\x04\x3f\xbb\xeb\x65\x4c\xd6\xc9\xa8\xef\x18\x77\xd2\xd1\xde\x61\x59\x47\x51\xde\x19\x1b\x84\xa2\xbb\x33\x86\xc0\x50\xdd\x93\xde\x83\x43\x48\xee\x18\x1b\x20\x08\xee\x28\x23\xc0\xc8\xed\x0c\xfd\x74\xc4\xd9\x5b\x18\x0f\x20\xe8\xec\xe4\x68\x07\xc4\x2b\x08\x22\x3b\xca\x2a\x49\x37\x32\xa4\x3b\x22\x41\x55\x9e\x60\x57\xc8\x68\xeb\x70\x82\x3d\x17\x65\x1d\xb7\xf9\x99\xe8\xea\xf8\x40\x89\xcd\x25\x16\x9a\x3a\x3e\x0a\x1d\x45\x1d\x7f\x37\x0b\x3d\xfd\xf8\x83\x5a\x20\x52\xfa\xdc\x02\x36\xd9\x31\x4f\x18\xf3\xe0\xa0\x9f\x27\x3d\x46\x68\x88\xe7\x54\xb4\x73\x18\xe9\x1c\x5a\x40\x22\xfe\xf8\xac\xec\x85\x29\x64\x09\xc1\x19\x9f\x83\x4d\x02\xe0\x8a\x43\xfc\xc1\xc6\x13\x87\xcd\x19\x14\x47\x7c\x76\x6c\x83\xed\x2b\x82\x19\x8e\xed\x18\x13\x2b\x7c\x6e\xa1\x2d\x00\x1b\x3c\xad\x00\xd2\xf0\xc0\xb1\x3d\x82\x71\xc0\x67\xb6\x3b\xb9\x02\xfb\xed\x79\x50\xf9\x00\xc1\xf6\x3e\x99\xc4\x41\x10\xc7\x7b\x92\xd4\x41\x26\x76\x37\x3f\x4d\x8a\x89\x5b\xc6\x86\x3b\x93\x42\x9d\x09\x60\xce\x04\xe9\x55\x03\x49\xe0\xcd\x62\x40\x9b\x71\x73\xfd\xb6\x24\x81\x34\x13\x2e\x9f\x04\xca\x8c\x0b\x63\xc6\x86\x30\x63\x26\x7e\xee\x3e\xcc\x81\x2e\xe3\xc1\x96\x09\x36\x86\x0f\x57\x86\x9f\xa4\x4f\x9f\x84\xd7\x96\x8d\xb1\xfd\x7e\x74\xa3\x14\x4f\x3b\x06\x0c\x65\x1c\x1c\x6d\xb1\xaa\x2e\x62\xe1\x67\x47\x98\x89\x1c\xc4\x51\x8a\x99\x2d\x52\x67\x45\x3e\xf9\xa4\x3c\x10\x0b\x17\x3b\x86\x80\x46\xc3\xc3\x8e\x22\xa3\x11\x70\xb0\xa3\xcc\x23\x06\xfe\xf5\x2c\x54\x85\x10\xf3\x5a\xa8\x29\x64\x46\xde\x31\x19\x6b\xcc\x41\x39\xb8\xd6\xef\xc7\x80\xc9\xce\xdd\x91\x1e\x71\xd9\xb9\xdb\x4f\xd9\xb9\x7b\x9d\xc4\xf8\xd3\x82\xe2\x59\x36\xee\xb4\x60\x6b\x22\xe0\x4d\xcb\xb0\xa6\x25\xda\xe6\x48\x00\x67\xa6\x81\x8f\x49\x5e\x02\x08\xf6\x12\x24\x63\x48\x43\x13\x07\xb0\xa3\x51\x49\x84\x30\xa3\x67\x78\x41\x84\x62\x44\xe3\x69\x89\x10\x36\x34\xfc\xfa\x84\xed\xeb\x50\x2c\xe8\xc4\xc9\xd1\x64\xfc\x67\x00\xfb\x19\x92\x22\x22\xe6\xf3\xcc\xee\x58\x21\x8c\x67\xf8\xed\x20\xb6\x33\xfc\xfe\x13\x68\x3d\x0a\x60\x59\xce\x50\x3f\xbe\xdb\x7c\xc0\xd9\xf4\x05\xa5\x62\x32\xa7\xeb\x20\x0a\xe0\x30\xcf\x4c\xf9\x81\xb8\xcb\x78\x7a\x11\x13\x6f\x39\x0b\x3a\x8d\xa6\x10\x74\x1c\x4b\x99\xb1\xb8\x38\x86\x32\xde\x84\x03\xc7\x4e\xc6\xc7\x80\x30\x93\x99\xf6\xe6\x6c\x3a\xbb\xd3\xf1\x91\x31\x6c\x64\x00\x17\x19\xd4\xd3\xce\xb4\xe4\xe2\x2d\x68\xe9\xe8\x81\xef\x93\xc9\x2f\x9b\x5f\x63\xba\xdc\x48\x77\x4b\xb9\x91\x6e\x22\x7f\x25\x75\xaf\xdb\x09\x10\x42\x30\xa5\x89\xc0\x20\xcf\xcc\xbc\xcd\x56\x61\xe2\x0e\xf9\x49\x2b\x49\x98\x90\xc6\x29\x85\x01\x86\x19\x9e\x99\x40\x30\x61\x85\x65\xe3\x4c\xc0\x24\x09\xb1\xa5\x39\x25\x0c\xc4\x5c\x36\x80\xf5\xc8\x3f\xf5\x8d\x6a\xfd\xd2\xa6\x00\x5b\x74\x0b\x12\x13\x03\xa6\x1e\x4b\x54\x69\x47\x35\x55\x67\x42\x53\x68\x10\x5d\x04\xbc\x99\xca\x63\x67\xfd\x0c\x48\x3f\xea\xa7\x19\x8d\xa9\x82\xf2\xcb\x6f\x7a\x2d\xd5\x9a\xd8\x9d\x00\xe1\xac\x04\x7b\x45\xfc\x34\xd2\xcf\x56\xea\xfe\x47\xa3\x6e\x95\xa9\xd5\xd5\xdb\x08\x53\xaa\x79\xf8\xfa\xa6\x25\x70\x46\xb6\xe7\xcf\xa8\x5f\x7b\x7f\x76\xd3\x5d\x69\xd7\xe8\xa0\xfd\x99\x69\xc2\x99\x75\x67\xc3\x43\xbf\x14\xc1\x75\xaf\xf3\xc0\x63\x34\xf4\xad\xe9\x52\x37\x51\x2d\xf4\xfe\x2b\x3c\xf2\xee\x51\x14\x0d\x51\xc9\xc0\x1c\xb3\x5f\xb9\xe8\xe6\x36\xd2\xe4\x30\xdb\x80\x6e\x04\x82\x5a\xf5\x56\xd5\x5d\xc2\x37\xff\xea\x2c\x31\x20\x86\x9b\xc6\x9b\x72\xb2\x7f\xe9\x07\x28\xef\x78\xde\xf1\x05\x3c\x95\x8a\x39\x10\x2f\x85\x8a\x97\x3e\x95\x3a\x52\xc0\x70\xfd\xf1\x82\x12\x1e\xdf\x70\x8b\x46\x98\xbb\xca\x2c\x0c\x99\x2c\xfe\x83\x97\x7b\x30\xf6\x96\x5f\x93\xc0\xae\x6c\xe5\xd6\x1d\x30\xb7\x99\x55\x5b\xc0\x1c\x8b\x57\x3f\x30\x19\x47\xc1\x55\x01\x0c\x86\x1a\x22\x3d\xf9\xa0\xc9\x07\x0d\xca\x3b\x58\x12\x15\x79\xf6\x24\x67\x90\x11\x64\xd8\x6f\x02\xb7\xce\xae\x74\x58\xea\x6e\x2f\x53\x23\xec\xaf\xef\x5b\xeb\x42\x9a\xc6\xcb\xd4\xd8\x45\x31\xcb\x14\x29\x82\xcb\x31\xd2\x24\xf7\x6c\x93\xa9\x0d\xc0\x35\x89\x31\x12\xdd\x55\x19\x49\x84\xdf\xc3\x73\x5d\xe4\x43\x17\x92\x52\x24\x61\x25\x0d\xaf\x4a\x24\xc2\xc0\xfc\x6a\x91\x42\x54\x31\x52\x88\xca\x87\x78\xc5\x43\x82\x0a\x20\x7e\x8d\xbd\x8c\x1f\xa5\x75\xf5\x42\xee\x10\xd6\xd2\x8b\x46\x97\x70\x07\xbf\x72\x5e\xc0\x23\xf2\x72\x6f\x19\xaf\x44\x28\xf1\x16\xb2\x8b\xa8\xac\x5b\x5c\x8b\x28\x29\xe5\x3e\x18\xa7\xb2\x0b\xb7\x05\x8c\xca\x73\xd9\x46\xca\x07\x2c\x44\xf9\x80\x4d\xf5\x20\xc7\xa1\x25\xb9\x86\x82\x59\xe1\x55\x1e\x8e\x5c\xe3\x35\x15\x80\x1b\xd8\x20\x8f\xa3\x0f\x6a\xb3\x32\x74\xe0\x87\x42\x0c\x7e\x55\xf0\xe5\x98\xcd\x9a\xda\x9f\xee\x17\xe2\xc9\xf2\xba\xec\x9c\x09\x0f\x1f\x6d\x13\xf4\x3d\x99\xe5\x39\xbc\xa5\xea\xda\xde\x5d\x38\x73\x6b\x6a\xbd\xd0\x9f\x7c\xa9\x6a\x85\x80\x14\x15\x6c\xb5\x5b\xaa\x56\x5d\x99\xda\xa0\x3b\xc7\x3d\x51\x55\x05\x6b\x76\x66\x8f\x0f\xc1\x19\xc8\xed\x9c\x50\x39\x0b\x76\xc3\x3c\x9e\xaf\x63\xe9\x94\x76\x64\x69\x68\xd3\x79\x9c\xdc\x3a\x5b\xfe\x66\x3b\x7a\xfd\x71\xc1\xbf\xd6\x18\x52\x51\xbf\x59\x1b\x7e\x35\xb5\xc6\x2a\x45\x0a\x7e\x34\xbc\x6b\x3e\xf8\x7f\x22\x45\xe8\x85\xa0\xfb\x02\x2f\x5b\xbd\x9f\xe3\xef\xb6\x59\xaf\xcd\x44\x2b\xf2\x03\xa8\x5e\x2c\x26\x5f\x10\xaf\xbf\x98\xa6\xbb\xff\x8a\xe1\x66\x16\x02\x15\x5b\xeb\x5b\x0d\x9b\xee\x6c\x7d\xe2\xec\xdb\x79\x54\x51\x07\x0b\x40\x42\xad\x78\x30\xa4\x2a\x56\x38\x18\x4b\xb9\xde\x99\xa6\xb2\x77\x7e\x42\xce\x5a\xac\xbc\xfa\xe8\x74\xa5\x9b\x60\x54\x7d\xd9\x6a\x12\xfc\xf4\x2e\xb1\x37\xe3\xf9\xd0\x9c\x88\x11\x9f\xcb\x47\x45\x33\xe1\xa8\xe9\x6d\x5c\xe8\xe7\x6b\xc5\xe7\x6e\x69\x41\x01\xe8\x8b\x6b\x75\xa5\x69\x40\x45\x7c\x77\x23\x65\x21\x41\xaa\x4c\x62\xba\xa7\x8d\x7a\xd9\xc8\x49\x46\x5e\x0a\xb2\x13\x8e\x68\x1f\xba\xd3\x3d\x4f\xde\x40\x9c\xea\x39\x7e\x01\x3d\xad\x1c\x73\x96\xa1\x62\x05\x81\x73\x8c\x99\x95\xa8\x33\x0c\xa7\x2e\xd0\x9d\xdf\xf9\x65\x2e\x20\xce\xed\xdc\x66\x0f\xc9\x2c\xe6\xb4\x62\x1c\x06\x39\xa9\xd0\xb2\xf0\x9d\x52\xec\x0b\x30\x27\x14\xf5\xb5\x30\x1f\x0b\x75\x36\x19\x5f\x4a\x75\x2e\xd3\x7e\x28\xee\x44\xa2\xaa\x09\x72\x1a\xf1\xe2\x5d\xc0\x49\x84\x5f\x8e\x38\x85\xf0\xcb\x13\xb6\x46\x82\x94\x12\xee\xec\xc1\xdd\x0d\xd9\xce\x1d\xbc\xa8\x32\x67\x0e\xe7\x3e\x8e\xf3\x76\x70\x9b\x8a\xf4\xb3\x56\x75\xfe\xed\x73\x8a\xa6\xf3\x5a\x5b\x7d\xd7\xab\xb6\x56\x6f\x77\xce\xa4\xf2\x54\x69\x9b\xe0\x6c\x5d\xef\x97\x1d\xc8\x10\x6c\x1a\x1b\x14\x59\x00\x8e\xda\x9e\x5e\xe9\xa0\x2a\x15\x54\x5e\x3f\xde\x4f\x3d\x41\x7f\x41\x6b\x77\x7d\x6d\x1a\x13\x48\x89\x20\xa8\xe6\x6d\x6c\xa5\x3f\x00\xef\xe7\x8c\x31\x3c\xa3\xaf\xb5\x73\xba\x3a\xef\xd6\x3b\x73\x59\x2e\x75\xd5\xd5\xa6\x59\x7c\x5e\x34\x76\xf3\xe7\x4f\xf7\xba\xec\xd0\xcb\x47\xc6\x2d\x16\x3f\x27\x67\xf8\x0e\x5e\x27\x6c\x59\x26\xd0\x4a\x85\x72\xf9\xe9\xbe\x75\x43\xe1\x34\x13\x3b\x80\x0d\x5a\x50\x44\x02\x56\x11\x80\x17\x14\xf2\xec\xa2\x81\xd6\x5f\xa1\xf6\xd4\x2c\x4f\x32\x91\x3e\x5d\x5c\xb0\x98\xc2\xfd\x1c\x28\xca\x97\xf0\x2f\xae\xb7\x24\x87\x75\xe1\x41\x24\x0c\xcf\x8e\x4c\xc1\x7c\x81\x20\xbf\x70\xf7\x05\xdc\xf5\xeb\xb5\x43\x9f\x49\x9b\x15\x43\x56\x0c\x59\x31\x3c\xa1\xf7\xab\x18\x04\x83\xdf\x69\xb3\x58\x82\x18\x4c\x85\x18\xe5\x87\x97\xe8\x50\x48\x00\x30\x36\x16\x1d\xf8\xe0\xb0\x40\xd0\x43\xcc\xed\xe0\x70\xc0\xb8\x1c\xf1\xed\x6d\xae\xb2\x5f\xbb\x1a\x97\xba\xd6\x65\xb0\xee\xbb\x76\xb8\x76\x62\xaa\xb4\x6c\x76\xe7\xd3\xf5\x29\xe5\xd3\x75\x97\xf2\xe9\x9a\xcd\x6e\x36\x65\xc5\xf0\x94\xb2\x62\xd8\xd2\xfb\x55\x0c\x82\xc1\x79\xc3\x72\xb6\xea\xec\xb9\x45\x06\xdb\xa4\x69\xab\x60\x5a\x5b\xe5\xd8\x34\xf0\xe4\x76\xb9\xd6\xbb\x39\xb5\xa5\xdc\xe7\x52\x8e\xec\xc4\xd3\x19\xf2\x03\x2d\x8e\xb9\x5e\xc4\xd0\xe4\x31\x4e\xe7\x42\x7e\x42\x17\xf1\x8e\x94\x38\x27\x75\xd4\x09\xc9\x4f\xec\x22\xce\xa9\x5d\xc4\xfc\xaa\x18\xa7\x77\x11\xe1\x04\x2f\x84\xa7\x78\x11\xe3\x24\x2f\x62\x9c\xe6\x45\x94\x35\xed\xb5\xcb\x17\x72\xce\xf8\xcb\x24\x2f\x5c\x7d\x4a\x51\xb8\x2e\x92\xb9\xc4\x7e\xc1\x26\x91\xfd\x10\x7e\x94\x78\x05\x65\x9c\x15\x6c\x6b\x6b\xbb\x78\xf8\xd7\x41\x7a\x3d\x48\x9a\x1e\xec\xcc\x3c\x87\xa6\x5f\x27\x76\x68\xfa\xa9\x41\x97\xe3\xd3\x24\x9a\xd4\xe6\x16\x1a\xbd\x39\x36\x9d\x43\x50\x4f\x29\x87\xa0\x76\x29\x87\xa0\x84\xb1\x69\x89\xb1\x1a\xd3\x50\x8d\x64\x62\x31\x17\x53\xf0\xb0\xc4\x30\x65\x4b\xa2\x68\xb5\xf8\x5c\x23\x32\x44\xf9\xf5\xcd\x4c\xeb\x88\x6b\x7c\x4e\x66\xe4\xb0\xe2\x9d\x4d\x30\x39\xe6\x09\x3c\x99\x63\x9e\x39\xe6\xf9\x22\xe5\x98\xe7\xdb\x94\x63\x9e\xaf\x53\x8e\x79\x6e\x29\xc7\x3c\x53\xbd\x20\xc7\x3c\x73\xcc\x93\x4c\x39\xe6\x49\x79\x3a\xc7\x3c\xc9\x94\x63\x9e\x39\xe6\x99\x63\x9e\x5b\xca\x31\xcf\x1c\xf3\xcc\x31\xcf\x9e\x72\xcc\x13\x1a\x36\xc7\x3c\xd9\x03\x41\x3f\x3f\x2e\xe4\x78\x22\xda\x1a\x30\x59\xdc\xee\xc0\x50\x3c\x18\xdc\x0c\x22\xab\x71\x47\xc0\x10\xd5\xd8\xc8\xab\x7c\x24\x35\xbe\x49\xc8\x32\x04\x05\xba\x92\x07\xec\x22\x18\x90\x0f\xe8\x82\xb5\x4c\xdb\x25\xae\x7a\x45\x0d\x27\xa6\x5a\xe5\xa1\xa3\xf1\x79\x4c\x82\x8a\x26\xd8\x79\x01\x1a\xda\xe4\x07\x2b\x0f\x01\x8d\xb9\xff\x32\xe4\x33\x11\x58\xa4\x04\xf1\x4c\xc0\x0a\x6c\xa4\x33\xc1\x98\x7c\x84\xb3\xc9\xb9\x8f\x85\x6a\xc6\x64\x3e\x3e\x9a\x59\x3e\xe4\x5e\xa5\x7c\xc8\x49\x1f\xc2\xbe\x06\x40\x26\x63\x79\x24\x34\x13\xdf\xac\xd4\x42\x5f\x74\x75\x7d\xd9\xcb\x54\x6c\xe7\x64\x76\xf6\x7e\xca\xa5\x6c\x4c\xf8\x38\x1e\x4f\x87\x5f\x48\x04\xe8\x9b\x11\xf3\x60\x69\x1a\xdc\x19\x2f\xed\x6a\xa5\x1a\x40\x41\xcc\xf5\x43\x00\xe4\x72\xc6\x47\xb0\x1b\x9a\x4c\x89\x02\xc2\xc0\x30\x97\x8e\x86\xe3\x98\xcb\xee\x46\xc4\x58\xe6\xf2\xab\x19\xc1\xb5\x8c\x38\xda\xcb\x87\x5c\x8d\x30\xb8\x0c\x76\x55\x62\xc6\x0c\x24\xb9\xf4\xe0\x5e\x78\x88\xc2\xeb\x7c\x84\x73\x39\x97\x4a\x51\xce\x23\xf0\x8b\x10\xe9\x5c\x3c\x03\x19\xbf\xf0\xf1\xce\x85\x5c\x23\xc7\x3c\x97\x73\x4f\x04\xdc\xf3\x08\x0c\x24\xc2\x3e\x8f\x30\xbe\x0c\xff\xfc\xc0\xfc\xcb\x46\x41\x17\xb2\xaf\x0c\x09\x3d\x1f\xcf\xf9\x78\x06\x48\xdc\x44\x87\x11\x97\x65\x75\xd1\x41\x30\xd2\x45\xe1\x14\xd0\x65\xc2\xec\xf7\xc9\xdc\xa6\x8d\x99\xcf\x50\x22\x12\x05\xc2\x15\x60\x91\xf0\x4a\x04\x57\x22\xb4\x6c\xe1\x69\x9d\xbe\x36\xf7\x93\x39\x9a\xc3\x89\x92\x39\x81\x32\xf0\xa4\x9c\x30\x91\x9a\xea\x43\xa8\x49\x13\x08\x36\x41\xda\x0b\x5b\x9b\x12\xb0\x1f\x18\x63\xd5\xe6\x5a\x97\x0f\x25\x82\x4a\xcc\xe3\xe3\xd6\xfa\x70\x19\x14\x0d\xa2\x53\x3a\xd8\x9a\xf4\x3d\x0e\xb8\x2b\xb5\xf7\xe0\xf0\xe5\x2e\x1d\x6f\x71\x84\xc0\xee\x59\x86\xd0\xfe\x53\x33\xaa\x04\x64\x1b\xb5\xb4\x9e\x31\x66\x21\x5f\xe8\xf5\xf7\xfe\x8f\x56\x15\xf1\xca\xe0\x39\x1d\x3c\x0f\x5c\xe2\x55\x14\x51\xf3\xaf\x0f\x3c\x0b\x79\xd6\x33\x68\x87\x3f\x7d\xb8\x5f\x02\x91\xb6\x38\x58\xce\x73\xcb\x8e\xc2\x09\xb7\x8d\x0a\x11\xfd\x9c\x54\xf3\xf0\x95\x15\x40\xe8\x73\x60\xd9\x35\x49\x3f\xbf\x43\xc0\xb0\xf7\x67\x37\xdd\x95\x76\x8d\x0e\xda\x9f\x99\x26\x9c\x59\x77\x36\xbc\xee\x97\x22\x38\x16\x2b\xf9\x72\xa9\xb9\xca\xe0\x60\xd5\x70\x6b\x1e\x98\xf2\x84\x0b\x65\x7b\x69\xcb\x9b\x77\x74\xc6\x65\x29\x8b\x28\x65\xc7\xc3\xea\xcc\x07\x5b\xa7\x2f\x03\x1d\x2c\x7b\x7c\x28\xbb\x05\x14\xca\x6e\x01\x36\x6c\x76\x0b\x78\x6f\xc8\x6e\xc1\x86\xb2\x5b\x90\xdd\x02\x0a\x9d\xaa\xc1\x92\xdd\x02\xda\xa3\xd9\x2d\x20\x53\x96\xb2\x67\x74\x3c\xac\x3e\x4d\x32\x7e\x51\xd4\xe6\x56\x37\xda\xfb\x0b\x67\xaf\x92\xdf\x66\xe0\x5e\x84\xa4\x06\x8a\xe9\x3d\x1c\x57\x61\x3b\xb7\x32\x51\x99\xba\x73\xfa\xfb\xd2\x69\xbf\xb4\x35\xb8\x4c\xfc\x5e\x43\x5c\xb5\xc2\xf2\x6c\xf8\xcc\xc3\xd3\xf6\x02\x06\x10\x79\x32\x6c\x8e\x95\x7a\x30\x07\x4d\x95\x12\x79\x2d\x07\xcd\xea\x63\x7a\x2a\x7c\x2f\x25\x42\x7f\x11\x8e\x77\xc2\xf3\x4c\x04\x5b\xc3\xb3\x95\x98\x76\x92\xd4\x46\x12\xda\x47\x91\x6d\x23\xae\xf7\x31\x79\x09\x2d\x6c\x86\x31\x99\xdf\x34\x26\x18\x55\x9f\xeb\x5a\x3d\x5c\xea\xd2\x36\x28\xf2\xe7\xf4\x87\x64\xab\x9d\xb1\xd5\x91\x4c\xd6\x77\x65\xa9\xbd\x3f\x1a\x0b\x84\xe9\x79\x1e\x91\x0d\x92\xb5\x27\x53\x7b\xce\x5d\x95\x05\xb3\xd2\xb6\x0b\x47\xa1\x18\x18\x9f\x98\xbc\xf9\xd1\x7a\x9f\x52\x56\x09\x0b\x12\xac\x87\x02\x9f\x0b\x86\xe4\x4a\xfa\xc5\xf2\x45\x77\xad\xd4\x3e\x5f\x4c\x96\x75\xbc\x1e\xee\x78\x16\x67\xd2\x3a\xe3\xd6\xd9\x60\x4b\x0b\xa7\x29\x33\x07\xe4\x95\x5c\x3c\xe1\x70\x44\xe3\x4d\x93\xd4\xec\xb4\xaa\x4c\x8e\x9e\xed\x52\x8e\x9e\xed\x7f\x3a\x47\xcf\x5e\xa2\x1c\x3d\x03\x28\x47\xcf\xf0\x07\x73\xf4\x6c\xcf\x80\xd9\xff\xcb\xd1\xb3\x97\x67\x98\xa3\x67\x33\x9b\x6c\x8e\x9e\xed\xa1\x1c\x3d\xa3\x3c\x3f\x07\xed\x39\x77\x55\x76\xe2\xd1\xb3\xb1\xc5\x08\x84\x29\xc9\x91\xca\xda\xac\x0c\x12\x46\x2b\x22\xa1\x34\xb0\x39\x5d\xd0\x5c\x42\xfb\xd3\xff\x52\xc6\x43\x5e\x97\x9d\x33\xe1\xe1\xa3\x6d\x82\xbe\x07\xd4\x25\x8f\xe3\x54\x5d\xdb\xbb\x0b\x67\x6e\x4d\xad\x17\xfa\x93\x2f\x55\xad\x50\xc0\x25\x7e\x4d\x7e\xa9\x5a\x75\x65\x6a\x83\xef\xa4\xa0\x01\x78\x75\xf2\x21\x9b\xa2\xa8\x1c\x5a\xf7\x52\x1c\xdd\x57\xb2\xab\x82\x1e\x99\x1d\x64\x03\x2e\x8f\xb7\xce\x96\xbf\xd9\xae\x01\x2d\x1f\x76\x0c\x59\x55\x5f\x9b\xfa\xe1\x9b\xb5\xe1\x57\x53\x6b\xff\xe0\x83\x06\x3b\x57\x72\xbf\xd4\x75\xcd\x07\xff\x4f\x67\x3b\x90\xf5\x76\x2c\x80\xff\xfe\xaf\x49\x4c\xed\x7e\xa6\xbf\xdb\x66\xbd\x4a\x13\xae\xcd\x0f\xaf\xc1\x26\x6f\xd3\x2f\x8d\xd7\x5f\x4c\xd3\xdd\x7f\xed\x3b\xb4\x4c\x07\xa3\xa7\x6f\x35\xbb\x61\x38\xaf\x23\xbe\x45\x3a\x93\x44\x18\xb0\x7f\x74\xca\x01\x3b\x98\xdb\x44\x03\x32\xd5\xf1\x9d\x69\x2a\x7b\xe7\x27\xe6\xb7\xc5\xca\xab\x8f\x4e\x57\xba\x09\x46\xd5\x97\x2d\xa7\x72\x53\xb0\x35\xcf\x87\x9f\x1c\x85\x62\xa3\x90\x26\x1e\x79\x32\x3b\x3a\x28\x17\xba\x36\xdf\x3a\x8e\xf4\x2e\x8c\xbb\x7c\xeb\xf8\xf6\x70\xf9\xd6\x91\x42\xf9\xd6\x31\xdf\x3a\xbe\x41\xf9\xd6\x91\xf2\xfc\x1c\xe2\xe6\xf9\xd6\xf1\x19\xe5\x5b\xc7\xb4\x93\xcd\xb7\x8e\x7b\x28\xdf\x3a\x52\x9e\x9f\x83\xf6\x9c\xbb\x2a\x3b\xf1\x5b\x47\x1f\x2a\x03\xdc\xc3\x70\x22\x93\xfd\x10\x5f\x1b\x04\xf9\x81\x33\x4c\xd0\x6e\x65\x9a\xfe\x5e\xe9\x37\xed\xbd\x5a\x68\x0c\x2d\x85\x21\x12\x2f\x0c\x99\xbe\xe5\x71\x08\xf0\xfb\xb1\x85\xbc\xb5\x75\xb7\xd2\xe7\xfa\xd6\x40\x97\xd1\x93\x55\x5b\x54\xfd\xcc\x38\x50\x38\x6c\xad\x37\x61\x41\x00\x2f\x3f\x7f\xbb\x26\xd0\x63\xf3\x44\x52\x18\x18\xb0\xbf\xce\x9a\x23\xff\xad\xd6\x13\x9b\x94\xfd\x86\x11\x9d\x6d\xd5\x82\x71\x6f\x7e\x1c\x7c\xbf\xbd\x55\xe4\x0d\xc8\xe9\xd5\xef\xbb\xab\x49\xf7\xf1\x71\xbc\x4f\xf7\x2d\x7c\x67\x32\xa9\x36\xd9\x70\xf8\x09\x28\x93\x3b\xeb\x6e\x4c\xb3\x38\x37\xc0\x92\xc3\x8b\x7d\x8c\x58\xba\x10\x74\x02\xaa\x2b\x61\xb8\x04\x8e\x32\x46\x6f\x44\xf8\xe5\x9d\xac\xdb\x10\x66\x64\x59\x7a\xfb\x0b\x47\x1b\x59\x82\xc8\xb8\x53\xe0\x2e\x3f\xc7\x97\xe7\x17\xaa\xf2\xef\x12\x98\xfb\x2d\xbb\x47\xe0\xdf\x22\x08\xa3\xf8\x82\x1b\x04\xd1\xc8\x92\xce\x71\xac\xbb\x03\xee\xcd\x81\xe0\xde\x80\x7b\x6b\xc0\xb9\x33\xe0\xd7\x2d\x33\x22\x5e\xac\x78\x97\x2c\xda\x25\x8a\x75\x45\x8d\x74\xf1\x6e\x09\x26\x35\xfc\xc0\xa0\x1a\xcf\x84\xe3\xc4\x82\x8f\xe2\xec\xc8\x12\x01\x49\xc4\x5c\x59\x14\x7e\x04\x84\x00\xc8\xa6\xee\x48\xd9\xd4\xfd\x79\xa8\x6c\xea\xbe\x4e\xd9\xd4\x25\x53\x36\x75\x5f\x1f\x2b\x1f\xec\x2f\x52\x36\x75\x09\x73\xcb\xa6\xee\x38\xc9\x2c\x11\xef\xd0\xd4\x85\x7e\x0e\x37\xb4\x47\x19\x1f\xb1\x89\x39\x42\xc5\xb0\x85\x19\x76\x11\x93\x41\xf1\x73\x13\x66\x0f\x6e\x9a\x3b\x27\xeb\x05\x17\x72\xd0\x2a\xe7\x30\x00\xaa\x51\x59\x5b\xc9\xb4\xc2\x19\x9c\xc6\xb7\xbe\x79\x96\xb7\x40\xf5\x32\x2d\xee\xc9\xf3\x69\x61\x2b\x9b\x63\x61\x73\x13\xd7\x18\x96\x35\x6a\x55\xb3\x16\x1c\xb5\x1d\x60\xbb\x81\x6f\x33\xb0\xed\x85\x68\xb6\x02\x6e\x39\x33\x66\x8c\xb2\x3b\x64\x8a\xc0\xec\x2a\x48\x16\x9f\xe6\xa8\x61\xa5\x86\x4f\x33\x35\x6e\x22\xf8\x34\xb3\x83\xfd\x9f\xd9\x9e\xd2\x59\x67\xbd\x4a\xf3\x52\x26\xbc\x74\xed\x29\xc4\x01\xfa\x94\xc6\x56\xfa\x52\xd7\xba\x0c\x96\x94\xb7\xc4\xef\x5a\x04\x32\x0f\xf4\x15\xad\x33\xd6\x19\x5a\xbe\x32\xba\x05\xd8\xf2\x8f\x33\xf9\x58\x2b\xef\xa9\xc5\xe8\xd0\xd2\xe0\x2d\xa8\xb3\xbf\x9b\xfd\xdd\xec\xef\x12\x29\xfb\xbb\x31\x47\xcc\xfe\xee\x40\xd9\xdf\xcd\xfe\xee\x0b\x94\xfd\xdd\xec\xef\x66\x7f\x37\xeb\xac\x17\x69\x5e\xca\xe4\x44\xfc\x5d\xa8\xf9\x31\x2a\x35\x58\xc3\x63\x59\x03\x60\x4e\x41\x2f\xba\xe7\x68\x63\xe3\xb9\x7f\x11\xf4\xf3\xb5\xc1\x50\x75\x35\xbd\xa5\x1c\x34\x7f\x46\x63\x64\x94\x1b\xaf\xb1\xee\xa5\x9c\xe6\x9c\xb8\x6a\xc5\xbb\xaa\x4e\x38\x2f\xb0\x87\x2a\x5e\x0f\x0a\xf7\x4d\x9d\xe6\xe3\x79\x5d\x52\x39\x36\x05\xdc\x19\x95\x75\x04\xa3\xdd\x50\x59\x83\xf4\x0f\xa5\x1e\x04\xed\x7a\x3a\xc5\xa9\xe0\xbb\xb6\xad\xf5\x4a\x37\x41\xd5\xbd\x24\x93\xf7\x1f\x8c\xad\xf0\xda\x05\x73\xcc\x3d\xd4\xa5\xf7\x0f\xbe\x0c\x75\xaa\xef\xe6\xc5\x93\xf0\x58\x12\xd3\xbc\x65\xc4\x90\x78\x52\x0c\xc7\x8e\xc0\xb8\x11\x1a\x33\x62\xe7\xbd\xd1\x19\x8b\xd7\x3f\x98\xc3\x30\xb2\x9e\xc1\xac\x0d\x95\xf7\x09\xe6\xf1\x11\xb7\x37\xf0\xdc\x0c\x52\xed\x6e\x4d\xa9\x3f\x94\xa5\xed\x9a\x90\xc4\x2a\x0d\xb6\xd6\x4e\x91\x79\x0f\xd0\x6b\x38\x8b\xea\xeb\x6b\x5d\x02\xb1\x01\xc6\x6e\xdd\xe8\xb4\x1d\x94\xd6\x9f\xac\x88\x17\xab\xec\x41\xb6\x7b\x06\xb7\x0e\x9b\xee\x80\x05\xcf\x0c\x78\x19\x92\xb5\xaf\x20\xbe\x98\xf4\x33\xa7\xdb\xda\x94\xea\xcd\x0d\xa2\x06\x4c\x68\x9b\xf0\xa8\x32\xbe\xeb\x55\x5b\xab\xf0\xe6\x06\x50\x05\x74\xa5\x83\xaa\x54\x50\xfb\x36\x13\x11\x78\xd5\x34\x36\xd0\xd5\xce\x1c\x73\x10\xc8\x3f\xf5\x84\x93\x16\x59\xbb\xb2\xee\x7c\xd0\x8e\x06\xb1\x0e\x7d\xbf\xbe\x0f\xda\x35\xaa\xfe\x7c\x11\xfb\x30\x60\x6d\x03\xcd\x88\x1a\x27\xfd\xdd\xa9\xeb\x6b\x53\xd2\xdb\xe4\x41\x73\x5a\x6a\x55\x87\xe5\xc7\xa5\x2e\x6f\x7e\xb7\x95\xa6\x02\xce\xa7\x4d\x3d\xa9\xad\xaa\xfe\xa1\x6a\xd5\x94\x49\xd8\x61\xf7\xf5\x97\x7d\x0c\xf5\x9b\x6a\x16\x34\xc9\x9b\x07\x6f\xb4\xd6\xd1\x62\x99\x49\xed\x1a\xcc\x4f\x63\x18\x04\x0d\xc0\x91\x03\xf1\xda\x87\x72\xec\x00\xec\xba\x67\xaa\x79\xa1\x5d\xb5\xc8\xf7\x2c\xc9\xcc\x92\xf5\xd1\xee\xbd\xb1\xcd\x87\xeb\x6b\xd3\x0c\x71\xe4\x6b\xb3\x48\x11\x46\x2e\x6b\xa3\x9b\x40\x53\x28\x9c\xf7\x17\xec\xcb\xa5\x42\xd0\xf9\x96\x1f\x25\x4a\xe3\xdc\x51\xa3\x89\x80\x3e\x88\x69\xba\xfa\x60\x9d\x5a\x44\x31\x20\x55\x7f\xb1\xfe\x9b\xad\xf6\x33\x08\x51\x0f\xc3\x6b\xb2\x5f\xc2\xd6\x16\xee\x70\xc8\x45\xb5\x73\x5b\x43\xbe\xfa\x80\x14\xff\x8d\xa1\xa5\x53\x42\x2f\xa5\x1e\x54\xc0\x4b\xa9\x8a\xf6\xac\xff\xa2\xbd\x3f\x22\x44\xfb\xc8\x42\x48\xbe\x18\x46\x36\x9c\x7e\x21\x3c\x47\x9f\x06\xbb\x00\x9e\xe3\x17\xd0\xbd\x32\x62\x0a\x3c\xb2\xf9\x2b\x15\xca\xbe\x05\xeb\x70\x52\x1f\xde\xf2\x3c\x89\x70\x57\x1f\x49\x4a\xd9\xad\x99\x7f\x19\x08\xc4\xf9\x51\x8b\xf3\x46\xd3\xde\x7b\xb6\xd9\x84\x43\xdb\xa7\x3d\xf7\x7f\x51\x57\x9a\x76\x4d\x76\xdc\xda\x63\xb0\x8e\xc8\x35\x1f\xe4\x29\x8f\x0d\xca\xab\xd8\xaf\x8c\x38\x4b\xc4\x7e\xfc\xbe\xc7\xca\x25\x0d\xb9\x03\x86\xb0\x3f\xbc\x43\x7b\xa3\x6d\x6d\x6d\x17\x6f\xbe\x88\xaa\x6e\x07\x77\x29\xee\x39\x72\xff\xa3\x51\xb7\xca\xd4\xea\x8a\x96\xd7\x40\x4e\x92\xc4\x93\x23\xe1\xa4\x48\x71\x32\x64\xeb\xf4\xb5\xb9\x8f\x6e\xdd\x52\x82\xf1\x23\xa5\x8d\xdb\xe5\x94\xc4\x9c\x92\x48\xbc\x01\xde\xef\x85\x8f\x84\xf2\x09\xe0\x95\x8f\x04\x5a\x56\xec\xb5\xa4\x5b\x55\x74\xaf\x7d\x24\x4e\xb0\x0a\xf1\xe2\x47\x62\x19\x95\x54\xaf\x5e\x34\x08\x9a\x36\x34\x49\x55\x0c\xc1\xfb\xdf\xfe\x18\xc8\xf9\x61\xa8\x1b\x40\x37\x17\xdc\xa4\x48\x48\x47\x17\x62\xad\x56\x48\xab\x63\xc1\x92\x39\x54\x67\x17\x47\xf6\x85\x78\x06\x25\x50\x70\x5f\x30\x99\x8a\x13\x7d\x18\x69\xd2\x1a\x58\x28\x2a\x31\x92\xa0\x04\x16\x8f\x52\x44\x18\x14\x8d\x5a\x8c\x74\x5c\x30\xe7\xdc\x6a\x5f\x6a\x74\x63\xfb\x04\x14\xe5\x18\x69\xc2\x7a\x5f\x30\xfa\x31\xd2\x69\x6b\x3d\x30\x4a\xf2\x74\x20\xe0\x93\xe8\x51\x13\xe1\x10\x09\xbf\x22\x45\x98\x2a\x76\xda\x56\x0e\x4c\xe4\xc0\xc4\x86\x72\x60\x22\x07\x26\x72\x60\xe2\x15\xca\x81\x89\x1c\x98\x78\x93\x72\x60\x62\xa4\x1c\x98\x78\xf3\xb1\x1c\x98\xc8\x81\x89\x98\x83\xe6\xc0\xc4\xeb\x94\x03\x13\x1b\x3a\x6d\xad\x97\x03\x13\x87\x0d\x4c\xac\x94\x0f\xfb\xfb\x1c\xe4\xd0\x44\x0e\x4d\x6c\x67\x92\x43\x13\x39\x34\x91\x43\x13\xaf\x3d\x92\x43\x13\x29\x07\xc9\xa1\x89\xb7\x28\x87\x26\x5e\x7a\x2c\x87\x26\x64\x8f\xe4\xd0\xc4\x0e\xe5\xd0\xc4\x1b\x94\x43\x13\x2f\x3f\x91\x43\x13\x6f\x4e\x76\x9e\x5a\x2f\x87\x26\x0e\x19\x9a\xa0\x08\xe7\xd9\x63\xc9\xc7\x9b\x3f\x59\x5b\xd9\x6f\xfe\x60\x08\x81\xbc\xf1\x13\xd2\x8c\xbb\xb6\x52\x41\x5f\x06\xa7\x82\x8e\x53\xce\xe2\x6c\x5d\x9b\x66\xf1\xa3\x7f\x71\xcc\x08\x4d\xab\x5c\xe8\xe5\xf6\xd0\xc1\x04\x32\xd7\x84\x3d\xc5\x4b\x45\xe4\x9a\xa9\x5b\xed\xfc\x9e\xf5\x21\x0c\xb7\x8f\x85\xcf\xc6\x71\x5e\xf9\xff\xbd\x53\xd5\xa1\x7c\xf5\xe5\x14\x86\xb8\x52\xe5\x4d\xd7\x5e\x3e\x76\x5b\x8e\xc1\xb3\xea\x3f\x9d\x8b\xca\xab\xa5\x6d\x82\x32\x0d\xad\x15\x2b\xa4\xb4\x56\xea\xfe\xa3\x6d\x1a\x5d\x92\x9b\x5f\xa1\x3d\xdb\xb0\xb8\x5a\x92\xc0\x21\x59\xc2\xae\xfe\x16\x73\xd7\xae\x3a\x2a\x42\x42\xde\xb2\x97\x7f\x4a\xd8\xb2\xd2\xd9\x66\xeb\x31\x45\x52\x8f\x45\xb1\x28\xa3\xf6\x61\xc8\xac\xf0\xe2\x7b\xe3\xb2\x42\x6d\x4b\xb5\xb7\xb7\x37\xd4\x2e\xe5\xce\x7f\xaa\x95\x0f\xa6\xfc\x47\x6d\xcb\x9b\xcb\x60\xf7\xab\x75\x74\x8c\xa2\x6f\x94\xbf\xaf\x2e\x79\x97\x60\xbb\x17\xb2\x74\x8a\xc9\x30\x64\x9c\x56\xd5\xd7\xa6\x26\x07\x12\x86\x11\x90\x6e\xf7\x83\xc1\xff\xf9\x3c\xd1\xca\x22\x9e\xf3\xd9\x66\x32\x71\xfd\x88\x47\x63\xe3\xdc\xf8\x9b\x14\x9c\x59\xaa\x72\x69\x9a\x45\x52\xb7\xac\x32\xfe\x26\xa9\x6b\xb9\x1e\xe0\xc7\xb7\xcf\xc9\xde\x9f\x58\x7c\x91\x1b\x05\xf8\xe5\xa9\x85\x10\x93\x91\x91\x15\xc8\x3f\xfe\xf1\xed\x73\x12\x79\xfa\xd5\xd0\x2e\xed\x51\x79\x4a\xaf\xf3\xbc\x2e\x9d\x26\x37\xe7\x2e\x38\x3c\xe3\x97\xca\xa5\x0c\xa3\x60\x3c\xb3\xfd\x60\xda\xcf\xc7\xc9\xc7\xe6\x9b\x52\xb7\xcb\xeb\x24\xe9\x00\x2b\xdb\x98\x60\xe9\x28\xa2\xf3\xbb\xe3\x45\xd0\x27\x67\xa7\xc2\x46\x99\xa2\xea\x84\x82\x25\x53\xfd\x10\xdf\x34\x19\x5a\x8e\x73\x77\x33\xc1\xb5\x31\x1c\x60\x46\x00\x66\x92\xea\x91\x51\xca\xa2\xeb\x05\xd3\x54\xb4\x4f\x9c\x99\xdb\x30\x95\x5c\xbd\x43\xa6\x7f\x17\x8e\x49\xd9\x77\x04\xfe\x4d\x91\x72\x6e\xd0\x9d\xad\xf4\xb5\xea\xea\x80\x38\x26\xd3\x78\xb5\xd0\xe1\x3b\x09\x2e\x13\x7c\x57\xcf\xbc\x8e\x5c\x01\x7b\x31\x10\xb7\x77\x32\x67\x5f\x06\x42\x61\xb0\x99\x8b\xc1\x41\x8e\x42\xee\xd3\xcf\xfa\x0f\x01\x2d\xbc\xa4\xb8\x51\x88\x96\x85\x97\xd4\xb6\xc3\xfd\x7a\xaa\x93\x08\x53\x6b\xde\x24\x51\x68\xce\xdc\x26\xb3\x84\x92\xdb\x0a\x7d\xcb\xff\xee\xaa\x36\x7e\x79\xf9\x5e\x0f\xf5\xa9\xe2\x99\x1f\x42\x70\xe6\xaa\x0b\xf4\xf5\x9a\x7b\x3e\x35\x18\x24\xea\x25\x25\xb6\x58\x57\xf6\xae\xb9\x53\xae\xfa\x70\x41\x0a\x14\x66\x7b\x85\x40\x3c\x7b\xe5\xda\xe8\xba\x02\xf4\x87\x64\xac\x62\x48\x0d\xff\xf7\xfe\x4c\x87\x97\x49\x90\xb1\xd7\x7f\xe6\x05\x6c\x8f\x88\x46\xe5\xe6\xfa\x6d\xe6\xca\x30\x9d\xe0\xd4\xbd\x6c\x47\xee\xd0\x98\xcb\xfe\xeb\xc4\x42\xb1\xc9\x38\x41\x31\x2b\x07\x12\xc8\x45\x65\x6e\x8d\x9f\x38\xd3\x77\x5c\xe5\x23\x10\xc5\x71\xaa\xe9\x25\x91\xe3\xc4\xcc\xcb\x2d\x81\x06\xd0\xab\x36\x3c\x9c\x9b\x24\x91\xba\x95\xae\x4c\xb7\x4a\x17\x3c\x36\xff\xd1\x5f\xcc\xca\x80\xc0\xf1\x69\x20\x3b\xae\x49\x38\xbe\x33\x8b\x75\xd6\xdd\xbb\x4b\x8e\x08\xca\x2d\x74\xf8\xe3\x8f\xdf\x8f\xf8\x5e\xe9\xee\xce\xd0\xd1\xba\xe6\x36\x7d\x4c\xaa\x6a\x7d\xff\xef\xde\xfd\xcb\xc1\x87\x9f\xc9\x62\x60\xe5\x73\xf7\x86\xf3\xcd\xcb\x49\x07\x1a\xae\x6b\x5b\xde\xa4\xb9\x10\xac\x54\x50\x3e\x71\xf2\xc7\xe3\x18\x3f\x7e\x24\xbb\xbd\x82\x56\x73\x51\xea\x8b\xb5\xf3\xee\x83\x6e\x42\xaa\x2c\xb8\xf7\x99\x9f\xd9\x56\x49\x19\x69\x5e\x99\x67\xc3\xc7\x46\xe7\x4e\x13\xbe\xe9\xd6\x26\x91\x75\xe3\xfa\x72\x64\x70\xfd\xa0\x0d\x6a\xad\x37\x89\x87\xb8\x35\x48\xe0\x2d\xe9\x3d\xf8\xf6\x7b\xa3\xb3\xc1\x00\x91\x9e\x26\x3b\x4c\x37\x55\x6b\x4d\x43\xaf\xd4\x67\xe8\xa7\x23\xce\xde\xc2\x78\x60\xb3\x98\x34\xa5\x41\x8b\x76\x40\xbc\xb2\xb4\x3e\x50\xa3\xc2\x28\xab\x24\xdd\x48\x4a\x75\x22\xf3\xe5\xa0\x2a\x4f\xb0\x2b\xc6\x27\xba\xf6\x2d\x97\xaa\xfd\xd0\x85\xe5\xb9\xf1\xa5\xbd\xd5\xa8\xae\x45\x6c\xfe\x71\xa8\x4b\x5a\xa9\x14\x7f\xa0\xc4\xe6\x92\x69\x4c\x30\x2a\x58\x28\x34\x8d\x8f\xf2\x67\xaa\x53\xe9\x91\x9b\x3e\x37\xeb\x23\x41\xd1\x83\xce\xc7\x1f\xd4\x6a\xad\x0b\x8a\xde\x5c\x61\x6e\x01\x9b\xec\x98\x27\x8c\x79\x0c\xe1\xc8\x8b\x9e\x43\x66\x71\x8c\x98\x3f\x29\x3b\x76\xb6\x96\x32\xd2\xef\x76\x3f\x30\xf6\xf1\xb4\xb2\x5d\x43\xb6\x1a\xa0\x55\x6b\xd2\x18\xad\x47\x6d\x52\xae\xa5\xd4\xa5\x8b\x97\x26\xb1\x76\xce\x1e\xe7\x1c\x9b\xf3\xda\x4d\xf0\x65\x88\x4e\x7f\xac\x95\x21\x5d\x74\xc1\x86\xd2\xfa\xc5\xef\x28\x20\xb1\xf9\xde\xe8\x3b\xb6\xb4\xc1\x36\xc7\x1f\x34\xab\x66\x92\x3e\xbf\x9e\x48\xf4\x3d\xb2\x2e\xdc\x59\x97\xf0\xc6\xe7\xe8\x6b\x47\xde\x45\x09\x45\xeb\xec\xfa\x77\xb4\x69\x9c\x4c\x4a\x22\xd8\xbd\x73\x92\xa4\x44\xa8\x98\x45\x3a\x58\xc1\x6f\x22\xc8\xee\x3d\xc8\x9f\xe9\x40\xac\x8e\x90\x03\x09\x12\xb7\x06\xc2\x33\x06\xb7\xc4\xcf\x1d\xdc\x12\x37\x8b\x70\x4b\x78\x3e\xe1\xcf\xa3\xb3\x97\x8f\x97\x88\x36\x10\xde\x05\x72\x7c\x0e\x4a\x14\xdb\x12\x33\xa5\x74\xf7\x61\xbc\x43\x26\xee\x30\xef\x8e\xc7\xec\x77\x8a\x55\xbc\xfc\x3c\x28\x72\x92\x3e\x7d\x12\x5e\x5b\x30\x71\x7e\x4b\xef\x47\x37\xf2\x32\xda\xe3\x8d\x5f\x08\xb3\xdc\xb7\x24\x56\xd5\x85\x2c\xf3\x3d\xea\x4c\x24\x9a\xaf\x10\xe4\xc5\x6f\x49\xa4\xce\x8a\x7c\xf2\x49\x79\x40\x96\x5d\xbf\xa5\x18\x02\x2a\xcc\xb8\xdf\x52\x14\x19\x65\x67\xe1\x47\x9e\x07\x3f\x33\x3f\xea\x44\xe4\xaa\x82\x95\xb7\xbf\x25\xa1\xa6\x90\x19\x79\xc7\x64\xac\x31\x07\x1d\xee\x5d\xb2\x01\xf3\x32\x65\xe7\xee\x48\x8f\xb8\xec\xdc\xed\xa7\xec\xdc\xbd\x4e\x5e\xbb\x5b\x53\xea\x0f\x65\x69\xbb\x26\x7c\xb7\x37\x1a\x74\x1f\x04\x65\xb9\x5d\x65\x74\x33\x69\x4d\x5e\x51\xe8\xfb\xd6\x38\xb5\xde\x9e\x4b\x5d\xda\x86\x5e\x5c\xb2\x25\xb4\xc3\xee\x53\x92\x68\x1b\x9e\x9e\x99\xbc\x82\x11\xd6\x0e\x2c\xde\x4d\x5e\x5c\x08\x76\x29\x1c\x62\xda\xb1\x2f\x08\xfe\xec\xec\xd5\xc3\x7e\x5c\x84\x82\x21\x89\x0b\x04\x2e\x6d\x86\x17\x44\x4e\x2f\x8c\x0f\x09\x93\x97\x83\x6e\x54\x93\xaa\xe4\x32\x69\x63\xbc\xf1\xf6\x6c\x16\x77\x67\xe3\x3e\x01\x17\x6d\xb1\xa5\xc8\x5d\x25\xb9\x60\x4b\x9d\x07\xb9\x22\xc2\x4a\xb2\xde\x7e\xa3\x1f\x7a\xbc\xd7\x54\xef\x3f\x81\xa6\xa6\xd6\xa6\xca\x54\xcb\x99\x86\xef\xa1\xe3\x68\x2f\xc0\xa4\x5f\xa6\xea\x4d\xea\x4b\x55\xeb\xcf\x5f\x8f\x50\xf9\x2d\x54\xd0\x77\x2a\xdd\xe1\xde\x3a\x1b\x06\x58\x8d\x73\xbb\x52\x26\x5d\x2e\x78\x16\xf4\x64\x82\xee\x7d\xfd\xa9\x51\x57\x35\xdd\x45\x61\x2c\xee\x80\x8f\x97\x14\x20\xe1\x71\x8c\x8b\x94\xe7\x8d\x7f\xf0\x41\xa7\xeb\x50\x92\x1c\x7a\x0f\xd3\xbc\x8f\xda\x83\xe6\xb9\x8d\xe2\x43\xfb\x75\xbf\x8e\xd1\xf5\x34\x39\x3a\x7d\x32\x49\x60\xf3\xeb\x4b\x97\xfb\xe8\x6e\x29\xf7\xd1\x4d\xe4\x54\xa4\x6e\x75\x3b\x01\x40\x08\xa6\xd9\x86\xb3\xcd\x26\xa9\x32\x39\xfa\x24\xe7\x77\x6b\xba\x25\xb7\x17\x76\x87\xf0\x6d\xba\x2a\x4c\x4c\x18\xba\xab\x24\x45\x5c\xb7\xbe\x5d\x6a\xa7\x8f\xb6\x9a\x60\x63\x00\xd7\xa6\x7c\x48\x96\xf2\xff\xd3\x38\x13\x30\x1f\x92\x03\x37\x41\xfd\x02\x31\x91\x0d\x60\x69\xf2\x4f\x5b\x5b\x7d\xd7\xab\xb6\x8e\x8c\xf1\x5c\xda\x26\x38\x5b\xd7\x69\xda\x2d\xa9\xa6\xb1\x41\x9d\x54\xef\x31\xac\xea\x54\x07\x55\xa9\xa0\xf2\xda\xc6\x5f\x5b\xdf\xea\x24\x7d\x34\xd5\xf5\xb5\x69\x4c\x20\xdb\x2c\x2c\x83\xc2\x56\xfa\x03\x38\x0e\x77\xac\xe2\x11\x75\x56\x3b\xa7\xab\xf3\x6e\xbd\x7b\x8f\x48\xde\xa6\x59\x7c\x5e\x34\x76\xf3\xe7\x4f\xf7\xba\xec\x90\x2e\x5b\x23\x31\xb3\xae\x64\x39\x57\xc3\x37\xf1\xf2\x1f\xe4\xa3\x17\x3d\xb6\x70\x28\x97\x5b\x64\x65\x41\x66\x2b\x3b\x6d\x6d\xa4\x18\xe9\xb5\x85\x2c\x8d\x6d\xa4\x28\x49\xad\x45\xef\xe8\x69\xa7\x82\x2c\xc3\x36\xea\x84\x6e\x55\xdd\x49\x17\x38\xc2\x5e\x0f\x14\xed\xab\x24\x89\x61\xbb\x24\x4d\x00\x2e\x04\x09\x75\xdb\xe7\x47\xa6\x11\xbc\x44\x5c\x72\x50\x44\x59\xd3\x5e\xbb\xf4\x69\xf7\x59\xb1\xf4\x94\x15\xcb\xdb\x94\x15\xcb\xeb\x94\x15\x4b\xa4\x49\xdc\x69\xb3\x58\x82\x55\x00\x23\xc9\x73\xcd\x65\x99\xe6\x7c\x46\x3a\xdb\xb1\x36\x19\x0f\x0f\x8b\x06\x3f\x28\xd8\x2a\x2e\x97\x8c\x4b\x94\xc6\x4f\x90\x1c\x26\x6b\x97\xe9\x52\xd7\x7d\x47\xd7\xef\xda\xf1\x34\x9d\x40\x45\x66\x77\xe1\x05\xca\xa7\xfa\x1b\x94\x4f\xf5\xb7\x28\x9f\xea\xcf\x5f\x92\xdd\x85\x91\xb2\x62\x79\x83\xb2\x62\x79\x8b\xb2\x62\x79\xfe\x92\x83\xb9\x0b\xfc\xe1\xb9\xdb\x78\xf6\xdc\x52\x64\xd9\xce\xf0\x27\xb3\x1e\x6b\x6d\x95\xef\x01\x84\xf7\x00\xdb\x25\x5c\xef\xf6\xa1\xac\xfb\x5a\x5d\xe9\x7a\x64\x3b\xbe\xee\x89\x73\x80\xc6\x73\x35\x8a\x58\x27\x45\x2c\xcb\xa0\x88\x63\x1d\x14\x71\x8f\xae\x78\x56\x42\xf4\x89\xc5\xb1\x16\x8a\x78\x16\x43\x11\xfb\x0b\x63\x59\x0e\x45\x24\xeb\xa1\x88\x60\x41\x14\xb1\xac\x88\x22\x96\x25\x51\x44\x5b\xe7\x5e\x3b\x7d\x59\xeb\x4b\x21\x37\xc9\xf2\x19\x5e\xa6\x68\x9c\x19\xd1\x7c\x13\xbd\xa4\x19\xf3\xf7\x0e\xe9\x17\x46\x59\x55\x39\xf7\x05\xdb\xda\xda\x2e\x1e\xfe\x25\x39\x40\x22\xf4\xd4\x92\xe8\x98\xb3\xdd\xaf\xc8\x57\x00\x18\x89\xae\x00\x9e\x1a\x9a\xf9\x1e\xe0\xb8\xfc\x84\x08\x06\x7a\xbe\x03\x78\x81\x72\xa8\xee\x0d\xca\xa1\xba\xb7\x28\x87\xea\x9e\xbf\x44\x7c\x07\x20\x35\xac\x63\x1b\xd5\x11\x4d\x3f\xc1\x02\x0b\x5f\x20\x35\xa2\x45\x12\x2c\x5e\x41\x19\x67\x89\x8d\x66\xd1\xfc\x25\x16\x9b\xc4\x50\x9e\xdc\xe8\x62\xc7\x8f\x9b\x60\x72\x0c\x39\xc7\x90\x63\x4e\xa4\xc8\x31\x64\x22\xe5\x18\x32\x46\x39\x86\x4c\xa7\x1c\x43\x7e\x9d\x72\x0c\x79\xca\x97\xe4\x18\xf2\xce\x1b\x72\x0c\x39\xc7\x90\x73\x0c\x79\x3f\xe5\x18\x72\xfc\x09\x14\x39\x86\xfc\x0a\xe5\x18\xf2\xdb\x94\x63\xc8\xaf\x53\x8e\x21\x6f\x29\xc7\x90\x53\xbd\x20\xc7\x90\x73\x0c\x19\x7c\x74\x82\x18\x32\xfc\x88\x72\x8b\x23\x6e\x49\xae\x9b\xdb\x44\x93\xe7\xd9\x42\x38\xb4\x0e\x53\x12\x7a\x2b\x62\xba\x91\x7e\x75\x16\x0c\xa3\xf3\x6d\xc9\x0d\xf2\xf4\xbf\xf4\x03\x0b\xa2\x50\x66\xc6\xb2\x8d\x57\xa1\x4e\xe6\xa1\x32\x45\x18\x98\x8f\xce\x54\xb0\x7a\x3c\xee\x92\x44\x95\x73\x8c\x3c\x81\x0a\xe7\x63\xda\xca\xf8\x51\x8a\x63\x2b\xe4\x0e\x21\x76\xed\xc1\x0e\x7a\x3e\x52\xad\x80\x47\xe4\xf0\xaa\x32\x5e\x89\x00\xa9\x2a\x64\x17\x11\x8c\xaa\x70\x6c\x19\x74\xea\xc1\x38\x95\x0d\x94\x2a\x60\xd4\xa1\xcf\x6e\x3e\x60\x27\x19\x38\x1f\xb0\xa9\x1e\xe4\xb4\x4b\x5f\xb3\x01\xe8\xc2\x24\x6d\x80\xde\x83\xe2\x5c\x74\x75\x7d\xd9\xcb\xe4\xbc\x20\x00\x26\xf2\x67\xa6\x58\xe6\xc6\x84\x8f\xe3\xf1\x38\xaf\x45\x46\x5c\x70\xd6\xb4\x06\x62\x6b\x31\x5e\xf0\xa2\xb4\xab\x95\x6a\x40\xc5\x73\x0c\x1f\x06\xc4\x1c\x06\x62\x7d\x94\xa8\xb9\x12\xf3\xa4\x13\x9d\x73\x8c\x88\x44\xac\x51\xf1\xe8\xc4\x40\xd2\xfb\x2e\x71\xa4\x22\xce\x34\x0a\xf9\x95\x5b\x94\x88\x3c\xdf\xc0\x8a\x38\x09\x99\xb1\xb5\x3b\x11\xae\xc9\x35\x90\xf4\x22\x4b\x72\x89\x25\xbe\x1a\xe1\xc7\x3a\x06\x8a\xc1\xd1\xd2\xb8\xc7\x40\x51\x78\x4a\x18\x03\x89\x36\x13\x39\x4f\xf1\xa3\x22\x03\x89\x39\x4b\x1e\x21\x19\x28\x06\x87\x45\x88\x96\x0c\x14\x85\xc9\x44\x91\x93\x88\xf3\x90\x45\x51\xa2\x4d\x44\xce\xeb\xec\xb8\xca\x40\x62\x56\x97\xc5\x58\x06\xca\xa6\x41\xc4\x49\x64\xd3\x20\x52\x03\x30\x66\x6c\x9c\xdd\x01\x0c\x89\xd8\x0c\x24\x0c\x43\x31\x5c\x42\xdc\x07\x99\xdc\x2d\xdc\xb8\x2b\x4c\x85\x24\x55\x46\x12\x25\x20\x56\x00\x52\xe1\x97\x0a\xbe\x48\xf0\x5a\xa7\xaf\xcd\xfd\xe4\xce\x35\x8c\xc6\xb7\x4b\x99\x5b\x0e\xc3\x2d\x13\xab\xbe\x3e\x7c\x3d\x49\x22\xca\x26\x50\x3e\xc0\xd5\x4d\x32\x66\x6d\xae\x75\xf9\x50\xd6\xe0\x17\xf2\x79\xbf\xb5\x3e\x5c\x06\xe5\x18\xc5\x14\x32\x81\xd3\xf7\x34\xfc\xad\xd8\xe3\x16\xdc\x50\xf1\x2e\x9d\x46\x31\x92\xd0\x36\x5b\x86\xd0\xfe\x93\x06\x9a\xfd\x9c\xe4\x9b\xb8\xb4\x9e\x39\x76\x11\x67\x03\xd6\xdf\xff\x3f\x5a\x55\xc0\xf5\xce\x73\x9a\x4d\x0d\x85\xd4\x63\x2a\xa2\xd7\x2c\xcc\x64\x36\x71\x2a\x04\x18\x3e\xc5\xd3\x17\xf4\x4b\x22\xd6\x38\x07\xaf\x0f\xc0\x71\xcd\x9f\x8f\x2f\xda\xd2\xd6\x72\xce\xba\x91\x54\xf3\xf0\x95\x1d\x5c\xe9\xf3\xc1\x45\xb5\x83\x3f\xbf\x47\xc8\xdc\xf7\x67\x37\xdd\x95\x76\x8d\x0e\xda\x9f\x99\x26\x9c\x59\x77\x36\xbc\xf2\x97\x22\x38\x36\xbb\xf9\x72\xa9\x25\xca\xe4\xe0\xd5\xad\x6b\x1e\x39\xc4\x89\x1a\xca\xf6\xd2\x96\x37\xef\xf8\x4c\xcd\xd2\xb9\xa5\x24\xd2\x79\x9c\xa2\x21\x78\xb8\x75\xfa\x32\xd8\x36\xbb\x37\x00\x65\xf7\x26\xbb\x37\xd9\xbd\x79\x46\xd9\xbd\x79\x85\xb2\x7b\x33\x52\x76\x6f\x4e\xdd\x80\xca\xee\x4d\x76\x6f\xb2\x74\xce\x55\x3a\x8f\x53\x34\xa6\x2d\x62\x29\x8a\xda\xdc\xea\x46\x7b\x7f\xe1\xec\xd5\x64\x37\x4d\x3c\x8f\x48\x5a\x9f\x28\xf0\x84\x8e\xb7\x61\x86\xa4\xea\x58\x99\xba\x73\xfa\xfb\xd2\x69\xbf\xb4\x35\x63\xe9\x64\xfd\xd5\x24\x2a\x8a\xed\xb1\xc9\x98\x8c\x7f\xaa\x08\x99\x44\xec\xa1\x89\x38\x3c\x86\x67\x36\x8b\x34\x3d\xb1\x37\x36\x8b\xec\x53\x81\x07\x26\xf3\xbe\x22\xf5\x45\xe2\x7a\x5d\x7c\x8f\x4b\xb8\x6d\x7c\x5b\x4e\x60\xc7\xc5\xb0\xe1\x22\xd8\x6f\x09\x6c\x37\x89\x57\x75\xb0\x52\x7a\x96\xb9\x28\x10\x18\xd3\x98\x60\x54\x7d\xae\x6b\xf5\x70\xa9\x4b\xdb\x70\xd0\xba\x0f\x77\x40\xb7\xda\x19\x5b\x1d\xe1\xc4\x7d\x57\x96\xda\xfb\xa3\xb4\x8a\x04\x5e\xf7\x91\xda\x45\x59\x33\x47\xd4\xcc\xc7\xa4\x1e\x83\x59\x69\xdb\x85\xa3\x53\x30\xcc\x4f\x9e\xac\xf9\xdb\x7a\x1f\xa7\xe8\x18\x20\x2c\x36\x18\x8a\xeb\x2e\x98\xd2\x2f\xed\x0b\x2e\x13\xff\xb5\xb2\xfc\x7c\x31\x79\xc6\xfd\x7a\xd8\xe3\x5c\xb0\x83\xf4\x1c\x68\x9d\x0d\xb6\xb4\xac\x34\x7d\xc1\xc0\xfc\x52\xa6\x27\x52\x81\x6a\xd3\x69\x13\xfb\x9d\x56\x95\xc9\x51\xc9\x7d\x94\xa3\x92\x47\x66\x7f\xe7\xa8\x24\x48\x39\x2a\x59\xe4\xa8\x64\x8e\x4a\x66\xdf\x17\xa5\x1c\x95\x2c\x72\x54\x32\x47\x25\x01\xca\x51\x49\x80\xb2\x66\x9e\x8f\x66\x3e\x26\xf5\xf8\xce\xa2\x92\x63\x1b\x24\x18\x17\x9a\x2b\xd5\xb5\x59\x19\x34\x3c\x59\x44\x44\x19\x12\x49\x87\xb0\xc1\x8d\xf6\xef\xef\xcb\x99\x0f\x7a\x5d\x76\xce\x84\x87\x8f\xb6\x09\xfa\x1e\x54\xc5\x7c\xee\x54\x75\x6d\xef\x2e\x9c\xb9\x35\xb5\x5e\xe8\x4f\xbe\x54\xb5\xe2\x00\x16\xca\x7a\x7c\x94\xaa\x55\x57\xa6\x36\xbc\x9d\x16\x02\x4a\x54\xef\x2e\xd4\x55\x14\x95\xe3\xd4\x9c\x15\x47\xfd\xd5\xa2\x2a\xbd\x47\x01\x61\xb0\x8a\x44\x2e\x5a\x67\xcb\xdf\x6c\xd7\x30\x2c\x33\x51\x3c\x5f\x55\x5f\x9b\xfa\xe1\x9b\xb5\xe1\x57\x53\x6b\xff\xe0\x83\x66\x74\x14\x96\x7c\xb9\xeb\x9a\x0f\xfe\x9f\xce\x76\x0c\x36\xdd\xb1\x48\xfe\xfb\xbf\x26\x75\x1b\xfa\x59\xff\x6e\x9b\xf5\xca\x1d\x60\xbd\x7e\x78\xcd\x68\x98\x79\xb8\xe5\xf2\xfa\x8b\x69\xba\xfb\xaf\x7d\x77\xa9\xe9\xe1\x6e\xf5\xad\x16\x81\x50\xf0\x91\x59\x2c\xda\x41\x29\xd2\xc0\xfd\xe3\x87\x18\xb8\x63\x71\xa6\x78\x60\x81\xca\xbf\x33\x4d\x65\xef\xfc\x81\x78\x73\xb1\xf2\xea\xa3\xd3\x95\x6e\x82\x51\xf5\x65\xcb\xad\xd6\x16\x6e\xdb\xf3\x69\x1c\x0c\x49\x69\xa3\xe0\x0e\x34\x83\xc9\xfd\x81\xa0\x5c\xe8\xda\x7c\xdb\xfc\x16\xbd\x4b\x63\x34\xdf\x36\xc3\x94\x6f\x9b\xf3\x6d\x73\xbe\x6d\xce\xb7\xcd\x64\xca\x77\x1a\x2f\x50\xbe\x6d\x26\x50\xbe\x6d\xce\xb7\xcd\xf9\xb6\x79\x1f\x65\xcd\x9c\x6f\x9b\x8f\x4a\xc1\xb0\xbd\xf8\xca\x80\x77\x69\xdc\x28\x70\x3f\xd4\xd7\x06\x45\x2a\xe2\x0e\x17\xb4\x5b\x99\xa6\xbf\x2b\xfc\x4d\x7b\xaf\x16\x1a\x47\x04\x63\x8a\xd2\x0b\x43\x4f\xd7\x02\x3f\x04\xd6\x38\xf8\x02\xdf\xda\xba\x5b\xe9\x73\x7d\x6b\xe0\x64\x85\xc9\xab\x9b\xaa\x7e\x96\x5c\x48\x38\x91\x46\x3d\x40\xa1\x0d\xbf\xde\x65\xbb\x4e\xf0\xa3\xf3\x47\xfd\x19\x18\xb6\xbf\xae\x9c\x3b\xbf\xae\xd6\x93\x3c\x08\xbb\x0e\x23\x3b\xdb\xaa\x05\x33\xcf\xe2\xf8\xe4\x65\x7b\xa3\xcc\x1f\x98\x8b\x1d\xe3\xbb\xab\x83\xec\xf3\xe3\xb8\x9f\xee\x5b\xd6\xbd\xd7\x41\xb4\xd3\x46\x2a\x4e\x50\x39\xdd\x59\x77\x63\x9a\xc5\xb9\x01\xb7\x83\xb5\x11\xa7\x80\xc3\x0f\x43\xfd\x70\xf4\x31\x0b\xde\x87\xab\xf8\x39\xb7\x5b\xb2\x92\x6f\xf6\xcd\x96\x20\xea\x1f\x23\x43\x80\x15\xe9\x65\x0b\x34\xf3\x4e\x48\xb2\x35\xdc\xb8\x87\xac\x98\x5d\x76\x17\x24\xe0\x09\xf9\x3d\x90\xec\x16\x28\xc2\xed\x8b\xf0\x06\x48\x3c\x03\x69\xe7\x4e\xf6\xdd\x8f\xe4\xe6\x47\x78\xef\x23\xb9\xf5\xe1\xde\xf9\xc8\xfa\x1f\x30\xa3\x8a\xec\x98\xa2\x3c\xa2\x28\x8e\x27\x46\x8f\x26\xf2\x6f\x79\x0e\x62\xb4\x32\x02\x98\x7c\xd3\x93\x1b\xa7\x3f\xba\xb3\x2a\x4b\x92\x58\x92\x8e\x81\xa5\x59\x8f\x31\x20\x6b\xb2\xc9\xfe\x16\x65\x93\x9d\x32\x64\x36\xd9\x31\xca\x26\x7b\x36\xd9\x21\xca\x26\x3b\xf6\x86\xb9\x18\x1a\xd9\x64\x7f\xeb\xc1\x6c\xb2\xef\xa1\x2c\x49\x1b\x3a\x06\x96\x66\x87\xfe\x81\x47\x58\x00\x2c\x1c\x81\x41\xed\x7b\xae\x50\x32\xed\x7a\xa6\xfd\x26\x60\x6a\xde\xf9\xcd\x62\x25\x49\x19\x09\x37\x0b\x8b\xa7\x30\x18\xde\x06\x97\x51\x38\x9a\x9b\xbd\xdd\x02\xef\x82\xc9\x99\x32\xaf\x82\xef\x51\x08\xd5\xbc\xc0\x93\x38\x58\xde\x39\xcb\x7b\xe0\x7a\x0e\x92\x84\x4c\xa6\xc7\xc0\xf1\x16\xd8\x9b\xc1\xb1\x6d\x58\x76\x8d\xcc\xa6\x11\xd9\x33\x51\x6d\x19\x9e\x47\xc0\x9c\x3d\x47\x4c\x60\x93\x89\xc5\xe2\xc2\x62\x8c\x69\x8f\x39\x76\xe9\xc5\xb4\xd3\x94\x14\x5a\x4c\x3b\x53\x96\xef\x77\x14\x96\x43\xd6\x87\x90\x3e\x9c\xaf\x82\xe2\x97\x43\x4c\x29\x4a\xf0\xa7\x35\xb6\xd2\x97\xba\xd6\x65\xb0\xe4\x7c\x3b\x59\xd7\x37\x06\xa3\xc1\x5f\xd5\x3a\x63\x9d\xa1\xe7\xff\x73\xb6\x08\xdf\x9e\x71\x56\x1f\x6b\xe5\x3d\xd2\x1c\x03\x5e\x32\x1e\x04\x42\x8e\x0b\x8c\x94\xe3\x02\x6f\x4f\x34\xc7\x05\x1e\x07\xcb\x71\x01\x1a\xe5\xb8\xc0\x1e\xca\x71\x81\xe7\xf4\x8e\xed\xe0\x1c\x17\x78\xa4\x1c\x17\x88\x3f\xcd\x1c\x17\x78\x91\x72\x5c\xe0\xf5\xa7\x0f\xad\x0f\xe7\xab\xa0\x4e\x34\x2e\x00\x37\xdf\xe7\x48\x1d\xde\x70\x5f\xde\x70\x9e\xdb\x4c\x80\xc3\x1b\x9c\xc6\xfa\xc7\xf4\x85\xf0\x23\x6b\xa3\xa6\xea\x6a\xac\x35\x28\xfc\x3d\xcc\x06\xfd\x1c\x0e\xbe\xc6\x3b\x5f\x73\x9b\x38\xf3\xd4\x38\xaf\x3b\xf7\x01\xe6\xc8\xe8\xc5\xcd\xab\x37\x67\xf5\xdf\x9e\x76\x41\xf8\xdd\xb6\xb9\xb6\x0f\xab\xc3\x36\xdb\x34\xe0\x74\xd5\x66\x0f\xd6\x3f\x38\xd5\x60\x9c\xee\xd9\x53\x9e\x48\xbe\x6b\xdb\x5a\xaf\x74\x13\x54\xdd\x6b\x05\x88\x4f\x18\x31\x2b\x7e\xcb\x7a\xae\xd9\xca\x09\x87\xf8\x07\x5f\x86\x3a\xf5\x5a\xf0\x63\x77\xbc\xb8\x9d\xc0\x74\x67\xc6\xeb\xf8\x1a\x81\x15\xa7\x63\xc4\xe8\x38\xf1\x39\x51\xfe\x27\xc6\x88\xfc\x5e\xf6\x5c\xe6\x92\xf7\xaf\x67\x6f\x7a\x9c\x9e\xf5\x7c\x9e\x93\xf4\xa9\x9f\xb3\x91\xad\xdd\xad\x29\xf5\x87\xb2\xb4\x5d\x13\x92\x5a\xda\xc1\xd6\xda\x29\x88\x57\x41\xbd\xc9\x63\x6b\x7d\x7d\xad\x4b\x30\xbe\xc2\xdc\xd1\x1b\x3d\x4d\x37\xbb\xf5\x32\x28\xe0\x92\x5e\x34\xd8\x76\x5f\x59\xed\x1f\xa7\x3f\xf4\x19\xe7\x15\x6b\x69\x92\xb7\xf3\x01\x06\x20\xff\xb4\xb5\xd5\xbf\xfb\x8e\x6f\x1f\x6b\x65\x56\x14\x15\x8f\x48\x9d\xea\x83\xc9\xbf\xd9\x8a\x26\xa2\x80\xfc\x83\x3b\x84\x2c\x74\xa5\x82\xba\xec\x03\x5c\x94\xa9\xa0\x4a\x48\xb5\x06\x72\xb9\x61\x56\xbc\x31\xf4\x54\x08\xf8\xe5\x88\xb1\x09\xbe\x1c\x31\xf3\xce\xfa\xaf\x24\xfd\x90\x68\x05\x42\xc2\x0b\x05\x40\x51\x06\xc1\x02\x9f\xf3\xcf\xb7\x42\x03\x9d\x73\xff\x22\xe8\xe7\x1e\x48\x9f\x43\x19\x65\xa5\x42\xd9\xb7\x26\xd4\xde\xcf\xce\xca\x3a\x49\xd3\xa7\xb7\x24\xa6\xe8\x8a\x2a\x0b\x68\x81\x7e\x25\xa7\xcf\xe1\x8d\xa6\xbf\xff\x6c\xb3\x49\xf3\x31\xa5\x1e\xa5\xe7\x8b\xba\xd2\xf4\xd0\xce\x69\x69\xa6\x60\x9d\x5a\x68\x28\xdf\x14\xfa\x84\xb1\x91\x70\x95\xea\xd5\x09\x66\x4d\x5e\x41\xa7\xf7\xe7\x03\x20\x8a\xb3\x73\xa4\x08\x7b\x8a\x4f\xf1\x7f\x8f\xf9\x21\x57\x1d\x35\x25\x03\xda\x71\xdd\x54\xad\x35\x34\x04\x5d\xe8\xc5\xad\xd3\xd7\xe6\x3e\xfa\x6b\x9d\x5e\x10\xdb\x42\x27\xd9\xd2\x41\xb6\x2f\x75\xe9\x34\x29\xc8\x43\x9e\xc4\xe3\x9b\xbf\x13\xee\x4d\xe8\xef\xbc\x33\xd7\x51\x85\xa9\xb4\x4d\x50\xa6\xa1\xdd\xb6\x1c\x9e\x5b\x88\xdb\x4a\xfa\xd9\xda\x77\xbd\x52\xfe\x71\xeb\xdf\x9a\x28\x75\x41\x2b\x7d\xad\xba\x3a\x50\xf4\x38\x92\xb4\x42\x0f\xe6\x90\x0c\x28\xa2\x95\x85\xd9\xb2\x64\x1b\x16\x3c\xda\x57\xc4\x33\x91\x93\x06\x84\x06\xc9\xe8\x89\xbe\xa0\xfe\xa3\xda\x94\x34\x5b\xf2\xac\x9f\xe8\xde\x9f\xc1\x11\xb2\xfd\xf6\xa2\x6d\x07\x93\x8f\xa6\xee\x28\x09\x07\x3e\xb6\x5a\x26\x7d\xf5\x52\xd5\xe1\xed\xfd\xa0\x7d\x81\x69\x4c\x14\xbd\xd2\x5a\x1f\x16\x4e\xfb\x3f\x3e\x7c\x89\x1a\x71\xfc\x4f\xe7\x92\xc4\xed\xa0\x43\xa5\xe0\xd8\xfb\x2b\x75\xff\xd1\x36\x8d\x2e\xa1\x3b\x13\x4e\x3c\x9d\x53\x9e\x46\x3d\xf8\x0a\x6e\x70\x96\xe8\xb7\x5c\xfd\x2d\xc5\xee\xd2\xcd\xd6\x22\x6f\x6d\xb2\xad\x55\xe5\x4d\xd7\x26\x71\x46\x17\x65\x92\x58\x6d\x66\x9b\x19\xb0\x4d\x6d\xcb\xfd\xc7\x73\xc1\xb9\xaa\xb9\xf3\x9f\x6a\xe5\x83\x29\xff\x51\xdb\xf2\xe6\x32\x58\xda\xd1\xc2\x19\xab\xe8\x13\x46\x29\x7e\xd5\x2e\xb1\xe2\x84\xad\x72\xc1\xa0\xa8\x45\xd3\xd6\x76\x70\x90\x86\x78\x19\x9f\x43\x28\xe9\xf3\x79\xe2\x55\x47\x63\xac\x67\x9b\x89\xa5\x09\x15\x3e\x1a\x4a\xe7\xc6\xdf\xa4\xe4\xe8\x52\x95\x4b\xd3\x2c\xa8\x41\xc0\x91\x58\x6c\x5d\x19\x7f\x83\x66\xeb\xb0\x07\xfa\xf1\xed\x73\xf2\x71\x26\x52\x07\xc8\x7d\x31\x7b\x90\xa9\x04\x1a\x97\xb3\x91\x6d\xa0\x07\x7e\x7c\xfb\x9c\x54\x2e\x7f\x35\x69\x11\x9b\xa6\xd3\xaf\x74\x67\xf7\xf9\x58\x20\x8f\xf9\xa5\x72\xe4\x4b\x01\xc1\x48\x38\x8f\x6d\x17\x81\xfe\xc8\xf8\x31\xa9\xf8\xac\xd4\xed\xf2\x3a\x69\x05\xd7\xca\x36\x26\x58\xac\xfb\x01\xe3\xb6\x54\x94\x6d\x89\xdd\x94\xa2\x55\xf1\xb3\x56\x95\xa3\x6c\x22\xba\xa6\x60\xcb\x66\x3f\xd4\x37\x0d\x95\xa8\x72\xd3\x96\x39\x19\xf1\x53\x16\x5a\xa0\x85\x20\x93\xe8\xa8\x51\x5a\x93\xe9\x1b\xd3\x54\xf4\xcf\x9e\xb1\xfb\x34\xb5\x7c\x66\xa1\xe9\xe9\xdd\x3a\x6a\xa5\x6d\xae\xcd\xe2\x37\x45\xce\x18\xe5\x70\x00\x70\xcb\xb7\x4b\xd3\x46\x05\x60\xe3\x60\xd2\x3a\x2c\x38\xe3\xad\x90\x95\x61\xd1\x6f\x11\x77\x89\xbb\x63\x03\x71\x53\xf0\x0b\x36\x30\xc9\xe4\x55\x63\x48\x66\x5b\x41\xbf\x99\xdc\xa5\x09\x6b\xc6\x50\xad\xce\x5a\x6e\xea\x15\xe9\xf3\x81\xb0\x13\x11\x57\x9d\xde\x24\x55\x9a\xce\xdc\x26\xb7\xe4\x26\xb3\x6b\x1a\x5b\xe9\x8b\xee\xaa\x36\x7e\x79\x99\x0d\x8f\x2d\x4d\x1d\x8b\xfe\x10\x82\x33\x57\x5d\xc0\xd6\xf1\x98\x5a\x83\x30\x82\x74\xbd\xa4\xa5\x52\x13\x95\xbd\x6b\xee\x94\xab\x3e\x5c\x90\x83\xba\xd9\xc6\x62\x3f\x20\xb1\xb1\xae\x8d\xae\x2b\x50\x2f\x49\xc7\x2c\x86\xa2\xad\x7f\x6b\xe7\xc1\x3b\xb3\x2d\x09\xcc\xbc\x62\xfc\xec\x0b\x26\xb0\x9b\x70\x74\x49\x97\xcc\xcd\xbc\x99\x66\x1f\xab\xe5\x65\xb6\x8b\xf7\xd0\x58\xbd\xf6\xeb\x81\x84\x69\x93\x49\xc5\xa9\xad\x1f\x48\x28\x4f\x95\xb9\x35\x1e\xad\x19\x8a\x34\xf6\xb8\xfa\x47\x26\xca\xe3\xb4\xa7\x93\x64\xae\x03\x37\x5f\x77\x0c\x1e\x48\xaf\xda\xf0\x70\x6e\x92\x46\x4d\x57\xba\x32\xdd\x2a\xfd\x05\x80\xf9\x8f\xfe\x62\x56\x6f\xe7\x8e\x46\x18\x09\x5e\xe3\x6b\x72\x4f\x93\x19\xc7\xa4\xeb\x2e\x27\xf3\xac\x9f\x52\x6e\xa1\xc3\x1f\x7f\xfc\x7e\x42\x77\x8e\x77\x77\x06\x6b\xb1\x31\xe7\xcf\xc1\xa5\xb3\xd6\xf7\x43\x7f\x8a\x1c\xc8\xa1\x3e\x64\xf1\x06\x51\xc7\x14\x3d\xc8\x37\x70\x3b\xf4\x7e\x83\x36\xd7\xb5\x2d\x6f\xd2\x5e\x28\x57\x2a\x28\x3f\x51\xf2\xd2\xe3\x58\x3f\x7e\x24\xbf\xe1\x84\x57\x7a\x51\xea\x0b\xed\xbc\xf1\x41\x37\x21\x75\xc6\x68\xce\x81\xde\x4c\xb1\x9a\x84\xf1\xe6\x9b\x99\x39\x2c\x40\x32\xae\x36\xe1\x9b\x6e\x6d\x52\xfd\x61\x5c\xdf\xfc\x85\xb1\xb6\xf0\x26\xb6\xd6\x9b\x89\x86\xba\x35\x68\x20\x74\x92\x3c\x8c\xed\x1a\x24\x63\x99\xba\xf3\x41\xbb\xb4\x59\x93\x63\xa7\x03\xc8\x78\x60\xea\xc0\x13\xca\x66\xc4\xf9\x65\xb3\xd0\x74\x85\x44\x8f\x2c\xc1\xbc\xb5\xb4\x3e\x20\x11\x7e\x0e\x6b\x4d\xb2\xe1\x21\xfd\xf1\xcd\x38\x4a\x12\xee\x9c\xf1\x89\xd3\x0c\xca\xa5\x6a\x3f\x74\x61\x79\x6e\x7c\x69\x6f\x35\x47\xc7\xa3\x7e\xcf\x38\xe4\xe5\xd0\x5a\x2c\xfd\x80\x13\x99\x7d\x03\x62\x54\xb0\xf0\xd5\x03\x6f\xb4\x3f\x53\x9f\x92\x8f\xdc\xf7\xb9\x59\x1f\x4b\x0a\xbb\x54\x38\xbd\x40\x63\x6b\x5d\x50\xc9\x3b\xb5\x4f\x18\xfb\xcb\x81\x8e\x0d\x4d\x19\x5f\x1a\xc2\xc8\x17\x3d\x37\xcd\xee\x28\x33\x7f\x52\x77\xf5\x6c\x2d\xad\xe4\xdf\xee\x7e\x74\xaa\xa3\x72\x65\xbb\x06\xb2\x72\xe0\x15\x6d\xd2\x1a\xe7\x27\x65\x32\x0f\xdd\xe0\x67\x58\x8a\x02\x58\x6b\x67\x8f\xdf\x90\x8a\x63\xdb\x4d\xe0\x6b\xa7\x4b\x76\x52\x63\x6f\x3d\xc0\x3b\x0f\xfc\x6c\xd6\x20\xd9\xae\x2e\x6d\xb0\xcd\xe9\x05\x35\xab\x19\x96\xc7\xac\x27\x95\x6c\x1f\xad\x0b\x77\xd6\x4d\x70\x43\x78\x72\xb5\x65\xef\xb6\x9c\xaa\x75\x76\xfd\x5b\xfa\x94\x4e\x36\xd5\x17\x04\xf1\x2c\xa6\x4e\xf6\x85\x0b\xdf\x62\x0c\x5a\xf0\xe1\xf7\x85\x8f\x4a\x67\x3d\x10\xab\x0a\x6d\x4b\xc2\xe4\xc6\x81\x78\x19\xb8\x5b\x92\xe5\xe2\x6e\x49\x92\x95\xbb\x25\x5e\x7e\xee\xcf\xb3\x10\x2d\x29\x3f\x71\x73\x20\xbc\xaa\x6d\xf7\x59\x38\xa1\x72\x4b\x82\x34\xee\xdd\x17\x60\x51\x93\x2d\xf1\xa0\xf1\x0a\xf9\xa6\x71\x2a\xe2\x7e\x1e\x1c\x3d\xd1\x9f\x3e\xcd\x5a\x73\x46\x21\xcc\x96\xde\xaf\xce\xe5\x57\xa5\xc4\x9d\x47\x11\xa1\x52\x65\x4b\x51\x8e\x82\x42\x5e\xbd\x12\x7d\x46\x52\x6d\x5a\x08\x6b\x5b\xb6\x24\x56\x8f\x45\x3e\x6d\x5f\x9c\x85\x90\x47\xe4\x15\x32\x5b\x8a\x25\xd8\x11\xaa\x66\xb6\x14\x4d\xb6\x45\x95\x34\x09\xe6\x23\xab\xae\x89\x3e\xa1\x38\xaa\x86\x5d\x7b\xb3\xa5\x08\x9a\x46\x6e\x84\x1e\xab\x21\x29\x18\xdc\xef\xc5\x61\x78\x99\xde\xaf\x31\x95\x1d\xd8\x2d\x9d\xcc\x91\x9a\x1d\xd8\xec\xc0\x82\x4f\x33\xd5\xed\x2e\xbc\xf5\x77\x7b\xa3\x19\x6e\x90\xb0\x55\x40\x57\x19\xdd\x1c\xa4\xbe\xb7\x28\xf4\x7d\x6b\x04\xd8\xcc\x23\xf1\x31\x9a\x47\x92\x6a\x2e\xbe\xce\x3a\x58\x85\x34\x4b\xcb\xb0\x79\x7d\xb2\xa2\x65\x46\xb7\xdb\xe1\x5e\x21\xd5\x05\xce\x9f\x9d\xbd\x7a\x08\x49\x6f\xfb\x16\x08\x40\x73\x31\xff\xcb\x3e\xa7\x17\xc6\x87\x09\x8a\x03\x82\x6e\x14\x0d\xa4\x4f\x34\xcc\x04\x0d\x54\xc7\x1b\xd2\xd9\xdd\x8f\x8e\x7b\x09\x5e\xa8\xa6\x92\x46\x77\x95\xf4\x22\x75\xaa\xbc\xe0\x95\x5a\x4c\xd0\x69\x5f\x3f\xac\x7f\x9f\x7c\x9c\x13\x6c\xbc\x6d\x6d\xea\x4c\xcc\x9c\x6d\xbb\x43\x53\x66\xdb\xce\xb2\x1b\x76\xaf\x10\xc8\xbf\x4e\xdd\x3b\xdb\x97\xaa\xd6\x9f\xbf\x9e\x80\xa2\x5d\xa8\xa0\xef\x54\x7a\x43\xa4\x75\x36\x0c\xb0\x59\xe7\x76\xa5\x4c\xfa\x3a\x8c\xac\x3c\x36\x34\xa5\xf2\xf0\xbe\xfe\xd4\xa8\xab\x1a\x73\xd9\x98\x0b\x3f\x60\x1f\x4f\x02\x66\xf4\x38\xd6\xc5\x14\xe7\x9e\x7f\xf0\x41\xa7\xef\x00\x85\x81\xb6\x0b\x86\xc2\xb5\xfd\xa3\x56\xa2\x7b\xb8\xa3\x08\xd2\x9f\xe8\xd7\x38\xd9\xf9\x00\xdd\x32\x9c\x6c\x42\xe3\xbc\x7b\x97\xe6\xfe\xf0\x6f\x53\xee\x0f\x3f\xd2\x64\xb1\xbd\xe9\x5a\xb7\x4f\x08\x04\x86\x6b\xcf\xe1\xac\xb5\x49\x2b\xc7\x4e\xae\x80\x20\x9b\xa1\x3b\x34\x99\x6d\xb3\x3b\x94\x6f\xd3\x57\x7c\xe3\xc2\xd4\x5d\x25\x2d\xf0\xbc\xf5\xed\x52\x3b\x7d\x32\x15\x3f\x1b\x43\xbf\x36\xe5\x43\xf2\x72\x9c\x9f\xc6\x9b\x90\x61\xd1\xfc\xcf\x09\x6b\x8d\x80\x24\x4e\x50\x1c\xa0\x9f\xb7\x26\x90\xe2\x60\x28\x33\x0f\x85\xdd\x9f\x9b\xb2\xee\xbc\xb9\x25\xef\x37\x7e\x2a\x0c\x03\x7d\x37\x74\x9e\x82\x37\x79\x3b\x44\x6d\x9a\xd4\xc3\xfc\x2f\x5d\x1c\xc1\x11\x20\xbe\x70\xda\x93\x5c\x3b\x94\x2f\x3a\x47\xb6\xfa\x52\x7e\x9e\xff\x7b\x8a\x8f\x4b\x0c\xcc\x3f\xf6\x8e\x4a\x36\x40\x52\x74\xfd\xe1\x42\x98\x5e\x21\x90\x74\xfb\x87\xf3\xe8\x12\xf2\x0e\xa0\x09\xf9\x3b\x73\x9d\x44\x80\x36\x19\xd9\xc7\xc9\x05\xc0\x36\x91\x7f\xea\x4b\x67\xda\x70\x49\x4a\xc1\x46\x96\x5b\xdd\xf9\x4f\xb5\xf2\xc1\x94\xff\xa8\x6d\x79\x73\x19\xac\x23\x31\x0a\xba\xa5\x98\xd1\x87\xef\x27\xda\x75\x94\x13\x8d\xc1\x63\x30\xa8\xd3\x88\x9b\x06\x68\xb5\x39\xb8\xb2\x88\xe5\x07\x55\x98\x43\xaa\xac\x47\x6e\xa7\xb6\x92\x80\x95\x8d\x2a\x97\xa6\x59\x20\x01\x58\x98\x3d\x47\x28\xfc\xa4\x03\xfc\xf8\x46\xae\x2d\x84\xdf\x9f\x58\x7c\x6f\x4c\x43\x76\x2e\x18\x47\x72\x5a\x21\xc4\x64\x64\x64\x05\xf2\x8f\x7f\x7c\xfb\x9c\x44\x9e\xa8\xe8\xe4\xa8\x3c\xa5\xd7\x79\x78\xc0\x13\xe6\x19\xbf\x54\x0e\x8a\x3a\x25\xd5\xab\xdb\x0f\xa6\xfd\x7c\x9c\x7c\x6c\xbe\x29\x75\xbb\xa4\xb5\x01\x43\x99\x06\x4d\xac\x02\xef\x97\xd8\xf1\x39\x7a\xcc\x1f\xb9\x64\x99\x9d\x0a\x1b\x65\x8a\xaa\x13\x0a\x96\x4c\xa1\x71\x6d\x4e\x70\x71\x02\x58\x5e\x38\x72\x8b\xe4\x61\x25\xd5\x23\x40\x36\x15\xa6\x17\x4c\x53\xd1\x3e\x71\x66\x6e\xc3\x54\x72\xf5\x0e\x99\xfe\x5d\x38\x26\x50\x23\x25\x74\x67\x19\x99\x21\xd3\x78\xb5\xd0\xe1\x0b\x9e\xd4\xbc\x7b\x4c\x38\x03\x84\x79\x85\x89\x67\x7e\xf0\xb3\x3e\xb8\x19\x1f\x78\xb6\x07\xf3\x3e\x1c\xcd\xf2\xc0\x32\x3c\xc0\xec\x0e\xc6\xe5\x32\x6a\xe1\x21\x5a\x16\x5e\x52\x34\x5d\x04\x3d\x89\x30\xb5\x46\x6b\xbb\x0f\x2b\x34\x08\x0c\x6e\x6e\x31\x0a\x09\x8a\xff\xa9\x1c\xea\x53\xc5\x33\x71\xa4\x7e\x19\xce\x5e\xfa\xb5\x03\x83\x44\x54\x80\x37\x68\x16\x60\x13\xb2\x6c\xaf\x10\x88\x67\xaf\xf0\xfa\x9a\xf1\x33\x64\x25\xbd\xcb\x04\x89\xb2\x82\xfe\x64\x93\x67\x9f\xf2\xba\x8e\x31\x13\x4a\xb3\x1d\xb9\x43\xb2\x9e\x60\xa2\x2e\xb8\x92\xbe\x5f\x02\xb9\x60\xf7\xf6\x12\x8c\xc9\xef\xdf\x35\xb9\x28\xb2\xba\x72\xb1\x24\x91\xe3\xc4\xcc\xcb\x2d\x81\x06\x40\x50\xef\xe1\x08\x3e\x84\x76\x8f\x07\x8f\x51\x94\xfb\x94\xa9\x35\x34\x64\xfb\x99\xc5\x3a\x01\x80\xa9\x53\x49\x8e\xc0\x51\xeb\xe7\x77\xaf\x04\xa1\xd4\xcf\x6d\xfa\x98\x54\x41\x88\xf4\xef\x2b\xf8\x00\x22\xcf\xcf\xdd\x1b\xce\x37\x2f\x27\x1d\x68\x00\x10\xe4\x61\x31\xc6\x91\xe3\xf1\x64\x2a\x1c\x31\x3e\xa5\xb5\xc1\x42\x89\x9f\x99\xf1\x31\xd3\xfc\x4c\x0c\x09\x7e\x76\xd7\xcb\x98\xac\x93\x51\xdf\x31\xee\xa4\xa3\xbd\xc3\xb2\x8e\xa2\xbc\x33\x36\x08\x45\x77\x67\x0c\x81\xa1\xba\x27\xbd\x07\x87\x90\xdc\x31\x36\x40\x10\xdc\x51\x46\x80\x91\xdb\x19\xfa\xe9\x88\xb3\xb7\x30\x1e\x40\xd0\xd9\xc9\xd1\x0e\x88\x57\x10\x44\x76\x94\x55\x92\x6e\x64\x48\x77\x44\x82\xaa\x3c\xc1\xae\x90\xd1\xd6\xe1\x04\x7b\x2e\xca\x3a\x6e\xf3\x33\xd1\xd5\xf1\x81\x12\x9b\x4b\x2c\x34\x75\x7c\x14\x3a\x8a\x3a\xfe\x6e\x16\x7a\xfa\xf1\x07\xb5\x40\xa4\xf4\xb9\x05\x6c\xb2\x63\x9e\x30\xe6\xc1\x41\x3f\x4f\x7a\x8c\xd0\x10\xcf\xa9\x68\xe7\x30\xd2\x39\xb4\x80\x44\xfc\xf1\x59\xd9\x0b\x53\xc8\x12\x82\x33\x3e\x07\x9b\x04\xc0\x15\x87\xf8\x83\x8d\x27\x0e\x9b\x33\x28\x8e\xf8\xec\xd8\x06\xdb\x57\x04\x33\x1c\xdb\x31\x26\x56\xf8\xdc\x42\x5b\x00\x36\x78\x5a\x01\xa4\xe1\x81\x63\x7b\x04\xe3\x80\xcf\x6c\x77\x72\x05\xf6\xdb\xf3\xa0\xf2\x01\x82\xed\x7d\x32\x89\x83\x20\x8e\xf7\x24\xa9\x83\x4c\xec\x6e\x7e\x9a\x14\x13\xb7\x8c\x0d\x77\x26\x85\x3a\x13\xc0\x9c\x09\xd2\xab\x06\x92\xc0\x9b\xc5\x80\x36\xe3\xe6\xfa\x6d\x49\x02\x69\x26\x5c\x3e\x09\x94\x19\x17\xc6\x8c\x0d\x61\xc6\x4c\xfc\xdc\x7d\x98\x03\x5d\xc6\x83\x2d\x13\x6c\x0c\x1f\xae\x0c\x3f\x49\x9f\x3e\x09\xaf\x2d\x1b\x63\xfb\xfd\xe8\x46\x29\x9e\x76\x0c\x18\xca\x38\x38\xda\x62\x55\x5d\xc4\xc2\xcf\x8e\x30\x13\x39\x88\xa3\x14\x33\x5b\xa4\xce\x8a\x7c\xf2\x49\x79\x20\x16\x2e\x76\x0c\x01\x8d\x86\x87\x1d\x45\x46\x23\xe0\x60\x47\x99\x47\x0c\xfc\xeb\x59\xa8\x0a\x21\xe6\xb5\x50\x53\xc8\x8c\xbc\x63\x32\xd6\x98\x83\x72\x70\xad\xdf\x8f\x01\x93\x9d\xbb\x23\x3d\xe2\xb2\x73\xb7\x9f\xb2\x73\xf7\x3a\x89\xf1\xa7\x05\xc5\xb3\x6c\xdc\x69\xc1\xd6\x44\xc0\x9b\x96\x61\x4d\x4b\xb4\xcd\x91\x00\xce\x4c\x03\x1f\x93\xbc\x04\x10\xec\x25\x48\xc6\x90\x86\x26\x0e\x60\x47\xa3\x92\x08\x61\x46\xcf\xf0\x82\x08\xc5\x88\xc6\xd3\x12\x21\x6c\x68\xf8\xf5\x09\xdb\xd7\xa1\x58\xd0\x89\x93\xa3\xc9\xf8\xcf\x00\xf6\x33\x24\x45\x44\xcc\xe7\x99\xdd\xb1\x42\x18\xcf\xf0\xdb\x41\x6c\x67\xf8\xfd\x27\xd0\x7a\x14\xc0\xb2\x9c\xa1\x7e\x7c\xb7\xf9\x80\xb3\xe9\x0b\x4a\xc5\x64\x4e\xd7\x41\x14\xc0\x61\x9e\x99\xf2\x03\x71\x97\xf1\xf4\x22\x26\xde\x72\x16\x74\x1a\x4d\x21\xe8\x38\x96\x32\x63\x71\x71\x0c\x65\xbc\x09\x07\x8e\x9d\x8c\x8f\x01\x61\x26\x33\xed\xcd\xd9\x74\x76\xa7\xe3\x23\x63\xd8\xc8\x00\x2e\x32\xa8\xa7\x9d\x69\xc9\xc5\x5b\xd0\xd2\xd1\x03\xdf\x27\x93\x5f\x36\xbf\xc6\x74\xb9\x91\xee\x96\x72\x23\xdd\x44\xfe\x4a\xea\x5e\xb7\x13\x20\x84\x60\x4a\x13\x81\x41\x9e\x99\x79\x9b\xad\xc2\xc4\x1d\xf2\x93\x56\x92\x30\x21\x8d\x53\x0a\x03\x0c\x33\x3c\x33\x81\x60\xc2\x0a\xcb\xc6\x99\x80\x49\x12\x62\x4b\x73\x4a\x18\x88\xb9\x6c\x00\xeb\x91\x7f\xea\x1b\xd5\xfa\xa5\x4d\x01\xb6\xe8\x16\x24\x26\x06\x4c\x3d\x96\xa8\xd2\x8e\x6a\xaa\xce\x84\xa6\xd0\x20\xba\x08\x78\x33\x95\xc7\xce\xfa\x19\x90\x7e\xd4\x4f\x33\x1a\x53\x05\xe5\x97\xdf\xf4\x5a\xaa\x35\xb1\x3b\x01\xc2\x59\x09\xf6\x8a\xf8\x69\xa4\x9f\x3d\x86\x0d\xdf\x9a\x21\xf5\x6b\xd5\x42\xef\xbf\xeb\x22\x7f\x26\x45\x22\x89\xd2\x08\x2f\xed\x7e\x29\xd4\xcd\x6d\xa4\xc9\x61\x87\x28\xdd\x5a\x02\xd5\xcf\xad\xaa\xbb\x84\x6f\xfe\xd5\x59\x62\xe4\x08\xb7\x21\x37\x75\x57\xff\xd2\x0f\x50\x82\xee\xbc\x1d\x71\x3c\xe7\x88\x39\x10\x2f\xd7\x88\x97\x67\x94\xda\xa5\x66\xf8\xc8\x78\xe5\x05\x8f\x6f\xb8\xd5\x15\xcc\x5d\x65\x56\x50\x4c\x16\x28\xc1\xeb\x22\x18\x7b\xcb\x4f\xde\x67\x97\x80\x72\x13\xf4\x99\xdb\xcc\x4a\xc2\x67\x8e\xc5\x4b\xb4\x9f\x8c\xa3\xe0\xf4\x79\x06\x43\x0d\x21\x91\x7c\xd0\xe4\x83\x06\xe5\x1d\x2c\xdb\x88\x3c\x7b\x92\xd7\xc4\xf0\xc6\xf7\x9b\xc0\xad\xb3\x2b\x1d\x96\xba\xdb\xcb\xd4\x08\xfb\xeb\xfb\xd6\xba\x90\xa6\x43\x31\xd5\xc9\x2f\x66\x99\x4b\x44\x70\x39\x46\x9a\xe4\x42\x6a\x32\xb5\x01\xb8\x26\x31\x46\xa2\xbb\x2a\x23\x89\x80\x6e\x78\xae\x8b\x7c\xe8\x42\x52\xb3\x23\x2c\x39\xe1\x95\x53\x44\x18\x98\x5f\x56\x51\x88\x4a\x2b\x0a\x51\x9d\x0d\xaf\xca\x46\x50\x2a\xc3\x2f\x46\x97\xf1\xa3\xb4\x00\x5d\xc8\x1d\xc2\xa2\x73\xd1\xe8\x12\xee\xe0\x97\x98\x0b\x78\x44\x5e\x17\x2d\xe3\x95\x08\xb5\xd0\x42\x76\x11\xd5\x3f\x8b\x8b\xf6\x24\x35\xcf\x07\xe3\x54\x76\x85\xb3\x80\x51\x79\x2e\xdb\x48\xf9\x80\x85\x28\x1f\xb0\xa9\x1e\xe4\x38\xb4\x24\xd7\x50\x30\x2b\xbc\x1c\xc2\x91\x8b\xa1\xa6\x42\x3a\x03\x3b\xc9\x71\xf4\x41\x6d\x56\x86\x8e\x90\x50\x88\x51\xa2\x0a\xbe\x1c\xb3\x59\x53\xfb\xd3\xfd\x42\x3c\xab\x5c\x97\x9d\x33\xe1\xe1\xa3\x6d\x82\xbe\x27\xb3\x3c\x87\xb7\x54\x5d\xdb\xbb\x0b\x67\x6e\x4d\xad\x17\xfa\x93\x2f\x55\xad\x10\x34\x9f\x82\xad\x76\x4b\xd5\xaa\x2b\x53\x1b\x74\xe7\xb8\x27\xaa\xaa\x60\xcd\xce\x6c\x86\x21\x38\x03\xb9\x2d\x06\x2a\x67\xc1\xb6\x91\xc7\xf3\x75\x2c\x9d\xd2\x8e\x2c\x0d\x6d\x3a\x8f\x93\x5b\x67\xcb\xdf\x6c\x47\x2f\xd4\x2d\xf8\xd7\x1a\x43\xce\xe6\x37\x6b\xc3\xaf\xa6\xd6\x58\x49\x45\xc1\x8f\x86\x77\xcd\x07\xff\x4f\xa4\x5a\xbb\x10\xb4\x29\xe0\xa5\x75\xf7\x73\xfc\xdd\x36\xeb\xb5\x99\x68\x45\x7e\x00\x65\x7e\xc5\xe4\x0b\xe2\xf5\x17\xd3\x74\xf7\x5f\x31\x80\xc9\x42\xa0\x62\x6b\x7d\xab\x61\xd3\x9d\xad\x4f\x9c\xad\x61\x27\x85\x3d\x58\x00\x32\x4f\xc5\x83\x21\xe5\xa3\xc2\xc1\x58\xca\xf5\xce\x34\x95\xbd\xf3\x13\x72\xd6\x62\xe5\xd5\x47\xa7\x2b\xdd\x04\xa3\xea\xcb\x56\x93\x70\x9a\x77\x89\xbd\x19\xcf\x87\xe6\x44\x8c\xf8\x5c\x3e\x2a\x9a\x09\x47\x4d\x6f\xe3\x42\x3f\x5f\x2b\x3e\x77\x4b\x0b\x0a\x40\x5f\x5c\xab\x2b\x4d\x43\xf4\xe1\xbb\x1b\x29\x33\xee\x53\xa5\xdc\xd2\x3d\x6d\xd4\xcb\x46\x4e\x32\xf2\x52\x90\x9d\x70\x44\xfb\xd0\x9d\xee\x79\xf2\x06\xe2\x54\xcf\xf1\x0b\xe8\xf9\xd7\x98\xb3\x0c\x65\xf5\x0b\x9c\x63\xcc\xac\x44\x9d\x61\x38\x75\x81\xee\xfc\xce\x2f\x73\x01\x71\x6e\xe7\x36\x7b\x48\x66\x31\xa7\x15\xe3\x30\xc8\x49\x85\x96\x85\xef\x94\x62\x5f\x80\x39\xa1\xa8\xaf\x85\xf9\x58\xa8\xb3\xc9\xf8\x52\xaa\x73\x99\xf6\x43\x71\x27\x12\x55\x4d\x90\xd3\x88\x57\xb9\x02\x4e\x22\xfc\x72\xc4\x29\x84\x5f\x9e\xb0\x87\x10\xa4\x94\x70\x67\x0f\x6e\x03\xc8\x76\xee\xe0\x45\x95\x39\x73\x38\xf7\x71\x9c\xb7\x83\xdb\x54\xa4\x9f\xb5\xaa\xf3\x6f\x9f\x53\x34\x9d\xd7\xda\xea\xbb\x5e\xb5\xb5\x7a\xbb\xc5\x24\x95\xa7\x4a\xdb\x04\x67\xeb\x7a\xbf\xec\x40\x86\x60\xd3\xd8\xa0\xc8\x02\x70\xd4\xf6\xf4\x4a\x07\x55\xa9\xa0\xf2\xfa\xf1\x7e\xea\x09\xfa\x0b\x5a\xbb\xeb\x6b\xd3\x98\x40\x4a\x04\x41\x35\x6f\x63\x2b\xfd\x01\x78\x3f\x67\x8c\xe1\x19\x7d\xad\x9d\xd3\xd5\x79\xb7\xde\x99\xcb\x72\xa9\xab\xae\x36\xcd\xe2\xf3\xa2\xb1\x9b\x3f\x7f\xba\xd7\x65\x87\x5e\x3e\x32\x6e\xb1\xf8\x39\x39\xc3\x77\xf0\x5a\x46\xcb\x32\x81\x56\x2a\x94\xcb\x4f\xf7\xad\x1b\x2a\x8c\x99\x4d\xf6\xd9\xdd\xfd\x8b\x48\x08\x24\x82\x2e\xff\x85\x3c\xbb\x68\xa0\xf5\x57\xa8\x3d\x35\xcb\x93\x4c\xa4\x4f\x17\x17\x2c\xa6\x70\x3f\x07\x8a\xf2\x25\xfc\x8b\xeb\x2d\xc9\xf1\x4f\x78\x58\x02\xc3\xb3\x23\x53\x30\x5f\x20\xc8\x2f\xdc\x7d\x01\x77\xfd\x7a\xed\xd0\x67\xd2\x66\xc5\x90\x15\x43\x56\x0c\x4f\xe8\xfd\x2a\x06\xc1\xe0\x77\xda\x2c\x96\x20\x58\x51\x21\x86\xc3\xe1\x25\x3a\x14\x12\xa4\x88\x8d\x45\x07\x3e\x38\x2c\x10\xf4\x10\x73\x3b\x38\x1c\x30\x2e\x47\x7c\x7b\x9b\xab\xec\xd7\xae\xc6\xa5\xae\x75\x19\xac\xfb\xae\x1d\xae\x9d\x98\x2a\x2d\x9b\xdd\xf9\x74\x7d\x4a\xf9\x74\xdd\xa5\x7c\xba\x66\xb3\x9b\x4d\x59\x31\x3c\xa5\xac\x18\xb6\xf4\x7e\x15\x83\x60\x70\xde\xb0\x9c\xad\x3a\x7b\x6e\x91\xc1\x36\x69\xda\x2a\x98\xd6\x56\x39\x36\x0d\x3c\xb9\x5d\xae\xf5\x6e\x4e\x6d\x29\xf7\xb9\x94\x23\x3b\xf1\x74\x86\xfc\x40\x8b\x63\xae\x17\x31\x34\x79\x8c\xd3\xb9\x90\x9f\xd0\x45\xbc\x23\x25\xce\x49\x1d\x75\x42\xf2\x13\xbb\x88\x73\x6a\x17\x31\xbf\x2a\xc6\xe9\x5d\x44\x38\xc1\x0b\xe1\x29\x5e\xc4\x38\xc9\x8b\x18\xa7\x79\x11\x65\x4d\x7b\xed\xf2\x85\x9c\x33\xfe\x32\xc9\x0b\x57\x9f\x52\x14\xae\x8b\x64\x2e\xb1\x5f\xb0\x49\x64\x3f\x84\x1f\x25\x5e\x41\x19\x67\x05\xdb\xda\xda\x2e\x1e\xfe\x75\x90\x5e\x0f\x92\xa6\x07\x3b\x33\xcf\xa1\xe9\xd7\x89\x1d\x9a\x7e\x6a\xd0\xe5\xf8\x34\x89\x26\xb5\xb9\x85\x46\x6f\x8e\x4d\xe7\x10\xd4\x53\xca\x21\xa8\x5d\xca\x21\x28\x61\x6c\x5a\x62\xac\xc6\x34\x54\x23\x99\x58\xcc\xc5\x14\x3c\x2c\x31\x4c\xd9\x92\x28\x5a\x2d\x3e\xd7\x88\x0c\x51\x7e\x7d\x33\xd3\x3a\xe2\x1a\x9f\x93\x19\x39\xac\x78\x67\x13\x4c\x8e\x79\x02\x4f\xe6\x98\x67\x8e\x79\xbe\x48\x39\xe6\xf9\x36\xe5\x98\xe7\xeb\x94\x63\x9e\x5b\xca\x31\xcf\x54\x2f\xc8\x31\xcf\x1c\xf3\x24\x53\x8e\x79\x52\x9e\xce\x31\x4f\x32\xe5\x98\x67\x8e\x79\xe6\x98\xe7\x96\x72\xcc\x33\xc7\x3c\x73\xcc\xb3\xa7\x1c\xf3\x84\x86\xcd\x31\x4f\xf6\x40\xd0\xcf\x8f\x0b\x62\x9d\x88\xb6\x06\x4c\x16\xb7\x3b\x30\x14\x0f\x06\x37\x83\xc8\x6a\xdc\x11\x30\x44\x35\x36\xf2\x2a\x1f\x49\x8d\x6f\x12\xb2\x0c\x41\x81\xae\xe4\x01\xbb\x08\x06\xe4\x03\xba\x60\x2d\xd3\x76\x89\xab\x5e\x51\xc3\x89\xa9\x56\x79\xe8\x68\x7c\x1e\x93\xa0\xa2\x09\x76\x5e\x80\x86\x36\xf9\xc1\xca\x43\x40\x63\xee\xbf\x0c\xf9\x4c\x04\x16\x29\x41\x3c\x13\xb0\x02\x1b\xe9\x4c\x30\x26\x1f\xe1\x6c\x72\xee\x63\xa1\x9a\x31\x99\x8f\x8f\x66\x96\x0f\xb9\x57\x29\x1f\x72\xd2\x87\xb0\xaf\x01\x90\xc9\x58\x1e\x09\xcd\xc4\x37\x2b\xb5\xd0\x17\x5d\x5d\x5f\xf6\x32\x15\xdb\x39\x99\x9d\xbd\x9f\x72\x29\x1b\x13\x3e\x8e\xc7\xd3\xe1\x17\x12\x01\xfa\x66\xc4\x3c\x58\x9a\x06\x77\xc6\x4b\xbb\x5a\xa9\x06\x50\x10\x73\xfd\x10\x00\xb9\x9c\xf1\x11\xec\x86\x26\x53\xa2\x80\x30\x30\xcc\xa5\xa3\xe1\x38\xe6\xb2\xbb\x11\x31\x96\xb9\xfc\x6a\x46\x70\x2d\x23\x8e\xf6\xf2\x21\x57\x23\x0c\x2e\x83\x5d\x95\x98\x31\x03\x49\x2e\x3d\xb8\x17\x1e\xa2\xf0\x3a\x1f\xe1\x5c\xce\xa5\x52\x94\xf3\x08\xfc\x22\x44\x3a\x17\xcf\x40\xc6\x2f\x7c\xbc\x73\x21\xd7\xc8\x31\xcf\xe5\xdc\x13\x01\xf7\x3c\x02\x03\x89\xb0\xcf\x23\x8c\x2f\xc3\x3f\x3f\x30\xff\xb2\x51\xd0\x85\xec\x2b\x43\x42\xcf\xc7\x73\x3e\x9e\x01\x12\x37\xd1\x61\xc4\x65\x59\x5d\x74\x10\x8c\x74\x51\x38\x05\x74\x99\x30\xfb\x7d\x32\xb7\x69\x63\xe6\x33\x94\x88\x44\x81\x70\x05\x58\x24\xbc\x12\xc1\x95\x08\x2d\x5b\x78\x5a\xa7\xaf\xcd\xfd\x64\x8e\xe6\x70\xa2\x64\x4e\xa0\x0c\x3c\x29\x27\x4c\xa4\xa6\xfa\x10\x6a\xd2\x04\x82\x4d\x90\xf6\xc2\xd6\xa6\x04\xec\x07\xc6\x58\xb5\xb9\xd6\xe5\x43\x89\xa0\x12\xf3\xf8\xb8\xb5\x3e\x5c\x06\x45\x83\xe8\x94\x0e\xb6\x26\x7d\x8f\x03\xee\x4a\xed\x3d\x38\x7c\xb9\x4b\xc7\x5b\x1c\x21\xb0\x7b\x96\x21\xb4\xff\xd4\x8c\x2a\x01\xd9\x46\x2d\xad\x67\x8c\x59\xc8\x17\x7a\xfd\xbd\xff\xa3\x55\x45\xbc\x32\x78\x4e\x07\xcf\x03\x97\x78\x15\x45\xd4\xfc\xeb\x03\xcf\x42\x9e\xf5\x0c\xda\xe1\x4f\x1f\xee\x97\x40\xa4\x2d\x0e\x96\xf3\xdc\xb2\xa3\x70\xc2\x6d\xa3\x42\x44\x3f\x27\xd5\x3c\x7c\x65\x05\x10\xfa\x1c\x58\x76\x4d\xd2\xcf\xef\x10\x30\xec\xfd\xd9\x4d\x77\xa5\x5d\xa3\x83\xf6\x67\xa6\x09\x67\xd6\x9d\x0d\xaf\xfb\xa5\x08\x8e\xc5\x4a\xbe\x5c\x6a\xae\x32\x38\x58\x35\xdc\x9a\x07\xa6\x3c\xe1\x42\xd9\x5e\xda\xf2\xe6\x1d\x9d\x71\x59\xca\x22\x4a\xd9\xf1\xb0\x3a\xf3\xc1\xd6\xe9\xcb\x40\x07\xcb\x1e\x1f\xca\x6e\x01\x85\xb2\x5b\x80\x0d\x9b\xdd\x02\xde\x1b\xb2\x5b\xb0\xa1\xec\x16\x64\xb7\x80\x42\xa7\x6a\xb0\x64\xb7\x80\xf6\x68\x76\x0b\xc8\x94\xa5\xec\x19\x1d\x0f\xab\x4f\x93\x8c\x5f\x14\xb5\xb9\xd5\x8d\xf6\xfe\xc2\xd9\xab\xe4\xb7\x19\xb8\x17\x21\xa9\x81\x62\x7a\x0f\xc7\x55\xd8\xce\xad\x4c\x54\xa6\xee\x9c\xfe\xbe\x74\xda\x2f\x6d\x0d\x2e\x13\xbf\xd7\x10\x57\xad\xb0\x3c\x1b\x3e\xf3\xf0\xb4\xbd\x80\x01\x44\x9e\x0c\x9b\x63\xa5\x1e\xcc\x41\x53\xa5\x44\x5e\xcb\x41\xb3\xfa\x98\x9e\x0a\xdf\x4b\x89\xd0\x5f\x84\xe3\x9d\xf0\x3c\x13\xc1\xd6\xf0\x6c\x25\xa6\x9d\x24\xb5\x91\x84\xf6\x51\x64\xdb\x88\xeb\x7d\x4c\x5e\x42\x0b\x9b\x61\x4c\xe6\x37\x8d\x09\x46\xd5\xe7\xba\x56\x0f\x97\xba\xb4\x0d\x8a\xfc\x39\xfd\x21\xd9\x6a\x67\x6c\x75\x24\x93\xf5\x5d\x59\x6a\xef\x8f\xc6\x02\x61\x7a\x9e\x47\x64\x83\x64\xed\xc9\xd4\x9e\x73\x57\x65\xc1\xac\xb4\xed\xc2\x51\x28\x06\xc6\x27\x26\x6f\x7e\xb4\xde\xa7\x94\x55\xc2\x82\x04\xeb\xa1\xc0\xe7\x82\x21\xb9\x92\x7e\xb1\x7c\xd1\x5d\x2b\xb5\xcf\x17\x93\x65\x1d\xaf\x87\x3b\x9e\xc5\x99\xb4\xce\xb8\x75\x36\xd8\xd2\xc2\x69\xca\xcc\x01\x79\x25\x17\x4f\x38\x1c\xd1\x78\xd3\x24\x35\x3b\xad\x2a\x93\xa3\x67\xbb\x94\xa3\x67\xfb\x9f\xce\xd1\xb3\x97\x28\x47\xcf\x00\xca\xd1\x33\xfc\xc1\x1c\x3d\xdb\x33\x60\xf6\xff\x72\xf4\xec\xe5\x19\xe6\xe8\xd9\xcc\x26\x9b\xa3\x67\x7b\x28\x47\xcf\x28\xcf\xcf\x41\x7b\xce\x5d\x95\x9d\x78\xf4\x6c\x6c\x31\x02\x61\x4a\x72\xa4\xb2\x36\x2b\x83\x84\xd1\x8a\x48\x28\x0d\x6c\x4e\x17\x34\x97\xd0\xfe\xf4\xbf\x94\xf1\x90\xd7\x65\xe7\x4c\x78\xf8\x68\x9b\xa0\xef\x01\x75\xc9\xe3\x38\x55\xd7\xf6\xee\xc2\x99\x5b\x53\xeb\x85\xfe\xe4\x4b\x55\x2b\x14\x70\x89\x5f\x93\x5f\xaa\x56\x5d\x99\xda\xe0\x3b\x29\x68\x00\x5e\x9d\x7c\xc8\xa6\x28\x2a\x87\xd6\xbd\x14\x47\xf7\x95\xec\xaa\xa0\x47\x66\x07\xd9\x80\xcb\xe3\xad\xb3\xe5\x6f\xb6\x6b\x40\xcb\x87\x1d\x43\x56\xd5\xd7\xa6\x7e\xf8\x66\x6d\xf8\xd5\xd4\xda\x3f\xf8\xa0\xc1\xce\x95\xdc\x2f\x75\x5d\xf3\xc1\xff\xd3\xd9\x0e\x64\xbd\x1d\x0b\xe0\xbf\xff\x6b\x12\x53\xbb\x9f\xe9\xef\xb6\x59\xaf\xd2\x84\x6b\xf3\xc3\x6b\xb0\xc9\xdb\xf4\x4b\xe3\xf5\x17\xd3\x74\xf7\x5f\xfb\x0e\x2d\xd3\xc1\xe8\xe9\x5b\xcd\x6e\x18\xce\xeb\x88\x6f\x91\xce\x24\x11\x06\xec\x1f\x9d\x72\xc0\x0e\xe6\x36\xd1\x80\x4c\x75\x7c\x67\x9a\xca\xde\xf9\x89\xf9\x6d\xb1\xf2\xea\xa3\xd3\x95\x6e\x82\x51\xf5\x65\xcb\xa9\xdc\x14\x6c\xcd\xf3\xe1\x27\x47\xa1\xd8\x28\xa4\x89\x47\x9e\xcc\x8e\x0e\xca\x85\xae\xcd\xb7\x8e\x23\xbd\x0b\xe3\x2e\xdf\x3a\xbe\x3d\x5c\xbe\x75\xa4\x50\xbe\x75\xcc\xb7\x8e\x6f\x50\xbe\x75\xa4\x3c\x3f\x87\xb8\x79\xbe\x75\x7c\x46\xf9\xd6\x31\xed\x64\xf3\xad\xe3\x1e\xca\xb7\x8e\x94\xe7\xe7\xa0\x3d\xe7\xae\xca\x4e\xfc\xd6\xd1\x87\xca\x00\xf7\x30\x9c\xc8\x64\x3f\xc4\xd7\x06\x41\x7e\xe0\x0c\x13\xb4\x5b\x99\xa6\xbf\x57\xfa\x4d\x7b\xaf\x16\x1a\x43\x4b\x61\x88\xc4\x0b\x43\xa6\x6f\x79\x1c\x02\xfc\x7e\x6c\x21\x6f\x6d\xdd\xad\xf4\xb9\xbe\x35\xd0\x65\xf4\x64\xd5\x16\x55\x3f\x33\x0e\x14\x0e\x5b\xeb\x4d\x58\x10\xc0\xcb\xcf\xdf\xae\x09\xf4\xd8\x3c\x91\x14\x06\x06\xec\xaf\xb3\xe6\xc8\x7f\xab\xf5\xc4\x26\x65\xbf\x61\x44\x67\x5b\xb5\x60\xdc\x9b\x1f\x07\xdf\x6f\x6f\x15\x79\x03\x72\x7a\xf5\xfb\xee\x6a\xd2\x7d\x7c\x1c\xef\xd3\x7d\x0b\xdf\x99\x4c\xaa\x4d\x36\x1c\x7e\x02\xca\xe4\xce\xba\x1b\xd3\x2c\xce\x0d\xb0\xe4\xf0\x62\x1f\x23\x96\x2e\x04\x9d\x80\xea\x4a\x18\x2e\x81\xa3\x8c\xd1\x1b\x11\x7e\x79\x27\xeb\x36\x84\x19\x59\x96\xde\xfe\xc2\xd1\x46\x96\x20\x32\xee\x14\xb8\xcb\xcf\xf1\xe5\xf9\x85\xaa\xfc\xbb\x04\xe6\x7e\xcb\xee\x11\xf8\xb7\x08\xc2\x28\xbe\xe0\x06\x41\x34\xb2\xa4\x73\x1c\xeb\xee\x80\x7b\x73\x20\xb8\x37\xe0\xde\x1a\x70\xee\x0c\xf8\x75\xcb\x8c\x88\x17\x2b\xde\x25\x8b\x76\x89\x62\x5d\x51\x23\x5d\xbc\x5b\x82\x49\x0d\x3f\x30\xa8\xc6\x33\xe1\x38\xb1\xe0\xa3\x38\x3b\xb2\x44\x40\x12\x31\x57\x16\x85\x1f\x01\x21\x00\xb2\xa9\x3b\x52\x36\x75\x7f\x1e\x2a\x9b\xba\xaf\x53\x36\x75\xc9\x94\x4d\xdd\xd7\xc7\xca\x07\xfb\x8b\x94\x4d\x5d\xc2\xdc\xb2\xa9\x3b\x4e\x32\x4b\xc4\x3b\x34\x75\xa1\x9f\xc3\x0d\xed\x51\xc6\x47\x6c\x62\x8e\x50\x31\x6c\x61\x86\x5d\xc4\x64\x50\xfc\xdc\x84\xd9\x83\x9b\xe6\xce\xc9\x7a\xc1\x85\x1c\xb4\xca\x39\x0c\x80\x6a\x54\xd6\x56\x32\xad\x70\x06\xa7\xf1\xad\x6f\x9e\xe5\x2d\x50\xbd\x4c\x8b\x7b\xf2\x7c\x5a\xd8\xca\xe6\x58\xd8\xdc\xc4\x35\x86\x65\x8d\x5a\xd5\xac\x05\x47\x6d\x07\xd8\x6e\xe0\xdb\x0c\x6c\x7b\x21\x9a\xad\x80\x5b\xce\x8c\x19\xa3\xec\x0e\x99\x22\x30\xbb\x0a\x92\xc5\xa7\x39\x6a\x58\xa9\xe1\xd3\x4c\x8d\x9b\x08\x3e\xcd\xec\x60\xff\x67\xb6\xa7\x74\xd6\x59\xaf\xd2\xbc\x94\x09\x2f\x5d\x7b\x0a\x71\x80\x3e\xa5\xb1\x95\xbe\xd4\xb5\x2e\x83\x25\xe5\x2d\xf1\xbb\x16\x81\xcc\x03\x7d\x45\xeb\x8c\x75\x86\x96\xaf\x8c\x6e\x01\xb6\xfc\xe3\x4c\x3e\xd6\xca\x7b\x6a\x31\x3a\xb4\x34\x78\x0b\xea\xec\xef\x66\x7f\x37\xfb\xbb\x44\xca\xfe\x6e\xcc\x11\xb3\xbf\x3b\x50\xf6\x77\xb3\xbf\xfb\x02\x65\x7f\x37\xfb\xbb\xd9\xdf\xcd\x3a\xeb\x45\x9a\x97\x32\x39\x11\x7f\x17\x6a\x7e\x8c\x4a\x0d\xd6\xf0\x58\xd6\x00\x98\x53\xd0\x8b\xee\x39\xda\xd8\x78\xee\x5f\x04\xfd\x7c\x6d\x30\x54\x5d\x4d\x6f\x29\x07\xcd\x9f\xd1\x18\x19\xe5\xc6\x6b\xac\x7b\x29\xa7\x39\x27\xae\x5a\xf1\xae\xaa\x13\xce\x0b\xec\xa1\x8a\xd7\x83\xc2\x7d\x53\xa7\xf9\x78\x5e\x97\x54\x8e\x4d\x01\x77\x46\x65\x1d\xc1\x68\x37\x54\xd6\x20\xfd\x43\xa9\x07\x41\xbb\x9e\x4e\x71\x2a\xf8\xae\x6d\x6b\xbd\xd2\x4d\x50\x75\x2f\xc9\xe4\xfd\x07\x63\x2b\xbc\x76\xc1\x1c\x73\x0f\x75\xe9\xfd\x83\x2f\x43\x9d\xea\xbb\x79\xf1\x24\x3c\x96\xc4\x34\x6f\x19\x31\x24\x9e\x14\xc3\xb1\x23\x30\x6e\x84\xc6\x8c\xd8\x79\x6f\x74\xc6\xe2\xf5\x0f\xe6\x30\x8c\xac\x67\x30\x6b\x43\xe5\x7d\x82\x79\x7c\xc4\xed\x0d\x3c\x37\x83\x54\xbb\x5b\x53\xea\x0f\x65\x69\xbb\x26\x24\xb1\x4a\x83\xad\xb5\x53\x64\xde\x03\xf4\x1a\xce\xa2\xfa\xfa\x5a\x97\x40\x6c\x80\xb1\x5b\x37\x3a\x6d\x07\xa5\xf5\x27\x2b\xe2\xc5\x2a\x7b\x90\xed\x9e\xc1\xad\xc3\xa6\x3b\x60\xc1\x33\x03\x5e\x86\x64\xed\x2b\x88\x2f\x26\xfd\xcc\xe9\xb6\x36\xa5\x7a\x73\x83\xa8\x01\x13\xda\x26\x3c\xaa\x8c\xef\x7a\xd5\xd6\x2a\xbc\xb9\x01\x54\x01\x5d\xe9\xa0\x2a\x15\xd4\xbe\xcd\x44\x04\x5e\x35\x8d\x0d\x74\xb5\x33\xc7\x1c\x04\xf2\x4f\x3d\xe1\xa4\x45\xd6\xae\xac\x3b\x1f\xb4\xa3\x41\xac\x43\xdf\xaf\xef\x83\x76\x8d\xaa\x3f\x5f\xc4\x3e\x0c\x58\xdb\x40\x33\xa2\xc6\x49\x7f\x77\xea\xfa\xda\x94\xf4\x36\x79\xd0\x9c\x96\x5a\xd5\x61\xf9\x71\xa9\xcb\x9b\xdf\x6d\xa5\xa9\x80\xf3\x69\x53\x4f\x6a\xab\xaa\x7f\xa8\x5a\x35\x65\x12\x76\xd8\x7d\xfd\x65\x1f\x43\xfd\xa6\x9a\x05\x4d\xf2\xe6\xc1\x1b\xad\x75\xb4\x58\x66\x52\xbb\x06\xf3\xd3\x18\x06\x41\x03\x70\xe4\x40\xbc\xf6\xa1\x1c\x3b\x00\xbb\xee\x99\x6a\x5e\x68\x57\x2d\xf2\x3d\x4b\x32\xb3\x64\x7d\xb4\x7b\x6f\x6c\xf3\xe1\xfa\xda\x34\x43\x1c\xf9\xda\x2c\x52\x84\x91\xcb\xda\xe8\x26\xd0\x14\x0a\xe7\xfd\x05\xfb\x72\xa9\x10\x74\xbe\xe5\x47\x89\xd2\x38\x77\xd4\x68\x22\xa0\x0f\x62\x9a\xae\x3e\x58\xa7\x16\x51\x0c\x48\xd5\x5f\xac\xff\x66\xab\xfd\x0c\x42\xd4\xc3\xf0\x9a\xec\x97\xb0\xb5\x85\x3b\x1c\x72\x51\xed\xdc\xd6\x90\xaf\x3e\x20\xc5\x7f\x63\x68\xe9\x94\xd0\x4b\xa9\x07\x15\xf0\x52\xaa\xa2\x3d\xeb\xbf\x68\xef\x8f\x08\xd1\x3e\xb2\x10\x92\x2f\x86\x91\x0d\xa7\x5f\x08\xcf\xd1\xa7\xc1\x2e\x80\xe7\xf8\x05\x74\xaf\x8c\x98\x02\x8f\x6c\xfe\x4a\x85\xb2\x6f\xc1\x3a\x9c\xd4\x87\xb7\x3c\x4f\x22\xdc\xd5\x47\x92\x52\x76\x6b\xe6\x5f\x06\x02\x71\x7e\xd4\xe2\xbc\xd1\xb4\xf7\x9e\x6d\x36\xe1\xd0\xf6\x69\xcf\xfd\x5f\xd4\x95\xa6\x5d\x93\x1d\xb7\xf6\x18\xac\x23\x72\xcd\x07\x79\xca\x63\x83\xf2\x2a\xf6\x2b\x23\xce\x12\xb1\x1f\xbf\xef\xb1\x72\x49\x43\xee\x80\x21\xec\x0f\xef\xd0\xde\xf8\x36\x8f\xd2\x43\xa3\xab\xab\xfd\xd7\xf5\x88\xde\x6e\xb5\x76\x97\xba\x74\xb4\x44\x4f\x30\x01\xc9\xdd\x26\x7a\x39\x59\x6e\x46\x5d\x45\x9b\x45\x4c\x7e\xec\xda\x4a\x05\x7d\x19\x9c\x0a\x7a\xf1\x26\x03\x51\xb7\xcb\xd9\xba\x36\xcd\xe2\x47\xff\xe2\xa8\x3c\xa0\x5c\x30\xd4\x66\xfc\x29\x23\x8c\xe4\x6d\xa5\xf8\xb2\x31\x37\xf3\x56\x3b\xbf\x67\x7d\x08\xc3\xed\x3b\x92\xcf\xc6\x71\x5e\xf9\xff\xbd\x53\x5d\x29\x67\x54\x75\xf5\xda\xfb\x29\x3c\x51\xf6\x51\x9e\xfd\x8e\x29\xd9\x17\xbf\xf3\x9f\x6a\xe5\x83\x29\xff\x51\xdb\xf2\xe6\x32\x58\x17\x95\x77\xaf\xfd\x3e\x8d\x3f\x12\xa4\xbb\x66\x23\x12\x18\x96\x04\x96\x2f\x38\x1c\xd4\x9f\xcf\x0f\xe6\x82\x8f\x13\x88\xa5\x16\xd4\x7f\x3a\xa7\xcf\x8d\xbf\x89\x7a\xfd\xa5\xca\xa5\x69\x16\x14\x13\xa9\x40\xd9\xac\x32\xfe\x26\x49\x9a\xc5\xfa\xc5\x3f\xbe\x7d\x8e\xfe\xde\x44\xe2\x96\x24\xba\x94\x4a\x70\xe8\xfc\x3d\x6e\x2f\xe9\x87\x3f\xbe\x7d\x8e\x2a\x07\xbf\x9a\xfd\x29\xaa\x88\x1c\xa4\xd3\x43\xbe\x37\xce\xd2\x24\xc1\x2f\x95\x23\xb9\x22\xe0\x9b\xe9\x3c\xb0\xfd\xb8\xfd\x3f\x1d\x27\x1b\x8b\x0f\x4a\xdd\x2e\xaf\xa3\x86\x1b\x57\xb6\x31\xc1\xd2\xea\x9d\x67\x72\x25\x4b\xac\x8b\x9d\x85\x6a\x19\x65\x81\x22\xbb\xf0\xa4\x87\x57\x7f\xd3\xa4\xe2\x36\x34\xf6\x87\xdc\x39\xa7\x8c\x27\x53\xd3\xd9\x93\xc8\xfa\x28\x1d\xd1\xe4\xd7\x34\x55\x5c\x77\x3f\xd1\xf9\x9d\x5a\x1e\x4e\x9c\x69\x4f\xce\x10\x1f\xbc\xc8\xdf\xd4\xde\x7b\x48\x64\xc7\x2a\x7d\xad\xba\x3a\x50\x0d\xf1\xb4\x5e\x19\xf9\x70\x3b\xea\xfb\x96\x15\x71\xad\x07\x9a\x30\xc9\x27\x2d\x1c\x6e\xba\xbb\x93\x96\x8a\x44\x98\xf0\xde\x24\xc1\xad\x7b\x51\xd8\x76\xb8\x5b\x89\x7d\x02\xd0\x55\x8e\x37\x51\x95\x8d\x33\xb7\xd1\x2d\x89\x64\xe7\x6f\x9f\x90\xd7\x5d\xd5\xc6\x2f\x2f\xdf\xc3\x81\x99\x3a\x26\xf6\x21\x04\x67\xae\xba\x40\x5b\x97\x39\xde\x2c\x02\x41\x8a\x9e\xd3\x63\x89\x61\x65\xef\x9a\x3b\xe5\xaa\x0f\x17\x7b\x83\x4f\xf9\xec\xdf\x21\xfc\xec\xbf\x36\xba\xae\x88\x72\xce\x1d\xa3\x18\x52\xca\xfe\xbd\xff\xfa\xe3\x39\xb1\xb2\x1c\x1e\x3f\x0b\x87\x32\xe6\xd5\xed\x31\xea\x3f\x37\xf3\x03\xcd\x0f\xa8\xa8\xf3\x9d\xda\x5d\xdb\x1c\xb9\x5f\x27\x62\xee\xd2\x36\x41\x99\x06\xaf\xdc\x64\xf3\x77\x65\x6e\x8d\x47\x32\x98\x04\x63\x8d\xab\x39\x53\x51\x1a\xa7\x97\x4e\x92\xe0\xb4\xfb\x83\x9b\xe7\xe4\x17\xeb\x55\x1b\x1e\x08\x50\xe0\x50\x74\x57\x57\xa6\x5b\xc5\x0f\x3c\x9a\xff\xe8\x2f\x66\x65\x0e\x96\x05\x72\x1d\xb5\x1e\x2e\x91\x0d\x5f\x77\x27\x7d\xd9\x1c\x94\x5b\xe8\xf0\xc7\x1f\xbf\x1f\xd1\xdd\xc1\xdd\x9d\xa1\xd5\x8a\xcc\x61\xba\x74\x69\xa8\xf5\xfd\xbf\x7b\x37\xe7\xfd\x3a\xcc\x96\xde\xfe\x62\x8e\xde\x5d\x8e\xb8\xbf\xf6\xf3\x59\x3b\xc7\xd7\xb5\x2d\x6f\xe2\x5e\xe8\x54\x2a\x28\x9f\xe8\xf2\xfc\xf1\xdd\x3f\x7e\x44\xbf\x99\x20\xaf\xd8\xa2\xd4\x17\x6b\xe7\xd3\x07\xdd\x84\xd8\x99\x3d\xa7\x9f\x3b\xd6\x56\xc9\x00\x02\x0e\x9b\x59\x33\x7c\x58\x34\x2e\x33\xe1\x9b\x6e\x6d\x54\xb9\x34\xae\x2f\xf7\x89\xdf\x19\xc0\xe9\xd6\x7a\x93\xe8\xd5\xb7\x86\x1a\xe8\x49\x72\x0f\xb9\xfd\xb6\x68\x5b\x3b\x34\xaf\x88\x9b\x05\xa3\x9b\xaa\xb5\xa6\xa1\x55\xad\x81\xba\xe3\x88\xb2\x55\xe8\xfb\xba\x59\xb0\xfd\x82\xbd\xdf\x03\x27\xef\xfd\xd2\xfa\x40\x89\x24\x62\xb9\xf2\x09\x36\x88\x92\xce\x0e\xbe\x14\x50\xa5\x11\x57\xdc\xf8\xc8\xd7\x70\xe5\x52\xb5\x1f\xba\xb0\x3c\x37\xbe\xb4\xb7\x1a\xd1\x79\x54\x7b\x77\x1c\xe2\x72\x28\xa2\x8c\x3f\x40\x22\x33\x63\xe8\xbd\x1f\x6c\x9a\xee\xc1\xe6\xcf\xd8\xa7\xc0\x23\x77\x7c\x6e\xd6\xea\x58\xd1\x82\x92\xc7\x17\x40\x69\xad\x0b\x8a\x56\x90\x38\x87\xa0\x41\x76\x24\x5f\xfb\x39\xb5\xab\x46\x1f\xd6\xba\xe8\x77\xfd\x60\x2a\xdc\xfc\xb9\x6f\x37\xce\xd6\xd2\xb1\xf7\x37\xbb\x1f\x13\xeb\x48\x68\xe2\x9a\x5e\x47\x65\x20\x8d\x35\x90\x73\x3e\xdb\xcf\x1e\xe7\x18\x6b\xbf\xdb\x8d\xbb\x3e\xc4\x18\x3f\xd6\xca\xec\xbd\x52\xc0\xda\xd1\x29\xb3\x3a\x51\xb7\x76\xf3\x6d\xd1\x76\x63\x69\x83\x6d\x8e\x2f\x84\x52\x1d\x30\x19\x76\x3d\x78\xb4\xf5\xb7\x2e\xdc\x59\x97\x20\xde\x7e\x74\x99\xdc\x27\x97\xe4\xdc\x3a\xbb\xfe\xcd\xfe\xa1\x8f\x36\xd1\x09\x00\xb2\x49\x9a\xea\x44\x4e\x27\x97\x0c\x52\xf0\xa0\x19\x19\x8f\x48\xf0\x1c\xc1\x9c\xef\x2d\x31\x53\x48\x06\xc2\xf2\x91\xb6\xc4\xed\x9d\x37\x12\x27\x47\x69\x4b\x28\x24\xe2\xd3\x51\x59\x4b\xc5\x43\xa3\x44\x72\xc8\x77\x9f\x21\xa7\xab\x6c\x89\x91\x8c\xb6\xfb\x20\x86\x49\x39\x21\x64\x04\x92\x7f\xfe\xf3\x60\x08\xbe\x4e\xc1\x5b\x43\x20\x2d\x76\x4b\xa7\xab\xc3\xf0\xdc\xd5\x38\xe3\x16\x82\x7c\xd6\x2d\x89\x54\x69\xc1\xcf\x71\x8d\x36\x03\xae\x96\x2a\x98\x19\xb0\x5b\x62\xab\x9f\x22\x9f\x42\x08\xf1\xf3\x68\xb7\x24\x15\x34\x41\x6e\xed\x96\xc4\xb2\xc6\xca\xb7\x8d\x38\x3e\x2f\x07\x37\xda\x04\x64\xa2\x0e\x67\xe8\x6e\x49\x20\xe9\x7c\x23\x6a\xee\x06\x11\x63\x30\x4f\xee\x9f\x36\xd0\xe9\x1a\x0d\xd9\xf1\xa1\x52\x76\x7c\x9e\x53\x76\x7c\x9e\x0f\x36\x81\xe3\xf3\x14\x52\xec\xbb\xbd\xd1\x80\xd9\xcd\x2c\x58\xeb\x2a\xa3\x9b\x49\xaa\x5e\x8a\x42\xdf\xb7\x86\x89\x8d\x55\xb0\xf1\xb1\x0a\x81\x86\xc0\x75\xc3\x64\xf5\x40\x90\x54\xc3\xbc\x98\xac\x64\x07\xe8\x05\x35\xc4\x53\x63\x05\xa0\xff\xec\xec\xd5\x43\xdc\x56\xa0\x8b\x24\xe0\x01\xe9\x2e\x15\x9c\x5e\x18\x1f\x12\xa4\x42\x06\xdd\xa8\x26\x7e\x4f\xdc\x04\xed\x89\xc6\x9b\x95\x03\x26\x6d\x0e\x7b\x40\xbc\x80\x89\xc5\xfd\xee\x2a\xea\xc5\x4b\xaa\x2c\xad\xd5\x1e\x50\x13\xd6\x5b\x6f\xf4\xc3\xfa\x77\xd1\xdf\x7b\x84\xed\xdd\xac\x8d\x9d\x77\x93\x73\xa2\x5e\xfb\xf9\x31\xf4\x60\xeb\x05\x6e\xef\xaf\x62\x77\x6a\xf3\xa5\xaa\xf5\xe7\xaf\x47\xa0\x90\x16\x2a\xe8\x3b\x15\xff\xc0\x6c\x9d\x0d\xba\x5c\x1b\xc2\xe7\x76\xa5\x4c\xfc\xec\xd1\x2c\x94\x2f\xff\x9c\x8a\xed\xec\xeb\x4f\x8d\xba\xaa\x69\x26\x39\xb8\x80\x03\xf6\x42\x92\x16\xc9\x8f\xef\xbe\x48\xa1\xe7\xfd\x83\x0f\x3a\x7e\xbd\x3b\x1d\x00\x03\x7c\x35\x5d\x0b\x3e\x4a\xf9\x7e\x8f\x64\x64\xfd\xfd\xbf\xec\xd7\x2a\x9a\xbe\x24\x45\x35\x8f\x36\x71\x66\x1e\x1d\x82\x72\x77\x40\xfa\x08\xb9\x3b\xe0\x23\xa5\x6a\xe4\x97\xb0\xcd\x37\x5d\xeb\x0c\x67\x89\x8d\x9a\x91\x7e\x74\x89\x98\xef\xc2\xdc\x49\x76\x06\xef\xbe\xda\xb7\xf1\xeb\x98\xc8\x5f\x79\xeb\xdb\xa5\x76\xfa\x68\x32\x8b\x37\x86\x5c\x6d\xca\x87\xe8\x69\xc0\x3f\xbd\x3f\xe1\xc6\x53\xf3\x76\x12\xe6\x30\x13\x92\x6f\x88\x6c\x44\xfa\x59\xa5\x82\xba\x52\x5e\xef\x07\xd1\xa2\xb2\x19\x60\xac\x21\x66\x03\xdd\x58\x20\xd9\x5d\x44\xe3\x0c\x53\x91\x64\xa3\x0c\xd4\x8e\x74\x63\x0c\x37\xc4\x50\x23\x8c\x6e\x80\x81\x47\x22\xd5\xf0\xa2\x19\x5d\x44\x83\x0b\x38\x77\xa8\x86\x16\xd5\xc8\xa2\x1f\xec\x74\xe3\x8a\xb8\xe4\xa4\xaf\x5e\xaa\x7a\x4f\xfd\x03\xed\x0b\x4c\xf3\x76\x73\x38\xaa\x88\xb5\xd6\x87\x85\xd3\xfe\x8f\x0f\x5f\x62\x9e\x88\x3d\x9e\x4e\x0a\x6b\x69\x93\x22\x97\xc8\x64\x2a\x8a\x95\xba\xff\x68\x9b\x66\x88\xcc\xd1\x7b\xcb\x32\xae\xa5\x71\x4f\xad\x75\xfa\xda\xdc\xcf\xc1\x5a\xbc\xfa\x5b\x8a\xdd\xbd\xea\xca\x1b\x7a\xea\x56\xde\xda\x34\x5b\xab\xca\x9b\xae\x4d\x62\x0f\x2e\x4a\xd2\xaa\x67\xb6\x39\x42\xb6\xa9\x6d\x49\x8b\x81\xa0\xbb\xcb\x01\xc4\xe4\x8e\x55\x40\xde\xdc\x48\xac\x7c\x1f\xa8\xe9\xd9\x66\x6e\xcc\x2c\x49\x5e\xee\x13\x12\x51\x79\x3a\x12\x9a\x27\x87\x94\xba\x3e\x1d\x09\x6c\x96\x8d\xe5\x58\x91\x4b\x60\x9f\xce\x09\xc8\xb1\x22\x03\x70\x8e\xc4\xe1\x68\x10\x90\x73\x24\x16\x5b\x23\x00\x9d\xe2\x81\x88\x80\x9d\xa2\x71\x26\x52\x07\x54\x40\x4f\xd1\x20\x53\x09\x34\x2e\x67\x44\xe0\xcf\xa7\x0f\xec\x07\x00\x1d\x89\x27\x97\x54\x50\xc1\x82\x29\x97\xd3\xe9\x57\xec\x26\xe1\xe9\x58\x20\x8f\x41\x00\xa2\x82\x91\x70\x1e\x23\x03\x8b\xee\x3c\x42\x04\x18\x1d\x09\xe6\x33\x1a\xe0\xe8\x48\x1c\x26\x43\x32\xd4\x46\x62\x54\xaa\x30\xb3\xc1\x39\xb5\x02\x68\x42\xf6\xac\x55\x25\x0a\x60\xfa\x74\x2c\x54\x36\x91\x8b\xac\x91\xb8\x15\x48\x78\x41\x87\x90\x8b\xc0\x52\x15\x6a\xd2\x9d\x60\x6e\xb8\x8e\x22\xa6\xd9\x3d\x9d\x13\xa2\x6f\x48\x00\xa9\x23\xcd\xd8\x7d\x9a\x5a\x3e\xb3\xd0\xf4\xf4\x6e\x1d\x35\xb8\xa3\x0e\x87\x03\xc0\x94\xac\x91\xa6\x8d\x0a\xc0\xc6\x01\xc3\x9a\xe0\x57\xbd\xb2\x6a\x5e\x05\x65\x9c\xbc\x7a\x57\x59\xb5\xab\xa4\xd6\x95\x57\xe9\xca\x5e\x20\x5e\x95\x2b\x5e\xe3\xca\xa8\x70\x65\xd6\xb7\x72\x2c\x56\x54\xab\xb3\x96\x9b\x53\xd7\xca\x39\x11\x71\xd5\xb9\xbf\xc3\xf5\x48\x2c\xa5\x49\xc6\xd1\x19\x69\xce\x71\x20\x2e\x30\xed\x48\xa7\x6a\x78\x4c\x1d\x8b\xc6\x00\x6d\x47\xe2\x43\x1f\x3d\x9d\xf3\x14\x6b\xca\x08\xd2\x51\xb0\x7d\xd8\x33\x62\x74\xfc\xca\x36\x16\xfb\x01\x89\x8d\xc5\x6f\x46\x26\xeb\x90\x24\x6d\x44\x26\x30\xf3\x0a\x79\x13\x32\xd1\xe8\xfc\xae\x44\x92\xf6\x63\x4c\x13\xa9\xc8\x76\xf1\x7e\x92\x37\x1c\x93\x09\x53\x84\x66\x63\x42\x79\x12\x35\x1a\x13\x8e\x2d\x6b\x32\x76\x30\x51\x66\xb7\x17\x63\x4b\x32\xd7\x81\x9b\xaf\x3b\x06\x0f\x44\x05\x0e\x1e\x89\x75\x4b\x43\x06\x12\x1e\x89\x77\x01\x80\x00\x0b\x0b\x46\x82\xd7\x78\x3f\xe0\xf0\x48\x33\x8e\x49\x13\xf1\x74\x36\xb3\x3a\xd1\x64\x1e\x0c\xb8\x78\xa4\x79\xdf\x39\x92\x81\x8d\x47\x9a\xf3\xe7\xe0\xd2\x49\x06\x40\x1e\x29\x07\x72\x00\xc0\xe4\x91\x8e\x29\x7a\x90\x6f\xe0\x76\xe8\xfd\x06\x6d\x88\x00\xcd\x23\xb1\xd4\x02\x06\xd8\x3c\x12\x2f\xa9\x10\x03\x70\x16\x8c\x05\xaf\x34\x0c\xec\x3c\xd2\x8c\x0d\xa6\x23\xc8\x81\xa6\x03\x42\x3f\x1d\x67\xa6\xe9\x0c\xb8\xfe\x20\x01\x47\x3f\x9d\x12\xc2\xd5\x34\x20\xe9\x91\x58\xfa\x03\x01\x96\x1e\x89\xb9\x89\x08\xd0\xb4\x70\x28\x3a\xf0\xb4\x60\x20\x9c\x5d\xc8\x80\xd4\x4f\x67\x85\xb0\x0c\x15\xa0\x7a\x24\x0e\xd3\x40\x80\xd5\x23\x31\x75\xe0\x09\x65\x33\xe2\xfc\x42\x05\xba\xde\x3e\x01\x44\x96\x60\xde\xa2\x02\x60\x8f\xc4\x61\xad\x49\x36\x3c\xa4\x3f\xbe\x19\x47\x49\xc2\x9d\x23\x01\x69\x8f\xc4\x2a\xa2\xe1\x00\x6b\x8f\xc4\xf3\x7b\x18\x40\xdb\xb2\x01\x27\x32\xfb\x60\x20\x6e\xd9\x68\x34\x60\x6e\xd9\x18\x30\x50\xb7\x68\xb8\x59\x07\x1a\x01\x40\xef\x91\xe6\x1c\x2c\xcb\x81\x8e\x1d\x9a\x32\xbe\x84\x02\x85\x0b\xe6\x88\x1f\x65\xfb\x01\xc4\xb7\xbf\xdd\x0f\x24\xbe\xfd\x2d\x00\x28\x3e\x12\xbc\xb8\x2b\xdb\x35\x90\x95\x03\xaf\x28\x01\xc2\x7c\xa4\xd9\x5a\x50\x53\x4a\x3d\x15\xf2\xfc\xe9\x38\xf3\xb1\xd6\x88\x90\xe8\x23\xc1\x1c\xcb\x82\x48\xdf\x3c\xcc\x31\xf6\x10\xc8\xf4\x91\x66\xcd\x66\xf8\xfe\x53\xa1\xd5\x9f\xce\x0a\xd9\x55\x06\xd4\xfa\xe6\xd9\x19\x07\x35\x89\x50\xec\x82\x41\x38\x51\xbc\x74\xa5\x31\x18\x64\xfb\xe6\xa9\xf9\xee\x60\xee\x7b\x91\xbc\x9c\x8a\x0c\x05\xbf\xf3\xc0\x69\xa6\xfa\x02\x90\xf1\x23\x4d\x9a\xec\xcb\x80\x92\x97\x0f\x5a\x70\xe1\x12\xc5\x8f\xca\x51\x5c\x0b\x3e\xf2\xe2\x48\xc2\xe4\xc6\x81\xb8\x48\x8c\x23\x49\x11\x19\x47\x92\x64\xe5\x6e\x89\x8b\xd0\xf8\x74\x16\xa2\x25\x95\x20\xc3\x16\x4c\xe4\xc6\xed\xb3\x0c\x04\xc7\x91\x04\x69\xdc\xbb\x2f\x40\x11\x1d\x47\xe2\x04\x1a\x76\xc7\x65\x6f\x1a\x0f\xe9\xf1\xe9\xe0\xe8\x89\xfe\xf4\x69\xd6\x9a\xb3\xa0\xef\x47\x7a\xbf\x3a\x57\x02\x91\x1f\x73\x1e\x45\x14\xc8\xfc\x91\xa2\x1c\x05\x45\x0c\x08\xfd\xc8\x33\x92\x6a\xd3\x42\x0c\xad\x3f\x92\x58\x3d\x16\xf9\xb4\x7d\x71\x16\x42\x1e\x89\x01\xc9\x3f\x52\x2c\xc1\x8e\x02\xd1\x3f\x52\x34\xd9\x16\x42\xf6\x47\x9f\x8f\x14\xc2\x3f\xf2\x84\xe2\xa8\x1a\x01\xb4\xff\x48\x11\x34\x8d\xdc\x08\x3d\x56\x43\x52\x30\x38\x0d\x3c\xeb\x39\xbd\x5f\x63\x2a\x3b\xb0\x5b\x3a\x99\x23\x35\x3b\xb0\xd9\x81\x05\x9f\x66\xaa\x5b\x77\x6b\x4a\xfd\xa1\x2c\x6d\xd7\x84\xef\xf6\x46\x33\xdc\x20\x61\xab\x80\xae\x32\xba\x39\x48\x7d\x6f\x51\xe8\xfb\xd6\x38\xb5\xde\xba\x4b\x5d\xda\x06\x2b\x1c\xdb\x12\xa7\x83\xfc\x53\x92\x6a\x2e\xbe\xce\x3a\x58\x85\x34\x4b\xcb\xb0\x79\x7d\xb2\xa2\x65\x46\xb7\xdb\xe1\x5e\x21\xd5\x05\xce\x9f\x9d\xbd\x7a\x08\x49\x6f\xfb\x16\xce\x76\xd0\xad\xc3\xcc\x2f\xfb\x46\xd8\xff\xf4\xc9\xbf\xba\x51\x4d\xea\x12\xef\x49\x1a\xa8\x8e\x37\xa4\xb3\xbb\x1f\x1d\xf7\x12\xbc\x50\x4d\x25\x8d\xee\x2a\xe9\x45\xea\x54\x79\xc1\x2b\xb5\x98\xa0\xd3\xbe\x7e\x58\xff\x3e\xf9\x38\x27\xd8\x78\x9b\x08\x29\x2e\x9a\x5a\xce\xb6\xdd\xd0\x94\xd9\xb6\xb3\xec\x86\xdd\x2b\x04\xf2\xaf\x53\xf7\xce\xf6\xa5\xaa\xf5\xe7\xaf\x27\xa0\x68\x1f\xc1\xee\xd3\xa7\xc2\x39\x1b\x06\xd8\xac\x73\xbb\x52\x26\x7d\x1d\x46\x56\x1e\x1b\x9a\x52\x79\x78\x5f\x7f\x6a\xd4\x55\x8d\xb9\x6c\xcc\x85\x1f\x50\x8b\x27\x01\x33\xda\x20\x24\x4f\x70\xee\xf9\x07\x1f\x74\xfa\x0e\x50\x18\xcc\xb7\x60\x28\x5c\xdb\x3f\x6a\x25\xba\x87\x3b\x8a\x20\xfd\x89\x7e\x8d\x93\x9d\x0f\xd0\x2d\xc3\xc9\x26\x34\xce\xbb\x77\x69\xee\x0f\xff\x36\xe5\xfe\xf0\x23\x4d\x16\xdb\x9b\xae\x75\xfb\x84\x40\x60\xb8\xf6\x1c\xce\x5a\x9b\xb4\x72\xec\xe4\x0a\x08\xb2\x19\xba\x43\x93\xd9\x36\xbb\x43\xf9\x36\x7d\xc5\x37\x2e\x4c\xdd\x55\xd2\x02\xcf\x5b\xdf\x2e\xb5\xd3\x27\x53\xf1\xb3\x31\xf4\x6b\x53\x3e\x24\x2f\xc7\xf9\x69\xbc\x09\x19\x16\xcd\xff\x9c\xb0\xd6\x08\x48\xe2\x04\xc5\x01\xfa\x79\x6b\x02\x29\x0e\x86\x32\xf3\x50\xd8\xfd\xb9\x29\xeb\xce\x9b\x5b\xf2\x7e\xe3\xa7\xc2\x30\xd0\x77\x43\xe7\x29\x78\x93\xb7\x43\xd4\xa6\x49\x3d\xcc\xff\xd2\xc5\x11\x1c\x01\xe2\x0b\xa7\x3d\xc9\xb5\x43\xf9\xa2\x73\x64\xab\x2f\xe5\xe7\xf9\xbf\xa7\xf8\xb8\xc4\xc0\xfc\x63\xef\xa8\x64\x03\x24\x45\xd7\x1f\x2e\x84\xe9\x15\x02\x49\xb7\x7f\x38\x8f\x2e\x21\xef\x00\x9a\x90\xbf\x33\xd7\x49\x04\x68\x93\x91\x7d\x9c\x5c\x00\x6c\x13\xf9\xa7\xbe\x74\xa6\x0d\x97\xa4\x14\x6c\x64\xb9\xd5\x9d\xff\x54\x2b\x1f\x4c\xf9\x8f\xda\x96\x37\x97\xc1\x3a\x12\xa3\xa0\x5b\x8a\x19\x7d\xf8\x7e\xa2\x5d\x47\x39\xd1\x18\x3c\x06\x83\x3a\x8d\xb8\x69\x80\x56\x9b\x83\x2b\x8b\x58\x7e\x50\x85\x39\xa4\xca\x7a\xe4\x76\x6a\x2b\x09\x58\xd9\xa8\x72\x69\x9a\x05\x12\x80\x85\xd9\x73\x84\xc2\x4f\x3a\xc0\x8f\x6f\xe4\xda\x42\xf8\xfd\x89\xc5\xf7\xc6\x34\x64\xe7\x82\x71\x24\xa7\x15\x42\x4c\x46\x46\x56\x20\xff\xf8\xc7\xb7\xcf\x49\xe4\x89\x8a\x4e\x8e\xca\x53\x7a\x9d\x87\x07\x3c\x61\x9e\xf1\x4b\xe5\xa0\xa8\x53\x52\xbd\xba\xfd\x60\xda\xcf\xc7\xc9\xc7\xe6\x9b\x52\xb7\x4b\x5a\x1b\x30\x94\x69\xd0\xc4\x2a\xf0\x7e\x89\x1d\x9f\xa3\xc7\xfc\x91\x4b\x96\xd9\xa9\xb0\x51\xa6\xa8\x3a\xa1\x60\xc9\x14\x1a\xd7\xe6\x04\x17\x27\x80\xe5\x85\x23\xb7\x48\x1e\x56\x52\x3d\x02\x64\x53\x61\x7a\xc1\x34\x15\xed\x13\x67\xe6\x36\x4c\x25\x57\xef\x90\xe9\xdf\x85\x63\x02\x35\x52\x42\x77\x96\x91\x19\x32\x8d\x57\x0b\x1d\xbe\xe0\x49\xcd\xbb\xc7\x84\x33\x40\x98\x57\x98\x78\xe6\x07\x3f\xeb\x83\x9b\xf1\x81\x67\x7b\x30\xef\xc3\xd1\x2c\x0f\x2c\xc3\x03\xcc\xee\x60\x5c\x2e\xa3\x16\x1e\xa2\x65\xe1\x25\x45\xd3\x45\xd0\x93\x08\x53\x6b\xb4\xb6\xfb\xb0\x42\x83\xc0\xe0\xe6\x16\xa3\x90\xa0\xf8\x9f\xca\xa1\x3e\x55\x3c\x13\x47\xea\x97\xe1\xec\xa5\x5f\x3b\x30\x48\x44\x05\x78\x83\x66\x01\x36\x21\xcb\xf6\x0a\x81\x78\xf6\x0a\xaf\xaf\x19\x3f\x43\x56\xd2\xbb\x4c\x90\x28\x2b\xe8\x4f\x36\x79\xf6\x29\xaf\xeb\x18\x33\xa1\x34\xdb\x91\x3b\x24\xeb\x09\x26\xea\x82\x2b\xe9\xfb\x25\x90\x0b\x76\x6f\x2f\xc1\x98\xfc\xfe\x5d\x93\x8b\x22\xab\x2b\x17\x4b\x12\x39\x4e\xcc\xbc\xdc\x12\x68\x00\x04\xf5\x1e\x8e\xe0\x43\x68\xf7\x78\xf0\x18\x45\xb9\x4f\x99\x5a\x43\x43\xb6\x9f\x59\xac\x13\x00\x98\x3a\x95\xe4\x08\x1c\xb5\x7e\x7e\xf7\x4a\x10\x4a\xfd\xdc\xa6\x8f\x49\x15\x84\x48\xff\xbe\x82\x0f\x20\xf2\xfc\xdc\xbd\xe1\x7c\xf3\x72\xd2\x81\x06\x00\x41\x1e\x16\x63\x1c\x39\x1e\x4f\xa6\xc2\x11\xe3\x53\x5a\x1b\x2c\x94\xf8\x99\x19\x1f\x33\xcd\xcf\xc4\x90\xe0\x67\x77\xbd\x8c\xc9\x3a\x19\xf5\x1d\xe3\x4e\x3a\xda\x3b\x2c\xeb\x28\xca\x3b\x63\x83\x50\x74\x77\xc6\x10\x18\xaa\x7b\xd2\x7b\x70\x08\xc9\x1d\x63\x03\x04\xc1\x1d\x65\x04\x18\xb9\x9d\xa1\x9f\x8e\x38\x7b\x0b\xe3\x01\x04\x9d\x9d\x1c\xed\x80\x78\x05\x41\x64\x47\x59\x25\xe9\x46\x86\x74\x47\x24\xa8\xca\x13\xec\x0a\x19\x6d\x1d\x4e\xb0\xe7\xa2\xac\xe3\x36\x3f\x13\x5d\x1d\x1f\x28\xb1\xb9\xc4\x42\x53\xc7\x47\xa1\xa3\xa8\xe3\xef\x66\xa1\xa7\x1f\x7f\x50\x0b\x44\x4a\x9f\x5b\xc0\x26\x3b\xe6\x09\x63\x1e\x1c\xf4\xf3\xa4\xc7\x08\x0d\xf1\x9c\x8a\x76\x0e\x23\x9d\x43\x0b\x48\xc4\x1f\x9f\x95\xbd\x30\x85\x2c\x21\x38\xe3\x73\xb0\x49\x00\x5c\x71\x88\x3f\xd8\x78\xe2\xb0\x39\x83\xe2\x88\xcf\x8e\x6d\xb0\x7d\x45\x30\xc3\xb1\x1d\x63\x62\x85\xcf\x2d\xb4\x05\x60\x83\xa7\x15\x40\x1a\x1e\x38\xb6\x47\x30\x0e\xf8\xcc\x76\x27\x57\x60\xbf\x3d\x0f\x2a\x1f\x20\xd8\xde\x27\x93\x38\x08\xe2\x78\x4f\x92\x3a\xc8\xc4\xee\xe6\xa7\x49\x31\x71\xcb\xd8\x70\x67\x52\xa8\x33\x01\xcc\x99\x20\xbd\x6a\x20\x09\xbc\x59\x0c\x68\x33\x6e\xae\xdf\x96\x24\x90\x66\xc2\xe5\x93\x40\x99\x71\x61\xcc\xd8\x10\x66\xcc\xc4\xcf\xdd\x87\x39\xd0\x65\x3c\xd8\x32\xc1\xc6\xf0\xe1\xca\xf0\x93\xf4\xe9\x93\xf0\xda\xb2\x31\xb6\xdf\x8f\x6e\x94\xe2\x69\xc7\x80\xa1\x8c\x83\xa3\x2d\x56\xd5\x45\x2c\xfc\xec\x08\x33\x91\x83\x38\x4a\x31\xb3\x45\xea\xac\xc8\x27\x9f\x94\x07\x62\xe1\x62\xc7\x10\xd0\x68\x78\xd8\x51\x64\x34\x02\x0e\x76\x94\x79\xc4\xc0\xbf\x9e\x85\xaa\x10\x62\x5e\x0b\x35\x85\xcc\xc8\x3b\x26\x63\x8d\x39\x28\x07\xd7\xfa\xfd\x18\x30\xd9\xb9\x3b\xd2\x23\x2e\x3b\x77\xfb\x29\x3b\x77\xaf\x93\x18\x7f\x5a\x50\x3c\xcb\xc6\x9d\x16\x6c\x4d\x04\xbc\x69\x19\xd6\xb4\x44\xdb\x1c\x09\xe0\xcc\x34\xf0\x31\xc9\x4b\x00\xc1\x5e\x82\x64\x0c\x69\x68\xe2\x00\x76\x34\x2a\x89\x10\x66\xf4\x0c\x2f\x88\x50\x8c\x68\x3c\x2d\x11\xc2\x86\x86\x5f\x9f\xb0\x7d\x1d\x8a\x05\x9d\x38\x39\x9a\x8c\xff\x0c\x60\x3f\x43\x52\x44\xc4\x7c\x9e\xd9\x1d\x2b\x84\xf1\x0c\xbf\x1d\xc4\x76\x86\xdf\x7f\x02\xad\x47\x01\x2c\xcb\x19\xea\xc7\x77\x9b\x0f\x38\x9b\xbe\xa0\x54\x4c\xe6\x74\x1d\x44\x01\x1c\xe6\x99\x29\x3f\x10\x77\x19\x4f\x2f\x62\xe2\x2d\x67\x41\xa7\xd1\x14\x82\x8e\x63\x29\x33\x16\x17\xc7\x50\xc6\x9b\x70\xe0\xd8\xc9\xf8\x18\x10\x66\x32\xd3\xde\x9c\x4d\x67\x77\x3a\x3e\x32\x86\x8d\x0c\xe0\x22\x83\x7a\xda\x99\x96\x5c\xbc\x05\x2d\x1d\x3d\xf0\x7d\x32\xf9\x65\xf3\x6b\x4c\x97\x1b\xe9\x6e\x29\x37\xd2\x4d\xe4\xaf\xa4\xee\x75\x3b\x01\x42\x08\xa6\x34\x11\x18\xe4\x99\x99\xb7\xd9\x2a\x4c\xdc\x21\x3f\x69\x25\x09\x13\xd2\x38\xa5\x30\xc0\x30\xc3\x33\x13\x08\x26\xac\xb0\x6c\x9c\x09\x98\x24\x21\xb6\x34\xa7\x84\x81\x98\xcb\x06\xb0\x1e\xf9\xa7\xbe\x51\xad\x5f\xda\x14\x60\x8b\x6e\x41\x62\x62\xc0\xd4\x63\x89\x2a\xed\xa8\xa6\xea\x4c\x68\x0a\x0d\xa2\x8b\x80\x37\x53\x79\xec\xac\x9f\x01\xe9\x47\xfd\x34\xa3\x31\x55\x50\x7e\xf9\x4d\xaf\xa5\x5a\x13\xbb\x13\x20\x9c\x95\x60\xaf\x88\x9f\x46\xfa\xd9\x63\xd8\xf0\xad\x19\x52\xbf\x56\x2d\xf4\xfe\xbb\x2e\xf2\x67\x52\x24\x92\x28\x8d\xf0\xd2\xee\x97\x42\xdd\xdc\x46\x9a\x1c\x76\x88\xd2\xad\x25\x50\xfd\xdc\xaa\xba\x4b\xf8\xe6\x5f\x9d\x25\x46\x8e\x70\x1b\x72\x53\x77\xf5\x2f\xfd\x00\x25\xe8\xce\xdb\x11\xc7\x73\x8e\x98\x03\xf1\x72\x8d\x78\x79\x46\xa9\x5d\x6a\x86\x8f\x8c\x57\x5e\xf0\xf8\x86\x5b\x5d\xc1\xdc\x55\x66\x05\xc5\x64\x81\x12\xbc\x2e\x82\xb1\xb7\xfc\xe4\x7d\x76\x09\x28\x37\x41\x9f\xb9\xcd\xac\x24\x7c\xe6\x58\xbc\x44\xfb\xc9\x38\x0a\x4e\x9f\x67\x30\xd4\x10\x12\xc9\x07\x4d\x3e\x68\x50\xde\xc1\xb2\x8d\xc8\xb3\x27\x79\x4d\x0c\x6f\x7c\xbf\x09\xdc\x3a\xbb\xd2\x61\xa9\xbb\xbd\x4c\x8d\xb0\xbf\xbe\x6f\xad\x0b\x69\x3a\x14\x53\x9d\xfc\x62\x96\xb9\x44\x04\x97\x63\xa4\x49\x2e\xa4\x26\x53\x1b\x80\x6b\x12\x63\x24\xba\xab\x32\x92\x08\xe8\x86\xe7\xba\xc8\x87\x2e\x24\x35\x3b\xc2\x92\x13\x5e\x39\x45\x84\x81\xf9\x65\x15\x85\xa8\xb4\xa2\x10\xd5\xd9\xf0\xaa\x6c\x04\xa5\x32\xfc\x62\x74\x19\x3f\x4a\x0b\xd0\x85\xdc\x21\x2c\x3a\x17\x8d\x2e\xe1\x0e\x7e\x89\xb9\x80\x47\xe4\x75\xd1\x32\x5e\x89\x50\x0b\x2d\x64\x17\x51\xfd\xb3\xb8\x68\x4f\x52\xf3\x7c\x30\x4e\x65\x57\x38\x0b\x18\x95\xe7\xb2\x8d\x94\x0f\x58\x88\xf2\x01\x9b\xea\x41\x8e\x43\x4b\x72\x0d\x05\xb3\xc2\xcb\x21\x1c\xb9\x18\x6a\x2a\xa4\x33\xb0\x93\x1c\x47\x1f\xd4\x66\x65\xe8\x08\x09\x85\x18\x25\xaa\xe0\xcb\x31\x9b\x35\xb5\x3f\xdd\x2f\xc4\xb3\xca\x75\xd9\x39\x13\x1e\x3e\xda\x26\xe8\x7b\x32\xcb\x73\x78\x4b\xd5\xb5\xbd\xbb\x70\xe6\xd6\xd4\x7a\xa1\x3f\xf9\x52\xd5\x0a\x41\xf3\x29\xd8\x6a\xb7\x54\xad\xba\x32\xb5\x41\x77\x8e\x7b\xa2\xaa\x0a\xd6\xec\xcc\x66\x18\x82\x33\x90\xdb\x62\xa0\x72\x16\x6c\x1b\x79\x3c\x5f\xc7\xd2\x29\xed\xc8\xd2\xd0\xa6\xf3\x38\xb9\x75\xb6\xfc\xcd\x76\xf4\x42\xdd\x82\x7f\xad\x31\xe4\x6c\x7e\xb3\x36\xfc\x6a\x6a\x8d\x95\x54\x14\xfc\x68\x78\xd7\x7c\xf0\xff\x44\xaa\xb5\x0b\x41\x9b\x02\x5e\x5a\x77\x3f\xc7\xdf\x6d\xb3\x5e\x9b\x89\x56\xe4\x07\x50\xe6\x57\x4c\xbe\x20\x5e\x7f\x31\x4d\x77\xff\x15\x03\x98\x2c\x04\x2a\xb6\xd6\xb7\x1a\x36\xdd\xd9\xfa\xc4\xd9\x1a\x76\x52\xd8\x83\x05\x20\xf3\x54\x3c\x18\x52\x3e\x2a\x1c\x8c\xa5\x5c\xef\x4c\x53\xd9\x3b\x3f\x21\x67\x2d\x56\x5e\x7d\x74\xba\xd2\x4d\x30\xaa\xbe\x6c\x35\x09\xa7\x79\x97\xd8\x9b\xf1\x7c\x68\x4e\xc4\x88\xcf\xe5\xa3\xa2\x99\x70\xd4\xf4\x36\x2e\xf4\xf3\xb5\xe2\x73\xb7\xb4\xa0\x00\xf4\xc5\xb5\xba\xd2\x34\x44\x1f\xbe\xbb\x91\x32\xe3\x3e\x55\xca\x2d\xdd\xd3\x46\xbd\x6c\xe4\x24\x23\x2f\x05\xd9\x09\x47\xb4\x0f\xdd\xe9\x9e\x27\x6f\x20\x4e\xf5\x1c\xbf\x80\x9e\x7f\x8d\x39\xcb\x50\x56\xbf\xc0\x39\xc6\xcc\x4a\xd4\x19\x86\x53\x17\xe8\xce\xef\xfc\x32\x17\x10\xe7\x76\x6e\xb3\x87\x64\x16\x73\x5a\x31\x0e\x83\x9c\x54\x68\x59\xf8\x4e\x29\xf6\x05\x98\x13\x8a\xfa\x5a\x98\x8f\x85\x3a\x9b\x8c\x2f\xa5\x3a\x97\x69\x3f\x14\x77\x22\x51\xd5\x04\x39\x8d\x78\x95\x2b\xe0\x24\xc2\x2f\x47\x9c\x42\xf8\xe5\x09\x7b\x08\x41\x4a\x09\x77\xf6\xe0\x36\x80\x6c\xe7\x0e\x5e\x54\x99\x33\x87\x73\x1f\xc7\x79\x3b\xb8\x4d\x45\xfa\x59\xab\x3a\xff\xf6\x39\x45\xd3\x79\xad\xad\xbe\xeb\x55\x5b\xab\xb7\x5b\x4c\x52\x79\xaa\xb4\x4d\x70\xb6\xae\xf7\xcb\x0e\x64\x08\x36\x8d\x0d\x8a\x2c\x00\x47\x6d\x4f\xaf\x74\x50\x95\x0a\x2a\xaf\x1f\xef\xa7\x9e\xa0\xbf\xa0\xb5\xbb\xbe\x36\x8d\x09\xa4\x44\x10\x54\xf3\x36\xb6\xd2\x1f\x80\xf7\x73\xc6\x18\x9e\xd1\xd7\xda\x39\x5d\x9d\x77\xeb\x9d\xb9\x2c\x97\xba\xea\x6a\xd3\x2c\x3e\x2f\x1a\xbb\xf9\xf3\xa7\x7b\x5d\x76\xe8\xe5\x23\xe3\x16\x8b\x9f\x93\x33\x7c\x07\xaf\x65\xb4\x2c\x13\x68\xa5\x42\xb9\xfc\x74\xdf\xba\xa1\xc2\x98\xd9\x64\x9f\xdd\xdd\xbf\x88\x84\x40\x22\xe8\xf2\x5f\xc8\xb3\x8b\x06\x5a\x7f\x85\xda\x53\xb3\x3c\xc9\x44\xfa\x74\x71\xc1\x62\x0a\xf7\x73\xa0\x28\x5f\xc2\xbf\xb8\xde\x92\x1c\xff\x84\x87\x25\x30\x3c\x3b\x32\x05\xf3\x05\x82\xfc\xc2\xdd\x17\x70\xd7\xaf\xd7\x0e\x7d\x26\x6d\x56\x0c\x59\x31\x64\xc5\xf0\x84\xde\xaf\x62\x10\x0c\x7e\xa7\xcd\x62\x09\x82\x15\x15\x62\x38\x1c\x5e\xa2\x43\x21\x41\x8a\xd8\x58\x74\xe0\x83\xc3\x02\x41\x0f\x31\xb7\x83\xc3\x01\xe3\x72\xc4\xb7\xb7\xb9\xca\x7e\xed\x6a\x5c\xea\x5a\x97\xc1\xba\xef\xda\xe1\xda\x89\xa9\xd2\xb2\xd9\x9d\x4f\xd7\xa7\x94\x4f\xd7\x5d\xca\xa7\x6b\x36\xbb\xd9\x94\x15\xc3\x53\xca\x8a\x61\x4b\xef\x57\x31\x08\x06\xe7\x0d\xcb\xd9\xaa\xb3\xe7\x16\x19\x6c\x93\xa6\xad\x82\x69\x6d\x95\x63\xd3\xc0\x93\xdb\xe5\x5a\xef\xe6\xd4\x96\x72\x9f\x4b\x39\xb2\x13\x4f\x67\xc8\x0f\xb4\x38\xe6\x7a\x11\x43\x93\xc7\x38\x9d\x0b\xf9\x09\x5d\xc4\x3b\x52\xe2\x9c\xd4\x51\x27\x24\x3f\xb1\x8b\x38\xa7\x76\x11\xf3\xab\x62\x9c\xde\x45\x84\x13\xbc\x10\x9e\xe2\x45\x8c\x93\xbc\x88\x71\x9a\x17\x51\xd6\xb4\xd7\x2e\x5f\xc8\x39\xe3\x2f\x93\xbc\x70\xf5\x29\x45\xe1\xba\x48\xe6\x12\xfb\x05\x9b\x44\xf6\x43\xf8\x51\xe2\x15\x94\x71\x56\xb0\xad\xad\xed\xe2\xe1\x5f\x07\xe9\xf5\x20\x69\x7a\xb0\x33\xf3\x1c\x9a\x7e\x9d\xd8\xa1\xe9\xa7\x06\x5d\x8e\x4f\x93\x68\x52\x9b\x5b\x68\xf4\xe6\xd8\x74\x0e\x41\x3d\xa5\x1c\x82\xda\xa5\x1c\x82\x12\xc6\xa6\x25\xc6\x6a\x4c\x43\x35\x92\x89\xc5\x5c\x4c\xc1\xc3\x12\xc3\x94\x2d\x89\xa2\xd5\xe2\x73\x8d\xc8\x10\xe5\xd7\x37\x33\xad\x23\xae\xf1\x39\x99\x91\xc3\x8a\x77\x36\xc1\xe4\x98\x27\xf0\x64\x8e\x79\xe6\x98\xe7\x8b\x94\x63\x9e\x6f\x53\x8e\x79\xbe\x4e\x39\xe6\xb9\xa5\x1c\xf3\x4c\xf5\x82\x1c\xf3\xcc\x31\x4f\x32\xe5\x98\x27\xe5\xe9\x1c\xf3\x24\x53\x8e\x79\xe6\x98\x67\x8e\x79\x6e\x29\xc7\x3c\x73\xcc\x33\xc7\x3c\x7b\xca\x31\x4f\x68\xd8\x1c\xf3\xfc\xff\xd8\x7b\x97\xed\xb6\x71\xe4\x7f\xfc\x55\xf8\x02\xde\xfc\xbe\x73\x66\x31\xbb\x4c\x9c\xf4\xf8\x74\xd2\xf1\x89\x93\xee\xff\x16\x26\x21\x09\xc7\x14\xc1\x06\x40\x5f\xfa\xe9\xff\x47\xa4\x29\xc9\xf1\x45\xa8\x4f\x01\x20\x25\xa3\x96\xb6\xc8\x02\x81\xaa\x42\xdd\x0b\x46\x44\xfa\xf9\x71\x8d\x58\xf7\x9c\xb6\x46\x58\x2c\x5d\xef\xa0\x4d\xf1\x00\xa8\x99\x38\x59\x0d\xc5\x40\x9b\xa8\x06\x4f\x5e\xc5\x27\xa9\xe1\x2a\x21\xa4\x08\x32\x64\x25\x36\xd8\x85\x81\x10\x1f\xe8\x42\x6b\x99\xb6\x0f\xa8\x78\xa5\x2a\x4e\xa0\x58\xc5\xa6\xa3\xe1\x34\xc6\x99\x8a\xc6\x38\x79\xc6\x34\xb4\xe4\x17\x2b\x36\x01\x0d\x3c\x7f\xde\xe4\x33\xd6\xb0\x48\xce\xc4\x33\x06\x29\xc0\x93\xce\x18\x38\xf1\x09\x67\xc9\xa9\x0f\x9a\x6a\x06\x12\x1f\x3e\xcd\x2c\x5f\x72\xaf\x42\xbe\xe4\xb8\x0f\xd1\xbe\x86\x30\x99\x0c\xb2\x48\xfc\x54\x7c\xb5\x16\x4b\x79\xd9\xd5\xf5\x55\xcf\x53\xa1\x8d\x93\xd9\xe9\xfb\x31\xb7\xb2\x51\xee\xe3\x78\x3d\x4d\xbf\x91\x94\x41\xdf\x80\xcf\x03\x92\x34\x74\x63\xbc\xd4\xeb\xb5\x68\x08\x02\x62\xae\x1f\x42\x98\x5c\x0e\x7c\x04\xdc\xd0\x24\xe5\x14\x10\x60\x86\x39\x17\x1b\x7d\x8e\x39\x2f\x36\xc2\x9e\x65\xce\x0f\xcd\x30\xc2\x32\x6c\x6f\x2f\x3e\x72\x35\x00\x72\xde\xd8\x55\x8e\x1a\x33\x00\x27\xe8\x81\x06\x3c\x58\xee\x75\x7c\xc2\x39\x9f\x4a\xb9\x53\xce\x03\xd0\x0b\x73\xd2\x39\x7b\x05\x3c\x7a\xc1\xe7\x9d\x33\xa9\x86\x3f\xf3\x9c\x4f\x3d\x01\xe6\x9e\x07\x20\x20\xd6\xec\xf3\x00\xf8\x79\xf3\xcf\x27\xa6\x5f\x78\x0a\x3a\x93\x7c\x79\x93\xd0\xf3\xf5\x9c\xaf\x67\x02\xb0\x9b\xe8\x00\x7e\x59\xa8\x8b\x0e\x65\x46\x3a\xcb\x9d\x42\x34\x99\x68\xfa\x7b\x32\xb3\x69\xab\xe6\x03\x42\x84\x23\x40\x50\x06\x66\x31\x2f\x87\x71\x39\x4c\x0b\x33\x4f\x6b\xe4\x42\xdd\x27\x33\x34\x87\x1b\x25\x53\x82\x0f\xe2\xa4\x94\x90\x48\x4c\xf5\x2e\xd4\xa8\x09\x04\x5b\x27\xed\xa5\xae\x55\x49\xd0\x1f\x00\x5c\xb5\x5a\xc8\xf2\xa1\xa4\x4c\x25\xc6\xe8\xb8\xd5\xd6\x5d\x39\xe1\x37\xa2\x93\x8b\x6c\x03\xf2\x9e\x3e\x70\x97\xab\xef\x91\xdd\x97\xfb\x70\xbc\xc5\x11\x0c\xbd\x67\xe5\x5c\xfb\x9b\x04\xaa\x04\x78\x07\xb5\xd2\x16\xc0\x59\xf0\x37\x7a\xf3\xbd\xff\x93\xa2\xf2\x0c\x19\x3c\x87\xc9\xf3\xc0\x39\x56\x45\x11\x34\xff\x7a\xe2\x55\xf0\xb3\x9e\x89\x7a\xf8\xd3\x87\xfb\x2d\x60\x49\x8b\xc9\x72\x9e\x5b\xd8\x0b\xc7\x3c\x36\xdf\x11\xd1\xcf\x41\x34\x0f\xdf\x20\x07\x42\x9f\x03\x0b\xd7\x24\xfd\xfa\x0e\x06\xc1\xde\x9f\xdd\x74\xd7\xd2\x34\xd2\x49\x7b\xa6\x1a\x77\xa6\xcd\xd9\xf0\xba\xff\x14\xce\x40\xa4\x64\xcb\x95\x44\x85\xc1\x64\xd5\x70\x1b\x1a\x48\x79\xc3\xb9\xb2\xbd\xd2\xe5\xcd\x3b\xba\xe3\x32\x97\x05\xe4\xb2\xe3\x21\x75\xf0\xc1\xd6\xc8\x2b\xe7\x3f\x2c\x7b\x7c\x28\x9b\x05\x3e\x90\xcd\x02\x1a\xda\x6c\x16\x60\x6f\xc8\x66\xc1\x16\xb2\x59\x90\xcd\x02\x1f\x38\x55\x85\x25\x9b\x05\x7e\x8f\x66\xb3\xc0\x1b\x32\x97\x3d\x83\xe3\x21\xf5\x34\xc9\xf8\x45\x51\xab\x5b\xd9\x48\x6b\x2f\x8d\xbe\x8e\x1e\xcd\xa0\x5b\x11\x9c\x1a\x28\xd0\x7a\x38\xae\xc2\x76\xb4\x32\x51\xa8\xba\x33\xf2\xc7\xca\x48\xbb\xd2\x35\x71\x9b\xf0\x5e\x43\xa8\x58\x81\x2c\x1b\x9c\x78\x30\x69\xcf\x20\x00\x96\x25\x03\x53\x2c\xd7\x82\x99\x34\x55\x8a\x65\xb5\x4c\x9a\xd5\x07\x5a\x2a\xb8\x95\x12\xa0\xbf\x08\x62\x9d\x60\x96\x09\xe3\x68\x30\x5d\x09\xd4\x93\xb8\x3a\x12\x53\x3f\x0a\xac\x1b\xa1\xd6\x47\xf2\x12\x5a\xb2\x1a\x06\x12\xbf\x6a\x94\x53\xa2\x3e\x97\xb5\x78\xb8\x92\xa5\x6e\xa8\x93\x3f\xd3\x5f\x92\xad\x34\x4a\x57\x47\xb2\x58\xdb\x95\xa5\xb4\xf6\x68\x34\x10\xd0\xf2\x3c\x22\x1d\x24\x4b\x4f\x50\x7a\xce\x5d\x94\x39\xb5\x96\xba\x73\x47\x21\x18\x80\x4f\x8c\xde\xfc\x68\x73\x4e\x31\xab\x84\x19\x09\xd6\x43\x81\xcf\x25\xc0\xb9\x9c\x7e\xb1\x38\xeb\x6e\x84\xda\xc5\x65\xb2\xac\xe3\x0d\xba\xe3\xd9\x9c\xa4\x75\xc6\xad\xd1\x4e\x97\x9a\x9c\xa6\x0c\x22\xc4\x4a\x2e\x9e\x50\x38\x45\xe2\xa5\x49\x6a\x36\x52\x54\x2a\x7b\xcf\xf6\x21\x7b\xcf\x0e\x3f\x9d\xbd\x67\x2f\x41\xf6\x9e\x11\x20\x7b\xcf\xe8\x0f\x66\xef\xd9\x01\x84\xd9\xfe\xcb\xde\xb3\x97\x57\x98\xbd\x67\x33\x5b\x6c\xf6\x9e\x1d\x80\xec\x3d\xf3\x79\x7e\x0e\xd2\x73\xee\xa2\xec\xc4\xbd\x67\x63\x8b\x11\xd2\x4c\x49\x84\x2b\x6b\xb5\x56\x14\x37\x5a\x11\x68\x4a\x03\x4c\xe9\x8c\xe6\x12\xd2\x9e\xfe\x97\x02\x0f\x59\x59\x76\x46\xb9\x87\x8f\xba\x71\xf2\x9e\x20\x2e\x31\x8a\x13\x75\xad\xef\x2e\x8d\xba\x55\xb5\x5c\xca\x4f\xb6\x14\xb5\xa0\x0e\x5c\xc2\x6b\xf2\x4b\xd1\x8a\x6b\x55\x2b\xfa\x49\x32\x1a\x80\x57\x27\xef\xb2\x29\x8a\xca\x50\xeb\x5e\x8a\xa3\xfb\x4a\xb8\x2a\xe8\x91\xd8\x89\x64\x80\xd2\x78\x6b\x74\xf9\x55\x77\x0d\x51\xf3\x81\x7d\xc8\xa2\xfa\xd6\xd4\x0f\xdf\xb5\x76\x9f\x55\x2d\xed\x83\x75\x92\xd8\xb9\x12\xfd\x52\xd3\x35\x1f\xec\x6f\x46\x77\x44\xd2\xdb\xd3\x00\xfe\xfd\xaf\x24\xaa\x76\xbf\xd2\x3f\x74\xb3\xd9\xa5\x84\x7b\xf3\xd3\x4a\x62\x93\xb7\xf4\x5b\x63\xe5\x17\xd5\x74\xf7\xdf\xfa\x0e\x2d\xe9\xc6\xe8\xc9\x5b\x09\x37\x0c\xc7\x3a\xe2\x6b\x4a\x67\x92\x00\x08\xfb\x47\x53\x22\xec\xc8\xd4\xc6\x42\x08\x8a\xe3\x3b\xd5\x54\xfa\xce\x26\xa6\xb7\xe5\xda\x8a\x8f\x46\x56\xb2\x71\x4a\xd4\x57\x2d\x52\xb9\xc9\x38\x9a\xe7\xe8\x93\x4f\xa1\xd8\x0a\xa4\xc4\x98\x93\xe9\xd1\x4e\x18\xd7\xb5\x39\xea\x38\xc2\xbb\x50\xee\x72\xd4\xf1\x6d\x74\x39\xea\xe8\x03\x39\xea\x98\xa3\x8e\x6f\x40\x8e\x3a\xfa\x3c\x3f\x07\xbf\x79\x8e\x3a\x3e\x83\x1c\x75\x8c\xbb\xd8\x1c\x75\x3c\x00\x39\xea\xe8\xf3\xfc\x1c\xa4\xe7\xdc\x45\xd9\x89\x47\x1d\xad\xab\x14\x21\x0e\x83\x78\x26\x7b\x14\xdf\x1a\xca\xe4\x07\x04\x8d\x93\x66\xad\x9a\x3e\xae\xf4\x55\x5a\x2b\x96\x92\x36\x2d\x05\x60\x89\x17\x50\xc6\x6f\x79\xec\x1c\xf9\xfd\xb4\x8d\xbc\xd5\x75\xb7\x96\xe7\xf2\x56\x91\x82\xd1\xc9\xaa\x2d\xaa\x7e\x65\xc8\x28\x1c\x58\xea\x25\x2c\x08\xc0\xf2\xf3\x77\x7b\x42\x7a\x6c\x9e\x93\x14\x06\x02\xec\xc3\x59\x73\xa4\xbf\xf5\x66\x61\x49\xc9\x6f\xc0\x68\x74\x2b\x96\x40\xdc\xfc\x38\xe8\x7e\x17\x55\xc4\x10\x22\xbd\xfa\x6d\x77\x9d\xf4\x1c\x1f\xf1\x7d\xba\x6f\xc9\x31\x93\xa4\xd2\x64\x4b\xe1\x27\x20\x4c\xee\xb4\xb9\x51\xcd\xf2\x5c\x11\xb6\x9c\xbc\xd9\xc7\x38\x4b\x97\x34\x3a\x81\x2a\x2b\xc9\xe3\x12\x10\x61\x4c\x8d\x88\xe0\xe5\x9d\x50\x34\x04\xf4\x2c\x73\xa3\xbf\x64\x6f\x23\xc4\x88\x40\x4c\x01\xdd\x7e\xc4\x96\xc7\x0b\x55\xf1\x58\x02\x78\xde\xbc\x38\x02\x1e\x45\x60\x7a\xf1\x19\x11\x04\x16\x66\x4e\xe7\x38\x28\x76\x80\x46\x0e\x18\x71\x03\x34\x6a\x80\xc4\x0c\xf0\xba\x65\xc0\xe3\x05\xf9\xbb\x78\xde\x2e\x96\xaf\x2b\xa8\xa7\x0b\x8b\x12\x24\x55\xfc\x88\x4e\x35\x4c\x85\x43\x7c\xc1\x47\x71\x77\x64\x8e\x20\x71\xc4\x5c\x49\x94\xfc\x08\x71\x04\x40\x56\x75\x47\xc8\xaa\xee\xaf\xa8\xb2\xaa\xfb\x3a\x64\x55\xd7\x1b\xb2\xaa\xfb\x3a\xae\x7c\xb1\xbf\x08\x59\xd5\xf5\x58\x5b\x56\x75\xc7\x45\x66\x8e\x78\x87\xaa\x2e\xe9\xe7\xe4\x86\xf6\x54\xc2\xa7\xe8\xc4\x08\x53\x01\xba\x30\xa0\x17\x81\x04\x4a\xbf\x37\xc9\xe4\x81\xa6\xb9\x23\x59\x2f\x74\x26\x27\x6a\xe5\x08\x01\x50\x25\x2a\x74\x94\xa0\x16\x0e\x50\x1a\xae\x7d\x63\x9a\x37\x43\xf4\x82\x1a\x77\xf2\x7c\x5a\xb2\x96\x8d\x68\xd8\x68\xe2\x1a\xa0\x59\x53\xb5\x6a\x68\xc3\xa9\xba\x03\x59\x6f\xc0\x75\x06\x58\x5f\x08\xa6\x2b\xd0\x35\x67\x60\xc5\x54\x72\x27\xa9\x22\x64\x72\x65\x24\x8b\xa7\xb9\x6a\xa0\xd4\xf0\x34\x4b\x43\x13\xc1\xd3\xac\x8e\x6c\xff\xcc\xf6\x96\xce\x32\xeb\x55\x98\x97\x30\xc1\xd2\xb5\x53\xb0\x03\xe9\x53\x1a\x5d\xc9\x2b\x59\xcb\xd2\x69\xaf\xbc\x25\xbc\x6b\x11\x91\x78\x48\x5f\xd1\x1a\xa5\x8d\xf2\xcb\x57\xa6\x1e\x01\x6d\xfb\xc7\x95\x7c\xac\x85\xb5\xbe\xc5\xe8\xa4\xad\xa1\xb7\xa0\xce\xf6\x6e\xb6\x77\xb3\xbd\xeb\x09\xd9\xde\x0d\x89\x31\xdb\xbb\x03\x64\x7b\x37\xdb\xbb\x2f\x40\xb6\x77\xb3\xbd\x9b\xed\xdd\x2c\xb3\x5e\x84\x79\x09\x93\x13\xb1\x77\x49\xcd\x8f\xa9\x5c\x43\x6b\x78\xcc\x6b\x00\x8c\x14\xf4\x52\xcf\x9c\xda\xd8\x78\xee\x5f\x44\xfa\xf9\x46\x61\xa8\xba\xda\xbf\xa5\x1c\x69\xfd\x40\x63\x64\x2a\x35\x2e\x68\xdd\x4b\x91\xe6\x9c\x74\xd1\x4a\xef\xaa\x9a\x70\x5d\xc4\x1e\xaa\xf4\x7a\x50\x72\xdf\xd4\x34\x1f\x8f\x75\x49\x45\x74\x0a\x72\x67\x54\xe8\x0a\xa6\x76\x43\x85\x90\xf4\x0f\xc5\x46\x42\xed\x7a\x9a\xe2\x56\xb0\x5d\xdb\xd6\x72\x2d\x1b\x27\xea\x9e\x93\xbd\xcf\x9f\xe8\x5b\xc1\xda\x05\x23\xea\x1e\xd5\xa4\xb7\x0f\xb6\x74\x75\xac\xef\xc6\xfc\x49\x74\x5f\x12\xa8\xde\x02\x3e\x24\x8c\x8b\xc9\xbe\x23\xa2\xdf\x88\xea\x33\x82\xf3\xde\xfc\x09\x0b\xeb\x1f\x8c\x10\x0c\xaf\x67\x30\x74\xa0\xfc\x3e\xc1\x18\x1d\xa1\xbd\x81\xe7\xa6\x90\x4a\x73\xab\x4a\xf9\xa1\x2c\x75\xd7\xb8\x28\x5a\xa9\xd3\xb5\x34\xc2\x9b\xf6\x08\x72\x8d\x4e\xa2\x72\xb1\x90\x25\xc1\x37\x00\x9c\xd6\x8d\x8c\xdb\x41\x69\xf3\xc9\xc2\x33\xb0\x0a\x23\xd9\x9d\x19\xb9\x75\x58\xba\x0b\x96\x78\x67\x90\xb7\x21\x5a\xfb\x0a\xcf\x17\x7b\xfd\xcc\xc8\xb6\x56\xa5\x78\xf3\x80\x7c\x1d\x26\x7e\x87\xf0\x28\x32\x7e\xc8\x75\x5b\x0b\xf7\xe6\x01\xf8\x32\xe8\x5a\x3a\x51\x09\x27\x0e\x1d\x26\x85\xe1\x45\xd3\x68\xe7\x2f\x76\xe6\x98\x83\xe0\xfd\x53\xeb\x71\xd3\x52\xf6\xae\xac\x3b\xeb\xa4\xf1\x1b\xb1\x4e\xfa\x7e\x79\xef\xa4\x69\x44\x7d\x71\x19\xfa\x32\x80\x8e\xc1\x4f\x89\x1a\x17\xfd\xc3\x88\xc5\x42\x95\xfe\x6d\xf2\x48\x6b\x5a\x49\x51\xbb\xd5\xc7\x95\x2c\x6f\xfe\xd0\x95\xf4\x1d\x38\x1f\x37\xf5\xa4\xd6\xa2\xfa\xaf\xa8\x45\x53\x46\x21\x87\xfd\xd7\x5f\xf5\x3e\xd4\xef\xa2\x59\xfa\x71\xde\x3c\x68\xa3\xd5\xc6\xcf\x97\x19\x55\xaf\xa1\xd9\x69\x80\x42\xd0\x10\x28\x72\x00\xac\x7d\x28\xa2\x07\xd0\xc2\x3d\xa9\xd6\x45\xed\xaa\xe5\x1d\x67\x89\xa6\x96\x6c\xae\x76\x6b\x95\x6e\x3e\x2c\x16\xaa\x19\xfc\xc8\x0b\xb5\x8c\xe1\x46\x2e\x6b\x25\x1b\xe7\x27\x50\x90\xf7\x17\x70\x70\xa9\x60\x74\xbe\xc5\xbd\x44\x71\x8c\x3b\x5f\x6f\x22\x41\x1e\x84\x54\x5d\xad\xd3\x46\x2c\x83\x28\x90\xa2\x0f\xac\x7f\xd5\xd5\x61\x02\xf1\x94\xc3\xe4\x3d\x39\xcc\x61\x1b\x0d\x77\xb8\xe4\x82\xea\xb9\xad\xf2\x0e\x7d\x90\x04\xff\x8d\xf2\x4b\xa7\x24\xbd\xd4\xf7\xa2\x22\xbc\xd4\x57\xd0\x9e\xf5\x5f\x74\xf0\x47\x1e\xde\x3e\x6f\x26\xf4\x0e\x0c\x53\x0e\xdc\x3f\x20\x3c\x47\x9b\x86\x16\x00\x9e\xe3\x17\xf8\x5b\x65\x9e\x29\xf0\x94\xc3\x5f\x0b\x57\xf6\x2d\x58\x87\x9b\x7a\x7a\xcd\xf3\x24\xdc\x5d\xbd\x27\x29\x66\xb7\x66\x3c\x18\x48\xf0\xf3\x53\x35\xce\x1b\xe9\xf7\xde\xb3\xed\x21\x4c\xad\x9f\xf6\xd4\xff\x45\x5c\x4b\xbf\x30\xd9\x71\x4b\x8f\x41\x3b\xf2\xae\xf9\xf0\x5e\xf2\xd8\xa0\xbc\x0a\xfd\xca\x80\xab\xa4\xe8\x8f\x3f\x0e\x68\xb9\x5e\x28\xf7\x86\x21\x1c\x76\xef\x78\xbd\xb1\x6b\x2b\xe1\xe4\x95\x33\xc2\xc9\xe5\x9b\xaf\xf3\x15\xba\x46\xd7\xb5\x6a\x96\x3f\xfb\x17\x87\xbc\x54\x5a\x61\x9c\xf2\x6d\xcd\x1e\xd3\xdf\xe4\xcd\x1c\x3e\x96\x4d\x48\x52\xbb\x95\xc6\x1e\xd8\x1f\x0f\x74\x87\x04\xf4\xd9\x88\xe7\x95\xff\x1f\x5c\xea\x5a\xae\x4b\x51\xae\x5e\xc7\xe0\x43\x15\x65\x6f\xf5\x1f\x36\x54\xbc\x6d\xb3\x3b\xfb\xa9\x16\xd6\xa9\xf2\xbf\xb5\x2e\x6f\xae\x9c\x36\x41\xa9\x77\x61\x0f\x49\x80\x11\x48\x52\x7d\x36\x4c\x41\x9b\x2d\x40\xcb\x1f\x1b\x04\xf7\xc5\xf9\x64\x26\xd9\xb8\x80\x50\x82\x41\xfc\xd3\x19\x79\xae\xec\x4d\xd0\x70\x88\x28\x57\xaa\x59\xfa\x5c\x99\x05\x95\xcc\x2a\x65\x6f\xa2\x84\xdd\x37\x2f\xfe\xf9\xfd\x22\xf8\x7b\x23\xb1\x5b\x14\x6f\x43\x2c\xc6\xf1\xa7\xef\xf1\x78\xbd\x7e\xf8\xf3\xfb\x45\x50\x3e\xf8\xac\x0e\xa7\x2c\x52\xf8\x20\x9e\x1c\xb2\xb2\x34\x32\x4e\xfa\x89\x5d\x09\xe3\xa5\x9a\x12\xdf\xec\x4f\x03\xbb\x8f\x3b\xfc\xd3\x71\xb1\xa1\xe8\xa0\x94\xed\x6a\x11\xd4\xfd\xb4\xd6\x8d\x72\xda\xaf\xfe\x75\x26\x21\x3a\xcf\x3a\xc9\x59\x88\x96\x91\x17\x7c\x78\x97\xbc\xe8\xe1\xd5\xdf\xa5\x57\xb1\x13\xd5\x17\x44\x89\x41\xc6\xf4\x2f\xfa\xa6\x37\x47\xe1\xf5\x91\x3b\x82\xf1\xaf\x6a\xaa\xc3\x9f\x33\x03\x75\x39\x36\x3f\x9c\x38\xd1\x9e\x9c\x22\x3e\x58\x91\x5f\xc5\xc1\xb8\x14\xe5\xc4\x2a\xb9\x10\x5d\xed\x7c\x15\xf1\xb8\x56\x99\xf7\xe5\x76\xd4\xfe\xf7\xb5\xe7\x5e\x0f\x90\x30\xe9\x23\xee\x78\xd4\x78\xbe\xf4\xd6\x77\x32\x5d\x44\x3f\x7a\x84\x28\x6c\x51\xe8\x76\xf0\xb5\x87\xbe\x01\xfc\x45\x8e\x55\x41\x85\x8d\x51\xb7\xc1\x35\x89\x68\xf7\x6f\x9f\xa0\xd5\x5d\xd7\xca\xae\xae\xde\xc3\x85\x19\xdb\x27\xf6\xc1\x39\xa3\xae\x3b\xe7\xb7\x2f\x73\x8c\x34\x11\x9c\x14\x3d\xa5\x87\x62\xc3\x4a\xdf\x35\x77\xc2\x54\x1f\x2e\x0f\x3a\x9f\xf2\xdd\xbf\x07\xf4\xbb\x7f\xa1\x64\x5d\x79\xf2\x39\x8a\xa3\x18\x52\x8c\xfe\x3c\x1c\x00\x79\x0e\x60\x2d\x60\xff\x59\xf4\xd1\xb6\xc9\xea\x01\xb7\xeb\x23\xaa\x1f\xa4\x22\xbf\x77\xaa\x77\xed\x72\xa6\x3e\x27\x22\xee\x52\x37\x4e\xa8\x86\x5e\xc9\x07\xd3\x77\xa5\x6e\x95\xa5\x64\xb4\x30\x70\x8d\xbb\x39\x53\x56\x1a\x97\x17\x8f\x93\xc8\x69\xd8\x93\xab\xe7\xde\x2f\x96\xeb\xd6\x3d\x78\x8c\x86\x26\x79\x77\x65\xa5\xba\x75\x78\xc7\xa3\xfa\x47\x7e\x51\x6b\xe5\x95\xa7\x1f\x3e\x1d\xb9\x28\x16\x41\xeb\xa3\x22\xe9\xf0\x75\x77\xd2\xc1\x66\x27\xcc\x52\xba\xbf\xfe\xfa\xe3\x88\x62\x07\x77\x77\xca\xaf\x76\x60\x0e\xcb\xf5\xe7\x86\x5a\xde\xff\xd9\x9b\x39\xef\xd7\x60\xd6\xfe\xed\x10\xe6\x68\xdd\x65\x8f\xfb\x6b\x3f\x9f\xb5\x71\xbc\xa8\x75\x79\x13\x36\xa0\x53\x09\x27\x6c\xa4\xe0\xf9\xe3\xbb\x7f\xfe\x0c\x1e\x99\xf0\xde\xb1\x65\x29\x2f\x37\xc6\xa7\x75\xb2\x71\xa1\x33\x7b\x4e\x3f\x77\xac\xad\xa2\x35\x8c\x9f\x36\xb3\x66\xf8\xb0\x60\x54\xa6\xdc\x77\xd9\xea\xa0\x7c\xa9\x4c\x5f\xfe\x11\xbe\x52\xdc\xc8\x56\x5b\x15\xe9\xd5\xb7\xca\xd7\xd1\x13\x25\x0e\xb9\xfb\xb6\x60\x47\x3b\x34\x33\x08\x9b\x05\x23\x9b\xaa\xd5\xaa\xf1\xab\x62\x22\xca\x8e\x23\xca\x56\xf1\x3f\xd7\xed\x86\x1d\x66\xec\xc3\x16\xb8\xf7\xd9\xaf\xb4\x75\x3e\x9e\x44\x5a\xb6\x7c\x84\x03\xf2\x49\x68\x27\xbe\x94\x20\x4a\x03\xee\xb8\xb2\x81\xc3\x70\xe5\x4a\xb4\x1f\x3a\xb7\x3a\x57\xb6\xd4\xb7\x92\x22\xf3\x7c\xf5\xdd\x11\xc5\xd5\x50\x54\x17\x1e\x41\x24\x35\x63\xe8\xc5\xee\x74\x9c\x6e\xb2\xea\xef\xd0\xb7\xc0\x23\x75\x5c\x34\x1b\x71\x2c\xfc\x9c\x92\xc7\xe7\x40\x69\xb5\x71\xc2\xaf\x40\x6d\x0e\x4e\x83\x6c\x48\xbe\xf6\x73\xdf\x2e\x0b\xbd\x5b\xeb\xb2\x3f\xf5\xc9\x44\xb8\xfa\xfb\xd0\x69\x9c\x6d\xb8\xe3\xe0\x6f\xf6\x3f\x26\xd4\x95\xd0\x84\x55\xbd\x8e\x4a\x41\x1a\xda\xa5\x4d\x98\x90\xea\x71\xb7\x9f\x3d\xae\x31\xd4\x79\xb7\x5b\x73\x7d\xf0\x31\x7e\xac\x85\x3a\x18\x52\xa0\xb5\x27\x13\x6a\x7d\xa2\x66\xed\xf6\xdb\x82\x9d\xc6\x4a\x3b\xdd\x1c\x9f\x0b\xa5\x9a\x30\x19\x76\x83\x3c\xd8\xfe\x6b\xe3\xee\xb4\x89\xe0\x6f\x3f\xba\x4c\xee\x93\x4b\x72\x6e\x8d\xde\xfc\xe6\x30\xea\xa3\x4d\x74\x22\x0c\x36\x89\x9a\xea\xe4\x9d\x4e\xce\x41\x52\x60\xa3\xfa\x80\x47\x38\xf3\xfd\x88\x39\xdf\x3b\x00\x53\x48\x06\xa0\xe5\x23\xed\x00\xed\xa5\x36\x02\x92\xa3\xb4\x03\xea\x88\xbc\xa7\x58\xa1\xad\xc2\xa6\x13\x52\x72\xc8\xf7\x9f\xf1\x4e\x57\xd9\x01\x90\x8c\xb6\xff\x20\x6d\x46\x61\xc2\x11\x02\x94\xfc\xf3\x5f\x91\x51\xe6\xad\x14\xd8\x1e\x12\xd2\x62\x77\x70\xba\x32\x8c\x9e\xbb\x1a\x06\x6f\xc1\xc8\x67\xdd\x01\x4b\x94\x16\x78\x8e\x6b\xb0\x15\xa0\x52\xaa\x00\x33\x60\x77\x00\x8b\x9f\x22\xdf\x42\x14\xc0\xf3\x68\x77\xc0\x65\x34\x46\x6e\xed\x0e\xd8\xbc\x06\xe5\xdb\x06\xc4\x8f\xe5\xe0\x06\x5b\x00\x8f\xd5\xc9\x19\xba\x3b\x60\x70\x3a\xae\x44\xcd\x5d\x21\x02\x90\x0d\x5e\xf4\xac\x34\x64\xc3\xc7\x1f\xb2\xe1\xf3\x1c\xb2\xe1\xf3\x1c\x59\x02\xc3\xe7\xe9\x88\xa9\x1f\xfa\x46\x12\xd4\x6e\xb0\x60\xad\xab\x94\x6c\x92\x54\xbd\x14\x85\xbc\x6f\x15\x38\x2b\xa9\x80\xe7\x25\x15\x0c\x09\x41\x97\x0d\xc9\xea\x81\x48\x5c\x4d\xa6\xc5\x68\x25\x3b\x84\x5e\x50\x83\x3f\x35\x94\x03\xfa\xef\x4e\x5f\x3f\x84\x6d\x06\xba\x8c\xd2\x4c\x3e\x5e\x50\xc1\xc8\xa5\xb2\x2e\x42\x2a\xa4\x93\x8d\x68\x42\x17\x2c\x45\x69\x4f\x34\x46\x56\x26\x4c\xda\x1c\xce\xc0\x33\x00\x13\x8a\xfa\xcd\x75\xd0\xc0\x4b\xac\x2c\xad\xf5\x81\x21\x17\xd0\x5b\x6f\xe4\x43\x3f\xfc\x3f\xf4\x7b\x8f\xb0\xbd\x9b\xd6\xa1\xf3\x6e\x72\x4e\xd4\x6b\x3f\x3f\x86\x1e\x6c\x3d\xc3\x1d\xfc\x55\xe8\x4e\x6d\xb6\x14\xb5\xbc\xf8\x76\x04\x02\x69\x29\x9c\xbc\x13\xe1\x2f\xcc\xd6\x68\x27\xcb\x8d\x22\x7c\xae\xd7\x42\x85\xcf\x1e\xcd\x4c\xf9\xf2\xcf\x7d\x67\xfd\xda\xfa\x53\x23\xae\x6b\x3f\x95\x9c\xb8\x81\x43\x2f\xfe\x28\x2d\x92\x1f\xdf\x7d\x19\x43\xce\xdb\x07\xeb\x64\xf8\x7a\x77\xff\x81\x08\xc4\x57\xfb\x4b\xc1\x47\x2e\x3f\x6c\x91\x8c\xa4\x7f\xf8\x97\xfd\x5e\x05\x93\x97\x5e\x5e\xcd\xa3\x4d\x9c\x99\x47\x87\xa0\xdc\x1d\xd0\x1f\x43\xee\x0e\xf8\x08\xb1\x1a\xf9\x45\x6c\xf3\xed\x2f\x75\x86\xbb\x44\x07\xcd\x48\x3f\xba\x44\xcc\x77\xa1\xee\x44\xbb\x83\xf7\x5f\x6d\xdb\xf0\x75\x4c\xde\x5f\x79\x6b\xdb\x95\x34\xf2\x68\x32\x8b\xb7\x8a\x5c\xad\xca\x87\xe0\x69\xc0\xbf\xbc\x3f\xe2\xc1\xfb\xe6\xed\x44\xcc\x61\xf6\x48\xbe\xf1\x24\x23\xaf\x9f\xad\x44\x7d\x20\xcb\xd9\x4f\x00\x3d\x1a\xdd\x6f\xbd\xc8\x7b\xac\xd0\x52\x1e\xf6\xce\x7a\x9f\x80\x30\xcb\x19\x4f\x8e\x95\xcd\x6d\xa0\xc5\xd1\x84\xb9\xbf\x28\x27\x0a\xf2\x7e\xe0\x62\xbc\x37\x7f\x36\xda\xcb\xa6\x63\x65\xa2\xff\x2e\x1f\x12\xb4\x27\x24\xa7\x3c\x80\x51\xcc\x93\x8c\x56\x23\x21\x48\x4a\x32\x02\x10\x0d\xcf\x3d\x5b\xd9\xd8\x66\xdb\xb3\x35\xb7\x2e\x0d\x89\xeb\xdd\xb7\x2e\x1d\xed\xb4\x7c\xd1\xe4\x8b\x26\x6a\xaa\x8b\xff\xea\xbd\xc6\xe3\x93\xb0\xfb\xaa\xc0\xad\xd1\x6b\xe9\x56\xb2\x0b\xdb\xc6\xe9\xbe\xd5\xc6\xf9\xc5\x2a\xa9\x6c\xe5\x63\x52\x8c\x40\xcc\xa4\x05\x38\x82\x9a\xc3\xe8\x61\x72\x8c\x40\x5c\x3c\x26\x9e\x92\x89\x0d\x82\x69\x12\x02\x93\xbf\xa9\x32\x02\x9e\x40\x0d\x9b\x2e\x7c\xd4\x05\x9e\xbd\xcd\x2e\x80\xa0\x93\x4e\x20\xc4\xd8\x0d\xf4\x14\x39\xf5\x26\x1a\x01\xaf\xfa\x40\xf2\xb1\x59\xc5\x1e\x78\x29\x20\x8f\x1e\xb9\x65\x80\x4c\xea\x60\x96\x00\x32\x8b\xc3\x70\xea\xc0\x8b\xff\x58\x05\x41\xdc\x6a\x36\x1e\xad\x04\xa8\x64\x63\x92\x0b\xab\x8a\x8d\x5d\x42\xc6\xa9\x60\x9b\x8c\x52\xe1\xda\x35\x06\xa1\x62\x26\xdb\x08\xf9\x82\x25\x41\xbe\x60\x63\x3d\x88\x18\xb4\x5e\xa6\x21\x63\x55\x54\x13\x66\x63\xda\xf9\xae\x1f\x49\x4d\xa1\x27\xa6\x8c\x02\xc9\x9b\xbb\x11\x79\x50\xab\xb5\xf2\xeb\x4b\x3c\x02\x3e\xdf\x60\x04\x90\x8f\x61\xd2\x94\xf6\x74\xbf\x90\xfc\x88\x95\x65\x67\x94\x7b\xf8\xa8\x1b\x27\xef\xbd\x49\x1e\xa1\x2d\x51\xd7\xfa\xee\xd2\xa8\x5b\x55\xcb\xa5\xfc\x64\x4b\x51\x0b\xdf\x3e\xf7\x23\x60\x62\xb7\x14\xad\xb8\x56\xb5\xa2\x9e\x1c\x7a\xa3\x8a\x8a\x2c\xd9\xa1\x72\x68\xd6\x1d\x88\x15\xa6\x16\x45\x65\x34\xa1\x91\xd6\x00\xc7\xf2\x75\x90\x4c\x69\x47\x92\x26\x1d\x3a\x46\xc9\xad\xd1\xe5\x57\xdd\xf9\x95\x96\x3d\x45\x45\x0e\x6b\x0c\x09\x64\xdf\xb5\x76\x9f\x55\x2d\xfd\x93\x9d\x9f\xa2\x25\x7b\xc3\xbb\xe6\x83\xfd\xcd\xb7\x8e\x70\x04\xb4\x10\x16\x2b\x83\xed\xd7\xf8\x87\x6e\x36\x7b\x93\x68\x47\x7e\x7a\x16\xc5\x8c\x90\x76\x43\xac\xfc\xa2\x9a\xee\xfe\x9b\xff\x58\xa4\x11\x50\x11\x5b\xcb\x5b\x49\x56\xdd\x61\x79\x62\x74\x4d\x36\x52\x60\x64\xce\x33\x7d\x2e\x08\x32\xdf\x62\xab\x00\xc8\x20\xe1\x7a\xa7\x9a\x4a\xdf\xd9\x84\x94\xb5\x5c\x5b\xf1\xd1\xc8\x4a\x36\x4e\x89\xfa\xaa\x95\x07\xa7\xff\xfd\x0a\xf0\x61\x3c\x47\x8d\x78\x8c\x70\x2a\x1f\x05\x4d\x42\xac\xf1\x75\x5c\xd2\xcf\x37\x82\xcf\xdc\x06\xef\xc5\x5e\x14\xb5\xb8\x96\x7e\x7d\xfd\xe7\x39\x30\xae\x89\x94\xaf\xec\x6f\x69\xc7\x2c\xb9\xf1\xaf\x1a\xf7\x35\xc2\x29\xd2\xc7\xdf\xe8\x9e\x27\x6d\x50\x8c\xea\x39\x7e\x01\xa5\xec\x8c\x62\x2c\x53\x68\x80\x63\x1c\xd3\xd4\x4a\xaa\x31\x4c\x4e\x5d\xf0\x37\x7e\xe7\x97\xb9\x40\x31\x6e\xe7\xb6\x7a\x12\xcf\xd2\x8c\x56\x1a\x85\x91\x8c\x54\xa8\xaa\x89\x6e\x94\xd2\xbe\x80\x66\x84\x52\x6d\x2d\x9a\x8d\x45\x35\x36\x81\x2f\xf5\x35\x2e\xe3\x7e\x28\xdd\x88\xa4\x8a\x26\x92\xd1\x48\x2f\xec\x24\x18\x89\xe4\x97\x53\x8c\x42\xf2\xcb\x29\x46\x60\x4c\x45\x82\x6e\xec\x51\x29\x00\x37\xee\xc8\x9b\xca\x33\xe6\xe8\xd4\x87\x18\x6f\x93\xeb\x54\x5e\x3f\x6b\x45\x67\x43\x14\x90\xb5\xba\xfa\x21\xd7\x6d\x2d\xde\x6e\x7a\xe6\x4b\x53\xa5\x6e\x9c\xd1\x75\x1d\x76\x22\xb3\x68\x1a\xed\xc4\x51\x8f\x17\xf7\xfe\xe9\x5a\x3a\x51\x09\x27\xf2\xfe\x61\x3f\xb5\x1e\xf2\x8b\xb4\x77\x8b\x85\x6a\x94\xf3\x4a\x04\x21\x57\x76\xeb\x4a\x7e\x20\xbc\x1f\xc1\x31\x3c\x23\x17\xd2\x18\x59\x9d\x77\x9b\x93\xb9\x2a\x57\xb2\xea\x6a\xd5\x2c\x2f\x96\x8d\xde\xfe\xf9\xd3\xbd\x2c\x3b\x6a\xf0\x11\x88\x62\xe1\x39\x39\xc3\x77\xd0\x1b\x91\xf2\xb0\x6e\x60\x2d\x5c\xb9\xfa\x74\xdf\x9a\x61\xa2\x29\xd8\xbe\x1d\x0c\xf9\x0d\xc0\xed\x1d\x5f\x70\x12\x9a\x06\x60\x66\x17\x0d\xb0\xf9\x0a\x71\xa0\x66\x39\xc9\x42\xfa\x74\x71\xc6\x66\x32\xcf\x73\x80\x20\x5f\x82\x07\xae\x77\xc0\xe9\x6a\x5f\xc0\x49\x58\xe3\xb3\x23\x51\x80\x2f\x60\xe4\x17\xee\xbf\x00\xdd\xbf\x5e\x3a\xf4\x99\xb4\x59\x30\x64\xc1\x90\x05\xc3\x13\x78\xbf\x82\x81\x81\xfc\x4e\xaa\xe5\x8a\x94\x47\x31\x00\x6f\x48\x02\x96\xe8\x50\xc0\x44\x72\xb6\xa7\xd1\x11\x1f\x1c\x36\x88\xf4\x10\x78\x1c\x08\x05\x8c\xdb\x11\x5e\xdf\x46\x85\xfd\xc6\xd4\xb8\x92\xb5\x2c\x9d\x36\x3f\xa4\xa1\x4b\x27\x50\xa4\x65\xb5\x3b\xdf\xae\x4f\x21\xdf\xae\xfb\x90\x6f\xd7\xac\x76\xc3\x90\x05\xc3\x53\xc8\x82\x61\x07\xef\x57\x30\x30\x90\x63\x68\x91\xa3\x3a\x7b\xae\x91\x91\x75\xd2\xb8\x55\x30\xad\xae\xb2\x6f\x9a\xf0\xe4\x6e\xbb\x36\xa7\x99\x5a\x53\xee\x73\x29\x47\x72\xc2\x64\x06\xff\x42\x0b\xa3\xae\x17\x21\x24\x79\x88\xdb\xb9\xe0\xdf\xd0\x45\xb8\x2b\x25\xcc\x4d\x1d\x74\x41\xfc\x1b\xbb\x08\x73\x6b\x17\x21\xbf\x2a\xc4\xed\x5d\x04\xb8\xc1\x0b\xe6\x2d\x5e\x84\xb8\xc9\x8b\x10\xb7\x79\x11\x64\x4f\x7b\xe9\xf2\xc5\x3b\x67\xfc\x65\xe0\x17\xae\x3e\x85\x20\x54\x17\x48\x5d\x82\x5f\xb0\x4d\x64\x9f\xc2\x8e\x62\xef\x20\x8f\xb2\x9c\x6e\x75\xad\x97\x0f\xbf\x4f\xd2\xeb\x81\xd3\xf4\x60\x6f\xe5\xd9\x35\xfd\x3a\xc0\xae\xe9\xa7\x0a\x5d\xf6\x4f\x7b\x41\x52\x9d\x9b\xa9\xf4\x66\xdf\x74\x76\x41\x3d\x85\xec\x82\xda\x87\xec\x82\x62\xfa\xa6\x39\xca\x6a\x48\x45\x35\x90\x8a\x05\x6e\x26\xe3\x61\x8e\x62\x0a\x73\x22\x6b\xb7\x70\xaa\x61\x29\xa2\x78\x7d\x33\xa8\x1d\xa1\xca\x67\x32\x25\x07\xf2\x77\x36\x4e\x65\x9f\x27\xe1\xc9\xec\xf3\xcc\x3e\xcf\x17\x21\xfb\x3c\xdf\x86\xec\xf3\x7c\x1d\xb2\xcf\x73\x07\xd9\xe7\x19\xeb\x05\xd9\xe7\x99\x7d\x9e\xde\x90\x7d\x9e\x3e\x4f\x67\x9f\xa7\x37\x64\x9f\x67\xf6\x79\x66\x9f\xe7\x0e\xb2\xcf\x33\xfb\x3c\xb3\xcf\xb3\x87\xec\xf3\x24\xa1\xcd\x3e\x4f\x18\x11\xe9\xe7\xbe\xd3\xd7\x08\x24\x08\x75\x8b\xf0\xdb\x0f\xcf\x69\x6b\x84\xc5\xd2\xf5\x0e\xda\x14\x0f\x80\x9a\x89\x93\xd5\x50\x0c\xb4\x89\x6a\xf0\xe4\x55\x7c\x92\x1a\xae\x12\x42\x8a\x20\x43\x56\x62\x83\x5d\x18\x08\xf1\x81\x2e\xb4\x96\x69\xfb\x80\x8a\x57\xaa\xe2\x04\x8a\x55\x6c\x3a\x1a\x4e\x63\x9c\xa9\x68\x8c\x93\x67\x4c\x43\x4b\x7e\xb1\x62\x13\xd0\xc0\xf3\xe7\x4d\x3e\x63\x0d\x8b\xe4\x4c\x3c\x63\x90\x02\x3c\xe9\x8c\x81\x13\x9f\x70\x96\x9c\xfa\xa0\xa9\x66\x20\xf1\xe1\xd3\xcc\xf2\x25\xf7\x2a\xe4\x4b\x8e\xfb\x10\xed\x6b\x08\x93\xc9\x20\x8b\xc4\x4f\xc5\x57\x6b\xb1\x94\x97\x5d\x5d\x5f\xf5\x3c\x15\xda\x38\x99\x9d\xbe\x1f\x73\x2b\x1b\xe5\x3e\x8e\xd7\xd3\xf4\x1b\x49\x19\xf4\x0d\xf8\x3c\x20\x49\x43\x37\xc6\x4b\xbd\x5e\x8b\x86\x20\x20\xe6\xfa\x21\x84\xc9\xe5\xc0\x47\xc0\x0d\x4d\x52\x4e\x01\x01\x66\x98\x73\xb1\xd1\xe7\x98\xf3\x62\x23\xec\x59\xe6\xfc\xd0\x0c\x23\x2c\xc3\xf6\xf6\xe2\x23\x57\x03\x20\xe7\x8d\x5d\xe5\xa8\x31\x03\x70\x82\x1e\x68\xc0\x83\xe5\x5e\xc7\x27\x9c\xf3\xa9\x94\x3b\xe5\x3c\x00\xbd\x30\x27\x9d\xb3\x57\xc0\xa3\x17\x7c\xde\x39\x93\x6a\xf8\x33\xcf\xf9\xd4\x13\x60\xee\x79\x00\x02\x62\xcd\x3e\x0f\x80\x9f\x37\xff\x7c\x62\xfa\x85\xa7\xa0\x33\xc9\x97\x37\x09\x3d\x5f\xcf\xf9\x7a\x26\x00\xbb\x89\x0e\xe0\x97\x85\xba\xe8\x50\x66\xa4\xb3\xdc\x29\x44\x93\x89\xa6\xbf\x27\x33\x9b\xb6\x6a\x3e\x20\x44\x38\x02\x04\x65\x60\x16\xf3\x72\x18\x97\xc3\xb4\x30\xf3\xb4\x46\x2e\xd4\x7d\x32\x43\x73\xb8\x51\x32\x25\xf8\x20\x4e\x4a\x09\x89\xc4\x54\xef\x42\x8d\x9a\x40\xb0\x75\xd2\x5e\xea\x5a\x95\x04\xfd\x01\xc0\x55\xab\x85\x2c\x1f\x4a\xca\x54\x62\x8c\x8e\x5b\x6d\xdd\x95\x13\x7e\x23\x3a\xb9\xc8\x36\x20\xef\xe9\x03\x77\xb9\xfa\x1e\xd9\x7d\xb9\x0f\xc7\x5b\x1c\xc1\xd0\x7b\x56\xce\xb5\xbf\x49\xa0\x4a\x80\x77\x50\x2b\x6d\x01\x9c\x05\x7f\xa3\x37\xdf\xfb\x3f\x29\x2a\xcf\x90\xc1\x73\x98\x3c\x0f\x9c\x63\x55\x14\x41\xf3\xaf\x27\x5e\x05\x3f\xeb\x99\xa8\x87\x3f\x7d\xb8\xdf\x02\x96\xb4\x98\x2c\xe7\xb9\x85\xbd\x70\xcc\x63\xf3\x1d\x11\xfd\x1c\x44\xf3\xf0\x0d\x72\x20\xf4\x39\xb0\x70\x4d\xd2\xaf\xef\x60\x10\xec\xfd\xd9\x4d\x77\x2d\x4d\x23\x9d\xb4\x67\xaa\x71\x67\xda\x9c\x0d\xaf\xfb\x4f\xe1\x0c\x44\x4a\xb6\x5c\x49\x54\x18\x4c\x56\x0d\xb7\xa1\x81\x94\x37\x9c\x2b\xdb\x2b\x5d\xde\xbc\xa3\x3b\x2e\x73\x59\x40\x2e\x3b\x1e\x52\x07\x1f\x6c\x8d\xbc\x72\xfe\xc3\xb2\xc7\x87\xb2\x59\xe0\x03\xd9\x2c\xa0\xa1\xcd\x66\x01\xf6\x86\x6c\x16\x6c\x21\x9b\x05\xd9\x2c\xf0\x81\x53\x55\x58\xb2\x59\xe0\xf7\x68\x36\x0b\xbc\x21\x73\xd9\x33\x38\x1e\x52\x4f\x93\x8c\x5f\x14\xb5\xba\x95\x8d\xb4\xf6\xd2\xe8\xeb\xe8\xd1\x0c\xba\x15\xc1\xa9\x81\x02\xad\x87\xe3\x2a\x6c\x47\x2b\x13\x85\xaa\x3b\x23\x7f\xac\x8c\xb4\x2b\x5d\x13\xb7\x09\xef\x35\x84\x8a\x15\xc8\xb2\xc1\x89\x07\x93\xf6\x0c\x02\x60\x59\x32\x30\xc5\x72\x2d\x98\x49\x53\xa5\x58\x56\xcb\xa4\x59\x7d\xa0\xa5\x82\x5b\x29\x01\xfa\x8b\x20\xd6\x09\x66\x99\x30\x8e\x06\xd3\x95\x40\x3d\x89\xab\x23\x31\xf5\xa3\xc0\xba\x11\x6a\x7d\x24\x2f\xa1\x25\xab\x61\x20\xf1\xab\x46\x39\x25\xea\x73\x59\x8b\x87\x2b\x59\xea\x86\x3a\xf9\x33\xfd\x25\xd9\x4a\xa3\x74\x75\x24\x8b\xb5\x5d\x59\x4a\x6b\x8f\x46\x03\x01\x2d\xcf\x23\xd2\x41\xb2\xf4\x04\xa5\xe7\xdc\x45\x99\x53\x6b\xa9\x3b\x77\x14\x82\x01\xf8\xc4\xe8\xcd\x8f\x36\xe7\x14\xb3\x4a\x98\x91\x60\x3d\x14\xf8\x5c\x02\x9c\xcb\xe9\x17\x8b\xb3\xee\x46\xa8\x5d\x5c\x26\xcb\x3a\xde\xa0\x3b\x9e\xcd\x49\x5a\x67\xdc\x1a\xed\x74\xa9\xc9\x69\xca\x20\x42\xac\xe4\xe2\x09\x85\x53\x24\x5e\x9a\xa4\x66\x23\x45\xa5\xb2\xf7\x6c\x1f\xb2\xf7\xec\xf0\xd3\xd9\x7b\xf6\x12\x64\xef\x19\x01\xb2\xf7\x8c\xfe\x60\xf6\x9e\x1d\x40\x98\xed\xbf\xec\x3d\x7b\x79\x85\xd9\x7b\x36\xb3\xc5\x66\xef\xd9\x01\xc8\xde\x33\x9f\xe7\xe7\x20\x3d\xe7\x2e\xca\x4e\xdc\x7b\x36\xb6\x18\x21\xcd\x94\x44\xb8\xb2\x56\x6b\x45\x71\xa3\x15\x81\xa6\x34\xc0\x94\xce\x68\x2e\x21\xed\xe9\x7f\x29\xf0\x90\x95\x65\x67\x94\x7b\xf8\xa8\x1b\x27\xef\x09\xe2\x12\xa3\x38\x51\xd7\xfa\xee\xd2\xa8\x5b\x55\xcb\xa5\xfc\x64\x4b\x51\x0b\xea\xc0\x25\xbc\x26\xbf\x14\xad\xb8\x56\xb5\xa2\x9f\x24\xa3\x01\x78\x75\xf2\x2e\x9b\xa2\xa8\x0c\xb5\xee\xa5\x38\xba\xaf\x84\xab\x82\x1e\x89\x9d\x48\x06\x28\x8d\xb7\x46\x97\x5f\x75\xd7\x10\x35\x1f\xd8\x87\x2c\xaa\x6f\x4d\xfd\xf0\x5d\x6b\xf7\x59\xd5\xd2\x3e\x58\x27\x89\x9d\x2b\xd1\x2f\x35\x5d\xf3\xc1\xfe\x66\x74\x47\x24\xbd\x3d\x0d\xe0\xdf\xff\x4a\xa2\x6a\xf7\x2b\xfd\x43\x37\x9b\x5d\x4a\xb8\x37\x3f\xad\x24\x36\x79\x4b\xbf\x35\x56\x7e\x51\x4d\x77\xff\xad\xef\xd0\x92\x6e\x8c\x9e\xbc\x95\x70\xc3\x70\xac\x23\xbe\xa6\x74\x26\x09\x80\xb0\x7f\x34\x25\xc2\x8e\x4c\x6d\x2c\x84\xa0\x38\xbe\x53\x4d\xa5\xef\x6c\x62\x7a\x5b\xae\xad\xf8\x68\x64\x25\x1b\xa7\x44\x7d\xd5\x22\x95\x9b\x8c\xa3\x79\x8e\x3e\xf9\x14\x8a\xad\x40\x4a\x8c\x39\x99\x1e\xed\x84\x71\x5d\x9b\xa3\x8e\x23\xbc\x0b\xe5\x2e\x47\x1d\xdf\x46\x97\xa3\x8e\x3e\x90\xa3\x8e\x39\xea\xf8\x06\xe4\xa8\xa3\xcf\xf3\x73\xf0\x9b\xe7\xa8\xe3\x33\xc8\x51\xc7\xb8\x8b\xcd\x51\xc7\x03\x90\xa3\x8e\x3e\xcf\xcf\x41\x7a\xce\x5d\x94\x9d\x78\xd4\xd1\xba\x4a\x11\xe2\x30\x88\x67\xb2\x47\xf1\xad\xa1\x4c\x7e\x40\xd0\x38\x69\xd6\xaa\xe9\xe3\x4a\x5f\xa5\xb5\x62\x29\x69\xd3\x52\x00\x96\x78\x01\x65\xfc\x96\xc7\xce\x91\xdf\x4f\xdb\xc8\x5b\x5d\x77\x6b\x79\x2e\x6f\x15\x29\x18\x9d\xac\xda\xa2\xea\x57\x86\x8c\xc2\x81\xa5\x5e\xc2\x82\x00\x2c\x3f\x7f\xb7\x27\xa4\xc7\xe6\x39\x49\x61\x20\xc0\x3e\x9c\x35\x47\xfa\x5b\x6f\x16\x96\x94\xfc\x06\x8c\x46\xb7\x62\x09\xc4\xcd\x8f\x83\xee\x77\x51\x45\x0c\x21\xd2\xab\xdf\x76\xd7\x49\xcf\xf1\x11\xdf\xa7\xfb\x96\x1c\x33\x49\x2a\x4d\xb6\x14\x7e\x02\xc2\xe4\x4e\x9b\x1b\xd5\x2c\xcf\x15\x61\xcb\xc9\x9b\x7d\x8c\xb3\x74\x49\xa3\x13\xa8\xb2\x92\x3c\x2e\x01\x11\xc6\xd4\x88\x08\x5e\xde\x09\x45\x43\x40\xcf\x32\x37\xfa\x4b\xf6\x36\x42\x8c\x08\xc4\x14\xd0\xed\x47\x6c\x79\xbc\x50\x15\x8f\x25\x80\xe7\xcd\x8b\x23\xe0\x51\x04\xa6\x17\x9f\x11\x41\x60\x61\xe6\x74\x8e\x83\x62\x07\x68\xe4\x80\x11\x37\x40\xa3\x06\x48\xcc\x00\xaf\x5b\x06\x3c\x5e\x90\xbf\x8b\xe7\xed\x62\xf9\xba\x82\x7a\xba\xb0\x28\x41\x52\xc5\x8f\xe8\x54\xc3\x54\x38\xc4\x17\x7c\x14\x77\x47\xe6\x08\x12\x47\xcc\x95\x44\xc9\x8f\x10\x47\x00\x64\x55\x77\x84\xac\xea\xfe\x8a\x2a\xab\xba\xaf\x43\x56\x75\xbd\x21\xab\xba\xaf\xe3\xca\x17\xfb\x8b\x90\x55\x5d\x8f\xb5\x65\x55\x77\x5c\x64\xe6\x88\x77\xa8\xea\x92\x7e\x4e\x6e\x68\x4f\x25\x7c\x8a\x4e\x8c\x30\x15\xa0\x0b\x03\x7a\x11\x48\xa0\xf4\x7b\x93\x4c\x1e\x68\x9a\x3b\x92\xf5\x42\x67\x72\xa2\x56\x8e\x10\x00\x55\xa2\x42\x47\x09\x6a\xe1\x00\xa5\xe1\xda\x37\xa6\x79\x33\x44\x2f\xa8\x71\x27\xcf\xa7\x25\x6b\xd9\x88\x86\x8d\x26\xae\x01\x9a\x35\x55\xab\x86\x36\x9c\xaa\x3b\x90\xf5\x06\x5c\x67\x80\xf5\x85\x60\xba\x02\x5d\x73\x06\x56\x4c\x25\x77\x92\x2a\x42\x26\x57\x46\xb2\x78\x9a\xab\x06\x4a\x0d\x4f\xb3\x34\x34\x11\x3c\xcd\xea\xc8\xf6\xcf\x6c\x6f\xe9\x2c\xb3\x5e\x85\x79\x09\x13\x2c\x5d\x3b\x05\x3b\x90\x3e\xa5\xd1\x95\xbc\x92\xb5\x2c\x9d\xf6\xca\x5b\xc2\xbb\x16\x11\x89\x87\xf4\x15\xad\x51\xda\x28\xbf\x7c\x65\xea\x11\xd0\xb6\x7f\x5c\xc9\xc7\x5a\x58\xeb\x5b\x8c\x4e\xda\x1a\x7a\x0b\xea\x6c\xef\x66\x7b\x37\xdb\xbb\x9e\x90\xed\xdd\x90\x18\xb3\xbd\x3b\x40\xb6\x77\xb3\xbd\xfb\x02\x64\x7b\x37\xdb\xbb\xd9\xde\xcd\x32\xeb\x45\x98\x97\x30\x39\x11\x7b\x97\xd4\xfc\x98\xca\x35\xb4\x86\xc7\xbc\x06\xc0\x48\x41\x2f\xf5\xcc\xa9\x8d\x8d\xe7\xfe\x45\xa4\x9f\x6f\x14\x86\xaa\xab\xfd\x5b\xca\x91\xd6\x0f\x34\x46\xa6\x52\xe3\x82\xd6\xbd\x14\x69\xce\x49\x17\xad\xf4\xae\xaa\x09\xd7\x45\xec\xa1\x4a\xaf\x07\x25\xf7\x4d\x4d\xf3\xf1\x58\x97\x54\x44\xa7\x20\x77\x46\x85\xae\x60\x6a\x37\x54\x08\x49\xff\x50\x6c\x24\xd4\xae\xa7\x29\x6e\x05\xdb\xb5\x6d\x2d\xd7\xb2\x71\xa2\xee\x39\xd9\xfb\xfc\x89\xbe\x15\xac\x5d\x30\xa2\xee\x51\x4d\x7a\xfb\x60\x4b\x57\xc7\xfa\x6e\xcc\x9f\x44\xf7\x25\x81\xea\x2d\xe0\x43\xc2\xb8\x98\xec\x3b\x22\xfa\x8d\xa8\x3e\x23\x38\xef\xcd\x9f\xb0\xb0\xfe\xc1\x08\xc1\xf0\x7a\x06\x43\x07\xca\xef\x13\x8c\xd1\x11\xda\x1b\x78\x6e\x0a\xa9\x34\xb7\xaa\x94\x1f\xca\x52\x77\x8d\x8b\xa2\x95\x3a\x5d\x4b\x23\xbc\x69\x8f\x20\xd7\xe8\x24\x2a\x17\x0b\x59\x12\x7c\x03\xc0\x69\xdd\xc8\xb8\x1d\x94\x36\x9f\x2c\x3c\x03\xab\x30\x92\xdd\x99\x91\x5b\x87\xa5\xbb\x60\x89\x77\x06\x79\x1b\xa2\xb5\xaf\xf0\x7c\xb1\xd7\xcf\x8c\x6c\x6b\x55\x8a\x37\x0f\xc8\xd7\x61\xe2\x77\x08\x8f\x22\xe3\x87\x5c\xb7\xb5\x70\x6f\x1e\x80\x2f\x83\xae\xa5\x13\x95\x70\xe2\xd0\x61\x52\x18\x5e\x34\x8d\x76\xfe\x62\x67\x8e\x39\x08\xde\x3f\xb5\x1e\x37\x2d\x65\xef\xca\xba\xb3\x4e\x1a\xbf\x11\xeb\xa4\xef\x97\xf7\x4e\x9a\x46\xd4\x17\x97\xa1\x2f\x03\xe8\x18\xfc\x94\xa8\x71\xd1\x3f\x8c\x58\x2c\x54\xe9\xdf\x26\x8f\xb4\xa6\x95\x14\xb5\x5b\x7d\x5c\xc9\xf2\xe6\x0f\x5d\x49\xdf\x81\xf3\x71\x53\x4f\x6a\x2d\xaa\xff\x8a\x5a\x34\x65\x14\x72\xd8\x7f\xfd\x55\xef\x43\xfd\x2e\x9a\xa5\x1f\xe7\xcd\x83\x36\x5a\x6d\xfc\x7c\x99\x51\xf5\x1a\x9a\x9d\x06\x28\x04\x0d\x81\x22\x07\xc0\xda\x87\x22\x7a\x00\x2d\xdc\x93\x6a\x5d\xd4\xae\x5a\xde\x71\x96\x68\x6a\xc9\xe6\x6a\xb7\x56\xe9\xe6\xc3\x62\xa1\x9a\xc1\x8f\xbc\x50\xcb\x18\x6e\xe4\xb2\x56\xb2\x71\x7e\x02\x05\x79\x7f\x01\x07\x97\x0a\x46\xe7\x5b\xdc\x4b\x14\xc7\xb8\xf3\xf5\x26\x12\xe4\x41\x48\xd5\xd5\x3a\x23\x9c\x5c\xbe\x79\x93\xfa\x1e\xbc\xd1\x75\xad\x9a\xe5\xcf\xb6\x3a\xa0\x92\x52\x5e\xba\x81\xb5\xb8\xbf\xea\xcc\xd2\x6b\x1f\xbd\xe3\xc8\xf4\xf8\x31\x39\x6e\xcc\x8e\x17\xaf\xc5\xfd\xcf\x46\xdc\x0a\x55\x8b\x6b\x3f\xcf\xf7\x09\x7d\xbe\x37\x9b\xf9\xb0\x98\xe7\xd2\xbd\x70\xee\x35\x6d\x3e\xac\x86\x7a\x21\xbe\x95\xc6\x1e\xe8\xca\xea\xf1\x9e\x43\xb7\xdd\xd9\x88\xe7\x95\xff\x1f\xfc\xf8\xb5\x6e\x96\xba\xba\x7e\xed\xfd\x3e\x2c\x7d\x2d\xca\x9b\xae\xbd\x7a\x0c\xc1\x86\x90\x3a\xe2\x9f\xce\x04\x95\x36\xa5\x6e\x9c\x50\x8d\x5f\x7c\x86\xc4\x12\x6b\x71\xff\x51\x37\x8d\x2c\xbd\x2d\x62\xaa\x23\x87\x9a\xd3\x2e\x17\xea\x7e\x9a\xdb\xa9\x28\xae\xff\x5f\xc8\x53\xbb\xee\x7c\xd3\xa6\xf2\x91\xbd\xfc\x53\x8f\x23\x2b\x8d\x6e\x3e\xdd\xb7\x66\x50\x51\x03\xc9\xdc\xa2\x58\x96\x07\x77\x36\x93\xc2\x33\x98\x96\x14\x6a\x5d\x8a\x83\x01\x7f\x92\xaf\xf0\xce\x7e\xaa\x85\x75\xaa\xfc\x6f\xad\xcb\x9b\x2b\xa7\x0f\x8b\x75\x2a\x8e\xa2\xcf\x9e\xf9\x41\x08\xf0\x93\xcd\xf4\x56\x18\xa7\x28\x2d\xd6\xd3\x24\x96\x52\x5b\xa3\xd3\x53\x60\x86\x9e\xfb\x17\xe7\x91\x76\x96\x62\xca\x9f\x6d\x17\x13\xda\x9a\xeb\x95\x8d\x73\x65\x6f\xa2\x18\xe4\xa2\x5c\xa9\x66\xf9\x55\x57\xf1\xc8\xb3\x52\xf6\x86\x12\x2e\x85\x10\xfc\xfc\x7e\x11\xed\xfd\x91\xd9\xf7\x46\xf9\xd7\xaf\x91\x5f\x1e\x9b\x09\x69\x3c\x32\x92\x82\xf7\x8f\x7f\x7e\xbf\x88\xc2\x4f\x9f\x55\x9c\x16\xf2\xf1\x65\x9e\x95\xa5\x91\xde\x11\xfb\x02\xa1\x19\xbb\x12\x46\x46\xc4\x40\xa3\x99\xdd\x07\xfb\xfd\x7c\x5c\x7c\x68\xba\x29\x65\xbb\x5a\x44\x49\xf5\x5e\xeb\x46\x39\xed\x5f\x5a\x48\x4c\x01\x83\x53\x4f\xfc\x53\x8d\x28\x25\x69\xb3\x13\x61\x23\x4f\xf9\xca\x84\x02\xe2\xa9\x1e\xc5\x77\xe9\x5d\x6f\x82\xb8\xbe\xa9\x69\x7b\x29\x32\x3c\x29\x59\xa7\x51\xe5\xc8\xc8\x65\xc1\xe5\x82\x6a\x2a\xbf\x4f\x9c\x99\xd9\x90\x8a\xaf\xde\x21\xd1\xbf\x0b\xc3\xa4\xec\xc3\x84\x5f\x85\x57\xf5\x05\xf5\x64\x2b\xb9\x10\x5d\xed\x28\x86\x49\x1a\xab\x96\x74\xf9\x26\x49\xd6\x26\x65\x1e\x16\x78\xae\xf6\x9a\x70\x16\x03\x4c\x30\x10\x99\xdc\x61\x39\x59\x3a\xf9\x8d\xf4\x2f\xf1\x3f\xeb\x3f\x84\xa8\xe1\x45\x4d\x26\xa7\x48\x59\xf2\x96\xea\x76\x48\xc1\x8b\x75\x13\xd1\xc4\x9a\x55\x51\x04\x9a\x51\xb7\xd1\x34\xa1\xe8\xba\x42\x9f\x07\xd4\x5d\xd7\xca\xae\xae\xde\xeb\xa5\x9e\xca\x9f\xf9\xc1\x39\xa3\xae\x3b\xe7\xbf\x5f\x73\xaf\x95\x25\x3a\x89\x7a\x4e\x09\xcd\xd6\x95\xbe\x6b\xee\x84\xa9\x3e\x5c\x7a\x39\x0a\xb3\xbe\xe2\x01\x98\xbe\xb2\x50\xb2\xae\x08\xf2\x83\x83\x6b\x03\xa2\x55\x7f\x1e\x4e\x76\x78\x19\x40\x55\xa9\x18\x3f\x13\x99\xd4\xca\xc0\x8a\xb6\x48\xda\xae\x15\x50\x9d\xc8\x3d\x8f\xb2\x1e\xb9\x07\x63\x0f\x89\xcf\x89\x99\x62\x9b\x71\x42\x2d\x64\x1b\x80\xc1\x17\x95\xba\x55\x96\x52\xc7\x14\x00\xe7\xb8\xcb\x47\xc0\x8a\xe3\x52\xe3\x73\x22\x62\xc4\xcc\xcb\x2c\x21\x21\x90\xeb\xd6\x3d\x78\x4e\x54\x26\x7b\xf0\x65\xa5\xba\x75\x3c\xe7\xb1\xfa\x47\x7e\x51\x6b\x45\xec\x26\x11\xa7\x3f\xea\xc2\xab\xb8\x77\x66\xbe\xce\xba\x7b\x77\xc9\x11\x4e\x98\xa5\x74\x7f\xfd\xf5\xc7\x11\xc7\x95\xee\xee\x94\x7f\x0a\xff\xdc\x96\x4f\xe3\xaa\x5a\xde\xff\xd9\x9b\x7f\xd9\xf9\xf0\x2b\x68\x5a\x07\x83\xb9\x5b\xc3\x39\xf2\x72\xd2\x8e\x86\x45\xad\xcb\x9b\x38\x01\xc1\x4a\x38\x61\x23\x27\x7f\x3c\xe2\xf8\xf9\x33\x5a\xf4\x8a\xb4\x9b\xcb\x52\x5e\x6e\x8c\x77\xeb\x64\xe3\x62\x65\xc1\xbd\xcf\xfc\xcc\xb6\x8a\x4a\x48\xf3\xca\x3c\x1b\x3e\x36\x38\x75\x2a\xf7\x5d\xb6\x3a\x0a\xaf\x2b\xd3\x0f\x52\x20\xee\x1f\xe9\x80\x5a\x6d\x55\x64\x14\xb7\x8a\xe2\x78\x8b\x1a\x07\xdf\x7d\x6f\x70\x32\x18\xfa\x26\xc4\xc9\x0e\x93\x4d\xd5\x6a\xd5\xf8\x77\xce\x04\xe4\xd3\x11\x67\x6f\xd1\x68\x60\xbb\x99\x7e\x42\xc3\xcf\xdb\x41\xa2\x95\x95\xb6\xce\xd7\x2b\x4c\x25\x95\xa8\x07\xe9\x5b\x55\x0c\xbc\x9c\x28\xca\x23\x9c\x8a\xb2\x91\xc2\xbe\xe5\x4a\xb4\x1f\x3a\xb7\x3a\x57\xb6\xd4\xb7\x92\x2a\x6b\x29\x3a\xff\x88\xea\xca\xaf\x54\x0a\x47\x14\x59\x5d\x1a\x5a\xcd\x3b\x4d\x72\x4d\xd3\xb1\xfc\x1d\xeb\x56\x7a\xa4\xa6\x8b\x66\x73\x25\x08\x7f\xa7\xf3\xf1\x3b\xb5\x5a\x6d\x9c\x88\xd6\xca\x32\x81\xbf\x29\x1b\xe6\xd1\x7c\x1e\x83\x3b\xf2\xb2\xa7\x90\x59\x5c\x23\xea\x6f\x9f\x13\x3b\xdb\x70\x99\xd7\xef\xf6\x3f\x30\xf4\xf5\xb4\xd6\x5d\xe3\xad\x35\x90\x76\xad\x89\xa3\xb4\x1e\xb5\x4a\x39\xf4\xba\x9b\x49\xda\xba\xa7\xb6\x73\xf6\xb8\xe6\xd0\x94\xd7\x6e\x9d\x2f\x83\x77\xfa\x63\x2d\x94\x57\xa0\x8b\xde\x1a\x48\xa8\xf5\x3b\x72\x48\x6c\xbf\x37\xf8\x89\xad\xb4\xd3\xcd\xf1\x3b\xcd\xaa\x99\xa4\xcf\x6f\x16\x12\xfc\x8c\xb4\x71\x77\xda\x44\x8c\xf8\x1c\x7d\xed\xc8\xbb\x28\xa1\x68\x8d\xde\xfc\xce\x6f\x19\x27\x93\x92\x48\x98\x9a\x53\xa4\x4a\x4a\x24\x15\xb3\x70\x91\x15\xd8\x6c\x48\xc6\x63\x9c\x95\x0e\x40\xae\x32\xd9\x01\x23\x71\x6b\x00\x7a\xc6\xe0\x0e\xf0\xdc\xc1\x1d\xa0\x59\x84\x3b\xa0\xe7\x13\xfe\x8a\x1d\xde\x3e\x2c\x11\x6d\x00\x5a\xd5\xca\xfe\x73\xa4\x44\xb1\x1d\x80\x29\xa5\xfb\x0f\xd3\x86\x69\x0e\x90\x7c\x76\x2a\xb5\xe2\xe5\x57\xa4\x94\x9b\xf4\xe9\x93\xe4\xbd\x25\x26\xce\xef\xe0\xfd\xc8\x46\x2c\xa3\x3d\x1c\xfe\x82\x99\xe5\xbe\x03\xb6\xa8\x2e\x78\x99\xef\x41\x57\xc2\x91\x7c\x05\x23\x2f\x7e\x07\x2c\x71\x56\xe4\x9b\x8f\x4b\x03\xbc\xec\xfa\x1d\x84\x60\x50\x66\xc6\xfd\x0e\x82\xf0\x28\x9c\x85\x1f\x78\x1d\x78\x66\x7e\xd0\x85\xf0\x45\x05\x94\xb7\xbf\x03\xa6\xa4\xe0\x29\x79\xc7\xa4\xac\x81\x48\x87\xb8\x4b\x56\x60\x5e\x86\x6c\xdc\x1d\xe9\x15\x97\x8d\xbb\xc3\x90\x8d\xbb\xd7\xe1\xe9\x1c\xb8\x1f\xfa\x46\x12\xcd\x07\x46\x59\x6e\x57\x29\xd9\x24\xad\xc9\x2b\x0a\x79\xdf\x2a\x70\xc0\xd9\x08\xd8\xa0\xb3\x11\x38\xd2\x06\x93\x33\xc9\x2b\x18\xc9\xd2\x01\xa2\xdd\xe8\xc5\x85\xc4\x2e\x85\x83\x4f\x3b\x74\x80\xe0\xef\x4e\x5f\x3f\x1c\x9e\x6c\x51\x00\x9c\xb8\xa4\x0c\xce\x9e\x61\x80\xc8\xc8\xa5\xb2\x2e\x62\xf2\xb2\x93\x8d\x68\x62\x95\x5c\x46\x6d\x8c\x37\x46\xcf\x66\x11\x3b\x1b\xcf\x89\x10\x68\x0b\xcd\x45\xe6\x3a\x4a\x80\x2d\x76\x1e\xe4\x5a\xf8\xcd\x9f\x81\xde\x7e\x23\x1f\xfa\xb1\x28\xb1\xde\x7f\x02\x4d\x4d\xb5\x8e\x95\xa9\x96\x33\x0d\xdf\x43\xc7\xd1\x9e\x81\xbd\x7e\x19\xab\x37\xa9\x2d\x45\x2d\x2f\xbe\x1d\xa1\xf0\x5b\x0a\x27\xef\x44\xbc\xcb\xbd\x35\xda\x0d\x63\x35\xce\xf5\x5a\xa8\x78\xb9\xe0\x99\xd1\xa3\x31\xba\xb5\xf5\xa7\x46\x5c\xd7\xfe\x26\x0a\xb0\xb9\x4e\x1b\xb1\x94\x51\x07\x24\x3c\xe2\xb8\x8c\x79\xdf\xd8\x07\xeb\x64\xbc\x0e\x25\x83\xde\x36\x9b\x9e\xf1\x8f\xd2\xc3\xcf\x72\x1b\xd9\xc7\xef\xd7\xfd\x3e\x06\x97\xd3\xde\xde\xe9\x93\x49\x02\x9b\x5f\x5f\xba\xdc\x47\x77\x07\xb9\x8f\x6e\x24\xa3\x22\x76\xab\xdb\x04\x03\x42\x68\x92\x6d\xb8\xdb\x74\x94\x2a\x93\xa3\x4f\x72\x7e\xb7\xaa\x5b\x74\x7d\x61\x1f\x85\x6d\xe3\x55\x61\xd2\x98\xa1\xbb\x8e\x52\xc4\x75\x6b\xdb\x95\x34\xf2\x68\xab\x09\xb6\x0a\x70\xad\xca\x87\x68\x29\xff\xbf\xe0\x49\x40\x7c\x94\x1c\xb8\x04\xf5\x0b\x9e\x89\x6c\x04\x92\xf6\xfe\x69\xab\xab\x1f\x72\xdd\xd6\x81\xa7\x74\x97\xba\x71\x46\xd7\x75\x9c\x76\x4b\xa2\x69\xb4\x13\x27\xd5\x7b\x8c\x56\x75\x2a\x9d\xa8\x84\x13\x79\x6f\xc3\xef\xad\x6d\x65\x94\x3e\x9a\x62\xb1\x50\x8d\x72\xde\x3a\x0b\xa4\x50\xe8\x4a\x7e\x20\xe2\x41\x71\x15\x8f\x53\x67\xa5\x31\xb2\x3a\xef\x36\xa7\xf7\x38\xc9\x5b\x35\xcb\x8b\x65\xa3\xb7\x7f\xfe\x74\x2f\xcb\x8e\xd2\x65\x6b\x04\x30\xeb\x8a\x97\x73\x35\x7c\x13\x96\xff\xc0\xc7\x5e\xf4\xb3\x85\x5d\xb9\xda\x4d\x56\x66\x64\xb6\xc2\x69\x6b\x23\x84\x48\xaf\x2d\x78\x69\x6c\x23\x04\x49\x6a\x2d\x7a\x43\x4f\x1a\xe1\x78\x19\xb6\x41\x17\x74\x2b\xea\x8e\xbb\xc1\x01\xce\x7a\x80\x60\x5f\xc5\x49\x0c\xdb\x07\x6e\x02\x70\xc1\x48\xa8\xdb\x3d\x3f\x12\x0d\xe3\x25\xec\x92\x83\x22\xc8\x9e\xf6\xd2\xa5\x4f\xbb\xcf\x82\xa5\x87\x2c\x58\xde\x86\x2c\x58\x5e\x87\x2c\x58\x02\x2d\xe2\x4e\xaa\xe5\x8a\x58\x05\x30\x02\x3f\xd7\x9c\x97\x69\x8e\x13\xd2\xd9\x9e\xb6\x09\x3c\x3c\x6c\x1a\xf9\x41\xc6\x51\xa1\x54\x32\x6e\x51\x1c\x3b\x81\x73\x99\x6c\x4c\xa6\x2b\x59\xf7\x1d\x5d\x7f\x48\x83\x49\x3a\x86\x88\xcc\xe6\xc2\x0b\x90\x6f\xf5\x37\x20\xdf\xea\x6f\x41\xbe\xd5\x9f\xbf\x24\x9b\x0b\x23\x64\xc1\xf2\x06\x64\xc1\xf2\x16\x64\xc1\xf2\xfc\x25\x93\x99\x0b\x38\x7a\xf4\x18\xcf\x9e\x6b\x8a\x90\xee\x4c\xfe\x64\xe8\xb1\x56\x57\x39\x0e\xc0\x8c\x03\xec\xb6\x70\x73\xda\x53\x69\xf7\xb5\xb8\x96\xf5\x48\x76\xb8\xec\x09\x73\x81\x86\x33\x35\x8a\x50\x37\x45\x28\xcd\xa0\x08\xa3\x1d\x14\x61\xaf\xae\x70\x5a\x42\xf0\x85\x85\xd1\x16\x8a\x70\x1a\x43\x11\xfa\x0b\x43\x69\x0e\x45\x20\xed\xa1\x08\xa0\x41\x14\xa1\xb4\x88\x22\x94\x26\x51\x04\xdb\xe7\x5e\x3a\x7d\xd9\xc8\x4b\x26\x35\xf1\xf2\x19\x5e\x86\x60\x94\x19\x50\x7d\x63\xbd\xa4\x19\xf3\xf7\xa6\xb4\x0b\x83\xec\x2a\x9f\xfa\x9c\x6e\x75\xad\x97\x0f\xbf\x73\x2e\x90\x00\x3d\xb5\x38\x32\xe6\x6c\xff\x2b\x72\x08\x80\x06\xac\x10\xc0\x53\x45\x33\xc7\x01\x8e\xcb\x4e\x08\xa0\xa0\xe7\x18\xc0\x0b\x90\x5d\x75\x6f\x40\x76\xd5\xbd\x05\xd9\x55\xf7\xfc\x25\xec\x18\x00\x57\xb1\x0e\xad\x54\x07\x54\xfd\x18\x1b\xcc\x7c\x01\x57\x89\x66\x71\x30\x7b\x07\x79\x94\xc5\x56\x9a\x59\xeb\xe7\x68\x6c\x1c\x45\x39\xb9\xd2\x05\xfb\x8f\x1b\xa7\xb2\x0f\x39\xfb\x90\x43\x2e\xa4\xc8\x3e\x64\x4f\xc8\x3e\x64\x1a\x64\x1f\xb2\x3f\x64\x1f\xf2\xeb\x90\x7d\xc8\x29\x5f\x92\x7d\xc8\x7b\x6f\xc8\x3e\xe4\xec\x43\xce\x3e\xe4\xc3\x90\x7d\xc8\xe1\x17\x50\x64\x1f\xf2\x2b\x90\x7d\xc8\x6f\x43\xf6\x21\xbf\x0e\xd9\x87\xbc\x83\xec\x43\x8e\xf5\x82\xec\x43\xce\x3e\x64\xe2\xa3\x09\x7c\xc8\xe4\x47\x84\x59\x1e\x71\x4b\x72\xd9\xdc\x46\x5a\x3c\xa6\x0b\xd1\x47\xeb\x80\x9c\xd0\x6b\x11\xe9\x30\x7d\x36\x9a\xe8\x46\xc7\x75\xc9\xed\xe4\xe9\xdf\xe5\x03\x34\xa2\x90\xa7\xc6\xc2\xca\x2b\x53\x26\x63\x53\x99\x02\x20\xc6\xa7\x33\x15\x50\x8f\xc7\x7d\xe0\x88\x72\x44\xc9\x63\x88\x70\x7c\xa6\x2d\x8f\x1e\xb9\x73\x6c\x99\xd4\xc1\x9c\x5d\x3b\xd9\x45\x8f\x4f\xaa\x65\xd0\x08\x7f\xbc\x2a\x8f\x56\x02\x8c\x54\x65\x92\x0b\x6b\x8c\x2a\x13\x37\x6f\x74\xea\x64\x94\x0a\x0f\x4a\x65\x10\xea\xd0\x67\x37\x5f\xb0\x49\x10\xe7\x0b\x36\xd6\x83\x48\xbb\xf4\x0d\x19\x10\x4d\x98\xa8\x0d\xd0\xfb\xa1\x38\x97\x5d\x5d\x5f\xf5\x3c\x39\xaf\x11\x00\x89\xec\x99\x14\xdb\xdc\x28\xf7\x71\xbc\x1e\xe7\xb5\xc9\x14\x13\x1c\x5a\xd6\x00\xb0\x14\xc3\x9c\x17\xa5\x5e\xaf\x45\x43\x14\x3c\xc7\xf0\x61\x04\x9f\xc3\x00\xd0\x47\xb1\x9a\x2b\x81\x37\x1d\xeb\x9e\x03\x3c\x12\xa1\xb0\xd2\xbd\x13\x03\x70\xe3\x5d\x6c\x4f\x45\x98\x65\x14\xfc\x90\x5b\x10\x8f\x3c\xae\x60\x05\x5c\x04\x4f\xd9\xda\x5f\x08\xaa\x72\x0d\xc0\x0d\x64\x71\x82\x58\xec\xd0\x08\xee\xeb\x18\x20\x04\x45\x73\xfd\x1e\x03\x04\xa1\x29\xa6\x0f\x24\xd8\x4a\xf8\x34\x85\x7b\x45\x06\x60\x53\x16\xdf\x43\x32\x40\x08\x0a\x0b\xe0\x2d\x19\x20\x08\x91\xb1\x3c\x27\x01\xd7\xc1\xf3\xa2\x04\x5b\x08\x9f\xd6\x61\xbf\xca\x00\x6c\x52\xe7\xf9\x58\x06\xc8\xaa\x41\xc0\x45\x64\xd5\x20\x50\x03\x30\xd0\x37\x0e\x77\x00\xa3\x78\x6c\x06\x60\xba\xa1\x00\x93\x90\x6e\x83\x24\x37\x0b\xb7\xe6\x0a\x28\x90\xb8\xc2\x88\x23\x04\xd8\x02\x80\xcb\xfc\x5c\xc6\x67\x31\x5e\x6b\xe4\x42\xdd\x27\x37\xae\xc9\xd3\xf8\xf6\x21\x53\xcb\x34\xd4\x92\x58\xf4\xf5\xee\xeb\x24\x89\x28\x5b\x47\xf9\x30\xae\x2e\x09\xce\x5a\x2d\x64\xf9\x50\xd6\xc4\x2f\xc4\x69\xbf\xd5\xd6\x5d\x39\x61\x80\x62\x0a\x1e\xc3\xc9\x7b\xbf\xf9\x5b\xa1\xf1\x16\xa8\xab\x78\x1f\x4e\xa3\x18\x89\xa9\x9b\xad\x9c\x6b\x7f\xf3\x1b\x9a\xfd\x1c\xf8\x87\xb8\xd2\x16\xc4\x5d\x84\x39\x80\xcd\xf7\xff\x4f\x8a\x8a\x10\xde\x79\x0e\xb3\xa9\xa1\xe0\x5a\x4c\x45\xf0\x9a\x85\x99\xac\x26\x4c\x85\x00\x60\x53\x3c\x7d\x41\xbf\x25\x6c\x89\x33\x79\x7d\x00\x7d\xae\xf9\x73\xfc\xac\x23\x6d\x35\x72\xd7\x8d\x20\x9a\x87\x6f\xb0\x73\xa5\xcf\x07\x67\xd5\x0e\xfe\xfa\x1e\x26\x71\xdf\x9f\xdd\x74\xd7\xd2\x34\xd2\x49\x7b\xa6\x1a\x77\xa6\xcd\xd9\xf0\xca\xff\x14\xce\xc0\xe4\x66\xcb\x95\xe4\x08\x93\xc9\xab\x5b\x37\x34\x32\xc5\x8d\xea\xca\xf6\x4a\x97\x37\xef\xf8\x4e\xcd\xdc\xb9\x83\x28\xdc\x79\x9c\xac\xc1\x78\xb8\x35\xf2\xca\xe9\x36\x9b\x37\x04\xc8\xe6\x4d\x36\x6f\xb2\x79\xf3\x0c\xb2\x79\xf3\x0a\x64\xf3\x66\x84\x6c\xde\x9c\xba\x02\x95\xcd\x9b\x6c\xde\x64\xee\x9c\x2b\x77\x1e\x27\x6b\xa4\x2d\x62\x29\x8a\x5a\xdd\xca\x46\x5a\x7b\x69\xf4\x75\xb2\x48\x13\x66\x11\x71\xeb\x13\x19\x96\xd0\xf1\x36\xcc\xe0\x54\x1d\x0b\x55\x77\x46\xfe\x58\x19\x69\x57\xba\x06\xb6\x8e\xd7\x5f\x8d\x23\xa2\x60\x8b\x8d\x47\x64\xf8\xad\xc2\x24\x12\xb6\x85\xc6\xa2\xf0\x10\x96\xd9\x2c\xd2\xf4\xd8\xd6\xd8\x2c\xb2\x4f\x19\x16\x18\xcf\xfa\x0a\xd4\x17\x09\xb5\xba\x70\x8b\x8b\x79\x6c\xb8\x2e\xc7\xd0\xe3\x42\xe8\x70\x01\xf4\xb7\x08\xba\x1b\xc7\xaa\x9a\xac\x94\x1e\x52\x17\x19\x0c\xa3\x1a\xe5\x94\xa8\xcf\x65\x2d\x1e\xae\x64\xa9\x1b\x64\x5a\xf7\x74\x17\x74\x2b\x8d\xd2\xd5\x11\x2e\xdc\x76\x65\x29\xad\x3d\x4a\xad\x88\x61\x75\x1f\xa9\x5e\x94\x25\x73\x40\xc9\x7c\x4c\xe2\xd1\xa9\xb5\xd4\x9d\x3b\x3a\x01\x03\x7e\x72\xb2\xe6\x6f\x9b\x73\x4c\xd1\x31\x80\x59\x6c\x30\x14\xd7\x5d\x82\xdc\xcf\xed\x0b\xce\x63\xff\x8d\xb0\xbc\xb8\x4c\x9e\x71\xbf\x41\x7b\x9c\x1b\x36\x49\xcf\x81\xd6\x68\xa7\x4b\x0d\xa5\xe9\x33\x10\xe3\xa5\x4c\x4f\xb8\x82\x2a\x4d\xd3\x26\xf6\x1b\x29\x2a\x95\xbd\x92\x87\x20\x7b\x25\x8f\x4c\xff\xce\x5e\x49\x22\x64\xaf\x64\x91\xbd\x92\xd9\x2b\x99\x6d\x5f\x2a\x64\xaf\x64\x91\xbd\x92\xd9\x2b\x49\x80\xec\x95\x24\x40\x96\xcc\xf3\x91\xcc\xc7\x24\x1e\xdf\x99\x57\x72\x6c\x83\x44\x9e\x0b\x8d\x72\x75\xad\xd6\x8a\xea\x9e\x2c\x02\x4e\x19\x62\x71\x07\xb3\xc1\x8d\xb4\xef\xef\xcb\xc1\x07\xad\x2c\x3b\xa3\xdc\xc3\x47\xdd\x38\x79\x4f\x14\xc5\x38\x75\x8a\xba\xd6\x77\x97\x46\xdd\xaa\x5a\x2e\xe5\x27\x5b\x8a\x5a\x20\x03\x0b\x79\x3d\x3e\x4a\xd1\x8a\x6b\x55\x2b\xec\xa4\x99\x03\x25\xaa\x77\xe7\xea\x2a\x8a\xca\x20\x35\x67\xc5\x51\x7f\x35\xab\x4a\xef\x91\x41\x00\x52\xe1\xf0\x45\x6b\x74\xf9\x55\x77\x0d\xa0\x99\xb1\xfc\xf9\xa2\xfa\xd6\xd4\x0f\xdf\xb5\x76\x9f\x55\x2d\xed\x83\x75\x12\xe8\x28\xcc\xf9\x72\xd3\x35\x1f\xec\x6f\x46\x77\x00\x99\xee\x69\x24\xff\xfe\x57\x52\xb3\xa1\x5f\xf5\x1f\xba\xd9\xec\xdc\x04\xfb\xf5\xd3\x4a\xa0\x61\xe6\x74\xdb\x65\xe5\x17\xd5\x74\xf7\xdf\xfa\xee\x52\xe9\xc7\xdd\xca\x5b\xc9\x1a\x42\x81\x4f\x66\xd1\xd4\x0e\x4a\x81\x10\xf7\x8f\x4f\x81\xb8\x83\x28\x93\x8d\x98\x21\xf2\xef\x54\x53\xe9\x3b\x3b\x11\x6d\x2e\xd7\x56\x7c\x34\xb2\x92\x8d\x53\xa2\xbe\x6a\xd1\x6a\x6d\xe6\xb1\x3d\x5f\xc6\x64\x93\x94\xb6\x02\x6e\xa2\x15\x24\xb7\x07\x9c\x30\xae\x6b\x73\xb4\xf9\x2d\x78\x97\xca\x68\x8e\x36\x93\x21\x47\x9b\x73\xb4\x39\x47\x9b\x73\xb4\xd9\x1b\x72\x4c\xe3\x05\xc8\xd1\x66\x0f\xc8\xd1\xe6\x1c\x6d\xce\xd1\xe6\x43\x90\x25\x73\x8e\x36\x1f\x95\x80\x81\xad\xf8\x4a\x11\x63\x69\xa8\x17\xb8\x47\xf5\xad\xa1\x4e\x2a\x42\xd1\x39\x69\xd6\xaa\xe9\x63\x85\x5f\xa5\xb5\x62\x29\xe9\x13\xc1\x40\x56\x7a\x01\x75\xba\x16\xf8\xce\x41\x78\xe8\x1b\x7c\xab\xeb\x6e\x2d\xcf\xe5\xad\x22\x27\x2b\x24\xaf\x6e\xaa\xfa\x55\xa2\x23\xe1\x58\x12\x75\x82\x42\x1b\xbc\xde\x65\xb7\x4f\xe4\x47\xe7\x3f\xf5\x67\x20\xd8\x3e\x5c\x39\x77\x7a\x5d\x6f\x16\x39\x09\xb9\x0e\x98\x8d\x6e\xc5\x12\xcc\xb3\x38\x3e\x7e\xd9\x45\x94\x71\xc4\xe8\xec\x18\xdb\x5d\x4f\x72\xce\x8f\x78\x3f\xdd\xb7\x50\xdc\x6b\x12\xe9\xb4\xe5\x8a\x13\x14\x4e\x77\xda\xdc\xa8\x66\x79\xae\x88\xc7\x01\x1d\xc4\x29\xcc\xe1\x27\x8f\xfa\x41\xe4\x31\x34\xde\x07\x15\xfc\x48\x74\x8b\x57\xf2\x0d\x47\xb6\x18\x5e\xff\x10\x19\x02\x90\xa7\x17\x66\x68\x30\x26\xc4\x39\x1a\xd4\xef\xc1\x2b\x66\xe7\xc5\x82\x18\x34\xc1\x8f\x03\xf1\xa2\x40\x01\xa2\x2f\xcc\x08\x10\x7b\x05\xdc\xce\x9d\x70\xec\x87\x13\xf9\x61\xc6\x7d\x38\x51\x1f\x34\xe6\xc3\xeb\x7f\x00\x7a\x15\x61\x9f\x22\xdf\xa3\xc8\xf6\x27\x06\xf7\x26\xe2\x51\x9e\x49\x94\x56\xc0\x81\x89\xab\x9e\xa8\x9f\xfe\xe8\xee\xaa\xcc\x49\x6c\x4e\x3a\x06\x92\x86\x1e\x03\x46\xd6\x64\x95\xfd\x2d\xc8\x2a\xbb\x0f\xca\xac\xb2\xd3\x20\xab\xec\x59\x65\x27\x41\x56\xd9\x69\x6f\x98\x8b\xa2\x91\x55\xf6\xb7\x1e\xcc\x2a\xfb\x01\xc8\x9c\xb4\x85\x63\x20\x69\xd8\xf5\x4f\x78\x04\x1a\xc0\x82\x30\x0c\x55\xbf\x47\x99\x12\xd4\xeb\x41\xfd\x8d\x41\xd4\xd8\xfd\x0d\x91\x12\xa7\x8c\x04\xcd\xc2\xc2\x04\x06\x60\x6d\xa0\x84\x82\x48\x6e\xf8\xb8\x19\xd6\x05\x48\x99\x3c\xab\x02\xb7\x28\x98\x62\x9e\x61\x49\x4c\x96\x77\x0e\x59\x0f\xa8\xe5\xc0\x49\xc8\x04\x2d\x06\xc4\x5a\x80\x0f\x03\xd1\x6d\x20\xbd\x86\xa7\xd3\xb0\xf4\x99\xa0\xba\x0c\x66\x11\x80\xab\x47\xd8\x84\xac\x32\x41\x24\xce\x2c\xc6\x48\x7b\xcd\xc1\xa5\x17\x69\x97\xc9\x29\xb4\x48\xbb\x52\xc8\xf6\x3b\x0a\xcd\x21\xcb\x43\x92\x3c\x9c\xaf\x80\xc2\xcb\x21\x52\xb2\x12\xf9\xd3\x1a\x5d\xc9\x2b\x59\xcb\xd2\x69\xef\x7c\x3b\x5e\xd7\x37\x80\xd0\xc8\x5f\xd5\x1a\xa5\x8d\xf2\xcf\xff\x47\x8e\x88\x7e\x3c\xe3\xaa\x3e\xd6\xc2\x5a\x4a\x73\x0c\xf2\x96\x61\x23\x10\xb2\x5f\x60\x84\xec\x17\x78\x7b\xa1\xd9\x2f\xf0\x88\x2c\xfb\x05\xfc\x20\xfb\x05\x0e\x40\xf6\x0b\x3c\x87\x77\xac\x07\x67\xbf\xc0\x23\x64\xbf\x40\xf8\x65\x66\xbf\xc0\x8b\x90\xfd\x02\xaf\x3f\x3d\xb5\x3c\x9c\xaf\x80\x3a\x51\xbf\x00\xb9\xf9\x3e\xc2\x75\xf4\x86\xfb\xfc\x86\xf3\x68\x33\x01\x84\x36\x90\xc6\xfa\xc7\xf4\x85\xe4\x47\x36\x4a\x4d\xd5\xd5\xb4\xd6\xa0\xe4\xef\x01\x1b\xf4\x23\x14\xbc\xa0\x77\xbe\x46\x9b\x38\x63\x62\x1c\xeb\xce\x3d\xc1\x1a\x81\x5e\xdc\x58\xbd\x39\xd4\x7f\x3b\xed\x86\xe0\xdd\xb6\x51\xdd\x07\xea\xb0\x0d\xab\x06\x48\x57\x6d\x18\x59\xff\x60\x2a\x64\x48\xf7\xec\x94\x37\x92\xed\xda\xb6\x96\x6b\xd9\x38\x51\xf7\x52\x81\x44\x27\x80\xcf\x0a\x6f\x59\x8f\xaa\xad\x88\x3b\xc4\x3e\xd8\xd2\xd5\xb1\xf7\x02\xf7\xdd\x61\x7e\x3b\x86\xea\x0e\xfa\xeb\x70\x89\x00\xf9\xe9\x00\x1f\x1d\xe2\x9f\x63\xe5\x7f\xd2\x08\x11\xef\x65\x8f\x12\x17\xbf\x7f\x3d\x7c\xe8\x61\x7a\xd6\xe3\x34\xc7\xe9\x53\x3f\x67\x25\x5b\x9a\x5b\x55\xca\x0f\x65\xa9\xbb\xc6\x45\xd5\xb4\x9d\xae\xa5\x11\x24\x5a\x25\xca\x4d\x8c\xac\xe5\x62\x21\x4b\xa2\x7f\x05\x3c\xd1\x1b\x99\xa6\x9b\xdd\x66\x1b\x04\x21\x48\xcf\x42\xb6\x3b\x57\xa8\xfd\x63\xfa\x4b\x1f\xb8\xaf\xa0\xad\x89\xde\xce\x87\x80\xc0\xfb\xa7\xad\xae\xfe\xec\x3b\xbe\x7d\xac\x85\x5a\xfb\x88\x78\x0a\xd7\x89\xde\x99\xfc\x55\x57\x7e\x2c\x4a\xe0\x7f\xe2\x09\x51\x36\xba\x12\x4e\x5c\xf5\x0e\x2e\x9f\xa5\x50\x85\x90\x68\x15\xc9\xe4\x26\x93\xe2\x8d\xf2\x4f\x85\x20\xbf\x9c\xa2\x6c\x12\x5f\x4e\x51\xf3\xce\xfa\xaf\xf4\xfa\xa1\xa7\x16\x48\x62\x5e\x92\x03\x94\x4a\x20\x34\xc7\xe7\xfc\xf3\xad\xa8\x8e\xce\xb9\x7f\x11\xe9\xe7\x96\x90\x3e\x47\x25\x94\xb5\x70\x65\xdf\x9a\x50\x5a\x3b\x3b\x2d\xeb\x24\x55\x9f\x5e\x93\x48\xd1\x15\x95\xe7\xd0\x22\xda\x95\x48\x9f\xc3\x1b\xe9\xff\xfe\xb3\xed\x21\xcd\x47\x95\x7a\xe4\x9e\x2f\xe2\x5a\xfa\xbb\x76\x4e\x4b\x32\x39\x6d\xc4\x52\x92\xf2\x4d\x49\x9f\x30\x36\x12\xae\x62\xbd\x3a\xc2\xaa\xbd\x77\xd0\xc8\xc3\xf9\x00\x14\xc1\xd9\x19\x2f\x0f\x7b\x8c\x4f\xb1\xff\x17\xf2\x43\xae\x3b\xdf\x94\x0c\xd2\x89\xcb\xa6\x6a\xb5\xf2\x9b\xa0\x4b\x7a\x71\x6b\xe4\x42\xdd\x07\x7f\xad\x91\x4b\xcf\xb6\xd0\x51\x8e\x74\xe0\xed\x2b\x59\x1a\xe9\xe5\xe4\xf1\x5e\xc4\xe3\x9b\x7f\x78\xc4\x4d\xfc\xdf\x79\xa7\x16\x41\x99\xa9\xd4\x8d\x13\xaa\xf1\x8b\xb6\x4c\x4f\x2d\x9e\xc7\xea\xf5\xb3\x72\xb3\x47\x0b\x55\x0a\xf7\x78\xfa\x6f\xad\xd5\x77\x4f\x2b\xb9\x10\x5d\xed\x7c\x44\x39\x25\x6f\xc5\xdf\x9f\xe3\xa5\x43\x79\x2a\x5a\x34\x75\xd6\x5b\x8d\x25\xde\xee\x6b\xcf\x6b\x11\xc9\x04\xa2\xfa\xc9\xfc\x73\x7d\x89\x22\xd0\x57\xad\xf4\x53\x27\xcf\xfa\x85\x1e\xfc\x19\xd9\x49\x76\x58\x65\xd4\xed\xa0\xf5\xf9\x49\x3c\x9f\x9c\x03\x1b\x5a\x32\xfb\x09\x87\xba\xb3\x4e\x9a\x0f\x9d\x5b\x1d\xe2\x65\x2f\xb4\xa5\x6e\x16\x6a\x79\xd8\x55\xe6\xcb\x72\xe2\xce\x7e\xaa\x85\x75\xaa\xfc\x6f\xad\xcb\x9b\x2b\xa7\xcd\xc1\xfd\xa1\xb0\xf3\xc2\xfa\xdc\x5b\x05\xf9\x52\x10\xc6\x29\xdf\x29\x10\x54\x76\xa6\x31\x33\x65\x42\x03\x2d\x43\x66\x50\xb9\x2f\xce\x03\xef\x9e\xaf\x90\x38\xdb\x2e\x20\x94\x8e\x24\xfe\xe9\x8c\x3c\x57\xf6\x26\xa8\xe6\x21\xca\x95\x6a\x96\x51\x8c\x9e\x4a\xd9\x9b\x28\x86\xda\xe6\xc5\x3f\xbf\x5f\x04\x7f\x6f\x24\x76\xf3\xf5\x6f\x13\x2f\xab\x38\x8c\xe3\x4f\xdf\xe3\xf1\x7a\xfd\xf0\xe7\xf7\x8b\xa0\x7c\xf0\x59\x1d\x4e\xba\xa2\xf0\x41\x3c\x39\xe4\x7f\x73\x16\x54\x1a\xb0\x2b\x61\x62\x38\x15\xfc\x69\x60\xf7\x71\x87\x7f\x3a\x2e\x36\x14\x1d\x94\xb2\x5d\x2d\x0e\x1e\x2d\x85\x08\xd6\xba\x51\x4e\xfb\x55\x3f\xce\x23\xf2\xe7\xab\x09\xcf\x42\xb4\x8c\xbc\xe0\xc3\xbb\xe4\x45\x0f\xaf\xfe\x2e\xbd\x4a\x4a\xa8\x11\x82\x88\x41\x44\x92\x0b\xd4\x37\x21\x33\x0a\xaf\x8f\xdc\x11\x8c\x7f\x55\x53\x1d\xfe\x9c\x19\xa8\xcb\xb1\xf9\xe1\xc4\x89\xf6\xe4\x14\xf1\xc1\x8a\xfc\x2a\x0e\x66\x44\x50\x4e\x8c\xe0\xb2\x2a\xa2\x5b\x65\xde\x97\x1b\xe1\x16\xa4\x47\x65\x49\x11\x59\x20\x58\xe5\xef\xd2\x2a\xe0\x02\x37\x24\x05\x8c\x56\xca\x4e\xfe\x70\x5a\xf4\xd4\x3f\x72\xea\xe9\xee\x2a\xd0\x30\xa1\x9f\x46\xe4\x2b\xf5\x48\xdb\xe6\xeb\x4f\x2b\x88\x37\x80\xbf\xc8\xb1\x2a\xa8\xb0\x31\xea\x36\x42\xb0\x21\xd2\xfd\xdb\xe8\x4a\x5e\x76\xd7\xb5\xb2\xab\xab\xf7\x70\x61\xc6\xf6\x89\x7d\x70\xce\xa8\xeb\xce\xf9\xed\x0b\x9e\x43\x10\x6f\x8f\x08\x4e\x8a\x9e\xd2\x43\xb1\x61\xa5\xef\x9a\x3b\x61\xaa\x0f\x97\x07\x9d\x4f\xf9\xee\xdf\x03\xfa\xdd\xbf\x50\xb2\xae\x3c\xf9\x1c\xc5\x51\x0c\xc9\xad\x7f\x4a\x63\xc9\x13\x91\xc1\x7c\xa7\xfe\xb3\x12\x0d\xac\x47\xb2\xa4\xb6\xeb\x23\xaa\x1f\xa4\xc4\xa7\x77\xaa\x77\xed\xb2\x70\x3f\x27\x22\xee\x6d\x5a\x01\xbd\x26\x08\xa4\xef\x4a\xdd\x2a\x9b\x28\xb7\x71\xdc\xcd\x99\xb2\xd2\xb8\xbc\x78\x9c\x44\x55\xe4\xa7\x57\xcf\xbd\x5f\x2c\xd7\xad\x7b\xf0\x18\x9a\x4d\xf2\xee\xca\x4a\x75\xeb\xf0\x8e\x47\xf5\x8f\xfc\xa2\xd6\x2a\x74\xa6\x97\xf7\x5e\x2d\x82\x16\xc0\x44\xd2\xe1\xeb\xee\xa4\x83\xcd\x4e\x98\xa5\x74\x7f\xfd\xf5\xc7\x11\xc5\x0e\xee\xee\x94\x5f\x29\xdc\x1c\x96\xeb\xcf\x0d\xb5\xbc\x1f\xea\xc3\xde\xaf\xc1\xac\xfd\x0b\xae\xe7\x68\xdd\x65\x8f\xfb\x6b\x3f\x9f\xb5\x71\xbc\xa8\x75\x79\x13\x36\xa0\x53\x09\x27\x6c\xa4\xe0\xf9\xe3\xbb\x7f\xfe\x0c\x1e\x99\xf0\xde\xb1\x65\x29\x2f\x37\xc6\xa7\x75\xb2\x71\xa1\x33\x7b\x4e\x3f\x77\xac\xad\xa2\x10\xc6\xf4\x99\x35\xc3\x87\x05\xa3\x32\xe5\xbe\xcb\x56\x07\xe5\x4b\x65\xfa\x22\x41\xc2\x1e\x79\x6f\x7e\xab\xad\x8a\xf4\xea\x5b\xe5\xeb\xe8\x89\x12\x87\xdc\x7d\x5b\xb0\xa3\x1d\xf2\x63\xc3\x66\xc1\x8c\x95\x2b\x5e\x97\x1e\x51\x76\x1c\x51\xb6\x8a\xff\xb9\x6e\x37\xec\x30\x63\x1f\xb6\xc0\xbd\xcf\x7e\xa5\xad\xf3\xf1\x24\x52\x8e\x3e\xca\x01\xb9\xf0\xd7\x10\x41\x94\x06\xdc\x71\x65\x03\x87\xe1\xca\x95\x68\x3f\x74\x6e\x75\xae\x6c\xa9\x6f\x25\x45\xe6\xf9\xea\xbb\x23\x8a\xab\xa1\xe4\x3a\x3c\x82\x48\x6a\xc6\xd0\x29\xdb\x69\x6f\xd7\x25\xed\xed\x7f\x87\xbe\x05\x1e\xa9\xe3\xa2\xd9\x88\x63\xe1\xe7\x94\x3c\x3e\x07\x4a\xab\x8d\x13\x7e\xe5\xc7\x73\x70\x1a\x64\x43\xf2\xb5\x9f\x7b\xda\xe1\x83\x5b\xeb\xb2\x3f\xf5\xc9\x44\xb8\xfa\xfb\xd0\x69\x9c\x6d\xb8\xe3\xe0\x6f\xf6\x3f\x26\xd4\x95\xd0\x84\x55\xbd\x8e\x4a\x41\x1a\x7a\xb3\x4d\x98\x90\xea\x71\xb7\x9f\x3d\xae\x31\xd4\x79\xb7\x5b\x73\x7d\xaf\x07\x55\x50\x95\x60\xf3\xc2\x13\x35\x6b\xb7\xdf\x16\xec\x34\x56\xda\xe9\xe6\xf8\x5c\x28\xd5\x84\xc9\xb0\x1b\xe4\xc1\xf6\x5f\x1b\x77\xa7\x4d\x04\x7f\xfb\xd1\x65\x72\x9f\x5c\x92\x73\x6b\xf4\xe6\x37\x87\x51\x1f\x6d\xa2\x13\xa1\x23\x5a\xd4\x54\x27\xef\x74\x72\x0e\x92\x02\x6b\xec\x04\xf5\x82\xe2\x4c\x75\x23\x77\xe1\x1a\x00\x4c\x21\x19\x80\x96\x8f\xb4\x03\x74\xe4\xc9\x08\x48\x8e\xd2\x0e\x90\x81\x67\x05\x6f\xab\xd0\xf9\x73\xb4\xee\x5b\xe3\x33\xde\xe9\x2a\x3b\x00\x92\xd1\xf6\x1f\xa4\x4e\x9d\xa3\x37\x32\x07\x37\x9f\x92\x7f\xfe\x2b\x32\xea\x44\x09\x60\x0f\x09\x69\xb1\x3b\x38\x5d\x19\x46\xcf\x5d\x0d\x83\xb7\x60\xe4\xb3\xee\x80\x25\x4a\x0b\x3c\xc7\x35\xd8\x0a\xf0\x29\x99\x58\x06\xec\x0e\x60\xf1\x53\xe4\x5b\x88\x02\x78\x1e\xed\x0e\xb8\x8c\xc6\xc8\xad\xdd\x01\x9b\xd7\xa0\x7c\xdb\x80\xf8\xb1\x1c\xdc\x60\x0b\xe0\xb1\x3a\x39\x43\x77\x07\x0c\x4e\xc7\x95\xa8\xb9\x2b\x44\x00\x32\x7b\xb0\xe5\xdb\x53\x38\x5d\xa5\x21\x1b\x3e\xbe\x90\x0d\x9f\xe7\x90\x0d\x9f\xe7\xc8\x12\x18\x3e\x4f\x87\xd3\xfc\xd0\x37\x92\xa0\x76\x83\x05\x6b\x5d\xa5\x64\x93\xa4\xea\xa5\x28\xe4\x7d\xab\x8e\x6a\x72\x0a\x5d\x36\x24\xab\x07\x22\x71\x35\x99\x16\xa3\x95\xec\x10\x7a\x41\x0d\xfe\xd4\x50\x0e\xe8\xbf\x3b\x7d\xfd\xe0\x82\x46\x15\x96\xbe\x63\x4c\x66\x12\x54\x30\x72\xa9\xac\x8b\x90\x0a\xe9\x64\x23\x22\xb4\xa6\x8e\xd0\x9e\x68\x8c\xac\x4c\x98\xb4\x39\x9c\x81\x67\x00\x26\x14\xf5\x9b\xeb\xa0\x81\x97\x58\x59\x5a\x6b\xb1\x8c\xd0\x2f\x51\x3e\x6c\x7e\x17\xfc\xbd\x47\xd8\xde\x4d\xeb\xd0\x79\x37\x39\x27\xea\xb5\x9f\x1f\x43\x0f\xb6\x9e\xe1\x0e\xfe\x2a\x74\xa7\x36\x5b\x8a\x5a\x5e\x7c\x3b\x02\x81\xb4\x14\x4e\xde\x89\xf0\x17\x66\x6b\xb4\x93\xe5\x46\x11\x3e\xd7\x6b\xa1\xc2\x67\x8f\x66\xa6\x7c\xf9\xe7\xbe\xb3\x61\x6c\xfd\xa9\x11\xd7\xb5\x9f\x4a\x4e\xdc\xc0\x61\x82\x44\x94\x16\xc9\x8f\xef\xbe\x8c\x21\xe7\xed\x83\x75\x32\x7c\xbd\x7b\xb4\x51\x36\xfe\x52\xf0\x91\xcb\x0f\x5b\x24\x23\xe9\x1f\xfe\x65\xbf\x57\xc1\xe4\xa5\x97\x57\xf3\x68\x13\x67\xe6\xd1\x21\x28\x77\x07\xf4\xc7\x90\xbb\x03\x3e\x42\xac\x46\x7e\x11\xdb\x7c\xfb\x4b\x9d\xe1\x2e\xd1\x41\x33\xd2\x8f\x2e\x11\xf3\x5d\xa8\x3b\xd1\xee\xe0\xfd\x57\xdb\x36\x7c\x1d\x93\xf7\x57\xde\xda\x76\x25\x8d\x3c\x9a\xcc\xe2\xad\x22\x57\xab\xf2\x21\x78\x1a\xf0\x2f\xef\x8f\x78\xf0\xbe\x79\x3b\x11\x73\x98\x3d\x92\x6f\x3c\xc9\xc8\xeb\x67\x95\x70\xe2\x5a\xd8\x3c\x7d\xec\x65\xc8\xd3\xc7\x7e\x85\x3c\x7d\xec\x9d\x4c\x1f\x5b\x89\xfa\x40\xfd\x83\xdf\x17\xa8\xe6\xed\xe6\x70\xbe\x2c\xd6\x6a\xeb\x96\x46\xda\xbf\x3e\x7c\x09\x79\x23\xf6\xf3\x74\x62\x68\x4b\xa4\xa9\x96\x05\x62\xac\xac\xc5\xfd\x47\xdd\x34\x83\x67\xce\xbf\xb7\x2c\x10\x96\xa6\x5b\x6a\xfe\x93\x37\x8b\xc8\xda\xe2\xf5\xff\x8b\x71\xba\xfe\x73\x73\x8b\x7c\xb4\xd1\x8e\x56\x94\x37\x5d\x1b\x45\x1f\x5c\x96\x5e\xbb\x9e\xc9\xe6\x08\xc9\xa6\xd6\xa5\x9f\x0f\x84\x7a\xba\xc8\x40\x4c\x14\x57\x41\xb2\xe6\x46\x80\xf2\x7d\x48\x4d\xcf\xb6\x6b\x03\xb3\x24\xb1\xdc\x27\x8a\x47\xe5\x29\x26\x6a\x9e\x1c\xa5\xd4\xf5\x29\x26\x62\xb3\x6c\x5a\x8e\x95\x77\x09\xec\xd3\x35\x11\x72\xac\xbc\x07\x70\x8e\x80\x50\x34\x71\x20\xe7\x08\x10\x59\x53\x06\x74\xb2\x11\x79\x0e\xec\x64\xe1\x49\x24\x0e\x7c\x07\x7a\xb2\x90\xa4\x62\x68\x3a\x9f\x79\x0e\xfe\x7c\xfa\xc0\xe1\x01\xa0\x23\x60\x7c\xe9\x3b\x54\xb0\x00\xf9\x32\x9d\x7c\xa5\x45\x12\x9e\xe2\x22\xd2\x18\x69\x80\x28\x03\x13\x9d\xc6\xbc\x07\x8b\xee\x3d\xe2\x39\x60\x74\x04\x32\x9d\xf9\x0d\x1c\x1d\x01\x21\x32\x4a\x86\xda\x08\x40\xa5\x0a\x98\x0d\x8e\xd4\x0a\x50\x13\xb2\x67\x2d\x2a\xa9\x03\x4c\x9f\xe2\xa2\xf2\x26\x25\x90\x35\x02\x5a\x81\x44\x2f\xe8\x60\x52\x11\xb1\x54\xc5\x37\xe9\x8e\xb1\x36\xba\x8c\xf2\x4c\xb3\x7b\xba\x26\x8a\xbc\xf1\x1a\x90\x3a\xc2\x8c\xcd\xa7\xd4\xfc\x99\x99\xa6\x87\x77\x6b\xa8\x91\x3b\xea\x20\x14\x40\x4c\xc9\x1a\x21\xad\x57\x80\xac\x1c\x00\xda\x04\x5e\xf5\x0a\xd5\xbc\x32\xca\x38\xb1\x7a\x57\x5e\xb5\x2b\xa7\xd6\x15\xab\x74\x85\x37\x08\xab\x72\xa5\xd7\xb8\x02\x15\xae\x60\x7d\x2b\xa2\xb1\x52\xa5\x3a\xb4\xdd\x48\x5d\x2b\x72\x23\xd2\x45\xe7\xe1\x0e\xd7\x23\x40\x42\xd3\x7b\x8e\xce\x08\x73\xf6\x03\xa1\x83\x69\x47\x38\x55\xc5\x23\xb5\x2f\x9a\x36\xd0\x76\x04\x7c\xf4\xd1\xd3\x35\xa7\xd8\x53\xc0\x49\xe7\x33\xdb\x07\x5e\x11\xd0\xf1\x2b\xeb\x58\xf0\x03\x1c\x1d\x0b\x6f\x46\xc6\xeb\x90\xc4\x6d\x44\xc6\x50\xf3\x0a\x7e\x13\x32\x16\x76\xbc\x2b\x11\xa7\xfd\x18\xa8\x22\x15\x59\x2f\x3e\x0c\xfc\x86\x63\x3c\x66\x0a\xd0\x6c\x8c\xc9\x4f\xac\x46\x63\x4c\xdc\xbc\x26\x63\x93\xb1\x32\xdc\x5e\x0c\xe6\x64\xd4\x80\x9b\xaf\x39\x46\x46\xe4\x3b\x38\x78\x04\x28\x4a\xe3\x3d\x48\x78\x04\x2c\x00\x40\x19\x2c\xcc\xc0\x44\xde\xe3\xc3\x03\x87\x47\x98\xb1\x4f\xda\x73\x9e\xce\x76\x55\x27\x9a\xcc\x43\x1b\x5c\x3c\xc2\xbc\x63\x8e\xde\x83\x8d\x47\x98\xf3\xe7\xd0\xb9\xd3\x7b\x00\xf2\x08\xd9\x91\x43\x18\x98\x3c\xc2\x31\x79\x0f\x72\x04\x6e\x0f\xde\xaf\xd3\xc6\x73\x40\xf3\x08\x90\x58\xa0\x0d\x6c\x1e\x01\x4b\x2a\xa4\x0d\x70\x66\xe0\x22\xef\x34\x79\xb0\xf3\x08\x33\x56\x98\x8e\x20\x07\xda\x7f\x20\xf4\x53\x3c\x33\x4d\x67\xa0\xcb\x0f\xaf\xc1\xd1\x4f\x97\x44\xa1\x6a\xbf\x41\xd2\x23\x40\xf2\x83\x32\x58\x7a\x04\xf0\x10\x29\x83\xa6\x99\xa8\xfc\x07\x4f\x33\x10\xd1\xc9\xc5\x7b\x20\xf5\xd3\x55\x51\x48\xc6\x77\x40\xf5\x08\x08\xd1\x90\x06\x56\x8f\x00\xca\xc0\x13\xca\x66\xa4\xd3\x8b\xef\xa0\xeb\xdd\x13\x04\xcf\x12\x99\xb6\x7c\x07\x60\x8f\x80\x90\x56\x92\x03\x77\xf1\xaf\x6f\xe0\x2a\x89\x78\x72\x5e\x83\xb4\x47\x80\x8a\x68\x90\xc1\xda\x23\x60\x76\x0f\x30\x68\x9b\x87\x30\x91\xda\x47\x1e\xc4\xcd\xc3\xe6\x37\x98\x9b\x87\x83\x3c\xa8\x9b\x85\x6e\xd6\x8e\x46\xc2\x40\xef\x11\xe6\xec\x2c\xcb\x8e\x8e\x3d\x48\xe9\x5f\xa2\x0e\x0a\x67\xac\x91\x7e\x95\x1d\x1e\x20\xbe\xfb\xed\xe1\x41\xe2\xbb\xdf\x12\x06\x8a\x8f\x40\xde\xdc\xb5\xee\x1a\x92\x96\x43\xde\x51\x8f\x11\xe6\x23\xcc\x56\x83\x4a\xc9\xf5\xbe\x23\xcf\x9f\xe2\x99\x8f\xb6\xe6\x39\x12\x7d\x04\x32\xc5\x42\x23\xd2\xb7\x0f\x23\xca\x1e\x65\x64\xfa\x08\xb3\x26\x33\xfa\xf9\xfb\x8e\x56\x7f\xba\x2a\xca\xa9\x02\xa3\xd6\xb7\xcf\xce\xd8\xa9\xe9\x39\x8a\x9d\x81\x04\xf1\xe2\xc5\x2b\x8d\xa1\x8d\x6c\xdf\x3e\x35\xdf\x13\xcc\x7d\x2f\xa2\x97\x53\x79\x8f\x82\xdf\x7b\xe0\x34\x53\x7d\x09\x23\xe3\x47\x48\x9a\xec\x0b\x8c\x92\xe7\x23\x2d\xd0\x71\x89\xec\x47\xf9\x53\x5c\x0b\x7c\xf2\xe2\x08\xcc\xe4\xc6\x01\xd0\x49\x8c\x23\x70\x27\x32\x8e\xc0\xc9\xca\xdd\x01\x3a\xa1\xf1\xe9\x2a\x58\x5b\xca\x99\x0c\x5b\x80\x93\x1b\x77\xcf\x02\x13\x1c\x47\x60\xa4\x71\xef\xbf\x80\x3a\xd1\x71\x04\xc4\xd1\xb0\x8f\x17\x3e\x34\x6c\xd2\xe3\x53\xe4\xd4\x1b\xfd\xe9\xd3\xd0\x9e\x43\xa3\xef\x47\x78\xbf\x32\x97\x33\x22\x3f\xe4\x3a\x8a\x20\x23\xf3\x47\x08\x72\x15\x14\x21\x46\xe8\x07\x5e\x11\x57\x9a\x16\xec\xd1\xfa\x23\xb0\xc5\x63\x91\x6f\xdb\x17\x57\xc1\xa4\x91\x10\x23\xf9\x47\x08\xc5\xd8\x41\x46\xf4\x8f\x10\x8c\xb7\x99\x23\xfb\x83\xaf\x87\x3b\xc2\x3f\xf0\x82\xc2\x88\x1a\xc6\x68\xff\x11\x02\x48\x1a\xbe\x12\x7a\xac\x8a\x24\x03\xb9\xdf\xf0\xac\xe7\xf0\x7e\x95\xa9\x6c\xc0\xee\xe0\x64\xae\xd4\x6c\xc0\x66\x03\x96\xf8\x34\x28\x6e\xcd\xad\x2a\xe5\x87\xb2\xd4\x5d\xe3\x7e\xe8\x1b\x09\x98\x41\xcc\x56\x01\x5d\xa5\x64\x33\x49\x7d\x6f\x51\xc8\xfb\x56\x19\xb1\x39\xba\x2b\x59\xea\x86\x56\x38\xb6\x03\xa4\x83\xfc\x53\xe0\x4a\x2e\x5c\x66\x4d\x56\x21\x0d\x49\x19\x98\xd6\x93\x15\x2d\x03\xdd\x6e\x87\xb8\x42\xac\x00\xce\xdf\x9d\xbe\x7e\x70\x51\xa3\x7d\x4b\xa3\x3b\x52\xd4\x61\xe6\xc1\xbe\x71\xec\x7f\xfc\xe4\x5f\xd9\x88\x26\x76\x89\x77\x92\x06\xaa\x63\x84\x74\x76\xf1\xd1\xf1\x2c\x89\x01\xd5\x58\xdc\x68\xae\xa3\x06\x52\x53\xe5\x05\xaf\xc5\x32\x41\xa7\x7d\xf9\xb0\xf9\x7d\x74\x3c\x27\xd8\x78\xdb\x73\xa4\x38\x6b\x69\x39\xdb\x76\x0b\x29\xb3\x6d\x67\xd9\x0d\xbb\x17\x08\xde\xbf\x8e\xdd\x3b\xdb\x96\xa2\x96\x17\xdf\x4e\x40\xd0\x3e\x0e\xbb\x8f\x9f\x0a\x67\xb4\x1b\xc6\x66\x9d\xeb\xb5\x50\xf1\xeb\x30\xb2\xf0\xd8\x42\x4a\xe1\x61\x6d\xfd\xa9\x11\xd7\x35\xcd\x64\x03\x37\x7e\x98\x5a\x9c\x64\x98\xd1\x76\x42\x72\x82\x7b\xcf\x3e\x58\x27\xe3\x77\x80\xa2\x8d\xf9\x66\xa0\xa2\x4b\xfb\x47\xa9\xe4\x6f\xe1\x8e\x2c\xe8\xff\x44\xbf\xc7\xd1\xee\x07\x52\x94\xe1\x64\x13\x1a\xe7\xdd\xbb\x34\xf7\x87\x7f\x1b\x72\x7f\xf8\x11\x92\xf9\xf6\xd2\xb5\x6e\x4f\x38\x08\x8c\x2e\x3d\x87\xbb\x56\x47\xad\x1c\x3b\xb9\x02\x82\xac\x86\xee\x41\x32\xdd\x66\x1f\x95\x6d\xe3\x57\x7c\xd3\x99\xa9\xbb\x8e\x5a\xe0\x79\x6b\xdb\x95\x34\xf2\x64\x2a\x7e\xb6\x8a\x7e\xad\xca\x87\xe8\xe5\x38\xbf\xe0\x4b\x48\xb0\xd4\xfc\xcf\x84\xb5\x46\x84\x24\x4e\x22\x3b\x90\x7e\xde\x2a\xe7\xe5\x07\xa3\x12\xf3\x50\xd8\x7d\xd1\x94\x75\x67\xd5\xad\xf7\x79\xd3\x6f\x85\x01\xd1\x0f\xe5\x4f\x53\xe4\x43\xde\xa1\xa8\x55\x13\x1b\xcd\xff\xe7\xcf\x8e\x44\x0c\x24\xba\x30\xd2\x7a\x99\x76\x54\xba\xe8\x8c\xb7\xd6\x17\xf3\xf3\xec\xff\xc5\xf8\xb8\xc8\x83\xf9\xc7\xde\x51\xd1\x10\x44\x9d\xae\x3f\x04\x84\xfd\x2b\x04\xa2\x1e\xff\x70\x1f\x5d\x91\xac\x03\xd2\x82\xec\x9d\x5a\x44\x61\xa0\x6d\x46\xf6\x71\x52\x01\xe1\x98\xbc\x7f\x6a\x4b\xa3\x5a\x77\xe5\x95\x82\x4d\xd9\x6e\x71\x67\x3f\xd5\xc2\x3a\x55\xfe\xb7\xd6\xe5\xcd\x95\xd3\xc6\x8b\x50\xa8\x47\x4a\x53\xfa\xe8\xe7\x49\xed\x3a\x8a\x78\x63\xe8\x3e\x18\xaa\xd1\x48\x57\x0d\xa8\xd5\xe6\xc4\x9d\xa5\x68\x7e\xa4\x0a\x73\x92\x28\xeb\x27\xb7\xfb\xb6\x92\x20\x0b\x1b\x51\xae\x54\xb3\xa4\x38\x60\xc9\xe4\x39\x8e\xc2\x8f\x8a\xe0\xe7\x77\xef\xda\x42\xf2\xfb\x23\xb3\xef\x8d\x6a\xbc\x8d\x0b\xe0\x4a\x8e\xcb\x84\x34\x1e\x19\x49\xc1\xfb\xc7\x3f\xbf\x5f\x44\xe1\x27\xdf\xe9\xe4\x54\x7e\x8a\x2f\xf3\xe8\x0e\x4f\x32\xcd\xd8\x95\x30\x24\xaf\x53\x54\xb9\xba\xfb\x60\xbf\x9f\x8f\x8b\x0f\x4d\x37\xa5\x6c\x57\x7e\x6d\xc0\xa8\x44\x43\x4d\xac\x22\xc6\x97\x60\xff\x9c\xbf\xcf\x9f\x12\x64\x99\x9d\x08\x1b\x79\xca\x57\x26\x14\x10\x4f\x51\xfd\xda\x88\x73\x31\xc1\x58\x5e\xb2\xe7\x96\x92\x87\x15\x55\x8e\x10\xb2\xa9\x68\x72\x41\x35\x95\xdf\x27\xce\xcc\x6c\x48\xc5\x57\xef\x90\xe8\xdf\x85\x61\x42\x6a\xa4\x44\x3d\x59\x20\x33\x24\x8d\x55\x4b\xba\x7c\x89\x37\x35\x16\xc7\x24\x67\x80\x80\x21\x4c\x7a\xe6\x07\x9e\xf5\x81\x66\x7c\xd0\xb3\x3d\xc0\x78\x38\x35\xcb\x83\x96\xe1\x41\xcc\xee\x00\x82\xcb\x54\x0d\x8f\x22\x65\xc9\x5b\x4a\x4d\x17\xa1\xde\x44\x34\xb1\xe6\xd7\x76\x9f\x2c\xd0\x48\xc3\xe0\xe6\xe6\xa3\xe0\x4c\xf1\x3f\x95\x4b\x3d\x95\x3f\x93\x3e\xa9\x9f\x37\x67\x2f\xfe\xde\x11\x9d\x44\xbe\x03\xde\x48\xab\x20\x36\x21\xcb\xfa\x8a\x07\x60\xfa\x0a\xd6\xd7\x0c\xcf\x90\xe5\xf4\x2e\x63\x24\xca\x32\xfa\x93\x25\xcf\x3e\xc5\xba\x8e\x81\x09\xa5\x59\x8f\xdc\x03\x5e\x4f\x30\x56\x17\x5c\x4e\xdf\x2f\x06\x5f\xc0\xbd\xbd\x18\x38\xf1\xfe\x5d\xc9\x59\x11\xea\xca\x05\x71\x22\x62\xc4\xcc\xcb\x2c\x21\x21\xa0\x4c\xbd\x27\x7b\xf0\x49\xd3\xee\xe9\xce\x63\xea\x94\xfb\x98\xa9\x35\x7e\x93\xed\x67\xe6\xeb\x24\x0c\x98\x3a\x95\xe4\x08\xfa\xd4\xfa\xf9\xc5\x95\x48\x53\xea\xe7\xb6\x7c\x1a\x57\x91\x26\xd2\xbf\x2f\xe7\x03\x71\xf2\xfc\xdc\xad\xe1\x1c\x79\x39\x69\x47\x03\x61\x82\x3c\x99\x8d\xe9\x93\xe3\xe9\xc9\x54\xf4\x89\xf1\x31\xb5\x0d\x68\x4a\xfc\xcc\x94\x8f\x99\xe6\x67\xd2\x26\xc1\xcf\x2e\xbc\x4c\xe3\x75\xef\xa9\xef\x34\xea\xf4\x9f\xf6\x4e\xe6\x75\xea\x94\x77\xe0\x80\xa8\xd3\xdd\x01\x14\xb4\xa9\xee\x51\xe3\xe0\xa4\x49\xee\x34\x32\xa0\x4c\x70\xa7\x12\x02\x79\x72\x3b\x20\x9f\x8e\x38\x7b\x8b\x46\x03\x94\xe9\xec\xde\xde\x0e\x12\xad\x50\x26\xb2\x53\x49\x25\xea\x41\xba\x78\x57\x24\x51\x94\x47\x38\x15\xef\x69\xeb\xe4\x04\x7b\x74\xca\x3a\x5d\xe7\x07\xa7\xab\xd3\x11\x45\x56\x97\xa0\x69\xea\x74\x2c\xfe\x53\xd4\xe9\xef\x86\xa6\xa7\x1f\xbf\x53\x8b\x38\x29\x7d\x6e\x0e\x9b\x6c\x98\x47\xf4\x79\x20\xd3\xcf\xa3\x5e\x23\x7e\x13\xcf\x7d\xa7\x9d\x93\x27\x9d\x93\x36\xd0\x73\xfe\xf8\xac\xf4\x85\x14\xbc\x44\x99\x33\x3e\x07\x9d\x84\x30\x57\x9c\x44\x1f\xf0\x3c\x71\xb2\x3a\x43\x9d\x23\x3e\x3b\xb2\xa1\x9d\x2b\x65\x66\x38\xed\xc4\xc0\x59\xe1\x73\x73\x6d\x11\x66\x83\xc7\x65\x40\xbf\x79\xe0\xb4\x33\x22\xcf\x01\x9f\xd9\xe9\xe4\x0a\xec\xb7\xd7\xe1\x4b\x07\x94\xd9\xde\x27\x93\x38\x48\x9c\xe3\x9d\x24\x75\x10\x9c\xdd\x8d\xa7\x49\x81\x73\xcb\xe0\x71\x67\xdc\x51\x67\x8c\x31\x67\x8c\xf4\xaa\x01\x38\xe3\xcd\x42\x8c\x36\x43\x73\xfd\x76\xc0\x19\x69\xc6\xdc\x3e\xce\x28\x33\x74\x8c\x19\x3c\xc2\x0c\x4c\xfc\xdc\x7f\x18\x19\x5d\x86\x8d\x2d\x63\x1c\x0c\x3e\xae\x8c\x7e\x93\x3e\x7d\x92\xbc\xb7\xf0\x8c\xed\xf7\x23\x1b\xb9\xf3\xb4\x43\x8c\xa1\x0c\x33\x47\x9b\x2d\xaa\x8b\x50\xf3\xb3\x03\xac\x84\x3f\xc4\x91\x3b\x33\x9b\x25\xce\x8a\x7c\xf3\x71\x69\x20\xd4\x5c\xec\x10\x0c\x1a\x6c\x1e\x76\x10\x1e\x0d\x30\x07\x3b\xc8\x3a\x42\xcc\xbf\x9e\x85\xa8\x60\xce\xbc\x66\x4a\x0a\x9e\x92\x77\x4c\xca\x1a\x88\x14\x99\x6b\xfd\x7e\x14\x98\x6c\xdc\x1d\xe9\x15\x97\x8d\xbb\xc3\x90\x8d\xbb\xd7\x81\x3d\x7f\x9a\x51\x3c\x0b\xcf\x9d\x66\x1c\x4d\x80\x79\xd3\xbc\x59\xd3\x1c\x69\x73\x24\x03\x67\xd2\x8c\x8f\x89\x5e\x02\x48\xec\x25\xe8\x3d\x43\x9a\xb4\x70\xc2\xec\x68\x2a\x27\x92\x66\x46\xcf\x30\x40\x44\x9d\x11\x4d\x4f\x4b\x24\xcd\x86\x26\xbf\x3e\x62\xfb\x3a\xea\x2c\xe8\xc8\xc9\xd1\xde\xf3\x9f\x09\xb3\x9f\x49\x5c\xe4\x39\xf3\x79\x66\x31\x56\xd2\x8c\x67\xf2\xdb\x89\xb3\x9d\xc9\xef\x3f\x81\xd6\xa3\x84\x59\x96\x33\x94\x8f\xef\x36\x1f\x70\x36\x7d\x41\x7d\x67\x32\xc7\xeb\x20\x4a\x98\xc3\x3c\x33\xe1\x47\x9c\xbb\x4c\x4f\x2f\x02\xe7\x2d\x67\x46\xf7\x83\x14\x8c\x4e\x9f\xa5\x0c\x6c\x2e\x7d\x86\x32\xbd\x09\x07\x7d\x76\x32\x1d\x07\x69\x66\x32\xa8\x6f\xce\xa6\xb3\xbb\xff\x7c\x64\xda\x6c\x64\xc2\x5c\x64\xa2\x9c\x36\xaa\xf5\x2e\xde\x22\x6d\x9d\xbf\xe3\xfb\x64\xf2\xcb\xe6\xd7\x98\x2e\x37\xd2\xdd\x41\x6e\xa4\x1b\xc9\x5e\x89\xdd\xeb\x36\xc1\x84\x10\x9a\xd0\xa4\x8c\x41\x9e\x99\x7a\x9b\xb5\xc2\xc8\x1d\xf2\xa3\x56\x92\x80\x23\x8d\x63\x32\x03\x79\xcc\xf0\xcc\x18\x02\x1c\x2b\xcc\xc3\x93\x80\x48\x22\xce\x96\x46\x4a\x18\x3c\x73\xd9\x08\xa4\xe7\xfd\x53\xdb\x88\xd6\xae\x74\x8c\x61\x8b\x66\xe9\x45\xc4\x04\x55\x0f\x62\x55\xbf\xab\xda\x57\x66\x92\x96\xd0\x50\x64\x11\xe1\xcd\xbe\x34\x76\xd6\xaf\xc0\xeb\x47\xfd\x32\x83\x11\x95\x13\x76\xf5\x5d\x6e\xb8\x5a\x7a\x76\x27\xa0\x50\x56\x84\xb3\xf2\xfc\x34\xaf\x9f\x3d\xba\x0d\xdf\x5a\xa1\xef\xd7\x8a\xa5\x3c\x1c\xeb\xf2\xfe\x4c\x1f\x8e\xf4\xe4\x46\xf2\xd6\x1e\xe6\x42\xd9\xdc\x06\x5a\x1c\xed\x12\xf5\xd7\x96\x88\xe2\xe7\x56\xd4\x5d\xc4\x37\x7f\x36\xda\xd3\x73\x44\xd7\x21\xb7\x75\x57\xbf\xcb\x07\x52\x82\xee\xbc\x0d\x71\x7a\xce\x11\x88\x08\xcb\x35\xc2\xf2\x8c\x62\x9b\xd4\x80\x8d\x4c\xaf\xbc\xc0\xe8\x06\xad\xae\x00\x4f\x15\xac\xa0\x48\xe6\x28\xa1\xd7\x45\x00\x67\x8b\x27\xef\xc3\x25\xa0\x68\x82\x3e\x78\xcc\x50\x12\x3e\x88\x0b\x4b\xb4\x4f\x46\x51\xe4\xf4\x79\x80\xa0\x06\x97\x48\xbe\x68\xf2\x45\x43\xa5\x1d\x5a\xb6\x91\xf7\xea\xbd\xac\x26\xc0\x1a\x3f\xac\x02\xb7\x46\xaf\xa5\x5b\xc9\xee\x20\x51\x53\xc8\x5f\xde\xb7\xda\xb8\x38\x1d\x8a\x7d\x8d\xfc\x62\x96\xb9\x44\x1e\x26\xc7\x08\x49\x02\x52\xc9\xc4\x06\xc1\x34\x09\x81\xc9\xdf\x54\x19\x81\x35\xe8\x06\x33\x5d\xf8\xa8\x0b\x4e\xcd\x0e\xb3\xe4\x04\x2b\xa7\x08\x80\x18\x2f\xab\x28\x58\xa5\x15\x05\xab\xce\x06\xab\xb2\x61\x94\xca\xe0\xc5\xe8\x3c\x7a\xe4\x16\xa0\x33\xa9\x83\x59\x74\xce\xc2\xce\xa1\x0e\xbc\xc4\x9c\x41\x23\xfc\xba\x68\x1e\xad\x04\xa8\x85\x66\x92\x0b\xab\xfe\x99\x5d\xb4\xc7\xa9\x79\x9e\x8c\x52\xe1\x0a\x67\x06\xa1\x62\x26\xdb\x08\xf9\x82\x25\x41\xbe\x60\x63\x3d\x88\x18\xb4\x5e\xa6\x21\x63\x55\xf4\x72\x08\xe3\x5d\x0c\x95\x6a\xd2\x19\xb1\x93\x1c\x22\x0f\x6a\xb5\x56\xfe\x13\x12\x0a\xf6\x94\xa8\x02\xe7\x63\x98\x34\xa5\x3d\xdd\x2f\xa4\x67\x95\xcb\xb2\x33\xca\x3d\x7c\xd4\x8d\x93\xf7\xde\x24\x8f\xd0\x96\xa8\x6b\x7d\x77\x69\xd4\xad\xaa\xe5\x52\x7e\xb2\xa5\xa8\x05\x65\x9a\x4f\x01\x8b\xdd\x52\xb4\xe2\x5a\xd5\x8a\x7a\x72\xe8\x8d\x2a\x2a\xb2\x64\x07\x9b\x61\x30\xee\x40\xb4\xc5\x40\x65\x34\xb1\x6d\xe4\xf1\x7c\x1d\x24\x53\xda\x91\xa4\x49\x87\x8e\x51\x72\x6b\x74\xf9\x55\x77\xfe\x85\xba\x05\x1e\xd6\x18\x72\x36\xbf\x6b\xed\x3e\xab\x5a\xd2\x4a\x2a\x0a\xdc\x1b\xde\x35\x1f\xec\x6f\x94\x6a\xed\x82\xd1\xa6\x00\x4b\xeb\xee\xd7\xf8\x87\x6e\x36\x7b\x93\x68\x47\x7e\x12\xca\xfc\x8a\xe4\x1b\x62\xe5\x17\xd5\x74\xf7\xdf\x68\x03\x26\x0b\x86\x88\xad\xe5\xad\x24\xab\xee\xb0\x3c\x31\xba\x26\x1b\x29\x30\x32\x47\xc8\x3c\x65\x23\xa3\x94\x8f\x32\x91\x41\xc2\xf5\x4e\x35\x95\xbe\xb3\x09\x29\x6b\xb9\xb6\xe2\xa3\x91\x95\x6c\x9c\x12\xf5\x55\x2b\xbd\xe6\x34\xef\x03\x7c\x18\xcf\x51\x23\x1e\x23\x9c\xca\x47\x41\x93\x10\x6b\x7c\x1d\x97\xf4\xf3\x8d\xe0\x33\xb7\x7e\x4e\x01\xd2\x17\xd7\xe2\x5a\xfa\x4d\xf4\xc1\xcd\x8d\x98\x19\xf7\xb1\x52\x6e\xfd\x2d\x6d\xaa\x95\x4d\xb9\xc9\xbc\xb7\xc2\xdb\x08\xa7\x48\x1f\x7f\xa3\x7b\x9e\xb4\x41\x31\xaa\xe7\xf8\x05\xfe\xf9\xd7\x34\x63\x99\x94\xd5\xcf\x30\x8e\x69\x6a\x25\xd5\x18\x26\xa7\x2e\xf8\x1b\xbf\xf3\xcb\x5c\xa0\x18\xb7\x73\x5b\x3d\x89\x67\x69\x46\x2b\x8d\xc2\x48\x46\x2a\x69\x5b\x70\xa3\x94\xf6\x05\x34\x23\x94\x6a\x6b\xd1\x6c\x2c\xaa\xb1\x09\x7c\xa9\xaf\x71\x19\xf7\x43\xe9\x46\x24\x55\x34\x91\x8c\x46\x7a\x95\x2b\xc1\x48\x24\xbf\x9c\x62\x14\x92\x5f\x1e\xb1\x87\x10\x49\x28\xd1\x8d\x3d\x72\x1b\x40\xd8\xb8\x23\x6f\x2a\xcf\x98\xa3\x53\x1f\x62\xbc\x4d\xae\x53\x79\xfd\xac\x15\x9d\x7d\xfb\x9e\xf2\x93\x79\xad\xae\x7e\xc8\x75\x5b\x8b\xb7\x5b\x4c\xfa\xd2\x54\xa9\x1b\x67\x74\x5d\x1f\xe6\x1d\x92\x22\xd8\x34\xda\x09\x6f\x06\x38\x6a\x7d\x7a\x2d\x9d\xa8\x84\x13\x79\xff\xb0\x9f\x5a\x0f\xf9\x45\xda\xbb\xc5\x42\x35\xca\x79\x25\x82\x50\x25\x6f\xa3\x2b\xf9\x81\xf0\x7e\x04\xc7\xf0\x8c\x5c\x48\x63\x64\x75\xde\x6d\x4e\xe6\xaa\x5c\xc9\xaa\xab\x55\xb3\xbc\x58\x36\x7a\xfb\xe7\x4f\xf7\xb2\xec\xa8\xc1\x47\x20\x8a\x85\xe7\xe4\x0c\xdf\x81\xb5\x8c\xe6\x65\x02\xad\x85\x2b\x57\x9f\xee\x5b\x33\x54\x18\x83\x4d\xf6\xe1\xee\xfe\x45\xa0\x09\x24\x8c\x2e\xff\x05\x3f\xbb\x68\x80\xcd\x57\x88\x03\x35\xcb\x49\x16\xd2\xa7\x8b\x33\x36\x93\x79\x9e\x03\x04\xf9\x12\x3c\x70\xbd\x03\xfe\xfc\x13\x6c\x96\xc0\xf0\xec\x48\x14\xe0\x0b\x18\xf9\x85\xfb\x2f\x40\xf7\xaf\x97\x0e\x7d\x26\x6d\x16\x0c\x59\x30\x64\xc1\xf0\x04\xde\xaf\x60\x60\x20\xbf\x93\x6a\xb9\x22\x0e\x2b\x2a\xd8\xe3\x70\xb0\x44\x87\x82\x33\x29\x62\xab\xd1\x11\x1f\x1c\x36\x88\xf4\x10\x78\x1c\x08\x05\x8c\xdb\x11\x5e\xdf\x46\x85\xfd\xc6\xd4\xb8\x92\xb5\x2c\x9d\x36\x3f\xa4\xa1\x4b\x27\x50\xa4\x65\xb5\x3b\xdf\xae\x4f\x21\xdf\xae\xfb\x90\x6f\xd7\xac\x76\xc3\x90\x05\xc3\x53\xc8\x82\x61\x07\xef\x57\x30\x30\x90\x63\x68\x91\xa3\x3a\x7b\xae\x91\x91\x75\xd2\xb8\x55\x30\xad\xae\xb2\x6f\x9a\xf0\xe4\x6e\xbb\x36\xa7\x99\x5a\x53\xee\x73\x29\x47\x72\xc2\x64\x06\xff\x42\x0b\xa3\xae\x17\x21\x24\x79\x88\xdb\xb9\xe0\xdf\xd0\x45\xb8\x2b\x25\xcc\x4d\x1d\x74\x41\xfc\x1b\xbb\x08\x73\x6b\x17\x21\xbf\x2a\xc4\xed\x5d\x04\xb8\xc1\x0b\xe6\x2d\x5e\x84\xb8\xc9\x8b\x10\xb7\x79\x11\x64\x4f\x7b\xe9\xf2\xc5\x3b\x67\xfc\x65\xe0\x17\xae\x3e\x85\x20\x54\x17\x48\x5d\x82\x5f\xb0\x4d\x64\x9f\xc2\x8e\x62\xef\x20\x8f\xb2\x9c\x6e\x75\xad\x97\x0f\xbf\x4f\xd2\xeb\x81\xd3\xf4\x60\x6f\xe5\xd9\x35\xfd\x3a\xc0\xae\xe9\xa7\x0a\x5d\xf6\x4f\x7b\x41\x52\x9d\x9b\xa9\xf4\x66\xdf\x74\x76\x41\x3d\x85\xec\x82\xda\x87\xec\x82\x62\xfa\xa6\x39\xca\x6a\x48\x45\x35\x90\x8a\x05\x6e\x26\xe3\x61\x8e\x62\x0a\x73\x22\x6b\xb7\x70\xaa\x61\x29\xa2\x78\x7d\x33\xa8\x1d\xa1\xca\x67\x32\x25\x07\xf2\x77\x36\x4e\x65\x9f\x27\xe1\xc9\xec\xf3\xcc\x3e\xcf\x17\x21\xfb\x3c\xdf\x86\xec\xf3\x7c\x1d\xb2\xcf\x73\x07\xd9\xe7\x19\xeb\x05\xd9\xe7\x99\x7d\x9e\xde\x90\x7d\x9e\x3e\x4f\x67\x9f\xa7\x37\x64\x9f\x67\xf6\x79\x66\x9f\xe7\x0e\xb2\xcf\x33\xfb\x3c\xb3\xcf\xb3\x87\xec\xf3\x24\xa1\xcd\x3e\x4f\x18\x11\xe9\xe7\xc7\x35\x62\xdd\x73\xda\x1a\x61\xb1\x74\xbd\x83\x36\xc5\x03\xa0\x66\xe2\x64\x35\x14\x03\x6d\xa2\x1a\x3c\x79\x15\x9f\xa4\x86\xab\x84\x90\x22\xc8\x90\x95\xd8\x60\x17\x06\x42\x7c\xa0\x0b\xad\x65\xda\x3e\xa0\xe2\x95\xaa\x38\x81\x62\x15\x9b\x8e\x86\xd3\x18\x67\x2a\x1a\xe3\xe4\x19\xd3\xd0\x92\x5f\xac\xd8\x04\x34\xf0\xfc\x79\x93\xcf\x58\xc3\x22\x39\x13\xcf\x18\xa4\x00\x4f\x3a\x63\xe0\xc4\x27\x9c\x25\xa7\x3e\x68\xaa\x19\x48\x7c\xf8\x34\xb3\x7c\xc9\xbd\x0a\xf9\x92\xe3\x3e\x44\xfb\x1a\xc2\x64\x32\xc8\x22\xf1\x53\xf1\xd5\x5a\x2c\xe5\x65\x57\xd7\x57\x3d\x4f\x85\x36\x4e\x66\xa7\xef\xc7\xdc\xca\x46\xb9\x8f\xe3\xf5\x34\xfd\x46\x52\x06\x7d\x03\x3e\x0f\x48\xd2\xd0\x8d\xf1\x52\xaf\xd7\xa2\x21\x08\x88\xb9\x7e\x08\x61\x72\x39\xf0\x11\x70\x43\x93\x94\x53\x40\x80\x19\xe6\x5c\x6c\xf4\x39\xe6\xbc\xd8\x08\x7b\x96\x39\x3f\x34\xc3\x08\xcb\xb0\xbd\xbd\xf8\xc8\xd5\x00\xc8\x79\x63\x57\x39\x6a\xcc\x00\x9c\xa0\x07\x1a\xf0\x60\xb9\xd7\xf1\x09\xe7\x7c\x2a\xe5\x4e\x39\x0f\x40\x2f\xcc\x49\xe7\xec\x15\xf0\xe8\x05\x9f\x77\xce\xa4\x1a\xfe\xcc\x73\x3e\xf5\x04\x98\x7b\x1e\x80\x80\x58\xb3\xcf\x03\xe0\xe7\xcd\x3f\x9f\x98\x7e\xe1\x29\xe8\x4c\xf2\xe5\x4d\x42\xcf\xd7\x73\xbe\x9e\x09\xc0\x6e\xa2\x03\xf8\x65\xa1\x2e\x3a\x94\x19\xe9\x2c\x77\x0a\xd1\x64\xa2\xe9\xef\xc9\xcc\xa6\xad\x9a\x0f\x08\x11\x8e\x00\x41\x19\x98\xc5\xbc\x1c\xc6\xe5\x30\x2d\xcc\x3c\xad\x91\x0b\x75\x9f\xcc\xd0\x1c\x6e\x94\x4c\x09\x3e\x88\x93\x52\x42\x22\x31\xd5\xbb\x50\xa3\x26\x10\x6c\x9d\xb4\x97\xba\x56\x25\x41\x7f\x00\x70\xd5\x6a\x21\xcb\x87\x92\x32\x95\x18\xa3\xe3\x56\x5b\x77\xe5\x84\xdf\x88\x4e\x2e\xb2\x0d\xc8\x7b\xfa\xc0\x5d\xae\xbe\x47\x76\x5f\xee\xc3\xf1\x16\x47\x30\xf4\x9e\x95\x73\xed\x6f\x12\xa8\x12\xe0\x1d\xd4\x4a\x5b\x00\x67\xc1\xdf\xe8\xcd\xf7\xfe\x4f\x8a\xca\x33\x64\xf0\x1c\x26\xcf\x03\xe7\x58\x15\x45\xd0\xfc\xeb\x89\x57\xc1\xcf\x7a\x26\xea\xe1\x4f\x1f\xee\xb7\x80\x25\x2d\x26\xcb\x79\x6e\x61\x2f\x1c\xf3\xd8\x7c\x47\x44\x3f\x07\xd1\x3c\x7c\x83\x1c\x08\x7d\x0e\x2c\x5c\x93\xf4\xeb\x3b\x18\x04\x7b\x7f\x76\xd3\x5d\x4b\xd3\x48\x27\xed\x99\x6a\xdc\x99\x36\x67\xc3\xeb\xfe\x53\x38\x03\x91\x92\x2d\x57\x12\x15\x06\x93\x55\xc3\x6d\x68\x20\xe5\x0d\xe7\xca\xf6\x4a\x97\x37\xef\xe8\x8e\xcb\x5c\x16\x90\xcb\x8e\x87\xd4\xc1\x07\x5b\x23\xaf\x9c\xff\xb0\xec\xf1\xa1\x6c\x16\xf8\x40\x36\x0b\x68\x68\xb3\x59\x80\xbd\x21\x9b\x05\x5b\xc8\x66\x41\x36\x0b\x7c\xe0\x54\x15\x96\x6c\x16\xf8\x3d\x9a\xcd\x02\x6f\xc8\x5c\xf6\x0c\x8e\x87\xd4\xd3\x24\xe3\x17\x45\xad\x6e\x65\x23\xad\xbd\x34\xfa\x3a\x7a\x34\x83\x6e\x45\x70\x6a\xa0\x40\xeb\xe1\xb8\x0a\xdb\xd1\xca\x44\xa1\xea\xce\xc8\x1f\x2b\x23\xed\x4a\xd7\xc4\x6d\xc2\x7b\x0d\xa1\x62\x05\xb2\x6c\x70\xe2\xc1\xa4\x3d\x83\x00\x58\x96\x0c\x4c\xb1\x5c\x0b\x66\xd2\x54\x29\x96\xd5\x32\x69\x56\x1f\x68\xa9\xe0\x56\x4a\x80\xfe\x22\x88\x75\x82\x59\x26\x8c\xa3\xc1\x74\x25\x50\x4f\xe2\xea\x48\x4c\xfd\x28\xb0\x6e\x84\x5a\x1f\xc9\x4b\x68\xc9\x6a\x18\x48\xfc\xaa\x51\x4e\x89\xfa\x5c\xd6\xe2\xe1\x4a\x96\xba\xa1\x4e\xfe\x4c\x7f\x49\xb6\xd2\x28\x5d\x1d\xc9\x62\x6d\x57\x96\xd2\xda\xa3\xd1\x40\x40\xcb\xf3\x88\x74\x90\x2c\x3d\x41\xe9\x39\x77\x51\xe6\xd4\x5a\xea\xce\x1d\x85\x60\x00\x3e\x31\x7a\xf3\xa3\xcd\x39\xc5\xac\x12\x66\x24\x58\x0f\x05\x3e\x97\x00\xe7\x72\xfa\xc5\xe2\xac\xbb\x11\x6a\x17\x97\xc9\xb2\x8e\x37\xe8\x8e\x67\x73\x92\xd6\x19\xb7\x46\x3b\x5d\x6a\x72\x9a\x32\x88\x10\x2b\xb9\x78\x42\xe1\x14\x89\x97\x26\xa9\xd9\x48\x51\xa9\xec\x3d\xdb\x87\xec\x3d\x3b\xfc\x74\xf6\x9e\xbd\x04\xd9\x7b\x46\x80\xec\x3d\xa3\x3f\x98\xbd\x67\x07\x10\x66\xfb\x2f\x7b\xcf\x5e\x5e\x61\xf6\x9e\xcd\x6c\xb1\xd9\x7b\x76\x00\xb2\xf7\xcc\xe7\xf9\x39\x48\xcf\xb9\x8b\xb2\x13\xf7\x9e\x8d\x2d\x46\x48\x33\x25\x11\xae\xac\xd5\x5a\x51\xdc\x68\x45\xa0\x29\x0d\x30\xa5\x33\x9a\x4b\x48\x7b\xfa\x5f\x0a\x3c\x64\x65\xd9\x19\xe5\x1e\x3e\xea\xc6\xc9\x7b\x82\xb8\xc4\x28\x4e\xd4\xb5\xbe\xbb\x34\xea\x56\xd5\x72\x29\x3f\xd9\x52\xd4\x82\x3a\x70\x09\xaf\xc9\x2f\x45\x2b\xae\x55\xad\xe8\x27\xc9\x68\x00\x5e\x9d\xbc\xcb\xa6\x28\x2a\x43\xad\x7b\x29\x8e\xee\x2b\xe1\xaa\xa0\x47\x62\x27\x92\x01\x4a\xe3\xad\xd1\xe5\x57\xdd\x35\x44\xcd\x07\xf6\x21\x8b\xea\x5b\x53\x3f\x7c\xd7\xda\x7d\x56\xb5\xb4\x0f\xd6\x49\x62\xe7\x4a\xf4\x4b\x4d\xd7\x7c\xb0\xbf\x19\xdd\x11\x49\x6f\x4f\x03\xf8\xf7\xbf\x92\xa8\xda\xfd\x4a\xff\xd0\xcd\x66\x97\x12\xee\xcd\x4f\x2b\x89\x4d\xde\xd2\x6f\x8d\x95\x5f\x54\xd3\xdd\x7f\xeb\x3b\xb4\xa4\x1b\xa3\x27\x6f\x25\xdc\x30\x1c\xeb\x88\xaf\x29\x9d\x49\x02\x20\xec\x1f\x4d\x89\xb0\x23\x53\x1b\x0b\x21\x28\x8e\xef\x54\x53\xe9\x3b\x9b\x98\xde\x96\x6b\x2b\x3e\x1a\x59\xc9\xc6\x29\x51\x5f\xb5\x48\xe5\x26\xe3\x68\x9e\xa3\x4f\x3e\x85\x62\x2b\x90\x12\x63\x4e\xa6\x47\x3b\x61\x5c\xd7\xe6\xa8\xe3\x08\xef\x42\xb9\xcb\x51\xc7\xb7\xd1\xe5\xa8\xa3\x0f\xe4\xa8\x63\x8e\x3a\xbe\x01\x39\xea\xe8\xf3\xfc\x1c\xfc\xe6\x39\xea\xf8\x0c\x72\xd4\x31\xee\x62\x73\xd4\xf1\x00\xe4\xa8\xa3\xcf\xf3\x73\x90\x9e\x73\x17\x65\x27\x1e\x75\xb4\xae\x52\x84\x38\x0c\xe2\x99\xec\x51\x7c\x6b\x28\x93\x1f\x10\x34\x4e\x9a\xb5\x6a\xfa\xb8\xd2\x57\x69\xad\x58\x4a\xda\xb4\x14\x80\x25\x5e\x40\x19\xbf\xe5\xb1\x73\xe4\xf7\xd3\x36\xf2\x56\xd7\xdd\x5a\x9e\xcb\x5b\x45\x0a\x46\x27\xab\xb6\xa8\xfa\x95\x21\xa3\x70\x60\xa9\x97\xb0\x20\x00\xcb\xcf\xdf\xed\x09\xe9\xb1\x79\x4e\x52\x18\x08\xb0\x0f\x67\xcd\x91\xfe\xd6\x9b\x85\x25\x25\xbf\x01\xa3\xd1\xad\x58\x02\x71\xf3\xe3\xa0\xfb\x5d\x54\x11\x43\x88\xf4\xea\xb7\xdd\x75\xd2\x73\x7c\xc4\xf7\xe9\xbe\x25\xc7\x4c\x92\x4a\x93\x2d\x85\x9f\x80\x30\xb9\xd3\xe6\x46\x35\xcb\x73\x45\xd8\x72\xf2\x66\x1f\xe3\x2c\x5d\xd2\xe8\x04\xaa\xac\x24\x8f\x4b\x40\x84\x31\x35\x22\x82\x97\x77\x42\xd1\x10\xd0\xb3\xcc\x8d\xfe\x92\xbd\x8d\x10\x23\x02\x31\x05\x74\xfb\x11\x5b\x1e\x2f\x54\xc5\x63\x09\xe0\x79\xf3\xe2\x08\x78\x14\x81\xe9\xc5\x67\x44\x10\x58\x98\x39\x9d\xe3\xa0\xd8\x01\x1a\x39\x60\xc4\x0d\xd0\xa8\x01\x12\x33\xc0\xeb\x96\x01\x8f\x17\xe4\xef\xe2\x79\xbb\x58\xbe\xae\xa0\x9e\x2e\x2c\x4a\x90\x54\xf1\x23\x3a\xd5\x30\x15\x0e\xf1\x05\x1f\xc5\xdd\x91\x39\x82\xc4\x11\x73\x25\x51\xf2\x23\xc4\x11\x00\x59\xd5\x1d\x21\xab\xba\xbf\xa2\xca\xaa\xee\xeb\x90\x55\x5d\x6f\xc8\xaa\xee\xeb\xb8\xf2\xc5\xfe\x22\x64\x55\xd7\x63\x6d\x59\xd5\x1d\x17\x99\x39\xe2\x1d\xaa\xba\xa4\x9f\x93\x1b\xda\x53\x09\x9f\xa2\x13\x23\x4c\x05\xe8\xc2\x80\x5e\x04\x12\x28\xfd\xde\x24\x93\x07\x9a\xe6\x8e\x64\xbd\xd0\x99\x9c\xa8\x95\x23\x04\x40\x95\xa8\xd0\x51\x82\x5a\x38\x40\x69\xb8\xf6\x8d\x69\xde\x0c\xd1\x0b\x6a\xdc\xc9\xf3\x69\xc9\x5a\x36\xa2\x61\xa3\x89\x6b\x80\x66\x4d\xd5\xaa\xa1\x0d\xa7\xea\x0e\x64\xbd\x01\xd7\x19\x60\x7d\x21\x98\xae\x40\xd7\x9c\x81\x15\x53\xc9\x9d\xa4\x8a\x90\xc9\x95\x91\x2c\x9e\xe6\xaa\x81\x52\xc3\xd3\x2c\x0d\x4d\x04\x4f\xb3\x3a\xb2\xfd\x33\xdb\x5b\x3a\xcb\xac\x57\x61\x5e\xc2\x04\x4b\xd7\x4e\xc1\x0e\xa4\x4f\x69\x74\x25\xaf\x64\x2d\x4b\xa7\xbd\xf2\x96\xf0\xae\x45\x44\xe2\x21\x7d\x45\x6b\x94\x36\xca\x2f\x5f\x99\x7a\x04\xb4\xed\x1f\x57\xf2\xb1\x16\xd6\xfa\x16\xa3\x93\xb6\x86\xde\x82\x3a\xdb\xbb\xd9\xde\xcd\xf6\xae\x27\x64\x7b\x37\x24\xc6\x6c\xef\x0e\x90\xed\xdd\x6c\xef\xbe\x00\xd9\xde\xcd\xf6\x6e\xb6\x77\xb3\xcc\x7a\x11\xe6\x25\x4c\x4e\xc4\xde\x25\x35\x3f\xa6\x72\x0d\xad\xe1\x31\xaf\x01\x30\x52\xd0\x4b\x3d\x73\x6a\x63\xe3\xb9\x7f\x11\xe9\xe7\x1b\x85\xa1\xea\x6a\xff\x96\x72\xa4\xf5\x03\x8d\x91\xa9\xd4\xb8\xa0\x75\x2f\x45\x9a\x73\xd2\x45\x2b\xbd\xab\x6a\xc2\x75\x11\x7b\xa8\xd2\xeb\x41\xc9\x7d\x53\xd3\x7c\x3c\xd6\x25\x15\xd1\x29\xc8\x9d\x51\xa1\x2b\x98\xda\x0d\x15\x42\xd2\x3f\x14\x1b\x09\xb5\xeb\x69\x8a\x5b\xc1\x76\x6d\x5b\xcb\xb5\x6c\x9c\xa8\x7b\x4e\xf6\x3e\x7f\xa2\x6f\x05\x6b\x17\x8c\xa8\x7b\x54\x93\xde\x3e\xd8\xd2\xd5\xb1\xbe\x1b\xf3\x27\xd1\x7d\x49\xa0\x7a\x0b\xf8\x90\x30\x2e\x26\xfb\x8e\x88\x7e\x23\xaa\xcf\x08\xce\x7b\xf3\x27\x2c\xac\x7f\x30\x42\x30\xbc\x9e\xc1\xd0\x81\xf2\xfb\x04\x63\x74\x84\xf6\x06\x9e\x9b\x42\x2a\xcd\xad\x2a\xe5\x87\xb2\xd4\x5d\xe3\xa2\x68\xa5\x4e\xd7\xd2\x08\x6f\xda\x23\xc8\x35\x3a\x89\xca\xc5\x42\x96\x04\xdf\x00\x70\x5a\x37\x32\x6e\x07\xa5\xcd\x27\x0b\xcf\xc0\x2a\x8c\x64\x77\x66\xe4\xd6\x61\xe9\x2e\x58\xe2\x9d\x41\xde\x86\x68\xed\x2b\x3c\x5f\xec\xf5\x33\x23\xdb\x5a\x95\xe2\xea\x6d\xb7\x9d\x2f\xa7\xdc\xc8\x87\xcf\xea\xb0\x9e\x4b\x61\xbc\x4a\x2e\x44\x57\xbb\xaf\xba\xf2\x3a\xab\xb8\x91\x74\x6f\xe1\x12\x55\x0a\xc5\x16\x11\x6b\xcf\xbd\x1e\x00\xeb\xf3\x87\x30\x2c\x2d\x60\x45\xfe\x70\x6a\x1f\x9b\x1b\xe9\xa7\x3f\x9d\xf5\x0b\x9f\x56\x64\x6c\xe4\xfe\xe0\x05\xf3\xbf\x9f\x7d\x9d\x08\x56\x96\x46\xc6\xb8\xfb\xbd\x77\xc3\xc7\xcc\xf0\xc4\xeb\x43\x04\x07\x55\x7a\x8a\xe4\x7d\x93\xeb\x7d\x79\xcb\x8f\x9b\x1e\x95\xb5\x1f\x72\xdd\xd6\xc2\xbd\xb9\x63\xbe\x42\x69\x2d\x9d\xa8\x84\x13\x21\x25\xbe\x68\x1a\xed\xfc\x15\xbe\x39\x66\x7f\x79\xff\xd4\x7a\xd8\x38\x94\xbd\x2b\xeb\xce\x3a\x69\x2e\x2e\x83\xab\xe1\xf2\xde\x49\xd3\x88\xfa\xe2\x32\xf4\x05\x08\x1d\x83\x9f\xd0\x1b\x17\xfd\xc3\x88\xc5\x42\x95\xfe\x0d\x4a\x49\x6b\x5a\x49\x51\xbb\xd5\xc7\x95\x2c\x6f\xfe\xd0\x95\xbc\xf4\x0c\x1f\xc6\x55\x55\x6a\x2d\xaa\xff\x8a\x5a\x34\x65\x14\x72\xd8\x7f\xfd\x55\x1f\xbd\xfa\x2e\x9a\xa5\x1f\xe7\xcd\x83\x36\x5a\x6d\xfc\xa2\x48\x51\x75\x39\x9a\x87\x0c\x50\xe6\x1a\x02\x45\x0e\x90\x50\xa1\x9b\xe5\xba\xa8\x7a\xa0\x77\x84\x3b\xa2\x76\x67\xa5\xb5\x4a\x37\x1f\x16\x0b\xd5\x0c\x11\xbc\x85\x5a\xc6\x08\xe0\x95\xb5\x92\x8d\xf3\x13\x28\xc8\xfb\x0b\x38\xac\x5f\x30\x7a\x8e\xe3\xfe\xf9\x38\x6e\x35\xdf\x38\x4e\x78\x65\xda\xeb\x67\x76\x25\x4c\xf5\x43\xb7\xba\xd6\xcb\x37\xaf\x53\xdf\xd3\x2f\x7b\x7a\xbd\x92\xe6\xf6\x70\x68\x89\xa4\x0e\x0d\xef\xed\xef\xa7\x18\xdc\x20\xee\xec\xa7\x5a\x58\xa7\xca\xff\xd6\xba\xbc\xb9\x72\xda\x78\x4b\x73\x84\x33\x16\xf6\x47\x8a\x08\x5f\x2b\x8c\x53\xd4\x5e\xcb\x29\x79\x0f\xeb\x97\x4c\x8f\x8d\x17\xdb\x86\xdc\x17\xe7\xb3\x4b\xd3\x1c\x17\x16\x47\x5e\x15\x85\xf8\xa7\x33\xf2\x5c\xd9\x9b\x98\x14\x5d\x8a\x72\xa5\x9a\xa5\xaf\x7b\x6f\x04\x88\xac\x2b\x65\x6f\x92\x44\x77\x36\x88\x7e\x7e\xbf\x88\x8e\x27\x91\x38\xb8\x51\xb4\xc2\x18\x30\xb2\x9a\x86\xa1\xe9\x7c\x36\x92\x0d\xe9\x81\x9f\xdf\x2f\xa2\xf2\xa5\x8f\x9b\x7d\x04\x84\x2f\xd3\xc9\x57\x9a\xfb\xf0\x29\x2e\x22\x8d\x6d\xf4\x16\x99\x00\x13\x9d\xc6\x76\x9b\xe0\xff\xc8\xf8\x31\xb1\xe8\xac\x94\xed\x6a\x11\x35\xde\xbf\xd6\x8d\x72\x3a\x7a\x2d\x54\xb2\xaa\xbb\x44\x35\x35\xa9\x79\x93\x22\x6b\x0a\x98\x37\x7b\x54\xdf\x25\x29\x91\x1e\xad\x72\x4b\x38\xda\x03\x2a\xe8\x4a\x90\x62\x47\x97\x51\x23\xb7\x46\x93\x37\xaa\xa9\xfc\x3f\x7b\xc6\xe6\x53\x6a\xfe\xcc\x4c\xd3\xc3\xbb\x35\xd4\x06\x2f\xc7\x57\x11\xb5\x09\x33\x31\x0f\x63\x84\xb4\x5e\x01\xb2\x72\x90\xb4\xb2\x9a\x94\xb7\x31\x02\xa3\xb0\x9a\x96\xc7\x31\x02\x3e\xb7\xb1\x80\xcf\x6d\x80\xc4\x53\x9f\xd1\x3a\x70\xdf\xbc\x8f\xdd\x13\xde\xf9\x1f\x23\x24\xac\x02\xa7\x4a\x75\x68\xbb\x29\xc9\x27\x4f\x11\x11\xc7\x60\x92\x45\xa7\x55\x51\x85\xa6\x51\x1e\x1e\xed\x7d\x98\xb3\x1f\xa8\x0f\x25\x76\xd7\xb5\xb2\xab\xab\xac\x78\xec\x20\xb5\x2f\xfa\x83\x73\x46\x5d\x77\x8e\xb6\x8f\xbc\x42\xc8\x22\xe9\x9e\x02\x4e\xba\x9e\xd3\x62\x89\x89\x4a\xdf\x35\x77\xc2\x54\x1f\x2e\xbd\x9d\xba\x59\xc7\x82\x1f\xe0\xe8\x58\x0b\x25\xeb\x8a\x28\x97\xb8\x38\x37\x20\x5a\xf5\xa7\x34\x16\x98\x4f\x3a\x00\x43\xcd\x2b\xc6\xcf\x46\xc6\x79\x06\xc0\xce\x99\xd4\xb0\x5d\x37\xa8\xf6\x41\x63\x17\xb2\x5e\x7c\x00\xc6\x86\x04\x9f\x27\x62\xa6\x52\x37\x4e\xa8\x86\x5e\x1d\xb5\x03\x26\x3f\x55\xea\x56\x59\x4a\x91\x4c\x40\xdc\xe3\xee\x1f\x19\x2b\x8f\xcb\x4e\xc7\xc9\xa8\x01\x37\x5f\x73\x8c\x8c\x48\xae\x5b\xf7\x40\x18\xef\x0b\x45\x69\x64\xa5\xba\x75\xfc\x00\x80\xfa\x47\x7e\x51\x6b\x15\xbb\xbf\x0f\x79\x8f\x17\x51\x1b\x4f\x26\xb2\xdd\xea\x2e\x27\xf3\x6c\x9e\x12\x66\x29\xdd\x5f\x7f\xfd\x71\x42\x31\xc7\xbb\x3b\x45\xcb\x92\x9c\xf3\xe7\xd0\xb9\xb3\x96\xf7\x7f\xf6\x66\x71\x76\xe4\xf8\x3e\xa4\x69\xa5\xfc\xc5\x91\x79\x0f\x72\x04\x6e\x0f\xde\xaf\xd3\x66\x51\xeb\xf2\x26\x6e\x40\xb9\x12\x4e\xd8\x44\xc9\x4b\x8f\xb8\x7e\xfe\x8c\x1e\xe1\x24\xef\xf4\xb2\x94\x97\xd2\x58\x65\x9d\x6c\x5c\xec\x8c\xd1\x9c\x03\xbd\x5d\x62\x95\xa6\x57\xc9\x6c\x33\x33\x87\x0d\x88\x46\xd5\xca\x7d\x97\xad\x8e\x2a\x3f\x94\xe9\xa7\x1c\x00\x7b\x4b\x3e\xc4\x56\x5b\x95\x08\xd5\xad\xa2\x3a\x42\x93\xe4\x61\xec\xf6\x20\x1a\xc9\x0c\xe5\xb7\x71\xb3\x26\x65\x53\xb5\x5a\x35\xfe\x2d\x30\x0b\x5c\x06\x9e\x50\x36\x23\x9d\x5e\xb6\x1b\xed\x2f\x90\xfc\x3d\x4b\x64\xda\x5a\x69\xeb\x28\x1e\x7e\x84\xb4\x92\x1c\xb8\x6f\x71\x1b\x03\x09\x70\x95\x44\x3c\x39\x65\x23\xa7\x19\x94\x2b\xd1\x7e\xe8\xdc\xea\x5c\xd9\x52\xdf\x4a\x44\xc6\x53\xed\x9e\x11\xe5\xd5\x50\x78\x1a\x1f\x61\x22\xb5\x6f\xe8\x4f\xef\x74\x8a\xc6\x6c\x45\xa1\xfe\x8e\x7d\x4b\x3e\x52\xdf\x45\xb3\xb9\x96\x04\x2d\xa8\x70\x7a\x8e\xc6\x56\x1b\x27\xfc\x7b\x64\x16\x33\x77\x96\x65\x47\xc7\x1e\xa4\xf4\x2f\x0d\x6e\xe4\xcb\x9e\x9a\x66\x77\x95\xa9\xbf\x7d\x4f\xf5\x6c\xc3\xad\xde\xbf\xdd\xff\xe8\x58\x57\x65\x13\x57\x75\x3e\x29\x85\x76\x68\xe8\x34\xc3\x42\x11\x82\x2e\x75\xf6\xf8\x0d\xb1\xe8\xa9\xdd\xba\xa5\x86\x18\xc1\xc7\x5a\x28\xef\x50\x26\xa4\x8a\x6d\x10\xbc\x73\xb7\xcc\x76\x0f\xa2\x9d\xea\x4a\x3b\xdd\x9c\x9e\xcb\xb1\x9a\x61\xf1\xca\x66\x51\xd1\xce\x51\x1b\x77\xa7\x4d\x82\xf8\xdd\xc9\x55\x7e\xbd\xdb\x62\xa7\xd6\xe8\xcd\x6f\xfd\x97\x74\xb2\x89\xb8\x84\xa1\x41\x23\x24\x4d\xc5\x25\x97\xa5\x85\x40\x5a\x60\x5f\x19\xe0\x51\xee\xaa\x07\x80\x6a\xc4\x76\xc0\x4c\x3d\x1c\x00\xcb\x8f\xdd\x01\x2f\x53\x76\x07\x9c\x9c\xd9\x1d\x60\xd9\xb3\xbf\xae\x82\xb5\xa5\x78\x5a\xe5\x00\xf4\x9a\xb3\xfd\x67\xc9\xe9\x8e\x3b\x60\x24\x59\xef\xbf\x80\xe6\xd3\xd8\x01\x36\x8a\xb6\xe0\x1f\x1a\x52\xaf\xf6\x2b\x72\xea\x8d\xfe\xf4\x69\x68\xcf\x81\x32\x95\x1d\xbc\x5f\x99\x8b\xd7\x8c\x84\x5d\x47\x11\xa0\x8e\x64\x07\x41\xae\x82\x82\x5f\x5b\x12\x7c\x45\x5c\x69\x5a\x30\x2b\x4f\x76\xc0\x16\x8f\x45\xbe\x6d\x5f\x5c\x05\x93\x46\xf8\xf5\x2b\x3b\x08\xc5\xd8\x01\x6a\x5a\x76\x10\x8c\xb7\x59\x75\x2e\x11\xd6\xc3\xab\x7d\x09\xbe\xa0\x30\xa2\x06\xae\x8c\xd9\x41\x00\x49\xc3\x57\x42\x8f\x55\x91\x64\x20\x1f\xa2\x5e\x59\x99\xf2\x87\x6c\xc0\xee\xe0\x64\xae\xd4\x6c\xc0\x66\x03\x96\xf8\x34\x28\x6e\xf7\xc7\x09\xfe\xd0\x37\x12\x30\x83\x98\x85\xfc\x5d\xa5\x64\x33\x49\xf5\x6d\x51\xc8\xfb\x56\x81\x73\xf3\xf6\x01\x9b\xa1\xb7\x0f\x5c\xc9\x85\xcb\xac\xc9\xea\x97\x21\x29\x03\xd3\x7a\xb2\x92\x62\xa0\x17\xed\x10\x57\x88\x15\xc0\xf9\xbb\xd3\xd7\x0f\x6f\x4f\x9f\xda\x07\x68\x8e\x2c\x65\x96\x7b\x31\xff\x60\x9f\x91\x4b\x65\x5d\x82\xd4\x7d\x27\x1b\xd1\xc4\x2e\xc0\x4e\xd2\xde\x74\x8c\x90\xce\x2e\x3e\x3a\x9e\x25\x31\xa0\x1a\x8b\x1b\xcd\x75\xd4\x40\x6a\xaa\xac\xdd\xb5\x58\x26\xe8\x83\x2f\x1f\x36\xbf\x8f\x8e\xe7\x04\xdb\x62\x6b\x1d\x3b\x4f\x32\xe7\xc2\xee\x41\xca\x5c\xd8\x59\xf6\xaa\xee\x05\x82\xf7\xaf\x63\x77\xb6\xb6\xa5\xa8\xe5\xc5\xb7\x13\x10\xb4\x4b\xe1\xe4\x9d\x88\xaf\x88\xb4\x46\x3b\x59\x6e\x0c\xa1\x73\xbd\x16\x2a\x7e\x95\x44\x16\x1e\x5b\x48\x29\x3c\xac\xad\x3f\x35\xe2\xba\xa6\x99\x6c\xe0\xc6\x3b\x6d\xc4\x52\x26\x19\x35\xf4\x88\xeb\x32\xc5\xbd\x67\x1f\xac\x93\xf1\xfb\x33\x0d\x7a\xe8\x2c\xa7\xa7\x3c\x4a\x25\x7f\x0b\x77\x64\x41\xff\x27\xfa\x3d\x8e\x76\x3f\x90\xa2\x0c\x27\x9b\xd0\x38\xef\xce\xa2\xb9\x7b\xfb\xdb\x90\xbb\xb7\x8f\x90\xcc\xb7\x97\xae\xb1\x7a\xc2\x31\x5d\x74\xe9\x39\xdc\xb5\x3a\x6a\xe5\xd8\xc9\x15\x10\x64\x35\x74\x0f\x92\xe9\x36\xfb\xa8\x6c\x1b\xbf\x1e\x9b\xbc\x1b\xb7\xb6\x5d\x49\x23\x4f\xa6\x22\x67\xab\x88\xd7\xaa\x7c\x88\x5e\x2e\xf3\x0b\xbe\x84\x04\x45\xcd\xcf\x4c\x58\x0b\x44\x48\xb2\x24\x92\x2b\xe9\xe7\xad\xae\x7e\xc8\x75\x5b\x0b\xbf\xd8\x13\x79\x30\xba\x6e\x9c\xd1\x75\x1d\xb7\xe1\x9c\x68\x1a\xed\xc4\x49\x77\x6f\x24\x3f\xb2\x96\x4e\x54\xc2\x89\xbc\xef\xbf\x3e\x16\x77\xdf\x6d\x2b\xa3\x76\x46\x16\x8b\x85\x6a\x94\x23\xe9\x42\xb0\x82\xa2\x2b\xf9\x01\xc0\xc7\xc1\x39\x3c\x2b\x17\xd2\x18\x59\x9d\x77\x9b\x13\xbe\x2a\x57\xb2\xea\x6a\xd5\x2c\x2f\x96\x8d\xde\xfe\xf9\xd3\xbd\x2c\x3b\x6a\x2f\xc2\x11\x18\x19\x81\xfc\x7c\xc0\xe1\xfb\xf0\x7c\x9a\x30\xab\xd8\xc0\x5a\xb8\x72\xf5\xe9\xbe\x35\x43\xc3\x22\x66\x36\x37\x2b\xcd\x72\x84\x50\xa9\xe5\x05\x3f\xed\x72\x84\x60\x89\xdc\x45\x6f\x9c\x4a\x23\x1c\x3f\xbb\x3c\xf8\xc2\x6e\x45\xdd\x85\xd8\xf4\x40\x74\x30\x40\xd0\x2f\xe4\x26\x2e\xee\x43\x88\x24\xf8\x82\x99\x04\xba\x7b\xc7\x48\x54\xcc\x17\x05\x29\xdd\x29\x82\xed\x73\x2f\x9d\xfa\x72\x95\x2c\x98\x5e\x84\x2c\x98\x68\x90\x05\x93\x3f\x64\xc1\x14\x71\x31\x77\x52\x2d\x57\x40\x05\xcd\x08\x61\x6a\x31\xf8\x95\x18\x3c\x62\x3b\xdb\xd3\x84\xc1\x17\x0c\x1b\x09\x3d\xcc\x3c\x46\x0e\x25\x8d\xdb\x16\xcf\xbe\xe1\x5e\x56\x1b\xd3\xef\x4a\xd6\x7d\x1f\xee\x1f\xd2\xe0\x52\x93\x29\x72\xb3\x99\xe3\x01\x59\x9b\x20\x40\xd6\x26\x28\x90\xb5\x89\xc3\x2f\xca\x66\xce\x6b\x90\x05\x13\x01\xb2\x60\xa2\x40\x16\x4c\x87\x5f\x34\xb9\x99\xc3\x5b\x06\xe7\x88\xcf\x9e\x6b\xb0\xb0\x8e\x0f\x6d\x01\xfc\x68\xab\xab\x1c\x73\x79\xbe\x3a\x76\xcc\x65\xb7\xad\x1b\x6a\x98\xda\x22\xa9\xc5\xb5\xac\x47\xf2\xe4\xc9\xb0\x70\x17\x76\x58\x33\xa9\x08\x79\x13\x85\xd4\x4a\x8a\x70\x9a\x49\x11\xfe\x8a\x0c\xab\xa1\x14\x31\x16\x18\x4e\x53\x29\xc2\x6a\x2b\x45\x8c\xaf\x0d\xa9\xb5\x14\x01\x35\x97\x22\x90\xf6\x52\x84\xd4\x60\x8a\x90\x5a\x4c\x11\x74\xef\x7b\xe9\xf6\x65\x23\x77\x03\x50\x1b\x3f\x87\xe5\x65\x08\x4a\xbd\x81\xd5\x49\xf6\x8b\x9a\x31\xbf\x73\x0e\x76\x6e\xb0\x9d\x0e\x43\xa1\x4e\xb7\xba\xd6\xcb\x87\xdf\xb9\x17\x53\xa0\x5e\x81\x5c\x19\x75\xb6\xff\x45\x39\xd4\x32\x83\x50\xcb\x53\x05\x38\xc7\x5b\x4e\xc7\xb6\x09\x64\x4c\xe4\x58\x8b\x07\x64\x97\x26\x01\xb2\x4b\x93\x02\xd9\xa5\x79\xf8\x45\x41\x62\x2d\x21\x8c\x80\x18\x06\x40\x60\x95\x94\xb9\xe9\x01\x5e\x12\x42\xe1\x67\x73\x7e\x90\x5d\xe5\x53\x5f\x10\x05\x9f\xfd\x2d\x5c\x2d\x92\xab\xd4\x4f\xa6\x04\xb2\xfc\xf1\x8d\x53\xd9\x27\xff\x7c\x75\xd9\x27\x1f\x77\x41\x45\xf6\xc9\x83\x90\x7d\xf2\x3c\xc8\x3e\x79\x1c\xb2\x4f\xde\x1f\xb2\x4f\x7e\xea\x17\x65\x9f\xfc\x1b\x6f\xc9\x3e\xf9\x17\x20\xfb\xe4\xb7\x90\x7d\xf2\xd9\x27\xff\x0a\x64\x9f\xfc\xdb\x90\x7d\xf2\x13\x2d\x2c\xfb\xe4\x29\x90\x7d\xf2\x87\x5f\x94\x7d\xf2\xfe\x2f\xca\x3e\xf9\x1e\xb2\x4f\x7e\x0f\xb2\x4f\x1e\x69\x09\x4a\x7c\x4c\x98\xe5\x09\x8d\x8e\x90\xcd\x6d\xe4\x8f\xc1\xf5\x33\x6c\xbc\x1b\x83\x8b\x7a\x8d\x26\x3d\xc6\xcf\x46\x03\x21\x0b\x9e\xde\x5b\xea\x66\xa1\x96\x5f\x45\xfb\xbb\x7c\x80\x47\xf8\xf2\x55\x6f\x96\xc2\x1d\x40\xf6\xe3\x13\x04\x03\x2d\x80\x37\x49\xb0\x80\xfb\xd3\xee\x03\xf7\xda\x40\x15\x52\xe6\x75\xc1\x9b\x2b\xcf\xa7\xdd\x10\xb3\xe4\x03\x50\x50\x80\xf9\xf1\x93\x2b\x1e\xbc\x69\xf1\x4c\x3a\x0a\x33\xce\x9c\x4f\x4f\x81\x46\x98\x07\x20\x29\xf6\xd8\xf2\x00\x6b\xe0\x8f\x2a\x9f\x9c\xaa\x59\x83\xc9\x99\x44\x3d\xf4\x1f\xcf\x97\x7b\xbe\xdc\x8f\xf1\x72\x87\x1f\x46\xc7\x56\x6c\x48\x05\x30\xd1\x92\x0c\xa1\xe8\x87\xad\x5d\x76\x75\x7d\xd5\xf3\xf4\x7c\x47\xb8\x24\xb6\xd7\x52\x1e\x41\xa3\xdc\xc7\xf1\x7a\x9e\xef\x01\x50\x5d\x13\x03\xc0\x3e\x38\x96\x84\xc4\x9d\x3d\xa5\x5e\xaf\x45\x03\x08\xb4\x63\xfb\x50\xa2\x6f\x66\x00\xf8\x23\xd9\x8d\xde\x18\xb7\x2d\xfb\xae\x05\x3d\x37\x21\xb1\x63\x5e\x9c\x01\x42\xc4\x30\x83\x78\x74\xc2\x2d\xa7\x08\x13\x4e\x0d\x16\x35\xe1\x29\x83\x81\x17\xc3\x57\x0c\xf7\x17\xc4\x51\x0f\x07\x08\x11\x9c\xe4\x06\x26\x83\x84\xb5\x78\x3e\xa1\x01\x42\x51\x7f\x08\xff\xd0\x00\xc1\xe8\x2e\x80\xaf\x28\xe8\x8a\xc2\xd0\x1d\xcf\x7b\x34\x40\x10\xea\x0b\xe3\x49\x1a\x20\x14\x15\x06\xf2\x2a\x0d\x10\x8c\x10\xd9\x1e\xa6\xc0\xeb\xe1\x7b\x9b\x82\x2e\x28\x0c\x5f\xb0\xfc\x4f\x03\x04\x61\x0b\xbe\x2f\x6a\x80\xac\x96\x44\x5e\x4c\x56\x4b\x9e\x43\xb0\xe6\x85\x8c\xf8\x04\xab\x7b\x21\xd5\xb3\x35\x40\x00\xf7\x1d\x68\xf2\x62\x76\xd4\x64\x66\xef\xd6\xec\x62\x08\xb7\x10\x82\x8d\x2b\x48\x82\x08\x91\x10\x02\x24\x84\xf0\x60\x33\x6d\x6b\xe4\x42\xdd\x4f\xe6\x50\x80\xa6\xc7\xee\x43\xa6\xa8\x67\x0b\x99\x94\xa2\x26\x12\xa7\x7d\xe8\x20\x69\x42\xd3\x36\x58\x31\x8c\x68\x4d\x8a\xbb\x56\x0b\x59\x3e\x94\x35\xf0\xc5\x3c\x7e\x69\xb5\x75\x57\x4e\x18\xb0\x10\x89\xcf\xac\xf2\xde\x7f\x56\x64\x0c\xfc\x05\xc7\x2d\xbf\x0f\xa7\x57\xfc\x17\x40\x7f\x5c\x39\xd7\xfe\x26\x19\x55\x6e\x61\x0e\x78\xa5\x2d\x63\x0d\x45\xb8\x83\xd9\xec\xc7\xff\xa4\xa8\x88\xa1\xb8\xe7\x30\xbb\xfa\xa3\x10\xd6\x60\x11\xa5\xce\x67\x66\xab\x0a\x57\x4d\x03\xda\x47\x4f\x5f\xd2\x6f\x51\x10\xa9\x35\x9b\x5a\x9a\x96\xed\x25\x0e\x74\xdc\xad\x46\xef\xd5\x11\x44\xf3\xf0\x8d\xe5\x78\xea\x6b\x23\xd8\x35\xbe\xbf\xbe\x2b\x00\x23\xdc\x9f\xdd\x74\xd7\xd2\x34\xd2\x49\x7b\xa6\x1a\x77\xa6\xcd\xd9\xf0\xda\xff\x14\xce\xb0\x48\xd2\x96\x2b\xc9\x15\x46\xb3\xa9\x56\xdf\xd0\xd0\x94\x37\xb8\x2b\xdb\x2b\x5d\xde\xe4\x3b\x7c\x0b\x99\xab\x5f\x87\x68\x5c\x7d\xfc\xac\xc4\x7c\x41\x6b\xe4\x95\xd3\x6d\x36\xd3\xb2\x99\xf6\xe2\x3b\xb2\x99\x56\x64\x33\xed\x30\x64\x33\xcd\x13\xb2\x99\x76\xe8\x45\xd9\x4c\xdb\x42\x56\xe8\x00\xc8\x66\xda\x08\xd9\x4c\xdb\x87\xcc\xd5\x6f\xbf\x6b\xce\x5c\x7d\xfc\xac\x34\x4d\xf1\x57\x51\xd4\xea\x56\x36\xd2\xda\x4b\xa3\xaf\x93\x47\x01\x71\xeb\x2e\x44\xed\x30\xd3\xaa\x3b\x8d\x46\x3c\xdc\x8e\x02\x42\xd5\x9d\x91\x3f\x56\x46\xda\x95\xae\xc1\xed\xe4\xf7\x94\xe4\x8a\x3b\x96\x25\xca\x27\x46\xde\xed\x15\x80\x90\x82\x58\x9e\x6c\x8e\x08\x65\x71\xce\x2a\x45\x34\x88\x95\x39\xab\x2c\x69\xa6\x65\xc9\xb7\x2a\x03\xf6\x73\xe3\x58\x93\x3c\x4b\x32\xc0\x91\xf2\x74\x4d\xa6\x9e\x19\x4a\xc7\x0c\xa4\x5f\x46\xd2\x2d\xb9\xd6\xe2\xe4\x2d\x35\x60\xb5\x96\xc9\x64\xaa\x51\x4e\x89\xfa\x5c\xd6\xe2\xe1\x4a\x96\xba\xa9\x40\xa1\x3e\xbd\x72\xd0\x4a\xa3\x74\x75\xe4\x1f\x61\xbb\xb2\x94\xd6\x1e\xbd\xa6\xc6\xf4\x38\x9c\x80\xae\x96\xa5\xfe\x0e\xa2\x48\xfd\x63\x15\xb9\x4e\xad\xa5\xee\xdc\x51\x0b\x2a\xc6\x16\x24\x6f\x7e\xb9\x39\xe7\x94\xdd\x43\x02\x14\xde\x0c\x85\xad\x97\x0c\x09\x12\x62\xfe\x03\x5f\x84\x6c\x84\xf0\xc5\xe5\x64\xd5\x26\x1b\xf4\xc7\xbf\x89\x93\xf6\x1f\x69\x8d\x76\xba\xd4\x70\x99\x0a\x73\x01\xbc\x12\xc1\x27\x9c\x84\x48\xea\x69\x8a\x5b\x8c\x14\x95\xca\xde\x5e\x04\xb2\xb7\x37\x7b\x7b\x07\x38\x01\x0b\x22\x7b\x7b\x7f\x85\xec\xed\x7d\x05\xb2\xb7\x77\x84\xec\xed\x3d\x75\xbb\x3f\x7b\x7b\xb3\xb7\x37\x7b\x7b\xf7\x60\xfa\xef\xc8\xde\xde\x2c\xf5\x77\x90\xbd\xbd\xfb\x8f\xbf\x6f\x6f\xef\xd8\xaa\x0d\xf8\x72\x9e\x54\xa8\xd5\x5a\x21\x6e\xdf\x22\xf0\x94\x3c\x36\x47\x05\x68\xb2\x25\x6d\xde\x09\xc6\xc3\x56\x96\x9d\x51\xee\xe1\xa3\x6e\x9c\xbc\x07\xc4\x3c\x8f\x92\x45\x5d\xeb\xbb\x4b\xa3\x6e\x55\x2d\x97\xf2\x93\x2d\x45\x2d\xd0\x81\xbf\xfc\x9e\x41\xa5\x68\xc5\xb5\xaa\x15\x4e\x09\x01\x06\x14\x55\xef\xde\x45\x58\x14\x95\x41\xeb\x3d\x8b\x93\xd9\x05\x76\xd5\xec\x23\x53\x81\xe4\xc4\xe5\xa5\xd6\xe8\xf2\xab\xee\x1a\x50\x73\x64\xc7\x56\x44\xf5\xad\xa9\x1f\xbe\x6b\xed\x3e\xab\x5a\xda\x07\xeb\x24\xd8\xe9\x9d\xbb\x13\xa6\x6b\x3e\xd8\xdf\x8c\xee\x40\x92\xde\xd3\x90\xfe\xfd\xaf\x49\x4c\xa0\xfe\x0b\xfe\xd0\xcd\x66\x37\x27\xdc\xc3\x9f\x56\x82\xcd\x87\xa7\xdf\x42\x2b\xbf\xa8\xa6\xbb\xff\xd6\x77\xc6\x9b\x6e\x2c\xbd\xbc\x95\xec\xc1\x46\xbc\x09\x61\x1a\xe9\xf4\x16\x70\x01\xfd\x2b\xa6\x5c\x40\x07\x53\x71\x90\x05\x30\xaf\x95\x3b\xd5\x54\xfa\xce\x4e\x4c\xc7\xcb\xb5\x15\x1f\x8d\xac\x64\xe3\x94\xa8\xaf\x5a\x4e\x87\x86\x00\x47\xfa\x7c\x39\x93\x4f\x03\xdc\x0a\xcc\x89\x57\x32\x99\x5d\xe3\x84\x71\x5d\x9b\xb3\x0c\xa8\x90\x95\xe7\x9c\x65\x30\xc0\x09\x78\xae\x73\x96\xc1\xaf\x90\xb3\x0c\x5e\x81\x9c\x65\x30\x42\xce\x32\x38\xf5\x78\x53\xce\x32\xc8\x59\x06\x39\xcb\x60\x0f\xa6\xff\x8e\x9c\x65\x90\xa5\xfe\x0e\x72\x96\xc1\xfe\xe3\xef\x3b\xcb\xc0\xba\x4a\x01\xf1\x50\x8e\xc7\xbd\x47\xf9\xad\x41\x26\xeb\x71\xd0\x3a\x69\xd6\xaa\xe9\xe3\xbf\x5f\xa5\xb5\x62\x29\xb1\xa9\x97\x0c\x16\x7c\x61\x09\xe9\x47\xa2\x38\x07\xe3\xc3\x36\xfe\x56\xd7\xdd\x5a\x9e\xcb\x5b\x05\x25\xb3\x4c\x56\x4d\x58\xf5\x2b\xe6\x8c\x46\x65\x4b\xeb\x09\x0b\xd8\x78\xf5\x63\xbb\xbd\x83\x1e\x3f\xae\x09\x75\x03\x81\xf7\xe1\xe8\x63\xa2\xef\xf5\x66\xc1\x93\x92\xf7\xb0\x02\xa3\x5b\xb1\x64\xe4\xe5\x1c\x37\x9f\xed\xb2\x09\x78\x0b\xe0\xcc\x32\xb3\xdd\xf5\xa4\x74\xf0\x88\xff\xd3\x7d\x0b\xc7\x2e\x27\x95\x76\x5b\x4e\x7a\x07\xc2\xee\x4e\x9b\x1b\xd5\x2c\xcf\x15\x70\x54\xf0\x21\x61\xc7\x03\x6c\x2d\xb8\xa9\xc8\x76\x42\xa3\xe9\x50\x99\x0f\x8f\xa3\xe3\x5c\x32\x68\xa4\x92\xdf\x06\x82\x15\xa5\x64\x46\x64\x42\x65\x91\xc0\x5e\x76\x96\x60\x60\xc4\xf4\xb8\xc7\xc6\xf1\x11\xf1\x1b\x5e\xf0\x63\x79\x4c\xba\x09\x13\xc7\xe3\x47\xf1\x02\x45\xcd\x02\x44\xf0\x82\xac\x24\x44\xe7\x64\x56\xec\x8e\x1b\xb9\x0b\x10\xb7\xe3\x46\xed\x38\x31\x3b\x7e\x1f\x15\x86\xe7\x96\xe5\xb7\x0d\xe3\xb5\x0d\xe2\xb3\x8d\xe2\xb1\xe5\x45\xe9\x26\x55\xb8\x41\x67\x31\x4f\x65\xe6\xc4\x50\x8e\xfa\x6e\xcc\x1c\x18\x85\x03\x8f\x8d\x05\xe0\x47\xc1\x11\x6b\xd9\xf4\xa0\x42\x36\x3d\x8e\x51\xbc\x66\xd3\x63\x84\x6c\x7a\xfc\x02\xd9\xf4\xc8\xa6\xc7\xe9\x29\x3e\xd9\xf4\xa0\x3e\x9c\x4d\x0f\x00\x32\x07\xbe\x0a\xc7\xc6\x02\xac\xb0\x0c\xf1\x31\x78\x60\x18\xca\x68\x88\xad\xc2\x61\x6a\x86\x8d\xc2\xd0\x33\x99\x8c\x80\xeb\x11\x30\xd9\x71\xcb\xb4\x38\x59\x81\xb8\xf0\x01\xad\x28\x0e\x41\xa1\x37\x04\x8b\x24\x98\x56\x13\x83\x92\xf9\xd6\x12\xcf\x52\x0a\x70\xa5\x30\x2d\xa4\xc9\xeb\x33\x60\xab\x88\x63\x11\x71\x13\x8d\x19\x96\x10\x6a\x05\xb1\x0e\x0a\xd5\xbd\x60\xbd\x8b\xaf\x73\xb1\xf5\xad\xe0\xba\x16\x6e\xe9\x30\xbe\x04\x65\x2f\x48\xb5\x83\xd9\x22\x40\xb1\xd3\x34\x57\x2c\xab\xb4\x69\x9a\x25\x73\x0b\x99\xa6\x59\x35\x6c\xf7\x1e\x9d\x36\x93\x65\x2d\x5b\xd6\x1e\x87\xd0\xe3\x95\x1b\x4d\xc1\x86\xd0\xa7\x36\xba\x92\x57\xb2\x96\xa5\xd3\xa4\x3c\x51\x7e\xd7\x4c\x90\x28\xa1\xaf\x6c\x8d\xd2\x46\xd1\xea\x69\xd0\x23\xc4\x8e\x6f\x5c\xe1\xc7\x5a\x58\x4b\x6d\xd6\x03\x6d\x25\x3e\x82\x27\xfb\x4f\xde\x82\xec\x3f\xa1\x2f\x3a\xfb\x4f\xde\x40\x9a\xfd\x27\xd9\x7f\x02\x3c\x9a\xfd\x27\xde\x48\xb3\x4e\x9f\xfd\x27\x87\x21\xfb\x4f\x8e\x60\xc9\xd9\x7f\xe2\x0d\xd9\x7f\x42\x7b\xc3\x5c\x64\xed\x71\x08\xbd\x77\xe2\x3f\x81\x86\xbf\xa0\x5c\x8b\x0d\x7c\x09\x33\xe0\x84\xd3\xc8\x04\xa5\x21\x74\xb0\xcb\xb1\x7e\x31\xf4\xd8\x46\xf1\xaa\xba\x9a\xde\xe2\x19\xfa\x3e\xc6\xa0\x18\x94\xea\x17\xd8\xd4\x04\x4e\xb3\x7f\xfc\xca\xc0\xa7\x3c\x4c\xb8\x5e\x70\xa6\x03\xde\xcf\x02\x9e\xe3\x30\xcd\x26\xf1\xa6\x36\x70\x74\x34\x78\x52\x03\x4b\x65\x41\xa7\x33\xb0\x90\xf6\x0f\xa7\x46\x8a\x4e\x61\x98\xe2\x36\xb4\x5d\xdb\xd6\x72\x2d\x1b\x27\xea\x5e\xc2\x90\xe9\x09\xf4\x05\xf2\xc6\xa6\x70\xd4\x6f\xd4\x95\x64\x1f\x6c\xe9\xea\x54\xfb\xc3\xf3\x93\xe2\x3e\x52\xa6\x59\xc2\xf0\x8d\xf2\xa4\x0b\xec\x13\x05\xfd\xa1\xa8\x2f\x94\x9d\x07\x4d\x27\x5c\xde\x5c\x15\x0e\x21\x86\x99\xa5\xc2\x22\x8c\x70\xf3\x53\x78\xf4\xc9\x9d\x99\x72\x2c\x86\x83\x34\xb7\xaa\x94\x1f\xca\x52\x77\x8d\x4b\x62\x3d\x38\x5d\x4b\x23\xc8\xb4\x0d\xc8\x65\x9c\x15\xe4\x62\x21\x4b\xc0\x47\xc5\x38\xf5\x1b\x99\xb6\xb3\xe8\x66\x6b\x04\x31\xe1\x83\x8d\x74\x77\xf6\x70\x0b\xdf\xe9\x14\x11\xf0\xae\x84\xb7\x2b\x59\x7b\x33\x22\x22\xd2\xcf\x5b\x23\x17\xea\xde\x67\xd7\x48\xfb\x64\x64\x5b\xab\x52\x78\xd1\x0f\xd5\x8f\x48\xa3\x11\xeb\xb4\x11\x4b\x2f\xba\xa0\xca\x23\xd1\x87\x31\xbe\xea\xca\x5f\x80\x11\xa5\x24\x40\x9b\x54\xf2\xaa\x84\x13\x57\xbd\x7b\xd4\x77\x59\x88\xd8\x16\xad\x22\x3b\x5c\x20\xc6\xbc\x51\xb4\x64\x22\x08\x09\xd5\x1c\x00\x90\x50\x15\xf0\xb3\xfe\xcb\xbd\x7f\x4c\xd0\xd1\xc9\x62\x8e\xec\x6e\x47\x08\x8a\xee\x66\x3f\xae\x6c\x48\xc4\xad\x7e\x4c\x5f\x48\x7e\xc4\x12\x13\x60\x11\xa2\x5a\x0b\x57\xf6\x8d\x73\xa5\xb5\xb3\xd6\x7f\xdf\x85\x32\xda\xeb\x73\x29\x7b\x80\xf3\x5d\xa3\x80\x37\x01\xed\xc6\x7b\x23\x69\x78\xce\xb6\x87\x38\x4f\x25\xf7\x91\xfb\xbe\x88\x6b\x49\x73\x0a\x9e\xb6\xd4\x1b\xb4\x57\x72\xc6\x39\xf9\x93\xc6\xb6\xfb\x55\x6c\x14\x11\xbf\x82\xb0\xbb\xbe\x5c\x77\xb6\xb5\x64\x0e\xfc\xd0\x1b\xf7\x5a\x37\x4b\x7d\x90\x40\x29\x57\x43\xa9\x9b\x85\x5a\xfa\xeb\xf0\x64\x33\xe7\xce\x7e\xaa\x85\x75\xaa\xfc\x6f\xad\xcb\x9b\x2b\xa7\x4d\x54\x5b\x61\x61\x7f\x10\xc3\x4c\x10\x03\xb7\xc2\x38\x45\x1d\x94\x90\xb6\xe0\x04\x19\x66\x80\x05\x7c\x07\xde\xbc\x38\x9f\x9d\x55\x33\x2e\x2c\x96\x80\x15\xff\x74\x46\x9e\x2b\x7b\x13\x93\xa2\x4b\x51\xae\x54\xb3\xa4\x48\xd7\x02\x25\xeb\x4a\xd9\x9b\x24\x7e\xe2\x0d\xa2\x9f\xdf\x2f\xa2\xe3\x49\x24\x0e\x92\x38\x0e\x52\x31\x34\x9d\xcf\x46\xb2\x21\x3d\xf0\xf3\xfb\x45\x54\xbe\xfc\xac\xfc\x73\x1c\x10\xbe\x4c\x27\x5f\xad\x2c\x8d\x4c\x13\xbf\xb1\x2b\x61\x48\x5a\x16\x88\x89\x4e\x63\xbb\x4d\xf0\x7f\x64\xfc\x98\x58\x74\x56\xca\x76\xb5\x88\xea\xa9\x5a\xeb\x46\x39\x4d\x2b\x0c\x03\x4c\x58\x96\x11\x43\x33\xd4\xa8\x05\x40\xb3\x16\x95\x23\x6f\x52\x64\x4d\xc1\xc8\xcc\x34\xd2\x7d\x97\xa4\x2c\x79\xd4\x4d\x84\x24\xad\xa4\x74\x71\x52\xf3\xba\x92\xc8\xa8\x91\x5b\xa3\xc9\x1b\xd5\x54\xfe\x9f\x3d\x63\xf3\x29\x35\x7f\x66\xa6\xe9\xe1\xdd\x1a\x6a\x83\x97\xe3\xab\xf0\x0e\x21\x22\x14\x50\xc9\x85\xe8\x6a\x47\x35\xd4\xd2\x7a\x05\xc8\xca\xc1\x49\x87\x26\xd6\xc4\xb3\x1a\x80\x37\x64\x9a\x93\xa5\x82\x55\x4f\xc3\x1b\x94\x2e\xbc\xd0\x52\x47\x36\x26\x0c\x2d\x24\x08\xd8\x17\x85\x6e\x87\x30\x44\xec\x1b\x91\x2e\x3a\xad\x8a\x2a\x34\x8d\xba\x8d\xae\xc9\x25\xd3\x6b\x1a\x5d\xc9\xcb\xee\xba\x56\x76\x75\x95\x15\x8f\x1d\xa4\xf6\x45\x7f\x70\xce\xa8\xeb\xce\xd1\xf6\xf1\x98\x82\x81\x80\x93\xae\xe7\xb4\x58\x62\xa2\xd2\x77\xcd\x9d\x30\xd5\x87\x4b\x6f\xa7\x6e\xd6\xb1\xe0\x07\x38\x3a\xd6\x42\xc9\xba\x22\xca\x25\x2e\xce\x62\xc8\xe2\xfb\x53\x1a\x0b\x0f\x17\x67\x16\xc3\xf4\x9f\x8d\xcf\xd6\x9e\xac\x20\x66\xbb\x6e\x50\xed\x83\xaa\x5b\xb2\x5e\x7c\x00\xc6\x34\xc5\xcf\x13\x31\x53\xa9\x1b\x27\x54\x83\x97\xb0\xb0\xf9\xa9\x52\xb7\xca\x22\x49\x5d\x01\x70\x8f\xbb\x7f\x64\xac\x3c\x2e\x3b\x1d\x27\xa3\x06\xdc\x7c\xcd\x31\x32\x22\xb9\x6e\xdd\x03\x61\x46\x3e\x14\xa5\x91\x95\xea\xd6\xf1\x03\x00\xea\x1f\xf9\x45\xad\x15\xa9\x76\x09\xae\x02\x20\xec\xf1\xc2\xbb\x94\x70\xc6\x3e\xe9\xba\xcb\xc9\x3c\x9b\xa7\x84\x59\x4a\xf7\xd7\x5f\x7f\x9c\x50\xcc\xf1\xee\x4e\xd1\xaa\xd1\xe6\xfc\x39\x74\xee\xac\xe5\xfd\x9f\xbd\x59\x9c\x1d\x39\xbe\x0f\x69\x7a\x7d\xf6\x31\x79\x0f\x72\x04\x6e\x0f\xde\xaf\xd3\x66\x51\xeb\xf2\x26\x6e\x40\xb9\x12\x4e\xd8\x44\xc9\x4b\x8f\xb8\x7e\xfe\x8c\x1e\xe1\x24\xef\xf4\xb2\x94\x97\xd2\x58\x65\x9d\x6c\x5c\xec\x8c\xd1\x9c\x03\xbd\x5d\x62\x95\xac\xd3\xfe\x3c\x33\x33\x87\x0d\x88\x46\xd5\xca\x7d\x97\xad\x8e\x2a\x3f\x94\xe9\x2b\xf7\x80\xbd\x25\x1f\x62\xab\xad\x4a\x84\xea\x56\x51\x1d\xa1\x49\xf2\x30\x76\x7b\x10\x8d\x64\xea\xce\x3a\x69\xe2\x66\x4d\xca\xa6\x6a\xb5\x6a\x68\x05\xb0\xa0\x0c\x3c\xa1\x6c\x46\x3a\xbd\x6c\x37\xda\x5f\x20\xf9\x7b\x96\xc8\xb4\xb5\xd2\xd6\x51\x3c\xfc\x08\x69\x25\x39\x70\x17\xff\xfa\x06\xae\x92\x88\x27\xa7\x6c\xe4\x34\x83\x72\x25\xda\x0f\x9d\x5b\x9d\x2b\x5b\xea\x5b\x89\xc8\x78\xaa\xdd\x33\xa2\xbc\x1a\xea\xc1\xe3\x23\x4c\xa4\xf6\x0d\xcd\xee\x9d\x4e\xd3\x8e\x56\xfd\x1d\xfb\x96\x7c\xa4\xbe\x8b\x66\x73\x2d\x09\x5a\x50\xe1\xf4\x1c\x8d\xad\x36\x4e\xd0\x6a\xa8\xe7\xec\x2c\xcb\x8e\x8e\x3d\x48\xe9\x5f\x1a\xdc\xc8\x97\x3d\x35\xcd\xee\x2a\x53\x7f\xfb\x9e\xea\xd9\x86\x5b\xbd\x7f\xbb\xff\xd1\xb1\xae\xca\x26\xae\xea\x7c\x52\x0a\xed\xd0\x02\x71\x86\x85\x22\x04\x5d\xea\xec\xf1\x1b\x62\xd1\x53\xbb\x75\x4b\x0d\x31\x82\x8f\xb5\x50\xde\xa1\x4c\x48\x15\xdb\x20\x78\xe7\x6e\x99\xed\x1e\x44\x3b\xd5\x95\x76\xba\x39\x3d\x97\x63\x35\xc3\xe2\x95\xcd\xa2\xa2\x9d\xa3\x36\xee\x4e\x9b\x04\xf1\xbb\x93\xab\xfc\x7a\xb7\xc5\x4e\xad\xd1\x9b\xdf\xfa\x2f\xe9\x64\x13\x71\x81\xc9\x3d\x49\x53\x71\xc9\x65\x69\x21\x90\x16\xbc\x99\xa1\x8c\x47\x43\x0c\x1c\x05\x6b\xc4\x76\xc0\x4c\x3d\x1c\x00\xcb\x8f\xdd\x01\x2f\x53\x76\x07\x9c\x9c\xd9\x1d\xa0\x33\x39\x9f\xae\x82\xb5\xa5\xbc\x31\xaa\x48\xcd\xd9\xfe\xb3\xe4\x74\xc7\x1d\x30\x92\xac\xf7\x5f\x80\x0d\x53\x9d\x70\xb6\x04\x52\xaf\xf6\x2b\x72\x64\xb0\x50\xc1\xdb\x73\xa0\x4c\x65\x07\xef\x57\xe6\xe2\x35\x23\x61\xd7\x51\x04\xa8\x23\xd9\x41\x90\xab\xa0\xe0\xd7\x96\x04\x5f\x11\x57\x9a\x16\xcc\xca\x93\x1d\xb0\xc5\x63\x91\x6f\xdb\x17\x57\xc1\xa4\x11\x7e\xfd\xca\x0e\x42\x31\x76\x80\x9a\x96\x1d\x04\xe3\x6d\x56\x9d\x4b\x84\xf5\xf0\x6a\x5f\x82\x2f\x28\x8c\xa8\x81\x2b\x63\x76\x10\x40\xd2\xf0\x95\xd0\x63\x55\x24\x19\xc8\x87\xa8\x57\x56\xa6\xfc\x21\x1b\xb0\x3b\x38\x99\x2b\x35\x1b\xb0\xd9\x80\x25\x3e\x0d\x8a\xdb\xfd\x99\x6e\x3f\xf4\x8d\x04\xcc\x20\x66\x21\x7f\x57\x29\xd9\x4c\x52\x7d\x5b\x14\xf2\xbe\x55\xcc\x21\x63\x05\x7b\xd0\x58\x11\x40\x72\xe1\x32\x6b\xb2\xfa\x65\x48\xca\xc0\xb4\x9e\xac\xa4\x18\xe8\x45\x3b\xc4\x15\x62\x05\x70\xfe\xee\xf4\xf5\x83\x8b\x1a\xed\x5b\x26\x99\xa7\x95\x2e\xd8\x67\xe4\x52\x59\x97\x20\x75\xdf\xc9\x46\x34\xb1\x0b\xb0\x93\xb4\x37\x1d\x23\xa4\xb3\x8b\x8f\x8e\x67\x49\x0c\xa8\xc6\xe2\x46\x73\x1d\x35\x90\x9a\x2a\x6b\x77\xed\x39\xc7\x90\x85\xe5\x46\x3e\x6c\x7e\x1f\x1d\xcf\x09\xb6\xc5\xd6\x3a\x76\x9e\x64\xce\x85\xdd\x83\x94\xb9\xb0\xb3\xec\x55\xdd\x0b\x04\xef\x5f\xc7\xee\x6c\x6d\x4b\x51\xcb\x8b\x6f\x27\x20\x68\x97\xc2\xc9\x3b\x11\x5f\x11\x69\x8d\x76\xb2\xdc\x18\x42\xe7\x7a\x2d\x54\xfc\x2a\x89\x2c\x3c\xb6\x90\x52\x78\x58\x5b\x7f\x6a\xc4\x75\x4d\x33\xd9\xc0\x8d\x1f\x06\xc6\x25\x19\x35\xf4\x88\xeb\x32\xc5\xbd\x67\x1f\xac\x93\xf1\xfb\x33\xd1\x67\xd4\x81\xa8\xe8\xd2\xfe\x51\x2a\xf9\x5b\xb8\x23\x0b\xfa\x3f\xd1\xef\x71\xb4\xfb\x81\x14\x65\x38\xd9\x84\xc6\x79\x77\x16\xcd\xdd\xdb\xdf\x86\xdc\xbd\x7d\x84\x64\xbe\xbd\x74\x8d\xd5\x13\x8e\xe9\xa2\x4b\xcf\xe1\xae\x3d\x3c\x39\x74\x84\x19\xeb\xd7\x59\x0d\xdd\x42\x4a\x35\x34\x99\x6e\xb3\x8f\xca\xb6\xf1\xeb\xb1\xc9\xbb\x71\x6b\xdb\x95\x34\xf2\x64\x2a\x72\xb6\x8a\x78\xad\xca\x87\xe8\xe5\x32\xbf\xe0\x4b\x48\x50\xd4\xfc\xcc\x84\xb5\x40\x84\x24\x4b\x22\xb9\x92\x7e\xde\xea\xea\x87\x5c\xb7\xb5\xf0\x8b\x3d\x51\x69\xba\xd4\x8d\x33\xba\xae\xe3\x36\x9c\x13\x4d\xa3\x9d\x38\xe9\xee\x8d\xe4\x47\xd6\xd2\x89\x4a\x38\x91\xf7\xfd\xd7\xc7\x22\x0f\xe0\x6f\x65\xd4\xce\xc8\x62\xb1\x50\x8d\x72\x24\x5d\x08\x56\x50\x74\x25\x3f\x00\xf8\x38\x38\x87\x67\xe5\x42\x1a\x23\xab\xf3\x6e\x73\xc2\x57\xe5\x4a\x56\x5d\xad\x9a\xe5\xc5\xb2\xd1\xdb\x3f\x7f\xba\x97\x65\x47\xed\x45\x38\x02\x23\x23\x90\x9f\x0f\x38\x7c\x1f\x9e\x4f\x13\x66\x15\x1b\x58\x0b\x57\xae\x3e\xdd\xb7\x66\x68\x58\xc4\xcc\xe6\x66\xa5\x59\x8e\x10\x2a\xb5\xbc\xe0\xa7\x5d\x8e\x10\x2c\x91\xbb\xe8\x8d\x53\x69\x84\xe3\x67\x97\x07\x5f\xd8\xad\xa8\xbb\x10\x9b\x1e\x88\x0e\x06\x08\xfa\x85\xdc\xc4\xc5\x7d\x08\x91\x04\x5f\x30\x93\x40\x77\xef\x18\x89\x8a\xf9\xa2\x20\xa5\x3b\x45\xb0\x7d\xee\xa5\x53\x5f\xae\x92\x05\xd3\x8b\x90\x05\x13\x0d\xb2\x60\xf2\x87\x2c\x98\x22\x2e\xe6\x4e\xaa\xe5\x0a\xa8\xa0\x19\x21\x4c\x2d\x06\xbf\x12\x83\x47\x6c\x67\x7b\x9a\x30\xf8\x82\x61\x23\xa1\x87\x99\xc7\xc8\xa1\xa4\x71\xdb\xe2\xd9\x37\xdc\xcb\x6a\x63\xfa\x5d\xc9\xba\xef\xc3\xfd\x43\x1a\x5c\x6a\x32\x45\x6e\x36\x73\x3c\x20\x6b\x13\x04\xc8\xda\x04\x05\xb2\x36\x71\xf8\x45\xd9\xcc\x79\x0d\xb2\x60\x22\x40\x16\x4c\x14\xc8\x82\xe9\xf0\x8b\x26\x37\x73\x78\xcb\xe0\x1c\xf1\xd9\x73\x0d\x16\xd6\xf1\xa1\x2d\x80\x1f\x6d\x75\x95\x63\x2e\xcf\x57\xc7\x8e\xb9\xec\xb6\x75\x43\x0d\x53\x5b\x24\xb5\xb8\x96\xf5\x48\x9e\x3c\x19\x16\xee\xc2\x0e\x6b\x26\x15\x21\x6f\xa2\x90\x5a\x49\x11\x4e\x33\x29\xc2\x5f\x91\x61\x35\x94\x22\xc6\x02\xc3\x69\x2a\x45\x58\x6d\xa5\x88\xf1\xb5\x21\xb5\x96\x22\xa0\xe6\x52\x04\xd2\x5e\x8a\x90\x1a\x4c\x11\x52\x8b\x29\x82\xee\x7d\x2f\xdd\xbe\x6c\xe4\x6e\x00\x6a\xe3\xe7\xb0\xbc\x0c\x41\xa9\x37\xb0\x3a\xc9\x7e\x51\x33\xe6\x77\xce\xc1\xce\x0d\xb6\xd3\x61\x28\xd4\xe9\x56\xd7\x7a\xf9\xf0\x3b\xf7\x62\x0a\xd4\x2b\x90\x2b\xa3\xce\xf6\xbf\x28\x87\x5a\x66\x10\x6a\x79\xaa\x00\xe7\x78\xcb\xe9\xd8\x36\x81\x8c\x89\x1c\x6b\xf1\x80\xec\xd2\x24\x40\x76\x69\x52\x20\xbb\x34\x0f\xbf\x28\x48\xac\x25\x84\x11\x10\xc3\x00\x08\xac\x92\x32\x37\x3d\xc0\x4b\x42\x28\xfc\x6c\xce\x0f\xb2\xab\x7c\xea\x0b\xa2\xe0\xb3\xbf\x85\xab\x45\x72\x95\xfa\xc9\x94\x40\x96\x3f\xbe\x71\x2a\xfb\xe4\x9f\xaf\x2e\xfb\xe4\xe3\x2e\xa8\xc8\x3e\x79\x10\xb2\x4f\x9e\x07\xd9\x27\x8f\x43\xf6\xc9\xfb\x43\xf6\xc9\x4f\xfd\xa2\xec\x93\x7f\xe3\x2d\xd9\x27\xff\x02\x64\x9f\xfc\x16\xb2\x4f\x3e\xfb\xe4\x5f\x81\xec\x93\x7f\x1b\xb2\x4f\x7e\xa2\x85\x65\x9f\x3c\x05\xb2\x4f\xfe\xf0\x8b\xb2\x4f\xde\xff\x45\xd9\x27\xdf\x43\xf6\xc9\xef\x41\xf6\xc9\x23\x2d\x41\x89\x8f\x09\xb3\x3c\xa1\xd1\x11\xb2\xb9\x8d\xfc\x31\xb8\x7e\x86\x8d\x77\x63\x70\x51\xaf\xd1\xa4\xc7\xf8\xd9\x68\x20\x64\xc1\xd3\x7b\x4b\xdd\x2c\xd4\xf2\xab\x68\x7f\x97\x0f\xf0\x08\x5f\xbe\xea\xcd\x52\xb8\x03\xc8\x7e\x7c\x82\x60\xa0\x05\xf0\x26\x09\x16\x70\x7f\xda\x7d\xe0\x5e\x1b\xa8\x42\xca\xbc\x2e\x78\x73\xe5\xf9\xb4\x1b\x62\x96\x7c\x00\x0a\x0a\x30\x3f\x7e\x72\xc5\x83\x37\x2d\x9e\x49\x47\x61\xc6\x99\xf3\xe9\x29\xd0\x08\xf3\x00\x24\xc5\x1e\x5b\x1e\x60\x0d\xfc\x51\xe5\x93\x53\x35\x6b\x30\x39\x93\xa8\x87\xfe\xe3\xf9\x72\xcf\x97\xfb\x31\x5e\xee\xf0\xc3\xe8\xd8\x8a\x0d\xa9\x00\x26\x5a\x92\x21\x14\xfd\xb0\xb5\xcb\xae\xae\xaf\x7a\x9e\x9e\xef\x08\x97\xc4\xf6\x5a\xca\x23\x68\x94\xfb\x38\x5e\xcf\xf3\x3d\x00\xaa\x6b\x62\x00\xd8\x07\xc7\x92\x90\xb8\xb3\xa7\xd4\xeb\xb5\x68\x00\x81\x76\x6c\x1f\x4a\xf4\xcd\x0c\x00\x7f\x24\xbb\xd1\x1b\xe3\xb6\x65\xdf\xb5\xa0\xe7\x26\x24\x76\xcc\x8b\x33\x40\x88\x18\x66\x10\x8f\x4e\xb8\xe5\x14\x61\xc2\xa9\xc1\xa2\x26\x3c\x65\x30\xf0\x62\xf8\x8a\xe1\xfe\x82\x38\xea\xe1\x00\x21\x82\x93\xdc\xc0\x64\x90\xb0\x16\xcf\x27\x34\x40\x28\xea\x0f\xe1\x1f\x1a\x20\x18\xdd\x05\xf0\x15\x05\x5d\x51\x18\xba\xe3\x79\x8f\x06\x08\x42\x7d\x61\x3c\x49\x03\x84\xa2\xc2\x40\x5e\xa5\x01\x82\x11\x22\xdb\xc3\x14\x78\x3d\x7c\x6f\x53\xd0\x05\x85\xe1\x0b\x96\xff\x69\x80\x20\x6c\xc1\xf7\x45\x0d\x90\xd5\x92\xc8\x8b\xc9\x6a\xc9\x73\x08\xd6\xbc\x90\x11\x9f\x60\x75\x2f\xa4\x7a\xb6\x06\x08\xe0\xbe\x03\x4d\x5e\xcc\x8e\x9a\xcc\xec\xdd\x9a\x5d\x0c\xe1\x16\x42\xb0\x71\x05\x49\x10\x21\x12\x42\x80\x84\x10\x1e\x6c\xa6\x6d\x8d\x5c\xa8\xfb\xc9\x1c\x0a\xd0\xf4\xd8\x7d\xc8\x14\xf5\x6c\x21\x93\x52\xd4\x44\xe2\xb4\x0f\x1d\x24\x4d\x68\xda\x06\x2b\x86\x11\xad\x49\x71\xd7\x6a\x21\xcb\x87\xb2\x06\xbe\x98\xc7\x2f\xad\xb6\xee\xca\x09\x03\x16\x22\xf1\x99\x55\xde\xfb\xcf\x8a\x8c\x81\xbf\xe0\xb8\xe5\xf7\xe1\xf4\x8a\xff\x02\xe8\x8f\x2b\xe7\xda\xdf\x24\xa3\xca\x2d\xcc\x01\xaf\xb4\x65\xac\xa1\x08\x77\x30\x9b\xfd\xf8\x9f\x14\x15\x31\x14\xf7\x1c\x66\x57\x7f\x14\xc2\x1a\x2c\xa2\xd4\xf9\xcc\x6c\x55\xe1\xaa\x69\x40\xfb\xe8\xe9\x4b\xfa\x2d\x0a\x22\xb5\x66\x53\x4b\xd3\xb2\xbd\xc4\x81\x8e\xbb\xd5\xe8\xbd\x3a\x82\x68\x1e\xbe\xb1\x1c\x4f\x7d\x6d\x04\xbb\xc6\xf7\xd7\x77\x05\x60\x84\xfb\xb3\x9b\xee\x5a\x9a\x46\x3a\x69\xcf\x54\xe3\xce\xb4\x39\x1b\x5e\xfb\x9f\xc2\x19\x16\x49\xda\x72\x25\xb9\xc2\x68\x36\xd5\xea\x1b\x1a\x9a\xf2\x06\x77\x65\x7b\xa5\xcb\x9b\x7c\x87\x6f\x21\x73\xf5\xeb\x10\x8d\xab\x8f\x9f\x95\x98\x2f\x68\x8d\xbc\x72\xba\xcd\x66\x5a\x36\xd3\x5e\x7c\x47\x36\xd3\x8a\x6c\xa6\x1d\x86\x6c\xa6\x79\x42\x36\xd3\x0e\xbd\x28\x9b\x69\x5b\xc8\x0a\x1d\x00\xd9\x4c\x1b\x21\x9b\x69\xfb\x90\xb9\xfa\xed\x77\xcd\x99\xab\x8f\x9f\x95\xa6\x29\xfe\x2a\x8a\x5a\xdd\xca\x46\x5a\x7b\x69\xf4\x75\xf2\x28\x20\x6e\xdd\x85\xa8\x1d\x66\x5a\x75\xa7\xd1\x88\x87\xdb\x51\x40\xa8\xba\x33\xf2\xc7\xca\x48\xbb\xd2\x35\xb8\x9d\xfc\x9e\x92\x5c\x71\xc7\xb2\x44\xf9\xc4\xc8\xbb\xbd\x02\x10\x52\x10\xcb\x93\xcd\x11\xa1\x2c\xce\x59\xa5\x88\x06\xb1\x32\x67\x95\x25\xcd\xb4\x2c\xf9\x56\x65\xc0\x7e\x6e\x1c\x6b\x92\x67\x49\x06\x38\x52\x9e\xae\xc9\xd4\x33\x43\xe9\x98\x81\xf4\xcb\x48\xba\x25\xd7\x5a\x9c\xbc\xa5\x06\xac\xd6\x32\x99\x4c\x35\xca\x29\x51\x9f\xcb\x5a\x3c\x5c\xc9\x52\x37\x15\x28\xd4\xa7\x57\x0e\x5a\x69\x94\xae\x8e\xfc\x23\x6c\x57\x96\xd2\xda\xa3\xd7\xd4\x98\x1e\x87\x13\xd0\xd5\xb2\xd4\xdf\x41\x14\xa9\x7f\xac\x22\xd7\xa9\xb5\xd4\x9d\x3b\x6a\x41\xc5\xd8\x82\xe4\xcd\x2f\x37\xe7\x9c\xb2\x7b\x48\x80\xc2\x9b\xa1\xb0\xf5\x92\x21\x41\x42\xcc\x7f\xe0\x8b\x90\x8d\x10\xbe\xb8\x9c\xac\xda\x64\x83\xfe\xf8\x37\x71\xd2\xfe\x23\xad\xd1\x4e\x97\x1a\x2e\x53\x61\x2e\x80\x57\x22\xf8\x84\x93\x10\x49\x3d\x4d\x71\x8b\x91\xa2\x52\xd9\xdb\x8b\x40\xf6\xf6\x66\x6f\xef\x00\x27\x60\x41\x64\x6f\xef\xaf\x90\xbd\xbd\xaf\x40\xf6\xf6\x8e\x90\xbd\xbd\xa7\x6e\xf7\x67\x6f\x6f\xf6\xf6\x66\x6f\xef\x1e\x4c\xff\x1d\xd9\xdb\x9b\xa5\xfe\x0e\xb2\xb7\x77\xff\xf1\xf7\xed\xed\x1d\x5b\xb5\x01\x5f\xce\x93\x0a\xb5\x5a\x2b\xc4\xed\x5b\x04\x9e\x92\xc7\xe6\xa8\x00\x4d\xb6\xa4\xcd\x3b\xc1\x78\xd8\xca\xb2\x33\xca\x3d\x7c\xd4\x8d\x93\xf7\x80\x98\xe7\x51\xb2\xa8\x6b\x7d\x77\x69\xd4\xad\xaa\xe5\x52\x7e\xb2\xa5\xa8\x05\x3a\xf0\x97\xdf\x33\xa8\x14\xad\xb8\x56\xb5\xc2\x29\x21\xc0\x80\xa2\xea\xdd\xbb\x08\x8b\xa2\x32\x68\xbd\x67\x71\x32\xbb\xc0\xae\x9a\x7d\x64\x2a\x90\x9c\xb8\xbc\xd4\x1a\x5d\x7e\xd5\x5d\x03\x6a\x8e\xec\xd8\x8a\xa8\xbe\x35\xf5\xc3\x77\xad\xdd\x67\x55\x4b\xfb\x60\x9d\x04\x3b\xbd\x73\x77\xc2\x74\xcd\x07\xfb\x9b\xd1\x1d\x48\xd2\x7b\x1a\xd2\xbf\xff\x35\x89\x09\xd4\x7f\xc1\x1f\xba\xd9\xec\xe6\x84\x7b\xf8\xd3\x4a\xb0\xf9\xf0\xf4\x5b\x68\xe5\x17\xd5\x74\xf7\xdf\xfa\xce\x78\xd3\x8d\xa5\x97\xb7\x92\x3d\xd8\x88\x37\x21\x4c\x23\x9d\xde\x02\x2e\xa0\x7f\xc5\x94\x0b\xe8\x60\x2a\x0e\xb2\x00\xe6\xb5\x72\xa7\x9a\x4a\xdf\xd9\x89\xe9\x78\xb9\xb6\xe2\xa3\x91\x95\x6c\x9c\x12\xf5\x55\xcb\xe9\xd0\x10\xe0\x48\x9f\x2f\x67\xf2\x69\x80\x5b\x81\x39\xf1\x4a\x26\xb3\x6b\x9c\x30\xae\x6b\x73\x96\x01\x15\xb2\xf2\x9c\xb3\x0c\x06\x38\x01\xcf\x75\xce\x32\xf8\x15\x72\x96\xc1\x2b\x90\xb3\x0c\x46\xc8\x59\x06\xa7\x1e\x6f\xca\x59\x06\x39\xcb\x20\x67\x19\xec\xc1\xf4\xdf\x91\xb3\x0c\xb2\xd4\xdf\x41\xce\x32\xd8\x7f\xfc\x7d\x67\x19\x58\x57\x29\x20\x1e\xca\xf1\xb8\xf7\x28\xbf\x35\xc8\x64\x3d\x0e\x5a\x27\xcd\x5a\x35\x7d\xfc\xf7\xab\xb4\x56\x2c\x25\x36\xf5\x92\xc1\x82\x2f\x2c\x21\xfd\x48\x14\xe7\x60\x7c\xd8\xc6\xdf\xea\xba\x5b\xcb\x73\x79\xab\xa0\x64\x96\xc9\xaa\x09\xab\x7e\xc5\x9c\xd1\xa8\x6c\x69\x3d\x61\x01\x1b\xaf\x7e\x6c\xb7\x77\xd0\xe3\xc7\x35\xa1\x6e\x20\xf0\x3e\x1c\x7d\x4c\xf4\xbd\xde\x2c\x78\x52\xf2\x1e\x56\x60\x74\x2b\x96\x8c\xbc\x9c\xe3\xe6\xb3\x5d\x36\x01\x6f\x01\x9c\x59\x66\xb6\xbb\x9e\x94\x0e\x1e\xf1\x7f\xba\x6f\xe1\xd8\xe5\xa4\xd2\x6e\xcb\x49\xef\x40\xd8\xdd\x69\x73\xa3\x9a\xe5\xb9\x02\x8e\x0a\x3e\x24\xec\x78\x80\xad\x05\x37\x15\xd9\x4e\x68\x34\x1d\x2a\xf3\xe1\x71\x74\x9c\x4b\x06\x8d\x54\xf2\xdb\x40\xb0\xa2\x94\xcc\x88\x4c\xa8\x2c\x12\xd8\xcb\xce\x12\x0c\x8c\x98\x1e\xf7\xd8\x38\x3e\x22\x7e\xc3\x0b\x7e\x2c\x8f\x49\x37\x61\xe2\x78\xfc\x28\x5e\xa0\xa8\x59\x80\x08\x5e\x90\x95\x84\xe8\x9c\xcc\x8a\xdd\x71\x23\x77\x01\xe2\x76\xdc\xa8\x1d\x27\x66\xc7\xef\xa3\xc2\xf0\xdc\xb2\xfc\xb6\x61\xbc\xb6\x41\x7c\xb6\x51\x3c\xb6\xbc\x28\xdd\xa4\x0a\x37\xe8\x2c\xe6\xa9\xcc\x9c\x18\xca\x51\xdf\x8d\x99\x03\xa3\x70\xe0\xb1\xb1\x00\xfc\x28\x38\x62\x2d\x9b\x1e\x54\xc8\xa6\xc7\x31\x8a\xd7\x6c\x7a\x8c\x90\x4d\x8f\x5f\x20\x9b\x1e\xd9\xf4\x38\x3d\xc5\x27\x9b\x1e\xd4\x87\xb3\xe9\x01\x40\xe6\xc0\x57\xe1\xd8\x58\x80\x15\x96\x21\x3e\x06\x0f\x0c\x43\x19\x0d\xb1\x55\x38\x4c\xcd\xb0\x51\x18\x7a\x26\x93\x11\x70\x3d\x02\x26\x3b\x6e\x99\x16\x27\x2b\x10\x17\x3e\xa0\x15\xc5\x21\x28\xf4\x86\x60\x91\x04\xd3\x6a\x62\x50\x32\xdf\x5a\xe2\x59\x4a\x01\xae\x14\xa6\x85\x34\x79\x7d\x06\x6c\x15\x71\x2c\x22\x6e\xa2\x31\xc3\x12\x42\xad\x20\xd6\x41\xa1\xba\x17\xac\x77\xf1\x75\x2e\xb6\xbe\x15\x5c\xd7\xc2\x2d\x1d\xc6\x97\xa0\xec\x05\xa9\x76\x30\x5b\x04\x28\x76\x9a\xe6\x8a\x65\x95\x36\x4d\xb3\x64\x6e\x21\xd3\x34\xab\x86\xed\xde\xa3\xd3\x66\xb2\xac\x65\xcb\xda\xe3\x10\x7a\xbc\x72\xa3\x29\xd8\x10\xfa\xd4\x46\x57\xf2\x4a\xd6\xb2\x74\x9a\x94\x27\xca\xef\x9a\x09\x12\x25\xf4\x95\xad\x51\xda\x28\x5a\x3d\x0d\x7a\x84\xd8\xf1\x8d\x2b\xfc\x58\x0b\x6b\xa9\xcd\x7a\xa0\xad\xc4\x47\xf0\x64\xff\xc9\x5b\x90\xfd\x27\xf4\x45\x67\xff\xc9\x1b\x48\xb3\xff\x24\xfb\x4f\x80\x47\xb3\xff\xc4\x1b\x69\xd6\xe9\xb3\xff\xe4\x30\x64\xff\xc9\x11\x2c\x39\xfb\x4f\xbc\x21\xfb\x4f\x68\x6f\x98\x8b\xac\x3d\x0e\xa1\xf7\x4e\xfc\x27\xd0\xf0\x17\x94\x6b\xb1\x81\x2f\x61\x06\x9c\x70\x1a\x99\xa0\x34\x84\x0e\x76\x39\xd6\x2f\x86\x1e\xdb\x28\x5e\x55\x57\xd3\x5b\x3c\x43\xdf\xc7\x18\x14\x83\x52\xfd\x02\x9b\x9a\xc0\x69\xf6\x8f\x5f\x19\xf8\x94\x87\x09\xd7\x0b\xce\x74\xc0\xfb\x59\xc0\x73\x1c\xa6\xd9\x24\xde\xd4\x06\x8e\x8e\x06\x4f\x6a\x60\xa9\x2c\xe8\x74\x06\x16\xd2\xfe\xe1\xd4\x48\xd1\x29\x0c\x53\xdc\x86\xb6\x6b\xdb\x5a\xae\x65\xe3\x44\xdd\x4b\x18\x32\x3d\x81\xbe\x40\xde\xd8\x14\x8e\xfa\x8d\xba\x92\xec\x83\x2d\x5d\x9d\x6a\x7f\x78\x7e\x52\xdc\x47\xca\x34\x4b\x18\xbe\x51\x9e\x74\x81\x7d\xa2\xa0\x3f\x14\xf5\x85\xb2\xf3\xa0\xe9\x84\xcb\x9b\xab\xc2\x21\xc4\x30\xb3\x54\x58\x84\x11\x6e\x7e\x0a\x8f\x3e\xb9\x33\x53\x8e\xc5\x70\x90\xe6\x56\x95\xf2\x43\x59\xea\xae\x71\x49\xac\x07\xa7\x6b\x69\x04\x99\xb6\x01\xb9\x8c\xb3\x82\x5c\x2c\x64\x09\xf8\xa8\x18\xa7\x7e\x23\xd3\x76\x16\xdd\x6c\x8d\x20\x26\x7c\xb0\x91\xee\xce\x1e\x6e\xe1\x3b\x9d\x22\x02\xde\x95\xf0\x76\x25\x6b\x6f\x46\x44\x44\xfa\x79\x6b\xe4\x42\xdd\xfb\xec\x1a\x69\x9f\x8c\x6c\x6b\x55\x0a\x2f\xfa\xa1\xfa\x11\x69\x34\x62\x9d\x11\x4e\x2e\xbd\x98\x97\x2a\x90\x8c\xae\x6b\xd5\x2c\x7f\xb6\x95\x70\xde\x94\x87\x48\xbd\xb5\xb8\xbf\xea\xcc\x92\x44\xdd\x64\x6f\x3c\xee\x85\x87\xbd\xef\xc1\xbc\xee\x6b\x71\xff\xb3\x11\xb7\x42\xd5\xe2\x9a\x66\x17\xbf\xa3\x6d\x22\x0b\x2c\x8a\xb9\x4f\xfc\x34\xc2\x5a\x7c\x6d\x91\xb3\xad\xd4\x39\xf0\x43\x6f\xdc\x76\x25\xcc\x41\xb4\x14\x7e\x2e\x75\xb3\x50\xcb\xab\x3e\x1a\x11\x43\x20\x89\x3b\xfb\xa9\x16\xd6\xa9\xf2\xbf\xb5\x2e\x6f\xae\x9c\x36\x51\xe5\xd2\xc2\xfe\x20\x7a\x84\x20\x0e\x68\x85\x71\x8a\xda\xd3\x38\x6d\x6e\x28\xd2\x77\x18\xf3\xcd\x0e\x0d\xb2\x2f\xce\x23\xef\x3a\xd5\x03\x70\xb6\x5d\x58\x2c\x69\x24\xfe\xe9\x8c\x3c\x57\xf6\x26\x26\x45\x97\xa2\x5c\xa9\x66\xf9\x55\x57\xf1\xc9\xba\x52\xf6\x26\x89\x49\xb7\x41\xf4\xf3\xfb\x45\x74\x3c\x89\xc4\xc1\x8d\xa2\x25\x0c\xc3\xa9\xd7\x29\x18\x9a\xce\x67\x23\xd9\x90\x1e\xf8\xf9\xfd\x22\x2a\x5f\x7e\x56\xfe\x6a\x17\xc2\x97\xe9\xe4\xab\x95\xa5\x91\x69\x5c\x2d\x1b\xfd\x42\x26\xc0\x44\xa7\xb1\xdd\x26\xf8\x3f\x32\x7e\x4c\x2c\x3a\x2b\x65\xbb\x5a\x78\x93\x0c\x64\x66\xe9\x46\x39\x4d\xcb\xe1\x06\xfc\x5e\xac\xaa\x1a\x9a\xbf\x9a\x9a\xab\x3b\x6b\x51\x39\xf2\x26\x45\xd6\x14\x8c\x24\x0a\x23\xdd\x77\x49\xb2\x0d\x51\x8f\x26\x12\x5f\x4a\x59\x9b\x45\x0d\xc1\x26\x91\x51\x23\xb7\x46\x93\x37\xaa\xa9\xfc\x3f\x7b\xc6\xe6\x53\x6a\xfe\xcc\x4c\xd3\xc3\xbb\x35\xd4\x06\x2f\xc7\x57\xe1\x9d\x5e\x85\x50\x40\x25\x17\xa2\xab\x1d\xd5\x50\x4b\xeb\x15\x20\x2b\x07\x49\xa3\x68\xa9\x43\x5a\x6b\xe2\x59\x0d\xc0\x9b\x07\xc9\x09\x28\x61\x85\x4e\xf0\x06\xa1\x73\x79\x6e\x24\x2d\x7f\xe1\xac\xff\x30\x40\x63\x4d\x32\xc9\x87\x2a\xd5\xa1\xed\xd6\xed\x90\x7a\x1c\xfb\x46\xa4\x8b\x4e\xab\xa2\x0a\x4d\xa3\x6e\xa3\x6b\x72\xc9\xf4\x9a\x46\x57\xf2\xb2\xbb\xae\x95\x5d\x5d\x65\xc5\x63\x07\xa9\x7d\xd1\x1f\x9c\x33\xea\xba\x73\xb4\x7d\x3c\xa6\xee\x14\x80\x93\xae\xe7\xb4\x58\x62\xa2\xd2\x77\xcd\x9d\x30\xd5\x87\x4b\x6f\xa7\x6e\xd6\xb1\xe0\x07\x38\x3a\xd6\x42\xc9\xba\x22\xca\x25\x2e\xce\x0d\x88\x56\xfd\x29\x8d\x85\xe7\x80\x32\xf3\x56\xfb\xcf\xc6\xc7\x60\x4e\x96\xbb\xba\x5d\x37\xa8\xf6\x41\x89\xa8\x59\x2f\x3e\x00\x63\x01\xdf\xe7\x89\x98\xa9\xd4\x8d\x13\xaa\xc1\xb3\x4d\xd9\xfc\x54\xa9\x5b\x65\x91\x64\xc0\x00\xb8\xc7\xdd\x3f\x32\x56\x1e\x97\x9d\x8e\x93\x51\x03\x6e\xbe\xe6\x18\x19\x91\x5c\xb7\xee\x81\x30\xce\x16\x8a\xd2\xc8\x4a\x75\xeb\xf8\x01\x00\xf5\x8f\xfc\xa2\xd6\x8a\x94\x66\x0c\x60\x22\xef\xf1\xc2\x3b\xeb\x7f\xc6\x3e\xe9\xba\xcb\xc9\x3c\x9b\xa7\x84\x59\x4a\xf7\xd7\x5f\x7f\x9c\x50\xcc\xf1\xee\x4e\xd1\x12\xc7\xe7\xfc\x39\x74\xee\xac\xe5\xfd\x9f\xbd\x59\x9c\x1d\x39\xbe\x0f\x69\x7a\x29\xd5\x31\x79\x0f\x72\x04\x6e\x0f\xde\xaf\xd3\x66\x51\xeb\xf2\x26\x6e\x40\xb9\x12\x4e\xd8\x44\xc9\x4b\x8f\xb8\x7e\xfe\x8c\x1e\xe1\x24\xef\xf4\xb2\x94\x97\xd2\x58\x65\x9d\x6c\x5c\xec\x8c\xd1\x9c\x03\xbd\x5d\x62\x95\xac\x29\xee\x3c\x33\x33\x87\x0d\x88\x46\xd5\xca\x7d\x97\xad\x8e\x2a\x3f\x94\xe9\xbb\x4c\x03\x7b\x4b\x3e\xc4\x56\x5b\x95\x08\xd5\xad\xa2\x3a\x42\x93\xe4\x61\xec\xf6\x20\x1a\xc9\xd4\x9d\x75\xd2\xc4\xcd\x9a\x94\x4d\xd5\x6a\xd5\xd0\x5a\x40\x81\x32\xf0\x84\xb2\x19\xe9\xf4\xb2\xdd\x68\x7f\x81\xe4\xef\x59\x22\xd3\xd6\x4a\x5b\x47\xf1\xf0\x23\xa4\x95\xe4\xc0\x29\x55\x6e\x20\x12\xe0\x2a\x89\x78\x72\xca\x46\x4e\x33\x28\x57\xa2\xfd\xd0\xb9\xd5\xb9\xb2\xa5\xbe\x95\x88\x8c\xa7\xda\x3d\x23\xca\x2b\x69\x31\x59\x4f\x45\x98\x48\xed\x1b\xfa\xd2\x3a\x9d\xa6\x73\x9c\xfa\x3b\xf6\x2d\xf9\x48\x7d\x17\xcd\xe6\x5a\x12\xb4\xa0\xc2\xe9\x39\x1a\x5b\x6d\x9c\xa0\xf5\x40\x9a\xb3\xb3\x2c\x3b\x3a\xf6\x20\xa5\x7f\x69\x70\x23\x5f\xf6\xd4\x34\xbb\xab\x4c\xfd\xed\x7b\xaa\x67\x1b\x6e\xf5\xfe\xed\xfe\x47\xc7\xba\x2a\x9b\xb8\xaa\xf3\x49\x29\xb4\x43\xb7\xa2\x19\x16\x8a\x10\x74\xa9\xb3\xc7\x6f\x88\x45\x4f\xed\xd6\x2d\x35\xc4\x08\x3e\xd6\x42\x79\x87\x32\x21\x55\x6c\x83\xe0\x9d\xbb\x65\xb6\x7b\x10\xed\x54\x57\xda\xe9\xe6\xf4\x5c\x8e\xd5\x0c\x8b\x57\x36\x8b\x8a\x76\x8e\xda\xb8\x3b\x6d\x12\xc4\xef\x4e\xae\xf2\xeb\xdd\x16\x3b\xb5\x46\x6f\x7e\xeb\xbf\xa4\x93\x4d\xc4\x05\x9a\xec\x27\x4d\xc5\x25\x97\xa5\x85\x40\x5a\xf0\xc6\x7b\x31\x1e\x0d\x31\x1b\x0c\xac\x11\xdb\x01\x33\xf5\x70\x00\x2c\x3f\x76\x07\xbc\x4c\xd9\x1d\x70\x72\x66\x77\x80\x8e\xcf\x7a\xba\x0a\xd6\x96\xf2\x26\x9e\x21\x35\x67\xfb\xcf\x92\xd3\x1d\x77\xc0\x48\xb2\xde\x7f\x01\x36\xf7\x6c\xc2\x36\xd0\x48\xbd\xda\xaf\xc8\x91\x19\x00\x05\x6f\xcf\x81\x32\x95\x1d\xbc\x5f\x99\x8b\xd7\x8c\x84\x5d\x47\x11\xa0\x8e\x64\x07\x41\xae\x82\x82\x5f\x5b\x12\x7c\x45\x5c\x69\x5a\x30\x2b\x4f\x76\xc0\x16\x8f\x45\xbe\x6d\x5f\x5c\x05\x93\x46\xf8\xf5\x2b\x3b\x08\xc5\xd8\x01\x6a\x5a\x76\x10\x8c\xb7\x59\x75\x2e\x11\xd6\xc3\xab\x7d\x09\xbe\xa0\x30\xa2\x06\xae\x8c\xd9\x41\x00\x49\xc3\x57\x42\x8f\x55\x91\x64\x20\x1f\xa2\x5e\x59\x99\xf2\x87\x6c\xc0\xee\xe0\x64\xae\xd4\x6c\xc0\x66\x03\x96\xf8\x34\x28\x6e\xf7\xc7\xaf\xfc\xd0\x37\x12\x30\x83\x98\x85\xfc\x5d\xa5\x64\x33\x49\xf5\x6d\x51\xc8\xfb\x56\x31\xe7\x81\x14\xec\x99\x20\x45\x00\xc9\x85\xcb\xac\xc9\xea\x97\x21\x29\x03\xd3\x7a\xb2\x92\x62\xa0\x17\xed\x10\x57\x88\x15\xc0\xf9\xbb\xd3\xd7\x0f\x71\xc7\x77\x2c\xa9\xb3\x46\x67\x1e\xec\x33\x72\xa9\xac\x4b\x90\xba\xef\x64\x23\x9a\xd8\x05\xd8\x49\xda\x9b\x8e\x11\xd2\xd9\xc5\x47\xc7\xb3\x24\x06\x54\x63\x71\xa3\xb9\x8e\x1a\x48\x4d\x95\xb5\xbb\x16\xb4\x61\x3d\x10\x96\x1b\xf9\xd0\xcf\x80\x89\x8d\xe7\x04\xdb\x62\x6b\x1d\x3b\x4f\x32\xe7\xc2\xee\x41\xca\x5c\xd8\x59\xf6\xaa\xee\x05\x82\xf7\xaf\x63\x77\xb6\xb6\xa5\xa8\xe5\xc5\xb7\x13\x10\xb4\x4b\xe1\xe4\x9d\x88\xaf\x88\xb4\x46\x3b\x59\x6e\x0c\xa1\x73\xbd\x16\x2a\x7e\x95\x44\x16\x1e\x5b\x48\x29\x3c\xac\xad\x3f\x35\xe2\xba\xa6\x99\x6c\xe0\xc6\x3b\x6d\xc4\x52\x26\x19\x35\xf4\x88\xeb\x32\xc5\xbd\x67\x1f\xac\x93\xf1\xfb\x33\x0d\x7a\xe8\x2c\xa7\xa7\x3c\x4a\x25\x7f\x0b\x77\x64\x41\xff\x27\xfa\x3d\x8e\x76\x3f\x90\xa2\x0c\x27\x9b\xd0\xf8\xff\xb3\xf7\x7d\xdb\x6d\xe3\xba\xde\xaf\xa2\x17\xc8\xcd\x39\x67\x9d\x8b\x73\xd7\xdd\x76\x66\x77\xed\xce\x34\xab\x69\xf7\x7c\xb7\x8c\xc4\xd8\x5c\x91\x45\x0d\x49\xe5\xcf\x7e\xfa\x6f\x59\x8a\x6c\xa7\x69\x63\xfc\x00\x52\x96\x1c\xe2\x32\xb1\x44\x8a\x04\x40\x00\x04\xf0\x9b\x77\x67\xd1\xdc\xbd\xfd\x75\xca\xdd\xdb\x47\x9a\x2c\xb6\x37\x5d\x63\xf5\x09\x61\xba\x70\xed\x39\x9c\xb5\x36\x69\xe5\xd8\xd9\x15\x10\x64\x33\xf4\x80\x26\xb3\x6d\x0e\x87\xf2\x6d\xfa\x7a\x6c\x78\x35\xee\x7c\xbb\xd6\x4e\x9f\x4d\x45\xce\xce\x10\xaf\x4d\xf9\x98\xbc\x5c\xe6\x87\xf1\x26\x64\x28\x34\x3f\x73\xc2\x5a\x20\x20\xc9\x12\x64\x57\xe8\xe7\xad\xad\xbe\xe9\x4d\x5b\x13\xa1\xe3\x51\x9e\x2e\x6d\x13\x9c\xad\xeb\xb4\x0d\xe7\x54\xd3\xd8\xa0\xce\xba\x7b\x23\xfc\xc8\x46\x07\x55\xa9\xa0\xf2\xba\xff\xf8\x58\xda\x75\xf7\xad\x4e\xda\x19\x59\xdd\xdc\x98\xc6\x04\xc8\x16\x62\x1b\x28\xb6\xd2\xef\x18\xe3\x49\xc6\x1c\x9e\xd5\x37\xda\x39\x5d\x7d\xe8\xb6\x3b\x7c\x55\xae\x75\xd5\xd5\xa6\x59\x7d\x5a\x35\x76\xf7\xe7\x8f\x0f\xba\xec\xd0\x5e\x84\x23\x09\x32\x02\xe5\xf9\x80\xc3\xf7\xf1\xf3\x69\xe2\xcc\x62\x4b\x1b\x15\xca\xf5\xc7\x87\xd6\x0d\x0d\x8b\x84\xd9\xdc\xa2\x34\xcb\x91\x62\xa5\x96\x17\xf2\xb4\xcb\x91\xa2\x25\x72\x17\xbd\x73\xaa\x9d\x0a\xf2\xec\xf2\xe8\x13\xbb\x53\x75\x17\x63\xd1\x23\xf1\xc1\x40\x51\xbf\x50\x9a\xb8\x78\x48\x31\x92\xe0\x0b\x61\x12\xe8\xfe\x1d\x23\x53\x09\x5f\x14\xa5\x74\xa7\x88\xb6\xce\xbd\x76\xea\xcb\x55\xb2\x62\xfa\x29\x65\xc5\x84\x51\x56\x4c\x74\xca\x8a\x29\xe1\x64\xee\xb5\x59\xad\x19\x15\x34\x23\xc5\xa9\xc5\x90\x57\x62\xc8\x98\xed\xe2\xc0\x12\x66\xbe\x60\x58\x48\xd6\xc3\xc2\x6d\x94\x70\xd2\xb8\x6c\xe9\xfc\x1b\xe9\x61\xb5\x75\xfd\xae\x74\xdd\xf7\xe1\xfe\xa6\x1d\x5f\x6b\x0a\x55\x6e\x76\x73\x08\x94\xad\x09\x80\xb2\x35\x81\x50\xb6\x26\x8e\xbf\x28\xbb\x39\xbf\xa2\xac\x98\x00\xca\x8a\x09\xa1\xac\x98\x8e\xbf\xe8\xe4\x6e\x8e\x6c\x1a\x92\x2d\xbe\x78\x69\xc1\xb2\x6d\x7c\xd6\x12\xb0\x1f\x6d\x6d\x95\xef\x5c\x5e\xce\x4e\x7c\xe7\xb2\x5f\xd6\x2d\x37\x9c\xda\x23\xa9\xd5\xb5\xae\x47\xf6\x94\xe9\xb0\x78\x07\x76\x5c\x37\xa9\x88\x79\x12\xc5\xb4\x4a\x8a\x78\x96\x49\x11\xff\x88\x8c\x6b\xa1\x14\x29\x26\x18\xcf\x52\x29\xe2\x5a\x2b\x45\x8a\xaf\x8d\x69\xb5\x14\x11\x2d\x97\x22\x92\xf5\x52\xc4\xb4\x60\x8a\x98\x56\x4c\x11\x75\xed\x7b\xed\xf6\x79\xab\x77\x23\x70\x9b\x3c\x87\xe5\xe7\x14\x95\x7b\x23\x9b\x93\xe2\x17\x35\x63\x7e\xe7\x1c\xfc\xdc\x68\x2b\x1d\x87\x43\x83\x6d\x6d\x6d\x57\x8f\xff\x92\x1e\x4c\x91\x7a\x05\x4a\x75\xd4\xc5\xe1\x17\xe5\xab\x96\x19\x5c\xb5\x3c\x37\x80\xf3\x7d\xcb\xf9\xf8\x36\x91\x9c\x89\x7c\xd7\x42\xa0\x1c\xd2\x04\x28\x87\x34\x11\xca\x21\xcd\xe3\x2f\x8a\x72\xd7\x12\xc3\x09\x48\xe1\x00\x44\x36\x49\x85\x8b\x1e\xe1\x25\x31\x0c\x7e\xb1\xe4\x47\x59\x55\x39\xf7\x45\x31\xf0\xc5\xdf\x22\xb5\x22\xa5\x46\xfd\xc9\x8c\x40\x51\x3c\xbe\x09\x26\xc7\xe4\x5f\xce\x2e\xc7\xe4\xd3\x4e\xa8\xc8\x31\x79\x26\xe5\x98\xbc\x8c\x72\x4c\x9e\x4f\x39\x26\x4f\xa7\x1c\x93\x3f\xf5\x8b\x72\x4c\xfe\x95\xb7\xe4\x98\xfc\x4f\x28\xc7\xe4\x77\x94\x63\xf2\x39\x26\xff\x0b\xca\x31\xf9\xd7\x29\xc7\xe4\x4f\x34\xb1\x1c\x93\x47\x28\xc7\xe4\x8f\xbf\x28\xc7\xe4\xe9\x2f\xca\x31\xf9\x9e\x72\x4c\xfe\x80\x72\x4c\x9e\xd3\x12\x14\x7c\x4c\xb9\xd5\x19\x41\x47\xe8\xe6\x2e\xf1\xc7\xf0\xed\x33\x1e\xbc\x9b\x40\x8a\x7a\x8b\x66\xfa\x11\x7f\x73\x96\x71\x65\x21\xb3\x7b\x4b\xdb\xdc\x98\xd5\x1f\xaa\xfd\x97\x7e\x64\x43\xf8\xca\x4d\x6f\x91\xc1\x1d\x41\xf7\xf3\x11\x04\x23\x4d\x40\x86\x24\x58\xb0\xfb\xd3\x1e\x92\xf4\xd8\xe0\x1a\xa4\xc2\xe3\x42\x86\x2b\x2f\xe7\xdd\x18\x58\xf2\x11\x38\x28\x02\x7e\xfc\xc9\x0d\x0f\x19\x5a\xbc\x90\x8f\xe2\xc0\x99\xcb\xf9\x29\x12\x84\x79\x04\x96\x12\xc3\x96\x47\x98\x83\x1c\xaa\xfc\xe4\x5c\x2d\x02\x26\x17\x32\xf5\xd0\x7f\x3c\x1f\xee\xf9\x70\x5f\xe2\xe1\xce\x7e\x98\x0b\x5b\xb1\x65\x15\x86\x8b\x36\x09\x08\x45\x0f\xb6\x76\xd9\xd5\xf5\x55\x2f\xd3\xf3\x85\x70\x99\xd8\x5f\x9b\x72\x0b\x1a\x13\xde\x8f\xc7\xf3\x7c\x37\x00\x0d\x4d\x0c\xc4\x8e\xc1\x89\x34\x24\x3f\xd8\x53\xda\xcd\x46\x35\x0c\x85\xb6\xb4\x0f\x05\x63\x33\x03\xb1\x3f\x52\xdc\xe8\x4d\x70\xda\x8a\xcf\x5a\x66\xe4\x26\xe6\xe8\xbc\x28\xce\x40\x31\xee\x30\xa3\x44\x74\xe2\x4d\xa7\x88\x73\x9d\x1a\xed\xd6\x44\x66\x0c\x46\x9e\x8c\xdc\x30\x3c\x9c\x90\xc4\x3c\x1c\x28\xc6\xe5\xa4\xf4\x62\x32\xca\xb5\x96\x2c\x26\x34\x50\x2c\xee\x8f\x11\x1f\x1a\x28\x1a\xdf\x45\x88\x15\x45\x9d\x51\x1c\xbe\x93\x45\x8f\x06\x8a\xc2\x7d\x71\x22\x49\x03\xc5\xe2\xc2\x48\x51\xa5\x81\xa2\x31\xa2\x38\xc2\x14\x79\x3e\xf2\x68\x53\xd4\x09\xc5\x91\x0b\x51\xfc\x69\xa0\x28\x62\x21\x8f\x45\x0d\x94\xcd\x92\xc4\x93\xc9\x66\xc9\x4b\x8a\xd6\xbc\x50\x70\x3f\x21\xea\x5e\x88\x46\xb6\x06\x8a\x10\xbe\x63\xba\xbc\x3c\x3f\xea\x64\x6e\xef\xce\xed\x12\x28\xb7\x18\x8a\x4d\xaa\x48\xa2\x28\x91\x18\x0a\x24\x86\xf2\x10\x0b\x6d\xeb\xf4\x8d\x79\x38\x59\x40\x81\x85\x1e\x7b\x48\x99\xa3\x5e\x4c\xe4\xa4\x1c\x75\x22\x75\xda\x5f\x1d\x4c\x9a\xd0\xb4\xbb\xac\x18\x20\x5a\x27\x1d\xbb\x36\x37\xba\x7c\x2c\x6b\xc6\x17\xcb\xe4\xa5\xb5\x3e\x5c\x05\xe5\x98\x85\x48\x72\x61\xd5\x0f\x74\xac\xc8\x14\xe3\x17\x92\xb0\xfc\x21\x9d\x5f\xf1\x5f\x04\xfb\x71\x1d\x42\xfb\xbb\x16\x54\xb9\xc5\xd9\xe0\xb5\xf5\x82\x39\x14\xf1\x36\x66\xbb\x1e\xff\xd4\xaa\x02\xaf\xe2\x5e\xd2\xec\xea\x8f\x62\x78\x83\x45\x92\x3a\x9f\x99\xcd\x2a\x5e\x35\x0d\xd3\x3f\x7a\xfe\x92\x7e\x89\xa2\x68\xad\xd9\xd4\xd2\xb4\xe2\x28\x71\xa4\xed\x6e\x2d\xf7\x5c\x1d\x49\x35\x8f\x5f\x44\x81\xa7\xbe\x36\x42\x5c\xe3\xfb\xe3\xbb\x22\x08\xc2\xc3\xc5\x6d\x77\xad\x5d\xa3\x83\xf6\x17\xa6\x09\x17\xd6\x5d\x0c\xaf\xfd\xbf\x22\x38\x11\x4b\xfa\x72\xad\xa5\xca\x68\x36\xd5\xea\x5b\x1e\x3a\xe5\x09\x1e\xca\xf6\xca\x96\xb7\xf9\x0c\xdf\x51\x96\xea\x5f\x53\x32\xa9\x5e\xbe\x28\x09\x5f\xd0\x3a\x7d\x15\x6c\x9b\xdd\xb4\xec\xa6\xfd\xf4\x1d\xd9\x4d\x2b\xb2\x9b\x76\x9c\xb2\x9b\x46\xa4\xec\xa6\x1d\x7b\x51\x76\xd3\x76\x94\x0d\x3a\x06\x65\x37\x6d\xa4\xec\xa6\x1d\x52\x96\xea\xd7\xdf\x35\x67\xa9\x5e\xbe\x28\x9d\xa6\xf8\xab\x28\x6a\x73\xa7\x1b\xed\xfd\xa5\xb3\xd7\x93\xdf\x02\xf2\xbd\xbb\x18\xb5\xc3\x42\xaf\xee\x3c\x1a\xf1\x48\x3b\x0a\x28\x53\x77\x4e\x7f\x5b\x3b\xed\xd7\xb6\x66\x2e\xa7\xbc\xa7\xa4\x54\xdd\x89\x3c\x51\x39\x33\xca\x4e\xaf\x08\x8c\x14\xc5\xf3\x14\x4b\x44\x2c\x8f\x73\x56\x29\xa2\x51\xbc\xcc\x59\x65\x49\x0b\x3d\x4b\xb9\x57\x19\xb1\x9f\x9b\xc4\x9b\x94\x79\x92\x11\xb6\x54\x66\x6b\x0a\xed\xcc\x58\x36\x66\x24\xfb\x32\x91\x6d\x29\xf5\x16\x4f\xde\x52\x83\x6d\xd6\x0a\x85\xcc\x34\x26\x18\x55\x7f\xd0\xb5\x7a\xbc\xd2\xa5\x6d\x2a\xa6\x52\x3f\xbd\x71\xd0\x6a\x67\x6c\xb5\xf0\x8f\xf0\x5d\x59\x6a\xef\x17\x6f\xa9\x09\x23\x0e\x67\x60\xab\x65\xad\xbf\xa7\x24\x5a\x7f\xa9\x2a\x37\x98\x8d\xb6\x5d\x58\xb4\xa2\x12\x2c\xc1\xe4\xcd\x2f\xb7\xfb\x3c\x65\xf7\x90\x08\x85\x37\x43\x61\xeb\xa5\x40\x83\xc4\xc0\x7f\x90\xab\x90\xad\x12\xfe\x74\x79\xb2\x6a\x93\xed\xf0\xcb\x5f\xc4\x93\xf6\x1f\x69\x9d\x0d\xb6\xb4\xec\x32\x15\xe1\x04\x64\x25\x82\xcf\x24\x89\xa3\xa9\x4f\x53\xdc\xe2\xb4\xaa\x4c\x8e\xf6\x72\x28\x47\x7b\x73\xb4\x77\xa0\x33\xf0\x20\x72\xb4\xf7\x47\xca\xd1\xde\x5f\x50\x8e\xf6\x8e\x94\xa3\xbd\xe7\xee\xf7\xe7\x68\x6f\x8e\xf6\xe6\x68\xef\x01\x9d\xfe\x3b\x72\xb4\x37\x6b\xfd\x3d\xe5\x68\xef\xe1\xe3\x6f\x3b\xda\x3b\xb6\x6a\x63\x7c\xb9\x4c\x2b\xd4\x66\x63\x38\x61\xdf\x22\x32\x4a\x9e\x58\xa2\x22\x34\xd9\xd2\x3e\xaf\x84\xe0\x61\xaf\xcb\xce\x99\xf0\xf8\xde\x36\x41\x3f\x30\xd4\xbc\x8c\x93\x55\x5d\xdb\xfb\x4b\x67\xee\x4c\xad\x57\xfa\xa3\x2f\x55\xad\xb8\x80\xbf\xf2\x9e\x41\xa5\x6a\xd5\xb5\xa9\x0d\x9f\x13\x22\x00\x14\x55\x6f\x3e\x44\x58\x14\x95\xe3\xd6\x7b\x16\x67\xb3\x0a\xe2\xaa\xd9\x27\xa1\x62\xb2\x93\x54\x96\x5a\x67\xcb\x3f\x6c\xd7\x30\x2d\x47\xf1\xdd\x8a\xaa\xbe\x34\xf5\xe3\x57\x6b\xc3\x6f\xa6\xd6\xfe\xd1\x07\xcd\xec\xf4\x2e\x5d\x09\xd7\x35\xef\xfc\xef\xce\x76\x4c\x96\x3e\xb0\x90\xfe\xf7\x7f\x4e\xe2\x02\xf5\x5f\xf0\xa7\x6d\xb6\xab\x79\xc2\x35\xfc\xee\x35\xb3\xf9\xf0\xe9\x97\xd0\xeb\xcf\xa6\xe9\x1e\xbe\xf4\x9d\xf1\x4e\x07\x4b\xaf\xef\xb4\x18\xd8\x48\x86\x10\x66\x39\x9d\xde\x22\x4e\xa0\x7f\xc5\x29\x27\xd0\xb1\xb9\x38\xca\x04\x84\xc7\xca\xbd\x69\x2a\x7b\xef\x4f\xcc\xc7\xab\x8d\x57\xef\x9d\xae\x74\x13\x8c\xaa\xaf\x5a\x49\x87\x86\x08\x5b\xfa\x72\x3a\x27\x47\x03\xdc\x29\xcc\x13\xcf\xe4\x64\x7e\x4d\x50\x2e\x74\x6d\xce\x32\x40\x29\x1b\xcf\x39\xcb\x60\xa0\x33\x88\x5c\xe7\x2c\x83\x1f\x29\x67\x19\xfc\x82\x72\x96\xc1\x48\x39\xcb\xe0\xdc\xef\x9b\x72\x96\x41\xce\x32\xc8\x59\x06\x07\x74\xfa\xef\xc8\x59\x06\x59\xeb\xef\x29\x67\x19\x1c\x3e\xfe\xb6\xb3\x0c\x7c\xa8\x0c\xe3\x3e\x54\x12\x71\xef\x87\xfc\xd2\x70\x90\xf5\x24\xc3\x06\xed\x36\xa6\xe9\xef\x7f\xff\xd0\xde\xab\x95\xe6\xa1\x5e\x0a\x44\xf0\x27\x53\x98\x1e\x12\x25\x04\xf6\x78\xbc\x85\xbf\xb3\x75\xb7\xd1\x1f\xf4\x9d\x61\x25\xb3\x9c\xac\x9a\xb0\xea\x67\x2c\x81\x46\x15\x6b\xeb\x13\x16\xb0\xc9\xea\xc7\xf6\x6b\xc7\x7a\x7c\x59\x08\x75\x03\x83\xf7\xd7\xd1\x4b\xe2\xef\xcd\x76\xc2\x27\x65\xef\x61\x06\xce\xb6\x6a\x25\xc8\xcb\x59\xb6\x9c\xed\xb3\x09\x64\x13\x90\x60\x99\xf9\xee\xfa\xa4\x7c\xf0\x34\xfe\xc7\x87\x96\x7d\x77\x79\x52\x6d\xb7\x93\xa4\x37\xa0\xec\xee\xad\xbb\x35\xcd\xea\x83\x61\x6c\x15\x7b\x93\x78\xdb\xc3\x58\x5a\xe6\xa2\x72\x96\x93\x05\x4d\xc7\xd5\xf9\x6c\x38\x3a\xc9\x21\xc3\xbd\xa9\x94\xb7\x81\x10\xdd\x52\x0a\x6f\x64\x62\x65\x91\xb0\xa3\xec\x22\xc5\x20\xb8\xd3\x93\x6e\x9b\x24\x46\x24\x6f\x78\x21\xbf\xcb\x13\xf2\x4d\x9c\x7b\x3c\xf9\x2d\x5e\xa4\x5b\xb3\x08\x37\x78\x51\x66\x12\xa3\x73\xb2\xe8\xee\x4e\x7a\x73\x17\xe1\xde\x4e\x7a\x6b\x27\xb9\xb3\x93\xf7\x51\x11\x44\x6e\x45\x71\xdb\x38\x51\xdb\x28\x31\xdb\x24\x11\x5b\xd9\x2d\xdd\x49\x0d\x6e\x66\xb0\x58\x66\x32\x4b\xee\x50\x16\x7d\x36\x66\x09\x4c\x22\x81\x4b\x13\x01\xf6\xa3\x4c\x88\xb5\xec\x7a\xa0\x94\x5d\x8f\x25\xaa\xd7\xec\x7a\x8c\x94\x5d\x8f\x1f\x28\xbb\x1e\xd9\xf5\x38\x3f\xc3\x27\xbb\x1e\xe8\xc3\xd9\xf5\x60\x50\x96\xc0\x5f\xd2\xd2\x44\x40\x74\x2d\x03\x3e\xc6\x06\x0c\xe3\x0a\x1a\xc7\x57\x91\x08\xb5\xc0\x47\x11\xd8\x99\x42\x41\xe0\xdb\x11\x6c\xb6\x93\x96\x69\x49\xb2\x02\xf9\xca\x87\xe9\x45\x49\x18\x8a\x7b\x42\x88\x58\x42\xe8\x35\x09\x38\x59\xee\x2d\xc9\x3c\xa5\x08\x47\x8a\xd0\x43\x3a\x79\x7d\x06\xdb\x2b\x92\x78\x44\xd2\x44\x63\x81\x27\xc4\xf5\x82\x44\x1b\xc5\xb5\xbd\xd8\x76\x97\xdc\xe6\x12\xdb\x5b\xd1\x6d\x2d\xbe\xa7\x23\xf8\x12\xae\x78\xb1\x4c\x3b\xb6\x58\x44\x28\x76\x3a\xcd\x11\x2b\x2a\x6d\x3a\xcd\x94\xa5\x85\x4c\xa7\x99\x35\xdb\xef\x5d\x9c\x35\x93\x75\xad\x58\xd7\x2e\x43\xe9\xc9\xca\x8d\x4e\x21\x86\xac\x4f\x6d\x6c\xa5\xaf\x74\xad\xcb\x60\xa1\x3c\x51\x79\xd7\x4c\x26\x53\xb2\xbe\xb2\x75\xc6\x3a\x83\xd5\xd3\x70\xb7\x90\xb7\x7d\xe3\x0c\xdf\xd7\xca\x7b\xb4\x59\x0f\x6b\x29\xf9\x10\x3c\x39\x7e\xf2\x1a\xe5\xf8\x09\x3e\xe9\x1c\x3f\x79\x65\xd0\x1c\x3f\xc9\xf1\x13\xc6\xa3\x39\x7e\x42\x1e\x34\xdb\xf4\x39\x7e\x72\x9c\x72\xfc\x64\x01\x53\xce\xf1\x13\x32\xe5\xf8\x09\xf6\x86\xb9\xe8\xda\x65\x28\xbd\x37\x12\x3f\x61\x81\xbf\x70\xa5\x96\x07\xf8\x12\x07\xe0\x44\xd2\xc8\x84\xcb\x43\x5c\x60\x97\xa5\x7e\x31\xeb\xb1\xad\xe1\x55\x75\x35\xde\xe2\x99\xf5\x7d\x02\xa0\x18\x2e\xd7\xdf\xf0\x50\x13\x24\xcd\xfe\xf9\x47\x06\x1f\xe5\xe1\x84\xf3\x65\x62\x3a\xf0\xfb\x59\xb0\x71\x1c\x4e\xb3\x48\x32\xd4\x06\x89\x8d\xc6\x46\x6a\x10\x99\x2c\x5c\x74\x06\xd1\xa0\xfd\xc3\x53\x0f\xca\x45\x61\x38\xc5\x69\xe8\xbb\xb6\xad\xf5\x46\x37\x41\xd5\xbd\x86\x81\xf9\x89\x19\x0b\x94\xc1\xa6\x48\xcc\x6f\x6e\x28\xc9\x3f\xfa\x32\xd4\x53\xad\x8f\x2c\x4e\xca\x8f\x91\x0a\xdd\x12\x41\x6c\x54\xa6\x5d\xd8\x31\x51\x66\x3c\x94\x1b\x0b\x15\xe7\x41\xe3\x8c\x2b\xc3\x55\x91\x30\x62\x1c\x2c\x15\x11\x63\xc4\xc3\x4f\x91\xf1\xa7\x14\x33\x65\x29\x8e\x83\x76\x77\xa6\xd4\xef\xca\xd2\x76\x4d\x98\xc4\x7b\x08\xb6\xd6\x4e\xc1\xbc\xcd\xd0\xcb\x7c\x51\xd0\x37\x37\xba\x64\xc4\xa8\x04\xbb\x7e\xab\xa7\xed\x2c\xba\x5d\x1a\x05\x26\x7c\x88\x07\xdd\xef\x3d\xbb\x85\xef\xe9\x0c\x11\xe6\x59\xc9\x5e\xae\xc9\xda\x9b\x81\x03\x41\x3f\x6f\x9d\xbe\x31\x0f\x94\x55\x83\xd6\xc9\xe9\xb6\x36\xa5\x22\xf1\x0f\x1a\x47\xc4\x78\xc4\xaf\x95\xa3\xf1\x71\xe2\x79\x04\xeb\xd4\x8a\xc4\x9f\xa8\x5e\x54\xfd\x75\xca\x1f\xb6\xa2\x2b\x52\x50\x5b\x33\x64\x04\x65\xf3\x4a\x05\x75\xd5\x87\x69\xa9\xd3\xe2\x1c\x1f\xaa\x35\x70\xe0\x87\xa5\x20\x6e\x0d\x96\xd4\xc4\x1a\x04\x75\x4b\x18\x83\xa0\x8e\xc0\x45\xff\xe5\xe4\x1f\x03\xbe\x02\xac\x6e\xe1\xb0\x3f\x87\xa1\xf0\x70\xff\xb2\xb2\x32\x39\xe1\xfd\x25\x7d\x21\xfc\x88\x07\x13\x71\x39\x4c\xb5\x51\xa1\xec\x1b\xf8\x6a\xef\x67\x6d\x87\xbf\x09\xa3\xb8\xb7\x2b\xa7\xec\x45\x2e\x0f\xd1\x32\xa2\x1a\xdc\xae\xc0\xb7\x1a\x1b\xe7\x62\xb7\x89\xf3\x34\xb6\x9f\xa4\xef\xb3\xba\xd6\x58\x70\xf2\xbc\xb5\xde\x60\xbd\xc2\x99\xef\xf0\x27\x8d\xed\xff\xab\xd4\x43\x24\xfc\x0a\x60\x75\xa9\x52\x77\xb1\xf3\xa8\x8e\xfe\x70\x70\x78\x8e\xfc\x8c\x38\x45\xca\xf4\x2e\x8a\xd2\x36\x37\x66\x75\xa5\xdd\xdd\xab\x7e\xd0\x45\xb1\xb1\xcd\xca\xbe\x36\xb5\xa7\xd9\xbf\xf2\x0b\xd2\xc4\xbd\xaf\x8f\x71\x10\x69\x4b\x09\x3e\x1b\xf5\xec\x04\x7c\x34\xe2\xb9\x01\x30\x25\x55\x0b\xd2\x7d\x30\xc4\x64\x40\x7c\x2e\x48\xd2\xa8\x3e\x16\xf4\x52\xaa\x4f\x05\xbc\x94\x2e\xe4\x04\xdf\x89\xe4\x33\x91\x35\x10\xd9\x47\x42\x36\x9c\xee\x13\xf1\xcf\xcc\x74\x2a\x19\xf3\x79\xe6\xf8\x05\xe4\x9f\x52\x7d\x19\x64\xf3\x39\xbe\x0b\x60\x29\xe3\xbe\x0a\xe4\xa3\x30\x4c\x30\xdc\x27\x61\x0c\x82\xfa\x20\xb0\xef\xc1\xbb\x2a\x02\xad\x6b\xcc\xc7\xa0\xfb\x16\xa0\x4f\xc1\x8a\xa7\xd3\xbe\x12\xf4\x1d\x96\xad\x3d\x40\x9f\x80\x3c\x65\xba\x0f\x00\xbe\x32\xe2\x2c\x69\x76\xe8\xb0\x42\xdf\x8e\x64\x4d\x91\x86\x3c\x80\x3b\x3c\x8e\x73\x48\x7a\x63\xd7\x56\x2a\xe8\xab\xe0\x54\xd0\xab\x57\x5f\x47\x55\xba\xce\xd6\xb5\x69\x56\xdf\xfb\x17\xc7\x3c\x54\x5a\xe5\x82\xa1\x82\x9a\xa5\xbc\xc7\x21\x0b\x07\x25\x53\x2e\x26\xab\xdd\x69\xe7\x8f\xac\x0f\x61\xb8\x63\x0a\xfa\x62\x1c\xe7\x17\xff\x3f\x3a\xd5\xcd\xa3\xff\xfb\x97\xb9\x92\x14\x8e\xb8\x56\xe5\x6d\xd7\x5e\x3d\xe5\x53\x47\xf1\xcc\xfe\xd3\xb9\xa8\xcc\x5a\xda\x26\x28\xd3\xd0\x92\x16\x21\x3d\xbe\x51\x0f\xef\x6d\xd3\xe8\x92\x9c\x9d\x81\xde\xc6\x63\x77\x9a\x49\x2e\x8f\xc9\x22\x76\xfd\x5f\x31\x77\xed\xba\xa3\xd6\x76\xe5\x2d\xfb\xf9\x4f\x09\x5b\x56\x3a\xdb\xec\x7d\x83\x68\xa7\xfb\xaa\x8c\xea\xbf\x66\x56\xf8\xe9\x7b\xe3\xb2\x42\x6d\x4b\x75\x34\x6b\x1e\x0a\x33\xdd\xfb\x8f\xb5\xf2\xc1\x94\xff\xa8\x6d\x79\x7b\x15\xec\x71\xb5\x8e\x8e\x51\xf4\xa5\x2e\xc7\xec\xb9\x43\x82\xfd\x2a\xc8\xd4\x29\x98\x65\x78\x78\x9a\x15\x8a\xab\x8a\xd7\x9d\x0c\x26\xfa\xa7\x0f\x89\x56\x16\xf1\x3d\x2f\x76\x93\x89\x1d\x5a\xea\x8d\x8d\x0f\xc6\xdf\xa6\xe0\xcc\x52\x95\x6b\xd3\xac\x92\x5e\x9e\x54\xc6\xdf\x26\xbd\x00\xda\x0e\xf0\xfd\xeb\xa7\x64\xef\x4f\x2c\xbe\x48\xde\x0f\xfc\xf2\xd4\x42\x88\xc9\xc8\xc8\x0a\xe4\x1f\x7f\xff\xfa\x29\x89\x3c\xfd\x66\x68\xa5\x50\xa8\x3c\xa5\xd7\x79\x5e\x97\x4e\x43\x69\xdd\x30\xcf\xf8\xb5\x72\x29\x2f\x3b\x31\x9e\xd9\x7f\x30\xed\xe7\xe3\xe4\x63\xf3\x4d\xa9\xdb\xf5\x0d\x89\x0d\x50\xa6\xd9\xd8\xc6\x04\x4b\xef\x03\x35\xbf\x4c\x4c\xa4\xbf\xcf\xec\x54\xd8\x28\x53\x54\x9d\x50\xb0\x64\xaa\x1f\xe2\xab\x26\x37\xbb\xe0\x64\x58\x4d\x90\xdc\x09\xa7\x81\x20\xa5\x98\x49\xf5\xc8\x28\x65\xd1\xf5\x82\x69\x2a\xda\x27\xce\xcc\x6d\x98\x4a\xae\xde\x20\xd3\xbf\x09\xc7\x64\xc8\xe1\xf9\x43\x91\xb2\x34\xd0\x9d\xad\xf4\x8d\xea\xea\x80\x38\x26\xd3\x78\xb5\xd0\xe1\x0b\x9e\xd4\xbc\xac\x5a\x38\xa3\x96\x99\x34\xb8\x01\xf6\x62\x20\x7e\xbb\x1f\x6e\x51\x17\xde\x68\x90\xb5\x18\x78\xe6\x2b\x96\xf5\x7a\xd1\x7f\x08\x68\xe1\x31\xd2\x39\xe9\x16\x1e\xa2\x65\xe1\x25\xb5\xed\x70\xa3\x9d\xea\x24\xc2\xd4\x9a\x37\x49\x14\x9a\x33\x77\xc9\x2c\xa1\xe4\xb6\x42\x63\x2b\x7d\xd9\x5d\xd7\xc6\xaf\xaf\xde\xea\xa1\x3e\x55\x3c\xf3\x5d\x08\xce\x5c\x77\x81\xbe\x5e\xb2\x3c\xf2\xf4\x6b\x07\x06\x89\x7a\x49\x89\x2d\xd6\x95\xbd\x6f\xee\x95\xab\xde\x5d\x92\x02\x85\xd9\x5e\x21\x10\xcf\x5e\xb9\x31\xba\xae\x00\xfd\x21\x19\xab\x18\x92\x89\xff\x7d\x3c\xd5\xe1\xe7\x24\xa8\xab\xe9\x3f\xf3\x92\xd5\xf8\x98\x3d\x2a\xb7\x22\x67\x37\x57\x86\xe9\x04\x17\xd8\x64\x3b\xf2\x80\xc6\x6c\xea\xdf\x26\x16\x8a\x5d\xc6\x09\xaf\x1b\x8a\x40\x2e\x2a\x73\x67\xfc\xc4\xf5\x78\xe3\x2a\x2f\x40\x14\xc7\xa9\xa6\x97\x44\x8e\x13\x33\x2f\xb7\x04\x1a\x40\x6f\xda\xf0\xf8\xc1\x24\x89\xd4\x6d\x74\x65\xba\x4d\xba\xe0\xb1\xf9\x8f\xfe\x6c\x36\x86\xdc\xbe\x26\x65\xa9\xc3\x0d\xa9\x83\xd4\xcc\x62\x9d\x75\xf7\xe6\x92\x23\x82\x72\x2b\x1d\xfe\xfa\xeb\xcf\x05\xdf\x2b\xdd\xdf\x1b\x7a\x43\xa1\xb9\x4d\x1f\x93\xaa\x5a\x3f\xfc\xbb\x77\xff\x72\xf0\xe1\x47\xb2\x58\xdb\xbc\xb9\x7b\xc3\xf9\xe6\xe5\xac\x03\x0d\x37\xb5\x2d\x6f\xd3\x5c\x08\x56\x2a\x28\x9f\x38\xf9\xe3\x69\x8c\xef\xdf\x93\xdd\x5e\x41\xab\xb9\x2a\xf5\xe5\xd6\x79\xf7\x41\x37\x21\x55\x16\xdc\xdb\xcc\xcf\x6c\xab\xa4\x8c\x34\xaf\xcc\xb3\xe1\x63\xa3\x73\xa7\x09\x5f\x75\x6b\x93\xc8\xba\x71\x7d\xa1\x2d\xb8\x7e\xd0\x06\xb5\xd6\x9b\xc4\x43\xdc\x19\x24\xf0\x96\xf4\x1e\x7c\xff\xbd\xd1\xd9\xa0\xee\x7c\xd0\x2e\x4d\x76\x98\x6e\xaa\xd6\x9a\x86\xde\x4f\x8b\xa1\x9f\x16\x9c\xbd\x85\xf1\xc0\x6e\x31\x69\x4a\x83\x16\xed\x80\x78\x65\x6d\x7d\xa0\x46\x85\x51\x56\x49\xba\x91\x94\xf2\x44\xe6\xcb\x41\x55\x9e\x60\x57\x8c\x4f\x74\xed\x5b\xae\x55\xfb\xae\x0b\xeb\x0f\xc6\x97\xf6\x4e\xa3\xba\x16\xb1\xf9\xc7\xa1\xae\x68\xa5\x52\xfc\x81\x12\x9b\x4b\x03\xae\x5e\xb0\x50\x68\x1a\x1f\xe5\xef\x54\xa7\xd2\x13\x37\x7d\x6a\xb6\x47\x82\xa2\x07\x9d\x97\x1f\xd4\x6a\xad\x0b\x8a\xde\x02\x6d\x6e\x01\x9b\xec\x98\x27\x8c\x79\x0c\xe1\xc8\xcb\x9e\x43\x66\x71\x8c\x98\xbf\x29\x3b\x76\xb1\x95\x32\xd2\xef\x0e\x3f\x30\xf6\xf1\xb4\xb1\x5d\x43\xb6\x1a\xa0\x55\x6b\xd2\x18\xad\x8b\x36\x29\x07\x0c\x85\x99\xa4\xad\x13\xad\x9d\x8b\xa7\x39\xc7\xe6\xbc\x76\x17\x7c\x19\xa2\xd3\xef\x6b\x65\x48\x17\x5d\xb0\xa1\xb4\x7d\xf1\x1b\x0a\x48\xec\xbe\x37\xfa\x8e\xad\x6d\xb0\xcd\xf2\x83\x66\xd5\x4c\xd2\xe7\xb7\x13\x89\xbe\x47\xd6\x85\x7b\xeb\x12\xde\xf8\x2c\xbe\x76\xe4\x4d\x94\x50\xb4\xce\x6e\x7f\x47\x9b\xc6\xd9\xa4\x24\x82\x3d\xf6\x27\x49\x4a\x84\x8a\x59\xa4\x83\x15\xfc\x56\xdf\xec\x0e\xe1\x32\x34\x3b\x66\xdf\xf6\x81\x04\x89\x5b\x03\xe1\x19\x83\x7b\x92\x40\x4e\x8f\xc4\xcd\x22\xdc\x13\x9e\x4f\xf8\xe3\xe8\xec\xe5\xe3\xe3\xf2\x71\x7a\xb5\x8f\xcf\x41\x89\x62\x7b\x62\xa6\x94\x1e\x3e\x8c\xf7\xb1\xe7\x82\x35\x0a\x36\x06\xad\x78\xf9\x71\x50\x0e\x3a\x2f\x73\x6d\xc1\xc4\xf9\x3d\xbd\x1d\xdd\xc8\xcb\x68\x8f\x37\x7e\x21\xcc\x72\xdf\x93\x58\x55\x17\xb2\xcc\xf7\xa8\x33\x91\x68\xbe\x42\x90\x17\xbf\x27\x91\x3a\x2b\xf2\xc9\x27\xe5\x01\x59\x76\xfd\x9e\x62\x08\xa8\x30\xe3\x7e\x4f\x51\x64\x94\x9d\x85\x1f\x79\x1e\xfc\xcc\xfc\xa8\x13\x91\xab\x0a\x56\xde\xfe\x9e\x84\x9a\x42\x66\xe4\x2d\xc9\x58\x63\x0e\x3a\xdc\xbb\x64\x03\xe6\xe7\x94\x9d\xbb\x85\x1e\x71\xd9\xb9\x3b\x4e\xd9\xb9\xfb\x35\x3d\x07\x0b\xff\x66\x6f\x35\xe8\x3e\x08\xca\x72\xbb\xca\xe8\x66\xd2\x9a\xbc\xa2\xd0\x0f\xad\x59\x2c\x5a\x35\x4f\xcf\x4c\x5e\xc1\x08\x6b\x07\x16\xef\x26\x2f\x2e\x04\xbb\x14\x0e\x31\xed\xd8\x17\x04\x7f\x77\xf6\xfa\xf1\x38\x30\x42\xc1\x90\xc4\x15\x02\x6a\x3c\xc3\x0b\x22\xa7\x57\xc6\x87\x84\xc9\xcb\x41\x37\xaa\x49\x55\x72\x99\xb4\x31\xde\x78\x7b\x36\x8b\xbb\xb3\x71\x9f\x80\x8b\xb6\xd8\x52\xe4\xae\x93\x5c\xb0\xa5\xce\x83\xdc\x10\xc1\xdf\x59\x6f\xbf\xd5\x8f\xdb\xdf\x26\x7b\xff\x19\x34\x35\xb5\x36\x55\xa6\x5a\xce\x34\x7c\x0b\x1d\x47\x7b\x01\x26\xfd\x32\x55\x6f\x52\x5f\xaa\x5a\x7f\xfa\xb2\x40\xe5\xb7\x52\x41\xdf\xab\x74\x87\x7b\xeb\x6c\x18\x60\x35\x3e\xd8\x8d\x32\xe9\x72\xc1\xb3\xa0\x27\x13\x74\xef\xeb\x8f\x8d\xba\xae\xe9\x2e\x0a\x63\x71\x07\x3c\xb6\xa4\x00\x09\x4f\x63\x5c\xa6\x3c\x6f\xfc\xa3\x0f\x3a\x5d\x87\x92\xe4\x00\xd9\x98\xe6\x7d\xd2\x1e\x34\xcf\x6d\x14\x1f\xda\xaf\xfb\x75\x8c\xae\xa7\xc9\xd1\xe9\xb3\x49\x02\x9b\x5f\x5f\xba\xdc\x47\x77\x4f\xb9\x8f\x6e\x22\xa7\x22\x75\xab\xdb\x09\x00\x42\x30\xcd\x36\x9c\x6d\x36\x49\x95\xc9\xe2\x93\x9c\xdf\xac\xe9\x96\xdc\x5e\x38\x1c\xc2\xb7\xe9\xaa\x30\x31\x61\xe8\xae\x93\x14\x71\xdd\xf9\x76\xad\x9d\x5e\x6c\x35\xc1\xce\x00\xae\x4d\xf9\x98\x2c\xe5\xff\x87\x71\x26\x60\x3e\x24\x07\x6e\x82\xfa\x05\x62\x22\x1b\xc0\xd2\xe4\x9f\xb6\xb6\xfa\xa6\x37\x6d\x1d\x19\xe4\xb9\xb4\x4d\x70\xb6\xae\xd3\xb4\x5b\x52\x4d\x63\x83\x3a\xab\xde\x63\x58\xd5\xa9\x0e\xaa\x52\x41\xe5\xb5\x8d\xbf\xb6\xbe\xd5\x49\xfa\x68\xaa\x9b\x1b\xd3\x98\x40\xb6\x59\x58\x06\x85\xad\xf4\x3b\x70\x1c\xee\x58\xc5\x13\xea\xac\x76\x4e\x57\x1f\xba\xed\xee\x3d\x21\x79\x9b\x66\xf5\x69\xd5\xd8\xdd\x9f\x3f\x3e\xe8\xb2\x43\xba\x6c\x8d\xc4\xcc\xba\x92\xe5\x5c\x0d\xdf\xc4\xcb\x7f\x90\x8f\x5e\xf4\xd8\xc2\xa1\x5c\xef\x91\x95\x05\x99\xad\xec\xb4\xb5\x91\x62\xa4\xd7\x16\xb2\x34\xb6\x91\xa2\x24\xb5\x16\xbd\xa3\xa7\x9d\x0a\xb2\x0c\xdb\xa8\x13\xba\x53\x75\x27\x5d\xe0\x08\x7b\x3d\x50\xb4\xaf\x92\x24\x86\x1d\x92\x34\x01\xb8\x10\x24\xd4\xed\x9f\x1f\x99\x46\xf0\x12\x71\xc9\x41\x11\x65\x4d\x7b\xed\xd2\xa7\xdd\x67\xc5\xd2\x53\x56\x2c\xaf\x53\x56\x2c\xbf\xa6\xac\x58\x22\x4d\xe2\x5e\x9b\xd5\x1a\xac\x02\x18\x49\x9e\x6b\x2e\xcb\x34\xe7\x33\xd2\xc5\x81\xb5\xc9\x78\x78\x58\x34\xf8\x41\xc1\x56\x71\xb9\x64\x5c\xa2\x34\x7e\x82\xe4\x30\xd9\xba\x4c\x57\xba\xee\x3b\xba\x7e\xd3\x8e\xa7\xe9\x04\x2a\x32\xbb\x0b\x3f\xa1\x7c\xaa\xbf\x42\xf9\x54\x7f\x8d\xf2\xa9\xfe\xf2\x25\xd9\x5d\x18\x29\x2b\x96\x57\x28\x2b\x96\xd7\x28\x2b\x96\x97\x2f\x39\x99\xbb\xc0\x1f\x9e\xbb\x8d\x17\x2f\x2d\x45\x96\xed\x0c\x7f\x32\xeb\xb1\xd6\x56\xf9\x1e\x40\x78\x0f\xb0\x5f\xc2\xed\x6e\x9f\xca\xba\xaf\xd5\xb5\xae\x47\xb6\xe3\xeb\x9e\x38\x07\x68\x3c\x57\xa3\x88\x75\x52\xc4\xb2\x0c\x8a\x38\xd6\x41\x11\xf7\xe8\x8a\x67\x25\x44\x9f\x58\x1c\x6b\xa1\x88\x67\x31\x14\xb1\xbf\x30\x96\xe5\x50\x44\xb2\x1e\x8a\x08\x16\x44\x11\xcb\x8a\x28\x62\x59\x12\x45\xb4\x75\xee\xb5\xd3\xe7\xad\xbe\x14\x72\x93\x2c\x9f\xe1\xe7\x14\x8d\x33\x23\x9a\x6f\xa2\x97\x34\x63\xfe\xde\x29\xfd\xc2\x28\xab\x2a\xe7\xbe\x60\x5b\x5b\xdb\xd5\xe3\xbf\x24\x07\x48\x84\x9e\x5a\x12\x1d\x73\x71\xf8\x15\xf9\x0a\x00\x23\xd1\x15\xc0\x73\x43\x33\xdf\x03\x2c\xcb\x4f\x88\x60\xa0\xe7\x3b\x80\x9f\x50\x0e\xd5\xbd\x42\x39\x54\xf7\x1a\xe5\x50\xdd\xcb\x97\x88\xef\x00\xa4\x86\x75\x6c\xa3\x3a\xa2\xe9\x27\x58\x60\xe1\x0b\xa4\x46\xb4\x48\x82\xc5\x2b\x28\xe3\x2c\xb1\xd1\x2c\x9a\xbf\xc4\x62\x93\x18\xca\x93\x1b\x5d\xec\xf8\x71\x13\x4c\x8e\x21\xe7\x18\x72\xcc\x89\x14\x39\x86\x4c\xa4\x1c\x43\xc6\x28\xc7\x90\xe9\x94\x63\xc8\xbf\xa6\x1c\x43\x9e\xf2\x25\x39\x86\x7c\xf0\x86\x1c\x43\xce\x31\xe4\x1c\x43\x3e\x4e\x39\x86\x1c\x7f\x02\x45\x8e\x21\xff\x82\x72\x0c\xf9\x75\xca\x31\xe4\x5f\x53\x8e\x21\xef\x29\xc7\x90\x53\xbd\x20\xc7\x90\x73\x0c\x19\x7c\x74\x82\x18\x32\xfc\x88\x72\xab\x05\xb7\x24\xd7\xcd\x5d\xa2\xc9\xf3\x6c\x21\x1c\x5a\x87\x29\x09\xbd\x15\x31\xdd\x48\xbf\x39\x0b\x86\xd1\xf9\xb6\xe4\x0e\x79\xfa\x5f\xfa\x91\x05\x51\x28\x33\x63\xd9\xc6\xab\x50\x27\xf3\x50\x99\x22\x0c\xcc\x47\x67\x2a\x58\x3d\x1e\x0f\x49\xa2\xca\x39\x46\x9e\x40\x85\xf3\x31\x6d\x65\xfc\x28\xc5\xb1\x15\x72\x87\x10\xbb\xf6\x64\x07\x3d\x1f\xa9\x56\xc0\x23\x72\x78\x55\x19\xaf\x44\x80\x54\x15\xb2\x8b\x08\x46\x55\x38\xb6\x0c\x3a\xf5\x64\x9c\xca\x06\x4a\x15\x30\xea\xd0\x67\x37\x1f\xb0\x93\x0c\x9c\x0f\xd8\x54\x0f\x72\xda\xa5\x6f\xd9\x00\x74\x61\x92\x36\x40\xef\x41\x71\x2e\xbb\xba\xbe\xea\x65\x72\x5e\x10\x00\x13\xf9\x33\x53\x2c\x73\x63\xc2\xfb\xf1\x78\x9c\xd7\x22\x23\x2e\x38\x6b\x5a\x03\xb1\xb5\x18\x2f\x78\x51\xda\xcd\x46\x35\xa0\xe2\x59\xc2\x87\x01\x31\x87\x81\x58\x1f\x25\x6a\xae\xc4\x3c\xe9\x44\xe7\x1c\x23\x22\x11\x6b\x54\x3c\x3a\x31\x90\xf4\xbe\x4b\x1c\xa9\x88\x33\x8d\x42\x7e\xe5\x16\x25\x22\xcf\x37\xb0\x22\x4e\x42\x66\x6c\x1d\x4e\x84\x6b\x72\x0d\x24\xbd\xc8\x92\x5c\x62\x89\xaf\x46\xf8\xb1\x8e\x81\x62\x70\xb4\x34\xee\x31\x50\x14\x9e\x12\xc6\x40\xa2\xcd\x44\xce\x53\xfc\xa8\xc8\x40\x62\xce\x92\x47\x48\x06\x8a\xc1\x61\x11\xa2\x25\x03\x45\x61\x32\x51\xe4\x24\xe2\x3c\x64\x51\x94\x68\x13\x91\xf3\x3a\x3b\xae\x32\x90\x98\xd5\x65\x31\x96\x81\xb2\x69\x10\x71\x12\xd9\x34\x88\xd4\x00\x8c\x19\x1b\x67\x77\x00\x43\x22\x36\x03\x09\xc3\x50\x0c\x97\x10\xf7\x41\x26\x77\x0b\x77\xee\x0a\x53\x21\x49\x95\x91\x44\x09\x88\x15\x80\x54\xf8\xa5\x82\x2f\x12\xbc\xd6\xe9\x1b\xf3\x30\xb9\x73\x0d\xa3\xf1\x1d\x52\xe6\x96\xd3\x70\xcb\xc4\xaa\xaf\x0f\x5f\x4f\x92\x88\xb2\x0b\x94\x0f\x70\x75\x93\x8c\x59\x9b\x1b\x5d\x3e\x96\x35\xf8\x85\x7c\xde\x6f\xad\x0f\x57\x41\x39\x46\x31\x85\x4c\xe0\xf4\x03\x0d\x7f\x2b\xf6\xb8\x05\x37\x54\x7c\x48\xe7\x51\x8c\x24\xb4\xcd\xd6\x21\xb4\xbf\xd3\x40\xb3\x5f\x92\x7c\x13\xd7\xd6\x33\xc7\x2e\xe2\x6c\xc0\xf6\xfb\xff\xa9\x55\x05\x5c\xef\xbc\xa4\xd9\xd4\x50\x48\x3d\xa6\x22\x7a\xcd\xc2\x4c\x66\x13\xa7\x42\x80\xe1\x53\x3c\x7f\x41\xbf\x24\x62\x8d\x73\xf2\xfa\x00\x1c\xd7\xfc\xe5\xf8\xa2\x2d\x6d\x2d\xe7\xac\x1b\x49\x35\x8f\x5f\xd8\xc1\x95\x3e\x1f\x5c\x54\x3b\xf8\xe3\x7b\x84\xcc\xfd\x70\x71\xdb\x5d\x6b\xd7\xe8\xa0\xfd\x85\x69\xc2\x85\x75\x17\xc3\x2b\xff\xaf\x08\x8e\xcd\x6e\xbe\x5c\x6b\x89\x32\x39\x79\x75\xeb\x96\x47\x4e\x71\xa2\x86\xb2\xbd\xb2\xe5\xed\x1b\x3e\x53\xb3\x74\xee\x29\x89\x74\x2e\x53\x34\x04\x0f\xb7\x4e\x5f\x05\xdb\x66\xf7\x06\xa0\xec\xde\x64\xf7\x26\xbb\x37\x2f\x28\xbb\x37\xbf\xa0\xec\xde\x8c\x94\xdd\x9b\x73\x37\xa0\xb2\x7b\x93\xdd\x9b\x2c\x9d\x73\x95\xce\x65\x8a\xc6\xb4\x45\x2c\x45\x51\x9b\x3b\xdd\x68\xef\x2f\x9d\xbd\x9e\xec\xa6\x89\xe7\x11\x49\xeb\x13\x05\x9e\xd0\x72\x1b\x66\x48\xaa\x8e\x95\xa9\x3b\xa7\xbf\xad\x9d\xf6\x6b\x5b\x33\x96\x4e\xd6\x5f\x4d\xa2\xa2\xd8\x1e\x9b\x8c\xc9\xf8\xa7\x8a\x90\x49\xc4\x1e\x9a\x88\xc3\x63\x78\x66\xb3\x48\xd3\x13\x7b\x63\xb3\xc8\x3e\x15\x78\x60\x32\xef\x2b\x52\x5f\x24\xae\xd7\xc5\xf7\xb8\x84\xdb\xc6\xb7\xe5\x04\x76\x5c\x0c\x1b\x2e\x82\xfd\x96\xc0\x76\x93\x78\x55\x27\x2b\xa5\x67\x99\x8b\x02\x81\x31\x8d\x09\x46\xd5\x1f\x74\xad\x1e\xaf\x74\x69\x1b\x0e\x5a\xf7\xe9\x0e\xe8\x56\x3b\x63\xab\x05\x4e\xdc\x77\x65\xa9\xbd\x5f\xa4\x55\x24\xf0\xba\x17\x6a\x17\x65\xcd\x1c\x51\x33\x2f\x49\x3d\x06\xb3\xd1\xb6\x0b\x8b\x53\x30\xcc\x4f\x9e\xac\xf9\xdb\x76\x1f\xa7\xe8\x18\x20\x2c\x36\x18\x8a\xeb\x2e\x99\xd2\x2f\xed\x0b\x2e\x13\xff\xad\xb2\xfc\x74\x39\x79\xc6\xfd\x76\xd8\x65\x2e\xd8\x49\x7a\x0e\xb4\xce\x06\x5b\x5a\x56\x9a\xbe\x60\x60\x7e\x29\xd3\x33\xa9\x40\xb5\xe9\xb4\x89\xfd\x4e\xab\xca\xe4\xa8\xe4\x31\xca\x51\xc9\x85\xd9\xdf\x39\x2a\x09\x52\x8e\x4a\x16\x39\x2a\x99\xa3\x92\xd9\xf7\x45\x29\x47\x25\x8b\x1c\x95\xcc\x51\x49\x80\x72\x54\x12\xa0\xac\x99\xe7\xa3\x99\x97\xa4\x1e\xdf\x58\x54\x72\x6c\x83\x04\xe3\x42\x73\xa5\xba\x36\x1b\x83\x86\x27\x8b\x88\x28\x43\x22\xe9\x10\x36\xb8\xd1\xfe\xed\x7d\x39\xf3\x41\xaf\xcb\xce\x99\xf0\xf8\xde\x36\x41\x3f\x80\xaa\x98\xcf\x9d\xaa\xae\xed\xfd\xa5\x33\x77\xa6\xd6\x2b\xfd\xd1\x97\xaa\x56\x1c\xc0\x42\x59\x8f\x8f\x52\xb5\xea\xda\xd4\x86\xb7\xd3\x42\x40\x89\xea\xcd\x85\xba\x8a\xa2\x72\x9c\x9a\xb3\x62\xd1\x5f\x2d\xaa\xd2\x7b\x12\x10\x06\xab\x48\xe4\xa2\x75\xb6\xfc\xc3\x76\x0d\xc3\x32\x13\xc5\xf3\x55\xf5\xa5\xa9\x1f\xbf\x5a\x1b\x7e\x33\xb5\xf6\x8f\x3e\x68\x46\x47\x61\xc9\x97\xbb\xae\x79\xe7\x7f\x77\xb6\x63\xb0\xe9\x81\x45\xf2\xbf\xff\x33\xa9\xdb\xd0\xcf\xfa\x4f\xdb\x6c\x57\xee\x04\xeb\xf5\xdd\x6b\x46\xc3\xcc\xd3\x2d\x97\xd7\x9f\x4d\xd3\x3d\x7c\xe9\xbb\x4b\x4d\x0f\x77\xab\xef\xb4\x08\x84\x82\x8f\xcc\x62\xd1\x0e\x4a\x91\x06\xee\x1f\x3f\xc5\xc0\x1d\x8b\x33\xc5\x03\x0b\x54\xfe\xbd\x69\x2a\x7b\xef\x4f\xc4\x9b\xab\x8d\x57\xef\x9d\xae\x74\x13\x8c\xaa\xaf\x5a\x6e\xb5\xb6\x70\xdb\x5e\x4e\xe3\x64\x48\x4a\x3b\x05\x77\xa2\x19\x4c\xee\x0f\x04\xe5\x42\xd7\xe6\xdb\xe6\xd7\xe8\x4d\x1a\xa3\xf9\xb6\x19\xa6\x7c\xdb\x9c\x6f\x9b\xf3\x6d\x73\xbe\x6d\x26\x53\xbe\xd3\xf8\x09\xe5\xdb\x66\x02\xe5\xdb\xe6\x7c\xdb\x9c\x6f\x9b\x8f\x51\xd6\xcc\xf9\xb6\x79\x51\x0a\x86\xed\xc5\x57\x06\xbc\x4b\xe3\x46\x81\xfb\xa1\xbe\x34\x28\x52\x11\x77\xb8\xa0\xdd\xc6\x34\xfd\x5d\xe1\x1f\xda\x7b\xb5\xd2\x38\x22\x18\x53\x94\x7e\x32\xf4\x74\x2d\xf0\x43\x60\x8d\x83\x2f\xf0\x9d\xad\xbb\x8d\xfe\xa0\xef\x0c\x9c\xac\x30\x79\x75\x53\xd5\xcf\x92\x0b\x09\x27\xd2\xa8\x27\x28\xb4\xe1\xd7\xbb\xec\xd7\x09\x7e\x74\xfe\xa8\x3f\x03\xc3\xf6\xd7\x95\x73\xe7\xd7\xcd\x76\x92\x27\x61\xd7\x61\x64\x67\x5b\xb5\x62\xe6\x59\x2c\x4f\x5e\xf6\x37\xca\xfc\x81\xb9\xd8\x31\xbe\xbb\x3e\xc9\x3e\x3f\x8d\xfb\xf1\xa1\x65\xdd\x7b\x9d\x44\x3b\xed\xa4\xe2\x0c\x95\xd3\xbd\x75\xb7\xa6\x59\x7d\x30\xe0\x76\xb0\x36\xe2\x1c\x70\xf8\x61\xa8\x1f\x8e\x3e\x66\xc1\xfb\x70\x15\x3f\xe7\x76\x4b\x56\xf2\xcd\xbe\xd9\x12\x44\xfd\x63\x64\x08\xb0\x22\xbd\x6c\x81\x66\xde\x09\x49\xb6\x86\x1b\xf7\x90\x15\xb3\xcb\xee\x82\x04\x3c\x21\xbf\x07\x92\xdd\x02\x45\xb8\x7d\x11\xde\x00\x89\x67\x20\xed\xdc\xc9\xbe\xfb\x91\xdc\xfc\x08\xef\x7d\x24\xb7\x3e\xdc\x3b\x1f\x59\xff\x03\x66\x54\x91\x1d\x53\x94\x47\x14\xc5\xf1\xc4\xe8\xd1\x44\xfe\x2d\xcf\x49\x8c\x56\x46\x00\x93\x6f\x7a\x72\xe3\xf4\x8b\x3b\xab\xb2\x24\x89\x25\x69\x09\x2c\xcd\x7a\x8c\x01\x59\x93\x4d\xf6\xd7\x28\x9b\xec\x94\x21\xb3\xc9\x8e\x51\x36\xd9\xb3\xc9\x0e\x51\x36\xd9\xb1\x37\xcc\xc5\xd0\xc8\x26\xfb\x6b\x0f\x66\x93\xfd\x08\x65\x49\xda\xd1\x12\x58\x9a\x1d\xfa\x07\x1e\x61\x01\xb0\x70\x04\x06\xb5\xef\xb9\x42\xc9\xb4\xeb\x99\xf6\x9b\x80\xa9\x79\xe7\x37\x8b\x95\x24\x65\x24\xdc\x2c\x2c\x9e\xc2\x60\x78\x1b\x5c\x46\xe1\x68\x6e\xf6\x76\x0b\xbc\x0b\x26\x67\xca\xbc\x0a\xbe\x47\x21\x54\xf3\x02\x4f\xe2\x64\x79\xe7\x2c\xef\x81\xeb\x39\x48\x12\x32\x99\x1e\x03\xc7\x5b\x60\x6f\x06\xc7\xb6\x61\xd9\x35\x32\x9b\x46\x64\xcf\x44\xb5\x65\x78\x1e\x01\x73\xf6\x1c\x31\x81\x4d\x26\x16\x8b\x0b\x8b\x31\xa6\x3d\xe6\xd8\xa5\x17\xd3\x4e\x53\x52\x68\x31\xed\x4c\x59\xbe\xdf\x22\x2c\x87\xac\x0f\x21\x7d\x38\x5f\x05\xc5\x2f\x87\x98\x52\x94\xe0\x4f\x6b\x6c\xa5\xaf\x74\xad\xcb\x60\xc9\xf9\x76\xb2\xae\x6f\x0c\x46\x83\xbf\xaa\x75\xc6\x3a\x43\xcf\xff\xe7\x6c\x11\xbe\x3d\xe3\xac\xde\xd7\xca\x7b\xa4\x39\x06\xbc\x64\x3c\x08\x84\x1c\x17\x18\x29\xc7\x05\x5e\x9f\x68\x8e\x0b\x3c\x0d\x96\xe3\x02\x34\xca\x71\x81\x23\x94\xe3\x02\x2f\xe9\x0d\xdb\xc1\x39\x2e\xf0\x44\x39\x2e\x10\x7f\x9a\x39\x2e\xf0\x53\xca\x71\x81\x5f\x3f\x7d\x6a\x7d\x38\x5f\x05\x75\xa6\x71\x01\xb8\xf9\x3e\x47\xea\xf0\x86\xfb\xf2\x86\xf3\xdc\x66\x02\x1c\xde\xe0\x34\xd6\x5f\xd2\x17\xc2\x8f\x6c\x8d\x9a\xaa\xab\xb1\xd6\xa0\xf0\xf7\x30\x1b\xf4\x73\x38\xf8\x06\xef\x7c\xcd\x6d\xe2\xcc\x53\xe3\xbc\xee\xdc\x27\x98\x23\xa3\x17\x37\xaf\xde\x9c\xd5\x7f\x7b\xda\x05\xe1\x77\xdb\xe6\xda\x3e\xac\x0e\xdb\x6c\xd3\x80\xd3\x55\x9b\x3d\x58\xff\xe0\x54\x83\x71\xba\x67\x4f\x79\x22\xf9\xae\x6d\x6b\xbd\xd1\x4d\x50\x75\xaf\x15\x20\x3e\x61\xc4\xac\xf8\x2d\xeb\xb9\x66\x2b\x27\x1c\xe2\x1f\x7d\x19\xea\xd4\x6b\xc1\x8f\xdd\xf1\xe2\x76\x02\xd3\x9d\x19\xaf\xe3\x6b\x04\x56\x9c\x8e\x11\xa3\xe3\xc4\xe7\x44\xf9\x9f\x18\x23\xf2\x7b\xd9\x73\x99\x4b\xde\xbf\x9e\xbd\xe9\x71\x7a\xd6\xf3\x79\x4e\xd2\xa7\x7e\xce\x46\xb6\x76\x77\xa6\xd4\xef\xca\xd2\x76\x4d\x48\x6a\x69\x07\x5b\x6b\xa7\x20\x5e\x05\xf5\x26\x8f\xad\xf5\xcd\x8d\x2e\xc1\xf8\x0a\x73\x47\x6f\xf5\x34\xdd\xec\xb6\xcb\xa0\x80\x4b\x7a\xd1\x60\xfb\x7d\x65\xb5\x7f\x9c\xfe\xd0\x67\x9c\x57\xac\xa5\x49\xde\xce\x07\x18\x80\xfc\xd3\xd6\x56\xff\xee\x3b\xbe\xbd\xaf\x95\xd9\x50\x54\x3c\x22\x75\xaa\x0f\x26\xff\x61\x2b\x9a\x88\x02\xf2\x0f\xee\x10\xb2\xd0\x95\x0a\xea\xaa\x0f\x70\x51\xa6\x82\x2a\x21\xd5\x1a\xc8\xe5\x86\x59\xf1\xd6\xd0\x53\x21\xe0\x97\x23\xc6\x26\xf8\x72\xc4\xcc\xbb\xe8\xbf\x92\xf4\x43\xa2\x15\x08\x09\x2f\x14\x00\x45\x19\x04\x0b\x7c\xce\x3f\xdf\x0a\x0d\x74\xce\xfd\x8b\xa0\x9f\x7b\x20\x7d\x0e\x65\x94\x8d\x0a\x65\xdf\x9a\x50\x7b\x3f\x3b\x2b\xeb\x2c\x4d\x9f\xde\x92\x98\xa2\x2b\xaa\x2c\xa0\x05\xfa\x95\x9c\x3e\x87\xb7\x9a\xfe\xfe\x8b\xdd\x26\xcd\xc7\x94\x7a\x92\x9e\xcf\xea\x5a\xd3\x43\x3b\xe7\xa5\x99\x82\x75\x6a\xa5\xa1\x7c\x53\xe8\x13\xc6\x46\xc2\x55\xaa\x57\x27\x98\x35\x79\x05\x9d\x3e\x9e\x0f\x80\x28\xce\xce\x91\x22\xec\x29\x3e\xc5\xff\x77\xcc\x0f\xb9\xee\xa8\x29\x19\xd0\x8e\xeb\xa6\x6a\xad\xa1\x21\xe8\x42\x2f\x6e\x9d\xbe\x31\x0f\xd1\x5f\xeb\xf4\x8a\xd8\x16\x3a\xc9\x96\x0e\xb2\x7d\xa5\x4b\xa7\x49\x41\x1e\xf2\x24\x9e\xde\xfc\x8d\x70\x6f\x42\x7f\xe7\xbd\xb9\x89\x2a\x4c\xa5\x6d\x82\x32\x0d\xed\xb6\xe5\xf4\xdc\x42\xdc\x56\xd2\xcf\x4a\xdb\xdc\x98\xd5\x71\xef\x95\xba\x9c\xea\xde\x7f\xac\x95\x0f\xa6\xfc\x47\x6d\xcb\xdb\xab\x60\xdd\xd1\x8d\x47\xb6\xea\xc6\x53\x58\xa9\x80\xf7\x49\xb9\x60\xa8\x8d\xd9\xd1\x5c\x1b\x2c\x0e\x85\x34\x4d\xc7\x2e\xad\x87\x53\xf0\xd3\x87\xc8\xab\x47\x35\x07\x2f\x76\x13\x88\xa5\xb6\xd4\x7f\x3a\xa7\x3f\x18\x7f\x1b\x55\x19\xa8\x72\x6d\x9a\x55\x12\x3b\xa4\x32\xfe\x36\x89\xed\xb4\x7d\xf1\xf7\xaf\x9f\xa2\xbf\x37\x91\xb8\x51\x43\x4e\xe0\x11\x9a\x46\x70\xe8\xfc\x3d\x6e\x2f\xe9\x87\xdf\xbf\x7e\x8a\x2a\x07\xbf\x99\xe3\x79\x10\x88\x1c\xa4\xd3\x43\x9e\x6c\x66\x14\x28\x0f\xf8\xb5\x72\x29\xec\x7c\x3a\x0f\xec\x3f\xee\xf8\x4f\xc7\xc9\xc6\xe2\x83\x52\xb7\xeb\x9b\xa3\x5b\x8b\x30\xc1\xc6\x36\x26\x58\x5a\x41\xd2\x3c\x82\xf1\xd4\x42\x94\x59\xa8\x96\x51\x16\x28\xb2\x0b\x4f\x7a\x78\xf5\x57\x4d\xca\xf2\x46\x83\x76\x09\xe3\xfa\x50\x54\x82\x9a\x23\x95\x44\xd6\x47\xe9\x88\x26\xbf\xa6\xa9\x8e\x7f\xce\x0c\xcc\xe5\xd4\xf2\x70\xe6\x4c\x7b\x76\x86\xf8\xe0\x45\xfe\xa1\x8e\x5e\x52\x22\x3b\x56\xe9\x1b\xd5\xd5\x81\x6a\x88\xa7\xf5\xca\xc8\x87\x1b\x70\x0a\xe2\x17\x25\xd0\x25\x09\x23\x7e\xbc\x21\xae\xf5\x40\xbc\x9a\x13\x4e\x56\x06\x56\x5d\x0a\x7f\x38\x76\xa1\x41\xbf\xcc\xb8\xe8\x27\x0e\x58\x44\x60\xe4\x9e\x66\x11\x51\xb5\x1e\xb4\x6c\xb6\x1d\x2e\x36\x62\x9f\x00\x74\x95\xe3\x4d\x54\x65\xe3\xcc\x5d\x82\xf8\x5f\xa2\xf3\xb7\xb1\x95\xbe\xec\xae\x6b\xe3\xd7\x57\x6f\xe1\xc0\x4c\x1d\x13\x7b\x17\x82\x33\xd7\x5d\xa0\xad\x0b\xff\x5a\x2f\xdd\x1a\x01\x41\x8a\x9e\xd3\x63\x89\x61\x65\xef\x9b\x7b\xe5\xaa\x77\x97\x47\x83\x4f\xf9\xec\x3f\x20\xfc\xec\xbf\x31\xba\xae\x88\x72\xce\x1d\xa3\x18\xf2\xcd\xfe\xad\x9d\x87\x41\x4a\x99\x29\x08\xfd\x67\x4d\x84\x21\xcd\x49\x5c\xd8\xcd\x0f\x34\x3f\xa0\x5c\x84\x37\x6a\x77\xed\x13\xe3\x7e\x9b\x88\xb9\x77\x37\x7d\x78\x9a\x3e\x93\xbf\x2b\x73\x67\xfc\x44\xe9\x46\xe3\x6a\xce\x54\x94\xc6\xe9\xa5\x93\x24\xd4\x90\x3f\xbd\x79\x4e\x7e\xb1\xde\xb4\xe1\x91\x80\x63\x0b\x45\x77\x75\x65\xba\x4d\xfc\xc0\xa3\xf9\x8f\xfe\x6c\x36\x26\x76\xf2\x05\x79\xad\x6e\xa2\xe6\xa4\x27\xb2\xe1\xeb\xee\xac\x2f\x9b\x83\x72\x2b\x1d\xfe\xfa\xeb\xcf\x05\xdd\x1d\xdc\xdf\x1b\x5a\x75\xca\x1c\xa6\x4b\x97\x86\x5a\x3f\x0c\x25\x1b\x6f\xd7\x61\xb6\xf4\x1a\xc8\x39\x7a\x77\x39\xe2\xfe\xab\x9f\xcf\xda\x39\xbe\xa9\x6d\x79\x1b\xf7\x42\xa7\x52\x41\xf9\x44\x97\xe7\x4f\xef\xfe\xfe\x3d\xfa\xcd\x04\x79\xc5\x56\xa5\xbe\xdc\x3a\x9f\x3e\xe8\x26\xc4\xce\xec\x39\xff\xdc\xb1\xb6\x4a\xc2\x18\xa7\xcf\xac\x19\x3e\x2c\x1a\x97\x99\xf0\x55\xb7\x36\xaa\x5c\x1a\xd7\xd7\xed\x00\x6b\x44\x5e\xfc\xd6\x7a\x93\xe8\xd5\x77\x86\x1a\xe8\x49\x72\x0f\xb9\xff\xb6\x68\x5b\x5b\x77\x3e\x68\x17\x37\x0b\x66\x4c\x26\x27\x1d\x7a\xa0\xee\x58\x50\xb6\x0a\x7d\x5f\x77\x0b\x76\x5c\xb0\x8f\x7b\xe0\xe4\xbd\x5f\x5b\x1f\x28\x91\x44\x64\xeb\x93\x6c\x50\x88\x7f\x0c\x01\xaa\x34\xe2\x8a\x1b\x1f\xf9\x1a\xae\x5c\xab\xf6\x5d\x17\xd6\x1f\x8c\x2f\xed\x9d\x46\x74\x1e\xd5\xde\x1d\x87\xb8\x1a\xaa\x20\xe3\x0f\x90\xc8\xcc\x18\x9a\xd7\x06\x4b\x0e\x5d\x62\x6f\xff\x3b\xf6\x29\xf0\xc4\x1d\x9f\x9a\xad\x3a\x56\xb4\xa0\xe4\xf2\x02\x28\xad\x75\x41\xd1\x2a\x02\xe7\x10\x34\xc8\x8e\xe4\xaf\x7e\x4e\xf4\xc3\x87\xb0\xd6\x65\xbf\xeb\x27\x53\xe1\xe6\xef\x63\xbb\x71\xb1\x95\x8e\xa3\xbf\x39\xfc\x98\x58\x47\x42\x13\xd7\xf4\x5a\x94\x81\x34\xb4\x4b\x3a\x61\x42\x2a\xe1\x6c\xbf\x78\x9a\x63\xac\xfd\x6e\x77\xee\xfa\x41\x5b\x98\xa8\x26\xc1\xf6\x85\x67\xea\xd6\xee\xbe\x2d\xda\x6e\xac\x6d\xb0\xcd\xf2\x42\x28\xd5\x09\x93\x61\xb7\x83\x47\x5b\x7f\xeb\xc2\xbd\x75\x09\xe2\xed\x8b\xcb\xe4\x3e\xbb\x24\xe7\xd6\xd9\xed\x6f\x8e\x0f\xbd\xd8\x44\x27\xa0\x49\x51\xd2\x54\x27\x72\x3a\xb9\x64\x90\x82\xd7\x6b\x85\xd5\x9e\x45\x02\xb4\x04\x37\xc6\x19\x88\x99\x42\x32\x10\x96\x8f\xb4\x27\x2e\x0a\xc1\x48\x9c\x1c\xa5\x3d\x71\x30\x88\x0a\xd9\x52\x71\x21\xa1\xb0\x86\x38\xe3\x33\xe4\x74\x95\x3d\x31\x92\xd1\x0e\x1f\x44\x81\xa0\xf0\xde\xc2\xcc\xc5\x47\xf2\xcf\x7f\x1c\x0c\x6d\xf2\xce\x58\x43\x20\x2d\x76\x4f\xe7\xab\xc3\xf0\xdc\xd5\x38\xe3\x16\x82\x7c\xd6\x3d\x89\x54\x69\xc1\xcf\x71\x8d\x36\x03\x3e\x70\x1d\x2f\x03\x76\x4f\x6c\xf5\x53\xe4\x53\x08\x21\x7e\x1e\xed\x9e\xa4\x82\x26\xc8\xad\xdd\x93\x58\xd6\x58\xf9\xb6\x11\xc7\xe7\xe5\xe0\x46\x9b\x80\x4c\xd4\xe1\x0c\xdd\x3d\x09\x24\x9d\x6f\x44\xcd\xdd\x20\x62\x0c\x36\x44\xd1\xb3\xd1\x90\x1d\x1f\x3a\x65\xc7\xe7\x25\x65\xc7\xe7\xe5\x60\x13\x38\x3e\xcf\xf1\x22\xbe\xd9\x5b\x0d\x98\xdd\xcc\x82\xb5\xae\x32\xba\x99\xa4\xea\xa5\x28\xf4\x43\x6b\x16\x05\x66\x80\xeb\x86\xc9\xea\x81\x20\xa9\x86\x79\x31\x59\xc9\x0e\xd0\x0b\x6a\x88\xa7\xc6\x0a\x40\xff\xdd\xd9\xeb\xc7\x10\xf5\x56\x61\x45\x45\x16\x98\xc9\xa5\x82\xd3\x2b\xe3\x43\x82\x54\xc8\xa0\x1b\x95\xa0\x5b\x6c\x82\xf6\x44\xe3\xcd\xca\x09\x93\x36\x87\x3d\x20\x5e\xc0\xc4\xe2\x7e\x77\x1d\xf5\xe2\x25\x55\x96\xd6\x46\xad\x12\xf4\x4b\xd4\x8f\x3d\xd2\x71\xec\xf7\x2e\xb0\xbd\x9b\xb5\xb1\xf3\x6e\x72\x4e\xd4\xaf\x7e\xbe\x84\x1e\x6c\xbd\xc0\x1d\xfd\x55\xec\x4e\x6d\xbe\x54\xb5\xfe\xf4\x65\x01\x0a\x69\xa5\x82\xbe\x57\xf1\x0f\xcc\xd6\xd9\xa0\xcb\xad\x21\xfc\xc1\x6e\x94\x89\x9f\x3d\x9a\x85\xf2\xe7\x3f\xa7\xc2\x35\xf8\xfa\x63\xa3\xae\x6b\x9a\x49\x0e\x2e\xe0\xd0\xd4\x3d\x49\x8b\xe4\xa7\x77\x5f\xa6\xd0\xf3\xfe\xd1\x07\x1d\xbf\xde\x3d\x19\xba\x04\x5d\x0b\x3e\x49\xf9\x71\x8f\x64\x64\xfd\xe3\xbf\xec\xd7\x2a\x9a\xbe\x24\x45\x35\x17\x9b\x38\x33\x8f\x0e\x41\xb9\x3b\x20\x7d\x84\xdc\x1d\xf0\x89\x52\x35\xf2\x4b\xd8\xe6\x9b\xae\x75\x86\xb3\xc4\x46\xcd\x48\x5f\x5c\x22\xe6\x9b\x30\x77\x92\x9d\xc1\x87\xaf\xf6\x6d\xfc\x3a\x26\xf2\x57\xde\xf9\x76\xad\x9d\x5e\x4c\x66\xf1\xce\x90\xab\x4d\xf9\x18\x3d\x0d\xf8\x87\xf7\x27\xdc\x78\x6a\xde\x4e\xc2\x1c\x66\x42\xf2\x0d\x91\x8d\x48\x3f\xab\x54\x50\xd7\xca\x3f\xc1\x41\xbd\x36\x49\x2a\x9b\x01\xc6\x1a\x62\x36\xd0\x8d\x05\x92\xdd\x45\x34\xce\x30\x15\x49\x36\xca\x40\xed\x48\x37\xc6\x70\x43\x0c\x35\xc2\xe8\x06\x18\x78\x24\x52\x0d\x2f\x9a\xd1\x45\x34\xb8\x80\x73\x87\x6a\x68\x51\x8d\x2c\xfa\xc1\x4e\x37\xae\x88\x4b\x4e\xfa\xea\xb5\xaa\x8f\xd4\x3f\xd0\xbe\xc0\x34\xaf\x37\x87\xa3\x8a\x58\x6b\x7d\x58\x39\xed\xff\x7a\xf7\x39\xe6\x89\xd8\xe3\xe9\xa4\xb0\x96\x20\xa0\xb9\x82\xe3\xac\x6c\xd4\xc3\x7b\xdb\x34\x43\x64\x8e\xde\x5b\x96\x71\x2d\x8d\x7b\x6a\x74\x30\xbc\x22\xb1\xb5\x78\xfd\x5f\x29\x76\x97\x0e\x65\x59\xe4\xad\x4d\xb6\xb5\xaa\xbc\xed\xda\x24\xf6\xe0\xaa\x4c\x82\xdf\x9e\xd9\x66\x06\x6c\x53\xdb\x92\x16\x03\x41\x77\x97\x03\x88\xc9\x1d\xab\x80\xbc\xb9\x91\x58\xf9\x3e\x50\xd3\xb3\xdd\xdc\x98\x59\x92\xbc\xdc\x27\x24\xa2\xf2\x7c\x24\x34\x4f\x0e\x29\x75\x7d\x3e\x12\xd8\x2c\x1b\xcb\xb1\x22\x97\xc0\x3e\x9f\x13\x90\x63\x45\x06\xe0\x1c\x89\xc3\xd1\x20\x20\xe7\x48\x2c\xb6\x46\x00\x3a\xc5\x03\x11\x01\x3b\x45\xe3\x4c\xa4\x0e\xa8\x80\x9e\xa2\x41\xa6\x12\x68\x5c\xce\x88\xc0\x9f\xcf\x1f\x38\x0e\x00\x3a\x12\x4f\x2e\xa9\xa0\x82\x05\x53\x2e\xa7\xd3\xaf\xd8\x4d\xc2\xf3\xb1\x40\x1e\x83\x00\x44\x05\x23\xe1\x3c\x46\x06\x16\x3d\x78\x84\x08\x30\x3a\x12\xcc\x67\x34\xc0\xd1\x91\x38\x4c\x86\x64\xa8\x8d\xc4\xa8\x54\x61\x66\x83\x73\x6a\x05\xd0\x84\xec\x59\xab\x4a\x14\xc0\xf4\xf9\x58\xa8\x6c\x22\x17\x59\x23\x71\x2b\x90\xf0\x82\x0e\x21\x17\x81\xa5\x2a\xd4\xa4\x3b\xc1\xdc\x70\x1d\x45\x4c\xb3\x7b\x3e\x27\x44\xdf\x90\x00\x52\x47\x9a\xb1\xfb\x34\xb5\x7c\x66\xa1\xe9\xe9\xcd\x3a\x6a\x70\x47\x1d\x0e\x07\x80\x29\x59\x23\x4d\x1b\x15\x80\x8d\x03\x86\x35\xc1\xaf\x7a\x65\xd5\xbc\x0a\xca\x38\x79\xf5\xae\xb2\x6a\x57\x49\xad\x2b\xaf\xd2\x95\xbd\x40\xbc\x2a\x57\xbc\xc6\x95\x51\xe1\xca\xac\x6f\xe5\x58\xac\xa8\x56\x67\x2d\x37\xa7\xae\x95\x73\x22\xe2\xaa\xf3\x78\x87\xeb\x91\x58\x4a\x93\x8c\xa3\x33\xd2\x9c\xe3\x40\x5c\x60\xda\x91\xce\xd5\xf0\x98\x3a\x16\x8d\x01\xda\x8e\xc4\x87\x3e\x7a\x3e\xe7\x29\xd6\x94\x11\xa4\xa3\x60\xfb\xb0\x67\xc4\xe8\xf8\x95\x6d\x2c\xf6\x03\x12\x1b\x8b\xdf\x8c\x4c\xd6\x21\x49\xda\x88\x4c\x60\xe6\x15\xf2\x26\x64\xa2\xd1\xf9\x5d\x89\x24\xed\xc7\x98\x26\x52\x91\xed\xe2\xe3\x24\x6f\x38\x26\x13\xa6\x08\xcd\xc6\x84\xf2\x24\x6a\x34\x26\x1c\x5b\xd6\x64\xec\x64\xa2\xcc\x6e\x2f\xc6\x96\x64\xae\x03\x37\x5f\x77\x0c\x1e\x88\x0a\x1c\x3c\x12\xeb\x96\x86\x0c\x24\x3c\x12\xef\x02\x00\x01\x16\x16\x8c\x04\xaf\xf1\x71\xc0\xe1\x91\x66\x1c\x93\x26\xe2\xe9\xec\x66\x75\xa6\xc9\x3c\x18\x70\xf1\x48\xf3\xbe\x73\x24\x03\x1b\x8f\x34\xe7\xcf\xc1\xa5\x93\x0c\x80\x3c\x52\x0e\xe4\x00\x80\xc9\x23\x2d\x29\x7a\x90\x6f\xe0\x0e\xe8\xed\x06\x6d\x88\x00\xcd\x23\xb1\xd4\x02\x06\xd8\x3c\x12\x2f\xa9\x10\x03\x70\x16\x8c\x05\xaf\x34\x0c\xec\x3c\xd2\x8c\x0d\xa6\x05\xe4\x40\xd3\x01\xa1\x9f\x8f\x33\xd3\x74\x06\x5c\x7f\x90\x80\xa3\x9f\x4f\x09\xe1\x6a\x1a\x90\xf4\x48\x2c\xfd\x81\x00\x4b\x8f\xc4\xdc\x44\x04\x68\x5a\x38\x14\x1d\x78\x5a\x30\x10\xce\x2e\x64\x40\xea\xe7\xb3\x42\x58\x86\x0a\x50\x3d\x12\x87\x69\x20\xc0\xea\x91\x98\x3a\xf0\x8c\xb2\x19\x71\x7e\xa1\x02\x5d\xef\x9f\x00\x22\x4b\x30\x6f\x51\x01\xb0\x47\xe2\xb0\xd6\x24\x1b\x1e\xd2\x1f\xdf\x8c\xa3\x24\xe1\xce\x91\x80\xb4\x47\x62\x15\xd1\x70\x80\xb5\x47\xe2\xf9\x3d\x0c\xa0\x6d\xd9\x80\x13\x99\x7d\x30\x10\xb7\x6c\x34\x1a\x30\xb7\x6c\x0c\x18\xa8\x5b\x34\xdc\xac\x03\x8d\x00\xa0\xf7\x48\x73\x0e\x96\xe5\x40\xc7\x01\x4d\x19\x5f\x42\x81\xc2\x05\x73\xc4\x8f\xb2\xe3\x00\xe2\xfb\xdf\x1e\x07\x12\xdf\xff\x16\x00\x14\x1f\x09\x5e\xdc\x8d\xed\x1a\xc8\xca\x81\x57\x94\x00\x61\x3e\xd2\x6c\x2d\xa8\x29\xa5\x9e\x0a\x79\xfe\x7c\x9c\xf9\x58\x6b\x44\x48\xf4\x91\x60\x8e\x65\x41\xa4\xef\x1e\xe6\x18\x7b\x08\x64\xfa\x48\xb3\x66\x33\x7c\xff\xa9\xd0\xea\xcf\x67\x85\xec\x2a\x03\x6a\x7d\xf7\xec\x8c\x83\x9a\x44\x28\x76\xc1\x20\x9c\x28\x5e\xba\xd2\x18\x0c\xb2\x7d\xf7\xd4\x7c\x77\x30\xf7\xbd\x48\x5e\x4e\x45\x86\x82\x3f\x78\xe0\x3c\x53\x7d\x01\xc8\xf8\x91\x26\x4d\xf6\x65\x40\xc9\xcb\x07\x2d\xb8\x70\x89\xe2\x47\xe5\x28\xae\x05\x1f\x79\x71\x24\x61\x72\xe3\x40\x5c\x24\xc6\x91\xa4\x88\x8c\x23\x49\xb2\x72\xf7\xc4\x45\x68\x7c\x3e\x0b\xd1\x92\x4a\x90\x61\x0b\x26\x72\xe3\xfe\x59\x06\x82\xe3\x48\x82\x34\xee\xc3\x17\xa0\x88\x8e\x23\x71\x02\x0d\x87\xe3\xb2\x37\x8d\x87\xf4\xf8\x7c\x70\xf4\x44\x7f\xfe\x34\x6b\xcd\x59\xd0\xf7\x23\xbd\x5d\x9d\x2b\x81\xc8\x8f\x39\x8f\x22\x0a\x64\xfe\x48\x51\x8e\x82\x22\x06\x84\x7e\xe4\x19\x49\xb5\x69\x21\x86\xd6\x1f\x49\xac\x1e\x8b\x7c\xda\xfe\x74\x16\x42\x1e\x89\x01\xc9\x3f\x52\x2c\xc1\x8e\x02\xd1\x3f\x52\x34\xd9\x16\x42\xf6\x47\x9f\x8f\x14\xc2\x3f\xf2\x84\xe2\xa8\x1a\x01\xb4\xff\x48\x11\x34\x8d\xdc\x08\x5d\xaa\x21\x29\x18\x9c\x06\x9e\xf5\x92\xde\xae\x31\x95\x1d\xd8\x3d\x9d\xcd\x91\x9a\x1d\xd8\xec\xc0\x82\x4f\x33\xd5\xad\xbb\x33\xa5\x7e\x57\x96\xb6\x6b\xc2\x37\x7b\xab\x19\x6e\x90\xb0\x55\x40\x57\x19\xdd\x9c\xa4\xbe\xb7\x28\xf4\x43\x6b\x9c\xda\x6e\xdd\x95\x2e\x6d\x83\x15\x8e\xed\x89\xd3\x41\xfe\x39\x49\x35\x17\x5f\x67\x9d\xac\x42\x9a\xa5\x65\xd8\xbc\x3e\x59\xd1\x32\xa3\xdb\xed\x70\xaf\x90\xea\x02\xe7\xef\xce\x5e\x3f\x86\xa4\xb7\x7d\x2b\x67\x3b\xe8\xd6\x61\xe6\x97\x7d\x23\xec\x7f\xfa\xe4\x5f\xdd\xa8\x26\x75\x89\xf7\x24\x0d\x54\xc7\x1b\xd2\xd9\xdd\x8f\x8e\x7b\x09\x5e\xa8\xa6\x92\x46\x77\x9d\xf4\x22\x75\xaa\xbc\xe0\x8d\x5a\x4d\xd0\x69\x5f\x3f\x6e\x7f\x9f\x7c\x9c\x33\x6c\xbc\x4d\x84\x14\x17\x4d\x2d\x67\xdb\xee\x68\xca\x6c\xdb\x59\x76\xc3\xee\x15\x02\xf9\xd7\xa9\x7b\x67\xfb\x52\xd5\xfa\xd3\x97\x33\x50\xb4\x4f\x60\xf7\xe9\x53\xe1\x9c\x0d\x03\x6c\xd6\x07\xbb\x51\x26\x7d\x1d\x46\x56\x1e\x3b\x9a\x52\x79\x78\x5f\x7f\x6c\xd4\x75\x8d\xb9\x6c\xcc\x85\x1f\x50\x8b\x27\x01\x33\xda\x21\x24\x4f\x70\xee\xf9\x47\x1f\x74\xfa\x0e\x50\x18\xcc\xb7\x60\x28\x5c\xdb\x3f\x69\x25\xba\x87\x3b\x8a\x20\xfd\x89\x7e\x8d\x93\x9d\x0f\xd0\x2d\xc3\xd9\x26\x34\xce\xbb\x77\x69\xee\x0f\xff\x3a\xe5\xfe\xf0\x23\x4d\x16\xdb\x9b\xae\x75\xfb\x84\x40\x60\xb8\xf6\x1c\xce\x5a\x9b\xb4\x72\xec\xec\x0a\x08\xb2\x19\x7a\x40\x93\xd9\x36\x87\x43\xf9\x36\x7d\xc5\x37\x2e\x4c\xdd\x75\xd2\x02\xcf\x3b\xdf\xae\xb5\xd3\x67\x53\xf1\xb3\x33\xf4\x6b\x53\x3e\x26\x2f\xc7\xf9\x61\xbc\x09\x19\x16\xcd\xff\x9c\xb0\xd6\x08\x48\xe2\x04\xc5\x01\xfa\x79\x6b\x02\x29\x0e\x86\x32\xf3\x50\xd8\xfd\xa9\x29\xeb\xce\x9b\x3b\xf2\x7e\xe3\xa7\xc2\x30\xd0\x37\x43\xe7\x29\x78\x93\xf7\x43\xd4\xa6\x49\x3d\xcc\xff\xa3\x8b\x23\x38\x02\xc4\x17\x4e\x7b\x92\x6b\x87\xf2\x45\xe7\xc8\x56\x5f\xca\xcf\xf3\xff\x9d\xe2\xe3\x12\x03\xf3\x8f\xbd\xa3\x92\x0d\x90\x14\x5d\x7f\xb8\x10\xa6\x57\x08\x24\xdd\xfe\xe1\x3c\xba\x82\xbc\x03\x68\x42\xfe\xde\xdc\x24\x11\xa0\x5d\x46\xf6\x32\xb9\x00\xd8\x26\xf2\x4f\x7d\xe9\x4c\x1b\xae\x48\x29\xd8\xc8\x72\xab\x7b\xff\xb1\x56\x3e\x98\xf2\x1f\xb5\x2d\x6f\xaf\x82\x75\x24\x46\x41\xb7\x14\x33\xfa\xf0\xfd\x44\xbb\x8e\x72\xa2\x31\x78\x0c\x06\x75\x1a\x71\xd3\x00\xad\x36\x07\x57\x16\xb1\xfc\xa0\x0a\x73\x48\x95\xf5\xc8\xed\xd4\x56\x12\xb0\xb2\x51\xe5\xda\x34\x2b\x24\x00\x0b\xb3\xe7\x08\x85\x9f\x74\x80\xef\x5f\xc9\xb5\x85\xf0\xfb\x13\x8b\xef\xad\x69\xc8\xce\x05\xe3\x48\x4e\x2b\x84\x98\x8c\x8c\xac\x40\xfe\xf1\xf7\xaf\x9f\x92\xc8\x13\x15\x9d\x1c\x95\xa7\xf4\x3a\x0f\x0f\x78\xc2\x3c\xe3\xd7\xca\x41\x51\xa7\xa4\x7a\x75\xff\xc1\xb4\x9f\x8f\x93\x8f\xcd\x37\xa5\x6e\xd7\xb4\x36\x60\x28\xd3\xa0\x89\x55\xe0\xfd\x12\x3b\x3e\x47\x8f\xf9\x23\x97\x2c\xb3\x53\x61\xa3\x4c\x51\x75\x42\xc1\x92\x29\x34\xae\xcd\x09\x2e\x4e\x00\xcb\x0b\x47\x6e\x91\x3c\xac\xa4\x7a\x04\xc8\xa6\xc2\xf4\x82\x69\x2a\xda\x27\xce\xcc\x6d\x98\x4a\xae\xde\x20\xd3\xbf\x09\xc7\x04\x6a\xa4\x84\xee\x2c\x23\x33\x64\x1a\xaf\x16\x3a\x7c\xc1\x93\x9a\x77\x8f\x09\x67\x80\x30\xaf\x30\xf1\xcc\x0f\x7e\xd6\x07\x37\xe3\x03\xcf\xf6\x60\xde\x87\xa3\x59\x1e\x58\x86\x07\x98\xdd\xc1\xb8\x5c\x46\x2d\x3c\x44\xcb\xc2\x4b\x8a\xa6\x8b\xa0\x27\x11\xa6\xd6\x68\x6d\xf7\x61\x85\x06\x81\xc1\xcd\x2d\x46\x21\x41\xf1\x3f\x97\x43\x7d\xaa\x78\x26\x8e\xd4\x2f\xc3\xd9\x4b\xbf\x76\x60\x90\x88\x0a\xf0\x06\xcd\x02\x6c\x42\x96\xed\x15\x02\xf1\xec\x15\x5e\x5f\x33\x7e\x86\xac\xa4\x77\x99\x20\x51\x56\xd0\x9f\x6c\xf2\xec\x53\x5e\xd7\x31\x66\x42\x69\xb6\x23\x0f\x48\xd6\x13\x4c\xd4\x05\x57\xd2\xf7\x4b\x20\x17\xec\xde\x5e\x82\x31\xf9\xfd\xbb\x26\x17\x45\x56\x57\x2e\x96\x24\x72\x9c\x98\x79\xb9\x25\xd0\x00\x08\xea\x3d\x1c\xc1\x87\xd0\xee\xf1\xe0\x31\x8a\x72\x9f\x32\xb5\x86\x86\x6c\x3f\xb3\x58\x27\x00\x30\x75\x2e\xc9\x11\x38\x6a\xfd\xfc\xee\x95\x20\x94\xfa\xb9\x4d\x1f\x93\x2a\x08\x91\xfe\x6d\x05\x1f\x40\xe4\xf9\xb9\x7b\xc3\xf9\xe6\xe5\xac\x03\x0d\x00\x82\x3c\x2c\xc6\x38\x72\x3c\x9e\x4c\x85\x23\xc6\xa7\xb4\x36\x58\x28\xf1\x33\x33\x3e\x66\x9a\x9f\x89\x21\xc1\xcf\xee\x7a\x19\x93\x75\x32\xea\x3b\xc6\x9d\x74\xb4\x77\x58\xd6\x51\x94\x77\xc6\x06\xa1\xe8\xee\x8c\x21\x30\x54\xf7\xa4\xf7\xe0\x10\x92\x3b\xc6\x06\x08\x82\x3b\xca\x08\x30\x72\x3b\x43\x3f\x2d\x38\x7b\x0b\xe3\x01\x04\x9d\x9d\x1c\xed\x80\x78\x05\x41\x64\x47\x59\x25\xe9\x46\x86\x74\x47\x24\xa8\xca\x13\xec\x0a\x19\x6d\x1d\x4e\xb0\xe7\xa2\xac\xe3\x36\x3f\x13\x5d\x1d\x1f\x28\xb1\xb9\xc4\x42\x53\xc7\x47\xa1\xa3\xa8\xe3\xef\x66\xa1\xa7\x2f\x3f\xa8\x05\x22\xa5\xcf\x2d\x60\x93\x1d\xf3\x84\x31\x0f\x0e\xfa\x79\xd2\x63\x84\x86\x78\x4e\x45\x3b\x87\x91\xce\xa1\x05\x24\xe2\x8f\xcf\xca\x5e\x98\x42\x96\x10\x9c\xf1\x39\xd8\x24\x00\xae\x38\xc4\x1f\x6c\x3c\x71\xd8\x9c\x41\x71\xc4\x67\xc7\x36\xd8\xbe\x22\x98\xe1\xd8\x8e\x31\xb1\xc2\xe7\x16\xda\x02\xb0\xc1\xd3\x0a\x20\x0d\x0f\x1c\xdb\x23\x18\x07\x7c\x66\xbb\x93\x2b\xb0\x5f\x9f\x07\x95\x0f\x10\x6c\xef\xb3\x49\x1c\x04\x71\xbc\x27\x49\x1d\x64\x62\x77\xf3\xd3\xa4\x98\xb8\x65\x6c\xb8\x33\x29\xd4\x99\x00\xe6\x4c\x90\x5e\x35\x90\x04\xde\x2c\x06\xb4\x19\x37\xd7\x6f\x4f\x12\x48\x33\xe1\xf2\x49\xa0\xcc\xb8\x30\x66\x6c\x08\x33\x66\xe2\xe7\xe1\xc3\x1c\xe8\x32\x1e\x6c\x99\x60\x63\xf8\x70\x65\xf8\x49\xfa\xfc\x49\x78\x6d\xd9\x18\xdb\x6f\x47\x37\x4a\xf1\xb4\x63\xc0\x50\xc6\xc1\xd1\x16\xab\xea\x22\x16\x7e\x76\x84\x99\xc8\x41\x1c\xa5\x98\xd9\x22\x75\x56\xe4\x93\x4f\xca\x03\xb1\x70\xb1\x63\x08\x68\x34\x3c\xec\x28\x32\x1a\x01\x07\x3b\xca\x3c\x62\xe0\x5f\xcf\x42\x55\x08\x31\xaf\x85\x9a\x42\x66\xe4\x2d\xc9\x58\x63\x0e\xca\xc1\xb5\x7e\x3b\x06\x4c\x76\xee\x16\x7a\xc4\x65\xe7\xee\x38\x65\xe7\xee\xd7\x24\xc6\x9f\x16\x14\xcf\xb2\x71\xa7\x05\x5b\x13\x01\x6f\x5a\x86\x35\x2d\xd1\x36\x0b\x01\x9c\x99\x06\x3e\x26\x79\x09\x20\xd8\x4b\x90\x8c\x21\x0d\x4d\x1c\xc0\x8e\x46\x25\x11\xc2\x8c\x9e\xe1\x05\x11\x8a\x11\x8d\xa7\x25\x42\xd8\xd0\xf0\xeb\x13\xb6\xaf\x43\xb1\xa0\x13\x27\x47\x93\xf1\x9f\x01\xec\x67\x48\x8a\x88\x98\xcf\x33\xbb\x63\x85\x30\x9e\xe1\xb7\x83\xd8\xce\xf0\xfb\xcf\xa0\xf5\x28\x80\x65\x39\x43\xfd\xf8\x66\xf3\x01\x67\xd3\x17\x94\x8a\xc9\x9c\xae\x83\x28\x80\xc3\x3c\x33\xe5\x07\xe2\x2e\xe3\xe9\x45\x4c\xbc\xe5\x2c\xe8\x34\x9a\x42\xd0\x71\x2c\x65\xc6\xe2\xe2\x18\xca\x78\x13\x0e\x1c\x3b\x19\x1f\x03\xc2\x4c\x66\xda\x9b\xb3\xe9\xec\x4e\xc7\x47\xc6\xb0\x91\x01\x5c\x64\x50\x4f\x3b\xd3\x92\x8b\xb7\xa0\xa5\xa3\x07\xbe\xcf\x26\xbf\x6c\x7e\x8d\xe9\x72\x23\xdd\x3d\xe5\x46\xba\x89\xfc\x95\xd4\xbd\x6e\x27\x40\x08\xc1\x94\x26\x02\x83\x3c\x33\xf3\x36\x5b\x85\x89\x3b\xe4\x27\xad\x24\x61\x42\x1a\xa7\x14\x06\x18\x66\x78\x66\x02\xc1\x84\x15\x96\x8d\x33\x01\x93\x24\xc4\x96\xe6\x94\x30\x10\x73\xd9\x00\xd6\x23\xff\xd4\x37\xaa\xf5\x6b\x9b\x02\x6c\xd1\xad\x48\x4c\x0c\x98\x7a\x2c\x51\xa5\x1d\xd5\x54\x9d\x09\x4d\xa1\x41\x74\x11\xf0\x66\x2a\x8f\x5d\xf4\x33\x20\xfd\xa8\x9f\x66\x34\xa6\x0a\xca\xaf\xbf\xea\xad\x54\x6b\x62\x77\x02\x84\xb3\x12\xec\x15\xf1\xd3\x48\x3f\x7b\x0a\x1b\xbe\x36\x43\xea\xd7\xaa\x95\x3e\x7e\xd7\x45\xfe\x4c\x8a\x44\x12\xa5\x11\x5e\xda\xe3\x52\xa8\x9b\xbb\x48\x93\xc3\x0e\x51\xba\xb5\x04\xaa\x9f\x3b\x55\x77\x09\xdf\xfc\x9b\xb3\xc4\xc8\x11\x6e\x43\xee\xea\xae\xfe\xa5\x1f\xa1\x04\xdd\x79\x3b\xe2\x78\xce\x11\x73\x20\x5e\xae\x11\x2f\xcf\x28\xb5\x4b\xcd\xf0\x91\xf1\xca\x0b\x1e\xdf\x70\xab\x2b\x98\xbb\xca\xac\xa0\x98\x2c\x50\x82\xd7\x45\x30\xf6\x96\x9f\xbc\xcf\x2e\x01\xe5\x26\xe8\x33\xb7\x99\x95\x84\xcf\x1c\x8b\x97\x68\x3f\x19\x47\xc1\xe9\xf3\x0c\x86\x1a\x42\x22\xf9\xa0\xc9\x07\x0d\xca\x3b\x58\xb6\x11\x79\xf6\x24\xaf\x89\xe1\x8d\x1f\x37\x81\x5b\x67\x37\x3a\xac\x75\x77\x94\xa9\x11\xf6\xd7\x0f\xad\x75\x21\x4d\x87\x62\xaa\x93\x5f\xcc\x32\x97\x88\xe0\x72\x8c\x34\xc9\x85\xd4\x64\x6a\x03\x70\x4d\x62\x8c\x44\x77\x55\x46\x12\x01\xdd\xf0\x5c\x17\xf9\xd0\x85\xa4\x66\x47\x58\x72\xc2\x2b\xa7\x88\x30\x30\xbf\xac\xa2\x10\x95\x56\x14\xa2\x3a\x1b\x5e\x95\x8d\xa0\x54\x86\x5f\x8c\x2e\xe3\x47\x69\x01\xba\x90\x3b\x84\x45\xe7\xa2\xd1\x25\xdc\xc1\x2f\x31\x17\xf0\x88\xbc\x2e\x5a\xc6\x2b\x11\x6a\xa1\x85\xec\x22\xaa\x7f\x16\x17\xed\x49\x6a\x9e\x4f\xc6\xa9\xec\x0a\x67\x01\xa3\xf2\x5c\xb6\x91\xf2\x01\x0b\x51\x3e\x60\x53\x3d\xc8\x71\x68\x49\xae\xa1\x60\x56\x78\x39\x84\x23\x17\x43\x4d\x85\x74\x06\x76\x92\xe3\xe8\x83\xda\x6c\x0c\x1d\x21\xa1\x10\xa3\x44\x15\x7c\x39\x66\xb3\xa6\xf6\xe7\xfb\x85\x78\x56\xb9\x2e\x3b\x67\xc2\xe3\x7b\xdb\x04\xfd\x40\x66\x79\x0e\x6f\xa9\xba\xb6\xf7\x97\xce\xdc\x99\x5a\xaf\xf4\x47\x5f\xaa\x5a\x21\x68\x3e\x05\x5b\xed\x96\xaa\x55\xd7\xa6\x36\xe8\xce\x71\x4f\x54\x55\xc1\x9a\x9d\xd9\x0c\x43\x70\x06\x72\x5b\x0c\x54\xce\x82\x6d\x23\x97\xf3\x75\x2c\x9d\xd2\x8e\x2c\x0d\x6d\x3a\x8f\x93\x5b\x67\xcb\x3f\x6c\x47\x2f\xd4\x2d\xf8\xd7\x1a\x43\xce\xe6\x57\x6b\xc3\x6f\xa6\xd6\x58\x49\x45\xc1\x8f\x86\x77\xcd\x3b\xff\x3b\x52\xad\x5d\x08\xda\x14\xf0\xd2\xba\xfb\x39\xfe\x69\x9b\xed\xda\x4c\xb4\x22\xdf\x81\x32\xbf\x62\xf2\x05\xf1\xfa\xb3\x69\xba\x87\x2f\x18\xc0\x64\x21\x50\xb1\xb5\xbe\xd3\xb0\xe9\xce\xd6\x27\xce\xd6\xb0\x93\xc2\x1e\x2c\x00\x99\xa7\xe2\xc1\x90\xf2\x51\xe1\x60\x2c\xe5\x7a\x6f\x9a\xca\xde\xfb\x09\x39\x6b\xb5\xf1\xea\xbd\xd3\x95\x6e\x82\x51\xf5\x55\xab\x49\x38\xcd\x87\xc4\xde\x8c\x97\x43\x73\x22\x46\x7c\x2e\x1f\x15\xcd\x84\xa3\xa6\xb7\x71\xa1\x9f\x6f\x15\x9f\xbb\xa3\x05\x05\xa0\x2f\xae\xd5\xb5\xa6\x21\xfa\xf0\xdd\x8d\x94\x19\xf7\xa9\x52\x6e\xe9\x9e\x36\xea\x65\x23\x27\x19\x79\x29\xc8\x4e\x38\xa2\x7d\xe8\x4e\xf7\x3c\x79\x03\x71\xaa\xe7\xf8\x05\xf4\xfc\x6b\xcc\x59\x86\xb2\xfa\x05\xce\x31\x66\x56\xa2\xce\x30\x9c\xba\x40\x77\x7e\xe7\x97\xb9\x80\x38\xb7\x73\x9b\x3d\x24\xb3\x98\xd3\x8a\x71\x18\xe4\xa4\x42\xcb\xc2\x77\x4a\xb1\x2f\xc0\x9c\x50\xd4\xd7\xc2\x7c\x2c\xd4\xd9\x64\x7c\x29\xd5\xb9\x4c\xfb\xa1\xb8\x13\x89\xaa\x26\xc8\x69\xc4\xab\x5c\x01\x27\x11\x7e\x39\xe2\x14\xc2\x2f\x4f\xd8\x43\x08\x52\x4a\xb8\xb3\x07\xb7\x01\x64\x3b\x77\xf0\xa2\xca\x9c\x39\x9c\xfb\x38\xce\xdb\xc9\x6d\x2a\xd2\xcf\x5a\xd5\xf9\xd7\xcf\x29\x9a\xce\x6b\x6d\xf5\x4d\x6f\xda\x5a\xbd\xde\x62\x92\xca\x53\xa5\x6d\x82\xb3\x75\x7d\x5c\x76\x20\x43\xb0\x69\x6c\x50\x64\x01\x58\xb4\x3d\xbd\xd1\x41\x55\x2a\xa8\xbc\x7e\xbc\x9f\x7a\x82\xfe\x82\xd6\xee\xe6\xc6\x34\x26\x90\x12\x41\x50\xcd\xdb\xd8\x4a\xbf\x03\xde\xcf\x19\x63\x78\x46\xdf\x68\xe7\x74\xf5\xa1\xdb\xee\xcc\x55\xb9\xd6\x55\x57\x9b\x66\xf5\x69\xd5\xd8\xdd\x9f\x3f\x3e\xe8\xb2\x43\x2f\x1f\x19\xb7\x58\xfc\x9c\x9c\xe1\x3b\x78\x2d\xa3\x65\x99\x40\x1b\x15\xca\xf5\xc7\x87\xd6\x0d\x15\xc6\xcc\x26\xfb\xec\xee\xfe\x45\x24\x04\x12\x41\x97\xff\x42\x9e\x5d\x34\xd0\xf6\x2b\xd4\x91\x9a\xe5\x49\x26\xd2\xa7\x8b\x0b\x16\x53\xb8\x9f\x03\x45\xf9\x12\xfe\xc5\xf5\x9e\xe4\xf8\x27\x3c\x2c\x81\xe1\xd9\x91\x29\x98\x2f\x10\xe4\x17\x1e\xbe\x80\xbb\x7e\xbd\x76\xe8\x33\x69\xb3\x62\xc8\x8a\x21\x2b\x86\x67\xf4\x76\x15\x83\x60\xf0\x7b\x6d\x56\x6b\x10\xac\xa8\x10\xc3\xe1\xf0\x12\x1d\x0a\x09\x52\xc4\xce\xa2\x03\x1f\x1c\x16\x08\x7a\x88\xb9\x1d\x1c\x0e\x18\x97\x23\xbe\xbd\xcd\x55\xf6\x5b\x57\xe3\x4a\xd7\xba\x0c\xd6\x7d\xd3\x0e\xd7\x4e\x4c\x95\x96\xcd\xee\x7c\xba\x3e\xa7\x7c\xba\x1e\x52\x3e\x5d\xb3\xd9\xcd\xa6\xac\x18\x9e\x53\x56\x0c\x7b\x7a\xbb\x8a\x41\x30\x38\x6f\x58\xce\x56\x5d\xbc\xb4\xc8\x60\x9b\x34\x6d\x15\x4c\x6b\xab\x1c\x9b\x06\x9e\xdc\x2f\xd7\x76\x37\xa7\xb6\x94\xfb\x5c\xca\x91\x9d\x78\x3a\x43\x7e\xa0\xc5\x31\xd7\x8b\x18\x9a\x3c\xc6\xe9\x5c\xc8\x4f\xe8\x22\xde\x91\x12\xe7\xa4\x8e\x3a\x21\xf9\x89\x5d\xc4\x39\xb5\x8b\x98\x5f\x15\xe3\xf4\x2e\x22\x9c\xe0\x85\xf0\x14\x2f\x62\x9c\xe4\x45\x8c\xd3\xbc\x88\xb2\xa6\xbd\x76\xf9\x4c\xce\x19\xff\x39\xc9\x0b\x57\x9f\x53\x14\xae\x8b\x64\x2e\xb1\x5f\xb0\x4b\x64\x3f\x85\x1f\x25\x5e\x41\x19\x67\x05\xdb\xda\xda\xae\x1e\xff\x75\x92\x5e\x0f\x92\xa6\x07\x07\x33\xcf\xa1\xe9\x5f\x13\x3b\x34\xfd\xdc\xa0\xcb\xf1\x69\x12\x4d\x6a\x73\x0b\x8d\xde\x1c\x9b\xce\x21\xa8\xe7\x94\x43\x50\x87\x94\x43\x50\xc2\xd8\xb4\xc4\x58\x8d\x69\xa8\x46\x32\xb1\x98\x8b\x29\x78\x58\x62\x98\xb2\x25\x51\xb4\x5a\x7c\xae\x11\x19\xa2\xfc\xfa\x66\xa6\x75\xc4\x35\x3e\x27\x33\x72\x58\xf1\xce\x26\x98\x1c\xf3\x04\x9e\xcc\x31\xcf\x1c\xf3\xfc\x29\xe5\x98\xe7\xeb\x94\x63\x9e\xbf\xa6\x1c\xf3\xdc\x53\x8e\x79\xa6\x7a\x41\x8e\x79\xe6\x98\x27\x99\x72\xcc\x93\xf2\x74\x8e\x79\x92\x29\xc7\x3c\x73\xcc\x33\xc7\x3c\xf7\x94\x63\x9e\x39\xe6\x99\x63\x9e\x3d\xe5\x98\x27\x34\x6c\x8e\x79\xb2\x07\x82\x7e\xbe\x2c\x88\x75\x22\xda\x1a\x30\x59\xdc\xee\xc0\x50\x3c\x18\xdc\x0c\x22\xab\x71\x47\xc0\x10\xd5\xd8\xc8\xab\x7c\x24\x35\xbe\x49\xc8\x32\x04\x05\xba\x92\x07\xec\x22\x18\x90\x0f\xe8\x82\xb5\x4c\x3b\x24\xae\x7a\x45\x0d\x27\xa6\x5a\xe5\xa1\xa3\xf1\x79\x4c\x82\x8a\x26\xd8\x79\x01\x1a\xda\xe4\x07\x2b\x0f\x01\x8d\xb9\xff\x32\xe4\x33\x11\x58\xa4\x04\xf1\x4c\xc0\x0a\x6c\xa4\x33\xc1\x98\x7c\x84\xb3\xc9\xb9\x8f\x85\x6a\xc6\x64\x3e\x3e\x9a\x59\x3e\xe4\x7e\x49\xf9\x90\x93\x3e\x84\x7d\x0d\x80\x4c\xc6\xf2\x48\x68\x26\xbe\xd9\xa8\x95\xbe\xec\xea\xfa\xaa\x97\xa9\xd8\xce\xc9\xec\xec\xfd\x94\x4b\xd9\x98\xf0\x7e\x3c\x9e\x4e\xbf\x90\x08\xd0\x37\x23\xe6\xc1\xd2\x34\xb8\x33\x5e\xda\xcd\x46\x35\x80\x82\x98\xeb\x87\x00\xc8\xe5\x8c\x8f\x60\x37\x34\x99\x12\x05\x84\x81\x61\x2e\x1d\x0d\xc7\x31\x97\xdd\x8d\x88\xb1\xcc\xe5\x57\x33\x82\x6b\x19\x71\xb4\x97\x0f\xb9\x1a\x61\x70\x19\xec\xaa\xc4\x8c\x19\x48\x72\xe9\xc1\xbd\xf0\x10\x85\xd7\xf9\x08\xe7\x72\x2e\x95\xa2\x9c\x47\xe0\x17\x21\xd2\xb9\x78\x06\x32\x7e\xe1\xe3\x9d\x0b\xb9\x46\x8e\x79\x2e\xe7\x9e\x08\xb8\xe7\x11\x18\x48\x84\x7d\x1e\x61\x7c\x19\xfe\xf9\x89\xf9\x97\x8d\x82\x2e\x64\x5f\x19\x12\x7a\x3e\x9e\xf3\xf1\x0c\x90\xb8\x89\x0e\x23\x2e\xcb\xea\xa2\x83\x60\xa4\x8b\xc2\x29\xa0\xcb\x84\xd9\xef\x93\xb9\x4d\x3b\x33\x9f\xa1\x44\x24\x0a\x84\x2b\xc0\x22\xe1\x95\x08\xae\x44\x68\xd9\xc2\xd3\x3a\x7d\x63\x1e\x26\x73\x34\x87\x13\x25\x73\x02\x65\xe0\x49\x39\x61\x22\x35\xd5\x87\x50\x93\x26\x10\xec\x82\xb4\x97\xb6\x36\x25\x60\x3f\x30\xc6\xaa\xcd\x8d\x2e\x1f\x4b\x04\x95\x98\xc7\xc7\xad\xf5\xe1\x2a\x28\x1a\x44\xa7\x74\xb0\x2d\xe9\x07\x1c\x70\x57\x6a\xef\xc1\xe1\xcb\x43\x5a\x6e\x71\x84\xc0\xee\x59\x87\xd0\xfe\xae\x19\x55\x02\xb2\x8d\x5a\x5b\xcf\x18\xb3\x90\x2f\xf4\xf6\x7b\xff\xa9\x55\x45\xbc\x32\x78\x49\x27\xcf\x03\x97\x78\x15\x45\xd4\xfc\xeb\x13\xcf\x42\x9e\xf5\x0c\xda\xe1\xcf\x1f\xee\x97\x40\xa4\x2d\x4e\x96\xf3\xdc\xb2\xa3\x70\xc2\x6d\xa3\x42\x44\xbf\x24\xd5\x3c\x7e\x61\x05\x10\xfa\x1c\x58\x76\x4d\xd2\x8f\xef\x10\x30\xec\xc3\xc5\x6d\x77\xad\x5d\xa3\x83\xf6\x17\xa6\x09\x17\xd6\x5d\x0c\xaf\xfb\xbf\x22\x38\x16\x2b\xf9\x72\xad\xb9\xca\xe0\x64\xd5\x70\x5b\x1e\x98\xf2\x84\x0b\x65\x7b\x65\xcb\xdb\x37\x74\xc6\x65\x29\x8b\x28\x65\xcb\x61\x75\xe6\x83\xad\xd3\x57\x81\x0e\x96\x3d\x3e\x94\xdd\x02\x0a\x65\xb7\x00\x1b\x36\xbb\x05\xbc\x37\x64\xb7\x60\x47\xd9\x2d\xc8\x6e\x01\x85\xce\xd5\x60\xc9\x6e\x01\xed\xd1\xec\x16\x90\x29\x4b\xd9\x0b\x5a\x0e\xab\x4f\x93\x8c\x5f\x14\xb5\xb9\xd3\x8d\xf6\xfe\xd2\xd9\xeb\xe4\xb7\x19\xb8\x17\x21\xa9\x81\x62\x7a\x0f\xcb\x2a\x6c\xe7\x56\x26\x2a\x53\x77\x4e\x7f\x5b\x3b\xed\xd7\xb6\x06\x97\x89\xdf\x6b\x88\xab\x56\x58\x9e\x0d\x9f\x79\x78\xda\x5e\xc0\x00\x22\x4f\x86\xcd\xb1\x52\x0f\xe6\xa4\xa9\x52\x22\xaf\xe5\xa4\x59\x7d\x4c\x4f\x85\xef\xa5\x44\xe8\x2f\xc2\xf1\x4e\x78\x9e\x89\x60\x6b\x78\xb6\x12\xd3\x4e\x92\xda\x48\x42\xfb\x28\xb2\x6d\xc4\xf5\x3e\x26\x2f\xa1\x85\xcd\x30\x26\xf3\x9b\xc6\x04\xa3\xea\x0f\xba\x56\x8f\x57\xba\xb4\x0d\x8a\xfc\x39\xfd\x21\xd9\x6a\x67\x6c\xb5\x90\xc9\xfa\xae\x2c\xb5\xf7\x8b\xb1\x40\x98\x9e\xe7\x82\x6c\x90\xac\x3d\x99\xda\x73\xee\xaa\x2c\x98\x8d\xb6\x5d\x58\x84\x62\x60\x7c\x62\xf2\xe6\x47\xdb\x7d\x4a\x59\x25\x2c\x48\xb0\x1e\x0a\x7c\x2e\x19\x92\x2b\xe9\x17\xcb\x17\xdd\xad\x52\xfb\x74\x39\x59\xd6\xf1\x76\xb8\xe5\x2c\xce\xa4\x75\xc6\xad\xb3\xc1\x96\x16\x4e\x53\x66\x0e\xc8\x2b\xb9\x78\xc6\xe1\x88\xc6\x9b\x26\xa9\xd9\x69\x55\x99\x1c\x3d\x3b\xa4\x1c\x3d\x3b\xfe\x74\x8e\x9e\xfd\x8c\x72\xf4\x0c\xa0\x1c\x3d\xc3\x1f\xcc\xd1\xb3\x23\x03\x66\xff\x2f\x47\xcf\x7e\x3e\xc3\x1c\x3d\x9b\xd9\x64\x73\xf4\xec\x08\xe5\xe8\x19\xe5\xf9\x39\x68\xcf\xb9\xab\xb2\x33\x8f\x9e\x8d\x2d\x46\x20\x4c\x49\x8e\x54\xd6\x66\x63\x90\x30\x5a\x11\x09\xa5\x81\xcd\xe9\x82\xe6\x12\xda\x9f\xff\x97\x32\x1e\xf2\xba\xec\x9c\x09\x8f\xef\x6d\x13\xf4\x03\xa0\x2e\x79\x1c\xa7\xea\xda\xde\x5f\x3a\x73\x67\x6a\xbd\xd2\x1f\x7d\xa9\x6a\x85\x02\x2e\xf1\x6b\xf2\x4b\xd5\xaa\x6b\x53\x1b\x7c\x27\x05\x0d\xc0\xab\xb3\x0f\xd9\x14\x45\xe5\xd0\xba\x97\x62\x71\x5f\xc9\xae\x0a\x7a\x62\x76\x90\x0d\xb8\x3c\xde\x3a\x5b\xfe\x61\xbb\x06\xb4\x7c\xd8\x31\x64\x55\x7d\x69\xea\xc7\xaf\xd6\x86\xdf\x4c\xad\xfd\xa3\x0f\x1a\xec\x5c\xc9\xfd\x52\xd7\x35\xef\xfc\xef\xce\x76\x20\xeb\x1d\x58\x00\xff\xfb\x3f\x93\x98\xda\xfd\x4c\xff\xb4\xcd\x76\x95\x26\x5c\x9b\xef\x5e\x83\x4d\xde\xa6\x5f\x1a\xaf\x3f\x9b\xa6\x7b\xf8\xd2\x77\x68\x99\x0e\x46\x4f\xdf\x69\x76\xc3\x70\x5e\x47\x7c\x8b\x74\x26\x89\x30\x60\xff\xe8\x94\x03\x76\x30\xb7\x89\x06\x64\xaa\xe3\x7b\xd3\x54\xf6\xde\x4f\xcc\x6f\xab\x8d\x57\xef\x9d\xae\x74\x13\x8c\xaa\xaf\x5a\x4e\xe5\xa6\x60\x6b\x5e\x0e\x3f\x39\x0a\xc5\x4e\x21\x4d\x3c\xf2\x64\x76\x74\x50\x2e\x74\x6d\xbe\x75\x1c\xe9\x4d\x18\x77\xf9\xd6\xf1\xf5\xe1\xf2\xad\x23\x85\xf2\xad\x63\xbe\x75\x7c\x85\xf2\xad\x23\xe5\xf9\x39\xc4\xcd\xf3\xad\xe3\x0b\xca\xb7\x8e\x69\x27\x9b\x6f\x1d\x8f\x50\xbe\x75\xa4\x3c\x3f\x07\xed\x39\x77\x55\x76\xe6\xb7\x8e\x3e\x54\x06\xb8\x87\xe1\x44\x26\xfb\x21\xbe\x34\x08\xf2\x03\x67\x98\xa0\xdd\xc6\x34\xfd\xbd\xd2\x1f\xda\x7b\xb5\xd2\x18\x5a\x0a\x43\x24\x7e\x32\x64\xfa\x96\xc7\x21\xc0\xef\xc7\x16\xf2\xce\xd6\xdd\x46\x7f\xd0\x77\x06\xba\x8c\x9e\xac\xda\xa2\xea\x67\xc6\x81\xc2\x61\x6b\xbd\x09\x0b\x02\x78\xf9\xf9\xfb\x35\x81\x1e\x9b\x27\x92\xc2\xc0\x80\xfd\x75\xd6\x1c\xf9\x6f\xb3\x9d\xd8\xa4\xec\x37\x8c\xe8\x6c\xab\x56\x8c\x7b\xf3\x65\xf0\xfd\xfe\x56\x91\x37\x20\xa7\x57\xbf\xef\xae\x27\xdd\xc7\xa7\xf1\x3e\x3e\xb4\xf0\x9d\xc9\xa4\xda\x64\xc7\xe1\x67\xa0\x4c\xee\xad\xbb\x35\xcd\xea\x83\x01\x96\x1c\x5e\xec\x25\x62\xe9\x42\xd0\x09\xa8\xae\x84\xe1\x12\x38\xca\x18\xbd\x11\xe1\x97\x77\xb2\x6e\x43\x98\x91\x65\xe9\xed\x2f\x1c\x6d\x64\x09\x22\xe3\x4e\x81\xbb\xfc\x1c\x5f\x9e\x5f\xa8\xca\xbf\x4b\x60\xee\xb7\xec\x1e\x81\x7f\x8b\x20\x8c\xe2\x0b\x6e\x10\x44\x23\x4b\x3a\xc7\xb1\xee\x0e\xb8\x37\x07\x82\x7b\x03\xee\xad\x01\xe7\xce\x80\x5f\xb7\xcc\x88\x78\xb1\xe2\x5d\xb2\x68\x97\x28\xd6\x15\x35\xd2\xc5\xbb\x25\x98\xd4\xf0\x03\x83\x6a\x3c\x13\x8e\x13\x0b\x5e\xc4\xd9\x91\x25\x02\x92\x88\xb9\xb2\x28\xfc\x08\x08\x01\x90\x4d\xdd\x91\xb2\xa9\xfb\xe3\x50\xd9\xd4\xfd\x35\x65\x53\x97\x4c\xd9\xd4\xfd\xf5\x58\xf9\x60\xff\x29\x65\x53\x97\x30\xb7\x6c\xea\x8e\x93\xcc\x12\xf1\x06\x4d\x5d\xe8\xe7\x70\x43\x7b\x94\xf1\x11\x9b\x98\x23\x54\x0c\x5b\x98\x61\x17\x31\x19\x14\x3f\x37\x61\xf6\xe0\xa6\xb9\x73\xb2\x5e\x70\x21\x07\xad\x72\x0e\x03\xa0\x1a\x95\xb5\x95\x4c\x2b\x9c\xc1\x69\x7c\xeb\x9b\x67\x79\x0b\x54\x2f\xd3\xe2\x9e\x3c\x9f\x16\xb6\xb2\x39\x16\x36\x37\x71\x8d\x61\x59\xa3\x56\x35\x6b\xc1\x51\xdb\x01\xb6\x1b\xf8\x36\x03\xdb\x5e\x88\x66\x2b\xe0\x96\x33\x63\xc6\x28\xbb\x43\xa6\x08\xcc\xae\x82\x64\xf1\x69\x8e\x1a\x56\x6a\xf8\x34\x53\xe3\x26\x82\x4f\x33\x3b\xd8\xff\x99\xed\x29\x9d\x75\xd6\x2f\x69\x5e\xca\x84\x97\xae\x3d\x85\x38\x40\x9f\xd2\xd8\x4a\x5f\xe9\x5a\x97\xc1\x92\xf2\x96\xf8\x5d\x8b\x40\xe6\x81\xbe\xa2\x75\xc6\x3a\x43\xcb\x57\x46\xb7\x00\x5b\xfe\x71\x26\xef\x6b\xe5\x3d\xb5\x18\x1d\x5a\x1a\xbc\x05\x75\xf6\x77\xb3\xbf\x9b\xfd\x5d\x22\x65\x7f\x37\xe6\x88\xd9\xdf\x1d\x28\xfb\xbb\xd9\xdf\xfd\x09\x65\x7f\x37\xfb\xbb\xd9\xdf\xcd\x3a\xeb\xa7\x34\x2f\x65\x72\x26\xfe\x2e\xd4\xfc\x18\x95\x1a\xac\xe1\xb1\xac\x01\x30\xa7\xa0\x17\xdd\x73\xb4\xb1\xf1\xdc\xbf\x08\xfa\xf9\xd6\x60\xa8\xba\x9a\xde\x52\x0e\x9a\x3f\xa3\x31\x32\xca\x8d\x37\x58\xf7\x52\x4e\x73\x4e\x5c\xb5\xe2\x5d\x55\x27\x9c\x17\xd8\x43\x15\xaf\x07\x85\xfb\xa6\x4e\xf3\xf1\xbc\x2e\xa9\x1c\x9b\x02\xee\x8c\xca\x3a\x82\xd1\x6e\xa8\xac\x41\xfa\x87\x52\x0f\x82\x76\x3d\x9d\xe2\x54\xf0\x5d\xdb\xd6\x7a\xa3\x9b\xa0\xea\x5e\x92\xc9\xfb\x0f\xc6\x56\x78\xed\x82\x39\xe6\x1e\xea\xd2\xfb\x47\x5f\x86\x3a\xd5\x77\xf3\xe2\x49\x78\x2c\x89\x69\xde\x32\x62\x48\x3c\x29\x86\x63\x47\x60\xdc\x08\x8d\x19\xb1\xf3\xde\xe8\x8c\xc5\xeb\x1f\xcc\x61\x18\x59\xcf\x60\xd6\x86\xca\xfb\x04\xf3\xf8\x88\xdb\x1b\x78\x6e\x06\xa9\x76\x77\xa6\xd4\xef\xca\xd2\x76\x4d\x48\x62\x95\x06\x5b\x6b\xa7\xc8\xbc\x07\xe8\x35\x9c\x45\xf5\xcd\x8d\x2e\x81\xd8\x00\x63\xb7\x6e\x75\xda\x0e\x4a\xdb\x4f\x56\xc4\x8b\x55\xf6\x20\xfb\x3d\x83\x5b\x87\x4d\x77\xc0\x82\x67\x06\xbc\x0c\xc9\xda\x57\x10\x5f\x4c\xfa\x99\xd3\x6d\x6d\x4a\xf5\xea\x06\x51\x03\x26\xb4\x4d\x78\x52\x19\xdf\xf4\xa6\xad\x55\x78\x75\x03\xa8\x02\xba\xd1\x41\x55\x2a\xa8\x63\x9b\x89\x08\xbc\x6a\x1a\x1b\xe8\x6a\x67\x8e\x39\x08\xe4\x9f\x7a\xc2\x49\x8b\xac\x5d\x59\x77\x3e\x68\x47\x83\x58\x87\xbe\x5f\x3f\x04\xed\x1a\x55\x7f\xba\x8c\x7d\x18\xb0\xb6\x81\x66\x44\x8d\x93\xfe\xe6\xd4\xcd\x8d\x29\xe9\x6d\xf2\xa0\x39\xad\xb5\xaa\xc3\xfa\xfd\x5a\x97\xb7\x7f\xda\x4a\x53\x01\xe7\xd3\xa6\x9e\xd4\x56\x55\xff\x50\xb5\x6a\xca\x24\xec\x70\xf8\xfa\xab\x3e\x86\xfa\x55\x35\x2b\x9a\xe4\xcd\x83\x37\x5a\xeb\x68\xb1\xcc\xa4\x76\x0d\xe6\xa7\x31\x0c\x82\x06\xe0\xc8\x81\x78\xed\x43\x39\x76\x00\x76\xdd\x33\xd5\xbc\xd0\xae\x5a\xe4\x7b\x96\x64\x66\xc9\xf6\x68\xf7\xde\xd8\xe6\xdd\xcd\x8d\x69\x86\x38\xf2\x8d\x59\xa5\x08\x23\x97\xb5\xd1\x4d\xa0\x29\x14\xce\xfb\x0b\xf6\xe5\x52\x21\xe8\x7c\xcb\x8f\x12\xa5\x71\xee\xa8\xd1\x44\x40\x1f\xc4\x34\x5d\x7d\xb0\x4e\xad\xa2\x18\x90\xaa\xbf\x58\xff\xc3\x56\xc7\x19\x84\xa8\x87\xe1\x35\x39\x2e\x61\x5b\x0b\x77\x38\xe4\xa2\xda\xb9\xad\x21\x5f\x7d\x40\x8a\xff\xd6\xd0\xd2\x29\xa1\x97\x52\x0f\x2a\xe0\xa5\x54\x45\x7b\xd1\x7f\xd1\xd1\x1f\x11\xa2\x7d\x64\x21\x24\x5f\x0c\x23\x1b\x4e\xbf\x10\x9e\xa3\x4f\x83\x5d\x00\xcf\xf1\x0b\xe8\x5e\x19\x31\x05\x1e\xd9\xfc\x8d\x0a\x65\xdf\x82\x75\x38\xa9\x4f\x6f\x79\x9e\x45\xb8\xab\x8f\x24\xa5\xec\xd6\xcc\xbf\x0c\x04\xe2\xfc\xa8\xc5\x79\xab\x69\xef\xbd\xd8\x6d\xc2\xa9\xed\xd3\x9e\xfb\x3f\xab\x6b\x4d\xbb\x26\x5b\xb6\xf6\x18\xac\x23\x72\xcd\x07\x79\xca\x63\x83\xf2\x2a\xf6\x2b\x23\xce\x12\xb1\x1f\xbf\x1d\xb1\x72\x49\x43\x1e\x80\x21\x1c\x0f\xef\xd0\xde\x68\x5b\x5b\xdb\xd5\xab\x2f\xa2\xaa\xdb\x15\xc5\xc0\x43\x74\xf7\xb5\xf2\xfa\x4a\xbb\x3b\xed\x3e\x7d\x00\x83\x4c\xa4\xa0\x3e\xe6\x09\x6d\x08\xbc\x58\xcc\xc0\xd2\x24\xcb\x2e\xe5\x83\x62\x4a\x42\xd7\x56\x2a\xe8\xab\xe0\x54\xd0\x71\x38\xce\xd9\xba\x36\xcd\xea\x7b\xff\xe2\x98\x9c\xd7\x2a\x17\x0c\x15\x06\x20\x65\x6c\x93\xbc\x99\x14\x2f\x3a\xe6\x66\xde\x69\xe7\x8f\xac\x0f\x61\xb8\x63\xc6\xc0\xc5\x38\xce\x2f\xfe\x7f\x74\xaa\xad\x76\xa5\x6d\xd4\x43\x70\xaa\xba\xfe\xd5\x28\x14\xce\x28\xfb\x28\xd3\x71\xc7\x98\x1c\x0b\xb8\xf7\x1f\x6b\xe5\x83\x29\xff\x51\xdb\xf2\xf6\x2a\x58\x17\x95\x83\x6f\xfc\xb1\x13\x67\x24\x48\x5f\xcd\x46\x30\x30\x2c\x0b\x2c\x5f\x71\x30\x14\x68\x67\x4e\x92\x10\xc0\x38\x81\x58\xca\x41\xfd\xa7\x73\xfa\x83\xf1\xb7\x51\xaf\xdf\x54\xb9\x36\xcd\x8a\x62\xa2\x15\x28\x9b\x55\xc6\xdf\x26\x49\xf3\xd8\xbe\xf8\xfb\xd7\x4f\xd1\xdf\x9b\x48\xdc\x92\x44\xb7\x52\x09\x0e\x9d\xbf\xc7\xed\x25\xfd\xf0\xfb\xd7\x4f\x51\xe5\xe0\x37\x73\x3c\x45\x16\x91\x83\x74\x7a\xc8\xeb\xd2\xe9\x34\xe9\x4e\x7e\xad\x1c\xc9\x15\x02\xdf\x4c\xe7\x81\xfd\xc7\x1d\xff\xe9\x38\xd9\x58\x7c\x50\xea\x76\x7d\x13\x35\xdc\xb9\xb1\x8d\x09\x96\x56\x6f\x3d\x93\x2b\x61\x62\x5d\xee\x2c\x54\xcb\x28\x0b\x14\xd9\x85\x27\x3d\xbc\xfa\xab\x26\x15\xd7\xa1\xb1\x47\xe4\xce\x3b\x65\x3c\x9b\x9a\x4e\x9f\x44\xd6\x47\xe9\x88\x26\xbf\xa6\xa9\x8e\x7f\xce\x0c\xcc\xe5\xd4\xf2\x70\xe6\x4c\x7b\x76\x86\xf8\xe0\x45\xfe\xa1\xa2\x86\xc9\x2a\x7d\xa3\xba\x3a\x50\x0d\xf1\xb4\x5e\x19\xf9\x70\x5b\xf4\x7d\x0f\x35\x16\x38\xd0\x84\x49\x46\x69\xe1\x78\xd3\xdd\xdd\xb4\x54\x24\xc4\x84\xf7\x36\x09\x62\xb1\x45\x61\xdb\xe1\x6e\x27\xf6\x09\x40\x57\x39\xde\x44\x55\x36\xce\xdc\x45\xb7\x24\x92\x9d\xbf\x7d\x42\x60\x77\x5d\x1b\xbf\xbe\x7a\x0b\x07\x66\xea\x98\xd8\xbb\x10\x9c\xb9\xee\x02\x6d\x5d\xe6\x78\xb3\x09\x04\x29\x7a\x4e\x8f\x25\x86\x95\xbd\x6f\xee\x95\xab\xde\x5d\x1e\x0d\x3e\xe5\xb3\xff\x80\xf0\xb3\xff\xc6\xe8\xba\x22\xca\x39\x77\x8c\x62\x48\x69\xfb\xf7\xf1\x4b\x90\x97\xc4\xca\xb2\x78\xfa\x2c\x1c\x4a\x99\x57\x37\xc8\xa8\x3f\xdd\xcd\x0f\x34\x3f\xa0\xa2\xd2\x37\x6a\x77\xed\x73\xf4\x7e\x9b\x88\xb9\x4b\xdb\x04\x65\x1a\xbc\x72\x94\xcd\xdf\x95\xb9\x33\x1e\xc9\xa0\x12\x8c\x35\xae\xe6\x4c\x45\x69\x9c\x5e\x3a\x49\x82\xd3\xfe\x4f\x6e\x9e\x93\x5f\xac\x37\x6d\x78\x24\x40\x91\x43\xd1\x5d\x5d\x99\x6e\x13\x3f\xf0\x68\xfe\xa3\x3f\x9b\x8d\x21\xd5\x85\xa4\xc8\x00\xb9\x89\x5a\x8f\x97\xc8\x86\xaf\xbb\xb3\xbe\x6c\x0e\xca\xad\x74\xf8\xeb\xaf\x3f\x17\x74\x77\x70\x7f\x6f\x68\xb5\x2a\x73\x98\x2e\x5d\x1a\x6a\xfd\xf0\xef\xde\xcd\x79\xbb\x0e\xb3\xa5\xb7\xdf\x98\xa3\x77\x97\x23\xee\xbf\xfa\xf9\xac\x9d\xe3\x9b\xda\x96\xb7\x71\x2f\x74\x2a\x15\x94\x4f\x74\x79\xfe\xf4\xee\xef\xdf\xa3\xdf\x4c\x90\x57\x6c\x55\xea\xcb\xad\xf3\xe9\x83\x6e\x42\xec\xcc\x9e\xf3\xcf\x1d\x6b\xab\x64\x00\x05\xa7\xcd\xac\x19\x3e\x2c\x1a\x97\x99\xf0\x55\xb7\x36\xaa\x5c\x1a\xd7\x97\x1b\xc5\xef\x4c\xe0\x74\x6b\xbd\x49\xf4\xea\x3b\x43\x0d\xf4\x24\xb9\x87\xdc\x7f\x5b\xb4\xad\x1d\x9a\x67\xc4\xcd\x82\xd1\x4d\xd5\x5a\xd3\xd0\xaa\xe6\x40\xdd\xb1\xa0\x6c\x15\xfa\xbe\xee\x16\xec\xb8\x60\x1f\xf7\xc0\xc9\x7b\xbf\xb6\x3e\x50\x22\x89\x58\xc6\x7c\x82\x0d\xa2\x24\xb5\x83\x2f\x05\x54\x69\xc4\x15\x37\x3e\xf2\x35\x5c\xb9\x56\xed\xbb\x2e\xac\x3f\x18\x5f\xda\x3b\x8d\xe8\x3c\xaa\xbd\x3b\x0e\x71\x35\x14\x71\xc6\x1f\x20\x91\x99\x31\xf4\xfe\x0f\x36\x4d\xf7\x62\xf3\x77\xec\x53\xe0\x89\x3b\x3e\x35\x5b\x75\xac\x68\x41\xc9\xe5\x05\x50\x5a\xeb\x82\xa2\x15\x44\xce\x21\x68\x90\x1d\xc9\x5f\xfd\x9c\xda\xd5\xa3\x0f\x6b\x5d\xf6\xbb\x7e\x32\x15\x6e\xfe\x3e\xb6\x1b\x17\x5b\xe9\x38\xfa\x9b\xc3\x8f\x89\x75\x24\x34\x71\x4d\xaf\x45\x19\x48\x43\x7b\xbe\x13\x26\xa4\x12\xce\xf6\x8b\xa7\x39\xc6\xda\xef\x76\xe7\xae\x0f\x31\xc6\xf7\xb5\x32\x47\xaf\x14\xb0\x76\x78\xca\x6c\xce\xd4\xad\xdd\x7d\x5b\xb4\xdd\x58\xdb\x60\x9b\xe5\x85\x50\xaa\x13\x26\xc3\x6e\x07\x8f\xb6\xfe\xd6\x85\x7b\xeb\x12\xc4\xdb\x17\x97\xc9\x7d\x76\x49\xce\xad\xb3\xdb\xdf\x1c\x1f\x7a\xb1\x89\x4e\x00\x90\x4e\xd2\x54\x27\x72\x3a\xb9\x64\x90\x82\x07\x0d\xc9\x78\x44\x82\x27\x09\xe6\x7c\xef\x89\x99\x42\x32\x10\x96\x8f\xb4\x27\x6e\xef\xbe\x91\x38\x39\x4a\x7b\x42\x21\x19\x9f\x8f\xca\x5a\x2a\x1e\x1a\x26\x92\x43\x7e\xf8\x0c\x39\x5d\x65\x4f\x8c\x64\xb4\xc3\x07\x31\x4c\xcc\x09\x21\x2b\x90\xfc\xf3\x1f\x07\x43\xf0\x7d\x0a\xde\x1a\x02\x69\xb1\x7b\x3a\x5f\x1d\x86\xe7\xae\xc6\x19\xb7\x10\xe4\xb3\xee\x49\xa4\x4a\x0b\x7e\x8e\x6b\xb4\x19\x70\xb5\x54\xc1\xcc\x80\xdd\x13\x5b\xfd\x14\xf9\x14\x42\x88\x9f\x47\xbb\x27\xa9\xa0\x09\x72\x6b\xf7\x24\x96\x35\x56\xbe\x6d\xc4\xf1\x79\x39\xb8\xd1\x26\x20\x13\x75\x38\x43\x77\x4f\x02\x49\xe7\x1b\x51\x73\x37\x88\x18\x83\x0d\x51\xf4\x6c\x34\x64\xc7\x87\x4e\xd9\xf1\x79\x49\xd9\xf1\x79\x39\xd8\x04\x8e\xcf\x73\x48\xb3\x6f\xf6\x56\x03\x66\x37\xb3\x60\xad\xab\x8c\x6e\x26\xa9\x7a\x29\x0a\xfd\xd0\x1a\x26\x36\x57\xc1\xc6\xe7\x2a\x04\x1a\x02\xd7\x0d\x93\xd5\x03\x41\x52\x0d\xf3\x62\xb2\x92\x1d\xa0\x17\xd4\x10\x4f\x8d\x15\x80\xfe\xbb\xb3\xd7\x8f\x71\x1b\x82\x92\x7a\xdb\x16\xf3\xb9\x54\x70\x7a\x65\x7c\x48\x90\x0a\x19\x74\xa3\x9a\xd8\x05\x4b\x49\xda\x13\x8d\x37\x2b\x27\x4c\xda\x1c\xf6\x80\x78\x01\x13\x8b\xfb\xdd\x75\xd4\x8b\x97\x54\x59\x5a\x9b\x23\xa0\x2a\xac\xb7\xde\xea\xc7\xed\xef\xa2\xbf\x77\x81\xed\xdd\xac\x8d\x9d\x77\x93\x73\xa2\x7e\xf5\xf3\x25\xf4\x60\xeb\x05\xee\xe8\xaf\x62\x77\x6a\xf3\xa5\xaa\xf5\xa7\x2f\x0b\x50\x48\x2b\x15\xf4\xbd\x8a\x7f\x60\xb6\xce\x06\x5d\x6e\x0d\xe1\x0f\x76\xa3\x4c\xfc\xec\xd1\x2c\x94\x3f\xff\x39\x15\x5b\xda\xd7\x1f\x1b\x75\x5d\xd3\x4c\x72\x70\x01\x07\xec\x87\x24\x2d\x92\x9f\xde\x7d\x99\x42\xcf\xfb\x47\x1f\x74\xfc\x7a\x77\x3a\x00\x07\xf8\x6a\xba\x16\x7c\x92\xf2\xe3\x1e\xc9\xc8\xfa\xc7\x7f\xd9\xaf\x55\x34\x7d\x49\x8a\x6a\x2e\x36\x71\x66\x1e\x1d\x82\x72\x77\x40\xfa\x08\xb9\x3b\xe0\x13\xa5\x6a\xe4\x97\xb0\xcd\x37\x5d\xeb\x0c\x67\x89\x8d\x9a\x91\xbe\xb8\x44\xcc\x37\x61\xee\x24\x3b\x83\x0f\x5f\xed\xdb\xf8\x75\x4c\xe4\xaf\xbc\xf3\xed\x5a\x3b\xbd\x98\xcc\xe2\x9d\x21\x57\x9b\xf2\x31\x7a\x1a\xf0\x0f\xef\x4f\xb8\xf1\xd4\xbc\x9d\x84\x39\xcc\x84\xe4\x1b\x22\x1b\x91\x7e\x56\xa9\xa0\x06\x8c\xb2\x63\x46\x1b\x95\xcd\x00\x63\x0d\x31\x1b\xe8\xc6\x02\xc9\xee\x22\x1a\x67\x98\x8a\x24\x1b\x65\xa0\x76\xa4\x1b\x63\xb8\x21\x86\x1a\x61\x74\x03\x0c\x3c\x12\xa9\x86\x17\xcd\xe8\x22\x1a\x5c\xc0\xb9\x43\x35\xb4\xa8\x46\x16\xfd\x60\xa7\x1b\x57\xc4\x25\x27\x7d\xf5\x5a\xd5\x47\xea\x1f\x68\x5f\x60\x9a\xd7\x9b\xc3\x51\x45\xac\xb5\x3e\xac\x9c\xf6\x7f\xbd\xfb\x1c\xf3\x44\xec\xf1\x74\x52\x58\x4b\xbb\x14\xb9\x44\x26\x53\x51\x6c\xd4\xc3\x7b\xdb\x34\x43\x64\x8e\xde\x5b\x96\x71\x2d\x8d\x7b\x6a\xad\xd3\x37\xe6\x61\x0e\xd6\xe2\xf5\x7f\xa5\xd8\xdd\xeb\xae\xbc\xa5\xa7\x6e\xe5\xad\x4d\xb3\xb5\xaa\xbc\xed\xda\x24\xf6\xe0\xaa\x24\xad\x7a\x66\x9b\x05\xb2\x4d\x6d\x4b\x5a\x0c\x04\xdd\x5d\x0e\x20\x26\x77\xac\x02\xf2\xe6\x46\x62\xe5\xfb\x40\x4d\xcf\x76\x73\x63\x66\x49\xf2\x72\x9f\x90\x88\xca\xf3\x91\xd0\x3c\x39\xa4\xd4\xf5\xf9\x48\x60\xb3\x6c\x2c\xc7\x8a\x5c\x02\xfb\x7c\x4e\x40\x8e\x15\x19\x80\x73\x24\x0e\x47\x83\x80\x9c\x23\xb1\xd8\x1a\x01\xe8\x14\x0f\x44\x04\xec\x14\x8d\x33\x91\x3a\xa0\x02\x7a\x8a\x06\x99\x4a\xa0\x71\x39\x23\x02\x7f\x3e\x7f\xe0\x38\x00\xe8\x48\x3c\xb9\xa4\x82\x0a\x16\x4c\xb9\x9c\x4e\xbf\x62\x37\x09\xcf\xc7\x02\x79\x0c\x02\x10\x15\x8c\x84\xf3\x18\x19\x58\xf4\xe0\x11\x22\xc0\xe8\x48\x30\x9f\xd1\x00\x47\x47\xe2\x30\x19\x92\xa1\x36\x12\xa3\x52\x85\x99\x0d\xce\xa9\x15\x40\x13\xb2\x67\xad\x2a\x51\x00\xd3\xe7\x63\xa1\xb2\x89\x5c\x64\x8d\xc4\xad\x40\xc2\x0b\x3a\x84\x5c\x04\x96\xaa\x50\x93\xee\x04\x73\xc3\x75\x14\x31\xcd\xee\xf9\x9c\x10\x7d\x43\x02\x48\x1d\x69\xc6\xee\xd3\xd4\xf2\x99\x85\xa6\xa7\x37\xeb\xa8\xc1\x1d\x75\x38\x1c\x00\xa6\x64\x8d\x34\x6d\x54\x00\x36\x0e\x18\xd6\x04\xbf\xea\x95\x55\xf3\x2a\x28\xe3\xe4\xd5\xbb\xca\xaa\x5d\x25\xb5\xae\xbc\x4a\x57\xf6\x02\xf1\xaa\x5c\xf1\x1a\x57\x46\x85\x2b\xb3\xbe\x95\x63\xb1\xa2\x5a\x9d\xb5\xdc\x9c\xba\x56\xce\x89\x88\xab\xce\xe3\x1d\xae\x47\x62\x29\x4d\x32\x8e\xce\x48\x73\x8e\x03\x71\x81\x69\x47\x3a\x57\xc3\x63\xea\x58\x34\x06\x68\x3b\x12\x1f\xfa\xe8\xf9\x9c\xa7\x58\x53\x46\x90\x8e\x82\xed\xc3\x9e\x11\xa3\xe3\x57\xb6\xb1\xd8\x0f\x48\x6c\x2c\x7e\x33\x32\x59\x87\x24\x69\x23\x32\x81\x99\x57\xc8\x9b\x90\x89\x46\xe7\x77\x25\x92\xb4\x1f\x63\x9a\x48\x45\xb6\x8b\x8f\x93\xbc\xe1\x98\x4c\x98\x22\x34\x1b\x13\xca\x93\xa8\xd1\x98\x70\x6c\x59\x93\xb1\x93\x89\x32\xbb\xbd\x18\x5b\x92\xb9\x0e\xdc\x7c\xdd\x31\x78\x20\x2a\x70\xf0\x48\xac\x5b\x1a\x32\x90\xf0\x48\xbc\x0b\x00\x04\x58\x58\x30\x12\xbc\xc6\xc7\x01\x87\x47\x9a\x71\x4c\x9a\x88\xa7\xb3\x9b\xd5\x99\x26\xf3\x60\xc0\xc5\x23\xcd\xfb\xce\x91\x0c\x6c\x3c\xd2\x9c\x3f\x07\x97\x4e\x32\x00\xf2\x48\x39\x90\x03\x00\x26\x8f\xb4\xa4\xe8\x41\xbe\x81\x3b\xa0\xb7\x1b\xb4\x21\x02\x34\x8f\xc4\x52\x0b\x18\x60\xf3\x48\xbc\xa4\x42\x0c\xc0\x59\x30\x16\xbc\xd2\x30\xb0\xf3\x48\x33\x36\x98\x16\x90\x03\x4d\x07\x84\x7e\x3e\xce\x4c\xd3\x19\x70\xfd\x41\x02\x8e\x7e\x3e\x25\x84\xab\x69\x40\xd2\x23\xb1\xf4\x07\x02\x2c\x3d\x12\x73\x13\x11\xa0\x69\xe1\x50\x74\xe0\x69\xc1\x40\x38\xbb\x90\x01\xa9\x9f\xcf\x0a\x61\x19\x2a\x40\xf5\x48\x1c\xa6\x81\x00\xab\x47\x62\xea\xc0\x33\xca\x66\xc4\xf9\x85\x0a\x74\xbd\x7f\x02\x88\x2c\xc1\xbc\x45\x05\xc0\x1e\x89\xc3\x5a\x93\x6c\x78\x48\x7f\x7c\x33\x8e\x92\x84\x3b\x47\x02\xd2\x1e\x89\x55\x44\xc3\x01\xd6\x1e\x89\xe7\xf7\x30\x80\xb6\x65\x03\x4e\x64\xf6\xc1\x40\xdc\xb2\xd1\x68\xc0\xdc\xb2\x31\x60\xa0\x6e\xd1\x70\xb3\x0e\x34\x02\x80\xde\x23\xcd\x39\x58\x96\x03\x1d\x07\x34\x65\x7c\x09\x05\x0a\x17\xcc\x11\x3f\xca\x8e\x03\x88\xef\x7f\x7b\x1c\x48\x7c\xff\x5b\x00\x50\x7c\x24\x78\x71\x37\xb6\x6b\x20\x2b\x07\x5e\x51\x02\x84\xf9\x48\xb3\xb5\xa0\xa6\x94\x7a\x2a\xe4\xf9\xf3\x71\xe6\x63\xad\x11\x21\xd1\x47\x82\x39\x96\x05\x91\xbe\x7b\x98\x63\xec\x21\x90\xe9\x23\xcd\x9a\xcd\xf0\xfd\xa7\x42\xab\x3f\x9f\x15\xb2\xab\x0c\xa8\xf5\xdd\xb3\x33\x0e\x6a\x12\xa1\xd8\x05\x83\x70\xa2\x78\xe9\x4a\x63\x30\xc8\xf6\xdd\x53\xf3\xdd\xc1\xdc\xf7\x22\x79\x39\x15\x19\x0a\xfe\xe0\x81\xf3\x4c\xf5\x05\x20\xe3\x47\x9a\x34\xd9\x97\x01\x25\x2f\x1f\xb4\xe0\xc2\x25\x8a\x1f\x95\xa3\xb8\x16\x7c\xe4\xc5\x91\x84\xc9\x8d\x03\x71\x91\x18\x47\x92\x22\x32\x8e\x24\xc9\xca\xdd\x13\x17\xa1\xf1\xf9\x2c\x44\x4b\x2a\x41\x86\x2d\x98\xc8\x8d\xfb\x67\x19\x08\x8e\x23\x09\xd2\xb8\x0f\x5f\x80\x22\x3a\x8e\xc4\x09\x34\x1c\x8e\xcb\xde\x34\x1e\xd2\xe3\xf3\xc1\xd1\x13\xfd\xf9\xd3\xac\x35\x67\x41\xdf\x8f\xf4\x76\x75\xae\x04\x22\x3f\xe6\x3c\x8a\x28\x90\xf9\x23\x45\x39\x0a\x8a\x18\x10\xfa\x91\x67\x24\xd5\xa6\x85\x18\x5a\x7f\x24\xb1\x7a\x2c\xf2\x69\xfb\xd3\x59\x08\x79\x24\x06\x24\xff\x48\xb1\x04\x3b\x0a\x44\xff\x48\xd1\x64\x5b\x08\xd9\x1f\x7d\x3e\x52\x08\xff\xc8\x13\x8a\xa3\x6a\x04\xd0\xfe\x23\x45\xd0\x34\x72\x23\x74\xa9\x86\xa4\x60\x70\x1a\x78\xd6\x4b\x7a\xbb\xc6\x54\x76\x60\xf7\x74\x36\x47\x6a\x76\x60\xb3\x03\x0b\x3e\xcd\x54\xb7\xee\xce\x94\xfa\x5d\x59\xda\xae\x09\xdf\xec\xad\x66\xb8\x41\xc2\x56\x01\x5d\x65\x74\x73\x92\xfa\xde\xa2\xd0\x0f\xad\x71\x6a\xbb\x75\x57\xba\xb4\x0d\x56\x38\xb6\x27\x4e\x07\xf9\xe7\x24\xd5\x5c\x7c\x9d\x75\xb2\x0a\x69\x96\x96\x61\xf3\xfa\x64\x45\xcb\x8c\x6e\xb7\xc3\xbd\x42\xaa\x0b\x9c\xbf\x3b\x7b\xfd\x18\x92\xde\xf6\xad\x9c\xed\xa0\x5b\x87\x99\x5f\xf6\x8d\xb0\xff\xe9\x93\x7f\x75\xa3\x9a\xd4\x25\xde\x93\x34\x50\x1d\x6f\x48\x67\x77\x3f\x3a\xee\x25\x78\xa1\x9a\x4a\x1a\xdd\x75\xd2\x8b\xd4\xa9\xf2\x82\x37\x6a\x35\x41\xa7\x7d\xfd\xb8\xfd\x7d\xf2\x71\xce\xb0\xf1\x36\x11\x52\x5c\x34\xb5\x9c\x6d\xbb\xa3\x29\xb3\x6d\x67\xd9\x0d\xbb\x57\x08\xe4\x5f\xa7\xee\x9d\xed\x4b\x55\xeb\x4f\x5f\xce\x40\xd1\x3e\x81\xdd\xa7\x4f\x85\x73\x36\x0c\xb0\x59\x1f\xec\x46\x99\xf4\x75\x18\x59\x79\xec\x68\x4a\xe5\xe1\x7d\xfd\xb1\x51\xd7\x35\xe6\xb2\x31\x17\x7e\x40\x2d\x9e\x04\xcc\x68\x87\x90\x3c\xc1\xb9\xe7\x1f\x7d\xd0\xe9\x3b\x40\x61\x30\xdf\x82\xa1\x70\x6d\xff\xa4\x95\xe8\x1e\xee\x28\x82\xf4\x27\xfa\x35\x4e\x76\x3e\x40\xb7\x0c\x67\x9b\xd0\x38\xef\xde\xa5\xb9\x3f\xfc\xeb\x94\xfb\xc3\x8f\x34\x59\x6c\x6f\xba\xd6\xed\x13\x02\x81\xe1\xda\x73\x38\x6b\x6d\xd2\xca\xb1\xb3\x2b\x20\xc8\x66\xe8\x01\x4d\x66\xdb\x1c\x0e\xe5\xdb\xf4\x15\xdf\xb8\x30\x75\xd7\x49\x0b\x3c\xef\x7c\xbb\xd6\x4e\x9f\x4d\xc5\xcf\xce\xd0\xaf\x4d\xf9\x98\xbc\x1c\xe7\x87\xf1\x26\x64\x58\x34\xff\x73\xc2\x5a\x23\x20\x89\x13\x14\x07\xe8\xe7\xad\x09\xa4\x38\x18\xca\xcc\x43\x61\xf7\xa7\xa6\xac\x3b\x6f\xee\xc8\xfb\x8d\x9f\x0a\xc3\x40\xdf\x0c\x9d\xa7\xe0\x4d\xde\x0f\x51\x9b\x26\xf5\x30\xff\x8f\x2e\x8e\xe0\x08\x10\x5f\x38\xed\x49\xae\x1d\xca\x17\x9d\x23\x5b\x7d\x29\x3f\xcf\xff\x77\x8a\x8f\x4b\x0c\xcc\x3f\xf6\x8e\x4a\x36\x40\x52\x74\xfd\xe1\x42\x98\x5e\x21\x90\x74\xfb\x87\xf3\xe8\x0a\xf2\x0e\xa0\x09\xf9\x7b\x73\x93\x44\x80\x76\x19\xd9\xcb\xe4\x02\x60\x9b\xc8\x3f\xf5\xa5\x33\x6d\xb8\x22\xa5\x60\x23\xcb\xad\xee\xfd\xc7\x5a\xf9\x60\xca\x7f\xd4\xb6\xbc\xbd\x0a\xd6\x91\x18\x05\xdd\x52\xcc\xe8\xc3\xf7\x13\xed\x3a\xca\x89\xc6\xe0\x31\x18\xd4\x69\xc4\x4d\x03\xb4\xda\x1c\x5c\x59\xc4\xf2\x83\x2a\xcc\x21\x55\xd6\x23\xb7\x53\x5b\x49\xc0\xca\x46\x95\x6b\xd3\xac\x90\x00\x2c\xcc\x9e\x23\x14\x7e\xd2\x01\xbe\x7f\x25\xd7\x16\xc2\xef\x4f\x2c\xbe\xb7\xa6\x21\x3b\x17\x8c\x23\x39\xad\x10\x62\x32\x32\xb2\x02\xf9\xc7\xdf\xbf\x7e\x4a\x22\x4f\x54\x74\x72\x54\x9e\xd2\xeb\x3c\x3c\xe0\x09\xf3\x8c\x5f\x2b\x07\x45\x9d\x92\xea\xd5\xfd\x07\xd3\x7e\x3e\x4e\x3e\x36\xdf\x94\xba\x5d\xd3\xda\x80\xa1\x4c\x83\x26\x56\x81\xf7\x4b\xec\xf8\x1c\x3d\xe6\x8f\x5c\xb2\xcc\x4e\x85\x8d\x32\x45\xd5\x09\x05\x4b\xa6\xd0\xb8\x36\x27\xb8\x38\x01\x2c\x2f\x1c\xb9\x45\xf2\xb0\x92\xea\x11\x20\x9b\x0a\xd3\x0b\xa6\xa9\x68\x9f\x38\x33\xb7\x61\x2a\xb9\x7a\x83\x4c\xff\x26\x1c\x13\xa8\x91\x12\xba\xb3\x8c\xcc\x90\x69\xbc\x5a\xe8\xf0\x05\x4f\x6a\xde\x3d\x26\x9c\x01\xc2\xbc\xc2\xc4\x33\x3f\xf8\x59\x1f\xdc\x8c\x0f\x3c\xdb\x83\x79\x1f\x8e\x66\x79\x60\x19\x1e\x60\x76\x07\xe3\x72\x19\xb5\xf0\x10\x2d\x0b\x2f\x29\x9a\x2e\x82\x9e\x44\x98\x5a\xa3\xb5\xdd\x87\x15\x1a\x04\x06\x37\xb7\x18\x85\x04\xc5\xff\x5c\x0e\xf5\xa9\xe2\x99\x38\x52\xbf\x0c\x67\x2f\xfd\xda\x81\x41\x22\x2a\xc0\x1b\x34\x0b\xb0\x09\x59\xb6\x57\x08\xc4\xb3\x57\x78\x7d\xcd\xf8\x19\xb2\x92\xde\x65\x82\x44\x59\x41\x7f\xb2\xc9\xb3\x4f\x79\x5d\xc7\x98\x09\xa5\xd9\x8e\x3c\x20\x59\x4f\x30\x51\x17\x5c\x49\xdf\x2f\x81\x5c\xb0\x7b\x7b\x09\xc6\xe4\xf7\xef\x9a\x5c\x14\x59\x5d\xb9\x58\x92\xc8\x71\x62\xe6\xe5\x96\x40\x03\x20\xa8\xf7\x70\x04\x1f\x42\xbb\xc7\x83\xc7\x28\xca\x7d\xca\xd4\x1a\x1a\xb2\xfd\xcc\x62\x9d\x00\xc0\xd4\xb9\x24\x47\xe0\xa8\xf5\xf3\xbb\x57\x82\x50\xea\xe7\x36\x7d\x4c\xaa\x20\x44\xfa\xb7\x15\x7c\x00\x91\xe7\xe7\xee\x0d\xe7\x9b\x97\xb3\x0e\x34\x00\x08\xf2\xb0\x18\xe3\xc8\xf1\x78\x32\x15\x8e\x18\x9f\xd2\xda\x60\xa1\xc4\xcf\xcc\xf8\x98\x69\x7e\x26\x86\x04\x3f\xbb\xeb\x65\x4c\xd6\xc9\xa8\xef\x18\x77\xd2\xd1\xde\x61\x59\x47\x51\xde\x19\x1b\x84\xa2\xbb\x33\x86\xc0\x50\xdd\x93\xde\x83\x43\x48\xee\x18\x1b\x20\x08\xee\x28\x23\xc0\xc8\xed\x0c\xfd\xb4\xe0\xec\x2d\x8c\x07\x10\x74\x76\x72\xb4\x03\xe2\x15\x04\x91\x1d\x65\x95\xa4\x1b\x19\xd2\x1d\x91\xa0\x2a\x4f\xb0\x2b\x64\xb4\x75\x38\xc1\x9e\x8b\xb2\x8e\xdb\xfc\x4c\x74\x75\x7c\xa0\xc4\xe6\x12\x0b\x4d\x1d\x1f\x85\x8e\xa2\x8e\xbf\x9b\x85\x9e\xbe\xfc\xa0\x16\x88\x94\x3e\xb7\x80\x4d\x76\xcc\x13\xc6\x3c\x38\xe8\xe7\x49\x8f\x11\x1a\xe2\x39\x15\xed\x1c\x46\x3a\x87\x16\x90\x88\x3f\x3e\x2b\x7b\x61\x0a\x59\x42\x70\xc6\xe7\x60\x93\x00\xb8\xe2\x10\x7f\xb0\xf1\xc4\x61\x73\x06\xc5\x11\x9f\x1d\xdb\x60\xfb\x8a\x60\x86\x63\x3b\xc6\xc4\x0a\x9f\x5b\x68\x0b\xc0\x06\x4f\x2b\x80\x34\x3c\x70\x6c\x8f\x60\x1c\xf0\x99\xed\x4e\xae\xc0\x7e\x7d\x1e\x54\x3e\x40\xb0\xbd\xcf\x26\x71\x10\xc4\xf1\x9e\x24\x75\x90\x89\xdd\xcd\x4f\x93\x62\xe2\x96\xb1\xe1\xce\xa4\x50\x67\x02\x98\x33\x41\x7a\xd5\x40\x12\x78\xb3\x18\xd0\x66\xdc\x5c\xbf\x3d\x49\x20\xcd\x84\xcb\x27\x81\x32\xe3\xc2\x98\xb1\x21\xcc\x98\x89\x9f\x87\x0f\x73\xa0\xcb\x78\xb0\x65\x82\x8d\xe1\xc3\x95\xe1\x27\xe9\xf3\x27\xe1\xb5\x65\x63\x6c\xbf\x1d\xdd\x28\xc5\xd3\x8e\x01\x43\x19\x07\x47\x5b\xac\xaa\x8b\x58\xf8\xd9\x11\x66\x22\x07\x71\x94\x62\x66\x8b\xd4\x59\x91\x4f\x3e\x29\x0f\xc4\xc2\xc5\x8e\x21\xa0\xd1\xf0\xb0\xa3\xc8\x68\x04\x1c\xec\x28\xf3\x88\x81\x7f\x3d\x0b\x55\x21\xc4\xbc\x16\x6a\x0a\x99\x91\xb7\x24\x63\x8d\x39\x28\x07\xd7\xfa\xed\x18\x30\xd9\xb9\x5b\xe8\x11\x97\x9d\xbb\xe3\x94\x9d\xbb\x5f\x93\x18\x7f\x5a\x50\x3c\xcb\xc6\x9d\x16\x6c\x4d\x04\xbc\x69\x19\xd6\xb4\x44\xdb\x2c\x04\x70\x66\x1a\xf8\x98\xe4\x25\x80\x60\x2f\x41\x32\x86\x34\x34\x71\x00\x3b\x1a\x95\x44\x08\x33\x7a\x86\x17\x44\x28\x46\x34\x9e\x96\x08\x61\x43\xc3\xaf\x4f\xd8\xbe\x0e\xc5\x82\x4e\x9c\x1c\x4d\xc6\x7f\x06\xb0\x9f\x21\x29\x22\x62\x3e\xcf\xec\x8e\x15\xc2\x78\x86\xdf\x0e\x62\x3b\xc3\xef\x3f\x83\xd6\xa3\x00\x96\xe5\x0c\xf5\xe3\x9b\xcd\x07\x9c\x4d\x5f\x50\x2a\x26\x73\xba\x0e\xa2\x00\x0e\xf3\xcc\x94\x1f\x88\xbb\x8c\xa7\x17\x31\xf1\x96\xb3\xa0\xd3\x68\x0a\x41\xc7\xb1\x94\x19\x8b\x8b\x63\x28\xe3\x4d\x38\x70\xec\x64\x7c\x0c\x08\x33\x99\x69\x6f\xce\xa6\xb3\x3b\x1d\x1f\x19\xc3\x46\x06\x70\x91\x41\x3d\xed\x4c\x4b\x2e\xde\x82\x96\x8e\x1e\xf8\x3e\x9b\xfc\xb2\xf9\x35\xa6\xcb\x8d\x74\xf7\x94\x1b\xe9\x26\xf2\x57\x52\xf7\xba\x9d\x00\x21\x04\x53\x9a\x08\x0c\xf2\xcc\xcc\xdb\x6c\x15\x26\xee\x90\x9f\xb4\x92\x84\x09\x69\x9c\x52\x18\x60\x98\xe1\x99\x09\x04\x13\x56\x58\x36\xce\x04\x4c\x92\x10\x5b\x9a\x53\xc2\x40\xcc\x65\x03\x58\x8f\xfc\x53\xdf\xa8\xd6\xaf\x6d\x0a\xb0\x45\xb7\x22\x31\x31\x60\xea\xb1\x44\x95\x76\x54\x53\x75\x26\x34\x85\x06\xd1\x45\xc0\x9b\xa9\x3c\x76\xd1\xcf\x80\xf4\xa3\x7e\x9a\xd1\x98\x2a\x28\xbf\xfe\xaa\xb7\x52\xad\x89\xdd\x09\x10\xce\x4a\xb0\x57\xc4\x4f\x23\xfd\xec\x29\x6c\xf8\xda\x0c\xa9\x5f\xab\x56\xfa\xf8\x5d\x17\xf9\x33\x29\x12\x49\x94\x46\x78\x69\x8f\x4b\xa1\x6e\xee\x22\x4d\x0e\x3b\x44\xe9\xd6\x12\xa8\x7e\xee\x54\xdd\x25\x7c\xf3\x6f\xce\x12\x23\x47\xb8\x0d\xb9\xab\xbb\xfa\x97\x7e\x84\x12\x74\xe7\xed\x88\xe3\x39\x47\xcc\x81\x78\xb9\x46\xbc\x3c\xa3\xd4\x2e\x35\xc3\x47\xc6\x2b\x2f\x78\x7c\xc3\xad\xae\x60\xee\x2a\xb3\x82\x62\xb2\x40\x09\x5e\x17\xc1\xd8\x5b\x7e\xf2\x3e\xbb\x04\x94\x9b\xa0\xcf\xdc\x66\x56\x12\x3e\x73\x2c\x5e\xa2\xfd\x64\x1c\x05\xa7\xcf\x33\x18\x6a\x08\x89\xe4\x83\x26\x1f\x34\x28\xef\x60\xd9\x46\xe4\xd9\x93\xbc\x26\x86\x37\x7e\xdc\x04\x6e\x9d\xdd\xe8\xb0\xd6\xdd\x51\xa6\x46\xd8\x5f\x3f\xb4\xd6\x85\x34\x1d\x8a\xa9\x4e\x7e\x31\xcb\x5c\x22\x82\xcb\x31\xd2\x24\x17\x52\x93\xa9\x0d\xc0\x35\x89\x31\x12\xdd\x55\x19\x49\x04\x74\xc3\x73\x5d\xe4\x43\x17\x92\x9a\x1d\x61\xc9\x09\xaf\x9c\x22\xc2\xc0\xfc\xb2\x8a\x42\x54\x5a\x51\x88\xea\x6c\x78\x55\x36\x82\x52\x19\x7e\x31\xba\x8c\x1f\xa5\x05\xe8\x42\xee\x10\x16\x9d\x8b\x46\x97\x70\x07\xbf\xc4\x5c\xc0\x23\xf2\xba\x68\x19\xaf\x44\xa8\x85\x16\xb2\x8b\xa8\xfe\x59\x5c\xb4\x27\xa9\x79\x3e\x19\xa7\xb2\x2b\x9c\x05\x8c\xca\x73\xd9\x46\xca\x07\x2c\x44\xf9\x80\x4d\xf5\x20\xc7\xa1\x25\xb9\x86\x82\x59\xe1\xe5\x10\x8e\x5c\x0c\x35\x15\xd2\x19\xd8\x49\x8e\xa3\x0f\x6a\xb3\x31\x74\x84\x84\x42\x8c\x12\x55\xf0\xe5\x98\xcd\x9a\xda\x9f\xef\x17\xe2\x59\xe5\xba\xec\x9c\x09\x8f\xef\x6d\x13\xf4\x03\x99\xe5\x39\xbc\xa5\xea\xda\xde\x5f\x3a\x73\x67\x6a\xbd\xd2\x1f\x7d\xa9\x6a\x85\xa0\xf9\x14\x6c\xb5\x5b\xaa\x56\x5d\x9b\xda\xa0\x3b\xc7\x3d\x51\x55\x05\x6b\x76\x66\x33\x0c\xc1\x19\xc8\x6d\x31\x50\x39\x0b\xb6\x8d\x5c\xce\xd7\xb1\x74\x4a\x3b\xb2\x34\xb4\xe9\x3c\x4e\x6e\x9d\x2d\xff\xb0\x1d\xbd\x50\xb7\xe0\x5f\x6b\x0c\x39\x9b\x5f\xad\x0d\xbf\x99\x5a\x63\x25\x15\x05\x3f\x1a\xde\x35\xef\xfc\xef\x48\xb5\x76\x21\x68\x53\xc0\x4b\xeb\xee\xe7\xf8\xa7\x6d\xb6\x6b\x33\xd1\x8a\x7c\x07\xca\xfc\x8a\xc9\x17\xc4\xeb\xcf\xa6\xe9\x1e\xbe\x60\x00\x93\x85\x40\xc5\xd6\xfa\x4e\xc3\xa6\x3b\x5b\x9f\x38\x5b\xc3\x4e\x0a\x7b\xb0\x00\x64\x9e\x8a\x07\x43\xca\x47\x85\x83\xb1\x94\xeb\xbd\x69\x2a\x7b\xef\x27\xe4\xac\xd5\xc6\xab\xf7\x4e\x57\xba\x09\x46\xd5\x57\xad\x26\xe1\x34\x1f\x12\x7b\x33\x5e\x0e\xcd\x89\x18\xf1\xb9\x7c\x54\x34\x13\x8e\x9a\xde\xc6\x85\x7e\xbe\x55\x7c\xee\x8e\x16\x14\x80\xbe\xb8\x56\xd7\x9a\x86\xe8\xc3\x77\x37\x52\x66\xdc\xa7\x4a\xb9\xa5\x7b\xda\xa8\x97\x8d\x9c\x64\xe4\xa5\x20\x3b\xe1\x88\xf6\xa1\x3b\xdd\xf3\xe4\x0d\xc4\xa9\x9e\xe3\x17\xd0\xf3\xaf\x31\x67\x19\xca\xea\x17\x38\xc7\x98\x59\x89\x3a\xc3\x70\xea\x02\xdd\xf9\x9d\x5f\xe6\x02\xe2\xdc\xce\x6d\xf6\x90\xcc\x62\x4e\x2b\xc6\x61\x90\x93\x0a\x2d\x0b\xdf\x29\xc5\xbe\x00\x73\x42\x51\x5f\x0b\xf3\xb1\x50\x67\x93\xf1\xa5\x54\xe7\x32\xed\x87\xe2\x4e\x24\xaa\x9a\x20\xa7\x11\xaf\x72\x05\x9c\x44\xf8\xe5\x88\x53\x08\xbf\x3c\x61\x0f\x21\x48\x29\xe1\xce\x1e\xdc\x06\x90\xed\xdc\xc1\x8b\x2a\x73\xe6\x70\xee\xe3\x38\x6f\x27\xb7\xa9\x48\x3f\x6b\x55\xe7\x5f\x3f\xa7\x68\x3a\xaf\xb5\xd5\x37\xbd\x69\x6b\xf5\x7a\x8b\x49\x2a\x4f\x95\xb6\x09\xce\xd6\xf5\x71\xd9\x81\x0c\xc1\xa6\xb1\x41\x91\x05\x60\xd1\xf6\xf4\x46\x07\x55\xa9\xa0\xf2\xfa\xf1\x7e\xea\x09\xfa\x0b\x5a\xbb\x9b\x1b\xd3\x98\x40\x4a\x04\x41\x35\x6f\x63\x2b\xfd\x0e\x78\x3f\x67\x8c\xe1\x19\x7d\xa3\x9d\xd3\xd5\x87\x6e\xbb\x33\x57\xe5\x5a\x57\x5d\x6d\x9a\xd5\xa7\x55\x63\x77\x7f\xfe\xf8\xa0\xcb\x0e\xbd\x7c\x64\xdc\x62\xf1\x73\x72\x86\xef\xe0\xb5\x8c\x96\x65\x02\x6d\x54\x28\xd7\x1f\x1f\x5a\x37\x54\x18\x33\x9b\xec\xb3\xbb\xfb\x17\x91\x10\x48\x04\x5d\xfe\x0b\x79\x76\xd1\x40\xdb\xaf\x50\x47\x6a\x96\x27\x99\x48\x9f\x2e\x2e\x58\x4c\xe1\x7e\x0e\x14\xe5\x4b\xf8\x17\xd7\x7b\x92\xe3\x9f\xf0\xb0\x04\x86\x67\x47\xa6\x60\xbe\x40\x90\x5f\x78\xf8\x02\xee\xfa\xf5\xda\xa1\xcf\xa4\xcd\x8a\x21\x2b\x86\xac\x18\x9e\xd1\xdb\x55\x0c\x82\xc1\xef\xb5\x59\xad\x41\xb0\xa2\x42\x0c\x87\xc3\x4b\x74\x28\x24\x48\x11\x3b\x8b\x0e\x7c\x70\x58\x20\xe8\x21\xe6\x76\x70\x38\x60\x5c\x8e\xf8\xf6\x36\x57\xd9\x6f\x5d\x8d\x2b\x5d\xeb\x32\x58\xf7\x4d\x3b\x5c\x3b\x31\x55\x5a\x36\xbb\xf3\xe9\xfa\x9c\xf2\xe9\x7a\x48\xf9\x74\xcd\x66\x37\x9b\xb2\x62\x78\x4e\x59\x31\xec\xe9\xed\x2a\x06\xc1\xe0\xbc\x61\x39\x5b\x75\xf1\xd2\x22\x83\x6d\xd2\xb4\x55\x30\xad\xad\x72\x6c\x1a\x78\x72\xbf\x5c\xdb\xdd\x9c\xda\x52\xee\x73\x29\x47\x76\xe2\xe9\x0c\xf9\x81\x16\xc7\x5c\x2f\x62\x68\xf2\x18\xa7\x73\x21\x3f\xa1\x8b\x78\x47\x4a\x9c\x93\x3a\xea\x84\xe4\x27\x76\x11\xe7\xd4\x2e\x62\x7e\x55\x8c\xd3\xbb\x88\x70\x82\x17\xc2\x53\xbc\x88\x71\x92\x17\x31\x4e\xf3\x22\xca\x9a\xf6\xda\xe5\x33\x39\x67\xfc\xe7\x24\x2f\x5c\x7d\x4e\x51\xb8\x2e\x92\xb9\xc4\x7e\xc1\x2e\x91\xfd\x14\x7e\x94\x78\x05\x65\x9c\x15\x6c\x6b\x6b\xbb\x7a\xfc\xd7\x49\x7a\x3d\x48\x9a\x1e\x1c\xcc\x3c\x87\xa6\x7f\x4d\xec\xd0\xf4\x73\x83\x2e\xc7\xa7\x49\x34\xa9\xcd\x2d\x34\x7a\x73\x6c\x3a\x87\xa0\x9e\x53\x0e\x41\x1d\x52\x0e\x41\x09\x63\xd3\x12\x63\x35\xa6\xa1\x1a\xc9\xc4\x62\x2e\xa6\xe0\x61\x89\x61\xca\x96\x44\xd1\x6a\xf1\xb9\x46\x64\x88\xf2\xeb\x9b\x99\xd6\x11\xd7\xf8\x9c\xcc\xc8\x61\xc5\x3b\x9b\x60\x72\xcc\x13\x78\x32\xc7\x3c\x73\xcc\xf3\xa7\x94\x63\x9e\xaf\x53\x8e\x79\xfe\x9a\x72\xcc\x73\x4f\x39\xe6\x99\xea\x05\x39\xe6\x99\x63\x9e\x64\xca\x31\x4f\xca\xd3\x39\xe6\x49\xa6\x1c\xf3\xcc\x31\xcf\x1c\xf3\xdc\x53\x8e\x79\xe6\x98\x67\x8e\x79\xf6\x94\x63\x9e\xd0\xb0\x39\xe6\xc9\x1e\x08\xfa\xf9\xb2\x20\xd6\x89\x68\x6b\xc0\x64\x71\xbb\x03\x43\xf1\x60\x70\x33\x88\xac\xc6\x1d\x01\x43\x54\x63\x23\xaf\xf2\x91\xd4\xf8\x26\x21\xcb\x10\x14\xe8\x4a\x1e\xb0\x8b\x60\x40\x3e\xa0\x0b\xd6\x32\xed\x90\xb8\xea\x15\x35\x9c\x98\x6a\x95\x87\x8e\xc6\xe7\x31\x09\x2a\x9a\x60\xe7\x05\x68\x68\x93\x1f\xac\x3c\x04\x34\xe6\xfe\xcb\x90\xcf\x44\x60\x91\x12\xc4\x33\x01\x2b\xb0\x91\xce\x04\x63\xf2\x11\xce\x26\xe7\x3e\x16\xaa\x19\x93\xf9\xf8\x68\x66\xf9\x90\xfb\x25\xe5\x43\x4e\xfa\x10\xf6\x35\x00\x32\x19\xcb\x23\xa1\x99\xf8\x66\xa3\x56\xfa\xb2\xab\xeb\xab\x5e\xa6\x62\x3b\x27\xb3\xb3\xf7\x53\x2e\x65\x63\xc2\xfb\xf1\x78\x3a\xfd\x42\x22\x40\xdf\x8c\x98\x07\x4b\xd3\xe0\xce\x78\x69\x37\x1b\xd5\x00\x0a\x62\xae\x1f\x02\x20\x97\x33\x3e\x82\xdd\xd0\x64\x4a\x14\x10\x06\x86\xb9\x74\x34\x1c\xc7\x5c\x76\x37\x22\xc6\x32\x97\x5f\xcd\x08\xae\x65\xc4\xd1\x5e\x3e\xe4\x6a\x84\xc1\x65\xb0\xab\x12\x33\x66\x20\xc9\xa5\x07\xf7\xc2\x43\x14\x5e\xe7\x23\x9c\xcb\xb9\x54\x8a\x72\x1e\x81\x5f\x84\x48\xe7\xe2\x19\xc8\xf8\x85\x8f\x77\x2e\xe4\x1a\x39\xe6\xb9\x9c\x7b\x22\xe0\x9e\x47\x60\x20\x11\xf6\x79\x84\xf1\x65\xf8\xe7\x27\xe6\x5f\x36\x0a\xba\x90\x7d\x65\x48\xe8\xf9\x78\xce\xc7\x33\x40\xe2\x26\x3a\x8c\xb8\x2c\xab\x8b\x0e\x82\x91\x2e\x0a\xa7\x80\x2e\x13\x66\xbf\x4f\xe6\x36\xed\xcc\x7c\x86\x12\x91\x28\x10\xae\x00\x8b\x84\x57\x22\xb8\x12\xa1\x65\x0b\x4f\xeb\xf4\x8d\x79\x98\xcc\xd1\x1c\x4e\x94\xcc\x09\x94\x81\x27\xe5\x84\x89\xd4\x54\x1f\x42\x4d\x9a\x40\xb0\x0b\xd2\x5e\xda\xda\x94\x80\xfd\xc0\x18\xab\x36\x37\xba\x7c\x2c\x11\x54\x62\x1e\x1f\xb7\xd6\x87\xab\xa0\x68\x10\x9d\xd2\xc1\xb6\xa4\x1f\x70\xc0\x5d\xa9\xbd\x07\x87\x2f\x0f\x69\xb9\xc5\x11\x02\xbb\x67\x1d\x42\xfb\xbb\x66\x54\x09\xc8\x36\x6a\x6d\x3d\x63\xcc\x42\xbe\xd0\xdb\xef\xfd\xa7\x56\x15\xf1\xca\xe0\x25\x9d\x3c\x0f\x5c\xe2\x55\x14\x51\xf3\xaf\x4f\x3c\x0b\x79\xd6\x33\x68\x87\x3f\x7f\xb8\x5f\x02\x91\xb6\x38\x59\xce\x73\xcb\x8e\xc2\x09\xb7\x8d\x0a\x11\xfd\x92\x54\xf3\xf8\x85\x15\x40\xe8\x73\x60\xd9\x35\x49\x3f\xbe\x43\xc0\xb0\x0f\x17\xb7\xdd\xb5\x76\x8d\x0e\xda\x5f\x98\x26\x5c\x58\x77\x31\xbc\xee\xff\x8a\xe0\x58\xac\xe4\xcb\xb5\xe6\x2a\x83\x93\x55\xc3\x6d\x79\x60\xca\x13\x2e\x94\xed\x95\x2d\x6f\xdf\xd0\x19\x97\xa5\x2c\xa2\x94\x2d\x87\xd5\x99\x0f\xb6\x4e\x5f\x05\x3a\x58\xf6\xf8\x50\x76\x0b\x28\x94\xdd\x02\x6c\xd8\xec\x16\xf0\xde\x90\xdd\x82\x1d\x65\xb7\x20\xbb\x05\x14\x3a\x57\x83\x25\xbb\x05\xb4\x47\xb3\x5b\x40\xa6\x2c\x65\x2f\x68\x39\xac\x3e\x4d\x32\x7e\x51\xd4\xe6\x4e\x37\xda\xfb\x4b\x67\xaf\x93\xdf\x66\xe0\x5e\x84\xa4\x06\x8a\xe9\x3d\x2c\xab\xb0\x9d\x5b\x99\xa8\x4c\xdd\x39\xfd\x6d\xed\xb4\x5f\xdb\x1a\x5c\x26\x7e\xaf\x21\xae\x5a\x61\x79\x36\x7c\xe6\xe1\x69\x7b\x01\x03\x88\x3c\x19\x36\xc7\x4a\x3d\x98\x93\xa6\x4a\x89\xbc\x96\x93\x66\xf5\x31\x3d\x15\xbe\x97\x12\xa1\xbf\x08\xc7\x3b\xe1\x79\x26\x82\xad\xe1\xd9\x4a\x4c\x3b\x49\x6a\x23\x09\xed\xa3\xc8\xb6\x11\xd7\xfb\x98\xbc\x84\x16\x36\xc3\x98\xcc\x6f\x1a\x13\x8c\xaa\x3f\xe8\x5a\x3d\x5e\xe9\xd2\x36\x28\xf2\xe7\xf4\x87\x64\xab\x9d\xb1\xd5\x42\x26\xeb\xbb\xb2\xd4\xde\x2f\xc6\x02\x61\x7a\x9e\x0b\xb2\x41\xb2\xf6\x64\x6a\xcf\xb9\xab\xb2\x60\x36\xda\x76\x61\x11\x8a\x81\xf1\x89\xc9\x9b\x1f\x6d\xf7\x29\x65\x95\xb0\x20\xc1\x7a\x28\xf0\xb9\x64\x48\xae\xa4\x5f\x2c\x5f\x74\xb7\x4a\xed\xd3\xe5\x64\x59\xc7\xdb\xe1\x96\xb3\x38\x93\xd6\x19\xb7\xce\x06\x5b\x5a\x38\x4d\x99\x39\x20\xaf\xe4\xe2\x19\x87\x23\x1a\x6f\x9a\xa4\x66\xa7\x55\x65\x72\xf4\xec\x90\x72\xf4\xec\xf8\xd3\x39\x7a\xf6\x33\xca\xd1\x33\x80\x72\xf4\x0c\x7f\x30\x47\xcf\x8e\x0c\x98\xfd\xbf\x1c\x3d\xfb\xf9\x0c\x73\xf4\x6c\x66\x93\xcd\xd1\xb3\x23\x94\xa3\x67\x94\xe7\xe7\xa0\x3d\xe7\xae\xca\xce\x3c\x7a\x36\xb6\x18\x81\x30\x25\x39\x52\x59\x9b\x8d\x41\xc2\x68\x45\x24\x94\x06\x36\xa7\x0b\x9a\x4b\x68\x7f\xfe\x5f\xca\x78\xc8\xeb\xb2\x73\x26\x3c\xbe\xb7\x4d\xd0\x0f\x80\xba\xe4\x71\x9c\xaa\x6b\x7b\x7f\xe9\xcc\x9d\xa9\xf5\x4a\x7f\xf4\xa5\xaa\x15\x0a\xb8\xc4\xaf\xc9\x2f\x55\xab\xae\x4d\x6d\xf0\x9d\x14\x34\x00\xaf\xce\x3e\x64\x53\x14\x95\x43\xeb\x5e\x8a\xc5\x7d\x25\xbb\x2a\xe8\x89\xd9\x41\x36\xe0\xf2\x78\xeb\x6c\xf9\x87\xed\x1a\xd0\xf2\x61\xc7\x90\x55\xf5\xa5\xa9\x1f\xbf\x5a\x1b\x7e\x33\xb5\xf6\x8f\x3e\x68\xb0\x73\x25\xf7\x4b\x5d\xd7\xbc\xf3\xbf\x3b\xdb\x81\xac\x77\x60\x01\xfc\xef\xff\x4c\x62\x6a\xf7\x33\xfd\xd3\x36\xdb\x55\x9a\x70\x6d\xbe\x7b\x0d\x36\x79\x9b\x7e\x69\xbc\xfe\x6c\x9a\xee\xe1\x4b\xdf\xa1\x65\x3a\x18\x3d\x7d\xa7\xd9\x0d\xc3\x79\x1d\xf1\x2d\xd2\x99\x24\xc2\x80\xfd\xa3\x53\x0e\xd8\xc1\xdc\x26\x1a\x90\xa9\x8e\xef\x4d\x53\xd9\x7b\x3f\x31\xbf\xad\x36\x5e\xbd\x77\xba\xd2\x4d\x30\xaa\xbe\x6a\x39\x95\x9b\x82\xad\x79\x39\xfc\xe4\x28\x14\x3b\x85\x34\xf1\xc8\x93\xd9\xd1\x41\xb9\xd0\xb5\xf9\xd6\x71\xa4\x37\x61\xdc\xe5\x5b\xc7\xd7\x87\xcb\xb7\x8e\x14\xca\xb7\x8e\xf9\xd6\xf1\x15\xca\xb7\x8e\x94\xe7\xe7\x10\x37\xcf\xb7\x8e\x2f\x28\xdf\x3a\xa6\x9d\x6c\xbe\x75\x3c\x42\xf9\xd6\x91\xf2\xfc\x1c\xb4\xe7\xdc\x55\xd9\x99\xdf\x3a\xfa\x50\x19\xe0\x1e\x86\x13\x99\xec\x87\xf8\xd2\x20\xc8\x0f\x9c\x61\x82\x76\x1b\xd3\xf4\xf7\x4a\x7f\x68\xef\xd5\x4a\x63\x68\x29\x0c\x91\xf8\xc9\x90\xe9\x5b\x1e\x87\x00\xbf\x1f\x5b\xc8\x3b\x5b\x77\x1b\xfd\x41\xdf\x19\xe8\x32\x7a\xb2\x6a\x8b\xaa\x9f\x19\x07\x0a\x87\xad\xf5\x26\x2c\x08\xe0\xe5\xe7\xef\xd7\x04\x7a\x6c\x9e\x48\x0a\x03\x03\xf6\xd7\x59\x73\xe4\xbf\xcd\x76\x62\x93\xb2\xdf\x30\xa2\xb3\xad\x5a\x31\xee\xcd\x97\xc1\xf7\xfb\x5b\x45\xde\x80\x9c\x5e\xfd\xbe\xbb\x9e\x74\x1f\x9f\xc6\xfb\xf8\xd0\xc2\x77\x26\x93\x6a\x93\x1d\x87\x9f\x81\x32\xb9\xb7\xee\xd6\x34\xab\x0f\x06\x58\x72\x78\xb1\x97\x88\xa5\x0b\x41\x27\xa0\xba\x12\x86\x4b\xe0\x28\x63\xf4\x46\x84\x5f\xde\xc9\xba\x0d\x61\x46\x96\xa5\xb7\xbf\x70\xb4\x91\x25\x88\x8c\x3b\x05\xee\xf2\x73\x7c\x79\x7e\xa1\x2a\xff\x2e\x81\xb9\xdf\xb2\x7b\x04\xfe\x2d\x82\x30\x8a\x2f\xb8\x41\x10\x8d\x2c\xe9\x1c\xc7\xba\x3b\xe0\xde\x1c\x08\xee\x0d\xb8\xb7\x06\x9c\x3b\x03\x7e\xdd\x32\x23\xe2\xc5\x8a\x77\xc9\xa2\x5d\xa2\x58\x57\xd4\x48\x17\xef\x96\x60\x52\xc3\x0f\x0c\xaa\xf1\x4c\x38\x4e\x2c\x78\x11\x67\x47\x96\x08\x48\x22\xe6\xca\xa2\xf0\x23\x20\x04\x40\x36\x75\x47\xca\xa6\xee\x8f\x43\x65\x53\xf7\xd7\x94\x4d\x5d\x32\x65\x53\xf7\xd7\x63\xe5\x83\xfd\xa7\x94\x4d\x5d\xc2\xdc\xb2\xa9\x3b\x4e\x32\x4b\xc4\x1b\x34\x75\xa1\x9f\xc3\x0d\xed\x51\xc6\x47\x6c\x62\x8e\x50\x31\x6c\x61\x86\x5d\xc4\x64\x50\xfc\xdc\x84\xd9\x83\x9b\xe6\xce\xc9\x7a\xc1\x85\x1c\xb4\xca\x39\x0c\x80\x6a\x54\xd6\x56\x32\xad\x70\x06\xa7\xf1\xad\x6f\x9e\xe5\x2d\x50\xbd\x4c\x8b\x7b\xf2\x7c\x5a\xd8\xca\xe6\x58\xd8\xdc\xc4\x35\x86\x65\x8d\x5a\xd5\xac\x05\x47\x6d\x07\xd8\x6e\xe0\xdb\x0c\x6c\x7b\x21\x9a\xad\x80\x5b\xce\x8c\x19\xa3\xec\x0e\x99\x22\x30\xbb\x0a\x92\xc5\xa7\x39\x6a\x58\xa9\xe1\xd3\x4c\x8d\x9b\x08\x3e\xcd\xec\x60\xff\x67\xb6\xa7\x74\xd6\x59\xbf\xa4\x79\x29\x13\x5e\xba\xf6\x14\xe2\x00\x7d\x4a\x63\x2b\x7d\xa5\x6b\x5d\x06\x4b\xca\x5b\xe2\x77\x2d\x02\x99\x07\xfa\x8a\xd6\x19\xeb\x0c\x2d\x5f\x19\xdd\x02\x6c\xf9\xc7\x99\xbc\xaf\x95\xf7\xd4\x62\x74\x68\x69\xf0\x16\xd4\xd9\xdf\xcd\xfe\x6e\xf6\x77\x89\x94\xfd\xdd\x98\x23\x66\x7f\x77\xa0\xec\xef\x66\x7f\xf7\x27\x94\xfd\xdd\xec\xef\x66\x7f\x37\xeb\xac\x9f\xd2\xbc\x94\xc9\x99\xf8\xbb\x50\xf3\x63\x54\x6a\xb0\x86\xc7\xb2\x06\xc0\x9c\x82\x5e\x74\xcf\xd1\xc6\xc6\x73\xff\x22\xe8\xe7\x5b\x83\xa1\xea\x6a\x7a\x4b\x39\x68\xfe\x8c\xc6\xc8\x28\x37\xde\x60\xdd\x4b\x39\xcd\x39\x71\xd5\x8a\x77\x55\x9d\x70\x5e\x60\x0f\x55\xbc\x1e\x14\xee\x9b\x3a\xcd\xc7\xf3\xba\xa4\x72\x6c\x0a\xb8\x33\x2a\xeb\x08\x46\xbb\xa1\xb2\x06\xe9\x1f\x4a\x3d\x08\xda\xf5\x74\x8a\x53\xc1\x77\x6d\x5b\xeb\x8d\x6e\x82\xaa\x7b\x49\x26\xef\x3f\x18\x5b\xe1\xb5\x0b\xe6\x98\x7b\xa8\x4b\xef\x1f\x7d\x19\xea\x54\xdf\xcd\x8b\x27\xe1\xb1\x24\xa6\x79\xcb\x88\x21\xf1\xa4\x18\x8e\x1d\x81\x71\x23\x34\x66\xc4\xce\x7b\xa3\x33\x16\xaf\x7f\x30\x87\x61\x64\x3d\x83\x59\x1b\x2a\xef\x13\xcc\xe3\x23\x6e\x6f\xe0\xb9\x19\xa4\xda\xdd\x99\x52\xbf\x2b\x4b\xdb\x35\x21\x89\x55\x1a\x6c\xad\x9d\x22\xf3\x1e\xa0\xd7\x70\x16\xd5\x37\x37\xba\x04\x62\x03\x8c\xdd\xba\xd5\x69\x3b\x28\x6d\x3f\x59\x11\x2f\x56\xd9\x83\xec\xf7\x0c\x6e\x1d\x36\xdd\x01\x0b\x9e\x19\xf0\x32\x24\x6b\x5f\x41\x7c\x31\xe9\x67\x4e\xb7\xb5\x29\xd5\xab\x1b\x44\x0d\x98\xd0\x36\xe1\x49\x65\x7c\xd3\x9b\xb6\x56\xe1\xd5\x0d\xa0\x0a\xe8\x46\x07\x55\xa9\xa0\x8e\x6d\x26\x22\xf0\xaa\x69\x6c\xa0\xab\x9d\x39\xe6\x20\x90\x7f\xea\x09\x27\x2d\xb2\x76\x65\xdd\xf9\xa0\x1d\x0d\x62\x1d\xfa\x7e\xfd\x10\xb4\x6b\x54\xfd\xe9\x32\xf6\x61\xc0\xda\x06\x9a\x11\x35\x4e\xfa\x9b\x53\x37\x37\xa6\xa4\xb7\xc9\x83\xe6\xb4\xd6\xaa\x0e\xeb\xf7\x6b\x5d\xde\xfe\x69\x2b\x4d\x05\x9c\x4f\x9b\x7a\x52\x5b\x55\xfd\x43\xd5\xaa\x29\x93\xb0\xc3\xe1\xeb\xaf\xfa\x18\xea\x57\xd5\xac\x68\x92\x37\x0f\xde\x68\xad\xa3\xc5\x32\x93\xda\x35\x98\x9f\xc6\x30\x08\x1a\x80\x23\x07\xe2\xb5\x0f\xe5\xd8\x01\xd8\x75\xcf\x54\xf3\x42\xbb\x6a\x91\xef\x59\x92\x99\x25\xdb\xa3\xdd\x7b\x63\x9b\x77\x37\x37\xa6\x19\xe2\xc8\x37\x66\x95\x22\x8c\x5c\xd6\x46\x37\x81\xa6\x50\x38\xef\x2f\xd8\x97\x4b\x85\xa0\xf3\x2d\x3f\x4a\x94\xc6\xb9\xa3\x46\x13\x01\x7d\x10\xd3\x74\xf5\xc1\x3a\xb5\x8a\x62\x40\xaa\xfe\x62\xfd\x0f\x5b\x1d\x67\x10\xa2\x1e\x86\xd7\xe4\xb8\x84\x6d\x2d\xdc\xe1\x90\x8b\x6a\xe7\xb6\x86\x7c\xf5\x01\x29\xfe\x5b\x43\x4b\xa7\x84\x5e\x4a\x3d\xa8\x80\x97\x52\x15\xed\x45\xff\x45\x47\x7f\x44\x88\xf6\x91\x85\x90\x7c\x31\x8c\x6c\x38\xfd\x42\x78\x8e\x3e\x0d\x76\x01\x3c\xc7\x2f\xa0\x7b\x65\xc4\x14\x78\x64\xf3\x37\x2a\x94\x7d\x0b\xd6\xe1\xa4\x3e\xbd\xe5\x79\x16\xe1\xae\x3e\x92\x94\xb2\x5b\x33\xff\x32\x10\x88\xf3\xa3\x16\xe7\xad\xa6\xbd\xf7\x62\xb7\x09\xa7\xb6\x4f\x7b\xee\xff\xac\xae\x35\xed\x9a\x6c\xd9\xda\x63\xb0\x8e\xc8\x35\x1f\xe4\x29\x8f\x0d\xca\xab\xd8\xaf\x8c\x38\x4b\xc4\x7e\xfc\x76\xc4\xca\x25\x0d\x79\x00\x86\x70\x3c\xbc\x43\x7a\x63\xd7\x56\x2a\xe8\xab\xe0\x54\xd0\xab\x57\x5f\x47\x55\xba\xce\xd6\xb5\x69\x56\xdf\xfb\x17\xc7\x3c\x54\x5a\xe5\x82\xa1\xb6\x66\x4f\x19\x6f\x22\x0b\x07\xc5\xb3\x89\xc9\x6a\x77\xda\xf9\x23\xeb\x43\x18\xee\x98\x82\xbe\x18\xc7\xf9\xc5\xff\x8f\x4e\xb5\xb5\x3e\xac\xdc\xaf\xb7\x9c\xc2\x14\xca\x95\x6b\x73\xf7\x7a\x86\x08\x95\xb9\x08\x1e\x1e\xf2\xba\x7e\x7a\xff\xe9\x5c\x92\x02\xb5\xd2\x36\x41\x99\x86\x9e\x1a\x03\x9f\xe9\x1b\xf5\xf0\xde\x36\x8d\x2e\xa1\x7b\xf8\x69\xb2\xb5\x5a\xa7\x6f\xcc\x43\xa2\x4f\x87\x2c\x82\xeb\xff\x4a\xb1\xbb\xd7\x1d\x92\xd9\x9e\xb7\x36\xc9\xd6\xae\xca\x24\x19\xd2\x79\x6f\x67\xb0\xb7\xb5\x2d\x15\x29\x09\x13\xdd\x5d\x75\xef\x3f\xd6\xca\x07\x53\xfe\xa3\xb6\xe5\xed\x55\xb0\x34\xfd\xcf\x19\xab\xe8\x33\x9c\x8f\x19\x94\x3f\x12\xaf\x46\x05\xb1\xb9\x76\x73\x9b\x30\x30\xcd\x83\xb4\xc1\xd3\x97\x8b\x9d\xff\xf0\xe9\x43\xe2\x55\xc7\x8b\x5f\xc6\x89\x41\x02\x06\x24\xf3\xf5\xd6\xcc\x07\xe3\x6f\x53\x72\x74\xa9\xca\xb5\x69\x56\x14\x8f\xef\x90\x58\x6c\x5d\x19\x7f\x3b\x49\x02\xde\x76\xa0\xef\x5f\x3f\x25\x1f\x67\x22\x75\x40\x0d\xb6\x8b\x06\x99\x4a\xa0\x71\x39\x1b\xd9\x06\x7a\xe0\xfb\xd7\x4f\x49\xe5\xf2\x37\x43\xcf\xf8\xe7\xc8\xe5\x74\xfa\xd5\xeb\xd2\x69\x72\x76\xe7\xf3\xb1\x40\x1e\xf3\x6b\xe5\x48\x91\x20\xe1\x48\x38\x8f\xed\x17\x81\xfe\xc8\xf8\x31\xa9\xf8\xac\xd4\xed\xfa\x26\x69\x4a\xf6\xc6\x36\x26\xd8\xe4\xed\x2a\x98\x69\xff\x68\x88\xbb\x98\xaa\xed\xc1\xd4\xb2\x89\xe8\x9a\x82\x2d\x9b\xfd\x50\x5f\x35\x54\xeb\xcc\x6d\x44\x32\x21\xfa\x22\xa3\x86\x62\x92\x2a\x28\x5c\x47\x8d\xd2\x9a\x4c\xdf\x98\xa6\xa2\x7f\xf6\x8c\xdd\xa7\xa9\xe5\x33\x0b\x4d\x4f\x6f\xd6\x51\x2b\xfb\x54\xb8\x3f\x54\x52\x9c\x9c\x4a\xdf\xa8\xae\x0e\xa8\xa3\x36\x6d\x54\x00\x36\x0e\x26\x6d\x7e\x05\xa5\x23\x8c\xc4\x94\xa0\xa2\x37\xaf\xb0\xbd\x1a\x88\x0f\xad\x5f\xb0\xf7\x6d\x20\x0e\xf2\x88\x60\x81\xb8\xad\xba\xa8\xa9\x09\xfb\x27\x5a\x0c\xf0\x97\xa9\xff\x78\x16\x2b\xaa\xd5\x59\xcb\x6d\xdb\x21\xd5\x21\xf5\x89\x88\xab\x4e\x6f\x92\x2a\x4d\x77\xec\xb6\xf2\x47\x9a\x73\x1c\xa8\xcf\xb3\xef\xae\x6b\xe3\xd7\x57\xd9\xf0\xd8\xd3\xd4\xb1\xe8\x77\x21\x38\x73\xdd\x05\x6c\x1d\x65\xbd\x6a\x8a\x49\xd7\x94\x11\xa4\xeb\x25\x2d\x95\x9a\xa8\xec\x7d\x73\xaf\x5c\xf5\xee\x92\x1c\xd4\xcd\x36\x16\xfb\x01\x89\x8d\x75\x63\x74\x5d\x81\x7a\x49\x3a\x66\x31\x64\xba\xff\xfb\x78\x1e\xce\xaf\x49\x60\xe6\x15\xe3\x67\x5f\xb2\xec\x27\xf1\xe8\x12\x30\xbd\xdd\xbc\x99\x66\x1f\x0b\x19\x2f\xdb\xc5\x47\x68\x2c\x0d\xf8\xed\x44\xc2\xb4\x4b\x77\x42\x63\xf5\x7b\x12\xca\x53\x65\xee\x8c\x47\x12\xbb\x23\x8e\x3d\xae\xfe\xc2\x44\x79\x9c\xf6\x74\x92\xcc\x75\xe0\xe6\xeb\x8e\xc1\x03\xe9\x4d\x1b\x1e\x3f\x98\xa4\x51\xd3\x8d\xae\x4c\xb7\x49\x7f\x01\x60\xfe\xa3\x3f\x9b\x8d\x49\xdd\x82\x15\x5e\xe3\x9b\xa4\xd8\x00\x13\xf9\x6e\x75\x97\x93\x79\xb6\x4f\x29\xb7\xd2\xe1\xaf\xbf\xfe\x3c\xa3\x3b\xc7\xfb\x7b\x83\x95\x10\xcf\xf9\x73\x70\xe9\xac\xf5\xc3\xbf\x7b\xb7\x38\x07\x72\xa8\x0f\x59\xac\xdb\x5a\xb1\xb0\xe8\x41\xbe\x81\x3b\xa0\xb7\x1b\xb4\xb9\xa9\x6d\x79\x9b\xf6\x42\xb9\x52\x41\xf9\x89\x92\x97\x9e\xc6\xfa\xfe\x3d\xf9\x0d\x27\xbc\xd2\xab\x52\x5f\x6a\xe7\x8d\x0f\xba\x09\xa9\x33\x46\x73\x0e\xf4\x6e\x8a\xd5\x34\xed\x24\x67\x9b\x99\x39\x2c\x40\x32\xae\x36\xe1\xab\x6e\x6d\x52\xfd\x61\x5c\x5f\x85\xcf\x58\x5b\x78\x13\x5b\xeb\xcd\x44\x43\xdd\x19\x34\x10\x3a\x49\x1e\xc6\x7e\x0d\x92\xb1\xcc\xd0\x9b\x2e\x6d\xd6\xa4\x6e\xaa\xd6\x9a\x86\x8e\x52\x50\xf0\x75\xe0\x19\x65\x33\xe2\xfc\xb2\x5b\x68\xba\x42\xa2\x47\x96\x60\xde\x5a\x5b\x1f\x90\x08\x3f\x87\xb5\x26\xd9\x70\x4a\x7d\xb4\x70\x10\xc6\x51\x92\x70\xe7\x8c\x4f\x9c\x66\x50\xae\x55\xfb\xae\x0b\xeb\x0f\xc6\x97\xf6\x4e\x73\x74\x3c\xea\xf7\x8c\x43\x5e\x0d\xbd\x5e\xd2\x0f\x38\x91\xd9\x37\x40\x88\x05\x3b\x45\xef\xec\xa2\x30\x7f\xa7\x3e\x25\x9f\xb8\xef\x53\xb3\x3d\x96\x14\x76\xa9\x70\x7e\x81\xc6\xd6\xba\xa0\xe8\x30\x06\xc5\xcc\x83\x65\x39\xd0\x71\x40\x53\xc6\x97\x86\x30\xf2\x65\xcf\x4d\xb3\x3b\xca\xcc\xdf\xd4\x5d\xbd\xd8\x4a\x2b\xf9\xb7\x87\x1f\x9d\xea\xa8\xdc\xd8\xae\x81\xac\x1c\x78\x45\x9b\xb4\xc6\xf9\x59\x99\xcc\x43\x3f\xf5\x19\x96\xa2\x00\xd6\xda\xc5\xd3\x37\xa4\xe2\xd8\x76\x17\xf8\x1a\x6e\x21\xde\xd7\xca\x90\x2f\x4b\x59\xc6\xde\x76\x80\x37\x1e\xf8\xd9\xad\x41\xb2\x5d\x5d\xdb\x60\x9b\xf3\x0b\x6a\x56\x33\x2c\x8f\xd9\x4e\x2a\xd9\x3e\x5a\x17\xee\xad\x9b\xe0\x86\xf0\xec\x6a\xcb\xde\x6c\x39\x55\xeb\xec\xf6\xb7\xf4\x29\x9d\x6d\xaa\x2f\x80\x1c\x3b\xd2\xa4\xc9\xbe\x70\xe1\x5b\x8c\x41\x0b\xde\x57\x46\x78\x54\x3a\xeb\x81\x58\x55\x68\x7b\x12\x26\x37\x0e\xc4\xcb\xc0\xdd\x93\x2c\x17\x77\x4f\x92\xac\xdc\x3d\xf1\xf2\x73\x7f\x9c\x85\x68\x49\xf9\x89\x9b\x03\xe1\x55\x6d\x87\xcf\xc2\x09\x95\x7b\x12\xa4\x71\x1f\xbe\x00\x8b\x9a\xec\x89\x13\x68\x38\x1c\x97\xbd\x69\x9c\x8a\xb8\x1f\x07\x47\x4f\xf4\xe7\x4f\xb3\xd6\x9c\x51\x08\xb3\xa7\xb7\xab\x73\xf9\x55\x29\x71\xe7\x51\x44\xa8\x54\xd9\x53\x94\xa3\xa0\x90\x57\xaf\x44\x9f\x91\x54\x9b\x16\xc2\xda\x96\x3d\x89\xd5\x63\x91\x4f\xdb\x9f\xce\x42\xc8\x23\xf2\x0a\x99\x3d\xc5\x12\xec\x08\x55\x33\x7b\x8a\x26\xdb\xa2\x4a\x9a\x04\xf3\x91\x55\xd7\x44\x9f\x50\x1c\x55\xc3\xae\xbd\xd9\x53\x04\x4d\x23\x37\x42\x97\x6a\x48\x0a\x06\x1f\xee\xd5\xb2\x31\x45\xa7\xec\xc0\xee\xe9\x6c\x8e\xd4\xec\xc0\x66\x07\x16\x7c\x9a\xa9\x6e\x0f\x31\xe5\xbf\xd9\x5b\xcd\x70\x83\x84\xad\x02\xba\xca\xe8\xe6\x24\xf5\xbd\x45\xa1\x1f\x5a\xc3\x04\x4f\x3f\x24\x1e\x90\xfa\x21\x49\x35\x17\x5f\x67\x9d\xac\x42\x9a\xa5\x65\xd8\xbc\x3e\x59\xd1\x32\xa3\xdb\xed\x70\xaf\x90\xea\x02\xe7\xef\xce\x5e\x3f\x1e\x47\x21\x1a\x89\x23\xcd\x2b\x2a\xaa\xe5\x48\x33\xbf\xec\x73\x7a\x65\x7c\x98\xa0\x38\x20\xe8\x46\x35\xa9\x4b\xbc\x27\x69\xa0\x3a\xde\x90\xce\xee\x7e\x74\xdc\x4b\xf0\x42\x35\x95\x34\xba\xeb\xa4\x17\xa9\x53\xe5\x05\x6f\x08\x58\x51\xe2\x51\x6e\xf5\xe3\xf6\xf7\xc9\xc7\x39\xc3\xc6\xdb\xd6\xa6\xce\xc4\xcc\xd9\xb6\x07\x34\x65\xb6\xed\x2c\xbb\x61\xf7\x0a\x81\xfc\xeb\xd4\xbd\xb3\x7d\xa9\x6a\xfd\xe9\xcb\x19\x28\xda\x95\x0a\xfa\x5e\xa5\x37\x44\x5a\x67\xc3\x00\x9b\xf5\xc1\x6e\x94\x49\x5f\x87\x91\x95\xc7\x8e\xa6\x54\x1e\xde\xd7\x1f\x1b\x75\x5d\x63\x2e\x1b\x73\xe1\x07\x48\xc9\x49\xc0\x8c\x9e\xc6\xba\x9c\xe2\xdc\xf3\x8f\x3e\xe8\xf4\x1d\xa0\xe8\x48\xbd\xc2\xa1\x70\x6d\xff\xa4\x95\xe8\x1e\xee\x28\x82\xf4\x27\xfa\x35\x4e\x76\x3e\x40\xb7\x0c\x67\x9b\xd0\x38\xef\xde\xa5\xb9\x3f\xfc\xeb\x94\xfb\xc3\x8f\x34\x59\x6c\x6f\xba\xd6\xed\x13\x02\x81\xe1\xda\x73\x38\x6b\x6d\xd2\xca\xb1\xb3\x2b\x20\xc8\x66\xe8\x01\x4d\x66\xdb\x1c\x0e\xe5\xdb\xf4\x15\xdf\xb8\x30\x75\xd7\x49\x0b\x3c\xef\x7c\xbb\xd6\x4e\x9f\x4d\xc5\xcf\xce\xd0\xaf\x4d\xf9\x98\xbc\x1c\xe7\x87\xf1\x26\x64\x58\x34\xff\x73\xc2\x5a\x23\x20\x89\x13\x14\x07\xe8\xe7\x4e\x7b\x92\x09\x8f\x32\x73\xe7\xc8\xa7\x3b\xb8\xe8\xd0\xe7\xf9\xff\x4e\xf1\x71\x89\x01\xd8\xc7\x1e\x41\xc9\x06\x48\x8a\xa2\x3e\x5c\xfc\xd1\x33\xc1\x93\x6e\xff\xa0\x77\xae\x20\x2b\x10\x9a\x90\xbf\x37\x37\x49\x04\x68\x97\x79\xbb\x4c\x2e\x00\xb6\x89\xf8\x53\xd2\xcf\xae\x55\x79\xdb\xb5\x57\xe5\x5a\x57\xdd\xeb\x00\xa3\xd4\xfd\xe8\x91\x91\x8f\x2d\x12\xb2\xb9\xd0\xc6\x42\xab\xbe\x51\x0f\xef\x6d\xd3\x0c\x11\x68\x12\x9b\xa1\x29\x37\x98\xa7\x4d\x67\x30\xe0\x33\xc9\x8c\x75\xfd\x5f\x31\x77\x8d\xae\xf2\xf3\x96\xfd\xfc\xa7\x84\x2d\x2b\x9d\x6d\x3e\x3e\xb4\x8e\xd6\xff\x8b\x3c\x83\x55\x79\x74\x65\x33\x2b\xbc\xa0\xd3\xb2\x42\x6d\xcb\xe3\xf1\x21\x64\xd7\xd4\xbd\xff\x58\x2b\x1f\x4c\xf9\x8f\xda\x96\xb7\x57\xc1\x1e\x57\xeb\xe8\x18\x05\xec\xc1\xe1\x87\x36\xda\x42\x98\x13\x5a\xc5\x03\xaa\x68\x04\x08\x8f\xfe\xa0\xad\x23\xc0\x95\x45\xdc\x38\xa8\x5d\x04\x64\xaf\xf6\xc6\x06\xb5\x2f\x0c\x6c\x51\xaa\x72\x6d\x9a\x15\x72\x9b\x02\xb3\x67\x65\xfc\x2d\xe2\xdf\xb3\x06\xf8\xfe\x95\x5c\x28\x0c\xbf\x3f\xb1\xf8\xde\x9a\x86\x1c\x29\x60\xf8\x5d\x69\x85\x10\x93\x91\x91\x15\xc8\x3f\xfe\xfe\xf5\x53\x12\x79\xfa\xcd\xbc\xee\x09\x8c\x84\xca\x53\x7a\x9d\x87\xdf\x5e\xc0\x3c\xe3\xd7\xca\x41\x21\xe4\xa4\x7a\x75\xff\xc1\xb4\x9f\x8f\x93\x8f\xcd\x37\xa5\x6e\xd7\xb4\x9e\x7e\x28\xd3\xa0\x59\x92\xe0\x65\x31\x3b\xd8\x4e\xbf\xc0\x43\x6e\x4c\x67\xa7\xc2\x46\x99\xa2\xea\x84\x82\x25\x53\xe8\x25\x15\xe7\xa6\x60\x02\x8c\x6d\xf8\x1a\x06\x49\xaa\x4c\xaa\x47\x80\xd4\x48\x4c\x2f\x98\xa6\xa2\x7d\xe2\xcc\xdc\x86\xa9\xe4\xea\x0d\x32\xfd\x9b\x70\x4c\xa0\xae\x68\xe8\xce\x32\xd2\xbc\xa6\xf1\x6a\xa1\xc3\x17\x3c\xa9\x79\x49\x09\x70\x3a\x17\x33\x1f\x01\x4f\xe3\xe2\xa7\x70\x71\xd3\xb7\xf0\xd4\x2d\x66\x72\x0b\x9a\xb2\x85\xa5\x6b\x81\xa9\x5a\x8c\x4c\x11\xd4\xc2\x43\xb4\x2c\xbc\xa4\x68\xee\x17\x7a\x12\x61\x6a\x8d\x86\xa1\x01\x2b\x34\x08\xd9\x71\x6e\x31\x8a\xc6\x56\xfa\xb2\xbb\xae\x8d\x5f\x5f\xbd\xd5\x43\x7d\xaa\x78\xe6\xbb\x10\x9c\xb9\xee\x02\x7d\xbd\x64\xa0\x99\xe9\xd7\x0e\x0c\x12\x51\xd1\x1a\xa1\x59\x80\x1d\x05\xb3\xbd\x42\x20\x9e\xbd\xc2\x6b\x52\xc8\x4f\x77\x97\x34\x22\x14\x64\xbd\x0b\x9a\x0d\x4e\x9e\x4a\xce\x6b\x21\xc8\xcc\x0e\xcf\x76\xe4\x01\xc9\x1a\xfc\x89\x5a\x5a\x4b\x9a\xf8\x09\xe4\x82\xdd\xa8\x4f\x30\x26\xbf\x19\xdf\xe4\xa2\xc8\x6a\xb1\xc7\x92\x44\x8e\x13\x33\x2f\xb7\x04\x1a\x40\x6f\xda\xf0\xf8\xc1\x24\x89\xd4\x6d\x74\x65\x3a\x72\xe1\x22\x1e\x3c\x36\xff\xd1\x9f\xcd\xc6\xa4\xca\xfe\x84\xd6\xf1\xa6\x5c\x60\xac\x13\x40\x8b\x3b\x97\xe4\x88\x01\x46\xeb\xaf\xbf\xfe\x5c\xf0\xbd\xd2\xfd\xbd\xa1\x77\x0e\x9b\xdb\xf4\x31\xa9\xaa\x35\x00\x1e\xf3\xb6\x82\x0f\x43\x78\xe8\x6c\xbc\xe1\x7c\xf3\x72\xd6\x81\x86\x9b\xda\x96\xb7\x69\x2e\x04\x2b\x15\x94\x4f\x9c\xfc\xf1\x34\xc6\xf7\xef\xc9\x6e\xaf\xa0\xd5\x5c\x95\x1a\x47\x47\x9b\x99\xf1\x31\xd3\xfc\xcc\xb6\x4a\xca\x48\xf3\xca\x3c\x1b\x3e\x36\x3a\x77\x9a\xf0\x55\xb7\x36\x89\xac\x1b\xa7\xcb\x60\xe9\xad\x12\x19\x1b\xd4\x5a\x6f\x12\x0f\x71\x67\x90\xc0\x5b\xd2\x7b\xf0\xfd\xf7\x46\x67\x83\xba\xf3\x41\xbb\x34\xd9\x61\x63\xe5\x1f\xf9\x60\x66\xe8\xa7\x05\x67\x6f\x61\x3c\xb0\x5b\x4c\x9a\xd2\xa0\x45\x3b\x20\x5e\x59\x5b\x4f\x06\x1e\x46\x59\x25\xe9\x46\x86\x74\x47\x24\xa8\xca\x13\xec\x4a\x0f\x5e\x9f\x62\x4b\xca\xb5\x6a\xdf\x75\x61\xfd\xc1\xf8\xd2\xde\x69\x54\xd7\x22\x36\xff\x38\xd4\x15\xad\x54\x8a\x3f\x50\x62\x73\xc9\x34\x26\x18\x15\x2c\x14\x9a\xc6\x47\xf9\x3b\xd5\xa9\xf4\xc4\x4d\x9f\x9a\xed\x91\x00\x34\xc6\x58\x7e\x50\xab\xed\x31\xdb\x17\x1b\xb0\xc9\x8e\x79\xc2\x98\xc7\x21\xaa\xff\x2c\x8e\x11\xf3\x37\x65\xc7\x2e\xb6\x52\x46\xfa\xdd\xe1\x07\xc6\x3e\x9e\x36\xb6\x6b\xc8\x56\x03\xb4\x6a\x4d\x1a\xa3\x75\xd1\x26\x65\xf1\x04\xe5\x3f\x0b\x36\x25\x5a\x3b\x17\x4f\x73\x8e\xcd\x79\xed\x2e\xf8\x32\x44\xa7\xdf\xd7\xca\x90\x2e\xba\x60\x43\x69\x84\xda\x5f\x2c\xdb\x60\xfb\xba\xfb\xde\xe8\x3b\xb6\xb6\xc1\x36\xcb\x0f\x9a\x55\x33\x49\x9f\xdf\x4e\x24\xfa\x1e\x59\x17\xee\xad\x4b\x78\xe3\xb3\xf8\xda\x91\x37\x51\x42\xd1\x3a\xbb\xfd\x1d\x6d\x1a\x67\x93\x92\x08\xc2\xfd\x4f\x92\x94\xc8\x84\xf8\xe7\x27\x60\x31\xe1\x0d\xd9\xa8\x88\x52\x44\x44\x01\x1a\xa2\x20\x71\x6b\x20\x09\x0a\x62\x0c\x04\x44\x6e\x16\xe1\x9e\x24\xc8\x87\xc2\xe5\x93\x20\x1e\x72\xd1\x0e\xd9\x48\x87\xcc\x94\xd2\xc3\x87\x39\x08\x87\x3c\x74\x43\xc1\xc6\xf0\x51\x0d\xf1\x93\xf4\xf9\x93\xf0\xda\xb2\xa1\xf8\xdf\x8e\x6e\x94\xc2\xee\xc7\x40\xab\x8d\x03\xb7\x2f\x56\xd5\x45\x2c\x98\xfd\x08\x33\x91\x63\xbd\x4a\xa1\xf5\x45\xea\xac\xc8\x27\x9f\x94\x07\x62\xc1\xe7\xc7\x10\xd0\x68\xb0\xf9\x51\x64\x34\x02\x5c\x7e\x94\x79\xc4\x80\xc9\x9f\x85\xaa\x10\x42\xe3\x0b\x35\x85\xcc\xc8\x5b\x92\xb1\xc6\x1c\x94\x03\x7f\xff\x76\x0c\x98\xec\xdc\x2d\xf4\x88\xcb\xce\xdd\x71\xca\xce\xdd\xaf\x49\x0c\x53\x2f\x28\xcb\x65\xc3\xd3\x0b\xb6\x26\x02\x2c\xbd\x0c\x92\x5e\xa2\x6d\x16\x82\x4b\x35\x0d\xca\x54\xf2\xe2\x42\xb0\x4b\x21\x19\x6a\x1e\x9a\x38\x00\x31\x8f\x4a\x22\x04\x2d\x3f\xc3\x0b\x22\x14\x4a\x1e\x4f\x78\x84\x20\xe4\xe1\xd7\x27\x6c\x8c\x87\x42\xc6\x27\x4e\xbb\x26\xc3\xc4\x03\x10\xf1\x90\x14\x11\xa1\xe1\x67\x76\xc7\x0a\x41\xc1\xc3\x6f\x07\x21\xe0\xe1\xf7\x9f\x41\x53\x53\x00\xf2\x76\x86\xfa\xf1\xcd\x66\x1a\xce\xa6\xe3\x28\x15\xba\x3d\x5d\x6f\x52\x00\xae\x7d\x66\xca\x0f\x84\x67\xc7\xd3\x8b\x98\xb0\xec\x59\xd0\x69\x34\x85\xa0\xe3\x90\xeb\x8c\xc5\xc5\xa1\xd6\xe1\x4f\x67\x40\xac\xe3\x63\x40\xd0\xea\x4c\x7b\x73\x36\x3d\xe3\xe9\x30\xea\x18\x84\x3a\x00\x9f\x8e\xe9\x69\x72\x74\xfa\x6c\x92\xc0\xe6\xd7\x97\x2e\xf7\xd1\xdd\x53\xee\xa3\x9b\xc8\xa9\x48\xdd\xea\x76\x02\x80\x10\x4c\xb3\x21\x90\xe6\x33\xb3\x41\xb3\xe9\x96\xb8\x41\x7e\xd2\x72\x0f\x26\x3c\x79\x52\x61\xa0\x43\x92\x43\xd3\x80\xa1\xc8\x67\x26\x68\x4c\xe8\x71\xd9\x38\x13\x30\x5f\x42\xfc\x79\x4e\xfd\x02\x31\x91\x0d\x60\x69\xf2\x4f\x5b\x5b\x7d\xd3\x9b\xb6\x56\xc7\xef\x32\x50\xdc\x5c\x67\xeb\x3a\x4d\xbb\x25\xd5\x34\x36\xa8\xb3\xea\x3d\x86\x55\x9d\xea\xa0\x2a\x15\x54\x5e\xdb\xf8\x6b\xeb\x5b\x9d\xa4\x8f\xa6\xba\xb9\x31\x8d\x09\x64\x9b\x85\x65\x50\xd8\x4a\xbf\x03\xc7\xe1\x8e\x55\x3c\xa1\xce\x6a\xe7\x74\xf5\xa1\xdb\xee\xde\x13\x92\xb7\x69\x56\x9f\x56\x8d\xdd\xfd\xf9\xe3\x83\x2e\x3b\xa4\xcb\xd6\x48\xcc\xac\x2b\x59\xce\xd5\xf0\x4d\xbc\xfc\x07\xf9\xe8\x45\x8f\x2d\x1c\xca\xf5\x1e\x59\x59\x90\xd9\xca\x4e\x5b\x1b\x29\x46\x7a\x6d\x21\x4b\x63\x1b\x29\x4a\x52\x6b\xd1\x3b\x7a\xda\xa9\x20\xcb\xb0\x8d\x3a\xa1\x3b\x55\x77\xd2\x05\x8e\xb0\xd7\x03\x45\xfb\x2a\x49\x62\xd8\x21\x49\x13\x80\x0b\x41\x42\xdd\xfe\xf9\x91\x69\x04\x2f\x11\x97\x1c\x14\x51\xd6\xb4\xd7\x2e\x7d\xda\x7d\x56\x2c\x3d\x65\xc5\xf2\x3a\x65\xc5\xf2\x6b\xca\x8a\x25\xd2\x24\xee\xb5\x59\xad\xc1\x2a\x80\x91\xe4\xb9\xe6\xb2\x4c\x73\x3e\x23\x5d\x1c\x58\x9b\x8c\x87\x87\x45\x83\x1f\x14\x6c\x15\x97\x4b\xc6\x25\x4a\xe3\x27\x48\x0e\x93\xad\xcb\x74\xa5\xeb\xbe\xa3\xeb\x37\xed\x78\x9a\x4e\xa0\x22\xb3\xbb\xf0\x13\xca\xa7\xfa\x2b\x94\x4f\xf5\xd7\x28\x9f\xea\x2f\x5f\x92\xdd\x85\x91\xb2\x62\x79\x85\xb2\x62\x79\x8d\xb2\x62\x79\xf9\x92\x93\xb9\x0b\xfc\xe1\xb9\xdb\x78\xf1\xd2\x52\x64\xd9\xce\xf0\x27\xb3\x1e\x6b\x6d\x95\xef\x01\x84\xf7\x00\xfb\x25\xdc\xee\xf6\xa9\xac\xfb\x5a\x5d\xeb\x7a\x64\x3b\xbe\xee\x89\x73\x80\xc6\x73\x35\x8a\x58\x27\x45\x2c\xcb\xa0\x88\x63\x1d\x14\x71\x8f\xae\x78\x56\x42\xf4\x89\xc5\xb1\x16\x8a\x78\x16\x43\x11\xfb\x0b\x63\x59\x0e\x45\x24\xeb\xa1\x88\x60\x41\x14\xb1\xac\x88\x22\x96\x25\x51\x44\x5b\xe7\x5e\x3b\x7d\xde\xea\x4b\x21\x37\xc9\xf2\x19\x7e\x4e\xd1\x38\x33\xa2\xf9\x26\x7a\x49\x33\xe6\xef\x9d\xd2\x2f\x8c\xb2\xaa\x72\xee\x0b\xb6\xb5\xb5\x5d\x3d\xfe\x4b\x72\x80\x44\xe8\xa9\x25\xd1\x31\x17\x87\x5f\x91\xaf\x00\x30\x12\x5d\x01\x3c\x37\x34\xf3\x3d\xc0\xb2\xfc\x84\x08\x06\x7a\xbe\x03\xf8\x09\xe5\x50\xdd\x2b\x94\x43\x75\xaf\x51\x0e\xd5\xbd\x7c\x89\xf8\x0e\x40\x6a\x58\xc7\x36\xaa\x23\x9a\x7e\x82\x05\x16\xbe\x40\x6a\x44\x8b\x24\x58\xbc\x82\x32\xce\x12\x1b\xcd\xa2\xf9\x4b\x2c\x36\x89\xa1\x3c\xb9\xd1\xc5\x8e\x1f\x37\xc1\xe4\x18\x72\x8e\x21\xc7\x9c\x48\x91\x63\xc8\x44\xca\x31\x64\x8c\x72\x0c\x99\x4e\x39\x86\xfc\x6b\xca\x31\xe4\x29\x5f\x92\x63\xc8\x07\x6f\xc8\x31\xe4\x1c\x43\xce\x31\xe4\xe3\x94\x63\xc8\xf1\x27\x50\xe4\x18\xf2\x2f\x28\xc7\x90\x5f\xa7\x1c\x43\xfe\x35\xe5\x18\xf2\x9e\x72\x0c\x39\xd5\x0b\x72\x0c\x39\xc7\x90\xc1\x47\x27\x88\x21\xc3\x8f\x28\xb7\x5a\x70\x4b\x72\xdd\xdc\x25\x9a\x3c\xcf\x16\xc2\xa1\x75\x98\x92\xd0\x5b\x11\xd3\x8d\xf4\x9b\xb3\x60\x18\x9d\x6f\x4b\xee\x90\xa7\xff\xa5\x1f\x59\x10\x85\x32\x33\x96\x6d\xbc\x0a\x75\x32\x0f\x95\x29\xc2\xc0\x7c\x74\xa6\x82\xd5\xe3\xf1\x90\x24\xaa\x9c\x63\xe4\x09\x54\x38\x1f\xd3\x56\xc6\x8f\x52\x1c\x5b\x21\x77\x08\xb1\x6b\x4f\x76\xd0\xf3\x91\x6a\x05\x3c\x22\x87\x57\x95\xf1\x4a\x04\x48\x55\x21\xbb\x88\x60\x54\x85\x63\xcb\xa0\x53\x4f\xc6\xa9\x6c\xa0\x54\x01\xa3\x0e\x7d\x76\xf3\x01\x3b\xc9\xc0\xf9\x80\x4d\xf5\x20\xa7\x5d\xfa\x96\x0d\x40\x17\x26\x69\x03\xf4\x1e\x14\xe7\xb2\xab\xeb\xab\x5e\x26\xe7\x05\x01\x30\x91\x3f\x33\xc5\x32\x37\x26\xbc\x1f\x8f\xc7\x79\x2d\x32\xe2\x82\xb3\xa6\x35\x10\x5b\x8b\xf1\x82\x17\xa5\xdd\x6c\x54\x03\x2a\x9e\x25\x7c\x18\x10\x73\x18\x88\xf5\x51\xa2\xe6\x4a\xcc\x93\x4e\x74\xce\x31\x22\x12\xb1\x46\xc5\xa3\x13\x03\x49\xef\xbb\xc4\x91\x8a\x38\xd3\x28\xe4\x57\x6e\x51\x22\xf2\x7c\x03\x2b\xe2\x24\x64\xc6\xd6\xe1\x44\xb8\x26\xd7\x40\xd2\x8b\x2c\xc9\x25\x96\xf8\x6a\x84\x1f\xeb\x18\x28\x06\x47\x4b\xe3\x1e\x03\x45\xe1\x29\x61\x0c\x24\xda\x4c\xe4\x3c\xc5\x8f\x8a\x0c\x24\xe6\x2c\x79\x84\x64\xa0\x18\x1c\x16\x21\x5a\x32\x50\x14\x26\x13\x45\x4e\x22\xce\x43\x16\x45\x89\x36\x11\x39\xaf\xb3\xe3\x2a\x03\x89\x59\x5d\x16\x63\x19\x28\x9b\x06\x11\x27\x91\x4d\x83\x48\x0d\xc0\x98\xb1\x71\x76\x07\x30\x24\x62\x33\x90\x30\x0c\xc5\x70\x09\x71\x1f\x64\x72\xb7\x70\xe7\xae\x30\x15\x92\x54\x19\x49\x94\x80\x58\x01\x48\x85\x5f\x2a\xf8\x22\xc1\x6b\x9d\xbe\x31\x0f\x93\x3b\xd7\x30\x1a\xdf\x21\x65\x6e\x39\x0d\xb7\x4c\xac\xfa\xfa\xf0\xf5\x24\x89\x28\xbb\x40\xf9\x00\x57\x37\xc9\x98\xb5\xb9\xd1\xe5\x63\x59\x83\x5f\xc8\xe7\xfd\xd6\xfa\x70\x15\x94\x63\x14\x53\xc8\x04\x4e\x3f\xd0\xf0\xb7\x62\x8f\x5b\x70\x43\xc5\x87\x74\x1e\xc5\x48\x42\xdb\x6c\x1d\x42\xfb\x3b\x0d\x34\xfb\x25\xc9\x37\x71\x6d\x3d\x73\xec\x22\xce\x06\x6c\xbf\xff\x9f\x5a\x55\xc0\xf5\xce\x4b\x9a\x4d\x0d\x85\xd4\x63\x2a\xa2\xd7\x2c\xcc\x64\x36\x71\x2a\x04\x18\x3e\xc5\xf3\x17\xf4\x4b\x22\xd6\x38\x27\xaf\x0f\xc0\x71\xcd\x5f\x8e\x2f\xda\xd2\xd6\x72\xce\xba\x91\x54\xf3\xf8\x85\x1d\x5c\xe9\xf3\xc1\x45\xb5\x83\x3f\xbe\x47\xc8\xdc\x0f\x17\xb7\xdd\xb5\x76\x8d\x0e\xda\x5f\x98\x26\x5c\x58\x77\x31\xbc\xf2\xff\x8a\xe0\xd8\xec\xe6\xcb\xb5\x96\x28\x93\x93\x57\xb7\x6e\x79\xe4\x14\x27\x6a\x28\xdb\x2b\x5b\xde\xbe\xe1\x33\x35\x4b\xe7\x9e\x92\x48\xe7\x32\x45\x43\xf0\x70\xeb\xf4\x55\xb0\x6d\x76\x6f\x00\xca\xee\x4d\x76\x6f\xb2\x7b\xf3\x82\xb2\x7b\xf3\x0b\xca\xee\xcd\x48\xd9\xbd\x39\x77\x03\x2a\xbb\x37\xd9\xbd\xc9\xd2\x39\x57\xe9\x5c\xa6\x68\x4c\x5b\xc4\x52\x14\xb5\xb9\xd3\x8d\xf6\xfe\xd2\xd9\xeb\xc9\x6e\x9a\x78\x1e\x91\xb4\x3e\x51\xe0\x09\x2d\xb7\x61\x86\xa4\xea\x58\x99\xba\x73\xfa\xdb\xda\x69\xbf\xb6\x35\x63\xe9\x64\xfd\xd5\x24\x2a\x8a\xed\xb1\xc9\x98\x8c\x7f\xaa\x08\x99\x44\xec\xa1\x89\x38\x3c\x86\x67\x36\x8b\x34\x3d\xb1\x37\x36\x8b\xec\x53\x81\x07\x26\xf3\xbe\x22\xf5\x45\xe2\x7a\x5d\x7c\x8f\x4b\xb8\x6d\x7c\x5b\x4e\x60\xc7\xc5\xb0\xe1\x22\xd8\x6f\x09\x6c\x37\x89\x57\x75\xb2\x52\x7a\x96\xb9\x28\x10\x18\xd3\x98\x60\x54\xfd\x41\xd7\xea\xf1\x4a\x97\xb6\xe1\xa0\x75\x9f\xee\x80\x6e\xb5\x33\xb6\x5a\xe0\xc4\x7d\x57\x96\xda\xfb\x45\x5a\x45\x02\xaf\x7b\xa1\x76\x51\xd6\xcc\x11\x35\xf3\x92\xd4\x63\x30\x1b\x6d\xbb\xb0\x38\x05\xc3\xfc\xe4\xc9\x9a\xbf\x6d\xf7\x71\x8a\x8e\x01\xc2\x62\x83\xa1\xb8\xee\x92\x29\xfd\xd2\xbe\xe0\x32\xf1\xdf\x2a\xcb\x4f\x97\x93\x67\xdc\x6f\x87\x5d\xe6\x82\x9d\xa4\xe7\x40\xeb\x6c\xb0\xa5\x65\xa5\xe9\x0b\x06\xe6\x97\x32\x3d\x93\x0a\x54\x9b\x4e\x9b\xd8\xef\xb4\xaa\x4c\x8e\x4a\x1e\xa3\x1c\x95\x5c\x98\xfd\x9d\xa3\x92\x20\xe5\xa8\x64\x91\xa3\x92\x39\x2a\x99\x7d\x5f\x94\x72\x54\xb2\xc8\x51\xc9\x1c\x95\x04\x28\x47\x25\x01\xca\x9a\x79\x3e\x9a\x79\x49\xea\xf1\x8d\x45\x25\xc7\x36\x48\x30\x2e\x34\x57\xaa\x6b\xb3\x31\x68\x78\xb2\x88\x88\x32\x24\x92\x0e\x61\x83\x1b\xed\xdf\xde\x97\x33\x1f\xf4\xba\xec\x9c\x09\x8f\xef\x6d\x13\xf4\x03\xa8\x8a\xf9\xdc\xa9\xea\xda\xde\x5f\x3a\x73\x67\x6a\xbd\xd2\x1f\x7d\xa9\x6a\xc5\x01\x2c\x94\xf5\xf8\x28\x55\xab\xae\x4d\x6d\x78\x3b\x2d\x04\x94\xa8\xde\x5c\xa8\xab\x28\x2a\xc7\xa9\x39\x2b\x16\xfd\xd5\xa2\x2a\xbd\x27\x01\x61\xb0\x8a\x44\x2e\x5a\x67\xcb\x3f\x6c\xd7\x30\x2c\x33\x51\x3c\x5f\x55\x5f\x9a\xfa\xf1\xab\xb5\xe1\x37\x53\x6b\xff\xe8\x83\x66\x74\x14\x96\x7c\xb9\xeb\x9a\x77\xfe\x77\x67\x3b\x06\x9b\x1e\x58\x24\xff\xfb\x3f\x93\xba\x0d\xfd\xac\xff\xb4\xcd\x76\xe5\x4e\xb0\x5e\xdf\xbd\x66\x34\xcc\x3c\xdd\x72\x79\xfd\xd9\x34\xdd\xc3\x97\xbe\xbb\xd4\xf4\x70\xb7\xfa\x4e\x8b\x40\x28\xf8\xc8\x2c\x16\xed\xa0\x14\x69\xe0\xfe\xf1\x53\x0c\xdc\xb1\x38\x53\x3c\xb0\x40\xe5\xdf\x9b\xa6\xb2\xf7\xfe\x44\xbc\xb9\xda\x78\xf5\xde\xe9\x4a\x37\xc1\xa8\xfa\xaa\xe5\x56\x6b\x0b\xb7\xed\xe5\x34\x4e\x86\xa4\xb4\x53\x70\x27\x9a\xc1\xe4\xfe\x40\x50\x2e\x74\x6d\xbe\x6d\x7e\x8d\xde\xa4\x31\x9a\x6f\x9b\x61\xca\xb7\xcd\xf9\xb6\x39\xdf\x36\xe7\xdb\x66\x32\xe5\x3b\x8d\x9f\x50\xbe\x6d\x26\x50\xbe\x6d\xce\xb7\xcd\xf9\xb6\xf9\x18\x65\xcd\x9c\x6f\x9b\x17\xa5\x60\xd8\x5e\x7c\x65\xc0\xbb\x34\x6e\x14\xb8\x1f\xea\x4b\x83\x22\x15\x71\x87\x0b\xda\x6d\x4c\xd3\xdf\x15\xfe\xa1\xbd\x57\x2b\x8d\x23\x82\x31\x45\xe9\x27\x43\x4f\xd7\x02\x3f\x04\xd6\x38\xf8\x02\xdf\xd9\xba\xdb\xe8\x0f\xfa\xce\xc0\xc9\x0a\x93\x57\x37\x55\xfd\x2c\xb9\x90\x70\x22\x8d\x7a\x82\x42\x1b\x7e\xbd\xcb\x7e\x9d\xe0\x47\xe7\x8f\xfa\x33\x30\x6c\x7f\x5d\x39\x77\x7e\xdd\x6c\x27\x79\x12\x76\x1d\x46\x76\xb6\x55\x2b\x66\x9e\xc5\xf2\xe4\x65\x7f\xa3\xcc\x1f\x98\x8b\x1d\xe3\xbb\xeb\x93\xec\xf3\xd3\xb8\x1f\x1f\x5a\xd6\xbd\xd7\x49\xb4\xd3\x4e\x2a\xce\x50\x39\xdd\x5b\x77\x6b\x9a\xd5\x07\x03\x6e\x07\x6b\x23\xce\x01\x87\x1f\x86\xfa\xe1\xe8\x63\x16\xbc\x0f\x57\xf1\x73\x6e\xb7\x64\x25\xdf\xec\x9b\x2d\x41\xd4\x3f\x46\x86\x00\x2b\xd2\xcb\x16\x68\xe6\x9d\x90\x64\x6b\xb8\x71\x0f\x59\x31\xbb\xec\x2e\x48\xc0\x13\xf2\x7b\x20\xd9\x2d\x50\x84\xdb\x17\xe1\x0d\x90\x78\x06\xd2\xce\x9d\xec\xbb\x1f\xc9\xcd\x8f\xf0\xde\x47\x72\xeb\xc3\xbd\xf3\x91\xf5\x3f\x60\x46\x15\xd9\x31\x45\x79\x44\x51\x1c\x4f\x8c\x1e\x4d\xe4\xdf\xf2\x9c\xc4\x68\x65\x04\x30\xf9\xa6\x27\x37\x4e\xbf\xb8\xb3\x2a\x4b\x92\x58\x92\x96\xc0\xd2\xac\xc7\x18\x90\x35\xd9\x64\x7f\x8d\xb2\xc9\x4e\x19\x32\x9b\xec\x18\x65\x93\x3d\x9b\xec\x10\x65\x93\x1d\x7b\xc3\x5c\x0c\x8d\x6c\xb2\xbf\xf6\x60\x36\xd9\x8f\x50\x96\xa4\x1d\x2d\x81\xa5\xd9\xa1\x7f\xe0\x11\x16\x00\x0b\x47\x60\x50\xfb\x9e\x2b\x94\x4c\xbb\x9e\x69\xbf\x09\x98\x9a\x77\x7e\xb3\x58\x49\x52\x46\xc2\xcd\xc2\xe2\x29\x0c\x86\xb7\xc1\x65\x14\x8e\xe6\x66\x6f\xb7\xc0\xbb\x60\x72\xa6\xcc\xab\xe0\x7b\x14\x42\x35\x2f\xf0\x24\x4e\x96\x77\xce\xf2\x1e\xb8\x9e\x83\x24\x21\x93\xe9\x31\x70\xbc\x05\xf6\x66\x70\x6c\x1b\x96\x5d\x23\xb3\x69\x44\xf6\x4c\x54\x5b\x86\xe7\x11\x30\x67\xcf\x11\x13\xd8\x64\x62\xb1\xb8\xb0\x18\x63\xda\x63\x8e\x5d\x7a\x31\xed\x34\x25\x85\x16\xd3\xce\x94\xe5\xfb\x2d\xc2\x72\xc8\xfa\x10\xd2\x87\xf3\x55\x50\xfc\x72\x88\x29\x45\x09\xfe\xb4\xc6\x56\xfa\x4a\xd7\xba\x0c\x96\x9c\x6f\x27\xeb\xfa\xc6\x60\x34\xf8\xab\x5a\x67\xac\x33\xf4\xfc\x7f\xce\x16\xe1\xdb\x33\xce\xea\x7d\xad\xbc\x47\x9a\x63\xc0\x4b\xc6\x83\x40\xc8\x71\x81\x91\x72\x5c\xe0\xf5\x89\xe6\xb8\xc0\xd3\x60\x39\x2e\x40\xa3\x1c\x17\x38\x42\x39\x2e\xf0\x92\xde\xb0\x1d\x9c\xe3\x02\x4f\x94\xe3\x02\xf1\xa7\x99\xe3\x02\x3f\xa5\x1c\x17\xf8\xf5\xd3\xa7\xd6\x87\xf3\x55\x50\x67\x1a\x17\x80\x9b\xef\x73\xa4\x0e\x6f\xb8\x2f\x6f\x38\xcf\x6d\x26\xc0\xe1\x0d\x4e\x63\xfd\x25\x7d\x21\xfc\xc8\xd6\xa8\xa9\xba\x1a\x6b\x0d\x0a\x7f\x0f\xb3\x41\x3f\x87\x83\x6f\xf0\xce\xd7\xdc\x26\xce\x3c\x35\xce\xeb\xce\x7d\x82\x39\x32\x7a\x71\xf3\xea\xcd\x59\xfd\xb7\xa7\x5d\x10\x7e\xb7\x6d\xae\xed\xc3\xea\xb0\xcd\x36\x0d\x38\x5d\xb5\xd9\x83\xf5\x0f\x4e\x35\x18\xa7\x7b\xf6\x94\x27\x92\xef\xda\xb6\xd6\x1b\xdd\x04\x55\xf7\x5a\x01\xe2\x13\x46\xcc\x8a\xdf\xb2\x9e\x6b\xb6\x72\xc2\x21\xfe\xd1\x97\xa1\x4e\xbd\x16\xfc\xd8\x1d\x2f\x6e\x27\x30\xdd\x99\xf1\x3a\xbe\x46\x60\xc5\xe9\x18\x31\x3a\x4e\x7c\x4e\x94\xff\x89\x31\x22\xbf\x97\x3d\x97\xb9\xe4\xfd\xeb\xd9\x9b\x1e\xa7\x67\x3d\x9f\xe7\x24\x7d\xea\xe7\x6c\x64\x6b\x77\x67\x4a\xfd\xae\x2c\x6d\xd7\x84\xa4\x96\x76\xb0\xb5\x76\x0a\xe2\x55\x50\x6f\xf2\xd8\x5a\xdf\xdc\xe8\x12\x8c\xaf\x30\x77\xf4\x56\x4f\xd3\xcd\x6e\xbb\x0c\x0a\xb8\xa4\x17\x0d\xb6\xdf\x57\x56\xfb\xc7\xe9\x0f\x7d\xc6\x79\xc5\x5a\x9a\xe4\xed\x7c\x80\x01\xc8\x3f\x6d\x6d\xf5\xef\xbe\xe3\xdb\xfb\x5a\x99\x0d\x45\xc5\x23\x52\xa7\xfa\x60\xf2\x1f\xb6\xa2\x89\x28\x20\xff\xe0\x0e\x21\x0b\x5d\xa9\xa0\xae\xfa\x00\x17\x65\x2a\xa8\x12\x52\xad\x81\x5c\x6e\x98\x15\x6f\x0d\x3d\x15\x02\x7e\x39\x62\x6c\x82\x2f\x47\xcc\xbc\x8b\xfe\x2b\x49\x3f\x24\x5a\x81\x90\xf0\x42\x01\x50\x94\x41\xb0\xc0\xe7\xfc\xf3\xad\xd0\x40\xe7\xdc\xbf\x08\xfa\xb9\x07\xd2\xe7\x50\x46\xd9\xa8\x50\xf6\xad\x09\xb5\xf7\xb3\xb3\xb2\xce\xd2\xf4\xe9\x2d\x89\x29\xba\xa2\xca\x02\x5a\xa0\x5f\xc9\xe9\x73\x78\xab\xe9\xef\xbf\xd8\x6d\xd2\x7c\x4c\xa9\x27\xe9\xf9\xac\xae\x35\x3d\xb4\x73\x5e\x9a\x29\x58\xa7\x56\x1a\xca\x37\x85\x3e\x61\x6c\x24\x5c\xa5\x7a\x75\x82\x59\x93\x57\xd0\xe9\xe3\xf9\x00\x88\xe2\xec\x1c\x29\xc2\x9e\xe2\x53\xfc\x7f\xc7\xfc\x90\xeb\x8e\x9a\x92\x01\xed\xb8\x6e\xaa\xd6\x1a\x1a\x82\x2e\xf4\xe2\xd6\xe9\x1b\xf3\x10\xfd\xb5\x4e\xaf\x88\x6d\xa1\x93\x6c\xe9\x20\xdb\x57\xba\x74\x9a\x14\xe4\x21\x4f\xe2\xe9\xcd\xdf\x08\xf7\x26\xf4\x77\xde\x9b\x9b\xa8\xc2\x54\xda\x26\x28\xd3\xd0\x6e\x5b\x4e\xcf\x2d\xc4\x6d\x25\xfd\xac\xb4\xcd\x8d\x59\x1d\xf7\x5e\xa9\xcb\xa9\xee\xfd\xc7\x5a\xf9\x60\xca\x7f\xd4\xb6\xbc\xbd\x0a\xd6\x1d\xdd\x78\x64\xab\x6e\x3c\x85\x95\x0a\x78\x9f\x94\x0b\x86\xda\x98\x1d\xcd\xb5\xc1\xe2\x50\x48\xd3\x74\xec\xd2\x7a\x38\x05\x3f\x7d\x88\xbc\x7a\x54\x73\xf0\x62\x37\x81\x58\x6a\x4b\xfd\xa7\x73\xfa\x83\xf1\xb7\x51\x95\x81\x2a\xd7\xa6\x59\x25\xb1\x43\x2a\xe3\x6f\x93\xd8\x4e\xdb\x17\x7f\xff\xfa\x29\xfa\x7b\x13\x89\x1b\x35\xe4\x04\x1e\xa1\x69\x04\x87\xce\xdf\xe3\xf6\x92\x7e\xf8\xfd\xeb\xa7\xa8\x72\xf0\x9b\x39\x9e\x07\x81\xc8\x41\x3a\x3d\xe4\xc9\x66\x46\x81\xf2\x80\x5f\x2b\x97\xc2\xce\xa7\xf3\xc0\xfe\xe3\x8e\xff\x74\x9c\x6c\x2c\x3e\x28\x75\xbb\xbe\x39\xba\xb5\x08\x13\x6c\x6c\x63\x82\xa5\x15\x24\xcd\x23\x18\x4f\x2d\x44\x99\x85\x6a\x19\x65\x81\x22\xbb\xf0\xa4\x87\x57\x7f\xd5\xa4\x2c\x6f\x34\x68\x97\x30\xae\x0f\x45\x25\xa8\x39\x52\x49\x64\x7d\x94\x8e\x68\xf2\x6b\x9a\xea\xf8\xe7\xcc\xc0\x5c\x4e\x2d\x0f\x67\xce\xb4\x67\x67\x88\x0f\x5e\xe4\x1f\xea\xe8\x25\x25\xb2\x63\x95\xbe\x51\x5d\x1d\xa8\x86\x78\x5a\xaf\x8c\x7c\xb8\x01\xa7\x20\x7e\x51\x02\x5d\x92\x30\xe2\xc7\x1b\xe2\x5a\x0f\xc4\xab\x39\xe1\x64\x65\x60\xd5\xa5\xf0\x87\x63\x17\x1a\xf4\xcb\x8c\x8b\x7e\xe2\x80\x45\x04\x46\xee\x69\x16\x11\x55\xeb\x41\xcb\x66\xdb\xe1\x62\x23\xf6\x09\x40\x57\x39\xde\x44\x55\x36\xce\xdc\x25\x88\xff\x25\x3a\x7f\x1b\x5b\xe9\xcb\xee\xba\x36\x7e\x7d\xf5\x16\x0e\xcc\xd4\x31\xb1\x77\x21\x38\x73\xdd\x05\xda\xba\xf0\xaf\xf5\xd2\xad\x11\x10\xa4\xe8\x39\x3d\x96\x18\x56\xf6\xbe\xb9\x57\xae\x7a\x77\x79\x34\xf8\x94\xcf\xfe\x03\xc2\xcf\xfe\x1b\xa3\xeb\x8a\x28\xe7\xdc\x31\x8a\x21\xdf\xec\xdf\xda\x79\x18\xa4\x94\x99\x82\xd0\x7f\xd6\x44\x18\xd2\x9c\xc4\x85\xdd\xfc\x40\xf3\x03\xca\x45\x78\xa3\x76\xd7\x3e\x31\xee\xb7\x89\x98\x7b\x77\xd3\x87\xa7\xe9\x33\xf9\xbb\x32\x77\xc6\x4f\x94\x6e\x34\xae\xe6\x4c\x45\x69\x9c\x5e\x3a\x49\x42\x0d\xf9\xd3\x9b\xe7\xe4\x17\xeb\x4d\x1b\x1e\x09\x38\xb6\x50\x74\x57\x57\xa6\xdb\xc4\x0f\x3c\x9a\xff\xe8\xcf\x66\x63\x62\x27\x5f\x90\xd7\xea\x26\x6a\x4e\x7a\x22\x1b\xbe\xee\xce\xfa\xb2\x39\x28\xb7\xd2\xe1\xaf\xbf\xfe\x5c\xd0\xdd\xc1\xfd\xbd\xa1\x55\xa7\xcc\x61\xba\x74\x69\xa8\xf5\xc3\x50\xb2\xf1\x76\x1d\x66\x4b\xaf\x81\x9c\xa3\x77\x97\x23\xee\xbf\xfa\xf9\xac\x9d\xe3\x9b\xda\x96\xb7\x71\x2f\x74\x2a\x15\x94\x4f\x74\x79\xfe\xf4\xee\xef\xdf\xa3\xdf\x4c\x90\x57\x6c\x55\xea\xcb\xad\xf3\xe9\x83\x6e\x42\xec\xcc\x9e\xf3\xcf\x1d\x6b\xab\x24\x8c\x71\xfa\xcc\x9a\xe1\xc3\xa2\x71\x99\x09\x5f\x75\x6b\xa3\xca\xa5\x71\x7d\xdd\x0e\xb0\x46\xe4\xc5\x6f\xad\x37\x89\x5e\x7d\x67\xa8\x81\x9e\x24\xf7\x90\xfb\x6f\x8b\xb6\xb5\x75\xe7\x83\x76\x71\xb3\x60\xc6\x64\x72\xd2\xa1\x07\xea\x8e\x05\x65\xab\xd0\xf7\x75\xb7\x60\xc7\x05\xfb\xb8\x07\x4e\xde\xfb\xb5\xf5\x81\x12\x49\x44\xb6\x3e\xc9\x06\x85\xf8\xc7\x10\xa0\x4a\x23\xae\xb8\xf1\x91\xaf\xe1\xca\xb5\x6a\xdf\x75\x61\xfd\xc1\xf8\xd2\xde\x69\x44\xe7\x51\xed\xdd\x71\x88\xab\xa1\x0a\x32\xfe\x00\x89\xcc\x8c\xa1\x79\x6d\xb0\xe4\xd0\x25\xf6\xf6\xbf\x63\x9f\x02\x4f\xdc\xf1\xa9\xd9\xaa\x63\x45\x0b\x4a\x2e\x2f\x80\xd2\x5a\x17\x14\xad\x22\x70\x0e\x41\x83\xec\x48\xfe\xea\xe7\x44\x3f\x7c\x08\x6b\x5d\xf6\xbb\x7e\x32\x15\x6e\xfe\x3e\xb6\x1b\x17\x5b\xe9\x38\xfa\x9b\xc3\x8f\x89\x75\x24\x34\x71\x4d\xaf\x45\x19\x48\x43\xbb\xa4\x13\x26\xa4\x12\xce\xf6\x8b\xa7\x39\xc6\xda\xef\x76\xe7\xae\x1f\xb4\x85\x89\x6a\x12\x6c\x5f\x78\xa6\x6e\xed\xee\xdb\xa2\xed\xc6\xda\x06\xdb\x2c\x2f\x84\x52\x9d\x30\x19\x76\x3b\x78\xb4\xf5\xb7\x2e\xdc\x5b\x97\x20\xde\xbe\xb8\x4c\xee\xb3\x4b\x72\x6e\x9d\xdd\xfe\xe6\xf8\xd0\x8b\x4d\x74\x02\x9a\x14\x25\x4d\x75\x22\xa7\x93\x4b\x06\x29\x78\xbd\x56\x58\xed\x59\x24\x40\x4b\x70\x63\x9c\x81\x98\x29\x24\x03\x61\xf9\x48\x7b\xe2\xa2\x10\x8c\xc4\xc9\x51\xda\x13\x07\x83\xa8\x90\x2d\x15\x17\x12\x0a\x6b\x88\x33\x3e\x43\x4e\x57\xd9\x13\x23\x19\xed\xf0\x41\x14\x08\x0a\xef\x2d\xcc\x5c\x7c\x24\xff\xfc\xc7\xc1\xd0\x26\xef\x8c\x35\x04\xd2\x62\xf7\x74\xbe\x3a\x0c\xcf\x5d\x8d\x33\x6e\x21\xc8\x67\xdd\x93\x48\x95\x16\xfc\x1c\xd7\x68\x33\xe0\x03\xd7\xf1\x32\x60\xf7\xc4\x56\x3f\x45\x3e\x85\x10\xe2\xe7\xd1\xee\x49\x2a\x68\x82\xdc\xda\x3d\x89\x65\x8d\x95\x6f\x1b\x71\x7c\x5e\x0e\x6e\xb4\x09\xc8\x44\x1d\xce\xd0\xdd\x93\x40\xd2\xf9\x46\xd4\xdc\x0d\x22\xc6\x60\x43\x14\x3d\x1b\x0d\xd9\xf1\xa1\x53\x76\x7c\x5e\x52\x76\x7c\x5e\x0e\x36\x81\xe3\xf3\x1c\x2f\xe2\x9b\xbd\xd5\x80\xd9\xcd\x2c\x58\xeb\x2a\xa3\x9b\x49\xaa\x5e\x8a\x42\x3f\xb4\x66\x51\x60\x06\xb8\x6e\x98\xac\x1e\x08\x92\x6a\x98\x17\x93\x95\xec\x00\xbd\xa0\x86\x78\x6a\xac\x00\xf4\xdf\x9d\xbd\x7e\x0c\x51\x6f\x15\x56\x54\x64\x81\x99\x5c\x2a\x38\xbd\x32\x3e\x24\x48\x85\x0c\xba\x51\x09\xba\xc5\x26\x68\x4f\x34\xde\xac\x9c\x30\x69\x73\xd8\x03\xe2\x05\x4c\x2c\xee\x77\xd7\x51\x2f\x5e\x52\x65\x69\x6d\xd4\xea\xff\xb3\xf7\x75\xdd\x6d\xeb\x3c\xba\xf7\xe7\x57\xe8\x0f\xe4\x62\xce\x99\x35\x17\x73\xd7\xb7\xed\xde\xd3\xf5\xb6\xbb\x59\x4d\x3b\xef\xb9\x65\x64\xc6\xe6\x8a\x2c\x6a\x4b\x74\x3e\xe6\xd7\xcf\xb2\x15\xc5\x71\xf3\x61\x3c\x0f\x48\x59\x76\x88\xcb\xc4\x12\x28\x12\x04\x01\x10\xc0\x93\xa0\x5f\xa2\xbd\xdf\x20\x1d\xc7\x7e\xef\x11\xb6\x77\xf3\x3e\x76\xde\x4d\xce\x89\x7a\xed\xe7\xc7\xd0\x83\x6d\xb3\xe1\xf6\xfe\x2a\x76\xa7\xb6\xae\x34\x95\xfd\xf2\xfd\x08\x14\xd2\xdc\x04\x7b\x6b\xe2\x1f\x98\x4d\xeb\x83\x2d\xd7\x86\xf0\x27\xbf\x34\x2e\x7e\xf6\x68\xde\x94\x2f\xff\x5c\x0a\xd7\xd0\x55\x9f\x6b\x73\x59\xc9\x4c\x72\x70\x02\xfb\xa6\xee\x49\x5a\x24\x3f\xbc\xfb\x3c\x85\x9e\xef\xee\xbb\x60\xe3\xd7\xbb\x27\x43\x97\x90\x6b\xc1\x87\x5d\xbe\xdf\x23\x19\x44\x7f\xff\x2f\x37\x73\x15\x4d\x5f\x8a\xa2\x9a\x47\x9b\x38\x33\x8d\x0e\x41\xb9\x3b\xa0\x9c\x43\xee\x0e\xf8\x40\xa9\x1a\xf9\x25\x6c\xf3\x2d\xd7\x3a\xfd\x59\xe2\xa3\x66\xa4\x1f\x5d\x22\xe6\xbb\x30\x77\x92\x9d\xc1\x4f\x5f\xdd\x35\xf1\xeb\x98\xc4\x5f\x79\xd3\x35\x0b\xdb\xda\xa3\xc9\x2c\x7e\x34\xe4\x2a\x57\xde\x47\x4f\x03\xfe\xed\xfd\x09\x17\x5e\x9a\xb7\x93\x30\x87\x59\x90\x7c\x23\x14\x23\xd1\xcf\x66\x26\x98\x4b\xd3\x3d\xc0\x41\xbd\x35\x48\xa9\x98\x01\xc6\x1a\x62\x36\xc8\x8d\x05\x91\xdd\x25\x34\xce\x30\x15\x29\x36\xca\x40\xed\x28\x37\xc6\x70\x43\x0c\x35\xc2\xe4\x06\x18\x78\x24\x4a\x0d\x2f\x99\xd1\x25\x34\xb8\x80\x73\x47\x6a\x68\x49\x8d\x2c\xf9\xc1\x2e\x37\xae\x84\x53\x2e\xfa\xea\x85\xa9\xf6\xd4\x3f\xc8\xbe\xc0\xd5\x6f\x37\x87\x93\x6e\xb1\xc6\x77\x61\xde\xda\xee\x5f\x1f\xbe\xc6\x3c\x11\x37\x78\x3a\x29\xac\x25\x08\x68\xae\x60\x9c\x95\xa5\xb9\xfb\xe8\xeb\xba\x8f\xcc\xc9\x7b\xcb\x12\xd7\xd2\xb8\xa7\x26\x07\xc3\x2b\x12\x5b\x8b\x97\xff\x37\xc5\xea\xca\xa1\x2c\x8b\xbc\xb4\xc9\x96\xd6\x94\xd7\xab\x26\x89\x3d\x38\x2f\x93\xe0\xb7\x67\xb1\x99\x80\xd8\x54\xbe\x94\xc5\x40\xd0\xd5\x65\x00\x31\x59\x5e\x05\xe4\xcd\x0d\x44\xe5\xfb\x40\x4d\xcf\x1e\xc7\x46\x66\x49\x72\xb9\x4f\x48\x44\x65\x97\x13\x9a\x27\x87\x94\xba\xee\x72\x02\x9b\x65\x63\x39\x56\xe2\x12\xd8\xdd\x31\x01\x39\x56\x62\x00\xce\x81\x18\x89\x06\x01\x39\x07\xa2\xc4\x1a\x01\xe8\x54\x33\x12\x02\x76\xaa\xf8\x8c\xa4\x0e\xa4\x80\x9e\x2a\x26\x63\x6d\x68\x7c\x9f\x09\x81\x3f\x77\x1f\xd8\x0f\x00\x3a\x10\xb7\x2f\xa5\xa0\x82\x05\xb9\x2f\xc7\xd3\xaf\xd8\x4d\xc2\x2e\x2f\x50\xc6\x20\x00\x51\x05\x27\x5c\xc6\xc4\xc0\xa2\x4f\x1e\x11\x02\x8c\x0e\x04\xcb\x99\x0c\x70\x74\x20\x46\xc8\x90\x0c\xb5\x81\x88\x4a\x15\x32\x1b\x9c\xa9\x15\x40\x13\xb2\x27\xad\x2a\x51\x00\xd3\x5d\x5e\xe8\xde\x44\x2e\xb2\x06\x62\x2b\x90\xf0\x82\x0e\xa5\x14\x81\xa5\x2a\xd2\xa4\x3b\xc5\xd8\x70\x1d\x25\x4c\xb3\xdb\x1d\x13\xa2\x6f\x44\x00\xa9\x03\x4d\xd8\x7d\x1a\x7b\x7f\xe6\x4d\xb3\xa1\x77\xeb\xa8\xc1\x1d\x75\x18\x09\x00\x53\xb2\x06\x1a\x37\x2a\x00\x1b\x07\x84\x35\xc1\x57\xbd\x52\x35\xaf\x8a\x32\x4e\xae\xde\x55\x57\xed\xaa\xa9\x75\xe5\x2a\x5d\xe9\x09\xe2\xaa\x5c\xf1\x1a\x57\xa2\xc2\x95\xac\x6f\x65\x2c\x56\x54\xab\x53\xd3\xcd\xd4\xb5\x32\x27\x22\xae\x3a\xf7\x77\xb8\x1e\x88\x52\x9a\x62\x1c\x9d\x81\xa6\x1c\x07\x62\x81\x69\x07\x3a\x55\xc3\x63\xec\x58\x34\x06\x68\x3b\x10\x0f\x7d\xb4\x3b\xe6\x31\xe6\x94\x08\xd2\x49\xb0\x7d\xe8\x11\x11\x1d\xbf\xb2\x8d\x45\x3f\xa0\xb1\xb1\xf8\x66\x64\xba\x0e\x49\xda\x46\x64\x0a\x33\xaf\xd0\x37\x21\x53\x71\xe7\xbb\x12\x69\xda\x8f\x91\x26\x52\x91\xed\xe2\xfd\xa4\x6f\x38\xa6\xdb\x4c\x11\x9a\x8d\x29\xf7\x93\xaa\xd1\x98\x92\xb7\xae\xc9\xd8\xc1\xb6\x32\xdd\x5e\x8c\xde\xc9\xac\x03\x37\x5d\x77\x0c\x66\x24\x05\x0e\x1e\x88\xba\xa5\x11\x03\x09\x0f\xc4\x5d\x00\x20\xc0\xc2\x0a\x4e\xf0\x1c\xef\x07\x1c\x1e\x68\xc2\x31\x69\x21\x9e\xce\xe3\xa8\x4e\x34\x99\x07\x03\x2e\x1e\x68\xda\x77\x8e\x62\x60\xe3\x81\xa6\xfc\x39\xf8\xee\x14\x03\x20\x0f\x94\x03\x39\x00\x60\xf2\x40\xc7\x14\x3d\xc8\x37\x70\x4f\xe8\xfd\x06\x6d\x84\x00\xcd\x03\x51\x6a\x01\x03\x6c\x1e\x88\x4b\x2a\xc4\x00\x9c\x15\xbc\xe0\x99\x86\x81\x9d\x07\x9a\xb0\xc1\x74\x04\x39\xd0\x72\x40\xe8\x5d\x3e\x13\x4d\x67\xc0\xf5\x87\x08\x38\x7a\x77\x48\x88\x54\xcb\x80\xa4\x07\xa2\xf4\x07\x02\x2c\x3d\x10\xb9\x88\x08\xd0\xb4\x92\x95\x1c\x78\x5a\xc1\x08\x17\x17\x31\x20\xf5\xee\xa8\x10\x91\x91\x02\x54\x0f\xc4\x08\x0d\x04\x58\x3d\x10\xa9\x03\x4f\x28\x9b\x11\x97\x17\x29\xd0\xf5\xf6\x09\x20\xb2\x04\xcb\x96\x14\x00\x7b\x20\x46\xb4\x46\x59\xf0\x90\xfe\xf8\x26\x8e\x92\x84\x2b\x27\x02\xd2\x1e\x88\x2a\xa2\x61\x80\xb5\x07\xe2\xfc\x1e\x02\x68\x5b\xc7\x70\x24\xb3\x0f\x06\xe2\xd6\x71\x93\x01\x73\xeb\x78\xc0\x40\xdd\x2a\x76\x93\x0e\x34\x02\x80\xde\x03\x4d\x39\x58\x96\x03\x1d\x4f\x68\xcc\xf8\x12\x0a\x14\xae\x18\x23\x7e\x94\xed\x07\x10\xdf\xfe\x76\x3f\x90\xf8\xf6\xb7\x00\xa0\xf8\x40\xf0\xe4\x2e\xfd\xaa\x86\xac\x1c\x78\x46\x05\x10\xe6\x03\x4d\xd6\x82\x1a\x73\xd7\x4b\x21\xcf\x77\xf9\x4c\xc7\x5a\x13\x42\xa2\x0f\x04\x4b\x2c\x05\x91\xfe\xf8\x30\x63\xec\x21\x90\xe9\x03\x4d\x5a\xcc\xf0\xf5\x97\x42\xab\xef\x8e\x0a\x59\x55\x02\x6a\xfd\xf1\xd9\x09\x07\x35\x85\x50\xec\x0a\x26\x4c\x14\x2f\x5d\x69\x0c\x06\xd9\xfe\xf8\xd4\x74\x57\x30\xf7\xbd\x48\x5e\x4e\x25\x86\x82\x7f\xf2\xc0\x69\xa6\xfa\x02\x90\xf1\x03\x8d\x9a\xec\x4b\x40\xc9\xeb\x99\x16\x2c\x5c\xa2\xfa\x51\x3d\x8a\x6b\xc1\x23\x2f\x0e\xa4\x4c\x6e\xec\x89\x45\x62\x1c\x48\x8b\xc8\x38\x90\x26\x2b\x77\x4b\x2c\x42\xe3\xee\x28\x54\x53\xaa\x41\x86\x2d\x48\xe4\xc6\xed\xb3\x04\x82\xe3\x40\x8a\x34\xee\xa7\x2f\x40\x11\x1d\x07\x62\x02\x0d\x4f\xf9\xd2\x8b\xc6\x21\x3d\xee\x32\x47\x4f\xf4\xdd\xa7\xa9\x39\xa7\xa0\xef\x07\x7a\xbf\x3a\x57\x03\x91\x1f\x73\x1c\x45\x14\xc8\xfc\x81\xa2\x1c\x05\x45\x0c\x08\xfd\xc8\x23\xd2\x6a\xd3\x42\x0d\xad\x3f\x90\x5a\x3d\x16\xf9\xb4\x7d\x71\x14\x4a\x19\x89\x01\xc9\x3f\x50\xac\x8d\x1d\x05\xa2\x7f\xa0\x68\x7b\x5b\x09\xd9\x1f\x7d\x3c\x5a\x08\xff\xc8\x03\x8a\xa3\x6a\x14\xd0\xfe\x03\x45\xd0\x34\x7a\x23\xf4\x58\x0d\x49\x05\x73\x19\x78\xd6\x73\x7a\xbf\xc6\x54\x76\x60\xb7\x74\x32\x47\x6a\x76\x60\xb3\x03\x0b\x3e\x4d\xaa\xdb\xf6\xc6\x95\xf6\x43\x59\xfa\x55\x1d\x7e\xfa\x6b\x4b\xb8\x41\xca\x56\x01\xab\x99\xb3\xf5\x41\xea\x7b\x8b\xc2\xde\x35\xae\x35\xeb\xa5\xbb\xb0\xa5\xaf\xb1\xc2\xb1\x2d\x31\x1d\xe4\x77\x49\xab\xb9\x78\x9d\x75\xb0\x0a\x69\x4a\xcb\xd0\xb2\x3e\x5a\xd1\x32\xd1\xed\xb6\xbf\x57\x48\x75\x81\xf3\xf7\xca\x5f\xde\x87\xa4\xb7\x7d\xf3\xd6\xaf\xa0\x5b\x87\x89\x5f\xf6\x0d\xb0\xff\xe9\x93\x7f\x6d\x6d\xea\xd4\x25\xde\xa3\x34\x50\x1d\x6e\x48\x27\x77\x3f\x3a\xac\x25\x78\xa1\x9a\x6a\x37\xb6\x97\x49\x2f\x52\xc7\xca\x0b\x5e\x9a\xf9\x08\x9d\xf6\xed\xfd\xfa\xf7\xc9\xf9\x9c\x60\xe3\x6d\x21\xa4\xb8\x6a\x68\x39\xdb\xf6\x91\xc6\xcc\xb6\x9d\x64\x37\xec\x8d\x42\x10\xff\x3a\x75\xef\xec\xae\x34\x95\xfd\xf2\xfd\x04\x14\xed\x03\xd8\x7d\xfa\x54\xb8\xd6\x87\x1e\x36\xeb\x93\x5f\x1a\x97\xbe\x0e\x23\x2b\x8f\x47\x1a\x53\x79\x74\x5d\xf5\xb9\x36\x97\x15\xe6\xb2\x91\x13\xdf\xa3\x16\x8f\x02\x66\xf4\x88\x90\x3c\xc2\xb9\xd7\xdd\x77\xc1\xa6\xef\x00\x85\xc1\x7c\x2b\x58\xe1\xda\xfe\x41\x2b\xc9\x3d\xdc\x61\x0b\xca\x9f\xd8\xcc\x71\xb2\xf3\x01\xba\x65\x38\xd9\x84\xc6\x69\xf7\x2e\xcd\xfd\xe1\xdf\xa6\xdc\x1f\x7e\xa0\xd1\x62\x7b\xe3\xb5\x6e\x1f\x11\x08\x0c\xd7\x9e\xfd\x59\xeb\x93\x56\x8e\x9d\x5c\x01\x41\x36\x43\x9f\xd0\x68\xb6\xcd\x53\x56\x5d\x93\xbe\xe2\x1b\xdf\x4c\xab\xcb\xa4\x05\x9e\x37\x5d\xb3\xb0\xad\x3d\x99\x8a\x9f\x47\x43\xbf\x72\xe5\x7d\xf2\x72\x9c\xdf\xf8\x8d\x28\xb0\x68\xfe\xe7\x88\xb5\x46\x40\x12\x27\xb8\x1d\xa0\x9f\x37\x2e\x88\xe2\x60\xa8\x30\xf7\x85\xdd\x5f\xea\xb2\x5a\x75\xee\x46\xbc\xde\xf8\xa9\xd0\x33\xfa\xe9\xe4\x32\x05\x2f\xf2\x96\x45\xe5\xea\xd4\x6c\xfe\xbf\x7c\x3b\x82\x1c\x20\xb9\x68\x6d\x27\x72\xed\x50\xb9\x58\xb5\x62\xab\x2f\xe5\xe7\x75\xff\x2f\xc5\xc7\x25\x06\xe6\x1f\x7a\x47\x25\x63\x90\x14\x5d\xbf\xbf\x10\x96\x57\x08\x24\x5d\xfe\xfe\x3c\xba\x80\xbc\x03\x68\x40\xdd\xad\xbb\x4a\xb2\x81\x1e\x33\xb2\x8f\x53\x0a\x80\x65\x12\xff\xb4\x2b\x5b\xd7\x84\x0b\x51\x0a\x36\x32\xdd\xe6\xb6\xfb\x5c\x99\x2e\xb8\xf2\x1f\x95\x2f\xaf\x2f\x82\x6f\x45\x82\x82\x2e\x29\x66\xf4\xe1\xeb\x89\x76\x1d\x65\xa2\x31\x78\x0c\x06\x75\x1a\x71\xd3\x00\xad\x36\x07\x67\x16\xb1\xfc\xa0\x0a\x73\x48\x95\x6d\x90\xdb\xa5\xad\x24\x60\x65\x63\xca\x85\xab\xe7\x48\x00\x16\x16\xcf\x01\x0a\x3f\x29\x83\x5f\x3f\xc4\xb5\x85\xf0\xfb\x13\x6f\xdf\x6b\x57\x8b\x9d\x0b\xe2\x48\x4e\xbb\x09\xb1\x3d\x32\x88\x82\xf8\xc7\xbf\x7e\x7c\x49\xb2\x9f\xa4\xe8\xe4\xe8\x7e\x4a\xaf\xf3\xf0\x80\x27\x2c\x33\xdd\xc2\xb4\x50\xd4\x29\xa9\x5e\xdd\x7e\xb0\xec\xe7\xc3\xe0\x63\xcb\x4d\x69\x9b\x85\xac\x0d\x18\x2a\x34\x68\x62\x15\x78\xbf\x44\xc7\xe7\xe4\x31\x7f\xe4\x92\x65\x72\x2a\x6c\xd8\x53\x52\x9d\x50\x50\x7b\x0a\x8d\x6b\x33\xc1\xc5\x11\x60\x79\xe1\xc8\x2d\x92\x87\x95\x54\x8f\x00\xd9\x54\x98\x5e\x70\xf5\x4c\xf6\x89\x13\x73\x1b\xc6\xda\x57\xef\x50\xe8\xdf\x85\x63\x02\x35\x52\x42\x57\x96\xc8\x0c\x19\xc7\xab\x85\x0e\x5f\xf0\xa4\xe6\xee\x31\xe1\x0c\x10\xf2\x0a\x13\xcf\xfc\xe0\xb3\x3e\xd8\x8c\x0f\x3c\xdb\x83\xbc\x0f\x47\xb3\x3c\xb0\x0c\x0f\x30\xbb\x83\xb8\x5c\x46\x2d\x3c\x44\xcb\xc2\x53\x8a\xa6\x8b\xa0\x27\x11\xa6\xd6\x64\x6d\xf7\x61\x85\x06\x81\xc1\x4d\x2d\x46\xa1\x41\xf1\x3f\x95\x43\x7d\xac\x78\x26\x8e\xd4\xaf\xc3\xd9\x4b\x3f\x77\x60\x90\x48\x0a\xf0\x06\x8d\x02\x6c\x42\x96\xed\x15\x01\x71\xf6\x0a\xd7\xd7\x8c\xcf\x90\xd5\xf4\x2e\x53\x24\xca\x2a\xfa\x93\x8d\x9e\x7d\xca\x75\x1d\x23\x13\x4a\xb3\x1d\xf9\x84\x74\x3d\xc1\x54\x5d\x70\x35\x7d\xbf\x14\xfb\x82\xee\xed\xa5\xe0\xc9\xf7\xef\x1a\x7d\x2b\x52\x5d\xb9\xa8\x9d\xc8\x38\x31\xd3\x72\x4b\x20\x06\x08\xea\x3d\x1c\xc1\x87\xd0\xee\xf1\xe0\x31\x8a\x72\x9f\x32\xb5\x46\x86\x6c\x3f\xb1\x58\x27\x00\x30\x75\x2a\xc9\x11\x38\x6a\xfd\xf4\xee\x95\x20\x94\xfa\xa9\x0d\x1f\xdb\x55\x10\x22\xfd\xfb\x0a\x3e\x80\xc8\xf3\x53\xf7\x86\xf3\xcd\xcb\x49\x07\x1a\x00\x04\x79\x78\x1b\xe3\xc8\xf1\x78\x32\x15\x8e\x18\x9f\xd2\xda\xa0\x50\xe2\x27\x66\x7c\x4c\x34\x3f\x13\x43\x82\x9f\xdc\xf5\x32\xb6\xd7\xc5\xa8\xef\x98\x74\xca\xd1\xde\xe1\xbd\x8e\xa2\xbc\x13\x0b\x84\xa2\xbb\x13\x2c\x30\x54\xf7\xa4\xf7\xe0\x10\x92\x3b\x26\x06\x08\x82\x3b\x2a\x08\x30\x72\x3b\xa1\x9f\x8e\x38\x7b\x0b\x93\x01\x04\x9d\x5d\x1c\xed\x80\x64\x05\x41\x64\x47\x45\x25\xe9\x42\x86\x74\x47\x24\xa8\xca\x13\xac\x8a\x18\x6d\x1d\x4e\xb0\x67\x51\xd6\x71\x9b\x9f\x44\x57\xc7\x19\x25\x36\x97\x28\x34\x75\x9c\x8b\x1c\x45\x1d\x7f\x37\x85\x9e\x7e\xfc\x41\x2d\x10\x29\x7d\x6a\x01\x9b\xec\x98\x27\x8c\x79\x30\xe8\xe7\x49\x8f\x11\x19\xe2\xb9\x14\xed\x1c\x46\x3a\x87\x26\x50\x88\x3f\x3e\x29\x7b\x61\x8c\xbd\x84\xe0\x8c\x4f\xc1\x26\x01\x70\xc5\x21\xf9\xa0\xf1\xc4\x61\x73\x06\xc5\x11\x9f\x9c\xd8\x60\xeb\x8a\x60\x86\x63\x2b\x46\x62\x85\x4f\x2d\xb4\x05\x60\x83\xa7\xdd\x80\x32\x3c\x70\x6c\x8d\x60\x1c\xf0\x89\xad\x4e\xae\xc0\x7e\x7b\x1c\x52\x39\x40\xb0\xbd\x4f\x26\x71\x10\xc4\xf1\x1e\x25\x75\x90\xc4\xee\xe6\xd3\xa4\x48\xdc\x32\x1a\xee\x4c\x0b\x75\xa6\x80\x39\x53\xa4\x57\xf5\xa4\x81\x37\x8b\x01\x6d\xc6\xe6\xfa\x6d\x49\x03\x69\xa6\x9c\x3e\x0d\x94\x19\x0b\x63\x46\x43\x98\x91\x89\x9f\x4f\x1f\x66\xa0\xcb\x38\xd8\x32\xc5\xc2\xf0\x70\x65\xf8\x49\xba\xfb\x24\x3c\xb7\x34\xc6\xf6\xfb\xd1\x8d\x5a\x3c\xed\x18\x30\x94\x71\x70\xb4\xd5\xaa\xba\x88\x85\x9f\x1d\x61\x24\x7a\x10\x47\x2d\x66\xb6\x4a\x9d\x15\xf9\xe4\xd3\xca\x40\x2c\x5c\xec\x18\x1b\x34\x1a\x1e\x76\x94\x3d\x1a\x01\x07\x3b\xca\x38\x62\xe0\x5f\x4f\x42\x55\x28\x31\xaf\x95\x9a\x42\x67\xe4\x1d\x93\xb1\x46\x32\x65\x70\xad\xdf\x8f\x01\x93\x9d\xbb\x23\x3d\xe2\xb2\x73\xb7\x9f\xb2\x73\xf7\x3a\xa9\xf1\xa7\x15\xc5\xb3\x34\xee\xb4\x62\x69\x22\xe0\x4d\xeb\xb0\xa6\x35\xda\xe6\x48\x00\x67\xc6\x81\x8f\x49\x5e\x02\x08\xf6\x12\x14\x63\x48\x43\x03\x07\xb0\xa3\xd1\x9d\x08\x61\x46\x4f\xf0\x82\x08\xc5\x88\xc6\xd3\x12\x21\x6c\x68\xf8\xf5\x09\xdb\xd7\xa1\x58\xd0\x89\x93\xa3\xc5\xf8\xcf\x00\xf6\x33\xb4\x8b\x84\x98\xcf\x13\xbb\x63\x85\x30\x9e\xe1\xb7\x83\xd8\xce\xf0\xfb\x4f\xa0\xf5\x28\x80\x65\x39\x41\xfd\xf8\x6e\xf3\x01\x27\xd3\x17\x54\x8a\xc9\x9c\xae\x83\x28\x80\xc3\x3c\x31\xe5\x07\xe2\x2e\xe3\xe9\x45\x24\xde\x72\xde\xe8\x32\x1a\x63\xa3\xe3\x58\xca\xc4\xe4\xe2\x18\xca\x78\x13\x0e\x1c\x3b\x19\xe7\x01\x61\x26\x93\xf6\xe6\x64\x3a\xbb\xcb\xf1\x91\x31\x6c\x64\x00\x17\x19\xd4\xd3\xad\x6b\xc4\xc5\x5b\xd0\xd4\xc9\x03\xdf\x27\x93\x5f\x36\xbd\xc6\x74\xb9\x91\xee\x96\x72\x23\xdd\x44\xfe\x4a\xea\x5e\xb7\x23\x20\x84\x60\x4a\x13\x81\x41\x9e\x98\x79\x9b\xad\xc2\xc4\x1d\xf2\x93\x56\x92\x90\x90\xc6\x29\x37\x03\x0c\x33\x3c\xb1\x0d\x41\xc2\x0a\xeb\xf8\x8c\x20\x24\x09\xb1\xa5\x99\x12\x06\x61\x2e\x1b\x20\x7a\xe2\x9f\x76\xb5\x69\xba\x85\x4f\x01\xb6\xd8\xce\x45\x42\x0c\x98\x7a\xd4\x56\x95\x1d\xd5\x52\x9d\x09\x0d\xa1\x46\x74\x11\xf0\x66\xa9\x8c\x9d\x6d\x46\x20\xfa\xd1\x66\x98\xd1\x84\x2a\x98\x6e\xf1\xc3\xae\x77\xb5\x15\x76\x27\x40\x24\x2b\xc1\x5a\x09\x3f\x4d\xf4\xb3\xca\x9a\x99\x6d\x3f\x57\x7d\x20\xeb\xad\x81\x4a\x3f\xba\xb2\xa6\xb3\x9f\x56\xd0\x15\x39\xe2\x42\xc8\x9d\x86\xd6\xd6\xf6\xf6\x93\x35\xb3\xca\xd5\xf6\xc0\x23\x09\xed\xfd\xb9\x6d\x9d\x9f\x1d\x70\x1c\x92\x9d\x78\xf6\xe2\xfa\xbd\xf9\xc0\x4b\xd3\xbc\xe7\x81\xdf\x67\x43\x2b\xc5\x0f\xc1\xef\x18\xe2\x6b\xe6\x76\xff\x8d\xad\x78\xb3\x4a\xce\x15\xe1\x99\x02\x2b\x88\xfd\x67\x89\xad\x6f\x22\x0d\x0e\x33\x05\xe5\x36\x3f\x78\x88\xde\x98\x6a\x95\xf0\xcd\x7f\xb4\x5e\x18\xff\xc4\x3d\xa1\xc7\xea\xc1\x7f\xda\x7b\x28\xcd\x7c\xda\xe1\x24\x3c\x73\x8e\x64\xc4\x65\xcc\x71\xd9\x72\xa9\x03\x43\x44\xa4\x07\xaf\x1f\xe2\xe4\x86\xad\x11\x22\x57\x95\xac\x03\x1a\x2d\xdc\x87\x57\xf7\x10\x6b\xcb\x97\xa0\xd0\x85\xcc\x6c\x99\x09\xb9\xcc\x54\x29\x09\xc9\x8b\x2b\x17\x19\x4d\xa2\xe0\x22\x10\x42\xa0\xfa\xc0\x5e\x3e\x68\xf2\x41\x83\xca\x0e\x96\x33\x27\x1e\xbd\xc8\xf7\x27\x62\x4a\xfb\x4d\xe0\xa6\xf5\x4b\x1b\x16\x76\xb5\x57\xa8\x11\xf1\xb7\x77\x8d\x6f\x43\x9a\x3e\xdb\xd2\x50\x55\x31\xc9\x8c\x38\x81\xcb\x31\xd0\x28\xd7\xaa\xa3\xa9\x0d\xc0\x35\x89\xc1\x49\xee\xaa\x0c\xa4\x82\x6b\xe2\x5c\x17\x3d\xeb\x42\x53\x79\xa6\x2c\x9c\xe2\x8a\x82\x22\x30\xe6\x8b\x83\x0a\x55\x81\x50\xa1\xaa\x16\xe3\x6a\xc5\x14\x05\x5f\x7c\x4b\x05\x9d\x3c\x6a\xdb\x28\x28\xa5\x43\xd9\x3a\x41\xc5\x5d\x23\x1d\x7c\xa3\x04\x85\x8c\xe8\xab\xfb\x75\xb2\x12\xa1\xa2\x5f\x29\x2e\xaa\x2a\x7e\x75\xe9\xa9\xa6\x72\xff\x60\x92\x4a\xd7\xe9\x2b\x04\x95\x73\xd9\x06\xca\x07\x2c\x44\xf9\x80\x4d\xf5\x20\xe3\xd0\x8a\x5c\x43\xc5\xa8\xf0\xa2\x9e\x56\x5c\xd2\x37\x16\x5e\x1f\xd8\x0f\x91\xd1\x07\x95\x5b\x3a\x39\xce\x47\xa1\xc6\x3a\x2b\xf8\x7d\x4c\x8b\xa6\xed\x4e\xf7\x0b\xf1\xda\x08\x5b\xae\x5a\x17\xee\x3f\xfa\x3a\xd8\x3b\xb1\xc8\x33\xb2\x65\xaa\xca\xdf\x9e\xb7\xee\xc6\x55\x76\x6e\x3f\x77\xa5\xa9\x0c\x82\x49\x55\xd0\x6a\xb7\x34\x8d\xb9\x74\x95\x43\x57\x8e\x3d\x51\xcd\x0c\xd6\xec\x64\x4b\x17\xc5\x19\x88\x6a\xc4\x81\x66\xad\x07\x9b\x9f\x1e\xcf\xd7\x51\x3a\xa5\x19\x44\x1a\x5a\x74\x4e\x92\x9b\xd6\x97\xdf\xfc\x4a\x5e\x6e\x5e\xf0\xd7\x1a\x7d\xe6\xf1\x0f\xef\xc3\x1f\xae\xb2\x58\x61\x50\xc1\x47\xc3\x57\xf5\x87\xee\x4f\xa4\xe7\x40\xa1\x68\xb6\xc1\x15\x27\x6c\xc6\xf8\x97\xaf\xd7\x73\x33\xd2\x8c\xfc\x02\x8a\x55\x8b\xd1\x27\xa4\xb3\x5f\x5d\xbd\xba\xfb\x8e\xc1\xa4\x16\x0a\x15\x5b\xd9\x1b\x0b\x9b\xee\xb4\x3e\x69\x7d\x05\x3b\x29\x34\xb3\x00\xe4\x4f\xab\x99\x21\x45\xd0\x4a\x66\x94\x72\xbd\x75\xf5\xcc\xdf\x76\x23\x4a\xd6\x7c\xd9\x99\x8f\xad\x9d\xd9\x3a\x38\x53\x5d\x34\x56\x84\x36\xfe\x94\xe8\xc5\x78\xce\x9a\x89\x18\xf1\x52\x3e\x28\x9a\x11\xb9\xa6\xb7\x71\xa1\x9f\xaf\x15\x5f\x7b\x23\x0b\x0a\x40\x5f\x5c\x99\x4b\x2b\xc3\xa5\xe2\xdd\x8d\x94\x75\x23\xa9\x12\xc7\xe5\x9e\x36\xea\x65\x23\x27\x99\x78\x2a\xc4\x4e\x38\xa2\x7d\xe4\x4e\xf7\x34\x65\x03\x71\xaa\xa7\xf8\x05\xf2\x2a\x02\xcc\x59\x86\x6a\x53\x14\xce\x31\x66\x56\xa2\xce\x30\x9c\xba\x20\x77\x7e\xa7\x97\xb9\x80\x38\xb7\x53\x1b\x3d\xb4\x67\x31\xa7\x15\x93\x30\xc8\x49\x85\xa6\x85\x77\x4a\xb1\x2f\xc0\x9c\x50\xd4\xd7\xc2\x7c\x2c\xd4\xd9\x24\xbe\x54\xea\x5c\xa6\xfd\x50\xdc\x89\x44\x55\x13\xe4\x34\xe2\xb5\xda\x80\x93\x08\xbf\x1c\x71\x0a\xe1\x97\x27\xec\x84\x05\x29\x25\xdc\xd9\x83\x9b\x59\xd2\xce\x1d\x3c\xa9\x3a\x67\x0e\x97\x3e\xc6\x79\x3b\xb8\x4d\x25\xfa\x59\x63\x56\xdd\xdb\xe7\x94\x4c\xe7\x35\x7e\xf6\xd3\x2e\x9b\xca\xbc\xdd\x28\x55\x2a\x53\xa5\xaf\x43\xeb\xab\x6a\xff\xde\x81\x0c\xc1\xba\xf6\xc1\x88\x37\xc0\x51\xdb\xd3\x4b\x1b\xcc\xcc\x04\x93\xe7\x8f\xfb\x69\x27\xd0\x5f\xd0\xdc\x5d\x5d\xb9\xda\x05\x51\x22\x08\xaa\x79\x6b\x3f\xb3\x1f\x80\xf7\x33\x3c\xfa\x67\xec\x95\x6d\x5b\x3b\xfb\xb4\x5a\xaf\xcc\x45\xb9\xb0\xb3\x55\xe5\xea\xf9\x97\x79\xed\x1f\xff\xfc\xf9\xce\x96\x2b\xf4\xf2\x91\xb8\xc5\xe2\x73\x72\xfa\xef\xe0\x1a\x9f\xeb\x32\x81\x96\x26\x94\x8b\xcf\x77\x4d\xdb\xd7\xc9\x93\x50\x11\x34\x46\x45\x11\x09\x47\x47\x81\x55\x51\xe8\xb3\x8b\x7a\x5a\x7f\x85\xd9\x53\xb3\x3c\xca\x40\x36\xe9\xe2\x8a\xc9\x54\xae\x67\x4f\x51\xbe\x84\xbf\xb8\xde\x92\x1e\xc5\x87\x43\xc4\xe8\x9f\x1d\x84\x82\x7c\x81\x22\xbf\xf0\xe9\x0b\xd8\xf9\xdb\x68\x87\x4d\x26\x6d\x56\x0c\x59\x31\x64\xc5\xb0\x43\xef\x57\x31\x28\x98\xdf\x5a\x37\x5f\x80\x90\x5b\x85\x1a\xd4\x89\x4b\x74\x28\x34\x78\x27\x8f\x16\x1d\xf8\x60\x3f\x41\xd0\x43\xe4\x72\x30\x12\x30\x4c\x47\x7c\x7b\x9b\x55\xf6\x6b\x57\xe3\xc2\x56\xb6\x0c\xbe\xfd\x69\x5b\x5c\x3b\x91\x2a\x2d\x9b\xdd\xf9\x74\xdd\xa5\x7c\xba\x3e\xa5\x7c\xba\x66\xb3\x9b\xa6\xac\x18\x76\x29\x2b\x86\x2d\xbd\x5f\xc5\xa0\x60\xce\xb1\x65\x96\xea\xec\xb9\x45\x06\xdb\xa4\x69\xab\x60\x1a\x3f\xcb\xb1\x69\xe0\xc9\xed\x74\xad\x57\x73\x6c\x4b\x79\x93\x4b\x39\x88\x13\xa7\x33\xf4\x07\x5a\x1c\x73\xbd\x88\xa1\xc9\x63\x9c\xce\x85\xfe\x84\x2e\xe2\x1d\x29\x71\x4e\xea\xa8\x03\xd2\x9f\xd8\x45\x9c\x53\xbb\x88\xf9\x55\x31\x4e\xef\x22\xc2\x09\x5e\x28\x4f\xf1\x22\xc6\x49\x5e\xc4\x38\xcd\x8b\x28\x73\xba\xd1\x2e\x5f\xc5\x39\xe3\x2f\x93\xbe\x70\x75\x97\xa2\x48\x5d\x24\x73\x89\x7e\xc1\x63\x22\xfb\x21\xfc\x28\xf5\x0c\xea\x24\x2b\xf8\xc6\x57\x7e\x7e\xff\xcf\x83\xf4\x7a\xd0\x34\x3d\x78\x32\xf2\x1c\x9a\x7e\x9d\xe8\xd0\xf4\xae\x41\x97\xe3\xd3\x22\x1a\xd5\xe6\x56\x1a\xbd\x39\x36\x9d\x43\x50\xbb\x94\x43\x50\x4f\x29\x87\xa0\x94\xb1\x69\x8d\xb1\x1a\xd3\x50\x8d\x64\x62\x91\x93\xa9\x78\x58\x63\x98\xd2\x3b\x51\x35\x5b\xbc\xd4\xa8\x0c\x51\xbe\xbe\x99\xb4\x8e\x58\xe3\x73\x34\x23\x87\x8a\x77\xd6\xc1\xe5\x98\x27\xf0\x64\x8e\x79\xe6\x98\xe7\x8b\x94\x63\x9e\x6f\x53\x8e\x79\xbe\x4e\x39\xe6\xb9\xa5\x1c\xf3\x4c\xf5\x82\x1c\xf3\xcc\x31\x4f\x31\xe5\x98\xa7\xe4\xe9\x1c\xf3\x14\x53\x8e\x79\xe6\x98\x67\x8e\x79\x6e\x29\xc7\x3c\x73\xcc\x33\xc7\x3c\x37\x94\x63\x9e\x10\xdb\x1c\xf3\xa4\x19\x41\x3f\x97\xa2\xaf\x01\x22\x48\x75\x8b\x90\xcd\x87\x10\x6d\x0d\x18\x2c\x6e\x77\x60\x28\x1e\x84\x34\x83\xc8\x6a\x2c\x07\x0c\x51\x8d\x46\x5e\xe5\x91\xd4\x78\x93\x90\x32\x04\x15\xba\x92\x03\x76\x51\x30\xe4\x01\x5d\xb0\x96\x69\x4f\x89\x55\xaf\xa8\xe1\x44\xaa\x55\x0e\x1d\x8d\x97\x31\x0d\x2a\x9a\x62\xe5\x15\x68\x68\xa3\x1f\xac\x1c\x02\x1a\xb9\xfe\x3a\xe4\x33\x15\x58\xa4\x06\xf1\x4c\x21\x0a\x34\xd2\x99\x82\x27\x8f\x70\x36\xba\xf4\x51\xa8\x66\xa4\xf0\xf1\x68\x66\xf9\x90\x7b\x95\xf2\x21\xa7\x7d\x08\xfb\x1a\x00\x99\x8c\xf2\x48\x64\x26\xbe\x5b\x9a\xb9\x3d\x5f\x55\xd5\xc5\x66\x4f\xc5\x76\x4e\x26\x67\xef\xa7\x9c\xca\xda\x85\x8f\xc3\xf1\x74\xf8\x89\x44\x80\xbe\x89\x98\x07\xa5\x69\x70\x67\xbc\xf4\xcb\xa5\xa9\x01\x05\x31\xd5\x0f\x01\x90\xcb\x89\x8f\xa0\x1b\x9a\x8c\x89\x02\x42\x60\x98\x6b\xb9\xe1\x38\xe6\xba\xbb\x11\x35\x96\xb9\xfe\x6a\x46\x71\x2d\xa3\x8e\xf6\xf2\x90\xab\x11\x98\xeb\x60\x57\x35\x66\x4c\x4f\x9a\x4b\x0f\xf6\xc2\x43\x15\x5e\xe7\x11\xce\xf5\x52\xaa\x45\x39\x8f\x20\x2f\x4a\xa4\x73\xf5\x08\x74\xf2\xc2\xe3\x9d\x2b\xa5\x46\x8f\x79\xae\x97\x9e\x08\xb8\xe7\x11\x04\x48\x85\x7d\x1e\x81\xbf\x0e\xff\xfc\xc0\xf2\x4b\xa3\xa0\x2b\xc5\x57\x87\x84\x9e\x8f\xe7\x7c\x3c\x03\xa4\x6e\xa2\x43\xc4\x65\xa9\x2e\x3a\x08\x46\xba\x2a\x9c\x02\xba\x4c\x98\xfd\x3e\x9a\xdb\xf4\x68\xe6\x13\x4a\x44\xa3\x40\xd8\x0d\xac\xda\xbc\x9a\x8d\xab\xd9\xb4\xf4\xe6\x69\x5a\x7b\xe5\xee\x46\x73\x34\xfb\x13\x25\x4b\x82\x84\xf1\xa8\x92\x30\x92\x9a\xda\x84\x50\x93\x26\x10\x3c\x06\x69\xcf\x7d\xe5\x4a\xc0\x7e\x20\x78\x55\xee\xca\x96\xf7\x25\x82\x4a\xcc\xc9\x71\xe3\xbb\x70\x11\x8c\x0c\xa2\x53\xcb\x6c\x4d\xf6\x0e\x07\xdc\xd5\xda\x7b\x70\xf8\xf2\x29\x1d\x6f\x71\x84\xc2\xee\x59\x84\xd0\xfc\x69\x89\x2a\x01\xdd\x42\x2d\x7c\x47\xf0\x2c\xf4\x13\xbd\xfe\xde\xff\xb2\x66\x26\xbc\x32\x78\x4e\x07\xcf\x03\xd7\x78\x15\x45\xd4\xfc\xeb\x03\x8f\x42\x9f\xf5\x0c\xda\xe1\xbb\x0f\x6f\xa6\x40\xa5\x2d\x0e\x96\xf3\xdc\xd0\x51\x38\xe5\xb2\x49\x21\xa2\x9f\x93\xa9\xef\xbf\x53\x01\x84\x4d\x0e\x2c\x5d\x93\xf4\xfb\x3b\x14\x02\x7b\x77\x76\xbd\xba\xb4\x6d\x6d\x83\xed\xce\x5c\x1d\xce\x7c\x7b\xd6\xbf\xee\x3f\x8b\xd0\x52\xa2\xd4\x95\x0b\xcb\x2a\x83\x83\x55\xc3\xad\x65\x60\xcc\x13\x2e\x94\xcd\x85\x2f\xaf\xdf\xd1\x19\x97\x77\x59\xc4\x5d\x76\x3c\xa2\x4e\x3e\xd8\xb4\xf6\x22\xc8\xc1\xb2\x87\x87\xb2\x5b\x20\xa1\xec\x16\x60\x6c\xb3\x5b\xc0\xbd\x21\xbb\x05\x8f\x94\xdd\x82\xec\x16\x48\xe8\x54\x0d\x96\xec\x16\xc8\x1e\xcd\x6e\x81\x98\xf2\x2e\x7b\x46\xc7\x23\xea\xe3\x24\xe3\x17\x45\xe5\x6e\x6c\x6d\xbb\xee\xbc\xf5\x97\xc9\x6f\x33\x70\x2f\x42\x53\x03\x45\x7a\x0f\xc7\x55\xd8\xce\x56\x26\x1a\x57\xad\x5a\xfb\x73\xd1\xda\x6e\xe1\x2b\x70\x9a\xf8\x5e\x43\xac\x5a\xa1\x3c\x1b\x5e\x78\x38\x6d\xaf\x10\x00\x95\x27\x43\x4b\xac\xd6\x83\x39\x68\xaa\x94\xca\x6b\x39\x68\x56\x1f\xe9\xa9\xf0\x5e\x4a\x84\xfe\x22\x8c\x77\xc2\x79\x26\x8a\xa5\xe1\x6c\x25\xd2\x4e\xd2\xda\x48\x4a\xfb\x28\xb2\x6d\xc4\x7a\x1f\xa3\x97\xd0\xc2\x66\x18\x29\xfc\xae\x76\xc1\x99\xea\x93\xad\xcc\xfd\x85\x2d\x7d\x8d\x22\x7f\x8e\x7f\x48\x36\xb6\x75\x7e\x76\x24\x83\xed\x56\x65\x69\xbb\xee\x68\x2c\x10\xd2\xf3\x3c\x22\x1b\x24\x6b\x4f\x52\x7b\x4e\x5d\x95\x05\xb7\xb4\x7e\x15\x8e\x42\x31\x10\x9f\x98\xbc\xf9\xd1\x7a\x9d\x52\x56\x09\x2b\x12\xac\xfb\x02\x9f\x73\x62\xe7\x6a\xfa\xc5\xf2\x5b\x77\xad\xd4\xbe\x9c\x8f\x96\x75\xbc\x66\x77\x3c\x93\x33\x6a\x9d\x71\xd3\xfa\xe0\x4b\x0f\xa7\x29\x93\x0c\xb9\x92\x8b\x1d\x09\x47\x34\xde\x38\x49\xcd\xad\x35\x33\x97\xa3\x67\x4f\x29\x47\xcf\xf6\x3f\x9d\xa3\x67\x2f\x51\x8e\x9e\x01\x94\xa3\x67\xf8\x83\x39\x7a\xb6\x87\x61\xf6\xff\x72\xf4\xec\xe5\x11\xe6\xe8\xd9\xc4\x06\x9b\xa3\x67\x7b\x28\x47\xcf\x24\xcf\x4f\x41\x7b\x4e\x5d\x95\x9d\x78\xf4\x6c\x68\x31\x02\x61\x4a\x32\xbb\xb2\x72\x4b\x87\x84\xd1\x8a\x48\x28\x0d\xb4\xa4\x2b\x9a\x4b\xd8\xee\xf4\xbf\x94\x78\xa8\xb3\xe5\xaa\x75\xe1\xfe\xa3\xaf\x83\xbd\x03\xd4\x25\x27\x71\xa6\xaa\xfc\xed\x79\xeb\x6e\x5c\x65\xe7\xf6\x73\x57\x9a\xca\xa0\x80\x4b\x7c\x4d\x7e\x69\x1a\x73\xe9\x2a\x87\xaf\xa4\xa2\x01\xf8\xec\xe4\x43\x36\x45\x31\x6b\xd1\xba\x97\xe2\xe8\xbe\x92\xae\x0a\x7a\x10\x76\x50\x0c\x58\x19\x6f\x5a\x5f\x7e\xf3\xab\x1a\xb4\x7c\xe8\x18\xb2\x99\x7d\xaf\xab\xfb\x1f\xde\x87\x3f\x5c\x65\xbb\xfb\x2e\x58\xb0\x73\x25\xfb\xa5\xed\xaa\xfe\xd0\xfd\xd9\xfa\x15\x28\x7a\x4f\x2c\x80\xff\xf8\xf7\x51\x4c\xed\xcd\x48\xff\xf2\xf5\x7a\x96\x46\x9c\x9b\x5f\x9d\x05\x9b\xbc\x8d\x3f\x35\x9d\xfd\xea\xea\xd5\xdd\xf7\x4d\x87\x96\xf1\x60\xf4\xec\x8d\xa5\x1b\x86\x73\x1d\xf1\x3d\xd2\x99\x24\x02\xc3\xcd\xa3\x63\x32\x5c\xc1\xd2\xa6\x62\x48\xaa\xe3\x5b\x57\xcf\xfc\x6d\x37\xb2\xbc\xcd\x97\x9d\xf9\xd8\xda\x99\xad\x83\x33\xd5\x45\xc3\x54\x6e\x2a\x96\xe6\x39\xfb\xd1\x51\x28\x1e\x15\xd2\xc8\x9c\x47\xb3\xa3\x83\x69\xc3\xaa\xc9\xb7\x8e\x03\xbd\x0b\xe3\x2e\xdf\x3a\xbe\xcd\x2e\xdf\x3a\x4a\x28\xdf\x3a\xe6\x5b\xc7\x37\x28\xdf\x3a\x4a\x9e\x9f\x42\xdc\x3c\xdf\x3a\x3e\xa3\x7c\xeb\x98\x76\xb0\xf9\xd6\x71\x0f\xe5\x5b\x47\xc9\xf3\x53\xd0\x9e\x53\x57\x65\x27\x7e\xeb\xd8\x85\x99\x03\xee\x61\x98\xc8\xe4\x86\xc5\xf7\x1a\x41\x7e\x60\xd8\x04\xdb\x2e\x5d\xbd\xb9\x57\xfa\x66\xbb\xce\xcc\x2d\x86\x96\x42\x6c\x89\x17\x58\xa6\x6f\x79\x1c\x02\xfc\x7e\x6c\x22\x6f\x7c\xb5\x5a\xda\x4f\xf6\xc6\x41\x97\xd1\xa3\x55\x5b\xcc\x36\x23\x63\xa0\x70\x68\xad\x37\x62\x41\x00\x97\x9f\xbf\x9d\x13\xe8\xb1\x69\x22\x29\xf4\x02\xb8\xb9\xce\x9a\xa2\xfc\x2d\xd7\x03\x1b\x55\xfc\x7a\x8e\xad\x6f\xcc\x9c\xb8\x37\x3f\x0e\xb9\xdf\xde\x2a\x72\x0c\x99\x5e\xfd\xdd\xea\x72\xd4\x75\x7c\xe0\xf7\xf9\xae\x81\xef\x4c\x46\xd5\x26\x8f\x12\x7e\x02\xca\xe4\xd6\xb7\xd7\xae\x9e\x7f\x72\xc0\x94\xc3\x93\x7d\x8c\x58\xba\x10\x74\x02\xaa\x2b\x61\xb8\x04\x46\x19\xa3\x37\x22\x7c\x79\x27\x75\x1b\x42\x46\x96\xb5\xb7\xbf\x70\xb4\x91\xda\x88\xc4\x9d\x02\x3b\xfd\x8c\x2f\xcf\x17\xaa\xf2\x77\x09\xe4\x7a\xeb\xee\x11\xf8\x5b\x04\x65\x14\x5f\x71\x83\xa0\xe2\xac\xe9\x1c\x47\xdd\x1d\xb0\x37\x07\x8a\x7b\x03\xf6\xd6\x80\xb9\x33\xe0\xeb\x96\x89\x88\x17\x15\xef\xd2\x45\xbb\x54\xb1\xae\xa8\x91\x2e\xee\x96\x60\x54\xc3\x0f\x0c\xaa\x71\x26\x1c\x13\x0b\x3e\x8a\xb3\x23\xef\x08\x68\x47\x4c\x55\x44\xe1\x47\x40\x08\x80\x6c\xea\x0e\x94\x4d\xdd\xdf\x59\x65\x53\xf7\x75\xca\xa6\xae\x98\xb2\xa9\xfb\x3a\xaf\x7c\xb0\xbf\x48\xd9\xd4\x15\x8c\x2d\x9b\xba\xc3\x20\xf3\x8e\x78\x87\xa6\x2e\xf4\x73\xb8\xa1\x3d\x2a\xf8\x88\x4d\xcc\x6c\x2a\xc2\x16\x26\xec\x22\x52\x40\xf1\x73\x13\x16\x0f\x36\xcd\x9d\xc9\x7a\xc1\x37\x39\x68\x95\x33\x02\x80\x6a\x54\x6a\x29\x49\x2b\x9c\x90\x34\xde\xfa\xe6\x2c\x6f\x85\xea\x25\x2d\xee\xd1\xf3\x69\x61\x2b\x9b\xb1\xb0\xd9\xc4\x35\xc2\xb2\x46\xad\x6a\x6a\xc2\x51\xdb\x01\xb6\x1b\x78\x9b\x81\xb6\x17\xa2\xd9\x0a\xb8\xe5\x4c\x8c\x18\x15\x77\xc8\x14\x81\xc5\x55\x91\x2c\x3e\xce\x51\x43\xa5\x86\x8f\x33\x34\x36\x11\x7c\x9c\xd1\xc1\xfe\xcf\x64\x4f\xe9\xac\xb3\x5e\xa5\x69\x29\x13\x2e\x5d\x7b\x8c\xed\x00\x7d\x4a\xed\x67\xf6\xc2\x56\xb6\x0c\x5e\x94\xb7\xc4\x77\x2d\x02\x85\x07\xfa\x8a\xa6\x75\xbe\x75\xb2\x7c\x65\x74\x09\xb0\xe9\x1f\x46\xf2\xb1\x32\x5d\x27\x2d\x46\x87\xa6\x06\x6f\x41\x9d\xfd\xdd\xec\xef\x66\x7f\x57\x48\xd9\xdf\x8d\xc9\x31\xfb\xbb\x3d\x65\x7f\x37\xfb\xbb\x2f\x50\xf6\x77\xb3\xbf\x9b\xfd\xdd\xac\xb3\x5e\xa4\x69\x29\x93\x13\xf1\x77\xa1\xe6\xc7\xe8\xae\xc1\x1a\x1e\xeb\x1a\x00\x33\x05\xbd\xe8\x9a\xa3\x8d\x8d\xa7\xfe\x45\xd0\xcf\xd7\x06\xc3\x6c\x55\xc9\x5b\xca\x41\xe3\x27\x1a\x23\xa3\xd2\x78\x85\x75\x2f\x65\x9a\x73\xe2\xaa\x15\xef\xaa\x3a\xe2\xb8\xc0\x1e\xaa\x78\x3d\x28\xdc\x37\x75\x9c\x8f\xe7\xba\xa4\x32\x36\x05\xdc\x19\x95\x3a\x82\xd1\x6e\xa8\x14\x93\xcd\x43\xa9\x99\xa0\x5d\x4f\xc7\x38\x15\xba\x55\xd3\x54\x76\x69\xeb\x60\xaa\xcd\x4e\x16\xaf\x3f\x18\x5b\xe1\xda\x05\x33\xe6\x1e\xea\xd2\x77\xf7\x5d\x19\xaa\x54\xdf\xcd\xc5\x93\xf0\x58\x12\x69\xde\x12\x31\x24\x6e\x17\xc3\xb1\x23\x30\x6e\x84\xc6\x8c\xe8\xbc\x37\xb9\x60\x71\xfd\x83\x19\x81\xd1\xf5\x0c\xa6\x16\x54\xdf\x27\x98\x93\x23\xb6\x37\xf0\xd4\x0c\x52\xdb\xde\xb8\xd2\x7e\x28\x4b\xbf\xaa\x43\x12\xab\x34\xf8\xca\xb6\x46\x2c\x7b\x80\x5e\xc3\x45\xd4\x5e\x5d\xd9\x12\x88\x0d\x10\xab\x75\x6d\xd3\x76\x50\x5a\x7f\xb2\x11\x5e\xac\xd2\x4c\xb6\x6b\x06\xb7\x0e\x1b\xef\x80\x05\xcf\x0c\x78\x1a\x92\xb5\xaf\x10\xbe\x58\xf4\xb3\xd6\x36\x95\x2b\xcd\x45\xbf\x8f\x7f\xda\x65\x53\x99\xf0\xe6\xac\x48\x77\xcd\xd2\x06\x33\x33\xc1\xec\x9b\x61\x64\x17\x9a\xba\xf6\x41\xae\x0b\xa6\x98\x18\x20\xfe\x69\x27\x38\xfe\x90\xb9\x2b\xab\x55\x17\x6c\x2b\xc3\x3d\x87\xbe\xdf\xde\x05\xdb\xd6\xa6\xfa\x72\x1e\x5b\x43\x53\xcb\x20\xb3\x6c\x86\x41\xff\x6c\xcd\xd5\x95\x2b\xe5\xbd\xeb\xa0\x31\x2d\xac\xa9\xc2\xe2\xe3\xc2\x96\xd7\x7f\xf9\x99\x95\xa2\xc0\xa7\xcd\x07\xa9\xbc\x99\xfd\xc3\x54\xa6\x2e\x93\x88\xc3\xd3\xd7\x5f\x6c\x02\x9b\x3f\x4c\x3d\x97\xed\xbc\x69\xc8\x46\xe3\x5b\x59\x80\x31\xa9\xb1\x81\x39\x4f\xc4\x29\x5d\x03\x12\xd9\x13\xd7\xd3\x93\x39\x9c\xb1\x3b\x98\xb1\xc6\x85\xb6\xba\x12\x5f\x7e\x24\xb3\x15\xd6\x26\x7a\xd7\x39\x5f\x7f\xb8\xba\x72\x75\x1f\xdc\xbd\x72\xf3\x14\xb1\xdd\xb2\x72\xb6\x0e\x32\x85\xc2\xbc\xbf\xa0\x6f\x7c\x0a\x45\x3b\x5a\x3e\x74\x93\xc6\xe3\x92\x86\xf8\x00\x7d\x90\xc0\x9e\x7c\x73\x69\xa4\x4b\x21\x9b\xfa\x2e\x9b\xae\x3b\x94\x4d\xd7\x6c\xba\xc6\x18\x53\x36\x5d\xb3\xe9\xfa\xf0\xce\x6c\xba\x66\xd3\x75\xcf\x50\xb2\xe9\xba\x8f\xb2\xe9\x3a\x71\xd3\xb5\x0b\xa6\x9e\x5d\xde\x7f\xf3\xb3\x37\x47\x29\x1a\x5d\x17\x7c\x6b\xe6\x51\x8c\x51\xb3\x49\xfa\x5c\x8f\x6a\xaf\xd0\x08\x75\x3a\x3c\xbf\xfb\x77\xeb\xda\x5a\xee\x0f\xcc\xa8\x36\x73\xe3\xc4\x69\x39\xd0\x21\x72\xed\x64\xa5\x3e\xd0\x4b\xa5\x87\x1e\xf0\x52\xa9\xd2\x3e\xdb\x7c\xd1\xde\x1f\x09\x6e\xa2\xc5\x1b\x5a\x9c\xb4\x88\x2c\xb8\x3c\x59\x71\x8a\xfe\x11\x96\x9c\x38\xc5\x2f\x90\x7b\x78\xc2\xf2\x4c\x64\xf1\x97\x26\x94\x1b\x78\x80\xfe\xd4\x3f\xbc\x15\x7b\x12\x57\xb1\x9b\x5b\xce\x94\x48\x22\x7c\xa2\x1a\x90\x83\x82\x5a\xaf\xd7\x56\xf6\xde\xb3\xc7\x45\x38\xb4\xad\xbb\x91\xfe\xaf\xe6\xd2\xca\x52\xb8\x8e\x5b\x7b\xf4\xd6\x91\xb8\x1e\x59\x3c\xe4\x01\x3c\xe7\x6d\x0b\x8e\x78\x65\xc4\x51\x0a\x6d\xd1\xcd\x0c\xfd\xdc\x63\x31\x0b\x6d\xd1\xd6\x9a\xa5\xab\xe7\x51\x2c\xdb\x27\xb0\x5f\xfb\x03\x4f\xa2\x37\xae\x9a\x99\x09\xf6\x22\xb4\x26\xd8\xf9\x9b\xaf\x93\xaa\xf0\xd6\x57\x95\xab\xe7\xbf\x36\x2f\x8e\x79\x44\x35\xa6\x0d\x4e\x0a\x42\x94\x32\x12\x26\xde\x6a\x12\x9f\x2b\xa6\xe0\xde\xd8\xb6\xdb\x33\x3f\x02\x76\xfb\xd4\xfd\xd9\xc0\xe7\x95\xff\xef\x1d\x6a\x6b\x67\xee\xd5\xf5\x96\x48\xc4\x43\x48\x3a\xca\x6d\x83\xd9\xf7\xa6\x02\x94\x26\xb9\x24\x49\xae\x6b\x52\x71\x17\xc9\x53\xb9\x89\xf9\xec\x77\x2d\xc5\xde\xf4\x6d\xf7\xb9\x32\x5d\x70\xe5\x3f\x2a\x5f\x5e\x5f\x04\xdf\x46\xd5\x10\x57\xdd\x3e\x9d\x3d\x10\x74\x0e\x4f\x46\xf1\x60\x48\x65\x58\x35\x4a\x7f\xd4\x7e\xf9\x74\x30\x27\x7a\x18\x40\x2c\xe5\x6b\xfe\x67\xd5\xda\x4f\xae\xbb\x8e\x7a\x19\x66\xca\x85\xe0\x30\xdf\x1d\xac\x50\xcc\x66\xae\xbb\x4e\x92\xc4\xbb\x7e\xf1\xaf\x1f\x5f\xa2\xbf\x37\xd1\x76\x4b\x12\x1f\x4a\xb5\x71\xe4\xf2\x3d\x2c\xaf\xe8\x87\xbf\x7e\x7c\x89\xba\x0f\xfe\x70\xfb\x0b\xa0\x90\x7d\x90\x4e\x0f\x75\xb6\x6c\x6d\x9a\x64\xf6\x6e\x61\x5a\x91\x33\x01\xbe\x59\x2e\x03\xdb\x8f\xdb\xff\xd3\x61\xb0\xb1\xe4\xa0\xb4\xcd\xe2\x2a\x6a\xc0\x70\xe9\x6b\x17\xbc\xac\x9b\xce\x44\x2e\x68\x85\x5d\x57\x26\xa1\x5a\x86\xbd\x20\xd9\xbb\xf0\xa0\xfb\x57\xff\xb0\xa2\xd6\x09\x68\xf4\x0e\xb9\x81\x4e\x19\x11\x96\x16\x4b\x26\xd9\xeb\xc3\xee\x88\xb6\x7f\x5d\x3d\xdb\xff\x39\x13\x30\x97\x53\xef\x87\x13\x17\xda\x93\x33\xc4\x7b\x2f\xf2\x9b\xd9\x7b\x93\x88\xac\xd8\xcc\x5e\x99\x55\x15\xa4\x86\x78\x5a\xaf\x4c\x7c\xb8\x1d\xf5\x8d\xc9\x52\x38\xd7\x3d\x8d\x98\xf2\x03\xb5\x52\x83\x3f\x3c\xdd\xed\x47\x23\xc5\xb9\x4e\x78\xf3\x91\xe0\xde\xbc\x28\x7c\xd3\xdf\x8e\xc4\x3e\x01\xe4\x2a\xa7\x73\x51\x95\x4d\xeb\x6e\xa2\x5b\x12\xc9\xce\xdf\x4d\x7a\xde\xea\xb2\x72\xdd\xe2\xe2\x3d\x1c\x98\xa9\x63\x62\x1f\x42\x68\xdd\xe5\x2a\xc8\xe6\x65\x8a\x77\x83\x40\x90\x62\x23\xe9\xb1\xb6\xe1\xcc\xdf\xd6\xb7\xa6\x9d\x7d\x38\xdf\x1b\x7c\xca\x67\xff\x13\xc2\xcf\xfe\x2b\x67\xab\x99\x70\x9f\xb3\x3c\x8a\x3e\x29\xec\xbf\xf7\x5f\x32\x3d\x27\x2a\x4f\xe1\xe1\xb3\xce\x61\xc0\x3d\x8a\x1b\xd3\x5d\xe4\x71\x7c\xa0\xf9\x01\xb5\x0c\x79\xa7\x76\xd7\x36\xcb\xed\x8f\x91\x84\xbb\xf4\x75\x30\xae\xc6\xfb\x82\xd0\xf2\x3d\x73\x37\xae\x43\x72\x90\x14\xbc\x86\xd9\x9c\xe8\x56\x1a\x86\x97\x6e\x27\xc1\x49\xf8\x07\x37\xcf\xc5\x2f\xb6\xcb\x26\xdc\x7f\x72\x71\x33\x02\xed\xcc\xad\x96\xf1\x03\x8f\xee\x7f\xec\x57\xb7\x74\xa2\x2a\x8d\xf8\xc9\xe8\x45\x71\x15\xb5\x3a\x2e\x91\x0d\x5f\xad\x4e\xfa\xb2\x39\x98\x76\x6e\xc3\xbf\xfe\xf5\xd7\x11\xdd\x1d\xdc\xde\x3a\x59\xe5\xc8\x14\x86\x2b\xdf\x0d\x95\xbd\xfb\xef\x8d\x9b\xf3\x7e\x1d\x66\x2f\x6f\xae\x36\x45\xef\x2e\x47\xdc\x5f\xfb\xf9\xa4\x9d\xe3\xab\xca\x97\xd7\x71\x2f\x74\x66\x26\x98\x2e\xd1\xe5\xf9\xc3\xbb\x7f\xfd\x8a\x7e\x33\x21\x9e\xb1\x79\x69\xcf\xd7\xce\x67\x17\x6c\x1d\x62\x67\xf6\x9c\x7e\xee\x58\x33\x4b\x06\x3f\x75\xd8\xcc\x9a\xfe\xc3\xa2\x49\x99\x0b\x3f\x6c\xe3\xa3\xee\x4b\xd7\x6e\x0a\x76\xe2\xf7\x09\x68\x6d\xe3\x3b\x97\xe8\xd5\x37\x4e\x1a\xe8\x49\x72\x0f\xb9\xfd\xb6\x68\x4b\xdb\xe7\x0d\xc7\xcd\x82\xb1\xf5\xac\xf1\xae\x96\xd5\x9d\x81\xba\xe3\x88\xb2\x55\xe4\xeb\xfa\x38\x61\xfb\x37\xf6\x7e\x0f\x5c\xbc\xf6\x0b\xdf\x05\x49\x24\x11\xab\x48\x48\xb0\x40\x92\xa2\x01\xf0\xa5\x80\x2a\x8d\x38\xe3\xae\x8b\x7c\x0d\x57\x2e\x4c\xf3\x61\x15\x16\x9f\x5c\x57\xfa\x1b\x8b\xe8\x3c\xa9\xbd\x3b\xb0\xb8\xe8\xcb\x20\xe3\x33\x48\x64\x66\xf4\xc8\x4e\xc1\xa7\xc1\xa6\x70\x7f\xc7\x3e\x05\x1e\xa4\xe3\x4b\xbd\x56\xc7\x46\x16\x94\x3c\xbe\x00\x4a\xe3\xdb\x60\x64\x25\x85\x53\x08\x1a\x64\x47\xf2\xb5\x9f\x4b\x7b\x6c\x6c\xc2\x5a\xe7\x9b\x55\x3f\x98\x0a\x77\x7f\xef\x5b\x8d\xb3\xf5\xee\xd8\xfb\x9b\xa7\x1f\x13\xeb\x48\xa8\xe3\x9a\x5e\x47\x65\x20\xf5\xcd\xf2\x0e\x98\x90\x2a\x38\xdb\xcf\x1e\xc6\x18\x6b\xbd\x9b\x47\x77\xbd\x8f\x31\x7e\xac\x8c\xdb\x7b\xa5\x80\x35\xa7\x33\x6e\x79\xa2\x6e\xed\xe3\xb7\x45\x5b\x8d\x85\x0f\xbe\x3e\xbe\x10\xca\xec\x80\xc9\xb0\x6b\xe6\xd1\xe6\xdf\xb7\xe1\xd6\xb7\x09\xe2\xed\x47\x97\xc9\x7d\x72\x49\xce\x4d\xeb\xd7\xbf\xd9\xcf\xfa\x68\x13\x9d\x00\x98\xc4\xa4\xa9\x4e\xe2\x74\x72\x0d\x93\x82\x03\xfe\x26\x1e\xd1\xa0\x85\x83\x39\xdf\x5b\x22\x53\x48\x7a\xc2\xf2\x91\xb6\xc4\x76\xd2\x1b\x88\xc9\x51\xda\x12\x0a\xb8\xbd\xcb\x95\x9a\x2a\x0e\xeb\x1c\xc9\x21\x7f\xfa\x8c\x38\x5d\x65\x4b\x44\x32\xda\xd3\x07\x31\xc4\xf3\x11\x01\xc9\x90\xfc\xf3\xdf\x99\x21\xe8\x8d\x05\x37\x87\x40\x5a\xec\x96\x4e\x57\x87\xe1\xb9\xab\x71\xf8\x16\x8a\x7c\xd6\x2d\xa9\x54\x69\xc1\xe7\xb8\x46\x1b\x01\xab\xa5\x0a\x32\x03\x76\x4b\xb4\xfa\x29\xf2\x29\x84\x10\x9f\x47\xbb\x25\xed\x46\x53\xe4\xd6\x6e\x49\xbd\xd7\xa8\x7c\xdb\x88\xfc\xb9\x1c\xdc\x68\x03\xd0\x6d\x75\x38\x43\x77\x4b\x8a\x9d\xce\x1b\x51\x53\x37\x88\x08\x66\x7d\x14\x3d\x1b\x0d\xd9\xf1\x91\x53\x76\x7c\x9e\x53\x76\x7c\x9e\x33\x1b\xc1\xf1\xd9\x05\xac\xfd\xe9\xaf\x2d\x60\x76\x93\x05\x6b\xab\x99\xb3\xf5\x28\x55\x2f\x45\x61\xef\x1a\x47\x22\xaf\x16\x34\xfa\x6a\xa1\xd0\x10\xb8\x6e\x18\xad\x1e\x08\xda\xd5\xb0\x2c\x26\x2b\xd9\x01\x7a\x41\xf5\xf1\xd4\x58\x01\xe8\xbf\x57\xfe\xf2\x3e\x6e\xc3\xd5\x79\x92\xf6\xff\xe9\x2e\x15\x5a\x3b\x77\x5d\x48\x90\x0a\x19\x6c\x6d\xea\xd8\x05\x4b\x49\xda\x13\x0d\x37\x2b\x07\x4c\xda\xec\xd7\x40\x78\x01\x13\x4b\xfa\xdb\xcb\xa8\x17\x2f\xa9\xb2\xb4\x96\x7b\x60\x49\xa8\xb7\x5e\xdb\xfb\xf5\xef\xa2\xbf\xf7\x08\xdb\xbb\x79\x1f\x3b\xef\x26\xe7\x44\xbd\xf6\xf3\x63\xe8\xc1\xb6\xd9\x70\x7b\x7f\x15\xbb\x53\x5b\x57\x9a\xca\x7e\xf9\x7e\x04\x0a\x69\x6e\x82\xbd\x35\xf1\x0f\xcc\xa6\xf5\xc1\x96\x6b\x43\xf8\x93\x5f\x1a\x17\x3f\x7b\x34\x6f\xca\x97\x7f\x2e\xdc\x94\x5d\x57\x7d\xae\xcd\x65\x25\x33\xc9\xc1\x09\xec\xd1\x13\x92\xb4\x48\x7e\x78\xf7\x79\x0a\x3d\xdf\xdd\x77\xc1\xc6\xaf\x77\x97\x43\x58\x80\xaf\x96\x6b\xc1\x87\x5d\xbe\xdf\x23\x19\x44\x7f\xff\x2f\x37\x73\x15\x4d\x5f\x8a\xa2\x9a\x47\x9b\x38\x33\x8d\x0e\x41\xb9\x3b\xa0\x9c\x43\xee\x0e\xf8\x40\xa9\x1a\xf9\x25\x6c\xf3\x2d\xd7\x3a\xfd\x59\xe2\xa3\x66\xa4\x1f\x5d\x22\xe6\xbb\x30\x77\x92\x9d\xc1\x4f\x5f\xdd\x35\xf1\xeb\x98\xc4\x5f\x79\xd3\x35\x0b\xdb\xda\xa3\xc9\x2c\x7e\x34\xe4\x2a\x57\xde\x47\x4f\x03\xfe\xed\xfd\x09\x17\x5e\x9a\xb7\x93\x30\x87\x59\x90\x7c\x23\x14\x23\xd1\xcf\x16\xa6\xda\x93\xe5\x2c\x53\x40\xfb\xec\x05\xd1\x8c\x3d\x78\xee\x6f\xbd\x47\x8c\x4d\x34\xb7\xfb\x43\xbc\xe2\x65\x34\xed\x7c\xc2\x80\xc1\xb6\xbe\x89\x34\x38\xec\x44\x90\x9f\x07\xe0\x69\xb0\xc1\xd9\x4c\xf7\xe6\x3f\x5a\x2f\x72\x0c\x55\xe9\xec\xff\xb4\xf7\x23\xf4\x38\x84\xf3\x26\xc8\xab\xd0\x93\xbc\xf2\x66\xee\x31\x91\x8c\x06\xe2\x4a\x3d\x37\x7e\x55\x73\x9b\x6c\xe3\xd7\xdc\xff\x34\x26\xaf\x77\xdf\xff\x74\x70\xf6\xf2\x41\x93\x0f\x9a\xa4\xf9\x32\xf2\xd1\x9f\x6d\x96\x4f\x68\x02\x03\x30\xd8\xfb\x4d\xe0\xa6\xf5\x4b\x1b\x16\x76\x15\xb7\x17\xd4\x5d\xe3\x5b\x01\x9e\x2c\xfa\xde\x42\xe8\x52\x0c\x04\xa6\xe3\x12\x3b\x02\x4d\x84\x14\xb8\x1c\x03\x81\x83\xe7\xd4\xd3\x68\x6a\x03\x70\x4d\x62\x70\x92\xbb\x2a\x03\xf1\x59\xd8\xb4\xeb\xa2\x67\x5d\xf0\x29\xe0\xea\x2a\x0a\x5c\x74\x22\x31\xe6\x4e\xa0\x5d\xe6\xe8\x49\x34\x10\x5f\x3a\xc2\x24\x75\xab\x2a\x46\xf8\x7a\x42\x9d\x3c\x6a\x6b\x09\x95\xd2\xa1\xac\x23\x54\x56\x98\xf1\xd2\xc1\x57\x10\xaa\xaa\x8a\xb4\x25\x71\x3a\x59\x89\x50\x0e\xa7\x14\x17\x55\x29\x9c\xba\x0e\x4d\x53\x06\x77\x30\x49\xa5\x0b\xe0\x14\x82\xca\xb9\x6c\x03\xe5\x03\x16\xa2\x7c\xc0\xa6\x7a\x90\x71\x68\x45\xae\xa1\x62\x54\xa8\x0b\xb3\x76\xed\xa4\xe3\x67\xf2\x5b\xf0\xec\x96\x41\x21\x89\x77\x37\xa3\x0f\x2a\xb7\x74\xb2\xe6\xc6\x03\xf1\x20\x09\x03\x91\xfb\x98\x16\x4d\xdb\x9d\xee\x17\xc2\x8f\x74\xb6\x5c\xb5\x2e\xdc\x7f\xf4\x75\xb0\x77\x62\x91\x67\x64\xcb\x54\x95\xbf\x3d\x6f\xdd\x8d\xab\xec\xdc\x7e\xee\x4a\x53\x19\x69\xb3\xfc\x81\x38\xb5\x5b\x9a\xc6\x5c\xba\xca\xa1\x2b\xc7\x9e\xa8\x66\x06\x6b\x76\xaa\xa6\x5a\x75\x06\x72\xd5\xad\x45\x31\x6b\x3d\xd0\x8d\xab\xa7\x63\xf9\x3a\x4a\xa7\x34\x83\x48\x43\x8b\xce\x49\x72\xd3\xfa\xf2\x9b\x5f\xc9\xea\xd3\x76\x59\xc1\xd7\x1a\x7d\x16\xda\x0f\xef\xc3\x1f\xae\xb2\xf2\x8c\xe9\x5d\xb6\x70\x34\x7c\x55\x7f\xe8\xfe\x94\x16\x23\x0e\xc4\x56\xd3\x72\xb5\xb4\x9b\x31\xfe\xe5\xeb\xf5\xdc\x8c\x34\x23\xbf\x84\x95\x35\x03\x8d\x3b\x21\x9d\xfd\xea\xea\xd5\xdd\x77\x39\xb6\xd2\x40\xac\x8a\xad\xec\x8d\x85\x4d\x77\x5a\x9f\xb4\xbe\x82\x9d\x14\x9a\x59\x10\xe6\xe0\x45\x61\x26\xad\xd8\x8a\xc0\x8c\x52\xae\xb7\xae\x9e\xf9\xdb\x6e\x44\xc9\x9a\x2f\x3b\xf3\xb1\xb5\x33\x5b\x07\x67\xaa\x8b\xc6\xee\x85\x10\xfc\x9d\xe8\xc5\x78\xce\x9a\x89\x18\xf1\x52\x3e\x28\x9a\x11\xb9\xa6\xb7\x71\xa1\x9f\xaf\x15\x5f\x7b\x13\xbd\xa1\x7b\x51\x54\xe6\xd2\xca\xc0\x01\xa6\x89\x3a\x57\x27\x4a\x7a\x96\x7b\xda\x29\xeb\x76\xe4\xa5\xe7\x52\x27\x1c\xd1\x3e\x72\xa7\x7b\x9a\xb2\x81\x38\xd5\x53\xfc\x02\xa4\x76\x0d\x71\x96\x11\x19\xd0\x38\xc7\x98\x59\x89\x3a\xc3\x70\xea\x82\xdc\xf9\x9d\x5e\xe6\x02\xe2\xdc\x4e\x6d\xf4\xd0\x9e\xc5\x9c\x56\x4c\xc2\x20\x27\x95\x2a\x8d\xc2\x9d\x52\xec\x0b\x30\x27\x14\xf5\xb5\x30\x1f\x0b\x75\x36\x89\x2f\x95\x3a\x97\x69\x3f\x14\x77\x22\x51\xd5\x04\x39\x8d\x78\x75\x28\xe0\x24\xc2\x2f\x47\x9c\x42\xf8\xe5\x88\x13\x98\xd2\x90\xc0\x9d\x3d\x54\x02\x78\xe7\x0e\x9e\x54\x9d\x33\x87\x4b\x1f\xe3\xbc\x1d\xdc\xa6\x12\xfd\xac\x31\xab\x2e\x46\x15\x5a\xe3\x67\x3f\xed\xb2\xa9\xcc\xdb\x9d\xd3\xa4\x32\x55\xfa\x3a\xb4\xbe\xaa\xe2\xc2\x3a\x9b\xba\xf6\xc1\x1c\x35\x46\xb9\xf8\xa7\x4b\x1b\xcc\xcc\x04\x93\xe7\x8f\xfb\x69\x27\xd0\x5f\xd0\xdc\x5d\x5d\xb9\xda\x05\x51\x22\x08\x5c\x1e\xee\x67\xf6\x03\xf0\x7e\x86\x47\xff\x8c\xbd\xb2\x6d\x6b\x67\x9f\x56\xeb\x95\xb9\x28\x17\x76\xb6\xaa\x5c\x3d\xff\x32\xaf\xfd\xe3\x9f\x3f\xdf\xd9\x72\x85\x5e\x3e\x12\xb7\x58\x7c\x4e\x4e\xff\x1d\x78\x37\x53\x1d\xd7\x35\x2d\x4d\x28\x17\x9f\xef\x9a\xb6\x87\x45\x25\x7b\xc0\x93\x57\x7e\x3d\x69\x1b\xd0\x17\x9a\x84\xa6\x9e\x94\xd9\x45\x3d\xad\xbf\xc2\xec\xa9\x59\x1e\x65\x20\x9b\x74\x71\xc5\x64\x2a\xd7\xb3\xa7\x28\x5f\xc2\x5f\x5c\x6f\x49\xd3\x1a\xbf\xa0\x93\xb0\x86\x67\x07\xa1\x20\x5f\xa0\xc8\x2f\x7c\xfa\x02\x76\xfe\x36\xda\x61\x93\x49\x9b\x15\x43\x56\x0c\x59\x31\xec\xd0\xfb\x55\x0c\x0a\xe6\xb7\xd6\xcd\x17\x50\x1e\x45\x4f\x3a\xa4\x05\x2e\xd1\xa1\xa0\x85\xe4\xec\x89\x45\x07\x3e\xd8\x4f\x10\xf4\x10\xb9\x1c\x8c\x04\x0c\xd3\x11\xdf\xde\x66\x95\xfd\xda\xd5\xb8\xb0\x95\x2d\x83\x6f\x7f\xda\x16\xd7\x4e\xa4\x4a\xcb\x66\x77\x3e\x5d\x77\x29\x9f\xae\x4f\x29\x9f\xae\xd9\xec\xa6\x29\x2b\x86\x5d\xca\x8a\x61\x4b\xef\x57\x31\x28\x98\x73\x6c\x99\xa5\x3a\x7b\x6e\x91\xc1\x36\x69\xda\x2a\x98\xc6\xcf\x72\x6c\x1a\x78\x72\x3b\x5d\xeb\xd5\x1c\xdb\x52\xde\xe4\x52\x0e\xe2\xc4\xe9\x0c\xfd\x81\x16\xc7\x5c\x2f\x62\x68\xf2\x18\xa7\x73\xa1\x3f\xa1\x8b\x78\x47\x4a\x9c\x93\x3a\xea\x80\xf4\x27\x76\x11\xe7\xd4\x2e\x62\x7e\x55\x8c\xd3\xbb\x88\x70\x82\x17\xca\x53\xbc\x88\x71\x92\x17\x31\x4e\xf3\x22\xca\x9c\x6e\xb4\xcb\x57\x71\xce\xf8\xcb\xa4\x2f\x5c\xdd\xa5\x28\x52\x17\xc9\x5c\xa2\x5f\xf0\x98\xc8\x7e\x08\x3f\x4a\x3d\x83\x3a\xc9\x0a\xbe\xf1\x95\x9f\xdf\xff\xf3\x20\xbd\x1e\x34\x4d\x0f\x9e\x8c\x3c\x87\xa6\x5f\x27\x3a\x34\xbd\x6b\xd0\xe5\xf8\xb4\x88\x46\xb5\xb9\x95\x46\x6f\x8e\x4d\xe7\x10\xd4\x2e\xe5\x10\xd4\x53\xca\x21\x28\x65\x6c\x5a\x63\xac\xc6\x34\x54\x23\x99\x58\xe4\x64\x2a\x1e\xd6\x18\xa6\xf4\x4e\x54\xcd\x16\x2f\x35\x2a\x43\x94\xaf\x6f\x26\xad\x23\xd6\xf8\x1c\xcd\xc8\xa1\xe2\x9d\x75\x70\x39\xe6\x09\x3c\x99\x63\x9e\x39\xe6\xf9\x22\xe5\x98\xe7\xdb\x94\x63\x9e\xaf\x53\x8e\x79\x6e\x29\xc7\x3c\x53\xbd\x20\xc7\x3c\x73\xcc\x53\x4c\x39\xe6\x29\x79\x3a\xc7\x3c\xc5\x94\x63\x9e\x39\xe6\x99\x63\x9e\x5b\xca\x31\xcf\x1c\xf3\xcc\x31\xcf\x0d\xe5\x98\x27\xc4\x36\xc7\x3c\x69\x46\xd0\xcf\xa5\xe8\x6b\x80\x08\x52\xdd\x22\x64\xf3\x21\x44\x5b\x03\x06\x8b\xdb\x1d\x18\x8a\x07\x21\xcd\x20\xb2\x1a\xcb\x01\x43\x54\xa3\x91\x57\x79\x24\x35\xde\x24\xa4\x0c\x41\x85\xae\xe4\x80\x5d\x14\x0c\x79\x40\x17\xac\x65\xda\x53\x62\xd5\x2b\x6a\x38\x91\x6a\x95\x43\x47\xe3\x65\x4c\x83\x8a\xa6\x58\x79\x05\x1a\xda\xe8\x07\x2b\x87\x80\x46\xae\xbf\x0e\xf9\x4c\x05\x16\xa9\x41\x3c\x53\x88\x02\x8d\x74\xa6\xe0\xc9\x23\x9c\x8d\x2e\x7d\x14\xaa\x19\x29\x7c\x3c\x9a\x59\x3e\xe4\x5e\xa5\x7c\xc8\x69\x1f\xc2\xbe\x06\x40\x26\xa3\x3c\x12\x99\x89\xef\x96\x66\x6e\xcf\x57\x55\x75\xb1\xd9\x53\xb1\x9d\x93\xc9\xd9\xfb\x29\xa7\xb2\x76\xe1\xe3\x70\x3c\x1d\x7e\x22\x11\xa0\x6f\x22\xe6\x41\x69\x1a\xdc\x19\x2f\xfd\x72\x69\x6a\x40\x41\x4c\xf5\x43\x00\xe4\x72\xe2\x23\xe8\x86\x26\x63\xa2\x80\x10\x18\xe6\x5a\x6e\x38\x8e\xb9\xee\x6e\x44\x8d\x65\xae\xbf\x9a\x51\x5c\xcb\xa8\xa3\xbd\x3c\xe4\x6a\x04\xe6\x3a\xd8\x55\x8d\x19\xd3\x93\xe6\xd2\x83\xbd\xf0\x50\x85\xd7\x79\x84\x73\xbd\x94\x6a\x51\xce\x23\xc8\x8b\x12\xe9\x5c\x3d\x02\x9d\xbc\xf0\x78\xe7\x4a\xa9\xd1\x63\x9e\xeb\xa5\x27\x02\xee\x79\x04\x01\x52\x61\x9f\x47\xe0\xaf\xc3\x3f\x3f\xb0\xfc\xd2\x28\xe8\x4a\xf1\xd5\x21\xa1\xe7\xe3\x39\x1f\xcf\x00\xa9\x9b\xe8\x10\x71\x59\xaa\x8b\x0e\x82\x91\xae\x0a\xa7\x80\x2e\x13\x66\xbf\x8f\xe6\x36\x3d\x9a\xf9\x84\x12\xd1\x28\x10\x76\x03\xab\x36\xaf\x66\xe3\x6a\x36\x2d\xbd\x79\x9a\xd6\x5e\xb9\xbb\xd1\x1c\xcd\xfe\x44\xc9\x92\x20\x61\x3c\xaa\x24\x8c\xa4\xa6\x36\x21\xd4\xa4\x09\x04\x8f\x41\xda\x73\x5f\xb9\x12\xb0\x1f\x08\x5e\x95\xbb\xb2\xe5\x7d\x89\xa0\x12\x73\x72\xdc\xf8\x2e\x5c\x04\x23\x83\xe8\xd4\x32\x5b\x93\xbd\xc3\x01\x77\xb5\xf6\x1e\x1c\xbe\x7c\x4a\xc7\x5b\x1c\xa1\xb0\x7b\x16\x21\x34\x7f\x5a\xa2\x4a\x40\xb7\x50\x0b\xdf\x11\x3c\x0b\xfd\x44\xaf\xbf\xf7\xbf\xac\x99\x09\xaf\x0c\x9e\xd3\xc1\xf3\xc0\x35\x5e\x45\x11\x35\xff\xfa\xc0\xa3\xd0\x67\x3d\x83\x76\xf8\xee\xc3\x9b\x29\x50\x69\x8b\x83\xe5\x3c\x37\x74\x14\x4e\xb9\x6c\x52\x88\xe8\xe7\x64\xea\xfb\xef\x54\x00\x61\x93\x03\x4b\xd7\x24\xfd\xfe\x0e\x85\xc0\xde\x9d\x5d\xaf\x2e\x6d\x5b\xdb\x60\xbb\x33\x57\x87\x33\xdf\x9e\xf5\xaf\xfb\xcf\x22\xb4\x94\x28\x75\xe5\xc2\xb2\xca\xe0\x60\xd5\x70\x6b\x19\x18\xf3\x84\x0b\x65\x73\xe1\xcb\xeb\x77\x74\xc6\xe5\x5d\x16\x71\x97\x1d\x8f\xa8\x93\x0f\x36\xad\xbd\x08\x72\xb0\xec\xe1\xa1\xec\x16\x48\x28\xbb\x05\x18\xdb\xec\x16\x70\x6f\xc8\x6e\xc1\x23\x65\xb7\x20\xbb\x05\x12\x3a\x55\x83\x25\xbb\x05\xb2\x47\xb3\x5b\x20\xa6\xbc\xcb\x9e\xd1\xf1\x88\xfa\x38\xc9\xf8\x45\x51\xb9\x1b\x5b\xdb\xae\x3b\x6f\xfd\x65\xf2\xdb\x0c\xdc\x8b\xd0\xd4\x40\x91\xde\xc3\x71\x15\xb6\xb3\x95\x89\xc6\x55\xab\xd6\xfe\x5c\xb4\xb6\x5b\xf8\x0a\x9c\x26\xbe\xd7\x10\xab\x56\x28\xcf\x86\x17\x1e\x4e\xdb\x2b\x04\x40\xe5\xc9\xd0\x12\xab\xf5\x60\x0e\x9a\x2a\xa5\xf2\x5a\x0e\x9a\xd5\x47\x7a\x2a\xbc\x97\x12\xa1\xbf\x08\xe3\x9d\x70\x9e\x89\x62\x69\x38\x5b\x89\xb4\x93\xb4\x36\x92\xd2\x3e\x8a\x6c\x1b\xb1\xde\xc7\xe8\x25\xb4\xb0\x19\x46\x0a\xbf\xab\x5d\x70\xa6\xfa\x64\x2b\x73\x7f\x61\x4b\x5f\xa3\xc8\x9f\xe3\x1f\x92\x8d\x6d\x9d\x9f\x1d\xc9\x60\xbb\x55\x59\xda\xae\x3b\x1a\x0b\x84\xf4\x3c\x8f\xc8\x06\xc9\xda\x93\xd4\x9e\x53\x57\x65\xc1\x2d\xad\x5f\x85\xa3\x50\x0c\xc4\x27\x26\x6f\x7e\xb4\x5e\xa7\x94\x55\xc2\x8a\x04\xeb\xbe\xc0\xe7\x9c\xd8\xb9\x9a\x7e\xb1\xfc\xd6\x5d\x2b\xb5\x2f\xe7\xa3\x65\x1d\xaf\xd9\x1d\xcf\xe4\x8c\x5a\x67\xdc\xb4\x3e\xf8\xd2\xc3\x69\xca\x24\x43\xae\xe4\x62\x47\xc2\x11\x8d\x37\x4e\x52\x73\x6b\xcd\xcc\xe5\xe8\xd9\x53\xca\xd1\xb3\xfd\x4f\xe7\xe8\xd9\x4b\x94\xa3\x67\x00\xe5\xe8\x19\xfe\x60\x8e\x9e\xed\x61\x98\xfd\xbf\x1c\x3d\x7b\x79\x84\x39\x7a\x36\xb1\xc1\xe6\xe8\xd9\x1e\xca\xd1\x33\xc9\xf3\x53\xd0\x9e\x53\x57\x65\x27\x1e\x3d\x1b\x5a\x8c\x40\x98\x92\xcc\xae\xac\xdc\xd2\x21\x61\xb4\x22\x12\x4a\x03\x2d\xe9\x8a\xe6\x12\xb6\x3b\xfd\x2f\x25\x1e\xea\x6c\xb9\x6a\x5d\xb8\xff\xe8\xeb\x60\xef\x00\x75\xc9\x49\x9c\xa9\x2a\x7f\x7b\xde\xba\x1b\x57\xd9\xb9\xfd\xdc\x95\xa6\x32\x28\xe0\x12\x5f\x93\x5f\x9a\xc6\x5c\xba\xca\xe1\x2b\xa9\x68\x00\x3e\x3b\xf9\x90\x4d\x51\xcc\x5a\xb4\xee\xa5\x38\xba\xaf\xa4\xab\x82\x1e\x84\x1d\x14\x03\x56\xc6\x9b\xd6\x97\xdf\xfc\xaa\x06\x2d\x1f\x3a\x86\x6c\x66\xdf\xeb\xea\xfe\x87\xf7\xe1\x0f\x57\xd9\xee\xbe\x0b\x16\xec\x5c\xc9\x7e\x69\xbb\xaa\x3f\x74\x7f\xb6\x7e\x05\x8a\xde\x13\x0b\xe0\x3f\xfe\x7d\x14\x53\x7b\x33\xd2\xbf\x7c\xbd\x9e\xa5\x11\xe7\xe6\x57\x67\xc1\x26\x6f\xe3\x4f\x4d\x67\xbf\xba\x7a\x75\xf7\x7d\xd3\xa1\x65\x3c\x18\x3d\x7b\x63\xe9\x86\xe1\x5c\x47\x7c\x8f\x74\x26\x89\xc0\x70\xf3\xe8\x98\x0c\x57\xb0\xb4\xa9\x18\x92\xea\xf8\xd6\xd5\x33\x7f\xdb\x8d\x2c\x6f\xf3\x65\x67\x3e\xb6\x76\x66\xeb\xe0\x4c\x75\xd1\x30\x95\x9b\x8a\xa5\x79\xce\x7e\x74\x14\x8a\x47\x85\x34\x32\xe7\xd1\xec\xe8\x60\xda\xb0\x6a\xf2\xad\xe3\x40\xef\xc2\xb8\xcb\xb7\x8e\x6f\xb3\xcb\xb7\x8e\x12\xca\xb7\x8e\xf9\xd6\xf1\x0d\xca\xb7\x8e\x92\xe7\xa7\x10\x37\xcf\xb7\x8e\xcf\x28\xdf\x3a\xa6\x1d\x6c\xbe\x75\xdc\x43\xf9\xd6\x51\xf2\xfc\x14\xb4\xe7\xd4\x55\xd9\x89\xdf\x3a\x76\x61\xe6\x80\x7b\x18\x26\x32\xb9\x61\xf1\xbd\x46\x90\x1f\x18\x36\xc1\xb6\x4b\x57\x6f\xee\x95\xbe\xd9\xae\x33\x73\x8b\xa1\xa5\x10\x5b\xe2\x05\x96\xe9\x5b\x1e\x87\x00\xbf\x1f\x9b\xc8\x1b\x5f\xad\x96\xf6\x93\xbd\x71\xd0\x65\xf4\x68\xd5\x16\xb3\xcd\xc8\x18\x28\x1c\x5a\xeb\x8d\x58\x10\xc0\xe5\xe7\x6f\xe7\x04\x7a\x6c\x9a\x48\x0a\xbd\x00\x6e\xae\xb3\xa6\x28\x7f\xcb\xf5\xc0\x46\x15\xbf\x9e\x63\xeb\x1b\x33\x27\xee\xcd\x8f\x43\xee\xb7\xb7\x8a\x1c\x43\xa6\x57\x7f\xb7\xba\x1c\x75\x1d\x1f\xf8\x7d\xbe\x6b\xe0\x3b\x93\x51\xb5\xc9\xa3\x84\x9f\x80\x32\xb9\xf5\xed\xb5\xab\xe7\x9f\x1c\x30\xe5\xf0\x64\x1f\x23\x96\x2e\x04\x9d\x80\xea\x4a\x18\x2e\x81\x51\xc6\xe8\x8d\x08\x5f\xde\x49\xdd\x86\x90\x91\x65\xed\xed\x2f\x1c\x6d\xa4\x36\x22\x71\xa7\xc0\x4e\x3f\xe3\xcb\xf3\x85\xaa\xfc\x5d\x02\xb9\xde\xba\x7b\x04\xfe\x16\x41\x19\xc5\x57\xdc\x20\xa8\x38\x6b\x3a\xc7\x51\x77\x07\xec\xcd\x81\xe2\xde\x80\xbd\x35\x60\xee\x0c\xf8\xba\x65\x22\xe2\x45\xc5\xbb\x74\xd1\x2e\x55\xac\x2b\x6a\xa4\x8b\xbb\x25\x18\xd5\xf0\x03\x83\x6a\x9c\x09\xc7\xc4\x82\x8f\xe2\xec\xc8\x3b\x02\xda\x11\x53\x15\x51\xf8\x11\x10\x02\x20\x9b\xba\x03\x65\x53\xf7\x77\x56\xd9\xd4\x7d\x9d\xb2\xa9\x2b\xa6\x6c\xea\xbe\xce\x2b\x1f\xec\x2f\x52\x36\x75\x05\x63\xcb\xa6\xee\x30\xc8\xbc\x23\xde\xa1\xa9\x0b\xfd\x1c\x6e\x68\x8f\x0a\x3e\x62\x13\x33\x9b\x8a\xb0\x85\x09\xbb\x88\x14\x50\xfc\xdc\x84\xc5\x83\x4d\x73\x67\xb2\x5e\xf0\x4d\x0e\x5a\xe5\x8c\x00\xa0\x1a\x95\x5a\x4a\xd2\x0a\x27\x24\x8d\xb7\xbe\x39\xcb\x5b\xa1\x7a\x49\x8b\x7b\xf4\x7c\x5a\xd8\xca\x66\x2c\x6c\x36\x71\x8d\xb0\xac\x51\xab\x9a\x9a\x70\xd4\x76\x80\xed\x06\xde\x66\xa0\xed\x85\x68\xb6\x02\x6e\x39\x13\x23\x46\xc5\x1d\x32\x45\x60\x71\x55\x24\x8b\x8f\x73\xd4\x50\xa9\xe1\xe3\x0c\x8d\x4d\x04\x1f\x67\x74\xb0\xff\x33\xd9\x53\x3a\xeb\xac\x57\x69\x5a\xca\x84\x4b\xd7\x1e\x63\x3b\x40\x9f\x52\xfb\x99\xbd\xb0\x95\x2d\x83\x17\xe5\x2d\xf1\x5d\x8b\x40\xe1\x81\xbe\xa2\x69\x9d\x6f\x9d\x2c\x5f\x19\x5d\x02\x6c\xfa\x87\x91\x7c\xac\x4c\xd7\x49\x8b\xd1\xa1\xa9\xc1\x5b\x50\x67\x7f\x37\xfb\xbb\xd9\xdf\x15\x52\xf6\x77\x63\x72\xcc\xfe\x6e\x4f\xd9\xdf\xcd\xfe\xee\x0b\x94\xfd\xdd\xec\xef\x66\x7f\x37\xeb\xac\x17\x69\x5a\xca\xe4\x44\xfc\x5d\xa8\xf9\x31\xba\x6b\xb0\x86\xc7\xba\x06\xc0\x4c\x41\x2f\xba\xe6\x68\x63\xe3\xa9\x7f\x11\xf4\xf3\xb5\xc1\x30\x5b\x55\xf2\x96\x72\xd0\xf8\x89\xc6\xc8\xa8\x34\x5e\x61\xdd\x4b\x99\xe6\x9c\xb8\x6a\xc5\xbb\xaa\x8e\x38\x2e\xb0\x87\x2a\x5e\x0f\x0a\xf7\x4d\x1d\xe7\xe3\xb9\x2e\xa9\x8c\x4d\x01\x77\x46\xa5\x8e\x60\xb4\x1b\x2a\xc5\x64\xf3\x50\x6a\x26\x68\xd7\xd3\x31\x4e\x85\x6e\xd5\x34\x95\x5d\xda\x3a\x98\x6a\xb3\x93\xc5\xeb\x0f\xc6\x56\xb8\x76\xc1\x8c\xb9\x87\xba\xf4\xdd\x7d\x57\x86\x2a\xd5\x77\x73\xf1\x24\x3c\x96\x44\x9a\xb7\x44\x0c\x89\xdb\xc5\x70\xec\x08\x8c\x1b\xa1\x31\x23\x3a\xef\x4d\x2e\x58\x5c\xff\x60\x46\x60\x74\x3d\x83\xa9\x05\xd5\xf7\x09\xe6\xe4\x88\xed\x0d\x3c\x35\x83\xd4\xb6\x37\xae\xb4\x1f\xca\xd2\xaf\xea\x90\xc4\x2a\x0d\xbe\xb2\xad\x11\xcb\x1e\xa0\xd7\x70\x11\xb5\x57\x57\xb6\x04\x62\x03\xc4\x6a\x5d\xdb\xb4\x1d\x94\xd6\x9f\x6c\x84\x17\xab\x34\x93\xed\x9a\xc1\xad\xc3\xc6\x3b\x60\xc1\x33\x03\x9e\x86\x64\xed\x2b\x84\x2f\x16\xfd\xac\xb5\x4d\xe5\x4a\xf3\xe6\x02\x49\x03\x26\xb2\x45\x78\x50\x19\x3f\xed\xb2\xa9\x4c\x78\x73\x01\xa4\x1b\x74\x69\x83\x99\x99\x60\xf6\x2d\x26\xb2\xe1\x4d\x5d\xfb\x20\x57\x3b\x53\xcc\x41\x10\xff\xb4\x13\x9c\xb4\xc8\xdc\x95\xd5\xaa\x0b\xb6\x95\x41\xac\x43\xdf\x6f\xef\x82\x6d\x6b\x53\x7d\x39\x8f\x7d\x18\x50\xcb\x20\x33\xa2\x86\x41\xff\x6c\xcd\xd5\x95\x2b\xe5\x6d\xf2\xa0\x31\x2d\xac\xa9\xc2\xe2\xe3\xc2\x96\xd7\x7f\xf9\x99\x95\x02\xce\xa7\x4d\x3d\xa9\xbc\x99\xfd\xc3\x54\xa6\x2e\x93\x88\xc3\xd3\xd7\x5f\x6c\x62\xa8\x3f\x4c\x3d\x97\xed\xbc\x69\xc8\x46\xe3\x5b\x59\x2c\x33\xa9\x5d\x83\xf9\x69\x84\x41\x50\x03\x12\xd9\x13\xd7\x3e\x94\xb1\x03\xb0\xeb\x9e\xb1\xc6\x85\x76\xd5\x12\xdf\xb3\x24\x33\x4b\xd6\x47\x7b\xd7\x39\x5f\x7f\xb8\xba\x72\x75\x1f\x47\xbe\x72\xf3\x14\x61\xe4\xb2\x72\xb6\x0e\x32\x85\xc2\xbc\xbf\xa0\x2f\x97\x0a\x45\xe7\x5b\x3e\x4a\x94\xc6\xb9\x93\x46\x13\x01\x7d\x10\xd3\x74\xed\x82\x6f\xcd\x3c\x8a\x01\x69\x36\x17\xeb\xdf\xfc\x6c\xbf\x80\x08\xf5\x30\x3c\x27\xfb\x77\xd8\xda\xc2\xed\x0f\xb9\xa8\x76\x6e\xe3\xc4\x57\x1f\x90\xe2\xbf\x76\xb2\x74\x4a\xe8\xa5\xd2\x83\x0a\x78\xa9\x54\xd1\x9e\x6d\xbe\x68\xef\x8f\x04\xd1\x3e\xf1\x26\x14\x5f\x0c\x23\x0b\x2e\xbf\x10\x9e\xa2\x4f\x83\x5d\x00\x4f\xf1\x0b\xe4\x5e\x99\x30\x05\x1e\x59\xfc\xa5\x09\xe5\xa6\x05\x6b\x7f\x52\x1f\xde\xf2\x3c\x89\x70\xd7\x26\x92\x94\xb2\x5b\x33\x7f\x19\x08\xc4\xf9\x51\x8b\xf3\xda\xca\xde\x7b\xf6\xb8\x08\x87\xb6\x4f\x37\xd2\xff\xd5\x5c\x5a\xd9\x35\xd9\x71\x6b\x8f\xde\x3a\x12\xd7\x7c\x88\x87\x3c\x34\x28\x9f\xc5\x7e\x65\xc4\x51\x22\xf6\xe3\xcf\x3d\x56\xae\x88\xe5\x13\x30\x84\xfd\xe1\x1d\xd1\x1b\x57\xcd\xcc\x04\x7b\x11\x5a\x13\xec\xfc\xcd\xd7\x49\x95\x6e\xeb\xab\xca\xd5\xf3\x5f\x9b\x17\xc7\x3c\x54\x1a\xd3\x06\x27\x6d\xcd\x9e\x32\xde\x24\xde\x1c\x12\xcf\x26\xa6\xa8\xdd\xd8\xb6\xdb\x33\x3f\x02\x76\xfb\x14\xf4\xd9\xc0\xe7\x95\xff\xef\x19\xea\x1b\xff\x7e\x8d\xf3\xd9\x26\x74\xfc\x7f\x84\xef\xb9\x75\x8d\xfd\xbe\x7a\x16\x6b\x79\x2d\x65\xe9\x25\xa6\x67\x85\x6f\xdd\xdc\x3d\xfd\xd9\x8b\xec\xba\x60\xc2\x6a\x47\x74\x5f\x13\x68\x7f\xd9\xd9\xf6\xc6\xce\xfe\xb4\xf5\xc3\x95\xd5\xef\xe3\x7b\xeb\x46\xea\x75\xe9\x6c\xcc\xaa\x73\xf5\xfc\xa7\x7b\xae\xd4\x86\x17\xae\xf7\xe1\x59\x70\xcf\xfc\x85\x57\x45\xa1\x59\x98\xee\xd9\xdb\x5e\xfd\x75\x6b\x4d\xf7\xfc\x6b\x5e\xfd\xf9\xc3\xea\x44\x1c\xf0\x0b\x2b\xf3\xdb\x9f\x86\x7d\x51\xdc\xfc\x9b\xa9\x9a\x85\xf9\xb7\xed\xdf\x36\xcb\xd4\xbb\x53\x3b\xff\xee\x2f\x90\xec\xec\x49\xda\xf2\x10\x08\xe8\xff\xf2\xbf\x01\x00\x00\xff\xff\x07\x98\x90\x99\xb5\xaa\x24\x00") - -func kubedbCom_dormantdatabasesYamlBytes() ([]byte, error) { - return bindataRead( - _kubedbCom_dormantdatabasesYaml, - "kubedb.com_dormantdatabases.yaml", - ) -} - -func kubedbCom_dormantdatabasesYaml() (*asset, error) { - bytes, err := kubedbCom_dormantdatabasesYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "kubedb.com_dormantdatabases.yaml", size: 2402997, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _kubedbCom_elasticsearchesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x5b\x8f\xdc\xb8\xf2\xdf\xfb\x7e\x0a\x3d\xe4\x21\x09\x30\x9b\x9c\x0b\x0e\x12\xbf\x04\x3e\xb6\x77\xff\xce\xf1\xae\x07\x1e\x7b\x4f\x80\x83\x7f\x00\x8e\xc4\xe9\x66\x46\x2d\x6a\x49\x6a\x2e\x1b\xe4\xbb\x07\x2d\x8d\xfa\x32\xd3\x62\xfd\x8a\xa2\xba\xd5\x1e\xd6\x93\x3d\x2d\x91\x14\x59\xac\x1b\x8b\xbf\x12\xb5\xfa\x4d\x1a\xab\x74\xf5\x26\x13\xb5\x92\x0f\x4e\x56\xeb\xff\xd9\x1f\x6f\xff\x9b\xfd\x51\xe9\xff\x72\xf7\xa7\x6b\xe9\xc4\x9f\x7e\xb8\x55\x55\xf1\x26\x7b\xd7\x58\xa7\x57\x5f\xa4\xd5\x8d\xc9\xe5\x7b\x79\xa3\x2a\xe5\x94\xae\x7e\x58\x49\x27\x0a\xe1\xc4\x9b\x1f\xb2\x2c\x37\x52\xac\xff\xf8\x55\xad\xa4\x75\x62\x55\xbf\xc9\xaa\xa6\x2c\x7f\xc8\xb2\x52\x5c\xcb\xd2\xae\x9f\xc9\x32\x51\xd7\x6f\xb2\xdb\xe6\x5a\x16\xd7\x3f\x64\x59\x25\x56\xf2\x4d\x26\x4b\x61\x9d\xca\xad\x14\x26\x5f\x4a\xfb\x63\xf7\xf3\x8f\xb9\x5e\xfd\x60\x6b\x99\xaf\x5f\x14\x45\xd1\xf6\x28\xca\x4b\xa3\x2a\x27\xcd\x3b\x5d\x36\xab\xaa\x6d\xf4\x22\xfb\x9f\x57\x9f\x7f\xbd\x14\x6e\xf9\x26\xfb\x71\xfd\xc2\x8f\x77\xdd\xb7\xb5\x1d\x76\x5d\xfc\xb6\xf3\x17\xf7\x58\xcb\x37\x99\x75\x46\x55\x8b\x17\xaf\x3b\xe1\x1a\xfb\x63\xbd\x14\x56\xee\xbc\x7e\xd5\xfe\x99\x7c\xbb\x9f\x8e\x1f\x5f\xcc\xc5\x4e\x5b\x6f\x17\x72\xa7\xa1\x42\xb8\xf5\x7f\x17\x46\x37\x9b\x89\x69\xbf\xbc\x7b\xfc\x69\xd6\x72\xe1\xe4\x42\x1b\xd5\xff\xff\x62\xfd\x9e\xb0\x4e\x1b\xf9\xf4\xff\xcd\x94\xae\xff\x23\xea\xda\xe6\xba\xe8\x7f\x13\xed\x2a\x64\x59\xb7\x98\x1f\x76\x67\xbb\xfd\x7b\xa9\xac\xfb\xc7\xcb\xdf\x3e\x29\xeb\xda\xdf\xeb\xb2\x31\xa2\x7c\xb1\x4e\xed\x6f\x76\xa9\x8d\xfb\x75\x3b\xd2\x8b\xac\xff\x41\x55\x8b\xa6\x14\xe6\xd9\x6b\x3f\x64\x59\x6d\xa4\x95\xe6\x4e\x7e\xab\x6e\x2b\x7d\x5f\xfd\xa4\x64\x59\xd8\x37\xd9\x8d\x28\xdb\x39\xb7\xb9\x5e\x4f\x4c\xdb\x66\x2d\x72\x59\xac\xff\xd6\x5c\x9b\x27\xee\x7b\xea\xa7\x5b\xa8\x37\xd9\xff\xfd\x7f\x3f\x64\xd9\x9d\x28\x55\xd1\x4e\x78\xf7\xa3\xae\x65\xf5\xf6\xf2\xe3\x6f\x7f\xb9\xca\x97\x72\x25\xba\x3f\xae\x3b\xd6\xb5\x34\x6e\x33\x8b\x1d\x3f\x6e\x76\xc2\xe6\x6f\x2f\x16\xb9\xa3\x76\xfa\xa8\x87\x76\x77\x44\x4f\x87\xfa\xdd\xf0\xc3\xde\x5f\xb2\x6c\x25\x1e\x3e\xc9\x6a\xb1\x66\xa7\xbf\xfd\xe5\xd9\x6f\xb5\x70\x4e\x9a\xea\x4d\xf6\xbf\xff\x25\x2e\xfe\xf8\xf7\xff\xf8\xaf\x0b\x71\xf1\xc7\x7f\xbd\xf8\xef\xff\xfe\x9f\xff\xf5\xf4\x8f\xff\xf4\x3f\xfe\xc3\xb3\x77\x0e\x0e\xb2\xff\xb3\xbe\xfe\x3f\x32\x77\x9b\x3f\xf7\x9b\x8d\x1a\xb7\x68\xdc\xf2\xb2\x6c\x16\xaa\x7a\x3e\xfa\x81\xde\xb2\xec\x5a\xe4\xb7\x4d\xbd\x5e\x8e\xa2\x29\x5f\x7c\xf4\x50\x47\x6d\x67\x7f\x34\xe6\xc5\x0b\xd4\x4b\x6b\xca\x75\xe5\x84\xaa\xa4\x39\xfc\xb3\x67\xb0\x3d\xad\xc4\xc3\x3b\x5d\x55\x32\x5f\x73\xd6\x40\x2f\x59\x76\xa3\xcd\x4a\xb8\x37\x99\xaa\xdc\xdf\xfe\xea\xed\x6a\x2d\xb8\x16\xd2\x1c\x7c\xa6\x36\xf2\x46\x3d\x04\x0e\xf5\xe0\x6a\xf6\x74\xfd\xe7\x90\xd9\xbb\x6e\xf2\x5b\xe9\x5e\xf9\xd4\xe5\x46\x57\x1f\x1e\xd6\xf2\xea\xb9\x80\x80\x5a\x5f\xe4\x07\xbf\x3c\x4d\xfd\xee\xcf\x03\x53\x5f\xea\x5c\x94\x21\xb3\x27\xee\xed\x93\x16\xfb\x7b\xa9\xf3\xdb\xab\xb5\x8e\x1c\x1a\x20\xd5\xd6\x9a\x6e\xec\xd7\xf5\x38\x07\x7f\x07\x56\xa4\xed\x4a\x18\xa7\xdc\x00\x17\x6d\xfa\xda\x2e\xca\x5f\xfe\x4c\xf6\xe8\x5b\x98\x35\x19\x29\x8a\xcf\x55\xf9\x48\x8f\xfd\x5a\xeb\x52\x8a\x6a\xf0\xb9\xbb\xb5\xb1\x25\x3f\xbe\x1f\x39\x0b\x46\xfe\xde\x28\x23\x8b\xa1\x66\x2e\x36\x1d\x79\x19\x6a\x80\x63\xb2\x5e\x59\xbc\x57\xf6\x76\xcc\x8a\xe7\x22\x5f\xaa\x6a\xf1\x8b\x2e\xc6\x2f\x7b\xa1\xec\xed\xaf\x07\xd4\x7c\x50\x43\xdf\xbe\x7c\x1c\xdd\x4e\x24\x76\x7e\x6e\x0b\x05\x35\x12\x8b\x41\x69\xbe\xea\x97\xc1\xfb\xc0\xb7\x2f\x1f\x47\xf1\xdd\x4f\xea\xa5\x65\xd3\x13\xc2\x77\xf1\xf6\xab\x95\xb9\x91\x2e\x0a\xdf\xd9\xa5\x30\x32\x42\x4b\xf4\x1a\x6d\x07\x3d\xfc\x48\x3f\x98\xd0\x75\xca\x65\xbd\xbc\x19\x5c\x02\x64\x91\x56\xba\x52\x4e\x1b\xcf\x13\x59\xa6\x9c\x5c\x79\x1f\x00\xe7\xbe\x7f\x4c\x18\x23\x1e\x3d\x9a\xc5\x2d\x67\xb3\x15\x7b\xde\xf3\xed\x05\x78\x50\x5d\x53\x5f\xe4\x8d\xaf\x25\x64\xd1\xb2\x01\x67\x2b\x68\x54\x00\x9b\xad\xa9\xb1\xc3\x9e\x07\xd8\x17\xbd\x67\x7a\x6e\x0c\xde\x0f\xaa\x2a\x86\x87\x79\x44\xf3\x28\x36\xff\x9d\x29\xd3\x9c\x8d\xa1\x95\xeb\xea\x46\x2d\x7e\x11\xf5\x18\xde\x29\xe4\x8d\x68\x4a\x47\x19\x5a\x71\xad\x62\x52\x38\x03\xd2\x1b\x65\x9f\x2c\xbb\x95\x5e\x96\xde\x1d\x38\xc9\x41\x59\xab\x7e\xfc\x73\xd5\x11\x3a\x63\xbb\xdd\x53\xf3\xd6\x11\xa5\x6c\x76\x5b\x04\x3e\x88\x62\xd4\x8e\x2e\xd6\xd3\x48\x3c\xb1\x1e\x18\xa0\x71\x89\xfd\x87\x69\x5c\x4a\x2a\x40\x9f\xaf\xeb\x2e\x9e\x3d\x56\xe2\xd1\x5b\xd5\xaa\x51\x9b\xd4\xa8\xbb\xd1\x9a\x2c\x9a\x9e\xa8\x74\x21\x2f\x9b\xeb\x52\xd9\xe5\xd5\x39\x0b\xfa\xd8\xbe\xf9\x5b\xe7\x8c\xba\x6e\x9c\xff\x3b\x77\x4f\x51\xb0\x79\x89\xf7\xcd\x80\x93\xd6\x72\x5a\x28\x9b\x17\xfa\xbe\xba\x17\xa6\x78\x7b\x39\xe8\x24\x27\x9d\xd4\x8d\x5d\xc9\xb2\x20\xf6\x0d\xb7\xcd\x6c\xf0\x28\x65\x98\x18\x6a\x6f\x33\xec\x4b\x48\xff\xb0\x5b\xc7\xf4\x50\xd6\xb2\xe9\x66\x1c\xa0\x1a\x24\x55\x4e\xf6\xfd\xe9\xf5\xf5\x8c\x76\xc7\x75\x3f\x4d\xc4\x6c\x9b\xd3\x1d\x2a\x36\x11\x34\xfa\xac\x8d\xb8\xdd\x29\xab\xbd\x9a\x2f\xb8\xed\x7e\x76\x4e\xcc\xca\xfd\x30\xe2\x71\x32\x6a\xd0\x1d\xcf\x5c\x23\x1b\x92\xab\xda\x3d\xbe\x57\xa3\xbc\xe0\x95\x2c\x54\xb3\x1a\x1f\xf0\x50\x7f\xc8\x4f\x6a\xa5\x06\x0f\x7f\xc0\x96\xc8\x6f\xbe\xc9\x67\xe0\xf3\x97\xcd\x59\x1e\x86\x38\x61\x16\xd2\xfd\xf3\x9f\xbf\xce\x28\x06\x78\x7f\xaf\x8a\xd9\x0c\x87\xe6\xbe\x52\x3e\xfc\xd6\x9a\xad\xdf\x8f\x63\xd2\xb9\x73\xb3\xb5\xbe\x53\x84\xad\xa5\xa9\x9d\x90\x9b\x52\xe7\xb7\xe3\x02\xaa\x6d\x62\x57\xa4\xc3\x9b\xa7\xb6\xbe\x7d\x1b\x1d\x51\x24\xbf\x7c\x91\xcb\xcb\xb5\xf1\x6f\x9d\xac\xdc\xd8\x13\xd8\xf3\x3d\x73\xaf\x8b\x28\x0b\x77\xbc\x93\xd1\x6e\xc0\xc1\xab\xae\xdc\x17\x59\xeb\x51\xfc\xae\x8c\xcc\x9d\x36\xc0\xb7\x92\x93\x56\x6b\xab\x22\x35\x75\xa7\x28\x47\x36\x4a\x1c\x7e\x3b\xe6\xe0\x25\x28\x1b\xeb\xa4\x19\x77\xaa\x29\xab\xa2\xd6\xaa\x72\x5e\x61\x0d\xee\xb9\x19\x9d\x46\xd2\xf3\xbf\xf9\xf0\xe1\x0d\x32\xec\xa9\x90\x6b\xb3\xd4\xd6\xf9\x22\x16\xc8\xd2\x44\x99\x50\x37\x5e\x9c\x02\xa2\x64\xc4\x4c\x29\x3b\x32\x4c\x9d\x2f\x45\xfd\xb6\x71\xcb\xf7\xca\xe6\xfa\x4e\x22\x32\x80\xb2\x73\xfa\x26\xaf\x86\xd3\xff\x78\x0d\x46\x52\x6b\x6d\xf2\xbd\x70\x9a\x0c\x7d\x60\xad\xfd\x3e\x56\xca\x3d\xad\xde\xc7\x6a\x2d\x86\x84\x3f\xa8\x31\x3f\xc7\xb0\xd6\xc6\x89\x72\x36\xce\x53\x32\xd4\xfb\x87\x5a\x37\xfb\xb2\x5d\x9d\xc9\x45\x97\xfa\x7d\x68\x16\x2f\xd6\xdc\x38\xf8\xdb\xee\x20\x43\x45\xdf\x4a\x37\x95\x57\x4b\x90\x5f\x58\x8d\x53\xfe\xb3\x52\xd9\x6b\xae\x35\xe3\xfd\xfa\x51\xda\xea\xe2\x69\x0c\xa1\x2b\x5a\x6f\x1c\xa1\x2e\xca\xf1\xae\x14\x6a\x30\x38\x08\x29\xb7\x75\x03\x67\xe6\x58\x6c\xc6\x1c\x3c\x8b\x4b\xed\x74\x35\x3f\xa7\xb2\x38\x42\x7a\xce\xba\x93\xe0\x79\xd3\xc6\xdd\x6b\x13\x21\xc2\x36\xbb\xdc\xae\xb3\x49\x8f\xaa\x8d\x5e\xff\x36\xdc\xc5\x6c\x8f\xa2\xf7\x2e\xd9\x1d\xa6\xa8\x87\xd1\x64\x22\x59\x48\xa3\xe0\x28\x03\x1e\xe5\x8e\xa2\x23\x28\x0b\x6c\x4b\xcc\xc3\xc4\x8e\xb0\x13\xe4\x2d\xf1\xce\x92\x9f\x0f\x0e\x3b\x55\xde\x12\x76\xbe\xfc\xbc\x17\xd6\x14\xe0\x07\x9f\x1d\xd1\x59\x65\xbb\xcf\x92\x07\x96\x5b\x62\x1c\xfb\xef\xbe\xe0\xf7\x0a\xb6\x84\x18\xe2\xbb\xed\xc2\x93\x88\x64\xa4\x3d\x6f\x9c\x92\xd8\xfb\x4f\x43\x73\x02\x24\xf2\x6c\xe9\x7c\x65\x02\x9e\x85\x33\xae\x9f\x2c\x20\x33\x67\x4b\x41\xa2\x28\xe3\x67\xeb\x8c\xee\x91\xbb\xfb\x33\x66\x2e\xcf\xf3\x01\x32\xb6\x77\x96\xa4\x73\x16\x94\x11\xb4\x33\xc0\x40\xc6\x0f\xc8\x12\xda\x52\x30\xef\xb3\x32\x87\x22\xf4\xc7\xcb\x26\x1a\xdd\x61\xd8\x56\x83\x73\x8d\x9e\x8f\x8f\xb5\xd3\xf8\x46\xc0\x5c\x14\x3b\xa3\xf1\x2e\xae\xf7\x3d\x2b\xc7\x64\x30\x27\x83\x99\x7c\x21\x19\xcc\x1d\x59\x69\xee\x54\x2e\xdf\xe6\xb9\x6e\x2a\xf7\x55\xdf\x4a\xc0\xcc\x63\xa6\x76\x37\x85\x92\xd5\x24\xf9\xaa\x59\x26\x1f\x6a\x65\x5a\xf4\x9e\x2b\x99\xeb\xca\x9f\xc8\xb6\x25\x04\xc1\xe2\xd0\xb8\xf0\x9d\x88\xef\xc1\xc9\x32\x74\xa1\x5d\x04\xf3\x4a\xb4\xa4\x5a\xe0\x36\x77\x17\x47\x0a\x0d\xa0\xfd\xde\xe8\xeb\x47\x37\x2a\x7a\xd9\x41\x6a\xcd\x27\x78\x69\xe4\x42\x59\x17\x21\x39\xc5\xc9\x4a\x54\x63\x53\x84\xa3\x5c\x50\xee\x23\xb2\x47\x48\x93\xe9\xe6\x8e\x08\xd8\x86\x72\x9b\xb9\x1e\x15\xa8\x8d\x75\xae\xbf\x12\x8b\x08\xc8\x1c\xf2\x71\xfd\xfb\xe8\x76\x66\x08\x74\xa0\xf5\xd8\x93\xe0\x74\xba\xfe\x44\x47\x41\x27\x68\x19\x7a\xf0\xd7\xb1\xd8\x05\x36\x17\xa5\xfc\xf8\x79\x06\x1b\x77\x21\x9c\xbc\x17\xe3\x05\x7b\x6d\xb4\xeb\x60\xbb\xde\xeb\x95\x78\x89\xae\xc7\x6e\x30\x31\x7b\x37\x78\x5b\x7e\xa8\xc4\x75\xe9\x37\xb9\xc0\x89\x70\xda\x88\x85\x8c\x02\x0e\xf5\xd4\xd6\x65\x0c\xb9\x66\x1f\xad\x93\xe3\x6f\x20\x75\x7a\xf4\x28\x78\x3f\x4f\xbb\x66\xd8\x82\xec\x59\x6e\xf8\x89\xf6\x9b\x83\xe5\x87\x37\x8a\x32\xdb\x03\xda\x84\x5f\x71\xb8\xfb\x84\x5f\xb1\xf3\x98\xdf\x90\x8a\x05\x3d\x11\x11\x68\x8c\xde\xad\x9d\xac\xd4\xa3\x32\xdd\x66\x97\xd0\x72\xd6\x6a\x35\x9a\xae\xd8\x6d\xaa\x85\x7c\x9e\x9c\x99\x9a\xeb\x51\x09\x97\x77\xb6\x5e\x4a\x23\x67\x93\x61\xb5\x31\x24\x4a\x95\x3f\x8e\x4e\x8f\x7a\xd6\x5e\xc4\x05\xa6\xce\x83\x23\xe6\x6e\x79\x0e\x75\x09\xf6\xf0\xfe\x5c\xeb\xe2\xab\x5c\xd5\xa5\x38\x1c\x9b\x42\x30\xa9\x8d\x2e\xcb\x71\x57\x04\x45\x55\x69\x27\x66\x7d\xdf\x94\xce\x7a\x3e\x80\x93\xbe\x4b\xaf\x65\x1e\x9e\x63\xae\xef\x12\x34\x07\x37\x6d\x31\x06\xaf\x2e\x82\x15\x88\x2e\xe4\x5b\xa0\x3d\x4e\x9b\xd9\x13\x4a\xb4\x34\x46\x16\xef\x9b\xf5\x8c\x3e\xa1\xc0\xab\x6a\xf1\x71\x51\xe9\xcd\x9f\x3f\x3c\xc8\xbc\xa1\x6e\x6b\xf6\xc4\x38\x81\xe4\x9f\x3f\x76\xe3\xc5\xcf\x3b\xc2\x7a\xc9\x5a\xac\x6e\x97\x2f\xb7\x08\xe3\xcc\xec\x06\xd6\x31\xec\xb8\x81\x76\xc4\x3c\x96\xed\x29\x38\xb1\x21\xeb\x6a\x39\x18\xe1\xf8\xd9\x14\xa3\x3b\xbe\x13\x65\x13\x32\x49\x81\xeb\xd2\xd1\xa8\x11\x73\x0f\x46\x77\x29\x24\xa9\x23\x63\x1e\x0a\x6f\xdf\xe9\x17\x95\xf9\x62\x50\xea\x55\x16\x3c\x2f\xed\xee\x7c\x2a\x4f\x92\x36\xe6\x73\x4a\x1b\x93\xfd\x7a\xda\x98\x87\x5f\xe4\xcd\x4b\x40\x67\xf7\x52\x2d\x96\x40\xc6\x54\x4f\x61\xb9\x3e\xfc\x4c\x1f\xde\xe2\x5e\xec\x58\x26\xe0\x0b\xdd\x87\x43\x0f\x33\xa7\x95\xb3\x72\xfd\x67\xc6\xb3\xff\xb8\xc2\x72\x6d\xda\x5e\xc9\xb2\x45\x9a\xf8\x2a\x0d\x2e\x05\x98\x22\x23\x99\x81\xc3\x94\xb4\x0d\x4c\x49\xdb\xf8\x28\x99\x81\x03\x94\x36\x26\x44\x69\x63\x52\xef\x9c\xc3\xc6\x0c\xe8\x8c\xd7\x0d\x67\xca\x2f\x5e\x5a\x18\xb0\x0d\x05\x7d\x02\xfc\x68\xad\x8b\x14\xc3\xdb\x9b\x86\xf5\x6a\x4c\x6d\xc1\xb5\x25\x6e\xfb\xe5\xe7\xed\xd1\x70\x81\x3f\xce\x6c\xcc\xc6\x48\xc2\x31\x5a\x2a\x0b\xd7\x54\xd9\x78\x11\x3c\x4e\x63\x45\x19\x40\xb8\xe6\xca\xc6\x69\xaf\x2c\xc6\xe8\xc7\x68\xb1\x6c\x84\x26\xcb\x02\xb5\x59\x36\x46\xa3\x65\x63\xb4\x5a\x36\x6a\xae\xda\xdd\xfd\x69\xa7\x74\x36\x87\xf8\x67\x5e\x87\x69\x14\xb7\x8c\x34\x07\xd8\x2f\x56\x7d\xfe\xc0\x31\xec\xf4\xe0\x99\x09\xe3\x08\xa7\x6b\x5d\xea\xc5\xe3\x3f\xb8\x82\x33\xf0\xae\x2e\x77\x8f\x5e\xec\x8e\x30\x85\xf2\x28\xba\x78\x6e\xa0\xbc\xf2\x78\xde\xa4\xb6\x60\xa0\x71\x96\x62\x79\xc3\x94\x42\x06\x30\xa5\x90\x81\x8f\x4e\x11\xcb\x0b\x31\xaa\x62\x18\x54\x23\x4d\x06\xe6\x24\x05\xbc\x14\x62\x40\xb1\x77\x46\xd0\x2c\xf0\x57\x3b\xc8\x60\x62\x8f\x8d\xab\xf5\xb9\x46\xd2\x64\x4a\x9c\x15\x4f\xaa\x9c\x4a\x31\xa5\x14\x53\xc2\x28\xc5\x94\x4e\x31\x80\x14\x53\x4a\x31\x25\x9a\x52\x4c\x29\xc5\x94\x76\xde\x4a\x31\xa5\x8e\x52\x4c\x29\xc5\x94\x52\x4c\x29\xc2\x40\x3b\x4a\x31\x25\x88\x52\x4c\x89\x7a\x27\xc5\x94\xc0\x21\xa7\x98\x52\x8a\x29\x9d\x4d\x4c\x09\x7a\x4c\x98\xc5\x8c\xa0\xa7\x64\x75\x37\x72\x30\xb8\x3e\xc5\xe0\x2a\x19\x5c\xd5\x6a\xa8\xf8\x2d\xfe\x64\x34\x10\x02\x63\x57\x75\xef\xaa\x41\xfc\x43\x3e\xc2\x10\xd1\x7c\x53\x85\x65\xa0\x04\xc8\x16\x1c\x71\x34\xb0\x03\x1e\xf2\x68\x06\xe3\x51\xec\x12\x57\x0c\xa1\x0a\x9e\x29\x7e\x78\x38\xf9\x7c\x5e\x08\xc1\xc6\x0f\x58\xb1\x00\x3c\xfc\xc9\x15\x07\x0f\xfd\x9e\xb9\x6e\x61\x70\xef\xfc\xf5\x0b\x84\x78\x0f\x58\x42\x36\xac\x7b\x40\x1f\x7c\x28\xf7\xc9\xb9\x84\x05\xdc\xce\x64\x92\x0e\xff\x26\x09\x7b\x2f\xbd\x1a\x61\x0f\x3f\x8c\xc2\x6e\x55\xc3\xe5\xe7\x58\x3d\x22\x26\x62\x0b\x76\x79\xd9\x94\xe5\x55\xcb\xd3\xc7\x83\x68\x8b\x6c\x2f\xc6\x9c\x92\x4a\xb9\x77\xbd\x78\x3e\xde\x84\x50\xae\x03\xdc\x65\x47\xac\x1d\x8b\x3b\x4b\xb9\x5e\xad\x44\x05\x6c\xb8\x53\x0f\x94\xf0\x7d\x98\x83\x64\x5f\xdc\x65\x48\x57\xb6\x6c\x05\x3d\xa3\x31\xad\x63\x5e\x52\x47\x21\x31\xd7\x20\x8f\x29\xbc\xbb\x2c\x2c\xbc\x1b\x1c\xa5\xe2\x29\xd7\x91\x9d\xf1\x15\xed\x6e\x87\x1c\x75\xdb\x51\x58\x21\x1d\x5e\x20\x35\x28\xcc\x97\x6a\x93\x45\xed\x71\xe6\xb5\xc9\x52\x61\xae\xa9\xfa\x4b\x85\xb9\x76\x88\xef\xeb\x75\x94\xd4\xd4\x33\x4a\x6a\x2a\xe4\x15\xe6\x6d\x6e\xca\x73\x0c\x18\x03\xcb\xe4\xc6\xec\xc6\xc9\xcc\xee\x8d\x59\xc9\xd8\xac\x21\x1b\x95\xbb\x71\x82\x36\x4d\xc8\x86\x09\xd9\x2c\x6c\x26\xae\x8d\xbc\x51\x0f\x93\x39\x20\x10\xba\xf4\xfe\x78\xd2\x0a\xf2\x8f\x46\xa3\x6f\x7f\xb2\x10\xd0\x6e\x83\xd0\x4c\x6e\x82\x53\x1d\xa4\x73\xd4\xb6\x4b\x75\x23\xf3\xc7\xbc\x04\x46\xcc\xe3\xaf\x5a\x5b\x77\xe5\x84\x01\x13\xf3\xf8\xcc\x2b\x1f\x86\xb1\x77\x63\xb4\x9f\x71\xc2\x3c\xbb\x34\xff\xe4\xd1\x00\x7d\xbd\x74\xae\xfe\x19\x29\x5b\xda\x53\xd8\x84\x2f\xb5\x65\xf4\x91\x85\x4f\xdc\xfa\x7b\xfe\x4d\x8a\x82\x08\x6d\xbe\xa4\xa3\xe7\xe3\x85\x58\xa7\x59\x94\xbc\xb8\x23\xf7\x1a\x9e\x9d\x06\xda\x7b\xfb\x2f\xb5\x9f\x18\xb4\x4b\x8f\x96\x9b\xc6\x2d\x23\x1b\x3c\xfd\xb5\x46\xe5\x74\x4f\xa2\x7a\xfc\xcc\x72\x04\xdb\x5c\x27\x76\x0e\xf5\xf3\x77\x03\x18\xeb\xe1\xe2\xb6\xb9\x96\xa6\x92\x4e\xda\x0b\x55\xb9\x0b\x6d\x2e\xba\x66\xde\x64\xce\xb0\x58\xc0\xe6\x4b\xc9\xdd\x8c\x47\xcb\xb6\x5f\xaf\xe1\x94\x1a\xc0\xe5\xf5\x95\xce\x6f\xbf\x23\x1d\x90\xb8\x1e\xa0\xf9\xb1\x22\xf3\x85\xda\xc8\x2b\xa7\xbd\xb5\x64\x77\x1f\x4e\x66\x68\x32\x43\x93\x19\xfa\x92\x92\x19\x4a\x50\x32\x43\x9f\xf7\x93\x14\xf2\x0e\x25\x33\x74\x70\x54\xc9\x0c\x4d\x5c\x4f\xd1\xfc\x58\x71\x9a\xe4\xc8\x2c\x2b\xd5\x9d\xac\xa4\xb5\x97\x46\x5f\x47\x8f\xca\xe2\xd6\x6a\x48\x2e\x37\xd3\x4a\x9d\xe7\x45\x31\xee\x0d\x07\xa1\xca\xc6\xc8\xaf\x4b\x23\xed\x52\x97\xe0\xe7\xf3\xef\xa0\x73\xb7\x2f\xcb\x52\xe6\x2f\x36\x4f\x3a\x06\x2c\x5c\x90\x65\xcc\xe6\xa8\x50\x8b\xf8\xa8\x29\x03\x41\x56\xf0\x51\xb3\x50\x98\x96\x2f\xdf\xea\x1d\x71\xdf\x95\x63\xed\xf2\x2c\xdd\x80\x29\xe6\xe9\x7a\xa6\x9e\x0f\xd5\xf1\x81\xfa\x3d\x92\x6e\xe7\x5a\xb3\x93\x5f\x99\x81\xcd\x06\x26\x53\xaa\x4a\x39\x25\xca\xf7\xb2\x14\x8f\x57\x32\xd7\x15\x5a\x91\x64\x7a\x65\x51\x4b\xa3\x74\x31\xb3\x41\xd9\x26\xcf\xa5\xb5\xb3\xd3\xac\x4c\x0f\x64\x86\xba\x35\x49\xa1\x67\x34\x17\x11\xe1\xd4\x4a\xea\xc6\xcd\x6a\x23\x32\x3e\x21\xfa\xe5\xf7\xf5\x3c\xc7\xbc\x0d\x14\x90\x48\xd7\x25\x3a\x5f\x32\x76\x4c\x08\xbe\x14\x7f\xcb\xac\x85\xc4\xc7\xcb\xc9\xb2\xcf\xd6\xcd\xcf\xef\xa3\x27\xbd\x4f\x54\x1b\xed\x74\xae\xe1\x34\x35\x66\x07\xbc\x14\xd6\x3d\xce\x43\x24\xc7\x34\xc9\x6c\x46\x8a\x42\xa5\x68\xc4\x41\x4a\xd1\x88\x14\x8d\xf0\x52\x8a\x46\x8c\xed\x2d\x45\x23\x92\x1f\x00\x52\x8a\x46\xa4\x68\x44\x8a\x46\x90\x34\x43\xdd\x9a\xa4\xd0\x33\x9a\x8b\x88\x38\xf3\x68\x44\x7f\x35\x16\xaa\x65\xc1\xd9\x15\xa5\x5a\x29\x24\x2c\x91\x8d\x44\x09\x65\x73\x60\xc0\xa5\x4a\x69\xcf\xff\x4b\x18\x0f\x5b\x99\x37\x46\xb9\xc7\x77\xba\x72\xf2\x01\x10\x3b\x3c\xce\x10\x65\xa9\xef\x2f\x8d\xba\x53\xa5\x5c\xc8\x0f\x36\x17\xa5\x40\x01\xaf\xf9\x77\xde\x72\x51\x8b\x6b\x55\x2a\x7c\x25\x02\x00\xf6\x8a\xb3\x77\xa1\xb3\xac\x30\x68\xfe\x6f\x36\xdb\xaf\x60\x67\x3d\x3f\x31\x21\xb8\x7c\x5c\xde\xab\x8d\xce\x7f\xd1\x4d\x05\x6a\x6e\x76\xac\x4c\x14\x9f\xab\xf2\xf1\x8b\xd6\xee\x27\x55\x4a\xfb\x68\x9d\x04\x91\x78\xb8\x5f\x62\x9a\xea\xad\xfd\xd9\xe8\x06\x64\x91\x1d\x0d\xf7\xb7\xbf\x4e\x62\xd2\xb5\x23\xfa\x55\x57\xeb\xaf\x9f\xf0\x9b\xbf\x59\x09\x82\x69\x4c\xff\xc9\x56\x7e\x52\x55\xf3\xf0\xb9\xbd\x29\x3c\x1d\xec\xbf\xbc\x93\x6c\x20\x3e\x1e\x02\xa4\x46\x6e\xd2\x8e\xe8\xa0\x7d\x65\xca\x0e\x1a\x98\x2b\x82\x3a\x60\x8a\xb1\x7b\x55\x15\xfa\xde\x4e\xcc\x17\x8b\x95\x15\xef\x8c\x2c\x64\xb5\x76\x89\xaf\x6a\xce\x8d\x8e\x80\x29\x7e\xd9\xdd\xe4\xe8\xa7\x9b\x0d\x3f\x71\x4f\x93\xd9\x6d\x4e\x18\xd7\xd4\xe9\x14\xe2\x05\xcd\xd1\xf8\x48\xa7\x10\x00\xa5\x53\x88\x74\x0a\xb1\xf7\x42\x3a\x85\x40\xe8\x15\xc4\xff\xd2\x29\x04\x4d\xe9\x14\x62\x56\x9a\x35\x9d\x42\x78\xe9\x1c\xa5\xd0\x5c\x44\xc4\x99\x9f\x42\x58\x57\x28\x20\xfe\xcb\x89\xe0\xb4\x4d\x7e\xae\x10\x64\x52\x4e\xb3\x4e\x9a\x95\xaa\xda\x78\xf5\x2f\xd2\x5a\xb1\x90\x18\xca\x2e\x83\x45\x0f\x74\x11\x1f\xd2\xcc\xd1\x75\xce\x79\x13\x73\xa7\xcb\x66\x25\xdf\xcb\x3b\x05\x1d\x26\x4d\x96\x8d\x5a\xb4\x23\xe0\x40\x1f\xb3\xa5\xc7\x84\x09\x96\xbc\xfc\xc7\xed\xb7\x42\x8f\x9f\x16\xf1\xb3\x63\x90\x36\x1c\x7e\x4a\xfe\x58\xad\x07\x30\x29\x7b\x74\x3d\x18\x5d\x8b\x05\xe3\x5c\x6b\x5e\x7c\xb8\x3d\x5d\xe0\x75\xc0\xc1\xa2\xb4\xcd\xf5\xa4\xeb\xf0\xd4\xfe\x87\x87\x1a\x8e\xd5\x4e\xba\x5b\x37\x9c\x77\x06\x9b\xf5\x5e\x9b\x5b\x55\x2d\xde\x2b\x60\xea\xe0\x49\x9b\x63\x4d\x1b\x08\xda\x13\x95\x31\x30\x9c\x27\x47\x68\xa1\x91\x57\xfe\xb5\x0d\x56\xd4\x95\x19\x21\x0b\x3d\xb5\x81\xa3\x2e\x2c\xc6\x67\xc4\x34\xb9\xd3\xc8\xf1\xb9\xf8\x17\x4c\xf8\xb1\x4c\xe6\x3a\x85\xc5\x31\xf9\x51\xcc\xc0\xa8\x62\x40\x04\x33\xa8\xa7\x10\xe4\x0c\x56\xec\x92\x1b\xb9\x0c\x88\x5b\x72\xa3\x96\x9c\x98\x25\xff\x9e\x10\x23\x52\xc0\x8a\x13\x84\x45\x09\x82\x62\x04\x51\x22\x04\xbc\x28\xe5\xa4\x06\x08\x18\x7c\xe0\x99\x14\x9c\x98\xd6\xac\x64\x6b\xe2\xd0\x96\x4e\xcd\x42\xf0\xa3\x20\x44\x65\x32\xad\x06\x5f\x49\xa6\xd5\x6e\xe3\xc9\xb4\x4a\xa6\x55\x32\xad\x76\xe9\xbc\x14\x57\x32\xad\x76\x69\x56\xb2\x35\x71\x68\x4b\xa7\x66\x21\x56\x98\x8c\x78\x0c\x06\x5c\x44\x19\x11\xb1\xbd\x38\x4c\xcd\xb0\xb9\x18\x7a\x9c\xc9\x38\xb8\x9e\x80\x97\x91\x9b\x26\xc8\x39\xd5\xc5\x37\x13\x68\xe5\x71\x16\x0c\x95\x40\xac\x25\x60\x5a\x75\x0c\x4e\xe0\x5b\x73\x93\x57\xcd\x67\x5a\x70\x93\xe7\x3f\xc1\x56\x1b\xc7\x62\xe3\x26\x42\x30\x2c\x35\xd4\x4a\x63\x4d\x1c\xaa\xfb\x60\xbd\xc7\xd7\x79\x6c\x7d\x37\x5a\xd7\xe1\x96\x18\x63\x64\x28\xfb\x41\xaa\x13\x66\xa3\x80\x64\xbb\x69\x44\x2e\x2b\xb5\x6e\x9a\x21\x70\x13\xe9\xa6\x19\x05\x6c\x07\x9f\x5c\xfb\xbc\xc2\xbd\x7f\x9a\x4d\xca\x4b\x77\x9b\x82\x2d\xa1\xa1\x56\xba\x90\x57\xb2\x94\xb9\xf3\x57\xe4\xe6\xdf\x1a\x07\x17\x19\x1a\x65\x6d\x94\x36\xca\x9f\x0f\x86\x4e\x21\x36\x7d\x7d\x8f\xef\x4a\x61\x2d\x75\xd9\x0a\xfa\x54\x1c\x82\x2d\xf9\x27\xc9\x3f\x49\xfe\x49\x96\xfc\x13\xef\xa3\xc9\x3f\xf9\x8e\x6c\x94\xe4\x9f\x24\xff\x64\xc2\x51\x24\xff\x64\xc6\x7b\x3f\xf9\x27\x9e\xa1\x42\xe0\x5f\x28\xd7\x62\x80\x5f\x61\x00\x59\x9c\x8b\x2d\xe8\x1a\xa1\xc0\x5e\x73\x19\x31\xf4\xd8\x5a\xd1\x15\x4d\x49\x43\x58\x40\xe3\x63\x00\x81\xa1\x5c\x72\x83\xa1\x08\x71\xc0\x74\x70\x11\x84\xa3\x18\x4d\xd8\x3f\x88\x59\x84\xdf\xa7\x80\x71\x8a\xa6\xf9\x28\x1e\x2a\x11\x47\x07\xc2\x48\x44\x2c\x95\x82\xa2\x0f\xb1\x1a\x6d\x1f\x8e\xdd\x28\x8a\x32\x34\x85\x74\xb4\x4d\x5d\x97\x72\x25\x2b\x27\xca\x76\xc7\x90\xeb\x05\xfa\xaa\x3c\x98\x2c\x8e\x79\x81\xba\x56\xf6\xd1\xe6\xae\x8c\xf5\x3d\x3c\xbf\x1b\xf7\xb9\x99\x66\x12\xc3\xd7\xe6\xed\x16\xd8\xc7\x06\xfd\x6b\xd4\xb7\x66\xe7\x39\xd0\x0b\xcf\xc3\xc9\xe2\x2c\x6c\x18\x36\x16\x6b\x21\xc2\xf1\xb0\x78\xeb\xcd\xc5\xc0\x3a\x95\xa1\x23\xcd\x9d\xca\xe5\xdb\x3c\xd7\x4d\xe5\xa2\x58\x3b\x4e\x97\xd2\x08\x92\x37\x00\xb9\x80\xb3\x8e\xbc\xb9\x91\x39\xe0\x93\x31\x66\xf9\x56\xc6\xbd\x29\xbe\xfe\x14\x41\x1c\x60\xb0\x1b\xdd\xce\x35\x0c\x59\x30\x9d\xe2\x00\x65\x27\xfc\x79\xd1\xae\x27\x12\x0d\x79\x7f\xae\x75\xf1\x5b\x7b\xe3\xfa\x5d\x29\xd4\x6a\x48\x24\x51\x9c\x2a\xda\x00\xcb\x2f\xba\x18\x66\x65\x62\x3f\x00\xb3\x46\x4d\x44\x21\x9c\xb8\x6a\x1d\xd5\xa1\x6e\x90\x0d\x27\x6a\x45\x9a\xfe\xd0\x12\xdf\x2a\xff\x31\x0e\xd4\x08\x65\x08\x00\x8d\x50\xaa\xf9\xa2\x1d\xe9\xe0\x8f\x1e\x6d\x4d\x32\x30\x19\x38\x40\x16\x84\x0e\x18\x9c\xf6\x5c\x14\x09\x10\x9c\x72\x84\xe4\x23\x96\x38\x7a\x46\x16\x69\x25\x5c\xde\x5e\xa1\x97\xd6\x1e\x55\x33\x9e\x85\x1a\x6b\x35\x47\x4c\x34\x0b\xbe\xd3\x09\xd8\xbd\xe8\xbd\xfb\x5b\xe9\x6f\xe7\x62\x33\x89\xc7\x51\x7f\x4f\xdc\xf7\x49\x5c\x4b\xbf\xbb\x36\xef\x5d\xe8\xb4\x11\x0b\x49\xe6\x3a\x90\x43\xea\x01\x54\x8a\xb1\x4d\x8c\x18\x85\xf7\x6b\x8d\x3c\x7c\x66\x41\x6d\xfa\xc6\x0c\x46\x79\xc6\x0c\xc7\xfe\x25\x64\x30\xd7\x8d\xef\x28\x87\x9c\x61\x59\x15\xb5\x56\xc3\x88\xef\x64\x03\xb5\x91\x37\xea\x21\xf8\x75\x23\x17\x1e\xc8\x99\x51\xd3\xd9\xf1\xf1\x95\xcc\x8d\x1c\x74\xb8\xbc\x1d\x3c\xb5\xf0\x75\x20\x56\xe6\x7f\xf7\x5e\xdd\x04\x31\xd7\xa6\x46\xe4\x69\x56\xc4\x33\xa5\x83\x3f\xe5\xeb\xef\xb9\x51\xb9\x70\x4f\xb3\xfd\xbc\x6f\xdf\x37\x17\xf2\x46\x34\xa5\x1b\x12\x13\xd4\x59\x93\xdf\x6f\x1a\xd4\x63\x1e\x05\x47\xab\x7c\xaf\xaa\x07\x24\xf5\xca\x23\x12\xd1\xd3\x35\xc4\x5f\xf4\xe7\x63\x00\x5b\xd3\xa7\x86\x87\xd5\xef\x45\xdb\xf1\xc1\x9f\x20\x07\xf1\xb0\x8a\xd5\x75\xa7\x31\x87\x77\xe2\xd0\xd9\x83\x0d\x95\x00\xc3\x0c\xaf\xab\x1b\xb5\x38\xec\xe2\xf9\xd8\x47\xdc\xdb\x0f\xa5\xb0\x4e\xe5\x7f\x2f\x75\x7e\x7b\xe5\xb4\x39\x38\x26\x8a\x05\x6f\xec\x90\x4c\x22\xbe\xe8\xa9\x79\x61\x9c\xf2\x21\x7d\x21\x2c\x48\x33\x20\x85\xc8\x45\x9f\x18\x75\xea\xff\xe3\xfb\xc0\x2f\xf5\x31\xf0\xc5\xa6\x71\xae\x5e\x11\x7f\x34\x46\xbe\x57\xf6\x36\x48\xba\x8b\x7c\xa9\xaa\xc5\x28\xa3\xa8\x50\xf6\x76\x94\x61\xb6\x6e\xe0\xdb\x97\x8f\xc1\xef\x8f\x64\x3f\x5f\x3c\x02\x10\x4a\xe3\x98\xca\xcf\x13\xfd\xd4\x0e\xfe\xf8\xed\xcb\xc7\x20\x7e\xf9\x49\x1d\x3e\xc4\xa3\xf8\x65\xfc\x1e\xf2\x4b\xbf\x0c\x99\x73\xbb\x14\x66\x8c\x11\xee\x9f\xf3\xed\x00\x0f\xff\xdc\x77\xce\x9d\xf7\x5c\xd6\xcb\x9b\x83\xd3\x4a\x4d\xfa\x4a\x57\xca\xe9\xe1\x8c\xd7\xe9\x23\x88\x3e\xcd\x3d\xf9\x16\xe9\x79\x66\x88\x67\xa1\x41\x74\x4d\x7c\x91\x83\x69\x59\x48\x64\x25\x42\xd0\x91\x74\x77\x7d\x87\xd6\xa3\xf8\xba\xe7\x22\x36\xdf\xaa\xaa\x38\x3c\xa4\x89\xcd\x82\x58\x7c\x73\x06\x8b\x3e\x4b\xc3\xa2\xb3\x2a\x7f\x11\x07\x23\xfe\xd4\xcc\x11\x6e\x54\x16\xcd\xaa\xf3\x0a\x3f\x42\x32\x62\xd1\x54\x32\x92\x0a\x06\xc3\xfc\x6e\x56\xc6\x4a\x64\x44\x8f\xe7\xe8\x14\x78\x68\xf0\x74\x04\xd4\x1f\xfd\xf4\xb8\x60\x19\x27\x4c\x38\xac\xa1\x7c\xbb\x94\xfc\x44\x9f\x2f\x97\x01\x92\xc6\xbf\x8d\xac\x0a\xda\x40\x46\xdd\x8d\x08\xba\x8c\x94\xbd\x95\x2e\xe4\x65\x73\x5d\x2a\xbb\xbc\x3a\x17\x21\x1a\xcb\xbf\x7b\xeb\x9c\x51\xd7\x8d\x1b\xfe\x1e\x5e\xbc\x7c\xfc\xb7\x11\x4e\x42\xcb\x29\x5c\xb6\x2c\xf4\x7d\x75\x2f\x4c\xf1\xf6\xf2\xa0\xe3\xf5\x8a\xe4\xfb\x8d\x92\x65\xe1\xe1\x6f\x4e\x5b\x59\x77\x50\xfe\x9b\x34\x16\x42\x2e\x67\x9c\x57\xb5\xc3\x8c\x5c\x2c\x01\x3d\xd9\xda\xf4\x0d\xa8\x12\xf2\xe0\xea\x8c\xf5\xe0\xf6\xe4\xfe\xa7\xc8\x4c\xb3\x09\xb3\x63\x79\x63\x0c\xbe\x29\xd4\x9d\xb2\x91\xcf\x6d\xfb\x59\x38\x01\x2b\xf6\x5d\x8f\xe7\x44\xc4\xa8\x99\xd6\x6c\xf1\x36\x20\x57\xb5\x7b\x1c\x00\x90\x27\x23\x06\xb2\x50\xcd\x60\x29\x63\xda\x59\x56\x7f\xc8\x4f\x6a\xa5\x42\x4f\xe1\xbc\xdf\x75\x13\x94\x48\x35\xd2\x9e\x29\x9b\xd9\x07\x97\x9d\x30\x0b\xe9\xfe\xf9\xcf\x5f\x4f\x18\xe7\xb9\xbf\x57\xc3\xa9\x84\x53\x77\xef\xe7\x9a\x52\x3e\x74\xf9\x78\xe7\x67\x4c\x6b\x7f\xc2\xf4\xb1\xad\xc9\x57\x14\x59\x99\xc2\x70\xbe\x29\x75\x7e\x1b\x16\x10\x2b\x84\x13\x76\x64\xf0\xfb\xa9\x8d\x6f\xdf\x82\xa3\x45\xde\xaf\x5b\xe4\xf2\x72\x6d\xbc\x5a\x27\x2b\x17\x7a\xaa\x74\x1e\xe7\x81\x75\x31\x6a\x21\xa6\x3d\xf9\xe9\x06\xc7\x5e\x3d\xe5\xbe\xc8\x5a\x07\xf1\xa6\x32\x6d\xb2\x23\xf1\x3d\xde\x09\xa9\xb5\x55\x23\x9b\xb8\x53\x3e\xc7\x69\x54\x1c\x74\x3b\x3e\xf6\xb4\x96\x8d\x75\xd2\x84\x9d\xde\xf4\x19\x4d\x83\x82\x10\xd8\x0f\x27\x3c\x7d\xf1\xcf\xe9\xe6\xe3\x0e\x33\xf1\x61\xeb\xd9\x3b\xd7\x4b\x6d\x07\xcb\x8b\x51\x53\x3d\x6a\xa2\x5c\xb8\xc8\x22\xb6\x72\xc0\x2c\x28\x1b\x18\x36\xcc\x97\xa2\x7e\xdb\xb8\xe5\x7b\x65\x73\x7d\x27\xa9\xbd\xe8\xd3\xf1\x7d\x53\x57\x5d\xea\x72\x78\x43\x23\xd5\x41\x87\xd8\xe1\xb4\xd7\x35\xa6\x5b\xf9\x3d\x54\xaa\x3c\xad\xc6\xc7\x6a\x2d\x02\xc4\xb0\xd3\x7b\x7a\x27\xa4\xd6\xc6\x89\xe1\x54\xdf\xe9\xfd\x87\x57\x63\x58\xf6\xee\xda\x65\x3b\xe3\x93\x88\x0d\xf5\xfb\xa1\x19\xba\x58\x73\xd1\xc1\xbf\xef\x0e\x88\x2b\x6e\xaa\x30\xd5\x76\xf2\xb4\x00\x13\xee\xd5\x05\xc9\xec\x8b\xa7\x3e\xb9\xf3\x5b\x6f\x4c\xea\x9d\x3b\x65\x41\xe2\x7d\xfd\xe2\x8c\xcd\xd6\xcd\xf8\xd8\x33\xb4\xd4\x4e\x57\xa7\x77\x3d\x8a\x89\x0e\xe1\xd7\x0d\xb3\xe7\x44\x1b\x77\xaf\xcd\x88\xb8\xc7\xc9\x33\x30\x66\x99\xd8\x50\x1b\xbd\xfe\xfb\xe1\x66\x67\x73\xf0\x45\xdc\x10\x8c\x72\xf4\xe5\x4d\xf1\xe0\x36\x06\x8c\x8a\xf9\x18\x1f\x95\x11\xba\xf5\xd6\x11\xe3\xb8\xa3\x23\xfa\xdc\x6a\x4b\xfc\xda\xf0\xf8\x59\xd6\x96\x26\x2c\x93\xc3\xab\xbd\x41\xdd\x7c\xeb\x9f\xf3\x1e\xa7\x3c\x1f\x6b\xf4\xa2\xbc\x18\x78\x08\x63\xa2\xa8\xbc\x91\xe7\x8d\x22\x68\x44\xe0\xb7\x13\xc7\xf7\x5b\x3a\x9f\xbd\x8b\x9d\xc3\x87\xb7\x9f\x31\xcf\xe6\xb7\xc4\x16\x15\x19\xef\xbc\x7e\x54\x4f\xdc\xfa\x60\xe8\x69\xfe\xf3\x41\x31\x0a\x7e\xbd\x2a\x49\xc9\xcd\x09\xd8\x19\x54\x00\x03\x33\xf3\x04\xb6\x14\xc4\xc3\x70\xee\xc0\xc8\x7e\xf0\x7c\x82\x51\x1d\xf1\xb7\x0a\x94\x6d\xf0\x7c\x4c\xf0\x4e\x61\x16\xb8\x3a\xa1\xf2\x04\x1b\xb5\x07\xaf\x5b\xee\xd3\xf9\x28\xa4\x64\x4c\xfa\x5b\x4f\xc6\xe4\x77\x62\x4c\xee\x83\x81\x7d\xd5\xb7\x92\x30\x8f\x18\xc9\x90\x4d\xa1\x64\x15\x35\x53\x2c\xcb\xe4\x43\xad\x66\x83\x7e\x85\xed\x9b\xe8\x79\x70\x24\xf7\x43\x6b\x3f\x3a\x85\x8d\xb8\x4b\xd7\xc5\x30\xb8\x01\x9a\xdf\x1b\x7d\xfd\xe8\x82\x22\x5e\x0b\x1f\x44\xd5\x11\x02\x5e\x46\x2e\x94\x75\x23\x8e\xc0\x9d\xac\xc4\x08\xf8\x8b\x11\xd7\xc7\xfa\x68\xdd\x44\x87\xef\xdd\xbc\x78\x02\x79\x5c\x2e\x31\xd7\x41\x01\xbc\xb1\xa7\x91\x2b\xb1\x18\x71\xd7\x58\x3e\xb6\xd0\xeb\xa1\xef\xcf\xe0\x2a\xa8\xd6\xa1\xe7\x5d\xaf\xea\x7c\x70\xb2\x7b\x9c\x2d\x03\x1e\xfc\x25\xf4\x86\xa7\xcd\x45\x29\x3f\x7e\x3e\xc1\x66\x5a\x08\x27\xef\x45\xb8\xb0\xac\x8d\x76\x32\x5f\x1b\x02\xef\xf5\x4a\xa8\xf0\x13\xfe\x57\xc4\x98\xd6\x96\x1f\x2a\x71\x5d\x0e\x9b\x18\xc0\xc7\x76\x48\x44\xa3\x60\x23\x9e\xda\xb8\x1c\x23\x4f\xec\xa3\x75\x32\x3c\xcf\x7d\x34\x9c\x97\x7f\xa7\x3e\x71\xf7\x61\xcb\xa8\x67\x97\xc3\xbf\xb6\xdf\xc5\xde\xc7\x83\xde\xf7\x6c\x0e\xb5\xd2\x6d\xdd\x74\x5b\x37\xc2\x85\xdb\x08\x30\x22\xfe\x9d\xd4\xc9\x26\x1d\x94\x15\x73\xf2\x43\xf7\xb3\x51\x45\xa3\xe5\xef\x6e\x13\xb6\x0e\xcf\xcd\xf3\x8e\xf4\xce\xd6\x4b\x69\xe4\xc9\xb2\x30\x36\x8a\xb2\x54\xf9\x63\x70\x2a\xc5\xb3\x76\x22\x4c\xba\xef\x6c\x2b\x42\x5e\xc7\xc0\x01\x95\x67\xa9\x06\x7f\x2a\x84\x13\xd7\xc2\x26\x34\x40\x64\xd7\x26\x34\xc0\x33\x47\x03\x2c\x94\x5d\x9b\xf7\x57\x4f\xc5\xa7\x9e\x37\x3b\x3c\x1c\xd9\xba\x05\x57\x57\x9f\xf0\x57\x96\xa2\x3c\x90\x47\x35\xfc\xbc\xaa\x5e\x5e\x2a\xf5\xb1\x74\xad\xad\x5b\x18\x69\xff\xf9\xf6\xc5\xa0\xa8\x57\xb3\x1e\xeb\x6c\x8c\x16\x24\xd1\x4f\x33\xd4\x28\x5b\x89\x87\x77\xba\xaa\x3a\x6f\xd5\x8f\x47\x00\x86\xaa\x31\xab\xd2\x8f\xbe\x0a\x0e\x9f\xd4\xe4\xd7\x7f\x1e\x33\xcb\x7e\xcc\x60\x70\x8c\xdf\xfd\x14\x8b\xfc\xb6\xa9\x47\xe9\xed\x45\x3e\xaa\xe0\x40\x5a\x26\x60\x99\x4a\x9d\x0f\xfb\x35\x50\x9d\x0d\x10\x94\x95\xd3\x66\x46\x5a\xa1\x3d\xc1\xe7\x54\xe4\x25\xcd\x4d\xbf\x93\x14\x8d\xa5\xbc\xa4\xfd\x16\x91\xb3\x52\x2a\x55\x79\xbf\x45\x00\x28\x84\x3e\xc7\xf3\xa6\x30\xef\xf7\x47\x9c\xe3\x79\x41\x60\x7b\x42\x39\x05\x00\x85\xdd\x1f\x1c\xc0\x2e\x14\x48\x6c\x50\x83\x1e\xd0\x58\x76\x7b\x91\xb7\x07\x55\xe4\x86\xd5\x58\x6c\x66\xc7\x78\xd3\x03\x3e\xbb\xff\xd0\x61\x10\xda\xfd\x41\x21\xfc\xeb\x03\xf8\xcc\x18\xfc\x1b\x5f\x36\xd0\xd1\xa6\xfd\x36\x81\x35\x25\x41\x6c\x99\x2d\x62\x6b\xea\x05\xb7\xdd\x79\xcc\x03\x72\xbb\x3f\x2e\x62\x5d\x87\x41\x6f\x7b\x42\x17\x95\x3a\xf9\xec\x09\xcc\x06\x63\x64\x9b\xa0\x39\x41\x48\x22\xc8\xc9\xb6\x3c\x02\xa2\xcb\x1e\x24\x19\x68\xec\x89\x93\x79\x87\x96\xf8\x64\xaf\x20\x90\x02\x86\x54\x8c\x8d\xba\x1f\x3d\x47\xb6\xac\xc1\x0f\x83\xf4\xf6\x74\x22\x33\x71\x2a\x3e\xfe\x8e\x98\xee\xac\x0d\x4f\xe8\x06\x19\xba\x12\xc0\x31\x64\x4f\xd3\x78\x15\x90\xf2\x98\xa4\xb0\x31\x9c\x6b\xcc\x4c\xbd\xc5\xf3\x8c\xf9\x59\xc6\xdc\x1c\x63\x3c\xc3\x98\xf5\x91\x9c\x12\xcb\x48\x6e\x31\x98\x59\xcc\xc8\x2b\x46\x2d\x08\x44\x0a\xc1\x53\x83\xe6\x13\xa3\x92\x17\x13\x07\x87\x51\x4b\x7a\x82\x05\x81\x17\xaf\x6d\x7f\x44\xc7\xf7\xed\x38\xe0\xc8\x3d\x9d\x8b\x32\x9a\x2a\xae\x42\x83\x2a\xf7\xc4\x2f\x46\x98\x4d\x32\x17\xa0\x93\x3c\x84\x21\xc7\xea\x0d\xbc\xcd\x99\xf4\x28\x49\xbc\x4b\xa4\xfc\x1b\x78\x21\x17\x48\x99\x2a\x3b\x0b\xbb\x3c\xca\xee\x85\x77\x1b\x8e\x7b\x6d\x94\xa1\x1e\xb3\xd7\x61\xa7\x84\x5e\x14\xe5\x33\x69\xe0\x25\xd1\x00\x3e\x65\x5f\x10\x0d\xe8\x83\x7f\x39\x74\xf2\xad\xc0\xba\x16\xca\xda\x09\x1c\x63\xf6\x34\x66\x2a\xd4\xa0\x0f\xbc\xba\x27\x38\xf2\xe7\x05\xb3\xde\x1f\x16\x12\xb4\xa2\xc0\xad\x99\x2d\x42\xf3\x71\x18\xf4\xba\xa7\x13\xc5\x66\x3c\x78\x74\x9b\x1e\xcf\xe4\xf0\x8e\x06\xcf\xee\xe9\x74\xf1\x61\x2f\xb8\xf6\xa9\x87\x87\x71\xb1\x17\x84\xbb\xa7\xef\xc3\xc9\x23\x40\xbb\x7b\x9a\x8b\xb7\x92\x22\xad\xb3\x72\xe8\x3c\x20\xe1\x3d\xc1\xdb\x84\x06\x0d\xdf\x1f\x1a\x72\x78\x4e\x83\x88\x33\xdb\x84\x66\x05\x02\x17\xef\xe9\x75\xe6\xb5\xf8\x41\xc9\xf7\xdb\x9b\x6d\xe6\xc0\x20\x78\xf9\x7e\x77\x14\xb7\x0c\x83\x99\xf7\x04\xef\x21\x0a\xdc\x7c\x7f\x60\xd0\xc4\x52\x60\xe7\x01\x4d\xfa\xc1\xcf\x99\x0d\x62\x4b\xe5\x05\x45\xdf\xef\x91\x5a\x2e\x1f\x48\x7a\x4f\xe8\x82\x91\xa0\xe9\xfb\x43\x83\xf6\xf5\x8c\x4f\xe7\xb1\xb5\xf2\x81\xad\x6f\x9f\x22\xbc\x42\x68\x2d\x7d\x20\xec\x3d\xa1\x4b\x19\x75\xe2\x5d\x3c\x51\x0f\x8a\xb2\x08\xb3\x39\x08\xe6\xde\x13\x9c\x98\x87\x82\xbb\xef\x0f\x0f\xb1\xf5\x40\xb0\x77\x7e\xc3\x91\xd5\x33\x04\x06\xcf\x6f\x75\x18\x1c\x9e\xdf\x16\x04\x16\xcf\x6e\xf6\x64\xce\x3a\x01\x2a\xdf\xd3\xe9\xfc\xea\xe4\xf8\x90\xbe\x21\x02\x56\xcf\xec\x1f\x13\x9f\x87\x41\xec\xb7\xbf\x1f\x06\xb3\xdf\xfe\x4e\x80\xda\xef\x8f\x99\x98\x88\x95\x6e\x2a\x52\xab\x41\x5f\x3f\x00\x97\xdf\xd3\x49\x34\xe3\x14\xbb\xc0\x07\xaf\xcf\x1c\x60\x14\x6d\xeb\x81\xdf\xdf\x1f\x0e\xc1\x09\x30\x1c\xff\xe6\x05\x54\x41\x53\xf0\xfc\xfb\xc3\x9c\xad\xa5\xe9\x83\xf1\xdf\xef\x91\x9a\x69\x10\xd6\x7f\xf3\xfc\x89\x9c\x7e\x0f\xec\x3f\xb3\x31\xd4\x43\x1e\x9f\x7a\x47\x97\x07\xd8\x3c\xf9\xbd\xe4\x7e\x9e\x75\xaa\xa4\xb7\xec\xc0\xce\x43\xe7\x91\xe2\x41\x94\x27\xe8\x69\x92\x24\x0f\xb0\x6c\x41\x58\xe3\x8c\x51\x07\x3e\x1e\x86\xfc\x9c\xf1\x10\x69\x7b\x0a\x38\x70\xef\x88\x83\x50\xdb\x53\x08\x52\xed\xfe\x40\x39\x88\xb5\x3d\x71\x90\x6b\xf7\x7b\x63\x4f\x0b\x17\x41\x3a\x63\x20\xda\x6e\x9f\x07\x91\x6d\x7b\x62\xa6\xda\xec\xbe\x84\x20\xdd\xf6\x84\x3a\x30\xbb\xed\xb3\x26\x18\x47\xc0\xdd\xef\x04\xd1\x1c\xfb\x6f\xc0\x73\x05\x97\x59\xe8\xe9\xfb\x91\x35\xdc\x72\x0c\x63\xfb\xcb\x82\xcb\x33\xf4\x14\x2c\xea\xb2\xd0\x72\x0d\x11\x7a\x0e\x91\x28\x59\x50\x19\x87\x9e\x82\xc4\x45\x96\x34\xc2\x10\x85\x96\x7f\xd8\x0c\x76\xc4\x86\x09\x2e\x07\xd1\xd3\xa8\x3d\x13\x50\x1e\x22\x4a\xbf\x21\xe5\x22\x22\x74\x1c\xbe\x55\x99\x65\x24\x7a\x0a\xdc\xa9\x61\x46\xca\x1c\x8d\x0e\x66\x27\x48\xf9\x89\x9e\xbe\x1f\x45\x9d\x9c\x82\x43\x94\x9c\x82\xe4\x14\x4c\xe4\x14\xb0\xcb\x65\xf4\x14\x70\xdd\x04\x2e\x9f\xd1\x53\xc0\x14\x07\x94\xd3\xe8\x89\x57\x56\x63\x7f\x8c\xbc\x5d\xcd\xdb\xcf\x93\xdf\x00\x80\x77\x23\x8b\xb7\xa2\x27\xeb\x83\xa8\x20\x83\x65\x3a\x58\x03\xf3\x94\xed\xe8\x09\xdd\x01\xde\x32\x1e\xfb\x83\x3a\x49\x20\x9a\x2a\xf3\xc1\x1e\xa2\xbf\xec\x07\xbb\xb9\x88\x40\x16\x54\x59\x10\x66\x73\x68\x5a\xda\x60\xb9\x90\xed\x43\x83\x65\x43\xf6\x87\x44\x70\xed\x40\x19\x91\x9e\x4e\x74\x76\xe2\x2d\x33\xc2\x6e\x8d\x28\x3b\xc2\x6e\xef\x0c\xc0\x78\x3c\x65\x05\xd8\xdd\xa6\x0c\x93\xf9\x21\xe7\x0c\x95\x41\xd9\x3e\x11\x0b\x5b\xc7\x53\x1e\xa5\xa7\x13\x09\x09\xa2\x7c\x0a\xbb\x3d\xb4\x9c\x0a\xbb\xe1\xb4\x81\xc8\x0d\x44\x97\x65\xd9\x6f\x12\x9a\x24\xba\x4c\xcb\x7e\xa3\xc8\xf5\x49\xba\x6c\x0b\xbf\x4d\x6f\x19\x17\x76\x73\x74\x59\x01\x66\x93\x98\x44\x1a\x2e\xf7\xb2\x7d\xc6\x57\xf6\x65\xe7\xa9\xa1\xf2\x2f\xfb\xe3\xa6\xe4\x16\x19\x0d\x3b\x9b\x64\x83\x84\xcb\x74\x86\x78\x07\xdf\x0f\x2e\x53\x6c\x28\xa5\x09\x00\x45\x31\x89\xe0\x2b\x6b\xd3\xd3\x77\x93\x2c\xf6\xdd\x99\x08\xd1\xf5\x1a\x5c\x3e\x87\xd9\x2e\xc6\x8c\xcd\x75\x94\x64\x6c\xb2\x3c\x4f\x4f\x27\x62\x6c\xb0\x7c\xcf\xb8\x76\x27\x60\x0a\x24\x17\x62\x82\x3c\x4b\x22\xa1\x01\x60\x2d\xf2\x91\x5a\xb9\x41\x5f\x15\x61\x92\xee\x52\xc2\xc7\x2a\x2f\x1b\xab\xee\x80\x2a\x59\x94\xb4\xea\x1a\xfc\xaa\x46\x57\xdc\xda\x6d\xaa\x54\x55\xac\xe6\xfe\x97\x9f\x6d\x81\x96\xc8\x35\x31\xd2\x0e\x9a\xaa\xc8\x9a\x34\xc6\xab\x9d\x63\x0c\xd1\xfe\x65\xcc\x00\x23\x15\xcf\xe8\xef\x80\x8e\x6e\x28\x4a\x35\x8c\x2e\x10\xee\xcf\xd6\x8a\x32\xf5\x9d\xac\xbb\x1a\x5b\xf4\x2f\xcb\xec\xbd\xba\x19\xc5\x68\xf1\x2a\x02\x1d\xa3\x1e\x89\xf7\x67\x9b\x1b\x55\xbb\xab\xc1\x54\x1a\xb2\xba\x12\xa3\x52\x09\x32\xb5\xb4\xe2\xc5\xe6\x15\x41\x70\x40\xbd\x2a\xcc\x97\x42\x8c\x57\x4c\x15\x20\x37\x1c\x80\x59\xa0\x34\x2e\x79\xab\x81\xdc\x92\x64\xc5\x11\x68\x33\x61\x95\x46\xa0\x65\x47\x2a\x8c\xc0\x0d\x11\x95\x45\xa0\x76\x22\xb1\x33\x55\x49\x04\x14\xd3\x71\x18\x94\xe6\x2b\xa2\x6a\x08\x55\x31\x04\xe3\x3b\x5f\x15\x03\x84\xef\xe2\xed\x57\xcc\x91\x87\xd6\x08\xaa\x08\x12\x65\xef\x93\x55\x40\xe8\x0a\x20\xe4\x3a\xf9\x2b\x7f\x20\x8b\x84\x1c\x32\x02\x31\x3f\x96\xcf\xea\x8f\x05\x51\x81\xb2\xa3\x6e\x45\xb4\xa2\x07\xc6\x7b\x48\xac\x04\x75\xa0\x23\xc2\x98\x43\x91\x04\xea\xec\x31\xca\x9e\x21\x4e\x13\xe9\xfd\xe0\xad\xd0\x71\x44\xf3\x28\x36\xff\x9d\x29\xd3\x9c\x8d\xa1\x45\x5e\x76\x44\x66\x18\x3c\xc1\x89\x6b\x15\x93\xc2\x19\x90\xde\x78\x6c\x16\x3a\xa9\x61\x84\x65\xb1\x13\x1a\xde\xe9\x0c\xe7\x64\x06\x3b\x95\x61\xc4\xd7\x91\xd3\x18\xfa\x24\x06\x38\x85\x01\x03\xda\x88\xc6\x8d\x50\x85\x1e\x3b\xbe\x41\x24\x1e\xbd\x55\x87\x61\x9e\xa0\x4d\x4a\x02\xa2\x1e\xd3\xef\xe0\x56\xb9\x98\xab\xa0\x8f\xed\x9b\x63\x95\x2c\xf8\xb8\xb0\xf1\xbe\x19\x70\xd2\x7c\x20\xa7\x64\x0f\xc0\xa5\xd8\xa4\x93\xba\xb1\xc3\x57\x02\x79\x59\x09\xdc\x7b\xb2\xcc\xe4\x04\xe6\x5d\xd8\xc9\xb2\x02\xf0\x1b\xae\x8c\x43\xff\xef\x4c\xaf\x87\xdc\x3f\x65\xa3\x6d\x70\xef\x98\x32\xf9\x8d\x75\x8f\x94\xd9\x36\xef\xae\xe8\x64\xac\x0c\xdf\x00\x85\x39\x19\x35\xe8\x8e\x67\xae\x91\x0d\x51\x55\x21\xa0\xa8\x10\x59\x0d\x02\x0b\x78\x20\x55\x20\x62\x1c\x5d\x0d\x57\x7e\x38\xa2\xcf\x4f\x80\x47\xce\xf5\x30\x04\xab\xea\x70\xdc\x18\x20\x59\xc5\xe1\x98\xc3\xa1\xb9\x8f\xac\xd8\x70\x7e\x8e\x09\x50\x99\xe1\x94\xd6\x77\x8a\xb0\xb5\x34\xb5\x13\x42\x54\x58\x80\xd8\x1a\xab\xac\x80\x1d\x1a\x62\x15\x15\x62\x68\x14\xb8\x8a\xc2\xf7\x7d\xe6\x4e\x57\x4a\x98\xd9\xc9\xa8\xb7\x2a\x02\xbd\xea\xfe\x6a\x08\x10\xbf\x23\x55\x10\xc0\x49\x43\xaa\x1f\x80\x4d\xd1\x55\x0f\xa2\xc4\xe1\xc9\x4a\x07\xf4\x12\x50\x15\x0e\x90\x45\x80\x2a\x1b\x80\x7b\x6e\x46\xa7\x91\xf4\xfc\x53\xd5\x0b\xbc\x9e\x0a\xb9\x36\x54\xc5\x02\x64\x69\xa2\x4c\xa8\x1b\x2f\x4e\x01\x51\x32\x62\xa6\xbc\xd5\x08\xa0\xa4\x1d\x4e\x15\x02\xcc\xce\x61\x54\x1f\xc0\x1a\x8c\xa4\xd6\xe0\x6a\x03\x58\x6b\xfe\x2a\x03\x58\x1b\x70\x75\x81\xf9\x39\x86\x40\x25\x81\xe3\xfa\x72\xc9\x50\xef\x1e\x02\xab\x03\x44\x11\x5d\xc3\x15\x01\x7c\xd5\x00\xa0\x4a\x00\xe4\xc7\x7a\x70\xfb\x8f\xa6\x1f\x62\xf2\x1c\x85\xcf\x3f\xb5\xae\x21\xf0\xf8\xc9\xf5\x60\xe1\xf0\x43\xaa\x09\xc1\xdf\x9f\x99\x5d\x44\x61\xed\xd3\xb3\xc8\xc0\xd8\x3f\xa6\x4b\x48\x60\xea\xc7\x61\xce\x61\x1c\x7d\x7a\xde\x20\xfc\xfc\xb3\xcc\xcc\x3a\x9b\xe4\x26\x12\x13\x7f\xb6\x07\xc9\x00\xfe\x7d\xd4\xa3\x64\x06\xe6\x3d\xef\x78\x8f\x81\x53\xc9\x82\xb4\x0c\x81\xb3\x64\x42\x59\x32\x8f\x02\x3b\xe2\x42\x58\x86\xc2\x57\x72\xce\x84\xb7\xc4\x85\xad\x0c\x98\x02\x2e\x5c\x25\x07\xaa\x92\x05\x53\xc9\x38\xb4\xdf\x7d\x01\x85\xa7\xc4\xa1\x29\x99\x93\xc8\x83\xa4\xc4\x24\xf6\xfe\xd3\xd0\x9c\xb0\xb0\xe9\xcf\x57\x26\x84\xe0\xd0\x87\x42\xe9\x86\xe3\xcf\x07\x89\xa2\x6c\x0c\xee\x7c\x60\x8f\x61\x60\xb5\x21\x58\xf3\xec\xed\x9d\x25\xe9\x9c\x8d\xc4\x93\x0f\x65\xfc\x51\x38\xf2\xc1\xbc\x1f\x88\x1f\x1f\xdc\x5f\x28\x6e\xfc\x51\xb7\x5a\x00\x56\x7c\xc0\x4e\xe3\x1b\x01\x73\x51\xec\x8c\xc6\x51\x3c\xf8\xf3\x55\x8e\xc9\x60\x4e\x06\x33\xf9\x42\x32\x98\x3b\x0a\xc2\x6d\x67\x26\x66\xb3\xf0\xda\x99\xd3\x18\x88\xd3\xce\xc7\x68\xe7\xee\xc4\x19\x00\xc8\xc5\x85\x86\x8b\x96\x12\x0b\xdc\xc5\xf6\x62\xaf\x93\x03\x21\x30\xd7\x11\xee\x25\xb1\xd6\x8f\x1c\xbc\x44\xb0\xd5\xb1\xa3\x78\x12\x53\x1d\x6a\x26\xc2\xf5\x62\x04\x43\x3d\x52\x92\x8b\x17\x37\x9d\xc0\x4c\x27\xb9\xcd\x83\x95\x7e\xc4\x38\x39\x89\x8d\x0e\xb5\x02\x60\xa2\x43\xed\xcc\x10\xa6\x80\xc0\xe6\x3d\xfa\x39\xe5\x19\x9f\x8d\x1f\x05\x5b\xc0\x87\x65\x3e\x1e\x79\x80\xc0\x2f\x3f\xe2\xc6\x05\xf0\xca\xb1\xa3\x45\x06\x4e\x79\x62\xf6\x9d\xc7\x28\x48\x4e\x08\x83\x1c\x9c\x08\x0c\x7b\x1c\xbb\xac\x83\x61\x8e\x63\x6d\x91\x58\xe3\x0c\x7d\x7e\x14\xb4\x1e\x3f\xae\x38\x8d\x29\x4e\xe0\x89\x03\xf2\xc3\xa8\xda\x9b\x5c\x49\x7e\xa6\x3f\x10\x33\xdb\x33\xde\x04\x60\x71\xb8\xfb\x04\x60\xb1\xf3\x98\xdf\x16\x8b\x85\x3d\x11\x11\x69\x8c\xde\xf0\x14\x4c\xf8\x59\xe6\xc4\x9c\xb5\x66\x8e\xa6\x6e\x58\x90\xdf\x31\x98\x09\x82\xe7\x3e\x22\x43\x31\xe0\xb8\xf9\xed\x45\x5c\xa0\x08\xd8\xe8\x68\xfa\x96\xe7\x5c\x97\x58\x5e\xef\xcf\xb6\x12\xb5\x5d\xea\x31\x00\xb3\x66\x31\xc8\x10\x84\xea\x85\x59\x77\x58\x7c\xfb\xf6\x38\xd9\x7c\x45\xed\x2f\xa2\x05\xdf\xda\x5d\xb4\xad\x0f\xfe\xd0\x76\xcb\x5e\x2c\x27\xec\xf2\x8b\x5c\x73\xb3\xf4\xdc\xc2\xa0\x56\x6c\xc4\x9c\x79\x86\x37\xf8\xd3\x4a\x3c\x7c\xab\xc4\x9d\x50\xe5\xda\x6b\x79\xde\xb1\xa8\x1e\x3f\xbf\x90\xf6\x17\x5e\x1b\xe6\xc2\x37\xca\x87\x8b\xdb\xe6\x5a\x9a\x4a\x3a\x69\x2f\x54\xe5\x2e\xb4\xb9\xe8\x1e\x7c\x93\x39\xd3\xec\xcf\xf9\x93\xd7\xfe\xbc\x7b\xdf\x04\x8a\x85\x3c\x1c\xae\xf4\xce\xdc\xd0\x26\xf1\x6c\x10\x68\x25\x0e\x6f\x0c\x59\xdd\x31\x3b\xa3\x65\xbb\x5f\x99\x02\x3b\xf9\x4e\x94\x4d\x84\x16\x7e\x32\xda\xe3\x18\x62\xa6\xc1\x26\x4d\xf3\x1f\xf2\x91\xcc\xdd\x38\x9d\x6f\x80\x1d\xf5\x31\x1a\xc4\x8f\xf8\xf0\xe3\xbd\x58\x16\x3f\x68\xce\x63\x89\x66\xf8\x9a\x71\x92\xc9\x18\x33\xcd\x48\x18\x8b\xee\x5b\x61\x69\x60\xe0\x7c\xf3\xf2\x9c\x58\x99\xd2\x9c\x5c\x26\xc6\xd4\xc3\xf9\x4a\x8c\x36\xf1\x9c\xa4\xe8\xab\x09\x65\x1a\x81\x8b\xd9\x79\x57\x49\xe8\x79\x1b\x9d\x9d\xd0\xa3\x0f\xfc\xbc\xa3\x19\x34\x44\x41\xc7\xe1\xb0\x89\x51\x1b\xbd\x92\x6e\x29\x9b\x83\x0c\x42\xb1\x8f\x7c\xa8\xb5\x71\xe3\x80\x41\x7c\x7e\x47\x76\xf4\xe3\xbc\x01\x93\x8b\x31\x18\x7c\xcb\x45\xdf\x22\x84\x69\x16\xda\xa2\xdf\x54\xeb\x89\x8d\x73\x87\x9b\x6e\x61\x5d\x64\xdc\x94\xbd\x80\x6c\x35\x3c\x8b\x2b\xb0\x03\x5e\x36\x57\xc6\xce\xe8\xca\xd8\x29\x77\x78\xc2\x1d\x33\x83\x8e\x77\xf7\x80\xcf\x0b\x21\xf7\x0d\x02\x56\x2c\xe0\x8e\x01\xbb\x17\xee\x8a\xf1\x6e\x14\x30\xd7\x2d\x2c\x85\x9e\xbf\x7e\x81\x69\xf3\x01\x4b\xc8\x4e\x95\x0f\xca\x73\xe5\xa6\xc7\x4f\xce\x25\xac\x64\x78\x26\x93\xe0\x26\x6b\x4f\x49\xd8\xc3\x9d\x9c\x9d\xb0\x87\x1f\x46\x0d\xf4\x41\xd3\x98\xd9\x23\x96\xf1\x65\xbc\x79\x8e\xb1\x01\x3e\x81\xcb\xcf\xe8\x5e\x29\xd5\x4a\xf9\xc1\xb0\xb2\x20\x40\xc7\x8c\xc7\xef\xac\xe5\x97\xf6\x7c\x46\x8c\x25\xfe\xc8\xbc\x31\xca\x3d\xbe\xd3\x95\x93\x0f\x51\x6a\xc6\x8b\xb2\xd4\xf7\x97\x46\xdd\xa9\x52\x2e\xe4\x07\x9b\x8b\x52\x50\x00\x81\x19\x4b\x7c\xe4\xa2\x16\xd7\xaa\x54\xc8\xcc\x72\x24\xb7\x28\x20\x49\xc4\xb8\xdb\xc3\x94\xbb\x9c\x5b\x1b\x85\xd1\x00\x22\xc0\x3c\x46\x0b\xef\xb1\xba\x67\x1b\x72\x21\x70\x6e\xa9\x8d\xce\x7f\xd1\x8d\x3f\x1f\x3c\xe3\x85\xd9\xba\xd4\x84\x2f\x5a\xb7\x45\xb8\xe8\xcc\x32\xde\x88\x4d\x53\xbd\xb5\x3f\x53\xc9\xf9\x19\xf3\x86\x07\x9e\xc1\xd3\xf6\xff\xab\xae\xd6\xdf\x17\xf9\xab\xbe\x11\x59\xb5\xd9\x64\x1f\x65\xe5\x27\x55\x35\x0f\x9f\x69\x0c\xe1\x8c\x29\x36\x4a\x79\x27\x21\x33\x89\xb5\xbf\x8c\xf6\x57\x77\x0b\x6a\xd4\x11\x89\x14\x41\x8d\x52\x99\xd2\x01\x8d\xc2\x02\xe3\x5e\x55\x85\xbe\xb7\x13\xac\xea\x62\x65\xc5\x3b\x23\x0b\x59\x39\x25\xca\xab\x5a\x0e\xc2\xb9\xbf\x1c\x38\x38\x71\x2f\xbb\x40\xbd\x49\x1e\x27\xf5\x1b\x6f\x82\xd6\xe3\xd9\x22\xe4\x23\xeb\x4d\x6e\xee\x86\x1d\x12\x72\xd4\xa5\xb8\x96\xc3\x20\x84\x3c\xb3\x2d\x46\x82\xd4\xd8\x4c\x11\xbf\xf5\x8f\x58\xfe\x94\xf4\xf4\x7e\x82\xd7\x19\xa0\x76\x9a\xdf\xf8\x3f\xfe\x5a\x50\xc6\xfd\xb1\x47\xe4\x4f\xd9\xa1\x8d\x76\x32\xc1\x8a\x69\xa4\xd3\x6a\x1e\x31\xca\xa1\x23\x18\xbf\x11\x7e\xdc\x13\x18\xca\xc8\x9e\x55\xc9\x07\xda\x78\xa6\x57\x91\x34\x96\xc9\xcf\xe1\x19\xc7\xf4\x88\x68\x63\x18\xb1\x17\x69\x3b\x11\x31\x7a\xc1\xd1\xfa\x8c\xdc\x38\x83\xc5\x8c\x59\x64\xbb\x91\xc6\x2b\x96\xac\x4d\x18\xab\x50\x23\x94\x71\x0a\x35\x12\xe1\xda\x1e\xb9\xd1\x30\xa3\x13\xba\x81\xcd\x32\x32\xa1\x09\xe0\x1b\x95\xd8\x0a\xa3\x46\xe4\xa4\xba\x6f\xf0\xa7\x5a\x34\xf6\xa5\xdc\x1b\xde\xaf\xb5\x2e\xbe\xca\x55\x5d\x8a\x97\x37\xe8\x7d\xeb\x96\xeb\xca\x19\x5d\x96\x87\x79\x8c\x54\xba\x55\xa5\x9d\xf0\x32\xcd\xac\xec\x8c\x95\x74\xa2\x10\x4e\xbc\x86\x6f\xb5\x03\x7b\x8f\xfc\xce\x9b\x1b\x55\x29\x37\x78\xd8\x83\x48\x81\x4a\x17\xf2\x2d\xd1\x0e\xda\x56\xf7\x9c\xbc\x91\xc6\xc8\xe2\x7d\xb3\x9e\xad\xab\x7c\x29\x8b\xa6\x54\xd5\xe2\xe3\xa2\xd2\x9b\x3f\x7f\x78\x90\x79\x83\x04\x66\xc1\x08\x22\xef\x8c\xac\x1b\x23\x8e\x98\xc2\x3f\x81\x5b\x09\x97\x2f\x3f\x3c\xd4\xa6\x4b\x6a\x67\x60\x2b\xb1\xc0\x9b\xc2\x06\xd7\x11\x13\xc4\x29\x0b\x3b\xc9\xeb\x68\x3d\x42\x71\x20\x2f\x7d\xb2\x0e\xdb\x74\x1d\xe6\x84\x04\xcc\x7d\x47\xc1\xa3\xe4\x05\xdd\xb7\x14\x06\xf1\x86\xc3\x43\x75\xcf\xf7\x8b\xc6\x78\x89\x79\x16\xbe\xfb\x12\x67\x0e\xda\xdd\xd5\x66\x59\xa4\x8d\x95\x36\x96\xe7\xd5\xb4\xb1\x38\x73\xc0\xec\xe4\x5e\xaa\xc5\x12\xc0\x39\xcc\x82\xd0\xf9\xf0\xc3\x95\x8c\x0b\xda\xb5\xd1\xfe\xc0\xc3\xdd\x47\x92\x0f\x32\xa6\x0e\x5d\x95\xfe\x93\xe2\xd8\x51\x1c\x61\xb6\x36\x09\xaf\x64\xd9\x56\x6d\xfb\x2a\x0d\xb6\x73\x19\x5b\x3c\x99\x53\x1d\x25\xa9\x7f\x90\x92\xd4\xef\x29\x99\x53\x69\x63\x1d\xa2\xb4\xb1\x76\x9f\x9f\xeb\xc6\x62\x76\x82\x37\x8f\x4e\xeb\xc5\x4b\x4d\x0e\xd9\x26\x71\xb2\xfb\x6a\x5d\xbc\xba\xb8\xd2\xf6\x93\xd7\xb3\x3d\x95\x35\xd4\xe6\x12\xf4\xcb\x8a\xef\xad\x30\x01\x1c\x6e\x7a\x65\xa1\x92\x2a\x54\x53\x64\x61\xda\x22\x1b\x27\x1a\xc3\xb5\xc6\xe8\x8e\xc3\xb4\x47\x16\xae\x41\xb2\xb1\x23\x0e\xd5\x24\x59\xa0\x36\xc9\x02\x34\x4a\x16\xaa\x55\xb2\x50\xcd\x92\x05\xcf\x4b\xbb\x3b\x3f\x79\x73\x8b\x0e\x53\x58\xa2\xf8\xa1\x21\x07\x70\xc2\x08\xf5\xcb\x7a\x69\x93\xe4\x34\xa5\x5d\x1b\x34\x0b\xfc\xd5\x76\xba\xd6\xa5\x5e\x3c\xfe\x63\xd2\xbb\x3d\xdc\x4b\x31\x3b\xa3\x4a\x21\xa6\x9e\x2e\x9e\x1b\x02\xaf\x28\xce\x34\x89\x5d\x15\x60\xf0\xa4\x18\x53\x47\xc9\x15\x3e\x48\xc9\x15\xee\xe9\x98\x31\x26\xae\xa1\x32\xd6\x48\x19\xa1\x9a\xd9\xe5\x6e\xe0\x17\xb8\x46\x09\x8b\xc3\xd9\x5f\xcc\x5b\x49\xb6\x11\xc2\xbb\x2b\xc0\xd0\xb0\x1c\xc3\x23\xba\xd2\x84\xe3\x1f\x95\x53\x29\x06\x02\x50\x8a\x81\xc4\x19\x68\x47\x29\x06\x02\x51\x8a\x81\x50\xef\xa4\x18\x08\x38\xe4\x14\x03\x49\x31\x90\x14\x03\xd9\xa5\x14\x03\x49\x31\x90\xc8\x83\xeb\x28\xc5\x40\x5e\x50\x8a\x81\xec\x3e\x9f\x62\x20\x07\x86\x99\x62\x20\xe4\x0b\x29\x06\xb2\xf7\x68\x84\x18\x08\xf9\xc8\x69\x2b\x6d\x78\x10\x6e\x89\xce\x31\xdd\x45\xa3\xe4\x81\x9c\x01\xa0\xd9\x72\x5a\xa2\x51\x6c\x59\xa8\xe7\x3c\xf4\x5a\x9e\xda\x87\x95\x3d\x73\xcf\x9f\x65\xcd\x71\x8e\x68\x40\x94\x26\x43\x24\xe0\x88\xb4\xcc\xc2\xe5\x4c\x24\x5a\xe6\x6a\x30\x11\x68\x27\x13\xd4\x38\xea\x2c\x63\x4d\xf8\x68\xb3\x6c\x60\x6a\x2e\xca\x2c\x73\x79\x58\xe8\xb2\xcc\xb6\x79\xa8\xb2\x93\xad\x3c\x8c\x24\xcb\x58\x78\x1e\x82\x6c\x12\xb8\x2f\x1a\x9f\xbd\xc0\x85\x1e\xa4\x47\x47\xa0\xc1\xc2\x16\xdc\xb0\x09\xd5\x96\x90\xbe\x6c\xca\xf2\xaa\xe5\xc9\x50\x63\xee\xa8\xf6\x54\x8c\xcf\xae\x94\x7b\xd7\x8b\xc7\x69\x3f\x9a\x2a\x0a\x01\xfa\x46\xf0\xae\xc2\x8c\xff\x5c\xaf\x56\xa2\x22\x36\xc6\x29\x06\x46\x54\xad\x00\x07\xc5\xba\x2c\x37\x05\x6a\x1e\x58\xbf\x22\xa4\x55\xac\x86\x05\x3f\x3e\x17\x54\xc7\x22\x2c\x0c\xc8\x0c\x01\x06\x45\x40\x78\x10\xe7\x81\x9d\xf0\x61\xce\xb9\x2a\xac\x23\x6e\xe0\x8d\x13\x74\x63\x87\x8a\x78\xd5\x2d\xc2\x38\x24\xa4\xc2\x45\xe0\x1a\x06\x54\xb9\x08\xea\x89\xbf\x86\xbc\x5a\x17\x01\x2b\x19\x56\xef\x22\x6c\x45\x03\x6b\x5e\x04\x2e\x2a\xbb\xee\x45\x60\x3f\xfc\xda\x17\x47\xe2\x1d\x56\x05\x8c\x00\xd6\xe1\x57\xc1\x48\xaa\xe2\xb5\xa9\x0a\x56\x2c\x04\xbe\x11\x49\xd5\xc7\x60\xbb\x69\x80\x49\x4a\xdb\x5c\xd1\xcd\xd2\x8d\x39\x06\x6e\x30\xee\xe6\xe2\x30\x3d\x9b\xe1\xb9\xcc\xce\x65\x74\x16\x23\xd6\x46\xde\xa8\x87\xe8\xc6\x78\x27\x01\xd3\xea\x0c\x3d\xcf\x38\xaa\x8a\xb6\x55\xdb\x70\x46\x94\x83\x96\x4d\x60\xa4\xab\xd0\x1f\xa5\xcd\x52\xdd\xc8\xfc\x31\xa7\x90\xf9\x71\x5e\xa9\xb5\x75\x57\x4e\xf8\x8b\xf8\x70\x1b\xcd\xda\x6a\x98\x18\x60\x7d\x58\xf1\x33\x20\xf4\xb0\x4b\xf3\x4c\x66\x63\xea\xc2\xa5\x73\xf5\xcf\x12\xcc\x02\xe3\x4f\xea\x52\x5b\xb0\xed\x2c\x6c\x82\xd6\xe3\xff\x37\x29\x0a\x4f\xb8\xec\x25\x1d\x2d\xa7\x88\x6b\xc1\x65\xa3\x73\x7c\x8e\xd4\x5b\x58\xc6\x0d\x60\x23\xed\xbf\xd0\x7e\x12\x7b\x87\x4d\x9e\x6f\x53\x4f\x5b\x7b\x92\x2e\x80\xb6\x4f\xa2\x7a\xfc\x0c\x3b\x3b\x6d\x7e\x07\x2b\x37\xf3\xf9\x7b\x4c\x66\x79\xb8\xb8\x6d\xae\xa5\xa9\xa4\x93\xf6\x42\x55\xee\x42\x9b\x8b\xae\x89\x37\x99\x33\xf0\xf2\xda\x7c\x29\x27\x2d\x0e\xc8\xcd\xce\x5d\xaf\xd1\x14\x12\xd9\xe5\xf5\x95\xce\x6f\xcf\x58\x26\x27\xee\x7d\x46\xf3\x60\x2d\xc6\xc3\xb5\x91\x57\x0e\xa9\xc4\x96\xcc\x37\xe8\xa5\x64\xbe\x0d\x75\x90\xcc\xb7\x9e\x92\xf9\x96\xcc\x37\x84\xce\x51\x01\x26\xf3\x6d\x88\x66\x28\x93\x13\xf7\x3e\xa3\x79\xb0\x56\xdc\x24\xaf\x2c\x2b\xd5\x9d\xac\xa4\xb5\x97\x46\x5f\x47\x8b\xfc\x61\x16\x1e\x37\x5f\x94\x61\xd9\xcd\xe7\x42\x07\x27\x0b\x5a\xa8\xb2\x31\xf2\xeb\xd2\x48\xbb\xd4\x25\xf0\xa9\xbc\xfb\x98\x9c\x2d\x07\x5b\x94\xbc\x45\xc4\xa5\x16\x73\x51\xd8\x16\x24\x8b\x43\x42\x2c\xc7\xa3\x1c\xdb\xb2\xad\xc5\xa3\x9c\xee\x33\x2c\x44\x9e\x75\x18\x78\x6f\x0c\xb5\x0a\x71\x8b\x90\x39\x8d\xb8\x2e\x65\xe8\xd1\x10\x1d\x1a\xa0\x3f\x23\xe8\x4e\x8e\xd5\x37\x59\xaa\x3c\xa4\x8e\x19\x0c\xa6\x2a\xe5\x94\x28\xdf\xcb\x52\x3c\x5e\xc9\x5c\x57\x08\xba\xf9\x74\x02\xbb\x96\x46\xe9\x62\x06\x03\xb1\x4d\x9e\x4b\x6b\x67\xa1\xc5\x18\x56\xf8\x4c\xf4\xd8\xab\x96\x14\xa7\xdc\xce\x4e\xad\xa4\x6e\xdc\xc9\x37\x10\x38\xe4\x68\x97\x3f\xd7\xf3\x18\xe3\x06\x00\x33\x79\xa8\x4b\xb6\xbc\x04\xb9\x9d\x8b\x3b\xc2\x63\xf7\xf5\x66\xfe\x78\x19\x3d\x03\x67\xdd\xec\x3c\x3e\x70\x92\x3b\x04\xb5\xd1\x4e\xe7\x1a\x4a\xd3\x61\x34\x8c\xa7\xda\xed\x71\x11\xb5\xbb\xe3\x26\xf2\x18\x29\x0a\x95\xbc\xe6\xe4\x35\x3f\xa3\xe4\x35\xef\x52\xf2\x9a\x93\xd7\x7c\xa0\xdd\x64\x0b\x27\xaf\x39\x79\xcd\xcf\x28\x79\xcd\x07\x86\x9b\x24\x45\xf2\x9a\xa3\x7a\xcd\xfd\xb5\x33\x12\x07\x1b\xe5\xea\x52\xad\x14\xe5\x3e\x67\x23\x50\xd6\x58\xdc\xc4\xbc\xd0\x24\xed\xf9\x8d\x1c\x7c\xd0\xca\xbc\x31\xca\x3d\xbe\xd3\x95\x93\x0f\x84\x68\xc0\x57\x5b\x94\xa5\xbe\xbf\x34\xea\x4e\x95\x72\x21\x3f\xd8\x5c\x94\x02\x01\xec\xe4\xdd\x51\xc9\x45\x2d\xae\x55\xa9\xb0\x99\x66\x02\x22\x15\x67\xe7\x0a\x66\x59\x61\x90\x1c\xc4\x6c\x56\xa3\x66\x65\x59\x3e\x31\x14\xb0\x34\x1c\x3e\xaa\x8d\xce\x7f\xd1\x4d\x05\x68\x46\x56\x7c\x46\x14\x9f\xab\xf2\xf1\x8b\xd6\xee\x27\x55\x4a\xfb\x68\x9d\x04\x10\x1f\x38\x23\x37\x4d\xf5\xd6\xfe\x6c\x74\x03\x2c\xfb\x8e\x46\xf9\xdb\x5f\xa3\x9a\x41\xed\x28\x7e\xd5\xd5\xfa\x4b\x27\xf8\xbe\x6f\x56\x02\x17\xc0\xa7\xfb\x3c\x2b\x3f\xa9\xaa\x79\xf8\xdc\xde\xb6\x8b\x0f\x27\x2c\xef\x24\x0b\x34\x09\x47\xde\xd2\xd4\x0d\xb5\xc0\x86\xdb\xc7\xa7\x68\xb8\x81\x56\x9a\xdd\x30\x43\xc4\xdc\xab\xaa\xd0\xf7\x76\xa2\xb5\x5e\xac\xac\x78\x67\x64\x21\xab\xb5\x6b\x77\x55\xa3\xd9\xdd\xcc\x69\x7c\xd9\xcd\x64\xc8\x71\x9b\x0d\x3a\x51\x0f\xd1\xed\x1d\x27\x8c\x6b\xea\x14\x8d\x3e\xb9\x32\x4f\xd1\xe8\x17\x83\x4d\xd1\x68\x3f\xa5\x68\x34\xf2\x42\x8a\x46\x3f\x7f\x27\x45\xa3\x7d\xbd\xa7\x68\xf4\x88\x81\xa4\x68\xf4\x81\xe1\x26\x49\x91\xa2\xd1\x51\xa3\xd1\xd6\x15\x8a\x88\x1d\xa2\x51\x85\xb6\xa9\xcf\x15\x85\xf4\x86\x36\xe7\xa4\x59\xa9\xaa\x8d\x6d\xfe\x22\xad\x15\x0b\x49\x23\x10\x82\xac\x76\xa0\xe9\x78\x10\x36\xce\x5f\x07\x13\x9f\x80\x3b\x5d\x36\x2b\xf9\x5e\xde\x29\xf2\xb0\x20\x7a\x76\x5c\xd1\xf6\x8a\x42\x3e\xb2\x76\xf8\x04\x89\x60\x78\xbe\xd6\xf6\xbb\xc8\x47\x8f\x8f\xa2\xd6\x2d\x78\x1b\x2e\x3d\xf6\x7a\xaf\xd6\x9d\x4e\xb2\xdc\x5d\xcb\x46\xd7\x62\x01\x9e\x53\x9c\x9e\x9f\xb6\x11\x66\xbc\x61\x14\xfb\xcb\x36\xd7\x93\xcc\xf3\x53\xbb\x1f\x1e\x6a\x28\xce\x37\xc9\xee\xda\x70\xd1\x0c\x37\xd7\xbd\x36\xb7\xaa\x5a\xbc\x57\xc4\xf4\x40\x13\x33\x07\x5c\x7a\x12\x2a\x0d\xd9\xff\x10\x3c\x1a\x2a\x48\x90\x68\x1d\x2f\x45\x1b\x8e\xd4\x31\xa2\x30\x21\x11\x79\xc8\xf3\x87\x19\x16\x8c\x89\x71\xa6\x0a\xf5\x23\x78\xc9\xe3\xbc\x58\x18\x63\x0d\xf8\x71\x30\x5e\x14\x2c\x20\x3a\xc5\x8c\x80\xb1\x7b\xe0\xde\xdc\x86\x63\x5f\x9c\xc8\x17\x33\xee\xc5\x89\x7a\xa1\x31\x2f\x5e\x7e\x3f\xe8\xc5\xc2\x3e\x2c\xdf\x83\x65\xfb\xaf\xa3\xbd\x57\x3c\xca\x35\x89\x12\x07\x1c\x62\x5c\x35\xa3\x71\x93\x93\xcb\xba\x57\xc8\x69\xa7\x60\x09\xe8\x31\x00\xf2\x2b\x99\x24\xc9\x24\x49\x26\xc9\xc8\x1e\x92\x49\xb2\xdb\x66\x52\x14\xc3\x94\x4c\x12\x3f\x25\x93\xe4\x89\xbe\x4f\x93\x84\x7c\x04\x02\xb0\x42\x18\x8a\xb2\x57\x50\xa6\x04\xed\x14\x50\x3f\x32\x98\x00\x93\xcf\xd0\xd2\x70\xd2\x98\xd0\x53\x34\x6c\x03\x00\xd6\x10\xba\x10\x88\x64\x80\xa7\x97\x61\xfd\x80\x2b\xcb\xb3\x7a\x26\xab\x70\xca\xb0\x74\x26\xcb\xeb\x80\xac\x1b\xd4\xb2\xe1\x1c\x18\x83\x16\x0d\x62\xcd\xc0\x93\x83\xe8\x16\x48\xaf\xf0\x74\x0a\x4b\x9f\x8c\xd2\x25\x98\xc5\x02\x8e\x06\x61\x23\x52\x25\x41\x2c\xc1\x4c\x06\x8a\x2b\xf6\xe0\xd4\x9f\xb8\xdd\x72\x12\x7d\xe2\xf6\x0c\xd9\x82\x27\x91\xf4\xdf\xf9\xfe\x3c\xde\x86\xc2\xd3\x71\x62\xb2\x16\x39\xb4\x4a\x17\xf2\x4a\x96\x32\x77\xc3\x15\x18\x79\xb7\x1e\x81\x85\x23\x47\x55\x1b\xa5\x8d\x1a\xce\x5f\x41\xa6\x88\x9e\x9e\xbe\x97\x77\xa5\xb0\xd6\x77\xb9\x81\xfc\x24\x0c\x02\x27\xd9\xdd\xcf\x9e\x4a\x76\xf7\xee\xa0\x92\xdd\x9d\xec\x6e\xdf\x73\xc9\xee\x4e\x76\xf7\x73\x4a\x76\xf7\xa8\x9e\x93\xdd\x3d\xf0\x74\xb2\xbb\xa9\x6e\x47\xda\xdd\x24\xf8\x0a\xc2\x75\x34\xe0\x0a\x1f\xb0\x04\x4d\x2e\x47\xe6\x1e\x01\x56\x39\xe5\x08\xc9\x47\xd6\x4a\xa4\x68\x4a\xff\xd5\x67\x72\x3c\x20\x00\x0b\xb2\xe2\x37\x34\x12\x04\x0a\x92\x80\x89\x05\x0c\x7d\x62\x82\x3e\x01\xac\x09\x2c\xdf\x19\xc2\x97\x88\xfb\x01\x38\x9a\x04\xaa\x5b\x20\x04\x09\x58\x74\x23\xa8\x11\x70\x63\xed\x83\xb1\x1a\x43\xd0\x21\x62\x4a\x28\xdb\xd4\x75\x29\x57\xb2\x72\xa2\x6c\xb9\xdc\xbb\x0e\x80\x4f\x85\x43\x94\xa0\x6a\x19\x71\x0f\xec\xa3\xcd\x5d\x39\x76\xec\xb8\x2f\x88\xf9\x81\x0c\x53\x02\xf4\xff\x70\x0e\x87\xfc\x3e\xc0\xe7\x43\xfc\x3d\xd6\xf9\xae\x7f\x21\x71\x6c\x12\x74\xb1\xf8\x78\x24\xf0\x24\x87\x61\x90\xe0\x6b\xc8\xc1\x1d\x39\xa6\x51\x20\xcd\x9d\xca\xe5\xdb\x3c\xd7\x4d\xe5\x46\x59\x06\x4e\x97\xd2\x08\xef\x5a\x13\xfb\x16\x63\x03\x79\x73\x23\x73\xc2\x9f\x00\x67\xf0\x56\xc6\xb9\x9d\xb8\x1e\xb6\xf0\x04\x9d\x59\x8d\x6d\xe7\x11\xba\xee\x1a\x5f\x48\x03\xf2\x0b\xfa\x94\xd1\xd7\x71\x3c\x0d\x0c\xfe\x64\x64\x5d\xaa\x5c\xbc\x98\x34\x9f\x43\x34\x3c\x31\x4f\xdb\xe3\xab\x5c\xd5\xa5\x70\x2f\x26\xc5\xc7\xb0\x2b\xe9\x44\x21\x9c\x38\x34\x91\x14\xa3\x8b\xaa\xd2\xce\xbf\x95\x8e\x7d\x8e\xe1\xfd\xd9\x0e\x48\x62\xea\x3b\xf3\xb2\xb1\x4e\x9a\xe1\x12\x0d\xe4\xb8\xe5\x83\x93\xa6\x12\xe5\xc7\xcb\x50\xa1\x03\x4f\xcd\xb0\xb2\xeb\x07\xf1\xd5\x88\x9b\x1b\x95\xfb\xaf\x3d\x93\xfd\x2d\xa5\x28\xdd\xf2\xdd\x52\xe6\xb7\xbf\xea\x42\xfa\x0a\x4d\xc4\x39\x3a\x2a\xb5\x28\xfe\x2e\x4a\x51\xe5\xa3\x96\x62\xb7\x99\xab\x36\x1e\xf0\x45\x54\x8b\x61\xae\x9c\x7e\x5d\xbc\x15\x50\xa2\xe8\xa2\x68\xc5\x5a\x2a\x62\xa5\x3b\xc2\x61\x0d\x50\x59\x4f\x87\xe6\x62\xf7\x89\xdc\xf2\xf4\xc6\xca\x46\xab\x95\xb5\x58\xb7\x56\xe9\xea\xed\xcd\x8d\xaa\xba\x58\xc6\x8d\x5a\x8c\x09\x65\xe4\xa5\x92\x15\x51\x6a\x06\x35\x72\x79\x58\x17\x1c\xa4\x0b\x9e\x97\x36\xce\xb0\xf4\x79\xd2\xc4\x9e\x08\x51\xfb\xd6\x69\x23\x16\x2c\x05\x2d\xda\x40\xfd\x2f\xba\x38\xbc\x20\x1e\xf9\x00\x8d\xff\x30\xf7\xad\x2d\x82\x4e\x38\x06\xd9\x05\xb5\xf2\x86\xaf\x48\x61\x73\xab\x86\x8f\xd1\xc9\x97\x7d\xc2\x8e\x78\xd9\xb7\xe9\x2f\xda\x51\x1d\xfc\x61\xc0\xa3\xf5\x32\x9f\x37\x18\x4d\x4d\xb0\x3f\x08\x7d\xfc\xdc\x11\x2a\xe8\x3c\x2f\x2b\xd0\x93\x7a\x43\x4d\xfc\x4a\xb8\xbc\x85\x59\xe8\x24\xf3\xb4\x5a\x7b\x96\x6e\x5f\xeb\x75\xc5\x40\x28\xe1\x05\x3b\x89\x18\x0e\xa2\xad\x6f\xe5\xf0\xfb\x17\x9b\x49\x9a\x52\x9f\xb7\xdc\xf3\x49\x5c\xcb\xe1\xb0\xe1\xbc\x76\x4a\xa7\xad\xbc\xb9\x5a\xde\x21\xf4\xa0\x36\x45\xe8\xab\x01\xbd\x52\xba\xf7\xeb\x01\x8d\x3f\xd8\xdc\x0e\x58\xd4\x61\x77\x69\xf8\x4d\x5d\xeb\x52\x2f\x5e\xbc\xe0\xdb\xfa\x9d\x79\x16\x26\x97\x1e\xbe\x55\xe2\x4e\xa8\x52\x5c\x0f\x9f\x33\x78\x0f\xaf\xb1\x43\x6b\xe8\xb0\x3a\xe8\x90\xba\x36\xf2\x46\x3d\x04\x6b\xfd\xa1\x80\x4a\x4f\x71\x7c\xd0\x74\x84\x3c\x83\x11\xd2\xd1\xe2\xc3\x56\x76\x4f\xc8\x1a\x11\x56\x77\x4f\x80\xa6\x63\x7d\xb7\x5f\xcb\xf9\xad\xf2\x9e\x50\x07\x8e\xb2\xd2\x99\x1f\xe0\xb7\xda\xd9\x8d\x21\xc7\x5d\x51\x33\xc9\x06\xac\xfb\xed\x03\xc4\xb9\x15\xb8\xb5\x80\xfa\x3f\xf0\x01\x35\x54\xfb\x27\xac\x7e\x0e\x3b\xfb\x18\x48\xbb\x44\x6b\xfe\xcc\x65\xc4\xd8\x69\x36\x91\xc8\x9f\x31\x16\x14\xf5\x2e\x7a\x9a\x24\xdf\x98\xf4\x3a\x7a\x62\xa6\x1b\x63\x5e\x48\x60\xe3\x88\x57\xd2\xd3\x7c\x60\xfd\x39\x99\xd2\x3e\xef\x65\xfb\x14\xe9\xc5\xec\x0f\x33\x6a\xae\x34\xe0\xdd\xf4\x74\x5e\x3b\x1c\xf0\x82\x58\x43\xf4\x7b\x45\x01\x4d\x45\x18\xd5\x18\x37\x31\xf4\xf8\x30\x39\x2d\xc9\x69\x49\x4e\x4b\x4f\xc9\x69\x49\x4e\xcb\x0e\x25\xa7\x65\x0e\x06\x42\x72\x5a\x92\xd3\x92\x9c\x96\x3d\x4a\x4e\xcb\x59\xec\xf0\xe4\xb4\xf8\x7f\x5e\x09\xeb\x0e\xdf\x7b\x48\x6e\x4b\x72\x5b\x92\xdb\x82\x3e\x92\xdc\x96\xe4\xb6\xec\x50\x72\x5b\xe6\x60\x22\x24\xb7\x25\xb9\x2d\xc9\x6d\xd9\xa3\xe4\xb6\x9c\xc5\x0e\x4f\x6e\x8b\xef\xe7\x21\x26\xbe\x78\x4a\x1d\x7b\xf1\xe7\xb5\x15\xf3\xe2\x8f\x9d\xeb\xf3\x03\xd8\x6b\x53\x17\xc2\xc9\x2b\x67\x84\x93\xbc\x74\x36\xa3\xcb\x52\x55\x8b\x6f\x6d\x03\x21\x9e\x56\x2d\x8c\x53\xbe\xba\x71\x31\x1c\x0d\xef\x6a\xb8\x03\xc9\x82\x59\x60\xfe\xe1\x9d\x34\xf6\xc0\xb7\x0c\x34\x75\x68\xa9\x2f\xfa\x36\x7e\x20\xba\xb3\x4e\xb8\x66\x6f\x52\x87\xa6\x5a\x5f\x5b\x69\xee\x64\xf1\xb3\xac\x9e\x6e\x73\x3e\x1f\x9f\xef\xe2\xe6\xf0\xdc\xd6\x4b\x61\xf1\x34\x4b\x23\x85\x85\x67\xe6\xc0\x17\x3f\xfb\x53\x3f\xd3\xd9\xdd\x9f\x44\x59\x2f\xc5\x9f\xb6\x7f\x6b\x3f\xbf\xb3\x2f\xf7\x7e\xee\xee\x50\xca\x62\xc7\x69\xee\x3d\x9b\xee\x2f\xff\x3f\x00\x00\xff\xff\x36\xc8\x3c\x79\xb9\x9d\x03\x00") +var _kubedbCom_elasticsearchesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfd\x73\xdc\x36\x96\x37\x8a\xff\x3e\x7f\x05\xca\xd9\xfa\xca\xfe\x96\x5a\x8a\x67\xb2\xd9\xac\x6b\x6b\x9e\x52\x24\x39\xab\x3b\xb1\xa3\x71\xcb\xf1\x53\xb5\xf5\xdc\x29\x34\x89\x56\x63\xc4\x26\x18\x02\x94\xdc\xb9\x75\xff\xf7\x5b\x78\x25\xc8\x26\x81\x03\x76\x4b\x56\x3c\x8d\x1f\x66\x9c\x16\x79\x88\xd7\x83\xf3\xfa\x39\xb8\xa2\xbf\x92\x9a\x53\x56\xbe\x41\xb8\xa2\xe4\xb3\x20\xa5\xfc\x2f\x7e\x72\xf7\x03\x3f\xa1\xec\xf4\xfe\xf5\x82\x08\xfc\xfa\x4f\x77\xb4\xcc\xdf\xa0\xf3\x86\x0b\xb6\xfe\x40\x38\x6b\xea\x8c\x5c\x90\x25\x2d\xa9\xa0\xac\xfc\xd3\x9a\x08\x9c\x63\x81\xdf\xfc\x09\xa1\xac\x26\x58\xfe\x78\x43\xd7\x84\x0b\xbc\xae\xde\xa0\xb2\x29\x8a\x3f\x21\x54\xe0\x05\x29\xb8\x7c\x06\x21\x5c\x55\x6f\xd0\x5d\xb3\x20\xf9\xe2\x4f\x08\x95\x78\x4d\xde\x20\x52\x60\x2e\x68\xc6\x09\xae\xb3\x15\xe1\x27\xfa\xcf\x27\x19\x5b\xff\x89\x57\x24\x93\x2f\xe2\x3c\x57\x5f\xc4\xc5\x75\x4d\x4b\x41\xea\x73\x56\x34\xeb\x52\x11\x9d\xa1\xff\x6b\xfe\xcb\xfb\x6b\x2c\x56\x6f\xd0\x89\x7c\xe1\xe4\x5e\x8f\x4d\x7d\x50\x7f\xe2\x57\xef\x17\xb1\xa9\xc8\x1b\xc4\x45\x4d\xcb\xdb\xad\xd7\x05\x16\x0d\x3f\xa9\x56\x98\x13\xef\xf5\xb9\xfa\x39\xfa\xb6\x9d\x8e\x93\xad\xb9\xf0\x68\x9d\xdd\x12\x8f\x50\x8e\x85\xfc\xcf\xdb\x9a\x35\x6e\x62\xd4\xc8\xf5\xe3\x66\xd6\x32\x2c\xc8\x2d\xab\xa9\xfd\xef\x99\x7c\x0f\x73\xc1\x6a\x62\xfe\xdb\x4d\xa9\xfc\x0f\x5c\x55\x3c\x63\xb9\xfd\x1b\x56\xab\x80\x90\x5e\xcc\x4b\x7f\xb6\xd5\xef\x05\xe5\xe2\x6f\xdb\x7f\xfb\x99\x72\xa1\xfe\x5e\x15\x4d\x8d\x8b\xad\x75\x52\x7f\xe3\x2b\x56\x8b\xf7\x6d\x4f\x67\xc8\xfe\x81\x96\xb7\x4d\x81\xeb\xde\x6b\x7f\x42\xa8\xaa\x09\x27\xf5\x3d\xf9\x58\xde\x95\xec\xa1\x7c\x4b\x49\x91\xf3\x37\x68\x89\x0b\x35\xe7\x3c\x63\x72\x62\x14\xcd\x0a\x67\x24\x97\xbf\x35\x8b\xda\xec\x3e\xf3\x1d\xbd\x50\x6f\xd0\xff\xf3\xff\xfe\x09\xa1\x7b\x5c\xd0\x5c\x4d\xb8\xfe\x23\xab\x48\x79\x76\x7d\xf5\xeb\x5f\xe6\xd9\x8a\xac\xb1\xfe\x51\x7e\x98\x55\xa4\x16\x6e\x16\xf5\x7e\x74\x27\xc1\xfd\x86\x50\x4e\x78\x56\xd3\x4a\x51\x44\x47\x92\x94\x7e\x06\xe5\x72\xef\x13\x8e\xc4\x8a\x20\xb3\xcb\x48\x8e\xb8\xfa\x0c\x62\x4b\x24\x56\x94\xa3\x9a\xa8\x21\x96\x42\x75\xc9\x23\x8b\xe4\x23\xb8\x44\x6c\xf1\x4f\x92\x89\x13\x34\x97\xd3\x50\x73\x39\x89\x4d\x91\xa3\x8c\x95\xf7\xa4\x16\xa8\x26\x19\xbb\x2d\xe9\xef\x8e\x32\x47\x82\xa9\x4f\x16\x58\x10\xb3\x28\xb6\xa9\xd3\x50\xe2\x42\x4e\x42\x43\x8e\x11\x2e\x73\xb4\xc6\x1b\x54\x13\xf9\x0d\xd4\x94\x1e\x35\xf5\x08\x3f\x41\xef\x58\x4d\x10\x2d\x97\xec\x0d\x5a\x09\x51\xf1\x37\xa7\xa7\xb7\x54\xd8\xb3\x9f\xb1\xf5\xba\x29\xa9\xd8\x9c\x66\xac\x14\x35\x5d\x34\x82\xd5\xfc\x34\x27\xf7\xa4\x38\xe5\xf4\x76\x26\xd7\x91\x0a\x92\x89\xa6\x26\xa7\xb8\xa2\x33\xd5\xf1\x52\x28\x06\xb2\xce\xbf\x71\x4b\x75\xe4\xf5\xb4\x77\x6e\x74\x53\x3b\x72\x74\xde\xe5\x9e\x44\x94\x23\x6c\x5e\xd3\xfd\x6f\xa7\x57\xfe\x24\x67\xe5\xc3\xe5\xfc\x06\xd9\x8f\xaa\x25\xe8\xce\xb9\x9a\xed\xf6\x35\xde\x4e\xbc\x9c\x28\x5a\x2e\x49\xad\x17\x6e\x59\xb3\xb5\xa2\x48\xca\xbc\x62\xb4\x14\xea\x3f\xb2\x82\x92\xb2\x3b\xe9\xbc\x59\xac\xa9\x90\x2b\xfd\x5b\x43\xb8\x90\xeb\x73\x82\xce\x71\x59\x32\x81\x16\x04\x35\x95\x3c\xd6\xf9\x09\xba\x2a\xd1\x39\x5e\x93\xe2\x1c\x73\xf2\xe8\xd3\x2e\x67\x98\xcf\xe4\x94\xc6\x27\xde\x67\xdc\xb6\x0d\x1d\x0f\xc7\xb6\x3a\xbf\x20\xb4\xc6\x9f\x7f\x26\xe5\xad\xe4\x7a\xdf\xff\xa5\xf7\xb7\x0a\x0b\xb9\x25\xdf\xa0\xff\xfb\x7f\xf0\xec\xf7\xff\xf3\xf2\x7f\x66\x78\xf6\xfb\xb7\xb3\xff\xfc\x3f\xff\xff\xff\x31\xff\x78\xf5\xbf\xfe\xad\xf7\xce\x60\x27\xed\xcf\x7a\x01\xdd\xcf\xf6\x4e\x88\xf5\x1b\x37\x62\x75\x5d\x34\xb7\xb4\xec\xf7\xbe\x77\xbc\x1b\xb1\x92\xd3\x98\xa9\xe3\x2a\xb9\xdd\x2d\x2d\x51\xc3\x49\x8e\x16\x9b\x2e\x4b\x44\x59\xd1\x70\x41\xea\x13\x74\xb5\xec\xd1\x44\xa8\x29\x39\x11\xc7\x92\x45\xe0\xa6\x50\x7b\x02\xcd\xd5\x5b\x3f\x35\xb8\xce\x4f\xd0\x85\xdc\x80\x92\x93\xe7\x6f\xd0\x47\x4e\xba\x7c\xd1\x30\x98\x93\xb9\xbc\xbf\xce\x5c\xcf\xb7\x3e\x42\x4b\x2e\x08\xce\x8f\x60\xf3\x87\x50\x26\x67\x66\x29\xc7\x46\xe6\x24\xab\x89\x08\xce\x85\x7e\x04\x3d\x50\xb1\x42\xf3\xf9\xcf\xfe\xdb\xbc\xbf\xca\x23\xb3\xae\x69\xaa\x29\x78\xc7\xf2\xad\x8d\xb3\x3d\xfd\xbf\x54\xfa\x62\x7f\x83\xd6\x2c\x27\x68\x41\xf5\xd4\x35\x9c\x20\x56\x6a\xa9\x82\xe4\x68\x49\x0b\xc2\xe5\x7a\x18\xda\x27\x03\x74\x11\x7a\xd7\x70\x75\x00\xb1\x61\x15\x0b\x22\x1e\x08\x29\xd1\xb7\x8a\x2d\x7e\xfb\x1f\xff\xf1\x1f\x72\x19\xda\xf5\xf9\xf6\xfb\xef\xbe\x3b\x41\x17\xb4\x26\x99\x50\xd7\xeb\x20\x55\x39\x1d\xb4\x54\xbc\xa0\xc2\x62\x85\x70\x4d\x90\x3c\xe9\x78\xb9\x24\x99\xd0\xdb\x44\xf1\x0f\x4e\x84\x64\x4a\x27\xe8\x46\xfe\xd7\x9a\xde\xae\x64\x6f\x06\x69\xd2\x52\xb2\xfb\x65\x41\x33\x33\xdd\x4c\xac\x48\x8d\x98\x9a\x0c\x79\xbf\x60\x4b\x5f\x7d\x57\x0e\x5f\xcd\xcf\x31\x2a\xe8\xdd\x30\xc9\x25\xff\x49\x4a\x11\xfa\x0a\x90\x2f\xd5\x84\x37\x85\x40\x19\x2e\xe5\x9c\xe8\x0f\xb4\x73\xcc\x89\x38\xe9\x6f\x23\x45\x86\xd5\x6b\x2c\xde\xc8\x8b\xe5\x2f\x7f\x1e\xf8\xbb\xde\x6a\xf2\xda\xb9\x25\xf5\xf6\xfe\x14\x64\x3d\xb0\x23\x7a\x8b\x7e\xb5\x94\xa7\xa5\x22\x19\x5d\x52\x92\x1f\x23\x82\xb3\x15\xba\x23\x9b\x99\x5e\xb6\x0a\xd3\x1a\x99\x19\xbf\xc0\x02\xa3\xa5\x94\x11\x06\x07\xad\xee\x5c\x39\xd4\x25\xa9\x49\x99\x91\xbc\xdd\xc3\x45\x21\x87\x5d\xd5\xec\x9f\x7a\x95\x68\x69\x6e\xd1\x7b\x29\x3b\x12\x84\x87\x57\x1b\xeb\xc9\x7e\x58\x31\x4e\x14\xef\x93\x57\x90\x7c\xed\x8e\x6c\xd4\xd4\x4a\xf6\x4c\x4a\x61\x7f\x56\x5d\x96\x0c\x01\xb5\x03\x1a\x24\xac\x2e\x70\xca\x65\x57\xee\xc8\x86\x87\x7a\xe8\x28\xa9\x0d\xc7\xd5\x92\x0e\xd2\x6c\xca\x2d\x8a\xe6\x0e\x32\x97\x9d\xea\x18\x56\x7d\x97\x1b\xd4\xd1\x7d\x58\x51\x23\xfd\x6d\xad\x20\x57\x24\xcc\xfb\x76\x19\xf4\xac\x1e\xfb\xf3\xc7\x89\x68\x2a\xfd\x4d\x52\xd7\xac\x96\x9d\x21\x7c\x78\x52\xa9\x9a\xae\x35\xae\xef\x48\x6e\x36\x39\x2e\x4e\x90\x94\x9b\x39\x5a\x9b\x53\x5b\x93\x02\x0b\x7a\x4f\x9c\x0c\x23\xfb\x21\x67\x1b\x0f\x30\x42\x3b\xa3\x47\x27\x27\x47\xfa\x58\xb2\x5a\x4a\x85\xb5\x39\x4f\xf2\xf7\x21\x26\x31\xba\x41\x7b\x5b\xf4\x1d\xae\x3c\xc9\x43\xce\x9f\x60\x08\xeb\x2f\x19\x86\x80\xcd\x4c\x0c\xf3\xa2\x10\x83\xd4\xed\x8e\x6c\xc6\xfe\xd4\xeb\xcc\x8d\xd9\x7e\x82\xd9\xdd\x32\xfc\x4d\x14\xba\x0a\xda\xb6\x1e\x61\xcc\x03\x5f\x8e\xb0\x67\x2d\x36\xd1\x82\x1c\xab\x55\x1c\xa5\x89\x62\x5c\xf9\x6a\xa9\x56\xdb\xe3\x09\xed\x4e\x0b\x50\xf5\x6e\x1a\x77\x9e\xe4\xcd\xdd\x63\xc1\x5b\xec\x36\x40\x32\x89\x11\x77\x98\x6e\x80\xe8\x74\x76\xac\x5b\x8c\x29\x9b\xaf\x04\x59\xb3\x6e\x72\x03\x27\xec\x3a\x77\x26\xf5\x11\x5b\xb6\x93\x20\x18\x5a\xe3\xca\x72\xc6\xd0\xd8\xd9\x09\x7a\x67\x4e\xb3\xdc\x05\x25\xc2\x0b\xce\x8a\x46\x68\xa2\xed\x1f\xcd\x51\x77\x17\x6d\x80\x26\x29\xc8\x5a\x72\x27\x75\xca\x1d\x01\xef\xf8\x2b\x2e\xaa\xcf\xee\x18\x27\xf0\xe7\x2c\x70\x5c\xa4\x8c\x4f\x6b\x92\x0f\x4f\xda\x6c\x74\xf0\xb3\xf1\x31\x0c\x8a\xb5\xfd\x3f\xe3\xba\xc6\xdb\x94\x2d\xef\x8c\x5e\xb1\x73\x75\x92\x36\xe8\x61\x45\xd4\x4e\x6b\x99\xb8\x64\x94\x72\xc7\xa9\x2b\xc3\xf2\x5e\xad\xd8\x0e\x6d\x61\xdd\x9b\x05\x63\x05\xc1\xdb\x6c\x98\x2b\x92\xef\x07\x54\x84\xad\x1e\x1d\xc9\xa7\xec\x16\xd2\xef\xd9\xdb\xa5\x62\xf9\xd1\x11\xd7\x16\x0f\xa9\xf3\x1b\x0e\x33\x22\xe4\x6d\xab\x51\x77\xcd\x82\xd4\x25\x11\x44\x69\x52\x39\xcb\xb8\x54\xa2\x32\x52\x09\x7e\xca\x05\xab\xf1\x2d\x39\xd5\xbc\x84\x7f\xa3\xbf\x3c\x74\xd4\x02\x5b\x61\x74\xc5\x24\x57\xa1\xb7\x73\xa5\x7a\x06\x45\xeb\x73\xef\x41\xa5\xd4\x96\x6e\x2d\xb5\x78\x63\x98\xfb\x3d\xcd\x09\xca\x94\xc1\xcd\x10\x6f\xea\x6d\x3b\x82\x6c\xea\x14\x2e\x59\xad\x6c\x41\x0b\xa5\x61\x76\x84\x90\x96\x39\x77\x58\x23\xc2\x1c\x42\x58\xf1\xa7\x07\xca\x89\xe5\xb1\xdd\x97\xb6\xe9\xf6\x17\x2b\x74\xff\xe1\x07\x6e\xf4\xaa\x1f\x0b\x96\xdd\xcd\x05\xab\x01\xfb\xe7\xec\xd3\x7c\xeb\x2d\x4f\xad\x97\x53\x7a\xf6\x69\x8e\x2e\x28\xbf\x73\xe6\x80\x11\xb9\x01\x2b\x79\x04\x0b\x81\xb3\x15\xc9\xf5\xd5\x2e\x37\x51\x41\x84\xdc\x88\x2b\xc6\x05\x5a\xe3\x6c\x45\x4b\x62\xc5\xe9\x12\x91\xcf\x15\xe3\x83\x67\x04\x59\x03\x4d\xc5\xf2\x41\x3d\x3f\x65\x83\xe2\x07\x6e\x54\xc3\x85\x1c\xa6\xb2\xf2\x0d\x6d\xd7\x98\x80\xb1\xe4\x37\x72\xd7\x8e\x70\xbe\xee\xd4\xbe\x95\xea\xd5\x86\x0b\xb2\x56\x5b\xdd\x9e\x52\x23\xe9\xa9\xf9\xda\xb0\x06\x3d\xe0\x52\x20\xc1\x46\x99\xe9\x9a\x35\x52\xe4\xbc\xa1\xd5\x1b\x74\x59\xf2\xa6\x36\xef\xda\x4b\xc3\xff\x84\x14\x47\x9b\xaa\x62\xb5\xd6\xa0\xc6\x19\xf4\x8a\xe8\xf5\x90\xa3\xc5\xca\xe8\xa3\xc9\x9c\xa0\xcb\xcf\x78\x5d\x15\x84\xbf\x41\x2f\xc8\x67\xf1\xdd\x8b\x63\xf4\xe2\xf3\x92\xcb\xff\x2b\xc5\x92\xbf\x18\x67\xfa\x57\xeb\xaa\xa0\x19\x15\x85\x31\xff\xd4\x7a\x0f\x2c\x88\x21\x84\x68\x47\x41\xf1\x97\x74\x94\xe6\xbe\x96\x7a\xf4\x03\x37\xbf\x5c\xfc\xf2\x06\xad\xd8\x03\xca\x19\x7a\x50\x12\xfe\xbd\xbc\x03\x95\xf0\xcd\x2d\x2b\xf5\xa6\x59\x99\xb3\x32\xb6\xae\x6a\xb6\xa6\x7c\x5c\x1c\xd4\x73\x6c\xb6\xfb\x98\x0c\x12\xbd\x27\x2b\x5c\x0b\x2a\x7a\x86\x54\xbf\x75\x77\xdc\x8d\xba\xe4\xcd\x2b\xb6\xf3\x23\xfb\xcd\xec\xab\xf1\xe5\x5c\x22\xb6\xa6\x42\x58\xb1\xd1\x72\x2c\xca\xdd\xcb\x52\x47\x37\xd4\xe5\x2d\xe3\xed\x9d\x51\xaa\x6f\x59\x6d\x5f\x39\xcd\xc9\xfd\x29\xcf\xf1\xeb\x63\xd5\x2d\x6e\xee\x56\xd1\x19\x03\xe6\xe8\xc5\xeb\x17\x27\x68\x4e\xd7\xb4\xc0\x75\xb1\x19\x56\x03\xed\x7c\x1b\xd2\xed\xfb\x92\x95\xdb\x0f\xc9\xae\xbf\xf8\xf6\x05\x7a\xc9\x6a\xf5\x45\x29\x34\x16\x04\xdf\x8f\xef\x0e\xd5\x17\xcd\x11\x36\x88\xac\x2b\xb1\x79\x35\x2a\x4f\x42\xa4\xc9\xb8\x2c\x59\x13\x9c\xff\x52\x16\xa3\x3a\x4c\x77\xbd\xad\x3c\xf2\x42\xd4\x0d\x79\x21\xd7\x65\xc9\xe4\x55\x28\xb9\x2b\x27\x9a\x45\x7c\x30\x14\xdd\x40\x46\x47\x4b\x4b\xf4\xab\x9a\xbf\x77\x72\x71\xd5\x32\x6b\xc2\x27\xa1\xcd\xf0\x42\xf9\x18\x02\x7c\xe1\x89\x38\x37\x8a\x8a\x55\xb2\x69\xaa\x57\x17\xb0\xf9\xfd\x58\xd2\xdf\x1a\x82\xae\x2e\x2c\xef\xae\x48\xcd\x29\x57\x96\x8a\xdc\xbf\x11\xe5\xdc\x9d\x7d\x9a\x8f\xce\xc1\xcb\xb3\x35\xfe\x9d\x95\xe8\xf2\xc7\xb9\xe9\xc2\xab\x27\xbb\xd2\x50\x9c\xd1\x84\xc4\xf1\x99\x9b\xb3\x51\xe9\x6e\x44\xe8\xc6\xbf\x37\x35\x91\x82\x43\x54\x0a\x39\xb3\x4f\xf6\x25\x0f\xf9\xbb\xb6\x56\xa9\xbf\x6a\xae\xa3\x54\xe4\xe1\x43\xab\xee\x34\xb9\xfb\x17\xb4\xcc\xcd\xe3\x9e\x14\x31\xe1\xc2\xcf\x14\x07\xbf\x1d\x33\xbb\x6e\x0d\xe5\xe8\xbf\x65\x17\xce\xf5\x5b\xda\x28\x80\xde\xb3\x92\x1c\xab\x83\x88\xe4\x49\x34\xff\xfc\x54\x53\x41\x46\xd9\x49\xf4\x6a\x90\xfb\x6f\x4c\x45\xd8\xea\x95\xbc\x18\x7c\x4d\x41\x4a\xb7\x7a\x07\x9b\x4b\x62\x51\xb0\x05\x32\x3b\x6c\x97\x1e\x7d\xfc\x70\x05\xee\xd0\xc7\x0f\x57\x8f\xd7\x99\x04\x41\xad\x2f\xa7\xb9\xbb\xd1\x33\x7d\xb7\x12\x40\x50\xe9\xed\x48\x5f\x61\x29\xeb\xa4\x27\x5f\x8d\xd2\x35\x72\x57\xb2\x7c\x35\x75\xe6\xfa\xfe\xc3\xd1\x79\x3b\xba\xfc\x5c\x69\x1b\xab\xf6\x81\xa2\xf9\x0a\x4b\x26\x82\xd6\x4d\x21\x68\x55\x98\x85\x94\x2b\xcb\x25\xe7\x1c\x1d\xa1\x59\x6a\x84\xb3\x4c\x9d\x58\x74\x41\x72\x6a\x9c\x3a\x52\xc4\xf2\x29\x49\x42\xdb\x2f\xbc\xc3\x25\xbe\x1d\x33\x27\x20\xcb\x8b\xd0\x5a\x3f\xe6\xed\xb8\x97\xac\x54\xf3\xe9\xfe\x84\xef\x31\x2d\xf0\x82\x16\x54\x6c\xe4\x1d\xfa\x6a\xfc\x62\xf3\x9d\x52\x5c\x0d\x7d\xf2\x61\x4e\xba\xf6\x7d\x67\x8b\xba\x7c\xd1\x4b\xf9\xfe\xe9\x83\x64\x28\xaf\x4e\xda\x1b\x7f\x45\x6a\xad\x4e\x86\x4c\x60\xca\xbb\xeb\x89\x09\xc6\xdf\xd2\x97\x06\xc2\xdb\x69\xfc\xca\x0d\x5f\x2d\x96\x89\x8d\xfe\xf1\xe3\x87\xab\x49\xd7\x8e\x3c\xd3\xb0\x6b\x47\x3e\x39\x78\xed\xa8\x3f\xcc\x49\x7d\x4f\x33\xe2\x6e\x9e\x51\x93\xf9\xfe\x6f\x9e\xaf\x77\x4f\xc4\x2c\x5c\x5b\xa3\x93\x9d\x29\xcd\xf5\x65\x8c\x5c\x4a\x9d\x31\xc6\x4d\x6e\x56\x6c\x1e\xbc\x32\x10\x3a\x33\xec\x42\xdd\x84\x72\xad\xfe\x36\x6a\x63\x8d\x9e\x58\x75\xe0\xc1\x03\x50\x9c\x11\x8d\xec\x74\xc0\xf7\xc2\xa7\xa8\x9d\xcd\xe1\x3f\xdb\xae\xa6\x9e\xa4\x8c\x54\xab\x65\xdc\xf1\x78\x4e\xaa\xd5\xdb\x79\xe7\x0c\xa9\xdf\xd0\xdb\x79\x47\x62\xd3\x67\x44\x2e\xdc\xf8\x8c\xca\x77\x2b\x96\x1f\x71\x54\xd0\x25\x11\x74\xb0\xd3\xb1\x93\xb3\x66\x25\x15\xac\x1e\x55\x43\xbb\xb7\xd8\x07\x3b\xb7\xe8\x9d\x79\x4f\xc7\xc7\x64\xac\x28\x48\xa6\xb4\x48\xb6\xd4\x03\xb2\x84\x53\x74\x1d\x62\x74\x62\x17\x05\xa8\xc5\xf7\x53\x3d\xb9\xa7\x1f\x2e\xcf\x2e\xde\x5d\x9e\xac\xf3\x6f\x56\xec\x61\x26\xd8\xac\xe1\x64\x46\x07\x4d\xa9\x28\xec\x69\x43\x30\x3f\x55\xc8\x10\x8e\x22\xbe\x8c\x31\x2f\xd6\x47\x63\x02\x55\x26\x0f\xb9\xe2\x24\x47\x35\x63\xe2\x18\xd5\xd8\x18\xca\x47\x18\x01\x32\xec\x73\xd9\x14\x85\x9e\x63\x51\x13\x72\xec\x2b\x98\xa7\x4f\x73\xab\x7a\xc3\x81\x32\xd3\x71\xb3\x95\x65\xb2\x29\xcc\x54\x6d\x9e\x80\x72\xfe\x78\x9b\x0a\xca\xaf\xc7\x2e\xd5\xd0\x5c\xce\xdd\x9b\xd6\xb7\xaf\x9c\x5e\x82\x29\xdf\xab\xf2\x25\x2d\xd9\xb8\x68\xf8\x91\x93\xba\xbb\x1b\x88\xc8\xd4\x30\x4f\x1b\x4e\xea\x13\x73\x1b\x3c\xfa\xb9\x8b\xdf\x07\xaa\x23\x1f\xc8\x72\xda\x04\x7d\x20\x4b\xa4\xa2\x1c\x4d\xc8\x85\x95\x1d\x70\x27\x8e\x6a\x5c\x82\xd6\xd3\xb0\x64\xf5\xf6\x8c\x29\xbb\xd5\xa0\xb5\x61\xbf\x53\x14\xf7\xcd\x0f\x87\xbd\x8d\x4f\x92\xaf\xb1\x9a\x99\x11\xc9\x66\x13\x76\x2f\x45\x38\xf2\x70\xfa\xc0\xea\x3b\x5a\xde\xce\x1e\xa8\x58\xcd\xf4\x8d\xc7\x4f\x95\x77\xec\xf4\x1b\xf5\x7f\x81\x7e\x59\x43\xf1\x59\x9e\x1b\x27\x73\xc3\xc9\xb2\x31\x5e\x26\x7e\xe2\x85\xbc\x1e\x2b\x05\xea\x18\x35\x34\xff\x5f\xe3\xbe\xe7\x04\x56\x3d\xea\xd2\x44\xb2\x13\xf5\x04\x5e\x5d\xdb\xa3\x58\xe3\x9c\x71\x45\x45\xad\x8c\xdb\x36\xe3\x5c\x88\x23\x9c\xaf\x69\xf9\xc5\x0f\x5c\x58\x20\x0a\xdc\xd3\x61\x81\x87\x96\xf9\xf0\x8c\x76\x67\xf3\x5c\x3d\xd7\x95\x78\xf4\xbb\x2e\x0e\xca\x7a\xc1\xb0\xd5\x06\x46\x7c\x5c\xac\xb4\x3e\xb2\xae\x87\x0c\x74\x60\xd7\x1b\xfe\x5b\x31\xd3\x5f\x9e\x55\x79\x3b\xc7\x4f\xed\xda\x7a\x1a\x93\x49\xcf\x31\x35\x6e\x31\xe9\x38\xac\xf6\x65\x38\x01\x49\x77\x49\x2b\x82\x0e\x42\xcc\x1e\xe6\x2e\x2e\xb7\x4c\xb8\x95\x55\xa4\x3a\xd7\x3e\x6c\x73\xb9\x9a\x90\x77\xa3\x73\x86\x3c\x7f\x15\xae\xf1\x9a\x08\x52\x73\x1d\x1c\x20\x98\x7c\xab\x54\xe1\x4e\x0c\xfd\x52\x91\x72\x2e\x70\x76\x37\x6a\xfb\x3d\xdc\xa4\x4f\x7e\x93\xa6\xf9\x85\x0c\x93\xa7\xb9\x5b\x5f\x9a\x4b\x29\xcd\xb8\x2f\xed\x9f\x4b\x73\x29\x3c\x2b\x8e\xf2\x38\xbe\x1e\x1d\xc7\xf2\x0e\x57\x71\x6b\x81\x7d\xb2\x77\x7d\xba\x9f\x95\x65\xc7\x64\xef\x54\xac\x6a\x0a\x9d\xcd\x35\xd0\xa1\x15\xe5\xe3\xd1\x8c\xb1\x43\x14\x89\xa7\xdf\xea\x77\x62\x4c\x7d\xcc\x6a\x7c\x32\x2d\xae\x7e\x94\xac\x17\x6f\x9f\x1e\x5b\x3f\x4a\x35\x1c\xf0\x19\x0e\xeb\x1c\x37\x30\x06\xc2\x3d\x83\x41\x9d\xa3\x14\xa3\xc1\x9e\xfb\x71\xce\x07\x8d\x2f\xbb\xc4\xe2\x07\xa6\x8a\x14\xf9\x40\x3c\x7e\x7b\x88\xc6\x03\xde\x47\x89\xba\x50\xfd\xd4\xb0\xfc\x71\x8a\x03\xe1\xfa\xc0\xd0\xfc\xa0\x55\x68\x28\x64\x1f\x10\x9e\x3f\x4a\x33\x10\xb6\x3f\x12\xa2\xef\x26\x1a\x14\x77\x32\x12\xbd\x3f\x12\xa9\x3f\x4a\x11\x1e\xc1\xbf\x15\xad\x1f\xf0\xb1\x45\xa3\xf8\x51\xdc\xbe\xb8\xdf\x68\x7e\x04\x94\x75\x22\x51\xfd\x5b\x1d\x4b\x89\xec\x47\x30\x01\x02\x45\x23\xfc\xb7\x7a\x01\x8e\xf2\x0f\x92\x44\x6e\x1f\x24\x45\xfa\x47\x68\x7a\x7b\x16\x1e\xed\x1f\xa1\x39\x2d\xf5\x2a\x42\x34\xed\x82\x50\x73\x1c\xa1\x18\xce\x09\x40\xe0\xbc\x00\x04\xcc\x0d\x40\xd1\xfc\x00\x34\x35\x47\x20\x32\x52\x7d\x04\xd2\xf2\x04\x00\xfb\x46\x75\x28\x21\x57\x20\x42\x32\x9c\x49\x80\xa0\xc7\x33\x9c\x51\x80\x82\x59\x05\x28\x9c\x59\x80\x20\x0a\x44\xdc\xb1\x12\xd2\xd8\x9e\xa7\xb6\xb6\x57\x4d\x2d\xba\x8a\xa1\x2c\x8c\xad\x39\x1a\xca\xc4\x68\x85\xa2\x7e\x32\xc6\xb8\xe0\x18\x4a\xd2\x40\x00\x13\x43\x58\x29\xe2\x34\xae\x0e\xcd\xaf\xd0\xcb\x73\x7d\xf8\x48\x6d\x5d\xd8\xe8\xaa\x14\xa4\x5e\xe2\x8c\xbc\xf2\xd5\xa4\x50\x4c\x94\x8d\xbf\x5f\xe1\x32\x2f\xb4\x8c\x8f\x4b\x44\x3e\x1b\x24\x03\xf9\x9d\xbc\xa6\xf7\xa4\x46\x2f\xcf\x8a\x6a\x85\xd1\x92\x60\xd1\xd4\x64\x30\xc0\x25\xaa\x3c\x29\x4a\xb0\xc8\x04\xfd\x51\x23\x58\x96\xde\xd6\xf6\xba\xa4\x3a\xaf\x7b\x3e\xbe\x1d\x3d\x7d\xef\x44\x2e\xb6\xba\x03\x14\xb3\xd9\xb0\xa6\x36\x86\xe9\x25\xd3\x9b\x21\x63\xb5\x54\x88\xd4\x07\x47\x29\x62\x8e\x6a\x72\x2b\xa5\xc9\x5a\x89\xa3\x06\x9a\x40\xa7\xa3\x4f\xdd\xc7\x7b\x89\x3c\xdb\x8e\x0f\x8b\xc7\xdf\x2f\x8d\x00\xab\xd2\x5d\x8c\x00\xae\x9c\x3f\x46\x70\xa0\x1c\x55\x98\x1b\x83\x85\x72\x2e\x71\xce\x32\x8a\xc7\x4c\xd3\xb2\x79\x6b\xa4\xc5\x64\x25\x22\xe4\x44\x90\x7a\x4d\x4b\xd2\x09\x06\xf6\x93\x11\xc6\xe5\x7a\x5c\x55\xc5\x66\xf2\xe4\x96\x2c\x27\xd7\xcd\xa2\xa0\x7c\x35\x4f\xb2\xed\xbd\x1f\x78\x51\xfb\xf9\xb7\x7c\x6e\xda\xde\x37\x3a\x80\x2d\x3b\x20\xe2\xa4\xe4\x54\x5d\xd6\x92\x3d\x4b\xe1\x81\x4a\x01\x8f\xa9\xe9\xb6\x54\xcf\xe7\x43\x91\x4c\xa6\xa7\xe6\x14\x30\x95\x59\x50\x10\x41\xdc\x01\xf1\xfa\xfd\xab\xd1\xdb\xca\x5c\xfd\xfa\xb1\xac\xfc\xdf\x47\x89\x67\xb8\x28\xb8\x91\xe6\xb4\x3e\x49\xb9\x63\xb6\x5a\xa6\x52\x6a\xc5\xc2\xee\x16\x2a\x37\x52\x6c\x16\x28\x77\x57\xae\x12\x3f\xbd\xfc\xb3\xee\x04\x71\xb4\x66\x3a\x65\xa5\x44\xac\xb4\x0f\x8d\xcb\x7d\xb8\x28\x2c\x21\xb7\x32\x5c\x99\x30\xf4\xe6\x1d\xdb\x3a\x07\xa3\xe9\x93\x1b\x4d\x93\x5c\x13\x73\xa3\x9b\xe8\x23\x87\xf3\x99\x8a\xbc\xec\xe5\xbf\x19\xe6\x1d\x53\x1a\x23\xbe\x8d\xc9\xee\x02\xfd\xdd\x33\xa1\x91\x62\xc6\x77\x92\x8f\x9c\x15\xdf\x75\x80\xa9\xee\xcc\xd4\xaf\xbd\x5e\xa8\x6b\x9f\x70\xc3\x25\x66\x46\xc9\xcb\xbc\x1d\x1f\xb8\x32\xa5\xde\xe5\xce\x8e\xc7\x8b\x0c\xb5\xf6\x22\x55\x77\xa8\xfe\xf1\x88\xa3\x9c\x65\xcd\x7a\x10\x6d\xc9\x6f\x72\xbd\x5a\xf7\x9d\x41\x42\x9a\xb6\x9b\x22\x71\xa2\xaa\x5f\xa9\xf2\x57\xce\x1e\xca\x07\x5c\xe7\x67\xd7\x83\x41\xe9\x5d\x31\xa5\x7d\xd6\x97\xb8\x2c\x09\x24\x7f\xc7\x0b\xd6\x08\x1b\xd2\x19\x0a\x64\xeb\xd8\xae\x0f\x76\x6a\xbf\x1d\xec\xd4\xcf\xca\x4e\x2d\x9f\xd4\x62\x50\x41\xb9\x90\xb7\x5d\x67\xc7\x1b\x1b\x91\x9c\x89\x3d\x18\x0c\xbd\x33\xa6\x79\x5c\x3f\xf6\xda\x13\x9f\x42\x57\x17\x33\xbb\xb8\xb5\x89\x78\xc2\x98\x3d\x9e\xe3\xf0\x36\x08\x6c\x76\x54\x34\x02\x12\xe6\xc0\x18\xbd\x70\xd2\x39\x29\xe4\x25\x8f\x70\xd7\x8c\x5f\xb1\xfc\x0d\x62\x21\xcf\xbb\x6e\x0a\xf9\x4c\xcd\x05\x3f\x36\x70\x8f\xc7\x5a\x7f\x92\xfb\xaf\x4d\xeb\x97\xa7\xc6\x31\xe1\x88\x69\x0b\x36\x6c\x34\x8a\xe1\x07\x98\x00\x8b\xea\x67\x31\x09\x34\x8c\x9f\xfc\xa7\x02\x25\xbc\x96\x07\x9d\xc6\x8c\x74\xb2\xc9\xcb\x5c\x10\x9d\xc6\x4a\xea\x35\x47\x6c\xd9\x05\x02\x7b\x71\xff\x3a\xa0\x0e\xd9\x06\x34\xee\x22\xbb\xdc\xd7\x51\x5b\xdd\xd6\x90\xaf\x3b\x26\x3a\x03\x3b\xc0\xd5\xea\x5b\xa5\xd2\x59\x66\x01\x03\x57\x07\xcf\x40\x97\xed\x6f\x78\x71\x03\x19\x52\x57\xad\x9b\x04\x80\x4d\x2e\x68\x0f\x43\x07\x93\xf9\xc1\x64\xbe\xd5\x1e\xc9\x64\xee\xb1\x5d\xc3\x61\x2c\x3e\x90\x6f\x46\x0f\x1a\x83\x74\xeb\x59\xda\x17\xc4\x4a\x4c\x46\x10\xb2\x86\x74\x6b\x45\x67\x75\x82\xe9\xfc\xe8\xe8\xe4\xe4\xe8\xc8\x5a\xde\xcd\x26\x6d\xc4\x72\xf6\x03\x22\x65\xc6\x72\xbd\x85\xe4\xd7\x6b\x2e\xd4\xd5\x0a\xeb\x6d\x77\x94\x6b\xdb\x4f\xdf\xe7\xa7\xbe\x1c\x5e\x44\x20\x2b\xb1\x39\xcf\x6f\x27\x5c\x8e\xed\x95\xe8\x32\xa7\xcd\x10\x32\x6b\x02\x05\xdd\x8d\x0e\x0d\x15\x15\x54\x81\x86\xca\x6d\xee\x80\x43\x5f\xea\x1f\x4f\xb2\xaa\x39\x36\x0f\x9c\xac\xc9\x9a\xd5\x01\xf4\x00\x4b\x57\x93\x90\xaf\x76\x68\x9a\xf7\x5f\xa9\xdb\x36\x6b\xea\x9a\x94\xa2\xd8\x3c\xc2\xbd\xeb\xe6\x21\x94\x5b\xd4\xb6\x5e\x5c\xaa\xb3\x23\x6b\x58\x64\xcb\xf3\x95\xa2\x66\xe2\x71\x63\x53\x80\x3c\x53\xbc\x7a\x8f\x94\xf7\xe8\x1e\xd7\x3c\x3c\x42\x94\x76\xd5\xe6\xf4\x9e\x72\x36\x6a\x41\x1e\x19\x60\x6b\x43\x90\x5b\x86\x35\xa2\x6a\x84\xe1\x3d\x76\x1f\x85\xf0\x64\xba\xcd\xed\xa1\x9e\x54\xf1\xfa\xc5\x3e\x07\x6a\xbf\x92\xba\x94\x2d\x3f\x6b\x41\x78\xad\x50\xb1\xc7\x95\x80\x4a\x05\x41\xe8\x9f\xee\x57\x23\x42\x01\xc4\x51\xf7\xb8\xae\xb8\x20\x01\x65\x02\xbd\xa0\x80\x20\xf0\x4b\xf3\x64\x37\x8e\x4d\x90\x75\xc5\x6a\x5c\x6f\x50\x6e\x34\xdd\x8d\x8d\x68\xc3\xf5\x88\xa5\x06\x5b\xac\x2e\x9b\xf3\xb6\x33\x36\x84\x1a\x45\x4e\xeb\x29\x71\xe0\x6b\x92\xd3\x66\x0d\xb3\x35\x7c\x52\x40\x44\x06\xdc\xc8\x66\x65\x6b\x02\xd6\x0c\xb2\xc0\xd9\x9d\x96\xdc\xdc\x84\x84\xf4\xf8\x2e\xb6\xc8\x0b\xe3\x75\x58\x13\x5c\x3a\x49\x50\xf9\x91\x58\x4e\xe4\x8c\xd9\x87\xf5\x37\x03\x81\x96\x56\x22\x2c\x8d\x91\xdb\x44\xad\xbc\x34\x04\x5e\xc9\x8b\xfc\x9d\xe2\xf1\x8f\x3a\xf9\x08\x94\x4b\x44\x7f\x27\x3f\xcb\x6b\x0b\x88\xfa\xc3\x04\x2e\x10\x36\xa9\x96\x4b\x54\xb0\x0c\x17\x6e\x35\x3a\x77\xc0\x16\x8e\xb7\xdf\xdc\x86\xb6\x3e\x36\xb9\x1a\xb2\x2f\xfa\x0e\x55\x66\x82\x82\x33\xe5\xc1\xa1\x19\x5e\x18\xa4\x34\x7d\x33\x8e\x52\x35\x2b\xa3\x88\xad\xf1\x67\xba\x6e\xd6\xa8\xe1\xb2\x67\xac\x34\xef\xda\x1d\xe3\x3a\xf0\x20\x77\xce\xb8\x15\x45\x6f\x81\x35\x2d\x15\xb1\xae\x88\xaf\x20\xf9\xec\xfc\x79\x41\x5e\x2b\x12\x88\x4b\xb7\x42\x32\x6f\xd6\x72\x02\x4d\xaf\x8c\x68\xc1\x96\xca\x27\xe1\x2e\x66\x85\x0a\x85\x35\x2a\xd9\x4d\xc0\x7c\xe4\xed\xe3\x92\x16\xdd\x8d\x6c\xf1\xbb\xdc\xc4\x36\xa5\xf1\x43\x83\x23\xe8\x87\x37\x65\xc3\x49\x3d\xbb\x6d\x68\xbe\xb7\xed\x18\xe4\x96\xcb\x2c\xca\x27\xdf\x9e\x77\x19\xe4\x5b\xba\xa8\x09\x3a\x5f\xe1\xb2\x24\x85\x8f\x30\xdf\x85\x8f\x1b\xec\x6c\x07\x52\x2e\x82\x28\xb7\x63\xf6\xfd\xf3\xcf\x86\x79\x74\x00\x11\xed\x74\x1a\x25\xfb\x6c\x41\xd3\x8a\x06\x08\x97\xd6\x5a\x1b\xde\x9e\x23\x81\xeb\x5b\x22\xe4\xcb\xa8\x6c\xd6\x0b\x32\x7a\x5e\xbe\x04\xd0\xd7\x97\x4e\xeb\x99\x9e\x81\xa3\xa7\xf5\xd3\xa7\xf7\xc0\x6c\xfc\xa1\x35\x79\x60\x75\x91\x3f\xd0\x5c\x87\x8f\x70\xf4\x52\x92\x7b\xf5\xe5\x52\xe4\x1f\x1e\x68\x3e\x65\x38\xc6\x7c\xa4\x86\x83\xd4\x78\x4c\xda\x08\x95\xb7\xca\x4b\x45\xf6\xd5\xf8\xf5\x4c\x95\xd1\x46\x3d\xa5\xcd\x0e\xeb\x05\x2d\xb1\x05\x28\x68\x27\x5a\xb1\x42\xb9\x8f\x8d\x19\x6c\x94\xa2\x2a\xad\xb0\x68\x8c\x51\x83\x89\x15\xe2\x74\xdd\x14\x02\x97\x84\x35\xbc\xd8\x8c\x2e\xfb\x63\x4f\x71\xf8\xce\x29\xc8\x67\xbd\x39\xe3\x77\x8f\x7b\xb4\x7b\x07\xdd\x92\x92\xd4\x34\xb3\x0b\xd2\xb9\x84\x86\x3d\x2a\x5c\xc7\xd5\xe8\xda\x34\xa7\x2e\xbb\xb3\x91\xcc\x4c\xc7\x59\x91\x0c\x2d\xb0\xbc\x77\x74\xad\x8b\x2f\x16\x55\xd5\xc6\x92\x48\x59\x39\x2a\xf4\x85\x5d\xed\xff\x82\x30\x5b\x37\xc3\x11\x4d\x39\xa9\x48\x29\x0f\x5e\xe9\xef\x2a\x3d\xbc\xc9\xb3\x67\x6c\xbd\x5f\x26\xcc\xc0\xe3\x4d\x97\x9f\x45\x8d\x25\x43\x59\x4b\xd6\x61\x2d\xd0\x74\x89\x70\x39\xce\x04\xf6\x1b\x1e\xf2\x07\xbe\xe2\x1e\x09\xfa\xe1\x71\xc2\xd0\xaa\xe1\x12\x38\x6e\x2c\xaa\xa3\x36\x5c\x6c\x34\x2c\xcc\x7e\xdd\xcf\xa3\x09\x46\x26\xa6\x86\x87\x79\x61\x60\xe3\xbc\x6b\x3b\xb0\xc5\xd4\x19\xb2\xa3\x38\x24\xd8\x3e\x93\x58\xb1\xc7\x88\xee\x59\x16\x2c\xbb\x03\xa0\x35\xbc\xd5\xcf\xf5\xb4\x50\xf3\x63\x1f\xae\xa1\xab\x61\x0e\x0e\xb6\x8b\xd2\xa0\xce\x89\x77\x39\x28\x47\xb7\x21\xae\x6a\x8e\x31\xb9\x8f\x35\x88\xdc\x82\x8c\x26\xf9\x37\xe5\x48\x46\x79\x54\x66\xc0\x02\xf3\x04\x28\xb5\x3e\x0a\x28\x27\x42\xc7\x97\x29\x00\x27\x5b\xc2\x0c\xcd\xfe\x1a\x76\x96\x99\x91\x5a\x0a\x52\xcc\xb0\xa3\xb6\x76\x3f\xe5\xd3\xe1\x34\x27\x86\x76\xee\x4a\x75\x4d\xbd\x2e\xcd\xd7\x3e\x7e\x04\xe6\x69\xcb\x07\x7b\x63\x35\x0b\xa6\x2c\x2e\x0a\xdb\xb7\x95\xc0\xc7\xc7\xba\xf4\x36\x8c\xa1\xf3\x08\xb6\x94\xdb\x8c\x5c\x3b\x78\x61\x10\x6c\xee\xd1\x4f\xe7\x97\xdd\x57\xba\x9b\xfc\xa7\xf3\xcb\x2e\x70\x7f\x50\xc0\x9d\x06\xdc\x8f\x02\xc9\xa6\xfb\x00\xee\xbf\xcd\x48\x0b\xba\x9c\x53\x7e\x77\x40\xed\xff\x2a\x51\xfb\xb7\xd6\x79\xdc\x47\x70\x80\xec\x1f\x69\x07\xc8\xfe\x61\xc8\xfe\x27\xe1\x41\x68\x6f\xa6\xc1\x2a\x07\xdf\xe6\x16\xa1\xde\x37\x00\x5c\x5f\x74\x60\xe9\x7f\x3a\xbf\x3c\xd1\x00\x8d\x01\x6e\xd5\x81\x2f\xb1\x50\xdc\xea\xcd\xa7\x9a\xba\x3d\xe3\x20\x6d\xe3\xdd\x06\x74\xc1\x80\xb7\xa5\x87\x6e\xb4\xa5\x9a\x3e\xf5\x04\x4d\x05\x5a\xd6\x7b\x2a\x59\x24\xa1\xe2\x03\xa9\x06\x39\x7d\x4f\x10\xd1\x0f\xf6\xac\x6c\x54\x15\x08\x66\x9c\x2a\x2f\x38\x16\x0a\x1c\xa0\x16\x34\x6b\x0a\x3c\x66\x15\xd7\x36\xb6\x13\x74\x71\x79\xfd\xe1\xf2\xfc\xec\xe6\xf2\xe2\x0d\xb2\xd4\xa9\x2f\x44\x9e\xa0\x1b\xd6\x1a\xe5\x34\x82\x8c\x76\xd0\x0d\xdb\x6c\xa9\x58\x79\x7d\x3a\x36\xec\x10\x97\xad\xd7\x51\x01\x67\xe0\x12\x5d\x95\x54\xb4\x91\x34\xa3\x22\x53\x56\x30\x5b\xb5\x5a\x52\x34\xb6\xc0\x5b\xaa\x0b\x3a\x96\x16\x03\x7a\x45\x7a\x5f\x50\x67\x54\xf9\xfb\x87\xc9\xda\x2f\x0f\x6a\xaf\x51\x75\xc0\xfa\xd8\x61\x28\xfc\xda\xbe\xde\x46\x2a\xe8\x3b\xc1\x05\xba\x59\x94\x09\x5b\x05\x72\xf4\xa0\xb4\xb8\x12\xea\x16\x3a\x3a\x39\xb2\x42\x4d\xd1\xab\x3b\xe8\x7d\x2c\x88\x42\x6d\x9c\xbc\xdd\x3d\x74\x82\xd0\x2f\xb6\x84\xd6\xb1\x94\x4c\xd2\x4a\x1b\x2a\x36\xe0\x23\x67\xf4\x76\xa8\x8d\xd5\x6d\x16\x7e\x27\x75\x32\xfb\x28\xd1\x5b\x7a\x4f\x4a\x3d\x71\xd3\x59\x9b\xed\x02\x68\xd5\x3e\xb4\x3d\xfe\xf8\xe1\xe7\xe9\x1f\xd5\x27\x07\xf4\xc9\x73\xb6\x5e\x53\x81\x56\x98\xaf\x5c\x92\x56\xeb\x5b\x77\xa7\x76\x5a\x5f\xc2\x9c\xab\x9d\x9c\x64\xee\xa5\x13\x79\x01\x08\xd6\x47\x3f\xd9\x47\x7b\x0a\x94\xfb\x79\x0b\xc7\x7a\xd8\xd9\xd5\x06\xfa\x00\x83\x7a\xc6\x40\x33\x5d\xdf\x77\xc3\x74\xb4\x35\xd7\x81\xde\xaa\x4b\xfb\xf8\x7b\x0f\x0b\xc8\xd5\x6d\x57\x42\x86\x1a\x62\x4e\x04\xa6\xc5\xb8\x15\xaa\x9d\x37\xc1\x2a\x56\xb0\xdb\x34\xfc\xd9\x81\xc1\x7f\xa3\xa3\x70\x67\x78\x26\x67\x75\xba\x6c\x0e\xc5\xb6\xb6\x41\xc4\x72\x02\xda\xd1\x38\x59\x55\xc5\xef\xc2\x15\xa1\x27\x1f\xe8\x1e\x85\xa5\xfe\xe8\xc7\x25\x6f\xa5\x35\x5a\xf8\x6f\xc5\x37\xdb\x3c\xcf\x8a\xd4\x6b\xca\xb9\x2a\xab\x3f\x20\x45\x8d\x12\x7d\xb2\x5d\x33\x55\xb0\x72\x27\x6c\x58\xec\x1a\x0e\x64\x0c\xb2\x2d\xc9\x5d\xc6\x92\x50\xb6\x4b\x0d\xa9\x8d\xda\x61\x5a\x55\x4d\x66\xe4\x33\xe5\xca\x3e\xa0\xcb\x4e\xd6\xed\xad\x3b\xec\x87\xf2\xf0\xf9\xad\xa1\xc7\x06\xe4\xe8\x37\x8b\x4d\x3f\xae\xa6\x95\x53\x06\x49\x5a\x33\x9b\x72\xb5\xe2\xa2\xd8\x68\xa8\x44\x95\x31\xaa\xd5\x72\x7c\xab\x3a\xcc\x6a\x63\xa6\xae\x6a\x7a\x4f\x0b\x72\x2b\x3f\xb1\xa2\xe5\xed\x30\x7b\x71\x19\xad\xb8\x28\xd8\x03\x31\xa9\x36\x64\xab\xff\xf2\x7c\x72\xe1\x47\x6d\x8d\x8a\x1b\xef\x7f\xb9\x41\x25\xd1\x9f\xe5\x3b\x0b\xf4\xb2\x13\xa3\xf1\xab\xb3\xd9\x4c\xd9\x2f\x5e\xfe\x53\xca\x8e\x79\xf1\x0a\x7d\x22\xe6\xdb\x52\x78\x96\x27\x3a\x13\xe8\x61\xc5\x94\xa6\xdb\x70\x33\xa6\xf0\xea\xad\x75\xb9\x36\x5c\xe6\xf6\xcd\x53\xf9\xb6\x14\xe0\xf4\xb5\xd5\xa1\xa1\x32\xb0\x39\x6a\x3d\x6a\x93\xe4\xcc\x44\x4e\x6a\x8d\xb0\x4e\xac\xf2\x76\x9c\x83\x0f\x08\x46\xfd\xaa\x1c\x45\xbe\x59\x17\xb4\xbc\x3b\x46\x54\x58\x36\x25\x77\x81\x09\xa5\x2b\xef\xec\xde\xac\x09\x2e\x3c\x2e\x1d\xd0\xef\x76\x5d\xe5\xc9\x1c\x5a\x80\x0d\x92\x37\x9b\x4a\xfb\xf1\xdd\x71\x37\xce\x67\x9f\x8d\xbe\x78\xf1\x58\x86\xb9\x1d\x47\x1a\x51\x4b\x27\xf0\x47\xca\x21\xb8\x3a\x47\x57\xf3\xf3\xf9\x55\xaf\xb0\x8f\xfe\x6d\xdb\x24\x9e\x16\x78\x98\x12\x79\x38\xbe\xff\x60\x97\x9a\x1a\xec\x6e\x32\x60\xb6\xc2\xd5\x59\x23\x56\x17\x94\x67\xec\x9e\x00\x95\x0c\x0b\xac\x64\x0c\xd3\x88\xda\xa9\xd3\x34\xd0\xf9\x7f\x9f\x5d\xc3\xaa\x13\xc4\x1d\xe8\xb6\x87\x73\xc2\xc1\x1a\xc9\x70\xff\x0c\x85\xbd\xf6\xee\xe0\x3c\x78\xf6\xce\x03\x75\x4a\xfe\xa8\x0e\x03\x5a\x52\x41\xb1\x60\xc1\x8c\xaf\xae\x36\xae\x2b\x99\xeb\x2d\x7f\x65\x5f\x57\xae\x5d\x75\x99\x76\x28\x86\x92\xad\x3d\x0c\x54\xaa\xf4\x9d\x8c\x53\x87\x3c\xd6\x0b\x06\x3c\x46\x25\x79\x30\xdf\xa4\xf6\x99\x51\xca\xff\x65\x42\x37\xe5\xbe\xc4\xc5\x5f\xdf\xfc\x97\xe7\x74\xf8\xab\x4b\x9a\x75\x60\x14\x0e\xb4\x4b\xa1\xa4\x4f\x37\x25\x20\x44\x7f\x83\xf1\x0f\x63\xfa\xd2\xe3\xf9\x7b\x83\x0b\x3d\x0f\xef\x77\xb1\xe3\x74\xe7\x0f\xd4\x0d\xbb\x86\x76\xce\xdf\x3b\x1d\xbb\xe1\x44\xdd\x59\xfa\x09\x51\xe3\x92\xcb\xc9\x84\x81\xe2\x1c\x19\xd7\xcf\x11\x7a\x29\xb2\x2a\x82\x88\xb3\x87\x50\x6a\xdd\x49\x33\xa7\x3f\xbb\x10\xea\xb1\xef\xee\xc9\x4f\xa2\xf6\x16\xcc\xb4\xd1\xe9\xe0\xb5\x7a\x11\xfd\x4c\xb9\xd0\xf1\x7e\x9a\x92\x2a\x96\xa3\x82\x6c\x47\xe7\x58\xca\x10\xd7\x0a\x5e\xb0\xfa\x07\xce\xf3\xfa\x8d\xbe\x7b\x2c\xb0\x43\xad\x24\x09\xe6\x4a\x5e\x39\x0f\xdc\x4b\xb1\xa9\x68\x26\xd5\xa0\x71\x2e\x75\x7e\xad\x28\x70\xf4\xc3\xf7\x3a\x4f\xfd\x2f\x7f\xfe\xfe\xdb\xd1\xa5\x7b\xfc\x28\xe7\x24\x1b\x42\x92\xbf\x25\x94\x18\x1f\xf3\xb7\x4c\xbe\xc6\xd3\xa2\xf4\x94\x00\x31\x6f\xab\x2a\x99\x53\xa8\xf7\x8f\x5c\x1c\xc7\x63\x61\x62\xc6\x21\xe2\xec\xc9\xd1\xc9\xf4\x62\xe9\xb3\x3e\x95\x47\x68\xf6\x70\xdd\x63\x0f\x9a\x0d\x8c\x76\xff\x39\xb0\x87\x9d\xb4\x32\xfa\xdb\xd0\x36\x9e\xc9\xdb\x60\xf0\x77\x7f\xa6\x53\xb5\xb9\x12\x62\x9e\x7f\xdf\x2b\x2f\x59\xa2\xf7\xa3\xb5\x25\x93\x12\x6d\x77\x35\xf6\x94\xcb\xc1\xb4\xf8\x3d\x5b\x4f\xac\x8a\x2a\xf5\x4b\x3f\xe8\x5d\x4e\x02\x27\xb5\x82\x71\x7b\x24\x3b\xc7\xc8\x00\xd1\x13\x1b\xa1\xe5\x48\xf5\xe8\xb5\x7e\x11\xd6\x9c\x92\xcd\xcf\x5f\x6c\xf6\xc2\x17\x56\x0d\xcd\x06\x39\x9a\xab\x67\xad\xc3\x42\x9e\x05\x1d\x11\x52\x4b\x71\x45\x72\x22\xc2\xb9\xbd\x2c\xde\xbf\x9d\x8f\x2b\x04\xde\x6e\xfa\x22\xbb\x66\x92\xb9\x68\x66\xfa\x9d\xca\x7b\xda\xc0\x0b\x2d\x75\x9c\x17\x98\x0e\x26\xbe\xf7\xce\xe4\xd0\x6b\xfa\x9f\x73\x6d\x53\xea\xd8\xe3\x5d\x60\xff\xb8\x65\x69\x90\xa2\x73\x47\x63\xa3\x37\x29\xb8\xaf\xc9\x6b\xd3\x0e\x76\x66\x97\xa9\xfd\x49\xff\x92\xc9\xcf\x4e\x62\x68\xea\x4d\x78\xd4\xd2\xb9\x7d\xbc\x9f\xc0\x34\x32\x15\x81\xa3\x39\x30\x45\xb6\x12\x6d\xc5\x6c\x82\x56\x07\x39\x7a\xcf\x36\x88\x9d\xe6\x15\xed\x9d\x8f\x7e\x4a\x4c\x7b\x89\xa9\x93\xbb\x89\xdd\xe1\xe3\xec\x76\x4d\xf2\xc1\x5d\x31\xc1\xca\xc4\x68\xe9\xeb\x81\x97\xba\x27\x55\x3f\x71\xae\xa3\xf6\x8b\x31\xad\xd3\x11\xd0\x81\x72\x43\x95\x1e\x47\xab\x3a\x4e\x38\x5a\x5f\x5f\x86\xdd\x9e\xea\x31\xc6\xbd\xfd\x39\x30\x4f\xe0\xea\xc2\x88\x58\x36\x17\x80\x9b\xad\x80\xda\xbd\xe0\xad\xfb\xe8\x00\x03\x61\xcb\xbb\x5d\x7b\x79\x7a\x41\x36\xb9\x78\x0f\xac\x86\x66\xca\x5e\x77\x1e\xef\x39\x94\xcd\xdf\xfa\xc9\x32\xc3\x22\xf6\x97\x3f\x05\x73\xe5\x31\xf3\x86\x30\x64\x36\xb7\x67\x63\x74\x31\x87\x8e\x0c\xe8\x68\x8c\x0b\x57\x63\x47\x26\x7e\x24\xc6\x2f\xc0\xfd\x1c\x95\xa4\x2b\x06\x9a\x9f\xd9\x4a\xf2\xa3\xdd\xdf\xfd\xa2\x82\x82\x7a\x03\x59\xc1\xaf\xe6\x61\x93\x1e\x24\xd7\xa3\x65\x0a\xd8\x1d\x93\x70\x2c\xcc\x17\xa9\xc0\xe8\xca\xaa\x45\xcf\xba\x06\xfd\x5d\xb2\x5a\x25\x59\x52\x9d\x77\xd9\x22\xea\x99\xac\xcb\x63\x83\xcd\xbe\xc6\xd5\x08\x66\x9c\x3c\xea\x3e\x5a\xf0\x84\x63\x9d\x0a\x6e\xfd\x0e\x80\x68\xdd\x45\xae\x1e\xdd\x7a\x31\x44\xeb\x71\x9c\xea\x71\xeb\x70\x0c\xbf\x7a\x1c\xa7\x7a\x94\x66\x12\x32\x68\x17\xfb\x33\x60\xc5\x06\x60\x82\x2a\xd4\xcf\x47\xb5\xdf\x9b\x0d\x07\x5a\x78\x8b\x4e\x6d\x23\xf0\xf4\x66\x97\xd3\x31\xcd\x3e\xde\xbd\xfc\x1c\x35\x3d\xb7\x26\xed\xb9\x2d\x54\x88\x0b\x56\xde\x7a\x4b\x11\xb0\x5c\x7a\x70\xf8\xc6\xe9\xbb\xa9\x02\xd6\x53\x18\x30\x64\xb0\xba\xea\xc8\xa0\xfc\x1c\xf0\x16\xb8\xbe\x2d\xb3\xaa\xd2\x3c\xdb\x0a\x79\x41\xc2\x70\xf8\xca\xc8\xb4\x0f\xf6\x14\x56\x2c\x33\x4a\x53\x7b\x63\x2f\xe4\xb0\x60\x65\x33\x01\x14\x07\x0b\x6b\x86\x0a\x68\x02\x68\x06\x4b\x6c\x0e\x96\xd2\x04\x0e\x3d\x5e\x6c\x33\x19\x8a\x3a\xa9\xec\x26\xba\x5a\x02\x48\xee\xbf\x00\x67\x77\x16\x12\x4a\x71\x02\x28\xba\x62\x9d\x09\x45\x39\x81\x1d\xf5\xcb\x76\x42\xcb\x73\xb6\x0d\x78\xd0\x92\x4b\x76\x02\x28\x22\x40\x59\xcf\xb6\xc1\x79\x87\x6e\xd1\x52\x9f\x6d\xdb\xa9\xe8\x67\xdb\x12\xd0\x5c\x75\x8b\xa3\x9a\x8f\xf4\x31\x8c\x6f\x0e\xa4\x88\x3c\x1c\x74\x08\xd2\x39\x98\xec\x16\x22\x7a\x08\xf3\x1c\x4c\x75\x14\x1b\x7d\x08\xfd\x1c\x4c\x75\x6f\xb2\x50\xbf\xc1\x65\xa3\x38\x0a\xaf\x6e\x70\x6c\xf4\xb6\x41\x51\xd2\xdb\x16\xc7\x4b\x6f\x5b\x52\xb1\x51\xf0\xcc\x99\xa2\xa4\xa0\xb2\xa3\x60\xa2\xef\x06\xea\x1d\x0f\x17\x20\x05\x93\x1c\x2d\x54\x0a\xe4\xbc\xba\x25\x32\x0d\x18\xce\xb2\x6e\xe1\x42\xa5\xfe\x73\x41\x6d\xa4\xdf\xd7\x68\xb1\x06\xff\xe1\xf1\xb0\x90\xb6\xc5\xe2\x15\x74\x7b\xbe\x51\x0b\xba\xa5\xc6\x2e\x00\x48\xc6\xa2\x1b\x74\x4b\xd8\x41\xb1\xd2\xa8\x6d\x4b\x2e\x92\x0a\x18\x8e\x2b\xa3\x1a\x2f\x97\xda\x1f\x5d\xc8\x2e\xd3\x7d\x32\xba\x3b\x23\xc5\xbc\xbc\x07\xe3\x5a\x90\x47\xcb\xea\x41\x91\x01\x3d\x03\x2d\x69\xbb\x54\xd3\x56\x3d\x25\xc0\x62\x06\x4a\x39\x25\xf7\xef\x71\xca\x3b\xb5\x6d\x1f\x85\x9e\xda\x96\x2a\x88\xc2\x8a\x3f\xb5\x2d\xad\x0c\x14\xf8\xba\x72\xe5\xa2\xa0\x05\xa1\xe0\xa2\x4e\x42\xe1\x28\xaf\x3f\x89\xd3\x88\x12\x8b\x49\xb5\x2d\xb5\xac\x54\x02\x69\xa5\x85\xef\xa9\xc0\x54\xdb\x92\x15\x09\x94\x56\x74\xaa\x6d\xd0\xf2\x53\x69\x53\xd2\x2b\x55\x95\x56\x88\xaa\x6d\x13\xa6\x21\x45\x3c\x42\x09\x65\xaa\xfa\x9d\x02\xca\x40\xe8\xa0\xe4\x1d\x94\xbc\xaf\x49\xc9\x8b\x95\xc7\x82\xdf\x46\xb6\x8c\x56\xac\x50\x56\x92\x3a\x36\x5c\x50\x0b\xf5\x4b\x66\xc1\xb5\x46\x48\x69\xad\xd4\x8b\x78\x3f\x45\xb6\xda\x96\xcc\x26\xd3\x0a\x6f\xb5\x2d\xbd\x04\x17\xfc\x84\x4a\xb9\x04\x5e\x8c\x0b\x4c\xb7\x5b\xb4\x2b\x5e\x96\x2b\x49\xe6\x49\x2f\xdf\xd5\xb6\x29\xd2\x4f\x62\x49\xaf\xb6\xc1\x8b\x7b\x25\xdd\xf3\xb6\x10\xd8\xd4\x32\x5f\x6d\x9b\x24\xf0\x80\x4b\x7f\x79\xaf\x00\x8b\x80\x25\x4d\x43\xb7\x60\xd8\x48\x39\xb0\x24\x8a\x90\xd2\x61\x6d\x9b\x34\x79\xf0\x72\x62\x6d\xdb\x67\x61\xb1\x9d\xba\x9f\x2e\xe5\x81\xca\x8e\xf5\xfb\x04\x16\xf2\xd2\x8c\x72\x5f\xd2\xd8\x06\x24\xaa\x43\x37\x76\x36\x8f\x18\xa0\xee\x7f\x45\x0f\xb1\x49\xf9\x32\xee\x53\x98\x55\x21\xc1\x3d\x0c\xab\x7c\x7c\x70\x0f\x83\xdd\xc3\x7a\xbd\x0e\xbe\xe1\x4e\x3b\xf8\x86\x0f\xbe\xe1\x83\xd9\xe0\x60\x36\xb0\xed\xe0\x1b\x86\x92\x3c\xf8\x86\x01\x0f\x1f\x7c\xc3\x5f\xa9\x6f\xd8\x08\xbf\xda\x31\x0c\xdc\x68\x5f\xdc\x2f\x6c\x8a\xab\x9c\x65\x19\x6b\x4a\x71\xc3\xee\x48\xc4\xc9\x04\x52\x80\xb6\x68\x46\x06\xf6\x38\xba\x12\x6e\x72\x2a\xf5\x92\xc4\xb5\x3d\x33\xaf\x59\xa5\x41\xde\x15\x65\x4e\x72\x47\x0f\x31\x88\x28\x2e\x5f\x15\x72\xec\x27\xe8\x0c\xd5\x24\xa3\x15\x25\xba\xc2\x30\xd6\xbf\xeb\xc5\xb7\xd8\xf1\x00\x8a\x54\x70\x52\x2c\x0d\x16\x77\xe9\xd5\x5e\xf1\xa4\x7d\xc3\xc8\x6d\x57\x21\x72\xf8\xb2\xed\xaa\x56\x46\x98\x05\x89\xb6\xc5\x68\x6a\xf2\x4f\x2b\x05\xe8\x11\x41\x0e\xbf\xd7\x8b\x8e\x5b\x50\x4d\x69\xdb\x75\xf3\x79\x5c\x51\x93\x3d\xbd\xcf\xd3\x4d\x3e\x57\xb4\x56\xdb\x73\x4e\x32\x56\x8e\x97\x9d\x6c\x5b\x67\x2b\x5c\xf6\xdf\xb7\x7b\xc2\x58\x50\x49\x8e\xf2\xa6\x86\xba\xe4\xd9\x52\x8a\x92\x34\xa7\x62\xe3\x1c\xb1\xa6\xb6\x11\xd6\x67\xc5\x6d\x18\x0e\xb4\xad\xeb\x8d\x84\xab\xaa\x66\x38\x5b\x11\xee\x8d\x58\xcb\x98\x26\x83\x2c\x86\x3e\xdb\x36\x53\x03\x4c\xa9\x77\x8a\xaa\x94\x5e\x8a\x0d\xaa\x99\xb0\xa1\x04\xbd\x4e\x43\xbb\xa9\x3d\x08\xb6\x43\xea\x03\x5a\x58\x10\xf5\x46\x45\x24\x30\xef\x23\xe0\xb1\x53\x6f\xfb\x2a\x7c\x90\x22\xb7\xf8\x20\x3f\x7c\x8b\x2a\x52\x67\xe6\xd4\xc1\xa2\x75\x14\xac\x85\x60\xa8\x90\x32\x9b\x64\xe5\xe3\xe4\xff\xfc\x1d\x5a\xb1\xa6\xe6\x27\x36\xa3\x0b\xd4\x67\xf4\x5a\xbd\xa5\xb5\x5b\xab\x62\x08\x54\x10\xcc\x05\x7a\xfd\x2d\x5a\xd3\xb2\x91\x57\x73\x94\x98\x27\xfc\x7e\xff\x1d\xf0\xd0\xc0\xc4\x5e\x98\xc0\xbb\xed\x44\x37\x67\xa3\xd2\x98\xba\x46\xee\x35\x27\x3e\x9c\x2d\xe8\x7d\x5b\x61\x65\xf7\xbc\x63\xe6\x5a\xf0\x57\xa2\x14\x6c\x8f\x9c\x02\x26\x43\x02\xa4\x42\xd0\xad\x0b\x78\x28\x2c\x2a\x86\x53\xe0\x8c\x21\x7e\xe0\x6f\xc1\x0f\xff\xd6\xb0\xc5\x46\xc4\x73\x5d\xff\xae\x9f\xeb\x26\xb9\xda\x1f\x87\x41\x65\x06\x07\xd9\x01\x7a\x6f\x31\x65\x06\x9e\x8d\xdd\xf8\xb7\x52\x0f\x05\xe5\x41\x29\x8d\x55\x25\xaf\xe2\xca\x19\x1a\xb3\x8c\xe8\x02\x8f\x17\x5e\xc9\x79\xa6\xa9\x06\x97\x67\x5f\x19\xa1\x41\xec\x16\x3b\xb3\x36\x1f\x6a\x5c\x6b\xdc\x37\x7c\x78\x5c\xd6\xac\xc9\x2d\xe5\x02\x5c\x77\x41\x3f\xdc\xdd\x38\x9c\x96\xb7\x1a\x63\x7b\xdd\x14\x82\x56\x85\x1b\xf1\xe8\x38\x1d\x21\x73\x0f\xf9\xc6\x4e\xec\xd9\xe0\xb0\x4e\x9b\xd6\x28\x52\x15\xa6\xe3\x6c\xef\xa5\xfb\x36\x29\x85\x86\x78\xae\xe5\x35\x57\xe1\x1a\xbb\xe9\x54\xf5\x5d\xf9\x2b\x63\x4f\xc5\xca\x09\x3c\xce\xf2\x95\x47\x58\x52\xc3\x85\x9b\x26\xe5\x28\x34\xee\xc3\xa9\x1b\x4b\x90\x12\x97\xa3\x3e\x8a\xae\xf9\x41\x3d\x8a\xd8\x83\x8b\xf7\xd3\xc5\x36\x7a\x3b\xca\x48\x8c\x3f\xe2\xec\x8e\x94\xe3\x1a\x88\xaa\x81\xa4\x26\x22\xdf\x94\x78\xad\xf1\xb6\xfc\xb2\xce\x3d\xba\xfc\xd8\xd8\xcd\x42\x00\x9a\x44\xd8\x24\xf0\x60\x61\xd5\xe8\xac\x34\x1c\x08\xf5\xf3\x91\xeb\xe2\xce\xa1\xf3\xcf\xb5\x47\xaf\xa6\xf7\x19\x89\x89\x38\xf2\xc3\x53\x3b\x7d\x3f\x8a\x2d\xb0\xd5\x6d\x83\x2b\x40\xbd\xdd\xad\xcc\x73\xce\xf5\xa2\x50\xbd\x70\x21\x8f\xfc\xc6\x46\x92\x8c\x76\xba\xb7\x01\x16\x9b\x5d\xea\xaf\xc4\xca\x8f\xe8\xad\x3f\xf8\xc7\x51\x99\x34\x78\x4f\xd5\x8b\x78\x8e\xf6\xd1\x87\x1f\x2f\xba\x7c\xe6\x03\xce\x19\x47\x3f\x16\x2c\xbb\x43\x17\x44\x89\xaf\x4f\x5d\x94\xa4\x5e\xe4\xbb\x41\x51\x1f\xa0\x94\x47\x69\x3e\x17\x28\xe5\x7a\x91\x6b\xb3\xd7\x38\xd5\x67\x0b\xa4\xbc\xc6\xb7\x50\x4c\x7d\xa9\x01\xab\x03\xa5\x5e\xb2\x75\xaf\x26\x1e\x85\x6f\x56\xec\x61\x26\xd8\xac\xe1\x64\x46\x47\x83\x28\xa2\xfd\xbf\x23\x1b\xf9\x37\xd8\x08\xfe\xa6\x1f\xee\xa8\x2c\x82\x29\x03\xbb\xfa\x5d\xde\xd4\x1f\x7e\xbc\x90\xd7\x85\x93\x98\x46\x67\x9f\x72\x74\x4a\x44\x76\x9a\x91\x6a\x75\x6a\xba\xf1\xc5\xa7\x63\xcd\x4a\x2a\x58\x0d\x2c\x5d\x74\x86\x32\x56\x14\x26\x8b\x9f\x2d\xd1\x39\xa9\x56\x8e\xc4\x63\x8f\xe5\xf1\xc1\x78\x2b\xc6\x60\x20\xa6\xde\xd6\x96\xef\x98\x9d\xed\x29\x06\xf5\x22\x8d\x79\x3c\xe5\x92\xff\x81\x6a\x3c\xee\x7d\x5a\xf6\x87\x5d\x7c\x34\xb7\x8f\x2b\x45\xd0\xf3\xaa\x74\xa1\x8a\x0d\xd9\xd1\x99\xe9\xb0\x90\xab\xa5\x16\x95\x73\x92\x23\x76\x4f\xea\x9a\xe6\x84\x23\xc7\x2b\x7c\xcd\x93\x16\x7b\xa9\xe7\x34\x61\x26\x0f\x28\xcb\x4f\x8e\xb2\x0c\x56\x5c\x3c\xc6\x24\xdf\xd9\x66\x4c\x38\x5f\xd3\xf2\x99\xb2\xa6\x08\x5e\xb2\x94\x21\x06\xff\x62\x2f\xa0\x54\x15\x81\x67\xb8\x20\x57\x83\x42\x58\xd7\x8b\xa7\x9f\xeb\x6a\x0a\xf6\x47\x0f\xa9\x70\x02\x72\xdb\xdf\xdc\x86\x46\x25\xcb\x87\xed\xb9\xff\x7a\xd8\x85\xde\x7e\xd5\xd0\x6d\x53\xaf\xba\x5b\x2c\xc8\x03\x06\x96\x69\xb5\x43\xe8\x21\xf9\xda\x85\x3e\xbb\xbe\x42\x3f\x69\x7a\xd3\xc1\x12\x6b\x26\xb4\xf4\x74\xc1\xd6\x98\x02\x8b\x68\xac\xba\xa5\xa7\x6d\x87\xae\x1d\x31\xa4\xa9\xd9\x0a\x1f\xa3\xf3\xab\x71\x89\x1a\xa9\xf5\x18\x8d\xe4\x80\x65\x37\xd0\xd2\x04\x81\x56\x0e\xf0\xcc\x2c\x36\xcc\xb3\xad\x6d\x60\x56\x2d\x68\x22\x6a\xdd\xaa\x88\x93\x92\x53\xe5\x19\xf1\x9c\xe7\xa6\x88\x9b\xae\xf9\xa7\xe3\x34\xb5\xb0\x30\x7e\xa4\x7e\x66\xb7\xb4\xb4\xa7\x92\x19\x87\xdd\x12\x8f\x4b\x0f\x87\xdb\xfd\xc9\x6f\x77\xce\x8b\xcb\x12\x2f\x8a\x71\xc7\x52\x97\x89\x17\x58\x79\x41\x89\x7a\xe7\x34\xa7\x5c\xfe\x3f\x9a\xcf\x7f\x56\xc6\xe7\xa6\xb4\x92\xa7\x32\xc3\x1a\x96\x35\xbe\x43\x72\x1f\x82\x78\xfa\x99\xd1\xfc\x04\x8c\x31\x78\x55\xe6\xb2\x9b\x84\x77\x62\x63\x0c\x15\x0d\x9b\xe8\x02\x89\x55\x74\x41\xc8\x9f\x71\xb3\xa2\xd9\xdd\xb5\x67\x63\x66\xb5\xfc\xad\xf4\x7e\xea\x5c\x2a\xfd\xbf\x4d\x65\x82\xa6\xbb\xd7\x50\xb5\xf1\xc6\xe3\xde\x73\x33\x54\xf9\x32\xc2\x9c\xb3\x8c\xb6\x4e\x04\x65\x6c\x70\xec\x7d\x7c\xe9\x14\xdb\x9f\xde\x7d\x75\x43\x4f\xba\x83\xec\x42\xd9\x2a\xa3\xdc\xbf\x5b\x02\x31\xcc\x66\xf4\x93\xbb\xac\xb7\x04\x18\x03\xfd\xa6\x83\x7a\x6e\xe5\xb3\xae\xfd\xdb\x05\xb9\x47\x18\xb4\x95\x9b\x6c\x25\xc3\xad\x25\x73\xe8\xe7\xc6\xb5\xfa\x28\x96\x72\x23\xd1\x0c\xfe\xcd\xdd\x5b\xc3\x7f\x1d\x93\xe9\xc2\x32\xf2\x68\xb2\xcb\x90\x36\xdc\x73\xda\xe9\xdf\x8c\x69\x5c\x85\x08\x55\xac\x6a\x0a\x1d\xbb\x31\xe2\xf0\xd9\x06\x90\x9f\x64\x61\xd5\xdf\x9e\x54\xdc\x3f\x11\x2d\x35\x1c\x52\xbe\x05\x9c\x1a\xe3\xc3\xbe\x28\x1e\x00\x4e\xf5\x24\xaa\x6f\xbf\xff\xee\xbb\x00\xc2\xfc\x38\xc4\x6a\x1c\x4a\x75\x94\x2a\x24\x94\x7c\x2c\x44\x7c\x5c\xb6\x1b\x09\x1d\x8f\x86\x84\x8f\xdf\x0d\xb1\x50\xf1\xfd\x60\xac\x06\x2d\x93\x13\x72\xac\x5c\x06\x55\x60\xaa\x20\x99\x55\x03\x99\x47\xa3\x14\xc3\xf9\x54\x81\x6c\xa9\x71\x8a\x03\x59\x54\xc0\x1c\xa9\xa0\x07\xa3\x75\xe3\x27\x65\x46\x8d\x3b\x85\x96\xfb\xce\x87\x4a\xcc\x82\x6a\x73\x9c\x46\x29\xc2\x73\x9f\xb6\x32\x9b\xc6\x2f\x34\x58\xc6\x53\x0a\xc6\x6f\x3c\xbb\x09\x90\xb9\x04\x8b\xdc\x8d\x66\x29\xed\x94\x9b\x04\x0c\x09\x8b\xe7\x21\xa5\x5c\x15\x6d\x56\x51\x90\x24\x82\xe4\x1c\x6d\xe7\x12\x45\x68\x06\x32\x8d\xc6\x33\x88\x22\x34\x13\x2e\x05\x8f\xf9\x47\x88\xa6\x5d\x0d\x6a\x8e\x23\x14\xe3\xb9\x44\xf0\x0c\x22\x68\x00\x65\x3c\x78\x32\x29\x47\xc8\xe6\xfe\x44\x46\x0a\xc9\x0c\xea\x67\xfc\x00\xf6\xcd\x70\x3e\xd0\x78\x9e\x4f\x84\x64\x3c\x0b\x08\x74\x3c\xe3\xd1\x9a\xe1\x3c\x9f\x48\x1c\xe7\xce\xe1\x99\xf1\xac\x92\xf4\x5c\x12\x77\x47\x84\xc4\xcc\x40\x0a\x09\xd4\x38\x06\xaf\x42\xe5\x5b\x7f\x8c\x42\x60\x45\x50\x1d\x24\xd3\x56\x94\x0a\xdc\xfb\xcd\x88\x83\x70\x3f\x2a\x01\x8a\x6f\xa9\xb0\x92\xa4\xbf\xc4\xe2\x45\x16\x8d\xd6\xff\xcb\xbc\xe7\x4c\x70\x3f\xf7\x7c\x08\x92\xbf\x0d\x76\xf8\xe0\x43\x18\x69\x4f\x5d\xff\xe8\x60\x08\xdf\x36\x84\xf3\x0e\x78\x8c\x35\x03\x68\x39\x67\xc9\x6a\xc4\x16\x06\x5e\x32\x28\x41\xb7\x87\xe2\xec\xfa\x4a\xea\xd1\x2a\x1b\x08\x17\xfc\x64\x28\x53\x3a\x8f\x44\xdf\x28\x49\xa9\xd5\x37\xb0\x10\x64\x5d\x89\xf1\x85\x3f\xd8\xc1\x9f\xdc\x0e\x9e\x68\xdc\xfb\xd5\x3d\xee\x4a\x72\x36\x6b\x5c\xce\xe4\x89\x52\x16\xf1\x8e\xd3\xcc\x6e\xa6\x88\x02\x7c\x62\x8b\x63\xeb\x7b\x49\x99\x48\x54\x70\xbc\x2e\x55\xd4\x6a\x31\x6d\xad\xc8\xdd\x6d\x99\x8a\x4e\xe2\x98\xf5\x95\xd9\x3b\x69\x19\xeb\xc7\x70\x8e\x0e\xd7\x0c\xc4\xcd\x8b\x3d\x54\xde\x7d\xdc\xd1\x87\xc5\x8a\xe8\x6b\xfb\x9a\xe5\x47\xe3\x9b\xab\x7d\xbb\xab\x39\x68\xd5\x01\x17\x05\x7b\xd0\x7d\xf5\x6f\x2d\xb9\x4e\xb2\xef\x41\x8e\xa0\x78\xf7\x9a\x4a\x25\xda\xd8\x5c\xfd\xee\x6b\xdf\xa7\xd4\x4c\x48\xad\xc5\xef\xda\xb8\xcc\xe6\x81\xe0\x1b\x6f\x0b\x49\x45\xb5\xd4\x21\xce\xf2\xdf\x36\xfa\x46\x23\x19\x1b\xd7\xc1\x82\xac\xf0\x3d\x65\x4d\x20\xfb\x70\xae\x39\xdd\x0b\xf3\x8a\xba\x66\x36\xac\x71\xa6\x36\x5d\x2a\xd3\xcd\x12\xdf\x5e\x87\x51\xd2\xef\xdb\x97\x94\xf2\x94\x33\x6b\x9b\x98\x91\xcf\x94\x8b\xed\x39\x89\x01\xec\x58\x2c\xc1\x47\x10\x89\xee\x79\x25\xef\x30\x60\x61\xbc\x5f\xfd\xa7\xbb\xa2\xd1\xfd\x5c\xfd\xe9\x8f\x52\x16\xef\x20\x1c\xf9\xcd\x39\xc8\x0a\x9a\x6d\x80\xc5\xe1\x5a\xc7\x98\x7c\x09\xfd\x88\x39\xc9\xd1\x3b\x5c\xe2\x5b\xad\x5f\xbe\x9c\x5f\xff\xf8\xee\x95\x5c\xb4\x20\xca\xf6\xd5\xc5\xa0\x57\x6d\xee\xf7\xe8\xfd\xf4\x7c\x86\xde\xd8\xc0\x97\xd6\x9e\x46\xb7\x43\x26\x86\xbd\x78\x42\x68\xc8\xdb\x49\x9b\xfd\xd2\x9d\xbd\x63\x79\xbf\xce\x1f\xa5\x28\x67\xdb\xd5\x34\x06\x34\xfa\xa7\x1c\x0b\xbc\xc0\x9c\xcc\x07\xfd\x5a\x5d\x61\xdd\x3c\x0a\x0a\xe8\x0c\xf1\x90\x88\x47\x69\x17\x6f\x92\xf3\x1a\x0d\x4e\xfe\x24\x4f\x92\xef\x31\x1a\xa4\x9a\xec\x45\xea\x9a\x0d\x87\x3d\x28\x49\x1e\xa4\xbe\xa7\x68\x84\x6b\xa7\x98\x08\x47\x8d\x80\x31\xd3\x5f\xd8\xe0\x37\x6a\x3c\xdf\xc5\x2b\x14\x00\xe3\x9f\xe0\x11\x6a\x3d\x3f\xc3\x77\x6a\x9a\x37\x08\x8e\x9d\x37\x05\x2d\xcf\xf3\xf8\x0c\xd2\x04\xe1\xe3\x8d\x7a\x7b\x86\x77\x66\xc8\x03\x04\xf0\xf4\x8c\x38\x0c\x87\xbc\x3f\xbb\x22\xdc\x4d\xc1\xb4\x0b\x78\x77\xf6\xeb\xd9\x89\xeb\xd3\x41\x8f\xce\x64\x6f\x0e\x40\x31\x0d\x7b\x71\xa6\x79\x70\xd4\x2a\x06\xf4\xe5\x54\xef\x0d\x44\xa5\x43\x09\x9e\x9b\x2e\xbb\x0d\x90\x9c\x56\x15\x75\xf4\x84\xea\xb6\x2b\xbe\x1b\xcc\x1f\x03\xf1\xc5\x84\xfd\x30\x93\x7c\x30\x11\x4c\xa7\x54\xff\x8b\xbb\x68\x03\x34\x13\x7c\x2f\x11\xef\x0a\xc0\xde\x19\xf2\xaa\x8c\x7b\x54\x02\xde\x94\x88\x61\x28\xe4\x45\x09\x79\x50\x76\xf0\x9e\x04\xbc\x24\x61\xab\x69\xd8\x3b\xb2\x83\x67\x44\x79\x40\x86\x85\xbc\xc7\xf2\x8a\x04\xb6\xc2\xb8\x78\xad\x83\x51\xe7\x24\x6b\x6a\x2a\xb6\xf8\x79\x67\x02\x6c\xe0\x2a\x37\x0f\xab\x20\xbd\x46\xac\xae\x35\xb4\xd0\x4b\x4a\x8e\xd1\xe7\x0a\x67\x77\xea\x2a\x23\xb8\xce\x56\xb7\x0d\xae\xf3\x57\xdb\xf3\x70\x25\x2c\x35\x3e\x20\xad\x3b\xea\x8d\x4d\xb2\x6a\x4a\x2e\x6f\xef\xdc\x85\x84\x6e\x51\x1c\x8a\x86\x1d\x5f\x7a\x1d\x8a\x3b\x9f\xff\x1c\x1c\xf0\x8d\x8d\xd9\x45\x9c\xab\x92\xe0\xa2\xc6\x25\x57\xb8\x13\xff\x3f\xb5\x76\xa8\xc0\x9b\x2d\x4e\x35\xfe\xd5\x15\x2e\x06\x2a\x91\x8f\x84\xd9\xba\x7c\x6c\xab\x01\x49\x09\x44\x53\x50\xf7\x0e\x2e\x0a\xc4\x96\x4b\xbe\x62\x6c\xfb\x10\x7a\xc6\xba\xb6\x0e\x01\xf9\x2c\x77\x14\xba\xfe\xf5\x5c\x9b\x49\x73\x52\x90\x01\x6b\xd2\x78\xff\x69\x49\xc3\x1a\xd8\x55\xa9\x05\x25\x79\x85\xc9\x33\x20\x5f\xa0\xb8\xa0\xbf\xb7\xa3\x48\x50\xc3\x2a\xc6\xc5\x6d\x4d\xf8\xa7\xb3\xad\x65\x8a\xbd\x2a\x1b\xfe\xbd\xa9\x47\xc5\x04\x88\xb7\x00\x54\xf9\x01\xe4\xd9\x5e\xe3\xcf\xe7\xac\x2c\x4d\x6d\xee\x10\x39\x28\xfa\x13\x2c\x6c\xa1\xaa\xc9\x92\x7e\xde\xb1\xfb\x51\x37\xc0\xe2\xcf\xbb\xcc\xf2\xa2\xc9\xee\xc2\xe8\xec\x87\x29\x46\x0b\x9c\xdd\x35\x55\xc8\x68\x15\x4f\xad\xca\x46\x67\xe5\xb0\x4c\x7b\x5a\xa6\x82\x65\xe3\xc1\x21\x90\x59\xc6\x0f\xfc\xb2\xc0\x5c\xd0\x4c\x41\x9a\xcc\x05\x1b\x67\x61\x68\x3b\xdb\xff\xd3\x7c\xeb\xed\x8e\x71\xbe\x44\x67\x9f\xe6\xe8\x82\xf2\x31\xdb\x9f\x6e\x6d\x09\x0c\x1b\x3b\x6f\xa3\x1b\x94\x0e\x69\xcc\xf4\x52\xe2\x89\x18\xea\xbd\x81\x95\xc6\x23\x65\x0b\x8b\x18\x4b\x41\xc5\xf2\x9d\xe3\x44\xf0\x03\x27\x7a\xd8\x0b\x39\x6c\xf9\xe7\x51\xb8\x0c\xe8\x42\xa0\xa8\x1b\x61\x78\x09\x60\xf8\x2c\x11\x92\xc8\xe2\xb7\xa4\xe0\xb4\x44\x69\xf6\x70\x5c\x40\x78\x2d\x51\xa2\xc3\x78\x2e\x51\x7f\x45\xbc\xb3\xa3\xb8\x2e\x7b\xdb\x22\xd1\x3e\x68\x9f\x7b\x22\xb0\x4b\x94\xaa\x0f\xfc\x02\x01\x78\xb1\x0d\x0c\x7a\x58\xe1\x5a\x50\x01\xa8\x2a\xb9\x9d\x88\xee\x5e\xb5\x83\x1b\xc2\x15\x8a\x8e\xb0\xdd\xb7\x57\x4b\xc4\xd6\x54\x08\x6b\x0f\x69\xe5\x77\xf7\x90\xdc\x89\x40\x10\x53\x9d\x1b\xdf\x62\x09\xbd\x75\xb0\x6b\xe8\x34\x27\xf7\xa7\x3c\xc7\xaf\x8f\x55\x37\xf5\xc6\x89\x63\xef\x8a\xce\x98\x31\x47\x2f\x5e\xbf\x38\x41\x73\xba\xa6\x05\xae\x8b\x4d\xc7\x5c\xe8\x9e\x8b\x52\x5d\xb2\xda\x75\x48\xa5\x44\x7f\xfb\x02\xbd\x64\xb5\xea\x59\x86\x4b\x54\x10\x7c\x4f\x6c\xca\x98\xe4\x44\xf1\x8e\x92\x75\x25\x36\xaf\xa2\x00\xfa\x29\xc0\xf9\x70\xe4\xd0\x58\xc4\x94\x6d\xbd\x04\x23\xa3\xc0\xbf\x10\x75\x43\x5e\xa8\x00\x2a\x15\x01\x25\x6f\x02\x4e\x44\x27\x12\x2a\x3a\x7e\x3b\x51\xfd\x50\x29\xe5\xba\x57\x1f\xd8\xda\x6c\x51\x9a\xde\x66\x7c\xa1\xb4\xc7\x17\x4f\x7e\x13\xa1\x24\xe8\x6f\xfd\x95\x71\xaf\x6c\x3b\x30\x7f\x1d\x3e\xea\x38\x98\xab\x0b\x7b\x17\x79\x00\x08\x39\xe5\x77\xf0\x6a\x52\x54\x8b\x0f\x2f\xcf\xd6\xf8\x77\x56\xa2\xcb\x1f\x6d\xf4\xe3\xab\x2f\x38\x71\x51\x86\x08\xc1\x80\x9d\xb9\xb9\x8d\x0a\x88\x11\x0c\x58\xa5\x74\x4a\x01\x0b\x2c\xb5\x9d\xd9\x37\xfa\x92\x9a\xfc\x5d\xbb\x8f\xd4\x5f\xe3\x48\xbb\x3e\x3c\xab\x3c\x65\x0b\x6a\xc3\x2b\x7c\x69\x6b\x0f\x82\x51\xa6\x6e\xac\xdb\x50\xc6\xdd\xe0\x50\x8f\xfe\x5b\x76\xed\x5c\xbf\xad\xad\xf8\xe8\x3d\x2b\xc9\xb1\x62\x04\x48\x72\x02\xfd\xcf\xe8\x56\xfc\x54\x53\x41\xa2\xec\x10\x7c\x65\xca\x73\x00\x29\x43\xb8\x65\x5e\xf6\x4d\x82\x0a\xec\x5e\x9d\x28\x73\x79\x2e\x0a\xb6\xb0\x51\x07\xfb\xec\xe9\xc7\x0f\x91\x5a\xef\x03\x1d\xfd\xf8\xe1\xea\xe9\x3a\x39\x41\x70\xde\x53\x1c\x8e\xdf\xd5\x29\xf1\x38\x71\x79\x37\x4d\xce\x45\x34\x5e\x52\x00\x10\xb7\xe3\x0f\x0b\xb4\x02\x77\xb4\x8c\x16\x4e\xe9\x1e\xcd\xcb\xcf\x95\x76\xe2\x9a\xb8\xdb\xf9\x0a\xab\x72\x88\x0e\x42\x57\x6e\x94\xf8\x9d\x4a\xf9\x1d\x97\x37\x8c\x4b\x38\xb7\x08\xf8\xe8\x82\x68\xcb\x66\xfe\xc6\x82\x03\x83\x29\x0e\x13\xd4\x41\x38\xf9\x1b\xcd\x73\xd1\x5a\xff\xa7\xda\xe1\x30\xaa\x2f\x55\x9c\x28\x2d\xdd\xab\xf8\x1e\xd3\x02\x2f\x68\x41\x85\x0a\xce\x7e\x75\xe2\x2a\x1c\x40\x84\x5e\x85\x26\x3a\x88\x00\xda\x79\x10\x0e\x5e\x3e\x41\xec\x82\x06\xac\x47\xc7\x03\x41\x8f\x83\x06\xae\x77\x87\x1e\x17\x75\x60\x57\xb6\x65\xda\xd1\x87\x3e\x7e\xb8\xda\xcb\xb5\x2e\x79\x54\xda\xb5\x2e\xdf\x18\xbc\xd6\xd5\x1f\xe6\x1a\xe7\x3a\x38\x69\xdb\xc0\xeb\x8f\x7a\xb3\xff\xeb\xee\x39\x48\xa2\xd4\xe0\xe8\x85\x07\x59\xe1\x03\x28\x18\xef\x01\xd7\x2b\x1e\x1d\xbb\x8d\x33\x34\xd5\x75\xb4\x64\x21\xd7\xfa\x6f\xd1\x82\x43\x60\x8e\xa2\x18\x54\xf2\x00\xd5\x4d\x80\x22\x27\x2d\xa1\x1f\xb0\xd3\xdd\xae\x46\xf8\x31\x3b\xa4\x5d\x4f\x78\x46\xaa\xd5\x32\x78\x3a\x3a\x93\x72\x4e\xaa\xd5\xdb\x5e\x52\x98\x02\x57\x7d\x3b\x07\x02\x50\xbb\xde\x6d\x01\x51\x07\x8b\x26\xd8\x06\x3d\xd1\x31\xbc\xd8\xc1\xd1\x79\xe5\x90\xdf\x99\xf7\x35\x48\x79\x07\x4d\x36\xba\xa7\x3b\x68\xb3\x29\x20\x97\x7a\x31\x52\xd1\x0a\x6d\x03\x16\xfa\x4c\xa8\x37\x04\xad\xf0\x06\xa9\xb0\x32\x16\x9e\xa4\x80\xf8\x31\x6f\xab\xaa\x90\x1c\xd5\x8c\x89\x63\x54\x63\x50\xa1\x47\x55\xbc\x46\x59\x24\x9b\xa2\xd0\x73\x2f\x6a\x42\x7c\xaf\x39\x3a\xfd\xb2\xd2\x89\x37\xdc\xc8\xa5\x11\x1d\x6d\x12\xcc\x6d\xea\xa5\x91\x84\xc8\xba\xdb\x66\x4d\xbd\x9f\x62\x42\x08\x0a\xcc\xf9\xdc\x51\x18\x00\xc8\x8e\x4e\x89\x03\xd0\xfe\xc8\x49\xdd\xdd\x55\x0e\x25\x5b\x05\x6c\x98\x5b\xf0\x1d\xc4\xc6\xfe\x74\x53\x0c\xb9\x1f\x63\xe9\x93\xb6\x85\x27\xd8\x40\x0c\xbb\x98\x5e\x14\x41\x72\xb1\x6d\x30\x6c\x7d\x78\xc6\x95\x3d\xf8\x19\xed\xe2\x94\x92\xc5\xb0\x22\x98\xcf\x39\x19\xd3\xb6\x47\x28\x84\x09\x2d\x85\x39\xe1\xfa\x02\x54\x33\x0d\xc1\x16\xdb\x16\xb8\xbf\x6a\x57\x46\xaf\x0b\x68\x1c\x1f\x78\xde\x03\x3c\x7e\x6a\xfe\xbb\x27\xa1\x35\x00\x6c\xdc\xfd\x5e\x4c\x18\xa5\x65\x1e\x5e\x89\xee\x2a\x9c\xab\xe7\xbb\xd2\xa8\xa6\x01\x4a\xc3\xb3\x0d\x92\x8e\x07\x82\x7d\x5f\x6f\xf8\x6f\xc5\x4c\xf7\x60\x56\x45\xca\xa3\xd8\xf6\x94\x6e\xf9\xa7\x35\x2f\xfe\x01\x9c\xe9\x7b\x59\x41\x74\x10\x20\x5d\x7b\xfc\x39\x86\xcb\x8c\x3b\x48\x34\xaa\x6e\x23\xd7\x71\x3f\x46\x20\xd1\xbc\xcb\xda\x37\x20\xc5\xbc\x2b\x5c\xe3\x35\x11\xa4\x6e\x23\x43\x33\x1d\x04\x26\xff\xf9\x4b\x45\xca\xb9\xc0\xd9\x5d\xd4\x9f\x73\x90\x32\xbe\x0a\x29\x63\x9a\x1f\xdb\x96\xb5\xcb\xdb\xe8\x62\x53\x62\x19\x96\x6a\xa3\x1b\x2d\xcd\xc5\xf8\x2c\xb8\xe0\xd3\xfa\xa6\x35\xe2\xef\x3b\x3c\x5a\x53\x13\x6d\x59\xb9\xec\x1b\x3d\xd1\xc2\xfd\xec\x41\xc5\x86\x0d\x23\x3e\x8c\x6c\x7c\xad\xa0\x07\x1d\x00\xfd\x3a\x38\x2e\x58\xd2\x6e\x74\x33\x6d\x25\xf5\x42\x12\x78\xa3\x54\x83\x09\xbe\x43\xc9\xbc\x71\x5e\x08\x4f\xf6\xf5\x33\xcd\xa2\x74\xf7\x94\xf8\xdb\x99\xd2\xfd\x24\x01\x77\x48\x3e\x4a\x50\x14\xc8\xc8\x38\x21\x69\x18\x60\xe6\xf3\x93\x8a\x07\x12\x88\xdb\x43\x1b\x83\x13\xb1\x2d\x94\x63\x3c\x98\x4f\x0c\xea\x64\x42\xbe\x31\xc8\x3c\x32\x31\xf7\x38\x6e\x76\x01\xa1\xd1\xfa\x79\xc8\x51\x92\x30\x54\x5a\xb7\x50\xb0\xf1\xef\x17\xa0\xd6\xb6\x09\x40\xb5\x00\x79\x0f\x9c\xce\xec\x37\xa0\xdd\x3e\x39\xcd\x19\x20\xe6\xc4\x20\x6e\xdd\xc8\x12\x24\x50\x00\xe4\xed\xe0\x90\x52\xa1\x6f\x6d\x4b\x10\xd5\x10\x08\x0a\x77\xb0\x77\x80\x84\x6a\x10\x51\xe4\xa5\x5d\xc7\x93\xab\x81\x24\x47\x53\xb0\x87\x12\xad\x81\x34\x21\xe9\xd8\xdd\x4b\x10\x48\x78\x4f\xa9\xd9\x5d\x92\xfb\xb8\x30\x75\x4b\xb9\x36\xcd\xd7\xc1\x97\xa7\x6e\x10\x6f\x99\x6e\x49\x69\xdd\xc0\xb9\xf2\x92\xbf\xa3\x29\xde\x40\x92\x63\x89\xe0\xc3\xe9\xde\x40\xa2\x53\x92\xc2\xfd\x96\xc4\x16\x20\x0a\x89\x6e\x61\x28\xde\xf6\xa9\x48\x22\xbc\xdf\x47\x80\xea\x08\x77\xc5\x42\xf4\xff\xe7\xad\xfb\xef\x1d\xf2\x11\xa5\xec\x86\x18\xd4\xf1\xe0\x1c\x0e\x25\xed\xb7\xe2\xa8\x97\xb7\x1f\x1d\x7c\x3c\xaf\x7f\x7b\x54\x71\x83\x18\x4c\x4d\xe6\x14\xae\x20\xcf\xaf\xd0\xcb\x73\x9b\x27\xec\x82\x78\xae\x4a\x41\xea\x25\xce\xc8\x2b\x4f\x71\x0e\x1b\xea\xcc\x9b\x36\xe3\x6e\x85\xcb\xbc\xd0\xda\x1a\x2e\x11\xf9\x2c\x48\x5d\xe2\x42\x7d\x2f\xaf\xe9\x3d\xa9\xd1\xcb\xb3\xa2\x5a\x85\x65\x9b\x25\xc1\xa2\xa9\xc3\xc6\x50\xb0\xaa\xad\xbe\x9a\x16\x17\xa6\x3b\x6a\xe4\x7e\x1f\xdc\xd3\x1b\x86\x1c\x70\x74\x37\xe8\xd9\xe0\xbe\xf5\xe0\x44\x6e\x2c\x75\xd3\x29\xd6\xb8\x61\x4d\x6d\x5c\x47\xb1\xa2\x7a\xb6\x65\xac\x96\x6a\xb5\xee\x18\xe6\xa6\xa6\x3d\xa9\xdb\x0a\x43\x59\xd1\xc8\x1f\xf6\x16\x95\xbb\xd7\xb8\xe8\x04\x14\x41\xdb\x9c\x43\x61\xd9\x2d\x46\xa7\x06\xab\x5c\xca\x46\x08\xa3\x1c\x55\x98\x73\x80\x09\xc4\x28\x5d\x1e\x72\x9f\xb7\xb6\x5a\xf9\x51\xe2\x56\x4e\x04\xa9\xd7\xb1\x2c\x51\x64\x64\x18\x57\xe2\xcc\x1b\x3d\x43\xb8\xaa\x8a\xa8\xd3\x1b\xbc\x18\x25\xcb\xc9\x75\xb3\x28\x28\x5f\xcd\x27\x59\xc9\xdf\x0f\x10\xd0\x51\x52\xbe\xe7\x1f\x34\xde\x31\xcb\xfa\x70\x55\x41\xc8\xa2\xc8\xe5\xb3\x8b\xe3\x9f\x36\xa6\xf2\x0f\x0b\x22\x88\xfb\x93\x37\x8e\x5f\x61\x46\x54\x29\x99\xcb\xb7\x3e\x96\x95\xff\x1e\xca\x70\x51\x70\x23\x2b\x6b\xeb\x04\xe5\xee\x22\x81\x29\xe2\x4a\xe9\x5c\xd8\xdd\x48\x15\xc0\xad\xc5\x5a\xe1\x4e\x3c\x31\x75\x15\xe3\x3d\x1d\x9c\x58\x8e\xd6\x4c\x27\xd2\x96\x88\x95\x76\xf6\x8f\x15\xa2\x46\xa4\xf8\xb3\x6d\x5e\xe5\x48\x5c\x13\x73\x58\x62\x5b\xf3\xe0\xbe\xf8\x2a\xdc\x17\x93\x1c\x97\x73\x87\xfb\x8c\x15\x81\x99\xca\x3d\xb0\x35\xf8\x74\xc0\xcf\x32\x50\xfb\xc7\xf5\xd2\xa9\xb4\x03\x25\xd9\x93\x3c\xa0\xa9\x79\x87\x67\x42\xd4\x74\xd1\x88\xf8\xee\xc5\x79\x4e\xf5\x99\xbf\x4e\xd8\xf1\x09\x4b\x35\x80\xb0\xdd\xf6\x4e\x89\x52\x84\x1b\x8e\x37\x33\xe6\x80\x2c\xc1\xb4\x63\x34\x73\x77\xae\xb7\xf9\xa8\x13\x3e\xa2\x54\x95\x5c\xa2\x5f\x3a\xe2\x28\x67\x59\x23\x15\x41\xb7\xde\x5e\x10\x81\xce\xbb\x81\xad\x5a\x74\x97\x02\x33\x28\x54\xbf\x76\x95\x97\x73\xf6\x50\x3e\xe0\x3a\x3f\xbb\x0e\xa6\xa5\x75\x45\xc3\xf6\x1d\xdf\xb5\x64\x49\xa9\x02\x02\x78\xc1\x9a\x70\xfd\x39\xa4\x3c\x4b\xf9\x78\xc1\xc2\x83\xa7\x29\xd8\x0e\x9e\xa6\xaf\xd4\xd3\x24\xdf\xd0\xa2\x68\x41\xb9\x90\x12\x41\xe7\x64\x01\x7d\xe5\x41\x40\xeb\x84\xbe\x8d\x9f\x7d\xcd\xbb\xfb\x59\x52\x29\xa2\xae\x12\x76\xf5\x29\x6a\x77\x81\x27\x40\x9b\xdc\xa8\x00\x02\xaf\xdf\xd2\xcc\xfb\x8a\x26\x40\x6b\x18\x98\x03\x2f\xc1\x62\x4e\x0a\x29\x58\xa1\xae\x43\x0f\x68\x1c\xac\x58\xfe\x46\x97\xbb\xc0\x65\xc9\xf4\xbd\xc2\x8f\x51\x81\x17\xa4\xe0\xc7\x46\xb5\x2d\xf3\x16\x99\x10\x48\x57\x5e\x7e\xee\x6a\x02\x1a\x8c\xd3\x26\x4f\x7d\xc5\xc9\x7e\xd0\x37\xfa\x77\xbf\x7e\xdb\x81\x32\x66\x2b\xb2\xc6\xea\x9f\x6f\xe5\x5c\x8e\xc0\x90\x8f\x35\xca\x91\x14\x9d\x04\xd1\xf0\x27\xa4\x5e\x73\xc4\x96\x2e\xee\x5a\x83\x4d\xdc\xbf\x7e\x01\x35\x07\x27\xbb\x64\x90\xdd\x54\x21\xa8\xf7\xed\xb6\x0d\xfe\xee\x0c\xe2\x72\x43\x09\xa9\x41\xc9\x3d\x06\xf1\x2e\x7b\x7d\xef\xf8\x52\x15\xdb\xd0\xb3\xfd\x88\xc3\x87\x9b\x9f\x91\x12\x60\x96\x49\xab\x9c\x60\x65\x46\x07\x07\xd9\xc1\x41\x16\x69\xcf\xd6\x41\xe6\x5d\x2e\x8a\x1b\x50\x6e\x07\xae\x9d\x66\xd0\xbb\x45\xbe\xeb\x5b\x6d\x2d\x6c\xf2\x82\xb8\x42\x34\x5a\x0c\x85\x3b\xb3\xe4\x3e\xb6\x9e\x35\x56\x77\x23\x0b\x8e\x4e\x4e\x8e\x8e\x2c\xa4\x72\x18\x8c\xbb\x47\xb2\x11\xcb\xd9\x0f\x88\x94\x19\xcb\xf5\x56\x94\x7d\xad\xb9\x50\xe2\x49\x6b\x0f\x49\x1f\xfd\xda\x8c\xae\x13\xc9\xa0\xfa\x09\xdb\x22\x89\x0c\xd0\x22\xf1\xbc\xdd\x41\xb0\x68\xc5\x09\x87\xe2\x67\x26\x00\x04\x67\xea\x37\x25\x57\xb4\xf0\xb1\x05\x5d\x53\x95\xc3\x9e\x2b\x3e\x4d\xb8\xe0\xe8\xa5\xfe\xf1\x24\xab\x1a\x98\xe1\x06\x19\x32\x27\x6b\xb2\x66\xf5\xe6\xd8\x91\x92\x24\x3a\xb4\xcd\x13\xaf\x12\x24\x96\xac\xa9\x6b\x52\x8a\x62\xf3\x04\xb2\x8b\x9b\x4d\x48\x3e\x75\xdb\x7a\x79\x1b\xce\x73\xa4\xec\x7d\xee\xfe\x03\x99\x82\xda\x66\x32\x61\x8e\x9d\xad\x55\x99\x16\x48\x79\x8f\xee\x71\xcd\x61\x33\x80\xa6\x89\x2b\x39\xbd\xa7\x9c\x81\xb7\xd4\xa8\x55\x4c\x6e\x50\xd6\x88\xaa\x11\x86\xaf\x42\xf2\x8b\xbd\x9e\xaf\x88\x43\x96\x74\x3b\xb6\x27\xb9\xbd\x8e\x27\x4a\x38\x72\xe9\x13\x61\xbf\x3a\x75\x2b\xb4\x3c\xbb\x45\xdf\xb4\x82\xdb\x23\xae\x60\xaa\xc4\x05\x06\x0b\x43\xa9\x02\x57\x4a\xe8\xc1\x97\x09\x2a\x00\x11\x54\x8e\x8b\x0b\x9a\x90\xbc\x75\x69\xde\xe8\xc6\x58\x0b\xb2\xae\x58\x8d\xeb\x0d\xca\x8d\x4d\x26\x1c\xef\xb0\x0d\x23\xe0\xe1\x08\xec\x8c\xcf\xa6\x46\x95\xd3\x7a\x1f\xf9\x5b\x6b\x92\xd3\x66\x9d\x66\x45\xfb\xa4\x40\x4f\x0d\xa0\xaa\xf5\x95\x6b\x42\xd6\xf0\xb7\xc0\x59\x18\xd5\x56\xcf\x12\xe5\xed\x84\x6a\x51\xc1\xc7\x01\x7c\x61\x7c\x96\x6b\x82\x4b\x2b\xb5\x83\x6c\xf2\x25\xcb\x89\x9c\x71\x4b\x4c\xf7\xcd\x33\xd3\x95\xc6\xa5\x05\x3c\x9b\x2f\x0d\xa1\x57\x52\x4c\x7a\xa7\x6e\xc2\x27\x59\x44\x94\x94\x2f\x4d\x7f\x27\x3f\xcb\xeb\x3c\x11\x69\x94\x09\x5c\x20\x6c\x60\x32\x96\x1a\x35\xd9\xad\xaa\xe5\x03\x71\xf3\x94\xf2\xf3\x53\x8e\xdc\x01\xb2\x8e\x11\xb9\xaa\xb2\x6f\x5a\xd6\x50\x86\xb0\x82\x6b\xff\x31\xcd\xf0\x22\x6a\xd5\xd2\xb4\xb5\xfc\xe1\x56\xf2\x46\x41\xb5\x7e\xa6\xeb\x66\x8d\x1a\x2e\x7b\xca\xca\xee\x33\x51\xaa\xae\xa3\x0f\x7a\xc7\x6a\x93\xd5\x9a\x96\x8a\x68\x57\xbd\x53\xf5\x2e\xec\xfc\xc6\xfd\x9c\x4e\x51\x57\xd9\x6c\xd6\xa4\xc9\x1b\x25\xfe\x9a\x5e\x1a\x01\x8e\x2d\x11\x0e\xd4\x29\xb6\xcd\x09\x38\x0a\xe9\x16\x6b\xa4\xe6\xde\x79\x29\x69\xe1\x1f\x18\xc0\x49\x31\xd8\xc5\x6e\x61\x9a\xd2\x44\xf8\x6c\xed\xee\xe1\xcd\xdd\x70\x52\xcf\x6e\x1b\x9a\x3f\xda\xb6\x06\x71\xf9\x65\x06\xe6\xef\x6f\xcf\xbb\x8c\xfd\x2d\x5d\xd4\x04\x9d\xaf\x70\x59\x92\xa2\x0b\xb5\x1d\x36\x03\x8f\xc1\x70\x77\xf3\x73\xb7\x90\xb6\xc3\xb7\xc6\x5e\xd1\xa3\xfe\x78\x99\xb9\xcf\x06\xf8\x0f\x06\x36\x0d\xf3\x13\xb5\x60\xd4\x8f\x0f\x36\x5d\x34\x89\x30\xd3\xad\x75\xec\xed\x39\x12\xb8\xbe\x25\x42\x12\x41\x65\xb3\x5e\x90\xe8\x19\x7e\x4e\x00\xc7\xcf\x25\x15\x79\x7f\xd9\xc2\x7a\x39\x3e\x7d\x7a\x9f\x88\x16\x35\xb4\xa6\x0f\xac\x2e\xf2\x07\x9a\xdb\xba\xdc\x2f\x25\xd9\x57\xcf\x17\xba\xe9\xe1\x81\xe6\xbb\x0c\xdb\x98\x51\xd5\xb0\x91\x1a\xb7\x2b\xbe\x1a\xc4\x83\xd0\xed\xa5\xfa\xfc\x2b\x74\x49\x95\x39\x52\xfd\x97\x36\x90\xad\x17\xb4\xc4\xc2\x3a\x39\xdc\x02\x45\x29\xca\x6b\x40\x9e\x2b\x6b\x3e\x56\xf5\x93\x16\x8d\x36\x67\x2d\x98\x58\x21\x4e\xd7\x4d\x21\x70\x49\x58\xc3\x8b\x4d\x74\x1b\x7d\xa9\xa5\x81\xdd\xc7\x05\xf9\x3c\x5e\xba\xda\xb6\xee\xbd\xec\x5e\xe9\xde\xcf\xb7\xa4\x24\x35\xcd\xec\x82\x82\x14\x5e\x1b\xb5\xab\x22\x2a\x39\x65\x25\xc9\x4f\xdd\x65\xad\x2b\x88\xab\x28\x5e\x92\xa1\x85\x2a\x20\x5c\xa9\x92\x59\xcf\x2e\x2e\xb7\x8d\x12\x84\xe8\x3d\x4e\x00\x87\x65\x4f\x1d\xe0\x83\xb7\xa4\x88\x9b\xe1\x58\xd7\x9c\x54\xa4\x94\x0c\xa0\xf4\x76\x69\x5c\x07\x50\xd3\xb1\xb7\x55\x30\xbe\x9a\xe7\x15\xec\xe5\xf1\xdc\xcb\xcf\xa2\xc6\x92\x41\xae\x25\xab\xb3\x51\x21\x74\x89\x70\x19\x67\x66\x8f\x1b\xec\xf7\x15\x8a\x06\x5f\x18\x1a\x2d\x2d\x40\x1a\x12\x76\xed\x07\x48\x6b\x6e\x6c\x0e\x90\x0d\x60\xde\x0e\x44\x4e\xec\xa5\x5f\xaf\xd8\x06\x2c\x8f\x04\x24\x47\x29\xc7\x02\x96\xf9\x76\xb8\x62\x7c\x06\xba\xa3\x3e\x80\xaf\x0c\xb5\xaf\x2c\x7a\xf9\x29\xe3\x42\x97\x05\xcb\xee\x12\x50\xcc\xde\xea\xe7\x7b\xd6\x12\xf3\x63\x0a\x8c\x59\xc0\x3a\x62\xce\xb6\x77\xc1\xaa\x60\x21\xfd\x91\x20\x51\x79\x54\x6b\x26\xcf\x9b\x02\xed\x46\x0b\x22\xd9\x4f\xdd\x94\x11\x04\x24\xb0\x1c\x87\x05\xe6\x13\xe0\xa7\xfb\x15\x28\x38\x11\x3a\x02\x5a\x81\xc9\xae\x89\xc0\x20\x40\xfc\xd9\x5f\x8d\x20\x58\x76\x28\x49\x11\xcf\x2e\x81\xb5\xb3\x2b\x4f\x32\xa7\x39\x81\x18\x69\xb1\x9a\xec\x9a\x64\x80\x30\x57\x78\x11\x0c\xdd\xbb\x8f\x1f\x13\x31\x84\xe4\x0b\xbd\xb9\x32\x1b\x42\x59\x22\x55\x9d\x9c\x56\x6b\x8b\x8e\x8d\x2d\xbd\x0d\x6a\xe8\x3d\xa1\x0d\xf2\x36\x23\xd7\xae\x94\x4f\x52\xc9\x99\xa3\x9f\xce\x2f\xbb\xaf\x76\x0f\xdd\x4f\xe7\x97\xe8\x02\x5c\x1a\x28\xa9\x48\xa0\x33\x4f\x06\x49\x3e\x42\x91\xc0\xdb\x8c\xb4\x85\x8f\x72\xca\xef\x9e\x0b\x14\xe1\xa1\x42\xe0\xb3\xa8\x10\xb8\xb5\x3f\xa2\x1d\x38\x94\x07\x3c\x94\x07\x7c\x5e\xe5\x01\x9f\x94\x47\xa2\x47\x33\xc7\x57\x79\xb2\x14\x64\xab\xdc\xf9\xc6\xac\xeb\x8b\xd6\xbb\x46\x4b\x79\xa9\xc5\xd5\xed\x8f\x43\xd0\x82\xb6\x5c\x96\xa4\xf0\xe4\x53\xfc\xc8\x78\xaa\x20\xfb\x02\x40\xf1\x1d\xb6\x3f\x6c\x9b\x3f\xfc\x09\x8c\x92\x7d\xc2\x09\xde\x57\x51\x22\xbd\x77\x77\x16\xed\xa8\xf8\x40\xaa\xe0\x0c\xf5\x04\x3a\xfd\x42\xcf\x92\x4d\x85\xfc\x81\x71\x2a\x58\xbd\x41\x58\x28\x60\xac\x5a\xd0\xac\x29\x70\xcc\x23\xa6\xed\xd8\x27\xe8\xe2\xf2\xfa\xc3\xe5\xf9\xd9\xcd\xe5\xc5\x1b\x64\xbf\x42\x7d\xa1\xfe\x04\xdd\xb0\xd6\xf0\x1d\xa4\x8a\xdb\xa0\x02\x1d\x4b\xdb\xf6\xf1\xd8\xb0\x7b\x5c\xb6\x51\x12\x0a\xd2\x2d\x62\x97\xba\x2a\xa9\x68\xa3\x28\x75\xe1\x9d\x82\x95\x26\xa2\x50\x52\x36\xf6\xf7\x5b\x2a\x8e\xb5\x5f\x3c\x5e\x48\x51\xbe\xda\xed\x85\xe2\x27\x3a\xa6\xca\x0d\x21\x68\x31\x01\xab\x7d\x36\x16\x29\xad\xa2\x9f\xf6\xb1\xb9\x97\xcd\xdd\x67\x83\xb1\x6d\x1f\xe3\x1a\xcc\x36\x46\x1b\x92\xb7\xf2\xd1\xc9\x91\x15\x06\x8b\x5e\xa2\x40\x94\x66\xdb\x29\x0b\xd2\x27\x5f\xee\xee\xc5\x13\x84\x7e\x11\x2b\x52\x3f\x50\x0e\x00\x87\xa7\x7d\xa8\x40\xe7\x6c\x93\x1f\xf0\x63\xc8\xbb\x5f\x89\x13\x2e\x4d\x94\xcc\xc2\xef\xb4\x01\x5a\xba\xa5\xf7\xa4\xd4\x13\xbb\x3f\x16\x6d\xbb\x96\xb4\xda\x1f\xda\x33\xfc\xf1\xc3\xcf\xfb\xeb\x8c\x3e\xb1\x49\x5d\x39\x67\xeb\x35\x15\x68\x85\xf9\xca\xe2\xac\x78\xb1\x47\x8e\x6b\xec\xa7\x8f\x30\x8e\x0b\x5a\x6f\x18\xd7\xd5\x70\x2f\x09\x55\xa0\x8e\x7e\xb2\xaf\xf4\x14\x68\xf7\xb3\xad\x05\x15\xe5\x37\x4a\xcf\x4a\x0f\xe2\x1c\x2b\x8a\xe0\xc6\xb2\x5f\xec\x7d\x52\xe6\x1a\x11\x3c\xb1\xb8\xa4\x7d\xed\xbd\xc6\x0f\xd5\xf1\xda\xe6\x47\x2d\xb4\x81\x70\x80\x72\x22\x30\x2d\xb8\x37\xbf\x82\x55\xac\x60\xb7\xc3\xc1\x91\x09\x93\xf3\x8d\xce\x68\x99\xe1\x99\x9c\xf5\xfd\xe9\x5a\xa9\xf5\xa0\x6c\xc2\x8e\x9c\xa0\x76\x94\x4e\xc7\x50\xb9\x31\xfb\xab\xab\xf3\x64\x13\xf1\x08\xc2\xa9\x9b\x9d\xe8\x5c\x58\x2d\x55\x59\x17\x6c\x7d\x0b\xc5\xe7\x5b\x24\x8e\x8a\xd4\x6b\xca\x25\xf3\xf2\xa4\x56\x88\x2a\xbb\x25\xd5\x3e\xd1\xa4\xef\x4b\x60\x75\x27\x3a\x2c\xd6\x86\x03\xee\x41\xec\x55\x72\xb8\x58\x62\xeb\x76\xb9\x68\x75\x20\x3a\xcc\xb5\xaa\xc9\x8c\x7c\xa6\x5c\x69\x1c\x2a\x27\x2d\x92\x2c\xd3\x5e\xee\x7e\x1d\x4d\x6b\x90\xb4\xe6\x4b\xfd\x54\xb1\x49\x89\x9b\x6c\x65\x41\x67\x46\x56\xe1\x23\xb8\x28\x36\x1a\xa6\x5e\x61\x7c\x68\xf3\x0f\xbe\x8d\xa2\xc0\xb1\xda\xb8\x99\xaa\x9a\xde\xd3\x82\xdc\x4a\x6d\x74\x45\xcb\x5b\x0f\x93\x04\x17\x05\x7b\x20\x26\xad\x97\x44\x3d\x7d\xfd\xda\x2d\x5c\xf8\x91\xbd\xea\x4c\xbd\xff\xe5\x06\x95\x44\x7f\x8a\x03\xf8\xcb\x74\xed\x57\x76\x26\x9a\xbb\x31\x9b\xcd\x94\x6d\xed\xe5\x3f\xa5\x1c\x9f\x17\xaf\xd0\x27\x62\xfa\x27\x15\x1c\xc9\x6d\x32\x81\x1e\x56\x4c\x59\x4b\x1a\x0e\xa8\xb1\xd8\xee\x00\x75\xfc\x75\x12\x9b\xa1\x70\x2a\xa9\x48\xa1\x59\x5f\xd5\x6a\xbe\xf2\x16\x06\x23\xac\xd0\x70\xd4\x7a\xf3\xf7\xa2\x0f\x4c\xbc\x31\xac\x53\x63\x68\xa7\x83\xd2\x83\x1d\xca\x87\x42\x8d\xe0\x9b\x75\x41\xcb\xbb\x63\x44\x85\x65\xbb\x72\xd7\x99\xd0\xed\xf2\x0e\x8a\x6b\x56\x13\x5c\x78\xb7\xd6\x1e\x76\xce\xde\x6e\x24\x91\x6c\xb8\xbf\xd9\x54\x44\x9d\x67\xc7\x96\x4c\xf8\x98\x6f\xe4\x78\x11\x37\x5c\x3f\xaf\x99\x00\x9a\x35\xf6\xc0\xff\x29\x4f\x41\xd6\x3c\xba\x9a\x9f\xcf\xaf\x7a\xc5\x93\xf5\x6f\x1d\xd7\xd4\x0e\x81\xf3\xfb\x8a\x9c\x4f\xb9\xfc\xd5\x24\xec\x57\x26\xcf\x56\xb8\x3a\x6b\xc4\xea\x82\xf2\x8c\xdd\x93\x44\xe5\xd2\x42\xb5\x1a\xc7\x0f\xa2\x76\x8a\x35\x2d\x74\xfe\xdf\x67\xd7\xbd\xca\x84\x7b\x92\x4f\xda\x9e\xcf\x09\x4f\xd6\x44\x87\xfb\x6d\x28\x3d\x6a\xaf\x0f\x4e\xbf\xaf\xc6\xe9\xa7\x4e\xe3\xd7\xea\xe8\xa3\x25\x15\x14\x0b\x06\xca\x50\xef\x5a\x79\x1a\x2e\xd8\xda\x1c\xa9\x2b\x4b\x46\x85\x9a\x28\xa7\x5d\x87\x32\x68\x83\xb5\xf5\x30\xa8\x92\x31\x32\x4e\x1d\x46\x72\x2f\x10\xfd\x18\x95\xe4\x21\x4e\x54\xf5\x8d\x3a\x1a\xff\x65\xd2\x0e\xe4\x3e\xc6\xc5\x5f\xdf\xfc\x97\x39\x5a\x25\x5e\x93\xbf\x2a\x19\x26\x4a\xb2\x85\xb5\x70\xa6\x2d\x53\xa5\x6c\x7f\x26\x2d\x84\xe8\x6f\x69\x7c\xce\x98\x7a\xf5\x78\xff\xde\xe0\x42\xcf\xe3\xfb\x7d\xda\x25\xbb\xeb\x91\xd4\x3d\xbb\x47\xec\x3a\xbc\xb7\xb6\x1c\x29\x98\xab\x3b\x5b\x3d\x11\x97\x16\x6b\x5c\x72\xb9\x78\x5d\x9f\xd1\x91\x71\x09\x1f\xa1\x97\x22\xab\x80\x98\x96\x8f\x90\xb6\xa4\x87\x69\xd6\xe2\x67\x97\xae\x14\xeb\xcf\x23\xf9\x47\xd5\x1e\x4f\x33\xc1\x75\x06\x70\xad\x08\xa0\x9f\x29\x17\x3a\x06\x5d\x53\x84\x54\xb6\x21\x3a\x41\x45\xca\x62\xd7\x0a\xd0\xbd\xfa\x07\xce\xf3\xfa\x8d\xbe\x83\x97\x46\x26\xaa\x95\x46\xcd\xe0\x65\xcb\xad\xe7\xff\xa5\xd8\x54\x34\x53\xea\xf3\xcd\xf9\xb5\xa2\xc4\xd1\x0f\xdf\x6b\xac\xa3\xbf\xfc\xf9\xfb\x6f\xa3\x5b\xe0\xcb\x65\x10\x4d\xb2\x71\x25\xc5\x77\x43\x1c\x1a\x31\xff\xeb\xde\xc4\xa0\x69\x11\xe1\x4a\x30\x9b\xb7\x95\xad\xf5\xbe\x34\xcc\x5b\x2e\xb2\xbb\x5b\xa2\x83\x4d\x12\xef\x0e\xd1\xcb\x5f\x41\xf4\xb2\xcd\x50\xd4\xfc\x6b\x57\xfe\xa7\x59\xdf\xb5\x65\x7d\x86\xb5\xc5\xb7\x1d\x98\xf5\x75\x58\x5b\x94\xee\xee\xac\x6f\xaf\x1a\x3f\xfd\x2d\x74\xa4\x66\xf2\x06\x0d\xfe\xdd\x5f\xa9\x5d\x2d\x07\x4a\xdd\x89\x99\x8e\x41\xa3\x2f\x53\x9c\x7b\xef\xdf\xce\x7b\xf6\x07\xf9\x8b\xf5\xe8\x75\xbd\x76\x61\x56\x39\xe2\xd1\xdb\x55\x7d\x29\x97\x41\x70\xa7\x47\xb6\x39\x5a\xc3\x39\xf9\xdc\x55\x1e\xe5\x24\x71\x52\xdf\xc7\xc5\xa3\x9d\x6d\x61\x91\x09\x40\x5f\xd8\x45\x25\x67\x42\xcf\x0e\xc4\x93\xf4\xa4\xce\xa9\x47\x99\x65\x98\xd8\x50\xa7\xe6\xab\x1e\xcd\xd5\x3b\xd6\x2d\x2a\xcf\x9c\x8e\xf3\xab\x25\x27\x96\x3c\x98\x70\x0e\xc1\x0b\xeb\xed\xce\xe7\xb3\xfb\xf6\x62\x84\x9d\x99\x71\xed\xca\x6d\xdb\xf0\x39\x2d\x4b\x9e\x17\x98\x06\xe1\x9a\x7a\xbc\x61\xe8\x75\xfd\xcf\xb9\xb6\xd8\x02\x4b\x22\x75\xeb\xa8\x20\x8c\x06\x29\xbb\x20\x1e\x6c\xb4\x7d\x05\x73\x1c\xe6\x3c\x13\xd7\xbd\x9d\x98\x99\xdd\x02\xed\x4f\xfa\x97\x4c\x76\x69\x2f\x4c\x59\x51\x4a\x8f\x83\x3d\xb7\xaf\xf5\xd3\xbb\x47\xa6\x0f\xa2\x52\x6c\x4f\x2f\xc2\xdc\x21\x6b\x37\xc6\x80\x05\xce\x03\xff\xb2\xf3\x8f\x1e\xfd\x4e\xf8\x94\x98\xa4\x1b\x9d\xae\x0b\x9b\x21\xbe\x4f\x05\x0e\xc6\x72\xdc\x2e\xdc\x99\xa9\xac\x98\x60\xe5\xc4\x7c\xa5\xeb\x81\x97\xbb\x31\x01\xfa\x89\x73\x9d\xa3\x57\xc4\xec\x27\x8e\x90\x0e\xed\x76\xde\x21\x55\xf4\xd6\x5c\xc1\xac\xb4\x7e\x22\x1e\xf7\x2f\x1b\xd3\xed\x1e\x8e\xfd\xbf\x0e\xf6\xc1\xbe\x11\x94\xf6\x75\xe6\xab\x3c\x31\xab\xf0\xea\xc2\x88\xc2\x36\x73\x90\x9b\xed\x88\xda\xfd\xe8\xed\xb9\xe8\xa0\x00\xc9\x47\xfb\x15\x2b\xf2\xab\x8b\x9d\x8f\x37\xab\xc5\x03\xab\x53\x31\x58\xae\x3b\xaf\xf5\xc2\x7c\xcc\xdf\x20\x71\xc7\xa0\x13\xfc\x85\x4f\xe9\x5c\xc5\x0f\x78\x43\x1c\x70\xd6\x41\xe2\x2a\xb4\xfe\x39\x74\xb4\x03\x47\x37\x4a\x35\x78\xb4\xf5\xd1\x1d\x3c\xb2\x40\xc5\xc6\x1d\xe9\x47\x39\xb2\x93\xae\xe9\x08\x32\x07\x3c\xf9\x65\x12\x32\xc7\xde\xf4\x29\x7d\x3a\x12\x59\xd6\xaf\xe6\x25\x93\xf4\x2c\xd7\xb3\x65\x5e\xd8\x1d\xcb\xe8\xd0\x41\x29\x01\x7b\x65\x56\x76\xb8\x3b\x33\x2c\x5d\x59\x3d\xfc\xb9\x81\xa2\x3a\x4b\x56\x2b\xd8\x0d\xaa\x91\x38\x5a\x74\x74\x83\xc3\x71\x6c\x6a\xba\xad\x71\xc5\xc3\x57\xa2\x64\x55\x7e\x55\x9e\x3d\xb0\xa5\xa9\x45\xaa\xde\x8d\x57\xa6\xda\xae\x3c\x15\x97\xee\x01\x05\x2b\xb6\xeb\x4c\x81\x94\x77\x5b\x87\x0a\x5c\x67\x2a\x4a\x35\x5a\xab\xa2\x5f\x85\x22\x4a\x31\x54\xa5\x62\xac\xfe\x04\x80\xe9\xfb\xf5\x29\xbe\x88\xd7\xd1\x6c\xf4\xa4\x8d\x65\xab\x4f\xd9\xf8\x75\x7d\xe8\x00\x25\x40\xa6\xd4\x95\xba\x76\xd4\xf5\x9a\x19\x00\x1f\x77\xd2\x11\x2e\x18\x08\x15\xdd\xdb\x04\x5e\x79\x3e\x13\xaa\xb3\xa9\x00\xbe\x97\xb4\x72\x02\x99\xad\x90\x3d\xa1\xde\x83\x8f\x7a\xe4\x0a\xe6\xb5\x14\x11\x08\xfc\x43\x37\xc1\xec\x5c\x81\x5e\x48\x2f\x99\x00\x5c\x54\xdb\xba\xdc\xb7\x23\x39\x1c\x23\x82\xb3\x15\xba\x23\x9b\x99\xe2\x31\x60\x9a\x08\x55\x58\xe5\xf4\xa9\x69\xba\xc0\xa2\x5b\x75\xab\xb5\x38\x41\x0b\xca\xc8\xd6\x56\x38\xb7\x19\x6f\xed\x9e\x73\xd9\x83\xc0\xec\xb9\xb6\x61\x6e\x84\x3b\xf4\xb0\x62\xdc\x18\x72\x8c\x51\xe7\x8e\x6c\x14\x3b\xc9\x58\x09\x52\x29\xda\x66\x08\xa8\x59\x53\xb1\x3c\xbd\xcc\x3a\x79\x62\x49\x0e\xab\xd1\xde\xb6\xc0\xb8\xdb\xd0\x1f\xc9\xbc\x23\x77\x62\x6f\x06\xca\x1c\x35\xa5\xd7\x23\xfd\x1d\x05\x60\xa9\xa2\xb0\x38\x29\x61\xd1\xcd\x1e\x4d\x35\x77\xdd\x90\x24\x05\x60\x4d\xb9\xa9\x89\xad\xa8\xa6\xcc\xa8\xde\x4b\x6e\x13\x74\x32\x14\x39\x11\x4d\x05\x0b\x3f\x6a\x9b\x8a\x2b\x93\x23\x27\x9c\x23\x0d\x93\xbd\xc6\xf5\x1d\xc9\x5d\x7d\x8f\x13\x55\xd8\x27\x65\x85\x2c\x0c\xa8\xad\x82\xa3\x35\x25\xbc\xf1\xd3\x45\x13\xea\xce\xc9\x76\x74\x72\xa2\xcb\xf5\x0c\xa5\x91\x82\xe9\x24\x32\x85\xbe\xe4\x82\x2b\x15\xaf\xae\x84\x4b\xb5\xb4\xca\x52\x0c\xaa\x0f\xe1\x37\x53\xeb\x12\x83\x4d\x98\x6d\x4b\xe7\x83\xba\xdd\x91\xa8\xbe\xd2\x6f\xdd\xc0\x30\xc3\x07\x5a\xb6\x9d\xd2\x6b\x34\xad\xca\x89\x6e\xf0\xca\x68\x23\x7d\x1f\xa9\x91\x96\x48\x12\xf9\x35\xd5\x86\xab\xa5\x25\x53\x1c\xae\xae\xd6\xab\x9b\x96\x4c\x35\x5c\x67\x4d\x57\x50\x4b\x26\x0a\xa9\xb8\x96\x4c\x34\x5e\x5d\x35\x99\x24\x40\x0a\x4e\xef\xe6\xe4\xaa\x6d\x6d\x4b\xaf\xdf\xd6\xb6\xd4\x4a\x6e\x6d\x83\xd7\x74\x6b\xdb\xd6\xb9\x77\x5c\xbc\x6a\x93\x7f\x92\xe7\xd0\x96\x73\x5b\xe3\xca\x09\x15\x82\x9d\xa0\x77\xe6\x56\x98\xb0\x2c\xb8\x6c\xcb\xbb\x99\xb4\x9f\xee\x15\x33\xe9\xe4\xa8\x41\x92\x82\xac\x49\x29\x0c\x48\x81\x25\xab\xae\x9d\x64\xa2\x2e\xc7\xdf\xdc\x1b\x69\x37\x96\xe9\xd8\x34\xe6\x99\x56\x6f\x49\xb7\x99\x5c\x9a\xa4\xe7\x13\xef\xbf\xc4\xc2\x98\xfe\x4b\xf1\xb0\xc8\xb6\x41\xe3\xea\x74\x4b\x8b\xae\x4b\x18\xed\x17\x88\xc3\xd3\x0d\x1e\x8d\x97\x40\x54\xc5\xed\x81\x63\xf2\x74\x9b\xb0\x77\xad\xe4\xb9\x53\xa1\xb7\x8d\xcb\xda\xe9\x48\xcc\x09\xa3\x65\x35\x92\xec\x5e\x29\x03\xf6\xaa\x37\x05\x64\x12\x47\x0f\xb1\xad\x76\xdf\x00\x9f\x0f\x60\x41\x7c\xef\x85\xb8\x46\xef\xd1\x04\x0e\x54\x6a\xfe\xcf\x5c\xa7\xdf\x2e\x53\xbe\x55\x1b\x3c\x61\x6f\x00\xca\x95\x4f\xee\x77\x62\x09\xf3\xa4\xbb\xa4\x0b\x5c\x1d\x28\x66\x9e\x44\x35\xad\xf0\x79\xdb\xa6\xaa\x33\x69\xc5\xd0\xdb\x06\x2c\x8b\x9e\x2e\x21\xda\x80\xdc\x50\x81\xf4\x64\xaa\xdb\x05\xd5\x27\x95\x4a\x6f\xdb\xd4\xe9\x46\x13\xcb\xa7\xb7\x2d\x5e\x48\x7d\x02\x51\xbd\xef\x5c\xf1\xf5\xa1\x92\xea\x93\xa8\xee\x56\x86\xdd\xeb\xdd\x54\x95\x17\x4d\x2b\xcd\xde\xb6\x68\x91\xf6\x49\xf3\xe2\x0a\xbb\xa3\x3d\x94\x6b\x6f\xdb\x0e\xd3\x34\x45\xc0\x45\x13\x8a\xb9\xb7\x6d\x92\xf4\x8a\x0e\x66\x8c\x83\x19\x23\xa9\x1d\xcc\x18\x7e\xdb\xd9\x8c\x31\x52\xa4\x3e\x79\x0a\xbb\xa6\x90\x81\x72\xf5\x13\xce\xce\x76\x79\xfb\x5e\xe1\xfa\x64\x9a\xc1\x42\xf7\xae\x84\x7d\x32\xd9\xfd\x96\xbc\x6f\xdb\x5e\x8a\xdf\xb7\x6d\xf2\x75\x32\xad\x20\x7e\xdb\x00\xa5\xf1\x27\x31\xc1\xb6\x94\xfe\x70\x91\xfc\x09\x86\xb3\x91\xa2\xfa\xbd\x72\xf9\x13\x8e\xc7\x7e\xca\xeb\x7b\x5d\xdd\xa9\xd0\x7e\xdb\x76\x91\x7c\x27\x16\xdf\x6f\x1b\xac\x0c\xff\x24\x91\x6c\xe9\x60\xc7\x07\x0a\xf2\x4f\xa2\x98\x56\xc4\xbf\x6d\x3b\x09\xbb\xc9\x85\xfd\xbd\x57\x63\x25\xfe\xa7\xce\xeb\x1a\x0b\xcb\xda\xb6\x8b\xfd\x4f\x22\xda\xd1\x29\x5e\xc7\xf1\x47\xb6\xdb\x4e\x93\x6c\x7b\xbf\xfb\x16\x6e\x6f\x53\x50\xcd\x8e\xb1\xa6\x40\xe5\x24\x97\x7c\xe2\xfd\x36\x5d\x6b\x98\x38\xdc\x89\x4a\xc3\x34\xf3\xfd\x73\x34\xc7\x27\x7e\x44\x87\x37\xee\xcd\x9c\x69\xca\xa0\x1d\xa2\x93\xfa\xdd\xde\x7f\x74\x92\x01\x5b\x38\x84\x26\xfd\xcb\x86\x26\xcd\x4d\xb9\xc0\xc1\xb8\x24\x1d\x6d\x94\x40\x14\x10\x97\xa4\x54\x87\x04\x92\x80\xb8\x24\xe5\xa3\x4d\x3a\x48\x87\xb8\xa4\x43\x5c\x52\x6a\xdf\x0f\x06\xbd\x83\x41\xef\x60\xd0\x03\xb7\x43\x5c\xd2\x21\x2e\xe9\x0f\xaf\x08\x1d\xe2\x92\x0e\x71\x49\x9d\xb8\x24\xa3\x30\x25\x09\xc5\x26\x28\xe9\xf9\xc6\x24\x99\xb2\xc5\x67\x59\xc6\x9a\x52\xdc\xb0\x3b\x02\x0c\x1a\x00\x29\xf3\x5b\xb4\x81\x03\x7f\x9a\x18\x25\xdc\xe4\x54\x6a\xcd\x13\xf7\xc8\x99\x79\xdd\x2a\xa8\xf2\x76\x2d\x73\x92\x3b\xba\x09\xfb\xc4\x70\x0a\x21\xe7\xe8\x04\x9d\xa1\x9a\x64\xb4\xa2\xf2\xfe\x50\x10\x2d\xea\xf7\x54\xed\xc9\xd5\x2a\xa4\x82\x93\x62\x69\x2a\xab\x95\x5e\x25\xe3\x56\x44\x4c\x57\x1e\xed\x20\x3b\x5d\xd7\xe2\x12\xb3\x25\xbc\x12\xa8\x9a\x22\xd2\x35\xf9\xa7\x95\xe0\xcc\x5c\xdc\xf8\xdf\xca\xa1\x18\x57\x6d\x33\x3a\xbd\x37\x68\xd3\x61\x5c\x51\x28\x1a\x99\xa3\x95\xce\x87\xc8\xe7\x8a\xd6\xea\x60\xcc\x49\xc6\xca\x7c\xaa\x25\xe9\xb2\x4f\xc7\xee\x3a\xe3\xb7\x49\x5a\xc2\xbc\xd1\xa4\x54\x0a\x26\x2e\x68\x4e\xc5\xc6\x85\xf8\x98\x3a\xe6\x58\x9f\xda\xa4\x99\xd6\x9b\x97\xb7\xcb\x87\x70\x55\xd5\x0c\x67\x2b\xc2\xbd\x99\x48\xb9\x2e\x94\xa0\xa7\xd1\x1a\x5c\xb6\x68\xd1\xdc\xd2\x52\x2b\x23\x8a\xba\x94\x2c\x01\xf9\xf8\x6d\xab\x99\xb0\xa1\x74\xbd\xe1\xfa\xbb\xce\x7c\x36\xd5\xa6\xa4\x2d\x0b\xa2\xde\x28\xf8\x23\xe6\x7f\x4c\xcf\x09\x00\xbf\xa4\x3b\x7e\xf3\x1a\x47\xac\xc8\x2d\x7a\xe4\x0f\xdf\xa2\x8a\xd4\x99\xe1\x10\x69\xae\x45\x05\x31\x28\x18\x2a\xa4\x44\xce\x6a\x8b\x51\x39\xf0\x99\x04\xa2\x7f\xfe\x0e\xad\x58\x53\xf3\x13\x1f\x3f\xe1\xb5\xfa\x4d\xdb\x6e\xf4\x0d\x98\x62\xf7\x12\xa8\x20\x98\x0b\xf4\xfa\x5b\xb4\xa6\x65\x23\x05\x1f\xf0\xeb\x9e\xb2\xf4\xfd\x77\x89\x07\x3c\x4d\x4d\x4a\x53\x90\xb6\xc3\xbd\xcc\x39\xae\x74\x3d\x23\xa3\x27\x25\xd9\x16\x14\x48\xbc\xda\xbd\xba\x6e\x5a\x37\xce\xc1\x5e\xa2\x89\x3a\x97\xd9\x0d\xa5\x60\x8f\xc8\x1f\xd3\xb4\x8b\x04\x3d\x21\x49\x0a\x4a\x78\x18\xa6\x44\xc0\x20\x2b\x8c\x83\x32\xf0\x0c\xa8\x63\xbf\x35\x6c\xb1\x11\x70\x6c\x9d\xbf\xeb\xe7\xbb\xa0\x3a\xf6\xc7\x2d\x10\xd3\xe0\x7c\x6c\x97\x25\x6c\x31\x4c\x03\x2f\x42\x25\xb5\xdb\x9a\x35\xd1\xdc\xf7\xce\xd8\x94\xcd\xc6\xda\x08\xcc\x75\x81\xb3\x8c\x70\xc5\x8d\x2e\x5c\x19\xf1\xe8\x96\x28\x99\xfe\x3a\x68\x3b\x3c\x16\x12\x4d\x10\x43\xd4\xae\x18\xd0\x49\xf3\x98\x38\xa2\xa0\x49\x82\xe8\x30\x35\xb9\xa5\x5c\x24\x57\x41\xd5\x2f\x75\x37\x34\xa7\xe5\xad\xaa\x00\x87\xd6\x4d\x21\x68\x05\x48\x01\xb0\x33\xea\x08\x1a\xd9\xc0\x77\xbc\x60\xcf\x7a\x8f\xe3\x53\x24\x4f\x90\xc6\x81\x56\x0e\xbc\x97\xb6\x2f\x88\x94\x42\x61\x9c\xa8\x20\x71\x52\xe1\x1a\xdb\x65\x89\xd2\xcc\xd8\x7a\x8d\xf9\x2b\xe3\x03\xc2\x2a\x70\x49\x5f\x21\x52\x1a\xa8\x71\xe1\xa6\xd1\x0f\x39\xd9\xd7\x46\x16\xa4\xc4\x65\xd4\xdf\xdb\x35\x00\xaa\x57\x10\x7b\x28\x6d\x45\x13\x5d\x42\x37\x71\x07\x1b\xbd\xe3\x47\x9c\xdd\x91\x32\xd7\x15\xd9\xd5\x3e\xce\x37\x25\x5e\x1b\x84\x6c\x57\x6f\x9a\xe4\x96\x7e\x94\xb0\x0b\xca\xd1\xb0\x34\x1a\x30\xc6\x82\x64\x69\x61\x73\x5f\xb3\xd7\xf0\x44\x88\xdb\x8f\x5c\x4a\x62\x61\x7e\x06\xf2\x44\x70\x52\xd3\xfb\x8c\x58\x31\x57\x76\x64\x5f\x83\xba\x8f\x62\xbb\x6d\x0d\xcb\xe0\xba\x51\xef\x34\xa9\xbb\xc4\x39\xb2\x15\xaa\x36\x2e\x24\x8b\x8a\x0b\xf6\x16\x92\xa8\xbb\xa1\xe4\x0a\xee\xb1\x4a\x33\xb4\xe8\xb0\x3e\x7a\xc1\x87\xa2\x1b\x1e\x74\xef\xd7\x0b\x38\x46\xd5\xd1\x87\x1f\x2f\xba\xfc\xf1\x03\xce\x19\x47\x3f\x16\x2c\xbb\x43\x17\x44\xa9\x40\xf1\xfa\xe7\x7d\x70\x73\x50\x49\xe2\x20\xc5\x58\x59\xb4\x7a\x91\xef\xb7\x28\xda\xa1\x48\xd7\x57\x53\xa4\xab\x5e\xc4\x6d\x1e\x7f\xd4\x12\x5d\x6b\x7c\x9b\x5a\x85\x72\x45\x50\xad\x0e\xb5\x7a\xd9\x56\xfe\x87\x57\x20\xec\x1c\xb5\x6f\x56\xec\x61\x26\xd8\xac\xe1\x64\x46\xa3\x41\x7f\xe0\x71\xdd\x91\x8d\x7c\x26\x6d\x64\x7f\xd3\x2f\x75\x14\x65\xc1\x94\x59\x5d\xfd\x2e\xa5\x9c\x0f\x3f\x5e\xc8\xab\x12\x8e\x99\x4c\x39\x3a\x25\x22\x3b\xcd\x48\xb5\x3a\x35\xdd\x7a\x76\xd3\xb5\x66\x25\x15\xac\x4e\x2c\xaa\x7e\x86\x32\x56\x14\x06\xf1\x8c\x2d\xd1\x39\xa9\x56\x8e\x54\x92\x0f\xea\x11\xe7\xe0\xcb\x95\x63\xaa\x18\x4b\x2b\x11\xe3\x1d\x2d\xf9\xae\x39\x59\xde\x46\xaa\x17\xf9\x5e\xab\xaf\x3f\xc5\xd6\x7a\x84\xaa\x16\x60\x60\xd4\x31\xec\xd3\x81\xaa\x54\xcf\x64\xb7\x3e\x76\xf5\xab\xa3\xb9\x7d\x4d\x05\xf5\x79\xbe\xe3\xa4\x62\x56\xf6\xf3\x1d\x96\x88\xae\x96\x5a\x2d\xca\x49\x8e\xd8\x3d\xa9\x6b\x9a\x13\x6e\x59\x71\x12\xc7\x2c\x69\xf1\x54\x3c\xf2\x50\x97\xeb\xab\xa8\xcb\x95\xac\xf0\x7a\xcc\x56\xbe\xbb\xcd\x6c\x71\xbe\xa6\x80\xdc\xe5\x67\x75\x93\x03\x2b\x6b\x49\xb9\x2d\xf8\x84\xbd\xc4\x77\x55\x1d\x79\x86\x0b\x72\xf5\x0b\x58\x7d\x9c\xeb\xe7\xbb\x1a\xa4\xfd\xd1\xab\x9a\xb0\x03\x22\xfb\xdf\xdc\x21\x43\x25\xcb\xc3\x9e\x9e\x43\xcd\x84\xbe\x6a\xe6\x9d\x0f\x0d\xc9\xbe\x2f\x31\xe1\x16\x0b\xf2\x80\xd3\xa4\x84\x1b\x3b\xc4\xb6\x02\x93\x8e\x9f\x31\x1b\xe6\xec\xfa\x0a\xfd\xa4\xe9\xee\xaf\x38\x43\xcd\x84\x96\x78\x2f\xd8\x1a\xd3\xc4\x52\xba\x5e\x39\x1c\xbf\xa3\xd7\x8e\x28\xd2\x54\xa3\xcb\xe2\xd5\x07\x5e\xd2\xdb\x46\x6a\xc8\x46\x6b\x3d\x60\xda\x47\x86\xfe\x78\xc2\x55\x2b\x5b\x79\xe6\x45\x9b\xea\xe1\xe4\xa5\xe8\xd0\xed\xae\x50\xd7\x92\x0b\x73\x41\x9c\x94\x9c\x2a\x9f\xad\x17\x04\xa5\x84\x2e\xb1\x02\x38\x9a\x5c\x0e\x87\x16\xd0\x8e\xd1\xcf\xec\x96\x96\x96\x3b\x30\x13\xe6\xb0\xc4\xb4\x88\x4d\xe3\x41\x62\xfa\x2a\x24\x26\xce\x8b\xcb\x12\x2f\x8a\xb8\x53\xbc\x7b\x71\x15\x58\x45\x9b\x10\xf5\xee\x69\x4e\xb9\xfc\x7f\x34\x9f\xff\xac\x1c\x46\x4d\x09\xd5\x20\x94\x4b\xc5\xb0\x67\x87\xad\xa3\x99\xc6\xfe\xce\xb1\xe6\x89\xc9\xf5\x08\xae\xca\x5c\x0e\x83\xf0\x4e\x5c\xa6\xa1\xa6\x4b\x30\x40\xbd\x49\x26\xde\x6c\x41\xd0\xcd\x8a\x66\x77\xd7\x9e\xdf\x88\xd5\xf2\xb7\xd2\xfb\xc9\x5d\xb0\x90\xe3\xdc\x7f\x77\x5f\x8c\xdf\x0c\xf3\x3a\xd5\x7c\x71\xe3\xdd\x68\x73\x33\x55\x92\x08\xc2\x9c\xb3\x8c\xc2\x1d\x8f\xca\xf8\xd6\x5e\x89\xb9\xba\x12\xf7\x37\x3c\x25\x05\xed\x74\x6f\xdb\x8d\x60\x04\x38\xcc\xbd\x7b\x18\xe2\x5e\x34\xb3\xb4\xb7\x21\xe9\xad\x98\x5c\xab\xef\xa6\x53\x9d\xcf\x7a\xfd\xb4\x2f\xcc\xf9\xba\x80\x85\x31\xec\xc2\x5b\x99\xd6\x94\x66\xed\x2d\xbd\x5f\xa5\x2f\x7e\x72\x54\xd8\xca\x93\x7a\xd5\x8c\x14\x1a\x7c\xc6\xc9\x06\xe1\xa7\x62\x72\x3b\x4c\x7f\x8a\x26\x3d\x0f\x59\x77\x7a\x01\x0a\xfa\x37\xe3\x46\x53\xcc\xa8\x62\x55\x53\xe0\x88\xc7\xda\x2f\xa8\xb8\xab\x07\x45\xf7\x61\x1f\x6e\xb5\xa9\x15\x66\x46\x12\xeb\x7a\xc5\x66\xe2\x72\x77\xbf\x18\x0d\xa4\xd8\x0c\xd4\xf2\xa5\x3a\xf4\xed\xf7\xdf\x7d\x37\x54\x9e\xa6\x53\x7e\x26\x2e\x77\x01\xcb\xd3\xf4\x12\xe4\x60\x97\x76\xb0\x3c\x4d\xbf\xfc\x4c\x7c\x4a\x01\xe5\x69\x12\x13\xda\x1e\xa7\xfe\x0c\xc8\x93\x90\x90\x95\x6f\x73\xed\x41\xfc\x35\x94\x8b\x3f\x9a\x61\x0f\xb8\x8b\x3a\x19\xf8\x90\xbc\x7a\x80\xcf\x52\xe5\xdd\xef\x35\x9b\x3e\x21\x87\xbe\x93\x19\x1f\x25\x1c\xca\x9c\x1f\xcd\x87\x87\xeb\x5a\x8a\x16\x28\x0b\x3e\x4a\x13\x5c\x93\x03\x1c\x00\x0d\xca\x78\xef\xe6\xb1\xc3\xf8\x03\x24\x6b\x70\x4a\x7d\xa5\x40\x4e\xbb\xcb\x53\x07\x28\x53\xd0\x4c\xf6\xb4\x3c\x1f\x70\xd6\xfa\x5e\x72\xd5\x13\x03\xa0\xe1\x79\xe9\x29\x97\x26\xc8\xee\xa0\xdb\x60\x0e\xfa\x48\x4e\x39\x90\x64\x37\xf3\x3c\x92\x49\x0e\xa4\xa9\xf2\xcd\x41\xf9\xe3\xf6\xfa\x03\x12\x8e\x5c\x92\x9d\x4b\x10\x4c\x72\x1f\x57\xa5\x6e\xe9\x19\xdf\xa9\x09\x0c\xf0\xe4\x05\x50\x4e\x77\x22\xb6\xe2\x78\x26\xf7\x76\x66\x36\x90\xe4\xbb\x01\x86\x39\x9e\x8f\x0d\x24\xea\x81\x85\x4c\xca\xc2\x4e\x62\x0b\xf0\x9c\x08\x58\x9e\x35\x30\x6b\x62\xef\x49\x10\xf0\x1c\x5c\x78\xe6\xad\x03\xf9\x8f\x0e\x27\x2d\xe1\x36\xd5\x04\x9d\x5e\x7f\xdf\xb7\x9d\x1a\xd5\xcf\xee\x4e\x1d\x3a\xe9\x80\xc3\xe3\x2b\xa5\x38\xfd\x13\x28\x7f\x08\xbe\x75\x61\x6a\xb3\xee\x01\x0b\x5e\xdc\xdd\xcd\xa0\xdf\xf8\x65\xde\x73\x3d\xba\x9f\xad\x80\x6c\xbc\x8a\x61\xd7\xe3\xc1\xe3\xf8\xf5\x57\x69\x3f\xb8\xc7\xa6\xbb\xc7\x78\x07\x92\xd3\x1a\xa8\xb4\x5c\x09\xf1\x90\xb1\x85\x29\x48\xa1\x99\xb6\x3b\xa4\x67\xd7\x57\x28\xab\x89\xca\xc0\xc6\x05\x3f\x41\x13\x10\x8a\xac\x23\x42\x49\xa8\xdc\x69\x9e\x58\x08\xb2\xae\x44\x7c\x03\x1d\xbc\x63\x5f\x85\x77\x6c\xa2\x49\xfd\x57\xf7\x9a\xb5\x7f\xac\x9a\x35\x2e\x67\xf2\x94\x2b\x3f\x99\xb1\xb7\xc3\x6c\xea\xbd\xdb\xe7\x04\xd9\x7c\x16\xb5\x30\x2a\xa7\x4b\xa5\xd5\xe9\x22\xea\x20\xe5\x5c\x61\xb9\x39\x11\xe0\x11\x3c\x10\x8a\xee\xc4\x39\xd3\xf5\x4c\x7a\xdc\x21\x63\x15\x78\xc6\xcc\x2d\x6d\x06\xea\xe6\xcf\x32\x02\xaf\x68\x8a\x6f\xd5\x81\x90\xd6\x22\xd4\xb5\xca\x3c\x6d\xa9\x74\x70\xca\x0c\xf0\x18\x2e\x0a\xf6\x00\x48\x6a\x5c\x91\x8e\x64\x20\xf7\x85\x1c\xab\x49\xe6\x5f\x10\xb4\xa6\x75\xcd\x6a\xe3\x39\x01\x98\x09\xdb\xed\xa2\xa2\x43\xa4\xfe\x4a\x6a\xad\xa2\xd5\x26\x58\x60\x4e\x84\x37\xdd\x10\x01\x10\x97\x3a\xb9\x49\xfe\xdb\xc6\x74\xea\x7a\x50\x86\x4f\x2e\xc8\x0a\xdf\x53\xd6\xd4\x8a\x3a\x84\xe4\x0b\xf3\xaa\xbc\xba\xd1\x86\x35\xae\x9e\x7a\xa3\xd2\x1c\xdc\xec\x82\x0b\xb3\x7b\xeb\xfc\xbe\x7d\x59\xa9\xdc\x39\xb3\x96\xb8\x19\xf9\x4c\xb9\x48\x9f\x4b\xbb\xc4\x16\x91\xff\x29\xc5\xd8\x66\x11\x2b\xf6\x02\xfa\xdc\x3d\xaf\xa4\xbc\xf0\x6b\x34\x7d\xae\x7b\x2c\xfd\xb7\xba\x62\xf1\xfd\x5c\xfd\x69\x17\xa1\xd8\x60\x5e\x70\x2d\x31\x9a\xb4\x96\x83\x60\x1c\x6a\x7f\x10\xc1\xd8\x85\x0f\x14\x34\xdb\x5c\x5d\xa4\x89\x88\x2e\x6c\x40\xbe\x8c\x7e\xc4\x9c\xe4\xe8\x1d\x2e\xf1\xad\xb6\xa9\xbc\x9c\x5f\xff\xf8\x2e\x5e\x31\xa0\xaa\x99\xb2\x0f\x5d\x5d\x0c\x38\xa0\xdd\xbd\xaa\x3f\xf2\x7e\x7f\x99\x9b\xbd\xb1\x27\x0b\x0f\x7b\x1e\xfd\x1e\x73\x52\xed\x05\x0f\xa9\x3d\xb5\x0d\x3c\xa2\x83\x01\x2c\x2e\x12\xef\xb3\x8f\xfb\x75\x7e\xb7\x9f\x6e\xc2\x9c\xfc\xed\x50\x76\x63\xd0\xd1\x47\x2a\x2a\x46\x63\xd2\x21\xfc\x4c\xe0\xfa\x96\x88\xab\x32\x2b\x1a\x4e\xef\xe1\x9c\xfb\xa6\xfb\x9e\x27\x50\x39\x5b\x17\x43\x54\xfe\x39\x0f\xcb\x00\xac\xbc\x65\x4a\x1e\xa9\x71\xc9\xb1\x8e\xc6\xa1\xa5\xc9\xaa\xd7\xbd\xd3\x48\x30\xa1\x6d\x06\x53\x2b\x35\xb5\x1b\x9a\x70\x41\xdd\xb8\x57\x7a\x22\xa3\x82\x1d\xe2\x02\xaf\x2b\xa4\x41\x3a\xe2\x5e\xbb\x9a\x64\x52\xba\xd9\x38\xb0\xa7\x8c\x84\x59\x22\x68\x47\xb6\x83\x2a\x68\x39\x65\x60\xf2\x35\x6f\x70\xa6\x97\x5a\xb7\x97\xc2\x59\x70\x4c\x15\xae\x05\xcd\x9a\x02\xd7\x6a\x46\x24\x2d\x8d\x37\x95\xb7\x41\xdc\x82\x59\xa2\x08\x17\x4c\x2b\xd4\x61\x0e\xa7\x64\x41\xdb\x35\x75\xb2\x1f\x30\xb7\xf5\x58\xe4\x06\xd3\x92\xf2\x02\x73\xf9\x3f\xd9\x5d\x53\xc9\x07\x82\x34\x05\xbe\x23\xc1\xf8\xae\x84\xc9\xfe\xdf\xe1\x1b\x67\x60\x9e\xff\xf7\xd5\x45\x7f\xff\x78\xdb\xfd\xea\x42\xef\xa1\xe0\x00\x34\x42\xc6\x63\xec\xa1\x28\x8f\xa9\x09\x1f\x8d\x0f\x82\xf0\x98\xa6\x0e\x5a\xcd\xf7\xd1\x45\xfe\x97\x5d\x3a\xb8\x68\xb2\xbb\x70\x08\x14\x68\x77\x90\x32\x57\x9c\x6a\x67\x42\x55\x4d\x96\xf4\xf3\xce\x64\x6a\x72\x1b\x29\x9b\xb9\x97\xa9\xd7\x12\xc5\x3c\xea\x4b\x88\x7e\x8c\x3f\xd0\xe5\x4e\x1b\xad\xad\x58\xf5\x2c\x56\x20\x32\x75\xc1\x3f\x6b\x16\x32\x1f\x2d\x9c\x13\x9b\x0e\xfc\xc0\x2f\x0b\xcc\x05\xcd\x14\x2c\x86\x14\xfb\x46\x17\xa6\x97\x71\xfd\x69\xbe\xf5\x66\x47\x35\x2b\xd1\xd9\xa7\x39\xba\xa0\xfc\x2e\x5e\x97\xc6\xc5\x68\xda\x4c\x29\x15\x4d\x61\x14\xb3\xa3\xa3\xae\x6a\x66\xa3\xb3\x4a\x5b\xf8\x68\x9c\x2c\xb3\xde\xa6\x9d\x3d\x47\xf8\x81\x13\x3d\xdc\x85\x1c\xae\xfc\xf3\x28\xf4\x01\x64\x0f\xc6\x95\xc3\x29\x78\x1c\x0a\x6f\x23\x7c\xc1\x25\x61\x71\x74\xb0\x36\x82\x74\x81\x38\x1c\x3d\x9c\x8d\x20\xc9\x04\xed\x12\xae\x3d\x3e\xc2\x36\x08\x7e\x6f\xff\x60\x1c\x53\x80\x38\x60\xcc\x4c\x0a\x69\x22\x72\x15\x6c\x27\xae\xba\xd7\xec\x60\x76\xd8\x93\x57\x4b\xc4\xd6\x54\x08\x1b\x45\xd3\x15\x0f\x35\x50\xdf\x62\x03\x89\xda\xd6\x39\xb4\xed\xbe\x7b\xeb\x60\xc1\xd0\x69\x4e\xee\x4f\x79\x8e\x5f\x1f\xab\xee\x71\xe3\x7c\x8f\x89\x9b\xed\x38\x31\x47\x2f\x5e\xbf\x38\x41\x73\xba\xa6\x05\xae\x8b\x4d\x27\xe4\xa7\x7d\x2e\xe6\x3f\xb2\x1d\x51\x29\x8c\xdf\xbe\x40\x2f\x59\xad\x7a\x94\xe1\x12\x15\x04\xdf\x13\x9b\x7e\x20\xb9\xc9\x06\x91\x75\x25\x36\xaf\x82\x61\x34\xd0\xe0\x19\x58\xc8\x0c\xc4\xaf\xd8\x0b\xfa\x36\x73\xf9\x42\xd4\x0d\x79\xa1\x5c\x8b\xca\x27\x28\x39\x36\x27\x02\x0e\x99\xe0\x06\xdd\x73\x1c\x2a\xa3\xad\x22\x3e\xba\x59\x82\x74\xe5\x4c\x2b\x6f\xe7\x8b\x27\xbd\x11\x10\x58\xf9\xd4\xd4\x13\x34\x87\xa3\x8f\xca\xe3\x22\xb5\x03\x5b\xe6\xbd\x4d\x4e\xce\x41\xb7\x2f\xd2\xa9\x20\xf2\xba\x7e\x79\xb6\xc6\xbf\xb3\x12\x5d\xfe\x68\x3d\x3d\xaf\xbe\xd0\x44\x05\x99\x55\xcc\xba\x32\x73\xf3\x38\x55\x5c\xc5\xbf\x37\x35\x91\xc2\x0b\x48\x1a\x3a\xb3\x4f\xf7\x25\x20\xf9\xbb\x0e\x98\x56\x7f\xb5\x50\xa3\x01\x41\xc8\xe6\x11\x97\x39\x5a\x50\x6b\xa8\xf6\x25\x99\x5d\x04\x5f\x75\x53\xdc\xc6\x32\x16\xba\xfb\xeb\xbf\x65\x77\xce\xf5\x9b\x3a\x7a\x13\xbd\x67\x25\x39\x56\x07\x19\xc9\x93\x6c\xfe\xf9\xa9\xa6\x82\x04\xd9\x13\xe8\x1a\x92\x7b\x36\x66\xaf\xdc\x0a\xcc\xf3\x1d\xd1\x0a\x48\x5f\xed\x7c\x73\x21\x2d\x0a\xb6\xb0\xfa\xc7\x3e\x7a\xf7\xf1\xc3\x55\x52\xe7\x3e\x7e\xb8\x7a\xfc\x8e\x25\x0a\x94\x7b\xf4\x34\x3c\x8a\x97\x21\xdd\xc3\x00\x95\x01\x41\xb3\x79\x47\xcb\x04\xa4\xc1\xcb\xcf\x95\x4e\x05\x30\x91\x1a\xf3\x15\x56\xe5\x47\x1d\xf4\xa9\x5a\x68\xb9\xf2\x61\xeb\x53\x45\x6a\x97\xd0\x67\x51\x2b\xd1\x05\xd1\x09\xa0\xf9\x1b\x0b\xf0\xea\xa8\xf9\x2f\x84\x3d\x5e\x96\x98\x36\xe1\xe7\x6f\x34\x7f\x43\x6b\xfd\x9f\xde\xce\x7c\xa9\xbc\xf8\xb4\xb4\x7f\x0a\x93\xbd\xc7\xb4\xc0\x0b\x5a\x50\xa1\x42\x7d\x5e\x9d\x74\x8a\xc8\x2a\xa4\xc4\x20\x82\x21\xd0\x3e\x91\x28\x86\x40\x43\x9b\x54\xe8\x52\xd8\x9a\xb6\xbf\xb0\x26\xc8\xf5\x1f\xbf\xd6\x2c\x73\x0c\x3e\xf0\xf1\xc3\xd5\x4e\xd7\x9e\xe4\x0d\xf0\x6b\x4f\x3e\x3d\x78\xed\xa9\x3f\xcc\x4d\xad\x81\x30\xd0\xa6\x0f\xb2\xf9\x28\x37\xdf\xbf\xce\x1e\x82\x86\xeb\x76\x46\x2b\xbc\xf4\x5b\x3f\x49\xd3\x58\xca\xb8\x59\xd1\x39\x80\xd5\x98\xca\x37\xfa\x46\x96\x6b\xf9\xb7\x60\xbc\x36\x88\x03\x28\x46\x92\x34\x20\xc5\x81\x51\x24\xb2\x64\x2f\x82\x66\x3b\xdb\xe3\x8f\xd8\xee\x4f\x3d\x95\x19\xa9\x56\xcb\xd1\xdd\xdd\x19\xf8\x39\xa9\x56\x6f\x7b\xa1\xc3\x0a\x0c\xf1\xed\x7c\x1b\xe8\x5e\x2d\x72\x78\xd6\xc1\x20\xf7\x90\x53\x08\xc1\x76\x1c\x2b\xe5\xfd\xce\xbc\xab\x01\x94\xb7\xd1\x1e\x83\x9b\xd2\x7e\x38\x05\x22\x4b\x4f\xfa\x14\x94\x2c\x40\x42\x59\x52\x6c\x4e\x38\xeb\x20\x96\xce\x32\x96\x46\xa5\xc0\xc4\x0d\x8a\xba\x8d\x86\xa9\x19\x13\xc7\xa8\xc6\xd1\xb2\x94\xaa\x1e\x8b\xb2\x5c\x35\x45\xa1\x37\x98\xa8\x09\x39\xf6\x2d\x36\xa7\x4f\x7f\xf3\x7b\xc3\x8b\x30\xf0\xe0\xe8\x40\x90\x8f\xd3\x62\x9b\x9f\x64\x03\xa6\xdc\x13\xa1\xcb\x3e\x34\xbf\x73\xf7\xf6\x18\x48\x6d\x70\x1e\x96\xac\x56\x40\xef\xdd\x1d\xe3\xd0\x69\x1b\x4e\xea\x13\x73\x13\xed\x09\x56\x7b\xd7\xe9\x8c\xdd\x51\x90\x40\xf4\xf0\x64\x1a\x28\x4c\x97\x4d\x6d\x65\x9f\x04\x3c\x4c\x0f\x0b\x73\x6b\x76\x95\xfd\x30\x09\xcb\x72\xfa\x94\x41\x63\xe4\x20\x61\xe7\xcf\x3b\xe4\x3c\x35\xdc\x1c\x14\x4a\xbe\xcf\xd0\xcd\x18\x1c\x65\xe0\x7e\xa8\x5d\xc1\xb5\x2e\x38\xe5\x31\xd4\xd6\xaa\x80\x2b\x9f\x92\xe7\xed\x28\xcc\x45\xc0\x26\xe3\x82\x1a\x2d\xf3\xf1\xd9\xee\xce\xf4\xb9\x7a\xb6\x2b\xa9\xe9\xf7\xfb\xc1\xac\xc1\x4c\xdc\x58\x20\x2b\xe8\xc0\xaf\x37\xfc\xb7\x62\xa6\xbf\x3e\xab\x00\xe5\x07\x9e\xc2\xc5\xf9\x74\x26\x29\x48\x91\x80\xc7\x28\x10\x00\x28\x0e\xb0\xf3\x4a\xa1\x83\xb0\xf5\x48\xf3\x09\x93\xaf\x26\x4a\x04\x2a\x42\x88\xeb\x38\x08\x73\xa9\x6b\xbe\x63\x75\xf2\x28\x3a\x28\xae\xf1\x9a\x08\x52\x2b\xbe\xad\x36\x65\xc6\xca\x52\x65\xfd\x33\xf4\x4b\x45\xca\xb9\xc0\xd9\x5d\xd0\x5e\x7f\xb8\xc5\x9f\xcd\x2d\x9e\xee\x17\x34\x97\x08\xcd\xdd\xfa\xbb\xe2\xb8\x9e\xb7\x9a\x96\xe6\xd2\xf9\x92\x27\xe9\x0b\xfb\xfa\x34\x62\xde\x3b\x3c\x5a\x77\xaf\x6b\x61\xb1\x4f\xf7\xae\x6e\xf7\x73\x12\xbc\x59\x1c\x85\x0e\x72\x08\x81\x50\x64\x13\x60\xc8\xf4\x8d\x1b\xdc\x1b\x89\x10\x64\xb0\x62\x7b\x50\xf8\xb1\x0e\xbc\x58\xac\x9b\x40\xe8\x31\x0f\x5b\x25\x48\x11\x08\x3b\xb6\x05\x2b\x16\x24\xba\x1b\x8e\xca\x7e\x03\x40\xa2\x86\xac\x09\x10\x63\xd1\x09\x08\xc2\x8b\xb5\x87\x2f\x0d\x61\x6c\x02\xba\x98\x45\x0f\x8b\xe9\x38\x50\x64\xb1\xa9\x3d\x0e\xa2\x8a\x6d\xa1\x86\x85\x65\x02\x00\xa2\xd8\x36\x62\x58\xc4\x10\x48\xda\x45\x19\x01\x14\x1b\x00\x0c\x0b\x5b\x6b\x83\x60\x62\x41\xb0\xb0\x68\x5f\xb7\x81\xc4\x60\x40\x61\x00\x9b\x6e\x32\x40\x18\x08\xfe\x0b\x9e\xc4\x0f\x82\xfd\xda\x19\xf2\x2b\x21\xc3\x1d\x06\xf5\x95\x0a\xf3\xa5\x01\xbc\xa2\x64\x11\x10\xe2\x2b\x15\x94\x01\x45\xe0\xbd\xb6\x80\xbb\x00\x14\xa3\xd0\x5e\xfd\x2b\x06\x40\x33\x76\x09\x0d\x5d\x34\x90\x49\x4d\x84\xf4\x4a\x83\xf3\x4a\x81\xf2\x82\xc1\x78\x25\x41\x78\xa1\x35\x8e\x55\x3f\x46\x66\x03\x40\xe0\xbb\x12\x10\xb7\x60\xd0\x5d\x1e\xc3\x02\x76\x33\x09\xb6\x2b\x01\x70\x06\x02\xd7\x15\x87\xea\x02\xc0\x74\x01\x51\x32\x20\x8e\xb2\x98\x96\xfa\x7c\x35\xd4\xbd\x6b\xa7\xa0\x95\x86\x40\x99\x45\x61\xcc\x5a\x81\xcd\x43\x32\x53\xac\x39\x2c\xac\x43\x50\xcc\x20\x66\x98\xb8\xf2\xc7\x29\x4c\xed\x9b\x5f\xa1\x97\xe7\x36\x73\xc8\x25\x48\x5f\x95\x82\xd4\x4b\x9c\x91\x57\xbe\x3a\x18\x8b\xc9\xb2\xf9\x2e\x2b\x5c\xe6\x85\x36\x50\xe2\x12\x91\xcf\x82\xd4\x25\x2e\xd4\xb7\xf2\x9a\xde\x93\x1a\xbd\x3c\x2b\xaa\x15\x46\x4b\x82\x45\x53\x8f\x9b\xd2\x40\x4a\xa2\xa2\x08\x8f\x80\xd1\x1d\x30\x12\xae\x8f\x39\xef\x75\x4f\x0d\x44\x8f\x22\xa2\xcf\xf9\x10\xde\xe7\xac\x54\x77\x8f\xba\xe8\x36\xac\xa9\x8d\xa3\xa0\x2d\x25\x53\x4b\xa5\x4f\x7d\x34\x48\x15\x73\x53\x7d\x98\xd4\x0a\x88\x57\xbf\x5d\x34\xf2\x87\x9d\x63\x00\xf7\x16\x51\xe9\xc5\x3c\x26\xe5\xbd\x2c\x7b\x65\x52\xe4\xe0\x94\x13\xaf\xad\xda\x5d\x61\xae\x8d\x3b\x51\xc1\xd7\x43\x1f\xf0\xd6\x4f\x8b\xfc\x4a\x74\xc9\x89\x20\xf5\x5a\xa7\xd2\xc2\x82\xe9\xfd\x64\x21\x86\x70\x55\x15\xc1\xe2\x46\xa0\x49\x2f\x59\x4e\xae\x9b\x45\x41\xf9\x6a\x9e\x6c\x3f\x7d\x3f\xf0\xb2\x8e\x17\xe9\xfb\x54\x21\x4e\xd4\x2d\x7b\xeb\x70\xdd\x1b\x25\x3d\x63\x1e\x35\x67\xf4\x4f\x0e\x53\x99\x3c\x05\x11\xc4\xfd\xc9\xeb\xff\xaf\x80\xb2\x62\x65\xae\xde\xf8\x58\x56\xfe\x3b\x28\xc3\x45\xc1\x8d\x04\xaa\xf5\x68\xca\x1d\x33\x0f\x6f\x3d\x49\x52\xa9\x54\x0b\xbb\xd3\xa8\x02\x2b\xb2\xe8\x8d\xdc\x5d\xfd\xa6\xda\x8f\x85\x4c\x0b\xdb\x49\x3a\x13\xc9\xd1\x9a\xe9\x94\xb3\x12\xb1\xd2\x12\x38\x46\xb8\x28\xec\x77\xda\x9a\x45\xe1\xde\xd6\xc4\x1c\x80\x7d\xe0\x18\x1e\x8c\xd8\x83\x6d\x9f\x46\xec\x64\x17\xd3\xdc\x25\xc3\x63\xf5\xf2\x4c\x45\x27\xdb\x0a\x27\xd8\x66\x59\x45\x4f\xb4\xbd\x78\xa6\xfb\xa9\x52\xb2\x77\xce\x84\xa8\xe9\xa2\x11\xe1\x1d\x87\xf3\x9c\xea\x33\x79\x0d\xdc\xa1\xc0\xa5\x18\x40\x34\x6b\x7b\xa4\x44\x13\xc2\x0d\x17\x9a\x19\xc5\x37\xf3\x4e\x49\xe4\x26\x91\x7a\xa8\x3b\x77\xdb\x7c\xad\xbd\xdc\xd5\xbd\xae\x7f\x3c\x0a\x13\xcd\x59\xd6\x48\x65\xa7\x5d\xcf\xd6\x75\xab\x23\xea\xe3\x2b\x13\xdc\x79\x80\xb8\x6a\xd5\xcf\xa9\x32\x64\xce\x1e\xca\x07\x5c\xe7\x67\xd7\xa3\x89\x21\x5d\xd1\xaa\x7d\xde\x97\x1a\x2d\x19\x05\x1e\x89\x17\xac\x11\x36\xf4\x39\x2c\x48\xf6\x7c\x0d\x07\x9f\xc2\xd8\x64\x1d\x7c\x0a\x7f\x38\x9f\x82\x7c\x5a\x8b\x70\x05\xe5\x42\xde\xb6\x9d\x53\x62\xec\x70\x72\x76\xf6\x68\xbc\xf5\xce\xa7\xe6\x9f\xfd\x1c\x07\x4f\xfc\x8b\x5d\x9f\xcc\xec\xfa\x76\x15\x3d\x81\xd2\x1c\x6f\x7d\x45\xef\xc9\x0c\xac\x68\x01\x00\x71\xc7\x43\xad\xe7\xa4\x90\xc2\x07\xea\xb9\x61\x2a\x06\xc0\x67\x47\x1a\x06\x14\x97\x25\xd3\xfc\x9c\x1f\xa3\x02\x2f\x48\xc1\x8f\xb5\x0e\x29\xf7\x6b\x8b\x5a\x09\x29\x20\x84\xda\xeb\x00\x60\x70\x4c\x2b\x95\xd1\xca\x44\x13\x2a\x02\x98\x37\x1d\xc4\x79\xb6\x22\x6b\xac\xfe\xf9\x56\xce\x5b\x04\xd6\xcb\x6f\x94\x23\x29\x82\x08\xa2\x93\xe8\x49\xbd\xe6\x88\x2d\x8f\x3b\xd9\x54\x2f\xee\x5f\x47\x6b\xdc\xea\x96\x58\x91\x63\x69\x3b\x3b\x61\x0a\xae\x3b\x46\x54\xb9\x59\x84\xd4\x16\xe4\xfe\x81\xf8\xfa\xda\xd6\x7a\xa1\xd4\xb1\xd6\x33\xfb\x85\x2b\x0d\x2c\xc1\xab\x98\x50\x48\xe0\xe0\x14\x39\x38\x45\x9e\x95\x53\xc4\x63\xfc\xea\x34\x53\x6e\x0b\xba\x78\x8e\x12\xc0\x24\xf8\x16\x42\xeb\x4f\xf1\xc0\x6a\xb5\x18\x67\x5d\x25\xc6\x4f\x02\xb9\x4e\xea\x6e\x21\xa8\xa3\x93\x93\xa3\x23\xeb\x5f\x31\x9b\xb9\x11\xcb\xd9\x0f\x88\x94\x19\xcb\xe3\xe8\xa1\xb2\xdd\xa8\x3e\xd6\x5c\x28\xd1\xa0\xd5\xe1\x7d\xd7\xd0\xda\xf6\x17\x56\x6e\xca\x16\x9c\x52\xfd\x8b\x6f\x81\x04\xa6\x65\xf1\x1b\xde\x4e\xbc\xd8\xdb\xeb\xdc\x52\xb2\x03\x06\x01\x61\xd9\xa6\xee\x75\x4b\x81\xa3\x82\xae\xa9\xca\xf6\xcc\x15\x4f\x25\x5c\x70\xf4\x52\xff\x78\x92\x55\x0d\x84\x67\x98\xa7\xd7\x64\xcd\xea\xcd\xb1\x23\x23\x5f\xef\xd0\x35\x4f\xc4\xe1\x46\xb5\x49\xc8\x00\x00\x16\x9b\x47\x94\x1b\xdc\xcc\x41\x90\x55\x75\xeb\x45\x7f\x3b\x4f\x82\xb2\x3b\xb9\x7b\x49\xa9\xbf\x26\x1a\x1e\x06\x4d\xdf\x3a\x6a\xd4\xbb\xa4\xbc\x47\xf7\xb8\xe6\xb0\x6a\x4b\x89\xa2\x42\x4e\xef\x29\x67\xa0\xed\x32\x6a\xc9\x91\x1b\x8f\x35\xa2\x6a\x84\xe1\x83\x66\x37\x02\x07\x6b\x30\xbf\xda\x9d\xd8\x93\x92\x5e\x87\x43\xae\x6d\x4b\x1c\xb8\xfd\xda\x94\xa5\x6e\xf9\xab\x3b\x7f\x4e\x48\x7a\x84\x55\x4a\x91\x70\x40\xd0\x30\x28\x45\xc0\x81\xba\x86\x9f\xce\xf1\x1b\x25\xa4\x0c\xdd\x17\x14\x98\xb6\x71\x69\x9e\xee\x46\x7f\x0a\xb2\xae\x58\x8d\xeb\x0d\xca\x8d\x6d\x61\x93\x90\x5c\xeb\x65\xd7\xee\x8c\xb6\xa3\x46\x93\xd3\x7a\x97\xcc\x8d\x35\xc9\x69\x13\xac\x4b\xdd\x9d\x93\x4f\x0a\x3e\xce\xc0\xd2\x59\x00\x0b\x4d\xc4\x15\x1d\xc7\xd9\x5d\xbc\x4a\x9f\x9b\xbc\x2d\x74\xd8\x17\x2f\x8c\xaf\x6a\x4d\x70\xe9\xa4\x5f\xe5\x99\x64\x39\x39\x8a\x59\x18\x0d\x21\xdd\x27\xcf\xa4\x54\x1a\x37\x87\x89\x93\x78\x69\x1e\x7c\x25\xc5\x8e\x77\xea\xd6\x79\x54\x38\xb9\xd8\x62\x21\x70\xf6\x21\xfd\x9d\xfc\x2c\xaf\xd3\x04\xec\x36\x26\x70\x81\xb0\x49\x0a\x5f\xa2\x82\x65\xb8\x70\xab\xe7\xdf\x47\x71\xc7\xae\x3b\x14\xd6\xd0\x2e\x57\x4f\xf6\x49\xdf\xf1\xca\x80\x53\x70\xed\x23\xa4\x19\x5e\x04\xad\x35\x3a\x39\x54\xdf\xf9\x6e\xc5\x6e\x14\xd0\xdd\x67\xba\x6e\xd6\xa8\xe1\xb2\x87\xac\xec\x3e\x13\xa4\xe8\x3a\xf8\x60\x4b\xe0\xab\xb4\x67\x5a\x2a\x82\x5d\x55\x48\xe1\xb2\xdb\xf9\x0c\x3b\x0a\x9d\xd2\xaa\x72\x57\xac\x12\xc1\x1b\x25\x52\x9a\xde\x19\x41\x89\x2d\x95\x87\xcb\x09\x0e\xe1\x0d\xab\xc2\x03\x15\x6e\x65\xef\x1c\x94\xb4\xe8\x1e\x04\x8b\xdc\x58\x44\x7b\x4b\x39\x6a\x4a\x13\x55\xb1\xc5\x66\x86\x37\x6e\xc3\x49\x3d\xbb\x6d\x68\xbe\xf7\x2d\x1b\xe5\xca\xcb\x0c\xc4\x8f\xdf\x9e\x77\x19\xf1\x5b\xba\xa8\x09\x3a\x5f\xe1\xb2\x24\x85\x77\xe1\xea\x80\x8b\xd1\x3e\x0f\x03\x8f\x46\x70\x47\x63\xbe\xe4\x1d\x31\x4b\xfe\x38\xf9\x73\x5f\x1a\xd2\xe9\x0f\x05\xb3\x59\x34\x09\x00\x9b\xad\xe5\xe7\xed\xb9\x85\xb9\x2f\x9a\x12\x95\xcd\x7a\x41\x82\x67\xf0\x4b\x43\x41\x3e\x87\xe4\xc0\xdd\x73\xf8\xf4\x94\x7f\xfa\xf4\x3e\x01\xb3\x64\x68\xcd\x1e\x58\x5d\xe4\x0f\x34\xb7\xf5\xb2\x5e\x4a\x92\xaf\x9e\x0f\x88\xc8\xc3\x03\xcd\xa7\x0e\xd1\x56\xba\x92\x43\x44\x6a\x8c\xae\xc0\x46\xe4\x96\x7b\xa9\x3e\xfb\x0a\x5d\x52\x65\xd7\x53\xff\xa5\x0d\x3e\xeb\x05\x2d\xb1\x85\x77\x69\x17\x21\x5a\x93\x58\x9e\x0d\x6b\xe2\xe4\x44\x1c\xa3\x45\x63\x8c\x4e\x4c\xac\x10\xa7\xeb\xa6\x10\xb8\x24\xac\xe1\xc5\x26\xb8\x3d\x9e\x72\xfa\xe3\x77\x61\x41\x3e\x87\x4b\x26\x75\xef\x44\xf7\x78\xf7\x6e\xbc\x25\x25\xa9\x69\x66\x17\x0c\x8c\xca\xad\x22\xd0\x38\x65\x25\xc9\x4f\xdd\x45\xa9\x2b\x64\xa9\xa8\x45\x92\xa9\x1a\x0b\x39\xaa\x8a\xe6\x96\x8e\x5a\xed\x9f\x34\x46\xb1\x8d\xb2\x82\x54\x72\xf4\xa3\x13\x77\xe5\xef\x5f\x37\x10\xa3\x2f\x8e\x7a\xd7\x69\x4e\x2a\x52\xca\xc3\x5b\x7a\xbb\x2f\x2c\x3b\xab\x29\xd8\x79\xb6\x8d\x2f\xe0\xcb\x07\xda\x78\x3c\xf1\xf2\xb3\xa8\xb1\x64\x62\x6b\x29\x31\x5a\x6f\x05\x5d\x22\x5c\x86\x99\xce\xe3\x04\x51\x7d\x25\x57\xf1\x23\x02\xec\x24\xc7\x30\x46\x83\x41\x21\x61\xa6\x9a\x5b\x9a\x83\x60\x03\x36\xc7\x83\x2f\x01\xc6\x37\x3f\x9b\xaf\x17\xa0\x39\x1e\x84\x19\x1e\xf6\x60\x80\x26\x1f\x08\x01\xeb\x8d\xe6\x00\x2b\x80\x9e\x7f\x44\xe6\x63\xc7\xc5\x2d\x0b\x96\xdd\x01\xf1\x70\xde\xea\x67\x7b\xda\xbc\xf9\xb1\x0f\x88\x13\x88\x77\x1f\xd3\xde\xcd\xf9\xf2\x2e\x2a\x15\xa8\x61\x3e\x20\x8f\x45\xcd\x8a\x00\xf3\xd1\x30\xa6\x0b\x22\x8f\x7e\xdd\x94\x01\xfc\x0d\x90\x9c\x83\x05\xe6\x89\x20\x9d\x7d\x8c\x6b\x4e\x84\x8e\xe6\x54\x30\x7e\x6b\x22\xb0\x82\xf1\x9d\xfd\x35\x9e\x37\x61\x46\x6f\xa9\x2c\x59\xed\x66\xc2\xda\x6b\x95\x77\x90\xd3\x9c\x18\xfa\xb9\x5c\x17\x85\x43\xbc\xeb\x95\x6d\xbe\xfa\xf1\x63\x02\x9a\x85\x7c\xb8\x37\x76\xb3\xa0\xca\xaa\xa5\x10\xf0\x5b\xad\x23\x3c\xf6\xa5\xb7\xb1\x0c\xad\x47\xb6\x65\xdd\x66\xe4\xda\x81\xf2\x83\x41\xe5\x8f\x7e\x3a\xbf\xec\xbe\xd6\x3d\x1c\x3f\x9d\x5f\x7e\x35\xe5\x75\x6e\x33\xd2\x96\x2d\xc8\x29\xbf\x3b\xd4\xd6\x69\xdb\xbf\x48\x6d\x9d\xad\x3d\xf0\xb5\x58\xfc\x0e\x85\x75\xc2\x72\xf0\x33\x29\xac\xf3\xa4\x7b\xfb\xe9\x4c\xb7\x55\x9e\x24\x65\xd8\x7a\x32\xbe\x31\xe5\xfa\xa2\xf5\xa4\xd0\x52\x5e\x3c\x27\x0a\x3e\x38\xb6\xf9\x3a\x80\x53\xb6\xf0\x85\x7a\xfb\x29\xa7\xf3\x91\xd0\xef\x92\xf4\xe1\x98\xb3\xaf\xa3\x2b\x6f\xab\xe9\x5f\x62\xc2\x76\x2d\x55\xa0\xf7\xdd\x64\x91\x89\x8a\x0f\xa4\x1a\x85\xfc\xed\x09\x4a\xfa\xe1\x9e\xb5\x93\x0a\xf9\x03\xe3\x54\x45\x63\x60\xa1\xe0\x57\x6c\x1d\xda\xc0\x46\xd0\xb6\xce\x13\x74\x71\x79\xfd\xe1\xf2\xfc\xec\xe6\xf2\xe2\x0d\xb2\x5f\xa0\xbe\x20\x7c\x82\x6e\x58\x6b\x1c\x0d\x68\x24\xce\xe9\xab\x63\x04\xdb\xbe\x1d\x1b\xd6\x8b\xcb\xd6\x43\xad\xcb\xe9\x96\xe8\xaa\xa4\xc2\x45\x89\x85\x45\xbb\xac\x60\xa5\x89\xac\x92\x54\x8d\x6d\xf6\x96\x8a\x63\x2d\xc8\x99\x4a\x0a\x2b\xd2\xfd\x4a\x80\x28\x41\xd7\x3a\x2e\xc5\x75\x7d\x54\xa3\x07\xa9\x3b\x36\xae\x03\x5e\x37\x47\xfb\x4d\xda\x68\x1a\x7d\xef\xb8\x20\x52\x1b\x13\x1a\xb9\x09\xfa\x08\x3f\x48\xde\x84\x47\x27\x47\x56\xf8\x2a\x1c\x52\x93\x0d\x5e\xb6\x1f\x0c\x92\xb5\x61\xcd\xf2\xc5\xee\x3e\x3b\x41\xe8\x17\xa9\xea\x3f\x50\x4e\x8e\xa5\xf4\x04\x8c\xa2\xf6\xba\xa0\x88\xfb\x31\xaf\xbd\x9d\x6c\x7e\xe5\xcd\x02\xda\x59\x53\x6c\x5e\x17\xcb\x8e\xd5\x62\x07\xb2\x4b\xdb\x1d\xf0\x8a\x7e\x68\x47\xf0\xf1\xc3\xcf\xbb\x77\x40\x9f\x3a\xf0\xe7\xcf\xd9\x7a\x4d\x05\x5a\x61\xbe\x72\x38\x03\x6d\xfc\x86\x3b\xf5\xbb\xf5\x2b\xce\x15\xdb\x89\x9b\xcc\x19\x35\xbc\x01\xb0\x1e\xc4\xd1\x4f\xf6\xf1\x9e\xf2\xe8\x7e\xf6\xab\x42\x8c\x8e\xde\x55\x8b\x48\x0b\x5c\x1b\x83\x79\x76\x63\xd8\x0f\xd2\xb0\xad\xa8\x9c\xe0\xc1\xbc\xb4\xaf\xbc\xf7\x90\xdf\x2c\x1d\x2d\xfc\xa8\xe1\xe6\x44\x60\x5a\x84\x2d\x7d\xed\x5c\x0a\x56\xb1\x82\xdd\xa6\xa1\xac\x0f\x4c\xc6\x37\x3a\x6a\x7e\x86\x67\x72\x96\x77\xd7\x3f\x52\x2a\x44\xd8\x24\x00\x39\x21\xed\xc8\x9c\x0c\xae\xe2\xee\xf7\x83\xc8\xff\xe8\x03\xdf\xb3\x50\xd7\x9f\x8d\x98\xf8\xbb\x68\x0b\x6b\x28\x1e\xdc\x66\xb0\x57\xa4\x5e\x53\x2e\x19\x4e\x57\xda\x0b\x52\x1c\x97\x04\x1f\x6f\x82\x77\x15\x02\xdd\xc9\x1c\x17\x13\xc7\x03\x81\xa3\xac\x50\x72\xa5\x50\xe2\xda\x76\x21\x43\xb5\xb9\x3b\x8c\xb0\xaa\xc9\x8c\x7c\xa6\x5c\xd9\x54\x54\xde\x0a\xab\x01\x52\x80\x5f\x45\xc7\x1a\xce\xac\x99\x4d\xbf\x5d\x6c\x7a\x71\x62\x9e\x2c\x35\x4a\xd6\x9a\x34\x95\xab\x1e\x17\xc5\x46\x83\xf7\xaa\x9c\x78\x6d\xc6\xc0\xb7\xaa\xe3\xac\x36\x2e\x85\xaa\xa6\xf7\xb4\x20\xa1\x52\x6d\x62\x45\xcb\x5b\xde\xe6\xee\xe3\xa2\x60\x0f\xc4\xa4\xea\x91\xad\x71\xc8\x2d\xc6\x05\x24\x52\x51\x9d\x8f\xf7\xbf\xdc\xa0\x92\x48\x72\x2b\xca\x77\x56\x54\x64\x47\x82\xb1\xe1\xb3\xd9\x4c\xd9\x7e\x5e\xfe\x53\xca\xbc\x79\xf1\x0a\x7d\x22\xe6\xfb\x52\x01\x90\x1c\x21\x13\xe8\x61\xc5\x94\xb6\xdf\x70\x33\xb6\xf8\x8a\xae\x75\x81\x59\x5c\xe6\xf6\xed\x53\x49\x41\x0a\x9b\xfa\x8a\xec\xd0\x51\x98\x14\x1c\xb5\xde\xd3\x9d\xe4\xe3\x09\x1c\xda\x1a\xc3\x9d\x80\xec\xed\x48\xeb\xfb\x8b\x98\x5d\x34\x9f\xc7\x88\x6f\xd6\x05\x2d\xef\x8e\x11\x15\x96\xe5\xc9\x1d\x62\xc2\x4a\xcb\x3b\xbb\x7f\x6b\x82\xc7\x3d\x24\x96\xe4\xde\x76\xc0\xce\xdc\x5f\x24\x19\x81\x6f\x36\x95\x8a\x13\x41\x8e\x4d\x98\x10\x1a\x5f\x19\x7f\xf1\x42\x8d\x2e\xa2\xcd\x7f\xe1\x91\x03\x54\xf3\x1d\x78\x2e\xe5\x50\xc4\xb4\xa3\xab\xf9\xf9\xfc\xaa\x57\x1a\x50\xff\xd6\x71\x5b\x4c\x0c\xce\x05\x44\xe7\x06\x15\xdc\x31\xb7\xc5\xd8\x65\xaa\x06\xbe\x1f\x79\x35\x5b\xe1\xea\xac\x11\xab\x0b\xca\x33\x76\x4f\x12\x94\x28\x0b\xad\x67\x1c\x07\x88\xda\xe9\xd4\x74\xd0\xf9\x7f\x9f\x5d\xc3\xeb\x05\xc1\x02\x2f\x6c\x6f\xe7\x84\x27\x69\x5c\xc3\x7d\x35\x54\x1e\xa5\xa7\x07\xc7\xcf\x1f\xd2\xf1\xa3\x4e\xd6\xd7\xe2\xec\xa1\x25\x15\x14\x0b\x16\xcd\x0c\xed\x5a\x27\x1a\x2e\xd8\xda\x1c\x91\x2b\x4b\x42\xb9\xfc\xd5\x65\xde\xa1\x1a\xbe\x7e\x3a\x88\xde\x54\xdd\xf1\x19\xa7\x0e\xa7\xb2\x17\x04\x7b\x8c\x4a\xf2\xa0\xbf\x1b\xb9\xd5\xec\xfb\xff\x65\x42\x9a\xe5\xfe\xc5\xc5\x5f\xdf\xfc\x97\x39\x2e\x52\x67\xfe\xab\xb3\x8c\x99\xb4\xef\xb0\x42\xe3\xe0\x1e\x55\x5d\x92\xdd\xcd\x2f\x08\xd1\xdf\xe0\xfc\xc9\x98\x18\xf5\x9c\xff\xbd\xc1\x85\x9e\xb3\xf7\xfb\xb0\x8f\x75\xe7\x1c\xdc\x25\xbb\xfe\x76\xae\xdf\x3b\x3b\x44\xc3\x89\xba\x3f\xf5\x13\xa2\xc6\x25\x97\x0b\x10\x3e\x97\xbe\xe8\x72\x64\x5c\x7e\x47\xe8\xa5\xc8\x2a\x00\xd6\xd9\x1e\xd3\x18\x74\xa7\xcd\x7c\xff\xec\xd2\x17\x42\x7d\xd8\xb3\x0f\x4c\xed\x55\xb8\x79\xa8\xd3\xe1\x6b\xf5\x32\xfa\x99\x72\xa1\xe3\x5f\x35\x35\x55\x52\x8f\x46\x11\x22\xa4\xcc\x73\xad\xc0\x6f\xab\x7f\xe0\x3c\xaf\xdf\xe8\xbb\xd0\x42\xea\xd4\x4a\x63\x64\x06\x2f\x17\x97\x20\xe0\xcd\x97\x62\x53\xd1\x4c\xa9\x87\x37\xe7\xd7\x8a\x0a\x47\x3f\x7c\xaf\x31\x3c\xfe\xf2\xe7\xef\xbf\x0d\x2e\xef\xd3\x66\x16\x24\xdb\x60\x9e\xd4\xaf\xb6\xb3\xc8\x91\x1e\x95\xaa\x04\x9f\x79\x5b\xa7\xd1\x9c\x68\xbd\xd7\xe4\x02\x3a\x5e\x1f\xde\x57\x50\xd1\xe9\x10\x6d\xf9\x4c\xa2\x2d\x6d\x36\x91\xe6\x27\xbb\xf0\x22\xcd\x86\xae\x7b\x6c\x08\x45\x62\x79\xa7\xb0\x21\x8f\xd5\x84\x05\xb4\x74\x36\xb4\x17\x4d\x96\xfe\x36\x36\xe6\x99\xbc\xa1\x46\xff\xe6\xaf\xc4\x54\x4d\xb8\x84\xba\x60\xde\xf7\x0a\x72\x97\xe8\xfd\x68\x35\x6e\xe3\x5f\x19\xd7\x85\xfb\x7e\x97\x5d\x85\xef\x72\x39\x0a\x15\xf2\x48\x96\x2b\x6b\x26\x95\x7a\xba\x9f\xa8\x22\x27\x85\x93\x5a\x81\x88\x3e\xa2\x95\x25\x30\x60\xf4\x85\x1c\x0b\x72\xe4\x7a\x36\x62\x3e\x80\x74\x97\x42\xfc\xa2\xdb\x59\x7f\x03\xcd\x68\xfc\x22\xad\x53\x32\xbf\x8e\xe6\xea\x79\xeb\xa8\x92\xe7\x47\x47\x2c\xd5\x92\xcf\x49\x0e\x47\x38\x87\x20\xcb\xf4\x77\xdd\x17\xdd\x59\x3b\x99\xee\x66\x66\x1c\x53\xf9\x59\x1b\x20\xa4\xa5\xa6\xf3\x02\xd3\x51\x10\x90\xde\xb9\x1e\x7a\x55\xff\x73\xae\x6d\x7c\x3e\xff\x0b\x1c\x2b\x2f\x31\x07\xa3\x41\xaa\x2e\xfc\x01\x1b\x9d\x53\x01\x49\x8e\xef\xef\x89\x6b\xda\x4e\xc6\xcc\x2e\x6f\xfb\x93\xfe\x25\x93\xdd\xd9\x89\x79\x2a\x0a\x69\xd1\x79\xe7\xf6\x95\x7e\xd2\xe3\xc8\x74\xc5\x04\xe4\xed\xa9\x44\x98\x3b\x5c\xd2\xc6\x98\x47\xbc\xda\x0d\x8f\xc0\x99\x77\x9e\x6b\xf4\x68\x7c\xfb\xd3\x3e\xcb\xd1\x5e\xd8\xbc\xc9\x7d\xa8\x1e\x71\x56\xe1\x76\xd7\x64\x86\xb0\x62\x82\x95\x13\x32\x17\xae\x07\x5e\xec\x7a\x5d\xf5\x13\xe7\x3a\xeb\xa6\x08\x69\xee\x8e\x88\x0e\x20\xf5\x6b\x62\x47\x6b\x5f\xef\x70\x34\xbf\xee\x2c\xde\x3d\x5a\x7f\x61\x11\x28\x79\x42\xae\xcf\xd5\x85\x11\x11\x6d\x3e\x0f\x37\xdb\x05\xb5\xfb\xc5\xdb\x17\xc1\x71\x47\xd2\x08\xf6\x73\x25\xe7\xd3\x4b\xcf\xca\x45\x7e\x60\x75\x4a\x76\xff\x75\xe7\x95\x5e\x30\x83\xf9\x5b\x3f\x61\x6e\x5c\x9d\x78\x5e\xa7\x68\xae\xbc\xb0\xde\x90\x86\xdc\x27\xf6\x6c\x85\x45\xda\x81\x63\x07\x3a\x5a\x41\xaa\x03\xc7\x4e\x1f\xad\xfd\x16\x82\x7f\xf2\x6b\x2e\x92\x17\xde\xb5\xc9\x05\x47\xb2\xc7\xfa\xed\x29\x25\x37\x12\xd8\xcb\xaf\xe6\x05\x93\x36\x28\xd7\xab\x65\x34\xd8\x1d\xaf\x78\x8c\xd7\xb3\xa8\x5d\xed\x8a\xc9\x82\x78\x87\x86\xd3\x5f\xb2\x5a\x25\x73\x53\x5d\x80\xa7\xc5\x74\x35\xd9\xdd\xc7\xa6\xc2\xca\x1a\x57\x01\x0c\x52\xc9\x3a\x7c\x2c\xfe\x1d\xd8\xc4\x94\x52\x13\xef\x62\xf5\x25\xfc\x1a\x12\x40\x56\x11\xa8\x2f\xb1\x55\x31\x22\x7c\x87\x8f\x55\x93\x08\x55\x8c\x88\x29\xfe\x69\x68\xd8\xb1\x9a\x08\x28\x15\x07\xbb\x45\xb9\x0e\xb3\x48\x12\x9c\xee\xfd\xfa\x75\xcc\xc6\x05\x6f\x1a\x5b\x43\xc2\x46\xb3\xea\xc3\x23\xa7\x6f\x37\x7f\x49\xf7\x82\x76\x54\xf5\x9a\x18\x48\x07\x77\x52\x11\x2e\x58\x79\x0b\xa9\xe2\xc9\xfc\xf8\x09\x92\xbb\xc0\x84\x4d\x15\xb1\x86\xc3\xc1\x8c\xa3\xb5\xef\x47\x06\xe9\x63\x5e\xb4\xa5\x6a\xda\x22\xf8\x39\x16\xe3\x7a\x7e\xdb\xda\xca\xc3\xd1\x87\xd3\x00\x9a\x01\x8b\x36\x38\x2e\x40\x11\x73\x10\x51\xa7\x5c\xc3\xca\x99\x03\x69\x6e\x95\x10\x1f\x2f\x6c\x0e\xa5\x18\x2b\x7f\xde\x2d\x71\x0e\xa4\xba\xcf\x42\xe8\x6d\x4b\x28\x89\x9e\x32\x9f\x06\x93\x1e\x52\x1c\x1d\xda\xd1\x7e\x09\x75\x24\xc6\xca\xa4\x03\x29\x06\x8b\xa9\x6f\x15\x4c\x07\x12\x85\x97\x55\x4f\xc0\xe7\x9e\x5a\x60\xbd\x6d\x09\x47\x37\xb9\xe8\x3a\x90\x2a\x02\x16\x67\x6f\x5b\x1a\x77\xd2\x0d\x54\xb0\xbd\x6d\x3b\x97\x6e\x6f\x5b\x22\xfa\xb9\x6e\xb0\xca\x25\x23\xfd\x0d\xd4\x30\x49\x20\x89\xba\xf5\x4e\xc6\xaa\x99\x24\x51\x0c\x56\x3e\x49\x3f\xa9\x76\xec\xf1\x1a\x28\x68\x91\x46\x13\x2e\xff\x25\x91\x85\x54\x17\x33\xf2\x60\x12\xdd\x89\xd5\xc6\xfa\x2d\xad\x56\x8a\x37\xac\x84\xaa\x29\x6d\x83\xd5\x4f\x69\x1b\xbc\xbc\x7c\xda\x9a\xa8\x52\xf4\xee\x3a\x1e\x2f\x34\x9f\x44\xb5\x53\x94\x7e\xb4\xe4\x7c\x12\xc9\xb1\xf2\xf4\xfa\x9a\x4e\x29\x3e\xef\x0d\x3e\x9d\x39\xc1\x6b\x1e\xe8\x16\x2f\x4d\xef\x3f\x0b\x2c\x80\x83\xd2\x0a\x41\xf9\x2f\x84\x43\xa8\xda\x06\x89\xd1\xd1\x2d\x2d\x52\x07\x38\xba\x27\x8e\xe7\xd1\x2d\x35\xaa\x07\x48\x16\x12\xfb\xa3\x5b\xe2\x7e\x84\x94\xcd\x6f\x5b\x52\x01\x7d\xa8\xf8\xe9\x97\xd9\x87\x95\xd2\x6f\x1b\xcc\xea\xd6\x7d\x1a\xb4\xdf\x01\x45\x52\xbd\x87\xe3\xba\xa6\x47\xef\x8f\xab\x6d\x6e\x97\xb7\xdc\xaa\x3d\x09\x5c\x74\xf0\x1d\x33\x5d\xbc\x8e\x95\xc5\x04\xf3\xf8\x1e\x60\xe6\x78\x81\x4c\x30\x45\x78\x21\xcd\xb6\x4d\x11\xd9\xe1\xc5\x35\xdb\x06\x2c\xb3\x99\x26\x06\xb7\x25\x39\xc7\x0b\x6e\x26\x51\x1c\x2e\xce\x99\x54\x42\xab\x6d\x53\xa6\x16\x4d\x28\xc7\xd9\x36\x58\x61\xce\x44\xa2\xa8\x2d\xe4\x39\x56\xa2\x33\x99\xe2\xb4\x92\x9e\x6d\x9b\xa4\xba\xa1\xf4\x32\x9f\x7e\x8f\x61\x05\x3f\x93\xa7\xc2\x86\x9f\x4c\x2f\xfd\xd9\xb6\x89\xd3\x92\x2a\x38\xa2\xc4\xc2\xa0\xfd\x0e\x26\x48\x86\xe8\xa0\x72\x1f\x54\xee\x83\xca\xbd\xd5\x92\x8a\x97\x26\xeb\xc7\xa0\x32\xa6\x69\x17\x6b\xb7\xe4\xe9\x70\x41\xd3\x29\x7a\xfc\x60\xf1\xd3\xb6\xb4\x69\xda\x46\xdf\x5f\x19\xd4\xb6\x25\x15\x44\x6d\xdb\x24\x56\x9e\x5e\x24\xb5\x6d\xc0\x72\xa9\x69\x47\xd1\x95\x56\x05\x14\x4e\x4d\xa2\xec\x17\x59\x0d\x95\x50\x4d\x13\xbc\x06\xca\xad\xee\x50\x4c\xb5\x6d\x53\x25\xc1\x09\x05\x56\xdb\x06\x2b\xb5\x9a\x2c\xaf\xf8\xa5\x59\x77\x29\xba\xda\xb6\xc9\xc2\x5c\x52\x21\x56\xef\x35\x60\x49\xd6\xe4\xa9\x31\xac\x23\x50\x9c\x35\x99\x64\x42\x31\x57\xef\xa5\xa9\x13\x9a\x56\xe0\xb5\x6d\x80\x52\xaf\xc9\x23\x4f\x29\x0d\xdb\xb6\x27\x95\x80\xc1\x85\x63\xfb\xfd\x4b\x12\x80\xd3\xcd\xba\xcf\xc5\x54\x9b\x40\x5c\x07\x5d\xed\xc5\x24\x66\x4a\x7d\xa8\x32\x00\xa0\x7d\xf7\xcc\xac\x61\x4f\x1a\x7b\x61\x52\x70\xa5\xaa\x00\xa4\x0a\x0b\xbc\xd0\x21\x15\x40\x92\xe0\xc0\x0b\x74\xb5\x84\x86\x0a\x1c\x02\x2f\x7a\x81\x17\x73\x53\xc0\xc6\x5b\x2d\x15\x4f\x91\xd2\x57\x40\xd4\x85\x8e\xa7\x00\x12\x85\x46\x5d\x28\xef\x19\xd4\xa0\x79\x88\xba\x00\xb4\x43\xd4\xc5\xc1\x04\x94\xd0\x0e\x26\xa0\x67\x6e\x02\x3a\x44\x5d\x1c\xa2\x2e\x0e\x51\x17\x87\xa8\x8b\xbd\x46\x5d\x18\xe5\x80\xd5\x28\x96\xef\xd0\x36\xc9\x33\x9e\x55\xc4\x85\x29\x5a\x77\x96\x65\xac\x29\xc5\x0d\xbb\x23\x00\xb7\x2a\x48\xcd\xdc\xa2\x0b\x18\xa8\xd1\x4a\x1f\x49\xe7\xc4\x4d\x4e\xa5\x5e\x37\x61\xfd\xcf\xcc\xab\x56\xe1\x92\xb7\x57\x99\x93\xdc\xd1\x04\xae\xbf\x39\xe9\x42\xce\xc7\x09\x3a\x43\x35\xc9\x68\x45\xa5\x1e\xa2\xd2\xf3\xd5\xef\x7a\x83\xd8\xba\x38\x50\xad\x46\x70\x52\x2c\x4d\xed\x90\xd2\xab\x73\xe7\x69\x49\xe6\x4a\xd9\xa1\xcb\x5a\xec\x60\xb6\x78\x85\x2d\x04\x58\x93\x7f\x9a\x8c\x22\x28\x33\xd6\xe3\xbf\xf1\x7a\xd3\x71\x7a\xab\x29\x86\x95\xea\xdb\xea\x28\xae\xa8\xc1\xea\x78\x0c\x1e\x42\x3e\x57\xb4\x56\x9b\x7d\x4e\x32\x56\x86\x0b\xa2\xb7\xad\xb3\x99\x2e\xfb\x34\xec\xae\x32\xd6\x75\xb0\xce\x9d\x37\xb5\x2b\x80\x7e\x8f\x0b\x9a\x53\xb1\x71\x01\x0d\xa6\x1a\x25\xd6\x27\x30\x6d\x61\xce\x78\xbb\xe6\x08\x57\x55\xcd\x70\xb6\x22\xdc\x1b\xfd\x71\xc2\x6a\x9b\x8c\x61\x97\x51\xa5\xab\xc0\x2a\xe1\x5b\x51\x96\x52\x59\xb1\x41\x35\x13\x18\x2c\x37\x0d\x0c\xd1\xdf\x55\xf6\x93\x09\x96\x1b\x2d\x22\x89\x7a\xa3\xe0\x2c\x98\xe9\x8e\x37\x0f\xd4\x3b\x08\x70\x5b\x03\x2b\x72\x8b\x97\xf5\xc3\xb7\xa8\x22\x75\x66\x4e\xbb\x52\xb3\xe8\x5a\x39\x0f\x0b\xb8\x1b\x52\x5e\x37\x4b\xbf\x57\x9d\x4f\xfc\xf9\x3b\xb4\x62\x4d\xcd\x4f\x2e\xd2\x4c\xea\x82\xa1\xd7\xea\x4d\x6d\x63\xb0\xca\x9b\x40\x05\xc1\x5c\xa0\xd7\xdf\xa2\x35\x2d\x1b\x29\x56\x80\x08\x7a\xaa\xc1\xf7\xdf\x25\x1c\x43\xb8\x52\x00\x57\x07\xb6\x43\x53\xcc\x69\xab\x34\xce\xbf\xd1\x0a\x00\xc5\x98\xdb\xa6\x71\xb9\x74\x1d\x90\x9e\x1f\xd8\x5c\x5d\xe9\x5b\xa5\x14\xec\x11\x38\x16\x5c\xfe\x06\x4a\xd3\x60\xd9\x02\xf8\x60\x5c\xcc\x8e\x27\x48\x1b\x47\xd2\xc8\xdf\xa3\x1d\xf9\xad\x61\x8b\x8d\x80\x21\x2b\xfc\x5d\x3f\xdb\x85\x54\xb0\x3f\x6e\xc1\xb5\x8d\x8e\x7b\xbb\x4c\x4e\x8b\xd6\x36\xf2\x12\x44\xd6\xb9\xad\x59\x13\xcc\xd2\xec\x8c\x45\x59\x12\xac\x46\x6b\x4d\xd4\x59\x46\x74\x69\xf2\x8b\xb6\xfc\x63\x19\xf6\x13\xa8\xaf\x46\x97\x78\xdf\x78\x04\x41\xb4\x34\xbb\x22\x5f\xb0\x08\x4b\x74\x42\x62\xd2\x7c\x4d\x6e\x29\x17\x49\xd5\xb3\xf4\x0b\xdd\xcd\xc9\x69\x79\xab\x2b\x96\xac\x9b\x42\xd0\xaa\x70\xb3\x13\x1c\x84\x23\x66\x6e\x59\xdf\xdc\x8e\x3d\x5b\x2e\xd6\x40\x20\x1a\x2b\x32\xea\x7e\x79\xe9\xfa\x40\x4a\xa1\x0b\x64\xd4\xf2\x22\xaf\x70\x8d\xdd\xf4\x67\x6c\xbd\xc6\xfc\x95\xb6\xea\x23\x9c\x45\x6e\x31\x83\x45\x25\xef\xd5\x1a\x17\x6e\xda\x7c\x57\xfc\xae\x9b\x53\x90\x12\x97\x41\xff\x5b\xd7\xdc\xa4\x1e\x47\xec\xa1\xb4\xc8\xe1\xba\xac\x5a\x77\x57\x22\x40\xce\xe4\x8f\x38\xbb\x23\x65\xae\x2a\x69\xea\xc9\xc9\x37\x25\x5e\x1b\x60\x5f\x57\x57\x90\xe4\x3d\xda\x91\xc0\x5e\x6d\x93\xd5\x10\x03\x16\xe2\x44\x8b\x65\xbb\xce\x54\xc3\x13\x00\xfa\x3e\x72\x29\xb7\x84\xf9\x0f\xd7\xc1\xa3\x35\xbd\xcf\x08\x44\x96\x95\x1d\xd8\x75\x10\xf7\x41\xa4\x9d\xad\x61\x18\x94\x1d\xea\x9d\x0a\xc5\xdf\x9d\x23\x51\xe1\x79\xe2\x42\xb2\x95\xb0\x3e\x67\xc1\x29\x7a\x1b\x65\xb1\xd9\x47\x45\x3e\x48\xe1\x39\x7d\x74\x46\x1f\x08\xb2\xd3\xe8\x3d\x5b\x2f\x60\x08\x24\x47\x1f\x7e\xbc\xe8\xf2\xb0\x0f\x38\x67\x1c\xfd\x58\xb0\xec\x0e\x5d\x10\x25\xf4\x7f\x89\x92\x74\xf5\x22\xdf\x4f\x71\x8f\x43\x11\x8a\x3f\x64\x11\x8a\x7a\x11\x9e\x86\x3f\x52\x09\x8a\x35\xbe\x4d\xa9\x7c\xb4\x22\xa8\x56\x87\x50\xbd\x68\x2b\xad\x4e\x3c\x3a\xdf\xac\xd8\xc3\x4c\xb0\x59\xc3\xc9\x8c\x06\x83\x98\x40\x63\xb9\x23\x1b\xf9\x77\xf8\x68\xfe\xa6\x5f\xe8\x28\x82\x82\x29\xe3\xac\xfa\x5d\x4a\x0e\x1f\x7e\xbc\x90\xd7\x13\x0c\xad\x91\x72\x74\x4a\x44\x76\x9a\x91\x6a\x75\x6a\xba\xf3\x6c\xa6\x67\xcd\x4a\x2a\x58\x9d\x50\xf8\xf2\x0c\x65\xac\x28\x0c\x3e\x0d\x5b\xa2\x73\x52\xad\x1c\x99\xbd\x95\x76\x9c\x38\xe6\xa7\x2d\x4d\x50\x31\x06\x87\x61\xf7\x8e\x89\x7c\xcf\x9c\x12\x6f\x93\xd4\x8b\x3c\x19\x1d\xf5\x4b\x6c\x99\x3f\x60\xa5\xf3\x47\x99\xa6\xfd\x57\x76\x38\x9a\xdb\x57\x94\x62\xed\x79\xff\xba\xc5\x1a\x0c\xe9\xb0\x9e\xe9\xb1\x29\x74\xb5\xd4\xea\x40\x4e\x72\xc4\xee\x49\x5d\xd3\x9c\x70\xe4\x78\x51\xbb\x09\x83\x24\x4b\x5a\x3c\xc5\xec\x1e\xea\x4d\x3c\x9b\x7a\x13\x49\x0a\x9b\xc7\xe0\xe4\x7b\xdb\x0c\x0e\xe7\x6b\x5a\xfe\x01\x58\x1c\xa0\x6a\x84\x94\x73\x46\xff\x6a\x2f\xc3\xa9\xaa\x10\xcf\x70\x41\xae\x7e\x01\xa9\x43\x73\xfd\x6c\x57\x23\xb2\x3f\x7a\xd8\xc7\x11\x5b\xd7\x18\x2a\xf2\xdf\xdc\x41\x40\x25\xcb\xc7\x2d\xfc\x07\x44\x64\x6f\x9f\x6b\x40\xd7\x5d\xaf\xd9\x5b\x2c\xc8\x03\x86\xdf\xb2\x37\x76\x48\xdd\xda\x05\x6e\x33\x9c\x5d\x5f\xa1\x9f\x34\xcd\xdd\xe1\x98\x6b\x26\xb4\x04\x78\xc1\xd6\x98\x26\x94\x4c\xf3\x00\xe7\xfd\xce\x5d\x3b\x82\x48\x53\x94\xf7\x57\x78\x4d\x1d\x5a\x60\x23\xb5\x3e\xa3\x8d\x1d\x90\x6f\xbd\xa1\xee\x5f\x40\x69\xe5\x13\xcf\x7c\x65\x43\xbb\xdb\x8a\x54\x66\x55\xa3\xa6\xb8\x36\x60\x00\x71\x52\x72\xaa\x7c\x6d\x5e\xc8\x88\x29\x43\xac\x2b\x5a\xeb\xb8\x6c\x2d\xc4\x84\x4f\xe6\xcf\xec\x96\x96\xf6\x64\x33\xe3\x4c\x5e\x62\x1a\xc4\xb5\x3b\x48\x1d\xcf\x46\xea\xe0\xbc\xb8\x2c\xf1\xa2\x08\x3b\x26\xbb\x97\x45\x81\x95\x5f\x9e\xa8\xf7\x4e\x73\xca\xe5\xff\xa3\xf9\xfc\x67\xe5\x30\x68\x4a\x2b\x39\x47\x41\x53\x0d\x8b\x74\x79\x67\xfa\x50\xef\x7e\xd6\x34\x7f\x4a\x42\x28\xbe\x2a\x73\xd9\x6d\xc2\x3b\x91\x65\x86\x92\x06\x61\x86\xf8\xb0\x4c\x1c\xce\x82\xa0\x9b\x15\xcd\xee\xae\x3d\xbf\x00\xab\xe5\x6f\xa5\xf7\x93\xbb\xc8\xc2\x12\x1a\xdf\x7a\x6f\x57\xc6\x6b\x86\x75\x9d\xa2\x52\xdf\x78\x37\xc8\xdc\x4c\x8b\x24\x80\x30\xe7\x2c\xa3\xad\xd3\x28\x5a\xca\xbc\xbd\x7e\x72\x75\xfd\xec\x3e\x1c\x25\x4d\x4c\xbe\x17\xed\x22\xdb\x9a\xfd\xdc\xbb\xeb\x62\x0a\xb2\x99\x91\x9d\x87\xa0\xb7\x56\x52\x75\x99\x9b\x4e\x3d\x19\xeb\xb5\xd1\xbe\x0d\xe7\xbf\x00\x78\xb6\xec\xa2\x5a\xf9\xcf\x14\xfc\xda\x5e\x56\x57\x57\xc6\xb8\xf9\x1f\xdd\x0b\x62\xa4\xb2\xd1\xbf\xbb\x3b\x75\xfc\x89\x90\xbc\x0a\xd0\x0d\xe4\x64\x87\x50\x58\xa2\xc3\x0c\xe7\x0b\x0e\x19\x24\x7a\x3e\x63\xfd\x9b\xf1\x9c\x28\xde\x52\xb1\xaa\x29\x42\xf1\x59\x5b\x15\x80\x76\x30\xb4\xeb\xef\xef\xe2\x61\x99\x02\x17\x1f\xc8\x84\xd9\x42\x8e\x8f\xb9\x43\x2c\xaa\x3c\x0c\x39\x1e\x12\xac\x25\x18\xfa\xf6\xfb\xef\xbe\x1b\xc2\x99\x1f\xc7\x92\x8f\x7b\x6d\x86\x71\xe6\xc7\xb1\xe4\x83\x14\x43\x38\xf3\xa1\x2c\x96\x20\xd1\x20\xce\x7c\x34\x6b\x65\xbf\x60\xf2\x51\xe3\x73\x6a\xb2\x2a\x84\x55\x42\x53\x54\xe1\x69\x9b\x91\xc4\xd4\x50\xca\x69\x4c\x68\xe8\xa4\xa3\xee\x2f\xd1\x34\x21\xbd\xd4\x4f\x1c\x8d\x88\x04\xf1\xa4\xd2\xed\x74\xd1\xa8\xca\x3a\x96\x4a\x1a\x49\x12\x05\x1c\x2c\x97\x40\xba\x1f\x40\xee\xa9\x30\xdc\xa9\xc5\x0e\xe2\xc9\x9f\xc0\xa4\x4e\x78\xb8\x3f\x28\x81\x73\xe7\xb4\xcd\x84\x48\x4c\x58\x8a\x66\xca\x75\xd4\x26\x5b\x46\xc9\xa2\xb1\x74\xcc\x70\x8a\x25\x80\xae\xb7\xc7\x21\x89\x95\x00\x8a\xc9\x45\x4c\x00\x34\x81\x49\x94\x9d\x2b\x06\x32\xa9\x89\xa9\x93\x69\x09\x93\x29\x11\xd1\xb0\x68\x68\x78\x4a\xa4\x09\xca\x02\x6e\x80\x70\x22\x64\x37\xb9\x11\x40\x72\x2c\xfd\x71\x34\xa5\x11\xd8\xcd\xa4\xa4\x47\xf0\xd1\x86\x05\x58\xc7\xd3\x1a\x01\xe1\xd7\x7b\x8b\xa8\x86\xa5\xc2\xa5\x25\xc0\xb5\x68\xc2\x61\x99\x13\x92\xf7\x96\x62\xdb\x4c\x2b\x8d\xea\x1b\xea\x8c\x92\x63\x77\x9a\x8e\x0b\x73\xc8\xa6\x31\x59\xbc\x19\xf1\x43\xef\x4f\xcd\x41\xb0\x6d\x18\xd7\x27\xf5\x57\x19\xac\x12\xb9\x31\xb2\xfc\x32\xef\xf9\x9b\xdc\xcf\x13\xcb\x06\x1e\xdc\x4c\xa3\xed\x0b\x17\xde\x3c\xf8\x43\x42\x83\x6d\xfd\x21\xbc\x83\x85\x66\x4d\x24\x5a\x1e\x5b\xb2\x1a\xb1\x05\x04\x91\x5a\x31\x4e\x77\x98\xce\xae\xaf\x50\x56\x13\x95\xea\x88\x0b\x7e\x82\x06\x80\x2e\x72\x80\xb5\x56\x49\x75\xad\x4e\x85\x85\x20\xeb\x4a\x84\x37\xc7\xc1\x1d\xf2\x6c\xdc\x21\x13\xec\xb0\xbf\xba\x57\x5c\x7d\xfb\x66\x8d\xcb\x99\x3c\x89\xca\x31\xe2\xd9\x9a\xc3\x86\xd8\x1e\x67\x3f\x41\x36\xa0\x5d\x4d\xae\x32\x29\xa9\x5c\x18\x5d\x0b\x13\x02\xd7\x83\x21\x45\xd7\x93\x4d\xd4\x8a\xde\x84\xf9\xd1\x40\xe5\xbd\xd3\x9b\xb1\x0a\x34\x3b\xe6\xb6\x33\x6a\xaa\x9b\x2b\x7b\x50\x3d\x24\x74\xdf\x76\x10\xe3\x00\x5a\xe4\xb8\x56\x69\x5f\x2d\x85\xae\xd6\xa4\xd5\x26\x5c\x14\xec\x81\x47\xbb\xe9\xdf\xae\x72\xdd\xe5\xf8\x4c\x1e\xeb\x82\xa0\x35\xad\x6b\x56\x1b\x93\xba\x3f\x8c\x20\x4d\xc9\xd3\x84\xd4\xda\x48\xad\xd5\x90\xda\x78\x6c\xe7\x44\xf8\xdb\x4f\x2a\xf3\xa5\xce\x50\x88\x65\x46\xd9\xc0\x34\x5d\x9c\xc1\x78\xdf\x16\x64\x85\xef\x29\x6b\x6a\x4d\x59\x30\xf4\xc2\xfc\x49\x5d\x75\x1b\x16\x86\x29\xb5\x26\x4f\x5d\x87\xde\xcd\x26\x1f\x58\x33\xb7\x1b\x22\x96\x56\xa9\x60\xe6\xcc\xda\x7d\x66\xe4\x33\xe5\x62\x8b\x9c\x5b\x2e\x0b\xfb\xfb\xc8\x62\xdc\x3d\xaf\xe4\x7d\x9a\x50\x05\xfa\x57\xff\x8d\xae\x38\x77\x3f\x57\x7f\xfa\xa3\xd6\x80\x3e\x08\x74\x20\x3f\x6b\x41\xb3\x4d\x42\xd5\xe3\xd6\xbf\x2a\x5f\x44\x3f\x62\x4e\x72\xf4\x0e\x97\xf8\x56\xeb\xdf\x2f\xe7\xd7\x3f\xbe\x7b\x25\x17\x34\x0a\x9b\x74\x75\x31\xe4\xa0\xb5\x5f\xd0\x1f\x78\xbf\x7b\x4a\x53\x6f\xac\x49\x17\xe8\x1e\x47\xbb\x87\xe4\x2c\x7b\xd3\xc4\x8a\x2f\x6c\x67\xb3\xf7\xeb\xe0\xf7\x8e\xf6\xfd\x3a\x7f\xf4\xea\xf6\x6d\xd7\xa7\x31\xb7\xe0\x9f\xb9\xc0\x7c\xf5\x81\xc8\x85\x26\x73\xc2\xc7\x0a\x7f\x0c\x4b\xa0\xea\x65\x54\x77\xde\x96\x5a\x05\xc7\x56\xbe\x51\x37\x2f\x1b\xf6\xe5\x4a\x36\x97\x2f\x4c\xc7\x4e\xa4\x28\xdb\x8a\xae\xb7\x54\xac\x9a\xc5\x49\xc6\xd6\xa7\xea\x23\x24\xd7\xff\x7f\xba\x28\xd8\xe2\xf4\xdb\xff\xc4\xcb\x7f\xcf\xff\xf2\xfa\x3f\x17\x8b\x7f\x5f\x90\x1f\x7e\xf8\xcf\xd7\x3f\x7c\xff\x9f\xdf\xff\x3b\x5e\x2e\xbe\xfd\xee\xdb\xef\xfe\xfd\x3f\x7e\x78\x9d\x7f\xbf\xfc\xcf\x3f\x7f\x7f\x8a\x2b\xca\xcd\x8b\xf7\xaf\x17\x44\xe0\xd7\xa7\xa6\xb7\xff\xe0\xba\xbb\xff\x50\xa5\x7c\x4f\x6e\xd9\x37\x3f\xff\xf9\xcf\x43\x42\x69\x8c\xc1\x86\xe4\xf7\xe7\x29\xb7\xef\x55\x5e\x8f\xec\xf0\xc0\xde\x1b\xfd\xd3\x1a\x7f\xfe\x58\xe2\x7b\x4c\x0b\x29\x69\xf7\xe7\x16\x97\x9b\x5f\xb6\xf4\xcb\x59\xd0\x9e\x3b\x0b\xf5\xb2\x0b\x44\x54\x22\x72\x4f\x75\x1c\x8b\x15\x0f\x49\x2e\x6f\x10\x2c\xd0\x5a\x5e\x5b\x2f\xba\xbd\x7b\x81\x2a\x96\x6f\x4f\xb5\xc6\x8f\xd6\x37\xde\x0b\xfd\x1f\xac\x7e\xa1\x84\xa9\xa6\x7d\x19\xe1\xa5\x30\xc6\x3e\xfb\xd5\x63\x44\x4f\xc8\x09\x22\xf7\x03\xc8\x16\x54\x59\x7d\x15\x9a\x8f\x05\xfb\x96\x6f\x91\x5c\xf6\xe1\x04\xbd\x65\x35\x32\xa1\xde\xc7\xaa\xaa\x7c\x86\x4b\x97\x23\x87\x8b\x42\xf1\x91\x52\xe0\x81\x04\x54\xfb\x75\x55\xb1\x5d\xdf\x94\x0a\xa7\xe5\x5b\xe3\x5d\x50\xb9\xb7\xeb\x46\x34\x2a\x2f\x9a\x7c\xce\x8a\x86\xd3\x7b\xe2\x0c\x09\x83\x66\xe2\x17\x6b\x5a\x9e\xb9\x79\xea\x33\xf0\xcf\xb3\x76\x97\xcf\x68\x29\x66\xac\x9e\xe9\xf5\x79\x83\x44\xdd\x74\x6f\x04\x13\x0f\xde\x5f\xf5\x5e\x35\x7a\xf5\x8c\xec\xab\x94\xf0\xed\x3b\x0a\xf4\x6a\x81\xb9\x3c\x63\x5c\xe0\x6d\x60\xa6\xd0\xf9\xc6\xb7\x64\x38\x2f\x3d\xb8\xeb\x71\x7d\x3b\xc8\x2b\x7a\x59\x60\xf5\x6d\xb3\x56\xf2\xa2\x71\xbd\x92\x52\xd4\x1b\x05\x7a\xa2\x41\x76\x72\x96\xdd\x49\xdd\x60\x8d\x6f\xc9\xd1\x11\x47\xe7\xef\x2e\x06\xcf\xa0\x1d\x30\x1d\x8e\xf4\x3c\x41\xbf\xe2\x9a\xaa\xed\xe6\x85\x9c\xfe\xdb\xcb\x5f\xcf\x3e\xfc\xe3\xfd\xd9\xbb\xcb\x57\x83\x44\xe5\x4e\x25\x9f\x2b\xac\x50\xb8\x1a\x97\x1f\xe9\x6a\x02\xc8\x0e\x91\xf2\x9e\xd6\xac\x5c\xb7\x4e\xde\x7b\xf3\xa5\x41\x92\x99\x2a\x90\xa5\xdd\xaa\x9c\x15\xf7\xd6\x6b\xed\x7a\x65\x6d\xc5\xb4\xac\x1a\x61\xfd\x09\x46\x0d\x18\xa4\xd8\x94\xd9\x0a\x97\xb7\xb6\xe6\x86\x37\x26\xc4\x37\xa5\xc0\x9f\xad\xcb\x89\xf0\x0c\x57\x56\x52\xc2\x28\x67\xcd\x58\x27\xff\xed\xdf\x8e\x11\x25\x6f\xd0\xbf\x79\xc4\x4e\xd0\xa5\x79\xdf\x9b\x40\xed\x05\x27\xf7\xa4\x56\x1f\x30\x53\x35\x2c\xb8\xd6\xe4\x16\xd7\x79\x61\x42\xca\x7d\x1b\xbf\x9d\x30\xa4\x94\x20\x8e\x58\x2d\xd7\xee\x04\x9d\xbb\xb9\x6a\xaa\x7c\x5c\xfd\x81\xdd\x1d\x02\xf3\x3b\x7e\x4a\x4b\xc9\x68\x67\xf2\x38\xcc\x70\x25\x45\x66\xa5\x6f\x9e\x6a\x7f\xc1\x4c\xa1\x42\x94\xf9\x0c\x9b\x6d\x39\x73\x4b\x7d\xfa\x4d\xdd\x94\xa5\xbc\x6a\xb0\x7b\x8a\x96\x33\x3c\xe3\x2b\x32\x02\xff\x74\x21\x95\xa1\x4c\xf6\xfb\x8d\xb2\xdf\x55\x35\x5b\xcb\x41\x37\xfc\x84\x7c\x56\xba\x40\x7d\x22\x4f\xc9\xd0\xa5\x12\x70\x7f\x83\xee\x9a\x61\xcf\x0c\x29\xef\xe3\x47\xf2\x67\x53\x00\xd0\xdb\xd8\x6e\x85\x0c\x50\x82\x73\x68\xb8\xe9\x19\x5e\x99\xed\x05\xf4\x26\x05\x34\x3f\xa4\xbc\x4f\x9c\x9e\x2e\x0a\x5a\x79\xff\x2b\xae\x3b\x6a\x69\x39\x38\x30\x1b\x7b\x31\x72\xbf\xab\xe8\x81\xf3\xf0\x60\xe3\x3a\x68\xd8\xc8\xd9\xe9\xb8\x2f\x25\x0d\xf5\xd7\xd7\x42\xcf\xff\x71\x75\x71\xf9\xfe\xe6\xea\xed\xd5\xe5\x87\x71\x0d\x01\x20\x84\x2b\x03\x2f\xb0\x83\x47\x11\x7e\xda\xe1\x9d\x01\xdd\xa0\xe5\xaa\xf2\x92\xa6\xac\xe1\xd6\x77\x37\xb2\x01\xa3\x31\x27\x6e\x4f\x2a\x83\x02\x2e\x1d\xba\xcc\xff\xc7\xde\xdb\x36\xc9\x8d\x1b\xe9\xa2\xdf\xcf\xaf\x40\xb4\x37\x4e\x4b\x11\x5d\xd5\x1a\xdb\xeb\xf0\x9d\xf5\xee\x8d\xb6\xa4\x99\xed\xb0\x46\xea\x50\x6b\x66\x8e\x6f\xdc\x88\x09\x14\x89\xaa\xc2\x69\x16\x40\x13\x60\xb5\x6a\xcf\xdd\xff\x7e\x03\x09\x80\x6f\x45\x12\x09\x76\x95\xd4\x33\x26\xfc\xc1\xa3\x2e\x32\x89\x97\x44\x22\x91\xf9\x64\x66\x3f\x41\x8c\xd0\x76\x84\x27\x8b\xee\x11\xa2\x66\x6f\x4c\x11\xe0\x23\x24\xbd\x68\x9f\x22\xc6\xc7\x7b\x5a\x09\xf8\x28\x61\x3e\x42\x13\xc4\x7c\xd3\xd5\x73\x71\x31\x82\x71\xc0\xb2\xf0\x77\x85\x1c\x81\x4c\xb7\x2f\xe8\xb6\x38\x0a\x98\x21\x07\xb6\xda\xa5\x72\x58\xb3\x91\x71\x34\x04\x9d\x53\x42\xaa\xec\x37\xe6\xef\x6c\x97\xeb\x91\x68\x29\x9c\x93\x24\xf1\x05\x78\xff\xc6\x0e\xc1\xc2\x52\x1d\xf7\x92\xaf\x24\xf5\xc0\x0e\x16\x53\x5d\x55\xf3\x7d\x16\x60\x28\x7b\x37\x38\x29\x16\x0a\x97\x2b\xf9\x79\x5e\x4d\xeb\x76\x86\xec\xc7\xb8\xcc\xc7\x11\x33\x8d\xcf\x78\x1c\x55\x63\x1a\x99\xf0\x78\x4a\xb2\x63\x7c\xa2\xe3\x53\x01\x6f\x90\xa8\x1a\x5c\x55\xdf\xa1\x32\x71\x2d\xf4\x2e\x54\xe4\x75\x36\x67\x45\x76\x4c\x53\xa3\xf3\x2e\x0d\xe3\x85\xb8\xa4\xf5\x30\xd8\xae\xae\xea\xbf\xb9\x92\xbe\xf5\x1f\x9a\x05\x7f\x03\x84\xcd\x9d\x7a\x29\x64\x0a\x2e\x9d\x2b\xfb\xcf\x76\x0e\x67\xf7\x83\xa6\xba\x54\xcb\xad\x54\xfa\xf6\x2e\x48\xd4\x3e\x9c\xcb\xf4\xf6\x2e\x80\x8f\xc3\x4b\xb3\x98\xfa\xbf\xb8\x8a\xbf\xad\x0a\xbe\x08\xbe\xee\xab\xf1\x3b\xa1\x66\x6f\xc4\x3e\x8e\xa8\xcb\x8b\xad\xc4\x7b\x54\x59\x17\x31\xf0\xa8\xda\xbb\x27\x47\xd0\xe1\x2a\xea\x22\xb7\x73\x5c\x2d\x48\x64\xf5\xc7\x6e\x45\xc7\xc0\x1c\x8d\xd6\x7b\x1c\xab\xe1\x18\xa0\xeb\x1e\x66\xf9\x96\xed\x58\x41\xb3\x85\x73\x92\xb4\x6b\x3f\x5e\x75\x8b\x39\x86\xf6\x5d\xb3\xfc\xe3\x11\xed\xa9\x95\x20\xf1\xfb\x3e\xb2\xda\x23\xae\xbe\x63\xab\x5e\x23\x62\x07\x4c\xac\xe8\x18\xb1\xd5\xd1\x55\x1b\xb1\x75\x1a\x3b\x75\x17\x11\x83\xec\xa9\xcc\x88\xad\xb4\x18\x31\x50\x7c\x35\x45\x44\xfd\x44\x74\x3d\xc4\x93\x4b\x25\x54\x95\x43\xa4\x50\xb2\x98\xb2\x53\xdc\x21\x8e\xb1\xad\x58\x68\xeb\x97\xb8\x56\xb4\x01\xb8\xf5\x91\xb4\x2e\xe4\x6e\x49\xb0\xe5\x93\x7d\x38\x03\x4f\x3d\xa5\x07\x36\x9a\xf7\xc2\xb6\xf9\xa2\xf2\xdb\xbe\xa8\x1c\xa1\xd2\x11\xe3\xf9\x8d\xdc\x52\xc2\x19\x58\x47\x7b\xb3\x00\x86\x1f\x31\x6c\x07\x1c\xf8\xfd\x86\xed\xda\x74\xdc\xf7\xd5\x90\xb8\xf1\xd6\xe6\xa1\xf9\xc3\x88\xab\x21\x77\x97\x6f\x4f\x73\x7b\x8d\x2e\xdb\xeb\x1f\xde\x4c\x72\x7f\x8d\x12\x1d\x32\xe5\x62\xdc\x60\xa3\x84\x5b\xd6\x56\xb4\x4d\x75\x94\x64\x9f\xab\x2c\x6c\x55\x1d\x25\x39\xe6\x32\x1b\xb7\xab\x06\x76\x6a\xc8\x75\xd6\x6f\x59\x1d\xdf\xb6\x51\x2e\xb4\xd8\xcc\x9a\x5f\xda\x95\xf6\x7c\xd2\x72\x0e\x78\xcb\x7c\x6b\xed\xe8\x08\xa7\xd9\x38\xdf\x55\x3e\x26\xac\xf7\xd3\xb6\xd8\x70\x59\xb4\x63\x2c\x70\x4c\x35\x2a\xdc\x06\x1d\x64\xf5\x3b\x58\xed\x6f\x82\x6e\x84\x73\x9c\x61\x35\x3f\x9c\x6b\xcd\xb7\x08\x5d\x24\xe0\x6a\xeb\x1d\x1a\xc6\xe5\x86\x18\x58\x8f\x24\x1f\x73\xbd\x21\x28\x76\x9d\x73\x38\x17\x5c\x0c\xe1\x25\xee\xd8\x40\xdd\x3b\x11\x38\x8b\xc6\xe1\x81\xd1\x7d\x4f\x84\xba\x68\xb7\xd3\x3a\xef\x7c\x8b\x74\xe2\xa1\xd8\xa9\x75\xe0\xa0\x9d\x79\xbe\xc5\x6e\x9a\x71\xe7\x9e\x6f\xf1\x4e\x3e\x14\x3b\x42\xca\x89\xa7\x39\xfb\x7c\x8b\x2b\x2b\x18\xe5\xfc\xeb\x9f\x84\xc9\x4e\xc0\x69\x3d\x26\xb1\x25\xae\x9f\xea\x1c\xf4\x6d\x42\x01\x59\x7c\x61\xd5\xa3\x8e\x9e\xaa\xb8\x2a\xf9\x5a\x05\x56\x49\xd4\xed\x3d\x82\x28\x3e\xca\xad\x6e\x13\xd6\x2e\xae\xe0\x2a\x89\x72\x43\x46\x8c\xb6\x36\x05\x4c\xaa\xbd\x4a\xa2\xeb\xaf\x92\xe8\xc2\xc7\xf8\xb2\xc7\x91\x75\x8c\x71\x6e\x4b\xdf\xe2\xdd\x97\xc8\x19\x6c\x3b\x39\x51\x6e\xcc\x58\xca\x4d\x67\x27\xd6\x9d\x89\xfc\x46\xdb\xe9\x19\xe3\xd6\xf4\x2d\x5e\x3e\xc7\xb8\x39\x7d\x8b\x75\x77\x46\xec\x21\xae\x4e\xe5\xf6\xf4\x6d\x82\x3c\x89\x70\x83\xfa\x16\xe1\x0e\x8d\x98\x8d\x76\x22\xaa\x28\xb7\x68\x45\x22\x76\xf8\xb1\x02\x05\xe7\x2e\x6d\x77\x07\x2d\x56\xe2\xdc\xa7\xbe\xc5\xbb\x51\xb1\x07\x8d\xc8\x0e\x11\xee\x54\x24\xd5\xb6\xd3\x15\xeb\x56\x45\x12\xef\x38\x5f\x43\xee\x55\xac\xd4\x98\xe4\x84\xf5\x2d\x5e\x4a\x45\x3a\x65\x7d\xc3\x3b\x67\x23\x36\xa5\x77\xe3\x4e\x75\xd2\xfa\x36\x41\x30\xa1\x9d\xb6\xd5\x0b\x78\xe7\x6d\xa4\x58\x72\x6e\xde\xa7\x38\x71\x2b\x72\xf1\x13\x81\x77\xea\xfa\x76\x4a\xe7\xee\xe4\x8e\xc7\xca\x56\x94\xd3\xb7\xdd\x1b\xb4\x68\xc5\x3b\x81\x7d\x8b\x72\x06\x23\x27\x31\xc6\x65\x5c\xbd\xf3\x15\x2e\xa1\x03\xae\xe4\x88\x4d\xd3\x70\x3a\x4f\x75\x29\xfb\x36\x5f\x6f\xe7\xeb\xed\x68\xc3\x3b\xaf\x63\x54\xf3\x7f\xce\xbb\x2d\xfa\x61\xac\x0b\x7e\xd0\xf9\x1d\xf9\x45\x5c\x59\xb9\x02\x5f\x4e\xf8\x4e\x16\x9a\x88\x72\xb7\x62\x45\x6d\x28\x75\x7e\x71\xa2\x78\xca\x48\x42\x47\xfd\x3a\xa7\xcd\x81\x5c\x69\x16\x78\x9f\xfa\x6b\xb9\xcb\x4b\xcd\xc8\xc7\x4a\x45\xaf\x74\xbc\xd5\xa1\x1e\x4b\x20\x64\xcd\xb7\x51\xc7\x29\x4a\x94\xf9\x4c\xfb\xd6\x2b\xba\x83\xa4\x0f\x8b\xc4\x76\x72\x51\x8d\xaf\xe1\x16\x3d\x45\x31\x33\x7b\x7f\x08\xc2\x9b\xd3\x94\x5b\xb1\x72\x17\x71\x9c\xc6\x00\x0c\x3b\x11\x85\x70\x55\xb2\x7f\x5c\x39\x15\x74\x47\x3f\xf3\x5d\xb9\x23\xd4\x15\xd9\x0d\xeb\xa0\x6e\xee\x1a\x77\x30\x17\x99\xfe\x75\x97\x86\xc4\xca\x09\x73\xfb\x7a\x66\x2b\xf4\xd1\xdf\x60\x3b\x6b\xc4\x45\x63\x8d\x82\x9f\x97\xeb\x9e\x35\xf2\x9b\x10\x5c\x78\xd5\x77\xb8\x22\x72\xc7\x75\x28\x23\x37\x71\x29\xa2\x68\xbd\x6d\xaf\x08\xd7\xad\xdb\x86\xe3\x2e\x40\xbe\xd0\x60\xf1\x41\x62\x3d\xa0\x3e\x57\x4e\x23\x05\x1e\xe8\x06\x8f\x5c\xb9\x64\x53\x84\xef\x72\x9b\x13\x16\xb8\x64\x81\x3d\xf1\x9c\x93\xe8\x57\xc2\x91\xb8\x42\x3a\x2c\x29\x0b\xae\x0f\xe6\x0e\xcd\x3e\xe3\xcf\x94\xcb\x7b\xf7\x62\x23\xad\x32\x98\x76\x7d\xbd\x87\xa2\xb4\x95\x74\x4e\x5a\x50\x39\x87\x5c\x3b\xd7\xbe\xd3\x30\x67\xec\xb3\xbe\x3e\xc1\x37\x2c\xf0\xa5\x2a\xa1\xb2\xc8\x65\xda\x58\x92\xa3\x2f\x9e\x42\xa0\x83\x88\xbb\x2b\xf8\x9e\x67\x6c\xc3\xde\xaa\x84\x66\xc0\x23\x71\xc9\x12\x6f\x06\xa8\xc0\xb6\x2a\x64\xa6\x50\x40\x23\xe8\x8f\xe9\x39\x94\xcf\x4f\xa8\x20\x1b\xca\x05\xd9\x99\xb9\xcb\x3d\x71\xc8\x9d\x2d\x40\x61\xcc\x69\x81\xf1\xf3\x3b\x82\x2e\xcb\x86\xd1\x11\x49\x0a\xe5\x27\xb2\x43\xdd\x3f\x6e\xaf\x20\x42\xfe\x22\xd8\xe3\x2f\xe6\x6b\xe1\x7d\xbe\xce\x68\xed\xd2\x57\xcc\x57\x72\x6f\xc0\x13\xaa\x4f\x0f\x4d\x50\xf0\x1b\x5c\x41\xa2\x0e\x42\xb3\x47\x7a\x80\x69\xec\x7e\x83\xab\x6f\xc9\x37\x2f\x81\xd7\xa9\x22\xd5\x37\xc2\x92\xe4\xf7\x2f\xc9\x96\x2a\xf2\xfa\xe6\xee\x97\xfb\xbf\xdf\xff\x72\xf3\xe6\x87\xdb\xf7\xb8\x6d\x8f\xd1\xb3\x13\x9a\xd3\x15\xcf\x38\xe6\x64\x39\xba\x15\x37\x5f\x06\x71\x99\xa6\xd7\x69\x21\x73\x3b\x7e\x07\xef\x42\x1c\xe8\x6e\x8e\x3a\x05\x78\x9b\x89\xfb\x60\xd9\xd6\xad\x0f\x06\xe9\x6e\x0a\x2a\x1a\x89\xd6\xea\xa5\x28\x4a\x01\xf5\xf8\x03\x14\x62\x6c\x0c\x34\x45\xdd\x50\xda\xf9\x75\xd2\x94\xa5\x71\x43\x42\x21\xbc\x7a\x3f\xf6\xda\x7f\xe6\x50\xa3\xbd\xc8\xdd\x87\xfb\xdb\xff\x15\xdb\x03\xe2\xf8\x2b\xe2\x9a\x85\xbe\xea\x62\xee\x33\xd5\xf0\x0a\x99\x47\xcf\xf9\x47\xb6\x93\xfb\x79\xd6\xfb\x1e\xc7\xcc\x3a\x5a\xc1\xad\xce\x81\xe0\xb6\x68\x2f\x4f\x29\x9a\x22\x53\x34\xe8\x40\x09\x84\x25\xb9\xb3\xa2\x1a\x31\x67\xed\xb7\x6b\x21\x63\x71\xcc\x4a\xd9\x3c\xc8\xd9\x81\x18\xcd\x74\x4f\x33\xcc\x19\xa5\x25\x29\xa4\xac\x4e\x90\xad\x54\xba\xaf\x68\xf8\xc9\xa4\xb3\x39\x98\x20\x1f\x75\xd4\x2c\x56\x6f\x91\x94\x09\xa9\x9d\x16\x0f\xe9\x27\x25\x94\xee\x4e\x08\x4e\x93\x6f\x64\x9c\x6e\x49\x50\xe5\xd0\xe9\x75\x91\x5a\x37\x07\x77\xfe\xcb\x41\xd2\xb6\xe2\x4d\xa9\x5c\xe7\x8e\x84\x73\xad\xdb\x9b\xaf\x17\x8c\xa6\x88\x28\x47\x5b\x9d\x42\xb9\x0a\x35\xea\xc1\x57\xee\x71\x3a\x85\xbb\x83\xd8\x2f\x56\x5d\xfd\x84\xd9\x55\x6b\x46\x75\x59\x30\xab\x4b\xd8\x84\x9a\xb6\x38\x64\x10\x1a\x18\x11\x05\x66\x33\x92\x7f\x94\x52\xd7\x59\x47\xa3\x16\xfe\xe7\xca\xbc\xc7\x55\x63\x4a\xb7\xd4\x7a\x3e\x69\xba\x40\x4d\x22\xb0\x78\x9d\xd4\xb4\x55\x8d\xf8\xc4\x0c\x5e\x94\xe2\xc6\x56\x48\x89\x56\x3e\xbe\xbf\x7d\x03\xfb\xb1\x14\x9d\xd0\x89\x23\xd7\x2e\x5e\xf5\xfc\xd1\xf0\x63\x87\x03\x5d\xca\x54\xa6\x6d\x3d\x10\x9a\x29\x19\xaa\xf6\x44\xe0\xb6\x04\x6e\x90\x3b\x99\xde\xb7\xef\x4d\x36\x9f\xb3\xfb\x79\x25\xf5\x96\x74\x1e\x08\x2b\x1b\x22\xed\xa1\x7b\x55\xd7\xc3\x6a\x00\x06\xb8\x88\x26\xaf\xe9\x03\x53\x24\x2f\x58\xc2\x52\x26\xc6\xf3\x6a\x93\xb6\xc9\xef\x4f\x7f\x44\x71\x06\xa6\xd2\x0c\x70\xc6\x7b\x29\xcc\x76\x88\xe2\x8d\xba\xce\x29\x18\x02\xda\xd2\x05\x0c\xd7\x56\x07\x47\xdc\x71\x84\x14\x0b\xd8\x0c\xa5\x62\x85\x2d\x1f\x5c\x94\xcc\x4e\xf4\xdf\x6c\x5e\x62\x7b\xb1\x00\x3f\xce\x58\xc5\xc2\x6a\xfc\x5b\x66\xa3\x79\x08\xd5\x15\xa3\x41\xa5\x59\x65\xc4\x8b\x35\x5d\x68\x92\x4a\x66\x51\xa4\x45\x19\xbe\x7b\x50\x45\x7e\xbc\x7d\x43\x5e\x91\x17\xa6\xaf\x2f\x81\x3d\xd6\x94\x67\xe0\xa2\x82\xca\x35\x9d\x9b\x48\xd8\xc6\xe6\xba\xb0\x74\x65\xe5\x6c\x8c\x1b\x6c\xfd\x2b\x22\x24\x51\x65\xb2\xf5\x63\xf6\x25\x91\x83\x34\x57\x8c\xe4\xac\x30\xcc\x02\xa6\xba\x7a\x2b\x05\xb6\x0a\x76\xa7\xf5\x6d\xa5\xa1\xad\x82\x5a\xa7\xf0\x56\x8a\xde\x2a\x91\x82\xf1\x47\x15\xc6\xa5\x1c\xc9\xc5\x1f\xcf\x20\x17\x9b\x2a\x0e\x94\xda\x6e\xcd\x8a\x65\x68\x8f\x8e\x0b\x33\x57\x3b\x05\xf5\x3f\x29\x2b\x9c\x47\x6a\x2a\xf6\x8e\x8b\xf2\xb3\x2d\xe7\x16\x7f\xa1\xbf\x7f\x0b\xaf\x93\xc4\x0f\x0a\x16\x05\xc2\xba\x6c\x22\x71\x8c\x57\xbf\x11\xbc\xd4\xad\x4a\xd9\xaf\xea\xa1\xc4\x07\xcd\x32\x69\xc4\xba\xd1\x64\xa8\x48\xe5\xee\xa8\xb3\x00\xc1\xa1\xc9\xb6\xd9\x01\xc3\x5c\x08\xd2\x18\xe6\x6b\x32\x57\x90\x24\x92\xf9\x6a\xe6\x0a\xb3\xf6\x29\x99\x2f\xc6\xb4\x91\xb1\x3d\x43\xf9\x9d\xdb\x91\x70\xe6\x2d\xa3\x30\xfa\x55\x02\x32\x04\x00\xb7\xae\xac\x1e\x70\x15\xee\xee\xeb\xac\x41\x48\xa7\x9d\x7b\x27\xe6\x12\x5c\xc8\xe3\xe4\xca\xc1\x31\x7e\x94\x19\xb3\xe9\x80\xfd\x20\x0d\x99\x67\x3b\x46\x1d\xa8\x7b\xd0\x3b\x46\x73\x3b\x6a\x8f\x11\xee\x91\xcf\x75\x8c\x25\xe2\xc4\x3c\x1a\xa3\x39\x66\xdb\x63\x84\x33\xee\x79\x8e\x11\x6d\x82\x79\xe4\x22\x95\x8f\x6a\xea\x51\xf0\xb3\x7d\xdd\xcb\x9d\xc4\xe7\xb7\x56\x8d\xe3\x00\x23\xb4\x5b\x56\x83\xbe\xf3\xc0\x3b\x85\xd6\x85\xdc\xa1\xce\x97\x63\x39\xda\x29\x67\xf3\xdb\xba\x5e\xc5\xc8\xea\xcd\x4e\xd1\xd7\x55\x8d\xaf\xfb\x9c\x25\xd1\x9b\xe1\xfb\x1f\xee\x6f\xda\x24\x00\x90\x0f\x75\x1e\xcc\x0c\x98\xdf\x51\xfb\x80\xa6\x3b\x6e\x8b\x20\x3c\xb2\xd5\x56\xca\x07\xf2\xa2\xa7\xa0\x41\x23\xf1\xb9\xe2\x1b\x75\xed\xb8\x76\x61\x46\x82\x43\x22\x73\x91\x71\xd1\x30\x23\x41\x18\xb3\x53\x75\x4d\x67\x1b\x45\xcf\x60\xe1\x50\x44\x05\xdd\xd5\x9e\x83\xe3\x29\x01\x38\x1c\x00\xc7\xac\x69\x09\x45\xd3\x86\x01\x40\x26\xfd\x7c\x4b\x17\xf6\x40\x34\xcc\xc6\x95\x45\x95\x6f\xa5\x90\x0e\xa7\xa2\x58\xb1\x67\x05\x52\xe0\x18\x09\x65\xad\x51\xd0\x5d\xb7\x73\x61\xec\x4d\xbb\xd5\xc9\x85\xed\x31\xb7\x61\xa1\xd9\x01\x8e\x6b\x96\x1a\x0b\x42\xa5\x7c\x1b\x59\xf2\xaa\x88\xe6\x27\x5b\xc8\x98\x65\x38\xc8\xda\x6f\x68\xad\xaa\xfb\xe4\xa4\x25\x82\x7b\xa5\x7b\xd9\xc8\x3c\x7f\x38\xd4\xf7\x4c\xd4\xe8\x47\xee\xa2\xc7\x77\xcd\x98\xc3\x36\x74\x27\x8d\x28\x7b\x54\x37\xe4\xbd\xd4\x9e\x36\x48\x51\x75\xda\xab\x29\x39\xdf\xf5\xd4\xb6\x7a\xbf\xf4\xee\x05\xdd\xdd\x0e\x28\xa2\xf5\x96\x19\xda\x0e\x1f\x9b\xcc\x8a\x93\xad\xe7\xdb\x3b\xa7\x83\xd0\x04\x1f\x31\x37\xfc\x62\x3f\x8c\xf2\x6d\xa3\x39\x6e\xdd\xd3\x84\x6a\xe7\x4e\xd9\x31\x5d\xf0\x44\x79\x5c\x8d\xe1\xdb\xa4\x80\x44\x01\x8d\x24\xfb\x83\x63\xf0\x4a\x54\xe1\x7c\xa4\x90\xcc\x63\x5d\xc2\xbc\x16\x2c\x63\x54\xb1\x89\x85\x6f\x88\xd5\xa5\x07\x15\x98\x38\x98\x1b\x62\xed\x3a\xc0\x43\xf8\x38\xf8\xfd\x1e\xd8\xc1\xed\x96\x9c\x72\xcf\x80\x3e\x6b\x52\x18\xd2\x7f\x57\x25\x98\xaa\x2a\xa8\x90\x3d\xa7\xe4\xde\xc6\x7b\xfa\xb2\x2b\x76\xb4\xcb\x2f\x33\xeb\x23\xfc\x24\x42\xa5\x2c\x8f\x41\xfe\xbe\x48\x55\x63\xa8\x4b\x3f\x3c\x5f\x46\x46\x8d\x5b\x6c\xea\x3a\x85\x36\x0e\x84\x37\x82\x3b\x5a\x73\xd2\x1d\xfb\x20\xc5\x53\x72\xe2\x18\x1c\xba\x3d\x1d\x38\x2c\x34\x6a\x91\x4b\x55\xbf\xba\x34\xff\x37\xd4\x7d\x0c\x7c\x3a\x64\x0d\x1c\x65\x8b\x51\x44\xf5\x39\x90\xd4\x5f\x01\x41\xdd\xdb\x0f\x4c\x99\x91\x8a\xd8\x94\xda\x67\xe3\x98\xeb\x73\x8b\x38\x14\xb6\xda\xe3\x72\x07\xbf\xfb\x8c\x30\xd5\xa8\x04\x83\x63\x18\xea\x33\xcf\x38\x0a\x2b\x1d\x37\xe7\x21\x8c\xf4\x11\x06\x7a\x58\x60\x06\xb0\xd1\x21\xec\xf3\xf0\x34\x8d\x60\xa2\xbf\x36\xe6\xf9\x49\x95\x1f\xc3\xd8\xe6\x89\x98\xe6\x50\x90\xdc\x53\xb0\xcc\x40\x7b\x40\x93\x3c\x2d\x86\x79\xb2\x48\xed\x4c\xec\x14\xc1\x1a\x8b\x7d\x9e\x88\x79\xae\x31\xcd\x83\xdc\x8f\xc5\x3a\xf7\x60\x99\x07\x69\xa2\x30\xce\x7d\x18\xe6\xe1\x3d\x1a\x87\x6d\xee\x60\x97\x87\x15\x55\x3c\xa6\x39\x0a\xb3\x1c\xf6\x89\x63\x30\xca\xd3\xb0\xc9\x4d\xe3\xf4\xe0\xc0\x23\x30\xc9\x1d\xcc\xf1\x30\x23\x61\xb1\xc8\xa8\x9c\xb3\xe3\xd8\xe3\xe9\x98\xe3\xd8\x6c\x92\x48\xb4\x6b\x18\xc7\x7a\xc2\xec\x9d\x21\x94\xf0\x53\xd0\xc1\xbf\xfe\xf9\x09\x2a\x59\x61\x1c\xef\x54\xfc\xee\x58\x16\x9c\x58\xdc\x6e\x03\x97\x3b\x2a\x15\x23\xf1\xba\x61\xc9\x14\xc4\xe7\x4e\xc2\xe5\x3a\x73\xf5\xe0\x50\x26\xe0\x71\xad\x81\x68\xec\x7e\x1a\x85\xc3\xad\x71\xb6\x83\x24\xa3\xf0\xb7\x2d\xfb\xdd\x98\xf2\x19\xc6\xdd\x06\xf7\x46\x1c\xce\x76\x02\xbe\xf6\x08\x3f\x1b\x3a\x59\x82\xb8\xda\x30\x23\x86\x71\xb4\xe7\xc0\xcf\x4e\xc0\xcd\x3a\x4b\xfa\xb0\x85\x2d\x1e\x2f\x1b\x6d\x3e\x3f\xb1\xc9\x1c\x83\xe4\x0a\x23\xb8\x30\x78\xd7\x49\x38\xd7\x06\x8e\x75\x6c\xff\xa3\xf0\xad\xbd\xf8\xd5\xb1\xfd\x3a\x82\x6b\x1d\xc3\xad\x0e\x92\xec\xc7\xb3\x62\xf0\xaa\x83\x24\x3b\x38\xd6\xd3\xe3\x54\x27\xb0\x2e\x02\x17\x76\x12\xd6\x45\x0a\x96\x31\x1c\xea\x39\xf0\xa7\x93\x70\xa7\x68\x1f\x1f\x7e\x49\x27\xc1\x48\xce\x04\x1f\xf9\xb2\xd2\x08\x87\x23\x9d\x84\x1f\xc5\x20\xa3\xf0\xb8\xd1\x63\x5c\xe8\x20\x51\x2c\x5e\xf4\x37\xbc\xdf\x31\xd7\xc9\x20\xde\x73\x1a\xce\x33\x04\x17\x43\x63\xe6\x50\x97\x9f\x10\x9e\x73\x1a\x8e\xf3\xcb\x8e\x21\x84\xd7\x9c\x86\xd3\xfc\xb2\x63\x08\xe1\x31\xa7\xe1\x30\xbf\xe4\x18\x82\x57\x64\x1c\xce\x72\x12\xbe\xb2\x8b\x9f\x8c\x92\x97\x5d\x5c\xe5\x10\x6e\x72\xcc\x8f\x8b\xc1\x53\x7e\x6d\xf5\x1b\x23\xd3\xe2\x70\x91\xd1\x78\xc8\x1a\xeb\x38\xca\x96\xe7\xc1\x41\xc6\xe2\x1f\x2d\xb6\x71\x94\x24\x1a\xf7\xd8\x8b\x0d\x1a\x25\x3d\x8e\xa1\x1b\xc3\xc7\x8d\x92\xc5\xe2\x7f\x50\x42\x2b\x1e\xd7\x18\x89\x67\x6c\x2e\xcf\xe8\xb0\xc2\x38\xc6\x1e\x5c\xd6\x38\xb7\x3c\xf3\xb9\x47\xe3\x14\x23\xf1\x89\x8d\x7b\xc8\xe8\x60\xc2\xb8\xc4\x7e\xcc\x61\x60\x8b\x06\xee\x2a\x48\xb5\x73\xf4\x23\x27\x96\xd2\xe4\x5c\xd8\xc2\x58\x4c\x21\x16\x62\x8b\xc1\x12\x9e\x92\x57\xa7\xbb\x9b\x07\x7f\xca\xa9\x39\x70\xbb\x5c\x1f\xb2\xfa\x18\x86\x5a\x51\x05\x12\xc6\x52\x80\x99\x74\xfe\xc4\x8c\x15\xfd\xc7\xbc\x90\x9a\xa8\x83\x48\xa0\x30\x93\xad\x73\xa4\xc8\x8e\xa6\xcc\x32\x38\xb7\xaa\x49\x77\x92\x86\x2d\x06\xb9\x4c\x3f\xb1\x5d\x9e\x51\x7d\xb4\x6f\x3b\x29\x26\xab\xe7\x80\x01\x44\x9d\x44\xbb\x05\x05\x80\xfb\x59\x2e\x53\x0b\xce\x3b\xea\xbe\x96\x2e\xff\x74\x35\xfe\xce\x23\x63\x7a\x41\x3d\x37\x61\x4f\xff\xcf\xb2\x78\xc8\x24\x6d\x4e\xe8\xe5\x65\xa3\x96\x7e\x1f\xde\x61\xc3\xf5\xf2\xe1\xcf\xe0\x6d\x4f\xe4\x6e\x57\x0a\xae\x0f\xd7\xf0\x3e\x5f\x95\x5a\x16\xea\x3a\x35\x1c\x7f\x4d\x73\xbe\x48\xa4\xd8\x1b\x19\x2f\x85\x5a\xee\xd2\xdf\x79\xba\x93\x3c\xe5\x75\x5d\x8a\xaf\x84\x8a\xb9\xa9\x7b\xe0\x16\xb7\x14\x4a\x17\x65\x62\x76\x5d\xda\x80\x5f\xee\x68\x4e\x94\x1e\xc5\x0c\xbb\x52\x59\x75\x76\x6e\xc3\xf0\x3b\x7a\xf0\x32\x12\x40\x68\x9a\x15\x86\x73\xb4\x94\x99\x2d\xb0\xa7\x87\x20\x11\xa4\x2a\x2c\xae\x0b\xce\xf6\x8c\xd0\x62\xc5\x75\x41\x8b\x43\x63\x2d\x3f\x6d\xd9\x01\x1c\x4d\x66\x77\xfc\xa3\x64\xc5\x01\xe4\xc9\xd8\xa9\x5a\x83\x6d\xc1\xa5\x57\xec\x59\x6a\x7d\xcc\x3b\x99\xf2\xf5\x81\x8b\x8d\xdb\xea\xea\x88\x55\xfa\xa1\x19\xe6\x60\x59\x6c\x4a\x9e\xb2\xeb\xc6\x82\x9e\x03\xf5\xe2\xc7\x8d\x80\xbb\x68\x2a\x52\x5a\xa4\x8e\xd2\xbc\x01\x86\x26\x6a\xde\x00\xbf\xa6\x0d\xa0\x06\x6e\x82\x1d\xe6\x77\x57\x74\x7b\x2c\x39\x0d\x31\x65\xca\x42\x61\xd9\x96\xee\xb9\x2c\x1a\x25\x8b\xfa\x15\x8b\xd3\xee\x12\xd3\xf3\x05\x15\xe9\xc2\x56\x08\x9a\xb4\x59\xd6\x6b\x6e\xbe\x88\xf3\x36\xad\x49\xc7\xbe\x60\xd3\xf6\xab\x64\xcb\xd2\x32\x73\x58\x1a\xa5\x0b\xca\xc5\x60\xec\x0e\xe6\xaa\x2e\x64\xca\x6e\x02\x3d\x3b\xea\xdd\x9b\x0a\x83\x69\x5e\xaf\x46\xd6\xec\x5d\x51\x66\x4c\x05\xcb\x7c\x8c\xae\x20\x7e\x10\xf6\x39\xb6\x66\x45\xc1\xd2\x37\xa5\x91\x1e\xf7\x55\x57\x6e\x37\xa0\xd7\xda\x3f\xbf\xfd\xcc\x92\x32\x3a\x93\xe7\x27\x57\x65\x29\x2d\xbd\x7a\xe7\x3e\x07\x12\xc0\xfd\x00\xca\x53\x80\x2a\xe8\x51\x66\xce\x9c\x3e\xa9\xa8\xe6\x6a\x6d\xaf\xff\xd5\x2c\xb2\xcf\x66\x63\x2b\x90\x69\xb8\x0b\x0f\xf1\x46\x04\xaf\xea\x5f\x91\x55\x09\x1e\x40\x23\xbe\x92\xad\x34\x7a\x1b\xb5\x8b\x05\xdf\xdd\x73\x69\x14\xc2\x70\x77\xa5\x60\x44\x16\x16\x80\xe7\xeb\xbb\xd6\xdd\xb3\x38\x88\x9a\x2c\x57\x64\x27\x11\x75\x5e\xab\xb5\xf2\xb7\x74\xf3\x19\x10\xbf\xe6\x1f\x1b\x88\x66\x50\x9a\xa8\x72\x07\x25\x32\x19\xdf\x6c\x35\xa2\x6c\x18\x5f\xb2\x65\xed\x66\xa8\xbb\xb5\x63\x4c\x03\xc4\xba\x59\x31\xcb\x32\x47\x90\xa6\x03\x51\xd8\xb2\xe1\x2f\xaa\xb3\xc1\xa1\xa1\xaf\x2a\x10\x71\x97\xeb\x82\x84\xfb\x96\xfb\x8a\x30\x9d\x2c\x5f\x5e\x55\x09\x9d\x29\xcc\xc1\xea\x40\xb8\x66\x46\x4d\xc7\xa4\x1d\xd8\x16\xb2\xdc\xd8\x99\x64\x99\xeb\xb8\x5c\x37\x98\xc3\x96\x87\x4d\x53\xb3\x4d\x2f\xec\xe4\x86\x2b\xc7\xb8\x5b\xb8\xe9\x4e\x05\x98\x4c\xcd\xb1\xaa\x93\x6d\x65\x0d\x2b\x0a\xa6\x72\x29\x80\x32\xfc\xf2\xb6\x1e\xdb\xbf\x21\x7a\x6e\x89\xbe\x50\x2f\x6b\x66\xd8\xf2\xcd\xd6\xf3\x02\x75\x36\x40\xc3\x63\x35\x0f\x85\xe2\xcf\x90\xc9\x24\xdb\xb8\x3d\x61\x0b\x8a\x36\x38\xb5\x21\xdb\x34\x2b\x76\x7e\xe4\x41\xba\x36\x2a\xdf\x9d\xc8\x76\x5c\x7c\x67\xd1\xe0\x8e\xb3\xc9\x2b\xf2\x02\x58\x97\xeb\x4b\x45\xc2\x09\x7d\x8c\xd0\x5e\xc8\xfc\xe5\x92\xdc\x10\x51\x56\xb2\xe8\x69\x9d\x14\xb2\xea\xa3\xeb\x8c\xb2\x16\x12\xea\xbf\x86\xd8\xd5\x31\x45\x62\xf2\xaa\x98\xee\x84\x44\x9f\x37\x96\xfb\x6c\xf8\x98\x2c\x60\xb0\x57\x84\x2a\x25\x13\x4e\x31\xe9\xcd\x6d\xab\xb8\xac\xcd\xba\x76\x59\xce\x55\x9e\xb5\xbb\x31\x26\xd6\x18\xb9\x21\x99\xab\x7e\xde\x9e\x8a\xa6\xc0\x42\x53\x86\xe3\xc3\xd0\xb9\x54\x3e\x9a\x0e\xfd\x6e\x44\xb2\xd6\xde\x61\x0c\x76\x3f\x82\xa4\x8d\x1d\x6f\xf0\x83\x11\xfb\xce\xa8\xa8\xec\x0d\x40\x5d\xa1\xb6\x56\xdd\x1e\xd8\xe1\xca\x55\xd2\x26\x66\x8d\x69\x45\xb8\x60\x99\x33\x09\x61\x6b\x2e\x55\x14\x81\xa0\xed\x0f\x7e\x86\xa7\x70\x59\xf5\xc5\xb8\x17\x7a\x14\x1f\xeb\x0f\x84\xb2\xc0\xce\x04\x16\x49\x91\xd4\xeb\x52\x3b\x14\x63\x46\x4f\xa6\x15\xf1\xb1\xcd\x2f\xdd\x93\xe6\xe1\x63\xa3\x62\xbf\x99\x8a\x4b\x65\x99\xc0\xec\xdf\x2d\x8f\xa9\x58\x6b\x9b\x96\xc0\xad\xb0\x7d\x1d\x37\x90\x9f\xa0\x38\x95\xef\x6e\xcc\xde\xb5\xcd\x9c\x8e\xb7\xe2\x8a\xbc\x97\xda\xfc\xdf\x5b\xa8\x10\x7e\x45\xde\x48\xa6\xde\x4b\x0d\xff\x8c\x9d\x74\x42\xbe\xd7\x76\x0f\xbc\x8b\x7e\x77\xf2\x82\xd9\xf9\x78\xd2\x72\xdd\x08\x0b\xc3\x36\xd3\xeb\x6a\xcc\xc7\xef\x39\xdb\x6e\xd7\xce\xbb\xeb\x04\x00\x57\xe4\x56\x18\x95\xd8\x4d\xf3\x94\xed\x60\xfb\xe2\xba\xe8\x6b\x3b\x09\x29\x16\xb6\x88\x39\x26\xf3\x5e\xb7\x75\xfb\xf8\xb6\xaa\x0f\xdf\x5c\xff\x98\x4a\x5b\x35\xdd\xde\xee\x9e\xae\xab\xdf\x03\x7a\xf0\x5d\x13\x95\x33\x85\xf9\xab\xce\x6d\xe9\x1e\x14\x67\x2e\x36\x59\xa5\x02\xc7\x8f\xdc\x86\xf8\x7b\x88\x22\xa4\x0a\xc8\x0b\xa6\x59\x0a\x18\x4f\xe1\xe1\x5c\xf1\x1c\x05\x0e\x19\xdb\x5f\x00\x69\xe7\x19\x4d\x58\x4a\x52\xb8\x40\x98\x8e\xeb\x82\x6a\xb6\xe1\xb8\xcc\x39\xcd\xb6\x63\xc5\x86\x91\xdc\xe8\x17\xb1\xdd\x8a\x3e\xc4\x6d\x9b\xbc\xc9\xe3\x72\xcf\xd7\x2d\xae\x3e\x99\x6d\xf8\x2a\x65\xfe\x79\xcf\x9e\x11\x2f\x45\x96\x82\x6c\xbe\x14\x33\x07\xa0\x3c\x42\x69\xde\x67\xa7\x37\xba\xc2\x7e\xb3\xde\x38\xeb\x8d\xb3\xde\x38\xeb\x8d\xb3\xde\x38\xeb\x8d\xb3\xde\x38\xeb\x8d\xbd\x6d\xd6\x1b\x7d\xfb\x22\x7a\x63\xe4\x47\xac\xfd\x73\x82\x59\xf6\x67\x6b\xcf\xae\xed\xb0\xd6\xc2\x0a\x4a\x2b\xd8\xa4\xd1\x42\xaf\x6d\x90\x35\xaa\xde\xbd\xd3\x05\x3e\x81\xa9\xd7\x56\x3c\x27\x05\x15\x1b\x2c\xc9\x6f\x16\xdf\xbc\x7a\x85\xe3\x6f\x6c\x55\xdd\xba\xe1\x53\xc6\x93\x28\x6e\x5c\x34\xec\xe4\x88\x87\xed\xca\x85\x3d\x2d\x78\x7e\xc0\xb2\xda\x90\x1f\xec\x04\xde\x57\x77\x94\x56\x0e\xb3\x96\x4b\x6e\xa2\x83\xb4\xc2\x5c\xec\x98\x26\x54\xb7\x1c\x27\x7c\xc7\x70\xe7\x73\x2e\x53\x2b\xe8\x5d\xc6\x2d\xef\x09\x4e\x89\x14\xce\x5f\x26\x20\x0a\xbf\x33\x82\x38\xa7\x63\x8d\x05\x6d\x8f\x20\x61\xd4\x56\x4d\x5d\x01\xd0\x35\xec\x70\xd4\x44\xc9\x1d\x23\x36\x38\xd0\x1d\x1b\x66\x08\xcc\xaf\x0a\x79\xc1\x96\x9b\x25\x49\x4b\x57\x8c\x35\x48\xd2\xa6\x18\x7b\x69\x4f\x60\x1b\x7d\x0d\x1e\x67\x59\xc0\xff\x99\x69\xd1\xc5\x01\xb0\x83\x7b\x26\x74\x49\x33\x44\x39\x24\xb6\xe7\x89\xae\xf2\xfb\x40\x38\x05\xd7\x16\x69\x70\xca\xdc\xcd\x5d\x99\x82\x3a\xc5\x3a\xca\xbd\xcf\x1f\x35\x74\xa7\xd6\x86\x2e\x36\xf5\x27\xb3\x8f\x03\x67\x7e\xf8\x88\xcb\x9a\x3a\xb5\x50\x9e\x73\x1c\xca\xc2\xb9\x39\x8f\xbb\x1d\x63\x8f\x00\x1c\x48\x0d\x3a\x32\x43\x69\x71\xb0\xf5\xba\x63\x49\x9a\xf1\xdf\xbc\x7f\xc3\x52\x4b\xe9\x93\xcc\x65\x26\x37\x87\xe6\x5a\xd9\x60\xab\x2a\x2d\x16\x56\xed\xa3\x44\x95\x2b\x77\x7b\x32\xfc\xf5\xbe\xc3\x02\xb3\xc7\x0f\xd7\x66\xcb\x4d\x04\xc5\xd9\x72\x33\x5b\x6e\x66\xcb\xcd\x68\x9b\x2d\x37\xb3\xe5\x66\xb6\xdc\xcc\x96\x9b\xde\xf6\xcf\x6d\xb9\x99\x3d\x7e\xb3\xde\x38\xeb\x8d\x51\x6d\xd6\x1b\x43\x6d\xd6\x1b\x67\xbd\x71\xd6\x1b\x67\xbd\x71\xd6\x1b\x3b\xed\xb7\xa3\x37\x46\x7e\x04\x4f\x1e\x3b\xad\x8b\x63\x03\x3b\xca\xd3\x74\x8a\xc2\x4f\xe0\x99\x79\x42\x50\x63\x2e\xd3\x91\x98\x46\x70\x92\x8c\x8e\x25\x91\x0b\x97\x24\x0f\xdc\x35\x86\x9c\xf3\x57\x2a\xba\xb3\x3e\xa1\x2b\xf2\x5f\x52\x30\x1b\xef\x65\xc4\x84\x92\x81\xca\x5b\x50\x2b\xc2\x90\x7a\xa1\x5e\x8e\xc6\xe2\xcc\xf1\x92\x73\xbc\xe4\x1c\x2f\xf9\x5c\xe3\x25\xb7\x54\xd9\x24\x2b\xae\x82\x5c\x1d\x3e\x19\xa4\xd8\x86\x44\x34\x24\x9c\x11\xae\xff\xd6\x1b\x3d\x19\xa4\xf9\x75\xa2\x2b\xcd\x26\x70\x4c\x6a\x66\xba\xc1\x68\x76\x3e\x52\x07\x24\x61\xe9\x5d\x7b\x94\x88\x93\xcc\xda\x24\x60\x30\x14\x8a\x2f\xe4\xac\x58\x58\xd6\x96\x64\xcd\x45\xda\x33\x46\x04\x59\x37\xb3\x88\x9d\x1a\x15\x03\xd9\x1e\xde\x04\x47\x6e\xd3\x07\xdd\x3a\xb6\x7e\x4d\x11\x91\x60\x37\xf0\xaa\xc2\x74\x23\x17\x58\x1f\x20\x87\x06\x91\x7b\x28\x30\xe3\xee\xcd\x55\x55\xa3\x18\xdd\xde\xd7\xd2\x4b\xa8\xb2\x47\x15\x5e\x51\x9e\x66\x83\x99\xee\x25\x26\xdd\xc9\xe8\x92\xb2\x36\xaf\x8c\x23\x8e\x9a\x76\x93\x6b\x37\xad\xbd\x46\x43\x38\xce\x22\x29\xb6\xce\x87\xda\xd5\x1f\x67\xc1\x9b\x72\x05\xe9\xe5\x96\x27\x1b\x13\x09\xce\xa0\x18\x7f\x4b\x0d\x1b\x15\x27\x5d\xa7\xa7\x1b\x16\xc9\x13\x8c\x8b\x64\x9a\x81\x91\x74\x97\xcd\xf4\xde\x69\x40\x95\xad\x71\x02\x4d\x52\x27\x73\x3b\x81\xbd\x91\x3c\xed\x76\x3b\xdd\xee\x48\xba\xd3\x53\xb1\x49\x55\xee\x26\x9e\x49\x88\x67\xbe\x8e\xe1\xb2\x32\x44\x4e\xa2\x38\x6c\xbc\x34\x32\x60\x12\xc9\x23\x03\x26\xf0\xf5\xd3\x6c\x98\x4f\x5c\xc8\x69\xf6\x48\xd2\x5d\x46\x67\x45\xb3\xe9\xac\x62\xcd\x1e\x75\x3b\xb2\x68\x76\x2d\x94\x93\xa8\xf6\x58\x35\x5b\x66\xbf\x49\x44\x7b\x2d\x9b\x27\xe9\xeb\x80\x75\x73\x92\x31\x96\x0c\x19\x64\x5d\x97\x3f\x6d\xf9\xc4\xfd\x76\x0e\x13\x1f\x79\x9a\x99\x8f\x4c\x37\xf5\x91\xa7\xee\xa3\xa9\x26\x3f\x32\xd1\xec\x47\x26\x98\xfe\xc8\x54\xf3\x1f\x99\x6a\x02\x24\x93\xe7\x05\xd4\xc1\x77\xa3\x25\xc1\xfb\x5b\x5c\xf2\xbe\xb1\x2e\x4f\xe0\x84\x63\x8d\xd6\x15\x16\x07\x7d\x6b\x47\x73\x23\xe1\xfe\x8f\x51\x93\x60\x53\xfe\x77\xac\x2e\x43\x79\xa1\xcc\xb5\xc9\x99\xff\x1b\x94\xbc\xb5\xae\xf1\xd1\x48\xe2\xa6\x77\x5c\x75\x4a\xa6\x51\xe1\x0d\x0c\xa6\xe7\x5d\x1d\x3d\x56\x47\x7c\xdc\x4a\x65\xf5\xb9\x2a\xb9\xef\xc5\x03\x3b\x5c\x5c\x3d\x45\x6e\x1a\x22\xb7\xe2\xc2\x2a\x9e\x47\x1e\x1d\xaf\xd5\xc6\x5e\x22\x44\x76\x20\x17\x40\xe9\xa2\x07\x1d\x3c\xf1\x12\xf0\x04\x33\x7a\xd4\x4b\x55\x2d\xf5\xa9\xf0\x8b\x9a\x40\x65\x9d\xf4\xe6\x9f\xfa\xa7\x18\xff\x81\xd7\x7e\xef\x8f\x75\x57\xf2\xc2\x5b\x94\xe8\xc6\xac\x94\x7e\x19\x4e\xbb\xd5\x18\x6a\x0b\x13\x0e\xa0\x91\x1d\xa3\x42\x91\x0b\x6f\xc7\xbe\x6c\xd4\x96\x0f\xdb\xc0\x7c\x8b\x3e\x47\x26\xc9\x8c\x78\xd9\xa8\x1d\xb4\xfc\x6f\x31\x57\x93\x8e\x25\xcb\xd9\xf7\xeb\xa4\x9c\x95\xf1\x1f\x6b\x72\x31\xed\x85\xb7\xdb\xbc\x34\xf3\x2f\xa4\x6e\x90\x21\x2f\xa8\xd0\x7c\x51\x3d\x11\x41\xb6\xb2\xe6\x80\xc9\xb1\x19\x86\xd5\xe6\xa0\x58\xb3\x48\x33\x41\x79\xcd\xc3\x57\xae\x4c\xc3\xa4\x19\xe0\x8a\xf8\xba\xd6\x54\x55\xf5\x62\xa5\xf0\x66\x78\x2b\xee\xc6\x6b\xf6\x1c\x37\x67\x56\xb4\x97\x45\x98\x0d\x40\xa7\xd4\xeb\x1e\x91\x21\xcd\x37\xb8\x3b\xca\x35\xe4\xf1\x86\xae\x49\xe1\xb6\xb3\xf9\x8b\xb7\x98\xc3\xcc\x46\xcd\x00\xac\x11\xaf\xc6\xbe\x24\x6f\x61\x1b\x36\x3b\xcb\xa1\x9a\x5b\x04\x4d\x5f\x56\x3e\x72\x13\x45\xec\xbc\x38\x7d\x6b\xd1\x1c\xce\x39\x1c\x99\x93\x43\x17\x1f\xcf\x14\xba\xd8\x31\xf1\xfe\x53\x45\x2e\x46\x1a\xef\xe7\xf0\xc5\xb1\x36\x87\x2f\x46\x86\x2f\xa2\xc6\x6f\x4f\x06\x74\x1c\x63\x90\x66\x1d\xe7\x38\x1a\xc7\x48\x7e\x76\xd5\xdd\x11\xc6\x2f\xb3\xd4\xbb\x32\xd3\x3c\xaf\x41\x4a\xca\x76\x35\xb3\xc6\x8d\xb5\x73\x91\xb7\x24\x0f\xc6\x43\x09\x7e\xdf\xce\x36\x85\xef\x01\x88\x49\xc1\x09\x76\x65\xdd\xc4\x74\xa4\x72\x55\x45\x11\xe2\x17\xbd\x55\xc4\xfa\xea\x47\x4b\x43\xda\x36\xc5\x85\xf8\x06\x74\x05\x55\xfb\x78\xe0\xf4\x7c\x61\x94\x91\xcc\xb0\x99\x51\x16\xbc\xec\x46\x88\xc1\x63\x9d\xda\xda\x3e\xf7\xcc\x3b\x72\x37\x7c\xcf\x44\xad\xec\xbc\x50\x2f\x31\x8a\x98\xb3\x33\x8f\x28\x89\x6d\xd5\x0f\xe5\x89\x1c\x53\x0e\xe1\xd4\x9a\xa4\x88\x45\x28\x60\x4e\xc9\x41\x10\xed\x28\x5e\x7f\x69\x9c\xfe\xff\xd1\x70\x7e\x57\x0a\x15\xd2\x13\xdb\x50\xb9\x60\x62\x2b\xa5\xab\x66\x85\x5a\x91\x3a\xb1\xcf\x76\x82\xb3\xf2\x7c\x8e\xca\x89\x4e\xca\xaf\x16\xc2\x3a\xec\x98\x24\x32\x06\x1f\x1a\x72\x4a\x4e\x8d\x6d\x98\x60\x8b\x78\x6a\x50\xc3\x89\x1c\x91\x73\x54\xc3\xc0\x17\x9f\xe4\x27\xee\x73\x38\xc2\x1c\x4c\x72\xbe\xfe\xea\x83\x1b\x7a\x1c\x8c\xde\x59\x18\x3d\x21\xbd\xce\xc5\x23\x47\xe1\x64\x67\xaa\xea\x8f\x72\x08\x16\xec\xeb\x6b\x4f\x71\x2a\x7e\xcd\xe0\x86\x63\x47\x62\xed\x14\x9c\xe8\xdc\x3c\x72\xcc\x75\x1d\x82\x93\x36\x46\x20\xcc\x21\x9a\x66\x4f\x1f\xbf\x54\x98\xc3\x24\x27\xe0\x8c\xf1\x9f\x31\xfe\x93\x63\x43\x63\x1d\x7b\x4f\x75\xea\x4d\x5a\xe5\x33\x3a\xf3\xce\xe6\xc8\x3b\xb3\x13\x0f\xe7\xc0\x23\x51\xe2\x04\xe1\xbc\x03\x77\x5c\x0c\xc9\x53\x3a\xee\xa2\xf7\x45\xe4\x0b\xb1\xce\xba\xb3\x39\xea\xce\xe3\xa4\x3b\x87\x83\x2e\x4a\xd6\x47\xef\xfd\x38\x99\x16\xed\x90\xc3\x3b\xe3\x1a\x76\x16\xe4\x58\x83\x8e\xb8\xb6\x7b\x2d\x46\x64\xf7\x3a\xe1\x8e\x5c\x6b\xd1\x0e\xea\x63\xbb\x4f\xbf\x55\x07\x3b\x01\x23\xb6\x9f\x8e\x65\x27\xde\xe1\xda\x67\xfd\x69\xdb\x76\x90\x34\x7b\x9c\x6e\x08\x57\x1a\xd6\xbe\x02\x0e\xb7\x38\x37\x5a\xd4\x1e\x89\xf1\xa7\xc4\x74\xff\xe4\x2e\x12\x74\xd8\x9d\xd0\xfc\xa9\xa1\x77\xcd\x5d\x76\x14\x7f\x37\x3a\x1a\xeb\x01\xa0\x7b\xc9\x53\x92\x97\x5a\xdb\x8d\x86\x88\xc1\x1b\xa5\xea\xe2\xf3\xe6\x18\xbc\xe3\x18\xbc\xd6\x52\x35\x22\xb3\x82\x34\x07\xdc\x42\xc3\x81\x78\xe1\x5e\x36\x03\xf5\x30\x81\x78\x41\x8a\x47\x81\x7a\xc8\x40\xbc\xf0\xe0\xdb\x81\x7a\xe1\x40\xbc\x20\xc5\xa3\x40\xbd\x50\x20\x1e\x5a\x32\x75\x59\x73\x78\xcd\xc3\x34\x83\xd1\x7a\xbd\xd1\x78\xb8\xc1\x8f\x45\xeb\x1d\x47\xe3\xe1\xd6\x7e\x38\x5a\x2f\x10\x8d\x87\x60\xd6\x67\x53\xeb\x70\x8e\xc6\xf3\x4f\xcf\xd1\x78\x64\x8e\xc6\x73\x6d\x8e\xc6\xc3\xb6\x39\x1a\x6f\x8e\xc6\x9b\xa3\xf1\xa0\xcd\xd1\x78\x73\x34\xde\x40\x9b\xa3\xf1\xe6\x68\xbc\x39\x1a\x0f\xdb\xe6\x68\xbc\x9e\x36\x47\xe3\xcd\xd1\x78\x73\x34\xde\x1c\x8d\x37\x47\xe3\xd5\x6d\x8e\xc6\x9b\xa3\xf1\xe6\x68\xbc\xaa\xcd\xd1\x78\xdd\x36\x47\xe3\x41\x9b\xa3\xf1\x3a\xd1\x78\x2d\x27\xd6\xaf\x37\x24\xaf\x39\x0c\x2c\xbb\xcc\x71\x79\x73\x5c\xde\x1c\x97\x37\xc7\xe5\xcd\x71\x79\x73\x5c\xde\x1c\x97\x57\xb5\x39\x2e\x6f\x8e\xcb\x9b\xe3\xf2\xe6\xb8\xbc\x40\x9b\xe3\xf2\xe6\xb8\xbc\x39\x2e\x6f\xbc\xcd\x71\x79\x73\x5c\xde\x1c\x97\xd7\x68\x73\x5c\xde\x1c\x97\x37\xc7\xe5\xcd\x71\x79\x73\x5c\xde\x1c\x97\xf7\xc5\xe3\xf2\x82\x8f\xd0\x62\x33\x28\x69\x5a\x3b\xf9\xf2\xa6\xd8\x94\xf6\x90\x71\xe6\x57\x26\x74\x71\x00\xd3\xbf\x3d\x88\x52\x99\x3c\xb0\x82\xf0\x1d\xdd\xb0\xcb\x91\xdb\xe7\xeb\x1f\xde\x98\x45\x2c\x95\xd9\x0b\x2e\x7c\xc7\x2d\x6a\x5e\xc8\x3d\x4f\x59\x6a\x6e\x9a\x05\xa7\xab\xcc\x1c\x6f\x6b\x56\x30\x61\x4e\x80\x7f\x79\xf1\xd3\xcd\xc7\x5f\xde\xdf\xfc\xf0\x76\x58\x5e\x98\x03\x90\x7d\xce\xa9\x48\x59\x4a\x4a\xe5\x77\xb5\x3b\x69\x59\x71\x79\xa9\x08\x13\x7b\x5e\x48\x61\x06\x03\x77\x27\x4a\xf6\xee\x6b\x83\x64\x13\x2a\x9c\x5b\xa6\x60\x4a\x66\x7b\x96\x5a\x95\xa0\xea\x9d\x97\x14\x5c\xe4\xa5\xf6\x70\xcf\x47\x3e\x62\xa1\x5f\x31\x52\x8a\x64\x4b\xc5\xc6\x8c\xd7\x4c\x60\x63\x7c\x44\x1d\x84\xa6\x9f\xcd\x77\xe1\x22\xa3\x12\x9a\x7b\x4f\xe8\xb0\xc9\x28\x95\xa5\x99\xb2\x7f\xf9\x97\x2b\xc2\xd9\xb7\xe4\x5f\x1a\x04\x97\xe4\xad\xa3\xd1\x98\x50\xeb\x6e\x62\xfb\x11\x77\xe3\xaa\x9e\xce\x2b\x52\xb0\x0d\x2d\xd2\x8c\x29\x70\x70\x3c\x6e\x19\x04\x45\x5a\xb5\xc6\x2d\x17\xf3\x77\xba\x41\x8a\x42\xea\x25\x79\x5d\xcd\xa7\xf5\xf3\xa4\x4b\xf2\x83\x04\x27\xc7\x5a\x7e\x4b\xb6\x5a\xe7\xea\xdb\xeb\xeb\x87\x72\xc5\x0a\xc1\x34\x53\x4b\x2e\xaf\x53\x99\xa8\x6b\x4d\xd5\x83\xba\xe6\xc2\x30\xf4\x22\xa5\x9a\x2e\xe0\x10\x4f\xc0\x6e\x71\x6d\xe5\xea\x22\x91\xbb\x1d\x15\xe9\x82\x3a\x96\x5d\x54\xcb\x7f\xfd\x3b\x27\x7f\x16\xb4\x7a\x8a\x8b\x05\x5d\xa8\x2d\xcb\xb2\xcb\x81\x4e\x07\xce\x63\x84\x74\x09\x6d\x68\x26\xf6\xa8\x5d\xf8\xce\x55\x73\x6f\xb0\x70\x35\xf7\xb0\x31\x15\xd3\x9e\x15\xab\x41\x0f\xcb\xc8\xe3\x65\x98\x36\x03\xad\x3e\xbe\x15\xfb\x9f\x68\xdb\x1e\x25\x7a\x3b\x4c\xdc\x03\x23\x22\x8e\x9b\xf3\xee\x75\x78\x20\x38\x63\xa4\x39\x96\xc7\xa5\x7a\x6b\x20\xef\xe9\xae\x0e\x20\xed\xe9\xff\x92\xfc\x60\x0d\x0d\x01\x69\x4e\xc9\xeb\x5f\x6e\xdf\xbc\x7d\xff\xe9\xf6\xbb\xdb\xb7\x1f\xc7\x4f\x2c\xe4\x49\x05\xe7\x7e\xc4\x50\x2e\x03\xf2\xb4\x25\x37\x03\xc3\xa9\xa5\x6a\x5e\xb0\x3d\x97\x65\xad\xcf\xf4\xb3\x25\x17\xa1\xe3\xae\xc9\xad\xce\xbe\x7d\x20\x8a\x15\x7b\x9e\xf4\x4f\x7d\xd0\x52\xdd\x12\xeb\x68\xf1\x1d\xf2\x8a\x76\x85\x3b\x4a\x88\x07\x88\xf6\x8a\x78\x94\x28\x0f\x10\xee\x15\xf4\x08\x81\x8e\x58\xac\x63\x71\x6f\xc5\xfa\x1b\xb6\xa6\x65\x66\x55\x84\x8b\x8b\xe5\x90\x3c\x75\x84\x22\x58\xfd\xbb\x42\x06\x82\x32\x5b\xec\x7e\x6f\x03\x9e\xd7\xb2\x18\xdc\xbc\x97\xce\x07\x13\x62\xa4\x86\x88\x74\x0a\x8b\xd5\xb9\x9d\xc6\x82\xb0\x86\xe2\x1d\x25\x89\x14\x6b\xbe\xf9\x81\xe6\x7f\x63\x87\x8f\x6c\x1d\xe9\x7f\xb7\x97\x16\x67\xfd\x07\xf5\xdd\x48\x4e\x4b\x30\xac\x26\xc7\xb9\x73\xd0\x4e\x9c\xa3\x70\x63\x0b\xfb\x73\xf7\x82\x33\x68\xef\x18\x29\xdf\xdb\xb9\xcb\xa6\xb8\x77\x7b\x47\x37\xd5\x12\xe4\xfd\x64\x44\x79\x49\xa4\x48\x58\xae\xd5\xb5\xdc\x1b\xd9\xc6\x1e\xaf\x1f\x65\xf1\x60\xb4\x11\xb3\xeb\x17\x56\x4d\x57\xd7\x70\x7b\xbc\xfe\x1d\xfc\x1f\xf2\xa3\x9f\x3e\xbc\xf9\xf0\x2d\xb9\x49\x53\x97\xa8\xa2\x54\x6c\x5d\x66\x2e\x06\x7b\x49\x68\xce\x7f\x62\x85\xe2\x52\x5c\x91\x07\x2e\x52\xac\x4d\xac\xe4\xe9\xff\x3d\xbe\x89\x7d\x8b\x5c\x23\x99\x5b\x73\xe7\x84\x75\xba\x87\xbb\xf8\xa1\xa5\x7e\x56\x7c\x8e\xc3\x6b\x10\xd0\x68\x14\xf0\xa2\xf7\x15\xb8\x23\x2c\x62\xb0\x2b\x29\x33\x46\x43\x67\x5b\xdc\x7d\x12\x73\x6f\x8f\xb8\x47\xc2\xfa\xc7\x4b\x92\xcb\x5a\x94\x58\x3b\xa8\xdb\x15\xb9\x4c\xbf\x25\xaa\xcc\x73\x59\xa0\x5c\xf8\x3b\xa6\xa9\xd1\xd1\x97\x86\x95\xaf\xda\xff\x04\xf3\x48\xe3\x6f\x60\xbc\x40\x19\x6b\xab\x57\x40\x32\x5b\x87\xe5\x15\x98\x68\x96\x42\xa6\xec\x3d\x7c\x0b\xfe\xe9\x34\x88\x9b\x24\x91\xa5\xd0\xf0\x03\x82\xbe\xd2\x54\x97\x6a\xb9\x95\x4a\xdf\xde\x5d\xf9\x7f\xe6\x32\xbd\xbd\x0b\x9c\x68\x24\x5a\x8e\xd6\x1b\x73\xc2\x4e\x70\x6f\x36\x13\x80\xec\x28\xfc\xe7\x77\x66\xd5\xee\xa8\xc6\x1a\x6c\xb8\x22\x8f\x05\xd7\x9a\x09\x50\x84\x00\x33\x26\xd7\x57\x66\x53\xd4\xe7\xf9\xfe\x9b\x8b\xb3\xc8\xeb\xb5\xef\xec\x84\x29\x30\xaf\xf9\xf1\x5b\x56\xad\xce\x16\x9c\x4a\xe7\x5b\x0d\x89\xbc\xb9\xbb\x25\x7b\x3b\xb3\x5f\xd9\xb8\xb4\x46\xaf\x62\x84\x48\xf0\x78\xa6\xef\x9e\x2c\x1a\xaa\xbc\x32\x6e\xfe\x2b\x0d\x1e\xb3\x8e\x10\x8a\x54\x61\xab\x48\xc6\x77\xdc\x05\x0e\xbb\x2c\x35\x8a\xbc\xb0\x7f\x5c\x26\x79\x89\xd9\xb6\xee\xe9\x1d\xdb\xc9\xe2\x70\xe5\xff\xc9\xf2\x2d\xdb\xb1\x82\x66\x0b\xa5\x65\x41\x37\xec\xaa\xfa\x00\x96\x70\xf5\xbc\x25\xdd\xea\xe4\x31\x7d\x8c\x29\xdb\x5c\xb6\x92\xb2\x30\x0a\x46\x76\xf0\x02\x95\xa5\x27\x97\x2e\xd5\x8a\xbc\x9f\xa8\x12\x55\x37\x6f\xab\x54\x55\xdc\x0b\x9a\xf5\x5e\x66\xe5\x0e\x8f\x8b\xf3\x47\xbe\x4d\x76\x24\xf6\x46\x13\x57\x67\x51\x2e\x52\xbe\xe7\x6a\x12\x10\xf0\xbe\xf2\x31\x81\xbf\xaf\xd4\xe6\xbe\x67\x91\xfc\x78\x80\xa5\x69\xec\x73\x2e\x15\x18\xdb\x3c\x7a\xb0\x2d\x4b\xbf\xc1\x39\x82\x22\x07\xee\xbf\x36\x65\xa9\x7d\xfe\x9a\x6f\xeb\x7d\x5d\x89\xd2\x33\xac\x52\x8c\x1c\xf4\x1d\x3a\xa5\x18\x54\x2c\x29\x98\x3e\xd5\x3d\xcb\x52\xf3\x86\x37\xf0\xf9\xc5\x78\x46\x9f\xd5\xe5\xac\x72\xdc\xc0\x90\xea\xe3\x74\x5d\xc8\xdd\x92\x80\xc9\x0b\xb9\x09\x56\x0c\x6c\x30\x19\x4f\x3d\xb5\x07\x86\x44\x0e\xcd\x57\xbe\x60\xfb\x27\xbf\xf2\xdd\x5b\x8e\x92\x85\xb9\xc9\x21\xc7\xf6\x1b\xbf\xef\xa1\x1e\x0c\xf7\x6e\x01\xdb\x29\xe0\xed\x40\x78\x1d\x87\xbd\x1d\xe0\x22\xbc\x2b\xb3\xcc\x2e\x22\xce\x01\x79\xdb\x79\xc9\x61\x28\x2b\xb5\xc2\x21\xd6\x1b\x66\xcf\xe1\x21\x48\x27\x90\x54\x3b\x31\xa8\x97\xc7\xe6\x81\x52\x59\xfb\x61\x5e\x66\x2e\xf5\xe1\x61\x0c\x0f\x0f\xbe\x3f\xd3\x43\xe7\xd8\xf4\x81\x55\x77\x32\x35\xdc\x0b\x7e\xc6\xea\x8e\x01\xc6\x67\xe5\x65\xec\x70\x3f\xbd\x89\x39\xa7\xca\xd0\xd4\x92\x70\x61\x94\x9b\xb4\xa4\x19\x74\x0c\xdc\xad\xb9\xc5\x3e\xd9\x8b\xb0\xb7\x79\x0e\x07\xf9\xd9\xb1\x9d\xc2\xd1\xf3\x4e\x26\x34\xfb\x00\x8c\xf0\xb1\x32\xa4\x57\x98\x26\x26\x20\x9b\xa3\x91\xa3\x46\x7f\xe2\x72\x6c\xe7\x68\x49\x32\xa6\xc9\x41\x96\xc4\xc2\x24\xda\xe6\xf9\xd4\xf1\x1b\xe1\x42\xf1\x94\x55\x4b\x16\xf0\xf5\xc0\x62\x7e\x61\xa7\x51\xf0\x4c\xf9\xb2\xa7\x45\xec\x29\x81\x90\xff\x28\xb9\x7f\x0a\x29\x21\xb8\xae\x2e\x20\x48\x90\x82\xf7\x8f\x9a\x77\x39\xcd\xf8\x7f\x01\xe3\xd5\x17\x21\x45\x56\x2c\x93\x62\x03\x1e\xac\xe1\xd0\x41\xa7\xc5\x2d\xc9\xad\xe0\xba\xf9\xb6\x75\x93\xb1\xa4\x04\x20\x8f\x20\xb2\x48\x59\x41\xf2\x82\x4b\xc8\xad\x5b\x3f\x39\x48\x7a\xc5\xcc\xb7\x95\xa6\x70\xe3\x03\x3f\x95\x38\x40\x7f\x1b\x2e\xb0\x35\xe5\x99\x8b\x27\x84\xec\xc5\xca\xfc\x66\x38\x7f\x2c\x47\xa6\x96\x64\x4b\xf7\x0c\x5e\x66\x36\x17\x2a\x57\x64\x4b\x45\x0a\xff\x4c\x12\x59\xa4\x76\xdc\x60\xfc\x2c\x18\x74\xe2\x4e\x66\x3c\x19\xd1\xca\x8c\x5a\x68\x18\x0d\x04\x0b\x15\xdd\x9e\x82\xe7\xa7\xd8\xd1\xac\xf1\xb7\x5d\xc0\x2b\x5a\x0a\xfe\x8f\x92\x11\xba\x93\x46\xae\x66\x8d\x57\xd5\xf1\x8c\xfb\x60\x4f\x33\xb4\x41\x8a\xef\xf8\x9a\x25\x87\x24\x63\x84\x26\xce\x1e\xf8\x91\xd1\x94\x0b\xa6\x94\xd9\xe6\x2b\x73\x01\x93\x05\x79\xc7\xf7\xac\xf1\xb7\xf1\xb4\x89\xfe\xda\xf1\xb1\x09\xb0\x04\x54\x54\x77\x12\x20\x61\x2b\x7d\x00\xeb\x99\x96\x30\xd5\xe5\x88\x5b\xdb\x01\xc9\x1b\x51\xc2\xab\x03\x64\x44\xf5\x7e\x55\x9f\x0c\xd6\x59\x19\xae\xc1\x96\x61\x16\x60\x90\x24\x44\x8d\xd6\x17\xb7\x43\xce\x2a\xc8\xa9\x68\x38\x6c\x77\xf4\xb3\x19\x01\x48\x27\xaa\x03\x49\x1c\x9c\xf3\xcc\x25\x2c\xb6\xf1\xc7\xed\x95\x56\x4b\xf2\xce\x19\x6e\x0a\xe6\xd0\x94\xe9\xd8\xbe\xe2\x9d\xc5\x05\xf7\xbe\xe2\x3b\x9e\x51\xc3\xf4\x6a\xcb\xa5\x38\x66\x01\xeb\xbd\x1d\x24\x5a\x5b\x52\x56\x3e\xd5\x2c\x84\xc3\xec\xe4\xde\xec\xb0\x51\xa8\xc9\x20\x51\x8c\x90\x36\xb2\x39\x93\x34\x55\xd7\xb9\x4c\xd5\xb5\x19\x5c\x8d\x34\x51\xd7\x13\xd1\x24\x9d\x58\x34\x87\xa0\x6e\xa0\x5c\x1a\x8c\x07\xab\x68\x0e\xcd\x47\x3a\x0a\xa3\xd0\x92\x14\xa5\x00\xdf\x32\x4c\xb9\x91\x6d\x4f\x3c\x16\xc7\x80\x63\x3d\x03\xc1\xc2\xc7\x02\xc7\x99\x07\x97\xc5\x81\xc8\x82\x26\xd1\x20\x24\x62\x00\x4a\x16\x20\x3c\x0c\x34\x0b\x23\x12\x42\x13\x31\x00\x37\x1b\x47\x24\x84\x8c\x22\x23\xa0\xb3\x51\x44\x42\x80\xee\x28\xf4\x6c\x08\x91\x10\xa0\x19\x04\xa0\x0d\x01\xcd\x02\x74\x9f\x31\x0c\xcd\x36\x14\x38\x1c\x7d\x37\xc7\x21\x4d\x5d\x1f\x63\xf6\xfb\xdb\x6a\x7b\x5b\xea\x4b\xf2\x5e\xea\x5a\x77\xf2\xa2\x28\xc4\x91\x66\x3e\x7a\xe1\xa5\xe4\xed\xfb\x4f\x1f\xff\x7e\xf7\xe1\xf6\xfd\xa7\xae\x20\x08\x6d\x9d\x48\xac\x29\x22\x31\xea\x19\x10\xa7\xb6\x4d\xc2\x9d\x06\x68\xa2\x81\x4b\x1d\x41\x10\x24\x8b\x06\x2e\x61\xee\xe8\x8d\xbe\x62\x81\x4b\x2d\x41\x10\x5c\xb1\x80\x98\x98\x05\x41\xef\xb4\x0d\xe3\x54\x6d\x9b\x8a\x56\x0d\xed\x83\x0a\x02\x1a\x2b\xd1\x51\xb3\x34\x0d\xbf\x8a\x30\xdb\x03\x01\x34\x8a\xd5\xbf\x85\x37\xf6\x63\x0d\xdf\x13\x70\xad\x28\xcb\x28\x98\xf8\xf1\xe8\x56\xdb\xa2\x0c\xc7\x08\xa4\x6b\xcf\x10\x31\x78\x57\xd4\x00\x7b\x24\xfb\x18\xea\x15\x45\xb3\x89\x8c\xc5\x63\x5f\xe3\x48\x23\xf5\x4d\x14\xd1\x70\x90\x43\xfb\x38\x41\x11\x8d\x09\x78\x70\x87\x0a\x8a\x6e\x54\xf0\x03\x8a\xe2\x39\x8e\x1f\xdb\x9e\x82\x9e\xb5\x2d\x7e\x2b\x85\x91\xb4\xb6\xc5\xe3\x69\x91\x0c\x9a\x95\x6c\x79\x02\x54\xad\x6d\xb1\x49\x48\xa2\x11\xb6\xb6\x9d\x10\x67\x3b\xad\xdf\x24\x3e\x71\xca\x29\x90\xb7\xb6\x4d\x8a\x2e\xc7\xbb\x64\x7b\xba\x3b\x62\x44\x8f\x20\x49\xbe\x86\xc1\xbd\xdd\xf0\xe6\xf7\x28\xb2\x58\x53\x7d\xbb\x4d\x5a\xc7\x38\xb7\xad\x6d\x78\xbc\x6e\xd4\xa8\xad\xaf\x77\xb2\x17\xd7\xb6\x38\x5f\xae\x6d\xb1\x39\x2d\x62\xf2\x59\x44\x87\xdf\xe3\x31\xbd\xb6\x9d\x05\xd9\x6b\xdb\x79\xf0\xbd\x1d\xda\x67\x42\xf9\xda\xf6\x34\xac\xaf\x6d\x53\x64\x79\x2c\xee\xd7\xb6\x33\xa1\x7f\x6d\x3b\x2d\x06\xd8\xb6\x49\x12\x27\x12\x0f\x6c\x1b\x16\x15\x1c\x79\x7c\x74\x52\x6c\x47\x63\x83\x6d\x9b\x30\x0d\xf1\x22\x07\x8f\x16\x6e\x76\x2a\x42\xf0\xc4\x23\x87\x6d\x3b\x0b\x7e\xd8\xb6\xd3\xa3\x88\x6d\x3b\x1b\x96\xd8\xb6\xd3\x23\x8a\x6d\x9b\x8e\x2b\xb6\x6d\x8a\x24\x9b\x80\x31\xb6\x0d\x8f\x34\x8e\xda\xb3\x1e\x95\xfc\x14\xbc\xb1\x6d\xd3\x92\x2a\xc5\x60\x8f\xdd\x2b\x48\x04\x72\x9c\xae\x54\xd5\xbd\x1d\xc1\x21\x47\x51\xc4\x62\x96\x6d\x9b\x34\x79\x71\xf8\x65\xdb\x4e\x8d\x62\x9e\xdc\xfd\x78\x89\x8d\xc6\x35\x37\xfb\x14\x21\xb0\xe3\x30\xce\xb6\x45\x21\x9d\xd1\x13\xda\xc9\x82\xf4\xcc\x2f\xc9\x03\x08\xe8\xa8\xdd\xd2\x40\x4b\x3f\x05\x07\x6d\xdb\x7c\x01\x9f\x2f\xe0\xa7\xbd\x80\x5b\x0c\xed\x7c\xfb\x8e\x94\xa9\x51\x71\x76\xb8\x5e\x07\xd0\xd6\x91\xdf\x45\x7b\xf1\x22\x13\x2a\x78\x4f\x9e\xd7\xb4\xb5\x24\xb9\xcc\xcb\x8c\xea\x81\xfc\x1c\x21\x1f\x7c\x37\x45\x8d\x17\xbe\xb5\x57\xa5\x02\x2b\xb9\x73\x7c\x17\xf6\x49\x1d\x7b\xa3\xc8\x4d\x96\x11\x2e\xac\xf0\x05\xf2\xde\x5d\x51\x30\xab\x1c\x07\x48\x52\xeb\xfd\xdb\x9b\xc1\x3d\xba\x02\x11\x0d\x7f\x0d\x57\x16\xca\x09\x19\xcd\xa0\x80\x04\x45\x70\x9f\xb3\xfb\x73\x51\x17\x91\xa8\xd4\xb3\x2a\x49\x64\xb7\x02\x4e\x88\x45\x20\x01\x9c\xd2\x7e\xba\x60\x9c\x9a\x3e\x80\xbf\x2a\x61\x29\x13\x09\x83\x04\xce\x25\x53\xc8\x8d\xbb\x32\x37\x13\xf2\x56\xec\x2b\x37\x4c\x69\x5d\xdb\xf6\x98\xec\xfd\x42\x80\xe4\x97\x70\xde\x1a\xd6\x76\x0e\x8b\x86\x0f\x17\x4e\x74\x7f\xdf\x0c\x6e\xf5\x2a\xf3\x75\x65\xa9\x0c\x71\x74\x8c\xb2\x52\x79\x21\x90\x8a\xd9\x91\x96\x52\xe7\x3b\x68\xc7\x67\x9d\xc1\x63\x12\xa3\x46\x9c\x25\xb8\xea\x2b\x85\x57\x9d\x45\x75\x88\x57\x1b\xa2\x55\x86\x58\x75\x21\x22\xb7\x06\x42\x02\xd7\x2d\x5a\x3d\x88\x55\x0d\xa2\x8e\xee\xbc\x60\x6b\xfe\x39\x7a\xaf\xdd\x34\xe2\x8b\x78\xca\x84\x36\x57\x73\x40\xfa\xe7\x05\xcb\x99\x18\x05\x3b\x37\x1b\xe0\xb3\xa1\x72\x81\x68\x4f\xea\xb2\x71\x45\x38\x2b\x8e\xc2\xde\x3c\xa6\x0a\x9c\xfb\xbe\x68\xd0\x59\xda\xcc\xd2\xe6\xd4\xd2\xc6\x31\xda\xaf\x56\xd4\x9c\x58\x53\x07\xb4\x6b\x0c\xec\xf6\x4d\x03\x25\x0b\xbb\x29\x3a\xf4\xac\x11\xc1\x60\x03\x1a\x03\x23\xfe\x54\xd7\x8f\xe3\xaa\x16\x97\x5a\xda\x14\xbd\x36\x98\xa5\x20\x19\xdb\xb3\xcc\x69\x3e\x01\x8a\x3b\x2a\xe8\xc6\xe6\x73\xd7\xd2\xdb\x2b\xcd\xfd\xd3\x6c\xbb\x82\xa7\x2d\x05\xdc\xc6\x5c\x06\x53\x0c\xfa\x58\x0d\x78\xb5\x90\x59\xc6\x0a\x45\x32\xfe\xc0\xc8\x1b\x96\x67\xf2\xe0\xd2\xa7\x8b\x94\xdc\x6b\xaa\xcd\xd6\xbb\x67\x5a\x9d\x26\x83\x5d\x15\xee\x6a\x63\xad\x62\x96\x13\x82\x5e\x21\xd4\x93\xe4\x36\x50\x8b\x7c\x10\x20\xe7\x6e\xb2\x47\x7a\x50\x57\xe4\x3d\xdb\xb3\x22\x24\x13\x6e\xd7\xef\xa5\xbe\xb3\xaa\x70\x1b\x67\x64\xc9\x10\xbe\x26\xdf\x42\x01\x21\x4d\x34\xdd\xc0\xb5\xa6\x0a\x56\x0d\xd0\x96\x45\x8b\xbc\x15\x5f\x8f\x5c\xb1\xa9\xa1\x37\xb6\x4d\x62\xd5\xdf\xc1\x77\x8c\x40\xb6\xff\x3e\xc9\xf2\x65\x3e\xb8\x2c\x62\xe1\x6e\x6c\x18\x9a\x2f\x36\xc7\x9a\x3c\xed\x8a\x19\xda\x8c\xe8\x21\x71\x62\xae\x57\x5c\x10\x5b\x43\xd0\x16\x67\xac\x99\xbf\xea\x99\xbd\xa0\x2a\x3f\xe3\xe1\x6b\x32\xea\xf6\x85\x3f\xbc\x73\xa9\xf4\xbd\xb9\x07\xc7\x66\x13\xba\xf3\x2f\x42\x8c\x23\xcd\x32\x96\x12\xbe\xdb\xb1\xd4\xdc\x7b\xb3\x03\xa1\x6b\x8d\xa8\x85\x6a\xee\x6b\xad\x3b\x79\x52\x30\xea\xc3\x2b\x21\xa0\x0e\x82\x20\x9b\x71\x95\x08\x9a\x2d\x8a\x9a\x15\x3b\x2e\xe0\x32\x6e\xbd\x75\x2e\x82\xb3\x8e\xab\xc4\x9c\x23\xad\xc8\xcb\x7a\x47\xc3\xe9\xd7\xe0\x90\xae\x43\x14\x41\x7a\x95\xc9\xe4\x41\x91\x52\x68\x9e\xd9\x21\x4b\xf9\x40\x12\xb9\xcb\x33\xd8\x3b\x4f\x38\x05\xaa\xff\x5c\x54\xfc\xb6\x30\xd4\xd5\xf5\xef\xea\x9f\xe0\x0f\xa7\xce\x5f\xc4\x3e\xb3\x64\x42\xba\x08\x23\x21\xcd\x22\x81\x77\x58\x8a\x4a\x2d\x5c\x4b\x73\x20\xe1\x6d\xaf\x75\xcd\x82\x4a\x18\x2e\xc9\xdb\xcf\x2c\x69\xd4\xa2\x80\x4a\xac\x49\x20\xba\xbd\xd9\xb4\x84\x4d\x7d\xae\xa2\x80\xa8\x48\x9d\x66\x6b\xcd\xdc\x6b\xfb\xb6\xaf\xaf\xe6\x88\x91\x8c\x0b\x16\xe7\x2e\x74\x71\x3e\xcd\x78\xfd\x8a\x57\xac\x8d\xcb\x69\xce\x31\x46\x6d\x5e\x40\x51\x86\x43\x85\x43\xf5\xfd\x83\xba\x02\x52\x6a\xf2\xe2\xf2\xfa\x32\xa6\x2c\x7b\xd7\x0c\x79\x69\x34\x99\x8c\x59\x09\x6d\x6d\x92\xee\x1b\x31\x44\x15\x51\x7c\x97\x67\x07\x98\x85\xcb\xf4\x8a\x70\xed\x81\xad\x45\x29\xfc\x9c\xc4\x54\xfe\x83\x68\x90\x2b\xa2\x24\xd1\x05\xf5\xa5\x82\xec\x5f\x0d\x39\x5d\x94\xf6\xbc\x89\x20\xf9\xe2\xf2\xff\xbb\xbc\x22\x4c\x27\x2f\xc9\xa3\x14\x97\x1a\x16\x64\x49\x3e\xd9\xcc\x17\xd4\x7f\xf2\x20\xcb\x08\xa2\x82\xd9\x34\x15\xec\x73\x9e\xf1\x84\xeb\xec\x00\x42\x9d\xc8\x52\xdb\xb0\x4f\xaa\x5d\x48\x57\x04\xd1\xb7\x9f\xb9\x76\xc8\x2c\xb3\x93\x5f\x01\x77\x5a\x01\x4f\xa8\x51\xe2\xf6\xec\x7a\xcb\x68\xa6\xb7\x31\x35\x74\x0c\xdf\x08\x29\x16\xff\xc5\x0a\x09\x01\x64\xc2\xd1\x38\x63\x99\xc9\x49\xfe\x9f\xd8\x12\x54\x91\x2e\x0d\x73\x18\x7c\xcf\xa6\x14\x6a\xff\xcf\x4f\x9f\xee\xbe\x67\xba\x23\x0c\x0d\x3d\x0f\x66\xc1\x8b\xc4\x9c\x15\x6b\x59\xec\xce\x25\x15\xb7\x52\x21\x47\x48\x8e\x46\x29\x95\xb6\x09\x10\xac\xea\x25\x58\x62\x78\xb9\xc6\x51\xc4\xac\xbf\xac\x52\x3a\xdc\xde\x2d\xc9\xdf\x65\x09\x89\x08\xe8\x2a\x3b\x40\x04\xb7\x0b\x89\x8a\xa0\x78\x61\xba\x77\x61\xe4\x98\x99\xf7\xff\x64\x34\xb5\x61\xf5\x4a\x33\x1a\x5d\x03\x2a\x8a\x31\x1b\xdf\x9b\x7a\xd8\x94\x4a\xcb\x1d\xd9\xba\x4e\xc7\x84\x83\x35\x9b\xe3\xb5\x25\xf0\xa3\xbd\x73\x42\xd1\x3e\x2b\x20\x1c\xf5\x2f\x55\x3b\xd6\xf4\xc1\xce\x8a\xfb\xfb\x0a\x0a\x62\x27\x30\xd4\x28\x77\xab\xed\xb8\x2b\xc6\x6e\x83\x24\x84\x1d\xa2\xcd\x5d\x11\x41\x6c\x6a\xa5\xd6\x58\x04\x01\xe9\xb3\x1c\xba\x71\x58\x03\x01\xc2\xd5\xd9\x6d\x4f\x2b\xd6\x79\xda\xee\x8f\xe7\xcb\x38\x69\xff\xa7\x95\x51\x8c\x9c\xdf\x45\xf4\x88\xbe\x50\x11\xc5\x3c\x0a\xfd\x7b\x8c\xfd\xb5\x49\x58\x20\x3c\xcb\x6a\x78\xb0\x71\x14\x2b\xf6\xe1\xf0\xcb\x6e\xbf\xa3\x96\x2e\x97\x98\x3b\xb0\x6f\x54\x1c\x3e\xa0\x91\x59\x50\x6e\x0a\x7a\xc4\x85\x66\x1b\xd4\xad\xb0\xfd\xde\x53\xea\x43\x5a\xf3\x7a\x41\x44\xb9\x5b\xb1\xa2\x0e\x1b\x28\x74\xdc\xc5\xa0\xbd\x2c\x0d\xff\xff\x7b\x4b\x38\x94\x3b\xe8\xb8\x39\x1d\xbe\xa0\x62\xc3\xc8\x37\x66\xe9\xff\xf4\xaf\xff\xfa\x87\x7f\x5d\xda\x2e\x7b\xa8\x0a\x1a\x6d\x62\xda\xed\xcd\xfb\x9b\x5f\xee\x7f\x7a\x0d\xd1\x83\x78\x7e\xf9\xbc\xa8\x6f\xd4\x0b\x2e\xf4\x42\x16\x0b\x3b\xe7\xdf\x12\x5d\xa0\xf7\x19\x20\xf9\x23\x24\x57\xdb\xa6\x0e\x2f\x37\x13\xd8\x39\x9d\x25\x4e\xfc\x38\x4d\xc5\xe8\x4d\x6d\x7b\xa1\xd9\x48\x67\xdc\x41\x71\x62\x6f\x01\x0c\x78\x0e\xad\x58\x27\xf9\xbd\x4c\x1e\x26\xe9\xc5\x97\x9f\x5e\xdf\xd9\x97\x1b\xaa\x31\x15\xce\x4c\x40\xb8\xd8\xcb\x6c\x8f\x5f\x0e\x4a\x3e\xbd\xbe\x83\x81\x2e\xe1\xbf\xc0\xd2\x02\x97\xc9\x83\xf9\x82\x07\x79\x5b\x07\x12\x92\x66\x95\x34\x10\x60\xf8\x34\xe3\x4a\xf3\x04\xa8\xd7\x26\x45\xf3\x1d\x9c\xdf\xe8\x8b\xea\xe3\x97\x1f\xbc\xcb\xa9\x57\x35\x8f\xe2\xf1\x76\x70\x4b\x43\x35\xc7\x83\xfa\xe6\x33\xa2\x71\x46\xb8\xb3\xc1\x62\xf8\xe7\x33\xa2\xaf\x9d\xe4\x8c\x78\x1e\x52\x32\xe2\xe1\xbc\x60\xf7\x5a\xe6\xd1\xde\x01\xfb\xda\x80\x6f\x60\xc5\xd6\x38\x38\x32\x1d\x34\xe5\xa7\x25\x73\x05\xa4\x6f\xee\x6e\x23\xac\x16\xb2\x65\xae\xb7\xe8\x40\x55\x26\x5b\x6f\x8f\x12\x4c\xa9\x6b\x30\xf2\x97\xb9\xbd\xaf\x21\x88\xae\x29\xcf\xca\x82\x5d\x99\xd9\x62\x3b\x98\x83\xab\x3a\x8c\xc1\x0c\x81\x09\xfb\x47\xa6\x93\xf1\xd4\x85\x75\xf3\x9e\x0f\x67\x7f\xf4\xd3\xd8\x71\x30\x90\xa4\xa0\x6a\xcb\x46\xeb\x36\xd6\x8d\x7d\xe6\x5a\xf9\xe2\xd3\x54\x49\x61\x0d\xb2\x6e\x5a\xe1\x8c\x53\x8d\x9c\xb5\xb8\xeb\xbc\xeb\xa8\x25\x7b\x27\xd3\xcb\x4b\xd5\x22\xb9\x29\x68\xc2\x48\xce\x0a\x2e\x53\x02\x91\x9e\xa9\x7c\xc4\x6c\xd8\x15\xdb\x70\xa1\x1c\xb7\xc0\xb0\x3d\x5b\x99\x13\xce\xd6\xe3\xf5\x69\xa9\x96\xe4\x23\x36\xff\x18\xa9\x83\x6c\x64\xa9\x13\x59\x0b\x3c\x37\x92\xab\xce\x14\x23\xf3\x4d\x00\x33\x95\x34\xcb\x0e\x35\xa3\x7a\x2c\xac\xee\x9d\x1a\x04\xd1\xe6\xe4\x7d\x11\x7f\x93\xd9\x21\xf5\x6f\xd3\x3b\x0b\x96\x7d\x46\x93\x2d\x3e\x23\xd3\xec\xc2\x6a\xb4\xd9\x85\x35\xbb\xb0\x66\x17\xd6\xec\xc2\x1a\x6a\xb3\x0b\x6b\x76\x61\xcd\x2e\xac\xd9\x85\x35\xbb\xb0\xea\x36\xbb\xb0\x4e\xd3\xff\xd9\x85\x35\xbb\xb0\xba\x6d\x76\x61\xf5\xb5\xdf\x98\x79\x72\x76\x61\x7d\x7d\xe3\xec\xec\xc2\x9a\x5d\x58\x58\x22\xf3\x19\x31\xbb\xb0\x66\x17\xd6\xe8\xc3\xc8\x07\xbd\xef\xe7\xce\xdc\x6f\x62\xe2\xbc\xee\xc0\xda\xcd\x13\x7b\x33\x32\x7c\xd7\x8c\xf2\xb1\x44\x97\x75\x0a\xf9\xc0\xc0\xea\x1c\x17\x3e\x4a\xc5\x39\x7c\x2c\x75\x88\x82\x39\x5b\x69\x94\xa1\xf2\x48\xb9\x4c\x6b\xeb\x7b\xc3\xec\x6e\xef\x82\xe3\xe2\x0a\x2f\x9e\x71\xf6\xf6\x38\x5b\x3b\x2e\x54\x8b\xd8\xc8\x2a\x8c\x9d\x1d\x6f\x41\x8f\xad\xf7\x1d\x61\x39\x8f\xb0\x9a\x7b\x5b\x38\xf6\x68\x0e\x59\xcc\x6b\x3b\x38\x92\xe2\xb8\xb5\xbc\xc7\x06\x8e\xa5\xdb\x6f\x29\xef\xb5\x7f\x63\x07\x7f\x6c\x25\x1f\xb3\x7d\xe3\xa7\xb4\xb2\x90\x87\xec\xde\x68\xd7\x90\xb7\x8e\x63\x6c\xde\x31\x44\x97\x67\xb0\x77\x3f\xd1\xd6\x1d\x65\x12\x8b\x56\x23\x62\xac\x03\x11\xe7\x93\x03\x04\x7c\xda\x16\x4c\x6d\x65\x86\xd8\xd7\xad\x3d\xfd\x03\x17\x7c\x57\xee\xa0\x74\xa4\xd9\xbe\xdc\xd5\x86\x2c\x0b\x56\x95\x89\x45\x0c\xcf\x9e\x19\xd6\x88\x57\x57\xa1\xac\xaa\x4c\xae\x35\x2b\xc8\x96\xee\x41\x4e\x96\x49\xc2\x58\x8a\x2b\x01\xd1\xbc\x92\xfd\x61\x59\xf5\xb6\xaa\x03\xf0\x4d\x98\x88\xcd\x8b\x09\x9a\xe2\x1f\x7e\x8f\x9c\x79\x9c\x56\x89\x76\x29\x44\xba\x13\x70\x5a\x24\xda\x95\x10\x77\x3c\xe0\xaf\x2c\x67\x71\x1f\x20\x5d\x07\xce\x21\x80\x16\x8c\xd3\xdd\x06\x91\xfb\x3c\xda\x5d\x80\x76\x15\x54\x0e\x00\xe4\xa0\x9f\xee\x26\x88\x92\x87\x78\xf7\x80\xeb\x04\xfe\xea\xf9\x44\xd7\xc0\x14\xb7\xc0\x93\xf2\x62\x3e\xd5\x1d\x30\xe9\x86\x1a\xed\x06\x38\xad\x0b\xe0\x8b\xe4\xc2\x8d\x98\xc7\x38\x93\x7f\xb4\xb9\x3f\xce\xd4\x8f\x37\xf3\x9f\xc3\xc4\x1f\xb9\x34\x78\xb3\x4d\x84\xc9\x66\x8a\xb9\x66\x82\xa9\x06\x6f\xca\x77\x93\x8a\xe4\x8f\x90\x89\xa6\x65\x78\x41\xd2\x1c\x31\xcf\x4c\x31\xba\x9c\xc0\xe0\x12\x63\x90\x47\x1b\xe3\xf1\xe0\x4e\xe2\xb4\x8f\xa9\x86\xf8\x28\x6e\xc1\x0b\x1f\xa4\x59\x29\x42\x84\xb8\xba\xf3\x6f\x58\x46\x0f\xf7\x2c\x91\x22\x45\x9c\x4c\x9d\x44\x66\x15\x4f\x2b\x4b\xc0\xe9\xd8\xb1\x08\xcd\x2d\x55\xbe\xcc\xbc\x07\xbf\x66\xed\xf2\xe7\x50\x2f\xc0\xf6\x18\x61\xfd\x21\x5f\xd5\x02\x44\xce\xaa\xee\x5b\xb0\xe9\xb4\x05\xfb\x4f\xf9\x48\xe4\x5a\x33\x41\x5e\x70\xe1\xd7\xec\x65\x03\x11\x14\x73\xcf\xaa\x36\x88\x79\xff\x9b\x57\x9e\xdc\x73\xbb\x1e\xc1\x45\x4f\xa9\x53\xde\x4c\x1d\xc9\x53\x5c\x4d\x1d\xa9\x75\x99\xb5\xaf\xa7\xf6\xca\x1a\x7b\x37\xfd\xa6\x4e\xd1\xf8\x0d\xf4\xad\xda\x45\x54\xa4\xc4\x81\xfc\x51\x9b\xe7\x59\x2d\x61\x84\x7b\xf0\x5c\xae\xc1\x28\xb7\x60\xed\xf0\x43\x51\x7e\x9a\x4b\xf0\x8b\xdc\xab\x03\x6e\x40\x73\xc5\x46\x5f\xd0\x9e\xe0\x02\xfc\xa7\xd5\x21\xc7\x5c\x7d\xb3\x0e\xd9\x6d\x5f\x53\xab\xd2\x7c\xc7\x64\xa9\x4f\xac\x50\x3d\x6e\x79\xb2\xad\xdd\x62\x88\x69\x34\xfd\x50\x44\x96\x1d\x3d\xf6\x1b\x47\xf8\xf8\x94\x46\xd0\xfc\x26\x3a\xae\xe5\x57\xa2\x55\x21\xd7\x37\x6c\x8e\x19\xac\x5d\x5d\xbb\x48\xeb\x0a\x6d\x54\x11\x4a\xde\xbc\xbf\xff\xe5\xdd\xcd\x5f\xdf\xbe\x0b\xed\x8d\xb7\x34\xd9\x36\x83\x03\x05\xa1\x20\x3c\x61\xaf\x6d\xe9\x9e\x11\x4a\x4a\xc1\xff\x51\xda\x5c\xaa\xe4\x45\x45\xf9\xe5\x89\x33\xdd\x23\x65\x19\xd4\x67\x9c\x50\xb7\x01\xde\x73\x2e\x1e\x69\x2e\x72\x85\xdc\x75\x64\x56\x68\xaa\xcc\x8b\x46\x8b\xa2\x56\x46\x6e\x59\xc1\xc8\x86\xef\x9d\x91\xdb\x25\xb5\xa4\x69\xe5\xde\x32\x0c\x6d\x38\x2b\x1c\x57\x44\x57\xe0\x68\xda\x32\x22\x98\x36\xdc\x5d\xdd\x31\xa5\x50\xad\xe8\xcd\x52\x31\x75\x45\x56\x65\xf0\x1a\x66\xae\x38\x7c\x47\x0b\x9e\x1d\x9a\x1d\xa1\xd9\x92\xbc\x97\x5e\x73\x39\x74\x86\x13\x20\xfa\xe6\xc3\xdb\x7b\xf2\xfe\xc3\x27\x28\x00\x0e\xc9\x69\xb7\x54\xdb\xb7\x61\x3a\x57\xcc\xd0\x73\x15\xb7\x96\xe4\x46\x1c\x30\x82\xd0\x4a\x21\xae\x88\x51\x57\x98\x30\x24\xdc\x71\xe2\x13\xdf\x5e\xbc\x5a\xc2\xff\x2e\xcc\xec\x16\xe1\x53\xa9\x72\x3b\xb6\x63\x0f\xe1\xec\x80\x53\x8d\xaf\xb2\x06\x07\xb8\x39\xff\xea\x95\x1b\x2a\x70\xc3\x9d\x99\xd1\x66\xf5\xfd\x8a\x2d\x50\xe7\x8a\xad\x19\xc2\xc5\x26\x8b\xe0\xee\xc8\xea\x0d\x75\x47\xa3\xb3\xa9\xd7\xa7\x91\x57\x35\xdc\x96\x74\xab\x0e\xa5\xb2\x50\x47\xfa\xed\x9d\x67\x88\xa5\x4d\xc2\xbc\xeb\x14\x9b\x82\x0f\x58\x13\x19\x4e\x93\x7c\x45\xfe\x42\x3e\x93\xbf\x80\xda\xf1\x27\x8c\x5e\x11\x77\x76\xc4\x5d\x50\xac\x5e\x7d\x7b\x17\x3d\xc3\x3f\x9b\x6d\x69\xde\x35\x33\x64\x2e\x87\x5c\xa4\xae\x18\x9e\x66\x85\x11\x4d\x78\x30\x91\x3c\x79\x1e\x7e\xd3\xb1\xb3\x30\x0e\xd8\xd7\x70\x8c\xb3\x6e\x64\x77\x26\xfa\x0c\xac\x63\x3e\x61\xee\x34\xef\xdd\xc6\x6d\xe5\x93\x86\x2f\xa2\x88\x42\xaf\x76\x54\x27\xdb\xb6\x74\x30\x2a\x93\xd2\xf5\x46\x54\x24\x95\x24\x9c\xf7\xd8\x36\x0b\x76\xd8\x72\x94\xa7\xec\xbc\x0c\x8e\x75\x45\xb5\xf8\x60\x6c\xf5\x3a\x57\x03\xe4\x35\x2d\xf5\x3a\x4e\x23\xcc\x3c\x97\xe9\xd2\xaa\x47\xa6\x93\x8e\x21\x82\x59\xd6\x1d\xc5\x31\x1d\xca\xdd\x66\x3c\xa2\x07\xbf\x15\xcd\xae\x4e\xa8\xb0\xb8\xb6\x35\x2b\x0a\x8b\x59\x59\x1d\x88\x2b\x00\x8d\x5a\xd0\xa8\xbd\x9a\x17\x52\xcb\x44\xa2\xaa\x1b\xb4\xdd\x3b\xee\x45\x18\xa6\x35\x70\x78\x1b\xd2\x8f\x6f\xee\xae\xc8\xa7\xd7\x77\xb8\x6d\x25\x0b\x72\xff\xfa\xd3\x5d\xfb\xbe\x71\xf1\xe9\xf5\x1d\xaa\x0c\x73\xc4\x60\xf1\xe5\xca\x5a\xc7\x5f\xe8\xe2\x76\xda\x6a\x08\x05\xa3\x29\x3f\x39\xbe\xd2\xb1\x4f\x4d\x3d\xa8\x0a\x1d\xe9\x55\x05\xdb\xc9\x3d\x4b\xad\x52\xe5\xe9\x31\x91\xe6\x92\x1b\x0d\x86\x87\x0a\x4e\x21\xb0\x99\x33\xfa\x32\xd8\x66\xf4\x25\x99\xd1\x97\x33\xfa\x72\x46\x5f\x86\x9e\x9d\xd1\x97\x33\xfa\x72\xb8\xcd\xe8\xcb\x19\x7d\x39\xd6\x66\xf4\xa5\x6b\x33\xfa\x72\x42\x97\x67\xf4\x25\xe2\x85\x19\x7d\xf9\xac\x3d\xe7\x33\xfa\x72\x46\x5f\x0e\xb5\x19\x7d\x09\x6d\x46\x5f\xce\xe8\xcb\x19\x7d\x39\xa3\x2f\x87\x9e\x9d\xd1\x97\xc3\x6d\x46\x5f\x0e\xb6\xdf\x8e\x0e\x39\xa3\x2f\x67\xf4\xe5\x8c\xbe\xfc\xda\xe8\x4b\x5f\x5e\x20\x06\x53\x78\xf9\x5a\xee\xf2\x52\x33\xf2\xd1\xbf\x5c\xb1\x27\x59\x1d\x2c\x22\x01\x0d\xbc\x7a\xba\xa3\xd3\x96\x94\x2f\x0b\x00\xf8\x5d\xdb\xac\xf6\x8b\xc4\x76\x71\x51\x8d\x6f\x51\xf5\xe8\xfa\x54\xce\xce\x8c\xef\x78\x08\x8c\x69\x5a\x8d\x89\xbc\x8b\x3a\xd8\xa2\x04\x6c\x7b\x85\xde\x41\xd7\x1a\x26\x42\x5b\x82\xfc\x33\x6c\x0f\xba\x93\x25\xea\x1c\x07\x2f\xb9\x5d\xea\x6a\x1e\xad\xe1\xf3\xeb\x2f\x13\x89\x93\x61\xce\xc4\xfb\x3c\x57\xeb\xa3\xeb\x5c\x77\xbd\x9c\x38\x7b\xda\x7a\xf9\xad\x09\x98\xac\xea\x4b\x5c\x11\xb9\xe3\x5a\x33\x8c\x5f\xdd\xa8\xdd\xb4\xe9\x4c\xe6\xba\xa5\xf4\x38\x6e\x83\x1c\x53\x54\xe3\x04\x6f\xc3\xd9\xd9\x40\x33\x49\xbd\x65\xc5\x23\x57\xbe\x2a\x4b\xa5\x75\x02\xd7\x2c\x52\xb6\xe6\x02\xd5\x65\x38\x02\x7e\x55\x3c\x8a\x7c\xd0\xdc\xd8\x0a\xae\x0f\xaf\xa5\xd0\xec\x73\x40\x17\x6c\xb3\xd9\xbd\x7b\x95\xc8\xdc\x7a\xb2\xbd\xb2\xea\x8a\x44\x14\xa5\x00\x04\xd8\x89\xd3\x80\xd9\x2a\xf7\xd7\xbe\xe3\x30\x7b\xec\xb3\xbe\x3e\xc9\x57\x34\x55\x0f\xf5\xba\xb1\x85\x39\x8e\xeb\xe5\x39\xfa\xe6\xa9\x44\x3f\x08\xc1\xbb\x82\xef\x79\xc6\x36\xec\xad\x4a\x68\x06\x3c\x13\xab\x1c\xdd\x0c\xd0\x81\xcd\x56\xc8\x4c\x91\xc7\x2d\x33\x7b\x02\x75\xeb\xca\x0b\x09\xf6\xec\x84\x0a\xb2\xa1\x5c\x90\x9d\x99\xc3\xdc\x93\x37\x0b\x6e\xf6\x94\x56\x24\xa7\x05\xee\x2a\xe7\x48\x3a\x80\xf1\x4a\xca\xcc\xa1\x47\xb2\x43\xdd\x47\x97\x5c\x4e\xc8\x5f\x04\x7b\xfc\xc5\x7c\x0f\x23\x01\xd6\x19\xdd\x54\x00\x2a\xc5\xf4\x91\x1e\x5f\x7f\x7c\x68\x9a\x10\x5f\x01\xe8\x43\xc9\x08\xcd\x1e\xe9\x01\xa6\xb3\xfb\x15\xae\xbe\x25\xdf\xbc\x04\xee\xa7\x98\x7e\x57\xfd\x48\xc9\xef\x5f\x82\x9d\xef\xf5\xcd\xdd\x2f\xf7\x7f\xbf\xff\xe5\xe6\xcd\x0f\xb7\xef\xb1\x22\xc1\xcc\x25\x0b\xa6\x6b\x4c\x68\x4e\x57\x3c\xe3\xb8\x53\xe8\xc8\xf3\xd4\x7c\x1d\x44\x6a\x9a\x5e\xa7\x85\xcc\xed\x3c\x14\xa5\x10\xb8\xcb\x5b\x8d\xb4\x6d\xeb\xde\xcd\x30\x05\x58\xc2\x75\xeb\x93\x08\xca\x9b\x82\x0a\xed\x15\xc7\xe6\xb2\x14\xa5\x30\x0a\xff\xa9\xbd\xf0\x34\x9d\x02\xd0\xba\x49\x53\x96\xc6\x0e\xed\x29\x7e\xde\xd7\xfe\x53\x87\x3a\x12\x82\xdc\x7d\xb8\xbf\xfd\x5f\xf1\xbd\x20\x8e\xe7\xa2\x5c\x76\x67\xc2\xdf\x10\x62\xd8\x6f\xc2\x0a\x7c\x74\x08\xcb\x79\x0d\x46\x5e\x38\x39\x06\xaa\x3a\x3b\x62\x6d\xcc\x1f\x4b\xd1\x8e\xab\xab\x29\x91\x9d\x4c\xd9\x92\xdc\x59\xe1\x8e\x9a\xbf\xf6\xfb\x0d\xd8\x3f\x2d\x18\x31\x44\x84\xe6\x50\x31\xcd\xe8\xba\x7b\x9a\xe1\xce\x36\x2d\x2d\x8a\xb1\x19\x3f\xd1\x92\x6e\x6b\x9a\x29\x84\x00\x8a\x91\xe7\xe6\x48\xfb\xc1\xa8\xf3\x91\xf3\x59\xbd\x47\x52\x26\xa4\x76\x37\x04\xf3\x65\x08\x08\x29\x64\x42\xb0\xb7\x84\x86\x33\xb1\x25\x71\x5d\x45\x3f\x2f\xce\xb9\xf2\x73\x71\xe7\xbf\x8d\x20\x6e\xad\x3a\xa5\x62\xaa\x5f\x9c\xd7\xf7\x06\xf3\xfd\x82\xd1\x54\x8a\x0c\xeb\xe9\xb7\x36\xff\x1d\x55\x0f\x2c\xb5\x7f\x70\x7a\x89\xbb\xe3\x28\x57\xdd\xcf\x75\xf7\x13\x6e\xbf\xad\x19\xd5\x65\xc1\xac\x3e\x62\xbd\x19\x4c\xd0\x15\xca\x57\x11\x05\xb0\xa7\xe9\x07\x91\x1d\x3e\x4a\xa9\xbf\xab\x80\xaf\x91\x6c\xf0\xb3\xd5\x06\x3b\x36\x16\x50\x42\xc0\xe8\x9e\x2e\x90\xd3\x09\x8c\xdf\xc4\xdf\xbe\xa9\x97\xfd\x0c\x6c\x5f\x94\xe2\x46\x7d\x5f\xc8\x32\xb6\x04\xa8\xe1\xc8\xef\x6f\xdf\xc0\x5e\x2d\xed\x3e\x65\x42\x17\x07\x00\xd6\x3b\xab\x71\x8c\xfe\x52\xeb\x94\x3f\x1a\x1e\xed\x70\xa5\xd1\x64\x4b\xa1\x18\x0a\x0a\xf6\x03\x3d\x10\x9a\x29\xe9\xd5\x57\x2e\xc8\x1d\x78\x31\x9b\xf7\xb3\xa5\x8d\xb6\x62\xc8\xd8\x99\x95\xd4\x5b\xd2\x21\x01\x4c\x7f\x4c\xf9\x0a\x39\x74\x6b\x0c\xad\x03\xa4\xb9\x38\xfa\x80\xa6\x0f\x4c\x91\xbc\x60\x09\x4b\x99\x48\x10\x6b\xdf\xb0\x5a\xfe\xe9\x8f\x27\x75\x8c\x01\xa7\xbc\x97\xc2\x6c\x93\x48\x5e\xb9\x15\x29\x4f\xa8\x95\x8d\x54\x77\xe4\x0f\xd8\xef\x8b\x12\xb3\x08\xb0\x99\x84\x14\x0b\xd8\x24\xa5\x62\x05\xd8\x4e\xcc\x35\xc2\xe2\xe8\xff\x56\xae\x58\xc6\xb4\xbd\xbc\x40\xbc\x1c\x45\xa1\xf3\xcd\xbb\x7c\x47\x37\x8c\x50\x5d\xb1\x9e\x96\x84\x09\x55\x42\x69\x52\xaa\xc1\xb4\x22\x99\x42\x46\xb3\xd9\x4b\x0b\xf9\xf1\xf6\x0d\x79\x45\x5e\x98\xfe\xbe\x04\x76\x59\x53\x9e\x01\xc8\x51\xd3\x42\x47\x63\x17\xf8\xda\x77\x03\x06\x0e\x3b\x82\xc8\xc2\x0a\x86\x2b\x22\xa4\xad\x75\xeb\x46\x8e\xbb\x87\xf9\x8b\x9e\xf3\xca\x83\x01\x11\xbd\x81\x10\xf4\x1d\x81\x98\x0d\x84\x5c\xb1\xb3\x6c\xa0\x68\xe1\xf9\xa3\x62\xc5\x04\xd9\xf9\xe3\x59\x64\x67\x53\x49\x32\xfb\xa3\x35\x3b\x18\x06\x83\x4d\xb0\x63\x9a\xa6\x54\x53\x27\x75\xeb\xc8\x9d\x63\xc6\xc0\x5c\xcb\x47\x65\x6f\x2f\x63\x60\x64\xc1\xb0\xec\x45\x30\x06\x86\xc3\x9e\x91\xec\x55\xec\x1d\x17\xe5\x67\xeb\x18\x9f\x62\x6e\xb8\x7f\x0b\x04\x48\xe2\xf7\x05\x2c\x21\xcd\xf3\x8c\x43\x88\x0b\x72\xc7\x35\x3c\xb9\xb7\x2d\xd6\xe8\x96\x54\x76\x32\x14\x2b\x7e\x68\x96\x49\x73\x40\x18\x5d\x89\x8a\x54\xee\x8e\x3a\x6c\x94\x52\x46\x93\x6d\xcc\xb6\x58\xc6\xa8\x02\xbf\x3d\x49\x16\x67\x7e\xc9\xd8\x9e\xa1\xc2\x69\xbb\x79\x4c\xcc\x7b\x46\x39\xf5\x2b\x06\x84\x48\x46\x57\x2c\x8b\x89\x90\xb2\xbc\x58\xd9\xae\xd0\x6e\x4a\xdb\x22\xaf\xe5\x85\xcc\xa6\x80\x3e\x3f\xca\x0c\x00\x4a\xb4\x1a\xac\x21\xf4\xcc\xc7\x0a\x8f\xc7\x8f\xd5\xdc\xd1\xda\x63\x85\x3b\xed\xf3\x1e\x6b\x89\x3a\x8b\x49\x77\xac\xe6\x08\x6f\x8f\x15\xce\xce\xe7\x3c\xd6\x08\x53\xd1\x23\x17\xa9\x7c\x54\xd3\x0f\x8f\x9f\x2d\x01\x2f\x9f\x12\x23\x08\x35\x17\x1b\xe5\x0f\x10\x9c\x6d\x83\x66\x59\xcb\xa6\xd1\x77\x82\x78\x07\xd8\xba\x40\x55\x34\x75\x65\xf7\xbb\xb2\xd2\xab\xb4\xa5\x72\xde\xd5\x86\xe4\x46\x50\x8d\xb8\xe6\xa1\x43\x2e\xbe\xaa\x6c\xdf\xec\x14\x7d\x5d\x18\xda\x9a\xd3\xec\x3e\x9f\x54\xf8\xfe\xfb\x1f\xee\x6f\xda\x44\xcc\x96\x79\x84\x6c\x53\x66\x26\xcc\xef\xd8\x7d\x92\xee\xb8\x52\x5c\x0a\xf2\xc8\x56\x5b\x29\x1f\xc8\x0b\xef\x49\xdc\x70\xbd\x2d\x57\xcb\x44\xee\x1a\x4e\xc5\x85\xe2\x1b\x75\xed\xf8\x78\x61\x46\x83\xad\xc3\xce\x45\xc6\x45\xc3\xe4\x05\x69\x8b\x1c\xa4\xcd\x74\x98\x24\xd5\x88\x90\x14\xcd\x42\xba\xcc\x1b\xce\x33\x72\x3c\x31\x36\x8f\x06\x67\x19\xba\x4a\x32\x18\xcb\x6c\x18\x92\x91\x43\x59\xbe\xa5\x0b\x7b\x90\xba\xb0\x6b\x08\xc2\xdf\x4a\x21\x0b\xd4\x76\x33\xcd\xe5\xdf\x80\xa8\x3a\x73\x81\xb5\xb6\x33\xe8\xb2\xdb\xd1\x30\x03\xce\xca\x86\x24\xba\xce\xe8\xe6\x2c\xa2\xfb\x98\x47\xdf\xa3\x03\xd2\x02\x7c\x0a\xcb\xe1\x22\xf8\x23\xe2\xa9\xfa\xd9\xc4\x32\x80\xbd\x5e\x2d\x1b\xeb\x86\x65\xc8\xe0\xea\x36\xd6\x0d\xeb\x93\x08\xaf\xee\xf9\xd6\xad\xba\x03\x4f\x5c\x2e\xb8\x0b\xbb\xd7\x8d\x6c\xf4\x87\x4d\x7d\x37\x46\xce\xc2\xd1\x0d\x7a\xec\x7e\x8c\x9d\x59\x7b\x90\x1f\xdd\xa4\x03\xf7\x64\x24\x75\xe4\xe5\xc4\x9e\x5f\x68\x81\x77\xea\xfb\x09\x89\xbc\xa3\x20\x49\x36\x4e\xbb\x90\xf4\x8b\x48\x31\x31\xb0\x91\x86\xb6\xc8\xc7\x26\xf3\x62\x25\xe0\x79\x77\xd4\xc9\x61\x49\x36\x10\x23\x3a\x2f\xcf\x7d\xe3\x3d\xc2\x8f\x0d\xb8\x77\x32\x25\xdb\x20\x2c\xa3\x0e\x39\x81\x74\x8f\x10\x04\xc6\xff\xcb\x6b\x65\xb5\xee\x27\xa4\x45\x98\xe1\xc2\x9c\xc1\xb9\x68\x53\xaf\xa4\xa4\x14\x9a\x67\xde\xef\xb2\xcb\x33\xa3\x30\xb4\xbe\x6b\x6d\xc4\xe1\xcc\x66\x8d\x34\x3f\x57\xd5\x10\x8f\x0a\x36\x5e\x91\xff\x5d\x2a\x4d\xa8\x07\xd7\x04\x88\xb6\xea\x4e\xfa\x48\x1b\xcb\xf0\x2e\x65\x16\x44\x79\x6b\x69\x3e\xbf\xe7\x29\x23\x29\x5f\xaf\x19\x02\x04\x64\xbb\x9b\xd3\x82\xee\x98\x06\x97\xab\x5d\x98\x15\xdb\x70\x61\xb3\x55\xae\x09\x35\x83\xb8\xbc\x54\x75\xa4\x47\x68\xcb\x03\xfe\x84\x6b\xb2\xe3\x9b\xad\xdd\xd1\x84\x92\x4c\x8a\x0d\xf1\x46\xf1\x4c\xd2\x94\x80\xd8\x93\x05\x79\xa4\x45\x48\x51\xa7\x24\xa1\xc9\x16\x2c\xf4\x54\x90\xb4\x2c\x20\x25\x86\x66\x34\x3d\x2c\x94\xa6\xda\x68\xfd\xcc\x22\xfb\xea\x99\x09\x5b\xd9\x9b\xc0\x64\x78\x8b\xdb\x78\x1b\x23\x3d\xaa\x4d\xea\xfc\x85\x4e\x55\x0b\x50\x6c\xb1\x7c\x6b\x9b\xcf\x29\x9e\x82\x6d\x4e\xf1\x44\xe6\x14\x4f\x73\x8a\xa7\x39\xc5\x53\xe8\xd9\x39\xc5\xd3\x9c\xe2\x69\xb8\xcd\x29\x9e\xe6\x14\x4f\x63\x6d\x4e\xf1\xe4\xda\x9c\xe2\x69\x42\x97\xe7\x14\x4f\x88\x17\xe6\x14\x4f\xcf\x3a\x3c\x7f\x4e\xf1\x34\xa7\x78\x1a\x6a\x73\x8a\x27\x68\x73\x8a\xa7\x39\xc5\xd3\x9c\xe2\x69\x4e\xf1\x34\xf4\xec\x9c\xe2\x69\xb8\xcd\x29\x9e\x06\xdb\x6f\x47\x87\x9c\x53\x3c\xcd\x29\x9e\xe6\x14\x4f\x5f\x3b\xc5\x93\xd2\x29\x0f\x24\xa6\xc0\xc4\x18\xba\x24\x21\x35\x86\x3e\xe4\x38\x2d\xd7\x6b\x56\xc0\x79\x0e\x3d\x38\xf2\x21\x55\x11\xfe\xde\x71\x1e\x5e\x4e\x73\x72\x29\xa6\xaf\x20\xd4\x51\xb9\x6a\x3b\xfd\xc4\x1d\xe0\xff\x91\x1e\x42\x44\x0b\xa6\x20\xf4\x4f\x90\xb7\x1f\xbe\x8b\x0d\x84\xc4\xc6\xf1\x40\x2f\x3f\x88\x24\x06\x1c\x51\x2f\x44\x5f\x20\xad\x5b\x8f\x24\x93\x2a\xb4\xb3\xa0\x3e\x27\x4c\x53\xb2\xa5\x42\x30\xaf\xb5\x71\x0d\x77\x98\x15\x63\x82\xc8\x9c\x09\xeb\xc1\xf6\xc5\x13\x43\xfe\x76\xad\x69\xb2\x5d\x9a\x5e\x0a\xbf\x08\x2e\xd7\x46\xfd\x3d\xa5\x0b\x46\x77\x76\x31\x0a\xb6\xa3\xc1\x48\x1e\xd3\x0d\x42\x93\x42\x2a\x45\x76\x65\xa6\x79\x9e\x31\xf7\x29\xa2\x18\xa0\x39\x2d\xa6\xb7\x9a\xd0\x30\xd7\x28\x66\x9d\x6c\x10\xbf\x57\xf5\xd4\x0d\x58\x36\xe3\xd4\x41\xd7\xbc\x0a\x53\x64\xbb\x5c\x1f\x2a\x48\x08\x23\x6b\x5e\x28\x4d\x92\x8c\x33\xa1\x5d\x6f\x2d\x3e\x1b\xbe\x76\x65\xf4\xd8\xf0\x12\x09\x37\x43\xca\x4d\x82\x48\xe1\x8c\xcc\xb5\xb2\x30\x88\xfa\x73\xf6\x43\x01\x8a\x29\x57\x4e\xcf\x51\x57\x84\x6a\x2f\x8c\x81\x75\xfc\x1c\x00\xf3\xa4\xf0\x29\xf7\xed\x00\x51\xf7\x42\xa3\x2b\x8d\x34\x2a\x35\x7a\xa5\xde\xd2\xeb\x8c\x86\x34\x07\xbf\xd1\xae\x5a\x15\x4b\x73\x9f\x1e\xc0\x62\x81\xba\x1b\x3e\x40\x13\x18\x4e\xb0\xbd\xd9\x2f\x2c\x61\xe6\xfa\x43\x07\xf6\xf7\x49\xb6\xb7\x66\xc5\x8e\x0b\x00\x97\xfc\xc0\x94\xa2\x1b\x76\x17\x34\x5b\x0e\xa9\xaa\x60\xb9\xac\x17\x0c\xd8\x2b\x03\xbd\x15\xfe\x82\xd8\xeb\xb5\x9b\xfe\x52\x35\xbb\x46\x76\xb6\x6f\x15\xdc\xe8\xb1\xe0\x5a\xb3\xd0\x64\x72\x65\x73\x0b\x80\x0f\xa1\x1b\x74\x60\x3e\xd1\x74\xf2\xbb\xe1\x87\xd6\xc7\x7e\xd8\x90\x36\x27\x9d\x48\x5d\x2d\x3f\x46\x56\x05\x67\x6b\xb2\xe6\xe0\xbf\x07\xff\xf6\x95\x8d\x36\x0d\x82\xc0\xcc\x15\x49\x29\x73\xa9\x90\xc2\xbb\x61\xfd\x88\x97\xe4\x67\x37\x64\x5d\x94\x22\xa1\x1a\x0b\xd6\x11\x32\x65\x84\xaf\xc9\x06\x7c\xeb\x85\x05\x17\xfd\xf1\xd5\xff\xf5\x27\xb2\x3a\x18\xdd\x01\x8c\xff\x5a\x6a\x9a\x55\x93\x9b\x31\xb1\x09\x06\x00\x38\x11\xd7\x0e\x56\xa8\xd6\x05\x32\x0b\xda\x29\xf9\xe6\xf7\x0f\x2b\x34\xa0\x54\x4b\x72\x9d\xb2\xfd\x75\x63\xcd\x17\x99\xdc\xf4\x95\x93\x1b\x57\x5b\x90\x8a\x7f\x0f\xdb\x43\xb2\xaf\x08\xc6\xf7\x41\xdb\x64\x2b\x1f\x6d\x4e\x8b\x1e\x7e\x45\xc1\x83\x56\xe6\x6e\x91\x97\x99\xc5\x6a\x7d\x67\xf6\x0c\xcc\x67\xa9\xd8\x31\x30\xbf\x77\xbf\x86\x67\xd7\x7f\xa0\x5b\x7e\xdc\x02\x31\x7c\x77\xa5\x43\xc7\x3a\x33\x49\x90\x6f\x53\xcf\xae\x4b\xf2\x1d\xcd\xb2\x15\x4d\x1e\x3e\xc9\x77\x72\xa3\x3e\x88\xb7\x45\x21\x8b\xf6\x38\x32\xaa\x42\xb2\x3f\xd9\x96\xe2\xa1\x5d\xe4\x30\x93\x1b\xa3\x57\xe7\xa5\xf6\xe9\xba\x7a\x26\x3a\x40\x16\xe4\x10\x57\xee\xf8\xa3\xae\xaa\x6e\xfd\x0d\xf6\x19\xb8\xf6\x91\x1b\x01\x26\x08\x33\x7d\x0f\x5d\x9e\xcc\xfe\x69\xf6\x4d\x35\x99\xff\xf7\xaf\xfe\xf8\x67\xbb\xd1\xcc\x2d\xf2\xcf\xaf\x00\x2e\xa5\xc2\xd8\x42\x9e\x6c\x41\xf6\x73\x45\xd4\x8e\x66\x99\xb9\x30\x36\xef\x13\x86\x39\xfa\x36\xc5\x49\xf6\x84\x8e\x61\xff\x13\x29\xdb\x9f\x3e\xfd\x1d\x34\x6d\xae\x15\xcb\xd6\x57\x16\xef\x5d\x65\x45\xb9\x84\x23\xf3\xd2\x49\x58\xa3\x07\x55\xd3\x81\x3c\x9b\x4f\xa3\x04\xef\x65\x56\xee\xd8\x1b\x06\xc5\x5a\x23\x26\xa9\xf5\x9e\x47\xd0\x65\xae\xb2\xfd\x2a\x93\xc9\x03\x49\xed\x8f\xe1\x1d\xec\xbd\xe1\xdd\x7c\x63\x0d\x74\x27\x59\x31\x5d\x61\x3b\x4f\x5d\xe5\xbc\x39\x96\x96\x7f\x7f\x47\xf3\xbc\x82\xd3\x16\xf4\x31\x78\x51\x6c\x0e\xdc\x57\xee\xa5\xe7\xa9\x78\x6e\x3f\x12\x56\x69\x7a\xc6\x5b\xbf\xea\x17\x2e\x87\xff\xb6\xc8\x3d\x74\x12\x82\x66\x1a\x82\x0a\x1c\x5e\x8d\xdd\x9e\x9a\x66\x06\x41\x6e\x9c\xbc\x0e\xf0\xa4\x3a\xcd\xa2\xb2\x29\xd9\x0a\xd6\x3e\x2e\xc8\xae\x70\xce\x0a\x05\x05\xff\xf5\x4f\xc0\x11\xaf\x33\xca\x31\xb1\x88\x84\xd4\x05\x9a\x4f\x3b\x4c\x7c\x05\xe0\x7a\x4d\x83\x8f\x22\x50\x07\x27\xae\x11\x6c\x37\x18\x24\x80\x8a\x91\x31\x77\x32\x75\xaf\xc2\x09\x01\x0a\x6f\x9f\xba\x1b\x12\x31\x4d\x5d\x38\xf2\x80\x89\x17\x26\x3f\xd5\x63\x6d\xcb\x12\xf3\x97\x4a\x98\xd8\xa7\x82\xcc\x72\x5e\x11\x02\x5d\x9a\x24\x41\x40\x76\x34\x2a\x93\xd7\x82\xc0\x5f\x92\x70\x56\xf8\x2d\x73\x0b\xec\x4f\x57\x23\x32\xec\xbd\x66\x49\xac\x07\xca\xac\x96\x23\x8f\xa2\x79\xf9\xed\xe5\xc9\x65\x8d\x9d\xa8\x42\xe6\x74\x83\x4c\x29\xdb\x99\xaf\x2e\x01\x92\x32\xab\xea\x31\x05\x4a\x36\xfc\x8e\x33\xbc\x53\x48\x1f\x6b\x29\xf9\xea\xd6\x3e\x55\x9e\x73\xa4\xf8\xa5\x08\x5a\x38\xdc\x54\x6c\x99\x0b\xc1\x79\xa4\x07\x42\x0b\x59\x8a\xd4\xd9\x90\x2a\xe3\xde\x0f\x9d\x01\xbc\x97\x02\x77\x44\x70\xe5\x62\xb1\xdb\x91\x5e\x70\x9c\x73\x41\xbe\x59\x7e\xf3\xea\x79\x1c\x0d\x9f\xaa\xa2\xfd\xf5\xd1\xf0\xbe\x3a\x1a\xec\x7e\x3d\x79\x4f\x7d\x02\xba\xe8\xde\xfe\xe0\x2e\xff\x55\x7e\x39\xb8\x41\x80\x35\x0d\xfe\x64\x2e\xf3\xb8\x05\xaa\xd3\x7b\xbf\x00\xb5\xd2\x68\xf5\x8d\x88\xc6\x97\x2d\x2d\x1d\x45\x11\x99\xab\x2e\x2e\xe1\x12\x21\xaa\x5c\x9d\x44\x56\x39\x81\x03\x1b\xa7\xb2\xe7\xc4\xa9\x3b\x97\x6a\x44\x6c\x45\x05\x9a\x6a\x49\x2e\x2e\xc8\x0b\x4b\xed\xd2\xc6\x77\xbc\x3c\x39\x9b\xb9\xa9\x7b\xfb\x39\x47\xe5\xc8\x68\x4d\xdf\xdb\xcf\x39\x05\x5b\x50\x3e\x3c\x8f\xa8\xa1\xd6\xb6\x33\xd4\x3c\xa2\x68\xfe\x95\x6d\xe9\x9e\x41\xdc\x0a\xcf\x68\x91\x1d\xcc\x84\xde\xdb\xd1\x92\x55\xa9\x09\x13\x7b\x5e\x48\xb1\x63\x42\x93\x3d\x2d\x38\x5d\x05\x8d\xe8\xb6\x15\x0c\x42\xf1\xcc\xe5\xe6\x5f\x5e\xfc\x74\xf3\x11\xbc\x8e\x2f\x5d\xfc\xa1\x9b\x91\x52\x01\x1e\x6c\x02\xf7\x34\xba\xd5\xbe\x05\x37\x99\x01\xd7\x4f\x60\x18\x3f\x66\xb3\xc2\x60\x04\xf0\x73\x60\xfa\xbb\x2b\x75\x69\x33\xb1\x7e\x4e\xb2\x52\xf1\x3d\x6a\x73\x76\x33\x13\x34\x24\xf6\xbf\x9e\x98\x41\xf1\x5a\x6e\xa5\xb1\x3c\x43\x25\xd7\x85\x79\xbd\xe1\x81\x3d\xd6\x09\x41\xab\x99\xe2\x28\x4e\x0c\x4c\xf6\x70\x04\x57\xe1\xb2\x31\x96\x66\xef\x96\xba\x54\x55\x2e\xcd\x66\x7a\x94\x2b\x94\xa2\x66\x83\x41\x2d\xd4\xc8\xe6\xf3\x4f\x8f\x1d\x7b\x10\x13\xdf\xd0\xad\x03\x34\x4f\x67\xda\x09\x73\x4e\x80\x13\x10\x3c\x10\x5a\xfd\xca\x0d\x3d\xd4\x89\x76\xd6\xf2\xc4\xd7\x79\x70\x17\x66\x5b\xd1\x02\x04\x94\xbd\xa3\x78\x59\xa8\xe9\xc3\x70\xbf\xb9\x20\x05\x53\xb9\x14\x8a\xb5\x95\xbe\x1a\xf4\xc3\xf6\x4c\x68\x15\x71\xe3\xc1\x5c\x1d\x72\xa9\x34\x04\xcb\x8e\xf1\x78\xdb\x8b\x72\xe7\x5f\x01\xef\x16\xcd\x32\xc3\x41\xbb\x1d\x4b\x39\xd5\x2c\x3b\x38\xbf\x27\x45\xc2\x3c\x0d\x0d\x1b\x53\xe7\x1c\x5a\x8c\x6c\xa9\x48\x33\x56\x34\xe3\xb7\x5b\x2e\x30\x6f\x54\x0d\xa4\x4f\xb1\x1e\x37\x0f\x1e\xa5\x49\x22\x8b\xd4\xe1\x7d\xb9\xae\x1c\x69\xc4\x96\xce\x58\x92\x0f\xa0\x31\xd7\xab\x37\x4a\xfb\x28\x2d\x05\x18\x8a\x54\xc3\x69\x07\xb9\x70\xaa\x28\x76\x0b\x8f\x18\x9f\x88\x98\x0a\x2a\xce\x99\x51\xff\x67\x0d\x9e\x58\x00\x00\xed\xba\x81\xa1\x80\x3f\x8c\xf9\x22\xb0\x77\x4c\x4c\x58\xf2\x79\x82\x92\x4f\x1c\x92\x1c\x73\xa9\x8e\x08\x47\x3e\x57\x30\x72\x44\x28\x32\x59\x4b\x1c\xf0\xec\xf4\x81\xc8\x31\x61\xc8\x38\x54\x11\x89\x0a\x42\x6e\x85\x17\xa3\xa8\x07\x42\x90\xbb\xc1\xc5\xd8\x0b\xc0\x48\x00\x72\x4f\x68\x31\xee\x52\x37\x1e\x7e\xdc\x0d\x2c\x46\xd1\x8c\x0a\x3e\x8e\x08\xb5\x9b\x92\xd4\x10\x15\xa9\x84\xd6\xef\x90\x71\xaf\xf1\x51\xaf\xd8\x98\xd6\x18\xf9\x82\xc5\xdd\xc6\x45\xb3\x62\xef\xf6\x11\xb1\xac\xb8\x14\xc1\x64\x6a\x24\x6b\x14\xdb\x44\x46\xb1\x9e\x29\x86\xf5\xa9\x11\xac\x11\x9b\xea\x5c\xd1\xab\x4f\x8b\x5d\x8d\x8f\x5c\x8d\x8b\x5b\x3d\x61\xd4\xea\x84\xf8\xcf\xc8\x88\xd5\x53\xc6\xab\x46\xf7\x36\x2e\x56\x35\x22\x52\x35\x26\x4e\x35\x32\x4a\x35\x26\x46\x15\x1b\xa1\x7a\xfa\xf8\xd4\xa8\xa5\xc0\xc6\x15\xa0\xa3\x0a\xe2\x63\x0a\xa2\x23\x0a\xce\x13\x93\x7a\xfa\x68\x82\x93\xc6\x12\x3c\x39\x92\x00\x1f\x8b\x7a\x96\x48\xd4\xe9\x71\xa8\x67\xb1\xe3\x21\x62\x25\xf0\xd6\x39\x6c\x4c\xd7\x79\x22\xba\xce\x15\xcf\xf5\xb4\x68\xae\xb3\x6b\x94\xa7\x8a\xe3\x7a\x42\x14\xd7\x3f\x99\xa4\x3d\x55\xe4\xd6\x6f\x5b\xd2\x7e\x0d\x19\x84\x7a\x2c\x2f\xd8\xbd\x1e\x2f\xb3\xd8\xb1\x9b\xda\x17\x06\xac\xa6\x2e\xb8\x3d\xc2\x6c\x5a\x9b\x41\x49\x5a\xfa\x62\xce\x37\x77\xb7\xd5\x7d\x55\x36\xcd\x99\xd6\x7c\x3c\x4a\xd3\x41\xc0\xab\xd0\xe0\x6b\x17\x16\xdc\x48\xa7\x59\x16\xec\xca\x8c\x9c\xed\x60\x54\x57\x55\x0d\xec\x51\xc2\x0e\x15\x0c\x2f\x30\x9d\x58\xf3\x90\xb7\xf2\xba\x54\x73\x7e\x4a\xd6\x11\x29\x02\x92\x82\xaa\xad\xc5\xad\xb2\xcf\x5c\x3b\xa4\x78\xc1\xa8\x92\xc2\x06\x60\x37\xe0\xb7\x5c\x91\x9c\x2a\x15\x30\xe3\x38\xa9\xe5\x3a\x67\x09\xba\xbc\x9b\x4d\x62\x9b\x82\x26\xcc\x05\xdc\x93\x44\x96\x42\xa7\xf2\x71\xfc\x7a\x0c\xc9\x3c\x95\x5f\x67\x5b\x44\xcf\x32\x84\x91\xff\x0c\xec\x64\x3e\x13\xea\x92\x7c\x64\x1b\x5a\xa4\x59\x48\x06\x38\xa9\x21\x4b\x9d\xc8\x5a\x88\xb8\xde\x77\x4d\xe7\xe0\x2c\x02\x36\x00\xf7\xe1\xf8\x3c\x78\xe6\x6a\x7a\x88\x03\x13\x31\x2e\x0d\xba\xf6\x75\xa4\x0d\x3d\xc0\x58\x3e\x4b\x2c\x80\x1c\xfc\x7b\x83\x2b\x05\xf1\x33\x34\xd9\x86\x7c\x55\xf1\x25\xcd\x67\x83\xfc\x6c\x90\x9f\x0d\xf2\xb3\x41\x7e\x36\xc8\xf7\xb5\xd9\x20\x3f\x1b\xe4\x5b\x6d\x36\xc8\x0f\xb5\xd9\x20\x3f\xdc\x66\x83\xfc\x6c\x90\xff\xa7\x33\x13\xcd\x06\xf9\xd9\x20\xef\xdb\x6c\x90\x9f\x0d\xf2\xb3\x41\x3e\xf8\xc6\x6c\x90\x1f\x6b\xbf\x4d\x83\x7c\xf0\x91\x56\xf9\x26\x14\xb4\xfb\xf2\x0e\xac\x86\x3c\x71\x06\xf0\x76\xae\x07\x47\x6e\x59\x43\xfe\x07\x07\x70\x54\x79\xca\x9b\xb9\x1b\x75\xaa\x2c\x9d\x42\x66\x99\xb9\x03\xed\xe8\x61\xb4\x52\x9c\xc7\xff\xbf\x6b\xd5\xa4\xe2\x6b\x22\x64\x27\x3f\x2e\xd8\xbd\x6d\x3d\xaa\x74\x49\x3e\x0d\x5f\x42\xf9\x46\xc8\x82\x79\xca\x5c\x6c\xae\x6c\x52\xa7\xaa\x5e\x9c\x96\x2e\x29\x45\xfb\xa3\x17\xff\xe7\xbf\x2f\x86\xd9\xee\x18\xac\xfe\x55\x12\xc5\x61\xa4\x75\xc8\x98\x3a\xc9\x90\x1a\x0a\x9e\x38\x95\x11\x15\x7b\x1c\x21\x8d\xa7\xe7\x30\x9c\x46\x1a\x4d\x51\x9a\x17\xda\x60\xda\x34\x86\x06\xa9\x22\x8c\xa5\x1d\x43\x28\x42\xd9\xc0\x1a\x4a\x1b\x46\xd0\x20\x55\x8c\x91\xb4\x6d\x00\x0d\xcf\x68\xd8\x40\xda\x35\x7e\x86\x07\x3f\x6e\x1c\xc5\x1b\x3e\x91\xf6\x99\x08\x2d\x00\x77\xe5\x45\x1d\x53\x31\x85\x8e\xa2\x4b\x1c\x21\xb2\x7b\x46\x16\x37\xc2\xc5\xb5\x4e\x29\x6b\x84\xcd\xc5\x89\x53\xef\x10\xb6\xe3\xf3\xd8\x8d\xb1\x22\x15\xa3\xdd\x47\xdb\x8a\x51\xd2\x0f\x6f\x27\x6e\xda\x67\x31\x82\x1a\x63\x23\x46\xef\xb2\x08\xdb\x70\xbc\x5d\x18\xd6\x3b\x2c\x81\xa6\xd9\x84\x91\xf2\xe6\x1c\xb6\xe0\xe9\x76\xe0\x38\x1b\x30\xde\xfe\x7b\x22\xdb\x6f\xe4\x15\x2d\xc2\xe6\x7b\x2a\x7b\xef\xd9\xea\x74\xa0\xe6\x08\x6b\xdf\x8d\xc9\x3c\x8d\xb4\xeb\x62\x6c\xba\xa7\xb5\xe7\xa2\xa7\x1a\x63\x5d\x40\x59\x16\xe2\xac\x0a\x51\x16\x85\x68\xbb\x2d\x91\x61\x07\x1e\xde\x92\xd0\xb4\x12\x04\xc9\x3e\xc9\x8a\xf0\x24\x0b\x02\xce\x4e\x1b\x6b\xa3\xb5\xf6\xd7\xe0\xb0\x63\xed\xb3\xc8\xd5\xc7\x08\x81\xa0\x3d\x04\xb5\xa1\x23\x4b\xf3\x4c\x28\xca\x13\x2c\x05\x1e\x55\x8e\xa7\x71\xdb\x0f\xea\x08\x5f\x2c\x65\xfc\x69\x15\x54\x74\xd9\x9d\xf8\x82\x3b\xae\x9c\xce\xe8\xcc\x9d\xa4\xd4\xce\x69\x67\x24\xa6\xb0\x4e\x7c\x49\x9d\x29\x57\xa1\x40\x31\x1d\xf4\x5d\x08\x57\x46\xa7\x3d\xf9\xa3\x34\xbf\xec\xc2\xa0\x3c\x39\x93\xbc\x38\x81\xec\xa9\xa7\xf7\xe0\x4c\xf7\xde\x9c\xed\x5e\x87\xf0\xd8\xe0\xab\xcd\xc6\x79\x6b\x7e\xc3\x7a\x14\xc2\x2b\xf3\x4f\xa8\x47\x7d\x39\x8d\x03\x5f\xb6\x66\x52\xc1\x1a\x5b\x8e\x66\x74\xa2\x22\x4a\xd5\xb4\x0b\xd1\xfc\x36\x35\x8e\xe0\xaa\x09\x99\xb2\x7b\x96\x81\x29\x7d\x68\x0e\x68\xea\x4d\xd0\x77\x08\x71\x88\xd8\xbc\x9d\xc5\x6f\x74\xc1\xe6\x7b\x56\xfe\x5f\x76\xfd\xfd\x96\x19\x65\xf3\xea\xc0\x97\x60\xc5\x5e\x73\x6d\xae\x98\x14\x06\xb8\x24\xf7\x3d\x14\x6d\xaa\xc7\xe1\xb3\xc8\xbc\x79\x79\xa9\x48\x46\x57\x2c\x53\xdd\x0f\xac\x18\xdc\x4e\xd2\x32\xb3\x45\x4b\xc0\xfe\x6d\x3f\x36\x9a\xbe\x27\x2a\x52\x00\x92\x6e\x41\x6c\xc2\x35\x55\x8a\x6f\xc4\xc2\xb0\x95\xf9\xca\xf5\x10\x07\x05\x57\x3c\x2f\xb8\x2c\xf8\x70\x52\xf4\x23\xcb\x88\x7f\xc1\x6e\x9c\x25\xf9\x89\x16\x5c\x96\xca\x67\xac\x4a\xe4\x2e\x97\x02\x12\xf9\x97\x23\xd5\x3b\x74\x9d\x50\x0e\x96\xc7\x25\xab\xaf\x88\x57\xc2\xda\xa7\x1f\xbd\x73\xbf\x0c\x52\xbc\x49\x77\x1c\x0a\xd0\x34\xbc\xa1\x10\x18\x23\xe8\x2a\x63\xd6\xf9\x92\x17\x36\x13\x96\xe9\x5a\xe1\xeb\x95\x30\xad\xc7\x0e\x96\xba\xa7\x16\x0a\x4f\xab\xef\x24\xf5\x77\x7c\xe1\x01\xd5\x78\x7c\x98\x37\xcd\x67\xfd\x78\x5e\x67\x54\x29\x73\x14\xb8\xd0\x26\xbe\xf1\x35\x85\x60\x7e\xad\x97\xab\xfe\xeb\xf0\x55\xc2\xd1\x1b\x3a\x38\x30\x62\x24\x2c\x42\xf2\x6e\xaf\x51\x6c\x73\xbb\x6e\xa4\xad\x23\xdc\x95\x94\x50\x7e\x85\x2f\x55\xdd\x7b\x72\x61\xf9\x08\xb8\x7a\x91\x14\x5c\xf3\x84\x66\xc3\xc5\xf0\x8d\xee\xec\x5f\x49\xb2\x52\x69\x56\xd4\x6f\xc1\x85\x52\x3f\x4a\xfb\x75\x9a\x91\x07\x76\x78\x94\x45\xaa\x02\xe9\xee\x7c\x0f\xeb\xb9\x57\xda\x77\xd1\x28\xb1\x50\x41\xc1\xba\x6c\x8b\x1d\x2b\xc8\x8a\x85\x92\x3f\x76\x88\x1c\x96\xe4\x46\x1c\x5c\xa6\x5d\xd1\xd4\x03\x52\xb6\xe6\xae\xd0\x13\xe4\x36\x1b\xe3\x4c\xda\x66\x22\xb7\xcb\x7d\xef\xa8\xd5\x22\x7b\x12\x07\x8e\xf3\x91\x4c\xeb\x5d\xe8\xd1\x07\x1e\x33\x20\x0b\x62\x1d\x6f\xb0\x3b\x0b\x66\xbd\x99\xfe\xe7\x21\xd6\x0b\x1e\x01\x05\xa3\x29\x3f\x21\xc0\x42\xb1\x02\x32\xcf\x57\x74\x47\x40\x06\xed\x10\x37\x40\x5a\xec\xe4\xde\x67\x53\xf6\x94\x98\x48\x73\xc9\x8d\xe4\x68\xc2\x2f\x46\xfd\x79\xbd\xe9\xf6\xfa\x90\x1a\xd5\xec\x7e\x6c\x4d\xc3\x30\x77\x02\x54\xc3\x8c\xed\x30\x8c\xd5\x18\xc0\x64\x8c\x48\xb9\x23\xac\xc6\x47\xff\x85\x06\x58\x63\x46\x60\x34\xdb\x8c\xc0\x98\x11\x18\x33\x02\x63\x46\x60\xcc\x08\x8c\xa1\xa7\x66\x04\xc6\x70\x0f\x67\x04\xc6\x8c\xc0\x38\x6a\x33\x02\x63\x46\x60\xf4\x3d\x3a\x23\x30\xc8\x8c\xc0\xf0\x6d\x46\x60\xcc\x08\x8c\x19\x81\x31\x23\x30\xce\x32\x23\x33\x02\x63\x46\x60\xb4\xdb\x8c\xc0\x98\x11\x18\x33\x02\xa3\xdb\x66\x04\xc6\x8c\xc0\xe8\x4c\xf6\x29\x10\x18\x3e\x2b\xe6\xe0\x62\x75\xad\xfb\x79\xa9\x19\xf9\xe8\xdf\xaa\x78\xcb\x57\xd0\x36\x87\x68\x42\x8b\x70\xd5\x58\x8c\x64\x85\xda\xef\xa3\x6c\x14\x07\x0e\x21\x78\xe9\xd7\xe6\xcf\x77\xd0\x91\x86\x8d\xc6\x96\xcf\xfa\x0c\xfc\x44\x6d\x75\x60\x70\x09\xc2\xf4\x8c\x7e\xbf\x9a\x70\x6b\x67\x9a\x10\x66\xdc\x46\x66\xd8\x34\x95\x0b\xf7\xe9\x45\x45\x7e\x51\xad\xc0\x20\x58\x83\x60\xb7\xb5\xb3\x9f\x3d\x87\x95\xf8\xe8\xba\xd2\x5d\x0b\xb7\xb7\xa7\xae\x85\x67\x63\x70\x5f\x57\xdf\xe0\x8a\xc8\x1d\xd7\x50\xec\x56\xb6\x0a\x85\x8d\x27\xb4\xe0\xba\x65\x9e\x75\xdc\x03\xae\x5c\xaa\x6d\xf6\xd4\x2a\xcd\x1f\xb2\xc0\x5e\x5d\x2b\xd5\x66\xcf\xad\x14\x1f\xe0\x82\x85\xf7\xe3\x3b\x90\xcc\x09\xc5\xda\x97\xe6\xb6\xe0\x23\x1e\xf7\x54\x4c\xc4\x83\x78\x4d\xa9\x02\x1b\x70\x95\x53\x6d\x88\x1a\x19\x56\x3d\x38\x7c\x61\xf1\xdf\x1f\x80\x3a\x0c\x13\x1f\x24\xe9\x3d\xf2\x35\xe9\xd1\xc9\x19\xd9\x32\xe6\x26\x04\x08\x0d\x29\x34\xfb\x3c\xa8\xbd\xb5\xf7\xd4\x7d\xfb\x25\x62\xae\x61\x8a\xc0\x01\xc6\xf6\x2c\xab\x88\x12\xaa\x75\xc1\x57\xa5\x1e\x39\x83\xcd\xd5\x26\x91\xbb\x9d\xc3\x2b\x79\x80\x04\x60\x9e\xd4\x92\xd4\x5a\x6f\xf3\x8c\x06\x00\xc0\x92\x90\x7b\x36\x5e\x2e\xb1\xd9\x6f\xd8\x91\x7e\xe2\x80\xed\xc1\xd7\xc8\x68\xb2\x75\xf0\xa9\xa7\xf8\xf7\xd7\xea\xfb\x42\x96\xf8\x94\xd9\x17\x37\x15\xe8\xc7\x5c\x51\xdc\xd6\xcc\xc8\xc6\x50\xb1\xdb\x9e\xe6\x79\xc6\x03\xda\x8b\xd9\xdb\x59\x56\xcf\x9c\x22\x50\x82\x1d\x60\x69\xf7\x72\x57\x55\xbe\x35\x93\xe1\x0e\x90\xa0\xf3\xe7\x6f\xe5\x8a\x65\xcc\x16\xe8\xde\x82\xce\x0a\x79\x98\x1f\x0d\xf9\x2d\xcf\xad\x96\x4c\x75\x45\x1a\xae\xc3\xe6\xe7\x71\x5f\xad\x3b\xef\x73\x99\x7e\x4b\xfe\x5f\x61\x74\xa9\x4f\x96\xac\xb9\xe0\x7d\x7f\xfb\xa6\xda\x02\xe6\xa9\xef\xee\x61\x3a\xc9\xef\xc7\xb5\x5c\x43\x41\x31\xbd\xe1\x29\x59\x59\xcf\xb9\x62\x9a\xbc\x10\xec\xd1\xba\xe4\x7d\xfd\x45\xd2\xaa\x03\x3c\x4a\xd2\xf7\x02\x06\x64\x3a\xed\xba\xf2\x92\xfc\xc1\xf6\x38\x67\x85\x07\xd8\xad\x8c\x94\xa6\x05\x23\x1f\x3e\x5e\x8e\x0f\x1e\x30\x4f\xc5\xe3\xa2\x78\x5c\x2c\x16\x0b\x33\xfe\xdb\x35\x29\x05\xd4\x2b\x37\x1d\xf3\x73\x0e\x5f\x37\x22\x62\x27\x53\xbe\x0e\xe4\xb1\x6e\xad\x8a\xd9\x47\x75\xd7\x80\xb5\xa9\x38\xb8\x11\x2f\x87\x01\x6a\x2d\xf5\xf1\x4f\x7f\x7c\xb2\x15\xa0\x28\xc5\x4d\xe4\x5e\x30\xb3\x6a\x18\x40\x4b\x00\x3d\x98\x71\x31\xa1\x8b\x03\x20\x9a\x8e\x72\x69\x8f\xdf\x40\x0b\x99\x40\xe6\x9a\x1f\x95\x39\xa4\x6d\x51\xd9\x6a\xd7\x73\x37\xe7\x4b\xf2\x03\x3d\x10\x9a\x29\x8b\x8b\x1d\x81\x1d\x11\x5b\xbf\xb4\x23\xf0\x96\x04\x8e\x08\xeb\x2f\x5c\x49\xbd\xed\x3e\x10\xac\x67\x7f\x07\x36\xbd\xe6\x2b\x57\x0d\x88\x53\x75\x3e\xf4\x7c\x7b\x9c\x25\xe8\x03\x53\x24\x2f\x58\xc2\x52\x26\x12\xe6\xac\x5a\x54\x87\xd5\x6b\x72\x1e\x4e\x78\x2f\xc5\x47\x29\xf1\x26\xa1\xdb\x06\xf8\xd2\x55\x9d\xad\x8f\x05\xb8\x0a\x1b\x16\xa1\x2a\x60\x12\x12\x52\x2c\x00\xb2\x53\x2a\x77\xee\xda\x82\xf3\x47\x7b\x6d\x4f\x33\x9e\x3a\x28\xe5\x38\x17\xec\xe8\x86\x11\xaa\x2b\xa6\x32\xc7\x90\x50\x25\x24\xbc\x37\x4a\x9a\x26\xa9\x64\x35\x74\x87\x2a\xf2\xe3\xed\x9b\x51\x92\xaf\xc8\x0b\x28\x89\x0d\x7b\x77\x4d\x79\x06\x5e\x68\xa8\xdc\xda\x29\x0c\xbb\xf6\xe4\xcd\x50\x46\x69\x02\x7f\x13\x59\xd8\xca\xf6\x57\x44\x48\x5b\xfb\xc0\x8d\xd3\x48\x2d\x2f\xe1\x9c\x29\x38\x98\x30\xbe\xbd\x55\xa6\x6c\x87\x71\x5b\x9b\x48\xbf\xd4\x76\x18\x1b\x28\xae\xc0\x3f\xf0\xf4\x8f\x8a\x8d\xd6\xcd\x3e\x12\x6e\x3f\x9e\x58\xb8\x35\x55\x21\xc3\xe0\xed\x19\xb2\x9c\xba\x63\x9a\xa6\x54\x8f\x6f\x13\x2b\x10\x6b\x94\x20\x72\xad\xc7\x3d\x38\xe3\x62\x71\x68\xad\x47\x69\x86\xf9\xa0\x57\xf4\x05\x8e\xcf\xaf\x23\x16\x15\x7b\xc7\x45\xf9\xd9\x2a\xb6\x78\x93\x97\xe1\xa3\xfb\xb7\xf0\xaa\x2d\x3a\xf2\x59\x3b\xd5\xcb\xea\x89\xe9\xb1\x2e\x38\xbe\xaf\x6f\x5b\x6b\xdf\x2d\xa8\xe1\xa5\x1c\x08\x0b\xa3\x37\x02\xde\x7c\x9c\x9b\x0a\x2a\x52\xb9\x3b\xea\xa5\x39\x83\x40\xcb\x6e\x58\x48\x9b\x9c\x86\xe1\xa6\x5f\xab\xc4\x89\x3c\x80\xb1\xde\x03\xb8\x66\x45\xb9\x0f\xde\xc1\xc5\x8c\xab\x6a\x75\xec\x4d\x0d\x82\x85\xf0\xd7\x0d\x52\xfb\x0e\x50\xe3\x21\x31\xde\x83\x42\x0e\xd7\xa5\xef\x1d\xd3\x47\x99\x31\x1b\x81\xe5\x07\x65\x48\x3c\xab\x31\xc1\x83\x31\x63\xfa\x64\x6e\xad\xad\x31\xc1\x3d\xf6\x39\x8d\xa9\x0c\x1c\x7f\x47\x63\x32\xe7\x65\x7b\x4c\x70\x68\x3d\x9f\x31\xa1\x6c\x9a\xcd\x6b\x3a\xdc\x6f\xf0\xb2\xfb\x86\x64\x5c\xc1\x61\x0f\xd7\x7b\xd5\x14\xd9\x80\xeb\xe7\x05\xc4\xde\xc8\x60\x1e\x56\x0b\x0a\xef\x88\xd3\x2b\xb8\xf4\x3b\x73\xea\xd1\x1c\x05\x2a\xaa\xe4\x05\xdf\xd1\xe2\x60\x2e\x60\xcb\xe3\x43\x41\x48\xdf\x65\xaf\x35\xd2\x34\x0d\xd7\x99\x32\x37\x4f\xd4\x22\x21\x30\x90\xd8\xd3\x17\x7b\xfe\xe2\x10\x6b\xea\xa0\x12\x9d\xe1\x97\xf8\xde\x3e\x0f\xa6\x30\x42\xab\xf5\x16\x74\xc7\x54\x4e\x13\x96\x7a\x8a\x80\xba\x0c\x0d\xb8\x8e\x2d\xbc\x93\xa9\x8b\xe7\x2a\x45\xed\xcb\xf6\xb4\x5e\x38\xa3\x0a\x4e\x7f\x74\x67\xfa\x4b\xb2\xe3\x9b\xad\xae\x6e\x1c\x19\x2d\x45\xb2\x7d\xe2\x2a\xf5\x4c\x86\x8b\x15\x33\xfb\xfe\x81\x15\x82\x65\x24\xa7\x05\xdd\x31\x00\x05\xa1\x6e\xde\x78\xb0\x29\x0e\x68\xda\x83\xa1\x5b\x13\xea\x3f\x73\x70\x20\xe0\xb0\x14\xc2\x7b\x9b\x91\x00\xd3\x56\xc7\x7e\x02\x15\xe4\xbc\x3d\xc3\x01\x4b\x11\xa0\x52\x0c\xa0\x34\x2a\x13\xf2\xf8\xb6\x7c\xe4\x22\x95\x8f\x6a\x8a\xf2\xfc\xb3\x7d\xd5\xeb\x76\x49\x65\x64\xee\x28\xd0\xa3\x43\x69\x28\xd7\xbd\x0a\xb4\xb4\x1d\xf3\x95\xe5\x28\x5a\x0c\x77\xaf\x33\x5e\xdc\x1a\x69\xb1\xfc\x95\x28\xbb\xa7\xd0\x6c\x37\x3b\x45\x5f\x17\x86\x9e\xe6\x34\xbb\xcf\x23\x8b\xc0\x7d\xff\xc3\xfd\x4d\xfb\x75\xa3\x78\x3c\x42\x2c\xa8\x19\xb1\xf9\xbd\x8e\x90\x0e\xee\xa7\x47\xb6\xda\x4a\xf9\x40\x5e\x78\xc7\xd7\x86\xeb\x6d\xb9\x5a\x26\x72\xd7\xf0\x81\x2d\x14\xdf\xa8\x6b\xc7\x9a\x0b\x33\x82\x70\x70\x15\x17\x19\xc8\x46\x2f\xbd\x21\xea\xdb\x59\x03\xa0\x93\x49\x35\x0a\x58\x20\xd8\x89\x88\xda\x75\x87\x8a\x42\x7b\x1a\x40\xda\x55\x51\xe2\x55\x6c\x3b\xa2\x7c\x17\xcd\xf2\x2d\x75\x8e\x1d\x17\xb3\x06\x71\x89\x5b\x29\xa4\xf3\xe3\x5b\x38\xb6\x33\xd9\xd9\x78\xf6\xb0\xa8\xaa\xb7\x24\x8c\x77\xcd\xa8\x2e\x0b\x46\xd6\x19\xdd\x9c\x4c\x55\x3d\xe6\xa6\x31\x1f\xa0\x6f\x01\x8e\x82\xa9\x74\xe1\x8a\x0d\xd8\x50\x70\xc4\xbd\xcb\x6a\x2d\x38\x9d\x35\x69\xce\x79\x78\x7d\xd0\x6b\xd2\x9d\xf3\x20\xe9\xb3\xac\x49\x65\x42\x8b\x5e\x0a\x30\xa5\xb9\x17\x8d\xac\xf2\x12\xbd\xd7\xb4\x16\x1c\xdc\x51\x8d\xce\x5e\xf3\x9a\x79\xa4\x6d\x62\x43\x6c\xed\x8e\x09\x2e\x64\x66\xc3\x50\x3c\x16\xe1\x4f\x3a\x15\xc8\x79\x4f\x06\xd2\x77\x3a\x0c\xf3\xb8\xe5\x61\xc4\x3c\x44\xb3\xf9\xc7\x26\xb3\x7d\x0d\x7e\x3f\x09\x80\xc1\x06\xf9\xdf\x24\x50\x8d\x17\x8d\x62\xb8\xbc\x3f\x7a\xaf\x47\x6c\x91\xf6\x53\xc3\xee\x74\x1b\x1f\x51\xed\x35\xae\xec\x05\x05\x87\x45\xd2\x54\x3d\xd4\xd0\x10\x06\x79\x61\x6a\x04\x48\xfd\x77\x37\xd4\x05\xb5\xbd\x09\xa4\x8d\x19\x99\x7d\x2d\x33\x66\x21\x28\x38\xa0\x5a\x2f\xe4\xe3\x52\x35\xe9\x0c\x71\x44\xe0\x76\x74\x9c\xa0\x46\xa6\x76\xfe\x3e\x55\xb4\x61\x3f\x68\x0d\xe5\x7b\x41\xea\xd8\x5f\x46\x2d\x22\xe6\x8e\x6d\xe6\x4f\x5b\xde\x87\xf4\x40\x4e\xa1\xd0\x05\xcf\x33\x46\xfe\xf2\xc0\x0e\x57\x36\x4b\x0b\x5b\xaf\x59\xa2\xff\x83\x94\x2a\xc0\xae\x00\x53\xd3\xc9\x96\x8b\x0d\x31\x1a\x1b\xd5\xb2\x20\x7f\xf1\xff\xf5\x1f\xc3\xbb\x02\xa7\xe0\xd9\x7e\x44\x5c\x25\xdf\xc2\x0b\x9d\x9c\x2c\x76\xd8\x96\x96\x99\x2e\xe8\x71\x68\xc3\xbe\x85\xa4\x11\x3b\x46\x85\xf2\xb9\x94\xb2\xac\x45\x4a\xb9\x54\x3e\x48\x84\x15\xf1\x80\x3c\x8f\x26\xa1\x05\x23\xef\xe5\xbd\xc3\xe4\x5c\x91\xbb\x82\xad\x59\x51\xff\x25\xe8\x15\x26\xe4\xbd\x7c\x6b\x13\x1e\x8c\x8f\x06\x29\x7c\x1e\xd8\x60\xda\x24\xdb\x5a\x53\xfd\x37\x76\xf0\xf2\xc1\xce\xca\x03\x3b\xd4\x5e\xd8\x7a\x23\x84\x26\xc5\xda\xf2\x88\x96\xcb\xd1\x39\x7f\x60\x07\x7b\x89\x0a\xeb\x4e\x0f\xb6\x67\x80\xfa\xb9\xaa\xd9\xd2\x23\xa3\xdf\x7e\xe6\x4a\xab\x7f\xb3\x9b\x2a\x91\xbb\x95\x2b\x90\x1d\xa0\x6a\xbb\xe5\xd9\x07\x7a\xe6\x17\x52\xa4\xf0\x4f\xe8\xe2\x29\x16\xc2\x77\x39\x62\x35\x3e\xf8\x51\x16\x2c\x2f\x98\x82\xfb\x01\x35\x3d\xba\x54\xa4\x60\x99\x15\x49\x5b\x9e\x87\x8e\x29\x59\x9f\xe7\x4b\xf2\x13\xcd\x78\x5a\xf5\xc6\x72\xac\x9d\x3d\x18\xf3\xdb\x7f\x94\x34\x0b\xed\xa3\xa6\x76\x64\x5f\xf0\x24\xcc\x12\xfd\xa3\xe4\x7b\x9a\x31\x1b\x25\xfe\xc8\xb3\x34\xa1\x45\x88\xe9\xd7\xb2\xf0\xc9\xa4\x94\xcb\x0b\x01\x10\x26\x92\x50\x51\x89\xc2\x9a\x73\xcc\x3d\x29\xc4\x83\x24\xa7\x85\xe6\x49\x99\xd1\x82\x18\xb9\xb1\x91\x45\x20\xff\x03\xf6\x3c\xaf\xb6\x01\x02\xb3\xde\x15\xfe\xdd\x77\x9b\x6b\xab\xb7\x55\x29\xf7\xe0\xf0\x2c\xfe\xa0\xb5\x29\xc9\x8b\x76\xf2\x39\xb9\xf6\xf2\xb1\x12\x29\x21\x69\xd6\x40\x8c\xb6\x14\x35\x9b\xa9\x27\x7d\x59\x9f\x4a\xb5\x8c\x08\x31\xcb\x5f\x0f\x1e\x7c\xd3\x4c\x6d\x02\xb0\x27\xd7\x5f\xb7\x09\xdd\x22\x87\x65\x81\x15\x1e\x6b\x59\xb0\x3d\x2b\xc8\x8b\x54\x02\x45\xb6\xe7\x89\x7e\xb9\x24\xff\x0f\x2b\xa4\xcd\x00\xc2\x36\x14\x22\xbc\xec\x96\x0e\x10\xad\xa0\x67\x75\xc9\xeb\x57\xe4\x05\x10\x25\x7c\xb7\x63\x29\xa7\x9a\x65\x87\x97\x15\x68\x1d\x91\xeb\xe5\xf4\x76\x6b\x84\x31\xb1\xc7\x90\xd8\x12\xe9\x2e\x85\x52\x9b\x75\x9c\xea\x10\x94\x24\x5e\x5a\xd7\x12\x98\x2b\xb7\xf7\x5b\xb7\x06\x9f\x9b\xc8\x09\x6c\x34\xdb\xfd\x6f\xc3\xbb\x94\x14\x6c\x03\xfb\xd6\xee\xc5\x13\xec\x5a\xb4\x0e\x3e\x64\x7b\x1c\x21\x30\xf8\x53\xc1\xf2\x8c\x27\xf4\x48\x3e\xf4\xc6\x1f\xad\x21\x2d\x06\x15\x09\x9c\x9b\x24\x65\x79\x26\x0f\x0e\x42\xfe\x36\xa3\x4a\xf3\x44\x31\x5a\x24\x5b\x62\xee\x93\x2b\xaa\x8e\xf4\x83\xb1\x18\x90\x61\xfe\x72\xea\xf6\x27\xb6\xcb\x33\xaa\x8f\x78\xab\x6d\xd4\x6f\x3f\x0b\x2a\xab\x70\x06\x4f\x0a\xb0\x83\x1a\xf6\x0d\x5d\x77\xc4\x8f\xe6\x13\xd2\x4e\xd8\xbc\x41\x52\xb1\x6a\x44\x9d\xe7\xc6\xf4\x49\x7f\xb1\xee\xdb\x0b\x9d\x2b\x90\xa6\x22\xa5\x45\xea\x56\xe8\xf2\x52\x55\x2f\xf7\x5e\x5d\x36\x5c\x2f\x1f\xfe\x0c\xf7\x96\x44\xee\x76\xa5\xe0\xfa\x70\x0d\x79\x14\xf9\xaa\x34\x47\xe6\x75\x6a\x2e\xac\xd7\x34\xe7\xe6\xfe\xb2\x67\xc2\x5e\x0d\x76\xe9\xef\x3c\xdd\xbe\x2b\x4b\x48\x39\x86\x3c\x6c\xe3\xb7\x95\x33\x67\x35\xbd\xa9\x7b\xe0\x56\xb6\x74\x69\xa3\x4a\x73\xd3\x36\x1a\x98\xdd\xdd\x3b\x9a\x13\xa5\xcd\x81\x30\x62\xa4\xd7\x5b\xd8\xc7\x16\xeb\xef\xef\x27\x07\x8f\x2a\x5a\x1d\x08\xfb\xac\x59\x61\xd8\x46\x4b\x99\xd9\xec\x2b\x7a\x2c\x0d\xa9\x11\xe9\x05\xd3\x05\x67\x7b\x46\x68\xb1\xe2\xba\xa0\xc5\xa1\xb1\x96\x9f\xb6\xec\x00\xea\x8c\x39\x0d\xfe\x51\xb2\xe2\x00\xa6\x80\x31\x8d\xbb\x96\x53\x70\x08\x17\x7b\x96\x92\x47\xa3\xff\x5b\xec\x2d\xdc\x80\x80\x6b\xd4\x11\xab\xf4\x5f\x72\x4b\xc5\x8a\xc5\xa6\xe4\x29\xbb\x6e\x2c\xe8\xc4\xcc\xa7\xa3\x3f\xab\x01\xbb\x78\x87\xf9\x9d\xa7\xc3\x6e\x49\x77\xdd\x4f\x99\xb2\xe1\x57\x6c\x4b\xf7\x5c\x56\xc9\x23\xdc\x6e\xed\x17\xb7\xa7\xdd\x29\xa6\xf7\x0b\x2a\xd2\x85\xcd\xf8\x35\x65\xc3\xb8\x54\x9a\xb7\x77\x38\x4b\x48\xf5\xb8\x3f\x0d\x6f\xef\xcc\x86\x2a\x20\xbc\xb3\x35\xfe\x51\x8e\xe1\x8a\x94\xaa\xa4\x59\x76\x20\x36\xbf\x2d\x4b\x1d\xe8\x29\x3b\x78\xd5\x60\x47\xcd\x97\xe0\xa8\xa4\xc2\x7f\x64\x8c\x62\x6d\x64\xdb\x51\xe1\x88\x5b\x93\xae\x61\x65\x2e\xc0\xec\xb2\x72\xc9\x38\x15\xa8\x51\x46\x5d\x19\x24\xb9\x62\x15\x5e\xab\x02\x18\xb8\xc1\xfd\x5b\x7d\xd8\x5e\xb9\xf4\x9d\x35\x63\x0c\x89\x6b\xdf\x40\x47\x5a\x53\x9e\xb5\x0c\x79\x46\x45\x77\x39\x24\x6d\xb0\x40\x4a\xf4\xb6\x90\xe5\x66\xeb\x72\x4a\x8e\x5c\xa0\xec\x6d\xa4\x71\x79\xbe\x78\x2f\x05\xbb\xb8\x72\xf9\x1d\xad\xf4\x22\x2f\x2e\x2e\x5e\x5e\x11\x38\x0a\x01\xc4\x4a\x6e\x87\x33\x32\xb9\xe9\x5e\x3a\x4a\xd0\xbb\x55\xd3\x8e\x69\xce\xa5\x2d\xa3\x69\x66\x56\xde\x8d\x18\xfc\x43\xc3\x97\xc5\xbc\x90\x9f\x41\x18\xf8\xbc\x7c\x55\xe4\xd7\x07\x61\xd6\xaa\xba\xee\xba\x20\x8b\xd7\x9e\xd7\x86\x15\x9f\xf7\x32\x65\x77\xb2\xd0\x57\xb0\xd2\xef\x24\x4d\xff\x4a\x33\x73\xfa\x1b\xbe\xb1\xda\x36\x04\x7f\x39\x2c\xd0\x5b\x27\x2c\x21\x0b\xef\x20\xd1\xc8\xa0\x40\x3f\xf8\x85\x60\xda\xa5\x48\xf4\x7f\xbb\xfe\xdd\x9e\x17\xba\xa4\xd9\x82\xe7\xca\x6e\x54\x67\x96\x33\x73\xc1\x87\x83\x51\x83\xa7\x8e\x17\xfb\xb7\x77\x38\xab\x5c\xe3\x79\x0b\x20\xf2\xb8\x8a\x7a\xff\xba\xd4\x0d\xe3\x09\x73\x85\x4c\x99\xaa\x12\x37\xda\x05\xf2\xd0\x46\x65\x03\xbd\x73\x4d\x74\x41\xd7\x6b\x9e\x38\x00\x06\xaf\x18\x64\x09\x81\x26\x23\xc9\xa2\x4d\xf7\xfc\xd9\x63\x03\xde\xc0\x36\xfd\xb7\x7a\xfa\x6d\xa8\x4a\xe9\x80\x50\x05\x53\xb9\x14\x8a\x8f\xf9\xc9\x00\x35\x29\x54\x59\xd8\xd4\xbd\xb4\xee\x1e\x2d\x0a\xbe\x37\x3b\x46\xbb\x7c\xe1\x3e\xa3\x2e\x57\x90\xb0\x8d\x0c\x3b\x76\x5c\xa0\x15\xfb\x4c\x77\xb9\xc5\xce\x55\x07\x71\x26\x69\xba\x58\x39\x36\x74\xf6\x74\x3f\x26\x73\x99\x1e\xa4\xe9\xc4\x47\x3d\xd8\xc0\xed\x28\x60\x2e\x45\x68\x2e\x21\xa0\x80\x1f\xd3\x27\x3b\x61\x77\x32\xe3\x09\x2e\x7f\x78\xef\x9b\x24\x65\x42\x9a\x71\x41\x3c\x26\x57\x5e\x13\x76\x47\xe9\xb0\x70\xd7\x92\x14\xb2\xd4\xac\xa1\xed\xb8\x25\xd4\x12\x16\x6e\x61\xc4\x74\x66\x64\x9b\x4f\x0d\xfd\xc8\xd3\x46\x32\xdf\xe1\xcd\x7e\xf1\x4e\x42\x02\x69\xaf\xb9\x38\x47\x72\xc6\x99\xd0\xc4\xa9\x5d\x66\x8f\x88\x94\xd0\xbd\xe4\xa9\x4d\x53\x9f\xc8\x91\xc3\x6d\x2b\x73\x60\xba\xa6\x38\x02\x02\x46\x5a\xd9\x94\x08\x46\x1e\x79\xb9\x71\x45\x56\xa5\x26\x05\x57\x0f\xc3\x13\x90\x4b\x6d\x7d\x9d\xd9\x81\xf0\x9d\x63\xae\xb4\x9a\x05\x95\xdb\x04\xc8\x9b\x25\xb9\x70\x52\xf3\x82\xc8\x95\x4a\xca\xd1\x59\x1d\x1a\xa8\xd1\x30\x13\xea\xd2\x94\xc2\x58\x61\x4c\x00\x47\x83\x73\x6f\x54\x3c\xd8\xf1\x38\x9d\x70\x4b\xf7\x8c\x6c\xa4\x4c\x89\xdc\xb3\x82\x66\x6e\x7b\xd4\x1d\x9e\x2a\x00\x6d\x2a\xd2\xd7\x5b\x96\x3c\xf8\x43\x00\xc5\x98\x3d\xef\x75\x73\x50\xc2\x13\x89\x79\x02\xc6\x73\x37\x96\x9d\xc1\x43\xcc\x2a\x01\x77\x1c\x98\xfa\x9f\x3d\x5f\x1c\x41\x0b\xf8\x40\x3b\x6f\x20\xf1\xda\x54\xce\xc9\x8a\x26\x0f\x4c\xa4\x75\x56\xf2\x5a\x3d\xf1\x1d\x1d\x66\xf4\x9f\x8d\x90\x36\x6b\x0a\xca\x75\x7d\x90\xfb\x37\x7d\x72\x86\x86\xfb\xc6\xf5\x61\xb8\xab\xc0\x3c\xee\xf8\x76\x96\x7f\xab\xf8\x7b\xf0\xad\xb2\xd1\x8f\xdd\x9d\x30\x48\xf1\x6d\xaf\xd8\x68\x12\x4a\x86\xed\xaa\xa7\x49\x7c\x9f\x35\xfa\x8a\xd5\x8a\xbb\xfa\x8b\x97\x6b\x9f\xe0\x6b\xad\xd1\x37\xff\x31\xae\x21\x6e\x98\xae\x98\xa1\x5a\xf1\xdb\xbb\xb6\x2f\xb9\x5d\xb3\x60\x84\xad\xbc\x47\x36\x65\x39\x13\x29\x24\x01\x7c\xdc\x32\xed\x4b\x10\x94\x22\x65\x45\x06\xda\x59\x92\xc9\x32\x5d\xb8\x14\xe3\x85\xcf\xfb\x33\x4c\xd9\xf6\xe7\xe0\x12\xe3\x77\xe6\xcf\xb2\x03\x85\xbf\x12\x7f\x28\x9a\x05\x75\x23\x1b\xe6\xd7\x86\x6a\xec\x8d\x8a\xbc\xa1\xd1\x81\xec\x6a\x75\xd4\x07\x8d\x0d\x77\xd4\x8e\xc4\x02\x85\xed\x74\x0c\x46\x2a\x07\xe5\x4f\x73\x98\xf7\x20\x3d\x3f\x1a\xa5\x1d\xa7\x8d\x5d\x36\x9d\xa4\x36\x27\x55\x85\x48\xf5\xd1\xbd\x19\xd5\x86\xa1\xaf\x60\x89\xc7\x39\xa5\x60\xa6\xa3\x49\xad\xd8\xf8\x8b\x43\xcf\x2c\xb5\xb4\x93\x71\xb2\x90\x22\xdf\x52\x6e\x5c\x80\xaa\x6e\xbb\xa3\xe3\xf6\x4e\x35\xef\x31\x41\x92\xb8\x45\x6c\x2e\x56\x88\xa7\x97\x17\x51\xbe\x73\x9b\x8c\x68\x01\xdb\xd5\xde\xe8\x7d\x3d\x89\x86\xfb\xbc\xdd\xad\xc5\x9a\x17\xec\x91\x66\xd9\xa0\x1b\xfd\xfc\xba\x18\x6c\x42\x1c\x77\x19\x0d\xd9\xeb\xf7\xf0\x5a\xad\x84\x5a\x53\xa1\xe3\xb2\x86\x62\xfe\x9c\x2f\x43\x31\xb0\x00\x27\x79\xe1\x40\x73\xb0\x08\x05\xdd\x37\x47\x03\xdc\xd1\x85\x1f\xf3\x28\x8e\x34\x1f\x3d\x4b\x71\x2e\xfa\x30\x94\xfa\x08\xd1\x50\xc3\x49\x00\x15\x52\x68\x8f\x7f\x0d\x1a\x96\xea\x06\x7b\xb1\xca\x75\x45\xde\xbc\xbf\xff\xe5\xdd\xcd\x5f\xdf\xbe\x5b\x92\x9b\x2c\x73\xfc\x50\xa1\x6a\xdd\x7c\xdd\xe7\x2c\x09\x39\x79\x0d\x45\x50\xe7\x4a\xc1\xff\x51\xda\xbe\xfa\xad\xbf\xa3\x79\x05\xf2\xba\x34\xb7\xeb\xcb\x80\x34\xb0\x8d\x0b\xf2\xd6\xa9\xe8\xb0\x62\x95\x95\xd0\x27\xab\x30\x52\xa2\xaa\xdd\xd0\x58\xdb\x10\x5d\x55\x95\x57\x91\x02\xc9\xe8\x04\xef\xba\x14\x01\x85\xd3\xb6\xe3\x3d\x09\x0b\x2a\x5d\xd0\x09\xdc\x37\xe1\x14\xb6\x89\xb6\xea\x3e\x86\x07\xe7\x77\x31\x1c\xae\xa6\xd3\xff\x5e\x69\x96\x9d\x7b\xc7\x92\xfc\x68\xed\x6c\x21\x3f\xaf\xb7\xc2\xb5\xfd\x72\xdd\x82\x3e\x35\x9c\xba\x52\x3d\x71\x6e\x73\xaf\xc6\x02\x80\x0f\xfc\x16\xe6\x56\x9e\x29\x16\x6d\x3d\xb3\xad\x61\x43\xf3\x99\x35\x39\x70\x20\x2d\xb5\x5c\xd4\x61\x96\x76\xce\x39\x06\x1b\xe1\xdd\x32\x46\x75\x95\x9d\x0b\xaa\x33\x55\x19\xb5\x09\x9f\xe3\x07\x97\xe5\x67\x54\x62\x9a\xb5\x85\x02\x49\x66\x18\xe3\xd9\x05\xb1\xb9\xcb\xf0\x5e\xd2\x70\x12\xc2\x1e\x44\x56\xe1\x50\x54\x9e\x4f\xa2\x0f\x9c\x73\x8c\x25\x1c\xa4\x11\x48\xc2\xf7\x64\xc7\x27\x21\x8a\x01\x52\xfe\x66\xbd\xe6\xc2\x82\x3f\xd7\x7c\x83\x3a\xcf\x7b\xdf\xac\x4f\x37\x87\xbd\xad\x7d\x86\xc3\xe7\x1a\x64\xf9\xb3\x19\x57\xa8\xa3\xf6\x94\x24\x71\x56\x03\x1c\xbe\x24\x1d\x8d\xc4\xbf\x30\xd6\x79\xd3\xc9\xd7\xf0\xdc\xe8\xc2\xdf\xde\x91\x15\x35\x8c\x85\x1d\x10\x76\x50\x24\x2a\x99\xe2\xd1\x10\xdb\xaf\x76\x4c\x0b\x3e\xc5\x62\x10\x97\x42\xdc\x14\xdc\xde\x79\x5b\x91\x1d\xa4\xd2\x3c\x79\x38\xc0\x47\x6c\x0e\x1d\xe7\x4a\x2c\x55\x18\xf3\xbb\x62\xe4\x3f\x5e\x91\xff\xf9\x3f\xc9\x5f\xfe\xfd\xcf\x7f\xfa\xe3\xab\x57\x2f\xd6\xb2\x20\xdf\x90\x94\x1e\x5e\x1a\x01\xe9\xd1\xab\x6e\x1a\xc9\xbf\xff\x7b\x90\xe2\x85\xef\xe4\x45\x2d\x85\xeb\x14\x8f\xaf\xfe\xec\xbe\xf1\x07\xb2\x95\x65\xa1\x5e\x86\x14\x17\xfc\xae\x8f\x8d\x50\x7c\x1a\x6a\x78\x2c\xf4\xb8\x7d\xc8\xbb\x4c\x59\x9a\x15\x3b\x88\x49\xd9\xda\x24\x51\xd5\x31\x52\x1f\xdd\x88\x5c\xc6\x5a\xd6\x1e\x90\x1a\x70\x66\xf7\x88\x85\x9b\xd5\xce\x8c\xab\x86\xb3\xa4\x76\x8a\x8c\x3a\x81\xdb\x5a\xc2\x45\x93\xda\x45\x4b\x9f\xab\x6f\x7c\x0c\xe5\x3e\xb9\xa8\xba\x72\x51\x69\x09\x50\x5a\xc3\x59\x66\xcd\xa2\x81\x0d\xb7\xe1\x3a\x84\x1c\xcd\xf5\xcd\x74\x14\x83\x22\x1b\x66\xdd\x4a\x7d\xb4\x53\x52\x4d\x7d\xc3\x7c\xe6\xea\x7f\x8e\xe4\xb0\x68\x64\x07\xec\x98\xee\x56\x07\xe7\x4a\x84\x24\xd5\xbe\xf6\x93\xcd\x08\x55\x7f\x7a\x58\xdc\x02\x4f\x81\x12\xd5\xf2\x9b\x7a\xef\x9c\x90\xc4\x5d\x89\x88\xfd\x21\xac\x54\x51\x57\x3e\x93\xb5\xc6\x9d\x97\xab\x8c\xab\xad\xc5\x5b\x51\x30\x96\xc9\x75\xe3\x99\x82\x8e\x5a\x6d\xf5\x96\x9a\xbb\x80\xd2\xe0\xe9\x37\xdc\x76\xe1\x79\xe8\x82\xac\x4a\x9e\x59\x7b\x51\xb5\xae\x1e\xd6\x69\x97\x76\xb8\xaf\xb5\xc2\xbb\x67\xc5\xc1\x79\x58\x40\xdd\x05\x6b\x7e\xc5\x61\x49\xcd\xe6\x17\x4d\xb6\x1c\xce\xb5\x55\x77\xaa\x52\x7c\x21\xfd\x1d\x18\x95\x00\x74\xd1\xef\x8e\x21\x2f\xf8\xb0\xe8\xad\x6d\x30\xde\xbf\x55\x16\x05\x13\xda\xda\x28\x5e\x06\xba\xfe\x45\x6e\xd0\x6e\xa1\xb9\xd8\x2c\xaa\xe7\x16\xd5\x3d\x1a\xdc\xa6\x13\x2d\x5a\x53\x90\x59\x4a\xcb\x82\x6e\x02\x60\x27\xfb\x0c\x00\x53\xac\xa1\x10\xa4\xa2\x7b\x95\xa8\x2d\x6d\x84\x67\x76\x08\x8d\x1d\xd7\xd6\x8a\xf3\x83\x4c\xfb\xcf\xf2\x0e\x26\xa7\x7e\xb8\xad\x7a\x78\x0c\x87\x4b\x50\xbd\x83\x27\x86\xae\x0a\x2e\x4d\x5f\xc3\xb3\x11\x9d\x40\xd6\x0d\xfb\x3a\x67\x85\xe2\x4a\x33\xa1\x17\x96\xaa\xfa\x9d\x33\x4b\x41\x17\x16\xdf\xf4\xad\xe2\x88\x1d\x04\xb5\xb8\xfd\xba\x69\x4a\x35\xb5\x06\xcc\xe0\x3c\x36\x4c\xb2\xd5\x85\xc8\xcc\xe2\x4f\x30\x84\x7b\x41\x73\xb5\x95\xfa\x4d\x45\xd0\x46\x26\xf5\x76\xd8\x9b\xa3\x37\x80\x55\x85\xf8\x2d\x57\xbe\xd7\x6e\x64\xbb\xf3\xb2\x43\x87\xb6\x43\x9d\xf4\x92\x04\x3b\x41\xbd\x87\x21\x5e\xcc\xfa\xb5\x2a\xb8\x25\xd8\xf3\x8c\x22\xc5\x0a\x40\x34\x78\x23\x63\xfb\x23\xbd\xd4\x1b\xe4\xea\x7b\xb0\x95\x37\x84\x12\xc1\x1e\x3d\x7b\x98\xee\xc3\xc3\x4d\x1b\xea\x20\xca\xcb\xa3\xca\xdd\xbb\xd6\x38\xad\x20\x23\x3d\xdf\xf5\x77\xbc\x6b\x22\xed\xa5\xdb\x99\xb6\x56\xef\xdd\xc7\xaa\x0c\x89\x2b\x56\xf9\x19\xdc\xf1\xd2\xbf\x64\xb6\xd6\x5d\x63\x5c\x6e\xa6\xa9\x15\xb8\x7b\xf0\x05\xdd\x5a\xd1\xb9\x2e\xcd\xf2\x5e\x91\x47\xb0\x64\x0b\xa2\x65\xff\xa5\xc8\x2d\xc0\x0e\x2a\x98\xd6\x9d\xf4\x69\x36\xdd\x69\xd7\x85\x58\x35\xa6\xa3\x97\x2c\x38\x30\x01\x44\xd3\x27\x96\x83\x18\xc2\x9c\x8f\xa6\x5d\x6c\x67\x24\xb9\xbb\xb5\x09\x36\x1d\x1e\xca\xa6\x1d\xf5\x6e\xc1\x0a\xb9\x67\x0b\x07\x43\x18\x0b\x13\xc9\x98\xdf\xe3\x76\xdd\xa2\xd9\x93\xe5\xb6\x56\xc8\xfe\xc6\x45\xda\x48\x8e\x3f\xee\xe9\x35\x53\x7c\x73\x77\x6b\x7b\xb8\x24\xdf\xc9\x02\x22\x9f\xa4\xf3\x01\xf1\x22\x5d\xe4\x14\x52\x24\x98\xb9\xbf\xaa\x7a\x31\xac\x37\x35\x92\x37\x4f\x75\xa3\x3c\xf0\xe1\x2a\xa7\xed\x98\x1a\x5e\x97\x36\xd5\xce\x44\x33\x38\xbb\x53\x7b\x33\x66\xb1\x3d\x4e\x79\xd1\x09\x01\x3c\x71\x6f\xc6\x6c\x16\x0b\x98\xb7\xde\x1f\x06\xf2\x4c\x8c\x5e\x72\x46\x33\xd1\x77\x93\x80\xd7\x79\xbb\x5b\x11\x17\x3e\x0d\x78\x9d\xd8\x3b\x90\x26\xf6\x4c\xc7\x68\xf5\xfd\x29\x60\xc8\xf1\xac\xf7\x67\x06\x0e\x9f\x28\xd3\xfd\x33\xca\x72\x8f\x28\x81\x30\x9e\xdd\xfe\xcc\x33\x7e\xb2\x8c\xf6\xe7\xc8\x66\x3f\x2d\x93\x7d\x8d\x4b\x1d\xbb\x40\x47\x64\xb1\x7f\x56\x1c\x33\x0e\xe5\x76\x57\xfd\xa0\x10\xbb\x71\x09\xd3\x00\xdc\x0e\xb8\x24\x27\xa7\x94\x2b\x03\x04\xe5\xa8\x60\xa5\x56\x5c\x0c\xa1\x94\x42\xb2\x04\x62\x81\xde\x7e\x36\x42\x52\xa1\x83\xa7\xbb\x2f\xb5\xb1\x9a\xb6\xdb\x95\x49\xc3\xf1\x9a\x59\xc4\x11\x80\xdb\xa7\x2d\x6b\x3d\x09\x06\x83\x9b\xf7\x6f\x86\x0f\xed\x18\x7f\xeb\xcd\x48\xa7\x6c\xe7\xab\x5f\x0c\xdf\x8e\x58\xea\xaa\x7b\x99\x85\x31\x5f\xd9\x18\x4d\x0b\xec\x85\xf0\x18\x17\x29\x05\xec\x0f\x71\x9b\x23\x57\x35\xdb\x1e\x98\x45\x80\x5b\x8a\x4f\x75\xe7\xc6\xc5\x00\x3f\xd4\x31\xc0\x76\x86\x5a\x31\xc0\xd5\xa4\xe0\xf2\xf5\x69\xf9\xb5\x82\x67\xe5\xc9\x82\x67\x2b\xb3\x94\x5b\x8d\xde\x10\xda\x5b\x71\x45\xde\x4b\x6d\xfe\xcf\x86\xc3\x85\xdc\x96\x22\x25\x6f\x24\x53\xef\xa5\x86\xe7\x4f\x32\x4d\xb6\x83\x11\x93\xe4\x80\xf7\x36\xda\x07\x6e\xd9\xe0\x69\xb1\xa8\x7b\x3f\x5c\x54\x7c\x76\x33\x1e\xf0\x56\x10\x59\xf8\xd9\xa8\x82\x02\x95\xfb\x80\xd7\xfa\x85\x14\x0b\x5b\xc4\x21\x40\x7a\x30\xe2\xd0\x7c\xa5\x39\x87\xcd\x8f\x85\xa6\xbf\xd5\x15\x57\x4b\x02\xac\x04\xf6\x17\xb8\x21\xe4\x19\x64\xed\x4b\x2d\x00\x7b\x3c\xf1\x2d\x31\xb3\x46\x35\xdb\xf0\x84\xec\x58\xb1\x61\x24\x0f\x67\x24\x40\x95\x7f\x8e\x4b\x34\x1a\x48\x9e\x86\xf1\x27\x3e\xb0\xe1\xf7\x17\xd5\x32\x9c\xd3\xe3\x08\x87\xc9\x3b\x23\x7c\xbe\x92\x82\xd5\xe8\x80\x3d\x0b\x76\x14\x8a\x5e\xfc\x9f\x2a\x9d\xc6\x7f\x93\x9c\xf2\x42\x2d\xc9\x0d\x51\x5c\x6c\x46\x50\xfc\xcd\x77\x9c\x79\xb6\x49\xde\x50\x3e\x8a\x9a\xa7\x82\xb0\x40\x8d\x42\xb9\x3e\x3a\x73\xaf\xc8\xe3\x56\x2a\x06\x02\xbb\x0a\xdd\xbe\x78\x60\x87\x8b\xab\xd6\x0e\x1a\xbb\x17\x5f\xdc\x8a\x8b\xab\xca\x7c\xd1\xda\xb8\xd5\x39\x07\xf6\xaa\x0b\xf8\xed\x62\x79\x74\x4c\x0f\x5b\xd5\x43\xc7\xf7\x93\x74\x28\x7b\xb1\x7a\x9d\x51\xa5\x86\xd2\xe3\x74\xea\xc7\x35\x13\xe0\x34\xde\x3e\x2a\x4f\x96\x64\x94\xef\xac\x66\xd9\xdb\xf1\x93\xdc\xfe\x12\xf3\xe9\x7e\xeb\xe9\x28\xf3\xda\xf7\x7f\x90\x69\x78\xc4\xf5\xa3\x55\x5a\xce\x47\x38\xd6\x9d\x51\xc2\x59\xd7\x1a\xc6\x91\xde\xe1\xb6\x67\xa5\xca\x54\xf9\x1d\xcf\x98\xc5\xde\x40\xc2\x80\x9d\xcd\xa7\x08\x38\x1f\x1b\xc4\x96\x64\xe5\x50\xda\x58\x2e\x2c\x39\xb8\x0e\x38\x39\x0c\xdb\x6e\xc5\x34\xad\xc0\x92\xd3\xa6\x06\xc5\x0c\x3f\x55\x8f\x7a\xd5\xc7\xe9\xcf\xb5\x31\xc4\x1b\x3c\xef\xaa\xb5\xfb\x69\xd8\x44\xb0\xa2\xc9\x83\x85\x15\x73\xe5\x66\x2a\xae\xf7\x21\xcf\xc5\xa7\x1e\xcf\x6e\x9f\xf7\x02\x30\x41\x2e\x04\x2e\x2d\x0b\x70\x93\xbd\x70\xb7\xb3\x97\x80\x64\xca\xb7\x6c\xc7\x0a\xda\x0d\x26\x1c\xec\x9b\xf5\x53\x82\xfa\xd4\x1f\x55\xd3\x36\xbc\x77\x9f\x06\x29\x52\x40\xc0\x2f\x78\x31\x32\xa6\xbd\x60\xaa\x0a\x34\xf5\x47\x83\x0f\xf7\x48\xe6\x32\x93\x9b\xf1\x8e\xb4\x43\xe8\xfd\x2b\xf0\x3d\xf0\xee\xa9\x66\xa0\x6c\x84\x37\xc7\x02\x43\xfa\x18\x2c\x7c\xcd\xfa\xfc\xa3\xa0\x7b\xca\x33\xb3\x2a\x83\xe7\xdc\x58\xad\x54\x5c\x8d\x54\x54\x6d\xd4\xf6\xdd\x48\xd8\x6c\x1a\x3e\x2d\x95\xcb\x71\xc4\xd7\x84\x6a\xb2\x93\x4a\x93\x8b\x76\xef\x87\xfd\x9d\xb9\x4c\x95\xbb\x34\x58\x89\x7a\xe1\x6f\x10\x17\x70\x20\x94\x35\x91\x46\xb1\x70\xff\xf5\x11\x23\xc3\x92\x2d\xc1\x72\x0f\x89\xaf\x57\x0a\xb6\xa8\x93\xe6\xf0\x36\x4b\x6d\x72\xb2\xef\x0c\x93\xdb\x60\xb7\x2b\x22\xc5\x48\x4c\x08\x15\x24\x2f\xc0\x19\x60\x13\x01\xc9\xac\x14\x9a\x16\x87\xaa\x37\xaa\x2e\xf6\x06\x41\x03\xaf\x02\x91\x0b\x56\x73\x28\xb5\x8d\xe8\x65\x9f\x93\xac\x54\x50\x71\xda\x66\x9d\xb5\xb1\x11\x17\x3b\x2e\x6e\xaa\x79\x1c\x3a\x1a\x27\x55\x72\xcd\x0b\xb6\xe6\x9f\x87\x98\x27\xc8\x14\x43\xe9\x2b\x7c\x6b\x27\xe2\x77\x0f\x37\xaf\x5b\xa2\x4a\x6d\xe1\x48\x55\x61\x95\x83\x53\x56\x65\xe6\xf5\x87\x92\xd9\x9c\x03\x4f\x9f\x26\x6a\x66\x2e\x66\x8a\x18\xf6\x5c\xcc\x74\x2e\x66\x3a\x17\x33\x7d\x2e\xc5\x4c\xfb\xc1\x2b\xbe\x9d\x0c\xc4\xe2\x1b\x46\x50\x05\x40\x2d\xbd\x7d\x8b\x03\xb7\x8c\xef\xa4\x1a\x89\xf0\xd5\x40\x2e\xbe\x21\x8c\x3a\x51\x89\x63\xc7\x0d\x3a\xe3\x20\x98\xea\xa9\xa7\x80\x61\x46\x87\x02\x40\x99\xa9\xa0\x98\x71\x19\x62\x7b\x15\x07\x8e\x19\xa5\x38\x0c\x9c\x19\x03\xc9\x8c\x0f\x1f\x05\xa0\x39\x02\xcb\x04\x99\x39\x0e\x48\x13\x33\xad\x91\x80\x1a\x0f\x9e\x19\xa5\x79\x4a\x60\x8d\x6f\xd3\x00\x36\xa3\x24\x9b\x53\x38\x0e\xb4\x69\xbc\x81\x3a\xc9\x43\xc0\x1b\xdf\x26\x00\x70\x02\x14\xc9\x31\x40\x27\x0c\xc4\x09\xd2\x1c\x04\xea\x0c\x01\x72\x82\x14\x51\x80\x1d\x0c\x30\xc7\x37\xb4\x59\x7c\x0c\xa8\xe3\xdb\xc9\x01\x3b\xd1\xbd\xc4\x54\xaf\x39\x39\x90\x27\xb2\x97\x98\x8a\x31\x83\x00\x9f\xfa\x81\x40\x41\x19\xa4\x42\x1e\xb8\xb5\x91\x27\x00\x80\xbe\xb2\xaa\x31\x0a\x04\xf2\x0d\x5d\x26\x30\x78\x83\x24\x93\xee\x2e\x24\xae\x08\xd2\x94\xdb\x64\xf0\xfb\x4e\x09\x7f\x6e\x37\x4a\x82\xaf\x77\x84\xbb\x59\x92\x2f\xbf\x42\xa8\x5b\x66\xf0\xf3\xf5\x2d\x34\xe2\xa6\x19\xa4\xda\xbd\x89\x06\x6f\x9b\x41\x8a\x01\x40\xd2\xe8\x8d\x33\x48\xfc\x2b\x03\x93\x7c\x8b\xaa\xc0\x15\xaa\x83\x38\x02\x58\xf2\x6d\x22\x70\x69\x74\x14\x23\xa0\x26\xdf\xb0\x72\x11\x0b\x72\xea\x1d\x4e\x0c\xd8\x29\xc8\x1f\x2d\x30\xd4\x04\xd0\x93\x6f\x28\x30\xc1\x64\x10\x54\x90\x6e\xbb\x9a\x32\x0a\x0c\x85\xa0\xd9\x80\x4b\xa1\x41\x51\xbe\xe1\x4b\x07\x12\x0c\x48\xca\xb7\x09\x60\x29\x14\xdd\x56\xd9\x04\xd4\x1b\x11\xd2\x9d\xa0\x41\x54\xbe\x9d\x03\x4c\x55\x75\x1c\x0f\xaa\x42\x52\x6c\x41\xaf\x22\xc1\x55\x55\xaf\xe2\xa6\x13\x03\xb6\xf2\x2d\x1a\x74\x85\x1c\x76\x0f\x34\x6a\x14\x7c\x85\x24\x7b\x0c\xd1\x1a\x06\x61\x21\x49\x8e\x40\xb5\x7a\xc1\x58\x48\xb2\x01\xc8\x56\x17\x94\x85\xa4\x8a\x80\x6e\xf9\x86\x94\xba\xb6\x45\x72\x18\xce\x02\xe8\x1b\xae\x9e\x27\x09\x42\xbc\xea\xa7\x82\x78\xa1\x76\x37\x11\xda\x2e\x7e\x44\x08\x08\x98\x6f\x5f\x56\x35\xc6\x43\xc3\x82\x5d\xf0\xd0\xb1\x68\x88\x58\x78\x70\x4d\x08\x19\x0a\x2a\x16\x24\xd9\x0f\x25\x1b\x87\x8c\x21\x6e\x70\x28\x48\x19\x5e\x09\x3a\xa9\x96\x8b\x80\x94\xf9\xf6\x24\x68\xd9\xe8\x98\x4e\x67\x57\x18\x81\x98\xb5\xe7\x25\xb0\x29\xc6\x21\x67\xbd\x33\x72\x22\xe8\x99\x6f\x93\x20\x68\xe3\xce\x06\x07\x4f\x9b\x0e\x45\x9b\x30\x85\x51\x4c\x85\x87\xa8\x8d\x0e\xb4\x0b\x5f\x43\x42\xd5\x22\x46\xf7\x14\x14\xe7\x50\x45\x8f\x19\x4b\x45\x66\x2c\xd5\x8c\xa5\x9a\xb1\x54\x03\x74\x67\x2c\xd5\xb3\xb0\x7c\xcf\x58\xaa\x19\x4b\xf5\xac\xb8\x6d\xc6\x52\xcd\x58\xaa\xe6\x63\x33\x96\x6a\xc6\x52\xcd\x58\xaa\x19\x4b\x35\xd4\x66\x2c\xd5\x8c\xa5\x9a\xb1\x54\x7d\x6d\xc6\x52\xcd\x58\xaa\xe7\x8d\x5c\x99\xb1\x54\x33\x96\xea\x79\x71\xe4\x8c\xa5\x42\x0c\x67\xc6\x52\xf5\xb5\x19\x4b\x35\x63\xa9\x30\x94\x67\x2c\xd5\x8c\xa5\x9a\xb1\x54\x11\x2c\x39\x63\xa9\x46\xdb\x8c\xa5\x3a\x1e\xdc\x8c\xa5\x9a\xb1\x54\x33\x96\x6a\xc6\x52\x1d\xb5\xe7\x8d\xa5\xda\x51\xa5\x59\xaf\x82\x3a\xa3\xa9\xc8\x8c\xa6\x9a\xd1\x54\x33\x9a\x6a\x80\xee\x8c\xa6\x7a\x16\xb6\xef\x19\x4d\x35\xa3\xa9\x9e\x15\xb7\xcd\x68\xaa\x19\x4d\xd5\x7c\x6c\x46\x53\xcd\x68\xaa\x19\x4d\x35\xa3\xa9\x86\xda\x8c\xa6\x9a\xd1\x54\x33\x9a\xaa\xaf\xcd\x68\xaa\x19\x4d\xf5\xbc\xb1\x2b\x33\x9a\x6a\x46\x53\x3d\x2f\x8e\x9c\xd1\x54\x88\xe1\xcc\x68\xaa\xbe\x36\xa3\xa9\x66\x34\x15\x86\xf2\x8c\xa6\x9a\xd1\x54\x33\x9a\x2a\x82\x25\x67\x34\xd5\x68\x9b\xd1\x54\xc7\x83\x9b\xd1\x54\x33\x9a\x6a\x46\x53\xcd\x68\xaa\xa3\xf6\x9c\xd1\x54\x43\x27\xd8\xc2\xd5\xff\x3b\xfa\x73\x4a\x75\xb7\x5e\xf0\xc2\x21\xb2\xfe\x07\xf2\xab\x65\x9e\x52\xcd\xee\xad\x9a\x30\x5e\xdc\xb0\xfd\x28\x31\xb3\x9f\x54\x97\x93\x7b\x4d\x35\x5b\x97\xd9\x3d\xd3\x3f\xb6\x9e\x3b\x9a\x02\xb8\x1d\x78\x8f\x09\xdb\xe5\x99\x3c\x58\x0f\x91\xa5\x4f\xee\x64\xaa\xfc\x29\xd0\xa0\x6a\xf9\x98\x92\x82\x59\x1f\xc6\x11\x5d\x6e\x0e\x8a\x14\x98\xe0\x93\x21\x4b\xf5\x11\x9f\x8e\xdd\x88\x0a\x99\x65\x5c\x6c\x6c\xe7\xfb\xb8\xb2\x0d\xf7\x69\x3e\x6d\x3e\x5d\x2a\x3b\x88\x44\xee\x76\xa5\x80\x89\x21\x39\x2d\xe8\x8e\x69\x56\x28\xe8\x7c\x2f\xbf\x40\xe9\x4c\xae\xda\x04\x1b\xc3\xf6\xd3\x68\x9e\x9b\x52\x66\x3f\xa7\x85\x06\xed\x00\xe5\x2e\xbf\xf3\x4f\x77\x56\x57\x16\x29\x17\x34\x23\x66\xe5\xb6\x3c\xd9\x76\x17\x67\xf8\x0c\xb1\x26\xe2\x15\xab\x3b\xc2\xd2\x25\x79\x63\xcd\x55\xf6\xb0\x34\xc3\x7f\x35\xb4\xe9\x4e\x01\x72\x1a\xdd\x91\xba\xa7\xc6\xe9\xd1\xbc\xd8\x55\x6a\x4d\x89\x17\xdd\xa3\xcc\xdf\x3f\x2a\x3f\xfa\xee\xb2\x9f\xaa\x7a\xeb\xde\xc8\xb8\xe3\x15\x6f\x8b\x53\xfb\x8c\x19\x41\xb7\x68\x29\x54\x71\x65\x76\x5f\x76\xbb\x34\xd0\x9d\x3e\xc9\xb5\xf0\xfd\xf8\x1f\x81\x2e\x2b\x4d\x75\xd9\x62\xdf\x21\xa6\x96\x2b\xc5\x8a\x3d\x4b\xbf\x67\xc2\x95\x72\x1d\x1d\xe3\xf1\xe3\xfe\xe8\x00\x0c\x67\xc1\x12\xa3\x1d\x6e\xea\x5f\xfd\x0b\x47\xeb\xe0\x71\x7b\x95\x19\x77\x49\x6e\x35\x49\x64\x51\x30\x95\x4b\x91\x2a\xef\xe1\xf6\xbf\x5f\xaa\x06\xdd\x2b\xbb\x69\xfa\x24\x96\x95\x79\x29\x91\x82\xec\x4a\x6b\x58\xf5\xa7\xfb\xcd\xdd\x2d\xb9\x37\xdd\x39\x42\xd0\x35\xf6\xc4\x9f\xfe\xd8\xbb\x40\x7d\x7b\x21\xdf\x52\x75\xc4\xe9\x83\xec\x55\x30\xaa\x8e\xa7\x77\xe0\xf1\x9e\x65\xed\xfc\xc9\xb3\x24\xd9\x7f\x03\x88\x89\x6f\xea\xbf\xc1\x1a\x5b\xaf\x58\xeb\x67\x42\xec\x62\x34\x00\x9e\x1e\xf9\x63\xff\xf2\xff\x07\x00\x00\xff\xff\xec\x32\x96\xf5\xab\x50\x07\x00") func kubedbCom_elasticsearchesYamlBytes() ([]byte, error) { return bindataRead( @@ -544,12 +522,12 @@ func kubedbCom_elasticsearchesYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_elasticsearches.yaml", size: 236985, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_elasticsearches.yaml", size: 479403, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_etcdsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x5b\x6f\xe4\xb8\xf2\xdf\xfb\x7e\x0a\x3d\xe4\x21\x09\xd0\x9b\x9c\x0b\x0e\x92\x79\x09\x7c\xc6\x33\xfb\x9f\xec\x5c\x8c\xf1\xcc\x6e\x80\x83\x7f\x00\xb6\xc4\xee\x66\xac\x26\xb5\x24\xd5\xb6\x37\xc8\x77\x0f\x24\xb9\x2f\xb6\x5b\xe4\xaf\x28\xaa\xad\xf6\x90\x4f\x33\x6e\x89\xa4\x8a\x75\x63\xb1\xf8\x2b\x56\x89\xdf\xb8\x36\x42\xc9\x37\x19\xab\x04\xbf\xb3\x5c\x36\xff\x33\x3f\xdf\xfc\x37\xf3\xb3\x50\xff\x65\xf3\x97\x39\xb7\xec\x2f\x3f\xdd\x08\x59\xbc\xc9\xde\xd6\xc6\xaa\xf5\x57\x6e\x54\xad\x73\x7e\xc9\x17\x42\x0a\x2b\x94\xfc\x69\xcd\x2d\x2b\x98\x65\x6f\x7e\xca\xb2\x5c\x73\xd6\xfc\xf1\x9b\x58\x73\x63\xd9\xba\x7a\x93\xc9\xba\x2c\x7f\xca\xb2\x92\xcd\x79\x69\x9a\x67\xb2\x8c\x55\xd5\x9b\xec\xa6\x9e\xf3\x62\xfe\x53\x96\x49\xb6\xe6\x6f\x32\x6e\xf3\xc2\xfc\xdc\xfd\xf1\xe7\x5c\xad\x7f\x32\x15\xcf\x9b\xc7\x59\x51\xb4\xe3\xb0\xf2\x4a\x0b\x69\xb9\x7e\xab\xca\x7a\x2d\xdb\xae\x66\xd9\xff\xbc\xfe\xf2\xf9\x8a\xd9\xd5\x9b\xec\xe7\xe6\x85\x9f\x37\xdd\x17\xb5\xc3\x74\x1d\xff\x76\xf0\x17\x7b\x5f\xf1\x37\x99\xb1\x5a\xc8\xe5\xb3\xd7\x2d\xb3\xb5\xf9\xb9\x5a\x31\xc3\x0f\x5e\xbf\x6e\xff\xec\x7d\x7b\x4b\x84\x9f\x9f\x51\xe0\xa0\xaf\x8b\x25\x3f\xe8\xa8\x60\xb6\xf9\xef\x52\xab\x7a\x47\x8e\xf6\xcb\xbb\xc7\x1f\x68\x95\x33\xcb\x97\x4a\x8b\xed\xff\x67\xcd\x7b\xcc\x58\xa5\xf9\xc3\xff\x77\x84\x6c\xfe\xc3\xaa\xca\xe4\xaa\xd8\xfe\xc6\x5a\xda\x67\x59\xb7\x84\xef\x6c\x5e\xb4\xff\x2d\x85\xb1\xbf\xee\xfe\xf4\x51\x18\xdb\xfe\xb9\x2a\x6b\xcd\xca\x87\xb5\x68\xff\x62\x56\x4a\xdb\xcf\xfb\xd9\xcc\x9a\xdf\xba\x5f\x84\x5c\xd6\x25\xd3\xdd\xd3\x3f\x65\x59\xa5\xb9\xe1\x7a\xc3\xbf\xcb\x1b\xa9\x6e\xe5\x7b\xc1\xcb\xc2\xbc\xc9\x16\xac\x6c\xe9\x69\x72\xd5\x7c\x74\xdb\x57\xc5\x72\xde\xbc\x62\xea\xb9\x7e\xe0\xa7\x87\xfe\xbb\x45\x78\x93\xfd\xdf\xff\xf7\x53\x96\x6d\x58\x29\x8a\x96\x98\xdd\x8f\xaa\xe2\xf2\xe2\xea\xc3\x6f\x7f\xbb\xce\x57\x7c\xcd\xba\x3f\x36\x03\xab\x8a\x6b\xbb\xa3\x50\xc7\x61\x3b\xde\xde\xfd\xed\xd9\x02\x76\xad\x25\x8d\xef\xa1\x43\x1e\xdf\xb6\x63\xe3\xee\xd6\xfa\xd1\x5f\xb2\x6c\xcd\xee\x3e\x72\xb9\x6c\x58\xe5\x1f\x7f\x7b\xf2\x5b\xc5\xac\xe5\x5a\xbe\xc9\xfe\xf7\xbf\xd8\xec\xcf\x7f\xff\x8f\xff\x9a\xb1\xd9\x9f\xff\x75\xf6\xdf\xff\xfd\x3f\xff\xeb\xe1\x1f\xff\xe9\x7f\xfc\x87\x27\xef\x1c\x9d\xe4\xf6\xcf\x6a\xfe\x7f\x78\x6e\x77\x7f\xde\x0a\x92\x6f\xde\x73\x96\xdf\xd4\x55\x43\xdb\xa2\x2e\x9f\x7d\x41\xdf\x5b\x2d\xb5\xff\xac\xf5\xb3\x17\x7c\x2f\x35\x2d\x57\xd2\x32\x21\xb9\x3e\xfe\x73\xef\x77\xee\xdb\x9a\xdd\xbd\x55\x52\xf2\xbc\x61\x93\x9e\x51\xb2\x6c\xa1\xf4\x9a\xd9\x37\x99\x90\xf6\x1f\x7f\x77\x0e\xd5\x68\x98\x25\xd7\x47\x9f\xa9\x34\x5f\x88\xbb\xc0\xa9\x1e\x5d\x9a\x6d\x9b\xff\x35\x84\x7a\xf3\x3a\xbf\xe1\xf6\x07\x27\x5d\xae\x95\x7c\x77\xd7\x28\x9f\xa7\xd2\x0e\xf5\xbe\xcc\x8f\x7e\x79\x22\xfd\xe1\xcf\x3d\xa4\x2f\x55\xce\xca\x10\xea\xb1\x5b\xf3\xae\x64\xc6\x8a\xfc\x9f\xa5\xca\x6f\xae\x1b\x63\xd6\x37\x41\x5f\x5f\x4d\x5b\x98\x6f\xcd\x3c\x7b\x7f\x07\x56\xa4\x1d\x8a\x69\x2b\x6c\x0f\x17\xed\xc6\xda\x2f\xca\xdf\xfe\xea\x1d\xd1\xb5\x30\x4d\xd3\x9c\x15\x5f\x64\x79\xef\x9f\xfb\x5c\xa9\x92\x33\xd9\xfb\xdc\xa6\xf1\x8a\xf8\x87\xcb\x81\x54\xd0\xfc\x8f\x5a\x68\x5e\xf4\x75\x33\xdb\x0d\xe4\x64\xa8\x1e\x8e\xc9\xb6\xc6\xe2\x52\x98\x9b\x21\x2b\x9e\xb3\x7c\x25\xe4\xf2\x93\x2a\x86\x2f\x7b\x21\xcc\xcd\xe7\x23\x36\x3b\xa8\xa3\xef\x5f\x3f\x0c\xee\x27\x12\x3b\x3f\x75\x6c\x82\x3a\x89\xc5\xa0\x7e\xbe\xda\x2e\x83\xf3\x81\xef\x5f\x3f\x0c\xe2\xbb\xf7\xe2\xb9\x67\xb3\x6d\x08\xdf\xc5\x93\x57\xc3\x73\xcd\x6d\x14\xbe\x33\x2b\xa6\x79\x84\x9e\xfc\x6b\xb4\x9f\x74\xff\x23\xdb\xc9\x84\xae\x53\xce\xab\xd5\xa2\x77\x09\x90\x45\x5a\x2b\x29\xac\xd2\x8e\x27\xb2\x4c\x58\xbe\x76\x3e\x00\xd2\x7e\xfb\x18\xd3\x9a\xdd\x3b\x2c\x8b\x5d\x4d\x46\x14\xb7\xbc\xe7\x92\x05\x78\x52\x5d\x57\x5f\xf9\xc2\xd5\x13\xb2\x68\x59\xcf\xce\x29\x68\x56\x00\x9b\x35\xad\x36\xfd\x3b\x0f\x70\x2c\xbf\xcc\x6c\xb9\x31\x58\x1e\x84\x2c\xfa\xa7\x79\x42\xf7\x28\x36\xff\x9d\x29\xd3\x9c\x8d\xa3\x95\x2b\xb9\x10\xcb\x4f\xac\x1a\xc2\x3b\x05\x5f\xb0\xba\xb4\x3e\x47\x2b\xae\x57\xec\x55\xce\x80\xf6\x46\xd9\x27\xcb\x6e\xb8\x93\xa5\x0f\x27\xee\xe5\xa0\xac\x35\x3f\x6e\x5a\x75\x0d\xa5\xd8\xe1\xf0\x3e\xba\x75\xcd\x67\x6c\x0e\x7b\x04\x3e\xc8\xc7\xa8\x5d\x9b\x35\x64\xf4\x3c\xd1\x4c\x0c\xb0\xb8\x1e\xf9\xc3\x2c\xae\x4f\x2b\x40\x9f\xaf\xaa\x2e\xf0\x3c\x54\xe3\xf9\x45\xd5\x88\x41\x42\xaa\xc5\x66\xb0\x25\x8b\x66\x27\xa4\x2a\xf8\x55\x3d\x2f\x85\x59\x5d\x9f\xb3\xa2\x8f\xbd\x37\xbf\xb0\x56\x8b\x79\x6d\xdd\xdf\x79\x78\xdc\x81\xd1\x25\xde\x37\x03\x9b\xb4\x96\xd3\x42\xd9\xbc\x50\xb7\xf2\x96\xe9\xe2\xe2\xaa\x77\x93\x9c\x6c\x52\x37\x77\xc1\xcb\xc2\x23\x37\xd4\x3e\xb3\xde\x73\x91\xfe\x46\x30\x7b\xbb\x69\x5f\x41\xf6\x87\xdc\x3b\x66\x87\xb2\x96\x4d\x77\xf3\x00\xcd\xa0\xd7\xe4\x64\xaf\xcf\xae\x37\x14\xed\xce\xde\xde\x8f\xc4\x6c\xbb\xd3\x1d\x5f\x6c\x22\x68\xf6\x59\x1b\x71\xdb\x08\xa3\x9c\x96\x2f\xb8\xef\x2d\x75\x5e\x98\x95\xb7\xd3\x88\xc7\xc9\xa8\x43\x77\x3a\x77\xcd\xdb\x11\x5f\x57\xf6\xfe\x52\x0c\xda\x05\xaf\x79\x21\xea\xf5\xf0\x80\x87\xf8\x93\x7f\x14\x6b\xd1\x7b\xf8\x03\xf6\xe4\xfd\xe6\x45\x3e\x81\x3d\x7f\x59\x9f\xe5\x61\x88\x65\x7a\xc9\xed\xef\xbf\x7f\x9e\x50\x0c\xf0\xf6\x56\x14\x93\x99\x8e\x9f\xfb\x4a\x7e\xf7\x5b\xeb\xb6\xbe\x9e\x8d\x49\xb7\x9d\x9b\xac\xf7\x9d\x22\x6c\x6d\x1b\x7b\x13\xb2\x28\x55\x7e\x33\x2c\xa0\xda\x66\x60\x45\x3a\xbc\x79\xe8\xeb\xfb\xf7\xc1\x11\x45\xef\x97\x2f\x73\x7e\xd5\x38\xff\xc6\x72\x69\x87\x9e\xc0\x9e\xef\x99\x7b\x55\x44\x59\xb8\xd3\x9d\x8c\x76\x13\x0e\x5e\x75\x61\xbf\xf2\x4a\x0d\xe2\x77\xa1\x79\x6e\x95\x06\xbe\xd5\x4b\xb4\x4a\x19\x11\xa9\xab\x8d\xf0\x6d\x64\xa3\xc4\xe1\xf7\x73\x0e\x5e\x82\xb2\x36\x96\xeb\x61\xa7\x9a\x5c\x16\x95\x12\xd2\x3a\x95\x35\x28\x73\x13\x3a\x8d\xf4\xd3\x7f\xf7\xe1\xfd\x02\xd2\xbf\x53\xf1\xae\xcd\x4a\x19\xeb\x8a\x58\x20\x4b\x13\x85\xa0\x76\xb8\x3a\x05\x54\xc9\x00\x4a\x09\x33\x30\x4c\x9d\xaf\x58\x75\x51\xdb\xd5\xa5\x30\xb9\xda\x70\x44\x07\xf8\xfc\x9c\x6d\x97\xd7\xfd\xe9\x7f\xb4\x0e\x23\x99\xb5\x36\x37\x9e\x59\xe5\x0d\x7d\x60\xbd\xfd\x31\x54\xcb\x3d\xac\xde\x07\xd9\xa8\x21\xe6\x0e\x6a\x4c\x6f\x63\x58\x29\x6d\x59\x39\x99\xcd\x53\x72\xd4\xb7\x0f\xb5\xdb\xec\xab\x76\x75\x46\x57\x5d\xe2\x8f\x3e\x2a\xce\x1a\x6e\xec\xfd\xed\x70\x92\xa1\xaa\x6f\xad\x6a\xe9\xb4\x12\xde\x2f\x94\xc3\x8c\xff\xa4\x4c\x76\xc3\xb5\x7a\xf8\xbe\x7e\x90\xb5\x9a\x3d\xcc\x21\x74\x45\xab\xdd\x46\xa8\x8b\x72\xbc\x2d\x99\xe8\x0d\x0e\x42\xc6\xad\xe9\xe0\xcc\x36\x16\xbb\x39\x07\x53\x71\xa5\xac\x92\xd3\xdb\x54\x16\x27\x48\xcf\x69\x06\x09\xa6\x9b\xd2\xf6\x56\xe9\x08\x11\xb6\xc9\xe5\x76\x9d\x4d\x7a\x54\xa5\x55\xf3\x5b\xff\x10\x93\x3d\x8a\x7e\x74\x63\xee\x78\x8b\x7a\x18\xed\x4d\x24\x0b\xe9\x14\x9c\x65\xc0\xa3\xd4\x59\x74\x0d\xca\x02\xdb\x37\xe2\x61\x62\xd7\xb0\x13\xe4\x7d\xa3\x9d\x25\x3f\x9d\x1c\x76\xaa\xbc\x6f\xd8\xf9\xf2\xd3\x51\x48\x24\xc0\x0f\x3e\xbb\xe6\xcf\x2a\x3b\x7c\xd6\x7b\x60\xb9\x6f\x84\x63\xff\xc3\x17\xdc\xbb\x82\x7d\x43\x1c\xf1\xc3\x7e\x61\x22\x22\x19\x69\x4f\x3b\xf7\x69\xec\xc7\x4f\x43\x34\x01\x12\x79\xf6\xed\x7c\x75\x02\x9e\x85\x33\x6c\x9c\x2c\x20\x33\x67\xdf\x82\x54\x51\x46\xcf\xd6\x19\x3c\x22\x55\xfa\x33\x62\x2e\xcf\xd3\x09\x12\xc4\x3b\x4b\xda\x39\x0b\xca\x08\x3a\x98\x60\x20\xe3\x07\x64\x09\xed\x5b\x30\xef\x93\x32\x87\x22\x8c\x47\xcb\x26\x1a\x3c\x60\x98\xa8\xc1\xb9\x46\x4f\xe7\x47\x92\x34\xba\x13\x30\x15\xc3\x4e\xe8\xbc\x8b\xeb\xbd\x66\xe3\x98\x1c\xe6\xe4\x30\x7b\x5f\x48\x0e\x73\xd7\x0c\xd7\x1b\x91\xf3\x8b\x3c\x57\xb5\xb4\xdf\xd4\x0d\x07\xdc\x3c\x62\x6a\x77\x5d\x08\x2e\x47\xc9\x57\xcd\x32\x7e\x57\x09\xdd\x42\xf1\x5c\xf3\x5c\x49\x77\x22\xdb\xbe\x21\x08\x16\xc7\xe6\x85\x4b\x22\x2e\x83\xa3\x65\xe8\x42\x52\x04\xf3\x4a\xb4\xa4\x5a\xe0\x36\x77\x17\x47\x0a\x0d\xa0\xfd\x51\xab\xf9\xbd\x1d\x14\xbd\xec\xb0\xaf\xa6\x13\xbc\xd4\x7c\x29\x8c\x8d\x90\x9c\x62\xb9\x64\x72\x68\x8a\x70\x94\x0b\xca\xdb\x88\xec\x09\xd2\x64\x3a\xda\x79\x02\xb6\xa1\xdc\xa6\xe7\x83\x02\xb5\xb1\xce\xf5\xd7\x6c\x19\x01\x99\x83\xdf\x37\xbf\x0f\xee\x67\x82\x40\x07\x4a\x0d\x3d\x09\x4e\xa7\xeb\x0f\xed\x24\xe8\x04\x2d\x43\xf7\xfe\x3a\x14\xbb\xc0\xe4\xac\xe4\x1f\xbe\x4c\x40\x70\x97\xcc\xf2\x5b\x36\x5c\xb1\x57\x5a\xd9\x0e\xb6\xeb\x52\xad\x99\x18\x9e\x97\x93\x98\xbd\x9b\xbc\x29\xdf\x49\x36\x2f\xdd\x2e\x17\x48\x08\xab\x34\x5b\xf2\x28\xe0\x50\x0f\x7d\x5d\xc5\xd0\x6b\xe6\xde\x58\x3e\xfc\x06\x52\x67\x47\x4f\x82\xf7\xf3\x20\x35\xfd\x1e\xe4\x96\xe5\xfa\x9f\x68\xbf\x39\x58\x7f\x38\xa3\x28\x93\x3d\xa0\x4d\xf8\x15\xc7\x87\x4f\xf8\x15\x07\x8f\xb9\x1d\xa9\x58\xd0\x13\x11\x81\xc6\xfc\xd2\xda\xe9\x4a\x35\x28\xd3\x6d\x72\x09\x2d\x67\x6d\x56\xa3\xd9\x8a\xc3\xae\x5a\xfc\xe6\xd1\x99\xa9\x9e\x0f\x4a\xb8\xdc\x98\x6a\xc5\x35\x9f\x4c\x86\xd5\xce\x91\x28\x45\x7e\x3f\x38\x3d\xea\x49\x7f\x11\x17\xd8\x77\x1e\x1c\x31\x77\xcb\x71\xa8\xeb\x61\x0f\xe7\xcf\x95\x2a\xbe\xf1\x75\x55\xb2\xe3\xb1\x29\x04\x93\x5a\xab\xb2\x1c\x76\x45\x90\x49\xa9\x2c\x9b\xf4\x7d\x53\x7f\xd6\xf3\x11\xd0\xf3\xc3\xf6\xa3\xd0\xe1\x29\x80\xfa\x61\x83\x68\xb0\x68\x6b\x25\x38\x6d\x11\x6c\x40\x54\xc1\x2f\x80\xfe\x28\x7d\x66\x0f\x28\xd1\x5c\x6b\x5e\x5c\xd6\x0d\x45\x1f\x50\xe0\x85\x5c\x7e\x58\x4a\xb5\xfb\xf3\xbb\x3b\x9e\xd7\xbe\xdb\x9a\xdb\x46\x38\x81\xa4\x9f\x3f\x76\xf3\xc5\xcf\x3b\xc2\x46\xc9\x5a\xac\x6e\x9b\xaf\xf6\x08\xe3\xc4\xec\x06\xd2\x31\xec\xb0\x89\x76\x8d\x78\x2c\xbb\x6d\xc1\x89\x0d\x59\x57\x98\x41\x33\x4b\xcf\xa6\x18\x3c\xf0\x86\x95\x75\x08\x91\x02\xd7\xa5\x6b\x83\x66\x4c\x3d\x18\x3d\x6c\x21\x49\x1d\x19\xf1\x50\x78\xff\xce\x76\x51\x89\x2f\x06\xa5\x5e\x65\xc1\x74\x69\xa5\xf3\xa1\xd6\x48\x12\xcc\xa7\x2d\x09\x26\xf9\xf5\x24\x98\xc7\x5f\xa4\xd1\x25\x60\xb0\x5b\x2e\x96\x2b\x20\x63\x6a\xdb\xc2\x72\x7d\xe8\x99\x3e\xb4\xc5\x9d\x1d\x78\x26\xe0\x0b\xdd\x87\x43\x0f\x13\xc9\x4a\x59\xb9\xed\x67\xc6\xf3\xff\xa8\xca\xb2\x71\x6d\xaf\x79\xd9\x22\x4d\x7c\xe3\x1a\xd7\x02\x44\x95\x91\xdc\xc0\xfe\x96\xac\x0d\xdc\x92\xb5\x71\xb5\xe4\x06\xf6\xb4\x24\x98\x50\x4b\x82\xe9\x7b\xe7\x1c\x04\x33\x60\x30\xda\x30\x14\x92\xcf\x9e\x7b\x18\xb0\x0f\x05\x7d\x02\xfc\x68\xa5\x8a\x14\xc3\x7b\x44\x86\x66\x35\xc6\xf6\xe0\xda\x0a\xb4\xdb\xe5\xa7\xc9\x68\xb8\xc2\x1f\xe6\x36\x66\x43\x34\xe1\x10\x2b\x95\x85\x5b\xaa\x6c\xb8\x0a\x1e\x66\xb1\xa2\x4c\x20\xdc\x72\x65\xc3\xac\x57\x16\x63\xf6\x43\xac\x58\x36\xc0\x92\x65\x81\xd6\x2c\x1b\x62\xd1\xb2\x21\x56\x2d\x1b\x44\xab\x56\xba\x3f\x1e\x54\xb6\xa6\x34\xfa\x99\xd7\xf1\x36\x88\x5b\x06\xba\x03\xe4\x17\xe5\x36\x7f\xe0\x14\x7e\x7a\x30\x65\xc2\x38\xc2\xaa\x4a\x95\x6a\x79\xff\x2b\x55\x71\x06\xde\xd5\xa5\xca\xe8\xec\x70\x86\x29\x94\xe7\x6b\xb3\xa7\x0e\xca\x0f\x1e\xcf\x1b\xd5\x17\x0c\x74\xce\x52\x2c\xaf\xbf\xa5\x90\x01\xdc\x52\xc8\xc0\xd5\x5e\x22\x96\x17\xe2\x54\xc5\x70\xa8\x06\xba\x0c\x44\x22\x05\xbc\x14\xe2\x40\x91\x25\x23\x88\x0a\xf4\xd5\x0e\x72\x98\xc8\x73\xa3\x5a\x7d\xaa\x93\x34\x9a\x11\x27\xc5\x93\xa4\x15\x29\xa6\x94\x62\x4a\x58\x4b\x31\xa5\x97\x98\x40\x8a\x29\xa5\x98\x92\xbf\xa5\x98\x52\x8a\x29\x1d\xbc\x95\x62\x4a\x5d\x4b\x31\xa5\x14\x53\x4a\x31\xa5\x08\x13\xed\x5a\x8a\x29\x41\x2d\xc5\x94\x7c\xef\xa4\x98\x12\x38\xe5\x14\x53\x4a\x31\xa5\xb3\x89\x29\x41\x8f\x31\xbd\x9c\x10\xf4\x14\x97\x9b\x81\x93\xc1\xed\x29\x06\x57\x49\xe0\xaa\xd6\x42\xc5\xef\xf1\xbd\x56\x40\x08\x8c\x5c\xd5\xbd\xab\x06\xf1\x2b\xbf\x87\x21\xa2\xe9\xae\x0a\xc9\x41\x09\xd0\x2d\x38\xe2\x68\xe0\x00\x34\xe4\xd1\x0c\xc6\xa3\x38\x6c\x54\x35\x84\x1a\x78\xa2\xfa\xa1\xe1\xe4\xd3\x79\x21\x04\x1b\x3f\x60\xc5\x02\xf0\xf0\x47\x37\x1c\x34\xf4\x7b\xe2\xba\x85\xc1\xbd\xd3\xd7\x2f\x10\xe2\x3d\x60\x09\xc9\xb0\xee\x01\x63\xd0\xa1\xdc\x47\xe7\x12\x12\x70\x3b\x91\x49\x3a\xfc\x9b\xa4\xec\x9d\xed\x87\x51\xf6\xf0\xc3\x28\xec\x96\xec\x2f\x3f\x47\x1a\x11\x71\x11\x5b\xb0\xcb\xab\xba\x2c\xaf\x5b\x9e\x3e\x1d\x44\x5b\x64\x7f\x31\x26\x49\xa4\xb0\x6f\xb7\xea\xf9\x74\x04\xf1\x6d\x1d\xe0\x21\xbb\x46\x92\x58\x7c\xb3\x94\xab\xf5\x9a\x49\x40\xe0\x5e\x7a\xa2\x9e\xbd\x0f\x71\x92\xe4\x8b\xbb\x04\xed\x4a\xd6\xad\xe0\xce\x68\x48\xef\xd8\x2e\xa9\x6b\x21\x31\xd7\xa0\x1d\x53\xf8\x70\x59\x58\x78\x37\x38\x4a\x45\x33\xae\x03\x07\xa3\x1b\xda\xc3\x01\x29\xe6\xb6\x6b\x61\x85\x74\x68\x81\xd4\xa0\x30\x5f\xaa\x4d\x16\x75\xc4\x89\xd7\x26\x4b\x85\xb9\xc6\x1a\x2f\x15\xe6\x3a\x68\xf4\xbd\x5e\xd7\x92\x99\x7a\xd2\x92\x99\x0a\x79\x85\x78\x9b\xdb\xb7\x73\x0c\x98\x03\xc9\xe5\xc6\xfc\xc6\xd1\xdc\xee\x9d\x5b\x49\x10\xd6\x10\x41\xa5\x0a\x4e\x90\xd0\x84\x08\x4c\x88\xb0\x90\x99\xb8\xd2\x7c\x21\xee\x46\xdb\x80\x40\xe8\xd2\x8f\xe7\x93\x56\x90\x7e\x34\x1a\x5d\xfc\xbd\x85\x80\x0e\x3b\x84\x28\xb9\x0b\x4e\x75\x90\xce\x51\xfb\x2e\xc5\x82\xe7\xf7\x79\x09\xcc\x98\xc6\x5f\x95\x32\xf6\xda\x32\x0d\x26\xe6\xd1\x99\x97\xdf\xf5\x63\xef\xc6\xe8\x3f\xa3\x84\x79\x0e\xdb\xf4\x93\x47\x03\xec\xf5\xca\xda\xea\x17\xa4\x6c\xe9\xb6\x85\x11\x7c\xa5\x0c\x61\x8c\x2c\x9c\x70\xcd\xf7\xfc\x1b\x67\x85\x27\xb4\xf9\xbc\x9d\x3c\x1f\x2f\xc4\x3b\xcd\xa2\xe4\xc5\x9d\x78\xd4\xf0\xec\x34\xd0\xdf\x7b\xfc\x52\xfb\x89\x41\x52\x7a\xb2\xdc\x34\x6a\x19\xd9\x60\xf2\x57\x0a\xd5\xd3\xdb\xc6\xe4\xfd\x17\xd2\x46\xb0\xcd\x75\x22\xe7\x50\x3f\x7d\x37\x80\xb1\xee\x66\x37\xf5\x9c\x6b\xc9\x2d\x37\x33\x21\xed\x4c\xe9\x59\xd7\xcd\x9b\xcc\x6a\x12\x0b\x98\x7c\xc5\xa9\xc2\x78\xb2\x6c\xfb\x66\x0d\xc7\xb4\x00\x36\xaf\xae\x55\x7e\xf3\x8a\x6c\x40\xe2\x7a\xa0\x4d\x8f\x15\x89\x2f\x54\x9a\x5f\x5b\xe5\xac\x25\x7b\xf8\x70\x72\x43\x93\x1b\x9a\xdc\xd0\xe7\x2d\xb9\xa1\x9e\x96\xdc\xd0\xa7\xe3\x24\x83\x7c\xd0\x92\x1b\xda\x3b\xab\xe4\x86\x26\xae\xf7\xb5\xe9\xb1\xe2\x38\xc9\x91\x59\x56\x8a\x0d\x97\xdc\x98\x2b\xad\xe6\xd1\xa3\xb2\xb8\xb7\x1a\x92\xcb\x4d\xf4\x52\xa7\x79\x51\x8c\x7a\xc3\x81\x89\xb2\xd6\xfc\xdb\x4a\x73\xb3\x52\x25\xf8\xf9\xf4\x3b\xe8\x54\xf1\x25\x79\xca\xf4\xc5\xa6\x69\xc7\x80\x85\x0b\xf2\x8c\xc9\x1c\x15\xea\x11\x9f\x34\x65\x20\xc8\x0b\x3e\x69\x16\x0a\xd1\xf3\xa5\x7b\xbd\x03\xee\xbb\x52\xbc\x5d\x9a\xa7\x1b\x40\x62\x9a\xad\x27\xda\xf9\x50\x1b\x1f\x68\xdf\x23\xd9\x76\xaa\x37\x3b\xfa\x95\x19\xd8\x6d\x20\x32\xa5\x90\xc2\x0a\x56\x5e\xf2\x92\xdd\x5f\xf3\x5c\x49\xb4\x22\xc9\xf8\xc6\xa2\xe2\x5a\xa8\x62\x62\x93\x32\x75\x9e\x73\x63\x26\x67\x59\x89\x3b\x90\x09\xda\xd6\xa4\x85\x9e\xb4\xa9\xa8\x08\x2b\xd6\x5c\xd5\x76\x52\x82\x48\xf8\x84\xe8\x97\xdf\x1b\x3a\xc7\xbc\x0d\x14\x90\x48\xd7\x25\x3a\x5f\x11\x24\x26\x04\x5f\x8a\x2e\x32\x8d\x92\xf8\x70\x35\x5a\xf6\x59\xd3\xfd\xf4\x3e\x7a\xd4\xfb\x44\x95\x56\x56\xe5\x0a\x4e\x53\x23\x0e\x40\x4b\x61\x7d\xc4\x79\x88\xe6\x18\x27\x99\x4d\x73\x56\x88\x14\x8d\x38\xda\x52\x34\x22\x45\x23\x9c\x2d\x45\x23\x86\x8e\x96\xa2\x11\x69\x1f\x00\xb6\x14\x8d\x48\xd1\x88\x14\x8d\xf0\xb6\x09\xda\xd6\xa4\x85\x9e\xb4\xa9\xa8\x88\x33\x8f\x46\x6c\xaf\xc6\x42\xb5\x2c\x28\x52\x51\x8a\xb5\x40\xc2\x12\xd9\x40\x94\x50\x32\x07\x06\x5c\xaa\xe4\xe6\xfc\xbf\x84\xf0\xb0\xe1\x79\xad\x85\xbd\x7f\xab\xa4\xe5\x77\x80\xda\xa1\x71\x06\x2b\x4b\x75\x7b\xa5\xc5\x46\x94\x7c\xc9\xdf\x99\x9c\x95\x0c\x05\xbc\xa6\xdf\x79\xcb\x59\xc5\xe6\xa2\x14\xf8\x4a\x04\x00\xec\x15\x67\xbf\x85\xce\xb2\x42\xa3\xf9\xbf\xd9\x64\xbf\x82\x9c\xf5\xfc\xc0\x84\xe0\xf2\x51\x79\xaf\xd2\x2a\xff\xa4\x6a\x09\x5a\x6e\x72\xac\x8c\x15\x5f\x64\x79\xff\x55\x29\xfb\x5e\x94\xdc\xdc\x1b\xcb\x41\x24\x1e\xea\x97\xe8\x5a\x5e\x98\x5f\xb4\xaa\x41\x16\x39\xb0\x70\xff\xf8\xfb\x28\x2e\x5d\x3b\xa3\xcf\x4a\x36\x5f\x3f\xe2\x37\x7f\x37\x1c\x04\xd3\x18\xff\x93\x0d\xff\x28\x64\x7d\xf7\xa5\xbd\x29\x3c\x1e\xec\x3f\xdf\x70\x32\x10\x1f\x0d\x01\x52\x21\x37\x69\x07\x0c\xd0\xbe\x32\xe6\x00\x35\xcc\x15\x41\x03\x10\xd5\xd8\xad\x90\x85\xba\x35\x23\xf3\xc5\x72\x6d\xd8\x5b\xcd\x0b\x2e\x9b\x2d\xf1\x75\x45\xb9\xd1\x11\x40\xe2\xe7\xc3\x8d\x8e\x7e\xba\x13\xf8\x91\x47\x1a\xcd\x6f\xb3\x4c\xdb\xba\x4a\xa7\x10\xcf\xda\x14\x9d\x8f\x74\x0a\x01\xb4\x74\x0a\x91\x4e\x21\x1e\xbd\x90\x4e\x21\x90\xf6\x03\xc4\xff\xd2\x29\x84\xbf\xa5\x53\x88\x49\x59\xd6\x74\x0a\xe1\x6c\xe7\xa8\x85\xa6\xa2\x22\xce\xfc\x14\xc2\xd8\x42\x00\xf1\x5f\x4a\x04\xa7\xed\xf2\x8b\x44\x90\x49\x29\xdd\x5a\xae\xd7\x42\xb6\xf1\xea\x4f\xdc\x18\xb6\xe4\x18\xca\x2e\x81\x45\x8f\x0c\x11\x1f\xd2\xcc\xfa\xeb\x9c\xd3\x08\xb3\x51\x65\xbd\xe6\x97\x7c\x23\xa0\xc3\xa4\xd1\xb2\x51\x8b\x76\x06\x14\xe8\x63\xb2\xf6\x18\x31\xc1\x92\x96\xff\xb8\xff\x56\xe8\xf1\x97\x45\xfc\xec\x18\xa4\x0d\x87\xbf\x24\x7f\xac\x9b\x09\x8c\xca\x1e\xdd\x08\x5a\x55\x6c\x49\x38\xd7\x9a\x16\x1f\xee\x4f\x17\x68\x03\x50\xb0\x28\x4d\x3d\x1f\x75\x1d\x1e\xfa\x7f\x77\x57\xc1\xb1\xda\x51\xa5\x75\xc7\x79\x67\x20\xac\xb7\x4a\xdf\x08\xb9\xbc\x14\x00\xe9\x60\xa2\x4d\xb1\xa6\x0d\x04\xed\x89\xea\x18\x18\xce\x93\xa2\xb4\xd0\xc8\x2b\xfd\xda\x06\x29\xea\x4a\x8c\x90\x85\x9e\xda\xc0\x51\x17\x12\xe3\x13\x62\x9a\x54\x32\x52\xf6\x5c\xf4\x0b\x26\xf4\x58\x26\x71\x9d\xc2\xe2\x98\xf4\x28\x66\x60\x54\x31\x20\x82\x19\x34\x52\x08\x72\x06\x29\x76\x49\x8d\x5c\x06\xc4\x2d\xa9\x51\x4b\x4a\xcc\x92\x7e\x4f\x88\x10\x29\x20\xc5\x09\xc2\xa2\x04\x41\x31\x82\x28\x11\x02\x5a\x94\x72\x54\x07\x04\x0c\x3e\xd0\x5c\x0a\x4a\x4c\x6b\x52\xba\x35\x71\x68\xdb\x5e\x9a\x85\xe0\x47\x41\x88\xca\xe4\x5a\xf5\xbe\x92\x5c\xab\xc3\xce\x93\x6b\x95\x5c\xab\xe4\x5a\x1d\xb6\xf3\x32\x5c\xc9\xb5\x3a\x6c\x93\xd2\xad\x89\x43\xdb\xf6\xd2\x2c\x44\x0a\x93\x79\x1e\x83\x01\x17\x51\x46\x44\x7c\x2f\x0a\x53\x13\x7c\x2e\x82\x1d\x27\x32\x0e\x6e\x27\xe0\x65\xa4\xa6\x09\x52\x4e\x75\x71\x61\x02\xbd\x3c\xca\x82\xa1\x1a\x88\xb4\x04\x44\xaf\x8e\xc0\x09\x74\x6f\x6e\xf4\xaa\xf9\x44\x0f\x6e\xf4\xfc\x27\xd8\x6b\xa3\x78\x6c\xd4\x44\x08\x82\xa7\x86\x7a\x69\x24\xc2\xa1\xb6\x0f\xb6\x7b\x74\x9b\x47\xb6\x77\x83\x6d\x1d\xee\x89\x11\x66\x86\xb2\x1f\x64\x3a\x61\x36\x0a\x48\xb6\x1b\x47\xe5\x92\x52\xeb\xc6\x99\x02\x35\x91\x6e\x9c\x59\xc0\x7e\xf0\x8b\x5b\x9f\x1f\x50\xf6\x5f\x46\x48\x69\xe9\x6e\x63\xb0\x25\x34\x55\xa9\x0a\x7e\xcd\x4b\x9e\x5b\x77\x45\x6e\xfa\xad\x71\x70\x91\xa1\x59\x56\x5a\x28\x2d\xdc\xf9\x60\x28\x09\x31\xf2\x6d\x47\x7c\x5b\x32\x63\x7c\x97\xad\xa0\x4f\xc5\x21\xd8\xd2\xfe\x24\xed\x4f\xd2\xfe\x24\x4b\xfb\x13\xe7\xa3\x69\x7f\xf2\x8a\x7c\x94\xb4\x3f\x49\xfb\x93\x11\x67\x91\xf6\x27\x13\x96\xfd\xb4\x3f\x71\x4c\x15\x02\xff\x42\xb9\x16\x03\xfc\x0a\x03\xc8\xa2\x5c\x6c\x41\xd7\x08\x05\xf6\x9a\xca\x8c\xa1\xc7\x1a\x43\x57\xd4\xa5\x1f\xc2\x02\x9a\x1f\x01\x08\x0c\xe5\x92\x05\x86\x22\x44\x01\xd3\xc1\x55\x10\x8e\x62\x34\xe2\xf8\x20\x66\x11\x7e\x9f\x02\xc6\x29\x1a\xe7\xa3\x68\xa8\x44\x14\x1b\x08\x23\x11\x91\x4c\x0a\x8a\x3e\x44\xea\xb4\x7d\x38\x76\xa7\x28\xca\xd0\x18\xda\xd1\xd4\x55\x55\xf2\x35\x97\x96\x95\xad\xc4\x78\xd7\x0b\xdc\xab\xd2\x60\xb2\x28\xee\x05\xba\xb5\x32\xf7\x26\xb7\x65\xac\xef\xa1\xed\xbb\xf1\x3d\x37\xd1\x4d\x22\xec\xb5\x69\xd2\x02\xef\xb1\xc1\xfd\x35\xba\xb7\x26\xe7\x39\xf8\x17\x9e\x86\x93\x45\x59\xd8\x30\x6c\x2c\xd2\x42\x84\xe3\x61\xd1\xd6\x9b\x8a\x81\xf5\x52\x8e\x0e\xd7\x1b\x91\xf3\x8b\x3c\x57\xb5\xb4\x51\xbc\x1d\xab\x4a\xae\x99\x97\x37\x00\xbd\x80\xb3\x0e\x5f\x2c\x78\x0e\xec\xc9\x08\x54\xbe\xe1\x71\x6f\x8a\x37\x9f\xc2\x3c\x07\x18\xe4\x4e\xf7\xb4\x86\x21\x0b\xc6\x33\x1c\xa0\xee\x84\x3f\x2f\xda\xf5\x44\x4f\x47\xce\x9f\x2b\x55\xfc\xd6\xde\xb8\x7e\x5b\x32\xb1\xee\x53\x49\x3e\x4e\x65\x6d\x80\xe5\x93\x2a\xfa\x59\xd9\x23\x0f\x00\xd5\x7c\x84\x28\x98\x65\xd7\xed\x46\xb5\x6f\x18\x44\xe0\x58\x25\xbc\xae\x3f\xb4\xc4\x37\xc2\x7d\x8c\x03\x75\xe2\x73\x04\x80\x4e\x7c\xa6\x79\xd6\xce\xb4\xf7\x47\x87\xb5\xf6\x32\xb0\x37\x70\x80\x2c\x88\x3f\x60\xf0\xb2\xe7\xa2\x48\x80\xe0\x25\x67\xe8\x7d\xc4\x78\x8e\x9e\x91\x45\x5a\x33\x9b\xb7\x57\xe8\xb9\x31\x27\xb5\x8c\x67\x61\xc6\x5a\xcb\x11\x13\xcd\x82\xbe\xe9\x04\xfc\x5e\xf4\xde\xfd\x0d\x77\xf7\x33\xdb\x11\xf1\x34\xe6\xef\x81\xfb\x3e\xb2\x39\x77\x6f\xd7\xa6\x2d\x85\x56\x69\xb6\xe4\xde\x5c\x07\xef\x94\xb6\x00\x2a\xc5\xd0\x2e\x06\xcc\xc2\xf9\xb5\x9a\x1f\x3f\xb3\xf0\x09\x7d\xad\x7b\xa3\x3c\x43\xa6\x63\xfe\x16\x32\x99\x79\xed\x3a\xca\xf1\x52\x98\xcb\xa2\x52\xa2\x1f\xf1\xdd\xdb\x41\xa5\xf9\x42\xdc\x05\xbf\xae\xf9\xd2\x01\x39\x33\x88\x9c\x1d\x1f\x5f\xf3\x5c\xf3\xde\x0d\x97\x73\x80\x87\x1e\xbe\xf5\xc4\xca\xdc\xef\xde\x8a\x45\x10\x73\xed\x6a\x44\xbe\xcc\x8a\x38\x48\xda\xfb\x53\xe3\xef\xce\x99\x79\x20\xf5\xd3\x81\x5d\x1f\x5c\xf0\x05\xab\x4b\xdb\xa7\x23\x7c\x07\x4d\xee\x4d\x53\xaf\x11\x73\x58\x37\xbf\xbd\x77\xda\x79\x40\x4d\xaf\x1d\xfa\x10\x3d\x5a\x43\x36\x8b\xee\x64\x0c\x40\x2e\x5d\x36\xb8\xdf\xf6\xce\xda\x81\x8f\xfe\x04\xed\x0e\x8f\xdb\x57\x55\x75\xe6\xb2\x5f\x0c\xfb\x0e\x1e\x4c\xa8\xf8\xf7\xce\x76\xc5\x4a\xfb\x9c\x2e\xfd\xb3\x10\x52\x90\x64\xa2\x52\xc6\x2e\x35\x37\xbf\x5f\x7c\x0c\xda\x01\xff\x59\xeb\x41\xfb\x4e\xaf\x02\xca\x50\x7f\x64\xcd\xee\xde\x2a\x29\x79\xee\x8d\x51\xa1\xb1\x12\x34\x5d\xd3\xa5\x00\xc1\xe9\x7b\xfd\xa4\xf9\x5f\x87\x50\xd9\x6d\xb6\xc1\x39\xbe\x7a\x12\xb3\xfc\xa6\xae\x06\x39\xa1\xcb\x7c\xd0\x9e\x3f\x2d\x13\xb0\x4c\xa5\xca\x8f\xab\xe6\x0c\x0d\x75\xdd\x9a\x77\x25\x33\x56\xe4\xff\x2c\x55\x7e\x73\x6d\x55\xbf\x0a\x43\xfb\xcc\xda\xc3\xfb\x3e\xdf\xed\xb0\xc1\x7b\xd8\x8a\x69\x2b\x10\x84\xc4\x71\xf2\xb6\x50\x84\x43\xfc\x24\xbe\xdb\x5e\x7d\xb8\x8c\x44\x21\x64\xdf\x3e\xdb\x0d\x3a\x6c\x1b\xfb\x60\xe8\x2e\x85\xb9\x89\xc1\x29\x39\xcb\x57\x42\x2e\x5d\x9b\xd5\xc7\x93\x03\xd8\xa5\x10\xe6\x06\x39\x95\x22\x75\xf8\xfd\xeb\x87\x68\xfd\x45\x16\x0f\x5f\x9c\x99\xd4\x59\x6c\x66\xc7\x78\x73\xbb\x64\xde\x87\xbe\x7f\xfd\x10\x85\x7f\xdf\x8b\x38\x48\x8e\xf1\x75\x83\xdb\x71\x7e\xde\x27\xb0\xa6\x66\xc5\xb4\x33\x98\x43\xec\x11\x5b\xd3\xfd\x87\xb8\x1f\xdb\x4e\x6e\xe8\xba\xe6\xbc\x5a\x2d\xa2\x64\x28\xae\x95\x14\x56\xf9\x6f\x5e\x80\xd1\x5a\xf2\xc9\xb7\x3f\x52\x8b\x64\xfc\xbf\x98\xc8\x6f\x79\xd8\x27\x63\xa4\x49\x76\x5d\x7e\xe5\xde\x74\x63\x4a\x3a\x06\x9a\x65\x33\x46\xe2\x14\x92\xb4\x15\x55\x1e\xb7\x5c\x3d\x58\xce\x84\x2c\xdc\x53\x7f\x21\x37\x71\x2c\x3e\x7e\x45\x4c\x77\xd6\x8e\x67\xae\xe4\x42\x2c\x3f\x31\xe7\xc9\x3c\xba\x12\x9e\x08\xe8\x61\x1b\x67\x57\x01\x19\x8f\x51\x72\x0b\xa1\x13\xd3\x8c\x9e\x5a\xe8\x8e\xb0\x1e\xb6\x13\xd4\x1b\x82\x81\xd5\x46\xcb\x72\xf4\x9d\x92\x66\xee\xa8\xed\xf3\x39\x46\xcd\x71\x44\xb4\x10\x4c\x1a\x57\x98\xf8\x79\x87\x7e\xcd\x8b\xa9\x03\x23\xa2\x28\x02\x2d\x36\xd1\x2c\x71\x74\x9b\x26\x55\xc1\xaf\xea\x79\x29\xcc\xea\xfa\xb5\x19\xa3\xb1\xe2\x2a\x17\xd6\x6a\x31\xaf\xad\xff\xfb\xa7\x72\x65\x07\xdc\x24\xb7\x9c\x3a\x54\x6c\x0a\x75\x2b\x6f\x99\x2e\x2e\xae\x9c\x01\x8d\x64\x47\xbd\x6d\x21\x78\x59\x00\xf2\x18\xd2\x77\xd6\x25\x22\xfe\xc6\xb5\x21\x54\x86\x21\x9b\xec\x6c\xfb\x19\x94\x02\x2b\x01\xa3\x50\x6f\xe0\xef\xe6\x44\x30\xe1\xf0\xd5\xfa\x1f\xc0\x4f\xd9\x67\x5e\xbe\x1f\x99\x49\x77\xa7\x96\xa3\x57\xdd\x2e\xc4\x46\x18\x24\x2f\x6f\xc0\x18\x5b\xaa\x4d\x48\x14\xb6\x53\x8a\x2f\x09\x14\x67\xf6\x65\xdc\x54\xa8\x43\xbe\xae\xec\xbd\xa7\x00\x11\x1c\xf9\xe3\x85\xa8\xd7\xf1\x82\x56\xe2\x4f\xfe\x51\xac\x9f\xe7\x21\x04\xf6\x08\xd1\x63\xe1\xbc\x53\xf4\x42\xb1\x99\xb2\x7e\x35\x87\x77\x96\xe9\x25\xb7\xbf\xff\xfe\x79\xc2\xf1\xe1\xdb\x5b\xe1\xbf\x2a\xf3\x52\xd3\xc3\xb8\xb8\xe4\x77\xdd\xbd\x94\xd7\xbf\xc9\x53\xd8\x45\xc3\xa9\xec\x56\x52\xa4\x75\x52\x1b\xba\x45\xa9\xf2\x9b\x38\x01\xf9\x82\x59\x66\x22\x1f\x3e\x3e\xf4\xf9\xfd\x7b\xb4\xa8\x33\x44\x95\x65\xce\xaf\x9a\xcd\x93\xb1\x5c\xda\x58\xd9\x0a\xaf\x2b\xaf\xa5\x2a\xa2\x2e\xf4\xcb\x64\x0e\x74\x1f\x31\x98\x5b\x84\xfd\xca\x2b\x15\x45\x86\x84\x6e\x2f\x53\x81\x74\x80\x08\x5b\x29\x23\x22\x77\xb9\x11\x48\x60\x21\xea\x39\xd0\xfe\x3b\x06\x2f\x57\x59\x1b\xcb\x75\x9c\xd3\xfe\xed\x4d\x0c\xaf\x41\x21\xc8\xf5\x84\x4f\xe7\xb1\xb5\xda\x11\xc5\x2d\x7c\xee\x5d\x21\xb4\x96\x2b\x65\xbc\x65\x96\xe1\xba\xaa\x31\x09\x6f\xe3\xa9\x7a\x50\x95\x45\xa0\xa6\x30\x91\x8e\x45\xf2\x15\xab\x2e\x6a\xbb\xba\x14\x26\x57\x1b\x8e\xea\x1e\xc4\xd7\xdb\x76\x7d\xdd\x5d\x15\x8d\xd7\x71\x64\xf3\xdc\x21\x28\x5a\x05\x85\xb6\xf0\x5e\xff\x88\xa5\x75\x1f\x56\xfb\x83\x6c\x54\x21\xf3\x07\xad\xa6\xbf\x59\xaf\x94\xb6\x2c\x1a\xe2\xce\x08\xfb\xea\xb4\xf1\xf1\x43\x1a\xb6\xe1\x91\xab\x76\x25\x4f\xaa\x3e\xc5\x1f\x2e\x4a\xcf\x1a\xae\x76\xfe\x7e\x38\xf1\xa1\x6a\x78\x57\xc2\xdd\x35\x65\xe8\xeb\x65\x1c\x27\x67\xd2\x2e\x49\x87\xd2\x73\xe2\x74\x38\x8f\xb5\x9d\x3d\xcc\x69\x28\x27\x54\xbb\x4d\xe8\x01\xca\x4a\x14\x03\xdd\x74\xf4\x0a\x36\x70\xbb\xef\x18\x4c\xe9\x95\xb2\x4a\x4e\x7f\xd3\x5f\x9c\x38\xfd\xae\x19\x70\x30\x6d\x95\xb6\xb7\x4a\x47\x8c\xc8\x4e\x3e\xf7\xf3\xac\x53\x25\x2b\xad\x9a\xdf\xdd\xc3\x9d\x4d\x8a\x07\x00\x3e\x9c\x8d\x95\xe4\x01\x25\x9d\x86\x76\x4e\x98\x75\xe0\xe3\xa1\xd5\x85\x09\x59\xa2\xfb\x16\x70\xe0\xde\x35\x3c\x23\x63\xdf\xe8\xb9\x19\x4f\x27\x4a\x2b\x0e\xda\x35\x4a\xc1\xde\xc7\xa3\x91\xc9\x42\xaf\x87\x8c\x66\x9d\x1e\x3e\x0f\x1d\xec\xef\x1b\x31\xd5\xe6\xf0\x25\xbc\x2a\xf2\x09\x4a\x8e\xa0\x19\xab\x4f\x07\x41\x2c\xc7\xe3\x37\x60\x5a\x81\x89\x79\xfb\xf6\x7a\x74\x0d\x2d\x93\x6e\xf8\x78\x59\x60\x76\xdd\xbe\x05\xab\xba\x2c\x2c\xe3\x2e\xca\xc8\x21\x1a\x25\x0b\xc8\xc7\xdb\xb7\x20\x75\x91\x25\x8b\xd0\xd7\xc2\xb2\xfa\x0e\x26\x3b\x40\x60\x02\x33\xfd\xf6\x6d\x90\xcc\x90\xb3\xff\x22\x8d\x4b\xcf\x08\x8c\x32\x70\xb8\xa8\x92\xf2\x05\xf7\x2d\x50\x52\xc3\x9c\x94\x29\x3a\x1d\xc4\x41\xcc\x51\xcc\xad\xe3\xed\xf5\x18\xea\xb4\x29\x38\xd6\xd2\xa6\x20\x6d\x0a\x46\xda\x14\x3c\x86\xaf\xff\xa6\x6e\x38\xe8\xae\x06\x5c\x37\xa9\x0b\xc1\xe5\xa8\xb9\xef\x59\xc6\xef\x2a\x41\xc4\x73\xdf\x36\x1a\xae\xfb\xe3\x39\xd2\xa4\x9a\x26\xcf\xa3\xdf\x00\x80\xa5\x91\xc4\x5b\xd1\x93\xf5\x41\x54\x90\x2e\x96\x37\x34\xc0\xf9\x47\xad\xe6\xf7\x36\x4a\x24\x7a\x89\xd4\x79\x7a\xc1\x40\xb4\xe6\x4b\x61\x6c\xc4\xe4\x2f\xcb\x25\xeb\x07\x9e\x25\x77\x17\x11\xc8\x62\x1b\x75\x3f\x71\x5a\x5a\x47\x5f\x20\x30\x3f\x94\x6b\xf5\x3c\x4a\x40\x3e\x76\x9e\xcb\x9a\x2d\x23\xa2\x51\xf1\xfb\xe6\x99\x68\xfd\x9d\x01\x18\x8f\x52\xb1\x32\x1d\x52\x86\xc9\x14\x91\x73\x5a\x01\x71\x3e\x11\x0b\x5b\xc7\xe4\xac\xe4\x1f\xbe\x4c\x50\x49\x2c\x99\xe5\xb7\x2c\x9e\x11\xaa\xb4\xb2\x1d\x2c\xe7\xa5\x5a\x33\x11\x2f\x27\x2e\x09\x90\xbf\x66\x9f\x29\xdf\x49\x36\x2f\xfd\x2e\x28\x81\x48\x1d\x66\x7b\x54\x20\xc7\x87\x3e\xaf\x62\xea\x57\x73\x6f\x2c\x8f\x77\xc3\xd3\x5f\x28\x81\xd8\x25\xa6\x91\x1e\xa4\xd1\xed\x69\x6f\xd9\xd6\xfd\x54\x4b\x8f\xc1\x7a\xcb\x1b\x0d\x3b\x9b\x64\x83\x84\xcb\x74\x86\x78\x07\xaf\x07\x97\x29\x36\x94\xd2\x08\x80\xa2\x98\x46\xe8\x74\xb7\x8a\x92\xbd\x3a\xf9\x64\xb1\x57\xe7\x22\x44\xb7\x6b\x87\x5d\x9a\x2a\xde\x6d\x05\x8c\x19\xeb\x79\x94\x64\xec\x8d\xa9\x56\x5c\xf3\xc9\x66\x41\xee\x1c\xa6\x52\xe4\xf7\xd1\x52\x17\x9f\xf4\x3b\x02\x53\x20\xb9\x10\x23\xe4\x59\x7a\x12\x1a\x00\xd6\xf2\x3e\x52\x09\x3b\xa8\xac\x5e\x77\x29\xe1\x83\xcc\xcb\xda\x88\x0d\x50\x09\xd2\xa7\xad\xba\x0e\xbf\x89\x18\x75\x70\x77\x5d\x95\x42\xc6\xea\xee\x7f\xb9\xd9\x16\xe8\xc9\xbb\x26\x7d\xe5\xc7\x32\x70\x4d\x1c\x65\xc8\x62\x4d\xf1\x78\x49\x32\x74\x82\x91\x8a\x67\xf8\x4a\x94\xc1\x1d\x45\xa9\x86\xe1\x2b\x59\x06\x76\xe3\x27\x3d\x52\xbe\x0c\x1a\xac\xb7\x14\x59\x76\xf2\x8a\x40\xa7\xa8\x47\xe2\xfc\xd9\xe4\x5a\x54\xb6\xbf\x38\xaf\xb7\xba\x12\xa1\x52\x09\x42\x5a\xbf\xe1\xc5\xe8\x8a\x20\x38\xa0\xbb\x2a\x6c\x2f\x85\x38\xaf\x98\x29\x40\x6e\x38\x00\x54\xf0\x97\x17\xf6\xdc\x6a\xf0\x8a\xa4\xb7\xe2\x08\x24\x4c\x58\xa5\x11\x68\xd9\x91\x0a\x23\x70\x47\x9e\xca\x22\x50\x3f\x91\xd8\x39\x4a\xc5\xea\x58\x0c\xea\xe7\x2b\x4f\xd5\x10\x5f\xc5\x10\x8c\xef\x5c\x55\x0c\x10\xbe\x8b\x27\xaf\xd8\x46\x1e\x5a\x23\xa8\x22\x48\x14\xd9\xf7\x56\x01\xf1\x57\x00\xf1\xae\x93\xbb\xf2\x07\x54\xbd\x1a\x38\x64\x04\x62\x7e\xa4\x3d\xab\x3b\x16\xe4\x0b\x94\x9d\x54\x14\xd1\x8a\x1e\x18\xef\x21\xb1\x12\x74\x03\x1d\x11\xc6\x1c\x8a\x24\xf8\xce\x1e\xa3\xc8\x8c\xe7\x34\xd1\x2f\x0f\xce\x0a\x1d\x27\x74\x8f\x62\xf3\xdf\x99\x32\xcd\xd9\x38\x5a\xde\xcb\x8e\x08\x85\xc1\x13\x9c\xb8\x5e\xb1\x57\x39\x03\xda\x1b\x8f\xcd\x42\x27\x35\x84\xb0\x2c\x76\x42\x43\x3b\x9d\xa1\x9c\xcc\x60\xa7\x32\x84\xf8\x3a\x72\x1a\xe3\x3f\x89\x01\x4e\x61\xc0\x80\x36\x62\x71\x7d\x5a\x01\xfa\x7c\xe4\xf8\x06\xd1\x78\x7e\x51\xed\x87\x79\x82\x84\xd4\x0b\x88\x7a\xca\x7d\x07\xb5\xca\xc5\x54\x15\x7d\xec\xbd\x39\x56\xc9\x82\x8e\x0b\x1b\xef\x9b\x81\x4d\x9a\x0b\xe4\xd4\x3b\x02\x70\x29\x36\xd9\xa4\x6e\xee\xf0\x95\x40\x5a\x56\x02\xf5\x9e\x2c\x31\x39\x81\x78\x17\x76\xb4\xac\x00\xfc\x86\x2b\xe1\xd0\xff\x95\xd9\xf5\x90\xfb\xa7\x64\xb4\x0d\xea\x1d\x53\x22\xbf\x91\xee\x91\x12\xfb\xa6\xdd\x15\x1d\x8d\x95\xe1\x1b\xa0\x30\x27\xa3\x0e\xdd\xe9\xdc\x35\x6f\x47\xbe\xaa\x10\x50\x54\xc8\x5b\x0d\x02\x0b\x78\x20\x55\x20\x62\x1c\x5d\xf5\x57\x7e\x38\xe1\x9e\xdf\x03\x1e\x39\xd5\xc3\x10\xac\xaa\xc3\x69\x63\x80\xde\x2a\x0e\xa7\x9c\x8e\x9f\xfb\xbc\x15\x1b\xce\x6f\x63\x02\x54\x66\x78\x49\xef\x3b\x45\xd8\xda\x36\xf6\x26\xc4\x53\x61\x01\x62\x6b\xac\xb2\x02\x76\x68\x88\x55\x54\x88\x61\x51\xe0\x2a\x0a\xaf\xfb\xcc\xdd\x5f\x29\x61\x62\x27\xa3\xce\xaa\x08\xfe\x55\x77\x57\x43\x80\xf8\x1d\xa9\x82\x00\x12\x0d\xa9\x7e\x00\x76\xe5\xaf\x7a\x10\x25\x0e\xef\xad\x74\xe0\x5f\x02\x5f\x85\x03\x64\x11\xa0\xca\x06\xa0\xcc\x4d\xe8\x34\xd2\x4f\x7f\x5f\xf5\x02\xe7\x4e\xc5\xbb\x36\xbe\x8a\x05\xc8\xd2\x44\x21\xa8\x1d\xae\x4e\x01\x55\x32\x80\x52\xce\x6a\x04\x50\xd2\x0e\xa5\x0a\x01\xe6\xe7\x10\xaa\x0f\x60\x1d\x46\x32\x6b\x70\xb5\x01\xac\x37\x77\x95\x01\xac\x0f\xb8\xba\xc0\xf4\x36\x86\x40\x25\x81\xd3\xee\xe5\x92\xa3\xde\x3d\x04\x56\x07\x88\xa2\xba\xfa\x2b\x02\xb8\xaa\x01\x40\x95\x00\xbc\x1f\xeb\xc0\xed\x3f\x99\x7d\x88\xc9\x73\x3e\x7c\xfe\xb1\x6d\x8d\x07\x8f\xdf\xbb\x1e\x24\x1c\x7e\xc8\x34\x21\xf8\xfb\x13\xf3\x8b\x7c\x58\xfb\x7e\x2a\x12\x30\xf6\x4f\xb9\x25\xf4\x60\xea\xc7\x61\xce\x7e\x1c\x7d\x3f\xdd\x20\xfc\xfc\xb3\xcc\xcc\x3a\x9b\xe4\x26\x2f\x26\xfe\x64\x0f\x92\x01\xfc\xfb\xa8\x47\xc9\x04\xcc\x7b\xda\xf1\x1e\x01\xa7\x92\x04\x69\x19\x02\x67\x49\x84\xb2\x24\x1e\x05\x76\x8d\x0a\x61\x19\x0a\x5f\x49\x39\x13\xde\x37\x2a\x6c\x65\x00\x09\xa8\x70\x95\x14\xa8\x4a\x12\x4c\x25\xe1\xd0\xfe\xf0\x05\x14\x9e\x12\x87\xa6\x24\x12\x91\x06\x49\x89\x69\xec\xc7\x4f\x43\x34\x21\x61\xd3\x9f\xaf\x4e\x08\xc1\xa1\x0f\x85\xd2\x0d\xc7\x9f\x0f\x52\x45\xd9\x10\xdc\xf9\xc0\x11\xc3\xc0\x6a\x43\xb0\xe6\xc9\xe2\x9d\x25\xed\x9c\x0d\xc4\x93\x0f\x65\xfc\x41\x38\xf2\xc1\xbc\x1f\x88\x1f\x1f\x3c\x5e\x28\x6e\xfc\x49\x45\x2d\x00\x2b\x3e\x40\xd2\xe8\x4e\xc0\x54\x0c\x3b\xa1\x73\x14\x0f\xfe\x7c\x8d\x63\x72\x98\x93\xc3\xec\x7d\x21\x39\xcc\x5d\x0b\xc2\x6d\x27\x26\x66\x93\xf0\xda\x89\x64\x0c\xc4\x69\xa7\x63\xb4\x53\x25\x71\x02\x00\x72\x71\xa1\xe1\xa2\xa5\xc4\x02\x77\xb1\x9d\xd8\xeb\xde\x89\x78\x30\xd7\x11\xee\xf5\x62\xad\x9f\x38\x78\x89\x60\xab\x63\x47\xf1\x5e\x4c\x75\xa8\x9b\x08\xd7\x8b\x11\x0c\xf5\x48\x49\x2e\x4e\xdc\x74\x0f\x66\xba\x97\xdb\x1c\x58\xe9\x27\x8c\x93\x7b\xb1\xd1\xa1\x5e\x00\x4c\x74\xa8\x9f\x09\xc2\x14\x78\xb0\x79\x4f\x7e\x4e\x79\xc6\x67\xe3\x27\xc1\x16\x70\x61\x99\x0f\x47\x1e\xf0\xe0\x97\x9f\x50\x70\x01\xbc\x72\xec\x68\x91\x80\x53\x9e\x98\xfd\xe0\x31\x1f\x24\x27\x84\x41\x0e\x12\x02\xc3\x1e\xc7\x2e\xeb\x60\x98\xe3\x58\x5f\x5e\xac\x71\x82\x3d\x3f\x09\x5a\x8f\x1b\x57\xdc\x8f\x29\xee\xc1\x13\x07\xf4\x87\x16\x95\x33\xb9\xd2\xfb\x99\xee\x40\xcc\x64\xcf\x78\x13\x80\xc5\xf1\xe1\x13\x80\xc5\xc1\x63\x6e\x5f\x2c\x16\xf6\x44\x44\xa4\x31\xbf\xc0\xfb\x60\xc2\xcf\x32\x27\xe6\xac\x2d\x73\x34\x73\x43\x82\xfc\x8e\xc1\x4c\x10\x3c\xf7\x09\x19\x8a\x00\xc7\x4d\xef\x2f\xe2\x02\x45\xc0\x46\x47\xd3\xb7\x1c\xe7\xba\x9e\xe5\x75\xfe\x6c\x24\xab\xcc\x4a\x0d\x01\x98\xd5\xcb\x5e\x86\xf0\x98\x5e\x98\x75\xfb\xd5\xb7\x4b\xc6\xbd\xdd\x4b\x9f\x7c\x79\x7a\x70\xad\xdd\xac\xed\xbd\xf7\x87\x76\x58\xf2\x62\x59\x66\x56\x5f\x79\xc3\xcd\xdc\x71\x0b\xc3\xb7\x62\x03\x68\xe6\x98\x5e\xef\x4f\x0f\x5b\xe3\xa7\x23\xba\x66\xc9\x96\xfc\x78\x4c\xd0\x39\xbd\x3e\x4e\x74\x70\x21\xf4\xb9\xc7\xb9\x8f\xcb\x0d\x71\x30\xbf\x02\x75\x5b\x2c\x40\x5c\x36\xac\xac\x23\xf4\xf0\x5e\x2b\xc7\xee\x0b\xb3\xbf\xbb\x5c\xc8\x5f\xf9\xbd\x37\x41\xe2\xe5\x1c\x70\xec\x3c\x8d\xd0\x21\x7e\x8e\x86\x9f\xa1\xc5\x72\xab\x41\x9f\x19\xcb\xe6\xc2\xd7\x8c\x92\xb1\x45\xa0\x34\x21\x2b\x2b\xfa\x06\x06\xcb\xb5\x02\xe9\x4d\x4b\x26\x22\xa5\x23\x53\x12\x86\x08\xa4\x87\x93\x82\x08\x7d\xe2\x89\x3f\xd1\x57\x13\x4a\xe7\x01\x17\xb3\xdb\xc2\x24\xa5\xe7\xec\x74\x72\x4a\xcf\x7f\xaa\xe6\x9c\x4d\xaf\xb7\x07\x7a\xe7\xc7\x5d\x8c\x4a\xab\x35\xb7\x2b\x5e\x1f\x65\x10\x1f\xfb\xf0\xbb\x4a\x69\x3b\x0c\x7d\xc3\xe5\xdc\x67\x27\x3f\x33\xeb\x71\xb9\x08\x93\xc1\x45\x2e\xba\x88\x78\x5c\xb3\xd0\x1e\xdd\xae\xda\xb6\x91\xc1\xe4\x70\xd7\x2d\x6c\x88\x8c\x9a\x17\x17\x90\x12\x86\xa7\x4a\x05\x0e\x40\x4b\x99\xca\xc8\x69\x53\x19\x39\xaf\x0d\xcf\x6a\x23\xa6\xa9\xd1\x12\xfc\xe9\xbc\x10\x92\xd4\x1f\xb0\x62\x01\x89\xfc\xe4\x51\xa8\x2b\x46\x4b\xdb\x27\xae\x5b\x58\x9e\x3a\x7d\xfd\x02\x73\xd3\x03\x96\x90\x9c\x8f\x1e\x94\x4c\x4a\xcd\x41\x1f\x9d\x4b\x48\x19\xe7\x44\x26\xc1\x5d\xd6\x6d\x4b\xca\x1e\x1e\xe4\xec\x94\x3d\xfc\x30\xea\xa0\xf7\xba\xc6\xc4\x11\xb1\xb4\x2a\xed\x4c\x26\x8c\x8d\xa2\x09\xdc\x30\x46\x65\xa5\x14\x6b\xe1\x46\x9c\xca\x82\x50\x13\x33\x1a\xbf\x93\x96\x9f\x9b\xf3\x99\x31\x96\x5d\xc3\xf3\x5a\x0b\x7b\xff\x56\x49\xcb\xef\xa2\x14\x66\x67\x65\xa9\x6e\xaf\xb4\xd8\x88\x92\x2f\xf9\x3b\x93\xb3\x92\xf9\x50\xf8\x32\x92\xfa\xc8\x59\xc5\xe6\xa2\x14\x08\x65\x29\x9a\x9b\x15\x90\x26\x22\x5c\xa0\x21\xea\x5d\xca\xd5\x88\x42\x2b\xe0\xda\xfd\x34\x66\x0b\xcb\x58\xb5\x65\x1b\xef\x42\xe0\xdc\x52\x69\x95\x7f\x52\xb5\x3b\xe9\x3a\xa3\x85\xd9\xba\xf3\xff\xaf\x4a\xb5\x95\xae\xfc\xe9\x5b\xb4\x19\xeb\x5a\x5e\x98\x5f\x7c\x19\xf0\x19\xf1\x1a\x05\x9e\x26\xd3\x8e\xff\x59\xc9\xe6\xfb\x22\x7f\xd5\x77\x4f\xea\x6a\x36\xda\x47\x19\xfe\x51\xc8\xfa\xee\x8b\x1f\xa8\x37\x23\xaa\x8d\x92\x6f\x38\xe4\x26\x91\xe4\x4b\x2b\x77\x09\xb5\xa0\x4e\xad\x27\x5b\x21\xa8\x53\x5f\x3a\x72\x40\xa7\xb0\xc2\xb8\x15\xb2\x50\xb7\x66\x84\x55\x5d\xae\x0d\x7b\xab\x79\xc1\xa5\x15\xac\xbc\xae\x78\x2f\x66\xfa\xf3\x89\x83\x84\x7b\x3e\x04\xba\x9b\xa4\x71\xd2\x56\xf0\x46\xe8\x3d\x9e\x2f\xe2\x7d\xa4\x11\x72\xbd\xe9\xdf\x90\x78\x67\x5d\xb2\x39\xef\x47\xfa\xa3\xb9\x6d\x31\xb2\x90\x86\xa6\x63\xb8\xbd\x7f\xc4\xf3\xf7\x69\x4f\xe7\x27\x38\x37\x03\x3e\x49\x73\x3b\xff\xa7\x5f\x0b\x9f\x73\x7f\xea\x19\xb9\xf3\x62\xfc\x4e\xbb\x37\x8b\x89\xe8\xa4\xfb\xcd\x3c\xe2\x94\x43\x47\x30\x6e\x27\xfc\xb4\x27\x30\x3e\x27\x7b\x52\x75\x15\xfc\xce\xb3\x7f\x15\xbd\xce\xb2\xf7\x73\x68\xce\xb1\x7f\x46\x7e\x67\x18\xf1\x17\xfd\x7e\x22\xe2\xf4\x82\xb3\x75\x39\xb9\x71\x26\x8b\x39\xb3\x88\xb8\x79\x9d\x57\x2c\x23\xda\xe3\xac\x42\x9d\xf8\x9c\x53\xa8\x93\x08\x77\xe3\xbc\x82\x86\x39\x9d\xd0\x35\x67\x92\x93\x09\x11\x80\xee\x54\x62\x2b\x8c\x3a\x91\xa3\xda\xbe\xde\x9f\x2a\x56\x9b\xe7\x7a\xaf\x5f\x5e\x2b\x55\x7c\xe3\xeb\xaa\x64\xcf\xaf\xa9\xbb\xd6\x2d\x57\xd2\x6a\x55\x96\xc7\x79\xcc\x6b\x74\xa5\x54\x96\x39\x99\x66\x52\x7e\xc6\x9a\x5b\x56\x30\xcb\x7e\x84\x6f\x35\x3d\xb2\xe7\xfd\xce\xc5\x42\x48\x61\x7b\x0f\x7b\x10\x2d\x20\x55\xc1\x2f\x3c\xfd\xa0\x7d\x75\xcf\xf1\x05\xd7\x9a\x17\x97\x75\x43\xad\xeb\x7c\xc5\x8b\xba\x14\x72\xf9\x61\x29\xd5\xee\xcf\xef\xee\x78\x5e\x23\x81\x59\x30\x82\x48\x3b\x23\xeb\xe6\x88\xc3\x92\xd0\x4f\xe0\xd6\xcc\xe6\xab\x77\x77\x95\xee\x32\xc7\x09\x00\x46\x24\x84\xa4\xb0\xc9\x75\x8d\x88\x94\x94\x85\x9d\xe4\x75\xad\x99\x21\x3b\x92\x97\x3e\xda\x80\x6d\xba\x0e\x91\x20\x01\xb4\xef\x5a\xf0\x2c\x69\x41\xf7\x7d\x0b\xc3\x51\xc3\x31\x98\xba\xe7\xb7\x8b\x46\x78\x89\x78\x16\x7e\xf8\x12\x85\x06\xad\x74\xb5\x59\x16\x49\xb0\x92\x60\x39\x5e\x4d\x82\x45\xa1\x01\x71\x90\x5b\x2e\x96\x2b\x00\x4c\x30\x0b\x82\xc0\xc3\x0f\x57\x32\x2a\x32\xd6\xce\xfa\x03\x0f\x77\x1f\xe9\x7d\x90\x40\x3a\x74\x55\xb6\x9f\x14\xc7\x8f\xa2\x28\xb3\xc6\x25\xbc\xe6\x65\x5b\x1a\xed\x1b\xd7\x98\xe4\x12\x44\x3c\xb9\x53\x5d\x4b\x5a\xff\x68\x4b\x5a\x7f\xdb\x92\x3b\x95\x04\xeb\x58\x4b\x82\x75\xf8\xfc\x54\x05\x8b\x38\x08\xde\x3d\x4a\xd6\xd9\x73\x4b\x0e\xf9\x26\x71\xb2\xfb\x2a\x55\xfc\x70\x71\xa5\xfd\x27\x37\xd4\x1e\xcb\x1b\x6a\x73\x09\xb6\xcb\x8a\xcb\x56\x98\x02\x0e\x77\xbd\xb2\x50\x4d\x15\x6a\x29\xb2\x30\x6b\x91\x0d\x53\x8d\xe1\x56\x63\xf0\xc0\x61\xd6\x23\x0b\xb7\x20\xd9\xd0\x19\x87\x5a\x92\x2c\xd0\x9a\x64\x01\x16\x25\x0b\xb5\x2a\x59\xa8\x65\xc9\x82\xe9\xd2\x4a\xe7\x47\x67\x6e\xd1\xf1\x16\x96\x28\x7e\x6c\xca\x01\x9c\x30\xc0\xfc\x92\x5e\xda\x25\x39\x8d\xe9\xd7\x06\x51\x81\xbe\xda\x56\x55\xaa\x54\xcb\xfb\x5f\x47\xbd\xdb\x43\xbd\x14\x73\x30\xab\x14\x62\xda\xb6\xd9\x53\x47\xe0\x07\x8a\x33\x8d\xe2\x57\x05\x38\x3c\x29\xc6\xd4\xb5\xb4\x15\x3e\xda\xd2\x56\x78\xdb\x4e\x19\x63\xa2\x3a\x2a\x43\x9d\x94\x01\xa6\x99\x5c\x53\x06\x7e\x81\xea\x94\x90\x38\x9c\xfc\xc5\xb4\x95\x24\x3b\x21\xb4\xbb\x02\x04\x0b\x4b\x71\x3c\xa2\x1b\x4d\x38\xfe\x21\xad\x48\x31\x10\xa0\xa5\x18\x48\x9c\x89\x76\x2d\xc5\x40\xa0\x96\x62\x20\xbe\x77\x52\x0c\x04\x9c\x72\x8a\x81\xa4\x18\x48\x8a\x81\x1c\xb6\x14\x03\x49\x31\x90\xc8\x93\xeb\x5a\x8a\x81\x3c\x6b\x29\x06\x72\xf8\x7c\x8a\x81\x1c\x99\x66\x8a\x81\x78\x5f\x48\x31\x90\x47\x8f\x46\x88\x81\x78\x1f\x79\xd9\x72\x16\x0e\x84\x5b\xcf\xe0\x98\xed\xf2\xa3\xe4\x81\x9c\x01\xa0\xd9\x52\x7a\xf2\xa3\xd8\x92\x50\xcf\x69\xe8\xb5\x34\xb3\x0f\x1b\x7b\xa2\xcc\x9f\x65\x61\x6f\x8a\x6a\x40\x8c\x26\x41\x25\xe0\x88\xb4\xc4\xea\xe0\x44\x24\x5a\xe2\x6a\x10\x11\x68\x47\x53\xd4\x38\xea\x2c\x61\x4d\xe8\x68\xb3\x64\x60\x6a\x2a\xca\x2c\x71\x79\x48\xe8\xb2\xc4\xbe\x69\xa8\xb2\xa3\xad\x3c\x8c\x24\x4b\x58\x78\x1a\x82\x6c\x52\xb8\xcf\x3a\x9f\xbc\xc2\x85\x1e\xf4\xcf\xce\x83\x06\x0b\x7b\x70\xfd\x2e\x54\x5b\xa7\xf9\xaa\x2e\xcb\xeb\x96\x27\x43\x9d\xb9\x93\xfa\x53\x31\x3e\x5b\x0a\xfb\x76\xab\x1e\xc7\xfd\x68\x5f\x51\x08\x70\x6f\x04\x4b\x15\xe6\xfc\xe7\x6a\xbd\x66\xd2\x23\x18\x2f\x31\x31\x4f\xd5\x0a\x70\x52\xa4\xcb\x72\x63\xa0\xe6\x81\xf5\x2b\x42\x7a\xc5\x6a\x58\xd0\xe3\x73\x41\x75\x2c\xc2\xc2\x80\xc4\x10\x60\x50\x04\x84\x06\x71\x1e\x38\x08\x1d\xe6\x9c\x6a\xc2\xba\x46\x0d\xbc\x51\x82\x6e\xe4\x50\x11\xad\xba\x45\x18\x87\x84\x54\xb8\x08\x5c\xc3\x80\x2a\x17\x41\x23\xd1\xd7\x90\x56\xeb\x22\x60\x25\xc3\xea\x5d\x84\xad\x68\x60\xcd\x8b\xc0\x45\x25\xd7\xbd\x08\x1c\x87\x5e\xfb\xe2\x44\xbc\x43\xaa\x80\x11\xc0\x3a\xf4\x2a\x18\xc9\x54\xfc\x68\xa6\x82\x14\x0b\x81\x6f\x44\xfa\xea\x63\x90\xb7\x69\x80\x4b\xea\xf7\xb9\xa2\xbb\xa5\x3b\x77\x0c\x14\x30\xaa\x70\x51\x98\x9e\xcc\xf0\x54\x66\xa7\x32\x3a\x89\x11\x2b\xcd\x17\xe2\x2e\xba\x33\x0e\x55\xdf\xdf\xcf\x21\xad\xce\xa0\x47\x31\x51\x6d\xc3\x19\x51\x0e\x5a\x76\x81\x91\xae\x0c\x7e\x94\x3e\x4b\xb1\xe0\xf9\x7d\xee\x43\xe6\xc7\x79\xa5\x52\xc6\x5e\x5b\xe6\x2e\xe2\x43\xed\x34\x6b\xab\x61\x62\x80\xf5\x61\xc5\xcf\x80\xd0\xc3\x61\x9b\x66\x32\x1b\xd1\x16\xae\xac\xad\x7e\xe1\x60\x16\x18\x9d\xa8\x2b\x65\xc0\xbe\xb3\x30\x02\x35\xf3\xff\x37\xce\x0a\x47\xb8\xec\x79\x3b\x59\x4e\x11\xd5\x83\xcb\x06\xe7\xf8\x9c\x68\xb4\xb0\x8c\x1b\xc0\x47\x7a\xfc\x42\xfb\x49\x64\x09\x1b\x3d\xdf\xa6\x1a\xb7\xf6\xa4\xbf\x00\xda\xe3\xc6\xe4\xfd\x17\x78\xb3\xd3\xe6\x77\x90\x72\x33\x9f\xbe\x47\x64\x96\xbb\xd9\x4d\x3d\xe7\x5a\x72\xcb\xcd\x4c\x48\x3b\x53\x7a\xd6\x75\xf1\x26\xb3\x1a\x5e\x5e\x93\xaf\xf8\xa8\xc5\x01\xa9\xd9\xb9\xcd\x1a\x8d\xa1\x91\x6d\x5e\x5d\xab\xfc\xe6\x8c\x75\x72\xe2\xde\x27\x6d\x1a\xac\x45\x78\xb8\xd2\xfc\xda\x22\x95\xd8\x92\xfb\x06\xbd\x94\xdc\xb7\xbe\x01\x92\xfb\xb6\x6d\xc9\x7d\x4b\xee\x1b\xd2\xce\xd1\x00\x26\xf7\xad\xaf\x4d\x50\x27\x27\xee\x7d\xd2\xa6\xc1\x5a\x71\x93\xbc\xb2\xac\x14\x1b\x2e\xb9\x31\x57\x5a\xcd\xa3\x45\xfe\x30\x0f\x8f\x9a\x2f\x4a\xf0\xec\xa6\x73\xa1\x83\x92\x05\xcd\x44\x59\x6b\xfe\x6d\xa5\xb9\x59\xa9\x12\xf8\x54\xda\x7d\x4c\x8a\xc8\xc1\x1e\x25\x6d\x11\x71\xad\x45\x5c\x14\xb2\x07\x49\xe2\x90\x10\xcf\xf1\x24\xc7\xb6\x64\x6f\xf1\x24\xa7\xfb\x04\x0f\x91\xe6\x1d\x06\xde\x1b\x43\xbd\x42\xdc\x23\x24\x92\x11\xb7\xa5\x04\x3b\x1a\x62\x43\x03\xec\x67\x04\xdb\x49\xf1\xfa\x46\x4b\x95\x87\xcc\x31\x81\xc1\x84\x14\x56\xb0\xf2\x92\x97\xec\xfe\x9a\xe7\x4a\x22\xe8\xe6\xe3\x29\xec\x8a\x6b\xa1\x8a\x09\x4c\xc4\xd4\x79\xce\x8d\x99\x84\x15\x23\x78\xe1\x13\xb1\x63\x3f\xb4\xa6\x78\x49\x71\xb6\x62\xcd\x55\x6d\x5f\x5c\x80\xc0\x29\x47\xbb\xfc\xd9\xd0\x31\xc6\x0d\x00\x62\xf2\x50\x97\x6c\x79\x05\x72\x3b\x15\x77\x84\xc6\xee\x8d\x30\x7f\xb8\x8a\x9e\x81\xd3\x74\x3b\x8d\x0f\x1c\xe5\x0e\x41\xa5\x95\x55\xb9\x82\xd2\x74\x08\x1d\xe3\xa9\x76\x8f\xb8\xc8\x27\xdd\x71\x13\x79\x34\x67\x85\x48\xbb\xe6\xb4\x6b\x7e\xd2\xd2\xae\xf9\xb0\xa5\x5d\x73\xda\x35\x1f\xe9\x37\xf9\xc2\x69\xd7\x9c\x76\xcd\x4f\x5a\xda\x35\x1f\x99\x6e\xd2\x14\x69\xd7\x1c\x75\xd7\xbc\xbd\x76\xe6\xc5\xc1\x46\xb9\xba\x14\x6b\xe1\xdb\x3e\x67\x03\x50\xd6\x48\xdc\x44\xbc\xd0\xc4\xcd\xf9\xcd\x1c\x7c\xd0\xf0\xbc\xd6\xc2\xde\xbf\x55\xd2\xf2\x3b\x8f\x6a\xc0\x57\x9b\x95\xa5\xba\xbd\xd2\x62\x23\x4a\xbe\xe4\xef\x4c\xce\x4a\x86\x00\x76\xd2\xee\xa8\xe4\xac\x62\x73\x51\x0a\x8c\xd2\x44\x40\xa4\xe2\xec\xb6\x82\x59\x56\x68\x24\x07\x31\x9b\xd4\xac\x49\x59\x96\x0f\x0c\x05\x2c\x0d\x85\x8f\x2a\xad\xf2\x4f\xaa\x96\x80\x65\x24\xc5\x67\x58\xf1\x45\x96\xf7\x5f\x95\xb2\xef\x45\xc9\xcd\xbd\xb1\x1c\x40\x7c\xa0\xcc\x5c\xd7\xf2\xc2\xfc\xa2\x55\x0d\x2c\xfb\x81\x45\xf9\xc7\xdf\xa3\xba\x41\xed\x2c\x3e\x2b\xd9\x7c\xe9\x08\xdf\xf7\xdd\x70\xe0\x02\xf8\x78\x9f\x67\xf8\x47\x21\xeb\xbb\x2f\xed\x6d\xbb\xf8\x70\xc2\x7c\xc3\x49\xa0\x49\x38\xf2\x96\xf2\xdd\x50\x0b\xec\xb8\x7d\x7c\x8c\x8e\x6b\x68\xa5\xc9\x1d\x13\x54\xcc\xad\x90\x85\xba\x35\x23\xad\xf5\x72\x6d\xd8\x5b\xcd\x0b\x2e\x9b\xad\xdd\x75\x85\x66\x77\x13\xc9\xf8\x7c\x98\xd1\x90\xe3\x76\x02\x3a\xd2\x08\xd1\xfd\x1d\xcb\xb4\xad\xab\x14\x8d\x7e\x71\x63\x9e\xa2\xd1\xcf\x26\x9b\xa2\xd1\xee\x96\xa2\xd1\xc8\x0b\x29\x1a\xfd\xf4\x9d\x14\x8d\x76\x8d\x9e\xa2\xd1\x03\x26\x92\xa2\xd1\x47\xa6\x9b\x34\x45\x8a\x46\x47\x8d\x46\x1b\x5b\x08\x4f\xec\x10\x8d\x2a\xb4\x5d\x7d\x91\x3e\xa4\x37\xb4\x3b\xcb\xf5\x5a\xc8\x36\xb6\xf9\x89\x1b\xc3\x96\xdc\x8f\x40\x08\xb2\xda\x91\xae\xe3\x41\xd8\x58\x77\x1d\x4c\x9c\x00\x1b\x55\xd6\x6b\x7e\xc9\x37\xc2\x7b\x58\x10\x3d\x3b\xae\x68\x47\x45\x21\x1f\x49\x12\x3e\x42\x22\x18\x9e\xaf\xb5\xff\x2e\xef\xa3\xa7\x47\x51\xeb\x16\xbc\x0d\x97\x9e\x7a\xbd\xd7\xcd\xa0\xa3\x2c\x77\xd7\xb3\x56\x15\x5b\x82\xe7\x14\x2f\xcf\x4f\xfb\x08\x33\xde\x31\x8a\xfd\x65\xea\xf9\x28\x74\x7e\xe8\xf7\xdd\x5d\x05\xc5\xf9\x46\x91\xae\x1d\x17\x4d\x50\xb8\x6e\x95\xbe\x11\x72\x79\x29\x3c\xe4\x81\x08\x33\x05\x5c\x7a\x2f\x54\x1a\x22\xff\x10\x3c\x1a\xaa\x48\x90\x68\x1d\x2d\x45\x1b\x8e\xd4\x11\xa2\x30\x21\x11\x79\x68\xe7\x0f\x33\x2c\x18\x13\xa3\x90\x0a\xdd\x47\xd0\x92\xc7\x69\xb1\x30\xc2\x1a\xd0\xe3\x60\xb4\x28\x58\x40\x74\x8a\x18\x01\x23\x8f\x40\xbd\xb9\x0d\xc7\xbe\x28\x91\x2f\x62\xdc\x8b\x12\xf5\x42\x63\x5e\xb4\xfc\x7e\x70\x17\x0b\xef\x61\xe9\x3b\x58\xf2\xfe\x75\xf0\xee\x15\x8f\x72\x8d\x62\xc4\x81\x0d\x31\x6e\x9a\xd1\xb8\xc9\x8b\xeb\xba\x1f\x90\xd3\x5e\x82\x25\xa0\xc7\x00\xc8\xaf\xe4\x92\x24\x97\x24\xb9\x24\x03\x47\x48\x2e\xc9\x61\x9f\xc9\x50\xf4\xb7\xe4\x92\xb8\x5b\x72\x49\x1e\xda\xeb\x74\x49\xbc\x8f\x40\x00\x56\x08\x43\xf9\xfc\x15\x94\x29\x41\x3f\x05\xb4\x8f\x04\x26\xc0\xf4\x33\xb4\x34\x94\x34\x26\xf4\x14\x0d\x13\x00\xc0\x1b\x42\x17\x02\xd1\x0c\x30\x79\x09\xde\x0f\xb8\xb2\x34\xaf\x67\xb4\x0a\xa7\x04\x4f\x67\xb4\xbc\x0e\xc8\xbb\x41\x3d\x1b\xca\x81\x31\xe8\xd1\x20\xde\x0c\x4c\x1c\xc4\xb6\x40\x76\x85\x66\x53\x48\xf6\x64\x90\x2d\xc1\x3c\x16\x70\x36\x08\x1b\x79\x4d\x12\xc4\x12\xc4\x64\xa0\xb8\x6a\x0f\x4e\xfd\x89\x3b\x2c\x25\xd1\x27\xee\xc8\x90\x2f\xf8\x22\x9a\xfe\x95\xcb\xe7\xe9\x04\x0a\x4f\xc7\x89\xc9\x5a\xde\xa9\x49\x55\xf0\x6b\x5e\xf2\xdc\xf6\x57\x60\xa4\xdd\x7a\x04\x16\xce\x3b\xab\x4a\x0b\xa5\x45\x7f\xfe\x0a\x42\x22\x3f\x79\xb6\xa3\xbc\x2d\x99\x31\xae\xcb\x0d\xde\x4f\xc2\x20\x70\x92\xdf\xfd\xe4\xa9\xe4\x77\x1f\x4e\x2a\xf9\xdd\xc9\xef\x76\x3d\x97\xfc\xee\xe4\x77\x3f\x6d\xc9\xef\x1e\x34\x72\xf2\xbb\x7b\x9e\x4e\x7e\xb7\x6f\xd8\x81\x7e\xb7\x17\x7c\x05\xe1\x3a\x3f\xe0\x0a\x1d\xb0\x04\x4d\x2e\x47\x68\x8f\x00\xab\xbc\xe4\x0c\xbd\x8f\x34\x46\xa4\xa8\x4b\xf7\xd5\x67\xef\x7c\x40\x00\x16\x64\xc5\x17\x7e\x24\x08\x14\x24\x01\x53\x0b\x18\xfa\xc4\x08\x63\x02\x58\x13\x58\xbe\x33\x84\x2f\x11\xf7\x03\x70\x34\x09\xd4\xb6\x40\x08\x12\xb0\xea\x46\x50\x23\xe0\xce\xda\x07\x63\x75\x86\xa0\x43\xc4\xd4\x50\xa6\xae\xaa\x92\xaf\xb9\xb4\xac\x6c\xb9\xdc\xb9\x0e\xc0\x9e\x0a\x87\x28\x41\xcd\x32\xb2\x3d\x30\xf7\x26\xb7\xe5\xd0\xb9\xe3\x7b\x41\x6c\x1f\x48\x70\x25\xc0\xfd\x1f\xce\xe1\xd0\xbe\x0f\xd8\xf3\x21\xfb\x3d\xd2\xf9\xae\x7b\x21\x71\x6c\x12\x74\xb1\xe8\x78\x24\x30\x91\xc3\x30\x48\xf0\x35\xa4\xe0\x8e\x9c\xd2\x29\xe0\x7a\x23\x72\x7e\x91\xe7\xaa\x96\x76\x90\x67\x60\x55\xc9\x35\x73\xae\xb5\x47\x6e\x31\x36\xe0\x8b\x05\xcf\x3d\xfb\x09\x90\x82\x37\x3c\xce\xed\xc4\x66\xda\xcc\x11\x74\x26\x75\xb6\xa7\x23\x74\xdd\x35\xbe\x92\x06\xf4\x17\xf4\x29\x83\xaf\xe3\x38\x3a\xe8\xfd\x49\xf3\xaa\x14\x39\x7b\x46\x34\xd7\x86\xa8\x9f\x30\x0f\xe2\xf1\x8d\xaf\xab\x92\xd9\x67\x44\x71\x31\xec\x9a\x5b\x56\x30\xcb\x8e\x11\xd2\xc7\xe8\x4c\x4a\x65\xdd\xa2\x74\xea\x73\x0c\xe7\xcf\xa6\x47\x13\xfb\xbe\x33\x2f\x6b\x63\xb9\xee\x2f\xd1\xe0\x9d\x37\xbf\xb3\x5c\x4b\x56\x7e\xb8\x0a\x55\x3a\x30\x69\xfa\x8d\xdd\x76\x12\xdf\x34\x5b\x2c\x44\xee\xbe\xf6\xec\x1d\x6f\xc5\x59\x69\x57\x6f\x57\x3c\xbf\xf9\xac\x0a\xee\x2a\x34\x11\xe7\xe8\xa8\x54\xac\xf8\x27\x2b\x99\xcc\x07\x2d\xc5\x61\x37\xd7\x6d\x3c\xe0\x2b\x93\xcb\x7e\xae\x1c\x7f\x5d\x9c\x15\x50\xa2\xd8\xa2\x68\xc5\x5a\xa4\x67\xa5\xbb\x86\xc3\x1a\xa0\xba\xde\x1f\x9a\x8b\x3d\x26\x72\xcb\xd3\x19\x2b\x1b\x6c\x56\x1a\xb5\x6e\x8c\x50\xf2\x62\xb1\x10\xb2\x8b\x65\x2c\xc4\x72\x48\x28\x23\x2f\x05\x97\x9e\x52\x33\xa8\x93\x4b\xc3\xba\xa0\x20\x5d\xd0\x76\x69\xc3\x1c\x4b\xd7\x4e\xda\x23\x13\x21\x66\xdf\x58\xa5\xd9\x92\x64\xa0\x59\x1b\xa8\xff\xa4\x8a\xe3\x0b\xe2\xd0\x0f\xd0\xfc\x8f\x73\x5f\xe3\x11\x74\xca\x31\xc8\x2f\xa8\x84\x33\x7c\xe5\x55\x36\x37\xa2\xff\x18\xdd\xfb\xb2\x4b\xd9\x79\x5e\x76\x09\xfd\xac\x9d\xd5\xd1\x1f\x7a\x76\xb4\x4e\xe6\x73\x06\xa3\x7d\x04\x76\x07\xa1\x4f\x9f\x3b\xe2\x0b\x3a\x4f\xcb\x0b\x74\xa4\xde\xf8\x08\xbf\x66\x36\x6f\x61\x16\x3a\xcd\x3c\xae\xd5\x9e\xe4\xb6\xaf\xdd\x75\xc5\x40\x28\xa1\x05\x3b\x3d\x31\x1c\xc4\x5a\xdf\xf0\xfe\xf7\x67\x3b\x22\x8d\x69\xcf\x5b\xee\xf9\xc8\xe6\xbc\x3f\x6c\x38\x2d\x49\xe9\xac\x95\x33\x57\xcb\x39\x85\x2d\xa8\x4d\x11\xfa\x6a\xc0\xa8\x3e\xdb\xfb\xed\x88\xc5\xef\xed\xee\x00\x2c\xea\xf8\x76\xa9\xff\xcd\xe7\x6b\xec\xde\x86\xaf\xe7\xc7\xc3\xf0\x3e\x5d\x51\x71\xae\xaf\x79\xae\xfb\x0f\xd4\x81\xc3\x32\xbd\x19\xd8\x89\x93\x8f\xb6\xb2\xd5\x3f\x42\xc8\x7a\xd6\x55\xc1\x2c\xbf\xb6\x9a\x59\xbe\x7c\xb6\x30\x2e\xb2\x69\x55\x96\x42\x2e\xbf\xb7\x1d\x04\xd1\x9c\x69\x2b\x5c\x80\x46\x31\x76\xbc\x4e\x92\xf6\xf9\xad\x21\x84\xdc\x70\x6d\x8e\x7c\x4b\x4f\x57\xc7\x54\xed\x6c\xdb\xc7\x4f\x9e\xe1\x8c\x65\xb6\x7e\x44\xd4\x3e\x52\xab\x79\xcb\x95\xc5\x2f\x5c\x3e\x84\x19\x1d\xa1\xb2\x67\x11\xc5\x7e\xda\x56\x2b\x66\x70\xf9\xd7\x9c\x19\x98\x32\x47\xbe\xf8\xc9\x9f\xb6\x94\xce\x36\x7f\x61\x65\xb5\x62\x7f\xd9\xff\xad\xfd\xfc\xce\x95\x7c\xf4\xf3\x83\x74\x16\x07\xe9\x1d\xdb\x4d\x44\xf7\x97\xff\x1f\x00\x00\xff\xff\x44\xf3\xe1\x7d\xd9\x26\x03\x00") +var _kubedbCom_etcdsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6f\x73\xdc\x36\x96\x28\x8c\xbf\x9f\x4f\x81\x72\xa6\x4a\xf6\xaf\xd4\xad\x78\x26\x9b\x9d\xf5\xdd\x9a\x5b\x8a\x24\x67\xf5\x1b\xdb\xd1\x5a\x72\x72\x9f\xda\xba\x4f\x0a\x4d\xa2\xbb\xb1\x22\x01\x86\x00\x5b\xee\xdc\xba\xdf\xfd\x29\xfc\x23\x41\x36\x49\x1c\xb0\x5b\xb2\xe2\x69\xbc\x98\x89\x5b\xe4\x21\x70\x70\x70\x70\xfe\x1f\x5c\xd0\x9f\x49\x29\x28\x67\x6f\x10\x2e\x28\xf9\x2c\x09\x53\xff\x12\xf3\xfb\xbf\x89\x39\xe5\x67\x9b\xd7\x0b\x22\xf1\xeb\x3f\xdd\x53\x96\xbe\x41\x17\x95\x90\x3c\xff\x48\x04\xaf\xca\x84\x5c\x92\x25\x65\x54\x52\xce\xfe\x94\x13\x89\x53\x2c\xf1\x9b\x3f\x21\x94\x94\x04\xab\x1f\xef\x68\x4e\x84\xc4\x79\xf1\x06\xb1\x2a\xcb\xfe\x84\x50\x86\x17\x24\x13\xea\x19\x84\x70\x51\xbc\x41\xf7\xd5\x82\xa4\x8b\x3f\x21\xc4\x70\x4e\xde\x20\x22\x93\x54\xcc\xcd\x8f\xf3\x84\xe7\x7f\x12\x05\x49\xd4\xe3\x38\x4d\xf5\x77\x70\x76\x53\x52\x26\x49\x79\xc1\xb3\x2a\x67\x1a\xd4\x0c\xfd\xff\x6f\x7f\xfa\x70\x83\xe5\xfa\x0d\x9a\xab\x17\xe6\x1b\xb3\x22\xfd\x19\x03\xf8\x67\xef\x17\xb9\x2d\xc8\x1b\x24\x64\x49\xd9\x6a\xe7\x75\x89\x65\x25\xe6\xc5\x1a\x0b\xe2\xbd\x7e\xab\x7f\x0e\xbe\xed\x90\x30\xdf\xc1\x80\x07\xeb\x7c\x45\x3c\x40\x29\x96\xea\x9f\xab\x92\x57\x35\x3a\xf4\xca\xcd\xe3\x16\x57\x09\x96\x64\xc5\x4b\xea\xfe\x3d\x53\xef\x61\x21\x79\x49\xec\xbf\x6b\x44\xaa\x7f\xe0\xa2\x10\x09\x4f\xdd\xdf\xb0\xc6\x3d\x42\x66\x0b\xaf\x64\x92\xea\x7f\x66\x54\xc8\x7f\xd4\x3f\xbd\xa3\x42\xea\x9f\x8b\xac\x2a\x71\x66\xf7\x42\xff\x22\xd6\xbc\x94\x1f\x9a\xd9\xcc\xd4\xdf\xcc\x5f\x28\x5b\x55\x19\x2e\xcd\xd3\x7f\x42\xa8\x28\x89\x20\xe5\x86\x7c\x62\xf7\x8c\x3f\xb0\xb7\x94\x64\xa9\x78\x83\x96\x38\xd3\xf8\x14\x09\x57\x8b\xd6\xb0\x0a\x9c\x10\xf5\x8a\xa8\x16\xa5\xa5\x27\x0b\xdf\x6c\xc2\x1b\xf4\x7f\xfe\xef\x9f\x10\xda\xe0\x8c\xa6\x1a\x99\xe6\x8f\xbc\x20\xec\xfc\xe6\xfa\xe7\xbf\xde\x26\x6b\x92\x63\xf3\xa3\xfa\x30\x2f\x48\x29\x6b\x0c\x19\x0a\xab\x69\xbb\xfe\x0d\xa1\x94\x88\xa4\xa4\x85\x86\x88\x4e\x14\x28\xf3\x0c\x4a\x15\x35\x13\x81\xe4\x9a\x20\x4b\x41\x24\x45\x42\x7f\x06\xf1\x25\x92\x6b\x2a\x50\x49\xf4\x12\x99\xd4\x53\xf2\xc0\x22\xf5\x08\x66\x88\x2f\xfe\x9b\x24\x72\x8e\x6e\x15\x1a\x4a\xa1\x90\x57\x65\x29\x4a\x38\xdb\x90\x52\xa2\x92\x24\x7c\xc5\xe8\xef\x35\x64\x81\x24\xd7\x9f\xcc\xb0\x24\x76\x0b\xdc\xd0\x94\xce\x70\xa6\x90\x50\x91\x53\x84\x59\x8a\x72\xbc\x45\x25\x51\xdf\x40\x15\xf3\xa0\xe9\x47\xc4\x1c\xbd\xe7\x25\x41\x94\x2d\xf9\x1b\xb4\x96\xb2\x10\x6f\xce\xce\x56\x54\xba\xd3\x9c\xf0\x3c\xaf\x18\x95\xdb\xb3\x84\x33\x59\xd2\x45\x25\x79\x29\xce\x52\xb2\x21\xd9\x99\xa0\xab\x19\x2e\x93\x35\x95\x24\x91\x55\x49\xce\x70\x41\x67\x7a\xe2\x4c\x6a\x96\x90\xa7\xdf\xd4\x5b\x75\xe2\xcd\xb4\x73\x26\xcc\xd0\xd4\x36\x88\x77\x45\x78\x88\x0a\x84\xed\x6b\x66\xfe\x0d\x7a\xd5\x4f\x0a\x2b\x1f\xaf\x6e\xef\x90\xfb\xa8\xde\x82\x36\xce\x35\xb6\x9b\xd7\x44\x83\x78\x85\x28\xca\x96\xa4\x34\x1b\xb7\x2c\x79\xae\x21\x12\x96\x16\x9c\x32\xa9\xff\x91\x64\x94\xb0\x36\xd2\x45\xb5\xc8\xa9\x54\x3b\xfd\x5b\x45\x84\x54\xfb\x33\x47\x17\x98\x31\x2e\xd1\x82\xa0\xaa\x50\x47\x36\x9d\xa3\x6b\x86\x2e\x70\x4e\xb2\x0b\x2c\xc8\xa3\xa3\x5d\x61\x58\xcc\x14\x4a\xc3\x88\xf7\x59\xb1\x1b\x7d\xc7\xa3\x66\x49\xad\x5f\x10\xca\xf1\xe7\x77\x84\xad\x14\x47\xfb\xfe\xaf\x9d\xbf\x15\x58\x2a\x92\x7c\x83\xfe\xdf\xff\xc2\xb3\xdf\xff\xf7\xcb\xff\x9a\xe1\xd9\xef\xdf\xce\xfe\xed\x7f\xff\xff\xfe\xcb\xfe\xc7\xab\xff\xf9\xe7\xce\x3b\xbd\x93\x74\x3f\x9b\x0d\xac\x7f\x76\xfc\x3e\x34\x6f\xb5\xbe\x05\x16\xe4\x96\x24\x25\x91\xdd\x15\xb4\x48\xed\xd2\x3e\x8a\x70\x25\xd7\x0a\xa5\x89\x3e\xba\x48\xe8\x57\xbb\xeb\x1b\xf8\x9e\x81\xba\xc4\x55\x26\xdf\xf3\x74\x07\x65\x3b\x1f\x3d\xf9\xa9\x30\xd7\xd5\x1b\x94\xf3\x94\xa0\x05\xd5\x84\x84\x2a\x41\x10\x67\xe6\x86\x24\x29\x5a\xd2\x8c\x08\xb4\xd8\x3a\xd8\xf3\x1e\xb8\x08\xbd\xaf\x84\x26\x3d\x6c\x0f\xc9\x82\xc8\x07\x42\x18\xfa\x56\x33\x84\x6f\xff\xf5\x5f\xff\x75\x8e\x2e\x0d\x00\xfd\x91\x6f\xbf\xff\xee\xbb\x39\xba\xa4\x25\x49\xa4\xbe\x34\x7a\xa1\x3e\x50\xb9\xa6\x4c\x9f\x82\x02\xcb\x35\xc2\x25\x41\x8a\xc6\xf1\x72\x49\x12\x35\xb9\xc5\xd6\x9c\x1c\x41\xa4\x3a\x8e\x73\x74\xa7\xfe\x95\xd3\xd5\x5a\xcd\xa6\x17\x26\x65\x8a\xd1\x2d\x33\x9a\x48\x0d\x1f\x71\xb9\x26\x25\xe2\x1a\x19\x8a\xb3\x62\x07\x5f\x7f\x57\x2d\x5f\xe3\xe7\x14\x65\xf4\xbe\x1f\xe4\x52\xfc\xa8\xee\x46\xc3\xfc\xd4\x4b\x25\x11\x55\x26\x51\x82\x99\xc2\x89\xf9\x40\x83\x63\x41\xe4\xfc\xa4\x07\xd0\x92\x97\x39\x96\x6f\x14\x4b\xfd\xeb\x5f\x7a\xfe\x6e\xa8\x51\x31\xdc\x15\x29\x77\xfe\x4e\x25\xc9\x7b\x28\xa2\xb3\xe9\xd7\x4b\x54\x31\x45\xc1\x74\x49\x49\x7a\x8a\x08\x4e\xd6\xe8\x9e\x6c\x67\x66\xdb\x0a\x4c\x4b\x64\x31\xae\x88\x12\x2d\xd5\xed\xd8\xbb\x68\x7d\xdb\xa8\xa5\x2e\x49\x49\x58\x42\x52\x64\x08\x1d\x3d\xd0\x2c\x53\xcb\x2e\x4a\xfe\xdf\x66\x97\x28\xb3\xf7\xc7\x46\x49\x44\x04\xe1\xfe\xdd\xc6\x06\xd9\x0f\x6b\x2e\x88\x3e\xf5\x8a\xf9\xaa\xd7\xee\xc9\x56\xa3\x56\x31\x26\xc2\xa4\xfb\x59\x4f\x79\xae\x96\xd4\x2c\xa8\x17\xb0\xbe\xba\xa8\x50\x53\xb9\x27\x5b\x31\x36\xc3\x1a\x92\x26\x38\xa1\xb7\xb4\x17\x66\xc5\x76\x20\x5a\xee\x6b\xd9\xbc\x9e\x18\xd6\x73\x57\x04\x5a\xc3\x7d\x58\xd3\x64\xdd\x4f\x99\x42\x83\xb0\xef\xbb\x6d\x30\x58\x3d\xf5\xf1\x27\x88\xac\x0a\xf3\x4d\x52\x96\xbc\x54\x93\x21\xa2\x1f\xa9\x54\xa3\x2b\xc7\xe5\x3d\x49\x2d\x91\xe3\x6c\x8e\x94\x34\x28\x50\x6e\x4f\x6d\x49\x32\x2c\xe9\x86\xd4\xb7\xb7\x9a\x87\xc2\x36\xa6\x6c\x10\xa3\x27\xf3\xf9\x89\x39\x96\xbc\x54\xf2\x50\x69\xcf\x93\xfa\xbd\x8f\x49\x0c\x12\x68\x87\x44\xdf\xe3\xc2\xbb\x73\x15\xfe\x24\x47\xd8\x7c\xc9\x32\x04\x6c\x31\xd1\xcf\x8b\xc6\x18\xa4\x19\xf7\x64\x3b\xf4\xa7\xce\x64\xee\x2c\xf9\x49\xee\xa8\xa5\xff\x9b\x68\xf8\x12\xf1\x47\x3e\xc0\x98\x7b\xbe\x1c\x60\xcf\x46\x60\xa0\x19\x39\xd5\xbb\x38\x08\x13\x85\xb8\xf2\xf5\x52\xef\xb6\xc7\x13\x1a\x4a\x1b\x81\xea\xdd\x34\xf5\x79\xaa\x84\x12\x3a\x5a\x2c\x78\x87\xdd\x8e\x80\x8c\x62\xc4\x2d\xa6\x3b\x02\x74\x3a\x3b\x36\x23\xc4\x94\xed\x57\x46\x59\xb3\x19\x8a\x80\x23\xa8\xae\x3e\x93\xe6\x88\x2d\x1b\x24\x48\x8e\x72\x5c\x38\xce\x38\xb6\x76\x3e\x47\xef\xed\x69\x56\x54\xc0\x10\x5e\x08\x9e\x55\xd2\x00\x6d\xfe\x68\x8f\x7a\x7d\xd1\x8e\xc0\x24\x19\xc9\x15\x77\xd2\xa7\xbc\x06\xe0\x1d\x7f\xcd\x45\xcd\xd9\x1d\xe2\x04\x3e\xce\x46\x8e\x8b\x92\x6e\x69\x49\xd2\x7e\xa4\xcd\x06\x17\x3f\x1b\x5e\x43\xaf\x40\xd7\xfd\x33\x2e\x4b\xbc\x0b\xd9\xf1\xce\xe0\x15\x7b\xab\x4f\xd2\x16\x3d\xac\x89\xa6\xb4\x86\x89\x2b\x46\xa9\x28\x4e\x5f\x19\x8e\xf7\x1a\x95\xae\x8f\x84\xcd\x6c\x16\x9c\x67\x04\xef\xb2\x61\x23\x1b\x7e\xe8\x11\x8e\x77\x66\x74\xa2\x9e\x72\x24\x64\xde\x73\xb7\x4b\xc1\xd3\x93\x13\x61\xf4\x78\xa5\xed\x5a\x0e\x33\x20\xe4\xed\x2a\x10\x4a\xa7\x2f\x19\x91\x44\xeb\x10\x29\x4f\x84\x52\x1f\x12\x52\x48\x71\xa6\x74\x7f\xbc\x22\x67\x86\x97\x88\x6f\xcc\x97\xfb\x8e\xda\x08\x29\x0c\xee\xd8\x1a\x67\x72\x97\x36\xda\xc2\x0e\x4b\x95\x24\x4d\x2c\x33\x51\xeb\x75\x42\xb9\xba\x14\x0d\x04\xcd\x0a\x71\x96\x21\xbe\x5c\x8a\x35\xe7\xbb\x74\xf1\x8f\x7a\x8d\xb5\x96\x27\x10\xf9\xac\x16\x89\x6e\x7e\xbe\x10\x5a\x2c\x4d\x49\x46\x94\xce\xd5\x3b\xfd\xbe\x3d\xa4\x8c\x8e\x2b\x05\xd7\xcc\xdc\xdd\x8a\xab\xaa\x6d\xd1\x66\x2c\x9c\xd1\xdf\x9b\x55\x44\x68\x06\x05\x17\x72\x55\x12\xf1\xcb\xf9\xbb\x3e\x7a\x09\xdd\x99\xf8\xf7\xaa\x1c\xbc\xb9\xc2\x17\x2e\x72\x2c\x86\x94\xc3\x8f\x80\x6e\x50\xad\xfb\x5d\x70\xc6\x48\xa2\xef\x89\x31\x70\x1e\xef\xfe\xfe\xbb\xe0\x67\xc7\xb9\xb7\xb6\x1b\x2d\xe9\xe7\x3d\xa7\x1f\x60\x40\x08\x2d\xfe\xb2\x0f\x96\x17\x55\x72\xbf\xab\x6b\x46\xce\xf1\xab\x47\x31\x4e\xee\xab\x62\x88\x73\x82\xbe\xb2\x4a\x06\xb1\x72\xdc\xa6\x03\x6d\x53\xc6\x93\xfe\xdb\x16\x01\xb1\x8c\x1f\xc4\x55\x86\x85\xa4\xc9\x0f\x19\x4f\xee\x6f\x25\x1f\x66\x61\x68\xd7\xea\xfa\xcb\xed\xce\xdb\x9e\x11\x4f\x49\x53\xe7\xbf\xdc\xa2\x4b\x2a\xee\x47\x60\x22\xdf\x30\x88\x35\x3f\xc7\x52\xe2\x64\x6d\x78\x3a\xd6\x46\xf1\x8c\x48\x75\x09\xaf\xb9\x90\x28\xc7\xc9\x9a\xb2\x31\xc9\x1b\x39\x33\x03\x43\xe4\x73\xc1\xed\xed\x60\x2f\xf3\x5e\x2b\x5f\xcc\x25\x8d\x1f\x04\x31\xcb\x5e\xa8\x65\x6b\xfb\xfd\xb0\x74\x0c\xdb\x08\xa4\x6d\x24\x77\x6a\xc3\x47\x9f\xe9\x6e\xc1\x5b\x9a\x11\xb1\x15\x92\xe4\x9a\x5a\x9c\x04\x63\xb5\x60\x8d\xcf\x2d\xaf\x02\x20\x11\x7a\xc0\x4c\x6a\xa1\x99\x57\x4a\x2d\xbf\xa3\xc5\x1b\x74\xc5\x44\x55\x92\x46\x2e\x58\xb6\x3f\x15\x84\xa9\x54\xfa\xaa\x28\x78\x59\x5b\xa1\x88\xd9\x3f\x85\x0d\xac\x4d\xc3\x06\xdc\x1c\x5d\x7d\xc6\x79\x91\x85\xf0\xa3\xc6\x0b\xf2\x59\x7e\xf7\xe2\x14\xbd\xf8\xbc\x14\xea\xff\x98\x5c\x8a\x17\x73\x74\x9d\x17\x19\x4d\xa8\xcc\xac\xb1\xb8\x34\x3b\xbe\x20\xf6\x85\xf0\x64\x5b\x46\x9f\x47\x21\x91\xe0\x1c\xee\x7e\xba\xfc\xe9\x0d\x5a\xf3\x07\x94\x72\xf4\xa0\xad\x24\x1b\xa5\x47\x68\x03\x86\x70\xe2\xa8\xb7\x0d\xcb\x52\x7b\x98\xc6\x47\xc2\xf3\xa2\xe4\x39\x15\xce\x16\x6f\x8f\xcf\x18\xc5\x22\x28\x7b\x45\x5a\x69\x2b\x25\x95\x1d\xf7\x4c\xdf\x68\x53\xee\x9d\x56\xa4\xec\xab\x6e\x71\x1d\xba\xd5\x74\x19\x5c\x61\x43\xb7\xd7\x4b\xc4\x73\x2a\xa5\x53\xd1\xad\x06\xae\xad\x61\xf6\x21\x45\x89\x41\xcd\xdd\x0c\x25\xf1\x7b\xb4\x89\xde\xf2\xd2\x4d\xf0\x2c\x25\x9b\x33\x91\xe2\xd7\xa7\x7a\x9a\x86\x70\xc6\xf4\x4c\x3b\xd3\xd6\x9a\xb1\x40\x2f\x5e\xbf\x98\xa3\x5b\x9a\xd3\x0c\x97\xd9\xb6\x65\xc1\xaa\x9f\x0b\x42\x5d\xf2\xb2\x9e\x90\x5a\xea\x8b\x6f\x5f\xa0\x97\xbc\xd4\x33\x53\x0a\x7d\x46\xf0\x86\x98\x6f\x1b\x4e\x14\x9e\x28\xc9\x0b\xb9\x7d\x35\xa2\xf3\xd7\x5f\x06\x68\xfe\x76\xed\xa0\x7b\x13\xe9\xeb\x00\xa7\x3f\xb1\x6c\xc4\xfe\x64\x46\x9b\x9e\x9c\x4e\xf9\x42\x96\x15\x79\xa1\xf6\x7b\xc9\xd5\x9d\xa2\x6e\x02\x41\x0c\x0b\xfb\x68\x21\x07\xd7\xef\x10\xa5\xe8\xf2\x67\xbd\x1f\xef\x15\xf1\x68\x32\x32\x1f\xd8\x21\xb6\x20\x4c\x8f\x18\x5f\x68\x4f\xea\x8b\x27\xbf\x89\x50\x50\x65\xf6\x87\xf9\xca\xf5\x65\xdc\x3e\x7c\x62\xf4\xb7\x8a\xa0\xeb\x4b\x77\x17\x15\xa4\x14\x54\x68\xab\x74\x4a\xc5\x7d\x7d\xdb\x87\x79\xb2\x11\x1f\x5e\x9e\xe7\xf8\x77\xce\xd0\xd5\x0f\xb7\x76\x4a\xaf\xbe\x20\xe2\x82\x0c\x71\xdc\x24\x63\xc6\xac\xc6\x6d\x50\x40\x1c\x91\xfe\x90\x53\x3a\x95\x80\x05\x96\xda\xce\xdd\x1b\x5d\x49\x4d\xfd\x6e\x3c\x1a\xfa\xaf\x9a\x5b\x8e\xa2\x84\xb3\xe6\x4e\x57\xa7\x6c\x41\x59\x6a\x99\xac\x27\x6d\x1d\x40\x30\x4a\xf4\x8d\xb5\x1a\x72\xd9\x0d\x2e\xf5\xe4\x3f\xd4\xd4\x2e\xcc\xdb\xc6\xb0\x8c\x3e\x70\x46\x4e\x35\x23\x40\x8a\x13\x98\xff\x0c\x92\xe2\x2f\x25\x95\x24\xc8\x0e\xc1\x57\xa6\x3a\x07\x63\xca\x55\xef\x6a\xd4\x85\xe9\x5b\xa9\x52\xb5\x55\xfa\x44\xd9\xcb\x73\x91\xf1\x05\xb2\x94\x7e\xc8\x99\x7e\xfa\x78\x1d\x3d\xd1\x4f\x1f\xaf\x9f\x6e\x92\x13\x04\xe7\xae\xdc\xdc\xc8\x10\x8d\x9b\xb6\x91\xb4\xc2\x17\xbb\x82\x01\x97\x76\xe7\x4e\x8e\x0d\xcb\xbb\x71\x72\x2e\xa2\xcb\x20\x48\x5f\xce\x3d\xd4\x0e\x74\xa3\x44\xfa\x46\xfb\x68\x5e\x7d\x2e\x8c\x5f\xd1\x44\xbc\xa0\xdb\x35\x56\x4c\x13\xe5\x55\x26\x69\x91\x19\x42\x09\xdf\xa9\x54\xdc\x0b\x75\xc3\x38\x92\x42\x38\x49\x34\x07\x42\x97\xc4\x58\x36\xd3\x37\x3a\xbe\x29\x06\x62\x3f\xc0\xf7\x98\xe1\x95\x02\xa7\x79\x2e\xca\xcd\x3f\x35\x85\xc3\xa0\xbe\xe4\x4c\xef\x5b\xfd\x2a\xde\x60\x9a\xe1\x05\xcd\xa8\xdc\x2a\x19\xe5\xd5\xdc\x09\x09\xfd\x8e\x4a\x7f\x48\x8e\x84\x46\xd9\xc1\x98\xd2\x24\xb1\xcb\x0f\x58\xd0\x42\x0d\x7a\xa9\xe0\x9c\x3d\x28\x86\xf9\x6a\x0e\x97\xb8\xd6\xa4\xb4\x5e\x32\x23\xb6\xf9\xe2\x9a\x8b\x5d\xe8\x4a\x63\x30\xf2\x0d\x8b\x3a\xb0\x2b\xdb\x31\xed\xe0\x43\x9f\x3e\x5e\x1f\xe4\x5a\x57\x3c\x2a\xee\x5a\x57\x6f\xf4\x5e\xeb\xfa\x0f\xb7\xa4\xdc\xd0\x80\xdc\x65\xae\xef\x27\xbb\xd9\xff\x79\x69\x2e\xe4\x9d\x1a\x5c\xbd\x9a\x24\xb3\x62\x80\x75\x54\x69\x75\xd9\x7a\x0f\x84\xd9\xf1\xe0\xda\x6f\x2d\x7b\x3b\xb7\xec\x4d\x4b\x16\x6a\xaf\xff\x31\xea\x2f\x45\x31\x1c\x45\x33\xa8\xe8\x05\xea\x9b\x00\x05\x4e\x5a\xc4\x3c\x60\xa7\xbb\xd9\x8d\xf1\xc7\xdc\x92\xf6\x3d\xe1\x09\x29\xd6\xcb\xd1\xd3\xd1\x42\xca\x05\x29\xd6\x6f\x6f\x5b\x67\x5b\xff\x86\xde\xde\xee\x9e\xd9\x51\xbc\x69\x62\xd1\xcb\x50\x30\x0a\x9e\x9e\x08\x94\xd1\x25\x91\x74\x74\x51\xd0\x13\x9d\x73\x46\x25\x2f\x83\xa6\xbc\xb6\x34\xf0\xd1\xed\x11\x7a\x6f\xdf\x37\x51\xa5\x09\xcf\x32\x63\xbb\x47\x3c\x2c\xd9\x68\x84\xb8\x09\xf4\xa9\x88\xc4\xda\x72\xea\xa8\x78\xa3\x0e\x9e\x99\xcd\x38\xfb\x78\x75\x7e\xf9\xfe\x6a\x9e\xa7\xdf\xac\xf9\xc3\x4c\xf2\x59\x25\xc8\x8c\xf6\xba\x63\xfd\x31\x12\xb5\xe3\x0f\xf0\xb1\x19\x77\xb2\xfb\x63\x3c\x5e\xc2\x8c\xa1\x88\x99\x4f\x42\x49\x20\x26\x4c\x4c\x53\x10\x49\x51\xc9\xb9\x3c\x45\x25\x96\xeb\x80\x89\x06\x19\x42\xb2\x16\xc9\x2a\xcb\x0c\xee\x65\x49\xc8\xa9\x6f\xe8\x38\xfb\xb2\xd2\x89\xb7\xdc\xc0\xa5\x11\x5c\x6d\x7d\x2f\x3c\xc6\xa5\xd1\x1b\x37\xf0\x38\xc4\x1a\x7b\x3f\x85\x84\x10\x34\x82\xf3\xdb\x1a\x82\x8b\x47\xd4\x81\x3a\x92\x07\x82\x72\xcc\xd0\xf1\x31\x4b\x5e\x2a\x4a\x2d\xdb\x54\x45\x64\xa2\xd1\x70\x56\x09\x52\xce\xed\x2d\xf8\x1e\x62\x63\x7f\x3a\x14\x43\xee\x47\x3d\xf1\x8f\x64\xb9\x1f\x82\x3f\x92\x25\xd2\x39\x0d\x36\xcc\xd4\xca\x68\x41\x5c\xf4\x46\x52\xf7\x63\x5c\xdb\x83\x9f\x11\x15\x43\x6f\x23\x34\x10\x1c\xdf\x37\x86\xe3\x81\x2c\x66\x65\xb4\xd9\x91\x6f\x94\xc8\x4d\x1e\xce\x1e\x78\x79\x4f\xd9\x6a\xf6\x40\xe5\x7a\x66\x24\x03\x71\xa6\x23\x8a\xce\xbe\xd1\xff\x07\x98\x9f\x73\x10\x9d\xa7\xa9\x0d\xd0\xab\x04\x59\x56\x99\x09\x40\x16\x73\x2f\x51\xe6\x54\x2b\xe4\x61\xeb\x82\x1a\x15\x4d\xff\x67\x08\xdd\x68\xca\xf5\x15\x10\x80\xf4\xb7\xc5\x78\xb0\x0b\x1a\xbf\xbf\x4a\xc7\x56\x4a\x9c\x72\x1d\x05\x54\xea\xdd\x0e\x2f\xdc\x23\x6d\x9c\xe6\x94\x3d\x35\xff\x3d\x90\xd0\xea\x64\x9d\xbd\x85\x51\xca\xd2\xf1\x9d\x68\xef\xc2\x85\x7e\xbe\x2d\x8d\x1a\x18\x75\xfc\xba\xf5\xe0\x8f\x62\x03\x3b\xad\x92\xa4\x4a\x7c\xb5\x7e\xfe\xb6\x97\xbf\xf7\xcc\x75\xb7\x26\xdf\x8a\xdf\xb2\x99\x99\xc1\xac\x48\x9b\xbd\x79\x2e\x6e\xf9\xa7\x35\x2f\xfe\x01\x9c\xe9\x07\xd9\x41\x74\x14\x20\xeb\xf1\xf8\x38\x86\xcb\x8c\x7b\x48\x34\x3a\xa7\x4f\x98\xb8\x1f\x2b\x90\xd8\xe4\x40\x6b\xdf\x08\xdf\x3e\x3a\x22\x01\xe7\x44\x92\xb2\x89\x0c\x4d\x4c\x10\x98\xfa\xcf\x9f\x0a\xc2\x6e\x25\x4e\xee\x83\xfe\x9c\xa3\x94\xf1\x55\x48\x19\xd3\xfc\xd8\xf6\x22\xa3\x69\x13\x5d\x9c\x2a\x69\x79\xb9\x85\x65\x7f\x98\x41\x99\xbd\x18\x9f\x05\x17\x7c\x5a\xdf\x74\xc2\xd9\x92\xae\xde\xe3\x02\x6e\xe5\x72\x6f\x74\x44\x8b\xfa\x67\x6b\xbc\xe2\xd5\x40\xc6\x9d\x1b\x05\x2f\xaa\x0c\x4b\x93\x6a\x1c\xde\x2b\xe8\x41\x0f\xe4\x8e\x0e\xae\x0b\x96\x47\x1a\x24\xa6\x9d\x3c\x53\x48\x4e\x69\x10\xea\x68\xce\x69\x5f\x7e\x69\x98\x17\xc2\xf3\x4f\xfd\xe4\xa7\x20\xdc\x03\xe5\xa2\xb6\x50\x7a\x98\xbc\xd4\x16\xc8\x47\x09\x8a\x02\x19\x19\x27\xe4\xb1\x02\xcc\x7c\x7e\x9e\x6b\x4f\x4e\x6b\x73\x68\x6d\x92\x5b\xf8\x7e\x1e\x49\x7b\xed\x4d\x71\x05\x4d\x32\x22\x05\x16\x64\x1e\x99\x98\x0e\x1b\x36\xbb\xb0\x34\x32\x35\x36\x08\xb2\x93\x3a\x3b\x90\x26\x5b\x6f\x14\x6c\xfd\xe3\x99\xb4\x03\x59\xb3\x41\xa8\xf0\xac\xda\x3a\x83\x16\x20\xef\x81\x33\x6c\xfd\x01\xb4\xdb\x47\x67\xde\x02\xc4\x9c\xb1\xdc\xdc\xd6\xca\x22\x24\xd0\x40\xce\xee\xe0\x92\x62\xf2\x77\xfd\x11\x21\xaa\xa1\x60\x5e\xef\xe0\xec\x00\x39\xbe\x20\xa0\xc8\xcb\x04\x0e\xe7\xfb\x02\x41\x0e\x66\x05\xf7\xe5\xfe\x02\x61\x42\x32\x84\xdb\x97\x20\x10\xf0\x81\xb2\x85\xdb\x20\x0f\x71\x61\x9a\x11\x73\x6d\xda\xaf\x83\x2f\x4f\x33\x20\xde\x32\x33\xa2\x32\x8d\x81\xb8\xf2\xf2\x91\x83\x59\xc7\x40\x90\x43\xb9\xc9\xfd\x19\xc8\x40\xa0\x53\xf2\x94\xfd\x11\xc5\x16\x20\x0a\x89\x19\xc3\xb9\xcc\xed\xa7\x02\xb9\xd9\xfe\x1c\x01\xaa\x23\xdc\x15\x0b\xd1\xff\x9f\xb7\xee\x1f\xab\xf7\x83\x74\x7a\x30\x35\x8c\xe5\x8e\x0f\xe2\xb0\x2f\x8f\xbc\x11\x47\xbd\x54\xf2\xe0\xe2\xc3\xa9\xe6\xbb\xab\x0a\x1b\xc4\x60\x6a\xb2\xa0\x70\x05\xf9\xf6\x1a\xbd\xbc\x70\x79\xc2\x75\x10\xcf\x35\x93\xa4\x5c\xe2\x84\xbc\xf2\x14\xe7\x71\x43\x9d\x7d\xd3\x65\xdc\xad\x31\x4b\x33\xa3\xad\x61\x86\xc8\x67\x5b\xb1\x4c\x7d\x2f\x2d\xe9\x86\x94\xe8\xe5\x79\x56\xac\xc7\x65\x9b\x25\xc1\xb2\x2a\xc7\x8d\xa1\x60\x55\x5b\x7f\x35\x2e\x2e\xcc\x4c\xd4\xca\xfd\xcc\x3b\x5e\xde\x32\xd4\x82\x83\xd4\x60\xb0\x21\x7c\xeb\xc1\x5c\x11\x96\xbe\xe9\x34\x6b\xdc\xf2\xaa\xb4\xae\xa3\x25\x2f\x41\xf2\x74\xc2\x4b\xa5\x56\x9b\x89\x61\x81\x4a\xb2\x52\x3a\x40\xa9\x95\x09\x5b\xc6\xac\x52\x3f\x1c\x2c\x2a\xf7\xa0\x71\xd1\x5e\xd4\xb2\x75\x18\x84\xfd\x0b\xce\xa1\xb0\xb4\xea\x08\xdf\xd0\xd4\x09\x4a\xda\xa5\x6c\x85\x30\x2a\x50\x81\x85\x00\x98\x40\xac\xd2\x85\x85\xe0\x09\xd5\xc5\xb7\xbc\xbd\x35\xca\x8f\x16\xb7\x52\x22\x49\x99\x87\xb2\x44\x91\x95\x61\x9c\x3b\xd0\x4f\x71\xe4\x08\x17\x45\x16\x74\x7a\x83\x37\x83\xf1\x94\xdc\x54\x8b\x8c\x8a\xf5\xed\x24\x2b\xf9\x87\x1e\x00\x26\x4a\xca\xf7\xfc\x83\xd6\x3b\x64\x59\x47\x82\x30\x41\xb5\xa0\xa3\xae\x20\x25\x90\x41\x12\xd0\x94\xe6\x80\x45\x5d\x02\xd1\x3f\x6d\x5c\xe7\x1f\x66\x44\x92\xfa\x4f\xde\x3a\x7e\x86\x19\x51\x95\x64\xae\xde\xfa\xc4\x0a\xff\x3d\x94\xe0\x2c\x13\x56\x56\x36\xd6\x09\x2a\xea\x8b\x04\xa6\x88\x6b\xa5\x73\xe1\xa8\x91\x2a\x42\xad\xcb\x7f\x88\x5a\x3c\xd1\x24\x0c\x39\xe3\xbd\x88\x15\x28\xe7\x26\x91\x96\x21\xce\x1c\xf6\x4f\x75\x45\x8d\xde\xf2\x75\xbb\xa3\xde\x61\x53\x49\xc3\x1c\x96\x10\x69\x1e\xdd\x17\x5f\x85\xfb\x62\x92\xe3\xf2\xd6\x6a\xa5\x86\x3d\xe0\x74\xa6\x73\x0f\x8c\x21\xbd\x2a\x4d\xc0\xcf\x92\x43\x82\xfc\x48\x7d\x01\xee\xe7\x01\x8d\xcd\x3b\x3c\x97\xa6\xc2\x66\x98\x7a\xfd\xaa\xc2\x70\x8a\x8f\xd8\xaa\x16\x66\x7f\xee\xcc\x4e\x8b\x52\x44\x58\x8e\x37\xb3\xe6\x80\x24\xc2\xb4\x63\x35\xf3\xfa\x5c\xef\xf2\xd1\x5a\xf8\x08\x42\xd5\x72\x89\x79\xe9\x44\xa0\x94\x27\x55\xee\xaa\xdc\x6a\x41\xa5\x09\x22\xb0\x95\x66\x0f\x43\xa5\xc0\x0c\x0a\x3d\xaf\x7d\xe5\xe5\x94\x3f\xb0\x07\x5c\xa6\xe7\x37\xa3\x69\x69\x6d\xd1\xb0\x79\xc7\x77\x2d\x39\x50\x48\xfd\x8e\x17\xbc\x92\x41\x2e\x5f\xf0\xd4\xf7\x42\x1d\x3d\x4d\x47\x4f\xd3\xd1\xd3\xa4\xde\x30\xa2\x68\x46\x85\x54\x12\x41\xeb\x64\x01\x7d\xe5\x0a\xa3\x8f\x60\xb2\xf7\xce\xbe\xe1\xdd\xdd\x2c\xa9\x18\x51\x57\x0b\xbb\xe6\x14\x35\x54\xe0\x09\xd0\x36\x37\x6a\xa4\x28\xac\x3f\xe2\xcc\xfb\x1a\x26\x40\x6b\xe8\xc1\x81\x97\x60\x71\x4b\x32\x25\x58\xa1\xb6\x43\x0f\x68\x1c\x2c\x78\xfa\x06\x69\x51\x42\x57\xd2\xd6\x38\x13\xa7\xb6\x21\xc0\xa9\x55\x6d\x59\xda\x14\xcb\x03\xc2\x55\x97\x5f\x7d\x35\x01\x0d\xc6\x71\xc8\x43\x83\x95\xe4\xc7\x47\xfb\xee\xb7\x35\xe6\x5d\x9d\x40\x53\x54\x5e\xfd\xa7\x2e\x91\x7f\x03\xb1\x3d\x36\x83\x0a\xa4\x44\x27\x49\x4c\xf9\x13\x52\xe6\x02\xf1\x65\x1d\x77\x6d\x8a\x4d\x6c\x5e\xbf\x80\x9a\x83\xa3\x5d\x32\xc8\x11\xd5\x0d\xd8\x32\x8e\xba\x28\xb9\x69\x19\xc4\x15\x41\x49\xa5\x41\x29\x1a\x83\x78\x97\xbd\xb9\xb7\x7c\xa9\x9a\x6d\x18\x6c\x3f\xe2\xf2\xe1\xe6\x67\xa4\x05\x98\x65\xd4\x2e\x47\x58\x99\xd1\xd1\x41\x76\x74\x90\x05\xc6\xb3\x75\x90\x79\x97\x8b\xe6\x06\x54\xb8\x85\x1b\xa7\x19\xf4\x6e\x51\xef\xfa\x56\x5b\x57\xc9\x77\x41\x9c\xdc\x6a\xc5\x50\xb8\x33\x4b\xd1\xb1\xf3\xac\xf1\xb2\x1d\x59\x70\x32\x9f\x9f\x9c\xb8\x2a\xbf\xe3\xf5\xa1\x3b\x20\x2b\xb9\x9c\xfd\x0d\x11\x96\xf0\xd4\x90\xa2\x9a\x6b\x29\xa4\x16\x4f\x1a\x7b\x48\xfc\xea\x73\xbb\xba\x56\x24\x83\x9e\x27\x8c\x44\x22\x19\xa0\xab\xc4\xf3\x76\x0f\xc1\xa2\x11\x27\xea\x2a\x7e\x16\x01\xa0\x72\xa6\xfe\xd0\x72\x45\x53\x3e\x36\xa3\xba\x81\x87\xe2\x3a\x75\x13\x8f\x97\xe6\xc7\x79\x52\x54\x30\xc3\x0d\xb2\x60\xe6\x39\xc9\x79\xb9\x3d\xad\x41\x29\x10\x2d\xd8\xf6\x89\x57\x11\x12\x4b\x52\x95\x25\x61\x32\xdb\x3e\x81\xec\x52\x63\x13\x92\x4f\xdd\x8c\x4e\xde\x46\xed\x39\x32\x4d\x8c\xdc\xfd\x07\x32\x05\x35\xc3\x66\xc2\x9c\xd6\xb6\x56\x6d\x5a\x20\x6c\x83\x36\xb8\x14\x30\x0c\xa0\x69\xe2\x4a\x4a\x37\x54\x70\x30\x49\x0d\x5a\xc5\x14\x81\xf2\x4a\x16\x95\xb4\x7c\x15\x92\x5f\xec\xcd\x7c\x4d\xea\xca\x92\x35\xc5\x76\x24\xb7\xd7\xe1\x44\x89\x1a\x5c\x3c\x22\xdc\x57\xa7\x92\x42\xc3\xb3\x9b\xea\x9b\x4e\x70\x7b\xc4\x1d\x8c\x95\xb8\xc0\xc5\xc2\x50\xac\xc0\x15\x13\x7a\xf0\x65\x82\x0a\x40\x00\xb5\xe3\xe2\x92\x46\x24\x6f\x5d\xd9\x37\xda\x31\xd6\x92\xe4\x05\x2f\x71\xb9\x45\xa9\xb5\xc9\x8c\xc7\x3b\xec\x96\x11\xf0\xea\x08\xec\x5d\x9f\x4d\xaf\x2a\xa5\xe5\x21\xf2\xb7\x72\x92\xd2\x2a\x8f\xb3\xa2\xfd\xa2\x8b\x9e\xda\x82\xaa\xce\x57\x6e\x00\x39\xc3\xdf\x02\x27\xe3\x55\x6d\x0d\x96\xa8\x68\x10\x6a\x44\x05\xbf\x0e\xe0\x0b\xeb\xb3\xcc\x09\x66\x4e\x6a\x07\xd9\xe4\x19\x4f\x89\xc2\xb8\x03\x66\xe6\xe6\x99\xe9\x98\x75\x69\x01\xcf\xe6\x4b\x0b\xe8\x95\x12\x93\xde\xeb\x9b\xf0\x49\x36\x11\x45\xe5\x4b\xd3\xdf\xc9\x3b\x75\x9d\x47\x56\x1a\xe5\x12\x67\x08\xdb\x32\x19\x4b\x53\x35\xb9\xde\x55\xc7\x07\xc2\xe6\x29\x6e\x7b\x90\xd5\x07\xc8\x39\x46\xd4\xae\xaa\xb9\x19\x59\x43\x1b\xc2\x32\x61\xfc\xc7\x34\xc1\x8b\xa0\x55\xcb\xc0\x36\xf2\x47\xbd\x93\x77\xba\x54\xeb\x67\x9a\x57\x39\xaa\x84\x9a\x29\x67\xed\x67\x82\x50\xeb\x89\x3e\x18\x8a\x35\x26\xab\x9c\x32\x0d\xb4\xad\xde\xe9\x16\x0c\x0e\xbf\x61\x3f\x67\xad\xa8\xeb\x6c\x36\x67\xd2\x14\x95\x16\x7f\xed\x2c\xad\x00\xc7\x97\x75\xeb\xc2\xb1\x51\x0b\x38\xba\xd2\x2d\x36\x95\x9a\x3b\xe7\x85\xd1\xcc\x3f\x30\x80\x93\x62\x6b\x17\xd7\x1b\x53\x31\x1b\xe1\xb3\x43\xdd\xfd\xc4\x5d\x09\x52\xce\x56\x15\x4d\x1f\x8d\xac\x41\x5c\x7e\x99\x80\xf9\xfb\xdb\x8b\x36\x63\x7f\x4b\x17\x25\x41\x17\x6b\xcc\x18\xc9\xda\xa5\xb6\xc7\xcd\xc0\x43\x65\xb8\xdb\xf9\xb9\x3b\x95\xb6\xc7\x6f\x8d\x83\x56\x8f\xfa\xe3\x65\xe6\x3e\x9b\xc2\x7f\xb0\x62\xd3\x30\x3f\x51\x53\x8c\xfa\xf1\x8b\x4d\x67\x55\x64\x99\xe9\xc6\x3a\xf6\xf6\x02\x49\x5c\xae\x88\x54\x40\x10\xab\xf2\x05\x09\x9e\xe1\xe7\x54\xe0\xf8\xb9\xa4\x22\x1f\x2e\x5b\xd8\x6c\xc7\x2f\xbf\x7c\x88\xac\x16\xd5\xb7\xa7\x0f\xbc\xcc\xd2\x07\x9a\x9a\xc0\x3f\x81\x5e\x2a\xb0\xaf\x9e\x6f\xe9\xa6\x87\x07\x9a\xee\xb3\x6c\x6b\x46\xd5\xcb\x46\x7a\xdd\x36\x3d\x95\x92\xd1\x7a\x10\x66\xbc\xd4\x9f\x7f\x85\xae\xa8\x36\x47\xea\x7f\x19\x03\x59\xbe\xa0\x0c\x4b\xe7\xe4\xa8\x37\x28\x08\x51\x5d\x03\xea\x5c\x39\xf3\xb1\x20\xf2\x14\x2d\x2a\x63\xce\x5a\x70\xb9\x46\x82\xe6\x55\x26\x31\x23\xbc\x12\xd9\x36\x48\x46\x5f\x6a\x6b\x60\xf7\x71\x46\x3e\x9b\x43\x01\xbf\x97\xeb\x57\xda\xf7\xf3\x8a\x30\x52\xd2\xc4\x6d\x28\x48\xe1\x75\x51\xbb\x3a\xa2\xd2\x74\x38\x3e\xab\x2f\xeb\x4a\x33\x5f\x1d\xc5\x4b\x12\xb4\xc0\x82\xa4\xa8\xc8\xaa\x15\x1d\xf5\xa4\x7c\x91\xb8\xdc\x26\x4a\x10\xa2\xf7\xd4\x02\x38\x2c\x7b\xea\x58\x3e\x78\x47\x8a\xb8\xeb\x8f\x75\x4d\x49\x41\x98\x62\x00\xcc\xa3\xd2\xb0\x0e\xa0\xd1\x71\xb0\x5d\xb0\xbe\x9a\xe7\x15\xec\xe5\xf1\xdc\xab\xcf\xb2\xc4\x8a\x41\xe6\x8a\xd5\xb9\xa8\x10\xba\x44\x98\x85\x99\xd9\xe3\x06\xfb\x7d\x85\xa2\xc1\x17\x2e\x8d\x16\x17\x20\x0d\x09\xbb\xf6\x03\xa4\x0d\x37\xb6\x07\xc8\x05\x30\xef\x06\x22\x47\xce\xd2\x6f\xa1\xeb\x02\x96\x07\x02\x92\x83\x90\x43\x01\xcb\x62\x37\x5c\x31\x8c\x81\xf6\xaa\x8f\xc5\x57\xfa\xc6\x57\x16\xbd\xfc\x94\x71\xa1\xcb\x8c\x27\xf7\x11\x55\xcc\xde\x9a\xe7\x3b\xd6\x12\xfb\x63\x4c\x19\xb3\x11\xeb\x88\x3d\xdb\xde\x05\xab\x83\x85\xcc\x47\x46\x81\xaa\xa3\x5a\x72\x75\xde\x74\xd1\x6e\xb4\x20\x8a\xfd\x94\x15\x0b\x54\x40\x02\xcb\x71\x58\x62\x31\xa1\xfc\x74\xb7\x03\x85\x20\xd2\x44\x40\xeb\x62\xb2\x39\x91\x18\x54\x10\x7f\xf6\x77\x2b\x08\xb2\x16\x24\x25\xe2\xb9\x2d\x70\x76\x76\xed\x49\x16\x34\x25\x10\x23\x2d\xd6\xc8\x2e\x49\x02\x08\x73\x85\x37\xc1\x30\xb3\xfb\xf4\x29\xb2\x86\x90\x7a\xa1\x83\x2b\x4b\x10\xda\x12\xa9\xfb\xe4\x34\x5a\x5b\x70\x6d\x7c\xe9\x11\xa8\x85\xf7\x84\x36\xc8\x55\x42\x6e\xea\x56\x3e\x51\x2d\x67\x4e\x7e\xbc\xb8\x6a\xbf\xda\x3e\x74\x3f\x5e\x5c\xa1\x4b\x70\x6b\xa0\xa8\x26\x81\xb5\x79\x72\x14\xe4\x23\x34\x09\x5c\x25\xa4\x69\x7c\x94\x52\x71\xff\x5c\x4a\x11\x1e\x3b\x04\x3e\x8b\x0e\x81\x3b\xf4\x11\x9c\xc0\xb1\x3d\xe0\xb1\x3d\xe0\xf3\x6a\x0f\xf8\xa4\x3c\x12\x3d\x9a\x39\xbe\x48\xa3\xa5\x20\xd7\xe5\xce\x37\x66\xdd\x5c\x36\xde\x35\xca\xd4\xa5\x16\x56\xb7\x3f\xf5\x95\x16\x74\xed\xb2\x14\x84\x27\x47\xf1\x23\xd7\x53\x05\xd9\x17\x00\x8a\x6f\xbf\xfd\x61\xd7\xfc\xe1\x23\x30\x08\xf6\x09\x11\x7c\xa8\xa6\x44\x86\x76\xf7\x16\xed\xa8\xfc\x48\x8a\x51\x0c\x75\x04\x3a\xf3\x42\xc7\x92\x4d\xa5\xfa\x81\x0b\x2a\x79\xb9\x45\x58\xea\xc2\x58\xa5\xa4\x49\x95\xe1\x90\x47\xcc\xd8\xb1\xe7\xe8\xf2\xea\xe6\xe3\xd5\xc5\xf9\xdd\xd5\xe5\x1b\xe4\xbe\x42\x7d\xa1\x7e\x8e\xee\x78\x63\xf8\x1e\x85\x8a\x9b\xa0\x02\x13\x4b\xdb\xcc\xf1\xd4\xb2\x7b\xcc\x9a\x28\x09\x5d\xd2\x2d\x60\x97\xba\x66\x54\x36\x51\x94\xa6\xf1\x4e\xc6\x99\x8d\x28\x54\x90\xad\xfd\x7d\x45\xe5\xa9\xf1\x8b\x87\x1b\x29\xaa\x57\xdb\xb3\xd0\xfc\xc4\xc4\x54\xd5\x4b\x18\xb5\x98\x80\xd5\x3e\x17\x8b\x14\xd7\xd1\xcf\xf8\xd8\xea\x97\xed\xdd\xe7\x82\xb1\xdd\x1c\xc3\x1a\xcc\x6e\x8d\x36\xa4\x6e\xe5\x93\xf9\x89\x13\x06\xb3\x4e\xa2\x40\x10\x66\x33\x29\x57\xa4\x4f\xbd\xdc\xa6\xc5\x39\x42\x3f\xc9\x35\x29\x1f\xa8\x00\x14\x87\xa7\xdd\x52\x81\xb5\xb3\x4d\x7d\xc0\x8f\x21\x6f\x7f\x25\x0c\x98\xd9\x28\x99\x85\x3f\x69\x5b\x68\x69\x45\x37\x84\x19\xc4\x1e\x8e\x45\xbb\xa9\x45\xed\xf6\xc7\xe6\x0c\x7f\xfa\xf8\xee\x70\x93\x31\x27\x36\x6a\x2a\x17\x3c\xcf\xa9\x44\x6b\x2c\xd6\xae\xce\x8a\x17\x7b\x54\x73\x8d\xc3\xcc\x11\xc6\x71\x41\xfb\x0d\xe3\xba\xa6\xdc\x4b\x44\x17\xa8\x93\x1f\xdd\x2b\x1d\x05\xba\xfe\xd9\xf5\x82\x0a\xf2\x1b\xad\x67\xc5\x07\x71\x0e\x35\x45\xa8\xd7\x72\xd8\xda\xfb\x84\xa5\xa6\x22\x78\x64\x73\x49\xf7\xda\x07\x53\x3f\xd4\xc4\x6b\xdb\x1f\x8d\xd0\x06\xaa\x03\x94\x12\x89\x69\x26\x3c\xfc\x4a\x5e\xf0\x8c\xaf\xfa\x83\x23\x23\x90\xf3\x8d\xc9\x68\x99\xe1\x99\xc2\xfa\xe1\x74\xad\xd8\x7e\x50\x2e\x61\x47\x21\xa8\x59\x65\xad\x63\xe8\xdc\x98\xc3\xf5\xd5\x79\x32\x44\x3c\x82\x70\x5a\x63\x27\x88\x0b\xa7\xa5\x6a\xeb\x82\xeb\x6f\xa1\xf9\x7c\x53\x89\xa3\x20\x65\x4e\x85\x62\x5e\x9e\xd4\x0a\x51\x65\x77\xa4\xda\x27\x42\xfa\xa1\x04\xd6\xfa\x44\x8f\x8b\xb5\xe3\x01\xf7\x20\xf6\xaa\x38\x5c\x28\xb1\x75\xb7\x5d\xb4\x3e\x10\x2d\xe6\x5a\x94\x64\x46\x3e\x53\xa1\x35\x0e\x9d\x93\x16\x48\x96\x69\x2e\x77\xbf\x8f\xa6\x33\x48\x3a\xf3\xa5\x79\x2a\xdb\xc6\xc4\x4d\x36\xb2\x60\x6d\x46\xd6\xe1\x23\x38\xcb\xb6\xa6\x4c\xbd\xae\xf1\x61\xcc\x3f\x78\x15\xac\x02\xc7\x4b\xeb\x66\x2a\x4a\xba\xa1\x19\x59\x29\x6d\x74\x4d\xd9\xca\xab\x49\x82\xb3\x8c\x3f\x10\x9b\xd6\x4b\x82\x9e\xbe\x6e\xef\x16\x21\xfd\xc8\x5e\x7d\xa6\x3e\xfc\x74\x87\x18\x31\x9f\x12\x00\xfe\x32\x5d\xfb\x55\x93\x09\xe6\x6e\xcc\x66\x33\x6d\x5b\x7b\xf9\xdf\x4a\x8e\x4f\xb3\x57\xe8\x17\x62\xe7\xa7\x14\x1c\xc5\x6d\x12\x89\x1e\xd6\x5c\x5b\x4b\x2a\x01\xe8\xb1\xd8\x50\x80\x3e\xfe\x26\x89\xcd\x42\x38\x53\x50\x94\xd0\x6c\xae\x6a\x8d\xaf\xb4\x29\x83\x31\xae\xd0\x08\xd4\x78\xf3\x0f\xa2\x0f\x4c\xbc\x31\x9c\x53\xa3\x8f\xd2\x41\xe9\xc1\x75\x95\x0f\x5d\x35\x42\x6c\xf3\x8c\xb2\xfb\x53\x44\xa5\x63\xbb\x8a\xea\x6c\xe8\x36\xbb\x87\xd6\x35\x2b\x09\xce\xbc\x5b\xeb\x00\x94\x73\xb0\x1b\x49\x46\x1b\xee\xef\xb6\x05\xd1\xe7\xb9\x66\x4b\x36\x7c\xcc\x37\x72\xbc\x08\x1b\xae\x9f\x17\x26\x80\x66\x8d\x03\xf0\x7f\x2a\x62\x2a\x6b\x9e\x5c\xdf\x5e\xdc\x5e\x77\x9a\x27\x9b\xdf\x5a\xae\xa9\x3d\x02\xe7\x0f\x15\x39\x1f\x73\xf9\x6b\x24\x1c\x56\x26\x4f\xd6\xb8\x38\xaf\xe4\xfa\x92\x8a\x84\x6f\x48\xa4\x72\xe9\x4a\xb5\x5a\xc7\x0f\xa2\x0e\xc5\x06\x16\xba\xf8\x8f\xf3\x9b\x4e\x67\xc2\x03\xc9\x27\xcd\xcc\x6f\x89\x88\xd6\x44\xfb\xe7\x6d\x21\x3d\xea\xac\x8f\x4e\xbf\xaf\xc6\xe9\xa7\x4f\xe3\xd7\xea\xe8\xa3\x8c\x4a\x8a\x25\x07\x65\xa8\xb7\xad\x3c\x95\x90\x3c\xb7\x47\xea\xda\x81\xd1\xa1\x26\xda\x69\xd7\x82\x0c\x22\xb0\xa6\x1f\x06\xd5\x32\x46\x22\x68\x5d\x23\xb9\x13\x88\x7e\x8a\x18\x79\x08\x03\xd5\x73\xa3\x35\x8c\x7f\xb7\x69\x07\x8a\x8e\x71\xf6\xf7\x37\xff\x6e\x8f\x16\xc3\x39\xf9\xbb\x96\x61\x82\x20\x9b\xb2\x16\xb5\x69\xcb\x76\x29\x3b\x9c\x49\x0b\x21\xfa\x5b\x1c\x9f\xb3\xa6\x5e\xb3\xde\xff\xac\x70\x66\xf0\xf8\xe1\x90\x76\xc9\xf6\x7e\x44\x4d\xcf\xd1\x88\xdb\x87\x0f\xce\x96\xa3\x04\x73\x7d\x67\xeb\x27\xc2\xd2\x62\x89\x99\x50\x9b\xd7\xf6\x19\x9d\x58\x97\xf0\x09\x7a\x29\x93\x02\x58\xd3\xf2\x11\xd2\x96\xcc\x32\xed\x5e\xbc\xab\xd3\x95\x42\xf3\x79\x24\xff\xa8\xa6\xf1\x38\x13\x5c\x6b\x01\x37\x1a\x00\x7a\x47\x85\x34\x31\xe8\x06\x22\xa4\xb3\x0d\x31\x09\x2a\x4a\x16\xbb\xd1\x05\xdd\x8b\x5f\x71\x9a\x96\x6f\xcc\x1d\xbc\xb4\x32\x51\xa9\x35\x6a\x0e\x6f\x5b\xee\x3c\xff\x2f\xe5\xb6\xa0\x89\x56\x9f\xef\x2e\x6e\x34\x24\x81\xfe\xf6\xbd\xa9\x75\xf4\xd7\xbf\x7c\xff\x6d\x90\x04\xbe\x5c\x06\xd1\x24\x1b\x57\x54\x7c\x37\xc4\xa1\x11\xf2\xbf\x1e\x4c\x0c\x9a\x16\x11\xae\x05\xb3\xdb\xa6\xb3\xb5\xa1\x4b\xcb\xbc\xd5\x26\xd7\x77\x4b\x70\xb1\x51\xe2\xdd\x31\x7a\xf9\x2b\x88\x5e\x76\x19\x8a\x86\x7f\xed\xcb\xff\x0c\xeb\xbb\x71\xac\xcf\xb2\xb6\x30\xd9\x81\x59\x5f\x8b\xb5\x05\xe1\xee\xcf\xfa\x0e\xaa\xf1\xd3\xdf\xc6\x8e\xd4\x4c\xdd\xa0\xa3\x7f\xf7\x77\x6a\x5f\xcb\x81\x56\x77\x42\xa6\x63\xd0\xea\x59\x8c\x73\xef\xc3\xdb\xdb\x8e\xfd\x41\xfd\xe2\x3c\x7a\x6d\xaf\xdd\x38\xab\x1c\xf0\xe8\xed\xab\xbe\xb0\xe5\x68\x71\xa7\x47\xb6\x39\x3a\xc3\x39\xf9\xdc\x56\x1e\x15\x92\x04\x29\x37\x61\xf1\x68\x6f\x5b\x58\x00\x01\xe8\x0b\xbb\xa8\x14\x26\x0c\x76\x20\x9e\xa4\x27\x75\x4e\x3d\x0a\x96\x61\x62\x43\x19\x9b\xaf\x7a\x72\xab\xdf\x71\x6e\x51\x75\xe6\x4c\x9c\x5f\xa9\x38\xb1\xe2\xc1\x44\x08\x48\xbd\xb0\x0e\x75\x3e\x1f\xea\x3b\x88\x11\x76\x66\xd7\xb5\x2f\xb7\x6d\xc2\xe7\x8c\x2c\x79\x91\x61\x3a\x5a\xae\xa9\xc3\x1b\xfa\x5e\x37\xff\x79\x6b\x2c\xb6\xc0\x96\x48\xed\x3e\x2a\x08\xa3\x5e\xc8\x75\x10\x0f\xb6\xda\xbe\x2e\x73\x3c\xce\x79\x26\xee\x7b\x83\x98\x99\x23\x81\xe6\x27\xf3\x4b\xa2\xa6\x74\x10\xa6\xac\x21\xc5\xc7\xc1\x5e\xb8\xd7\xba\xe9\xdd\x03\xe8\x83\xa8\x14\xbb\xe8\x45\x58\xd4\x95\xb5\x2b\x6b\xc0\x02\xe7\x81\x7f\x59\xfc\xa3\x47\xbf\x13\x7e\x89\x4c\xd2\x0d\xa2\xeb\xd2\x65\x88\x1f\x52\x81\x83\xb1\x9c\x9a\x0a\xf7\x66\x2a\x6b\x2e\x39\x9b\x98\xaf\x74\xd3\xf3\x72\x3b\x26\xc0\x3c\x71\x61\x72\xf4\xb2\x90\xfd\xa4\x06\x64\x42\xbb\x6b\xef\x90\x6e\x7a\x6b\xaf\x60\xce\x9c\x9f\x48\x84\xfd\xcb\xd6\x74\x7b\x80\x63\xff\xcf\x53\xfb\xe0\xd0\x15\x94\x0e\x75\xe6\x8b\x34\x32\xab\xf0\xfa\xd2\x8a\xc2\x2e\x73\x50\x58\x72\x44\x0d\x3d\x7a\x34\x17\x5c\x14\x20\xf9\xe8\xb0\x62\x45\x7a\x7d\xb9\xf7\xf1\xe6\xa5\x7c\xe0\x65\x6c\x0d\x96\x9b\xd6\x6b\x9d\x30\x1f\xfb\x37\x48\xdc\x31\xe8\x04\x7f\xe1\x53\x7a\xab\xe3\x07\xbc\x25\xf6\x38\xeb\x20\x71\x15\x46\xff\xec\x3b\xda\x23\x47\x37\x08\x75\xf4\x68\x9b\xa3\xdb\x7b\x64\x81\x8a\x4d\x7d\xa4\x1f\xe5\xc8\x4e\xba\xa6\x03\x95\x39\xe0\xc9\x2f\x93\x2a\x73\x1c\x4c\x9f\x32\xa7\x23\x92\x65\xfd\x6c\x5f\xb2\x49\xcf\x6a\x3f\x1b\xe6\x85\xeb\x63\x19\x5c\x3a\x28\x25\xe0\xa0\xcc\xca\x2d\x77\x6f\x86\x65\x3a\xab\x8f\x7f\xae\xa7\xa9\xce\x92\x97\xba\xec\x06\x35\x95\x38\x9a\xea\xe8\xb6\x0e\xc7\xa9\xed\xe9\x96\xe3\x42\x8c\x5f\x89\x8a\x55\xf9\x5d\x79\x0e\xc0\x96\xa6\x36\xa9\x7a\x3f\xdc\x99\x6a\xb7\xf3\x54\x58\xba\x07\x34\xac\xd8\xed\x33\x05\x52\xde\x5d\x1f\x2a\x70\x9f\xa9\x20\xd4\x60\xaf\x8a\x6e\x17\x8a\x20\xc4\xb1\x2e\x15\x43\xfd\x27\x00\x4c\xdf\xef\x4f\xf1\x45\xbc\x8e\x96\xd0\xa3\x08\xcb\x75\x9f\x72\xf1\xeb\xe6\xd0\x01\x5a\x80\x4c\xe9\x2b\x75\x53\x43\x37\x7b\x66\x0b\xf8\xd4\x27\x1d\xe1\x8c\x83\xaa\xa2\x7b\x44\xe0\xb5\xe7\xb3\xa1\x3a\xdb\x02\xe0\x7b\x89\x6b\x27\x90\xb8\x0e\xd9\x13\xfa\x3d\xf8\x55\x8f\xea\x86\x79\x0d\x44\x04\x2a\xfe\x61\x86\xe4\x0e\x57\xa0\x17\xe2\x5b\x26\x00\x37\xd5\x8d\x36\xf7\x6d\x49\x0e\xa7\x88\xe0\x64\x8d\xee\xc9\x76\xa6\x79\x0c\x18\x26\x42\x05\xd6\x39\x7d\x1a\x4d\x97\x58\xb6\xbb\x6e\x35\x16\x27\x68\x43\x19\x35\x9a\x0e\xe7\x2e\xe3\xad\xa1\xb9\x3a\x7b\x10\x98\x3d\xd7\x0c\x2c\xac\x70\x87\x1e\xd6\x5c\x58\x43\x8e\x35\xea\xdc\x93\xad\x66\x27\x09\x67\x20\x95\xa2\x19\x16\x80\xc6\x9a\x8e\xe5\xe9\x64\xd6\xa9\x13\x4b\x52\x58\x8f\xf6\x66\x8c\xac\xbb\x09\xfd\x51\xcc\x3b\x70\x27\x76\x30\xc0\x52\x54\x31\x6f\x46\xe6\x3b\xba\x80\xa5\x8e\xc2\x12\x84\xc1\xa2\x9b\x3d\x98\x1a\x77\xed\x90\x24\x5d\xc0\x9a\x0a\xdb\x13\x5b\x43\x8d\xc1\xa8\xa1\xa5\x9a\x08\x5a\x19\x8a\x82\xc8\xaa\x80\x85\x1f\x35\x43\xc7\x95\xa9\x95\x13\x21\x90\x29\x93\x9d\xe3\xf2\x9e\xa4\x75\x7f\x8f\xb9\x6e\xec\x13\xb3\x43\xae\x0c\xa8\xeb\x82\x63\x34\x25\xbc\xf5\xd3\x45\x23\xfa\xce\xa9\x71\x32\x9f\x9b\x76\x3d\x7d\x69\xa4\x60\x38\x91\x4c\xa1\x2b\xb9\xe0\x42\xc7\xab\x6b\xe1\x52\x6f\xad\xb6\x14\x83\xfa\x43\xf8\xc3\xf6\xba\xc4\x60\x13\x66\x33\xe2\xf9\xa0\x19\xf7\x24\xa8\xaf\x74\x47\x3b\x30\xcc\xf2\x81\x86\x6d\xc7\xcc\x1a\x4d\xeb\x72\x62\x06\xbc\x33\xda\xc0\xdc\x07\x7a\xa4\x45\x82\x44\x7e\x4f\xb5\xfe\x6e\x69\xd1\x10\xfb\xbb\xab\x75\xfa\xa6\x45\x43\x1d\xef\xb3\x66\x3a\xa8\x45\x03\x85\x74\x5c\x8b\x06\x1a\xee\xae\x1a\x0d\x12\x20\x05\xc7\x4f\x73\x72\xd7\xb6\x66\xc4\xf7\x6f\x6b\x46\x6c\x27\xb7\x66\xc0\x7b\xba\x35\x63\xe7\xdc\xd7\x5c\xbc\x68\x92\x7f\xa2\x71\xe8\xda\xb9\xe5\xb8\xa8\x85\x0a\xc9\xe7\xe8\xbd\xbd\x15\x26\x6c\x0b\x66\x4d\x7b\x37\x9b\xf6\xd3\xbe\x62\x26\x9d\x1c\xbd\x48\x92\x91\x9c\x30\x69\x8b\x14\x38\xb0\xfa\xda\x89\x06\x5a\xe7\xf8\xdb\x7b\x23\xee\xc6\xb2\x13\x9b\xc6\x3c\xe3\xfa\x2d\x99\x31\x53\x5b\x13\xf5\x7c\xe4\xfd\x17\xd9\x18\xd3\x7f\x29\x1c\x16\xd9\x0c\x68\x5c\x9d\x19\x71\xd1\x75\x11\xab\xfd\x02\x71\x78\x66\xc0\xa3\xf1\x22\x80\xea\xb8\x3d\x70\x4c\x9e\x19\x13\x68\xd7\x49\x9e\x7b\x35\x7a\xdb\xd6\x59\x3b\x2d\x89\x39\x62\xb5\xbc\x44\x8a\xdd\x6b\x65\xc0\x5d\xf5\xb6\x81\x4c\xe4\xea\x21\xb6\xd5\xf6\x1b\xe0\xf3\x01\x6c\x88\xef\xbd\x10\xd6\xe8\x3d\x98\xc0\x85\x2a\xcd\xff\x99\xeb\xf4\xbb\x6d\xca\x77\x7a\x83\x47\xd0\x06\xa0\x5d\xf9\xe4\x79\x47\xb6\x30\x8f\xba\x4b\xda\x85\xab\x47\x9a\x99\x47\x41\x8d\x6b\x7c\xde\x8c\xa9\xea\x4c\x5c\x33\xf4\x66\x00\xdb\xa2\xc7\x4b\x88\x2e\x20\x77\xac\x41\x7a\x34\xd4\xdd\x86\xea\x93\x5a\xa5\x37\x63\x2a\xba\xd1\xc4\xf6\xe9\xcd\x08\x37\x52\x9f\x00\xd4\xd0\x5d\xdd\x7c\xbd\xaf\xa5\xfa\x24\xa8\xfb\xb5\x61\xf7\x66\x37\x55\xe5\x45\xd3\x5a\xb3\x37\x23\xd8\xa4\x7d\x12\x5e\xea\xc6\xee\xe8\x00\xed\xda\x9b\xb1\x07\x9a\xa6\x08\xb8\x68\x42\x33\xf7\x66\x4c\x92\x5e\xd1\xd1\x8c\x71\x34\x63\x44\x8d\xa3\x19\xc3\x1f\x7b\x9b\x31\x06\x9a\xd4\x47\xa3\xb0\x6d\x0a\xe9\x69\x57\x3f\xe1\xec\xec\xb6\xb7\xef\x34\xae\x8f\x86\x39\xda\xe8\xbe\x6e\x61\x1f\x0d\xf6\xb0\x2d\xef\x9b\x71\x90\xe6\xf7\xcd\x98\x7c\x9d\x4c\x6b\x88\xdf\x0c\x40\x6b\xfc\x49\x4c\xb0\x69\xa5\xdf\xdf\x24\x7f\x82\xe1\x6c\xa0\xa9\x7e\xa7\x5d\xfe\x84\xe3\x71\x98\xf6\xfa\xde\x54\xf7\x6a\xb4\xdf\x8c\x7d\x24\xdf\x89\xcd\xf7\x9b\x01\x6b\xc3\x3f\x49\x24\x5b\xd6\x65\xc7\x7b\x1a\xf2\x4f\x82\x18\xd7\xc4\xbf\x19\x7b\x09\xbb\xd1\x8d\xfd\xbd\x57\x43\x2d\xfe\xa7\xe2\x35\xc7\xd2\xb1\xb6\xdd\x66\xff\x93\x80\xb6\x74\x8a\xd7\xe1\xfa\x23\xbb\x63\x2f\x24\xbb\xd9\xef\x4f\xc2\xcd\x6d\x1a\xd5\xa1\xbf\x3b\x74\x51\x39\xc5\x25\x9f\x98\xde\xa6\x6b\x0d\x13\x97\x3b\x51\x69\x98\x66\xbe\x7f\x8e\xe6\xf8\xc8\x8f\x98\xf0\xc6\x83\x99\x33\x6d\x1b\xb4\x63\x74\x52\x77\xda\x87\x8f\x4e\xb2\xc5\x16\x8e\xa1\x49\xff\xb4\xa1\x49\xb7\xb6\x5d\x60\x6f\x5c\x92\x89\x36\x8a\x00\x0a\x88\x4b\xd2\xaa\x43\x04\x48\x40\x5c\x92\xf6\xd1\x46\x1d\xa4\x63\x5c\xd2\x31\x2e\x29\x76\xee\x47\x83\xde\xd1\xa0\x77\x34\xe8\x81\xc7\x31\x2e\xe9\x18\x97\xf4\x87\x57\x84\x8e\x71\x49\xc7\xb8\xa4\x56\x5c\x92\x55\x98\xa2\x84\x62\x1b\x94\xf4\x7c\x63\x92\x6c\xdb\xe2\xf3\x24\xe1\x15\x93\x77\xfc\x9e\x00\x83\x06\x40\xca\xfc\x0e\x6c\xe0\xc2\x9f\x26\x46\x09\x57\x29\x55\x5a\xf3\x44\x1a\x39\xb7\xaf\x3b\x05\x55\xdd\xae\x2c\x25\x69\x0d\x37\x82\x4e\x2c\xa7\x90\x0a\x47\x73\x74\x8e\x4a\x92\xd0\x82\xaa\xfb\x43\x97\x68\xd1\xbf\xc7\x6a\x4f\x75\xaf\x42\x2a\x05\xc9\x96\xb6\xb3\x1a\xf3\x3a\x19\x37\x22\x62\xbc\xf2\xe8\x16\xd9\x9a\xba\x11\x97\xb8\x6b\xe1\x15\x01\xd5\x36\x91\x2e\xc9\x7f\x3b\x09\xce\xe2\xe2\xce\xff\x56\x0a\xad\x71\xd5\x0c\xab\xd3\x7b\x8b\xb6\x13\xc6\x05\x85\x56\x23\xab\x61\xc5\xf3\x21\xf2\xb9\xa0\xa5\x3e\x18\xb7\x24\xe1\x2c\x9d\x6a\x49\xba\xea\xc2\x71\x54\x67\xfd\x36\x51\x5b\x98\x56\x06\x94\x4e\xc1\xc4\x19\x4d\xa9\xdc\xd6\x21\x3e\xb6\x8f\x39\x36\xa7\x36\x0a\xd3\x86\x78\x45\xb3\x7d\x08\x17\x45\xc9\x71\xb2\x26\xc2\xc3\x44\xcc\x75\xa1\x05\x3d\x53\xad\xa1\xce\x16\xcd\xaa\x15\x65\x46\x19\xd1\xd0\x95\x64\x09\xc8\xc7\x6f\x46\xc9\xa5\x0b\xa5\xeb\x2c\xd7\xa7\x3a\xfb\xd9\x58\x9b\x92\xb1\x2c\xc8\x72\xab\xcb\x1f\x71\xff\x63\x06\x27\x80\xfa\x25\xed\xf5\xdb\xd7\x04\xe2\x59\xea\xaa\x47\xfe\xed\x5b\x54\x90\x32\xb1\x1c\x22\xce\xb5\xa8\x4b\x0c\x4a\x8e\x32\x25\x91\xf3\xd2\xd5\xa8\xec\xf9\x4c\x04\xd0\xbf\x7c\x87\xd6\xbc\x2a\xc5\xdc\xaf\x9f\xf0\x5a\xff\x66\x6c\x37\xe6\x06\x8c\xb1\x7b\x49\x94\x11\x2c\x24\x7a\xfd\x2d\xca\x29\xab\x94\xe0\x03\x7e\xdd\x53\x96\xbe\xff\x2e\xf2\x80\xc7\xa9\x49\x71\x0a\xd2\x6e\xb8\x97\x3d\xc7\x85\xe9\x67\x64\xf5\xa4\x28\xdb\x82\x2e\x12\xaf\xa9\xd7\xf4\x4d\x6b\xc7\x39\xb8\x4b\x34\x52\xe7\xb2\xd4\xc0\x24\x7f\x44\xfe\x18\xa7\x5d\x44\xe8\x09\x51\x52\x50\xc4\xc3\x30\x25\x02\x56\xb2\xc2\x3a\x28\x47\x9e\x01\x4d\xec\xb7\x8a\x2f\xb6\x12\x5e\x5b\xe7\x3f\xcd\xf3\xed\xa2\x3a\xee\xc7\x9d\x22\xa6\xa3\xf8\xd8\x6d\x4b\xd8\xd4\x30\x1d\x79\x11\x2a\xa9\xad\x4a\x5e\x05\x73\xdf\x5b\x6b\xd3\x36\x1b\x67\x23\xb0\xd7\x05\x4e\x12\x22\x34\x37\xba\xac\xdb\x88\x07\x49\x82\x71\xf3\x75\x10\x39\x3c\x56\x25\x9a\xd1\x1a\xa2\x6e\xc7\x80\x4e\x9a\xc7\xac\x23\x0a\x42\x12\x44\x87\x29\xc9\x8a\x0a\x19\xdd\x05\xd5\xbc\xd4\x26\x68\x41\xd9\x4a\x77\x80\x43\x79\x95\x49\x5a\x00\x52\x00\x1c\x46\x6b\x80\x56\x36\xf0\x1d\x2f\xd8\xb3\xde\xe3\x30\x8a\xd4\x09\x32\x75\xa0\xb5\x03\xef\xa5\x9b\x0b\x22\x4c\xea\x1a\x27\x3a\x48\x9c\x14\xb8\xc4\x6e\x5b\x82\x30\x13\x9e\xe7\x58\xbc\xb2\x3e\x20\xac\x03\x97\xcc\x15\xa2\xa4\x81\x12\x67\x35\x1a\xfd\x90\x93\x43\x11\xb2\x24\x0c\xb3\xa0\xbf\xb7\x6d\x00\xd4\xaf\x20\xfe\xc0\x5c\x47\x13\xd3\x42\x37\x92\x82\xad\xde\xf1\x03\x4e\xee\x09\x4b\x4d\x47\x76\x4d\xc7\xe9\x96\xe1\xdc\x56\xc8\xae\xfb\x4d\x93\xd4\xc1\x0f\x02\xae\x83\x72\x4c\x59\x1a\x53\x30\xc6\x15\xc9\x32\xc2\xe6\xa1\xb0\x57\x89\xc8\x12\xb7\x9f\x84\x92\xc4\xc6\xf9\x19\xc8\x13\x21\x48\x49\x37\x09\x71\x62\xae\x9a\xc8\xa1\x16\xb5\x09\xd6\x76\xdb\x59\x96\xad\xeb\x46\xbd\xd3\xa4\xef\x92\xda\x91\xad\xab\x6a\xe3\x4c\xb1\xa8\xb0\x60\xef\x4a\x12\xb5\x09\x4a\xed\xe0\x01\xbb\x34\x43\x9b\x0e\x9b\xa3\x37\xfa\x50\x90\xe0\x41\xf7\x7e\xb9\x80\xd7\xa8\x3a\xf9\xf8\xc3\x65\x9b\x3f\x7e\xc4\x29\x17\xe8\x87\x8c\x27\xf7\xe8\x92\x68\x15\x28\xdc\xff\xbc\x5b\xdc\x1c\xd4\x92\x78\x14\x62\xa8\x2d\x5a\xb9\x48\x0f\xdb\x14\xed\xd8\xa4\xeb\xab\x69\xd2\x55\x2e\xc2\x36\x8f\x3f\x6a\x8b\xae\x1c\xaf\x62\xbb\x50\xae\x09\x2a\xf5\xa1\xd6\x2f\xbb\xce\xff\xf0\x0e\x84\xad\xa3\xf6\xcd\x9a\x3f\xcc\x24\x9f\x55\x82\xcc\x68\x30\xe8\x0f\xbc\xae\x7b\xb2\x55\xcf\xc4\xad\xec\x1f\xe6\xa5\x96\xa2\x2c\xb9\x36\xab\xeb\xdf\x95\x94\xf3\xf1\x87\x4b\x75\x55\xc2\x6b\x26\x53\x81\xce\x88\x4c\xce\x12\x52\xac\xcf\xec\xb4\x9e\x1d\xba\x72\xce\xa8\xe4\x65\x64\x53\xf5\x73\x94\xf0\x2c\xb3\x15\xcf\xf8\x12\x5d\x90\x62\x5d\x83\x8a\xf2\x41\x3d\x22\x0e\xbe\x5c\x3b\xa6\x82\xf3\xb8\x16\x31\xde\xd1\x52\xef\xda\x93\xe5\x11\x52\xb9\x48\x0f\xda\x7d\xfd\x29\x48\xeb\x11\xba\x5a\x80\x0b\xa3\x0e\xd5\x3e\xed\xe9\x4a\xf5\x4c\xa8\xf5\xb1\xbb\x5f\x9d\xdc\xba\xd7\x74\x50\x9f\xe7\x3b\x8e\x6a\x66\xe5\x3e\xdf\x62\x89\xe8\x7a\x69\xd4\xa2\x94\xa4\x88\x6f\x48\x59\xd2\x94\x08\xc7\x8a\xa3\x38\x26\xa3\xd9\x53\xf1\xc8\x63\x5f\xae\xaf\xa2\x2f\x57\xb4\xc2\xeb\x31\x5b\xf5\xee\x2e\xb3\xc5\x69\x4e\x01\xb9\xcb\xcf\xea\x26\x07\x76\xd6\x52\x72\xdb\xe8\x13\xee\x12\xdf\x57\x75\x14\x09\xce\xc8\xf5\x4f\x60\xf5\xf1\xd6\x3c\xdf\xd6\x20\xdd\x8f\x5e\xd7\x84\x3d\x2a\xb2\xff\xa3\x3e\x64\x88\xf1\x74\xdc\xd3\x73\xec\x99\xd0\x55\xcd\xbc\xf3\x61\x4a\xb2\x1f\x4a\x4c\x58\x61\x49\x1e\x70\x9c\x94\x70\xe7\x96\xd8\x74\x60\x32\xf1\x33\x96\x60\xce\x6f\xae\xd1\x8f\x06\xee\xe1\x9a\x33\x94\x5c\x1a\x89\xf7\x92\xe7\x98\x46\xb6\xd2\xf5\xda\xe1\xf8\x13\xbd\xa9\x81\x22\x03\x35\xb8\x2d\x5e\x7f\xe0\x25\x5d\x55\x4a\x43\xb6\x5a\xeb\xb1\xa6\x7d\x60\xe9\x8f\x27\x5c\x35\xb2\x95\x67\x5e\x74\xa9\x1e\xb5\xbc\x14\x5c\xba\xa3\x0a\x7d\x2d\xd5\x61\x2e\x48\x10\x26\xa8\xf6\xd9\x7a\x41\x50\x5a\xe8\x92\x6b\x80\xa3\xa9\xce\xe1\x30\x02\xda\x29\x7a\xc7\x57\x94\x39\xee\xc0\x6d\x98\xc3\x12\xd3\x2c\x84\xc6\xa3\xc4\xf4\x55\x48\x4c\x42\x64\x57\x0c\x2f\xb2\xb0\x53\xbc\x7d\x71\x65\x58\x47\x9b\x10\xfd\xee\x59\x4a\x85\xfa\x7f\x74\x7b\xfb\x4e\x3b\x8c\x2a\x06\xd5\x20\xb4\x4b\xc5\xb2\xe7\xba\xb6\x8e\x61\x1a\x87\x3b\xc7\x86\x27\x46\xf7\x23\xb8\x66\xa9\x5a\x06\x11\xad\xb8\x4c\x0b\xcd\xb4\x60\x80\x7a\x93\x6c\xbc\xd9\x82\xa0\xbb\x35\x4d\xee\x6f\x3c\xbf\x11\x2f\xd5\x6f\xcc\xfb\xa9\xbe\x60\x21\xc7\xb9\xfb\xee\xa1\x18\xbf\x5d\xe6\x4d\xac\xf9\xe2\xce\xbb\xd1\x6e\x2d\xaa\x14\x10\x84\x85\xe0\x09\x85\x3b\x1e\xb5\xf1\xad\xb9\x12\x53\x7d\x25\x1e\x6e\x79\x5a\x0a\xda\xeb\xde\x76\x84\x60\x05\x38\x2c\xbc\x7b\x18\xe2\x5e\xb4\x58\x3a\xd8\x92\x0c\x29\x46\xf7\xea\xbb\x6b\x75\xe7\x73\x5e\x3f\xe3\x0b\xab\x7d\x5d\xc0\xc6\x18\x6e\xe3\x9d\x4c\x6b\x5b\xb3\x76\xb6\xde\xef\xd2\x17\x3e\x39\x3a\x6c\xe5\x49\xbd\x6a\x56\x0a\x1d\x7d\xa6\x96\x0d\xc6\x9f\x0a\xc9\xed\x30\xfd\x29\x98\xf4\xdc\x67\xdd\xe9\x04\x28\x98\xdf\xac\x1b\x4d\x33\xa3\x82\x17\x55\x86\x03\x1e\x6b\xbf\xa1\xe2\xbe\x1e\x14\x33\x87\x43\xb8\xd5\xa6\x76\x98\x19\x48\xac\xeb\x34\x9b\x09\xcb\xdd\xdd\x66\x34\x90\x66\x33\x50\xcb\x97\x9e\xd0\xb7\xdf\x7f\xf7\x5d\x5f\x7b\x9a\x56\xfb\x99\xb0\xdc\x05\x6c\x4f\xd3\x49\x90\x83\x5d\xda\xa3\xed\x69\xba\xed\x67\xc2\x28\x05\xb4\xa7\x89\x4c\x68\x7b\x9c\xfe\x33\x20\x4f\x42\x44\x56\xbe\xcb\xb5\x07\xf1\xd7\xb1\x5c\xfc\xc1\x0c\x7b\xc0\x5d\xd4\xca\xc0\x87\xe4\xd5\x03\x7c\x96\x3a\xef\xfe\xa0\xd9\xf4\x11\x39\xf4\xad\xcc\xf8\x20\xe0\xb1\xcc\xf9\xc1\x7c\x78\xb8\xae\xa5\x61\x81\xb2\xe0\x83\x30\xc1\x3d\x39\xc0\x01\xd0\xa0\x8c\xf7\x76\x1e\x3b\x8c\x3f\x40\xb2\x06\xa7\xf4\x57\x1a\xc9\x69\xaf\xf3\xd4\x01\xca\x14\x34\x93\x3d\x2e\xcf\x07\x9c\xb5\x7e\x90\x5c\xf5\xc8\x00\x68\x78\x5e\x7a\xcc\xa5\x09\xb2\x3b\x98\xd1\x9b\x83\x3e\x90\x53\x0e\x04\xd9\xce\x3c\x0f\x64\x92\x03\x61\xea\x7c\x73\x50\xfe\xb8\xbb\xfe\x80\x80\x03\x97\x64\xeb\x12\x04\x83\x3c\xc4\x55\x69\x46\x7c\xc6\x77\x6c\x02\x03\x3c\x79\x01\x94\xd3\x1d\x59\x5b\x71\x38\x93\x7b\x37\x33\x1b\x08\xf2\x7d\x0f\xc3\x1c\xce\xc7\x06\x02\xf5\x8a\x85\x4c\xca\xc2\x8e\x62\x0b\xf0\x9c\x08\x58\x9e\x35\x30\x6b\xe2\xe0\x49\x10\xf0\x1c\x5c\x78\xe6\x6d\x5d\xe4\x3f\xb8\x9c\xb8\x84\xdb\x58\x13\x74\x7c\xff\x7d\xdf\x76\x6a\x55\x3f\x47\x9d\x26\x74\xb2\x2e\x1c\x1e\xde\x29\xcd\xe9\x9f\x40\xf9\x43\x70\xd2\x85\xa9\xcd\x66\x06\x7c\xf4\xe2\x6e\x13\x83\x79\xe3\xa7\xdb\x8e\xeb\xb1\xfe\xd9\x09\xc8\xd6\xab\x38\xee\x7a\x3c\x7a\x1c\xbf\xfe\x2e\xed\x47\xf7\xd8\x74\xf7\x98\x68\x95\xe4\x74\x06\x2a\x23\x57\x42\x3c\x64\x7c\x61\x1b\x52\x18\xa6\x5d\x1f\xd2\xf3\x9b\x6b\x94\x94\x44\x67\x60\xe3\x4c\xcc\xd1\x84\x0a\x45\xce\x11\xa1\x25\x54\x51\x6b\x9e\x58\x4a\x92\x17\x32\x4c\x40\x47\xef\xd8\x57\xe1\x1d\x9b\x68\x52\xff\xb9\x7e\xcd\xd9\x3f\xd6\x55\x8e\xd9\x4c\x9d\x72\xed\x27\xb3\xf6\x76\x98\x4d\xbd\x73\xfb\xcc\x91\xcb\x67\xd1\x1b\xa3\x73\xba\x74\x5a\x9d\x69\xa2\x0e\x52\xce\x75\x2d\xb7\x5a\x04\x78\x04\x0f\x84\x86\x3b\x11\x67\xa6\x9f\x49\x87\x3b\x24\xbc\x00\x63\xcc\xde\xd2\x76\xa1\x35\xfe\x1c\x23\xf0\x9a\xa6\xf8\x56\x1d\x08\x68\x23\x42\xdd\xe8\xcc\xd3\x06\x4a\xab\x4e\x99\x2d\x3c\x86\xb3\x8c\x3f\x00\x92\x1a\xd7\xa4\x25\x19\x28\xba\x50\x6b\xb5\xc9\xfc\x0b\x82\x72\x5a\x96\xbc\xb4\x9e\x13\x80\x99\xb0\x21\x17\x1d\x1d\xa2\xf4\x57\x52\x1a\x15\xad\xb4\xc1\x02\xb7\x44\x7a\xe8\x86\x08\x80\x98\x99\xe4\x26\xf5\xdf\x2e\xa6\xd3\xf4\x83\xb2\x7c\x72\x41\xd6\x78\x43\x79\x55\x6a\xe8\x10\x90\x2f\xec\xab\xea\xea\x46\x5b\x5e\xd5\xfd\xd4\x2b\x9d\xe6\x50\x63\x17\xdc\x98\xdd\xdb\xe7\x0f\xcd\xcb\x5a\xe5\x4e\xb9\xb3\xc4\xcd\xc8\x67\x2a\x64\x3c\x2e\xdd\x16\xbb\x8a\xfc\x4f\x29\xc6\x56\x8b\x50\xb3\x17\xd0\xe7\x36\xa2\x50\xf2\xc2\xcf\xc1\xf4\xb9\xf6\xb1\xf4\xdf\x6a\x8b\xc5\x9b\x5b\xfd\xa7\x7d\x84\x62\x5b\xf3\x42\x18\x89\xd1\xa6\xb5\x1c\x05\xe3\xb1\xf1\x07\x11\x8c\xeb\xf0\x81\x8c\x26\xdb\xeb\xcb\x38\x11\xb1\x0e\x1b\x50\x2f\xa3\x1f\xb0\x20\x29\x7a\x8f\x19\x5e\x19\x9b\xca\xcb\xdb\x9b\x1f\xde\x87\x3b\x06\x14\x25\xd7\xf6\xa1\xeb\xcb\x1e\x07\x74\x7d\xaf\x9a\x8f\x7c\x38\x5c\xe6\x66\x67\xed\xd1\xc2\xc3\x81\x57\x7f\xc0\x9c\x54\x77\xc1\x43\x7a\x4f\xed\x16\x1e\x31\xc1\x00\xae\x2e\x92\xe8\xb2\x8f\x4d\x9e\xde\x1f\x66\x9a\x30\x27\x7f\xb3\x94\xfd\x18\x74\xf0\x91\x82\xca\xc1\x98\x74\x08\x3f\x93\xb8\x5c\x11\x79\xcd\x92\xac\x12\x74\x03\xe7\xdc\x77\xed\xf7\x3c\x81\xaa\xb6\x75\x71\x44\xd5\x9f\xd3\x71\x19\x80\xb3\x15\xd7\xf2\x48\x89\x99\xc0\x26\x1a\x87\x32\x9b\x55\x6f\x66\x67\x2a\xc1\x8c\x91\x19\x4c\xad\x34\xd0\xee\x68\xc4\x05\x75\x57\xbf\xd2\x11\x19\x75\xd9\x21\x21\x71\x5e\x20\x53\xa4\x23\xec\xb5\x2b\x49\xa2\xa4\x9b\x6d\x5d\xec\x29\x21\xe3\x2c\x11\x44\x91\xcd\xa2\x32\xca\xa6\x2c\x4c\xbd\xe6\x2d\xce\xce\xd2\xe8\xf6\x4a\x38\x1b\x5d\x53\x81\x4b\x49\x93\x2a\xc3\xa5\xc6\x88\x82\x65\xea\x4d\xa5\x4d\x10\xb7\xe4\x0e\x28\xc2\x19\x37\x0a\xf5\x38\x87\xd3\xb2\xa0\x9b\x9a\x3e\xd9\x0f\x58\xb8\x7e\x2c\x8a\xc0\x8c\xa4\xbc\xc0\x42\xfd\x4f\x72\x5f\x15\xea\x81\x51\x98\x12\xdf\x93\xd1\xf8\xae\x08\x64\xff\xaf\xf1\x1b\xa7\x07\xcf\xff\xeb\xfa\xb2\x4b\x3f\x1e\xb9\x5f\x5f\x1a\x1a\x1a\x5d\x80\xa9\x90\xf1\x18\x34\x14\xe4\x31\x25\x11\x83\xf1\x41\x10\x1e\x53\x95\xa3\x56\xf3\x43\x4c\x51\xfc\x75\x9f\x09\x2e\xaa\xe4\x7e\x3c\x04\x0a\x44\x1d\x84\xa5\x9a\x53\xed\x0d\xa8\x28\xc9\x92\x7e\xde\x1b\x4c\x49\x56\x81\xb6\x99\x07\x41\xbd\x91\x28\x6e\x83\xbe\x84\xe0\xc7\xc4\x03\x5d\xee\x45\x68\x4d\xc7\xaa\x67\xb1\x03\x01\xd4\x8d\xfe\xd9\xb0\x90\xdb\xc1\xc6\x39\x21\x74\xe0\x07\x71\x95\x61\x21\x69\xa2\xcb\x62\x28\xb1\x6f\x70\x63\x3a\x19\xd7\xbf\xdc\xee\xbc\xd9\x52\xcd\x18\x3a\xff\xe5\x16\x5d\x52\x71\x1f\xee\x4b\x53\xc7\x68\xba\x4c\x29\x1d\x4d\x61\x15\xb3\x93\x93\xb6\x6a\xe6\xa2\xb3\x98\x6b\x7c\x34\x0c\x96\x3b\x6f\xd3\xde\x9e\x23\xfc\x20\x88\x59\xee\x42\x2d\x57\xfd\x79\xb0\xf4\x01\x84\x06\xc3\xca\xe1\x94\x7a\x1c\xba\xde\xc6\xf8\x05\x17\x55\x8b\xa3\x55\x6b\x63\x14\x2e\xb0\x0e\x47\xa7\xce\xc6\x28\xc8\x08\xed\x12\xae\x3d\x3e\x02\x19\x8c\x7e\xef\xf0\xc5\x38\xa6\x14\xe2\x80\x31\x33\x25\xa4\xc9\xc0\x55\xb0\x9b\xb8\x5a\xbf\xe6\x16\xb3\x07\x4d\x5e\x2f\x11\xcf\xa9\x94\x2e\x8a\xa6\x2d\x1e\x9a\x42\x7d\x8b\x2d\x24\x6a\xdb\xe4\xd0\x36\x74\xf7\xb6\x2e\x0b\x86\xce\x52\xb2\x39\x13\x29\x7e\x7d\xaa\xa7\x27\xac\xf3\x3d\x24\x6e\x36\xeb\xc4\x02\xbd\x78\xfd\x62\x8e\x6e\x69\x4e\x33\x5c\x66\xdb\x56\xc8\x4f\xf3\x5c\xc8\x7f\xe4\x26\xa2\x53\x18\xbf\x7d\x81\x5e\xf2\x52\xcf\x28\xc1\x0c\x65\x04\x6f\x88\x4b\x3f\x50\xdc\x64\x8b\x48\x5e\xc8\xed\xab\xd1\x30\x1a\x68\xf0\x0c\x2c\x64\x06\xe2\x57\xec\x04\x7d\x5b\x5c\xbe\x90\x65\x45\x5e\x68\xd7\xa2\xf6\x09\x2a\x8e\x2d\x88\x84\x97\x4c\xa8\x17\xdd\x71\x1c\x6a\xa3\xad\x06\x3e\x48\x2c\xa3\x70\x15\xa6\xb5\xb7\xf3\xc5\x93\xde\x08\x08\xac\x7c\x1a\xe8\x11\x9a\xc3\xc9\x27\xed\x71\x51\xda\x81\x6b\xf3\xde\x24\x27\xa7\xa0\xdb\x17\x99\x54\x10\x75\x5d\xbf\x3c\xcf\xf1\xef\x9c\xa1\xab\x1f\x9c\xa7\xe7\xd5\x17\x42\xd4\x28\xb3\x0a\x59\x57\x66\x35\x1e\xa7\x8a\xab\xf8\xf7\xaa\x24\x4a\x78\x01\x49\x43\xe7\xee\xe9\xae\x04\xa4\x7e\x37\x01\xd3\xfa\xaf\xae\xd4\xe8\x88\x20\xe4\xf2\x88\x59\x8a\x16\xd4\x19\xaa\x7d\x49\x66\x1f\xc1\x57\xdf\x14\xab\x50\xc6\x42\x9b\xbe\xfe\x43\x4d\xe7\xc2\xbc\x69\xa2\x37\xd1\x07\xce\xc8\xa9\x3e\xc8\x48\x9d\x64\xfb\x9f\xbf\x94\x54\x92\x51\xf6\x04\xba\x86\x14\xcd\x86\xec\x95\x3b\x81\x79\xbe\x23\x5a\x17\xd2\xd7\x94\x6f\x2f\xa4\x45\xc6\x17\x4e\xff\x38\xc4\xec\x3e\x7d\xbc\x8e\x9a\xdc\xa7\x8f\xd7\x8f\x3f\xb1\x48\x81\xf2\x80\x9e\x86\x47\xf1\x32\xc4\x7b\x18\xa0\x32\x20\x08\x9b\xf7\x94\x45\x54\x1a\xbc\xfa\x5c\x98\x54\x00\x1b\xa9\x71\xbb\xc6\xba\xfd\x68\x5d\xfa\x54\x6f\xb4\xda\xf9\x71\xeb\x53\x41\xca\x3a\xa1\xcf\x55\xad\x44\x97\xc4\x24\x80\xa6\x6f\x5c\x81\xd7\x1a\x9a\xff\xc2\xb8\xc7\xcb\x01\x33\x26\xfc\xf4\x8d\xe1\x6f\x28\x37\xff\xf4\x28\xf3\xa5\xf6\xe2\x53\xe6\xfe\x34\x0e\x76\x83\x69\x86\x17\x34\xa3\x52\x87\xfa\xbc\x9a\xb7\x9a\xc8\xea\x4a\x89\xa3\x15\x0c\x81\xf6\x89\x48\x31\x04\x1a\xda\xa4\x43\x97\xc6\xad\x69\x87\x0b\x6b\x82\x5c\xff\xe1\x6b\xcd\x31\xc7\xd1\x07\x3e\x7d\xbc\xde\xeb\xda\x53\xbc\x01\x7e\xed\xa9\xa7\x7b\xaf\x3d\xfd\x87\x5b\xdb\x6b\x60\xbc\xd0\xa6\x5f\x64\xf3\x51\x6e\xbe\x7f\x1e\x1a\x82\x86\xeb\xb6\x56\x2b\xbd\xf4\x5b\x3f\x49\xd3\x5a\xca\x84\xdd\xd1\x5b\x00\xab\xb1\x9d\x6f\xcc\x8d\xac\xf6\xf2\x1f\xa3\xf1\xda\x20\x0e\xa0\x19\x49\xd4\x82\x34\x07\x46\x81\xc8\x92\x83\x08\x9a\x0d\xb6\x87\x1f\x71\xd3\x9f\x7a\x2a\x13\x52\xac\x97\x83\xd4\xdd\x5a\xf8\x05\x29\xd6\x6f\x3b\xa1\xc3\xba\x18\xe2\xdb\xdb\xdd\x42\xf7\x7a\x93\xc7\xb1\x0e\x2e\x72\x0f\x39\x85\x90\xda\x8e\x43\xad\xbc\xdf\xdb\x77\x4d\x01\xe5\xdd\x6a\x8f\xa3\x44\xe9\x3e\x1c\x53\x22\xcb\x20\x7d\x4a\x95\x2c\x40\x42\x59\x54\x6c\xce\x78\xd6\x41\x28\x9d\x65\x28\x8d\x4a\x17\x13\xb7\x55\xd4\x5d\x34\x4c\xc9\xb9\x3c\x45\x25\x0e\xb6\xa5\xd4\xfd\x58\xb4\xe5\xaa\xca\x32\x43\x60\xb2\x24\xe4\xd4\xb7\xd8\x9c\x3d\xfd\xcd\xef\x2d\x2f\xc0\xc0\x47\x57\x07\x2a\xf9\x38\x2d\xb6\xf9\x49\x08\x30\xe6\x9e\x18\xbb\xec\xc7\xf0\x7b\x5b\xbf\x3d\x54\xa4\x76\x14\x0f\x4b\x5e\xea\x42\xef\x6d\x8a\xa9\xab\xd3\x56\x82\x94\x73\x7b\x13\x1d\xa8\xac\xf6\xbe\xe8\x0c\xdd\x51\x90\x40\xf4\x71\x64\xda\x52\x98\x75\x36\xb5\x93\x7d\x22\xea\x61\x7a\xb5\x30\x77\xb0\xab\xed\x87\x51\xb5\x2c\xa7\xa3\x0c\x1a\x23\x07\x09\x3b\x7f\xde\x21\xe7\xb1\xe1\xe6\xa0\x50\xf2\x43\x86\x6e\x86\xca\x51\x8e\xdc\x0f\x65\xdd\x70\xad\x5d\x9c\xf2\x14\x6a\x6b\xd5\x85\x2b\x9f\x92\xe7\xed\x29\xcc\x05\x8a\x4d\x86\x05\x35\xca\xd2\x61\x6c\xb7\x31\x7d\xa1\x9f\x6d\x4b\x6a\xe6\xfd\x6e\x30\xeb\x68\x26\x6e\x28\x90\x15\x74\xe0\xf3\xad\xf8\x2d\x9b\x99\xaf\xcf\x0a\x40\xfb\x81\xa7\x70\x71\x3e\x9d\x49\x0a\xd2\x24\xe0\x31\x1a\x04\x00\x9a\x03\xec\xbd\x53\xe8\x28\x6c\x3d\x12\x3e\x61\xf2\xd5\x44\x89\x40\x47\x08\x09\x13\x07\x61\x2f\x75\xc3\x77\x9c\x4e\x1e\xac\x0e\x8a\x4b\x9c\x13\x49\x4a\xcd\xb7\x35\x51\x26\x9c\x31\x9d\xf5\xcf\xd1\x4f\x05\x61\xb7\x12\x27\xf7\xa3\xf6\xfa\xe3\x2d\xfe\x6c\x6e\xf1\x78\xbf\xa0\xbd\x44\x68\x5a\xef\x7f\xdd\x1c\xd7\xf3\x56\x53\x66\x2f\x9d\x2f\x79\x92\xbe\xb0\xaf\xcf\x54\xcc\x7b\x8f\x07\xfb\xee\xb5\x2d\x2c\xee\xe9\xce\xd5\x5d\xff\x1c\x55\xde\x2c\x5c\x85\x0e\x72\x08\x81\xa5\xc8\x26\x94\x21\x33\x37\xee\x28\x6d\x44\x96\x20\x83\x35\xdb\x83\x96\x1f\x6b\x95\x17\x0b\x4d\x13\x58\x7a\xcc\xab\xad\x32\x0a\x11\x58\x76\x6c\xa7\xac\xd8\x28\xd0\xfd\xea\xa8\x1c\x36\x00\x24\x68\xc8\x9a\x50\x62\x2c\x88\x80\xd1\xf2\x62\xcd\xe1\x8b\xab\x30\x36\xa1\xba\x98\xab\x1e\x16\xd2\x71\xa0\x95\xc5\xa6\xce\x78\xb4\xaa\xd8\x4e\xd5\xb0\x71\x99\x00\x50\x51\x6c\xb7\x62\x58\xc0\x10\x48\x9a\x4d\x19\x28\x28\xd6\x53\x30\x6c\xdc\x5a\x3b\x5a\x4c\x6c\xb4\x58\x58\x70\xae\xbb\x85\xc4\x60\x85\xc2\x00\x36\xdd\xe8\x02\x61\xa0\xf2\x5f\xf0\x24\x7e\x50\xd9\xaf\xbd\x4b\x7e\x45\x64\xb8\xc3\x4a\x7d\xc5\x96\xf9\x32\x05\xbc\x82\x60\x11\xb0\xc4\x57\x6c\x51\x06\x14\x28\xef\xb5\x53\xb8\x0b\x00\x31\x58\xda\xab\x7b\xc5\x00\x60\x86\x2e\xa1\xbe\x8b\x06\x82\xd4\xc8\x92\x5e\x71\xe5\xbc\x62\x4a\x79\xc1\xca\x78\x45\x95\xf0\x42\x39\x0e\x75\x3f\x46\x96\x00\x20\xe5\xbb\x22\x2a\x6e\xc1\x4a\x77\x79\x0c\x0b\x38\xcd\xa8\xb2\x5d\x11\x05\x67\x20\xe5\xba\xc2\xa5\xba\x00\x65\xba\x80\x55\x32\x20\x8e\xb2\x90\x96\xfa\x7c\x35\xd4\x83\x6b\xa7\xa0\x9d\x86\x94\x32\x0b\x96\x31\x6b\x04\x36\xaf\x92\x99\x66\xcd\xe3\xc2\x3a\xa4\x8a\x19\xc4\x0c\x13\x56\xfe\x04\x85\xa9\x7d\xb7\xd7\xe8\xe5\x85\xcb\x1c\xaa\x13\xa4\xaf\x99\x24\xe5\x12\x27\xe4\x95\xaf\x0e\x86\x62\xb2\x5c\xbe\xcb\x1a\xb3\x34\x33\x06\x4a\xcc\x10\xf9\x2c\x49\xc9\x70\xa6\xbf\x95\x96\x74\x43\x4a\xf4\xf2\x3c\x2b\xd6\x18\x2d\x09\x96\x55\x39\x6c\x4a\x03\x29\x89\x1a\x22\x3c\x02\xc6\x4c\xc0\x4a\xb8\x7e\xcd\x79\x6f\x7a\x7a\x21\x66\x15\x01\x7d\xce\x2f\xe1\x7d\xc1\x99\xbe\x7b\xf4\x45\xb7\xe5\x55\x69\x1d\x05\x4d\x2b\x99\x52\x29\x7d\xfa\xa3\xa3\x50\xb1\xb0\xdd\x87\x49\xa9\x0b\xf1\x9a\xb7\xb3\x4a\xfd\xb0\x77\x0c\xe0\xc1\x22\x2a\xbd\x98\xc7\xa8\xbc\x97\x65\xa7\x4d\x8a\x5a\x9c\x76\xe2\x35\x5d\xbb\x0b\x2c\x8c\x71\x27\x28\xf8\x7a\xd5\x07\xbc\xfd\x33\x22\xbf\x16\x5d\x52\x22\x49\x99\x9b\x54\x5a\x58\x30\xbd\x9f\x2c\xc4\x11\x2e\x8a\x6c\xb4\xb9\x11\x08\xe9\x8c\xa7\xe4\xa6\x5a\x64\x54\xac\x6f\xa3\xed\xa7\x1f\x7a\x5e\x36\xf1\x22\x5d\x9f\x2a\xc4\x89\xba\x63\x6f\xed\xef\x7b\xa3\xa5\x67\x2c\x82\xe6\x8c\xee\xc9\xe1\x3a\x93\x27\x23\x92\xd4\x7f\xf2\xe6\xff\x33\xa0\xad\x18\x4b\xf5\x1b\x9f\x58\xe1\xbf\x83\x12\x9c\x65\xc2\x4a\xa0\x46\x8f\xa6\xa2\x66\xe6\xe3\xa4\xa7\x40\x6a\x95\x6a\xe1\x28\x8d\xea\x62\x45\xae\x7a\xa3\xa8\xaf\x7e\xdb\xed\xc7\x95\x4c\x1b\xb7\x93\xb4\x10\x29\x50\xce\x4d\xca\x19\x43\x9c\x39\x00\xa7\x08\x67\x99\xfb\x4e\xd3\xb3\x68\x7c\xb6\x25\xb1\x07\xe0\x10\x75\x0c\x8f\x46\xec\xde\x71\x48\x23\x76\xb4\x8b\xe9\xb6\x4e\x86\xc7\xfa\xe5\x99\x8e\x4e\x76\x1d\x4e\xb0\xcb\xb2\x0a\x9e\x68\x77\xf1\x4c\xf7\x53\xc5\x64\xef\x9c\x4b\x59\xd2\x45\x25\xc7\x29\x0e\xa7\x29\x35\x67\xf2\x06\x48\xa1\xc0\xad\xe8\xa9\x68\xd6\xcc\x48\x8b\x26\x44\x58\x2e\x34\xb3\x8a\x6f\xe2\x9d\x92\xc0\x4d\xa2\xf4\xd0\xfa\xdc\xed\xf2\xb5\xe6\x72\xd7\xf7\xba\xf9\xf1\x64\x1c\x68\xca\x93\x4a\x29\x3b\xcd\x7e\x36\xae\x5b\x13\x51\x1f\xde\x99\x51\xca\x03\xc4\x55\xeb\x79\x4e\x95\x21\x53\xfe\xc0\x1e\x70\x99\x9e\xdf\x0c\x26\x86\xb4\x45\xab\xe6\x79\x5f\x6a\x74\x60\x74\xf1\x48\xbc\xe0\x95\x74\xa1\xcf\xe3\x82\x64\xc7\xd7\x70\xf4\x29\x0c\x21\xeb\xe8\x53\xf8\xc3\xf9\x14\xd4\xd3\x46\x84\xcb\xa8\x90\xea\xb6\x6d\x9d\x12\x6b\x87\x53\xd8\x39\xa0\xf1\xd6\x3b\x9f\x86\x7f\x76\x73\x1c\x3c\xf1\x2f\x74\x7d\x72\x4b\xf5\xcd\x2e\x7a\x02\xa5\x3d\xde\xe6\x8a\x3e\x90\x19\x58\xc3\x02\x14\xc4\x1d\x0e\xb5\xbe\x25\x99\x12\x3e\x50\xc7\x0d\x53\x70\x40\x7d\x76\x64\xca\x80\x62\xc6\xb8\xe1\xe7\xe2\x14\x65\x78\x41\x32\x71\x6a\x74\x48\x45\xaf\x4d\xd5\x4a\x48\x03\x21\xd4\x5c\x07\x00\x83\x63\x5c\xab\x8c\x46\x26\x9a\xd0\x11\xc0\xbe\x59\x97\x38\x4f\xd6\x24\xc7\xfa\x3f\xdf\x2a\xbc\x05\xca\x7a\xf9\x83\x0a\xa4\x44\x10\x49\x4c\x12\x3d\x29\x73\x81\xf8\xf2\xb4\x95\x4d\xf5\x62\xf3\x3a\xd8\xe3\xd6\x8c\xc8\x8e\x1c\x4b\x37\xd9\x09\x28\xb8\x69\x19\x51\x15\xb1\x48\xa5\x2d\x28\xfa\x81\xf8\xfa\x9a\xd1\x78\xa1\xf4\xb1\x36\x98\xfd\xc2\x9d\x06\x96\xe0\x5d\x8c\x68\x24\x70\x74\x8a\x1c\x9d\x22\xcf\xca\x29\xe2\x31\x7e\x7d\x9a\xa9\x70\x0d\x5d\x3c\x47\x09\x00\x09\xbe\x85\xd0\xf9\x53\xbc\x62\xb5\x46\x8c\x73\xae\x12\xeb\x27\x81\x5c\x27\x65\xbb\x11\xd4\xc9\x7c\x7e\x72\xe2\xfc\x2b\x96\x98\x2b\xb9\x9c\xfd\x0d\x11\x96\xf0\x34\x5c\x3d\x54\x8d\x3b\x3d\xc7\x52\x48\x2d\x1a\x34\x3a\xbc\xef\x1a\xca\xdd\x7c\x61\xed\xa6\x5c\xc3\x29\x3d\xbf\x30\x09\x44\x30\x2d\x57\xbf\xe1\xed\xc4\x8b\xbd\xb9\xce\x1d\x24\xb7\x60\x50\x21\x2c\x37\xf4\xbd\xee\x20\x08\x94\xd1\x9c\xea\x6c\xcf\x54\xf3\x54\x22\xa4\x40\x2f\xcd\x8f\xf3\xa4\xa8\x20\x3c\xc3\x3e\x9d\x93\x9c\x97\xdb\xd3\x1a\x8c\x7a\xbd\x05\xd7\x3e\x11\x2e\x37\x6a\x4c\x42\xb6\x00\x60\xb6\x7d\x44\xb9\xa1\xc6\x1c\xa4\xb2\xaa\x19\x9d\xe8\xef\xda\x93\xa0\xed\x4e\xf5\xbd\xa4\xd5\x5f\x1b\x0d\x0f\x2b\x4d\xdf\x38\x6a\xf4\xbb\x84\x6d\xd0\x06\x97\x02\xd6\x6d\x29\x52\x54\x48\xe9\x86\x0a\x0e\x22\x97\x41\x4b\x8e\x22\x3c\x5e\xc9\xa2\x92\x96\x0f\x5a\x6a\x04\x2e\xd6\xd6\xfc\x6a\x28\xb1\x23\x25\xbd\x1e\x0f\xb9\x76\x23\x72\xe1\xee\x6b\x53\xb6\xba\xe1\xaf\xf5\xf9\xab\x85\xa4\x47\xd8\xa5\x18\x09\x07\x54\x1a\x06\xc5\x08\x38\x50\xd7\xf0\xd3\x39\x7e\x83\x80\xb4\xa1\xfb\x92\x02\xd3\x36\xae\xec\xd3\xed\xe8\x4f\x49\xf2\x82\x97\xb8\xdc\xa2\xd4\xda\x16\xb6\x11\xc9\xb5\x5e\x76\xed\xde\xd5\x76\xf4\x6a\x52\x5a\xee\x93\xb9\x91\x93\x94\x56\xa3\x7d\xa9\xdb\x38\xf9\x45\x97\x8f\xb3\x65\xe9\x5c\x01\x0b\x03\xa4\x6e\x3a\x8e\x93\xfb\x70\x97\xbe\x1a\x79\x3b\xd5\x61\x5f\xbc\xb0\xbe\xaa\x9c\x60\x56\x4b\xbf\xda\x33\xc9\x53\x72\x12\xb2\x30\x5a\x40\x66\x4e\x9e\x49\x89\x59\x37\x87\x8d\x93\x78\x69\x1f\x7c\xa5\xc4\x8e\xf7\xfa\xd6\x79\xd4\x72\x72\xa1\xcd\x42\xe0\xec\x43\xfa\x3b\x79\xa7\xae\xd3\x88\xda\x6d\x5c\xe2\x0c\x61\x9b\x14\xbe\x44\x19\x4f\x70\x56\xef\x9e\x7f\x1f\x85\x1d\xbb\xf5\xa1\x70\x86\x76\xb5\x7b\x6a\x4e\xe6\x8e\xd7\x06\x9c\x4c\x18\x1f\x21\x4d\xf0\x62\xd4\x5a\x63\x92\x43\xcd\x9d\x5f\xef\xd8\x9d\x2e\x74\xf7\x99\xe6\x55\x8e\x2a\xa1\x66\xc8\x59\xfb\x99\x51\x88\xf5\x04\x1f\x5c\x0b\x7c\x9d\xf6\x4c\x99\x06\xd8\x56\x85\x74\x5d\x76\x87\xcf\x71\x47\x61\xad\xb4\xea\xdc\x15\xa7\x44\x88\x4a\x8b\x94\x76\x76\x56\x50\xe2\x4b\xed\xe1\xaa\x05\x87\x71\x82\xd5\xe1\x81\xba\x6e\x65\xe7\x1c\x30\x9a\xb5\x0f\x82\xab\xdc\x98\x05\x67\x4b\x05\xaa\x98\x8d\xaa\xd8\x61\x33\xfd\x84\x5b\x09\x52\xce\x56\x15\x4d\x0f\x4e\xb2\x41\xae\xbc\x4c\x40\xfc\xf8\xed\x45\x9b\x11\xbf\xa5\x8b\x92\xa0\x8b\x35\x66\x8c\x64\xde\x85\x6b\x02\x2e\x06\xe7\xdc\x5f\x78\x34\x50\x77\x34\xe4\x4b\xde\xb3\x66\xc9\x1f\x27\x7f\xee\x4b\x97\x74\xfa\x43\x95\xd9\xcc\xaa\x88\x02\x9b\x8d\xe5\xe7\xed\x85\x2b\x73\x9f\x55\x0c\xb1\x2a\x5f\x90\xd1\x33\xf8\xa5\x4b\x41\x3e\x87\xe4\xc0\xfd\x73\xf8\x0c\xca\x7f\xf9\xe5\x43\x44\xcd\x92\xbe\x3d\x7b\xe0\x65\x96\x3e\xd0\xd4\xf5\xcb\x7a\xa9\x40\xbe\x7a\x3e\x45\x44\x1e\x1e\x68\x3a\x75\x89\xae\xd3\x95\x5a\x22\xd2\x6b\xac\x1b\x6c\x04\x6e\xb9\x97\xfa\xb3\xaf\xd0\x15\xd5\x76\x3d\xfd\x2f\x63\xf0\xc9\x17\x94\x61\x57\xde\xa5\xd9\x84\x60\x4f\x62\x75\x36\x9c\x89\x53\x10\x79\x8a\x16\x95\x35\x3a\x71\xb9\x46\x82\xe6\x55\x26\x31\x23\xbc\x12\xd9\x76\x94\x3c\x9e\x12\xfd\xe1\xbb\x30\x23\x9f\xc7\x5b\x26\xb5\xef\xc4\xfa\xf1\xf6\xdd\xb8\x22\x8c\x94\x34\x71\x1b\x06\xae\xca\xad\x23\xd0\x04\xe5\x8c\xa4\x67\xf5\x45\x69\x3a\x64\xe9\xa8\x45\x92\xe8\x1e\x0b\x29\x2a\xb2\x6a\x45\x07\xad\xf6\x4f\x1a\xa3\xd8\x44\x59\x41\x3a\x39\xfa\xd1\x89\xfb\xf2\xf7\xaf\xbb\x10\xa3\x2f\x8e\x7a\xd7\x69\x4a\x0a\xc2\xd4\xe1\x65\x1e\xf5\x8d\xcb\xce\x1a\x05\x7b\x63\xdb\xfa\x02\xbe\x7c\xa0\x8d\xc7\x13\xaf\x3e\xcb\x12\x2b\x26\x96\x2b\x89\xd1\x79\x2b\xe8\x12\x61\x36\xce\x74\x1e\x27\x88\xea\x2b\xb9\x8a\x1f\xb1\xc0\x4e\x74\x0c\x63\x30\x18\x14\x12\x66\x6a\xb8\xa5\x3d\x08\x2e\x60\x73\x38\xf8\x12\x60\x7c\xf3\xb3\xf9\x3a\x01\x9a\xc3\x41\x98\xe3\xcb\xee\x0d\xd0\x14\x3d\x21\x60\x9d\xd5\x1c\xcb\x0a\xa0\xe7\x1f\x91\xf9\xd8\x71\x71\xcb\x8c\x27\xf7\xc0\x7a\x38\x6f\xcd\xb3\x1d\x6d\xde\xfe\xd8\x2d\x88\x33\x12\xef\x3e\xa4\xbd\xdb\xf3\xe5\x5d\x54\x3a\x50\xc3\x7e\x40\x1d\x8b\x92\x67\x23\xcc\xc7\x94\x31\x5d\x10\x75\xf4\xcb\x8a\x8d\xd4\xdf\x00\xc9\x39\x58\x62\x11\x59\xa4\xb3\x5b\xe3\x5a\x10\x69\xa2\x39\x75\x19\xbf\x9c\x48\xac\xcb\xf8\xce\xfe\x1e\xce\x9b\xb0\xab\x77\x50\x96\xbc\xac\x31\xe1\xec\xb5\xda\x3b\x28\x68\x4a\x2c\xfc\x54\xed\x8b\xae\x43\xbc\xef\x95\x6d\xbf\xfa\xe9\x53\x44\x35\x0b\xf5\x70\x67\xed\x76\x43\xb5\x55\x4b\x57\xc0\x6f\xb4\x8e\xf1\xb5\x2f\x3d\xc2\xb2\xb0\x1e\xd9\x96\xb5\x4a\xc8\x4d\x5d\x94\x1f\x5c\x54\xfe\xe4\xc7\x8b\xab\xf6\x6b\xed\xc3\xf1\xe3\xc5\xd5\x57\xd3\x5e\x67\x95\x90\xa6\x6d\x41\x4a\xc5\xfd\xb1\xb7\x4e\x33\xfe\x49\x7a\xeb\xec\xd0\xc0\xd7\x62\xf1\x3b\x36\xd6\x19\x97\x83\x9f\x49\x63\x9d\x27\xa5\xed\xa7\x33\xdd\x16\x69\x94\x94\xe1\xfa\xc9\xf8\xc6\x94\x9b\xcb\xc6\x93\x42\x99\xba\x78\xe6\xba\x7c\x70\x88\xf8\x5a\x05\xa7\x5c\xe3\x0b\xfd\xf6\x53\xa2\xf3\x91\xaa\xdf\x45\xe9\xc3\x21\x67\x5f\x4b\x57\xde\x55\xd3\xbf\x04\xc2\xf6\x6d\x55\x60\xe8\x6e\xb2\xc8\x44\xe5\x47\x52\x0c\x96\xfc\xed\x08\x4a\xe6\xe1\x8e\xb5\x93\x4a\xf5\x03\x17\x54\x47\x63\x60\xa9\xcb\xaf\xb8\x3e\xb4\x23\x84\x60\x6c\x9d\x73\x74\x79\x75\xf3\xf1\xea\xe2\xfc\xee\xea\xf2\x0d\x72\x5f\xa0\xbe\x20\x3c\x47\x77\xbc\x31\x8e\x8e\x68\x24\xb5\xd3\xd7\xc4\x08\x36\x73\x3b\xb5\xac\x17\xb3\xc6\x43\x6d\xda\xe9\x32\x74\xcd\xa8\xac\xa3\xc4\xc6\x45\xbb\x24\xe3\xcc\x46\x56\x29\xa8\xd6\x36\xbb\xa2\xf2\xd4\x08\x72\xb6\x93\xc2\x9a\xb4\xbf\x32\x02\x94\xa0\x1b\x13\x97\x52\x4f\x7d\x50\xa3\x07\xa9\x3b\x2e\xae\x03\xde\x37\xc7\xf8\x4d\x9a\x68\x1a\x73\xef\xd4\x41\xa4\x2e\x26\x34\x70\x13\x74\x2b\xfc\x20\x75\x13\x9e\xcc\x4f\x9c\xf0\x95\xd5\x95\x9a\x5c\xf0\xb2\xfb\xe0\x28\x58\x17\xd6\xac\x5e\x6c\xd3\xd9\x1c\xa1\x9f\x94\xaa\xff\x40\x05\x39\x55\xd2\x13\x30\x8a\xda\x9b\x82\x06\xee\xc7\xbc\x76\x28\xd9\xfe\x2a\xaa\x05\x74\xb2\xb6\xd9\xbc\x69\x96\x1d\xea\xc5\x0e\x64\x97\x6e\x3a\xe0\x1d\xfd\xd8\xac\xe0\xd3\xc7\x77\xfb\x4f\xc0\x9c\x3a\xf0\xe7\x2f\x78\x9e\x53\x89\xd6\x58\xac\xeb\x3a\x03\x4d\xfc\x46\x7d\xea\xf7\x9b\x57\x98\x2b\x36\x88\x9b\xcc\x19\x4d\x79\x03\x60\x3f\x88\x93\x1f\xdd\xe3\x1d\xe5\xb1\xfe\xd9\xef\x0a\x31\xb8\xfa\xba\x5b\x44\x5c\xe0\xda\x50\x99\xe7\x7a\x0d\x87\xa9\x34\xec\x3a\x2a\x47\x78\x30\xaf\xdc\x2b\x1f\xbc\xca\x6f\x0e\x8e\x11\x7e\xf4\x72\x53\x22\x31\xcd\xc6\x2d\x7d\x0d\x2e\x25\x2f\x78\xc6\x57\x71\x55\xd6\x7b\x90\xf1\x8d\x89\x9a\x9f\xe1\x99\xc2\xf2\xfe\xfa\x47\x4c\x87\x08\x97\x04\xa0\x10\xd2\xac\xac\x96\xc1\x75\xdc\xfd\x61\x2a\xf2\x3f\xfa\xc2\x0f\x2c\xd4\x75\xb1\x11\x12\x7f\x17\x4d\x63\x0d\xcd\x83\x9b\x0c\xf6\x82\x94\x39\x15\x8a\xe1\xb4\xa5\xbd\x51\x88\xc3\x92\xe0\xe3\x21\x78\x5f\x21\xb0\x3e\x99\xc3\x62\xe2\x70\x20\x70\x90\x15\x2a\xae\x34\x96\xb8\xb6\xdb\xc8\x50\x13\x77\x8b\x11\x16\x25\x99\x91\xcf\x54\x68\x9b\x8a\xce\x5b\xe1\x25\x40\x0a\xf0\xbb\xe8\x38\xc3\x99\x33\xb3\x99\xb7\xb3\x6d\x27\x4e\xcc\x93\xa5\x06\xc1\x3a\x93\xa6\x76\xd5\xe3\x2c\xdb\x9a\xe2\xbd\x3a\x27\xde\x98\x31\xf0\x4a\x4f\x9c\x97\xd6\xa5\x50\x94\x74\x43\x33\x32\xd6\xaa\x4d\xae\x29\x5b\x89\x26\x77\x1f\x67\x19\x7f\x20\x36\x55\x8f\xec\xac\x43\x91\x98\x90\x90\x48\x45\x7d\x3e\x3e\xfc\x74\x87\x18\x51\xe0\xd6\x54\xec\xad\xa8\xa8\x89\x8c\xc6\x86\xcf\x66\x33\x6d\xfb\x79\xf9\xdf\x4a\xe6\x4d\xb3\x57\xe8\x17\x62\xbf\xaf\x14\x00\xc5\x11\x12\x89\x1e\xd6\x5c\x6b\xfb\x95\xb0\x6b\x0b\xef\x68\x6e\x1a\xcc\x62\x96\xba\xb7\xcf\x14\x04\x25\x6c\x9a\x2b\xb2\x05\x47\xd7\xa4\x10\xa8\xf1\x9e\xee\x25\x1f\x4f\xe0\xd0\xce\x18\x5e\x0b\xc8\x1e\x45\x3a\xdf\x5f\xc0\xec\x62\xf8\x3c\x46\x62\x9b\x67\x94\xdd\x9f\x22\x2a\x1d\xcb\x53\x14\x62\xc3\x4a\xd9\xbd\xa3\xdf\x92\xe0\x61\x0f\x89\x03\x79\x30\x0a\xd8\x9b\xfb\xcb\x28\x23\xf0\xdd\xb6\xd0\x71\x22\xa8\x66\x13\x36\x84\xc6\x57\xc6\x5f\xbc\xd0\xab\x0b\x68\xf3\x5f\x78\xe5\x00\xd5\x7c\x0f\x9e\x4b\x05\xb4\x62\xda\xc9\xf5\xed\xc5\xed\x75\xa7\x35\xa0\xf9\xad\xe5\xb6\x98\x18\x9c\x0b\x88\xce\x1d\x55\x70\x87\xdc\x16\x43\x97\xa9\x5e\xf8\x61\xe4\xd5\x64\x8d\x8b\xf3\x4a\xae\x2f\xa9\x48\xf8\x86\x44\x28\x51\xae\xb4\x9e\x75\x1c\x20\xea\xd0\x69\xe0\xa0\x8b\xff\x38\xbf\x81\xf7\x0b\x82\x05\x5e\xb8\xd9\xde\x12\x11\xa5\x71\xf5\xcf\xd5\x42\x79\x94\x99\x1e\x1d\x3f\x7f\x48\xc7\x8f\x3e\x59\x5f\x8b\xb3\x87\x32\x2a\x29\x96\x3c\x98\x19\xda\xb6\x4e\x54\x42\xf2\xdc\x1e\x91\x6b\x07\x42\xbb\xfc\xf5\x65\xde\x82\x3a\x7e\xfd\xb4\x2a\x7a\x53\x7d\xc7\x27\x82\xd6\x75\x2a\x3b\x41\xb0\xa7\x88\x91\x07\xf3\xdd\xc0\xad\xe6\xde\xff\x77\x1b\xd2\xac\xe8\x17\x67\x7f\x7f\xf3\xef\xf6\xb8\x28\x9d\xf9\xef\xb5\x65\xcc\xa6\x7d\x8f\x2b\x34\x75\xb9\x47\xdd\x97\x64\x7f\xf3\x0b\x42\xf4\x37\x38\x7f\xb2\x26\x46\x83\xf3\xff\xac\x70\x66\x70\xf6\xe1\x10\xf6\xb1\x36\xce\xc1\x53\x72\xfb\xef\x70\xfd\xa1\xb6\x43\x54\x82\xe8\xfb\xd3\x3c\x21\x4b\xcc\x84\xda\x80\xf1\x73\xe9\x8b\x2e\x27\xd6\xe5\x77\x82\x5e\xca\xa4\x00\xd4\x3a\x3b\x60\x1a\x83\x99\xb4\xc5\xf7\xbb\x3a\x7d\x61\x6c\x0e\x07\xf6\x81\x69\x5a\x85\x9b\x87\x5a\x13\xbe\xd1\x2f\xa3\x77\x54\x48\x13\xff\x6a\xa0\xe9\x96\x7a\x34\x58\x21\x42\xc9\x3c\x37\xba\xf8\x6d\xf1\x2b\x4e\xd3\xf2\x8d\xb9\x0b\x5d\x49\x9d\x52\x6b\x8c\xdc\xd6\xcb\xc5\x0c\x54\x78\xf3\xa5\xdc\x16\x34\xd1\xea\xe1\xdd\xc5\x8d\x86\x22\xd0\xdf\xbe\x37\x35\x3c\xfe\xfa\x97\xef\xbf\x1d\xdd\xde\xa7\xcd\x2c\x88\xb6\xc1\x3c\xa9\x5f\x6d\x6f\x91\x23\x3e\x2a\x55\x0b\x3e\xb7\x4d\x9f\x46\x7b\xa2\x0d\xad\xa9\x0d\xac\x79\xfd\x38\x5d\x41\x45\xa7\x63\xb4\xe5\x33\x89\xb6\x74\xd9\x44\x86\x9f\xec\xc3\x8b\x0c\x1b\xba\xe9\xb0\x21\x14\x88\xe5\x9d\xc2\x86\x3c\x56\x33\x2e\xa0\xc5\xb3\xa1\x83\x68\xb2\xf4\xb7\xa1\x35\xcf\xd4\x0d\x35\xf8\x37\x7f\x27\xa6\x6a\xc2\x0c\xea\x82\xf9\xd0\x69\xc8\xcd\xd0\x87\xc1\x6e\xdc\xd6\xbf\x32\xac\x0b\x77\xfd\x2e\xfb\x0a\xdf\x6c\x39\x58\x2a\xe4\x91\x2c\x57\xce\x4c\xaa\xf4\x74\x3f\x51\x45\x21\x45\x90\x52\x17\x11\x7d\x44\x2b\xcb\xc8\x82\xd1\x17\x72\x2c\xa8\x95\x1b\x6c\x84\x7c\x00\xf1\x2e\x85\xf0\x45\xb7\xb7\xfe\x06\xc2\x68\xf8\x22\x2d\x63\x32\xbf\x4e\x6e\xf5\xf3\xce\x51\xa5\xce\x8f\x89\x58\x2a\x15\x9f\x53\x1c\x8e\x08\x01\xa9\x2c\xd3\xa5\xba\x2f\x4a\x59\x7b\x99\xee\x66\x76\x1d\x53\xf9\x59\x13\x20\x64\xa4\xa6\x8b\x0c\xd3\xc1\x22\x20\x9d\x73\xdd\xf7\xaa\xf9\xcf\x5b\x63\xe3\xf3\xf9\xdf\xc8\xb1\xf2\x12\x73\x30\xea\x85\x5a\x87\x3f\x60\xab\x73\xea\x42\x92\xc3\xf4\x3d\x71\x4f\x1b\x64\xcc\xdc\xf6\x36\x3f\x99\x5f\x12\x35\x9d\xbd\x98\xa7\x86\x10\x17\x9d\x77\xe1\x5e\xe9\x26\x3d\x0e\xa0\x2b\x24\x20\xef\xa2\x12\x61\x51\xd7\x25\xad\xac\x79\xc4\xeb\xdd\xf0\x08\x9c\x79\x6f\x5c\xa3\x47\xe3\xdb\xbf\x1c\xb2\x1d\xed\xa5\xcb\x9b\x3c\x84\xea\x11\x66\x15\x35\x75\x4d\x66\x08\x6b\x2e\x39\x9b\x90\xb9\x70\xd3\xf3\x62\xdb\xeb\x6a\x9e\xb8\x30\x59\x37\xd9\x98\xe6\x5e\x03\x31\x01\xa4\x7e\x4f\xec\x60\xef\xeb\x3d\x8e\xe6\xd7\x9d\xc5\x7b\x40\xeb\x2f\x2c\x02\x25\x8d\xc8\xf5\xb9\xbe\xb4\x22\xa2\xcb\xe7\x11\x96\x5c\x50\x43\x2f\x1e\x5d\x8c\xae\x3b\x90\x46\x70\x98\x2b\x39\x9d\xde\x7a\x56\x6d\xf2\x03\x2f\x63\xb2\xfb\x6f\x5a\xaf\x74\x82\x19\xec\xdf\xba\x09\x73\xc3\xea\xc4\xf3\x3a\x45\xb7\xda\x0b\xeb\x2d\xa9\xcf\x7d\xe2\xce\xd6\xb8\x48\xdb\x73\xec\x40\x47\x6b\x14\x6a\xcf\xb1\x33\x47\xeb\xb0\x8d\xe0\x9f\xfc\x9a\x0b\xe4\x85\xb7\x6d\x72\xa3\x2b\x39\x60\xff\xf6\x98\x96\x1b\x11\xec\xe5\x67\xfb\x82\x4d\x1b\x54\xfb\xd5\x30\x1a\x5c\x1f\xaf\x70\x8c\xd7\xb3\xe8\x5d\x5d\x37\x93\x05\xf1\x0e\x53\x4e\x7f\xc9\x4b\x9d\xcc\x4d\x4d\x03\x9e\xa6\xa6\xab\xcd\xee\x3e\xb5\x1d\x56\x72\x5c\x8c\xd4\x20\x55\xac\xc3\xaf\xc5\xbf\x07\x9b\x98\xd2\x6a\xe2\x7d\xa8\xbf\x84\xdf\x43\x02\xc8\x2a\x46\xfa\x4b\xec\x74\x8c\x18\xbf\xc3\x87\xba\x49\x8c\x75\x8c\x08\x29\xfe\x71\xd5\xb0\x43\x3d\x11\x50\x6c\x1d\xec\xa6\xca\xf5\x38\x8b\x24\xa3\xe8\x3e\xac\x5f\xc7\x12\x2e\x98\x68\x5c\x0f\x09\x17\xcd\x6a\x0e\x8f\x42\xdf\x7e\xfe\x92\xf6\x05\x5d\x43\x35\x7b\x62\x4b\x3a\xd4\x27\x15\xe1\x8c\xb3\x15\xa4\x8b\x27\xf7\xe3\x27\x48\x5a\x07\x26\x6c\x8b\x80\x35\x1c\x5e\xcc\x38\xd8\xfb\x7e\x60\x91\x7e\xcd\x8b\xa6\x55\x4d\xd3\x04\x3f\xc5\x72\x58\xcf\x6f\x46\xd3\x79\x38\xf8\x70\x5c\x81\x66\xc0\xa6\xf5\xae\x0b\xd0\xc4\x1c\x04\xb4\x56\xae\x61\xed\xcc\x81\x30\x77\x5a\x88\x0f\x37\x36\x87\x42\x0c\xb5\x3f\x6f\xb7\x38\x07\x42\x3d\x64\x23\xf4\x66\x44\xb4\x44\x8f\xc1\xa7\xad\x49\x0f\x69\x8e\x0e\x9d\x68\xb7\x85\x3a\x92\x43\x6d\xd2\x81\x10\x47\x9b\xa9\xef\x34\x4c\x07\x02\x85\xb7\x55\x8f\xa8\xcf\x3d\xb5\xc1\x7a\x33\x22\x8e\x6e\x74\xd3\x75\x20\x54\x04\x6c\xce\xde\x8c\x38\xee\x64\x06\xa8\x61\x7b\x33\xf6\x6e\xdd\xde\x8c\xc8\xea\xe7\x66\xc0\x3a\x97\x0c\xcc\x77\xa4\x87\x49\x04\x48\xd4\xee\x77\x32\xd4\xcd\x24\x0a\xe2\x68\xe7\x93\xf8\x93\xea\xd6\x1e\xee\x81\x82\x16\x71\x30\xe1\xf2\x5f\x14\x58\x48\x77\x31\x2b\x0f\x46\xc1\x9d\xd8\x6d\xac\x3b\xe2\x7a\xa5\x78\xcb\x8a\xe8\x9a\xd2\x0c\x58\xff\x94\x66\xc0\xdb\xcb\xc7\xed\x89\x6e\x45\x5f\x5f\xc7\xc3\x8d\xe6\xa3\xa0\xb6\x9a\xd2\x0f\xb6\x9c\x8f\x02\x39\xd4\x9e\xde\x5c\xd3\x31\xcd\xe7\xbd\xc5\xc7\x33\x27\x78\xcf\x03\x33\xc2\xad\xe9\xfd\x67\x81\x0d\x70\x50\x5c\x23\x28\xff\x85\xf1\x10\xaa\x66\x40\x62\x74\xcc\x88\x8b\xd4\x01\xae\xee\x89\xe3\x79\xcc\x88\x8d\xea\x01\x82\x85\xc4\xfe\x98\x11\x49\x8f\x90\xb6\xf9\xcd\x88\x6a\xa0\x0f\x15\x3f\xfd\x36\xfb\xb0\x56\xfa\xcd\x80\x59\xdd\xda\x4f\x83\xe8\x1d\xd0\x24\xd5\x7b\x38\xac\x6b\x7a\xf0\xfe\xb8\xda\xe6\x6e\x7b\xcb\x9d\xde\x93\xc0\x4d\x07\xdf\x31\xd3\xc5\xeb\x50\x5b\x4c\x30\x8f\xef\x14\xcc\x1c\x6e\x90\x09\x86\x08\x6f\xa4\xd9\x8c\x29\x22\x3b\xbc\xb9\x66\x33\x80\x6d\x36\xe3\xc4\xe0\xa6\x25\xe7\x70\xc3\xcd\x28\x88\xfd\xcd\x39\xa3\x5a\x68\x35\x63\x0a\x6a\xd1\x84\x76\x9c\xcd\x80\x35\xe6\x8c\x04\x8a\x9a\x46\x9e\x43\x2d\x3a\xa3\x21\x4e\x6b\xe9\xd9\x8c\x49\xaa\x1b\x8a\x6f\xf3\xe9\xcf\x18\xd6\xf0\x33\x1a\x15\x2e\xfc\x64\x7a\xeb\xcf\x66\x4c\x44\x4b\xac\xe0\x88\x22\x1b\x83\x76\x27\x18\x21\x19\xa2\xa3\xca\x7d\x54\xb9\x8f\x2a\xf7\xce\x88\x6a\x5e\x1a\xad\x1f\x83\xda\x98\xc6\x5d\xac\xed\x96\xa7\xfd\x0d\x4d\xa7\xe8\xf1\xbd\xcd\x4f\x9b\xd6\xa6\x71\x84\x7e\xb8\x36\xa8\xcd\x88\x6a\x88\xda\x8c\x49\xac\x3c\xbe\x49\x6a\x33\x80\xed\x52\xe3\x8e\x62\xdd\x5a\x15\xd0\x38\x35\x0a\xb2\xdf\x64\x75\xac\x85\x6a\x9c\xe0\xd5\xd3\x6e\x75\x8f\x66\xaa\xcd\x98\x2a\x09\x4e\x68\xb0\xda\x0c\x58\xab\xd5\x68\x79\xc5\x6f\xcd\xba\x4f\xd3\xd5\x66\x4c\x16\xe6\xa2\x1a\xb1\x7a\xaf\x01\x5b\xb2\x46\xa3\xc6\xb2\x8e\x91\xe6\xac\xd1\x20\x23\x9a\xb9\x7a\x2f\x4d\x45\x68\x5c\x83\xd7\x66\x00\x5a\xbd\x46\xaf\x3c\xa6\x35\x6c\x33\x9e\x54\x02\x06\x37\x8e\xed\xce\x2f\x4a\x00\x8e\x37\xeb\x3e\x17\x53\x6d\x04\x70\x13\x74\x75\x10\x93\x98\x6d\xf5\xa1\xdb\x00\x80\xe8\xee\x99\x59\xc3\x9e\x34\xf6\xc2\xa6\xe0\x2a\x55\x01\x08\x15\x16\x78\x61\x42\x2a\x80\x20\xc1\x81\x17\xe8\x7a\x09\x0d\x15\x38\x06\x5e\x74\x02\x2f\x6e\x6d\x03\x1b\x6f\xb7\x74\x3c\x45\xcc\x5c\x01\x51\x17\x26\x9e\x02\x08\x14\x1a\x75\xa1\xbd\x67\x50\x83\xe6\x31\xea\x02\x30\x8e\x51\x17\x47\x13\x50\xc4\x38\x9a\x80\x9e\xb9\x09\xe8\x18\x75\x71\x8c\xba\x38\x46\x5d\x1c\xa3\x2e\x0e\x1a\x75\x61\x95\x03\x5e\xa2\x50\xbe\x43\x33\x14\xcf\x78\x56\x11\x17\xb6\x69\xdd\x79\x92\xf0\x8a\xc9\x3b\x7e\x4f\x00\x6e\x55\x90\x9a\xb9\x03\x17\xb0\x50\xab\x95\x3e\x92\xce\x89\xab\x94\x2a\xbd\x6e\xc2\xfe\x9f\xdb\x57\x9d\xc2\xa5\x6e\x2f\x96\x92\xb4\x86\x09\xdc\x7f\x7b\xd2\xa5\xc2\xc7\x1c\x9d\xa3\x92\x24\xb4\xa0\x4a\x0f\xd1\xe9\xf9\xfa\x77\x43\x20\xae\x2f\x0e\x54\xab\x91\x82\x64\x4b\xdb\x3b\x84\x79\x7d\xee\x3c\x2d\xc9\x5e\x29\x7b\x4c\xd9\x88\x1d\xdc\x35\xaf\x70\x8d\x00\x4b\xf2\xdf\x36\xa3\x08\xca\x8c\xcd\xfa\xef\xbc\xd9\xb4\x9c\xde\x1a\xc5\xb0\x56\x7d\x3b\x13\xc5\x05\xb5\xb5\x3a\x1e\x83\x87\x90\xcf\x05\x2d\x35\xb1\xdf\x92\x84\xb3\xf1\x86\xe8\xcd\x68\x11\xd3\x55\x17\x86\xa3\x2a\x6b\x5d\x07\xeb\xdc\x69\x55\xd6\x0d\xd0\x37\x38\xa3\x29\x95\xdb\x3a\xa0\xc1\x76\xa3\xc4\xe6\x04\xc6\x6d\xcc\xb9\x68\xf6\x1c\xe1\xa2\x28\x39\x4e\xd6\x44\x78\xab\x3f\x8d\xd8\x6d\x9b\x31\x5c\x67\x54\x99\x2e\xb0\x5a\xf8\xd6\x90\x95\x54\x96\x6d\x51\xc9\x25\x06\xcb\x4d\x3d\x4b\xf4\xa9\xca\x7d\x32\xc2\x72\x63\x44\x24\x59\x6e\x75\x39\x0b\x6e\xa7\xe3\xe1\x81\x7a\x07\x01\x6e\x6b\xe0\x59\xea\xea\x65\xfd\xed\x5b\x54\x90\x32\xb1\xa7\x5d\xab\x59\x34\xd7\xce\xc3\x0c\xee\x86\x54\xd7\xcd\xd2\x9f\x55\xeb\x13\x7f\xf9\x0e\xad\x79\x55\x8a\xf9\x65\x9c\x49\x5d\x72\xf4\x5a\xbf\x69\x6c\x0c\x4e\x79\x93\x28\x23\x58\x48\xf4\xfa\x5b\x94\x53\x56\x29\xb1\x02\x04\xd0\x53\x0d\xbe\xff\x2e\xe2\x18\xc2\x95\x02\xb8\x3a\xb0\x1b\x9a\x62\x4f\x5b\x61\xea\xfc\x5b\xad\x00\xd0\x8c\xb9\x19\xa6\x2e\x97\xe9\x03\xd2\xf1\x03\xdb\xab\x2b\x9e\x54\x98\xe4\x8f\xc0\xb1\xe0\xf2\x37\x50\x9a\x06\xcb\x16\xc0\x07\xc3\x62\x76\x38\x41\xda\x3a\x92\x06\xfe\x1e\x9c\xc8\x6f\x15\x5f\x6c\x25\xac\xb2\xc2\x7f\x9a\x67\xdb\x25\x15\xdc\x8f\x3b\xe5\xda\x06\xd7\xbd\xdb\x26\xa7\xa9\xd6\x36\xf0\x12\x44\xd6\x59\x95\xbc\x1a\xcd\xd2\x6c\xad\x45\x5b\x12\x9c\x46\xeb\x4c\xd4\x49\x42\x4c\x6b\xf2\xcb\xa6\xfd\x23\x1b\xf7\x13\xe8\xaf\x06\xb7\xf8\xd0\xf5\x08\x46\xab\xa5\xb9\x1d\xf9\x82\x4d\x58\x82\x08\x09\x49\xf3\x25\x59\x51\x21\xa3\xba\x67\x99\x17\xda\xc4\x29\x28\x5b\x99\x8e\x25\x79\x95\x49\x5a\x64\x35\x76\x46\x17\x51\x03\xb3\xb7\xac\x6f\x6e\xc7\x9e\x2d\x17\x9b\x42\x20\xa6\x56\x64\xd0\xfd\xf2\xb2\x9e\x03\x61\xd2\x34\xc8\x28\xd5\x45\x5e\xe0\x12\xd7\xe8\x4f\x78\x9e\x63\xf1\xca\x58\xf5\x11\x4e\x02\xb7\x98\xad\x45\xa5\xee\xd5\x12\x67\x35\xda\x7c\x57\xfc\xbe\xc4\x29\x09\xc3\x6c\xd4\xff\xd6\x36\x37\xe9\xc7\x11\x7f\x60\xae\x72\xb8\x69\xab\xd6\xa6\x4a\x04\xc8\x99\xfc\x01\x27\xf7\x84\xa5\xba\x93\xa6\x41\x4e\xba\x65\x38\xb7\x85\x7d\xeb\xbe\x82\x24\xed\xc0\x0e\x04\xf6\x1a\x9b\xac\x29\x31\xe0\x4a\x9c\x18\xb1\x6c\x5f\x4c\x55\x22\xa2\x40\xdf\x27\xa1\xe4\x96\x71\xfe\x23\x4c\xf0\x68\x49\x37\x09\x81\xc8\xb2\x6a\x02\xfb\x2e\x62\x33\x5a\x69\x67\x67\x19\xb6\xca\x0e\xf5\x4e\x85\xe6\xef\xb5\x23\x51\xd7\xf3\xc4\x99\x62\x2b\xe3\xfa\x9c\x2b\x4e\xd1\x21\x94\xc5\xf6\x10\x1d\xf9\x20\x8d\xe7\xcc\xd1\x19\x7c\x60\x94\x9d\x06\xef\xd9\x72\x01\xab\x40\x72\xf2\xf1\x87\xcb\x36\x0f\xfb\x88\x53\x2e\xd0\x0f\x19\x4f\xee\xd1\x25\xd1\x42\xff\x97\x68\x49\x57\x2e\xd2\xc3\x34\xf7\x38\x36\xa1\xf8\x43\x36\xa1\x28\x17\xe3\x68\xf8\x23\xb5\xa0\xc8\xf1\x2a\xa6\xf3\xd1\x9a\xa0\x52\x1f\x42\xfd\xa2\xeb\xb4\x3a\xf1\xe8\x7c\xb3\xe6\x0f\x33\xc9\x67\x95\x20\x33\x3a\x1a\xc4\x04\x5a\xcb\x3d\xd9\xaa\xbf\xc3\x57\xf3\x0f\xf3\x42\x4b\x11\x94\x5c\x1b\x67\xf5\xef\x4a\x72\xf8\xf8\xc3\xa5\xba\x9e\x60\xd5\x1a\xa9\x40\x67\x44\x26\x67\x09\x29\xd6\x67\x76\x3a\xcf\x06\x3d\x39\x67\x54\xf2\x32\xa2\xf1\xe5\x39\x4a\x78\x96\xd9\xfa\x34\x7c\x89\x2e\x48\xb1\xae\xc1\x1c\xac\xb5\xe3\xc4\x35\x3f\x6d\x6b\x82\x82\x73\x78\x19\x76\xef\x98\xa8\xf7\xec\x29\xf1\x88\xa4\x5c\xa4\xd1\xd5\x51\xbf\x04\xc9\xfc\x01\x3b\x9d\x3f\x0a\x9a\x0e\xdf\xd9\xe1\xe4\xd6\xbd\xa2\x15\x6b\xcf\xfb\xd7\x6e\xd6\x60\x41\x8f\xeb\x99\x1e\x9b\x42\xd7\x4b\xa3\x0e\xa4\x24\x45\x7c\x43\xca\x92\xa6\x44\xa0\x9a\x17\x35\x44\x38\x0a\x92\xd1\xec\x29\xb0\x7b\xec\x37\xf1\x6c\xfa\x4d\x44\x29\x6c\x1e\x83\x53\xef\xed\x32\x38\x9c\xe6\x94\xfd\x01\x58\x1c\xa0\x6b\x84\x92\x73\x06\xff\xea\x2e\xc3\xa9\xaa\x90\x48\x70\x46\xae\x7f\x02\xa9\x43\xb7\xe6\xd9\xb6\x46\xe4\x7e\xf4\x6a\x1f\x07\x6c\x5d\x43\x55\x91\xff\x51\x1f\x04\xc4\x78\x3a\x6c\xe1\x3f\x56\x44\xf6\xe8\xdc\x14\x74\xdd\xf7\x9a\x5d\x61\x49\x1e\x30\xfc\x96\xbd\x73\x4b\x6a\xf7\x2e\xa8\x89\xe1\xfc\xe6\x1a\xfd\x68\x60\xee\x5f\x8e\xb9\xe4\xd2\x48\x80\x97\x3c\xc7\x34\xa2\x65\x9a\x57\x70\xde\x9f\xdc\x4d\x0d\x10\x19\x88\xea\xfe\x1a\xdf\xd3\xba\x5a\x60\xa5\xb4\x3e\xab\x8d\x1d\x2b\xdf\x7a\x4b\x3d\xbc\x80\xd2\xc8\x27\x9e\xf9\xca\x85\x76\x37\x1d\xa9\xec\xae\x06\x4d\x71\x4d\xc0\x00\x12\x84\x09\xaa\x7d\x6d\x5e\xc8\x88\x6d\x43\x6c\x3a\x5a\x9b\xb8\x6c\x23\xc4\x8c\x9f\xcc\x77\x7c\x45\x99\x3b\xd9\xdc\x3a\x93\x97\x98\x8e\xd6\xb5\x3b\x4a\x1d\xcf\x46\xea\x10\x22\xbb\x62\x78\x91\x8d\x3b\x26\xdb\x97\x45\x86\xb5\x5f\x9e\xe8\xf7\xce\x52\x2a\xd4\xff\xa3\xdb\xdb\x77\xda\x61\x50\x31\x27\x39\x07\x8b\xa6\x5a\x16\x59\xe7\x9d\x99\x43\xbd\xff\x59\x33\xfc\x29\xaa\x42\xf1\x35\x4b\xd5\xb4\x89\x68\x45\x96\x59\x48\xa6\x08\x33\xc4\x87\x65\xe3\x70\x16\x04\xdd\xad\x69\x72\x7f\xe3\xf9\x05\x78\xa9\x7e\x63\xde\x4f\xf5\x45\x36\x2e\xa1\x89\x9d\xf7\xf6\x65\xbc\x76\x59\x37\x31\x2a\xf5\x9d\x77\x83\xdc\x5a\xb4\x28\x00\x08\x0b\xc1\x13\xda\x38\x8d\x82\xad\xcc\x9b\xeb\x27\xd5\xd7\xcf\xfe\xcb\xd1\xd2\xc4\xe4\x7b\xd1\x6d\xb2\xeb\xd9\x2f\xbc\xbb\x2e\xa4\x20\x5b\x8c\xec\xbd\x04\x43\x5a\x51\xdd\x65\xee\x5a\xfd\x64\x9c\xd7\xc6\xf8\x36\x6a\xff\x05\xc0\xb3\xe5\x36\xd5\xc9\x7f\xb6\xe1\xd7\xee\xb6\xd6\x7d\x65\xac\x9b\xff\xd1\xbd\x20\x56\x2a\x1b\xfc\x7b\x7d\xa7\x0e\x3f\x31\x26\xaf\x02\x74\x03\x85\xec\xb1\x2a\x2c\xc1\x65\x8e\xe7\x0b\xf6\x19\x24\x3a\x3e\x63\xf3\x9b\xf5\x9c\x68\xde\x52\xf0\xa2\xca\xc6\xe2\xb3\x76\x3a\x00\xed\x61\x68\x37\xdf\xdf\xc7\xc3\x32\xa5\x5c\xfc\x48\x26\xcc\x4e\xe5\xf8\x90\x3b\xc4\x55\x95\x87\x55\x8e\x87\x04\x6b\x49\x8e\xbe\xfd\xfe\xbb\xef\xfa\xea\xcc\x0f\xd7\x92\x0f\x7b\x6d\xfa\xeb\xcc\x0f\xd7\x92\x1f\x85\x38\x56\x67\x7e\x2c\x8b\x65\x14\xe8\x68\x9d\xf9\x60\xd6\xca\x61\x8b\xc9\x07\x8d\xcf\xb1\xc9\xaa\x10\x56\x09\x4d\x51\x85\xa7\x6d\x06\x12\x53\xc7\x52\x4e\x43\x42\x43\x2b\x1d\xf5\x70\x89\xa6\x11\xe9\xa5\x7e\xe2\x68\x40\x24\x08\x27\x95\xee\xa6\x8b\x06\x55\xd6\xa1\x54\xd2\x40\x92\x28\xe0\x60\xd5\x09\xa4\x87\x29\xc8\x3d\xb5\x0c\x77\x6c\xb3\x83\x70\xf2\x27\x30\xa9\x13\x1e\xee\x0f\x4a\xe0\xdc\x3b\x6d\x33\x22\x12\x13\x96\xa2\x19\x73\x1d\x35\xc9\x96\x41\xb0\x68\x28\x1d\x73\x3c\xc5\x12\x00\xd7\xa3\x71\x48\x62\x25\x00\x62\x74\x13\x13\x00\x4c\x60\x12\x65\xeb\x8a\x81\x20\x35\x32\x75\x32\x2e\x61\x32\x26\x22\x1a\x16\x0d\x0d\x4f\x89\xb4\x41\x59\x40\x02\x18\x4f\x84\x6c\x27\x37\x02\x40\x0e\xa5\x3f\x0e\xa6\x34\x02\xa7\x19\x95\xf4\x08\x3e\xda\xb0\x00\xeb\x70\x5a\x23\x20\xfc\xfa\x60\x11\xd5\xb0\x54\xb8\xb8\x04\xb8\xa6\x9a\xf0\xb8\xcc\x09\xc9\x7b\x8b\xb1\x6d\xc6\xb5\x46\xf5\x0d\x75\x56\xc9\x71\x94\x66\xe2\xc2\xea\xca\xa6\x21\x59\xbc\x1a\xf0\x43\x1f\x4e\xcd\x41\x30\x32\x0c\xeb\x93\xe6\xab\x1c\xd6\x89\xdc\x1a\x59\x7e\xba\xed\xf8\x9b\xea\x9f\x27\xb6\x0d\x3c\xba\x99\x06\xc7\x17\x6e\xbc\x79\xf4\x87\x8c\x2d\xb6\xf1\x87\x88\x56\x2d\x34\x67\x22\x31\xf2\xd8\x92\x97\x88\x2f\x20\x15\xa9\x35\xe3\xac\x0f\xd3\xf9\xcd\x35\x4a\x4a\xa2\x53\x1d\x71\x26\xe6\xa8\xa7\xd0\x45\x0a\xb0\xd6\x6a\xa9\xae\xd1\xa9\xb0\x94\x24\x2f\xe4\x38\x71\x1c\xdd\x21\xcf\xc6\x1d\x32\xc1\x0e\xfb\x73\xfd\x4a\xdd\xdf\xbe\xca\x31\x9b\xa9\x93\xa8\x1d\x23\x9e\xad\x79\xdc\x10\xdb\xe1\xec\x73\xe4\x02\xda\x35\x72\xb5\x49\x49\xe7\xc2\x98\x5e\x98\x90\x72\x3d\x18\xd2\x74\x3d\xda\x44\xad\xe1\x4d\xc0\x8f\x29\x54\xde\x39\xbd\x09\x2f\x40\xd8\xb1\xb7\x9d\x55\x53\x6b\x5c\xb9\x83\xea\x55\x42\xf7\x6d\x07\x21\x0e\x60\x44\x8e\x1b\x9d\xf6\xd5\x40\x68\x6b\x4d\x46\x6d\xc2\x59\xc6\x1f\x44\x70\x9a\xfe\xed\xaa\xf6\x5d\xad\xcf\xe6\xb1\x2e\x08\xca\x69\x59\xf2\xd2\x9a\xd4\xfd\x65\x8c\xc2\x54\x3c\x4d\x2a\xad\x8d\x94\x46\x0d\x29\xad\xc7\xf6\x96\x48\x9f\xfc\x94\x32\xcf\x4c\x86\x42\x28\x33\xca\x05\xa6\x99\xe6\x0c\xd6\xfb\xb6\x20\x6b\xbc\xa1\xbc\x2a\x0d\x64\xc9\xd1\x0b\xfb\x27\x7d\xd5\x6d\xf9\x78\x99\x52\x67\xf2\x34\x7d\xe8\x6b\x6c\x8a\x9e\x3d\xab\xa9\x21\x60\x69\x55\x0a\x66\xca\x9d\xdd\x67\x46\x3e\x53\x21\x77\xc0\xd5\xdb\xe5\xca\xfe\x3e\xb2\x18\xb7\x11\x85\xba\x4f\x23\xba\x40\xff\xec\xbf\xd1\x16\xe7\x36\xb7\xfa\x4f\x7f\xd4\x1e\xd0\x47\x81\x0e\xe4\x67\xcd\x68\xb2\x8d\xe8\x7a\xdc\xf8\x57\xd5\x8b\xe8\x07\x2c\x48\x8a\xde\x63\x86\x57\x46\xff\x7e\x79\x7b\xf3\xc3\xfb\x57\x6a\x43\x83\x65\x93\xae\x2f\xfb\x1c\xb4\xee\x0b\xe6\x03\x1f\xf6\x4f\x69\xea\xac\x35\xea\x02\x3d\xe0\x6a\x0f\x90\x9c\xe5\x6e\x9a\x50\xf3\x85\xdd\x6c\xf6\x6e\x1f\xfc\xce\xd1\xde\xe4\xe9\xa3\x77\xb7\x6f\xa6\x3e\x8d\xb9\x8d\xfe\x59\x48\x2c\xd6\x1f\x89\xda\x68\x72\x4b\xc4\x50\xe3\x8f\x7e\x09\x54\xbf\x8c\xca\xd6\xdb\x4a\xab\x10\xd8\xc9\x37\xfa\xe6\xe5\xfd\xbe\x5c\xc5\xe6\xd2\x85\x9d\xd8\x5c\x89\xb2\x8d\xe8\xba\xa2\x72\x5d\x2d\xe6\x09\xcf\xcf\xf4\x47\x48\x6a\xfe\xff\x6c\x91\xf1\xc5\xd9\xb7\xff\x86\x97\xff\x92\xfe\xf5\xf5\xbf\x2d\x16\xff\xb2\x20\x7f\xfb\xdb\xbf\xbd\xfe\xdb\xf7\xff\xf6\xfd\xbf\xe0\xe5\xe2\xdb\xef\xbe\xfd\xee\x5f\xfe\xf5\x6f\xaf\xd3\xef\x97\xff\xf6\x97\xef\xcf\x70\x41\x85\x7d\x71\xf3\x7a\x41\x24\x7e\x7d\x66\x67\xfb\xab\x30\xd3\xfd\x55\xb7\xf2\x9d\xaf\xf8\x37\xef\xfe\xf2\x97\x3e\xa1\x34\xc4\x60\xc7\xe4\xf7\xe7\x29\xb7\x1f\x54\x5e\x0f\x50\xf8\x08\xed\x0d\xfe\xc9\x46\xff\x76\x91\xda\xe9\x3d\xae\x9f\x51\x62\xa1\x92\xe7\xdc\x3b\xba\xc4\xd1\x02\x0b\x85\x51\x21\xf1\x6e\x19\x9e\xb1\xdd\xc4\x2b\xd2\x9f\x85\x3c\xba\x46\x5c\xae\x7a\x29\xa3\x93\xf3\x53\xae\xaa\x5c\x4b\x07\xd6\xd1\x46\x98\x2c\xb7\xba\xc4\x85\x29\xa9\x92\xf2\xe4\x5e\x49\x82\x39\x5e\x91\x93\x13\x81\x2e\xde\xf7\x37\xa4\x77\x0b\xa6\xfd\x71\x7d\x73\xf4\x33\x2e\xa9\xd6\x50\xbc\x00\xc3\x3f\xbf\xfc\xf9\xfc\xe3\xaf\x1f\xce\xdf\x5f\xbd\xea\x05\xaa\x84\x3c\xf2\xb9\xc0\xba\xe6\x52\x55\x67\xc3\xd5\x15\xe0\xd5\x84\x08\xdb\xd0\x92\xb3\xbc\x71\xe9\x6d\xec\x97\x7a\x41\x26\xba\x1d\x92\x71\xa2\x09\x9e\x6d\x9c\x8f\xb2\x9e\x95\xb3\x0c\x52\x56\x54\xd2\x59\x8f\xad\xd0\xd7\x0b\xb1\x62\xc9\x1a\xb3\x95\xeb\xb0\xe0\xad\x09\x89\x2d\x93\xf8\xb3\x73\x30\x10\x91\xe0\xc2\xdd\x8b\x18\xa5\xbc\x1a\x9a\xe4\x9f\xff\x7c\x8a\x28\x79\x83\xfe\xec\x01\x9b\xa3\x2b\xfb\xbe\x87\x40\xe3\xf3\x24\x1b\x52\xea\x0f\x58\x54\xf5\x8b\x29\x25\x59\xe1\x32\xcd\x6c\x00\xb1\x6f\xd1\x75\x08\x43\x5a\xe4\x15\x88\x97\x6a\xef\xe6\xe8\xa2\xc6\x55\x55\xa4\xc3\xc2\x2e\x8c\x53\x48\x2c\xee\xc5\x19\x65\xea\x58\xcd\xd4\x71\x98\xe1\x42\x09\x48\x5a\xbb\x38\x33\xd6\xe1\x99\xae\x01\xc0\xd2\x19\xb6\x64\x39\xab\xb7\xfa\xec\x9b\xb2\x62\x4c\x31\x16\x5c\x3f\x45\xd9\x0c\xcf\xc4\x9a\x0c\x14\xfb\xb9\x54\xa2\x6f\xa2\xe6\xfd\x46\x5b\x6b\x8a\x92\xe7\x6a\xd1\x95\x98\x93\xcf\x5a\xf2\x2b\xe7\xea\x94\xf4\xb1\x90\x11\x67\x27\x88\xb3\xf4\xdb\xe1\x09\xdb\x84\x8f\xe4\x3b\xdb\xee\xcd\x23\xec\x7a\x87\x6c\x5a\x7c\x6d\xbe\xae\xd1\xd3\xbf\x33\xbb\x1b\xe8\x21\x05\x84\x1f\xc2\x36\x91\xe8\x69\xd7\xbc\x62\x9b\x9f\x71\xd9\x52\x42\x58\xef\xc2\x9c\xa7\x7d\x80\x9b\x6b\x5f\xf1\xc5\xf8\x62\xc3\x1a\xc7\xb8\x49\xab\x35\x71\xff\x4e\xec\x9b\xaf\xaf\x73\x5c\xfc\x7a\x7d\x79\xf5\xe1\xee\xfa\xed\xf5\xd5\xc7\x61\x79\x10\x20\x72\x69\x73\x1e\x70\x82\x27\x01\x7e\xda\xe2\x9d\x23\x92\x60\xc3\x55\x8b\x92\x28\x7d\x5c\x38\x4f\xcd\x00\x01\x06\x23\x0c\x6a\x9a\xd4\xea\x23\x66\x75\x2d\x91\x7e\x80\x10\xa6\x6d\x01\x4f\x66\xdd\x23\x40\xd5\xd9\x98\xc2\xc0\x47\x40\x3a\xd6\x3e\x85\x8d\x8f\xcf\xb4\x66\xf0\x51\xcc\x7c\x04\xa6\x66\xf3\xbe\x61\xff\xc5\x8b\x11\x8f\x36\x94\x84\xdf\x96\x7c\x24\x40\xb6\xad\x8e\x99\x56\x18\xda\xe8\x34\x70\xd4\x4e\x84\x8d\x2c\x1a\x59\x87\xc7\xe8\xac\x10\x52\xd7\x3a\x51\xbf\x93\xbc\x90\x23\xb9\x31\x30\x93\x78\xe2\xda\xad\xfe\x83\x6c\x83\x6d\x84\x3a\xce\x04\xd7\x37\xe8\x9e\x6c\x4d\x04\x6d\xdd\xbb\xf5\x59\x84\xbe\x98\xb6\x22\x07\x8d\x7c\x81\x55\xc6\x7d\x9e\x8a\x48\x33\x1e\xa1\xd6\x2d\xac\xce\x6d\x04\xa6\xe1\xf5\x6d\xa3\x3a\x0a\x03\xcb\xdb\x4e\x29\x6d\x0b\x2f\x6b\x7b\xa8\x30\x0b\x60\x0c\x05\xac\x87\xeb\x50\x53\xb0\x56\xac\xa6\xee\xbf\x6a\x2d\x8c\x02\xe5\x44\x62\x25\xf3\xce\x15\xe1\x85\xa8\xa4\xf5\xb0\xb6\x54\x9c\x36\xbf\xd9\x06\xae\xcd\x0f\x7e\x7b\xd7\x00\x60\x51\x90\x64\xce\x78\xaa\x0d\xf8\xa7\xe6\x9f\xed\x8a\xbd\xf6\x0f\x12\xcb\x4a\xcc\xd7\x5c\xc8\xeb\x9b\x20\x50\xf3\x70\xc1\xd3\xeb\x9b\x40\x34\x14\x9c\x9b\xc5\x74\x7b\x85\xf5\x77\x6d\xf5\x6b\x05\xd0\x75\x5f\x47\xd7\x09\x1d\x5a\x23\xce\x71\x44\x17\x56\x68\xdf\xd5\x9d\x3e\xaa\x80\x85\x47\x75\x5a\x3d\x78\xbc\x14\xac\x7f\x2a\xf0\x38\xc7\x75\xfe\x03\xf6\xfa\xeb\xf6\xef\x0b\xe0\x68\xb4\xbb\xdf\x58\xc7\xbe\x00\x5c\xfb\x30\x29\xd6\x24\x27\x25\xce\x66\xd6\x24\xde\xee\xf4\x77\xda\x6d\xdd\x17\x3a\x77\x7e\xb3\xbf\x1d\xd8\x53\xfb\xfe\xc1\xcf\x7d\x64\x6f\x3f\x58\x37\xbf\x56\x77\x3e\xc0\x09\x98\xd8\xbf\x2f\xe2\xa8\x83\x7b\xf4\x41\xbb\xf2\x75\xba\xec\x01\x16\xd9\xd3\x87\x0f\xda\x57\x2f\x62\xa1\xf0\xde\x79\x80\x6e\x79\xe0\xee\x77\x07\xe7\x4a\xa0\x9e\x76\x40\xa6\x64\x22\x88\x0e\xa1\x43\xec\x46\x32\x42\x03\x19\x9f\x42\xad\x68\x87\x5b\x36\x57\xd2\xb2\xe4\xf9\x1c\x41\x9b\xe5\xba\xe0\x75\x9a\x3a\x48\xf7\x64\xb4\xca\x81\x19\x47\x45\xe5\xeb\x56\x54\x76\x62\x90\x01\xeb\xf9\x4a\xb4\x94\x70\xbd\xcd\xd1\xd9\xcc\x34\xc1\x8f\x18\xb6\x03\xee\xda\x7e\xc3\x76\x63\x3a\xee\xfb\x6a\x88\xdd\x38\x6b\xf3\x10\xfe\x20\xec\x6a\xc8\xdd\xe5\xc6\x7e\x6e\xaf\xd1\x6d\xbb\x78\x7f\x39\xc9\xfd\x35\x0a\x74\xc8\x94\x0b\x71\x83\x8d\x02\x6e\x59\x5b\xc1\x36\xd5\x51\x90\x7d\xae\xb2\xb0\x55\x75\x14\xe4\x98\xcb\x6c\xdc\xae\x1a\x38\xa9\x21\xd7\x59\xbf\x65\x75\xfc\xd8\x46\xb9\xd0\x62\xeb\x28\x3e\xb5\x2b\xed\xf9\x14\x61\x1c\xf0\x96\xb9\xd1\x3a\xd1\x11\x4e\xb3\x71\xba\xab\x7d\x4c\x50\xef\xa7\x19\xb1\xc9\x91\x60\xc7\x58\xe0\x9a\xf2\xfa\x99\x06\x1d\x64\xcd\x3b\x50\xe9\x6f\x82\x6c\x04\x73\x9c\x41\x25\x3f\x98\x6b\xcd\x8d\x08\x59\x24\xe0\x6a\xeb\x5d\x1a\xc4\xe5\x06\x58\x58\x0f\x27\x1f\x73\xbd\x01\x20\x76\x9d\x73\x30\x17\x5c\x0c\xe0\x39\xec\xda\x00\xe9\x9d\x80\x38\x0b\xef\xf2\x80\xc8\xbe\x07\x8a\xba\x68\x8f\xc3\x3a\xef\xdc\x88\x74\xe2\x81\xc8\xa9\x75\xe1\x80\x9d\x79\x6e\xc4\x1e\x9a\x71\xe7\x9e\x1b\xf1\x4e\x3e\x10\x39\xea\x02\x03\xfb\x39\xfb\xdc\x88\x6b\x22\x17\xe5\xfc\xeb\x47\xc2\x64\x27\xe0\xb4\x19\xa3\xd8\x86\xc6\xfb\x3a\x07\xdd\x98\xd0\x2e\x14\xde\x46\x73\x67\xa2\x87\x6a\xa5\x89\xbe\x54\x3b\x4d\x14\xa5\xbd\x47\x00\x85\xe7\x34\x35\x63\xc2\xde\xc5\xb5\xd7\x44\x51\x6e\xc8\x88\xd5\x36\xa6\x80\x49\x9d\x36\x51\x74\xb7\x4d\x14\xdd\xe6\x16\xde\xe4\x36\xb2\x6b\x2d\xcc\x6d\xe9\x46\xbc\xfb\x12\x88\xc1\xb6\x93\x13\xe4\xc6\x8c\x85\xec\x3b\x3b\xa1\xee\x4c\xe0\x37\xda\x4e\xcf\x18\xb7\xa6\x1b\xf1\xfc\x39\xc6\xcd\xe9\x46\xac\xbb\x33\xe2\x0c\x51\x71\x28\xb7\xa7\x1b\x13\xf8\x49\x84\x1b\xd4\x8d\x08\x77\x68\x04\x36\xda\x65\x87\xa2\xdc\xa2\x35\x88\xd8\xe5\xc7\x32\x14\x98\xbb\xb4\x3d\x1d\x30\x5b\x89\x73\x9f\xba\x11\xef\x46\x85\x5e\x34\x2c\xdb\x46\xb8\x53\x81\x50\xdb\x4e\x57\xa8\x5b\x15\x08\xbc\xe3\x7c\x0d\xb9\x57\xa1\x5c\x63\x92\x13\xd6\x8d\x78\x2e\x15\xe9\x94\x75\x03\xee\x9c\x8d\x38\x94\xce\x8d\x3b\xd5\x49\xeb\xc6\x04\xc6\x04\x76\xda\xd6\x2f\xc0\x9d\xb7\x91\x6c\xc9\xba\x79\xf7\x71\xe2\xd6\xe0\xa6\x34\xf7\x87\x3a\x75\xdd\x38\xa4\x73\x77\xf2\xc4\x63\x79\x2b\xc8\xe9\xdb\x9e\x0d\x98\xb5\xc2\x9d\xc0\x6e\x44\x39\x83\x81\x48\x8c\x71\x19\xd7\xef\x7c\x01\x25\x74\xc0\x95\x1c\x71\x68\x3c\xa7\xf3\x54\x97\xb2\x1b\x47\xf5\xf6\xa8\xde\x8e\x0e\xb8\xf3\x3a\x46\x34\xff\xe7\xd4\x6d\xc1\x0f\x43\x5d\xf0\x83\xce\xef\xc8\x2f\xc2\x9a\x88\x95\xf0\xe6\xb1\x37\xbc\x94\x88\x55\xf9\x82\x94\x8d\xa1\xd4\xfa\xc5\x91\xa0\x29\x41\x09\x1e\xf5\xeb\x1c\xb6\xe2\x6d\x2d\x59\xc0\x7d\xea\x17\x3c\x2f\x2a\x49\xd0\xc7\x5a\x44\xaf\x65\xbc\xc5\xb6\x59\x4b\x20\x65\xcd\x8d\x51\xc7\x29\x88\x95\xb9\xba\xea\xc6\x2b\x9a\xeb\x14\xff\x59\x62\x26\x39\xab\xd7\xe7\xb9\x45\x0f\xd1\xba\xca\xe8\x0f\xc1\xf0\xe6\x34\xa5\x86\xad\xdc\x44\x5c\xa7\x31\x01\x86\x9d\x8c\x42\xad\x2a\x99\x1f\x17\x56\x04\xcd\xf1\x67\x9a\x57\x39\xc2\xb6\xa5\x6a\x58\x06\xb5\xb8\xf3\x74\x30\x5d\xa6\xe6\x4b\x6f\x0d\x8a\xe5\x13\x4a\xfb\x7a\x66\x3b\xf4\xd1\x69\xb0\x9d\x3d\xa2\xcc\xdb\xa3\xe0\xe7\xf9\xb2\x67\x8f\xdc\x21\xd4\x2e\xbc\xfa\x3b\x54\x20\x9e\x53\x19\xaa\xbf\x8c\x6c\x41\x20\xdc\x1c\xdb\x53\x44\x65\x4b\xdb\xb0\xd4\xa5\x23\x5f\x70\xb0\xd5\x1c\x32\x1e\x50\x57\x19\xc5\x2b\x78\xa6\x65\x83\x07\x2a\x6c\x69\x21\x44\xf3\xc2\x54\x00\xd5\x54\x32\x83\xde\x78\xd6\x49\xf4\x07\xa1\x48\x58\xdb\x14\x92\x54\x25\x95\x5b\xa5\x43\x93\xcf\xf0\x3b\xe5\xe4\xd6\xbe\xe8\x15\xd1\xd5\xa6\x5d\x57\xdd\xbf\xac\x4c\xdf\x94\x83\xb6\xcf\x2d\x74\x65\x95\x33\x37\x69\x8d\x33\xf2\x59\x9e\x1d\xe0\x1b\x26\xf0\xa5\x6e\x98\x31\x2b\x78\xea\x6d\xc9\xce\x17\x0f\xc1\xd0\x35\x8b\xbb\x29\xe9\x86\x66\x64\x45\xae\x44\x82\x33\x4d\x23\x71\xa5\xf1\xce\x07\xa0\xe8\x63\x55\xf2\x4c\x80\x02\x8d\xf4\x7c\xd4\xcc\x75\xb3\xf4\x04\x33\xb4\xc2\x94\xa1\x5c\xe1\xae\x70\xc0\x75\xa5\x64\xa6\x05\xc6\x02\x97\x10\x3f\xbf\x05\x68\x2b\x36\x2b\x19\x11\xa5\xba\xd9\x40\xb6\x6d\xe6\x47\x8d\x0a\xc2\xf8\xaf\x8c\x3c\xfc\xaa\xbe\x16\x3e\xe7\xcb\x0c\x37\x2e\x7d\x41\x5c\xdf\x6e\x2f\x3c\xa1\xfe\xf4\x10\x82\x82\xdf\xa0\x02\xc9\xb2\x22\x08\x67\x0f\x78\xab\xd1\xd8\xfd\x06\x15\x6f\xd0\xeb\x57\x9a\xd6\xb1\x40\xf5\x37\xc2\x9c\xe4\x2f\xaf\xd0\x1a\x0b\x74\x71\x7e\xf3\xeb\xed\xff\x73\xfb\xeb\xf9\xe5\xfb\xeb\x0f\xb0\x63\x0f\x91\xb3\x13\x5c\xe0\x05\xcd\x28\xe4\x66\xd9\xd1\x8a\xfd\x97\x35\xbb\x4c\xd3\xb3\xb4\xe4\x85\x59\xbf\x0d\xef\x02\x5c\xe8\x16\x47\x9d\x76\xab\x7e\x99\x36\xbd\x6d\xcb\xd6\x07\x83\x70\x57\x25\x66\x5e\x59\xad\x66\x2b\xca\x8a\xe9\xee\xeb\x01\x08\x31\x36\x06\x9c\x82\x34\x94\x16\x06\xcf\xd3\x94\xa4\x71\x4b\x02\x45\x78\xf5\x7e\xec\xc2\x7d\x66\xdb\x44\x7b\xa1\x9b\x9f\x6e\xaf\xff\x57\xec\x0c\x90\xa5\xaf\x08\x35\x0b\xac\xea\x42\xf4\x99\x7a\x79\x25\x2f\xa2\x71\xfe\x91\xe4\x7c\x73\xc4\x7a\xdf\xe3\x10\xac\x83\x05\xdc\xfa\x1e\x08\x1e\x8b\xf6\xf6\x54\xcc\x67\x99\xcc\x83\xa3\x0b\xde\xcf\xd1\x8d\x61\xd5\x00\x9c\xb5\xdf\x6e\x98\x8c\x89\x63\x16\xc2\x54\xbd\xcd\xb6\x48\x49\xa6\x1b\x9c\x41\xee\x28\xc9\x51\xc9\x79\x7d\x83\xac\xb9\x90\x7d\x2d\xa2\x0f\xc6\x9d\xd5\xc5\xa4\xab\x0f\x47\x61\xb1\x7e\x0b\xa5\x84\x71\x69\xa5\x78\x5d\x6c\x90\xeb\x46\xcd\x09\x82\x49\xf2\x5e\x7d\xe1\x16\x07\x15\x36\x3a\xbd\x69\x49\x6a\x71\x70\xe3\xbe\x1c\x04\x6d\xfa\x9b\x54\xc2\x4e\x6e\x87\x39\x37\xb2\xbd\xfa\x7a\x49\x70\x0a\xc8\x72\x34\xbd\x08\x84\xed\x47\x22\xee\x5d\x9f\x16\x2b\x53\x58\x1d\xc4\x7c\xb1\x9e\xea\x1d\xe4\x54\x2d\x09\x96\x55\x49\x8c\x2c\x61\xca\x27\x9a\x56\x80\xc1\xd0\xc0\x88\x2c\x30\x53\x7f\xfa\x23\xe7\xb2\xa9\x31\x19\xb5\xf1\xbf\xd4\xe6\x3d\x2a\x3c\x94\xae\xb1\xf1\x7c\xe2\x74\x06\x42\xa2\x26\xf1\xa6\x84\x65\xab\xf7\xec\x81\x09\xbc\xac\xd8\xb9\xe9\x87\x11\x2d\x7c\xfc\x78\x7d\xa9\xcf\x63\xc5\x3a\xa9\x13\x3b\xae\x5d\xb8\xe8\xf9\x49\xd1\x63\x87\x02\x6d\x81\x4c\x22\x4d\xf7\x07\x9c\x09\x1e\xea\xed\x83\xb4\xb6\xa4\xdd\x20\x37\x3c\xbd\x6d\xeb\x4d\xa6\x7a\xaf\xfd\xf3\x82\xcb\x35\xea\x3c\x10\x16\x36\x58\xda\x03\xf7\xb4\xe9\x7e\xe4\x05\x0c\x50\x16\x0d\x5e\xe2\x7b\x22\x50\x51\x92\x84\xa4\x84\x8d\x57\x51\x46\x6d\x93\xdf\xf7\xdf\x81\x28\x03\xd2\x57\x44\x53\xc6\x07\xce\xd4\x71\x88\xa2\x8d\xa6\xab\xa5\x36\x04\xb4\xb9\x8b\x36\x5c\x1b\x19\x1c\xa0\xe3\x30\xce\x66\xfa\x30\x54\xae\xcb\xbd\x12\xf2\x0d\xa2\xff\x61\xaa\xd0\x1a\xc5\x42\xfb\x71\xc6\xfa\xd3\xd5\xeb\x5f\x13\x93\xcd\x83\xb0\xac\x09\x4d\xf7\x15\x15\x8a\xbd\x18\xd3\x85\x44\x29\x27\x26\x8a\xb4\xac\xc2\xba\x07\x16\xe8\xd3\xf5\x25\xfa\x16\xbd\x54\x73\x7d\xa5\xc9\x63\x89\x69\xa6\x5d\x54\xba\x4f\x49\x47\x13\x09\xdb\xd8\xec\x14\xe6\xb6\x89\x98\xc9\x71\xd3\x47\xff\x14\x31\x8e\x44\x95\xac\xdd\x9a\x5d\x03\xdc\x20\xcc\x05\x41\x05\x29\x15\xb1\x68\x53\x5d\x73\x94\x02\x47\x05\x7a\xd2\xfa\x8e\xd2\xd0\x51\x01\xed\x53\xf8\x28\x45\x1f\x95\x48\xc6\xf8\x29\xd0\x1e\x1f\xf5\xf1\xc5\x4f\x8f\xc0\x17\x7d\x11\x47\x37\x56\x6e\x61\xc5\x10\xb4\x8b\x8e\x0b\x13\x57\xbb\xe0\xf0\x3f\x29\x29\x3c\x0e\xd7\x14\xe4\x1d\x65\xd5\x67\xd3\xbc\x2b\x5e\xa1\xbf\xbd\xd2\xaf\xa3\xc4\x2d\x4a\x6f\x8a\x4e\xeb\x32\x65\xa3\x21\x5e\x7d\x2f\x79\xa9\xdb\x83\xb0\x5f\xd4\x03\xb1\x0f\x9c\x65\x5c\xb1\x75\x25\xc9\x60\x96\xf2\x7c\x67\xb2\x3a\x04\x07\x27\x6b\x7f\x02\x8a\xb8\x00\xa0\x21\xc4\xe7\x13\x57\x10\x24\x90\xf8\x1a\xe2\x0a\x93\xf6\x21\x89\x2f\xc6\xb4\x91\x91\x0d\x01\xf9\x9d\xdb\x99\x70\xea\x2d\x25\x30\xba\x5d\xd2\x60\x90\x0e\xb8\xb5\x4d\xd4\x34\x55\xc1\x74\x5f\x6b\x0d\x02\x3a\xed\xec\x3b\x31\x4a\x70\xc9\x33\x50\x6c\x44\x5b\x5b\xe5\x99\x4e\xf7\xc0\xf5\x22\x15\x98\x67\xbb\x46\x19\xa8\x72\xdf\xbb\x46\xa5\x1d\xb5\xd7\xa8\xf5\xc8\xe7\xba\xc6\x0a\x70\x63\xee\xac\x51\x5d\xb3\xed\x35\xea\x3b\xee\x79\xae\x11\x6c\x82\x79\xa0\x2c\xe5\x0f\x62\xea\x55\xf0\x8b\x79\xdd\xf1\x9d\xc4\xb5\x45\x12\xde\x75\x00\x61\xda\x2d\xab\x41\xdf\x7d\xe0\x9c\x42\xcb\x92\xe7\xa0\xfb\x65\x97\x8f\x76\x9a\x97\x7c\x5d\xea\x55\x0c\xaf\x5e\xe5\x02\x5f\xd4\x1d\x9d\x6e\x0b\x92\x44\x1f\x86\x1f\xdf\xdf\x9e\xb7\x41\xe8\x80\x7c\x5d\xd5\x5f\x61\x40\xfd\x1d\x74\x0e\x70\x9a\x53\x53\xf2\xfe\x81\x2c\xd6\x9c\xdf\xa3\x97\x3d\xe5\xeb\x1b\xf7\xda\x4c\xd0\x95\x38\xb3\x54\x3b\x53\x2b\x81\x45\x22\x53\x96\x51\xe6\x99\x91\x74\x1a\xb3\x15\x75\xd5\x64\xbd\x16\x57\x7a\xe3\x40\x40\x19\xce\x1b\xcf\xc1\x2e\x4a\x74\x38\x9c\x0e\x1c\x33\xa6\x25\x10\x4c\x93\x06\xa0\xdb\xea\x14\x6b\x3c\x33\x17\xa2\x22\x36\x2a\x4c\x54\xf9\x9a\x33\x6e\xe3\x54\x04\x29\x37\xa4\x04\x32\x1c\xc5\xa1\x8c\x35\x4a\x4f\xd7\x9e\x5c\xbd\x76\xdf\x6e\x75\x70\x66\xbb\x4b\x6d\xd0\xd0\xec\x00\xc5\xf9\x8d\xa5\x82\xa1\x52\x6e\x8c\x6c\x79\xdd\x32\xf1\xce\xb4\xad\x25\x19\x2c\x64\xed\x2b\xda\xab\x5a\x9f\x9c\xb4\x45\x5a\xaf\xb4\x2f\x2b\x9e\xe7\x2e\x87\x46\xcf\x04\xad\x7e\x44\x17\xdd\xd5\x35\x63\x2e\xdb\x90\x4e\x1a\xd1\xe4\xa6\x19\x40\xbd\xd4\xdc\x36\x40\x56\x75\x58\xd5\x14\x3d\x9e\x7a\x6a\x46\x73\x5e\x7a\xcf\x82\xec\x1e\x07\x10\xd0\xe6\xc8\x0c\x1d\x87\x8f\x3e\xb1\xc2\x78\xeb\xe3\x9d\x9d\xc3\x85\xd0\x04\x1f\x51\x1a\x7e\xb9\x19\x8e\xf2\x6d\x47\x73\x5c\xdb\xa7\x11\x96\xd6\x9d\x92\x13\x59\xd2\x44\xb8\xb8\x1a\x45\xb7\x49\xa9\x0b\x05\x78\x45\xf6\x07\xd7\xe0\x84\xa8\xd2\xfa\x48\x75\x31\x8f\x65\xa5\xf1\x5a\x92\x8c\x60\x41\x26\xb6\x39\x41\x46\x96\x1e\x14\x60\xe2\xc2\xdc\x00\x7b\xd7\x09\x3c\xd4\x1f\xd7\x7e\xbf\x7b\xb2\xb5\xa7\xa5\xc0\xd4\x11\xa0\xab\x9a\x14\x0e\xe9\xbf\xa9\x0b\x4c\xd5\x1d\x54\xd0\x86\x62\x74\x6b\xf2\x3d\x5d\xdb\x15\xb3\xda\xf9\xd3\x60\x7d\x84\x9e\x58\xa8\x71\xe1\x6e\x90\xbf\x6b\x49\xe4\x2d\x75\xee\x96\xe7\xda\xc8\x88\x71\x8b\x4d\xd3\x95\xce\xe4\x81\x50\x2f\xb9\xa3\x85\x93\xee\xda\x07\x21\x1e\x92\x12\xc7\xc2\xa1\xdb\xe8\x80\xc5\x42\x83\x36\xb9\x12\xcd\xab\x73\xf5\x7f\x43\xd3\x87\x84\x4f\x87\xac\x81\xa3\x64\x31\x1a\x51\xfd\x18\x91\xd4\x5f\x20\x82\xba\x77\x1e\x90\x36\x23\x35\xb0\x29\x9d\xae\xc6\x63\xae\x1f\x9b\xc5\x81\x62\xab\x5d\x5c\xee\xe0\x77\x9f\x51\x4c\x35\xa8\xc0\xe0\x58\x0c\xf5\x23\x63\x1c\x14\x2b\x1d\x87\xf3\x50\x8c\xf4\x4e\x0c\xf4\x30\xc3\x0c\xc4\x46\x87\x62\x9f\x87\xd1\x34\x12\x13\xfd\xa5\x63\x9e\xf7\xea\xf3\x17\x8e\x6d\x9e\x18\xd3\x1c\x4a\x92\xdb\x27\x96\x59\xc3\x1e\x90\x24\x0f\x1b\xc3\x3c\x99\xa5\x76\x10\x3b\x85\xb1\xc6\xc6\x3e\x4f\x8c\x79\x6e\x62\x9a\x07\xa9\x1f\x1a\xeb\xdc\x13\xcb\x3c\x08\x13\x14\xe3\xdc\x17\xc3\x3c\x7c\x46\xe3\x62\x9b\x3b\xb1\xcb\xc3\x82\x2a\x3c\xa6\x39\x2a\x66\x39\xec\x13\x87\xc4\x28\x4f\x8b\x4d\xf6\x8d\xd3\x83\x0b\x8f\x88\x49\xee\xc4\x1c\x0f\x13\x12\x34\x16\x19\x54\x73\x76\x3c\xf6\x78\x7a\xcc\x71\x6c\x35\x49\x60\xb4\x6b\x38\x8e\xf5\x80\xd5\x3b\x43\x51\xc2\xfb\x44\x07\xff\xf1\xf1\x13\x14\xb2\xc2\x71\xbc\x53\xe3\x77\xc7\xaa\xe0\xc4\xc6\xed\x7a\x71\xb9\xa3\x5c\x31\x32\x5e\x37\xcc\x99\x82\xf1\xb9\x93\xe2\x72\xad\xb9\x7a\x70\x29\x13\xe2\x71\x8d\x81\x68\x4c\x3f\x8d\x8a\xc3\x6d\xe2\x6c\x07\x41\x46\xc5\xdf\xb6\xec\x77\x63\xc2\x67\x38\xee\x36\x78\x36\xe2\xe2\x6c\x27\xc4\xd7\xee\xc4\xcf\x86\x6e\x96\x60\x5c\x6d\x98\x10\xc3\x71\xb4\x8f\x11\x3f\x3b\x21\x6e\xd6\x5a\xd2\x87\x2d\x6c\xf1\xf1\xb2\xd1\xe6\xf3\x03\x9b\xcc\x21\x91\x5c\xe1\x08\x2e\x48\xbc\xeb\xa4\x38\x57\x2f\x8e\x75\xec\xfc\x83\xe2\x5b\x7b\xe3\x57\xc7\xce\xeb\x48\x5c\xeb\x58\xdc\xea\x20\xc8\xfe\x78\x56\x48\xbc\xea\x20\xc8\x4e\x1c\xeb\xe1\xe3\x54\x27\x90\x2e\x20\x2e\xec\x20\xa4\x0b\x64\x2c\x63\x71\xa8\x8f\x11\x7f\x3a\x29\xee\x14\xec\xe3\x83\x6f\xe9\xa4\x30\x92\x47\x0a\x1f\x79\x5a\x6e\x04\x8b\x23\x9d\x14\x3f\x0a\x89\x8c\x82\xc7\x8d\xee\xc6\x85\x0e\x02\x85\xc6\x8b\x7e\xc5\xe7\x1d\xa2\x4e\x06\xe3\x3d\xa7\xc5\x79\x86\xc2\xc5\xc0\x31\x73\x20\xe5\x27\x14\xcf\x39\x2d\x8e\xf3\x69\xd7\x10\x8a\xd7\x9c\x16\xa7\xf9\xb4\x6b\x08\xc5\x63\x4e\x8b\xc3\x7c\xca\x35\x04\x55\x64\x58\x9c\xe5\xa4\xf8\xca\x6e\xfc\x64\x14\xbf\xec\xc6\x55\x0e\xc5\x4d\x8e\xf9\x71\x21\xf1\x94\x5f\x5a\xfc\x86\xf0\xb4\xb8\xb8\xc8\xe8\x78\xc8\x26\xd6\x71\x94\x2c\x1f\x27\x0e\x32\x36\xfe\xd1\xc4\x36\x8e\x82\x04\xc7\x3d\xf6\xc6\x06\x8d\x82\x1e\x8f\xa1\x1b\x8b\x8f\x1b\x05\x0b\x8d\xff\x01\x31\xad\xf8\xb8\xc6\xc8\x78\x46\x7f\x7b\x46\x97\x15\x8e\x63\xec\x89\xcb\x1a\xa7\x96\x67\x8e\x7b\x70\x9c\x62\x64\x7c\xa2\xa7\x87\x8c\x2e\x26\x1c\x97\xd8\x1f\x73\x18\x38\xa2\x01\x5d\x05\x28\x76\x8e\x7e\xe4\xc0\x5c\x1a\x3d\x56\x6c\x61\x6c\x4c\x21\x34\xc4\x16\x12\x4b\x78\x48\x5a\x9d\xee\x6e\x1e\xfc\x53\x81\xd5\x85\xdb\xa5\xfa\x90\xd5\x47\x11\xd4\x02\x0b\xcd\x61\x0c\x04\x8d\x49\xeb\x4f\xcc\x48\xd9\x7f\xcd\x33\x2e\x91\xd8\xb2\x44\x37\x66\x32\x7d\x8e\x04\xca\x71\x4a\x0c\x81\x53\x23\x9a\x74\x91\x34\x6c\x31\x28\x78\x7a\x47\xf2\x22\xc3\x72\xe7\xdc\x76\x4a\x4c\xd6\xcf\x69\x02\x60\x4d\x11\xed\x56\x28\x80\xd6\xcf\x0a\x9e\x9a\xe0\xbc\x9d\xe9\x4b\x6e\xeb\x4f\xd7\xeb\xef\x3c\x32\x26\x17\x34\xb8\x09\x7b\xfa\x7f\xe1\xe5\x7d\xc6\xb1\x8f\xd0\x93\x13\xaf\x97\x7e\x5f\xbc\xc3\x8a\xca\xf9\xfd\xdf\xb4\xb7\x3d\xe1\x79\x5e\x31\x2a\xb7\x67\xfa\x7d\xba\xa8\x24\x2f\xc5\x59\xaa\x28\xfe\x0c\x17\x74\x96\x70\xb6\x51\x3c\x9e\x33\x31\xcf\xd3\x6f\x1c\xdc\x49\x9e\xf2\xa6\x2f\xc5\x17\x8a\x8a\x39\x6f\x66\x60\x37\xb7\x62\x42\x96\x55\xa2\x4e\x5d\xea\x85\x5f\xe6\xb8\x40\x42\x8e\xc6\x0c\xdb\x56\x59\x4d\x75\x6e\x45\xf0\x39\xde\x3a\x1e\xa9\x83\xd0\x24\x29\x15\xe5\x48\xce\x33\xd3\x60\x4f\x0e\x85\x44\xa0\xba\xb1\xb8\x2c\x29\xd9\x10\x84\xcb\x05\x95\x25\x2e\xb7\xde\x5e\xde\xad\xc9\x56\x3b\x9a\xd4\xe9\xf8\xad\x22\xe5\x56\xf3\x93\xb1\x5b\xb5\x09\xb6\xd5\x2e\xbd\x72\x43\x52\xe3\x63\xce\x79\x4a\x97\x5b\xca\x56\xf6\xa8\x8b\x1d\x52\xe9\x0f\xcd\x50\x17\xcb\x6c\x55\xd1\x94\x9c\x79\x1b\xfa\x18\x51\x2f\x6e\xdd\x80\x70\x17\x89\x59\x8a\xcb\xd4\x42\x3a\x1e\x80\x21\x44\x1d\x0f\xc0\x1f\xe9\x00\x88\x01\x4d\xb0\x43\xfc\x56\x45\x37\xd7\x92\x95\x10\x53\x22\x4c\x28\x2c\x59\xe3\x0d\xe5\xa5\xd7\xb2\xa8\x5f\xb0\x38\xec\x29\x51\x33\x9f\x61\x96\xce\x4c\x87\xa0\x49\x87\x65\xb9\xa4\xea\x8b\x30\x6f\xd3\x12\x75\xec\x0b\xa6\x6c\xbf\x48\xd6\x24\xad\x32\x1b\x4b\x23\x64\x89\x29\x1b\xcc\xdd\x81\xa8\xea\x8c\xa7\xe4\x3c\x30\xb3\x9d\xd9\x5d\xd6\x31\x98\xea\xf5\x7a\x65\xfe\xec\xca\x2a\x23\x22\xd8\xe6\x63\x74\x07\xe1\x8b\x30\xcf\x91\x25\x29\x4b\x92\x5e\x56\x8a\x7b\xdc\xd6\x53\xb9\x5e\x69\xb9\xd6\xfc\x7c\xf5\x99\x24\x55\x74\x25\xcf\x3b\xdb\x65\x29\xad\x9c\x78\x67\x3f\xa7\x39\x80\xfd\x83\x16\x9e\x02\x50\xb5\x1c\xa5\x70\x66\xe5\x49\x81\x25\x15\x4b\xa3\xfe\xd7\x58\x24\x9f\xd5\xc1\x16\x9a\xa7\xc1\x14\x1e\xe4\x8c\x08\x4e\xd4\x3f\x45\x8b\x4a\x7b\x00\x15\xfb\x4a\xd6\x5c\xc9\x6d\xd8\x6c\x96\xfe\xee\x86\x72\x25\x10\x86\xa7\xcb\x19\x41\xbc\x34\x01\x78\xae\xbf\x6b\x33\x3d\x13\x07\xd1\x80\xa5\x02\xe5\x1c\xd0\xe7\xb5\xde\x2b\xa7\xa5\xab\xcf\x68\xf6\xab\xfe\xb1\xd2\xd9\x0c\x42\x22\x51\xe5\xba\x45\x26\xa1\xab\xb5\x04\xb4\x0d\xa3\x73\x32\x6f\xdc\x0c\xcd\xb4\x72\x42\xa4\x0e\xb1\xf6\x3b\x66\x19\xe2\x08\xc2\xb4\x41\x14\xa6\x6d\xf8\xcb\xfa\x6e\xb0\xd1\xd0\xa7\x75\x10\x71\x97\xea\x82\x80\xfb\xb6\xfb\x14\x11\x99\xcc\x5f\x9d\xd6\x05\x9d\xb1\xc6\xc1\x62\x8b\xa8\x24\x4a\x4c\x87\x94\x1d\x58\x97\xbc\x5a\x19\x4c\x92\xcc\x4e\x9c\x2f\x3d\xe2\x30\xed\x61\xd3\x54\x1d\xd3\x17\x06\xb9\xe1\xce\x31\x56\x0b\x57\xd3\xa9\x03\x26\x53\x75\xad\xca\x64\x5d\x5b\xc3\xca\x92\x88\x82\x33\x0d\x59\xff\xe5\xaa\x59\xdb\xff\x00\xcc\xdc\x00\x7d\x29\x5e\x35\xc4\xb0\xa6\xab\xb5\xa3\x05\x6c\x6d\x80\x8a\xc6\x1a\x1a\x0a\xe5\x9f\x01\x8b\x49\xb6\xe3\xf6\x98\x69\x28\xea\x51\xaa\xc7\xdb\x24\x29\x73\xb7\xf2\x20\x5c\x93\x95\x6f\x6f\x64\xb3\x2e\x9a\x9b\x68\x70\x4b\xd9\xe8\x5b\xf4\x52\x93\x2e\x95\x27\x02\x85\x0b\xfa\x28\xa6\x3d\xe3\xc5\xab\x39\x3a\x47\xac\xaa\x79\xd1\x7e\x93\x64\xbc\x9e\xa3\x9d\x8c\x30\x16\x12\xec\xbe\x06\x38\xd5\x31\x4d\x62\x8a\xba\x99\xee\x84\x42\x9f\xe7\x86\xfa\x4c\xfa\x18\x2f\xf5\x62\x4f\x11\x16\x82\x27\x14\x43\xca\x9b\x9b\x51\x53\x59\x9b\x74\xcd\xb6\x3c\x56\x7b\xd6\xee\xc1\x98\xd8\x63\xe4\x1c\x65\xb6\xfb\x79\x1b\x15\x3e\xc3\x02\x43\xd6\xd7\x87\x82\x73\x22\x5c\x36\x1d\xf8\xdd\x88\x62\xad\xbd\xcb\x18\x9c\x7e\x04\x48\x93\x3b\xee\xd1\x83\x62\xfb\xd6\xa8\x28\x8c\x06\x20\x4e\x41\x47\xab\x19\xf7\x64\x7b\x6a\x3b\x69\x23\xb5\xc7\xb8\x06\x5c\x92\xcc\x9a\x84\xa0\x3d\x97\x6a\x88\x1a\xa0\x99\x0f\x1c\xc3\x53\xa8\xac\xfe\x62\xdc\x0b\x3d\x82\x8f\xf1\x07\xea\xb6\xc0\xd6\x04\x16\x09\x11\x35\xfb\xd2\x38\x14\x63\x56\x8f\xa6\x35\xf1\x31\xc3\x6d\xdd\x5e\x78\xf8\xe8\x75\xec\x57\xa8\x38\x11\x86\x08\xd4\xf9\x5d\xd3\x98\x8e\xb5\x66\x48\xae\xa9\x55\x1f\x5f\x4b\x0d\xe8\x67\xdd\x9c\xca\x4d\x37\xe6\xec\x9a\xa1\x6e\xc7\x6b\x76\x8a\x3e\x70\xa9\xfe\xef\x4a\x77\x08\x3f\x45\x97\x9c\x88\x0f\x5c\xea\x7f\xc6\x22\x1d\xa1\x1f\xa5\x39\x03\xef\xa2\xdf\x9d\xbc\x61\x06\x1f\x7b\x6d\xd7\x39\x33\x61\xd8\x0a\xbd\xb6\xc7\x7c\xfc\x99\x33\xe3\x7a\x69\xbd\xbb\x96\x01\x50\x81\xae\x99\x12\x89\x2d\x9a\xa7\x1c\x07\x33\x17\x3b\x45\xd7\xdb\x89\x71\x36\x33\x4d\xcc\x21\x95\xf7\xba\xa3\x3b\xc7\xab\xba\x3f\xbc\xbf\xff\x31\x9d\xb6\x1a\xb8\xbd\xd3\x3d\xdc\x54\x7f\xd4\xd1\x83\xef\xfc\xa8\x9c\x29\xc4\x5f\x4f\x6e\x8d\x37\x5a\x70\xa6\x6c\x95\xd5\x22\x70\xfc\xca\x4d\x8a\xbf\x0b\x51\xd4\xa5\x02\x8a\x92\x48\x92\xea\x18\x4f\xe6\xc2\xb9\xe2\x29\x4a\x3b\x64\xcc\x7c\x75\x90\x76\x91\xe1\x84\xa4\x28\xd5\x0a\x84\x9a\xb8\x2c\xb1\x24\x2b\x0a\xab\x9c\xe3\x8f\x9c\x94\x2b\x82\x0a\x25\x5f\xc4\x4e\x2b\xfa\x12\x37\x63\xf2\x21\x8f\xab\x3d\xdf\x8c\xb8\xfe\x64\x66\xc0\xbb\x94\xb9\xe7\x1d\x79\x46\xbc\x14\xd9\x0a\xd2\x7f\x29\x06\x07\x5a\x78\xd4\xad\x79\x9f\x9d\xdc\x68\x1b\xfb\x1d\xe5\xc6\xa3\xdc\x78\x94\x1b\x8f\x72\xe3\x51\x6e\x3c\xca\x8d\x47\xb9\xf1\x28\x37\xf6\x8e\xa3\xdc\xe8\xc6\x93\xc8\x8d\x91\x1f\x31\xf6\xcf\x09\x66\xd9\x5f\x8c\x3d\xbb\xb1\xc3\x1a\x0b\xab\x16\x5a\xb5\x4d\x1a\xcc\xf4\xda\x06\x59\x25\xea\xdd\x5a\x59\xe0\x4e\x9b\x7a\x4d\xc7\x73\x54\x62\xb6\x82\x82\x7c\x3d\x7b\xfd\xed\xb7\x30\xfa\x86\x76\xd5\x6d\x06\xbc\x64\x3c\x8a\xa2\xc6\x99\x67\x27\x07\x3c\x6c\x76\x2e\xec\x69\x81\xd3\x03\x94\xd4\x86\xfc\x60\x07\xf0\xbe\xda\xab\xb4\x76\x98\xb5\x5c\x72\x13\x1d\xa4\x75\xcc\x45\x4e\x24\xc2\xb2\xe5\x38\xa1\x39\x81\xdd\xcf\x05\x4f\x0d\xa3\xb7\x15\xb7\x9c\x27\x38\x45\x9c\x59\x7f\x19\xd3\x59\xf8\x9d\x15\xc4\x39\x1d\x9b\x58\xd0\xf6\x0a\x12\x82\x4d\xd7\xd4\x85\x0e\x74\x0d\x3b\x1c\x25\x12\x3c\x27\xc8\x24\x07\xda\x6b\x43\x2d\x81\xb8\x5d\x41\x2f\xc9\x7c\x35\x47\x69\x65\x9b\xb1\x06\x41\x9a\x12\x63\xaf\xcc\x0d\x6c\xb2\xaf\xb5\xc7\x99\x97\xfa\xff\x14\x5a\x64\xb9\xd5\xb1\x83\x1b\xc2\x64\x85\x33\x40\x3b\x24\xb2\xa1\x89\xac\xeb\xfb\xe8\x74\x0a\x2a\x4d\xa4\xc1\x21\x6b\x37\x77\x79\x0a\xe8\x16\xeb\x08\xf7\xae\x7e\xd4\x90\x4e\x2d\x15\x5c\x68\xe9\x4f\x62\x1e\xd7\x94\xf9\xd3\x47\x58\xd5\xd4\xa9\x8d\xf2\xac\xe3\x90\x97\xd6\xcd\xb9\x3b\xed\x18\x7b\x84\x8e\x03\x69\x82\x8e\xd4\x52\x5a\x14\x6c\xbc\xee\x50\x90\x6a\xfd\xe7\x1f\x2e\x49\x6a\x20\xdd\xf1\x82\x67\x7c\xb5\xf5\xf7\xca\x24\x5b\xd5\x65\xb1\xa0\x62\x1f\x46\xa2\x5a\x58\xed\x49\xd1\xd7\x87\x0e\x09\x1c\x3d\x7e\xb0\x71\xb4\xdc\x44\x40\x3c\x5a\x6e\x8e\x96\x9b\xa3\xe5\x66\x74\x1c\x2d\x37\x47\xcb\xcd\xd1\x72\x73\xb4\xdc\xf4\x8e\x7f\x6e\xcb\xcd\xd1\xe3\x77\x94\x1b\x8f\x72\x63\xd4\x38\xca\x8d\xa1\x71\x94\x1b\x8f\x72\xe3\x51\x6e\x3c\xca\x8d\x47\xb9\xb1\x33\xbe\x1e\xb9\x31\xf2\x23\x70\xf0\x50\xb4\xce\x76\x0d\xec\x20\x4f\xd3\x21\x1a\x3f\x69\xcf\xcc\x1e\x49\x8d\x05\x4f\x47\x72\x1a\xb5\x93\x64\x74\x2d\x09\x9f\xd9\x22\x79\xda\x5d\xa3\xc0\x59\x7f\xa5\xc0\xb9\xf1\x09\x9d\xa2\xdf\x39\x23\x26\xdf\x4b\xb1\x09\xc1\x03\x9d\xb7\x74\xaf\x08\x05\xea\xa5\x78\x35\x9a\x8b\x73\xcc\x97\x3c\xe6\x4b\x1e\xf3\x25\x9f\x6b\xbe\xe4\x1a\x0b\x53\x64\xc5\x76\x90\x6b\xd2\x27\x83\x10\xdb\x21\x11\x1e\x87\x53\xcc\xf5\x7f\xf4\x66\x4f\x06\x61\x7e\x99\xec\x4a\x75\x08\x2c\x91\x2a\x4c\x7b\x84\x66\xf0\x91\xda\x40\x12\x92\xde\xb4\x57\x09\xb8\xc9\x8c\x4d\x42\x2f\x06\xeb\xe6\x0b\x05\x29\x67\x86\xb4\x39\x5a\x52\x96\xf6\xac\x11\x00\xd6\x62\x16\x70\x52\xa3\x72\x20\xdb\xcb\x9b\xe0\xc8\xf5\x7d\xd0\xad\x6b\xeb\x8f\x94\x11\xa9\xed\x06\x4e\x54\x98\x6e\xe4\xd2\xd6\x07\x5d\x43\x03\xf1\x8d\x6e\x30\x63\xf5\xe6\xba\xab\x51\x8c\x6c\xef\x7a\xe9\x25\x58\x98\xab\x0a\x2e\x28\x4f\xb3\xc1\x4c\xf7\x12\xa3\x2e\x32\xba\xa0\x8c\xcd\x2b\xa3\x80\xab\xa6\x3d\xf8\xd2\xa2\xb5\xd7\x68\xa8\xaf\xb3\x48\x88\xad\xfb\xa1\x71\xf5\xc7\x59\xf0\xa6\xa8\x20\xbd\xd4\xb2\xb7\x31\x11\xc1\x0c\x8a\xf1\x5a\x6a\xd8\xa8\x38\x49\x9d\x9e\x6e\x58\x44\x7b\x18\x17\xd1\x34\x03\x23\xea\x6e\x9b\x9a\xbd\x95\x80\x6a\x5b\xe3\x04\x98\xa8\x29\xe6\x76\x00\x7b\x23\xda\x4f\xbb\x9d\x6e\x77\x44\x5d\xf4\xd4\x64\x52\xb7\xbb\x89\x27\x12\xe4\x88\xaf\x63\xb8\xac\x0d\x91\x93\x20\x0e\x1b\x2f\x15\x0f\x98\x04\x72\xc7\x80\xa9\xe9\x7a\x3f\x1b\xe6\x9e\x1b\x39\xcd\x1e\x89\xba\xdb\x68\xad\x68\xa6\x9c\x55\xac\xd9\xa3\x19\x3b\x16\xcd\xae\x85\x72\x12\xd4\x1e\xab\x66\xcb\xec\x37\x09\x68\xaf\x65\xf3\x20\x73\x1d\xb0\x6e\x4e\x32\xc6\xa2\x21\x83\xac\x9d\xf2\xdd\x9a\x4e\x3c\x6f\x8f\x61\xe2\x43\xfb\x99\xf9\xd0\x74\x53\x1f\xda\xf7\x1c\x4d\x35\xf9\xa1\x89\x66\x3f\x34\xc1\xf4\x87\xa6\x9a\xff\xd0\x54\x13\x20\x9a\x8c\x17\x2d\x0e\xbe\x1b\x6d\x09\xde\x3f\xe2\x8a\xf7\x8d\x4d\x79\x02\x25\xec\x4a\xb4\xb6\xb1\xb8\x96\xb7\x72\x5c\x28\x0e\xf7\x7f\x94\x98\xa4\x0f\xe5\xff\x8d\x95\x65\x30\x2d\x85\x52\x9b\xac\xf9\xdf\x83\xe4\xac\x75\xde\x47\x23\x81\xab\xd9\x51\xd1\x69\x99\x86\x99\x33\x30\xa8\x99\x77\x65\xf4\x58\x19\xf1\x61\xcd\x85\x91\xe7\xea\xe2\xbe\x2f\xee\xc9\xf6\xc5\xe9\x3e\x7c\x53\x01\xb9\x66\x2f\x8c\xe0\xb9\xe3\xd1\x71\x52\x6d\xac\x12\xc1\xb2\x2d\x7a\xa1\x21\xbd\xe8\x89\x0e\x9e\xa8\x04\xec\x61\x46\x8f\x7a\xa9\xee\xa5\x3e\x35\xfc\xa2\x01\x50\x5b\x27\x9d\xf9\xa7\xf9\x53\x8c\xff\xc0\x49\xbf\xb7\xbb\xb2\x2b\x7a\xe9\x2c\x4a\x78\xa5\x76\x4a\xbe\x0a\x97\xdd\xf2\x96\xda\x8a\x09\xd7\x41\x23\x39\xc1\x4c\xa0\x17\xce\x8e\x7d\xe2\xf5\x96\x0f\xdb\xc0\xdc\x88\xbe\x47\x26\xf1\x8c\x78\xde\x28\x6d\x68\xf9\x3f\x62\x54\x93\x8e\x25\xcb\xda\xf7\x9b\xa2\x9c\xb5\xf1\x1f\x6a\x72\x51\xe3\xa5\xb3\xdb\xbc\x52\xf8\x67\x5c\x7a\x60\xd0\x4b\xcc\x24\x9d\xd5\x4f\x44\x80\xad\xad\x39\xda\xe4\xe8\xa7\x61\xb5\x29\x28\xd6\x2c\xe2\x17\x28\x6f\x68\xf8\xd4\xb6\x69\x98\x84\x01\x2a\x90\xeb\x6b\x8d\x45\xdd\x2f\x96\x33\x67\x86\x37\xec\x6e\xbc\x67\xcf\xee\xb0\x66\x45\xa3\x2c\x6a\x6c\xe8\xe8\x94\x66\xdf\x23\x2a\xa4\xb9\xa1\x75\x47\xbe\xd4\x75\xbc\xf5\xd4\x38\xb3\xc7\x59\xfd\xe2\x2c\xe6\x1a\xb3\x51\x18\xd0\x7b\x44\xeb\xb5\xcf\xd1\x95\x3e\x86\xfe\x64\xa9\xee\xe6\x16\x01\xd3\xb5\x95\x8f\x3c\x44\x11\x27\x2f\x4e\xde\x9a\xf9\xcb\x79\x0c\x47\xe6\xe4\xd4\xc5\x87\x47\x4a\x5d\xec\x98\x78\xff\xa9\x32\x17\x23\x8d\xf7\xc7\xf4\xc5\xb1\x71\x4c\x5f\x8c\x4c\x5f\x04\xad\xdf\xdc\x0c\xe0\x3c\xc6\x20\xcc\x26\xcf\x71\x34\x8f\x11\xfd\x62\xbb\xbb\x03\x8c\x5f\x6a\xab\xf3\x2a\x93\xb4\x68\x82\x94\x84\x99\x6a\x66\x8c\x1b\x4b\xeb\x22\x6f\x71\x1e\x88\x87\x52\xfb\x7d\x3b\xc7\x54\x7f\x4f\x07\x31\x09\x7d\x83\x9d\x1a\x37\x31\x1e\xe9\x5c\x55\x43\xd4\xf9\x8b\xce\x2a\x62\x7c\xf5\xa3\xad\x21\xcd\x98\xe2\x42\xbc\xd4\xb2\x82\x68\x7c\x3c\xfa\xf6\x7c\xa9\x84\x91\x4c\x91\x99\x12\x16\x1c\xef\x06\xb0\xc1\x5d\x99\xda\xd8\x3e\x37\xc4\x39\x72\x57\x74\x43\x58\x23\xec\xbc\x14\xaf\x20\x82\x98\xb5\x33\x8f\x08\x89\x6d\xd1\x0f\xe4\x89\x1c\x13\x0e\xf5\xad\x35\x49\x10\x8b\x10\xc0\xac\x90\x03\x00\xda\x11\xbc\xfe\xdd\xbb\xfd\xff\xee\x39\xbf\x6b\x81\x0a\xe8\x89\xf5\x44\x2e\x8d\xd8\x5a\xe8\x6a\x48\xa1\x11\xa4\x0e\xec\xb3\x9d\xe0\xac\x7c\x3c\x47\xe5\x44\x27\xe5\x17\x4b\x61\x1d\x76\x4c\x22\x1e\x13\x1f\x1a\x72\x4a\x4e\xcd\x6d\x98\x60\x8b\xd8\x37\xa9\xe1\x40\x8e\xc8\x63\x56\xc3\xc0\x17\xf7\xf2\x13\xf7\x39\x1c\x35\x0e\x26\x39\x5f\xff\xf0\xc9\x0d\x3d\x0e\x46\xe7\x2c\x8c\x46\x48\xaf\x73\x71\xc7\x51\x38\xd9\x99\x2a\xfa\xb3\x1c\x82\x0d\xfb\xfa\xc6\x3e\x4e\xc5\x2f\x99\xdc\xb0\xeb\x48\x6c\x9c\x82\x13\x9d\x9b\x3b\x8e\xb9\xae\x43\x70\xd2\xc1\x08\xa4\x39\x44\xc3\xec\x99\xe3\x53\xa5\x39\x4c\x72\x02\x1e\x63\xfc\x8f\x31\xfe\x93\x73\x43\x63\x1d\x7b\xfb\x3a\xf5\x26\xed\xf2\x23\x3a\xf3\x1e\xcd\x91\xf7\xc8\x4e\x3c\x98\x03\x0f\x45\xb1\x13\x80\xf3\x4e\xbb\xe3\x62\x40\x1e\xd2\x71\x17\x7d\x2e\x22\x5f\x88\x75\xd6\x3d\x9a\xa3\xee\x71\x9c\x74\x8f\xe1\xa0\x8b\xe2\xf5\xd1\x67\x3f\x8e\xa7\x45\x3b\xe4\xe0\xce\x38\xcf\xce\x02\x5c\x6b\xd0\x11\xd7\x76\xaf\xc5\xb0\xec\x5e\x27\xdc\x8e\x6b\x2d\xda\x41\xbd\x6b\xf7\xe9\xb7\xea\x40\x11\x30\x62\xfb\xe9\x58\x76\xe2\x1d\xae\x7d\xd6\x9f\xb6\x6d\x07\x08\xb3\xc7\xe9\x06\x70\xa5\x41\xed\x2b\xda\xe1\x16\xe7\x46\x8b\x3a\x23\x31\xfe\x94\x98\xe9\x1f\xdc\x45\x02\x4e\xbb\x63\x92\xee\x9b\x7a\xe7\x9f\xb2\x9d\xfc\xbb\xd1\xd5\x18\x0f\x00\xde\x70\x9a\xa2\xa2\x92\xd2\x1c\x34\x40\x0e\xde\x28\x54\x9b\x9f\x77\xcc\xc1\xdb\xcd\xc1\x6b\x6d\x95\x97\x99\x15\x84\x39\xe0\x16\x1a\x4e\xc4\x0b\xcf\xd2\x4f\xd4\x83\x24\xe2\x05\x21\xee\x24\xea\x01\x13\xf1\xc2\x8b\x6f\x27\xea\x85\x13\xf1\x82\x10\x77\x12\xf5\x42\x89\x78\x60\xce\xd4\x25\xcd\xe1\x3d\x0f\xc3\x0c\x66\xeb\xf5\x66\xe3\xc1\x16\x3f\x96\xad\xb7\x9b\x8d\x07\xdb\xfb\xe1\x6c\xbd\x40\x36\x1e\x80\x58\x9f\x4d\xaf\xc3\x63\x36\x9e\x7b\xfa\x98\x8d\x87\x8e\xd9\x78\x76\x1c\xb3\xf1\xa0\xe3\x98\x8d\x77\xcc\xc6\x3b\x66\xe3\xe9\x71\xcc\xc6\x3b\x66\xe3\x0d\x8c\x63\x36\xde\x31\x1b\xef\x98\x8d\x07\x1d\xc7\x6c\xbc\x9e\x71\xcc\xc6\x3b\x66\xe3\x1d\xb3\xf1\x8e\xd9\x78\xc7\x6c\xbc\x66\x1c\xb3\xf1\x8e\xd9\x78\xc7\x6c\xbc\x7a\x1c\xb3\xf1\xba\xe3\x98\x8d\xa7\xc7\x31\x1b\xaf\x93\x8d\xd7\x72\x62\xfd\x71\x53\xf2\xfc\x65\x40\xc9\xe5\x98\x97\x77\xcc\xcb\x3b\xe6\xe5\x1d\xf3\xf2\x8e\x79\x79\xc7\xbc\xbc\x63\x5e\x5e\x3d\x8e\x79\x79\xc7\xbc\xbc\x63\x5e\xde\x31\x2f\x2f\x30\x8e\x79\x79\xc7\xbc\xbc\x63\x5e\xde\xf8\x38\xe6\xe5\x1d\xf3\xf2\x8e\x79\x79\xde\x38\xe6\xe5\x1d\xf3\xf2\x8e\x79\x79\xc7\xbc\xbc\x63\x5e\xde\x31\x2f\xef\xc9\xf3\xf2\x82\x8f\xe0\x72\x35\xc8\x69\x5a\x27\xf9\xe4\xbc\x5c\x55\xe6\x92\xb1\xe6\x57\xc2\x64\xb9\xd5\xa6\x7f\x73\x11\xa5\x3c\xb9\x27\x25\xa2\x39\x5e\x91\x93\x11\xed\xf3\xe2\xfd\xa5\xda\xc4\x4a\xa8\xb3\x60\xd3\x77\xec\xa6\x16\x25\xdf\xd0\x94\xa4\x4a\xd3\x2c\x29\x5e\x64\xea\x7a\x5b\x92\x92\x30\x75\x03\xfc\xf9\xe5\xcf\xe7\x1f\x7f\xfd\x70\xfe\xfe\x6a\x98\x5f\xa8\x0b\x90\x7c\x2e\x30\x4b\x49\x8a\x2a\xe1\x4e\xb5\xbd\x69\x49\x79\x72\x22\x10\x61\x1b\x5a\x72\xa6\x16\xa3\x75\x27\x8c\x36\xf6\x6b\x83\x60\x13\xcc\xac\x5b\xa6\x24\x82\x67\x1b\x92\x1a\x91\xa0\x9e\x9d\xe3\x14\x94\x15\x95\x74\xe1\x9e\x0f\x74\xc4\x42\xbf\x20\xa8\x62\xc9\x1a\xb3\x95\x5a\xaf\x42\xa0\xb7\x3e\x24\xb6\x4c\xe2\xcf\xea\xbb\x5a\x91\x11\x09\x2e\x9c\x27\x74\xd8\x64\x94\xf2\x4a\xa1\xec\xcf\x7f\x3e\x45\x94\xbc\x41\x7f\xf6\x00\xce\xd1\x95\x85\xe1\x21\xd4\xb8\x9b\xc8\x66\xc4\xdd\xb8\x68\xd0\x79\x8a\x4a\xb2\xc2\x65\x9a\x11\xa1\x1d\x1c\x0f\x6b\xa2\x93\x22\x8d\x58\x63\xb7\x8b\x38\x9d\x6e\x10\x22\xe3\x72\x8e\x2e\x6a\x7c\x1a\x3f\x4f\x3a\x47\xef\xb9\x76\x72\x2c\xf9\x1b\xb4\x96\xb2\x10\x6f\xce\xce\xee\xab\x05\x29\x19\x91\x44\xcc\x29\x3f\x4b\x79\x22\xce\x24\x16\xf7\xe2\x8c\x32\x45\xd0\xb3\x14\x4b\x3c\xd3\x97\x78\xa2\xed\x16\x67\x86\xaf\xce\x12\x9e\xe7\x98\xa5\x33\x6c\x49\x76\x56\x6f\xff\xd9\x37\x96\xff\xcc\x70\xfd\x14\x65\x33\x3c\x13\x6b\x92\x65\x27\x03\x93\x0e\xdc\xc7\x00\xee\x12\x3a\xd0\x84\x6d\x40\xa7\xf0\x9d\xed\xe6\xee\x91\x70\x8d\x7b\x7d\x30\x05\x91\x8e\x14\xeb\x45\x0f\xf3\xc8\xdd\x6d\x98\x86\x81\xd6\x1c\xaf\xd8\xe6\x67\xdc\xb6\x47\xb1\xde\x09\x23\xfb\xc0\x08\x8b\xa3\xea\xbe\xbb\x08\x2f\x04\x66\x8c\x54\xd7\xf2\x38\x57\x6f\x2d\xe4\x03\xce\x9b\x04\xd2\x9e\xf9\xcf\xd1\x7b\x63\x68\x08\x70\x73\x8c\x2e\x7e\xbd\xbe\xbc\xfa\x70\x77\xfd\xf6\xfa\xea\xe3\xf8\x8d\x05\xbc\xa9\xf4\xbd\x1f\xb1\x94\x93\x00\x3f\x6d\xf1\xcd\xc0\x72\x1a\xae\x5a\x94\x64\x43\x79\xd5\xc8\x33\xfd\x64\x49\x59\xe8\xba\xf3\xa9\xd5\xda\xb7\xb7\x48\x90\x72\x43\x93\x7e\xd4\x07\x2d\xd5\x2d\xb6\x0e\x66\xdf\x21\xaf\x68\x97\xb9\x83\x98\x78\x00\x68\x2f\x8b\x07\xb1\xf2\x00\xe0\x5e\x46\x0f\x60\xe8\x80\xcd\xda\x65\xf7\x86\xad\x5f\x92\x25\xae\x32\x23\x22\xbc\x78\x31\x1f\xe2\xa7\x16\x50\x04\xa9\xbf\x2d\x79\x20\x29\xb3\x45\xee\xb7\x26\xe1\x79\xc9\xcb\xc1\xc3\x7b\x62\x7d\x30\x21\x42\xf2\x58\xa4\x15\x58\x8c\xcc\x6d\x25\x16\x80\x35\x14\xee\x28\x49\x38\x5b\xd2\xd5\x7b\x5c\xfc\x83\x6c\x3f\x92\x65\xa4\xff\xdd\x28\x2d\xd6\xfa\xaf\xc5\x77\xc5\x39\x0d\xc0\xb0\x98\x1c\xe7\xce\x01\x3b\x71\x76\xd2\x8d\x4d\xd8\x9f\xd5\x0b\x1e\x41\x7a\x87\x70\xf9\xde\xc9\x9d\xf8\xec\xde\x9e\x1d\xe9\x8b\x25\x40\xfd\x64\x44\x78\x49\x38\x4b\x48\x21\xc5\x19\xdf\x28\xde\x46\x1e\xce\x1e\x78\x79\xaf\xa4\x11\x75\xea\x67\x46\x4c\x17\x67\x5a\x7b\x3c\xfb\x46\xff\x1f\xf0\xa3\x77\x3f\x5d\xfe\xf4\x06\x9d\xa7\xa9\x2d\x54\x51\x09\xb2\xac\x32\x9b\x83\x3d\x47\xb8\xa0\x3f\x93\x52\x50\xce\x4e\xd1\x3d\x65\x29\xd4\x26\x56\xd1\xf4\x7f\x8e\x1f\x62\x37\x22\xf7\x88\x17\xc6\xdc\x39\x61\x9f\x6e\xb5\x2e\xbe\x6d\x89\x9f\x35\x9d\xc3\xe2\x35\x90\x96\x68\x84\xa6\x45\xe7\x2b\xb0\x57\x58\xc4\x62\x17\x9c\x67\x04\x87\xee\xb6\x38\x7d\x12\xa2\xb7\x47\xe8\x91\x7a\xff\xe3\x39\xc9\x49\xc3\x4a\x8c\x1d\xd4\x9e\x8a\x82\xa7\x6f\x90\xa8\x8a\x82\x97\x20\x17\x7e\x4e\x24\x56\x32\xfa\x5c\x91\xf2\x69\xfb\x9f\xda\x3c\xe2\xfd\xa6\x8d\x17\x20\x63\x6d\xfd\x8a\xe6\xcc\xc6\x61\x79\xaa\x4d\x34\x73\xc6\x53\xf2\x41\x7f\x4b\xff\xd3\x4a\x10\xe7\x49\xc2\x2b\x26\xf5\x1f\x00\xf0\x85\xc4\xb2\x12\xf3\x35\x17\xf2\xfa\xe6\xd4\xfd\xb3\xe0\xe9\xf5\x4d\xe0\x46\x43\xd1\x7c\xb4\x39\x98\x13\x4e\x82\x7d\xd3\x2f\x00\x92\x63\xfd\x9f\x6f\xd5\xae\xdd\x60\x09\x35\xd8\x50\x81\x1e\x4a\x2a\x25\x61\x5a\x10\xd2\x31\x63\x7c\x79\xaa\x0e\x45\x73\x9f\x6f\x5e\xbf\x78\x14\x7e\xbd\x74\x93\x9d\x80\x02\xf5\x9a\x5b\xbf\x21\xd5\xfa\x6e\x81\x89\x74\x6e\x34\x21\x91\xe7\x37\xd7\x68\x63\x30\xfb\x85\x8d\x4b\x4b\xf0\x2e\x46\xb0\x04\x17\xcf\xf4\x76\x6f\xd6\x50\xd7\x95\xb1\xf8\xaf\x25\x78\xc8\x3e\xea\x54\xa4\x3a\xb6\x0a\x65\x34\xa7\x36\x71\xd8\x56\xa9\x11\xe8\xa5\xf9\x71\x9e\x14\x15\xe4\xd8\xda\xa7\x73\x92\xf3\x72\x7b\xea\xfe\x49\x8a\x35\xc9\x49\x89\xb3\x99\x90\xbc\xc4\x2b\x72\x5a\x7f\x00\x0a\xb8\x7e\xde\x80\x6e\x4d\x72\x17\x3e\xc4\x94\xad\x94\xad\xa4\x2a\x95\x80\x91\x6d\x1d\x43\x25\xe9\xc1\xb9\x4b\xbd\x23\x1f\x26\x8a\x44\xb5\xe6\x6d\x84\xaa\x9a\x7a\xb5\x64\xbd\xe1\x59\x95\xc3\xe3\xe2\xdc\x95\x6f\x8a\x1d\xb1\x8d\x92\xc4\xc5\xa3\x08\x17\x29\xdd\x50\x31\x29\x10\xf0\xb6\xf6\x31\x69\x7f\x5f\x25\x95\xbe\x67\x22\xf9\xe1\x01\x96\x6a\x90\xcf\x05\x17\xda\xd8\xe6\xa2\x07\xdb\xbc\xf4\x35\xcc\x11\x14\xb9\x70\xf7\xb5\x29\x5b\xed\xea\xd7\xbc\x69\xce\x75\xcd\x4a\x1f\x61\x97\x62\xf8\xa0\x9b\xd0\x21\xd9\xa0\x20\x49\x49\xe4\xa1\xf4\x2c\x03\xcd\x19\xde\xb4\xcf\x2f\xc6\x33\xfa\xac\x94\xb3\xda\x71\xa3\x97\xd4\x5c\xa7\xcb\x92\xe7\x73\xa4\x4d\x5e\xc0\x43\xb0\x20\xda\x06\x93\xd1\xd4\x41\xbb\x27\xc0\xc8\xa1\xa3\xca\x17\x1c\xff\xe4\x2a\xdf\xad\xa1\x28\x5e\x2a\x4d\x0e\xb8\xb6\xaf\x5c\xdf\x03\x3d\x18\x9e\xdd\x4c\x1f\xa7\x80\xb7\x03\xe0\x75\x1c\xf6\x76\x68\x17\xe1\x4d\x95\x65\x66\x13\x61\x0e\xc8\xeb\xce\x4b\x36\x86\xb2\x16\x2b\x6c\xc4\xba\x67\xf6\x1c\x5e\x02\xb7\x0c\x49\xb4\x0b\x83\x3a\x7e\xac\x1e\xa8\x84\xb1\x1f\x16\x55\x66\x4b\x1f\x6e\xc7\xe2\xe1\xb5\xef\x4f\xcd\xd0\x3a\x36\x5d\x62\xd5\x0d\x4f\x15\xf5\x6a\x3f\x63\xad\x63\x68\xe3\xb3\x70\x3c\x76\x78\x9e\xce\xc4\x5c\x60\xa1\x60\x4a\x8e\x28\x53\xc2\x4d\x5a\xe1\x4c\x4f\x4c\xbb\x5b\x0b\x13\xfb\x64\x14\x61\x67\xf3\x1c\x4e\xf2\x33\x6b\x3b\x84\xa3\xe7\x1d\x4f\x70\xf6\x93\x26\x84\x8f\xb5\x21\xbd\x8e\x69\x22\x4c\x57\x73\x54\x7c\x54\xc9\x4f\x94\x8f\x9d\x1c\xc9\x51\x46\x24\xda\xf2\x0a\x99\x30\x89\xb6\x79\x3e\xb5\xf4\x86\x28\x13\x34\x25\xf5\x96\x05\x7c\x3d\x7a\x33\x9f\xd8\x69\x14\xbc\x53\x9e\xf6\xb6\x88\xbd\x25\x00\xfc\x1f\xc4\xf7\x0f\xc1\x25\x18\x95\xb5\x02\x02\x0c\x52\x70\xfe\x51\xf5\x2e\xc5\x19\xfd\x5d\x13\x5e\xa3\x08\x09\xb4\x20\x19\x67\x2b\xed\xc1\x1a\x4e\x1d\xb4\x52\xdc\x1c\x5d\x33\x2a\xfd\xb7\x8d\x9b\x8c\x24\x95\x0e\xe4\x61\x88\x97\x29\x29\x51\x51\x52\xae\x6b\xeb\x36\x4f\x0e\x82\x5e\x10\xf5\x6d\x21\xb1\xd6\xf8\xb4\x9f\x8a\x6d\xf5\x7c\x3d\x17\xd8\x12\xd3\xcc\xe6\x13\xea\xea\xc5\x42\xfd\x4d\x51\xfe\x58\x8d\x4c\xc9\xd1\x1a\x6f\x88\x7e\x99\x98\x5a\xa8\x54\xa0\x35\x66\xa9\xfe\x67\x92\xf0\x32\x35\xeb\xd6\xc6\xcf\x92\xe8\x49\xdc\xf0\x8c\x26\x23\x52\x99\x12\x0b\x15\xa1\x69\xc6\x82\x59\x77\xa6\xda\xf3\x53\xe6\x38\xf3\x7e\xcb\x03\x5e\xd1\x8a\xd1\xdf\x2a\x82\x70\xce\x15\x5f\xcd\xbc\x57\xc5\x2e\xc6\x5d\xb2\xa7\x5a\xda\x20\xc4\x77\x74\x49\x92\x6d\x92\x11\x84\x13\x6b\x0f\xfc\x48\x70\x4a\x19\x11\x42\x1d\xf3\x85\x52\xc0\x78\x89\xde\xd1\x0d\xf1\x7e\x1b\x2f\x9b\xe8\xd4\x8e\x8f\x7e\x80\xa5\x8e\x8a\xea\x22\x41\x17\x6c\xc5\xf7\xda\x7a\x26\xb9\x46\x75\x35\xe2\xd6\xb6\x81\xe4\x5e\x96\xf0\x62\xab\x2b\xa2\x3a\xbf\xaa\x2b\x06\x6b\xad\x0c\x67\xff\x1f\x7b\xdf\xde\xdc\x48\x6e\xe4\xf9\xff\x7d\x0a\x84\x7c\xb1\xea\x8e\x10\xa9\x6e\xbf\xc2\xe7\xb5\x1d\x21\x77\x6b\xc6\x0a\x77\xab\x19\x2d\xcd\xf8\x7c\x71\x11\x13\x60\x15\x48\x62\x55\x04\xca\x00\x4a\x12\x77\x6f\xbf\xfb\x05\x32\x81\x7a\x90\xac\x02\x40\x91\xdd\xed\x71\xd5\xfe\xb1\x9e\x16\x2b\x0b\x8f\x44\x22\x1f\xbf\xcc\x04\x5f\x86\xdd\x80\x5e\x92\x90\x35\xda\x18\x6e\x9b\x92\xd5\x90\x53\xd1\x0a\xd8\xae\xe9\xb3\x9d\x01\x48\x27\x6a\x02\x45\x1c\x5c\xf0\xcc\x15\x2c\xc6\xfc\xe3\xee\x4e\xeb\x29\xf9\xe0\x1c\x37\x8a\x39\x34\x65\x3e\x74\xae\xf8\xd6\xe6\x42\x78\x5f\xf3\x35\x2f\xa8\x65\x7a\xbd\xe2\x52\xec\xb2\x00\x46\x6f\x7b\x89\x36\x9e\x94\xb9\x2f\x35\x0b\xe9\x30\x6b\xf9\x68\x4f\xd8\x20\xd4\xa4\x97\x68\x8c\x90\xb6\xb2\xb9\x90\x34\xd7\x97\xa5\xcc\xf5\xa5\x9d\x5c\x83\x34\xd1\x97\x07\xa2\x49\xb6\x72\xd1\x1c\x82\xba\x85\x72\x69\x31\x1e\xec\xa2\xbd\x34\x9f\xe8\x20\x8c\xc2\x48\xa2\x2a\x01\xb1\x65\x58\x72\x2b\xdb\x5e\x78\x2d\x0e\x01\xc7\xf6\x4c\x24\x16\x3e\x16\xb8\xce\x3c\xb8\x2c\x0d\x44\x16\x74\x89\x06\x21\x11\x3d\x50\xb2\x00\xe1\x7e\xa0\x59\x18\x91\x10\x5a\x88\x1e\xb8\xd9\x30\x22\x21\xe4\x14\x19\x00\x9d\x0d\x22\x12\x02\x74\x07\xa1\x67\x7d\x88\x84\x00\xcd\x20\x00\xad\x0f\x68\x16\xa0\xfb\x0d\xc3\xd0\xf0\x89\x02\x87\x47\xdb\xe6\x71\x48\x53\x37\xc6\x94\xf3\x7e\x5d\x1f\x6f\xa4\x3e\x25\xb7\xd2\x34\xba\x93\x17\x45\x21\x8e\xb4\xeb\xb1\x17\x5e\x4a\xae\x6f\xef\x3f\xff\x7d\xf6\xe9\xe6\xf6\x7e\x5b\x10\x84\x8e\x4e\x22\xd6\x34\xa2\x30\xea\x09\x10\xa7\xf8\x1c\x84\x3b\x0d\xd0\x8c\x06\x2e\x6d\x09\x82\x20\xd9\x68\xe0\x52\x8c\x8d\xde\x1a\x6b\x2c\x70\xa9\x23\x08\x82\x3b\x16\x10\x13\xa3\x20\xd8\xbb\x6c\xfd\x38\x55\x7c\x0e\x45\xab\x86\xce\x41\x0d\x01\x4d\x95\xe8\x51\xab\x74\x18\x7e\x35\xc2\x6d\x0f\x04\xa2\x51\xac\xfe\xad\x78\x67\x7f\xac\xe3\xfb\x00\x5c\x6b\x94\x67\x14\x5c\xfc\xf1\xe8\x56\x7c\x92\x1c\xc7\x11\x48\xd7\x3d\x53\x8c\xc1\xbb\x46\x4d\x70\x8f\x64\x1f\x42\xbd\x46\xd1\x6c\x23\x63\xe3\xb1\xaf\x69\xa4\x23\xf5\xcd\x28\xa2\xe1\x24\x87\xee\x75\x12\x45\x34\x25\xe1\xc1\x5d\x2a\x51\x74\x93\x92\x1f\xa2\x28\x9e\xe2\xfa\xc1\xe7\x25\xe8\x59\x7c\xd2\x8f\x52\x18\x49\x8b\x4f\x3a\x9e\x36\x92\x41\x8b\x8a\x4d\x8f\x80\xaa\xc5\x27\xb5\x08\x49\x32\xc2\x16\x9f\x23\xe2\x6c\x0f\x1b\x37\x49\x2f\x9c\x72\x0c\xe4\x2d\x3e\x07\x65\x97\xc7\x87\x64\xf7\x0c\x77\xc0\x89\x9e\x40\x92\x7c\x0d\x87\x7b\xf7\x89\x77\xbf\x27\x91\x8d\x75\xd5\x77\x9f\x83\xf6\x31\x2d\x6c\x8b\x4f\x3c\x5e\x37\x69\xd6\x18\xeb\x3d\x38\x8a\x8b\x4f\x5a\x2c\x17\x9f\xd4\x9a\x16\x29\xf5\x2c\x92\xd3\xef\xe3\x31\xbd\xf8\x9c\x04\xd9\x8b\xcf\x69\xf0\xbd\x5b\xb4\x4f\x84\xf2\xc5\xe7\x65\x58\x5f\x7c\x0e\x91\xe5\xa9\xb8\x5f\x7c\x4e\x84\xfe\xc5\xe7\xb8\x18\x60\x7c\x0e\x92\x38\x89\x78\x60\x7c\x62\x51\xc1\x89\xd7\xc7\x56\x89\xed\x64\x6c\x30\x3e\x07\x2c\x43\xba\xc8\x89\x47\x0b\xb7\x07\x95\x20\x78\xd2\x91\xc3\xf8\x9c\x04\x3f\x8c\xcf\xf1\x51\xc4\xf8\x9c\x0c\x4b\x8c\xcf\xf1\x11\xc5\xf8\x1c\x8e\x2b\xc6\xe7\x10\x49\x76\x00\xc6\x18\x9f\x78\xa4\x71\xd2\x99\xf5\xa8\xe4\x97\xe0\x8d\xf1\x39\xac\xa8\x52\x0a\xf6\xd8\xbd\x12\x89\x40\x4e\xd3\x95\xea\xbe\xb7\x03\x38\xe4\x24\x8a\xb1\x98\x65\x7c\x0e\x5a\xbc\x34\xfc\x32\x3e\xc7\x46\x31\x1f\x3c\xfc\x74\x89\x1d\x8d\x6b\x6e\x8f\x29\x41\x60\xa7\x61\x9c\xf1\x49\x42\x3a\x47\x2f\xe8\x56\x15\xa4\x6f\xdc\x48\xee\x41\x40\x27\x9d\x96\x16\x5a\xfa\x25\x38\x68\x7c\x46\x03\x7c\x34\xc0\x8f\x6b\x80\x23\x86\x76\xb4\xbe\x13\x65\x6a\x52\x9e\x5d\xdc\xa8\x03\x68\xeb\xc4\xef\x46\x47\xf1\x12\x0b\x2a\xf8\x48\x9e\xd7\xb4\x8d\x24\xa5\x2c\xab\x82\x9a\x9e\xfa\x1c\xa1\x18\xfc\x76\x89\x1a\x2f\x7c\x9b\xa8\x4a\x0d\x56\x72\xf7\xf8\x3a\x1c\x93\xda\x8d\x46\x91\xab\xa2\x20\x5c\xa0\xf0\x05\xf2\x3e\x5c\xa1\x18\x2a\xc7\x01\x92\x14\xa3\x7f\x8f\x76\x72\x4f\xae\x41\x44\x2b\x5e\xc3\x35\x42\x39\xa1\xa2\x19\x34\x90\xa0\x11\xdc\xe7\xfc\xfe\x5c\x34\x4d\x24\x6a\xf5\xac\x2e\x12\xb9\xdd\x01\x27\xc4\x22\x50\x00\x4e\x1b\xbf\x5c\x30\x4f\x43\x1f\x20\x5e\x95\xb1\x9c\x89\x8c\x41\x01\xe7\x8a\xe9\xc8\x83\x3b\xb7\x96\x09\xb9\x16\x8f\x75\x18\xa6\xc2\xd0\x36\x5e\x93\x7b\xbf\x10\x20\xf9\x25\x82\xb7\x96\xb5\x5d\xc0\xa2\x15\xc3\x85\x1b\xdd\xdb\x9b\xc1\xa3\x5e\x57\xbe\xae\x3d\x95\x21\x8e\x4e\x51\x56\xea\x28\x44\xa4\x62\xb6\xa3\xa5\x34\xf5\x0e\xba\xf9\x59\x27\x88\x98\xa4\xa8\x11\x27\x49\xae\xfa\x4a\xe9\x55\x27\x51\x1d\xd2\xd5\x86\x64\x95\x21\x55\x5d\x48\xa8\xad\x11\x21\x81\x9b\x27\x59\x3d\x48\x55\x0d\x92\xae\xee\x52\xb1\x05\x7f\x4e\x3e\x6b\x57\xad\xfc\x22\x9e\x33\x61\xac\x69\x0e\x48\xff\x52\xb1\x92\x89\x41\xb0\x73\xfb\x01\x7c\x36\x74\x2e\x10\xdd\x45\x9d\xb6\x4c\x84\x93\xe2\x28\xd0\xf2\x38\x54\xe0\xdc\xed\xcb\x06\x1d\xa5\xcd\x28\x6d\x8e\x2d\x6d\x1c\xa3\xfd\xd3\x8a\x9a\x23\x6b\xea\x80\x76\x4d\x81\xdd\xbe\x6f\xa1\x64\xe1\x34\x25\xa7\x9e\xb5\x32\x18\x30\xa1\x31\x30\xe3\xfb\xa6\x7f\x1c\xd7\x8d\xb8\x34\x12\x4b\xf4\x62\x32\x8b\x22\x05\x7b\x64\x85\xd3\x7c\x02\x14\xd7\x54\xd0\x25\xd6\x73\x37\xd2\xfb\x2b\xad\xfd\x69\x8f\x9d\xe2\x79\x47\x01\xc7\x9c\xcb\x60\x89\x41\x9f\xab\x01\xaf\x2a\x59\x14\x4c\x69\x52\xf0\x07\x46\xde\xb3\xb2\x90\x1b\x57\x3e\x5d\xe4\xe4\xce\x50\x63\x8f\xde\x1d\x33\xfa\x38\x15\xec\xea\x74\x57\xcc\xb5\x4a\xd9\x4e\x48\x7a\x85\x54\x4f\x52\x62\xa2\x16\xf9\x24\x40\xce\x5d\x15\x4f\x74\xa3\x2f\xc8\x2d\x7b\x64\x2a\x24\x13\x6e\x16\xb7\xd2\xcc\x50\x15\xee\xe2\x8c\x90\x0c\xe1\x0b\xf2\x7b\x68\x20\x64\x88\xa1\x4b\x30\x6b\xea\x64\xd5\x00\x6d\xa9\x3a\xe4\x51\x7c\x3d\x71\xcd\x0e\x4d\xbd\xc1\xe7\x20\x56\xfd\x05\x7c\xc7\x0a\x64\xfc\xef\xa3\x6c\x5f\xe1\x93\xcb\x12\x36\xee\x0a\xd3\xd0\x7c\xb3\x39\xd6\xe6\x69\xd7\xcc\x10\x2b\xa2\x87\xc4\x89\x35\xaf\xb8\x20\xd8\x43\x10\x9b\x33\x36\xcc\x5f\x8f\x0c\x0d\x54\xed\x57\x3c\x6c\x26\x47\x59\x5f\xf1\x97\x77\x29\xb5\xb9\xb3\x76\x70\x6a\x35\xa1\x99\x7f\x11\x72\x1c\x69\x51\xb0\x9c\xf0\xf5\x9a\xe5\xd6\xee\x2d\x36\x84\x2e\x4c\x44\x2f\x54\x6b\xaf\x75\x6c\xf2\x4c\x31\xea\xd3\x2b\x21\xa1\x0e\x92\x20\xdb\x79\x95\x11\x34\x3b\x14\x0d\x53\x6b\x2e\xc0\x18\xc7\x68\x9d\xcb\xe0\x6c\xf2\x2a\x63\xee\x91\x4e\xe6\x65\x73\xa2\xe1\xf6\x6b\x71\xc8\x76\x40\x34\x82\xf4\xbc\x90\xd9\x83\x26\x95\x30\xbc\xc0\x29\x4b\xf9\x40\x32\xb9\x2e\x0b\x38\x3b\x2f\xb8\x05\xea\xff\x39\xa9\xf9\x6d\x62\xa9\xeb\xcb\x5f\x34\x7f\x82\x7f\x38\x76\xfd\x22\xf6\xcc\xb2\x03\xca\x45\x58\x09\x69\x37\x09\xa2\xc3\x52\xd4\x6a\xe1\x42\xda\x0b\x29\xde\xf7\xda\xf4\x2c\xa8\x85\xe1\x94\x5c\x3f\xb3\xac\xd5\x8b\x02\x3a\xb1\x66\x81\xec\xf6\xf6\x63\x24\x1c\xea\x53\x35\x05\x8c\xca\xd4\x69\x3f\x9d\x95\x7b\x87\x6f\xfb\xfe\x6a\x8e\x18\x29\xb8\x60\x69\xe1\x42\x97\xe7\xd3\xce\xd7\xaf\x79\x05\x7d\x5c\x4e\x73\x4e\x71\x6a\x73\x05\x4d\x19\x36\x35\x0e\xd5\x8f\x0f\xfa\x0a\x48\x69\xc8\xab\xf3\xcb\xf3\x94\xb6\xec\xdb\x6e\xc8\x73\xab\xc9\x14\x0c\x25\x34\xfa\x24\xdd\x37\x52\x88\x6a\xa2\xf9\xba\x2c\x36\xb0\x0a\xe7\xf9\x05\xe1\xc6\x03\x5b\x55\x25\xfc\x9a\xa4\x74\xfe\x83\x6c\x90\x0b\xa2\x25\x31\x8a\xfa\x56\x41\xf8\xaf\x96\x9c\x51\x15\xde\x37\x09\x24\x5f\x9d\xff\xbf\xf3\x0b\xc2\x4c\xf6\x9a\x3c\x49\x71\x6e\x60\x43\xa6\xe4\x1e\x2b\x5f\x50\xff\xc9\x8d\xac\x12\x88\x0a\x86\x65\x2a\xd8\x73\x59\xf0\x8c\x9b\x62\x03\x42\x9d\xc8\xca\x60\xda\x27\x35\x2e\xa5\x2b\x81\xe8\xf5\x33\x37\x0e\x99\x65\x4f\xf2\x1b\xe0\x4e\x14\xf0\x84\x5a\x25\xee\x91\x5d\xae\x18\x2d\xcc\x2a\xa5\x87\x8e\xe5\x1b\x21\xc5\xe4\x3f\x99\x92\x90\x40\x26\x1c\x8d\x13\xb6\x99\x3c\x28\xfe\x93\xda\x82\x2a\x31\xa4\x61\x2f\x83\xef\xd9\x21\x8d\xda\xff\x72\x7f\x3f\xfb\x9e\x99\x2d\x61\x68\xe9\x79\x30\x4b\xbc\x48\x2c\x99\x5a\x48\xb5\x3e\x95\x54\x5c\x49\x1d\x39\x43\xb2\x33\x4b\xa9\x0d\x16\x40\x40\xd5\x4b\xb0\xcc\xf2\x72\x83\xa3\x48\xd9\x7f\x59\x97\x74\xb8\x99\x4d\xc9\xdf\x65\x05\x85\x08\xe8\xbc\xd8\x40\x06\xb7\x4b\x89\x4a\xa0\x78\x66\x87\x77\x66\xe5\x98\x5d\xf7\xbf\x30\x9a\x63\x5a\xbd\x36\x8c\x26\xf7\x80\x4a\x62\xcc\xd6\xf7\x0e\xbd\x6c\x2a\x6d\xe4\x9a\xac\xdc\xa0\x53\xd2\xc1\xda\x8f\xe3\xb5\x29\xf0\x23\xda\x9c\xd0\xb4\x0f\x05\x84\xa3\xfe\xa5\x7a\xc7\xda\x31\xe0\xaa\xb8\x7f\x9f\x43\x43\xec\x0c\xa6\x9a\x14\x6e\xc5\x81\xbb\x66\xec\x98\x24\x21\x70\x8a\x58\xbb\x22\x81\xd8\xa1\x9d\x5a\x53\x11\x04\x64\x9f\xe7\xd0\xcd\x03\x1d\x04\x11\xa1\xce\xed\xe7\x65\xcd\x3a\x8f\x3b\xfc\xe1\x7a\x19\x47\x1d\xff\x61\x6d\x14\x13\xd7\x77\x92\x3c\xa3\x2f\xd4\x44\xb1\x4c\x42\xff\xee\x62\x7f\xb1\x08\x0b\xa4\x67\xa1\x86\x07\x07\x47\x33\xf5\x18\x4e\xbf\xdc\x1e\x77\xd2\xd6\x95\x32\xc6\x06\xf6\x0f\x15\x9b\x4f\xd1\xc8\x2c\x68\x37\x05\x23\xe2\xc2\xb0\x65\x94\x55\xd8\x7d\xef\x25\xfd\x21\xd1\xbd\xae\x88\xa8\xd6\x73\xa6\x9a\xb4\x01\x65\xd2\x0c\x83\xee\xb6\xb4\xe2\xff\xb7\x48\x38\x54\x3b\x68\xf7\x71\x3a\xbc\xa2\x62\xc9\xc8\x5b\xbb\xf5\xbf\xfd\xcd\x6f\x7e\xf5\x9b\x29\x0e\xd9\x43\x55\xa2\xd1\x26\xf6\xb9\xb9\xba\xbd\xfa\xe9\xee\xc7\x77\x90\x3d\x18\xcf\x2f\xcf\x93\xc6\xa2\x9e\x70\x61\x26\x52\x4d\x70\xcd\x7f\x4f\x8c\x8a\x3e\x67\x80\xe4\x4f\x90\x5c\x5d\x9f\x3a\xbc\xdc\x2e\x60\xe7\x74\x96\x34\xf1\xe3\x34\x15\xab\x37\x75\xfd\x85\xf6\x20\x9d\xf0\x04\xa5\x89\xbd\x09\x30\xe0\x29\xb4\x62\x93\x95\x77\x32\x7b\x38\x48\x2f\x3e\xbf\x7f\x37\xc3\x97\x5b\xaa\x31\x15\xce\x4d\x40\xb8\x78\x94\xc5\x63\xfc\x76\x50\x72\xff\x6e\x06\x13\x9d\xc2\xff\x02\x4f\x0b\x18\x93\x1b\xfb\x05\x0f\xf2\xc6\x00\x52\x24\xcd\xba\x68\x20\xc0\xf0\x69\xc1\xb5\xe1\x19\x50\x6f\x5c\x8a\xf6\x3b\x71\x71\xa3\x2f\xaa\x8f\x9f\x7f\xf2\x21\xa7\xbd\xaa\x79\x12\x8f\x77\x93\x5b\x5a\xaa\x79\x3c\xa8\x6f\xbc\x23\x5a\x77\x84\xbb\x1b\x10\xc3\x3f\xde\x11\xfb\x9e\xa3\xdc\x11\xdf\x86\x94\x4c\xf8\x71\xa9\xd8\x9d\x91\x65\x72\x74\x00\x5f\xeb\x89\x0d\xcc\xd9\x22\x0e\x8e\x4c\x7b\x5d\xf9\x79\xc5\x5c\x03\xe9\xab\xd9\x4d\x82\xd7\x42\x76\xdc\xf5\x88\x0e\xd4\x55\xb6\xf2\xfe\x28\xc1\xb4\xbe\x04\x27\x7f\x55\xa2\xbd\x16\x41\x74\x41\x79\x51\x29\x76\x61\x57\x8b\xad\x61\x0d\x2e\x9a\x34\x06\x3b\x05\x26\xf0\x1f\x99\xc9\x86\x4b\x17\x36\x8f\x8f\x7c\x38\xff\xa3\x5f\xc6\xad\x00\x03\xc9\x14\xd5\x2b\x36\xd8\xb7\xb1\x79\xd8\x33\x37\xda\x37\x9f\xa6\x5a\x0a\x74\xc8\xba\x65\x85\x3b\x4e\xb7\x6a\xd6\xc6\x99\xf3\x6e\xa0\x48\x76\x26\xf3\xf3\x73\xdd\x21\xb9\x54\x34\x63\xa4\x64\x8a\xcb\x9c\x40\xa6\x67\x2e\x9f\x62\x0e\xec\x9c\x2d\xb9\xd0\x8e\x5b\x60\xda\x9e\xad\xec\x0d\x87\xfd\x78\x7d\x59\xaa\x29\xf9\x1c\x5b\x7f\x8c\x34\x49\x36\xb2\x32\x99\x6c\x04\x9e\x9b\xc9\xc5\xd6\x12\x47\xd6\x9b\x00\x66\xaa\x68\x51\x6c\x1a\x46\xf5\x58\x58\xb3\x77\x69\x22\x88\xb6\x17\xef\x8b\xc4\x9b\xec\x09\x69\xfe\x76\xf8\x60\xc1\xb3\xcf\x68\xb6\x8a\xaf\xc8\x34\x86\xb0\x5a\xcf\x18\xc2\x1a\x43\x58\x63\x08\x6b\x0c\x61\xf5\x3d\x63\x08\x6b\x0c\x61\x8d\x21\xac\x31\x84\x35\x86\xb0\x9a\x67\x0c\x61\x1d\x67\xfc\x63\x08\x6b\x0c\x61\x6d\x3f\x63\x08\x6b\xdf\xf3\x33\x73\x4f\x8e\x21\xac\xaf\xef\x9c\x1d\x43\x58\x63\x08\x2b\x96\xc8\x78\x47\x8c\x21\xac\x31\x84\x35\xf8\xe3\xc8\x1f\xfa\xd8\xcf\xcc\xda\x37\x29\x79\x5e\x33\xf0\x76\xf3\x0c\x2d\x23\xcb\x77\xed\x2c\x1f\x24\x3a\x6d\x4a\xc8\x07\x26\xd6\xd4\xb8\xf0\x59\x2a\x2e\xe0\x83\xd4\x21\x0b\xe6\x64\xad\x51\xfa\xda\x23\x95\x32\x6f\xbc\xef\x2d\xb7\x3b\xda\x82\xc3\xe2\x2a\x5e\x3c\xc7\xf9\xdb\xd3\x7c\xed\x71\xa9\x5a\x04\x33\xab\x62\xfc\xec\xf1\x1e\xf4\xd4\x7e\xdf\x09\x9e\xf3\x04\xaf\xb9\xf7\x85\xc7\x5e\xcd\x21\x8f\x79\xe3\x07\x8f\xa4\x38\xec\x2d\xdf\xe3\x03\x8f\xa5\xbb\xdf\x53\xbe\xd7\xff\x1d\x3b\xf9\x5d\x2f\xf9\x90\xef\x3b\x7e\x49\x6b\x0f\x79\xc8\xef\x1d\x1d\x1a\xf2\xde\xf1\x18\x9f\x77\x0a\xd1\xe9\x09\xfc\xdd\x2f\xf4\x75\x27\xb9\xc4\x92\xd5\x88\x14\xef\x40\xc2\xfd\xe4\x00\x01\xf7\x2b\xc5\xf4\x4a\x16\x11\xe7\xba\x73\xa6\x3f\x72\xc1\xd7\xd5\x1a\x5a\x47\xda\xe3\xcb\x5d\x6f\xc8\x4a\xb1\xba\x4d\x6c\xc4\xf4\xf0\xce\x40\x27\x5e\xd3\x85\xb2\xee\x32\xb9\x30\x4c\x91\x15\x7d\x04\x39\x59\x65\x19\x63\x79\x5c\x0b\x88\xb6\x49\xf6\xab\x69\x3d\xda\xba\x0f\xc0\xdb\x30\x11\xac\x8b\x09\x9a\xe2\xaf\x7e\x19\xb9\xf2\x71\x5a\x65\x74\x48\x21\x31\x9c\x10\xa7\x45\x46\x87\x12\xd2\xae\x87\x78\x93\xe5\x24\xe1\x83\xc8\xd0\x81\x0b\x08\x44\x0b\xc6\xc3\xc3\x06\x89\xe7\x3c\x39\x5c\x10\x1d\x2a\xa8\x03\x00\x91\x93\x7e\x79\x98\x20\x49\x1e\xc6\x87\x07\xdc\x20\xe2\x4d\xcf\x17\x86\x06\x0e\x09\x0b\xbc\xa8\x2e\xe6\x4b\xc3\x01\x07\x59\xa8\xc9\x61\x80\xe3\x86\x00\xbe\x48\x2d\xdc\x84\x75\x4c\x73\xf9\x27\xbb\xfb\xd3\x5c\xfd\xf1\x6e\xfe\x53\xb8\xf8\x13\xb7\x26\xde\x6d\x93\xe0\xb2\x39\xc4\x5d\x73\x80\xab\x26\xde\x95\xef\x16\x35\x92\x3f\x42\x2e\x9a\x8e\xe3\x25\x92\xe6\x80\x7b\xe6\x10\xa7\xcb\x11\x1c\x2e\x29\x0e\xf9\x68\x67\x7c\x3c\xb8\x93\x38\xed\xe3\x50\x47\x7c\x12\xb7\xc4\x0b\x9f\x48\xb7\x52\x82\x08\x71\x7d\xe7\xdf\xb3\x82\x6e\xee\x58\x26\x45\x1e\x71\x33\x6d\x15\x32\xab\x79\x5a\x23\x01\xa7\x63\xa7\x22\x34\x57\x54\xfb\x36\xf3\x1e\xfc\x5a\x74\xdb\x9f\x43\xbf\x00\x1c\x71\x84\xf7\x87\x7c\x55\x0f\x10\x39\xa9\xba\x8f\x60\xd3\xc3\x36\xec\x2f\xf2\x89\xc8\x85\x61\x82\xbc\xe2\xc2\xef\xd9\xeb\x16\x22\x28\xc5\xce\xaa\x0f\x88\x7d\xff\xed\x1b\x4f\xee\x5b\x33\x8f\xc0\xd0\xd3\xfa\x98\x96\xa9\x23\x79\x0c\xd3\xd4\x91\x5a\x54\x45\xd7\x3c\x45\x93\x35\xd5\x36\x7d\xdb\x94\x68\x7c\x0b\x63\xab\x4f\x11\x15\x39\x71\x20\xff\xa8\xc3\xf3\x4d\x6d\x61\x42\x78\xf0\x54\xa1\xc1\xa4\xb0\x60\x13\xf0\x8b\xa2\xfc\xb2\x90\xe0\x17\xb1\xab\x03\x61\x40\x6b\x62\x47\x1b\x68\x2f\x08\x01\xfe\xcb\xea\x90\x43\xa1\xbe\x51\x87\xdc\x7e\xbe\xa6\x56\x65\xf8\x9a\xc9\xca\x1c\x59\xa1\x7a\x5a\xf1\x6c\xd5\x84\xc5\x22\x96\xd1\x8e\x43\x13\x59\x6d\xe9\xb1\x6f\x1d\xe1\xdd\x5b\x3a\x82\xe6\xdb\xe4\xbc\x96\x7f\x12\xad\x2a\x72\x7f\xc3\xee\x98\xde\xde\xd5\x4d\x88\xb4\xe9\xd0\x46\x35\xa1\xe4\xfd\xed\xdd\x4f\x1f\xae\xfe\x7c\xfd\x21\x74\x36\xae\x69\xb6\x6a\x27\x07\x0a\x42\x41\x78\xc2\x59\x5b\xd1\x47\x46\x28\xa9\x04\xff\x47\x85\xb5\x54\xc9\xab\x9a\xf2\xeb\x23\x57\xba\x8f\x94\x65\xd0\x9f\xf1\x80\xbe\x0d\xf0\x9e\x0b\xf1\x48\x6b\xc8\x29\xb9\xde\x92\x59\xa1\xa5\xb2\x2f\x5a\x2d\x8a\xa2\x8c\x5c\x31\xc5\xc8\x92\x3f\x3a\x27\xb7\x2b\x6a\x49\xf3\x3a\xbc\x65\x19\xda\x72\x56\x38\xaf\x88\xce\x21\xd0\xb4\x62\x44\x30\x63\xb9\xbb\xb6\x31\xa5\xd0\x9d\xec\xcd\x4a\x33\x7d\x41\xe6\x55\xd0\x0c\xb3\x26\x0e\x5f\x53\xc5\x8b\x4d\x7b\x20\xb4\x98\x92\x5b\xe9\x35\x97\xcd\xd6\x74\x02\x44\xdf\x7f\xba\xbe\x23\xb7\x9f\xee\xa1\x01\x38\x14\xa7\x5d\x51\x83\x6f\xc3\x72\xce\x99\xa5\xe7\x3a\x6e\x4d\xc9\x95\xd8\xc4\x08\x42\x94\x42\x5c\x13\xab\xae\x30\x61\x49\xb8\xeb\xc4\x17\xbe\x3d\x7b\x33\x85\xff\x3b\xb3\xab\xab\xc2\xb7\x52\x1d\x76\xec\xe6\x1e\xc2\xdd\x01\xb7\x1a\x9f\x17\x2d\x0e\x70\x6b\xfe\xd5\x3b\x37\xd4\xe0\x86\x99\x5d\xd1\x76\xf7\xfd\x9a\x2d\xa2\xee\x15\xec\x19\xc2\xc5\xb2\x48\xe0\xee\xc4\xee\x0d\xcd\x40\x93\xab\xa9\x37\xb7\x91\x57\x35\xdc\x91\x74\xbb\x0e\xad\xb2\xa2\xae\xf4\x9b\x99\x67\x88\x29\x16\x61\x5e\x6f\x35\x9b\x82\x0f\xa0\x8b\x2c\x4e\x93\x7c\x43\xfe\x40\x9e\xc9\x1f\x40\xed\xf8\x6d\x8c\x5e\x91\x76\x77\xa4\x19\x28\xa8\x57\xdf\xcc\x92\x57\xf8\x6f\xf6\x58\xda\x77\xed\x0a\x59\xe3\x90\x8b\xdc\x35\xc3\x33\x4c\x59\xd1\x14\x0f\x26\x92\x47\xaf\xc3\x6f\x07\x76\x12\xc6\x01\xff\x5a\x1c\xe3\x2c\x5a\xd5\x9d\x89\x39\x01\xeb\xd8\x4f\x58\x9b\xe6\xd6\x1d\xdc\x4e\x3d\x69\xf8\x62\x14\x51\x18\xd5\x9a\x9a\x6c\xd5\x95\x0e\x56\x65\xd2\xa6\x39\x88\x9a\xe4\x92\x84\xeb\x1e\xe3\x83\x60\x87\x15\x8f\x8a\x94\x9d\x96\xc1\x63\x43\x51\x1d\x3e\x18\xda\xbd\x2d\xd3\x20\xd2\x4c\xcb\xbd\x8e\xd3\x4a\x33\x2f\x65\x3e\x45\xf5\xc8\x0e\xd2\x31\x44\xb0\xca\xba\xa3\x38\xa4\x43\x39\x6b\xc6\x23\x7a\xe2\x8f\xa2\x3d\xd5\x19\x15\x88\x6b\x5b\x30\xa5\x10\xb3\x32\xdf\x10\xd7\x00\x3a\x6a\x43\x93\xce\x6a\xa9\xa4\x91\x99\x8c\xea\x6e\xd0\x0d\xef\xb8\x17\x61\x9a\xe8\xe0\xf0\x3e\xa4\x1f\xde\xcf\x2e\xc8\xfd\xbb\x59\xdc\xb1\x92\x8a\xdc\xbd\xbb\x9f\x75\xed\x8d\xb3\xfb\x77\xb3\xa8\x36\xcc\x09\x93\x8d\x6f\x57\xd6\xb9\xfe\x42\x86\xdb\x71\xbb\x21\x28\x46\x73\x7e\x74\x7c\xa5\x63\x9f\x86\x7a\x50\x15\xda\xd1\xab\x14\x5b\xcb\x47\x96\xa3\x52\xe5\xe9\x31\x91\x97\x92\x5b\x0d\x86\x87\x1a\x4e\x45\x60\x33\x47\xf4\x65\xf0\x19\xd1\x97\x64\x44\x5f\x8e\xe8\xcb\x11\x7d\x19\xfa\xed\x88\xbe\x1c\xd1\x97\xfd\xcf\x88\xbe\x1c\xd1\x97\x43\xcf\x88\xbe\x74\xcf\x88\xbe\x3c\x60\xc8\x23\xfa\x32\xe2\x85\x11\x7d\xf9\x4d\x47\xce\x47\xf4\xe5\x88\xbe\xec\x7b\x46\xf4\x25\x3c\x23\xfa\x72\x44\x5f\x8e\xe8\xcb\x11\x7d\xd9\xf7\xdb\x11\x7d\xd9\xff\x8c\xe8\xcb\xde\xe7\xe7\xa3\x43\x8e\xe8\xcb\x11\x7d\x39\xa2\x2f\xbf\x36\xfa\xd2\xb7\x17\x48\xc1\x14\x9e\xbf\x93\xeb\xb2\x32\x8c\x7c\xf6\x2f\xd7\xec\x49\xe6\x1b\x44\x24\x44\x03\xaf\x5e\x1e\xe8\xc4\x96\xf2\x95\x02\x80\xdf\x25\x56\xb5\x9f\x64\x38\xc4\x49\x3d\xbf\x49\x3d\xa2\xcb\x63\x05\x3b\x0b\xbe\xe6\x21\x30\xa6\x7d\x1a\x4c\xe4\x2c\xe9\x62\x4b\x12\xb0\xdd\x1d\xfa\x00\x43\x6b\xb9\x08\xb1\x05\xf9\x33\x1c\x0f\xba\x96\x55\xd4\x3d\x0e\x51\x72\xdc\xea\x7a\x1d\xd1\xf1\xf9\xf5\xb7\x89\xa4\xc9\x30\xe7\xe2\xfd\x36\x77\xeb\xb3\x1b\xdc\xf6\x7e\x39\x71\xf6\xb2\xfd\xf2\x47\x13\x30\x59\xf5\x97\xb8\x26\x72\xcd\x8d\x61\x31\x71\x75\xab\x76\xd3\x76\x30\x99\x9b\x8e\xd2\xe3\xb8\x0d\x6a\x4c\x51\x13\x27\x78\x5b\xc1\xce\x16\x9a\x49\x9a\x15\x53\x4f\x5c\xfb\xae\x2c\xb5\xd6\x09\x5c\x33\xc9\xd9\x82\x8b\xa8\x21\xc3\x15\xf0\x4f\xc5\xa3\x91\x3f\xb4\x16\x9b\xe2\x66\xf3\x4e\x0a\xc3\x9e\x03\xba\x60\x97\xcd\xee\xdc\xab\x44\x96\x18\xc9\xf6\xca\xaa\x6b\x12\xa1\x2a\x01\x08\xb0\x23\x97\x01\xc3\x2e\xf7\x97\x7e\xe0\xb0\x7a\xec\xd9\x5c\x1e\xe5\x2b\x86\xea\x87\x66\xdf\xd8\xc4\x5e\xc7\xcd\xf6\xec\x7c\xf3\x58\xa2\x1f\x84\xe0\x4c\xf1\x47\x5e\xb0\x25\xbb\xd6\x19\x2d\x80\x67\x52\x95\xa3\xab\x1e\x3a\x70\xd8\x94\x2c\x34\x79\x5a\x31\x7b\x26\xa2\xac\xae\x52\x49\xf0\x67\x67\x54\x90\x25\xe5\x82\xac\xed\x1a\x96\x9e\xbc\xdd\x70\x7b\xa6\x8c\x26\x25\x55\x71\xa6\x9c\x23\xe9\x00\xc6\x73\x29\x0b\x87\x1e\x29\x36\xcd\x18\x5d\x71\x39\x21\x7f\x12\xec\xe9\x27\xfb\xbd\x18\x09\xb0\x28\xe8\xb2\x06\x50\x69\x66\x76\xf4\xf8\xe6\xe3\x7d\xcb\x14\xf1\x15\x80\x3e\x54\x8c\xd0\xe2\x89\x6e\x60\x39\xb7\xbf\xc2\xf5\xef\xc9\xdb\xd7\xc0\xfd\x34\x66\xdc\xf5\x38\x72\xf2\xcb\xd7\xe0\xe7\x7b\x77\x35\xfb\xe9\xee\xef\x77\x3f\x5d\xbd\xff\x78\x73\x1b\x2b\x12\xec\x5a\xb2\x60\xb9\xc6\x8c\x96\x74\xce\x0b\x1e\x77\x0b\xed\x44\x9e\xda\xaf\x83\x48\xcd\xf3\xcb\x5c\xc9\x12\xd7\x41\x55\x42\xc4\x19\x6f\x0d\xd2\xb6\xab\x7b\xb7\xd3\x14\x60\x0b\x17\x9d\x4f\x46\x50\x5e\x2a\x2a\x8c\x57\x1c\xdb\xdb\xa2\x2a\x61\x15\xfe\x63\x47\xe1\x69\x7e\x08\x40\xeb\x2a\xcf\x59\x9e\x3a\xb5\x97\xc4\x79\xdf\xf9\x4f\x6d\x9a\x4c\x08\x32\xfb\x74\x77\xf3\xbf\xd3\x47\x41\x1c\xcf\x25\x85\xec\x4e\x84\xbf\x21\xc4\xb2\xdf\x01\x3b\xf0\xd9\x21\x2c\xc7\x3d\x18\x78\xe1\xe8\x18\xa8\xfa\xee\x48\xf5\x31\x7f\xae\x44\x37\xaf\xae\xa1\x44\xd6\x32\x67\x53\x32\x43\xe1\x1e\xb5\x7e\xdd\xf7\x5b\xb0\x7f\xaa\x18\xb1\x44\x84\xe1\xd0\x31\xcd\xea\xba\x8f\xb4\x88\xbb\xdb\x8c\x44\x14\x63\x3b\x7f\xa2\x23\xdd\x16\xb4\xd0\x11\x02\x28\x45\x9e\xdb\x2b\xed\xa3\x55\xe7\x13\xd7\xb3\x7e\x8f\xe4\x4c\x48\xe3\x2c\x04\xfb\x65\x48\x08\x51\x32\x23\xb1\x56\x42\x2b\x98\xd8\x91\xb8\xae\xa3\x9f\x17\xe7\x5c\xfb\xb5\x98\xf9\x6f\x47\x10\x47\xaf\x4e\xa5\x99\xde\x2f\xce\x1b\xbb\xc1\x7e\x5f\x31\x9a\x4b\x51\xc4\x46\xfa\xd1\xe7\xbf\xa6\xfa\x81\xe5\xf8\x0f\x4e\x2f\x71\x36\x8e\x76\xdd\xfd\xdc\x70\xef\xe3\xce\xdb\x82\x51\x53\x29\x86\xfa\x08\x46\x33\x98\xa0\xf3\xa8\x58\x45\x12\xc0\x9e\xe6\x9f\x44\xb1\xf9\x2c\xa5\xf9\xae\x06\xbe\x26\xb2\xc1\xdf\x50\x1b\xdc\xf2\xb1\x80\x12\x02\x4e\xf7\x7c\x12\xb9\x9c\xc0\xf8\x6d\xfc\xed\xfb\x66\xdb\x4f\xc0\xf6\xaa\x12\x57\xfa\x7b\x25\xab\xd4\x16\xa0\x96\x23\xbf\xbf\x79\x0f\x67\xb5\xc2\x73\xca\x84\x51\x1b\x00\xd6\x3b\xaf\x71\x8a\xfe\xd2\xe8\x94\x3f\x58\x1e\xdd\xe2\x4a\xab\xc9\x56\x42\xb3\x28\x28\xd8\x47\xba\x21\xb4\xd0\xd2\xab\xaf\x5c\x90\x19\x44\x31\xdb\xf6\xd9\x14\xb3\xad\x58\x64\xee\xcc\x5c\x9a\x15\xd9\x22\x01\x4c\xbf\x4b\xf9\x22\x72\xea\xe8\x0c\x6d\x12\xa4\xb9\xd8\xf9\x80\xa1\x0f\x4c\x93\x52\xb1\x8c\xe5\x4c\x64\x11\x7b\xdf\xf2\x5a\xfe\xf6\xd7\x47\x0d\x8c\x01\xa7\xdc\x4a\x61\x8f\x49\x22\xaf\xdc\x88\x9c\x67\x14\x65\x23\x35\x5b\xf2\x07\xfc\xf7\xaa\x8a\xd9\x04\x38\x4c\x42\x8a\x09\x1c\x92\x4a\x33\x05\xbe\x13\x6b\x46\x20\x8e\xfe\xaf\xd5\x9c\x15\xcc\xa0\xf1\x02\xf9\x72\x34\x0a\x9d\x6f\xdf\xe5\x6b\xba\x64\x84\x9a\x9a\xf5\x8c\x24\x4c\xe8\x0a\x5a\x93\x52\x03\xae\x15\xc9\x74\x64\x36\x1b\x1a\x2d\xe4\x87\x9b\xf7\xe4\x0d\x79\x65\xc7\xfb\x1a\xd8\x65\x41\x79\x01\x20\x47\x43\x95\x49\xc6\x2e\xf0\x85\x1f\x06\x4c\x1c\x4e\x04\x91\x0a\x05\xc3\x05\x11\x12\x7b\xdd\xba\x99\xc7\xd9\x61\xde\xd0\x73\x51\x79\x70\x20\x46\x1f\xa0\x08\xfa\x8e\x40\xca\x01\x8a\xdc\xb1\x93\x1c\xa0\x64\xe1\xf9\x83\x66\xea\x00\xd9\xf9\xc3\x49\x64\x67\x5b\x49\xb2\xe7\xa3\xb3\x3a\x31\x0c\x06\x87\x60\xcd\x0c\xcd\xa9\xa1\x4e\xea\x36\x99\x3b\xbb\x8c\x11\x63\x96\x0f\xca\xde\xbd\x8c\x11\x23\x0b\xfa\x65\x6f\x04\x63\xc4\x70\xd8\x37\x24\x7b\x35\xfb\xc0\x45\xf5\x8c\x81\xf1\x43\xdc\x0d\x77\xd7\x40\x80\x64\xfe\x5c\xc0\x16\xd2\xb2\x2c\x38\xa4\xb8\x44\x9e\xb8\x56\x24\xf7\xa6\xc3\x1a\xdb\x2d\x95\x9d\x0c\x8d\x15\x3f\xb4\x28\xa4\xbd\x20\xac\xae\x44\x45\x2e\xd7\x3b\x03\xb6\x4a\x29\xa3\xd9\x2a\xe5\x58\x4c\x53\x54\x81\x9f\x9f\x24\x4b\x73\xbf\x14\xec\x91\x45\xa5\xd3\x6e\xd7\x31\xb1\xef\x59\xe5\xd4\xef\x18\x10\x22\x05\x9d\xb3\x22\x25\x43\x0a\x79\xb1\xf6\x5d\x45\x87\x29\xf1\x49\x34\xcb\x95\x2c\x0e\x01\x7d\x7e\x96\x05\x00\x94\x68\x3d\x59\x4b\xe8\x1b\x9f\x2b\xfc\x3c\x7d\xae\xd6\x46\xeb\xce\x15\x6c\xda\x6f\x7b\xae\x55\xd4\x5d\x4c\xb6\xe7\x6a\xaf\xf0\xee\x5c\xe1\xee\xfc\x96\xe7\x9a\xe0\x2a\x7a\xe2\x22\x97\x4f\xfa\xf0\xcb\xe3\x6f\x48\xc0\xcb\xa7\xcc\x0a\x42\xc3\xc5\x52\xfb\x0b\x24\xce\xb7\x41\x8b\xa2\xe3\xd3\xd8\x77\x83\xf8\x00\xd8\x42\x45\x75\x34\x75\x6d\xf7\xb7\x65\xa5\x57\x69\x2b\xed\xa2\xab\x2d\xc9\x1d\x41\x35\xc1\xcc\x8b\x4e\xb9\xf8\xaa\xb2\x7d\xb9\xd6\xf4\x9d\xb2\xb4\x0d\xa7\xc5\x5d\x79\x50\xe3\xfb\xef\x3f\xde\x5d\x75\x89\xd8\x23\xf3\x04\xd5\xa6\xec\x4a\xd8\xbf\xc7\x9e\x93\x7c\xcd\xb5\xe6\x52\x90\x27\x36\x5f\x49\xf9\x40\x5e\xf9\x48\xe2\x92\x9b\x55\x35\x9f\x66\x72\xdd\x0a\x2a\x4e\x34\x5f\xea\x4b\xc7\xc7\x13\x3b\x9b\xd8\x3e\xec\x5c\x14\x5c\xb4\x5c\x5e\x50\xb6\xc8\x41\xda\xec\x80\x49\x56\xcf\x28\x92\xa2\xdd\x48\x57\x79\xc3\x45\x46\x76\x17\x06\xeb\x68\x70\x56\x44\x77\x49\x06\x67\x19\xa6\x21\x59\x39\x54\x94\x2b\x3a\xc1\x8b\xd4\xa5\x5d\x43\x12\xfe\x4a\x0a\xa9\xa2\x8e\x9b\x7d\x5c\xfd\x0d\xc8\xaa\xb3\x06\x2c\xfa\xce\x60\xc8\xee\x44\xc3\x0a\x38\x2f\x5b\x24\xd1\x45\x41\x97\x27\x11\xdd\xbb\x3c\x7a\x1b\x9d\x90\x16\xe0\x53\xd8\x0e\x97\xc1\x9f\x90\x4f\xb5\x9f\x4d\x90\x01\xd0\xbc\x9a\xb6\xf6\x2d\x96\x21\x83\xbb\xdb\xda\xb7\xd8\x98\x44\x78\x77\x4f\xb7\x6f\xb5\x0d\x7c\xe0\x76\x81\x2d\xec\x5e\xb7\xb2\xd1\x5f\x36\x8d\x6d\x1c\xb9\x0a\x3b\x16\xf4\x90\x7d\x1c\xbb\xb2\x78\x91\xef\x58\xd2\x01\x3b\x39\x92\x7a\xa4\x71\x82\xf7\x57\xb4\xc0\x3b\xb6\x7d\x42\x12\x6d\x94\x48\x92\xad\xdb\x2e\x24\xfd\x12\x4a\x4c\xf4\x1c\xa4\xbe\x23\xf2\xb9\xcd\xbc\xb1\x12\xf0\xb4\x27\xea\xe8\xb0\x24\x4c\xc4\x48\xae\xcb\x73\xd7\x7a\x8f\xf0\x5d\x07\xee\x4c\xe6\x64\x15\x84\x65\x34\x29\x27\x50\xee\x11\x92\xc0\xf8\x7f\x7a\xad\xac\xd1\xfd\x84\x44\x84\x59\x5c\x9a\x33\x04\x17\xb1\xf4\x4a\x4e\x2a\x61\x78\xe1\xe3\x2e\xeb\xb2\xb0\x0a\x43\xe7\xbb\xe8\x23\x0e\x57\x36\x6b\x95\xf9\xb9\xa8\xa7\xb8\xd3\xb0\xf1\x82\xfc\x47\xa5\x0d\xa1\x1e\x5c\x13\x20\xda\xe9\x3b\xe9\x33\x6d\x90\xe1\x5d\xc9\x2c\xc8\xf2\x36\xd2\x7e\xfe\x91\xe7\x8c\xe4\x7c\xb1\x60\x11\x20\x20\x1c\x6e\x49\x15\x5d\x33\x03\x21\x57\xdc\x98\x39\x5b\x72\x81\xd5\x2a\x17\x84\xda\x49\x9c\x9f\xeb\x26\xd3\x23\x74\xe4\x01\x7f\xc2\x0d\x59\xf3\xe5\x0a\x4f\x34\xa1\xa4\x90\x62\x49\xbc\x53\xbc\x90\x34\x27\x20\xf6\xa4\x22\x4f\x54\x85\x14\x75\x4a\x32\x9a\xad\xc0\x43\x4f\x05\xc9\x2b\x05\x25\x31\x0c\xa3\xf9\x66\xa2\x0d\x35\x56\xeb\x67\x88\xec\x6b\x56\x26\xec\x65\x6f\x03\x93\xe1\x2d\x8e\xf9\x36\x56\x7a\xd4\x87\xd4\xc5\x0b\x9d\xaa\x16\xa0\xd8\x61\xf9\xce\x31\x1f\x4b\x3c\x05\x9f\xb1\xc4\x13\x19\x4b\x3c\x8d\x25\x9e\xc6\x12\x4f\xa1\xdf\x8e\x25\x9e\xc6\x12\x4f\xfd\xcf\x58\xe2\x69\x2c\xf1\x34\xf4\x8c\x25\x9e\xdc\x33\x96\x78\x3a\x60\xc8\x63\x89\xa7\x88\x17\xc6\x12\x4f\xdf\x74\x7a\xfe\x58\xe2\x69\x2c\xf1\xd4\xf7\x8c\x25\x9e\xe0\x19\x4b\x3c\x8d\x25\x9e\xc6\x12\x4f\x63\x89\xa7\xbe\xdf\x8e\x25\x9e\xfa\x9f\xb1\xc4\x53\xef\xf3\xf3\xd1\x21\xc7\x12\x4f\x63\x89\xa7\xb1\xc4\xd3\xd7\x2e\xf1\xa4\x4d\xce\x03\x85\x29\x62\x72\x0c\x5d\x91\x90\x06\x43\x1f\x0a\x9c\x56\x8b\x05\x53\x70\x9f\xc3\x08\x76\x62\x48\x75\x86\xbf\x0f\x9c\x87\xb7\xd3\xde\x5c\x9a\x99\x0b\x48\x75\xd4\xae\xdb\xce\x7e\xe2\x0e\xf0\xff\x44\x37\x21\xa2\x8a\x69\x48\xfd\x13\xe4\xfa\xd3\x77\xa9\x89\x90\xb1\x79\x3c\x30\xca\x4f\x22\x4b\x01\x47\x34\x1b\xb1\x2f\x91\xd6\xed\x47\x56\x48\x1d\x3a\x59\xd0\x9f\x13\x96\x29\x5b\x51\x21\x98\xd7\xda\xb8\x01\x1b\x66\xce\x98\x20\xb2\x64\x02\x23\xd8\xbe\x79\x62\x28\xde\x6e\x0c\xcd\x56\x53\x3b\x4a\xe1\x37\xc1\xd5\xda\x68\xbe\xa7\x8d\x62\x74\x8d\x9b\xa1\xd8\x9a\x06\x33\x79\xec\x30\x08\xcd\x94\xd4\x9a\xac\xab\xc2\xf0\xb2\x60\xee\x53\x44\x33\x40\x73\x22\xa6\xb7\x5e\xd0\x30\xd7\x68\x86\x41\x36\xc8\xdf\xab\x47\xea\x26\x2c\xdb\x79\xea\xa0\x6b\x5e\x84\x29\xb2\x75\x69\x36\x35\x24\x84\x91\x05\x57\xda\x90\xac\xe0\x4c\x18\x37\x5a\xc4\x67\xc3\xd7\x2e\xac\x1e\x1b\xde\x22\xe1\x56\x48\xbb\x45\x10\x39\xdc\x91\xa5\xd1\x08\x83\x68\x3e\x87\x1f\x0a\x50\xcc\xb9\x76\x7a\x8e\xbe\x20\xd4\x78\x61\x0c\xac\xe3\xd7\x00\x98\x27\x87\x4f\xb9\x6f\x07\x88\xba\x17\x5a\x43\x69\x95\x51\x69\xd0\x2b\xcd\x91\x5e\x14\x34\xa4\x39\xf8\x83\x76\xd1\xe9\x58\x5a\xfa\xf2\x00\x88\x05\xda\x3e\xf0\x01\x9a\xc0\x70\x82\x3d\xda\xf3\xc2\x32\x66\xcd\x1f\xda\x73\xbe\x8f\x72\xbc\x0d\x53\x6b\x2e\x00\x5c\xf2\x91\x69\x4d\x97\x6c\x16\x74\x5b\xf6\xa9\xaa\xe0\xb9\x6c\x36\x0c\xd8\xab\x00\xbd\x15\xfe\x25\xe2\xac\x37\x61\xfa\x73\xdd\x1e\x1a\x59\xe3\xd8\x6a\xb8\xd1\x93\xe2\xc6\xb0\xd0\x62\x72\x8d\xb5\x05\x20\x86\xb0\x9d\x74\x60\x3f\xd1\x0e\xf2\xbb\xe9\x87\xf6\x07\x3f\x6c\x49\xdb\x9b\x4e\xe4\xae\x97\x1f\x23\x73\xc5\xd9\x82\x2c\x38\xc4\xef\x21\xbe\x7d\x81\xd9\xa6\x41\x10\x98\x35\x91\xb4\xb6\x46\x85\x14\x3e\x0c\xeb\x67\x3c\x25\x7f\x73\x53\x36\xaa\x12\x19\x35\xb1\x60\x1d\x21\x73\x46\xf8\x82\x2c\x21\xb6\xae\x10\x5c\xf4\xeb\x37\xff\xeb\xb7\x64\xbe\xb1\xba\x03\x38\xff\x8d\x34\xb4\xa8\x17\xb7\x60\x62\x19\x4c\x00\x70\x22\xae\x9b\xac\x50\xef\x0b\x54\x16\xc4\x25\x79\xfb\xcb\x87\x79\x34\xa0\xd4\x48\x72\x99\xb3\xc7\xcb\xd6\x9e\x4f\x0a\xb9\xdc\xd7\x4e\x6e\x58\x6d\x89\x54\xfc\xf7\xb0\x3d\x14\xfb\x4a\x60\x7c\x9f\xb4\x4d\x56\xf2\x09\x6b\x5a\xec\xe1\xd7\x28\x78\xd0\xdc\xda\x16\x65\x55\x20\x56\xeb\x3b\x7b\x66\x60\x3d\x2b\xcd\x76\x81\xf9\x7b\xcf\x6b\x78\x75\xfd\x07\xb6\xdb\x8f\x23\x10\xc3\x0f\x57\x3a\x74\xac\x73\x93\x04\xf9\x36\xf7\xec\x3a\x25\xdf\xd1\xa2\x98\xd3\xec\xe1\x5e\x7e\x90\x4b\xfd\x49\x5c\x2b\x25\x55\x77\x1e\x05\xd5\x21\xd9\x9f\xad\x2a\xf1\xd0\x6d\x72\x58\xc8\xa5\xd5\xab\xcb\xca\xf8\x72\x5d\x7b\x16\x3a\x40\x16\xe4\x10\xd7\xee\xfa\xa3\xae\xab\x6e\xf3\x0d\xf6\x0c\x5c\xfb\xc4\xad\x00\x13\x84\xd9\xb1\x87\x8c\x27\x7b\x7e\xda\x63\xd3\x6d\xe6\xff\xe5\x9b\x5f\xff\x0e\x0f\x9a\xb5\x22\x7f\xf7\x06\xe0\x52\x3a\x8c\x2d\xe4\xd9\x0a\x64\x3f\xd7\x44\xaf\x69\x51\x58\x83\xb1\x6d\x4f\x58\xe6\xd8\x77\x28\x8e\x72\x26\x4c\x0a\xfb\x1f\x49\xd9\xbe\xbf\xff\x3b\x68\xda\xdc\x68\x56\x2c\x2e\x10\xef\x5d\x57\x45\x39\x87\x2b\xf3\xdc\x49\x58\xab\x07\xd5\xcb\x11\x79\x37\x1f\x47\x09\x7e\x94\x45\xb5\x66\xef\x19\x34\x6b\x4d\x58\xa4\xce\x7b\x1e\x41\x57\xb8\xce\xf6\xf3\x42\x66\x0f\x24\xc7\x3f\x86\x4f\xb0\x8f\x86\x6f\xd7\x1b\x6b\xa1\x3b\xc9\x9c\x99\x1a\xdb\x79\xec\x2e\xe7\xed\xb9\x74\xe2\xfb\x6b\x5a\x96\x35\x9c\x56\xd1\xa7\xa0\xa1\xd8\x9e\xb8\xef\xdc\x4b\x4f\xd3\xf1\x1c\x3f\x12\x56\x69\xf6\xcc\xb7\x79\xd5\x6f\x5c\x09\xff\x1b\x91\x7b\xd1\x45\x08\xda\x65\x08\x6a\x70\x78\x3d\x77\xbc\x35\xed\x0a\x82\xdc\x38\x7a\x1f\xe0\x83\xfa\x34\x8b\xda\xa7\x84\x1d\xac\x7d\x5e\x10\xee\x70\xc9\x94\x86\x86\xff\xe6\x47\xe0\x88\x77\x05\xe5\x31\xb9\x88\x84\x34\x0d\x9a\x8f\x3b\xcd\xf8\x0e\xc0\xcd\x9e\x06\x7f\x1a\x81\x3a\x38\x72\x8f\x60\x3c\x60\x50\x00\x2a\x45\xc6\xcc\x64\xee\x5e\x85\x1b\x02\x14\xde\x7d\xea\x6e\x48\xc4\xb4\x75\xe1\xc4\x0b\x26\x5d\x98\xfc\xd8\xcc\xb5\x2b\x4b\xec\xbf\xd4\xc2\x04\x7f\x15\x64\x96\xd3\x8a\x10\x18\xd2\x41\x12\x04\x64\x47\xab\x33\x79\x23\x08\xbc\x91\x14\xe7\x85\x5f\x31\xb7\xc1\xfe\x76\xb5\x22\x03\xed\x9a\x29\xc1\x08\x94\xdd\x2d\x47\x3e\x8a\xe6\xf9\xef\xcf\x8f\x2e\x6b\x70\xa1\x94\x2c\xe9\x32\xb2\xa4\xec\xd6\x7a\x6d\x13\x20\x39\x43\x55\x8f\x69\x50\xb2\xe1\xef\x71\x8e\x77\x0a\xe5\x63\x91\x92\xef\x6e\xed\x4b\xe5\xb9\x40\x8a\xdf\x8a\xa0\x87\xc3\x2d\xc5\x8a\xb9\x14\x9c\x27\xba\x21\x54\xc9\x4a\xe4\xce\x87\x54\x3b\xf7\x3e\x6e\x4d\xe0\x56\x8a\xb8\x2b\x82\x6b\x97\x8b\xdd\xcd\xf4\x82\xeb\x9c\x0b\xf2\x76\xfa\xf6\xcd\xb7\x71\x35\xdc\xd7\x4d\xfb\x9b\xab\xe1\xb6\xbe\x1a\xf0\xbc\x1e\x7d\xa4\xbe\x00\x5d\xf2\x68\x3f\x3a\xe3\xbf\xae\x2f\x07\x16\x04\x78\xd3\xe0\x9f\xac\x31\x1f\xb7\x41\x4d\x79\xef\x57\xa0\x56\x5a\xad\xbe\x95\xd1\xf8\xba\xa3\xa5\x47\x51\x8c\xac\x55\x97\x56\x70\x89\x10\x5d\xcd\x8f\x22\xab\x9c\xc0\x81\x83\x53\xfb\x73\xd2\xd4\x9d\x73\x3d\x20\xb6\x92\x12\x4d\x8d\x24\x67\x67\xe4\x15\x52\x3b\xc7\xfc\x8e\xd7\x47\x67\x33\xb7\x74\xd7\xcf\x65\x54\x8d\x8c\xce\xf2\x5d\x3f\x97\x14\x7c\x41\x65\xff\x3a\x46\x4d\xb5\xf1\x9d\x45\xad\x63\x14\xcd\x3f\xb3\x15\x7d\x64\x90\xb7\xc2\x0b\xaa\x8a\x8d\x5d\xd0\x3b\x9c\x2d\x99\x57\x86\x30\xf1\xc8\x95\x14\x6b\x26\x0c\x79\xa4\x8a\xd3\x79\xd0\x89\x8e\x8f\x62\x90\x8a\x67\x8d\x9b\xff\xf9\xea\xc7\xab\xcf\x10\x75\x7c\xed\xf2\x0f\xdd\x8a\x54\x1a\xf0\x60\x07\x70\x4f\x6b\x58\x5d\x2b\xb8\xcd\x0c\x71\xe3\x04\x86\xf1\x73\xb6\x3b\x0c\x4e\x00\xbf\x06\x76\xbc\xeb\xca\x54\x58\x89\xf5\x39\x2b\x2a\xcd\x1f\xa3\x0e\xe7\x76\x65\x82\x96\xc4\xfe\xcd\x91\x19\x34\x5e\xcb\xad\x35\x96\x6f\x50\xc9\x75\x69\x5e\xef\x79\xe0\x8c\x6d\xa5\xa0\x35\x4c\xb1\x93\x27\x06\x2e\x7b\xb8\x82\xeb\x74\xd9\x14\x4f\xb3\x0f\x4b\x9d\xeb\xba\x96\x66\xbb\x3c\xca\x45\x94\xa2\x86\xc9\xa0\x08\x35\xc2\x7a\xfe\xf9\x6e\x60\x0f\x72\xe2\x5b\xba\x75\x80\xe6\xf1\x5c\x3b\x61\xce\x09\x70\x42\x04\x0f\x84\x76\xbf\x0e\x43\xf7\x0d\xa2\x5b\xb5\x3c\xf3\x7d\x1e\x9c\xc1\x8c\x1d\x2d\x40\x40\xa1\x8d\xe2\x65\xa1\xa1\x0f\xfd\xe3\xe6\x82\x28\xa6\x4b\x29\x34\xeb\x2a\x7d\x0d\xe8\x87\x3d\x32\x61\x74\x82\xc5\x13\x63\x3a\x94\x52\x1b\x48\x96\x1d\xe2\xf1\x6e\x14\x65\xe6\x5f\x81\xe8\x16\x2d\x0a\xcb\x41\xeb\x35\xcb\x39\x35\xac\xd8\xb8\xb8\x27\x8d\x84\x79\x5a\x1a\x98\x53\xe7\x02\x5a\x8c\xac\xa8\xc8\x0b\xa6\xda\xf9\xdb\x9d\x10\x98\x77\xaa\x06\xca\xa7\x60\xc4\xcd\x83\x47\x69\x96\x49\x95\x3b\xbc\x2f\x37\x75\x20\x8d\x60\xeb\x8c\x29\xf9\x04\x1a\x73\xb3\x7b\x83\xb4\x77\xca\x52\x80\xa3\x48\xb7\x82\x76\x50\x0b\xa7\xce\x62\x47\x78\xc4\xf0\x42\xa4\x74\x50\x71\xc1\x8c\xe6\x7f\x36\xe0\x89\x09\x00\xd0\x2e\x5b\x18\x0a\xf8\x87\xa1\x58\x44\xac\x8d\x19\x93\x96\x7c\x9a\xa4\xe4\x23\xa7\x24\xa7\x18\xd5\x09\xe9\xc8\xa7\x4a\x46\x4e\x48\x45\x26\x0b\x19\x07\x3c\x3b\x7e\x22\x72\x4a\x1a\x72\x1c\xaa\x88\x24\x25\x21\x77\xd2\x8b\xa3\xa8\x07\x52\x90\xb7\x93\x8b\x63\x0d\x80\x81\x04\xe4\x3d\xa9\xc5\x71\x46\xdd\x70\xfa\xf1\x76\x62\x71\x14\xcd\xa4\xe4\xe3\x84\x54\xbb\x43\x8a\x1a\x46\x65\x2a\x45\xeb\x77\x91\x79\xaf\xe9\x59\xaf\xb1\x39\xad\x29\xf2\x25\x16\x77\x9b\x96\xcd\x1a\x6b\xdb\x27\xe4\xb2\xc6\x95\x08\x26\x87\x66\xb2\x26\xb1\x4d\x62\x16\xeb\x89\x72\x58\x5f\x9a\xc1\x9a\x70\xa8\x4e\x95\xbd\xfa\xb2\xdc\xd5\xf4\xcc\xd5\xb4\xbc\xd5\x23\x66\xad\x1e\x90\xff\x99\x98\xb1\x7a\xcc\x7c\xd5\xe4\xd1\xa6\xe5\xaa\x26\x64\xaa\xa6\xe4\xa9\x26\x66\xa9\xa6\xe4\xa8\xc6\x66\xa8\x1e\x3f\x3f\x35\x69\x2b\x62\xf3\x0a\xa2\xb3\x0a\xd2\x73\x0a\x92\x33\x0a\x4e\x93\x93\x7a\xfc\x6c\x82\xa3\xe6\x12\xbc\x38\x93\x20\x3e\x17\xf5\x24\x99\xa8\x87\xe7\xa1\x9e\xc4\x8f\x17\x91\x2b\x11\xef\x9d\x8b\xcd\xe9\x3a\x4d\x46\xd7\xa9\xf2\xb9\x5e\x96\xcd\x75\x72\x8d\xf2\x58\x79\x5c\x2f\xc8\xe2\xfa\x17\x93\xb4\xc7\xca\xdc\xfa\x79\x4b\xda\xaf\x21\x83\xa2\x7e\x56\x2a\x76\x67\x86\xdb\x2c\x6e\xf9\x4d\xf1\x85\x1e\xaf\xa9\x4b\x6e\x4f\x70\x9b\x36\x6e\x50\x92\x57\xbe\x99\xf3\xd5\xec\xa6\xb6\x57\x65\xdb\x9d\x89\xee\xe3\x41\x9a\x0e\x02\x5e\xa7\x06\x5f\xba\xb4\xe0\x56\x39\xcd\x4a\xb1\x0b\x3b\x73\xb6\x86\x59\x5d\xd4\x3d\xb0\x07\x09\x3b\x54\x30\xbc\xc0\x4c\x86\xee\x21\xef\xe5\x75\xa5\xe6\xfc\x92\x2c\x12\x4a\x04\x64\x8a\xea\x15\xe2\x56\xd9\x33\x37\x0e\x29\xae\x18\xd5\x52\x60\x02\x76\x0b\x7e\xcb\x35\x29\xa9\xd6\x01\x37\x8e\x93\x5a\x6e\x70\x48\xd0\xd5\xdd\x6c\x13\x5b\x2a\x9a\x31\x97\x70\x4f\x32\x59\x09\x93\xcb\xa7\x61\xf3\x18\x8a\x79\x6a\xbf\xcf\xd8\x44\x0f\x19\xc2\xca\x7f\x06\x7e\x32\x5f\x09\x75\x4a\x3e\xb3\x25\x55\x79\x11\x92\x01\x4e\x6a\xc8\xca\x64\xb2\x11\x22\x6e\xf4\xdb\xae\x73\x08\x16\x01\x1b\x40\xf8\x70\x78\x1d\x3c\x73\xb5\x23\xc4\x81\x85\x18\x96\x06\xdb\xfe\xf5\x48\x1f\x7a\x80\xb1\x7c\x95\x58\x00\x39\xf8\xf7\x7a\x77\x0a\xf2\x67\x68\xb6\x0a\xc5\xaa\xd2\x5b\x9a\x8f\x0e\xf9\xd1\x21\x3f\x3a\xe4\x47\x87\xfc\xe8\x90\xdf\xf7\x8c\x0e\xf9\xd1\x21\xdf\x79\x46\x87\x7c\xdf\x33\x3a\xe4\xfb\x9f\xd1\x21\x3f\x3a\xe4\xff\xe5\xdc\x44\xa3\x43\x7e\x74\xc8\xfb\x67\x74\xc8\x8f\x0e\xf9\xd1\x21\x1f\x7c\x63\x74\xc8\x0f\x3d\x3f\x4f\x87\x7c\xf0\x27\x9d\xf6\x4d\x51\xd0\xee\xf3\x19\x78\x0d\x79\xe6\x1c\xe0\xdd\x5a\x0f\x8e\xdc\xb4\x81\xfc\xf7\x4e\x60\xa7\xf3\x94\x77\x73\xb7\xfa\x54\x21\x1d\x25\x8b\xc2\xda\x40\x6b\xba\x19\xec\x14\xe7\xf1\xff\x1f\x3a\x3d\xa9\xf8\x82\x08\xb9\x55\x1f\x17\xfc\xde\xd8\x8f\x2a\x9f\x92\xfb\x7e\x23\x94\x2f\x85\x54\xcc\x53\xe6\x62\x79\x81\x45\x9d\xea\x7e\x71\x46\xba\xa2\x14\xdd\x8f\x9e\xfd\xd7\x7f\x9f\xf5\xb3\xdd\x2e\x58\xfd\xab\x14\x8a\x8b\x91\xd6\x21\x67\xea\x41\x8e\xd4\x50\xf2\xc4\xb1\x9c\xa8\xb1\xd7\x51\xa4\xf3\xf4\x14\x8e\xd3\x44\xa7\x69\x94\xe6\x15\xed\x30\x6d\x3b\x43\x83\x54\x23\x9c\xa5\x5b\x8e\xd0\x08\x65\x23\xd6\x51\xda\x72\x82\x06\xa9\xc6\x38\x49\xbb\x0e\xd0\xf0\x8a\x86\x1d\xa4\xdb\xce\xcf\xf0\xe4\x87\x9d\xa3\xf1\x8e\xcf\x48\xff\x4c\x82\x16\x10\x67\xf2\x46\x5d\x53\x29\x8d\x8e\x92\x5b\x1c\x45\x54\xf7\x4c\x6c\x6e\x14\x97\xd7\x7a\x48\x5b\xa3\xd8\x5a\x9c\x71\xea\x5d\x84\xef\xf8\x34\x7e\xe3\x58\x91\x1a\xa3\xdd\x27\xfb\x8a\xa3\xa4\x5f\xbc\x9f\xb8\xed\x9f\x8d\x11\xd4\x31\x3e\xe2\xe8\x53\x96\xe0\x1b\x4e\xf7\x0b\xc3\x7e\x87\x25\xd0\x61\x3e\xe1\x48\x79\x73\x0a\x5f\xf0\xe1\x7e\xe0\x34\x1f\x70\xbc\xff\xf7\x48\xbe\xdf\x44\x13\x2d\xc1\xe7\x7b\x2c\x7f\xef\xc9\xfa\x74\x44\xad\x51\xac\x7f\x37\xa5\xf2\x74\xa4\x5f\x37\xc6\xa7\x7b\x5c\x7f\x6e\xf4\x52\xc7\x78\x17\xa2\x3c\x0b\x69\x5e\x85\x24\x8f\x42\xb2\xdf\x96\xc8\x70\x00\x2f\xde\x93\xd0\xf6\x12\x04\xc9\xbe\xc8\x8b\xf0\x22\x0f\x42\x9c\x9f\x36\xd5\x47\x8b\xfe\xd7\xe0\xb4\x53\xfd\xb3\x91\xbb\x1f\x23\x04\x82\xfe\x90\xa8\x03\x9d\xd8\x9a\xe7\x80\xa6\x3c\xc1\x56\xe0\x49\xed\x78\x5a\xd6\x7e\x50\x47\xf8\x62\x25\xe3\x8f\xab\xa0\x46\xb7\xdd\x49\x6f\xb8\xe3\xda\xe9\x0c\xae\xdc\x51\x5a\xed\x1c\x77\x45\x52\x1a\xeb\xa4\xb7\xd4\x39\xc4\x14\x0a\x34\xd3\x89\xb6\x85\xe2\xda\xe8\x74\x17\x7f\x90\xe6\x97\xdd\x98\xa8\x48\xce\x41\x51\x9c\x40\xf5\xd4\xe3\x47\x70\x0e\x8f\xde\x9c\xcc\xae\x8b\x88\xd8\xc4\x77\x9b\x4d\x8b\xd6\xfc\x8c\xf5\xa8\x88\xa8\xcc\xbf\xa0\x1e\xf5\xe5\x34\x8e\xf8\xb6\x35\x07\x35\xac\xc1\x76\x34\x83\x0b\x95\xd0\xaa\xa6\xdb\x88\xe6\xe7\xa9\x71\x04\x77\x4d\xc8\x9c\xdd\xb1\x02\x5c\xe9\x7d\x6b\x40\x73\xef\x82\x9e\x45\x88\xc3\x88\xc3\xbb\xb5\xf9\xad\x21\x60\xbd\x67\xed\xff\x0b\xf7\xdf\x1f\x99\x41\x36\xaf\x2f\x7c\x09\x5e\xec\x05\x37\xd6\xc4\xa4\x30\xc1\x29\xb9\xdb\x43\x11\x4b\x3d\xf6\xdf\x45\xf6\xcd\xf3\x73\x4d\x0a\x3a\x67\x85\xde\xfe\xc0\x9c\x81\x75\x92\x57\x05\x36\x2d\x01\xff\x37\x7e\x6c\xb0\x7c\x4f\x52\xa6\x00\x14\xdd\x82\xdc\x84\x4b\xaa\x35\x5f\x8a\x89\x65\x2b\xfb\x95\xcb\x3e\x0e\x0a\xee\x78\xa9\xb8\x54\xbc\xbf\x28\xfa\x8e\x67\xc4\xbf\x80\x07\x67\x4a\x7e\xa4\x8a\xcb\x4a\xfb\x8a\x55\x99\x5c\x97\x52\x40\x21\xff\x6a\xa0\x7b\x87\x69\x0a\xca\xc1\xf6\xb8\x62\xf5\x35\xf1\x5a\x58\xfb\xf2\xa3\x33\xf7\x97\x5e\x8a\x57\xf9\x9a\x43\x03\x9a\x56\x34\x14\x12\x63\x04\x9d\x17\x0c\x83\x2f\xa5\xc2\x4a\x58\x76\x68\xca\xf7\x2b\x61\xc6\x0c\x5d\x2c\xcd\x48\x11\x0a\x4f\xeb\xef\x64\xcd\x77\x7c\xe3\x01\xdd\xfa\x79\x3f\x6f\xda\xcf\xfa\xf9\xbc\x2b\xa8\xd6\xf6\x2a\x70\xa9\x4d\x7c\xe9\x7b\x0a\xc1\xfa\x62\x94\xab\xf9\xd7\x7e\x53\xc2\xd1\xeb\xbb\x38\x62\xc4\x48\x58\x84\x94\xdb\xa3\x8e\x62\x9b\x9b\x45\xab\x6c\x1d\xe1\xae\xa5\x84\xf6\x3b\x7c\xae\x9b\xd1\x93\x33\xe4\x23\xe0\xea\x49\xa6\xb8\xe1\x19\x2d\xfa\x9b\xe1\x5b\xdd\xd9\xbf\x92\x15\x95\x36\x4c\x35\x6f\x81\x41\x69\x9e\x24\x7e\x9d\x16\xe4\x81\x6d\x9e\xa4\xca\x75\xa0\xdc\x9d\x1f\x61\xb3\xf6\xda\xf8\x21\x5a\x25\x16\x3a\x28\x60\xc8\x56\xad\x99\x22\x73\x16\x2a\xfe\xb8\x45\x64\x33\x25\x57\x62\xe3\x2a\xed\x8a\xb6\x1e\x90\xb3\x05\x77\x8d\x9e\xa0\xb6\xd9\x10\x67\xd2\x2e\x13\xb9\x53\xee\x47\x47\x51\x8b\xdc\x53\x38\x70\x98\x8f\x64\xde\x9c\x42\x8f\x3e\xf0\x98\x01\xa9\x08\x06\xde\xe0\x74\x2a\x86\xd1\x4c\xff\xe7\x3e\xd6\x0b\x5e\x01\x8a\xd1\x9c\x1f\x11\x60\xa1\x99\x82\xca\xf3\x35\xdd\x01\x90\x41\x37\xc5\x0d\x90\x16\x6b\xf9\xe8\xab\x29\x7b\x4a\x4c\xe4\xa5\xe4\x56\x72\xb4\xe1\x17\x83\xf1\xbc\xbd\xe5\xf6\xf6\x21\x35\xea\xd5\xfd\xdc\x59\x86\x7e\xee\x04\xa8\x86\x9d\xdb\xa6\x1f\xab\xd1\x83\xc9\x18\x90\x72\x3b\x58\x8d\xcf\xfe\x0b\x2d\xb0\xc6\x88\xc0\x68\x3f\x23\x02\x63\x44\x60\x8c\x08\x8c\x11\x81\x31\x22\x30\xfa\x7e\x35\x22\x30\xfa\x47\x38\x22\x30\x46\x04\xc6\xce\x33\x22\x30\x46\x04\xc6\xbe\x9f\x8e\x08\x0c\x32\x22\x30\xfc\x33\x22\x30\x46\x04\xc6\x88\xc0\x18\x11\x18\x27\x59\x91\x11\x81\x31\x22\x30\xba\xcf\x88\xc0\x18\x11\x18\x23\x02\x63\xfb\x19\x11\x18\x23\x02\x63\x6b\xb1\x8f\x81\xc0\xf0\x55\x31\x7b\x37\x6b\xdb\xbb\x5f\x56\x86\x91\xcf\xfe\xad\x9a\xb7\x7c\x07\x6d\x7b\x89\x66\x54\x85\xbb\xc6\xc6\x48\x56\xe8\xfd\x3e\xc8\x46\x69\xe0\x10\x12\x2f\xfd\xba\xfc\xf9\x01\x06\xd2\xf2\xd1\x60\xfb\xac\x67\xe0\x27\x8a\xdd\x81\x21\x24\x08\xcb\x33\xf8\xfd\x7a\xc1\xd1\xcf\x74\x40\x9a\x71\x17\x99\x81\x65\x2a\x27\xee\xd3\x93\x9a\xfc\xa4\xde\x81\x5e\xb0\x06\x89\x3d\xd6\xce\x7f\xf6\x2d\xec\xc4\x67\x37\x94\xed\xbd\x70\x67\xfb\xd0\xbd\xf0\x6c\x0c\xe1\xeb\xfa\x1b\x5c\x13\xb9\xe6\x06\x9a\xdd\xca\x4e\xa3\xb0\xe1\x82\x16\xdc\x74\xdc\xb3\x8e\x7b\x20\x94\x4b\x0d\x56\x4f\xad\xcb\xfc\x45\x36\xd8\x6b\x7a\xa5\x62\xf5\xdc\x5a\xf1\x01\x2e\x98\xf8\x38\xbe\x03\xc9\x1c\x51\xac\x7d\x69\x6e\x0b\xfe\xc4\xe3\x9e\xd4\x81\x78\x10\xaf\x29\xd5\x60\x03\xae\x4b\x6a\x2c\x51\x2b\xc3\xea\x1f\xf6\x1b\x2c\xfe\xfb\x3d\x50\x87\x7e\xe2\xbd\x24\x7d\x44\xbe\x21\x3d\xb8\x38\x03\x47\xc6\x5a\x42\x80\xd0\x90\xc2\xb0\xe7\x5e\xed\xad\x7b\xa6\xee\xba\x2f\x11\x6b\x86\x69\x02\x17\x18\x7b\x64\x45\x4d\x94\x50\x63\x14\x9f\x57\x66\xe0\x0e\xb6\xa6\x4d\x26\xd7\x6b\x87\x57\xf2\x00\x09\xc0\x3c\xe9\x29\x69\xb4\xde\xf6\x1d\x0d\x00\x80\x29\x21\x77\x6c\xb8\x5d\x62\x7b\xdc\x70\x22\xfd\xc2\x01\xdb\x43\xac\x91\xd1\x6c\xe5\xe0\x53\x2f\x89\xef\x2f\xf4\xf7\x4a\x56\xf1\x25\xb3\xcf\xae\x6a\xd0\x8f\x35\x51\xdc\xd1\x2c\xc8\xd2\x52\xc1\x63\x4f\xcb\xb2\xe0\x01\xed\xc5\x9e\xed\xa2\x68\x56\x4e\x13\x68\xc1\x0e\xb0\xb4\x3b\xb9\xae\x3b\xdf\xda\xc5\x70\x17\x48\x30\xf8\xf3\xd7\x6a\xce\x0a\x86\x0d\xba\x57\xa0\xb3\x42\x1d\xe6\x27\x4b\x7e\xc5\x4b\xd4\x92\xa9\xa9\x49\x83\x39\x6c\xff\x3c\x1c\xab\x75\xf7\x7d\x29\xf3\xdf\x93\xff\x2b\xac\x2e\x75\x8f\x64\xad\x81\xf7\xfd\xcd\xfb\xfa\x08\xd8\x5f\x7d\x77\x07\xcb\x49\x7e\x39\xac\xe5\x5a\x0a\x9a\x99\x25\xcf\xc9\x1c\x23\xe7\x9a\x19\xf2\x4a\xb0\x27\x0c\xc9\xfb\xfe\x8b\xa4\xd3\x07\x78\x90\xa4\x1f\x05\x4c\xc8\x0e\xda\x0d\xe5\x35\xf9\x15\x8e\xb8\x64\xca\x03\xec\xe6\x56\x4a\x53\xc5\xc8\xa7\xcf\xe7\xc3\x93\x07\xcc\x93\x7a\x9a\xa8\xa7\xc9\x64\x32\xb1\xf3\xbf\x59\x90\x4a\x40\xbf\x72\x3b\x30\xbf\xe6\xf0\x75\x2b\x22\xd6\x32\xe7\x8b\x40\x1d\xeb\xce\xae\xd8\x73\xd4\x0c\x0d\x58\x9b\x8a\x8d\x9b\xf1\xb4\x1f\xa0\xd6\x51\x1f\x7f\xfb\xeb\x17\x7b\x01\x54\x25\xae\x12\xcf\x82\x5d\x55\xcb\x00\x46\x02\xe8\xc1\xce\x8b\x09\xa3\x36\x80\x68\xda\xa9\xa5\x3d\x6c\x81\x2a\x99\x41\xe5\x9a\x1f\xb4\xbd\xa4\xb1\xa9\x6c\x7d\xea\xb9\x5b\xf3\x29\xf9\x48\x37\x84\x16\x1a\x71\xb1\x03\xb0\x23\x82\xfd\x4b\xb7\x04\xde\x94\xc0\x15\x81\xf1\xc2\xb9\x34\xab\xed\x1f\x04\xfb\xd9\xcf\xc0\xa7\xd7\x7e\xe5\xa2\x05\x71\xaa\xef\x87\x3d\xdf\x1e\x66\x09\xfa\xc0\x34\x29\x15\xcb\x58\xce\x44\xc6\x9c\x57\x8b\x9a\xb0\x7a\x4d\x4e\xc3\x09\xb7\x52\x7c\x96\x32\xde\x25\x74\xd3\x02\x5f\xba\xae\xb3\xcd\xb5\x00\xa6\xb0\x65\x11\xaa\x03\x2e\x21\x21\xc5\x04\x20\x3b\x95\x76\xf7\x2e\x36\x9c\xdf\x39\x6b\x8f\xb4\xe0\xb9\x83\x52\x0e\x73\xc1\x9a\x2e\x19\xa1\xa6\x66\x2a\x7b\x0d\x09\x5d\x41\xc1\x7b\xab\xa4\x19\x92\x4b\xd6\x40\x77\xa8\x26\x3f\xdc\xbc\x1f\x24\xf9\x86\xbc\x82\x96\xd8\x70\x76\x17\x94\x17\x10\x85\x86\xce\xad\x5b\x8d\x61\x17\x9e\xbc\x9d\xca\x20\x4d\xe0\x6f\x22\x15\x76\xb6\xbf\x20\x42\x62\xef\x03\x37\x4f\x2b\xb5\xbc\x84\x73\xae\xe0\x60\xc1\xf8\xee\x51\x39\xe4\x38\x0c\xfb\xda\x44\xfe\xa5\x8e\xc3\xd0\x44\xe3\x1a\xfc\x03\x4f\xff\xa0\xd9\x60\xdf\xec\x1d\xe1\xf6\xc3\x91\x85\x5b\x5b\x15\xb2\x0c\xde\x5d\x21\xe4\xd4\x35\x33\x34\xa7\x66\xf8\x98\xa0\x40\x6c\x50\x82\x91\x7b\x3d\x1c\xc1\x19\x16\x8b\x7d\x7b\x3d\x48\x33\xcc\x07\x7b\x45\x5f\xe0\xfa\xfc\x3a\x62\x51\xb3\x0f\x5c\x54\xcf\xa8\xd8\xc6\xbb\xbc\x2c\x1f\xdd\x5d\xc3\xab\xd8\x74\xe4\xd9\x38\xd5\x0b\xf5\xc4\x7c\x57\x17\x1c\x3e\xd7\x37\x9d\xbd\xdf\x6e\xa8\xe1\xa5\x1c\x08\x0b\xab\x37\x02\xde\x7c\x98\x9b\x14\x15\xb9\x5c\xef\x8c\xd2\xde\x41\xa0\x65\xb7\x3c\xa4\x6d\x4e\x8b\xe1\xa6\x7f\x56\x89\x93\x78\x01\xc7\x46\x0f\xc0\xcc\x4a\x0a\x1f\x7c\x00\xc3\x8c\xeb\x7a\x77\xd0\x52\x83\x64\xa1\x78\x73\x83\x34\xb1\x83\xa8\xf9\x90\x94\xe8\x81\x92\xfd\x7d\xe9\xf7\xce\xe9\xb3\x2c\x18\x66\x60\xf9\x49\x59\x12\xdf\xd4\x9c\xe0\x87\x29\x73\xba\xb7\x56\x6b\x67\x4e\x60\xc7\x7e\x4b\x73\xaa\x02\xd7\xdf\xce\x9c\xec\x7d\xd9\x9d\x13\x5c\x5a\xdf\xce\x9c\xa2\x7c\x9a\x6d\x33\x1d\xec\x9b\x78\xd9\x7d\x45\x0a\xae\xe1\xb2\x07\xf3\x5e\xb7\x45\x36\xe0\xfa\xb9\x82\xdc\x1b\x19\xac\xc3\x8a\xa0\xf0\x2d\x71\x7a\x01\x46\xbf\x73\xa7\xee\xac\x51\xa0\xa3\x4a\xa9\xf8\x9a\xaa\x8d\x35\xc0\xa6\xbb\x97\x82\x90\x7e\xc8\x5e\x6b\xa4\x79\x1e\xee\x33\x65\x2d\xcf\xa8\x4d\x8a\xc0\x40\xc6\xde\xbe\xb1\xf7\x6f\x1c\x62\x4d\x6f\x74\x66\x8a\xf8\x2d\xbe\xc3\xdf\x83\x2b\x8c\xd0\x7a\xbf\x05\x5d\x33\x5d\xd2\x8c\xe5\x9e\x22\xa0\x2e\x43\x13\x6e\x72\x0b\x67\x32\x77\xf9\x5c\x95\x68\x62\xd9\x9e\xd6\x2b\xe7\x54\x89\xd3\x1f\xdd\x9d\xfe\x9a\xac\xf9\x72\x65\x6a\x8b\xa3\xa0\x95\xc8\x56\x2f\xdc\xa5\x3d\x8b\xe1\x72\xc5\xec\xb9\x7f\x60\x4a\xb0\x82\x94\x54\xd1\x35\x03\x50\x50\x94\xe5\x1d\x0f\x36\x8d\x03\x9a\xee\xc1\xd0\x2d\x08\xf5\x9f\xd9\x38\x10\x70\x58\x0a\xc5\x47\x9b\x23\x01\xa6\x9d\x81\xfd\x08\x2a\xc8\x69\x47\x16\x07\x2c\x8d\x00\x95\xc6\x00\x4a\x93\x2a\x21\x0f\x1f\xcb\x27\x2e\x72\xf9\xa4\x0f\x51\x9e\xff\x86\xaf\x7a\xdd\x2e\xab\x9d\xcc\x5b\x0a\xf4\xe0\x54\x5a\xca\xf5\x5e\x05\x5a\xe2\xc0\x7c\x67\x39\x1a\x2d\x86\xb7\xcd\x19\x2f\x6e\xad\xb4\x98\xfe\x93\x28\xbb\xc7\xd0\x6c\x97\x6b\x4d\xdf\x29\x4b\xcf\x70\x5a\xdc\x95\x89\x4d\xe0\xbe\xff\x78\x77\xd5\x7d\xdd\x2a\x1e\x4f\x90\x0b\x6a\x67\x6c\xff\xde\x64\x48\x07\xcf\xd3\x13\x9b\xaf\xa4\x7c\x20\xaf\x7c\xe0\x6b\xc9\xcd\xaa\x9a\x4f\x33\xb9\x6e\xc5\xc0\x26\x9a\x2f\xf5\xa5\x63\xcd\x89\x9d\x41\x38\xb9\x8a\x8b\x02\x64\xa3\x97\xde\x90\xf5\xed\xbc\x01\x30\xc8\xac\x9e\x05\x6c\x10\x9c\xc4\x88\xde\x75\x9b\x9a\x42\x77\x19\x40\xda\xd5\x59\xe2\x75\x6e\x7b\x44\xfb\x2e\x5a\x94\x2b\xea\x02\x3b\x2e\x67\x0d\xf2\x12\x57\x52\x48\x17\xc7\x47\x38\xb6\x73\xd9\x61\x3e\x7b\x58\x54\x35\x47\x12\xe6\xbb\x60\xd4\x54\x8a\x91\x45\x41\x97\x47\x53\x55\x77\xb9\x69\x28\x06\xe8\x9f\x00\x47\xc1\x52\xba\x74\xc5\x16\x6c\x28\x38\xe3\xbd\xdb\x8a\x1e\x9c\xad\x3d\x69\xaf\x79\x78\x7f\xa2\xf7\x64\x7b\xcd\x83\xa4\x4f\xb2\x27\xb5\x0b\x2d\x79\x2b\xc0\x95\xe6\x5e\xb4\xb2\xca\x4b\xf4\xbd\xae\xb5\xe0\xe4\x76\x7a\x74\xee\x75\xaf\xd9\x9f\x74\x5d\x6c\x11\x47\x7b\xcb\x05\x17\x72\xb3\xc5\x50\xdc\x15\xe1\x2f\xba\x15\xc8\x69\x6f\x06\xb2\xef\x76\xe8\xe7\x71\xe4\xe1\x88\x75\x48\x66\xf3\xcf\x6d\x66\xfb\x1a\xfc\x7e\x14\x00\x03\x26\xf9\x5f\x65\xd0\x8d\x37\x1a\xc5\x70\x7e\xb7\xf3\xde\x1e\xb1\x45\xba\xbf\xea\x0f\xa7\x63\x7e\x44\x7d\xd6\xb8\x46\x03\x25\x0e\x8b\x64\xa8\x7e\x68\xa0\x21\x0c\xea\xc2\x34\x08\x90\xe6\xdf\xdd\x54\x27\x14\x47\x13\x28\x1b\x33\xb0\xfa\x46\x16\x0c\x21\x28\x71\x40\xb5\xbd\x90\x8f\x73\xdd\xa6\xd3\xc7\x11\x01\xeb\x68\xb7\x40\x8d\xcc\x71\xfd\xee\x6b\xda\x70\x1e\x8c\x81\xf6\xbd\x20\x75\xf0\x2f\x83\x1e\x11\x6b\x63\xdb\xf5\x33\xc8\xfb\x50\x1e\xc8\x29\x14\x46\xf1\xb2\x60\xe4\x0f\x0f\x6c\x73\x81\x55\x5a\xd8\x62\xc1\x32\xf3\x27\x52\xe9\x00\xbb\x02\x4c\xcd\x64\x2b\x2e\x96\xc4\x6a\x6c\xd4\x48\x45\xfe\xe0\xff\xd7\x9f\xfa\x4f\x45\x9c\x82\x87\xe3\x48\x30\x25\xaf\xe1\x85\xad\x9a\x2c\x38\x6d\xa4\x65\x97\x0b\x46\x1c\x3a\xb0\xd7\x50\x34\x62\xcd\xa8\xd0\xbe\x96\x52\x51\x74\x48\x69\x57\xca\x27\x12\x61\x45\x3c\x20\xcf\xa3\x49\xa8\x62\xe4\x56\xde\x39\x4c\xce\x05\x99\x29\xb6\x60\xaa\xf9\x97\x60\x54\x98\x90\x5b\x79\x8d\x05\x0f\x86\x67\x13\x29\x7c\x1e\x58\x6f\xd9\x24\x7c\x3a\x4b\xfd\x57\xb6\xf1\xf2\x01\x57\xe5\x81\x6d\x9a\x28\x6c\x73\x10\x42\x8b\x82\xbe\x3c\x62\xe4\x74\x70\xcd\x1f\xd8\x06\x8d\xa8\xb0\xee\xf4\x80\x23\x03\xd4\xcf\x45\xc3\x96\x1e\x19\x7d\xfd\xcc\xb5\xd1\xff\x8e\x87\x2a\x93\xeb\xb9\x6b\x90\x1d\xa0\x8a\xc3\xf2\xec\x03\x23\xf3\x1b\x29\x72\xf8\x4f\x18\xe2\x31\x36\xc2\x0f\x39\x61\x37\x3e\xf9\x59\x2a\x56\x2a\xa6\xc1\x3e\xa0\x76\x44\xe7\x9a\x28\x56\xa0\x48\x5a\xf1\x32\x74\x4d\xc9\xe6\x3e\x9f\x92\x1f\x69\xc1\xf3\x7a\x34\xc8\xb1\xb8\x7a\x30\xe7\xeb\x7f\x54\xb4\x08\x9d\xa3\xb6\x76\x84\x2f\x78\x12\x76\x8b\xfe\x51\xf1\x47\x5a\x30\xcc\x12\x7f\xe2\x45\x9e\x51\x15\x62\xfa\x85\x54\xbe\x98\x94\x76\x75\x21\x00\xc2\x44\x32\x2a\x6a\x51\xd8\x70\x8e\xb5\x93\x42\x3c\x48\x4a\xaa\x0c\xcf\xaa\x82\x2a\x62\xe5\xc6\x52\xaa\x40\xfd\x87\xd8\xfb\xbc\x3e\x06\x11\x98\xf5\x6d\xe1\xbf\xfd\x6e\x7b\x6f\xcd\xaa\x6e\xe5\x1e\x9c\x1e\xe2\x0f\x3a\x87\x92\xbc\xea\x16\x9f\x93\x0b\x2f\x1f\x6b\x91\x12\x92\x66\x2d\xc4\x68\x47\x51\xc3\x4a\x3d\xf9\xeb\xe6\x56\x6a\x64\x44\x88\x59\xfe\xbc\xf1\xe0\x9b\x76\x69\x13\x80\x3d\xb9\xf1\xba\x43\xe8\x36\x39\x2c\x0b\x50\x78\x2c\xa4\x62\x8f\x4c\x91\x57\xb9\x04\x8a\xec\x91\x67\xe6\xf5\x94\xfc\x1f\xa6\x24\x56\x00\x61\x4b\x0a\x19\x5e\x78\xa4\x03\x44\x6b\xe8\x59\xd3\xf2\xfa\x0d\x79\x05\x44\x09\x5f\xaf\x59\xce\xa9\x61\xc5\xe6\x75\x0d\x5a\x8f\xa8\xf5\x72\x7c\xbf\x75\x84\x33\x71\x8f\x23\xb1\x23\xd2\x5d\x09\xa5\x2e\xeb\x38\xd5\x21\x28\x49\xbc\xb4\x6e\x24\x30\xd7\xee\xec\x77\xac\x06\x5f\x9b\xc8\x09\xec\x68\xb6\xfb\x0f\xcb\xbb\x94\x28\xb6\x84\x73\x8b\x67\xf1\x08\xa7\x36\x5a\x07\xef\xf3\x3d\x0e\x10\xe8\xfd\x93\x62\x65\xc1\x33\xba\x23\x1f\xf6\xe6\x1f\x2d\xa0\x2c\x06\x15\x19\xdc\x9b\x24\x67\x65\x21\x37\x0e\x42\x7e\x6d\xb2\x9c\x58\x33\x72\x4e\xf5\x8e\x5a\x30\x94\xfa\xd1\xcf\x56\x4e\xcb\xbe\x67\xeb\xb2\xa0\x66\x87\xa5\xba\xbe\xfc\xee\x6f\x41\x53\x15\xce\xcf\x49\x01\x6d\xd0\xa0\xbd\x61\xc4\x8e\xf8\xce\x32\x42\xb5\x09\x2c\x17\x24\x35\xab\x67\xb4\xf5\xbb\x21\x35\xd2\xdb\xd3\xfb\x8e\xc0\x96\xe5\x63\xa8\xc8\xa9\xca\xdd\xc6\x9c\x9f\xeb\xfa\xe5\xbd\x16\xcb\x92\x9b\xe9\xc3\xef\xc0\x5c\xc9\xe4\x7a\x5d\x09\x6e\x36\x97\x50\x3e\x91\xcf\x2b\x7b\x53\x5e\xe6\xd6\x4e\xbd\xa4\x25\xb7\x66\xcb\x23\x13\x68\x11\xac\xf3\x5f\x78\xba\xfb\x2c\x95\x90\x4e\x0c\xe5\xd7\x86\x8d\x94\x13\x17\x33\xbd\x6a\x46\xe0\x76\xb6\x72\xd5\xa2\x2a\x6b\x60\x5b\xc5\x0b\x0f\xf5\x9a\x96\x44\x1b\x7b\x0f\x0c\xf8\xe6\xcd\x0a\x8e\x2f\x42\xfc\xbd\x59\xb2\xf1\x60\xa2\xf9\x86\xb0\x67\xc3\x94\x65\x1b\x23\x65\x81\x45\x57\xcc\x50\xf5\x51\x2b\xc9\x15\x33\x8a\xb3\x47\x46\xa8\x9a\x73\xa3\xa8\xda\xb4\xf6\xf2\x7e\xc5\x36\xa0\xc5\xd8\x4b\xe0\x1f\x15\x53\x1b\xf0\x00\x0c\x29\xda\x8d\x78\x82\xbb\x57\x3d\xb2\x9c\x3c\x59\xb5\x1f\x21\xb7\x60\xf8\x00\xd7\xe8\x1d\x56\xd9\x6f\xdb\x56\x9a\xa9\xc9\xb2\xe2\x39\xbb\x6c\x6d\xe8\x81\x05\x4f\x07\xff\xac\x7b\xdc\xe1\x5b\xcc\xef\x02\x1c\x78\x24\x9d\x95\x9f\x33\x8d\x59\x57\x6c\x45\x1f\xb9\xac\x6b\x46\xb8\xd3\xba\x5f\xca\x1e\xf7\xa4\xd8\xd1\x4f\xa8\xc8\x27\x58\xe8\xeb\x90\x03\xe3\x2a\x68\xde\xcc\xe2\x1c\x20\xf5\xcf\xfd\x25\x78\x33\xb3\x07\x4a\x41\x56\x67\x67\xfe\x83\x1c\xc3\x35\xa9\x74\x45\x8b\x62\x43\xb0\xac\x2d\xcb\x1d\xd6\xa9\xd8\x78\x8d\x60\x4d\xed\x97\xe0\x86\xa4\xc2\x7f\x64\x88\x62\xe3\x5b\x5b\x53\xe1\x88\xa3\x27\xd7\xb2\x32\x17\xe0\x6d\x99\xbb\x1a\x9c\x1a\xb4\x27\xab\xa5\xf4\x92\x9c\xb3\x1a\xa6\x55\xe3\x0a\xdc\xe4\xfe\xbd\xb9\x63\x2f\x5c\xd5\xce\x86\x31\xfa\xc4\xb5\x7f\x40\x35\x5a\x50\x5e\x74\xfc\x77\x56\x33\x77\xa5\x23\x31\x47\x20\x27\x66\xa5\x64\xb5\x5c\xb9\x52\x92\x03\x76\x13\x1a\x21\x2d\x9b\xf9\xec\x56\x0a\x76\x76\xe1\xca\x3a\xa2\xf4\x22\xaf\xce\xce\x5e\x5f\x10\xb8\x01\x01\xbb\x4a\x6e\xfa\x0b\x31\xb9\xe5\x9e\x3a\x4a\x30\xba\x79\xdb\x7d\x69\xef\xa5\x15\xa3\x79\x61\x77\xde\xcd\x18\xc2\x42\xfd\x36\x62\xa9\xe4\x33\x08\x03\x5f\x8e\xaf\x4e\xf8\xfa\x24\xec\x5e\xd5\x56\xae\xcb\xad\x78\xe7\x79\xad\x5f\xdf\xb9\x95\x39\x9b\x49\x65\x2e\x60\xa7\x3f\x48\x9a\xff\x99\x16\xf6\xd2\xb7\x7c\x83\x4a\x36\xe4\x7c\x39\x08\xd0\xb5\x13\x96\x50\x7c\xb7\x97\x68\x62\x2e\xa0\x9f\xfc\x44\x30\xe3\x2a\x23\xfa\x7f\xbb\xfc\xc5\x23\x57\xa6\xa2\xc5\x84\x97\x1a\x0f\xaa\xf3\xc6\xd9\xb5\xe0\xfd\x39\xa8\xc1\x5b\xc7\x8b\xfd\x9b\x59\x9c\x33\xae\xf5\x7b\xc4\x0d\x79\x38\x45\x73\x7e\x5d\xc5\x86\xe1\x3a\xb9\x42\xe6\x4c\xd7\xf5\x1a\x71\x83\x3c\xa2\x51\x63\x7e\x77\x69\x88\x51\x74\xb1\xe0\x99\xc3\x5d\xf0\x9a\x41\xa6\x90\x5f\x32\x50\x23\xda\x0e\xcf\xdf\x3d\x98\xe7\x06\x2e\xe9\xbf\x36\xcb\x8f\x19\x2a\x95\xc3\x3f\x29\xa6\x4b\x29\x34\x1f\x0a\x8f\x01\x58\x52\xe8\x4a\x61\xc5\x5e\xda\x0c\x8f\x2a\xc5\x1f\xed\x89\x31\xae\x4c\xb8\x2f\xa4\xcb\x35\xd4\x69\x23\xfd\xf1\x1c\x97\x5f\xc5\x9e\xe9\xba\x44\xc8\x5c\x7d\x11\x17\x92\xe6\x93\xb9\x63\x43\xe7\x46\xf7\x73\xb2\x36\x74\x2f\x4d\x27\x3e\x9a\xc9\x06\x8c\xa2\x80\x97\x34\x42\x73\x09\xe1\x03\xfc\x9c\xee\x71\xc1\x66\xb2\xe0\x59\x5c\xd9\xf0\xbd\x6f\x92\x9c\x09\x69\xe7\x05\x69\x98\x5c\x7b\x4d\xd8\x5d\xa5\xfd\xc2\xdd\x48\xa2\x64\x65\x58\x4b\xdb\x71\x5b\x68\x24\x6c\xdc\xc4\x8a\xe9\xc2\xca\x36\x5f\x11\xfa\x89\xe7\xad\x1a\xbe\xfd\x87\xfd\xec\x83\x84\xba\xd1\x5e\x73\x71\xf1\xe3\x82\x33\x61\x88\x53\xbb\xec\x19\x11\x39\xa1\x8f\x92\xe7\x58\x9d\x3e\x93\x03\x97\xdb\x4a\x96\xc0\x74\x6d\x71\x04\x04\xac\xb4\xc2\x4a\x08\x56\x1e\x79\xb9\x71\x41\xe6\x95\x21\x8a\xeb\x87\xfe\x05\x28\xa5\xc1\x10\x67\xb1\x21\x7c\xed\x98\x2b\xaf\x57\x41\x97\x58\xf7\x78\x39\x25\x67\x4e\x6a\x9e\x11\x39\xd7\x59\x35\xb8\xaa\x7d\x13\xb5\x1a\x66\x46\x5d\x75\x52\x98\x2b\xcc\x09\x50\x68\x70\xef\x0d\x8a\x07\x9c\x8f\xd3\x09\x57\xf4\x91\x91\xa5\x94\x39\x91\x8f\x4c\xd1\xc2\x1d\x8f\x66\xc0\x87\x0a\x40\xac\x40\xfa\x6e\xc5\xb2\x07\x7f\x09\x44\x31\xe6\x9e\xf7\xb6\x4b\x4f\xc2\x2f\x32\xfb\x0b\x98\xcf\x6c\xa8\x28\x83\x47\x96\xd5\x02\x6e\x37\x1f\xf5\x2f\x7b\xbe\x38\x00\x12\xf0\xf9\x75\xde\x2f\xe2\xb5\xa9\x92\x93\x39\xcd\x1e\x98\xc8\x9b\x62\xe4\x8d\x7a\xe2\x07\xda\xcf\xe8\x7f\xb3\x42\xda\xee\x29\x28\xd7\xcd\x45\xee\xdf\xf4\x35\x19\x5a\x51\x1b\x37\x86\xfe\xa1\x02\xf3\xb8\xeb\xdb\x39\xfc\x51\xf1\xf7\x98\x5b\x8d\x49\x8f\xdb\x27\xa1\x97\xe2\xf5\x5e\xb1\xd1\x26\x94\xf5\xbb\x53\x8f\x53\xef\xbe\x68\x8d\x35\x56\x2b\xde\xd6\x5f\xbc\x5c\xbb\x87\xaf\x75\x66\xdf\xfe\x8f\x61\x0d\x71\xc9\x4c\xcd\x0c\xf5\x8e\xdf\xcc\xba\x21\xe4\x6e\xab\x82\x01\xb6\xf2\x81\xd8\x9c\x95\x4c\xe4\x50\xfb\xef\x69\xc5\x8c\xef\x3c\x50\x89\x9c\xa9\x02\xb4\xb3\xac\x90\x55\x3e\x71\x95\xc5\x95\x2f\xf7\xd3\x4f\x19\xc7\xb3\x71\xf5\xf0\xb7\xd6\x0f\xd9\x81\xc2\xbf\x12\x7f\x29\xda\x0d\x75\x33\xeb\xe7\xd7\x96\x6a\xec\x7d\x89\xbc\xa5\xd1\x81\xec\xea\x0c\xd4\xe7\x8a\xf5\x0f\x14\x67\x82\xf8\x60\x5c\x8e\xde\x04\xe5\xa0\xfc\x69\x4f\xf3\x0e\xa4\xe7\x67\xab\xb4\xc7\x69\x63\xe7\xed\xd8\x28\x96\xa2\xaa\x81\xa8\x3e\xa9\xb7\xa0\xc6\x32\xf4\x05\x6c\xf1\x30\xa7\x28\x66\x07\x9a\x35\x8a\x8d\x37\x1c\xf6\xac\x52\x47\x3b\x19\x26\x0b\x95\xf1\x91\x72\xcb\x00\xaa\x87\xed\xae\x8e\x9b\x99\x6e\xdb\x31\x41\x92\x71\x9b\xd8\xde\xac\x10\x4f\x4f\xcf\x92\x42\xe6\x58\x83\x68\x02\xc7\x15\x2d\x7a\xdf\x46\xa2\x15\x35\xef\x0e\x6b\xb2\xe0\x8a\x3d\xd1\xa2\xe8\x8d\x9e\x9f\x5e\x17\x83\x43\x18\xc7\x5d\x56\x43\xf6\xfa\x3d\xbc\xd6\x28\xa1\xe8\x2a\x74\x5c\xd6\x52\xcc\xbf\x65\x63\x28\x05\x0d\xe0\x24\x2f\x5c\x68\x0e\x0d\xa1\x61\xf8\xf6\x6a\x00\x1b\x5d\xf8\x39\x0f\xc2\x47\xcb\xc1\xbb\x34\x2e\x32\x1f\x46\x50\xef\x00\x19\x1a\x14\x09\x80\x41\x94\xf1\xb0\xd7\xa0\x63\xa9\x79\xe0\x2c\xd6\x25\xae\xc8\xfb\xdb\xbb\x9f\x3e\x5c\xfd\xf9\xfa\xc3\x94\x5c\x15\x85\xe3\x87\x1a\x4c\xeb\xd6\xeb\xae\x64\x59\x28\xb6\x6b\x29\x82\x3a\x57\x09\xfe\x8f\x0a\xc7\xea\x8f\xfe\x9a\x96\x35\xb6\xeb\xdc\x5a\xd7\xe7\x01\x69\x80\x0f\x17\xe4\xda\xa9\xe8\xb0\x63\xb5\x97\xd0\xd7\xa8\xb0\x52\xa2\x6e\xd9\xd0\xda\xdb\x10\x5d\x5d\x77\x55\x91\x22\x92\xd1\x49\x7c\xc4\x52\x04\x14\x4e\x7c\x76\xcf\x24\x6c\xa8\x74\xb9\x26\x60\x6f\xc2\x2d\x8c\xf5\xb5\x9a\x31\x86\x27\xe7\x4f\x31\x5c\xae\x76\xd0\x7f\xac\x35\xcb\x2d\xbb\x63\x4a\x7e\x40\x3f\x5b\x28\xbc\xeb\xbd\x70\xdd\x70\xdc\x76\x1f\x9f\x06\x45\x5d\xab\x9e\x71\xd1\x72\xaf\xc6\x02\x6e\x0f\xe2\x16\xd6\x2a\x2f\x34\x4b\xf6\x9e\xe1\xd3\xf2\xa1\xf9\x82\x9a\x1c\x38\x90\x56\x46\x4e\x9a\xec\x4a\x5c\x73\x1e\x03\x89\xf0\x61\x19\xab\xba\xca\x2d\x03\xd5\xb9\xaa\xac\xda\x14\x5f\xda\x27\xae\xb8\xcf\xa0\xc4\xb4\x7b\x0b\x7d\x91\xec\x34\x86\x8b\x0a\xc6\x96\x2c\x8b\x0f\x8e\x86\x6b\x0f\xee\x01\x62\x29\x07\x9e\xf2\x7c\x92\x7c\xe1\x9c\x62\x2e\xe1\xdc\x8c\x40\xed\xbd\x17\xc7\x3b\x09\xd1\x0c\x00\xf2\x57\x8b\x05\x17\x88\xf9\x5c\xf0\x65\xd4\x7d\xbe\xf7\xcd\xe6\x76\x73\x90\xdb\x26\x66\xd8\x7f\xaf\x41\x71\x3f\x2c\xb4\x42\x1d\xb5\x97\xd4\x86\x43\x0d\xb0\xdf\x48\xda\x99\x89\x7f\x61\x68\xf0\x76\x90\xef\xe0\x77\x83\x1b\x7f\x33\x23\x73\x6a\x19\x2b\x76\x42\xb1\x93\x22\x49\x35\x14\x77\xa6\xd8\x7d\x75\xcb\xb5\xe0\x2b\x2b\x06\xe1\x28\xc4\x2d\xc1\xcd\xcc\xfb\x8a\x70\x92\xda\xf0\xec\x61\x03\x1f\xc1\xd2\x39\x2e\x94\x58\xe9\x30\xd4\x77\xce\xc8\x9f\xde\x90\x7f\xfb\x37\xf2\x87\x3f\xfe\xee\xb7\xbf\x7e\xf3\xe6\xd5\x42\x2a\xf2\x96\xe4\x74\xf3\xda\x0a\x48\x0f\x5a\x75\xcb\x48\xfe\xf8\xc7\x20\xc5\x33\x3f\xc8\xb3\x46\x0a\x37\x95\x1d\xdf\xfc\xce\x7d\xe3\x57\x64\x25\x2b\xa5\x5f\x87\x14\x97\xf8\x53\x9f\x9a\x98\xf8\x32\xb0\xf0\x50\xc6\x71\xf7\x92\x77\x05\xb2\x0c\x53\x6b\x48\x45\x59\x61\x6d\xa8\xfa\x1a\x69\xae\xee\x88\x12\xc6\x46\x36\x11\x90\x06\x67\x86\x67\x04\x51\x66\x4d\x30\xe3\xa2\x15\x2c\x69\x82\x22\x83\x41\xe0\xae\x96\x70\xd6\xa6\x76\xd6\xd1\xe7\x1a\x8b\x8f\x45\x85\x4f\xce\xea\xa1\x9c\xd5\x5a\x02\x74\xd4\x70\x9e\x59\xbb\x69\xe0\xc3\x6d\x85\x0e\xa1\x34\x73\x63\x99\x0e\x42\x4f\x64\xcb\xad\x5b\xab\x8f\xb8\x24\xf5\xd2\xb7\xdc\x67\xae\xed\xe7\x40\xe9\x8a\x56\x51\xc0\x2d\xd7\xdd\x7c\xe3\x42\x89\x50\x9b\xda\xb7\x7c\xc2\x42\x50\xcd\xa7\xfb\xc5\x2d\xf0\x14\x28\x51\x9d\xb8\xa9\x8f\xce\x09\x49\x9c\x49\x44\xf0\x0f\x61\xa5\x8a\xba\xae\x99\xac\x33\xef\xb2\x9a\x17\x5c\xaf\x10\x66\x45\xc1\x59\x26\x17\xad\xdf\x28\x3a\xe8\xb5\x35\x2b\x6a\x6d\x01\x6d\x20\xd2\x6f\xb9\xed\xcc\xf3\xd0\x19\x99\x57\xbc\x40\x7f\x51\xbd\xaf\x1e\xcd\x89\x5b\xdb\x3f\xd6\x46\xe1\x7d\x64\x6a\xe3\x22\x2c\xa0\xee\x82\x37\xbf\xe6\xb0\xac\x61\xf3\xb3\x36\x5b\xf6\x97\xd8\x6a\x06\x55\x2b\xbe\x50\xf5\x0e\x9c\x4a\x00\xba\xd8\x1f\x8e\x21\xaf\x78\xbf\xe8\x6d\x7c\x30\x3e\xbe\x55\x29\xc5\x84\x41\x1f\xc5\xeb\xc0\xd0\xbf\x88\x05\xed\x36\x9a\x8b\xe5\xa4\xfe\xdd\xa4\xb6\xa3\x21\x6c\x7a\xa0\x47\xeb\x10\x40\x96\x36\x52\xd1\x65\x00\xec\x84\xbf\xa9\x53\xb3\x9c\xb7\x10\x44\xa3\xf6\x7f\x5b\xd1\x56\x6a\xe6\x16\xb5\xa1\x3b\x1b\x5d\x39\x1f\x65\xbe\xff\x42\xdf\x02\xe6\x34\x3f\xee\xea\x1f\x1e\xc8\xe1\x8a\x53\xaf\xe1\x17\x7d\xf6\x82\x2b\xd1\xd7\x0a\x6f\x24\x17\x8f\x75\xd3\xbe\x2c\x99\xd2\x5c\x1b\x26\xcc\x04\xa9\xea\x5f\x38\xdf\x14\x0c\x61\xf2\x76\xdf\x56\x0e\x38\x43\xa2\x76\x78\xbf\x82\x9a\x53\x43\xd1\x8b\x19\x5c\xc7\x96\x5f\xb6\xb6\x8a\xec\x2a\xfe\x08\x53\xb8\x13\xb4\xd4\x2b\x69\xde\xd7\x04\x31\x2b\x69\xef\x80\xbd\x4f\x7a\x09\x38\x55\xc8\xdd\x72\xad\x7b\xf1\x34\xe3\xf1\x2b\x36\x5b\xb4\x1d\xf4\x64\x2f\x49\x70\x16\x34\x07\x19\x72\xc5\x30\xb8\x55\x43\x2d\xc1\xa9\x67\xb5\x29\xa6\x00\xd6\xe0\x3d\x8d\xdd\x8f\xec\xa5\xde\x22\xd7\x18\xc3\x28\x74\x08\x25\x82\x3d\x79\xf6\xb0\xc3\x87\x1f\xb7\x1d\xa9\xbd\x50\x2f\x8f\x28\x77\xef\xa2\x87\x5a\x43\x35\x7a\xbe\xde\x3f\xf0\x6d\x3f\xe9\x5e\xba\x5b\xcb\xd6\x19\xbd\xfb\x58\x5d\x1d\x71\xce\xea\x60\x83\xbb\x63\xf6\x6f\x19\xf6\xb9\x6b\xcd\xcb\xad\x34\x45\xa9\xfb\x08\x01\xa1\x1b\x94\x9f\x8b\xca\x6e\xef\x05\x79\x02\x77\xb6\x20\x46\xee\xb7\x8c\xdc\x06\xac\xa1\x7b\x69\x33\x48\x5f\x62\xd3\x5d\x79\xdb\x38\xab\xd6\x72\xec\x25\x0b\x51\x4c\x40\xd2\xec\x93\xcd\x41\x20\x61\xc9\x07\x4b\x2e\x76\xab\x91\xcc\x6e\xb0\xb8\xa6\x03\x45\x61\xc9\x51\x1f\x1b\xac\xe1\x7b\xd8\x34\x18\x52\x58\x98\xc8\x86\x82\x1f\x37\x8b\x0e\xcd\x3d\x15\x6e\x1b\xad\xec\xaf\x5c\xe4\xad\xc2\xf8\xc3\xe1\x5e\xbb\xc4\x57\xb3\x1b\x1c\xe1\x94\x7c\x27\x15\x64\x3d\x49\x17\x08\xe2\x2a\x9f\x94\x14\xca\x23\xd8\xb5\xbf\xa8\x47\xd1\xaf\x3c\xb5\x0a\x37\x1f\x1a\x4b\x79\xe0\xfd\x1d\x4e\xbb\xf9\x34\xbc\x69\x6b\x6a\x9c\x9f\xa6\x77\x75\x0f\x1d\xcd\x90\xdb\x76\xb7\xdc\xc5\x56\xfa\xdf\x91\x47\x33\xe4\xb8\x98\xc0\xba\xed\xfd\x43\x4f\x8d\x89\x41\x4b\x67\xb0\x0a\xfd\x76\x01\xf0\xa6\x66\x77\x27\xdb\xc2\x97\x00\x6f\x8a\x7a\x07\x4a\xc4\x9e\xe8\x1a\xad\xbf\x7f\x08\x22\x72\xb8\xe2\xfd\x89\xd1\xc3\x47\xaa\x72\xff\x0d\x55\xb8\x8f\x68\x7f\x30\x5c\xd9\xfe\xc4\x2b\x7e\xb4\x6a\xf6\xa7\xa8\x64\x7f\x58\x15\xfb\x06\x9c\x3a\x64\x45\x27\x54\xb0\xff\xa6\x38\x66\x18\xcf\xed\xec\xfd\xa0\x10\xbb\x72\xc5\xd2\x00\xe1\x0e\xe0\x24\x27\xa7\xb4\x6b\x01\x04\xad\xa8\x60\xa7\xe6\x5c\xf4\x41\x95\x42\xb2\x04\xf2\x80\xae\x9f\xad\x90\xd4\xd1\x89\xd3\xdb\x2f\x75\x01\x9b\x38\xec\xda\xaf\xe1\x78\xcd\x6e\xe2\x00\xca\xed\x7e\xc5\x3a\xbf\x04\xaf\xc1\xd5\xed\xfb\xfe\x4b\x3b\x25\xe8\x7a\x35\x30\x28\x1c\x7c\xfd\x17\xcb\xb7\x03\xee\xba\xda\x2e\x43\x2c\xf3\x05\xe6\x67\x22\xba\x17\x72\x64\x5c\x96\x14\xb0\x3f\xe4\x6c\x0e\x98\x6a\xf8\x3c\x30\x84\x81\x23\xc5\x97\xc6\x74\xd3\xf2\x7f\x1f\x9a\xfc\x5f\x5c\xa1\x4e\xfe\x6f\xbd\x28\x71\xb5\xfa\x8c\xfc\x5a\x89\xb3\xf2\x68\x89\xb3\xb5\x6f\xca\xed\xc6\xde\xf4\xd9\x1b\x71\x41\x6e\xa5\xb1\xff\x0f\x53\xe1\x42\xb1\x4b\x91\x93\xf7\x92\xe9\x5b\x69\xe0\xf7\x47\x59\x26\x1c\x60\xc2\x22\x39\xf4\x3d\xa6\xfc\x80\x95\x0d\xe1\x16\x84\xde\xfb\xe9\x46\xe5\x66\xb7\x73\x01\x6f\x04\x91\xca\xaf\x46\x9d\x10\xa8\xdd\x07\xbc\xd6\x2f\xa4\x98\x60\x03\x87\x00\xe9\xde\x6c\x43\xfb\x95\xf6\x1a\xb6\x3f\x16\x5a\xfe\xce\x50\x5c\x1f\x09\xf0\x12\xe0\x5f\xc0\x42\x28\x0b\xa8\xd8\x97\x23\x0a\x7b\xb8\xe8\x2d\xb1\xab\x46\x0d\x5b\xf2\x8c\xac\x99\x5a\x32\x52\x86\xab\x11\x44\xb5\x7e\x4e\x2b\x32\x1a\x28\x9c\x16\x13\x54\x7c\x60\xfd\xef\x4f\xea\x6d\x38\x65\xd8\x11\x2e\x93\x0f\x56\xf8\x7c\x25\x05\xab\x35\x00\xbc\x0b\xd6\x14\x1a\x5e\xfc\x57\x5d\x4a\xe3\xbf\x49\x49\xb9\xd2\x53\x72\x45\x34\x17\xcb\x01\x28\x7f\xfb\x1d\xe7\xa3\x6d\x93\xb7\x94\x77\x32\xe6\xa9\x20\x2c\xd0\x9f\x50\x2e\x76\xee\xdc\x0b\xf2\xb4\x92\x9a\x81\xc0\xae\xd3\xb6\xcf\x1e\xd8\xe6\xec\xa2\x73\x82\x86\xec\xe2\xb3\x1b\x71\x76\x51\xbb\x2f\x3a\x07\xb7\xbe\xe7\xc0\x5f\x75\x06\x7f\x3b\x9b\xee\x5c\xd3\xfd\xae\xf5\xd0\xf5\xfd\x22\x1d\x0a\x0d\xab\x77\x05\xd5\xba\xaf\x34\xce\x56\xef\xb8\x76\xf1\x9b\xd6\xdb\x3b\xad\xc9\xb2\x82\xf2\x35\x6a\x96\x7b\x07\x7e\x14\xeb\x2f\xb3\x9f\xde\xef\x3d\x1d\x64\x5e\x7c\xff\xa3\xcc\xc3\x33\x6e\x7e\x5a\x97\xe4\x7c\x82\x6b\xdd\x39\x25\x9c\x77\xad\xe5\x1c\xd9\x3b\xdd\xee\xaa\xd4\x55\x2a\xbf\xe3\x05\x43\x00\x0e\x14\x0b\x58\x63\x2d\x45\x00\xfb\x60\x26\x5b\x56\x54\x7d\x25\x63\xb9\x40\x72\x60\x0e\x38\x39\x0c\xc7\x6e\xce\x0c\xad\x11\x93\x87\x2d\x4d\x14\x33\xfc\x58\xff\xd4\xab\x3e\x4e\x7f\x6e\x9c\x21\xde\xe1\x39\xab\xf7\xee\xc7\x7e\x17\xc1\x9c\x66\x0f\x88\x2d\xe6\xda\xad\x54\xda\xe8\x43\xe1\x8b\xfb\x3d\xe1\xdd\x7d\x21\x0c\x00\x06\xb9\x3c\xb8\xbc\x52\x10\x2b\x7b\xe5\xac\xb3\xd7\x00\x67\x2a\x57\x6c\xcd\x14\xdd\xce\x28\xec\x1d\x1b\x06\x2b\x41\x7d\xda\x9f\x5a\xd3\x75\xbc\x6f\xff\x1a\xa4\x88\x82\xac\x5f\x88\x62\x14\xcc\x78\xc1\x54\x37\x67\xda\x9f\x12\xde\x3f\xa2\xdd\x5b\xa2\x9b\xd6\x63\xb2\xbc\x4e\xfb\xba\xff\x70\xd7\xc5\x6e\x24\x44\x6e\xd6\x6c\x3d\xdf\x5f\xf3\x3a\xa4\x87\x97\x8c\xa9\x3b\x96\xa9\xfe\xa6\xb8\xdd\x96\xf7\xf5\xcf\x3d\x3b\x6a\xfc\x2f\x27\x82\x2d\x6b\xc1\x44\x98\x32\x81\x4a\xc2\xf3\x0d\x22\xf7\x60\x11\x70\x02\x50\x53\xc5\xfb\x79\x5d\xf6\xae\xcb\x12\x9e\x33\xf3\xc4\x98\x80\x5f\xf7\x1b\x1d\x6c\xa0\xa9\x40\x44\xa7\x31\xf5\x98\xb4\x18\x77\xad\x17\x22\x96\xa3\x77\xd8\x95\x43\x74\xa5\x2f\x47\x2f\x49\xa0\x82\x13\x72\xb5\xeb\xb4\x83\x0b\x1d\xba\x3e\x83\x77\x9c\xbf\xbf\xfb\x17\xef\x10\x89\x82\x89\xba\x77\xa8\xbd\x0e\x9f\xe6\xee\x4f\xb7\xaa\x71\xdd\x19\x6a\xd8\xa2\x2a\xee\x98\xf9\xa1\xf3\xbb\x9d\x71\x76\xb1\x76\xeb\xb2\x90\x1b\xc4\xea\x23\x7d\x2c\x76\xed\x54\xa5\x16\x55\x9f\x96\xa1\x18\x86\x50\x76\xe8\x02\xa6\x37\x07\x49\xed\xeb\x54\xa4\x04\x66\x95\x2c\x0a\x2e\x96\x38\xf8\xe0\x95\xf1\xb9\xfd\x6b\xcc\x0d\xc7\x49\x34\x2c\xc4\x9a\x4a\xd7\x03\x59\xc6\x3e\xed\xa8\x43\xb0\x35\x6d\xbf\x8c\xf6\x77\x87\xb8\x73\xa0\x04\x12\x8c\x39\x4a\xf4\xf8\x5f\x6f\xed\xae\x54\x39\x17\xb4\x20\x76\xe7\xea\xe6\xba\xad\x51\xf6\x9e\x91\x56\x9d\x05\x4f\xba\x85\x24\x6a\xa0\x57\x6f\x4e\x99\x21\x35\x78\xac\xfa\xa0\x52\x7b\x1a\x32\x74\xcb\xcf\xd5\xa0\xdb\x01\xe6\xdf\x3f\xab\x16\xfc\xb7\xb3\xed\xc7\xd2\x12\x1e\xad\x92\xb2\xbb\xe3\x5d\x9d\x07\x7f\x63\x67\x00\xb5\x65\x30\x96\x8d\x35\x67\x76\x75\xf4\x9e\x51\xec\xb3\x27\x27\xfe\xf3\xff\x23\x30\x52\x2c\x00\xd1\x7e\xb5\x8f\x97\xe5\x1c\x2b\x74\x7c\xcf\x84\xd3\x14\x06\xa7\xb6\xfb\x73\x7f\x71\xac\xa5\x36\x44\xb1\xcc\xda\x59\xcb\xe6\xaf\xfe\x85\x9d\xe5\xaf\x93\xc1\xbd\x2f\x78\x4a\x6e\xec\xbd\xa3\x30\x89\x3b\xaf\x31\x35\xfe\xef\xe7\xba\x45\xf7\xa2\x27\x31\xdd\x4a\x0b\xd8\x6f\x80\xfa\xaf\x2b\xe3\xae\x1b\xd4\xac\xaf\x66\x37\xee\xd2\x1b\x28\xf3\xb3\x53\x4b\xaa\xff\x08\x94\x2b\xaa\x77\x18\xbc\x97\xab\x14\xa3\x7a\x77\x79\x7b\x7e\xbe\x67\x5b\xb7\xfe\xc9\x73\x22\x79\x7c\x0b\x98\x8a\xb7\xcd\xbf\xc1\x1e\x63\xdc\xaf\xf3\x67\xa7\x23\xe4\xad\xfe\xe4\x1e\xb4\x83\xff\xf2\xff\x03\x00\x00\xff\xff\xc9\x61\x0a\xa2\xfe\xcd\x05\x00") func kubedbCom_etcdsYamlBytes() ([]byte, error) { return bindataRead( @@ -564,12 +542,12 @@ func kubedbCom_etcdsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_etcds.yaml", size: 206553, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_etcds.yaml", size: 380414, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_mariadbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x5d\x73\xdc\x3a\x72\xf6\xbd\x7f\x05\x2f\xde\x8b\x37\xa9\x92\x93\xb3\x67\x6b\x2b\xf1\x4d\xca\x6b\x9f\x73\xe2\xac\x3f\x54\x96\x7d\x36\x55\x5b\x9b\x2a\x0c\x09\xcd\x20\xe2\x10\x3c\x00\x38\x92\x4e\x2a\xff\x3d\x35\xa4\x38\x1f\x12\x89\x7e\x1a\x04\xe7\x43\x22\xae\x6c\x0d\xd9\x00\x1b\x8d\xee\x46\xa3\xf1\xb4\x28\xd5\xaf\xd2\x58\xa5\x8b\x37\x89\x28\x95\xbc\x73\xb2\x58\xff\xcf\xbe\xbe\xf9\x17\xfb\x5a\xe9\x7f\x5a\xfd\x30\x93\x4e\xfc\xf0\xea\x46\x15\xd9\x9b\xe4\x5d\x65\x9d\x5e\x7e\x95\x56\x57\x26\x95\xef\xe5\xb5\x2a\x94\x53\xba\x78\xb5\x94\x4e\x64\xc2\x89\x37\xaf\x92\x24\x35\x52\xac\xff\xf8\x4d\x2d\xa5\x75\x62\x59\xbe\x49\x8a\x2a\xcf\x5f\x25\x49\x2e\x66\x32\xb7\xeb\x67\x92\x44\x94\xe5\x9b\xe4\xa6\x9a\xc9\x6c\xf6\x2a\x49\x0a\xb1\x94\x6f\x92\xa5\x30\x4a\x64\x33\xfb\xba\xf9\xfb\xeb\x54\x2f\x5f\xd9\x52\xa6\xeb\x37\x44\x96\xd5\x5d\x89\xfc\xd2\xa8\xc2\x49\xf3\x4e\xe7\xd5\xb2\xa8\xa9\x5d\x24\xff\x71\xf5\xe5\xf3\xa5\x70\x8b\x37\xc9\xeb\xf5\x0b\xaf\x57\xcd\x47\xd5\x3d\x35\xb4\x7f\xdd\xf9\x8b\xbb\x2f\xe5\x9b\xc4\x3a\xa3\x8a\xf9\x93\xd7\x9d\x70\x95\x7d\x5d\x2e\x84\x95\x3b\xaf\x5f\xd5\x7f\x26\xdf\x6e\xf9\xf0\xfa\x09\x13\x76\x68\xbd\x9d\xcb\x1d\x42\x99\x70\xeb\xff\xce\x8d\xae\x36\x1c\xa9\xbf\xbc\x79\xfc\x81\x5d\xa9\x70\x72\xae\x8d\x6a\xff\x7f\xb1\x7e\x4f\x58\xa7\x8d\x7c\xf8\xff\x86\x97\xeb\xff\x88\xb2\xb4\xa9\xce\xda\xdf\x44\xcd\xfe\x24\x69\x66\xf1\xd3\x9a\xcd\xef\xff\x5c\xff\x25\x57\xd6\xfd\x65\xf7\xaf\x1f\x95\x75\xf5\x2f\x65\x5e\x19\x91\x6f\x27\xa5\xfe\xa3\x5d\x68\xe3\x3e\x6f\x87\x75\x91\x2c\xb3\xe6\x07\x55\xcc\xab\x5c\x98\xcd\xf3\xaf\x92\xa4\x34\xd2\x4a\xb3\x92\xdf\x8b\x9b\x42\xdf\x16\x3f\x2b\x99\x67\xf6\x4d\x72\x2d\xf2\x9a\xb5\x36\xd5\xeb\xef\xaf\xa9\x95\x22\x95\x6b\x42\xb6\x9a\x99\x07\xe9\x7a\xe8\xa1\x99\x8f\x37\xc9\xff\xfc\xef\xab\x24\x59\x89\x5c\x65\x35\x5f\x9b\x1f\x75\x29\x8b\xb7\x97\x1f\x7e\xfd\xf1\x2a\x5d\xc8\xa5\x68\xfe\xb8\xee\x58\x97\xd2\xb8\x0d\xb3\x1a\x79\xdb\x48\xfa\xe6\x6f\x4f\xe6\xb2\x69\x35\x97\xa8\x87\x76\x25\xbe\x6d\x5d\xfd\x6e\xa6\x7d\xef\x2f\x49\xb2\x14\x77\x1f\x65\x31\x5f\x4b\xcd\x9f\x7e\x7c\xf4\x5b\x29\x9c\x93\xa6\x78\x93\xfc\xd7\xdf\xc4\xc5\xef\x7f\xff\xff\x7f\xbb\x10\x17\xbf\xff\xf3\xc5\xbf\xfe\xfd\x1f\xff\xf6\xf0\x8f\x7f\xf8\xb7\xff\xf7\xe8\x9d\xce\x41\xb6\x7f\xd6\xb3\xff\x96\xa9\xdb\xfc\xb9\x5d\x53\xd4\xb8\x53\x5d\x5c\xab\xf9\x55\x3d\x1d\x8f\xc7\xdf\xf7\x4e\xcd\xeb\x5b\xfb\x53\x2e\xac\x53\xe9\x9f\x73\x9d\xde\x5c\xad\xa5\xf4\xe9\x53\x7e\x1a\xeb\x76\x6d\xbf\xad\x87\xdf\xf9\x5b\xef\x17\xef\x90\x17\xc6\x29\xf7\x68\xc6\xf7\xe8\x6b\xb3\x14\xee\x4d\xa2\x0a\xf7\xe3\x1f\xbc\xbd\xac\x35\xce\x5c\x9a\xce\x67\x8c\x14\xd9\x97\x22\xbf\xf7\x8f\x73\xa6\x75\x2e\x45\xd1\xf9\xcc\x6a\xad\xca\xe4\x87\xf7\x81\x5f\x6a\xe4\x6f\x95\x32\x32\xeb\x7a\xfd\x62\x43\xbc\xe3\xc7\x4e\xe1\x68\x9b\xf8\xbd\x32\xf2\xbd\xb2\x37\x21\x33\x97\x8a\x74\xa1\x8a\xf9\x27\x9d\x85\x4f\x5f\xa6\xec\xcd\xe7\x8e\x95\xc3\x22\xf0\xfd\xeb\x87\xe0\xf7\x07\x8a\xdf\x63\x35\xc2\x7a\x79\xa8\x50\xf9\x65\xa2\x65\x6d\xef\x8f\xdf\xbf\x7e\x08\x92\x97\x9f\x55\x1e\xb4\xd2\x87\xaf\x21\x2b\x53\x23\xdd\x20\x79\xb1\x0b\x61\xe4\x00\x0a\x7e\x9e\x6f\x07\xd8\xfd\x73\xdb\x39\x97\xef\xa9\x2c\x17\xd7\x9d\x6c\xa5\x98\xbe\xd4\x85\x72\xda\xf4\xfc\x9a\x24\xca\xc9\x65\xef\x8f\x00\x3f\xdb\x47\x84\x31\xe2\xbe\x47\x43\xbb\xc5\xd1\x96\x48\x2b\x33\x7d\x32\x0b\x0d\xa2\x21\xf1\x55\x5e\xf7\x51\xa0\x26\x21\xe9\xf1\x0f\x58\xa3\x20\x44\x64\xdd\x2a\x2b\xcd\x28\x72\xdd\x4a\x11\x5b\x6e\x55\x91\x75\x0f\x69\x64\xb7\x20\x96\xdc\x9c\xc1\xa4\x9f\xa4\x63\xd1\x78\x95\x9f\x44\x19\x32\xf7\x99\xbc\x16\x55\xee\x7c\x8e\x45\x1c\xaf\xce\xab\xfc\x08\xcd\x88\x4c\x7f\x92\xdc\xc8\x5e\x11\xdc\x1d\xa4\x57\x02\x92\x5a\x8d\xf7\xf3\xa2\x69\x08\x47\x76\xbb\xf4\xf1\xa5\x69\x3e\xc5\xcd\x18\xbc\x4f\xc0\x9a\x76\xb1\x66\x93\xe7\xd7\xf5\x40\x08\x0b\xe5\x59\x1f\xb4\x85\xf2\xad\x52\xf2\x13\x75\xd9\x44\x2c\x42\x35\x8d\x7f\x19\x59\x15\xb4\x80\x8c\x5a\x05\x5b\x82\xc1\xba\xb7\xd0\x99\xbc\xac\x66\xb9\xb2\x8b\xab\x73\x51\xa2\xb1\xf6\x77\x6f\x9d\x33\x6a\x56\xb9\xfe\xef\xd9\x8d\x71\xd1\xdf\x3e\xfc\xdb\x88\x4d\x42\x2d\x29\x5c\xb1\xcc\xf4\x6d\x71\x2b\x4c\xf6\xf6\xb2\x73\xe3\xf5\x82\xf4\xfb\xb5\x92\x79\xe6\x91\x6f\x0e\xad\xa4\x37\x82\xd5\xdd\x40\xd3\xb1\x19\xe6\x25\xa9\xcf\x59\x54\x69\xbd\x9e\xd4\x22\xb6\xe9\x1b\x30\x25\x5e\x35\x9e\x9c\xb7\x1d\x5c\x73\xac\x89\x7a\xfe\x1c\x59\x68\x52\x5d\x38\xa1\x0a\x69\x7c\xfb\x5a\xf6\x68\x93\x3a\xba\xb2\x52\x56\xf7\x5a\x92\x20\x9a\x2d\x17\x8e\x20\x8a\x6d\xd7\xc3\x25\x11\x71\x6a\xc6\x75\x5b\xbc\x04\xe4\xb2\x74\xf7\xef\x55\xd0\xce\x6b\x29\x33\x55\x2d\xc3\x37\xcb\xea\x77\xf9\x51\x2d\x95\x0b\xa4\xe0\xfd\xae\xeb\xf4\x08\x7b\xc9\xbc\x3a\xf9\xe0\xb2\x13\x66\x2e\xdd\x5f\xff\xfa\xf9\x88\x71\x9e\xdb\x5b\x95\x1d\xad\x7b\xbf\xd4\xe4\xf2\xee\xd7\xda\x3d\x3b\x3f\x67\xba\xd9\x5e\x9c\x8c\x37\xf9\x82\x22\x2b\x63\x38\xce\xd7\xb9\x4e\x6f\xc2\x02\x62\xf5\x51\xf0\xc0\xe0\xf7\x03\x8d\xef\xdf\x83\xa3\x45\xde\xaf\x9b\xa7\xf2\x72\xed\xbc\x5a\x27\x0b\x17\x7a\xaa\x74\x1e\xe7\x81\x65\x36\x68\x22\xc6\x3d\xf9\x69\x06\xc7\x9e\x3d\xe5\xbe\xca\x52\x07\xc9\xa6\x32\x32\x75\xda\x10\xdf\xe3\x65\x48\xa9\xad\x1a\x48\x62\xa5\x7c\x1b\xa7\x41\x71\xd0\xed\xf8\xd8\x6c\xcd\x2b\xeb\xa4\x09\x3b\xbd\x91\x45\x56\x6a\x55\xb8\x5e\x45\x08\xac\x87\x23\x9e\xbe\xf8\x79\xba\xf9\xb8\x6e\x21\xee\xf6\x9e\xbd\xbc\x5e\x68\xeb\xfa\x76\xb9\x14\xab\x07\x31\xca\x85\xab\x2c\x62\x29\x07\x70\x41\xd9\xc0\xb0\x61\xba\x10\xe5\xdb\xca\x2d\xde\x2b\x9b\xea\x95\xa4\xd6\xa2\xcf\xc6\xb7\xa4\xae\xa4\xa5\xd7\xa4\x8f\xd0\x40\x73\x50\xe7\xae\x09\xa7\xbd\x5b\x63\x9a\xca\x6f\xa1\x5a\xe5\x61\x36\x3e\x14\x6b\x15\x20\xfa\x37\xbd\xc7\xdf\x84\x94\xda\x38\x91\x1f\x71\xff\xf0\x62\x1c\xcb\x76\xbb\x76\x59\x73\x7c\x14\xb5\xa1\x7e\xeb\xe2\xd0\xc5\x5a\x8a\x3a\xff\xbe\x3b\x20\xae\xba\x29\xc2\x4c\xdb\xd1\xd3\x02\x4c\xf8\xae\x2e\x48\x67\x5f\x3c\xf4\xc9\xe5\x6f\xb9\x71\xa9\x9b\x3d\xec\xbb\x5c\xa8\xce\xf0\x0c\xa9\xde\xd7\x2f\x9e\xb0\xdb\xba\x19\x1f\x9b\x43\x0b\xed\x74\x71\xfc\xad\x47\x36\xd2\x21\xfc\x9a\x30\x9b\x27\xda\xb8\x5b\x6d\x06\xc4\x3d\x8e\x9e\x81\x71\x92\x89\x0d\xa5\xd1\xeb\xbf\x77\x93\x3d\x99\x83\xaf\xbd\xec\xea\xa7\x2d\xca\xd1\x97\x37\xc5\x83\x4b\x0c\x18\x15\xf3\x31\x4e\xcf\x4d\x23\x73\x35\xb6\x8d\x71\xdc\xd1\x34\xfa\xdc\x6a\xdb\xf0\x13\xac\xc7\x03\xa2\xcf\xb2\xb6\x8d\x3e\xd5\x7a\x4c\x1d\xfe\x5c\xec\x38\xa6\x69\xfe\xdc\x8f\xdd\xe7\xbc\xc7\x29\x8f\xc7\x4a\x1e\x24\xee\x3e\xdc\xef\x93\x6e\x1b\xe5\x16\xee\xd2\x83\x18\x45\xe5\x8d\x3c\x26\xea\xd3\x94\xfb\x4f\x92\xdf\x4e\x1c\xdf\x6f\xdb\xf9\xac\x5d\xec\x1c\x3e\x9c\x7e\xc2\x3c\x9b\xdf\x36\xb6\xaa\x48\x78\xe7\xf5\x83\x7a\xe2\xac\xd4\x84\x71\x9a\xff\x78\x50\xe0\x72\x4c\x5e\x9a\xa6\xe4\xe6\x04\xec\x0c\x2a\x40\x80\x99\x79\x02\xdb\x16\x24\xc3\x70\xee\xc0\xc0\x7e\xf0\x7c\x82\x41\x1d\xf1\x97\x0a\x94\x6d\xf0\x78\x4c\xf0\x4a\xe1\x19\xd9\x63\x1a\x4f\x90\x68\x13\xbd\x79\x2e\x06\x69\x72\x26\xfd\xd4\x27\x67\xf2\x99\x38\x93\x56\x9a\x95\x4a\xe5\xdb\x34\xd5\x55\xe1\xbe\xe9\x1b\x49\xb8\x47\x8c\x64\xc8\x2a\x53\xb2\x88\x9a\x29\x96\x24\xf2\xae\x54\xa6\xbe\x5e\x7c\x25\x53\x5d\xf4\xa7\xac\x6c\xdb\xce\x1a\xfa\xd3\x1f\xc1\xb1\x60\xab\x07\x5b\x37\xd1\xf3\xe0\x48\xe9\x87\xe6\x7e\x70\x0a\x1b\x71\x97\xae\x89\x61\x70\x03\x34\xbf\x55\x7a\x76\xef\x82\x22\x5e\xcd\xf5\xfc\xe3\x05\xbc\x8c\x9c\x2b\xeb\x06\x1c\x81\x3b\x59\x88\x22\x34\xf1\x6e\xd0\xf5\xb1\x36\x5a\x37\xd2\xe1\x7b\xc3\x17\x4f\x20\x8f\x2b\x25\x66\x16\x14\xc0\x1b\x7a\x1a\xb9\x14\xf3\x01\x77\x8d\xe5\xfd\xfa\xb7\xe0\xf7\x4f\xe0\x2a\xa8\xd6\xa1\xe7\x5d\x2f\xea\x7c\x70\xb4\x7b\x9c\xb5\x00\x76\xfe\x12\x7a\xc3\xd3\xa6\x22\x97\x1f\xbe\x1c\x61\x31\xcd\x85\x93\xb7\x22\x5c\x59\x96\x46\x3b\x99\xae\x1d\x81\xf7\x7a\x29\x54\xf8\x09\xff\x0b\x12\x4c\x6b\xf3\x9f\x0a\x31\xcb\xfb\x5d\x0c\xe0\x63\x9d\x36\x62\x2e\x07\xc1\x46\x3c\xd0\xb8\x1c\xa2\x4f\xec\xbd\x75\x32\x3c\xcf\xbd\xb1\x3b\xa3\x21\x09\x3c\x48\x77\xb7\x67\xd4\x8a\x4b\xf7\xaf\xf5\x77\xb1\xd7\x71\xef\xee\xfb\x64\x0e\xb5\xa6\xdb\xba\xd3\x6d\xdd\x08\x17\x6e\x23\xc0\x88\xf8\x57\x52\xa3\x9b\x74\x50\x56\xcc\xd1\x0f\xdd\xcf\xc6\x14\x0d\xd6\xbf\xbb\x24\x6a\x6c\xb2\x31\x84\x61\x65\xcb\x85\x34\xf2\x68\x59\x18\x1b\x43\x99\xab\xf4\x3e\x38\x95\xe2\x11\x9d\x08\x4c\xf7\x9d\x6d\x45\xc8\xeb\xe8\x39\xa0\xf2\x4c\x55\xef\x4f\x99\x70\x62\x26\xac\xbc\xea\x34\x90\xbe\xe9\x23\x0c\x23\x65\x02\xfc\x8a\xbf\xd7\xde\x79\x0c\x21\xbd\x74\xbd\x06\x10\x58\xb5\x7e\xc3\x87\x19\x3d\xc4\xe0\xf9\x8d\x1d\xa0\x26\x7d\x46\xae\xdf\xc0\x79\x8c\x1b\xa1\xaf\x7c\x46\xcd\x67\xd0\xfc\x0a\xdb\x6f\xc8\x3c\x6c\xe8\x1d\xed\x42\xe4\x1d\xb9\x4d\xfd\xa3\x50\xc5\xd3\x8b\x9e\x3e\x31\x2b\xb5\x75\x73\x23\xed\x5f\xdf\x7e\x0c\xd1\x86\x35\xfe\xd8\x10\xcb\xb4\x39\x02\x1d\x68\x9e\x6a\x6c\xc7\x77\xba\x28\x9a\x1d\xa4\x1f\x23\x00\x0c\x1f\x63\x9e\x5e\x69\xe4\xb5\xba\x1b\xdb\xba\xce\xfe\x30\x84\xcb\xb3\x2a\xbd\xf1\x1f\xe5\x4d\x2c\x4e\x66\x22\xbd\xa9\xca\x41\xb6\x74\x9e\xf6\x72\x65\x9a\xa6\x48\xd3\x94\xeb\xb4\x7f\xaf\x81\x70\x19\x05\x4a\xe5\xd0\x4c\x48\xcf\xb0\x6d\xf0\xd9\x11\x79\x71\x72\xd3\x2f\xe3\x44\x19\x3f\x0b\xa3\x76\x2e\xfb\x14\x91\xf3\x4b\x2a\x7d\x78\x9f\x22\x00\xde\x41\x9f\xad\x79\xd3\x8a\xf7\xfb\x23\xce\xd6\xbc\xc0\xac\x6d\x43\x25\x05\x00\x6a\xdd\x1f\x1c\x20\x2e\x14\x70\x6b\x10\x41\x0f\x90\x2b\x9b\x5e\xe4\xe5\xe1\x03\x7a\x65\x13\x8b\x2d\xec\x98\x6c\x7a\x00\x61\xf7\x1f\xea\x06\x86\xdd\x1f\x14\x22\xbf\x3e\xd0\xcd\x84\x21\xbf\xf1\x75\x03\x1d\x01\xda\xa7\x09\xcc\x29\x09\x2c\xcb\xa4\x88\xcd\xa9\x17\x70\x76\xe7\x31\x0f\xf0\xec\xfe\xb8\x88\x79\xed\x07\xa2\x6d\x1b\x3a\xa9\xd4\x69\x64\xdb\xc0\x0c\x2d\x46\x06\x08\x9a\xa7\x83\x24\x67\x1c\x6d\xc9\x23\xc0\xb6\xec\x41\x92\xc1\xbf\xb6\x71\xb2\xe1\xb0\x64\xa7\x80\x19\x04\xd2\xb2\x7c\x07\xa9\xcc\x7e\xb1\xf5\xe8\x39\x46\x65\x0d\xbe\x1f\x38\xb7\x6d\x47\x72\x13\xc7\x92\xe3\x67\x24\x74\x67\xed\x78\x42\xb7\xba\xd0\x99\x00\x8e\x06\xdb\x36\xce\xae\x02\x32\x1e\xa0\x85\xe1\x65\x00\xc3\xf9\xbf\xcc\x74\x58\x3c\xf7\x97\x9f\xf9\xcb\xcd\xfb\xc5\xb3\x7e\x59\x1f\x89\x67\xfc\x62\xf9\xbe\x60\xb6\x2f\x23\xd7\x17\xf5\x20\x10\x2d\x04\xb3\x06\xcd\xf1\x45\x35\x2f\xa6\x0e\xba\x91\x44\xda\x06\x2b\x02\x2f\x86\xda\xfe\x88\x0e\xbf\xb7\xe3\x00\x16\xb7\xed\x5c\x8c\xd1\x58\x71\x15\x1a\xe8\xb8\x6d\x3c\x88\xba\xfd\xf1\xc4\xe4\x05\xb8\x49\xee\xc3\x75\x63\xf5\x06\xde\xb0\x9c\xec\x28\xd9\x78\x17\x3b\xf9\xb7\xe2\x42\x2e\x75\x32\x4d\x76\x12\x76\xa1\x93\xdd\x0b\xef\x86\x1a\xf7\x2a\x27\xc3\x3c\x26\x2f\xc3\x4f\x09\xbd\xbc\xc9\x17\xd2\xc0\x8b\x9b\x01\x72\xca\xbe\xb4\x19\xd0\x07\xff\xc2\xe6\xe8\x4b\x81\x75\x55\x93\xb5\x12\x38\xce\xec\x71\xdc\x54\x88\xa0\x0f\x50\xba\x6d\x70\xe4\xcf\x0b\x30\xbd\x3f\x2c\x24\x68\x45\x01\x4e\x33\x29\x42\xfc\xe8\x06\xa2\x6e\xdb\x91\x62\x33\x1e\x8c\xb8\x4d\x8f\x67\x72\x78\x47\x03\x5a\xb7\xed\x78\xf1\x61\x2f\xe0\xf5\xb1\x87\x87\x49\xb1\x17\x18\xbb\x6d\xcf\x63\x93\x47\x00\x69\xb7\xed\x54\x76\x2b\x53\xa4\xf5\xa4\x36\x74\x1e\xe0\xee\xb6\xc1\xcb\x84\x06\xf2\xde\x1f\x1a\x72\x78\x4e\x03\x7b\x33\x69\x42\x5c\x81\x00\xbf\xdb\xf6\x32\xf3\x5a\xfc\x40\xe1\xfb\xf4\x4e\x36\x73\xa0\x17\x50\x7c\xbf\x3b\x4a\x5a\xfa\x01\xc6\xdb\x06\xaf\x21\x0a\x70\x7c\x7f\x60\x10\x63\x29\x00\xf2\x00\x92\x7e\x40\x72\x26\x41\x6c\xaa\xbc\x40\xe5\xfb\x3d\x52\xd3\xe5\x03\x2e\x6f\x1b\x3a\x61\x24\x90\xf9\xfe\xd0\xa0\x75\x7d\xc2\xa7\xf3\xd8\x5c\xf9\x00\xd0\xb7\x4f\x11\xbb\x42\x68\x2e\x7d\xc0\xe8\x6d\x43\xa7\x32\x2a\xe3\x5d\x3c\x55\x0f\xaa\xb2\x08\xdc\xec\x05\x58\x6f\x1b\x9c\x98\x87\x02\xae\xef\x0f\x0f\xf1\xf5\x40\x00\x76\x3e\xe1\xc8\xe6\x19\x02\x68\xe7\x53\xed\x07\x6c\xe7\xd3\x82\x00\xdc\xd9\x64\x8f\xb6\x59\x27\x80\xde\xdb\x76\xbc\x7d\xf5\xb4\xf1\x21\xf7\x86\x08\x80\x3c\xb3\x7f\x4c\x7d\x76\x03\xcb\x6f\x7f\xef\x06\x98\xdf\xfe\x4e\x00\xcd\xef\x8f\x99\x60\xc4\x52\x57\x05\x69\xd5\xa0\xaf\xef\x81\xb0\x6f\xdb\x51\x2c\xe3\x18\xab\xc0\x07\x79\xcf\x1c\x60\x14\x6b\xeb\x81\xc4\xdf\x1f\x0e\x21\x09\x30\x44\xfe\xe6\x05\xd4\x40\x53\x90\xf9\xfb\xc3\x3c\x59\x4f\xd3\x07\xad\xbf\xdf\x23\xc5\x69\x10\x6a\x7f\xf3\xfc\x91\x36\xfd\x1e\x28\x7e\x26\x31\x74\x87\x3c\x3c\xf5\x8e\x86\xec\xdf\x3c\xf9\x5c\x72\x3f\xcf\x3a\x55\xd2\x5b\x0a\x60\xe7\xa1\xf3\x48\xf1\x20\x4a\x06\xb4\x6d\x94\x24\x0f\xb0\x94\x40\x18\x71\xc6\xa8\x03\x1f\x0f\x43\x63\x4e\x78\x28\xb1\x6d\x0b\x38\x70\x6f\x1a\x07\x35\xb6\x6d\x21\xe8\xb1\xfb\x03\xe5\xa0\xc8\xb6\x8d\x83\x26\xbb\xdf\x1b\x9b\x2d\x5c\x54\xe7\x84\x81\x32\xbb\x7d\x1e\x44\x9b\x6d\x1b\x33\xd5\x66\xf7\x25\x04\x7d\xb6\x6d\xe8\x06\x66\x97\x3e\x8b\xc1\x38\x2a\xed\x7e\x27\x88\xe5\xd8\x7f\x03\xe6\x15\x5c\xfa\xa0\x6d\xcf\x47\xd7\x70\x4b\x24\x0c\xed\x2f\x09\x2e\x99\xd0\xb6\x60\x55\x97\x84\x96\x50\x88\xd0\x73\x88\x46\x49\x82\x4a\x2b\xb4\x2d\x48\x5d\x24\x93\x45\xe8\x6b\xa1\x25\x19\x36\x83\x1d\xb0\x60\x82\x4b\x34\xb4\x6d\xd0\x9a\x09\x28\xd9\x10\xa5\xdf\x90\x12\x0e\x11\x3a\x0e\x5f\xaa\xcc\xd2\x0e\x6d\x0b\x5c\xa9\x61\x4e\xca\x29\x3a\x1d\xcc\x4e\x90\x92\x10\x6d\x7b\x3e\x86\x7a\xda\x14\x74\xb5\x69\x53\x30\x6d\x0a\x46\xda\x14\xb0\x4b\x58\xb4\x2d\xe0\xba\x09\x5c\xd2\xa2\x6d\x01\x2c\x0e\x28\x71\xd1\x36\x5e\xa9\x8b\xfd\x31\xf2\x56\x35\x6f\x3d\x8f\x7e\x03\x00\x5e\x8d\x2c\xd9\x8a\x9e\xac\x0f\xa2\x82\xf4\x96\xce\x60\x0d\xcc\x53\x4a\xa3\x6d\xe8\x0a\xf0\x96\xd6\xd8\x1f\xd4\x51\x02\xd1\x54\xe9\x0d\xf6\x10\xfd\xa5\x38\xd8\xe4\x22\x02\x59\x50\xa5\x3a\x98\xe4\xd0\xb4\xb4\xde\x12\x1e\xdb\x87\x7a\x4b\x79\xec\x0f\x89\x90\xda\x9e\xd2\x1e\x6d\x3b\xd2\xd9\x89\xb7\xf4\x07\x9b\x1a\x51\x0a\x84\x4d\xef\x0c\xc0\x78\x3c\x50\xff\xec\x6e\xa7\x0c\x93\xd3\x43\xce\xe9\x2b\x4d\xb2\x7d\x22\x16\xb6\x8e\xa7\x64\x49\xdb\x8e\xa4\x24\x88\x92\x26\x6c\x7a\x68\x89\x13\x36\xe1\x69\x01\x91\x0b\x88\x2e\x95\xb2\x4f\x12\x62\x12\x5d\x3a\x65\x9f\x28\x72\x7d\x92\x2e\xa5\xc2\xa7\xe9\x2d\xad\xc2\x26\x47\x43\xfd\x33\x49\x62\x1a\xa9\xbf\x04\xcb\xf6\x19\x5f\x29\x96\x9d\xa7\xfa\x4a\xb2\xec\x8f\x9b\xd2\x5b\x64\x34\xec\x6c\x92\x0d\x26\x5c\xa6\x33\xc4\x3b\x78\x3e\xb8\x4c\xb1\xa1\x94\x46\x00\x14\xc5\x34\x82\xaf\xd4\x4c\xdb\x9e\x4d\xb2\xd8\xb3\x73\x11\xa2\xdb\x35\xb8\xa4\x0d\x93\x2e\x26\x8c\xd5\x2c\x4a\x32\x36\x59\x32\xa7\x6d\x47\x12\x6c\xb0\xa4\xce\x30\xba\x23\x08\x05\x92\x0b\x31\x42\x9e\x25\x91\xd0\x00\x88\x16\xf9\x48\xa9\x5c\xef\x5e\x15\x11\x92\xe6\x52\xc2\x87\x22\xcd\x2b\xab\x56\x40\xe5\x2a\x4a\x5b\x35\x04\xbf\xa9\xc1\x55\xb0\x76\x49\xe5\xaa\x88\x45\xee\x3f\xfd\x62\x0b\x50\x22\xe7\xc4\x48\xdb\xeb\xaa\x22\x73\x52\x19\xaf\x75\x8e\x31\x44\xfb\xe3\x90\x01\x46\x2a\x9e\xd1\xde\x01\x1d\x4c\x28\x4a\x35\x8c\x26\x10\xee\xcf\xd6\x8a\xc2\xfa\x46\xd7\x5d\x0d\x2d\xc4\x97\x24\xf6\x56\x5d\x0f\x12\xb4\x78\x15\x81\x0e\x51\x8f\xc4\xfb\xb3\x4d\x8d\x2a\xdd\x55\x6f\x2a\x0d\x59\x5d\x89\x51\xa9\x04\x61\x2d\x6d\x78\x31\xbe\x22\x08\x0e\xe8\xae\x0a\xdb\x4b\x21\xce\x2b\x66\x0a\x90\x1b\x0e\x00\x17\x28\x8b\x4b\xde\x6a\x20\x97\x24\x59\x71\x04\x5a\x4c\x58\xa5\x11\x68\xda\x91\x0a\x23\x30\x21\xa2\xb2\x08\x44\x27\x92\x38\x53\x95\x44\x40\x35\x1d\x47\x40\x69\xb9\x22\xaa\x86\x50\x15\x43\x30\xb9\xf3\x55\x31\x40\xe4\x2e\xde\x7a\xc5\x36\xf2\xd0\x1c\x41\x15\x41\xa2\xac\x7d\xb2\x0a\x08\x5d\x01\x84\x9c\x27\x7f\xe5\x0f\x64\x92\x90\x43\x46\x20\xe6\xc7\xda\xb3\xfa\x63\x41\x54\xa0\xec\xa0\x4b\x11\xad\xe8\x81\xc9\x1e\x12\x2b\x41\x37\xd0\x11\x61\xcc\xa1\x48\x02\x75\xf6\x18\x65\xcd\x10\xa7\x89\xf4\x7a\xf0\x56\xe8\x38\xa0\x7b\x14\x5b\xfe\xce\x54\x68\xce\xc6\xd1\x22\x2f\x3b\x22\x1c\x06\x4f\x70\xe2\x7a\xc5\xa4\x72\x06\xb4\x37\x1e\x9b\x85\x4e\x6a\x18\x61\x59\xec\x84\x86\x77\x3a\xc3\x39\x99\xc1\x4e\x65\x18\xf1\x75\xe4\x34\x86\x3e\x89\x01\x4e\x61\xc0\x80\x36\x62\x71\x23\x54\x86\xc7\x8e\x6f\x10\x8d\x47\x2f\xd5\x7e\x98\x27\x68\x91\x92\x80\xa8\x87\xdc\x77\x70\xab\x5c\x9c\xaa\xa2\x8f\xbd\x37\xc7\x2a\x59\xf0\x71\x61\xe3\x7d\x33\xb0\x49\xf3\x81\x9c\x92\x3d\x00\x97\x62\x27\x9b\xd4\x8c\x1d\xbe\x12\xc8\xcb\x4a\xe0\xde\x93\x65\x26\x27\x30\xef\xc2\x8e\x96\x15\x80\xdf\x70\x65\x1c\xfa\x3f\x33\xbb\x1e\x72\xff\x94\x8d\xb6\xc1\xbd\x63\xca\x94\x37\xd6\x3d\x52\x26\x6d\xde\x5d\xd1\xd1\x44\x19\xbe\x01\x0a\x4b\x32\xea\xd0\x1d\xce\x5d\x23\x09\x51\x55\x21\xa0\xa8\x10\x59\x0d\x02\x0b\x78\x20\x55\x20\x62\x1c\x5d\xf5\x57\x7e\x38\xe0\x9e\x9f\x00\x8f\x3c\xd5\xc3\x10\xac\xaa\xc3\x61\x63\x80\x64\x15\x87\x43\x0e\x87\x96\x3e\xb2\x62\xc3\xf9\x6d\x4c\x80\xca\x0c\xc7\xf4\xbe\xa7\x08\x5b\xdd\xc6\xde\x84\x10\x15\x16\x20\xb1\xc6\x2a\x2b\x60\x87\x86\x58\x45\x85\x18\x16\x05\xae\xa2\xf0\xbc\xcf\xdc\xe9\x4a\x09\x27\x76\x32\xea\xad\x8a\x40\xcf\xba\xbf\x1a\x02\x24\xef\x48\x15\x04\x90\x69\x48\xf5\x03\x90\x14\x5d\xf5\x20\x4a\x1c\x9e\xac\x74\x40\x4f\x01\x55\xe1\x00\x99\x04\xa8\xb2\x01\xb8\xe6\x4e\xe8\x34\x92\xe6\x3f\x55\xbd\xc0\xbb\x53\x21\xe7\x86\xaa\x58\x80\x4c\x4d\x14\x86\xba\xe1\xea\x14\x50\x25\x03\x38\xe5\xad\x46\x00\x25\xed\x70\xaa\x10\x60\x7e\x0e\xa3\xfa\x00\x46\x30\x92\x59\x83\xab\x0d\x60\xd4\xfc\x55\x06\x30\x1a\x70\x75\x81\xd3\xdb\x18\x02\x95\x04\x0e\xbb\x97\x9b\x1c\xf5\xe6\x21\xb0\x3a\x40\x14\xd5\xd5\x5f\x11\xc0\x57\x0d\x00\xaa\x04\x40\x7e\xac\x07\xb7\xff\x60\xf6\x21\xa6\xcc\x51\xf8\xfc\x63\xdb\x1a\x02\x8f\x9f\x9c\x0f\x16\x0e\x3f\x64\x9a\x10\xfc\xfd\x13\xf3\x8b\x28\xac\x7d\x9a\x8b\x0c\x8c\xfd\x43\x6e\x09\x09\x4c\xfd\x38\xc2\xd9\x8f\xa3\x4f\xf3\x0d\xc2\xcf\x3f\xcb\xcc\xac\xb3\x49\x6e\x22\x31\xf1\x4f\xf6\x20\x19\xc0\xbf\x8f\x7a\x94\xcc\xc0\xbc\xe7\x1d\xef\x31\x70\x2a\x59\x90\x96\x21\x70\x96\x4c\x28\x4b\xe6\x51\x60\xd3\xb8\x10\x96\xa1\xf0\x95\x9c\x33\xe1\x6d\xe3\xc2\x56\x06\xb0\x80\x0b\x57\xc9\x81\xaa\x64\xc1\x54\x32\x0e\xed\x77\x5f\x40\xe1\x29\x71\x68\x4a\x26\x13\x79\x90\x94\x98\xc6\xde\x7f\x1a\xe2\x09\x0b\x9b\xfe\x7c\x75\x42\x08\x0e\x7d\x28\x94\x6e\x38\xfe\x7c\x90\x2a\x4a\x86\xe0\xce\x07\xf6\x18\x06\x56\x1b\x82\x35\xcf\x5e\xde\xc9\xa4\x9d\x93\x81\x78\xf2\xa1\x82\x3f\x08\x47\x3e\x58\xf6\x03\xf1\xe3\x83\xfb\x0b\xc5\x8d\x3f\xe8\x52\x0b\xc0\x8a\x0f\x58\x69\x7c\x27\xe0\x54\x0c\x3b\x83\x38\x8a\x07\x7f\xbe\xc6\x71\x72\x98\x27\x87\x99\x7c\x61\x72\x98\x9b\x16\x84\xdb\xce\x4c\xcc\x66\xe1\xb5\x33\xd9\x18\x88\xd3\xce\xc7\x68\xe7\xae\xc4\x13\x00\x90\x8b\x0b\x0d\x17\x2d\x25\x16\xb8\x8b\xed\xc5\x5e\x27\x07\x42\x60\xae\x23\xd2\x4b\x62\xad\x1f\x38\x78\x89\x60\xab\x63\x47\xf1\x24\xa6\x3a\x44\x26\xc2\xf5\x62\x04\x43\x3d\x52\x92\x8b\x17\x37\x9d\xc0\x4c\x27\xa5\xcd\x83\x95\x7e\xc0\x38\x39\x89\x8d\x0e\x51\x01\x30\xd1\x21\x3a\x27\x08\x53\x40\x60\xf3\x1e\xfc\x9c\xf2\x8c\xcf\xc6\x0f\x82\x2d\xe0\xc3\x32\x1f\x8e\x3c\x40\xe0\x97\x1f\x70\xe1\x02\x78\xe5\xd8\xd1\x22\x03\xa7\x7c\x12\xf6\x9d\xc7\x28\x48\x4e\x08\x83\x1c\x64\x04\x86\x3d\x8e\x5d\xd6\xc1\x30\xc7\x31\x5a\x24\xd6\x38\xc3\x9e\x1f\x04\xad\xc7\x8f\x2b\x4e\x63\x8a\x13\x78\xe2\x80\xfe\x30\xaa\xf4\x26\x57\x92\x9f\xe9\x0f\xc4\x9c\xec\x19\xef\x04\x60\xd1\xdd\xfd\x04\x60\xb1\xf3\x98\xdf\x17\x8b\x85\x3d\x11\x11\x69\x8c\x5e\xf0\x14\x4c\xf8\x59\xe6\xc4\x9c\xb5\x65\x8e\x66\x6e\x58\x90\xdf\x31\x84\x09\x82\xe7\x3e\xa0\x40\x31\xe0\xb8\xf9\xf4\x22\x4e\x50\x04\x6c\x74\x34\x7d\xcb\x73\xae\x4b\x4c\xaf\xf7\x67\x5b\x88\xd2\x2e\xf4\x10\x80\x59\x33\xef\x15\x08\xc2\xf4\xc2\xa2\xdb\xaf\xbe\x7d\x6b\x9c\x24\x5f\x50\xeb\x8b\xa0\xe0\x9b\xbb\x8b\x9a\x7a\xef\x0f\x75\xb7\xec\xc9\x72\xc2\x2e\xbe\xca\xb5\x34\x4b\xcf\x2d\x0c\x6a\xc6\x06\xf0\xcc\x33\xbc\xde\x9f\x1e\xb6\xc6\x8f\x7b\xf4\x8d\x52\xcc\x65\x77\x4c\xd0\x3b\xbc\x3e\x49\xf4\x48\x21\xf4\xb9\xdd\xd2\x27\x8b\x15\xb3\x33\x5a\x81\xfa\x2d\x16\xb0\x5c\x56\x22\xaf\x22\x50\xf8\xd9\x68\xcf\xee\x0b\xb3\xbf\x9b\x5c\xc8\xbf\xc8\x7b\x32\x41\xe2\x78\x0e\x38\x76\x9e\xc6\x20\x88\x9f\xa3\xe1\x67\x68\xb1\xdc\x6a\xd0\x67\xc6\xb2\xb9\xf0\x39\xe3\x64\x6c\x31\x38\xcd\xc8\xca\x8a\xbe\x81\xc1\x72\xad\x40\x7e\xf3\x92\x89\x58\xe9\xc8\x9c\x84\x21\x06\xeb\xe1\xa4\x20\x06\x4d\x3c\xf1\x27\xfa\x6c\x42\xe9\x3c\xe0\x64\x36\x5b\x98\x49\xe9\x79\x89\x9e\x9c\xd2\xa3\x4f\xd5\xbc\xa3\xe9\xf5\xf6\x40\xef\xbc\xdb\xc5\x28\x8d\x5e\x4a\xb7\x90\x55\xa7\x80\x50\xe2\x23\xef\x4a\x6d\xdc\x30\xf4\x0d\x9f\x73\x9f\x1c\xfc\xcc\xac\xc7\xe5\x62\x0c\x06\x5f\x72\xd1\x97\x08\xe1\x9a\x85\x52\xf4\xbb\x6a\x6d\x63\x83\xc9\xe1\xae\x5b\x58\x17\x09\x37\x2f\x2e\x20\x25\x0c\x4f\x95\x0a\xec\x80\x97\x32\x95\xb0\xd3\xa6\x12\x76\x5e\x1b\x9e\xd5\xc6\x4c\x53\xe3\x25\xf8\xf3\x65\x21\x24\xa9\x3f\x60\xc6\x02\x12\xf9\xd9\xbd\x70\x67\x8c\x97\xb6\xcf\x9c\xb7\xb0\x3c\x75\xfe\xfc\x05\xe6\xa6\x07\x4c\x21\x3b\x1f\x3d\x28\x99\x94\x9b\x83\x3e\xba\x94\xb0\x32\xce\x99\x42\x82\xbb\xac\x6d\x9b\x94\x3d\xdc\xc9\xd9\x29\x7b\xf8\x61\xd4\x41\xef\x75\x8d\x99\x3d\x62\x69\x55\xc6\x9b\x4c\x18\x1b\x45\x13\xb8\x61\x8c\xae\x95\x5c\x2d\x95\x1f\x71\x2a\x09\x42\x4d\x4c\x78\xf2\xce\x9a\x7e\x69\xcf\x67\xc4\x58\x76\x8d\x4c\x2b\xa3\xdc\xfd\x3b\x5d\x38\x79\x17\xa5\x30\xbb\xc8\x73\x7d\x7b\x69\xd4\x4a\xe5\x72\x2e\x7f\xb2\xa9\xc8\x05\x85\xc2\x97\xb0\xd4\x47\x2a\x4a\x31\x53\xb9\x42\x38\xcb\xd1\xdc\x22\x83\x34\x11\xe3\x02\x0d\x53\xef\x72\xae\x46\x64\x46\x03\xd7\xee\x4f\x63\xb4\xf0\x1a\x2b\x5b\xb1\x21\x27\x02\x97\x96\xd2\xe8\xf4\x93\xae\xfc\x49\xd7\x09\x2f\xcc\xd6\x9c\xff\x7f\xd5\xba\xae\x74\x45\xa7\x6f\xf1\x46\x6c\xaa\xe2\xad\xfd\x85\xca\x80\x4f\x98\xd7\x28\xf0\x34\x99\xba\xff\xcf\xba\x58\x7f\x5f\xe4\xaf\xfa\x4e\xa4\xae\x26\xa3\x7d\x94\x95\x1f\x55\x51\xdd\x7d\xa1\x81\x7a\x13\xa6\xda\xc8\xe5\x4a\x42\x6e\x12\x6b\x7d\x19\xed\x2f\xa1\x16\x44\xd4\x11\xd9\x0a\x41\x44\xa9\x74\xe4\x00\xa2\xb0\xc2\xb8\x55\x45\xa6\x6f\xed\x08\xb3\x3a\x5f\x5a\xf1\xce\xc8\x4c\x16\x4e\x89\xfc\xaa\x94\xbd\x98\xe9\x4f\x07\x0e\x32\xee\x69\x17\xe8\x6e\x92\x27\x49\xed\xc2\x1b\x81\x7a\x3c\x5f\x84\x7c\x64\xbd\xc8\xcd\xaa\x7f\x43\x42\x8e\x3a\x17\x33\xd9\x8f\xf4\xc7\x73\xdb\x62\x64\x21\x0d\x4d\xc7\xf0\x7b\xff\x88\xe7\x4f\x69\x4f\xef\x27\x78\x37\x03\xd4\x4a\xf3\x3b\xff\x87\x9f\x0b\xca\xb9\x3f\xf4\x88\xfc\x79\x31\xb4\xd3\x4e\x66\x31\x31\x9d\x74\xda\xcc\x23\x4e\x39\x74\x04\xe3\x77\xc2\x0f\x7b\x02\x43\x39\xd9\x27\x55\x57\x81\x76\x9e\xe9\x59\x24\x9d\x65\xf2\x73\x78\xce\x31\x3d\x22\xda\x19\x46\xfc\x45\xda\x4f\x44\x9c\x5e\x70\xb4\x3e\x27\x37\xce\x60\x31\x67\x16\x59\x6e\xa4\xf3\x8a\x65\x44\x13\xce\x2a\x44\x84\x72\x4e\x21\x22\x11\xee\xc6\x91\x0b\x0d\x73\x3a\xa1\x6b\xce\x2c\x27\x13\x62\x00\xdf\xa9\xc4\x66\x18\x75\x22\x47\xb5\x7d\xbd\x3f\x95\xa2\xb2\x4f\xf5\x5e\xff\x7a\x2d\x75\xf6\x4d\x2e\xcb\x5c\x3c\xbd\xa6\xee\x9b\xb7\x54\x17\xce\xe8\x3c\xef\x96\x31\xd2\xe8\x16\x85\x76\xc2\x2b\x34\x27\xe5\x67\x2c\xa5\x13\x99\x70\xe2\x25\x7c\xab\xed\x59\x7b\xe4\x77\x5e\x5f\xab\x42\xb9\xde\xc3\x1e\x44\x0b\x14\x3a\x93\x6f\x09\x3a\x28\xad\xe6\x39\x79\x2d\x8d\x91\xd9\xfb\x6a\xcd\xad\xab\x74\x21\xb3\x2a\x57\xc5\xfc\xc3\xbc\xd0\x9b\x3f\xff\x74\x27\xd3\x0a\x09\xcc\x82\x11\x44\xde\x19\x59\x33\x46\x1c\x96\x84\x7f\x02\xb7\x14\x2e\x5d\xfc\x74\x57\x9a\x26\x73\x9c\x01\x60\xc4\x42\x48\x0a\x1b\x5c\xd3\x98\x48\x49\x49\xd8\x49\x5e\xd3\xd6\x23\x14\x1d\x79\xe9\xa3\x75\x58\xa7\xeb\x30\x19\x12\xc0\xfb\xa6\x05\x8f\x92\x17\x74\xdf\xb6\x30\x1c\x35\x1c\x83\xa9\x79\xbe\x9d\x34\xc6\x4b\xcc\xb3\xf0\xdd\x97\x38\x3c\xa8\x57\x57\x9d\x65\x31\x2d\xac\x69\x61\x79\x5e\x9d\x16\x16\x87\x07\xcc\x4e\x6e\xa5\x9a\x2f\x00\x30\xc1\x24\x08\x02\x0f\x3f\x5c\x49\xb8\xc8\x58\x1b\xeb\x0f\x3c\xdc\x7c\x24\xf9\x20\x83\x75\xe8\xac\xb4\x9f\x14\xc7\x8f\xe2\x28\xb3\xb5\x4b\x78\x25\xf3\xba\x34\xda\x37\x69\xb0\x95\xcb\x58\xe2\x93\x3b\xd5\xb4\x49\xeb\x77\xb6\x49\xeb\xb7\x6d\x72\xa7\xa6\x85\xd5\xd5\xa6\x85\xb5\xfb\xfc\xa9\x2e\x2c\x66\x27\x38\x79\x94\xad\x17\x4f\x2d\x39\xe4\x9b\xc4\xc9\xee\x2b\x75\xf6\xe2\xe2\x4a\xdb\x4f\x5e\x73\x7b\x2c\x6f\xa8\xce\x25\x68\xa7\x15\x5f\x5b\x61\x0a\x38\xdc\xf5\x4a\x42\x35\x55\xa8\xa5\x48\xc2\xac\x45\x32\x4c\x35\x86\x5b\x8d\xc1\x1d\x87\x59\x8f\x24\xdc\x82\x24\x43\x47\x1c\x6a\x49\x92\x40\x6b\x92\x04\x58\x94\x24\xd4\xaa\x24\xa1\x96\x25\x09\xe6\x4b\xbd\x3a\x3f\x7a\x73\x8b\xba\x5b\x58\xa2\x78\xd7\x90\x03\x24\x61\x80\xf9\x65\xbd\xb4\x49\x72\x1a\xd3\xaf\x0d\xe2\x02\x7f\xb6\x9d\x2e\x75\xae\xe7\xf7\x7f\x19\xf5\x6e\x0f\xf7\x52\xcc\xce\xa8\xa6\x10\x53\xdb\x2e\x1e\x3b\x02\x2f\x28\xce\x34\x8a\x5f\x15\xe0\xf0\x4c\x31\xa6\xa6\x4d\x5b\xe1\xce\x36\x6d\x85\xdb\x76\xc8\x18\x13\xd7\x51\x19\xea\xa4\x0c\x30\xcd\xec\x9a\x32\xf0\x0b\x5c\xa7\x84\x25\xe1\xec\x2f\xe6\xcd\x24\xdb\x09\xe1\xdd\x15\x60\x58\x58\x8e\xe3\x11\xdd\x68\xc2\xf1\x8f\xc2\xa9\x29\x06\x02\xb4\x29\x06\x12\x67\xa0\x4d\x9b\x62\x20\x50\x9b\x62\x20\xd4\x3b\x53\x0c\x04\x1c\xf2\x14\x03\x99\x62\x20\x53\x0c\x64\xb7\x4d\x31\x90\x29\x06\x12\x79\x70\x4d\x9b\x62\x20\x4f\xda\x14\x03\xd9\x7d\x7e\x8a\x81\x74\x0c\x73\x8a\x81\x90\x2f\x4c\x31\x90\xbd\x47\x23\xc4\x40\xc8\x47\x8e\x5b\xce\xc2\x83\x70\x4b\x74\x8e\xd9\x2e\x1a\x25\x0f\x94\x0c\x00\xcd\x96\x43\x89\x46\xb1\x65\xa1\x9e\xf3\xd0\x6b\x79\x66\x1f\x36\xf6\xcc\x35\x7f\x96\x85\xbd\x39\xaa\x01\x31\x9a\x0c\x95\x80\x23\xd2\x32\xab\x83\x33\x91\x68\x99\xb3\xc1\x44\xa0\x1d\x4d\x51\xe3\xa8\xb3\x8c\x39\xe1\xa3\xcd\xb2\x81\xa9\xb9\x28\xb3\xcc\xe9\x61\xa1\xcb\x32\x69\xf3\x50\x65\x47\x9b\x79\x18\x49\x96\x31\xf1\x3c\x04\xd9\x49\xe1\x3e\x21\x7e\xf2\x0a\x17\x7a\x90\x1e\x1d\x81\x06\x0b\x7b\x70\xfd\x2e\x54\x5d\xa7\xf9\xb2\xca\xf3\xab\x5a\x26\x43\x9d\xb9\x83\xfa\x53\x31\x3e\xbb\x50\xee\x5d\xab\x1e\xc7\xfd\x68\xaa\x28\x04\xb8\x37\x82\x57\x15\xe6\xfc\xa7\x7a\xb9\x14\x05\xb1\x30\x8e\x31\x30\xa2\x6a\x05\x38\x28\xd6\x65\xb9\x31\x50\xf3\xc0\xfa\x15\x21\x54\xb1\x1a\x16\xfc\xf8\x5c\x50\x1d\x8b\xb0\x30\x20\x33\x04\x18\x14\x01\xe1\x41\x9c\x07\x76\xc2\x87\x39\xe7\x9a\xb0\xa6\x71\x03\x6f\x9c\xa0\x1b\x3b\x54\xc4\xab\x6e\x11\x26\x21\x21\x15\x2e\x02\xe7\x30\xa0\xca\x45\x50\x4f\xfc\x39\xe4\xd5\xba\x08\x98\xc9\xb0\x7a\x17\x61\x33\x1a\x58\xf3\x22\x70\x52\xd9\x75\x2f\x02\xfb\xe1\xd7\xbe\x38\x90\xec\xb0\x2a\x60\x04\x88\x0e\xbf\x0a\xc6\x64\x2a\x5e\x9a\xa9\x60\xc5\x42\xe0\x1b\x91\x54\x7d\x0c\xf6\x36\x0d\x70\x49\x69\x9f\x2b\xba\x5b\xba\x71\xc7\xc0\x05\xc6\x5d\x5c\x1c\xa1\x67\x0b\x3c\x57\xd8\xb9\x82\xce\x12\xc4\xd2\xc8\x6b\x75\x17\xdd\x19\x87\xaa\xef\x6f\xc7\x30\xcd\xce\xa0\x47\xb1\xa5\x5a\x87\x33\xa2\x1c\xb4\x6c\x02\x23\x4d\x19\xfc\x28\x34\x73\x75\x2d\xd3\xfb\x94\x42\xe6\xc7\x65\xa5\xd4\xd6\x5d\x39\xe1\x2f\xe2\xc3\x25\x9a\xd4\xd5\x30\x31\xc0\xfa\xb0\xe2\x67\x40\xe8\x61\xb7\x9d\x66\x32\x1b\xd3\x16\x2e\x9c\x2b\x7f\x91\x60\x16\x18\x9f\xa9\x0b\x6d\x41\xda\x49\x18\x83\xd6\xe3\xff\x77\x29\x32\x4f\xb8\xec\x69\x3b\x58\x4e\x11\xd7\x83\x4b\x06\xe7\xf8\x1c\xa8\xb7\xb0\x8c\x1b\xc0\x47\xda\x7f\xa1\xfe\x24\xf6\x0a\x1b\x3d\xdf\xa6\x1c\xb7\xf6\x24\x5d\x00\x6d\xbf\x89\xe2\xfe\x0b\xbc\xd9\xa9\xf3\x3b\x58\xb9\x99\x8f\xdf\x63\x0a\xcb\xdd\xc5\x4d\x35\x93\xa6\x90\x4e\xda\x0b\x55\xb8\x0b\x6d\x2e\x1a\x12\x6f\x12\x67\xe0\xe9\xb5\xe9\x42\x8e\x5a\x1c\x90\x9b\x9d\xbb\x9e\xa3\x31\x34\xb2\x4b\xcb\x2b\x9d\xde\x9c\xb1\x4e\x9e\xa4\xf7\x51\x3b\x0d\xd1\x62\x3c\x5c\x1a\x79\xe5\x90\x4a\x6c\x93\xfb\x06\xbd\x34\xb9\x6f\x7d\x1d\x4c\xee\x5b\xdb\x26\xf7\x6d\x72\xdf\x90\x76\x8e\x06\x70\x72\xdf\xfa\xda\x09\xea\xe4\x49\x7a\x1f\xb5\xd3\x10\xad\xb8\x49\x5e\x49\x92\xab\x95\x2c\xa4\xb5\x97\x46\xcf\xa2\x45\xfe\x30\x0f\x8f\x9b\x2f\xca\xf0\xec\x4e\xe7\x42\x07\x27\x0b\x5a\xa8\xbc\x32\xf2\xdb\xc2\x48\xbb\xd0\x39\xf0\xa9\xbc\xfb\x98\x9c\x25\x07\x7b\x94\xbc\x49\xc4\xb5\x16\x73\x52\xd8\x1e\x24\x4b\x42\x42\x3c\xc7\x83\x1c\xdb\xb2\xbd\xc5\x83\x9c\xee\x33\x3c\x44\x9e\x77\x18\x78\x6f\x0c\xf5\x0a\x71\x8f\x90\xc9\x46\xdc\x96\x32\xec\x68\x88\x0d\x0d\xb0\x9f\x11\x6c\x27\xc7\xeb\x1b\x2d\x55\x1e\x32\xc7\x0c\x01\x53\x85\x72\x4a\xe4\xef\x65\x2e\xee\xaf\x64\xaa\x0b\x04\xdd\x7c\x3c\x85\x5d\x4a\xa3\x74\x76\x02\x03\xb1\x55\x9a\x4a\x6b\x4f\xc2\x8a\x31\xbc\xf0\x13\xb1\x63\x2f\x5a\x53\x1c\x73\x39\x3b\xb5\x94\xba\x72\x47\x5f\x40\xe0\x90\xa3\x5d\xfe\x5c\xf3\x31\xc6\x0d\x00\x66\xf2\x50\x93\x6c\x79\x09\x4a\x3b\x17\x77\x84\x27\xee\xeb\xc5\xfc\xe1\x32\x7a\x06\xce\x9a\xec\x69\x7c\xe0\x28\x77\x08\x4a\xa3\x9d\x4e\x35\x94\xa6\xc3\x20\x8c\xa7\xda\xed\x49\x11\xb5\xba\xe3\x26\xf2\x18\x29\x32\x35\xed\x9a\xa7\x5d\xf3\xa3\x36\xed\x9a\x77\xdb\xb4\x6b\x9e\x76\xcd\x1d\x74\x27\x5f\x78\xda\x35\x4f\xbb\xe6\x47\x6d\xda\x35\x77\x0c\x77\xd2\x14\xd3\xae\x39\xea\xae\xb9\xbd\x76\x46\xe2\x60\xa3\x52\x9d\xab\xa5\xa2\xb6\xcf\xc9\x00\x94\x35\x96\x34\x31\x2f\x34\x49\x7b\x7e\x23\x07\x1f\xb4\x32\xad\x8c\x72\xf7\xef\x74\xe1\xe4\x1d\xa1\x1a\xf0\xd9\x16\x79\xae\x6f\x2f\x8d\x5a\xa9\x5c\xce\xe5\x4f\x36\x15\xb9\x40\x00\x3b\x79\x77\x54\x52\x51\x8a\x99\xca\x15\xc6\x69\x26\x20\x52\x76\x76\x5b\xc1\x24\xc9\x0c\x92\x83\x98\x9c\xd4\xa8\x59\x59\x96\x0f\x02\x05\x4c\x0d\x47\x8e\x4a\xa3\xd3\x4f\xba\x2a\x00\xcb\xc8\x8a\xcf\x88\xec\x4b\x91\xdf\x7f\xd5\xda\xfd\xac\x72\x69\xef\xad\x93\x00\xe2\x03\x67\xe4\xa6\x2a\xde\xda\x5f\x8c\xae\x80\x69\xdf\xb1\x28\x7f\xfa\x63\x54\x37\xa8\x1e\xc5\x67\x5d\xac\xbf\x74\x84\xef\xfb\x6e\x25\x70\x01\x7c\xbc\xcf\xb3\xf2\xa3\x2a\xaa\xbb\x2f\xf5\x6d\xbb\xf8\x70\xc2\x72\x25\x59\xa0\x49\x38\xf2\x96\xa6\x6e\xa8\x05\x12\xae\x1f\x1f\x83\x70\x05\xcd\x34\x9b\x30\x43\xc5\xdc\xaa\x22\xd3\xb7\x76\xa4\xb9\x9e\x2f\xad\x78\x67\x64\x26\x8b\xf5\xd6\xee\xaa\x44\xb3\xbb\x99\x6c\x7c\xda\xcd\x68\xc8\x71\x9b\x05\x3a\x52\x0f\xd1\xfd\x1d\x27\x8c\xab\xca\x29\x1a\x7d\x74\x63\x3e\x45\xa3\x9f\x0c\x76\x8a\x46\xfb\xdb\x14\x8d\x46\x5e\x98\xa2\xd1\x8f\xdf\x99\xa2\xd1\xbe\xde\xa7\x68\xf4\x80\x81\x4c\xd1\xe8\x8e\xe1\x4e\x9a\x62\x8a\x46\x47\x8d\x46\x5b\x97\x29\x22\x76\x88\x46\x15\x6a\x52\x5f\x0a\x0a\xe9\x0d\x25\xe7\xa4\x59\xaa\xa2\x8e\x6d\x7e\x92\xd6\x8a\xb9\xa4\x11\x08\x41\x51\xeb\x20\x1d\x0f\xc2\xc6\xf9\xeb\x60\xe2\x0c\x58\xe9\xbc\x5a\xca\xf7\x72\xa5\xc8\xc3\x82\xe8\xd9\x71\x59\xdd\x2b\x0a\xf9\xc8\x5a\xe1\x23\x24\x82\xe1\xf9\x5a\xdb\xef\x22\x1f\x3d\x3c\x8a\x5a\x33\xe1\x75\xb8\xf4\xd0\xf3\xbd\x5c\x77\x3a\xca\x74\x37\x94\x8d\x2e\xc5\x1c\x3c\xa7\x38\xbe\x3c\x6d\x23\xcc\x38\x61\x14\xfb\xcb\x56\xb3\x51\xf8\xfc\x40\xf7\xa7\xbb\x12\x8a\xf3\x8d\xb2\xba\x36\x52\x74\x82\x8b\xeb\x56\x9b\x1b\x55\xcc\xdf\x2b\x82\x3d\x10\x63\x4e\x01\x97\x9e\x84\x4a\x43\xd6\x3f\x04\x8f\x86\x2a\x12\x24\x5a\xc7\x4b\xd1\x86\x23\x75\x8c\x28\x4c\x48\x44\x1e\xda\xf9\xc3\x02\x0b\xc6\xc4\x38\xac\x42\xf7\x11\xbc\xe4\x71\x5e\x2c\x8c\x31\x07\xfc\x38\x18\x2f\x0a\x16\x10\x9d\x62\x46\xc0\xd8\x3d\x70\x6f\x6e\xc3\xb1\x2f\x4e\xe4\x8b\x19\xf7\xe2\x44\xbd\xd0\x98\x17\x2f\xbf\x1f\xdc\xc5\xc2\x7b\x58\xfe\x0e\x96\xbd\x7f\x1d\xbc\x7b\xc5\xa3\x5c\xa3\x18\x71\x60\x43\x8c\x9b\x66\x34\x6e\x72\x74\x5d\xf7\x02\x25\xed\x18\x22\x01\x3d\x06\x40\x7e\x4d\x2e\xc9\xe4\x92\x4c\x2e\xc9\xc0\x1e\x26\x97\x64\x97\xe6\x64\x28\xfa\xdb\xe4\x92\xf8\xdb\xe4\x92\x3c\xb4\xe7\xe9\x92\x90\x8f\x40\x00\x56\x88\x40\x51\xfe\x0a\x2a\x94\xa0\x9f\x02\xda\x47\x86\x10\x60\xfa\x19\x9a\x1a\x4e\x1a\x13\x7a\x8a\x86\x2d\x00\xc0\x1b\x42\x27\x02\xd1\x0c\x30\x7b\x19\xde\x0f\x38\xb3\x3c\xaf\x67\xb4\x0a\xa7\x0c\x4f\x67\xb4\xbc\x0e\xc8\xbb\x41\x3d\x1b\xce\x81\x31\xe8\xd1\x20\xde\x0c\xcc\x1c\xc4\xb6\x40\x76\x85\x67\x53\x58\xf6\x64\x90\x2d\xc1\x3c\x16\x70\x34\x88\x18\x91\x26\x09\x12\x09\x66\x32\x50\x5c\xb5\x07\xa7\xfe\xc4\xed\x96\x93\xe8\x13\xb7\x67\xc8\x17\x3c\x8a\xa6\x7f\xe6\xeb\xf3\x70\x0b\x0a\x4f\xc7\x89\x29\x5a\xe4\xd0\x0a\x9d\xc9\x2b\x99\xcb\xd4\xf5\x57\x60\xe4\xdd\x7a\x04\x26\x8e\x1c\x55\x69\x94\x36\xaa\x3f\x7f\x05\x61\x11\xcd\x9e\xb6\x97\x77\xb9\xb0\xd6\x77\xb9\x81\xfc\x24\x0c\x02\x67\xf2\xbb\x1f\x3d\x35\xf9\xdd\xbb\x83\x9a\xfc\xee\xc9\xef\xf6\x3d\x37\xf9\xdd\x93\xdf\xfd\xb8\x4d\x7e\xf7\xa0\x9e\x27\xbf\xbb\xe7\xe9\xc9\xef\xa6\xba\x1d\xe8\x77\x93\xe0\x2b\x88\xd4\xd1\x80\x2b\x7c\xc0\x12\x34\xb9\x1c\xe1\x3d\x02\xac\x72\xcc\x11\x92\x8f\xac\x8d\x48\x56\xe5\xfe\xab\xcf\xe4\x78\x40\x00\x16\x64\xc6\xaf\x69\x24\x08\x14\x24\x01\x53\x0b\x18\xfa\xc4\x08\x7d\x02\x58\x13\x58\xbe\x33\x84\x2f\x11\xf7\x03\x70\x34\x09\xd4\xb6\x40\x08\x12\xb0\xea\x46\x50\x23\x60\x62\xf5\x83\xb1\x88\x21\xe8\x10\x31\x35\x94\xad\xca\x32\x97\x4b\x59\x38\x91\xd7\x52\xee\x9d\x07\x60\x4f\x85\x43\x94\xa0\x66\x19\xd9\x1e\xd8\x7b\x9b\xba\x7c\xe8\xd8\xf1\xbd\x20\xb6\x0f\x64\xb8\x12\xe0\xfe\x0f\x97\x70\x68\xdf\x07\xec\xf9\x90\xfd\x1e\xeb\x7c\xd7\x3f\x91\x38\x36\x09\x3a\x59\x7c\x3c\x12\x98\xc9\x61\x18\x24\xf8\x1c\x72\x70\x47\x0e\xe9\x14\x48\xb3\x52\xa9\x7c\x9b\xa6\xba\x2a\xdc\x20\xcf\xc0\xe9\x5c\x1a\xe1\x9d\x6b\x62\xdd\x62\x62\x20\xaf\xaf\x65\x4a\xec\x27\x40\x0e\xde\xc8\x38\xb7\x13\xd7\xc3\x16\x9e\xa0\x33\x8b\xd8\x96\x8f\xd0\x75\xd7\xf8\x4a\x1a\xd0\x5f\xd0\xa7\x0c\xbe\x8e\xe3\x21\xd0\xfb\x93\x91\x65\xae\x52\xf1\x84\x69\xbe\x0d\x51\x3f\x63\x1e\x96\xc7\x37\xb9\x2c\x73\xe1\x9e\x30\xc5\x27\xb0\x4b\xe9\x44\x26\x9c\xe8\x62\x24\x25\xe8\xa2\x28\xb4\xf3\x2f\xa5\x43\x9f\x63\x78\x7f\xb6\x3d\x9a\x98\xfa\xce\x34\xaf\xac\x93\xa6\xbf\x44\x03\x39\x6e\x79\xe7\xa4\x29\x44\xfe\xe1\x32\x54\xe9\xc0\xac\xe9\x37\x76\xed\x20\xbe\x19\x71\x7d\xad\x52\xff\xb5\x67\xb2\xbf\x85\x14\xb9\x5b\xbc\x5b\xc8\xf4\xe6\xb3\xce\xa4\xaf\xd0\x44\x9c\xa3\xa3\x5c\x8b\xec\xcf\x22\x17\x45\x3a\x68\x2a\x76\xc9\x5c\xd5\xf1\x80\xaf\xa2\x98\xf7\x4b\xe5\xf8\xf3\xe2\xad\x80\x12\xc5\x16\x45\x2b\xd6\x52\x10\x33\xdd\x34\x1c\xd6\x00\xd5\xf5\x74\x68\x2e\x76\x9f\xc8\x2d\x4f\x6f\xac\x6c\xb0\x59\x59\xab\x75\x6b\x95\x2e\xde\x5e\x5f\xab\xa2\x89\x65\x5c\xab\xf9\x90\x50\x46\x9a\x2b\x59\x10\xa5\x66\x50\x27\x97\x87\x75\xc1\x41\xba\xe0\xed\xd2\x86\x39\x96\xbe\x9d\x34\xb1\x26\x42\xcc\xbe\x75\xda\x88\x39\xcb\x40\x8b\x3a\x50\xff\x49\x67\xdd\x13\xe2\xd1\x0f\xd0\xf8\xbb\xa5\x6f\xed\x11\x34\xca\x31\xc8\x2f\x28\x95\x37\x7c\x45\x2a\x9b\x1b\xd5\x7f\x8c\x4e\xbe\xec\x53\x76\xc4\xcb\xbe\x45\x7f\x51\x8f\xaa\xf3\x87\x9e\x1d\xad\x57\xf8\xbc\xc1\x68\x8a\xc1\xfe\x20\xf4\xe1\x73\x47\xa8\xa0\xf3\x69\x79\x81\x9e\xd4\x1b\x8a\xf1\x4b\xe1\xd2\x1a\x66\xa1\xd1\xcc\xe3\x5a\xed\x93\xdc\xf6\xd5\xbb\xae\x18\x08\x25\xbc\x60\x27\x11\xc3\x41\xac\xf5\x8d\xec\x7f\xff\x62\xc3\xa4\x31\xed\x79\x2d\x3d\x1f\xc5\x4c\xf6\x87\x0d\x4f\x6b\xa5\x34\xd6\xca\x9b\xab\xe5\x1d\x42\x0b\x6a\x93\x85\xbe\x1a\xd0\x2b\x65\x7b\xbf\x75\x58\xfc\x5e\x72\x3b\x60\x51\xdd\xdb\xa5\xde\x37\xab\x32\x13\x4e\x5e\x39\x23\x9c\x9c\x3f\x79\xcd\xa7\x00\x8c\xce\x73\x55\xcc\xbf\xd7\x04\x42\x94\x54\x29\x8c\x53\x3e\xb8\x9d\x18\xfb\x31\xaf\xe0\xf4\x79\x55\x21\xd3\xb6\x92\xc6\x76\x7c\x4b\x0f\xa9\x2e\x45\x70\xd1\xd2\x78\x45\x74\x67\x9d\x70\xd5\x1e\x53\xfb\x58\xad\x67\x56\x9a\x95\xcc\x7e\x91\xc5\x43\x10\xcc\x13\xc8\x79\x12\xef\xea\xe7\x6d\xb9\x10\x16\x97\x4e\x23\x85\x85\x39\xd3\xf1\xc5\x8f\xfe\xd4\x72\x3a\x59\xfd\x20\xf2\x72\x21\x7e\xd8\xfe\xad\xfe\xfc\xc6\xd1\xd9\xfb\xb9\x09\x3d\xc9\x6c\x27\xf9\xa0\x75\x71\x9b\xbf\xfc\x5f\x00\x00\x00\xff\xff\xc4\x76\x04\x0b\x5b\x26\x02\x00") +var _kubedbCom_mariadbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdc\x36\x96\x37\xfa\xff\x7c\x0a\x94\xb3\x55\xb2\x6f\xe9\x25\x9e\xc9\x66\xb3\xae\xad\x79\x4a\x91\xe4\xac\xee\xc4\x8e\xc6\x2d\xc7\x4f\xd5\xd6\x73\xa7\xd0\x24\x5a\x8d\x11\x49\x30\x04\x28\x59\xb9\x75\xbf\xfb\x2d\xbc\x12\x64\x93\xc0\x01\xbb\x25\x2b\x9e\xc6\x1f\x33\x4e\x8b\x3c\xc4\xeb\x39\x07\xe7\xed\x87\x6b\xfa\x2b\x69\x38\x65\xd5\x1b\x84\x6b\x4a\x3e\x0b\x52\xc9\xff\xe2\xc7\xb7\x3f\xf0\x63\xca\x4e\xee\x5e\x2f\x89\xc0\xaf\xff\x74\x4b\xab\xfc\x0d\x3a\x6b\xb9\x60\xe5\x07\xc2\x59\xdb\x64\xe4\x9c\xac\x68\x45\x05\x65\xd5\x9f\x4a\x22\x70\x8e\x05\x7e\xf3\x27\x84\xb2\x86\x60\xf9\xe3\x35\x2d\x09\x17\xb8\xac\xdf\xa0\xaa\x2d\x8a\x3f\x21\x54\xe0\x25\x29\xb8\x7c\x06\x21\x5c\xd7\x6f\xd0\x6d\xbb\x24\xf9\xf2\x4f\x08\x55\xb8\x24\x6f\x50\x89\x1b\x8a\xf3\x25\x3f\xd6\xbf\x1f\x67\xac\xfc\x13\xaf\x49\x26\xdf\xc0\x79\xae\x3e\x85\x8b\xab\x86\x56\x82\x34\x67\xac\x68\xcb\x4a\x51\x3b\x42\xff\xf7\xe2\x97\xf7\x57\x58\xac\xdf\xa0\x63\xf9\xc2\xf1\x9d\x1e\x94\xfa\x92\xa6\xfd\xab\xf7\x8b\x78\xa8\xc9\x1b\xc4\x45\x43\xab\x9b\x8d\xd7\x05\x16\x2d\x3f\xae\xd7\x98\x13\xef\xf5\x85\xfa\x39\xfa\xb6\x9d\x87\xe3\x8d\x49\xf0\x68\x9d\xde\x10\x8f\x50\x8e\x85\xfc\xcf\x9b\x86\xb5\x6e\x46\xd4\xc8\xf5\xe3\x66\xba\x32\x2c\xc8\x0d\x6b\xa8\xfd\xef\x23\xf9\x1e\xe6\x82\x35\xc4\xfc\xb7\x9b\x4b\xf9\x1f\xb8\xae\x79\xc6\x72\xfb\x37\xac\xa6\x1f\x21\xbd\x8a\xef\xe4\x34\x9f\xff\xa8\x7e\x29\x28\x17\x7f\xf3\x7f\xfd\x99\x72\xa1\xfe\x52\x17\x6d\x83\x8b\x6e\x51\xd4\x8f\x7c\xcd\x1a\xf1\xbe\xeb\xd6\x11\x2a\x73\xfd\x07\x5a\xdd\xb4\x05\x6e\xdc\xf3\x7f\x42\xa8\x6e\x08\x27\xcd\x1d\xf9\x58\xdd\x56\xec\xbe\x7a\x4b\x49\x91\xf3\x37\x68\x85\x0b\x35\xb5\x3c\x63\x72\xfc\x8a\x5a\x8d\x33\x22\x09\xf1\x76\xd9\x98\xdd\x65\xbe\xa0\xd7\xe3\x0d\xfa\x7f\xff\xbf\x3f\x21\x74\x87\x0b\x9a\xab\x79\xd5\x7f\x64\x35\xa9\x4e\xaf\x2e\x7f\xfd\xcb\x22\x5b\x93\x12\xeb\x1f\xe5\x87\x59\x4d\x1a\xe1\x26\x4b\xef\x37\xb7\xd3\xdd\x6f\x08\xe5\x84\x67\x0d\xad\x15\x45\x74\x20\x49\xe9\x67\x50\x2e\xf7\x36\xe1\x48\xac\x09\x32\x9b\x89\xe4\x88\xab\xcf\x20\xb6\x42\x62\x4d\x39\x6a\x88\x1a\x62\x25\x54\x97\x3c\xb2\x48\x3e\x82\x2b\xc4\x96\xff\x24\x99\x38\x46\x0b\x39\x0d\x0d\x97\xd3\xd7\x16\x39\xca\x58\x75\x47\x1a\x81\x1a\x92\xb1\x9b\x8a\xfe\xee\x28\x73\x24\x98\xfa\x64\x81\x05\x31\xeb\x60\x9b\xda\xf4\x15\x2e\xe4\x24\xb4\xe4\x10\xe1\x2a\x47\x25\x7e\x40\x0d\x91\xdf\x40\x6d\xe5\x51\x53\x8f\xf0\x63\xf4\x8e\x35\x04\xd1\x6a\xc5\xde\xa0\xb5\x10\x35\x7f\x73\x72\x72\x43\x85\x3d\xdb\x19\x2b\xcb\xb6\xa2\xe2\xe1\x24\x63\x95\x68\xe8\xb2\x15\xac\xe1\x27\x39\xb9\x23\xc5\x09\xa7\x37\x47\xb8\xc9\xd6\x54\x90\x4c\xb4\x0d\x39\xc1\x35\x3d\x52\x1d\xaf\x84\x62\x10\x65\xfe\x8d\x5b\xaa\x03\xaf\xa7\x83\xe3\xa1\x9b\xda\x78\x93\xf3\x2e\x37\x20\xa2\x1c\x61\xf3\x9a\xee\x7f\x37\xbd\xf2\x27\x39\x2b\x1f\x2e\x16\xd7\xc8\x7e\x54\x2d\x41\x7f\xce\xd5\x6c\x77\xaf\xf1\x6e\xe2\xe5\x44\xd1\x6a\x45\x1a\xbd\x70\xab\x86\x95\x8a\x22\xa9\xf2\x9a\xd1\x4a\xa8\xff\xc8\x0a\x4a\xaa\xfe\xa4\xf3\x76\x59\x52\x21\x57\xfa\xb7\x96\x70\x21\xd7\xe7\x18\x9d\xe1\xaa\x62\x02\x2d\x09\x6a\x6b\x79\x7a\xf3\x63\x74\x59\xa1\x33\x5c\x92\xe2\x0c\x73\xf2\xe8\xd3\x2e\x67\x98\x1f\xc9\x29\x8d\x4f\xbc\xcf\x98\x6d\x1b\x3b\x1e\x8e\x3b\xf5\x7e\x41\xa8\xc4\x9f\x7f\x26\xd5\x8d\x64\x6e\xdf\xff\x65\xf0\xb7\x1a\x0b\xb9\x25\xdf\xa0\xff\xe7\x7f\xf0\xd1\xef\xff\xe7\xe5\xff\x1c\xe1\xa3\xdf\xbf\x3d\xfa\xcf\xff\xf3\x7f\xfd\x8f\xf9\xc7\xab\xff\xf5\x6f\x83\x77\x46\x3b\x69\x7f\xd6\x0b\xe8\x7e\xb6\xac\x3f\xd6\xef\x8c\x55\x2b\x7a\xb3\x50\xbb\x62\xd8\xff\xde\x46\x3b\xf3\x1e\x54\xfb\xad\x42\xac\xd6\x42\x05\xad\x24\x77\x92\xc7\xaf\x6e\xd8\x1d\xcd\x09\xca\x94\xac\x33\xc4\xdb\x66\xf3\x88\xcb\xb6\xa2\x05\x41\x2b\xd6\x28\x6e\xbc\xc4\x9c\xa0\x97\xf4\xd8\xbe\x7b\x54\x3e\xf0\xdf\x8a\xe3\xac\x5a\xbd\x3a\x46\x97\x2b\x35\x1e\xba\xa2\x24\x3f\x34\xbb\x90\x16\x64\x83\xe2\x3d\x2d\x0a\xb5\xb5\x38\xc9\x11\xe6\xfd\xef\xeb\xef\x31\xb1\x26\xcd\x3d\xe5\x44\x72\x29\xdc\x16\x02\xd2\x49\x9f\xee\xf1\x70\x21\x27\x26\x56\x36\x7c\xcf\x2f\x0a\xcc\x05\xcd\x7e\x2c\x58\x76\xbb\x90\x12\x67\xf3\xa9\x0d\x4e\xfa\x69\xb1\xf1\x96\x77\x30\xe5\xcc\x9f\x7e\x5a\xa0\x73\xca\x6f\xdd\x81\x1e\x21\x8a\x90\x58\x63\xa1\x96\x4a\x08\x9c\xad\x89\x5a\x21\xac\x64\x5d\x41\xc4\xc1\x01\x47\x6b\xc6\x05\x2a\x71\xb6\xa6\x15\x51\x3c\x51\xac\x49\x85\xc8\xe7\x9a\x71\x92\x8f\x93\xd4\x2c\xb6\x66\xf9\xe8\x49\x95\xb4\x9b\x8a\x08\xa2\x0e\x6b\xce\x32\x2e\xcf\x69\x46\x6a\xc1\x4f\xa4\xbc\xc5\x37\xe4\xe4\x4e\xea\x1e\x84\x7f\x83\xef\x39\xd1\xc3\x5c\xca\x61\x2a\x71\x7c\x30\xf2\xd1\xd0\x04\xab\x15\xe2\xd7\xf2\x00\x8c\xfe\x6d\x38\xb5\x6f\x69\x41\xf8\x03\x17\xa4\x54\xa7\x46\x0b\x23\x82\x74\x97\xf4\x7c\x3d\xb0\x16\xdd\x63\xc9\xd5\xd8\x04\x49\x84\x4a\xd6\x56\xe2\x18\x5d\xd3\xfa\x0d\xba\xa8\x78\xdb\x98\x77\x25\xad\xd5\xe0\x13\x94\x23\xde\xd6\x35\x6b\x04\xc9\xd1\xf2\x61\x92\xa6\x7c\x57\xad\x87\x1c\x2d\x56\x6c\x5b\x93\x39\x46\x17\x9f\x71\x59\x17\x84\xbf\x41\x2f\xc8\x67\xf1\xdd\x8b\x43\xf4\xe2\xf3\x8a\xcb\xff\xab\xc4\x8a\xbf\x18\xee\xc8\xae\x5d\x96\x75\x41\x33\x2a\x0a\xc3\xc0\x1b\xbd\x07\x96\xc4\x10\x42\x74\x85\xda\xca\x1d\x2d\x7f\x49\x27\x69\xee\x6a\xa9\x27\x3f\x70\xfd\xcb\xf9\x2f\x6f\xd0\x9a\xdd\xa3\x9c\xa1\x7b\x22\x35\x21\xc9\xc0\x11\x69\x1a\xd6\x70\x44\xab\xe1\x34\x2b\x81\x94\xb1\xb2\x6e\x58\x49\x79\x9f\x37\x6e\xce\xb1\xd9\xee\x63\x3b\x0d\x4d\xf3\xd8\xae\xd5\xb8\x11\x54\x0c\x54\x21\xbf\xf5\x77\xdc\xb5\x3c\x2d\xf6\x15\xdb\xf9\x89\xfd\x66\xf6\xd5\xf4\x72\xae\x10\x2b\xa9\x10\x9a\x09\x76\x1c\x8c\x72\xf7\x32\x5a\x3e\x58\xea\x52\x22\x79\x7b\x67\x92\xea\x5b\xd6\xd8\x57\xa4\x1c\x3d\xe1\x39\x7e\x7d\xa8\xba\xa5\x37\xc6\x83\x3e\xf1\x6e\x0c\x98\xa3\x17\xaf\x5f\x1c\xa3\x05\x2d\x69\x81\x9b\xe2\xe1\x30\x38\xdf\x86\x74\xf7\xbe\xe4\xf8\xf6\x43\xb2\xeb\x2f\xbe\x7d\x81\x5e\xb2\x46\x7d\x31\xc3\x15\x2a\x08\xbe\x9b\xde\x1d\xaa\x2f\x9a\x23\x3c\x20\x52\xd6\xe2\xe1\xd5\xf1\xd4\x5a\xae\x58\x53\x62\xf1\x46\x6a\x7f\x7f\xf9\x73\x70\xbd\xa5\x7e\x78\x43\x9a\xd1\x67\x1a\x82\xf3\x5f\xaa\xe2\x01\xb6\xde\x0b\x33\x67\x2f\x44\xd3\x92\x17\x72\x5d\x56\x4c\x4a\x4c\xc9\x5d\x39\xd1\x2c\xe2\x83\xa1\xe8\x06\x32\x39\x5a\x5a\xa1\x5f\xd5\xfc\xbd\x93\x8b\xab\x96\x59\x13\x3e\x0e\x6d\x86\x17\xea\x96\x10\xe0\x0b\x4f\xc4\xb9\xbb\xf9\x5d\x32\x56\x10\xbc\x29\x5d\x65\xd3\x54\x2f\xcf\x61\xf3\xfb\xb1\xa2\xbf\xb5\x04\x5d\x9e\x5b\xde\x5d\xcb\x0b\x06\x17\x92\x43\xe4\xbe\x44\x94\x73\x77\xfa\x69\x31\x39\x07\x2f\x4f\x4b\xfc\x3b\xab\xd0\xc5\x8f\x0b\xd3\x85\x57\x4f\x26\xd2\x50\x9c\xd1\x48\xa5\x99\x36\x24\x1f\x9b\x95\x23\x37\x67\x23\x7f\x1c\xd5\x06\x6d\xc3\xbf\xb7\x0d\x91\x8a\x43\x54\x0b\x39\xb5\x4f\x0e\x35\x0f\xf9\x3b\x3a\xc7\x02\x6b\x05\x44\x73\x1d\xa6\xf8\xda\xe8\x48\x95\x4c\x93\xbb\x7f\x29\x2f\x2a\xfa\x71\x4f\x8b\x98\x21\xf0\x33\xc5\xc1\x6f\xde\xb1\x1c\x28\xf5\xff\x5b\x76\xe1\x4c\xbf\x85\x4a\xf9\x1a\x7a\xcf\x2a\x72\xa8\x0e\x22\x92\x27\xd1\xfc\xf3\x53\x43\x05\x99\x64\x27\x51\xd1\x20\xf7\xdf\xfb\x91\x7b\xc0\x68\xaf\xa4\x60\x90\x0f\xdb\x7d\x2c\x95\x60\xbd\x83\x8d\x90\x58\x16\x6c\x89\xcc\x0e\xdb\xa6\x47\x1f\x3f\x5c\x82\x3b\xf4\xf1\xc3\xe5\xe3\x75\x26\x41\x51\x1b\xea\x69\x4e\x36\xa2\x77\x2d\x57\xb7\x47\xec\x69\x00\xd3\xc2\x42\xbe\xeb\x6b\x5f\x61\x2d\xeb\x78\xa0\x5f\x4d\xd2\x35\x7a\x57\xb2\x7e\x35\x77\xe6\x86\x16\x80\xc9\x79\x3b\xb8\xf8\x5c\x93\x4c\x38\x2b\x06\x5a\xac\xb1\x64\x22\xa8\x6c\x0b\x41\xeb\xc2\x2c\xa4\x5c\x59\x2e\x39\xe7\xe4\x08\xcd\x52\x23\x9c\x65\xea\xc4\xa2\x73\x92\xd3\x4c\xde\xd7\xdf\x28\x73\x95\x4f\x49\x12\xda\x7c\xe1\x1d\xae\xf0\xcd\x38\xff\xd2\x4d\xf1\x22\x54\xea\xc7\xbc\x1d\xf7\x92\x55\x6a\x3e\xdd\x9f\xf0\x1d\xa6\x05\x5e\xd2\x82\x8a\x07\x29\x43\x5f\x4d\x0b\x36\x23\x04\x95\xa0\xe4\x6a\xe8\xb3\x0f\x73\x92\xd8\x3f\xf7\xbe\xab\x84\x2f\x7a\x29\xdf\x3f\xb9\x97\x0c\xe5\xd5\x71\x27\xf1\xd7\xa4\xd1\xd7\xc9\xc9\x21\x68\x75\xa1\xa7\x26\x70\x22\xd4\x4e\x1d\x68\x03\xe1\xed\x34\x2d\x72\xc3\xa2\xc5\x32\xb1\xc9\x3f\x7e\xfc\x70\x39\x4b\xec\xc8\x33\x0d\x13\x3b\xf2\xc9\x51\xb1\xa3\xfe\xb0\x20\xcd\x1d\xcd\x88\x93\x3c\x13\x57\x5f\xf2\x08\x92\xe7\xeb\xdd\x13\x08\x71\x92\x35\x44\x80\xc5\x97\xec\x4c\x65\xc4\x97\x7e\x55\x5f\x67\x32\x56\x09\x4c\x2b\x6e\x56\x6c\x11\x14\x19\x08\x9d\x1a\x76\xa1\x24\xa1\x5c\xab\xbf\x91\x29\x6d\x38\x7a\x62\xd5\x81\x07\x0f\x40\x71\x46\x34\xb1\xd3\x01\xdf\x0b\x9f\xa2\x6e\x36\xc7\xff\x6c\xbb\x9a\x7a\x92\x32\x52\xaf\x57\xa3\xbb\xb3\x6f\xac\x23\xf5\xfa\xed\xa2\x77\x86\xd4\x6f\xe8\xed\xa2\xa7\xb1\xe9\x33\x22\x17\x6e\x7a\x46\xe5\xbb\x35\xcb\x0f\x38\x2a\xe8\x8a\x08\x3a\xda\xe9\xd8\xc9\x29\x59\x45\x05\x6b\x26\xaf\xa1\x7d\x29\xf6\xc1\xce\x2d\x7a\x67\xde\xd3\x16\xee\x8c\x15\x05\xc9\xd4\x2d\x92\xad\xf4\x80\x2c\xe1\x94\xbb\x0e\x31\x77\x62\xe7\xa7\xd3\xea\xfb\x89\x9e\xdc\x93\x0f\x17\xa7\xe7\xef\x2e\x8e\xcb\xfc\x9b\x35\xbb\x3f\x12\xec\xa8\xe5\xe4\x88\x8a\x29\x49\x42\x05\x29\x03\xd7\xeb\xe8\xb6\xb5\x8f\xe0\xa6\xc1\xe3\x7b\xbf\xc6\x62\x0d\x9b\xb8\x5f\x8c\x45\xf6\x0d\xfa\x68\x4c\xa0\xca\xe4\x21\x57\x9c\xe4\xa8\x61\x4c\x1c\xa2\x06\x8b\xb5\xb2\xe5\x4f\x30\x02\x64\xd8\xe7\xaa\x2d\x0a\x3d\xc7\xa2\x21\xe4\xd0\xbf\x60\x9e\x3c\x8d\x54\xf5\x86\x03\x65\xa6\xd3\x66\x2b\xcb\x64\x53\x98\xa9\xda\x3c\x81\xcb\xf9\xe3\x6d\x2a\x28\xbf\x9e\x12\xaa\xa1\xb9\x5c\xb8\x37\x95\xe5\x48\x19\x77\xc4\x5a\xce\xec\x2d\x79\x40\xca\x87\xb4\x62\xd3\xaa\xe1\x47\x4e\x9a\xfe\x6e\x20\x22\x53\xc3\x3c\x69\x39\x69\x8e\x8d\x34\x78\xf4\x73\x17\x97\x07\xaa\x23\x1f\xc8\x6a\xde\x04\x7d\x20\x2b\xa4\xfc\x94\x2b\xd2\x90\x2a\x23\x56\x77\xc0\xad\x58\x93\x4a\x48\x6d\x78\xcc\x61\xd0\xff\xba\xb2\x76\x6d\xcc\x98\xb2\x5b\x8d\x5a\x1b\x76\x3b\x45\x31\xae\x8c\x26\x1c\x57\xd3\x93\xe4\xdf\x58\xcd\xcc\x88\x64\xb3\x09\xbb\x93\x2a\x1c\xb9\x3f\xb9\x67\xcd\x2d\xad\x6e\x8e\xee\xa9\x58\x1f\x69\x89\xc7\x4f\x94\xe3\xfe\xe4\x1b\xf5\x7f\x81\x7e\x59\x43\xf1\x69\x9e\x6b\xa7\x0e\x6a\x39\x59\xb5\xc6\x19\xc5\x8f\x3d\xa7\xf5\xa1\xba\x40\x1d\xa2\x96\xe6\xff\x6b\x6a\xaa\x50\x0a\xab\x9e\x10\xce\xb2\xc9\x23\x30\x83\x57\x37\xf6\x28\x36\x38\x67\x5c\x51\x51\x2b\xe3\xb6\xcd\x34\x17\xe2\x08\xe7\x25\xad\xbe\xf8\x81\x0b\x2b\x44\x01\x39\x1d\x56\x78\x68\x95\x8f\xcf\x68\x7f\x36\xcf\xd4\x73\x7d\x8d\x47\xbf\x6b\x2d\xd0\xce\x0b\x86\xed\x6d\x60\xc2\xc7\xc5\x2a\xeb\x23\xeb\x7b\xc8\x40\x07\x56\xb9\x2d\x8f\xf4\x97\x8f\xea\xbc\x9b\xe3\xa7\x76\x6d\x3d\x8d\xc9\x64\xe0\x98\x9a\xb6\x98\xf4\x1c\x56\xbb\x32\x9c\x80\xb4\xbb\xa4\x15\x41\x7b\x25\x66\x07\x73\x17\xd7\x5b\x66\x48\x65\x15\x6b\xc2\xb5\x0f\xdb\x08\x57\x13\xb4\x62\xee\x9c\x21\xcf\x5f\x8d\x1b\x5c\x12\x41\x1a\xae\x83\x03\x04\x93\x6f\x55\xf2\x6d\xc1\xd0\x2f\x35\xa9\x16\x02\x67\xb7\x93\xb6\xdf\xbd\x24\x7d\x72\x49\x9a\xe6\x17\x32\x4c\x9e\xe6\x6e\x7d\x69\x2e\xb5\x34\xe3\xbe\xb4\x7f\xae\x8c\x50\x78\x56\x1c\xe5\x71\x7c\x3d\x3a\xae\xe5\x1d\xae\xe3\xd6\x02\xfb\xe4\x40\x7c\xba\x9f\x95\x65\xc7\xc4\xdf\xd5\xac\x6e\x0b\x1d\x76\x39\xd2\xa1\x35\xe5\xa6\xc3\x33\xc4\x9d\x51\x75\xe0\x8e\x9d\x8e\x39\x94\x2c\x27\x68\x49\x35\x7f\x68\x39\x91\x42\x5c\x85\x91\x92\x5c\x4b\xbd\x50\xe8\x85\xf9\xae\x2f\x29\x75\x10\xdd\x92\x88\x7b\x42\x2a\xf4\xad\xd2\x19\xbe\xfd\x8f\xff\xf8\x8f\xe3\x1e\x13\xff\xf6\xfb\xef\xbe\x9b\xde\x49\xe7\xb4\x21\x99\x50\x71\xa7\x48\x9e\x4b\xe3\x4a\x51\x97\x2d\xdc\x10\x54\x31\x81\xf0\x6a\xa5\xed\xf5\x4a\xd0\x52\x6e\xb9\xf8\x34\xd5\x6b\xf9\x54\x49\x6f\xd6\xaa\xa7\x72\x43\xb3\x6a\x55\xd0\x4c\xa8\x6f\x98\x03\xac\x23\xb3\xb8\x5e\x38\xfd\x8d\x49\x07\x1d\xb2\x51\x4e\x72\x0e\x0f\x51\x41\x6f\x09\x5a\xf1\x9f\x1a\xd6\xd6\x87\x36\x28\x08\x35\x84\xab\x58\x29\x5c\xc9\xaf\xea\x8f\x94\x36\x46\x76\xac\xa9\xb5\xe0\x44\x3c\xb2\x73\x3e\x68\x7c\xe9\x6d\x96\xcb\x9e\x46\x71\x88\x08\xce\xd6\xf2\xc2\x7b\xa4\x97\xba\xc6\xb4\xb1\xce\xae\x73\x2c\x70\x60\xaa\x48\x91\x0f\x18\x77\x46\x72\xef\x10\xd9\x68\xb1\xba\x61\xff\xd4\x8b\x4b\x2b\x7d\x77\x9c\x24\x6a\x55\x54\x6e\x94\x34\x74\xbf\x66\xdc\x18\x58\xcd\xc5\x40\xde\xcd\xe5\x6a\x48\x61\x47\x2a\x61\x7e\x9e\xa6\x28\x47\xb5\x19\x39\x47\x54\xd0\x32\xc9\x25\x39\x3e\xd1\xd3\xa0\x55\xc8\x51\x53\xfb\x98\xeb\x1d\xd2\x56\x1b\x54\x4d\x90\xa7\x61\x27\xc1\x98\x16\xac\xc6\x26\xf7\xbe\xa3\x7d\xbf\xa6\xd9\x5a\xfe\x24\xc9\x18\x1a\x76\x75\xdc\x44\x83\xe2\x4e\x38\x11\xad\x59\x12\x15\x40\x24\xfb\x4a\x38\x47\x54\xcd\x60\x89\x9b\x5b\x92\xbb\x40\xc6\xe9\x6e\x5e\xc9\xc1\xa2\xd2\xf0\x87\x86\x14\x58\xd0\x3b\xe2\xe2\x88\x65\x37\x8d\x16\xa2\x3e\x7e\x70\x7c\x7c\xa0\x0f\x7a\xc0\x90\xc2\x05\x6e\xcc\xa9\x95\xcf\x4f\x7d\x3c\x62\x5f\xec\x6d\xf2\x77\xb8\xf6\x22\x81\xe5\xb4\x2a\x75\x49\xf5\xc4\xb0\x20\x6c\x66\x66\x7a\xac\x10\x5d\x07\x49\xe2\xa1\x3f\x8f\x38\x97\x4d\x77\xcc\x66\x9b\xfe\x3e\x82\x29\x10\x48\x99\x95\xa7\x45\xc5\x48\x2f\x22\x02\xc3\x05\x96\x4e\xef\x2c\xf3\x59\x80\x9c\xb8\x5c\xa9\x5d\xd1\x9d\xbe\x08\x4d\x6f\xcf\x7a\x72\xb0\x1f\x7a\xba\xc1\xfc\x23\x34\x13\x44\x83\x27\x02\x22\x44\xd3\x04\x84\x9a\xe3\x08\xc5\x90\x98\xd0\x0d\x22\x2c\x74\x8b\x8b\x0c\xdd\x42\x36\x75\xdd\x36\xf6\xaf\x3b\xf5\xfa\x60\xaf\xba\x69\x93\x77\x6d\xa5\x26\x4d\xf3\x63\xdd\xf4\x11\x38\x46\xef\x0c\xcf\x90\x7b\xa8\x42\x78\xc9\x59\xd1\x0a\x4d\xb8\xfb\xa3\x61\x28\x80\x7d\xa3\x3a\x44\x0a\x52\x4a\x36\xa9\x78\x89\x23\xe2\x31\x19\xc5\xbe\x63\x27\x4a\xb6\x10\x37\x32\x1f\x85\x1c\xcf\x90\x5a\xab\xdb\x91\x9c\x90\xc0\x5f\xe5\xb8\x22\x8e\x95\xc0\x05\x22\xee\x58\x09\xdd\xd8\x9e\xe7\x6d\x6d\xa7\x37\xb5\xe8\x2a\x5a\xb9\x08\x73\xa8\x9a\xc8\xc7\xfb\x35\x31\x0e\x26\x4f\x56\x23\xd6\x20\xc9\x6c\x95\x82\x20\xd9\xe7\xb4\xe2\x48\x4c\xfe\xd0\xb8\x71\x2e\x6e\x62\x08\x5f\x8a\x38\x8d\x5f\x87\x16\x97\xe8\xe5\x99\x3e\x7c\xa4\xb1\x2e\x6c\x74\x59\x09\xd2\xac\x70\x46\x5e\xf9\xd7\xa4\x50\x4c\x94\x8d\xbf\x5f\xe3\x2a\x2f\xb4\x8e\x8f\x2b\x44\x3e\x9b\x5c\x24\xf9\x9d\xbc\xa1\x77\xa4\x41\x2f\x4f\x8b\x7a\x8d\xd1\x8a\x60\xd1\x36\x64\x34\xc0\x25\x7a\x79\x52\x94\x60\x91\x09\xfa\xa3\x46\xb1\xac\xbc\xad\xed\x75\x49\x75\x5e\xf7\x7c\x7a\x3b\x7a\xf7\xbd\x63\xb9\xd8\x4a\x06\x28\x66\xf3\xc0\xda\xc6\x18\xa6\x57\x4c\x6f\x86\x8c\x35\xf2\x42\xa4\x3e\x38\x49\x11\x73\xd4\x90\x1b\xa9\x4d\x36\x4a\x1d\x35\xc9\x45\xad\xfc\x61\x76\xfc\xd4\x4e\x22\xcf\x36\xe3\xc3\xe2\xf1\xf7\x2b\xa3\xc0\xaa\xac\x18\xa3\x80\x2b\xe7\x8f\x51\x1c\x28\x47\x35\xe6\xc6\x60\xa1\x9c\x4b\x9c\xb3\x8c\xe2\x29\xd3\xb4\x6c\xde\x1a\x69\x35\x59\xa9\x08\x39\x11\xa4\x29\x69\x45\x7a\xc1\xc0\x7e\x32\xc2\xb4\x5e\x8f\xeb\xba\x78\x98\x3d\xb9\x15\xcb\xc9\x55\xbb\x2c\x28\x5f\x2f\x92\x6c\x7b\xef\x47\x5e\xd4\x7e\xfe\x0d\x9f\x9b\xb6\xf7\x4d\x0e\x60\xc3\x0e\x88\x38\xa9\x38\x55\xc2\x5a\xb2\x67\xa9\x3c\x50\xa9\xe0\x31\x35\xdd\x96\xea\xd9\x62\x2c\x92\xc9\xf4\xd4\x9c\x02\xa6\x32\x0b\x0a\x22\x88\x3b\x20\x5e\xbf\x7f\x35\xf7\xb6\x2a\x57\xbf\x7e\xac\x6a\xff\xf7\x49\xe2\x19\x2e\x0a\x6e\xb4\x39\x7d\x9f\xa4\xdc\x31\x5b\xad\x53\xa9\x6b\xc5\xd2\xee\x16\x2a\x37\x52\x6c\x16\x28\x77\x22\x57\xa9\x9f\xdd\xc4\x0d\x26\x88\xa3\x92\xe9\x94\x95\x0a\xb1\xca\x3e\x34\xad\xf7\xe1\xa2\xb0\x84\xdc\xca\x70\x65\xc2\xd0\x9b\x77\x6a\xeb\xec\x8d\xa6\x4f\x6e\x34\x4d\x72\x4d\x2c\xcc\xdd\x44\x1f\x39\x9c\x1f\xa9\xc8\xcb\x41\xd2\x9c\x61\xde\xb1\x4b\x63\xc4\xb7\x31\xdb\x5d\xa0\xbf\x7b\x2a\x74\xae\xe7\xf4\x4e\xf2\x53\xdc\xe3\xbb\x0e\x30\xd5\xbd\x99\xfa\x75\xd0\x0b\x25\xf6\x09\x37\x5c\xe2\xc8\x5c\xf2\x32\x6f\xc7\x07\x44\xa6\xbc\x77\xb9\xb3\xe3\xf1\x22\x43\xad\x13\xa4\x4a\x86\xea\x1f\x0f\x38\xca\x59\xd6\x96\xa3\xf9\xd2\x7e\x93\xeb\xd5\xb9\xef\x4c\x2e\xf3\xbc\xdd\x14\x89\x13\x55\xfd\x4a\xd5\xbf\x72\x76\x5f\xdd\xe3\x26\x3f\xbd\x1a\x0d\x4a\xef\xab\x29\xdd\xb3\xbe\xc6\x65\x49\x20\xf9\x3b\x5e\xb2\x56\xd8\x90\xce\x50\x20\x5b\xcf\x76\xbd\xb7\x53\xfb\x6d\x6f\xa7\x7e\x56\x76\x6a\xf9\xa4\x56\x83\x0a\xca\x85\x94\x76\xbd\x1d\x6f\x6c\x44\xa3\xf9\xcf\x80\x6f\x4d\x9f\x31\xcd\xe3\x86\xb1\xd7\x9e\xfa\x14\x12\x5d\xcc\xec\xe2\xce\x26\xe2\x29\x63\xf6\x78\x2a\xd1\xb8\xa5\xd9\x51\xd1\x08\x68\x98\x23\x63\xf4\xc2\x49\x17\xa4\x90\x42\x5e\x59\xd9\x3d\x33\x7e\xcd\xf2\x37\x88\x85\x3c\xef\xba\xa9\xda\x05\x6a\x2e\xf8\xa1\x29\xc8\x72\xa8\xef\x4f\x72\xff\x55\xb6\x18\x87\x3a\x35\x8e\x09\x47\x4c\x5b\xb0\x61\xa3\xc9\x2a\x1c\x80\x09\xb0\x75\x39\xcc\x68\x4d\x21\x0e\xf9\x4f\x55\x56\xe4\x4a\x1e\x74\x1a\x33\xd2\xc9\x26\x85\xb9\x20\x3a\x8d\x95\x34\x25\x47\x6c\x75\xd8\xcb\xb9\x78\x71\xf7\x3a\x70\x1d\xb2\x0d\x68\xdc\x45\x76\xb9\xaf\xa2\xb6\xba\x8d\x21\x5f\xf5\x4c\x74\xa6\x3a\x01\x57\xab\x6f\x2f\x95\xce\x32\x0b\x18\xb8\x3a\x78\x7a\x16\x77\x38\xbc\xb8\x81\x0c\x29\x51\xeb\x26\x01\x60\x93\x0b\xda\xc3\xd0\xde\x64\xbe\x37\x99\x6f\xb4\x47\x32\x99\x7b\x6c\xd7\x70\x18\x64\x86\xed\x9b\xd1\x83\xc6\x20\xdd\x06\x96\xf6\x25\xb1\x1a\x93\x51\x84\xac\x21\xdd\x5a\xd1\x59\x93\x60\x3a\x3f\x38\x38\x3e\x3e\x38\xb0\x96\x77\xb3\x49\x5b\xb1\x3a\xfa\x01\x91\x2a\x63\xb9\xde\x42\xf2\xeb\x0d\x17\x4a\xb4\xc2\x7a\xdb\x1f\x65\x69\xfb\xe9\xfb\xfc\xd4\x97\xc3\x8b\x08\x64\x25\x36\xe7\xf9\xed\x0c\xe1\xd8\x89\x44\x97\x39\x6d\x86\x90\x59\x13\x28\x48\x36\xba\x7a\x46\xa8\xa0\xaa\xec\x8f\xdc\xe6\xae\xf4\xcf\x4b\xfd\xe3\x71\x56\xb7\x87\xe6\x81\xe3\x92\x94\xac\x09\x54\x0f\xb0\x74\x35\x09\xf9\x6a\x8f\xa6\x79\xff\x95\x92\xb6\x59\xdb\x34\xa4\x12\xc5\xc3\x23\xc8\x5d\x37\x0f\xa1\xdc\xa2\xae\x0d\xe2\x52\x9d\x1d\x59\xd7\x2f\xb3\x3c\x5f\x5d\xd4\x4c\x3c\x6e\x6c\x0a\x90\x67\x8a\x57\xef\x91\xea\x0e\xdd\xe1\x86\x87\x47\x88\xd2\x44\x6d\x4e\xef\x28\x67\x93\x16\xe4\x89\x01\x76\x36\x04\xb9\x65\x58\x2b\xea\x56\x18\xde\x63\xf7\x51\xa8\x9e\x4c\xbf\xb9\x3d\x34\xd0\x2a\x5e\xbf\xd8\xe5\x40\xed\x57\x52\x97\xb2\xe3\x67\x5d\x19\x2d\xab\x54\xec\x70\x25\xa0\x5a\x41\xb0\xf4\x4f\xff\xab\x11\xa5\x00\xe2\xa8\x7b\x5c\x57\x5c\x90\x80\x32\x81\x9e\x53\x40\x10\xf8\x85\x79\xb2\x1f\xc7\x26\x48\x59\xb3\x06\x37\x0f\x28\x37\x37\xdd\x07\x1b\xd1\x86\x9b\x09\x4b\x8d\x4e\x79\xf3\x72\xde\xb6\xae\x0d\xa1\x46\x91\xd3\x66\x4e\x1c\x78\x49\x72\xda\x96\x30\x5b\xc3\x27\x55\x88\xc8\x14\x37\xb2\x59\xd9\x9a\x80\x35\x83\x2c\x71\x76\xab\x35\x37\x37\x21\xa1\x7b\x7c\xbf\xb6\xc8\x0b\xe3\x75\x28\x09\xae\x9c\x26\xa8\xfc\x48\x2c\x27\x72\xc6\xec\xc3\xfa\x9b\x81\x40\x4b\xab\x11\x56\xc6\xc8\x6d\xa2\x56\x5e\x1a\x02\xaf\xa4\x20\x7f\xa7\x78\xfc\xa3\x4e\x3e\x02\xe5\x12\xd1\xdf\xc9\xcf\x52\x6c\x01\xab\xfe\x30\x81\x0b\x84\x4d\xaa\xe5\x0a\x15\x2c\xc3\x85\x5b\x8d\x9e\x0c\xd8\xa8\xc4\xe7\x37\xb7\xa1\xad\x8f\x4d\xae\x86\xec\x8b\x96\xa1\xca\x4c\x50\x70\xa6\x3c\x38\x34\xc3\x4b\x53\x50\x4d\x4b\xc6\x49\xaa\x66\x65\x14\xb1\x12\x7f\xa6\x65\x5b\xa2\x96\xcb\x9e\xb1\xca\xbc\x6b\x77\x8c\xeb\xc0\xbd\xdc\x39\xd3\x56\x14\xbd\x05\x4a\x5a\x29\x62\x7d\x15\x5f\xfe\x65\x61\xe7\xcf\x0b\xf2\x5a\x93\x40\x5c\xba\x55\x92\x79\x5b\xca\x09\x34\xbd\x32\xaa\x05\x5b\x29\x9f\x84\x13\xcc\xaa\x2a\x14\xd6\x55\xc9\xae\x03\xe6\x23\x6f\x1f\x57\xb4\xe8\x6f\x64\x5b\xbf\xcb\x4d\x6c\x5b\x19\x3f\x34\x38\x82\x7e\x7c\x53\xb6\x9c\x34\x47\x37\x2d\xcd\x77\xb6\x1d\x83\xdc\x72\x95\x45\xf9\xe4\xdb\xb3\x3e\x83\x7c\x4b\x97\x0d\x41\x67\x6b\x5c\x55\xa4\xf0\x6b\x44\xf6\xcb\xc7\x8d\x76\xb6\x57\x52\x2e\x52\x51\x6e\xcb\xec\xfb\xe7\x9f\x0d\xf3\xe8\x05\x44\xb4\xd3\x69\x92\xec\xb3\x2d\x9a\x56\xb4\xc0\x72\x69\x9d\xb5\xe1\xed\x19\x12\xb8\xb9\x21\x42\xbe\x8c\xaa\xb6\x5c\x92\xc9\xf3\xf2\x25\x0a\x7d\x7d\xe9\xb4\x9e\xf9\x19\x38\x7a\x5a\x3f\x7d\x7a\x0f\xcc\xc6\x1f\x5b\x93\x7b\xd6\x14\xf9\x3d\xcd\x75\xf8\x08\x47\x2f\x25\xb9\x57\x5f\x2e\x45\xfe\xfe\x9e\xe6\x73\x86\x63\xcc\x47\x6a\x38\x48\x8d\xc7\xa4\x8d\x50\x29\x55\x5e\x2a\xb2\xaf\xa6\xc5\x33\x55\x46\x1b\xf5\x94\x36\x3b\x94\x4b\x5a\x61\x5b\xa0\xa0\x9b\x68\xc5\x0a\xe5\x3e\x36\x66\xb0\x49\x8a\x9c\x88\x43\xb4\x6c\x8d\x51\x83\x89\x35\xe2\xb4\x6c\x0b\x81\x2b\xc2\x5a\x5e\x3c\x4c\x2e\xfb\x63\x4f\x71\x58\xe6\x14\xe4\xb3\xde\x9c\x71\xd9\xe3\x1e\xed\xcb\xa0\x1b\x52\x91\x86\x66\x76\x41\x7a\x42\x68\xdc\xa3\xc2\x75\x5c\x8d\xae\x2e\x7d\xe2\xb2\x3b\x5b\xc9\xcc\x74\x9c\x15\xc9\xd0\x12\x4b\xb9\x53\x17\xed\x0d\x1d\xb5\xdc\x3e\x49\x54\x55\x17\x4b\x22\x75\xe5\xa8\xd2\x17\x76\xb5\xff\x0b\x96\xd9\xba\x1e\x8f\x68\xca\x49\x4d\x2a\x79\xf0\x2a\x7f\x57\xe9\xe1\xcd\x9e\x3d\x63\xeb\xfd\x32\x61\x06\x1e\x6f\xba\xf8\x2c\x1a\x2c\x19\x4a\x29\x59\x87\xb5\x40\xd3\x15\xc2\xd5\x34\x13\xd8\x6d\x78\xc8\x1f\x58\xc4\x3d\x52\xe9\x87\xc7\x09\x43\xd3\xdc\x69\x5a\x24\xa8\x8e\xda\x70\xb1\xc9\xb0\x30\xfb\x75\x3f\x8f\x26\x18\x99\x98\x1a\x1e\xe6\x85\x81\x4d\xf3\xae\xcd\xc0\x16\x3d\x3a\x37\x8a\x7d\x82\xed\x33\x89\x15\x7b\x8c\xe8\x9e\x55\xc1\xb2\x5b\x40\xb5\x86\xb7\xfa\xb9\xc1\x2d\xd4\xfc\x38\x2c\xd7\xd0\xbf\x61\x8e\x0e\xb6\x5f\xa5\x41\x9d\x13\x4f\x38\x28\x47\xb7\x21\xae\x50\x03\x98\xdc\xc7\xba\x88\xdc\x92\x4c\x26\xf9\xb7\xd5\x44\x46\x79\x54\x67\xc0\x02\xf3\x84\x52\x6a\xc3\x2a\xa0\x9c\x08\x1d\x5f\xa6\x0a\x38\x59\x10\x02\x74\xf4\xd7\xb0\xb3\xcc\x8c\xd4\x52\x90\x6a\x86\x1d\xb5\xb5\xfb\x29\x9f\x0e\xa7\x39\x31\xb4\x73\x39\xff\x59\x20\xda\x38\x5e\x60\x54\x7f\xed\xe3\x47\x60\x9e\xb6\x7c\x70\x30\x56\xb3\x60\xca\xe2\xa2\x6a\xfb\x76\x1a\xf8\xf4\x58\x57\xde\x86\x31\x74\x1e\xc1\x96\x72\x93\x91\x2b\x57\x5e\x18\x54\x36\xf7\xe0\xa7\xb3\x8b\xfe\x2b\xfd\x4d\xfe\xd3\xd9\x45\xbf\x70\x7f\x50\xc1\x9d\x57\xb8\x1f\x05\x92\x4d\x77\x51\xb8\xff\x26\x23\x5d\xd1\xe5\x9c\xf2\xdb\x7d\xd5\xfe\xaf\xb2\x6a\xff\xc6\x3a\x4f\xfb\x08\xf6\x25\xfb\x27\xda\xbe\x64\xff\x78\xc9\xfe\x27\xe1\x41\x68\x67\xa6\xc1\x3a\x07\x4b\x73\x5b\xa1\xde\x37\x00\x5c\x9d\xf7\xca\xd2\xff\x74\x76\x71\xac\x0b\x34\x06\xb8\x55\xaf\x7c\x89\x2d\xc5\xad\xde\x7c\xaa\xa9\xdb\x71\x1d\xa4\xcd\x7a\xb7\x81\xbb\x60\xc0\xdb\x32\xa8\x6e\xb4\x71\x35\x7d\xea\x09\x9a\x5b\x68\x59\xef\xa9\x64\x95\x84\x8a\x0f\xa4\x1e\xe5\xf4\x03\x45\x44\x3f\x38\xb0\xb2\x51\x05\xf1\xc5\x38\x55\x5e\x70\x2c\x54\x71\x80\x46\xd0\xac\x2d\xf0\x94\x55\x5c\xdb\xd8\x8e\xd1\xf9\xc5\xd5\x87\x8b\xb3\xd3\xeb\x8b\xf3\x37\xc8\x52\xa7\xbe\x12\x79\x8c\xae\x59\x67\x94\xd3\x15\x64\xb4\x83\x6e\xdc\x66\x4b\xc5\xda\xeb\xd3\xa1\x61\x87\xb8\xea\xbc\x8e\xaa\x70\x06\xae\xd0\x65\x45\x45\x17\x49\x33\xa9\x32\x65\x05\xb3\xb8\x73\x92\xa2\xb1\x05\xde\x50\x71\xa8\x15\x24\x53\x03\x7a\x4d\x06\x5f\x50\x67\x54\xf9\xfb\xc7\xc9\xda\x2f\x8f\xde\x5e\xa3\xd7\x01\xeb\x63\x87\x55\xe1\xd7\xf6\xf5\x2e\x52\x41\xcb\x04\x17\xe8\x66\xab\x4c\xb0\x46\xc7\x92\x4d\x1e\x94\xae\xae\x84\x92\x42\x07\xc7\x07\x56\xa9\x29\x5c\x2d\x10\x1b\x3c\xe9\x3e\x16\xac\x42\x6d\x9c\xbc\xfd\x3d\x74\x8c\xd0\x2f\x16\x52\xeb\x50\x6a\x26\x83\x72\x23\x93\x49\x16\xb6\x97\x9d\x1f\x77\x84\xba\x8b\xd5\x6d\x97\x7e\x27\x75\x32\xfb\x24\xd1\x1b\x7a\x47\x2a\x3d\x71\xf3\x59\x9b\xed\x02\x68\xd5\x3e\x74\x3d\xfe\xf8\xe1\xe7\xf9\x1f\xd5\x27\x07\xf4\xc9\x33\x56\x96\x54\xa0\x35\xe6\x6b\x97\xa4\xd5\xf9\xd6\xdd\xa9\x9d\xd7\x97\x30\xe7\xea\x26\x27\x99\x7b\xe9\x44\x5e\x40\x05\xeb\x83\x9f\xec\xa3\x83\x0b\x94\xfb\x79\xa3\x8e\xf5\xb8\xb3\xab\x0b\xf4\x01\x06\xf5\x4c\x15\xcd\x74\x7d\xdf\xae\xa6\xa3\x45\x4d\x04\x7a\xab\x2e\xec\xe3\xef\xbd\x5a\x40\x0e\x79\x51\x29\x19\x6a\x88\x39\x11\x98\x16\xd3\x56\xa8\x6e\xde\x04\xab\x59\xc1\x6e\xd2\xea\xcf\x8e\x0c\xfe\x1b\x1d\x85\x7b\x84\x8f\xe4\xac\xce\xd7\xcd\xa1\xb5\xad\x6d\x10\xb1\x9c\x80\x6e\x34\x4e\x57\x55\xf1\xbb\xf0\x8b\xd0\x93\x0f\x74\x87\xca\xd2\x70\xf4\xd3\x9a\xb7\xba\x35\xda\xf2\xdf\x8a\x6f\x76\x79\x9e\x35\x69\x4a\xca\x35\x60\xf1\x88\x16\x35\x49\xf4\xc9\x76\xcd\x5c\xc5\xca\x9d\xb0\x71\xb5\x6b\x3c\x90\x31\xc8\xb6\x24\x77\x99\x4a\x42\xd9\x84\x1a\x52\x1b\xb5\xc7\xb4\xea\x86\x1c\x91\xcf\x94\x2b\xfb\x80\x86\xa1\x6c\x3a\xa9\x3b\xee\x87\xf2\xea\xf3\x5b\x43\x8f\x0d\xc8\xd1\x6f\x16\x0f\xc3\xb8\x9a\x4e\x4f\x19\x25\x69\xcd\x6c\xca\xd5\x8a\x8b\xe2\x41\x97\x4a\x54\x19\xa3\xfa\x5a\x8e\x6f\x54\x87\x59\x63\xcc\xd4\x75\x43\xef\x68\x41\x6e\xe4\x27\xd6\xb4\xba\x19\x67\x2f\x2e\xa3\x15\x17\x05\xbb\x27\x26\xd5\x86\x6c\xf4\x5f\x9e\x4f\x2e\xfc\xa8\xad\x49\x75\xe3\xfd\x2f\xd7\xa8\x22\xfa\xb3\xe3\x50\xbc\x29\x0a\xbd\xec\xc4\x64\xfc\xea\xd1\xd1\x91\xb2\x5f\xbc\xfc\xa7\xd4\x1d\xf3\xe2\x15\xfa\x44\xcc\xb7\xa5\xf2\x2c\x4f\x74\x26\xd0\xfd\x9a\xa9\x9b\x6e\xcb\xcd\x98\xc2\xab\x57\x6a\xb8\x36\x5c\xe5\xf6\xcd\x13\xf9\xb6\x54\xe0\xb4\xd8\xea\xd1\x50\x19\xd8\x1c\x75\x1e\xb5\x59\x7a\x66\x22\x27\xb5\x46\x58\xa7\x56\x79\x3b\xce\x95\x0f\x08\x46\xfd\x6a\xd0\xe1\x87\xb2\xa0\xd5\xed\x21\xa2\xc2\xb2\x29\xb9\x0b\x4c\x28\x5d\x75\x6b\xf7\x66\x43\x70\xe1\x71\xe9\xc0\xfd\x6e\xdb\x55\x9e\xcd\xa1\x05\xd8\x20\x79\xfd\x50\x6b\x3f\xbe\x3b\xee\xc6\xf9\xec\xb3\xd1\x17\x2f\x1e\xcb\x30\xb7\xe5\x48\x23\xd7\xd2\x19\xfc\x91\x72\x48\x5d\x9d\x83\xcb\xc5\xd9\xe2\x72\x00\xec\xa3\x7f\xdb\x34\x89\xa7\x05\x1e\xa6\x44\x1e\x4e\xef\x3f\x98\x50\x53\x83\xdd\x4e\x07\xcc\xd6\xb8\x3e\x6d\xc5\xfa\x9c\xf2\x8c\xdd\x11\xe0\x25\xc3\x16\x56\x32\x86\x69\x44\xed\xd4\x69\x1a\xe8\xec\xbf\x4f\xaf\x60\xe8\x04\x71\x07\xba\xed\xe1\x82\x70\xf0\x8d\x64\xbc\x7f\x86\xc2\x4e\x7b\xb7\x77\x1e\x3c\x7b\xe7\x81\x3a\x25\x7f\x54\x87\x01\xad\xa8\xa0\x58\xb0\x60\xc6\x57\xff\x36\xae\x01\xcf\xf5\x96\xbf\xb4\xaf\x2b\xd7\xae\x12\xa6\x3d\x8a\xa1\x64\x6b\xaf\x06\x2a\x55\xf7\x9d\x8c\x53\x57\x79\x6c\x10\x0c\x78\x88\x2a\x72\x6f\xbe\x49\xed\x33\x93\x94\xff\xcb\x84\x6e\xca\x7d\x89\x8b\xbf\xbe\xf9\x2f\xcf\xe9\xf0\x57\x97\x34\xeb\x8a\x51\xb8\xa2\x5d\xaa\x4a\xfa\x7c\x53\x02\x42\xf4\x37\x18\xff\x30\xa6\x2f\x3d\x9e\xbf\xb7\xb8\xd0\xf3\xf0\x7e\x1b\x3b\x4e\x7f\xfe\x40\xdd\xb0\x6b\x68\xe7\xfc\xbd\xbb\x63\xb7\x9c\x28\x99\xa5\x9f\x10\x0d\xae\xb8\x9c\x4c\x58\x51\x9c\x03\xe3\xfa\x39\x40\x2f\x45\x56\x47\x2a\xe2\xec\x20\x94\x5a\x77\xd2\xcc\xe9\xcf\x2e\x84\x7a\xea\xbb\x3b\xf2\x93\xa8\xbd\x05\x33\x6d\xf4\x3a\x78\xa5\x5e\x44\x3f\x53\x2e\x74\xbc\x9f\xa6\xa4\xc0\x72\x54\x90\xed\xe4\x1c\x4b\x1d\xe2\x4a\x95\x17\xac\xff\x81\xf3\xbc\x79\xa3\x65\x8f\x2d\xec\xd0\x28\x4d\x82\x39\xc8\x2b\xe7\x81\x7b\x29\x1e\x6a\x9a\xc9\x6b\xd0\x34\x97\x3a\xbb\x52\x14\x38\xfa\xe1\x7b\x9d\xa7\xfe\x97\x3f\x7f\xff\xed\xe4\xd2\x3d\x7e\x94\x73\x92\x0d\x21\xc9\xdf\x12\x4a\x8c\x8f\xf9\x5b\x66\x8b\xf1\xb4\x28\x3d\xa5\x40\x2c\x3a\x54\x25\x73\x0a\xf5\xfe\x91\x8b\xe3\x78\x2c\x4c\xcd\xd8\x47\x9c\x3d\x79\x75\x32\xbd\x58\xfa\xac\xcf\xe5\x11\x9a\x3d\x5c\x0d\xd8\x83\x66\x03\x93\xdd\x7f\x0e\xec\x61\xab\x5b\x19\xfd\x6d\x6c\x1b\x1f\x49\x69\x30\xfa\xbb\x3f\xd3\xa9\xb7\xb9\x0a\x62\x9e\x7f\x3f\x80\x97\xac\xd0\xfb\x49\x6c\xc9\xa4\x44\xdb\x6d\x8d\x3d\xd5\x6a\x34\x2d\x7e\xc7\xd6\x13\x7b\x45\x95\xf7\x4b\x3f\xe8\x5d\x4e\x02\x27\x8d\x2a\xe3\xf6\x48\x76\x8e\x89\x01\xa2\x27\x36\x42\xcb\x91\xea\xd1\xeb\xfb\x45\xf8\xe6\x94\x6c\x7e\xfe\x62\xb3\x17\x16\x58\x0d\x34\x1b\xe4\x60\xa1\x9e\xb5\x0e\x0b\x79\x16\x74\x44\x48\x23\xd5\x15\xc9\x89\x08\xe7\x56\x58\xbc\x7f\xbb\x98\xbe\x10\x78\xbb\xe9\x8b\xec\x9a\x59\xe6\xa2\x23\xd3\xef\x54\xde\xd3\x05\x5e\x68\xad\xe3\xac\xc0\x74\x34\xf1\x7d\x70\x26\xc7\x5e\xd3\xff\x5c\x68\x9b\x52\xcf\x1e\xef\x02\xfb\xa7\x2d\x4b\xa3\x14\x9d\x3b\x1a\x9b\x7b\x93\x2a\xf7\x35\x7b\x6d\xba\xc1\x1e\xd9\x65\xea\x7e\xd2\xbf\x64\xf2\xb3\xb3\x18\x9a\x7a\x13\x1e\xb5\x74\x66\x1f\x1f\x26\x30\x4d\x4c\x45\xe0\x68\x8e\x4c\x91\x45\xa2\xad\x99\x4d\xd0\xea\x55\x8e\xde\xb1\x0d\x62\xab\x79\x45\x3b\xe7\xa3\x9f\x12\xd3\x5e\x62\xd7\xc9\xed\xd4\xee\xf0\x71\x76\xbb\x26\xf9\xe0\xae\x99\x60\x55\x62\xb4\xf4\xd5\xc8\x4b\xfd\x93\xaa\x9f\x38\xd3\x51\xfb\xc5\xd4\xad\xd3\x11\xd0\x81\x72\x63\x48\x8f\x93\xa8\x8e\x33\x8e\xd6\xd7\x97\x61\xb7\x23\x3c\xc6\xb8\xb7\x3f\x07\xe6\x09\x5c\x9e\x1b\x15\xcb\xe6\x02\x70\xb3\x15\x50\xb7\x17\xbc\x75\x9f\x1c\x60\x20\x6c\x79\x3b\xb1\x97\xa7\x03\xb2\xc9\xc5\xbb\x67\x0d\x34\x53\xf6\xaa\xf7\xf8\xc0\xa1\x6c\xfe\x36\x4c\x96\x19\x57\xb1\xbf\xfc\x29\x58\x28\x8f\x99\x37\x84\x31\xb3\xb9\x3d\x1b\x93\x8b\x39\x76\x64\x40\x47\x63\x5a\xb9\x9a\x3a\x32\xf1\x23\x31\x2d\x00\x77\x73\x54\x92\x44\x0c\x34\x3f\xb3\xd3\xe4\x27\xbb\xbf\xbd\xa0\x82\x16\xf5\x06\xb2\x82\x5f\xcd\xc3\x26\x3d\x48\xae\x47\xc7\x14\xb0\x3b\x26\xe1\x58\x98\x2f\x82\xc0\xe8\x60\xd5\xa2\x67\x5d\x17\xfd\x5d\xb1\x46\x25\x59\x52\x9d\x77\xd9\x55\xd4\x33\x59\x97\x87\xa6\x36\x7b\x89\xeb\x89\x9a\x71\xf2\xa8\xfb\xd5\x82\x67\x1c\xeb\xd4\xe2\xd6\xef\x00\x15\xad\xfb\x95\xab\x27\xb7\x5e\xac\xa2\xf5\x74\x9d\xea\x69\xeb\x70\xac\x7e\xf5\x74\x9d\xea\x49\x9a\x49\x95\x41\xfb\xb5\x3f\x03\x56\x6c\x40\x4d\x50\x55\xf5\xf3\x51\xed\xf7\x66\xc3\x81\x16\xde\x56\xa7\xb6\x11\x78\x7a\xb3\xcb\xe9\x98\x67\x1f\xef\x0b\x3f\x47\x4d\xcf\xad\x49\x7b\xee\x80\x0a\x71\xc1\xaa\x1b\x6f\x29\x02\x96\x4b\xaf\x1c\xbe\x71\xfa\x3e\xd4\x01\xeb\x29\xac\x30\x64\x10\x5d\x75\x62\x50\x7e\x0e\x78\x57\xb8\xbe\x83\x59\x55\x69\x9e\x1d\x42\x5e\x90\x30\xbc\x7c\x65\x64\xda\x47\x7b\x0a\x03\xcb\x8c\xd2\xd4\xde\xd8\x73\x39\x2c\x18\x6c\x26\x80\xe2\x28\xb0\x66\x08\x40\x13\x40\x33\x08\xb1\x39\x0a\xa5\x09\x1c\x7a\x1c\x6c\x33\xb9\x14\x75\x12\xec\x26\xba\x5c\x01\x48\xee\x1e\x80\xb3\x3f\x0b\x09\x50\x9c\x00\x8a\x0e\xac\x33\x01\x94\x13\xd8\x51\x1f\xb6\x13\x0a\xcf\xd9\x35\xe0\x41\x4b\x86\xec\x04\x50\x44\x00\x58\xcf\xae\xc1\x79\x87\x6e\x51\xa8\xcf\xae\x6d\x05\xfa\xd9\xb5\x84\x6a\xae\xba\xc5\xab\x9a\x4f\xf4\x31\x5c\xdf\x1c\x48\x11\x79\x75\xd0\x21\x95\xce\xc1\x64\x37\x2a\xa2\x87\x6a\x9e\x83\xa9\x4e\xd6\x46\x1f\xab\x7e\x0e\xa6\xba\x33\x5d\x68\xd8\xe0\xba\x51\xbc\x0a\xaf\x6e\xf0\xda\xe8\x5d\x83\x56\x49\xef\x5a\xbc\x5e\x7a\xd7\x92\xc0\x46\xc1\x33\x67\x40\x49\x41\xb0\xa3\x60\xa2\xef\x46\xf0\x8e\xc7\x01\x48\xc1\x24\x27\x81\x4a\x81\x9c\x57\xb7\x44\xa6\x01\xab\xb3\xac\x5b\x18\xa8\xd4\x7f\x2e\x78\x1b\x19\xf6\x35\x0a\xd6\xe0\x3f\x3c\x1d\x16\xd2\xb5\x58\xbc\x82\x6e\xcf\x37\x6a\x41\xb7\xd4\xd8\x05\x00\xc9\x58\x74\x83\x6e\x09\x3b\x28\x06\x8d\xda\xb5\x64\x90\x54\xc0\x70\x1c\x8c\x6a\x1c\x2e\x75\x38\xba\x90\x5d\xa6\xff\x64\x74\x77\x46\xc0\xbc\xbc\x07\xe3\xb7\x20\x8f\x96\xbd\x07\x45\x06\xf4\x0c\x6e\x49\x9b\x50\x4d\x1b\x78\x4a\x80\xc5\x0c\x40\x39\x25\xf7\xef\x71\xe0\x9d\xba\xb6\x0b\xa0\xa7\xae\xa5\x2a\xa2\x30\xf0\xa7\xae\xa5\xc1\x40\x81\xc5\x95\x83\x8b\x82\x02\x42\xc1\x55\x9d\x04\xe0\x28\xaf\x3f\x89\xd3\x88\x12\xc1\xa4\xba\x96\x0a\x2b\x95\x40\x5a\xdd\xc2\x77\x04\x30\xd5\xb5\xe4\x8b\x04\x4a\x03\x9d\xea\x1a\x14\x7e\x2a\x6d\x4a\x06\x50\x55\x69\x40\x54\x5d\x9b\x31\x0d\x29\xea\x11\x4a\x80\xa9\x1a\x76\x0a\xa8\x03\xa1\xfd\x25\x6f\x7f\xc9\xfb\x9a\x2e\x79\x31\x78\x2c\xb8\x34\xb2\x30\x5a\x31\xa0\xac\xa4\xeb\xd8\x38\xa0\x16\x1a\x42\x66\xc1\x6f\x8d\x10\x68\xad\x54\x41\xbc\x1b\x90\xad\xae\x25\xb3\xc9\x34\xe0\xad\xae\xa5\x43\x70\xc1\x4f\xa8\xd4\x4b\xe0\x60\x5c\x60\xba\x7d\xd0\xae\x38\x2c\x57\x92\xce\x93\x0e\xdf\xd5\xb5\x39\xda\x4f\x22\xa4\x57\xd7\xe0\xe0\x5e\x49\x72\xde\x02\x81\xcd\x85\xf9\xea\xda\x2c\x85\x07\x0c\xfd\xe5\xbd\x02\x04\x01\x4b\x9a\x86\x3e\x60\xd8\x04\x1c\x58\x12\x45\x08\x74\x58\xd7\x66\x4d\x1e\x1c\x4e\xac\x6b\xbb\x04\x16\xdb\xaa\xfb\xe9\x5a\x1e\x08\x76\x6c\xd8\x27\xb0\x92\x97\x66\x94\xfb\x92\xc6\x36\x20\x51\x1d\xba\xb1\xb5\x79\xc4\x14\xea\xfe\x57\xf4\x10\x9b\x94\x2f\xe3\x3e\x85\x59\x15\x12\xdc\xc3\x30\xe4\xe3\xbd\x7b\x18\xec\x1e\xd6\xeb\xb5\xf7\x0d\xf7\xda\xde\x37\xbc\xf7\x0d\xef\xcd\x06\x7b\xb3\x81\x6d\x7b\xdf\x30\x94\xe4\xde\x37\x0c\x78\x78\xef\x1b\xfe\x4a\x7d\xc3\x46\xf9\xd5\x8e\x61\xe0\x46\xfb\xe2\x7e\x61\x03\xae\x72\x9a\x65\xac\xad\xc4\x35\xbb\x25\x11\x27\x13\xe8\x02\xb4\x41\x33\x32\xb0\xc7\xb9\x2b\xe1\x36\xa7\xf2\x5e\x92\xb8\xb6\xa7\xe6\x35\x7b\x69\x90\xb2\xa2\xca\x49\xee\xe8\x21\x06\x51\xc5\xe5\xab\x42\x8e\xfd\x18\x9d\xa2\x86\x64\xb4\xa6\x44\x23\x0c\x63\xfd\xbb\x5e\x7c\x5b\x3b\x1e\x40\x91\x0a\x4e\x8a\x95\xa9\xc5\x5d\x79\xd8\x2b\x9e\xb6\x6f\x18\xb9\xed\x2a\x44\x0f\x5f\x75\x5d\xd5\x97\x11\x66\x8b\x44\x5b\x30\x9a\x86\xfc\xd3\x6a\x01\x7a\x44\x90\xc3\xef\xf5\xa2\xe7\x16\x54\x53\xda\x75\xdd\x7c\x1e\xd7\xd4\x64\x4f\xef\xf2\x74\x93\xcf\x35\x6d\xd4\xf6\x5c\x90\x8c\x55\xd3\xb0\x93\x5d\xeb\x6d\x85\x8b\xe1\xfb\x76\x4f\x18\x0b\x2a\xc9\x51\xde\x36\x50\x97\x3c\x5b\x49\x55\x92\xe6\x54\x3c\x38\x47\xac\xc1\x36\xc2\xfa\xac\xb8\x0d\xc3\x81\xb6\x75\xbd\x91\x70\x5d\x37\x0c\x67\x6b\xc2\xbd\x11\x6b\x1d\xd3\x64\x90\xc5\xaa\xcf\x76\xcd\x60\x80\xa9\xeb\x9d\xa2\x2a\xb5\x97\xe2\x01\x35\x4c\xd8\x50\x82\x41\xa7\xa1\xdd\xd4\x1e\x04\xdb\x21\xf5\x01\xad\x2c\x88\xe6\x41\x45\x24\x30\xef\x23\xe0\xb1\x53\x6f\xfb\xaa\xfa\x20\x45\x6e\xeb\x83\xfc\xf0\x2d\xaa\x49\x93\x99\x53\x07\x8b\xd6\x51\x65\x2d\x04\x43\x85\xd4\xd9\x24\x2b\x9f\x26\xff\xe7\xef\xd0\x9a\xb5\x0d\x3f\xb6\x19\x5d\xa0\x3e\xa3\xd7\xea\x2d\x7d\xbb\xb5\x57\x0c\x81\x0a\x82\xb9\x40\xaf\xbf\x45\x25\xad\x5a\x29\x9a\xa3\xc4\x3c\xe5\xf7\xfb\xef\x80\x87\x06\xa6\xf6\xc2\x14\xde\x4d\x27\xba\x39\x1b\xb5\xae\xa9\x6b\xf4\x5e\x73\xe2\xc3\xd9\x82\xde\xb7\x55\xad\xec\x81\x77\xcc\x88\x05\x7f\x25\x2a\xc1\x76\xc8\x29\x60\x3a\x24\x40\x2b\x04\x49\x5d\xc0\x43\x61\x55\x31\x9c\x02\x67\x0c\xf1\x23\x7f\x0b\x7e\xf8\xb7\x96\x2d\x1f\x44\x3c\xd7\xf5\xef\xfa\xb9\x7e\x92\xab\xfd\x71\xbc\xa8\xcc\xe8\x20\x7b\x85\xde\xbb\x9a\x32\x23\xcf\xc6\x24\xfe\x8d\xbc\x87\x82\xf2\xa0\xd4\x8d\x55\x25\xaf\xe2\xda\x19\x1a\xb3\x8c\x68\x80\xc7\x73\x0f\x72\x9e\x69\xaa\xc1\xe5\xd9\x55\x46\x68\xb0\x76\x8b\x9d\x59\x9b\x0f\x35\x7d\x6b\xdc\x75\xf9\xf0\xb8\xae\xd9\x90\x1b\xca\x05\x18\x77\x41\x3f\xdc\xdf\x38\x9c\x56\x37\xba\xc6\x76\xd9\x16\x82\xd6\x85\x1b\xf1\xe4\x38\x1d\x21\x23\x87\x7c\x63\x27\xf6\x6c\x70\x58\xa7\x4d\xeb\x2a\x52\x35\xa6\xd3\x6c\xef\xa5\xfb\x36\xa9\x84\x2e\xf1\xdc\x48\x31\x57\xe3\x06\xbb\xe9\x54\xf8\xae\xfc\x95\xb1\xa7\x62\xe5\x04\x9e\x66\xf9\xca\x23\x2c\xa9\xe1\xc2\x4d\x93\x72\x14\x1a\xf7\xe1\xdc\x8d\x25\x48\x85\xab\x49\x1f\x45\xdf\xfc\xa0\x1e\x45\xec\xde\xc5\xfb\x69\xb0\x8d\xc1\x8e\x32\x1a\xe3\x8f\x38\xbb\x25\xd5\xf4\x0d\x44\x61\x20\xa9\x89\xc8\x1f\x2a\x5c\xea\x7a\x5b\x3e\xac\xf3\x80\x2e\x3f\x34\x76\xb3\x50\x01\x4d\x22\x6c\x12\x78\x10\x58\x35\x3a\x2b\x2d\x07\x96\xfa\xf9\xc8\x35\xb8\x73\xe8\xfc\x73\xed\xd1\x6b\xe8\x5d\x46\x62\x2a\x8e\xfc\xf0\xdc\x4e\xdf\x4d\xd6\x16\xd8\xe8\xb6\xa9\x2b\x40\xbd\xdd\xad\xcc\x73\xce\xf5\xa2\xaa\x7a\xe1\x42\x1e\xf9\x07\x1b\x49\x32\xd9\xe9\xc1\x06\x58\x3e\x6c\x83\xbf\x12\x83\x1f\xd1\x5b\x7f\xf4\x8f\x93\x3a\x69\x50\x4e\x35\xcb\x78\x8e\xf6\xc1\x87\x1f\xcf\xfb\x7c\xe6\x03\xce\x19\x47\x3f\x16\x2c\xbb\x45\xe7\x44\xa9\xaf\x4f\x0d\x4a\xd2\x2c\xf3\xed\x4a\x51\xef\x4b\x29\x4f\xd2\x7c\x2e\xa5\x94\x9b\x65\xae\xcd\x5e\xd3\x54\x9f\x6d\x21\xe5\x12\xdf\x40\x6b\xea\xcb\x1b\xb0\x3a\x50\xea\x25\x8b\x7b\x35\xf3\x28\x7c\xb3\x66\xf7\x47\x82\x1d\xb5\x9c\x1c\xd1\xc9\x20\x8a\x68\xff\x6f\xc9\x83\xfc\x1b\x6c\x04\x7f\xd3\x0f\xf7\xae\x2c\x82\x29\x03\xbb\xfa\x5d\x4a\xea\x0f\x3f\x9e\x4b\x71\xe1\x34\xa6\xc9\xd9\xa7\x1c\x9d\x10\x91\x9d\x64\xa4\x5e\x9f\x98\x6e\x7c\xf1\xe9\x28\x59\x45\x05\x6b\x80\xd0\x45\xa7\x28\x63\x45\x61\xb2\xf8\xd9\x0a\x9d\x91\x7a\xed\x48\x3c\xf6\x58\x1e\xbf\x18\x6f\xcd\x18\xac\x88\xa9\xb7\xb5\xe5\x3b\x66\x67\x7b\x17\x83\x66\x99\xc6\x3c\x9e\x72\xc9\xff\x40\x18\x8f\x3b\x9f\x96\xdd\xd5\x2e\x3e\x58\xd8\xc7\xd5\x45\xd0\xf3\xaa\xf4\x4b\x15\x1b\xb2\x93\x33\xd3\x63\x21\x97\x2b\xad\x2a\xe7\x24\x47\xec\x8e\x34\x0d\xcd\x09\x47\x8e\x57\xf8\x37\x4f\x5a\xec\x04\xcf\x69\xc6\x4c\xee\xab\x2c\x3f\x79\x95\x65\xf0\xc5\xc5\x63\x4c\xf2\x9d\x4d\xc6\x84\xf3\x92\x56\xcf\x94\x35\x45\xea\x25\x4b\x1d\x62\xf4\x2f\x56\x00\xa5\x5e\x11\x78\x86\x0b\x72\x39\xaa\x84\xf5\xbd\x78\xfa\xb9\xfe\x4d\xc1\xfe\xe8\x55\x2a\x9c\x51\xb9\xed\x6f\x6e\x43\xa3\x8a\xe5\xe3\xf6\xdc\x7f\xbd\xda\x85\xde\x7e\xd5\xa5\xdb\xe6\x8a\xba\x1b\x2c\xc8\x3d\x06\xc2\xb4\xda\x21\x0c\x2a\xf9\xda\x85\x3e\xbd\xba\x44\x3f\x69\x7a\xf3\x8b\x25\x36\x4c\x68\xed\xe9\x9c\x95\x98\x02\x41\x34\xd6\x7d\xe8\x69\xdb\xa1\x2b\x47\x0c\x69\x6a\x16\xe1\x63\x72\x7e\x75\x5d\xa2\x56\xde\x7a\xcc\x8d\x64\x5f\xcb\x6e\xa4\xa5\x29\x02\x9d\x1e\xe0\x99\x59\x6c\x98\x67\x87\x6d\x60\x56\x2d\x68\x22\xea\xdc\xaa\x88\x93\x8a\x53\xe5\x19\xf1\x9c\xe7\x06\xc4\x4d\x63\xfe\xe9\x38\x4d\xad\x2c\x4c\x1f\xa9\x9f\xd9\x0d\xad\xec\xa9\x64\xc6\x61\xb7\xc2\xd3\xda\xc3\x5e\xba\x3f\xb9\x74\xe7\xbc\xb8\xa8\xf0\xb2\x98\x76\x2c\xf5\x99\x78\x81\x95\x17\x94\xa8\x77\x4e\x72\xca\xe5\xff\xa3\xc5\xe2\x67\x65\x7c\x6e\x2b\xab\x79\x2a\x33\xac\x61\x59\xd3\x3b\x24\xf7\x4b\x10\xcf\x3f\x33\x9a\x9f\x80\x6b\x0c\x5e\x56\xb9\xec\x26\xe1\xbd\xd8\x18\x43\x45\x97\x4d\x74\x81\xc4\x2a\xba\x20\xe4\xcf\xb8\x5e\xd3\xec\xf6\xca\xb3\x31\xb3\x46\xfe\x56\x79\x3f\xf5\x84\xca\xf0\x6f\x73\x99\xa0\xe9\xee\x15\xf4\xda\x78\xed\x71\xef\x85\x19\xaa\x7c\x19\x61\xce\x59\x46\x3b\x27\x82\x32\x36\x38\xf6\x3e\xbd\x74\x8a\xed\xcf\xef\xbe\x92\xd0\xb3\x64\x90\x5d\x28\x8b\x32\xca\x7d\xd9\x12\x88\x61\x36\xa3\x9f\xdd\x65\xbd\x25\xc0\x35\xd0\xaf\x7b\x55\xcf\xad\x7e\xd6\xb7\x7f\xbb\x20\xf7\x08\x83\xb6\x7a\x93\x45\x32\xdc\x58\x32\x57\xfd\xdc\xb8\x56\x1f\xc5\x52\x6e\x34\x9a\xd1\xbf\x39\xb9\x35\xfe\xd7\x29\x9d\x2e\xac\x23\x4f\x26\xbb\x8c\xdd\x86\x07\x4e\x3b\xfd\x9b\x31\x8d\xab\x10\xa1\x9a\xd5\x6d\xa1\x63\x37\x26\x1c\x3e\x9b\x05\xe4\x67\x59\x58\xf5\xb7\x67\x81\xfb\x27\x56\x4b\x0d\x87\x94\x6f\x14\x4e\x8d\xf1\x61\x5f\x15\x0f\x14\x4e\xf5\x34\xaa\x6f\xbf\xff\xee\xbb\x40\x85\xf9\xe9\x12\xab\xf1\x52\xaa\x93\x54\x21\xa1\xe4\x53\x21\xe2\xd3\xba\xdd\x44\xe8\x78\x34\x24\x7c\x5a\x36\xc4\x42\xc5\x77\x53\x63\x35\x68\x99\x9c\x91\x63\xe5\x32\xa8\x02\x53\x05\xc9\xac\x1a\xc9\x3c\x9a\xa4\x18\xce\xa7\x0a\x64\x4b\x4d\x53\x1c\xc9\xa2\x02\xe6\x48\x05\x3d\x18\x9d\x1b\x3f\x29\x33\x6a\xda\x29\xb4\xda\x75\x3e\x54\x62\x16\x54\x97\xe3\x34\x49\x11\x9e\xfb\xb4\x91\xd9\x34\x2d\xd0\x60\x19\x4f\x29\x35\x7e\xe3\xd9\x4d\x80\xcc\x25\x58\xe4\x6e\x34\x4b\x69\xab\xdc\x24\x60\x48\x58\x3c\x0f\x29\x45\x54\x74\x59\x45\x41\x92\x08\x92\x73\xb4\x99\x4b\x14\xa1\x19\xc8\x34\x9a\xce\x20\x8a\xd0\x4c\x10\x0a\x1e\xf3\x8f\x10\x4d\x13\x0d\x6a\x8e\x23\x14\xe3\xb9\x44\xf0\x0c\x22\x68\x00\x65\x3c\x78\x32\x29\x47\xc8\xe6\xfe\x44\x46\x0a\xc9\x0c\x1a\x66\xfc\x00\xf6\xcd\x78\x3e\xd0\x74\x9e\x4f\x84\x64\x3c\x0b\x08\x74\x3c\xe3\xd1\x9a\xe1\x3c\x9f\x48\x1c\xe7\xd6\xe1\x99\xf1\xac\x92\xf4\x5c\x12\x27\x23\x42\x6a\x66\x20\x85\x04\x6a\x1c\x83\xa3\x50\xf9\xd6\x1f\x73\x21\xb0\x2a\xa8\x0e\x92\xe9\x10\xa5\x02\x72\xbf\x9d\x70\x10\xee\xe6\x4a\x80\xe2\x5b\x2a\x7c\x49\xd2\x5f\x62\x71\x90\x45\x73\xeb\xff\x65\x31\x70\x26\xb8\x9f\x07\x3e\x04\xc9\xdf\x46\x3b\xbc\xf7\x21\x4c\xb4\xa7\xc6\x3f\xda\x1b\xc2\x37\x0d\xe1\xbc\x57\x3c\xc6\x9a\x01\xb4\x9e\xb3\x62\x0d\x62\x4b\x53\x5e\x32\xa8\x41\x77\x87\xe2\xf4\xea\x52\xde\xa3\x55\x36\x10\x2e\xf8\xf1\x58\xa6\x74\x1e\x89\xbe\x51\x9a\x52\x77\xdf\xc0\x42\x90\xb2\x16\xd3\x0b\xbf\xb7\x83\x3f\xb9\x1d\x3c\xd1\xb8\xf7\xab\x7b\xdc\x41\x72\xb6\x25\xae\x8e\xe4\x89\x52\x16\xf1\x9e\xd3\xcc\x6e\xa6\xc8\x05\xf8\xd8\x82\x63\x6b\xb9\xa4\x4c\x24\x2a\x38\x5e\x43\x15\x75\xb7\x98\x0e\x2b\x72\x7b\x5b\xa6\xa2\x93\x38\x66\x2d\x32\x07\x27\x2d\x63\xc3\x18\xce\xc9\xe1\x9a\x81\xb8\x79\xb1\x87\xca\x93\xc7\xbd\xfb\xb0\x58\x13\x2d\xb6\xaf\x58\x7e\x30\xbd\xb9\xba\xb7\xfb\x37\x07\x7d\x75\xc0\x45\xc1\xee\x75\x5f\x7d\xa9\x25\xd7\x49\xf6\x3d\xc8\x11\x14\xef\x2e\xa9\xbc\x44\x1b\x9b\xab\xdf\x7d\xed\xfb\x94\x37\x13\xd2\x68\xf5\xbb\x31\x2e\xb3\x45\x20\xf8\xc6\xdb\x42\xf2\xa2\x5a\xe9\x10\x67\xf9\x6f\x1b\x7d\xa3\x2b\x19\x1b\xd7\xc1\x92\xac\xf1\x1d\x65\x6d\x20\xfb\x70\xa1\x39\xdd\x0b\xf3\x8a\x12\x33\x0f\xac\x75\xa6\x36\x0d\x95\xe9\x66\x89\x6f\xae\xc3\x24\xe9\xf7\xdd\x4b\xea\xf2\x94\x33\x6b\x9b\x38\x22\x9f\x29\x17\x9b\x73\x12\x2b\xb0\x63\x6b\x09\x3e\x82\x4a\x74\xc7\x6b\x29\xc3\x80\xc0\x78\xbf\xfa\x4f\xf7\x55\xa3\xbb\x85\xfa\xd3\x1f\x05\x16\x6f\xaf\x1c\xf9\xcd\x39\xc8\x0a\x9a\x3d\x00\xc1\xe1\x3a\xc7\x98\x7c\x09\xfd\x88\x39\xc9\xd1\x3b\x5c\xe1\x1b\x7d\xbf\x7c\xb9\xb8\xfa\xf1\xdd\x2b\xb9\x68\xc1\x2a\xdb\x97\xe7\xa3\x5e\xb5\x85\xdf\xa3\xf7\xf3\xf3\x19\x06\x63\x03\x0b\xad\x1d\x8d\x6e\x8b\x4c\x0c\x2b\x78\x42\xd5\x90\x37\x93\x36\x87\xd0\x9d\x83\x63\x79\x57\xe6\x8f\x02\xca\xd9\x75\x35\x8d\x01\x4d\xfe\x29\xc7\x02\x2f\x31\x27\x8b\x51\xbf\x56\x5f\x59\x37\x8f\x82\x02\x3a\x43\x3c\x24\xe2\x51\xda\xc6\x9b\xe4\xbc\x46\xa3\x93\x3f\xcb\x93\xe4\x7b\x8c\x46\xa9\x26\x7b\x91\xfa\x66\xc3\x71\x0f\x4a\x92\x07\x69\xe8\x29\x9a\xe0\xda\x29\x26\xc2\x49\x23\x60\xcc\xf4\x17\x36\xf8\x4d\x1a\xcf\xb7\xf1\x0a\x05\x8a\xf1\xcf\xf0\x08\x75\x9e\x9f\x71\x99\x9a\xe6\x0d\x82\xd7\xce\x9b\x53\x2d\xcf\xf3\xf8\x8c\xd2\x04\xd5\xc7\x9b\xf4\xf6\x8c\xef\xcc\x90\x07\x08\xe0\xe9\x99\x70\x18\x8e\x79\x7f\xb6\xad\x70\x37\xa7\xa6\x5d\xc0\xbb\xb3\x5b\xcf\x4e\xfc\x3e\x1d\xf4\xe8\xcc\xf6\xe6\x00\x2e\xa6\x61\x2f\xce\x3c\x0f\x8e\x5a\xc5\xc0\x7d\x39\xd5\x7b\x03\xb9\xd2\xa1\x04\xcf\x4d\x9f\xdd\x06\x48\xce\x43\x45\x9d\x3c\xa1\xba\x6d\x5b\xdf\x0d\xe6\x8f\x81\xf8\x62\xc2\x7e\x98\x59\x3e\x98\x48\x4d\xa7\x54\xff\x8b\x13\xb4\x01\x9a\x09\xbe\x97\x88\x77\x05\x60\xef\x0c\x79\x55\xa6\x3d\x2a\x01\x6f\x4a\xc4\x30\x14\xf2\xa2\x84\x3c\x28\x5b\x78\x4f\x02\x5e\x92\xb0\xd5\x34\xec\x1d\xd9\xc2\x33\xa2\x3c\x20\xe3\x4a\xde\x63\x79\x45\x02\x5b\x61\x72\xc5\xd6\xb8\x18\x01\xc7\x9e\x88\xfc\x74\x29\xc2\x56\x29\x97\x42\x51\x53\x50\xac\x10\x17\x05\x62\xab\x15\x5f\x33\xb6\xb9\x2f\x3c\xfb\x51\x57\x1a\x9f\x7c\x96\x83\x44\x57\xbf\x9e\x69\xcb\x5d\x2e\xef\xff\x9b\xf7\xd7\xe9\x35\xa4\x15\x0d\x5f\x0a\x2e\x2b\x2d\xbb\x25\x57\x95\xcb\x22\x5f\xa0\xb8\xa0\xbf\x77\xa3\x48\xb8\x19\xd4\x8c\x8b\x9b\x86\xf0\x4f\xa7\x3f\x8f\xed\x97\x98\xcc\xc4\xbf\xb7\xcd\xa4\xe4\x82\x18\xb0\x41\x60\x04\x20\x67\x6b\x89\x3f\x9f\xb1\xaa\x32\x70\xd1\x21\x72\xd0\x82\x44\x30\x4f\x7a\xdd\x90\x15\xfd\xbc\x65\xf7\xa3\x96\xe9\xe5\x9f\xb7\x99\xe5\x65\x9b\xdd\x86\x0b\x86\xef\xa7\x18\x2d\x71\x76\xdb\xd6\x21\x3b\x4a\x3c\xdb\x27\x9b\x9c\x95\xfd\x32\xed\x68\x99\x0a\x96\x4d\xc7\x2b\x40\x66\x19\xdf\xf3\x8b\x02\x73\x41\x33\x55\x65\x63\x21\xd8\x34\x0b\x43\x9b\x09\xe8\x9f\x16\x1b\x6f\xf7\xec\xc5\x15\x3a\xfd\xb4\x40\xe7\x94\x4f\x99\xa3\x74\xeb\x50\x19\x6c\x38\xb7\x75\xb8\xab\x6b\x8d\xb1\x1c\x4b\x21\x1c\xb1\x1d\x7b\x03\xab\x8c\x93\xc4\x62\x5d\x98\xcb\x6b\xcd\xf2\xad\x43\x17\xf0\x3d\x27\x7a\xd8\x4b\x39\x6c\xf9\xe7\xc9\x0a\x0e\xd0\x85\x40\x51\xcb\xf6\xf8\x12\xc0\x4a\x86\x44\x48\x22\x5b\x52\x24\xa5\x74\x48\x94\xe6\xa0\xb4\x08\xa8\x84\x48\x94\xe8\x78\x89\x91\xa8\x09\x3d\xde\xd9\xc9\x52\x23\x3b\xdb\x22\xd1\x3e\x68\x37\x70\x62\xad\x91\x28\x55\xbf\x16\x09\xa4\xe6\x88\x6d\xe0\x3a\x7c\x35\x6e\x04\x15\x00\xa0\xc3\xcd\xdc\x68\xf7\xaa\x1d\xdc\x58\xa9\x9b\xe8\x08\xbb\x7d\x7b\xb9\x42\xac\xa4\x42\xd8\x2b\x7a\xde\x65\x19\xd9\x87\xe4\x4e\x04\xd6\xd5\xd4\xe9\xda\x5d\x79\x9b\xb7\xae\x12\x18\x3a\xc9\xc9\xdd\x09\xcf\xf1\xeb\x43\xd5\x4d\xbd\x71\xe2\xe5\x60\x45\x6f\xcc\x98\xa3\x17\xaf\x5f\x1c\xa3\x05\x2d\x69\x81\x9b\xe2\xa1\x67\xc1\x72\xcf\x45\xa9\xae\x58\xe3\x3a\xa4\xb2\x74\xbf\x7d\x81\x5e\xb2\x46\xf5\x4c\x5e\xe8\x0b\x82\xef\x88\xcd\x62\x92\x9c\x28\xde\x51\x52\xd6\xe2\xe1\x55\xb4\xa6\x7b\x4a\x2d\x77\x78\x31\xcb\x58\x10\x8f\x6d\x83\x9c\x17\x73\xa7\x7c\x21\x9a\x96\xbc\x50\x31\x3d\x2a\x28\x47\x4a\x02\x4e\x44\x2f\x38\x27\x3a\x7e\x3b\x51\xc3\xe8\x1d\xe5\x4d\x56\x1f\xd8\xd8\x6c\x51\x9a\xde\x66\x7c\xa1\xc2\x8d\x5e\x3c\xb9\x24\x42\x49\xd5\xa8\xf5\x57\xa6\x1d\x85\xdd\xc0\xfc\x75\xf8\xa8\x43\x33\x2e\xcf\xad\x2c\xf2\x72\xf2\x73\xca\x6f\xe1\x00\x47\x54\xab\x0f\x2f\x4f\x4b\xfc\x3b\xab\xd0\xc5\x8f\x36\x20\xef\xd5\x17\x9c\xb8\x28\x43\x84\x94\x25\x3d\x72\x73\x1b\x55\x10\x23\x65\x49\xd5\xa5\x53\x2a\x58\x60\xad\xed\xd4\xbe\x31\xd4\xd4\xe4\xef\xda\xa3\xa1\xfe\x1a\x2f\xfe\xea\x57\x0c\x95\xa7\x6c\x49\xad\xc7\xdf\xd7\xb6\x76\xa0\x18\x65\x4a\x62\xdd\x84\x92\xc0\x46\x87\x7a\xf0\xdf\xb2\x6b\x67\xfa\x6d\x6d\x58\x46\xef\x59\x45\x0e\x15\x23\x40\x92\x13\xe8\x7f\x46\xb7\xe2\xa7\x86\x0a\x12\x65\x87\x60\x91\x29\xcf\x01\x04\x19\x6f\xc3\xe2\xe9\x5b\xa9\x54\xfd\x75\x75\xa2\x8c\xf0\x5c\x16\x6c\x69\x1d\xe1\xbb\xec\xe9\xc7\x0f\x11\xf8\xf1\x91\x8e\x7e\xfc\x70\xf9\x74\x9d\x9c\xa1\x38\xef\x28\x34\xc4\xef\xea\x9c\x10\x91\xb8\xbe\x9b\xa6\xe7\x22\x1a\xaf\x72\x0f\x08\x25\xf1\x87\x05\x5a\x81\x5b\x5a\x45\xb1\x3c\xfa\x47\xf3\xe2\x73\xad\xfd\x8a\x26\x14\x74\xb1\xc6\x0a\xa1\xcf\x55\x75\x95\x1b\x25\x2e\x53\x29\xbf\xe5\x52\xc2\xb8\x1c\x68\x5b\x94\x1d\x9d\x13\x6d\xd9\xcc\xdf\xd8\x7a\xb5\x60\x8a\xe3\x04\x75\x5c\x48\xfe\x46\xf3\x5c\x54\xea\xff\x54\x3b\x1c\x46\xf5\xa5\x0a\x5d\xa4\x95\x7b\x15\xdf\x61\x5a\xe0\x25\x2d\xa8\x50\xf1\xc2\xaf\x8e\x5d\xd1\x7d\x88\xd2\xab\x0a\x5c\x8e\x16\xa5\xec\x3d\x08\xaf\xa7\x3d\x43\xed\x82\xc6\x50\x47\xc7\x03\x29\x68\x06\x8d\xa5\xee\x0f\x3d\xae\xea\xc0\x44\xb6\x65\xda\xd1\x87\x3e\x7e\xb8\xdc\x89\x58\x97\x3c\x2a\x4d\xac\xcb\x37\x46\xc5\xba\xfa\xc3\x42\x97\x5e\x0e\x4e\xda\x66\x2d\xf0\x47\x95\xec\xff\xba\x7b\x0e\x92\xbb\x33\x3a\x7a\xe1\x55\x51\xf0\x73\xfa\x8d\xf7\x80\xeb\x15\x8f\x8e\xdd\x86\xbe\x19\xc0\x17\xad\x59\xc8\xb5\xfe\x5b\x14\x03\x07\xcc\x51\x14\x83\x4a\x1e\xa0\x92\x04\x28\x72\xd2\x12\xfa\x01\x3b\xdd\xdd\x6a\x84\x1f\xb3\x43\xda\xf6\x84\x67\xa4\x5e\xaf\x82\xa7\xa3\x37\x29\x67\xa4\x5e\xbf\x1d\xe4\x29\xa9\x7a\x9f\x6f\x17\xc0\x9a\xc8\xae\x77\x1b\xb5\x91\x83\x75\xfc\x6d\x83\x9e\xe8\x58\x09\xd3\xd1\xd1\x79\x08\xbd\xef\xcc\xfb\xba\x6e\x76\xaf\xc0\x69\x74\x4f\xf7\x0a\xa0\xa6\xd4\x5d\xd4\x8b\x91\x5a\x40\xcf\x36\x20\xf6\x64\x02\x04\x0e\x14\x74\x0c\x02\xfa\x31\x15\x31\xa3\x6a\xc3\x63\xde\x01\x7d\x90\x1c\x35\x8c\x89\x43\xd4\x60\x10\xf6\xa0\xc2\x53\x51\x16\xc9\xb6\x28\xf4\xdc\x8b\x86\x90\x43\xdf\xd0\x71\xf2\x65\xb5\x13\x6f\xb8\x11\xa1\x11\x1d\x6d\x52\xe5\xd5\x54\xa1\x91\x54\x24\x74\xbb\xcd\x9a\x2a\x9f\x62\x4a\x08\x0a\xcc\xf9\xc2\x51\x18\xa9\xd9\x1c\x9d\x12\x57\xd3\xf9\x23\x27\x4d\x7f\x57\xb9\xc2\xcd\x2d\x27\xcd\xb1\x91\x82\xef\x20\x36\xf6\xa7\x9b\x62\x88\x7c\x8c\x65\xf4\xd9\x16\x9e\x60\x53\xf5\xd6\x85\x99\xa2\x48\x71\x11\xdb\x46\x23\xa9\xc7\x67\x5c\xd9\x83\x9f\xd1\x2e\x4e\x41\xd1\x85\xe1\x32\x3e\xe7\xfc\x40\xdb\x1e\x01\x9b\x11\x8a\xce\x38\x43\x7c\x01\x00\x36\x43\x95\x74\x6d\x0b\xc8\xaf\xc6\x21\xbb\xf5\x6b\xec\xc6\x07\x9e\x0f\x6a\xf0\x3e\x35\xff\xdd\x91\xd2\x1a\xa8\xb5\xdb\xff\x5e\x4c\x19\xa5\x55\x1e\x5e\x89\xfe\x2a\x9c\xa9\xe7\xfb\xda\xa8\xa6\x01\xca\x0c\xb3\x0d\x92\x21\x06\xaa\x44\x5e\x3e\xf0\xdf\x8a\x23\xdd\x83\xa3\x3a\x82\xd8\x61\xdb\x53\xba\xe5\x9f\xd6\xbc\xf8\x07\x70\xa6\xef\x64\x05\xd1\x5e\x81\x74\xed\xf1\xe7\x18\xae\x33\x6e\xa1\xd1\x28\x28\x41\xae\xe3\x7e\x8c\x42\xa2\x79\x97\xb5\x6f\x40\xf0\xa5\x6b\xdc\xe0\x92\x08\xd2\x74\x91\xa1\x99\x0e\x02\x93\xff\xfc\xa5\x26\xd5\x42\xe0\xec\x36\xea\xcf\xd9\x6b\x19\x5f\x85\x96\x31\xcf\x8f\x6d\x91\xd6\xf2\x2e\xba\xd8\xa0\xfe\xc2\xb2\x3f\x74\xa3\x95\x11\x8c\xcf\x82\x0b\x3e\xad\x6f\x5a\x17\xa1\x7d\x87\x27\x61\x1e\xd1\x86\x95\xcb\xbe\x31\x50\x2d\xdc\xcf\x5e\xf5\xd2\xb0\x61\xc4\xaf\x6c\x1a\x5f\x2b\xe8\x41\x07\x54\x23\x1d\x1d\x17\x2c\x8f\x34\xba\x99\x36\xf2\x4c\x21\x39\xa5\x51\xaa\xc1\x9c\xd3\xb1\xfc\xd2\x38\x2f\x84\xe7\x9f\xfa\xc9\x4f\x51\xba\x3b\xca\x45\xed\x4d\xe9\x6e\xf2\x52\x7b\x24\x1f\x25\x28\x0a\x64\x64\x9c\x91\xc7\x0a\x30\xf3\xf9\x79\xae\x23\x39\xad\xdd\xa1\x8d\x55\xb8\xb0\x2d\x94\xf6\x3a\x9a\xe2\x0a\xea\x64\x42\x0a\x2c\xc8\x3c\x32\x33\x1d\x36\x6e\x76\x01\x15\x48\xf5\x53\x63\xa3\x24\x61\x85\x52\xdd\x42\xc1\xc6\xbf\xdb\x9a\xa9\xb6\xcd\xa8\x9d\x0a\xd0\xf7\xc0\x19\xb6\x7e\x03\xda\xed\x93\x33\x6f\x01\x6a\x4e\xac\xea\xaa\x1b\x59\x82\x06\x0a\xa8\xc2\x3a\x3a\xa4\xd4\x6a\xac\xb6\x25\xa8\x6a\x08\x54\x9d\x75\xb4\x77\x80\x1c\x5f\x10\x51\xe4\x65\x02\xc7\xf3\x7d\x81\x24\x27\xb3\x82\xc7\x72\x7f\x81\x34\x21\x19\xc2\x7d\x21\x08\x24\xbc\xa3\x6c\xe1\x3e\xc9\x5d\x08\x4c\xdd\x52\xc4\xa6\xf9\x7a\x02\x3c\x3e\x02\x43\xe4\xa3\xd4\x4c\x63\xe0\x5c\x79\xf9\xc8\xd1\xac\x63\x20\xc9\xa9\xdc\xe4\xf1\x0c\x64\x20\xd1\x39\x79\xca\x7e\x4b\x62\x0b\x30\x0c\x7f\x14\xad\x0e\xdb\x3d\x15\x45\xfb\x47\x29\x57\x47\xb8\x2b\x16\x72\xff\x7f\xde\x77\xff\x9d\x57\x21\x44\x29\xbb\x21\x56\x7d\x77\x74\x0e\xc7\xf2\xc8\x3b\x75\xd4\x4b\x25\x8f\x0e\x3e\x9e\x6a\xbe\x39\xaa\xb8\x41\x0c\x76\x4d\xe6\x14\x7e\x41\x5e\x5c\xa2\x97\x67\x36\x4f\xd8\x05\xf1\x5c\x56\x82\x34\x2b\x9c\x91\x57\xde\xc5\x39\x6c\xa8\x33\x6f\xda\x8c\xbb\x35\xae\xf2\x42\xdf\xd6\x70\x85\xc8\x67\x41\x9a\x0a\x17\xea\x7b\x79\x43\xef\x48\x83\x5e\x9e\x16\xf5\x3a\xac\xdb\xac\x08\x16\x6d\x13\x36\x86\x82\xaf\xda\xea\xab\x69\x71\x61\xba\xa3\x46\xef\xf7\xeb\x4d\x7a\xc3\x90\x03\x8e\xee\x06\x3d\x1b\xdc\xb7\x1e\x1c\xcb\x8d\xa5\x24\x9d\x62\x8d\x0f\xac\x6d\x8c\xeb\x28\x86\xf3\x66\x5b\xc6\x1a\x79\xad\xd6\x1d\xc3\xdc\xc0\xac\x93\xa6\x03\xbd\xc9\x8a\x56\xfe\xb0\xb3\xa8\xdc\x9d\xc6\x45\x27\x14\xb6\xb3\xcd\x39\x14\x56\x7d\x7c\x34\x35\x58\xe5\x52\x36\x4a\x18\xe5\xa8\xc6\x9c\x03\x4c\x20\xe6\xd2\xe5\x15\x93\xf3\xd6\x56\x5f\x7e\x94\xba\x95\x13\x41\x9a\x32\x96\x25\x8a\x8c\x0e\xe3\x50\xb7\xbc\xd1\x33\x84\xeb\xba\x88\x3a\xbd\xc1\x8b\x51\xb1\x9c\x5c\xb5\xcb\x82\xf2\xf5\x62\x96\x95\xfc\xfd\x08\x01\x1d\x25\xe5\x7b\xfe\x41\xe3\x9d\xb2\xac\x8f\x03\xdd\x41\x16\x45\x2e\x9f\x5d\x1c\xff\xb4\x31\x95\x7f\x58\x10\x41\xdc\x9f\xbc\x71\xfc\x0a\x33\xa2\x4a\xcd\x5c\xbe\xf5\xb1\xaa\xfd\xf7\x50\x86\x8b\x82\x1b\x5d\x59\x5b\x27\x28\x77\x82\x04\x76\x11\x57\x97\xce\xa5\xdd\x8d\x54\xd5\x5c\xb5\xe5\x3f\xb8\x53\x4f\x0c\xd4\x5f\xbc\xa7\xa3\x13\xcb\x51\xc9\x74\x22\x6d\x85\x58\x65\x67\xff\x50\x55\xd4\x88\xe0\x11\xdb\xe6\x81\x19\xe2\x86\x98\xc3\x12\xdb\x9a\x7b\xf7\xc5\x57\xe1\xbe\x98\xe5\xb8\x5c\xb8\x52\xc4\x58\x11\x38\x52\xb9\x07\x16\x16\x4e\x07\xfc\xac\x02\x70\x34\xae\x97\xee\x4a\x3b\x82\x12\x9e\xe4\x01\x4d\xcd\x3b\x3c\x15\xa2\xa1\xcb\x56\xc4\x77\x2f\xce\x73\xaa\xcf\xfc\x55\xc2\x8e\x4f\x58\xaa\x91\xa2\xcf\x5d\xef\x94\x2a\x45\xb8\xe1\x78\x47\xc6\x1c\x90\x25\x98\x76\xcc\xcd\xdc\x9d\xeb\x4d\x3e\xea\x94\x8f\x28\x55\xa5\x97\xe8\x97\x0e\x38\xca\x59\xd6\xca\x8b\xa0\x5b\x6f\x2f\x88\x40\xe7\xdd\xc0\x56\x2d\xba\x4b\x81\x19\x14\xaa\x5f\xdb\xea\xcb\x39\xbb\xaf\xee\x71\x93\x9f\x5e\x05\xd3\xd2\xfa\xaa\x61\xf7\x8e\xef\x5a\xb2\xa4\x54\x4d\x7b\xbc\x64\x6d\x18\x12\x0d\x29\xcf\x52\x3e\x8d\xa1\xb7\xf7\x34\x05\xdb\xde\xd3\xf4\x95\x7a\x9a\xe4\x1b\x5a\x15\x2d\x28\x17\x52\x23\xe8\x9d\x2c\xa0\xaf\x3c\x58\x63\x39\xa1\x6f\xd3\x67\x5f\xf3\xee\x61\x96\x54\x8a\xaa\xab\x94\x5d\x7d\x8a\xba\x5d\xe0\x29\xd0\x26\x37\x2a\x50\x14\xd6\x6f\x69\xe6\x7d\x45\x13\x70\x6b\x18\x99\x03\x2f\xc1\x62\x41\x0a\xa9\x58\xa1\xbe\x43\x0f\x68\x1c\xac\x59\xfe\x46\x23\x30\xe0\xaa\x62\x5a\xae\xf0\x43\x54\xe0\x25\x29\xf8\xa1\xb9\xda\x56\x79\x57\x2c\x0f\x48\x57\x0a\x3f\x27\x9a\x80\x06\xe3\xb4\xc9\x53\x5f\x71\xba\x1f\xf4\x8d\xa1\xec\xd7\x6f\xbb\x3a\x81\xd9\x9a\x94\x58\xfd\xf3\xad\x9c\xcb\x89\xca\xd8\x53\x8d\x72\x24\x55\x27\x41\x74\xf9\x13\xd2\x94\x1c\xb1\x95\x8b\xbb\xd6\xc5\x26\xee\x5e\x4f\x02\xee\x6f\xb6\x44\x97\x0c\xb2\x9b\x2a\x54\x7d\x7c\xb3\x6d\xd6\x23\x77\x06\x71\xb9\xa1\x84\xbc\x41\xc9\x3d\x06\xf1\x2e\x7b\x7d\xef\xf9\x52\x15\xdb\xd0\xb3\xfd\x88\xc3\x87\x9b\x9f\x91\x52\x60\x56\x49\xab\x9c\x60\x65\x46\x7b\x07\xd9\xde\x41\x16\x69\xcf\xd6\x41\xe6\x09\x17\xc5\x0d\x28\xb7\x03\xd7\x4e\x33\xa8\x6c\x91\xef\xfa\x56\x5b\x5b\xc9\x77\x49\x1c\x36\x8a\x56\x43\xe1\xce\x2c\xb9\x8f\xad\x67\x8d\x35\xfd\xc8\x82\x83\xe3\xe3\x83\x03\x5b\xe5\x37\x5c\x1f\x7a\x40\xb2\x15\xab\xa3\x1f\x10\xa9\x32\x96\xeb\xad\x28\xfb\xda\x70\xa1\xd4\x93\xce\x1e\x92\x3e\xfa\xd2\x8c\xae\x17\xc9\xa0\xfa\x09\xdb\x22\x89\x0c\xd0\x56\xe2\x79\xbb\x85\x62\xd1\xa9\x13\xae\x8a\x9f\x99\x00\x50\x39\x53\xbf\x29\xbd\xa2\x2b\x1f\x5b\xd0\x92\xaa\x1c\xf6\x5c\xf1\x69\xc2\x05\x47\x2f\xf5\x8f\xc7\x59\xdd\xc2\x0c\x37\xc8\x90\x39\x2e\x49\xc9\x9a\x87\x43\x47\x4a\x92\xe8\xd1\x36\x4f\xbc\x4a\xd0\x58\xb2\xb6\x69\x48\x25\x8a\x87\x27\xd0\x5d\xdc\x6c\x42\xf2\xa9\xbb\x36\xc8\xdb\x70\x9e\x23\x65\xef\x73\xf2\x0f\x64\x0a\xea\x9a\xc9\x84\x39\x74\xb6\x56\x65\x5a\x20\xd5\x1d\xba\xc3\x0d\x87\xcd\x00\x9a\xa7\xae\xe4\xf4\x8e\x72\x06\xde\x52\x93\x56\x31\xb9\x41\x59\x2b\xea\x56\x18\xbe\x0a\xc9\x2f\xf6\x7a\xbe\x26\xae\xb2\xa4\xdb\xb1\x03\xcd\xed\x75\x3c\x51\xc2\x91\x4b\x9f\x08\xfb\xd5\xb9\x5b\xa1\xe3\xd9\x5d\xf5\x4d\xab\xb8\x3d\xe2\x0a\xa6\x6a\x5c\xe0\x62\x61\x28\x55\xe1\x4a\x09\x3d\xf8\x32\x41\x05\x20\x82\xca\x71\x71\x4e\x13\x92\xb7\x2e\xcc\x1b\xfd\x18\x6b\x41\xca\x9a\x35\xb8\x79\x40\xb9\xb1\xc9\x84\xe3\x1d\x36\xcb\x08\x78\x75\x04\xb6\xae\xcf\xa6\x46\x95\xd3\x66\x17\xf9\x5b\x25\xc9\x69\x5b\xa6\x59\xd1\x3e\xa9\xa2\xa7\xa6\xa0\xaa\xf5\x95\x6b\x42\xd6\xf0\xb7\xc4\x59\xb8\xaa\xad\x9e\x25\xca\xbb\x09\xd5\xaa\x82\x5f\x07\xf0\x85\xf1\x59\x96\x04\x57\x56\x6b\x07\xd9\xe4\x2b\x96\x13\x39\xe3\x96\x98\xee\x9b\x67\xa6\xab\x8c\x4b\x0b\x78\x36\x5f\x1a\x42\xaf\xa4\x9a\xf4\x4e\x49\xc2\x27\x59\x44\x94\x94\x2f\x4d\x7f\x27\x3f\x4b\x71\x9e\x58\x69\x94\x09\x5c\x20\x6c\xca\x64\xac\x74\xd5\x64\xb7\xaa\x96\x0f\xc4\xcd\x53\xca\xcf\x4f\x39\x72\x07\xc8\x3a\x46\xe4\xaa\xca\xbe\x69\x5d\x43\x19\xc2\x0a\xae\xfd\xc7\x34\xc3\xcb\xa8\x55\x4b\xd3\xd6\xfa\x87\x5b\xc9\x6b\x55\xaa\xf5\x33\x2d\xdb\x12\xb5\x5c\xf6\x94\x55\xfd\x67\xa2\x54\x5d\x47\xef\xf5\x8e\xd5\x26\xab\x92\x56\x8a\x68\xff\x7a\xa7\x20\x18\xec\xfc\xc6\xfd\x9c\xee\xa2\xae\xb2\xd9\xac\x49\x93\xb7\x4a\xfd\x35\xbd\x34\x0a\x1c\x5b\x21\x1c\x80\xce\xb5\xcd\x29\x38\xaa\xd2\x2d\xd6\x95\x9a\x07\xe7\xa5\xa2\x85\x7f\x60\x00\x27\xc5\xd4\x2e\x76\x0b\xd3\x56\x26\xc2\x67\x63\x77\x8f\x6f\xee\x96\x93\xe6\xe8\xa6\xa5\xf9\xa3\x6d\x6b\x10\x97\x5f\x65\x60\xfe\xfe\xf6\xac\xcf\xd8\xdf\xd2\x65\x43\xd0\xd9\x1a\x57\x15\x29\xfa\xa5\xb6\xc3\x66\xe0\xa9\x32\xdc\xfd\xfc\xdc\x8d\x4a\xdb\x61\xa9\xb1\xd3\xea\x51\x7f\xbc\xcc\xdc\x67\x53\xf8\x0f\x56\x6c\x1a\xe6\x27\xea\x8a\x51\x3f\x7e\xb1\xe9\xa2\x4d\x2c\x33\xdd\x59\xc7\xde\x9e\x21\x81\x9b\x1b\x22\x24\x11\x54\xb5\xe5\x92\x44\xcf\xf0\x73\x2a\x70\xfc\x5c\x52\x91\x77\x97\x2d\xac\x97\xe3\xd3\xa7\xf7\x89\xd5\xa2\xc6\xd6\xf4\x9e\x35\x45\x7e\x4f\x73\x0b\x15\xfd\x52\x92\x7d\xf5\x7c\x4b\x37\xdd\xdf\xd3\x7c\x9b\x61\x1b\x33\xaa\x1a\x36\x52\xe3\x76\x78\xa0\xc1\x7a\x10\xba\xbd\x54\x9f\x7f\x85\x2e\xa8\x32\x47\xaa\xff\xd2\x06\xb2\x72\x49\x2b\x2c\xac\x93\xc3\x2d\x50\x94\xa2\x14\x03\xf2\x5c\x59\xf3\x31\x27\xe2\x10\x2d\x5b\x6d\xce\x5a\x32\xb1\x46\x9c\x96\x6d\x21\x70\x45\x58\xcb\x8b\x87\xe8\x36\xfa\x52\x4b\x03\x93\xc7\x05\xf9\x3c\x8d\xa6\x6c\x5b\x5f\x2e\xbb\x57\xfa\xf2\xf9\x86\x54\xa4\xa1\x99\x5d\x50\xd0\x85\xd7\x46\xed\xaa\x88\x4a\x4e\x59\x45\xf2\x13\x27\xac\x35\xa8\xb5\x8a\xe2\x25\x19\x5a\x2a\x4c\xdb\xba\x68\x6f\x68\xd0\x93\xf2\x45\xe2\x72\xbb\x28\x41\xc8\xbd\xc7\x29\xe0\xb0\xec\xa9\x7d\xf9\xe0\x0d\x2d\xe2\x7a\x3c\xd6\x35\x27\x35\xa9\x24\x03\xa8\xbc\x5d\x1a\xbf\x03\xa8\xe9\xd8\xd9\x2a\x18\x5f\xcd\xf3\x0a\xf6\xf2\x78\xee\xc5\x67\xd1\x60\xc9\x20\x4b\xc9\xea\x6c\x54\x08\x5d\x21\x5c\xc5\x99\xd9\xe3\x06\xfb\x7d\x85\xaa\xc1\x17\x2e\x8d\x96\x16\x20\x0d\x09\xbb\xf6\x03\xa4\x35\x37\x36\x07\xc8\x06\x30\x6f\x06\x22\x27\xf6\xd2\x87\xd0\xb5\x01\xcb\x13\x01\xc9\x51\xca\xb1\x80\x65\xbe\x19\xae\x18\x9f\x81\xfe\xa8\xf7\xc5\x57\xc6\xda\x57\x16\xbd\xfc\x94\x71\xa1\xab\x82\x65\xb7\x09\x55\xcc\xde\xea\xe7\x07\xd6\x12\xf3\x63\x4a\x19\xb3\x80\x75\xc4\x9c\x6d\x4f\xc0\xaa\x60\x21\xfd\x91\x20\x51\x79\x54\x1b\x26\xcf\x9b\x2a\xda\x8d\x96\x44\xb2\x9f\xa6\xad\x22\x15\x90\xc0\x7a\x1c\x16\x98\xcf\x28\x3f\x3d\x44\xa0\xe0\x44\xe8\x08\x68\x55\x4c\xb6\x24\x02\x83\x0a\xe2\x1f\xfd\xd5\x28\x82\x55\x8f\x92\x54\xf1\xec\x12\x58\x3b\xbb\xf2\x24\x73\x9a\x13\x88\x91\x16\xab\xc9\x6e\x48\x06\x08\x73\x85\x83\x60\xe8\xde\x7d\xfc\x98\x58\x43\x48\xbe\x30\x98\x2b\xb3\x21\x94\x25\x52\xe1\xe4\x74\xb7\xb6\xe8\xd8\xd8\xca\xdb\xa0\x86\xde\x13\xda\x20\x6f\x32\x72\xe5\xa0\x7c\x92\x20\x67\x0e\x7e\x3a\xbb\xe8\xbf\xda\x3f\x74\x3f\x9d\x5d\xa0\x73\x30\x34\x50\x12\x48\xa0\x33\x4f\x06\x49\x3e\x02\x48\xe0\x4d\x46\x3a\xe0\xa3\x9c\xf2\xdb\xe7\x52\x8a\x70\x8f\x10\xf8\x2c\x10\x02\x37\xf6\x47\xb4\x03\x7b\x78\xc0\x3d\x3c\xe0\xf3\x82\x07\x7c\x52\x1e\x89\x1e\xcd\x1c\x5f\xe7\xc9\x5a\x90\x45\xb9\xf3\x8d\x59\x57\xe7\x9d\x77\x8d\x56\x52\xa8\xc5\xaf\xdb\x1f\xc7\x4a\x0b\x5a\xb8\x2c\x49\xe1\xc9\xa7\xf8\x91\xeb\xa9\x82\xec\x0b\x80\x8b\xef\xb8\xfd\x61\xd3\xfc\xe1\x4f\x60\x94\xec\x13\x4e\xf0\xae\x40\x89\xf4\xde\xdd\x5a\xb5\xa3\xe2\x03\xa9\x83\x33\x34\x50\xe8\xf4\x0b\x03\x4b\x36\x15\xf2\x07\xc6\xa9\x60\xcd\x03\xc2\x42\x15\xc6\x6a\x04\xcd\xda\x02\xc7\x3c\x62\xda\x8e\x7d\x8c\xce\x2f\xae\x3e\x5c\x9c\x9d\x5e\x5f\x9c\xbf\x41\xf6\x2b\xd4\x57\xea\x8f\xd1\x35\xeb\x0c\xdf\x41\xaa\xb8\x0b\x2a\xd0\xb1\xb4\x5d\x1f\x0f\x0d\xbb\xc7\x55\x17\x25\xa1\x4a\xba\x45\xec\x52\x97\x15\x15\x5d\x14\xa5\x06\xde\x29\x58\x65\x22\x0a\x25\x65\x63\x7f\xbf\xa1\xe2\x50\xfb\xc5\xe3\x40\x8a\xf2\xd5\x7e\x2f\x14\x3f\xd1\x31\x55\x6e\x08\x41\x8b\x09\xf8\xda\x67\x63\x91\xd2\x10\xfd\xb4\x8f\xcd\xbd\x6c\x64\x9f\x0d\xc6\xb6\x7d\x8c\xdf\x60\x36\x6b\xb4\x21\x29\x95\x0f\x8e\x0f\xac\x32\x58\x0c\x12\x05\xa2\x34\xbb\x4e\xd9\x22\x7d\xf2\xe5\xfe\x5e\x3c\x46\xe8\x17\xb1\x26\xcd\x3d\xe5\x80\xe2\xf0\x74\x58\x2a\xd0\x39\xdb\xe4\x07\xfc\x18\xf2\xfe\x57\xe2\x84\x2b\x13\x25\xb3\xf4\x3b\x6d\x0a\x2d\xdd\xd0\x3b\x52\xe9\x89\xdd\x1d\x8b\xb6\x5d\x4b\x5a\xed\x0f\xdd\x19\xfe\xf8\xe1\xe7\xdd\x75\x46\x9f\xd8\xa4\xae\x9c\xb1\xb2\xa4\x02\xad\x31\x5f\xdb\x3a\x2b\x5e\xec\x91\xe3\x1a\xbb\xe9\x23\x8c\xe3\x82\xd6\x1b\xc6\x75\x75\xb9\x97\x04\x14\xa8\x83\x9f\xec\x2b\x83\x0b\xb4\xfb\xd9\x62\x41\x45\xf9\x8d\xba\x67\xa5\x07\x71\x4e\x81\x22\xb8\xb1\xec\xb6\xf6\x3e\xa9\x72\x5d\x11\x3c\x11\x5c\xd2\xbe\xf6\x5e\xd7\x0f\xd5\xf1\xda\xe6\x47\xad\xb4\x81\xea\x00\xe5\x44\x60\x5a\x70\x6f\x7e\x05\xab\x59\xc1\x6e\xc6\x83\x23\x13\x26\xe7\x1b\x9d\xd1\x72\x84\x8f\xe4\xac\xef\xee\xae\x95\x8a\x07\x65\x13\x76\xe4\x04\x75\xa3\x74\x77\x0c\x95\x1b\xb3\x3b\x5c\x9d\x27\x9b\x88\x47\x50\x4e\xdd\xec\x44\xe7\xc2\xde\x52\x95\x75\xc1\xe2\x5b\x28\x3e\xdf\x55\xe2\xa8\x49\x53\x52\x2e\x99\x97\xa7\xb5\x42\xae\xb2\x1b\x5a\xed\x13\x4d\xfa\xae\x14\x56\x77\xa2\xc3\x6a\x6d\x38\xe0\x1e\xc4\x5e\x25\x87\x8b\x25\xb6\x6e\xc2\x45\xab\x03\xd1\x63\xae\x75\x43\x8e\xc8\x67\xca\xd5\x8d\x43\xe5\xa4\x45\x92\x65\x3a\xe1\xee\xe3\x68\x5a\x83\xa4\x35\x5f\xea\xa7\x8a\x87\x94\xb8\xc9\x4e\x17\x74\x66\x64\x15\x3e\x82\x8b\xe2\x41\x97\xa9\x57\x35\x3e\xb4\xf9\x07\xdf\x44\xab\xc0\xb1\xc6\xb8\x99\xea\x86\xde\xd1\x82\xdc\xc8\xdb\xe8\x9a\x56\x37\x5e\x4d\x12\x5c\x14\xec\x9e\x98\xb4\x5e\x12\xf5\xf4\x0d\xb1\x5b\xb8\xf0\x23\x7b\xd5\x99\x7a\xff\xcb\x35\xaa\x88\xfe\x14\x07\xf0\x97\xf9\xb7\x5f\xd9\x99\x68\xee\xc6\xd1\xd1\x91\xb2\xad\xbd\xfc\xa7\xd4\xe3\xf3\xe2\x15\xfa\x44\x4c\xff\xe4\x05\x47\x72\x9b\x4c\xa0\xfb\x35\x53\xd6\x92\x96\x03\x30\x16\xbb\x1d\xa0\x8e\xbf\x4e\x62\x33\x14\x4e\x24\x15\xa9\x34\x6b\x51\xad\xe6\x2b\xef\xca\x60\x84\x2f\x34\x1c\x75\xde\xfc\x9d\xdc\x07\x66\x4a\x0c\xeb\xd4\x18\xdb\xe9\xa0\xf4\x60\x57\xe5\x43\x55\x8d\xe0\x0f\x65\x41\xab\xdb\x43\x44\x85\x65\xbb\x72\xd7\x99\xd0\xed\xea\x16\x5a\xd7\xac\x21\xb8\xf0\xa4\xd6\x0e\x76\xce\xce\x24\x92\x48\x36\xdc\x5f\x3f\xd4\x44\x9d\x67\xc7\x96\x4c\xf8\x98\x6f\xe4\x78\x11\x37\x5c\x3f\xaf\x99\x00\x9a\x35\x76\xc0\xff\x29\x4f\xa9\xac\x79\x70\xb9\x38\x5b\x5c\x0e\xc0\x93\xf5\x6f\x3d\xd7\xd4\x16\x81\xf3\xbb\x8a\x9c\x4f\x11\xfe\x6a\x12\x76\xab\x93\x67\x6b\x5c\x9f\xb6\x62\x7d\x4e\x79\xc6\xee\x48\xe2\xe5\xd2\x96\x6a\x35\x8e\x1f\x44\xed\x14\x6b\x5a\xe8\xec\xbf\x4f\xaf\x06\xc8\x84\x3b\xd2\x4f\xba\x9e\x2f\x08\x4f\xbe\x89\x8e\xf7\xdb\x50\x7a\xd4\x5e\xef\x9d\x7e\x5f\x8d\xd3\x4f\x9d\xc6\xaf\xd5\xd1\x47\x2b\x2a\x28\x16\x0c\x94\xa1\xde\xb7\xf2\xb4\x5c\xb0\xd2\x1c\xa9\x4b\x4b\x46\x85\x9a\x28\xa7\x5d\x8f\x32\x68\x83\x75\x78\x18\x54\xe9\x18\x19\xa7\xae\x46\xf2\x20\x10\xfd\x10\x55\xe4\x3e\x4e\x54\xf5\x8d\x3a\x1a\xff\x65\xd2\x0e\xe4\x3e\xc6\xc5\x5f\xdf\xfc\x97\x39\x5a\x15\x2e\xc9\x5f\x95\x0e\x13\x25\xd9\x95\xb5\x70\xa6\x2d\x83\x52\xb6\x3b\x93\x16\x42\xf4\xb7\x34\x3e\x67\x4c\xbd\x7a\xbc\x7f\x6f\x71\xa1\xe7\xf1\xfd\x2e\xed\x92\xfd\xf5\x48\xea\x9e\xdd\x23\x76\x1d\xde\x5b\x5b\x8e\x54\xcc\x95\xcc\x56\x4f\xc4\xb5\xc5\x06\x57\x5c\x2e\x5e\xdf\x67\x74\x60\x5c\xc2\x07\xe8\xa5\xc8\x6a\x60\x4d\xcb\x47\x48\x5b\xd2\xc3\x34\x6b\xf1\xb3\x4b\x57\x8a\xf5\xe7\x91\xfc\xa3\x6a\x8f\xa7\x99\xe0\x7a\x03\xb8\x52\x04\xd0\xcf\x94\x0b\x1d\x83\xae\x29\x42\x90\x6d\x88\x4e\x50\x91\xba\xd8\x95\x2a\xe8\x5e\xff\x03\xe7\x79\xf3\x46\xcb\xe0\x95\xd1\x89\x1a\x75\xa3\x66\x70\xd8\x72\xeb\xf9\x7f\x29\x1e\x6a\x9a\xa9\xeb\xf3\xf5\xd9\x95\xa2\xc4\xd1\x0f\xdf\xeb\x5a\x47\x7f\xf9\xf3\xf7\xdf\x46\xb7\xc0\x97\xcb\x20\x9a\x65\xe3\x4a\x8a\xef\x86\x38\x34\x62\xfe\xd7\x9d\xa9\x41\xf3\x22\xc2\x95\x62\xb6\xe8\x90\xad\xf5\xbe\x34\xcc\x5b\x2e\xb2\x93\x2d\xd1\xc1\x26\xa9\x77\xfb\xe8\xe5\xaf\x20\x7a\xd9\x66\x28\x6a\xfe\xb5\x2d\xff\xd3\xac\xef\xca\xb2\x3e\xc3\xda\xe2\xdb\x0e\xcc\xfa\x7a\xac\x2d\x4a\x77\x7b\xd6\xb7\xd3\x1b\x3f\xfd\x2d\x74\xa4\x8e\xa4\x04\x0d\xfe\xdd\x5f\xa9\x6d\x2d\x07\xea\xba\x13\x33\x1d\x83\x46\x5f\xa5\x38\xf7\xde\xbf\x5d\x0c\xec\x0f\xf2\x17\xeb\xd1\xeb\x7b\xed\xc2\xac\x72\xc2\xa3\xb7\xed\xf5\xa5\x5a\x05\x8b\x3b\x3d\xb2\xcd\xd1\x1a\xce\xc9\xe7\xfe\xe5\x51\x4e\x12\x27\xcd\x5d\x5c\x3d\xda\xda\x16\x16\x99\x00\xf4\x85\x5d\x54\x72\x26\xf4\xec\x40\x3c\x49\x4f\xea\x9c\x7a\x94\x59\x86\xa9\x0d\x4d\x6a\xbe\xea\xc1\x42\xbd\x63\xdd\xa2\xf2\xcc\xe9\x38\xbf\x46\x72\x62\xc9\x83\x09\xe7\x90\x7a\x61\x83\xdd\xf9\x7c\x76\xdf\x4e\x8c\xb0\x47\x66\x5c\xdb\x72\xdb\x2e\x7c\x4e\xeb\x92\x67\x05\xa6\xc1\x72\x4d\x03\xde\x30\xf6\xba\xfe\xe7\x42\x5b\x6c\x81\x90\x48\x7d\x1c\x15\x84\xd1\x28\x65\x17\xc4\x83\xcd\x6d\x5f\x95\x39\x0e\x73\x9e\x99\xeb\xde\x4d\xcc\x91\xdd\x02\xdd\x4f\xfa\x97\x4c\x76\x69\x27\x4c\x59\x51\x4a\x8f\x83\x3d\xb3\xaf\x0d\xd3\xbb\x27\xa6\x0f\x72\xa5\xd8\x9c\x5e\x84\xb9\xab\xac\xdd\x1a\x03\x16\x38\x0f\xfc\xcb\xce\x3f\x7a\x74\x99\xf0\x29\x31\x49\x37\x3a\x5d\xe7\x36\x43\x7c\x97\x17\x38\x18\xcb\x71\xbb\x70\x6b\xa6\xb2\x66\x82\x55\x33\xf3\x95\xae\x46\x5e\xee\xc7\x04\xe8\x27\xce\x74\x8e\x5e\x11\xb3\x9f\x38\x42\x3a\xb4\xdb\x79\x87\x14\xe8\xad\x11\xc1\xac\xb2\x7e\x22\x1e\xf7\x2f\x1b\xd3\xed\x0e\x8e\xfd\xbf\x4e\xed\x83\x5d\x57\x50\xda\xd5\x99\xaf\xf3\xc4\xac\xc2\xcb\x73\xa3\x0a\xdb\xcc\x41\x6e\xb6\x23\xea\xf6\xa3\xb7\xe7\xa2\x83\x02\x24\x1f\xed\x56\xad\xc8\x2f\xcf\xb7\x3e\xde\xac\x11\xf7\xac\x49\xad\xc1\x72\xd5\x7b\x6d\x10\xe6\x63\xfe\x06\x89\x3b\x06\x9d\xe0\x2f\x7c\x4a\x17\x2a\x7e\xc0\x1b\xe2\x88\xb3\x0e\x12\x57\xa1\xef\x9f\x63\x47\x3b\x70\x74\xa3\x54\x83\x47\x5b\x1f\xdd\xd1\x23\x0b\xbc\xd8\xb8\x23\xfd\x28\x47\x76\x96\x98\x8e\x54\xe6\x80\x27\xbf\xcc\xaa\xcc\xb1\xb3\xfb\x94\x3e\x1d\x89\x2c\xeb\x57\xf3\x92\x49\x7a\x96\xeb\xd9\x31\x2f\xec\x8e\x65\x74\xe8\xa0\x94\x80\x9d\x32\x2b\x3b\xdc\xad\x19\x96\x46\x56\x0f\x7f\x6e\x04\x54\x67\xc5\x1a\x55\x76\x83\xea\x4a\x1c\x5d\x75\x74\x53\x87\xe3\xd0\x60\xba\x95\xb8\xe6\x61\x91\x28\x59\x95\x8f\xca\xb3\x03\xb6\x34\x17\xa4\xea\xdd\x34\x32\xd5\x26\xf2\x54\x5c\xbb\x07\x00\x56\x6c\xe2\x4c\x81\x2e\xef\x16\x87\x0a\x8c\x33\x15\xa5\x1a\xc5\xaa\x18\xa2\x50\x44\x29\x86\x50\x2a\xa6\xf0\x27\x00\x4c\xdf\xc7\xa7\xf8\x22\x5e\x47\xb3\xd1\x93\x36\x96\x45\x9f\xb2\xf1\xeb\xfa\xd0\x01\x20\x40\xe6\xe0\x4a\x5d\x39\xea\x7a\xcd\x4c\x01\x1f\x77\xd2\x11\x2e\x18\xa8\x2a\xba\xb7\x09\x3c\x78\x3e\x13\xaa\xf3\x50\x03\x7c\x2f\x69\x70\x02\x99\x45\xc8\x9e\x81\xf7\xe0\x57\x3d\x72\x80\x79\x1d\x45\x04\x2a\xfe\xa1\x9b\x60\x76\xae\x40\x2f\xa4\x43\x26\x00\x17\xd5\xb6\x3e\xf7\xed\x69\x0e\x87\x88\xe0\x6c\x8d\x6e\xc9\xc3\x91\xe2\x31\x60\x9a\x08\xd5\x58\xe5\xf4\xa9\x69\x3a\xc7\xa2\x8f\xba\xd5\x59\x9c\xa0\x80\x32\xb2\x75\x08\xe7\x36\xe3\xad\xdb\x73\x2e\x7b\x10\x98\x3d\xd7\x35\xcc\x8d\x72\x87\xee\xd7\x8c\x1b\x43\x8e\x31\xea\xdc\x92\x07\xc5\x4e\x32\x56\x81\xae\x14\x5d\x33\x04\xd4\xac\xa9\x58\x9e\x41\x66\x9d\x3c\xb1\x24\x87\x61\xb4\x77\x2d\x30\xee\x2e\xf4\x47\x32\xef\x88\x4c\x1c\xcc\x40\x95\xa3\xb6\xf2\x7a\xa4\xbf\xa3\x0a\x58\xaa\x28\x2c\x4e\x2a\x58\x74\xb3\x47\x53\xcd\x5d\x3f\x24\x49\x15\xb0\xa6\xdc\x60\x62\x2b\xaa\x29\x33\xaa\xf7\x92\xdb\x04\xbd\x0c\x45\x4e\x44\x5b\xc3\xc2\x8f\xba\xa6\xe2\xca\xe4\xc8\x09\xe7\x48\x97\xc9\x2e\x71\x73\x4b\x72\x87\xef\x71\xac\x80\x7d\x52\x56\xc8\x96\x01\xb5\x28\x38\xfa\xa6\x84\x1f\xfc\x74\xd1\x04\xdc\x39\xd9\x0e\x8e\x8f\x35\x5c\xcf\x58\x1a\x29\x98\x4e\x22\x53\x18\x6a\x2e\xb8\x56\xf1\xea\x4a\xb9\x54\x4b\xab\x2c\xc5\x20\x7c\x08\xbf\x19\xac\x4b\x0c\x36\x61\x76\x2d\x9d\x0f\xea\x76\x4b\xa2\xf7\x95\x61\xeb\x07\x86\x19\x3e\xd0\xb1\xed\x94\x5e\xa3\x79\x28\x27\xba\xc1\x91\xd1\x26\xfa\x3e\x81\x91\x96\x48\x12\xf9\x98\x6a\xe3\x68\x69\xc9\x14\xc7\xd1\xd5\x06\xb8\x69\xc9\x54\xc3\x38\x6b\x1a\x41\x2d\x99\x28\x04\x71\x2d\x99\x68\x1c\x5d\x35\x99\x24\x40\x0b\x4e\xef\xe6\x6c\xd4\xb6\xae\xa5\xe3\xb7\x75\x2d\x15\xc9\xad\x6b\x70\x4c\xb7\xae\x6d\x9c\x7b\xc7\xc5\xeb\x2e\xf9\x27\x79\x0e\x2d\x9c\x5b\x89\x6b\xa7\x54\x08\x76\x8c\xde\x19\xa9\x30\x63\x59\x70\xd5\xc1\xbb\x99\xb4\x9f\xbe\x88\x99\x75\x72\xd4\x20\x49\x41\x4a\x52\x09\x53\xa4\xc0\x92\x55\x62\x27\x99\xa8\xcb\xf1\x37\x72\x23\x4d\x62\x99\x8e\xcd\x63\x9e\x69\x78\x4b\xba\x1d\xc9\xa5\x49\x7a\x3e\x51\xfe\x25\x02\x63\xfa\x2f\xc5\xc3\x22\xbb\x06\x8d\xab\xd3\x2d\x2d\xba\x2e\x61\xb4\x5f\x20\x0e\x4f\x37\x78\x34\x5e\x02\x51\x15\xb7\x07\x8e\xc9\xd3\x6d\xc6\xde\xb5\x9a\xe7\x56\x40\x6f\x0f\x2e\x6b\xa7\xa7\x31\x27\x8c\x96\x35\x48\xb2\x7b\x75\x19\xb0\xa2\xde\x00\xc8\x24\x8e\x1e\x62\x5b\xed\xbf\x01\x3e\x1f\x40\x40\x7c\xef\x85\xf8\x8d\xde\xa3\x09\x1c\xa8\xbc\xf9\x3f\xf3\x3b\xfd\x26\x4c\xf9\x06\x36\x78\xc2\xde\x00\xc0\x95\xcf\xee\x77\x22\x84\x79\x92\x2c\xe9\x17\xae\x0e\x80\x99\x27\x51\x4d\x03\x3e\xef\xda\xdc\xeb\x4c\x1a\x18\x7a\xd7\x80\xb0\xe8\xe9\x1a\xa2\x0d\xc8\x0d\x01\xa4\x27\x53\xdd\x04\x54\x9f\x05\x95\xde\xb5\xb9\xd3\x8d\x66\xc2\xa7\x77\x2d\x0e\xa4\x3e\x83\xa8\xde\x77\x0e\x7c\x7d\x0c\x52\x7d\x16\xd5\xed\x60\xd8\xbd\xde\xcd\xbd\xf2\xa2\x79\xd0\xec\x5d\x8b\x82\xb4\xcf\x9a\x17\x07\xec\x8e\x76\x00\xd7\xde\xb5\x2d\xa6\x69\x8e\x82\x8b\x66\x80\xb9\x77\x6d\x96\xf6\x8a\xf6\x66\x8c\xbd\x19\x23\xa9\xed\xcd\x18\x7e\xdb\xda\x8c\x31\x01\x52\x9f\x3c\x85\x7d\x53\xc8\x08\x5c\xfd\x8c\xb3\xb3\x09\x6f\x3f\x00\xae\x4f\xa6\x19\x04\xba\x77\x10\xf6\xc9\x64\x77\x0b\x79\xdf\xb5\x9d\x80\xdf\x77\x6d\xb6\x38\x99\x07\x88\xdf\x35\x00\x34\xfe\x2c\x26\xd8\x41\xe9\x8f\x83\xe4\xcf\x30\x9c\x4d\x80\xea\x0f\xe0\xf2\x67\x1c\x8f\xdd\xc0\xeb\x7b\x5d\xdd\x0a\x68\xbf\x6b\xdb\x68\xbe\x33\xc1\xf7\xbb\x06\x83\xe1\x9f\xa5\x92\xad\x5c\xd9\xf1\x11\x40\xfe\x59\x14\xd3\x40\xfc\xbb\xb6\x95\xb2\x9b\x0c\xec\xef\xbd\x1a\x83\xf8\x9f\x3b\xaf\x25\x16\x96\xb5\x6d\x82\xfd\xcf\x22\xda\xbb\x53\xbc\x8e\xd7\x1f\xd9\x6c\x5b\x4d\xb2\xed\xfd\xf6\x5b\xb8\x93\xa6\x49\x08\xfd\xc3\xa6\x8a\xca\x49\x2e\xf9\xc4\xfb\x6d\xfe\xad\x61\xe6\x70\x67\x5e\x1a\xe6\x99\xef\x9f\xa3\x39\x3e\xf1\x23\x3a\xbc\x71\x67\xe6\x4c\x03\x83\xb6\x8f\x4e\x1a\x76\x7b\xf7\xd1\x49\xa6\xd8\xc2\x3e\x34\xe9\x5f\x36\x34\x69\x61\xe0\x02\x47\xe3\x92\x74\xb4\x51\x02\x51\x40\x5c\x92\xba\x3a\x24\x90\x04\xc4\x25\x29\x1f\x6d\xd2\x41\xda\xc7\x25\xed\xe3\x92\x52\xfb\xbe\x37\xe8\xed\x0d\x7a\x7b\x83\x1e\xb8\xed\xe3\x92\xf6\x71\x49\x7f\xf8\x8b\xd0\x3e\x2e\x69\x1f\x97\xd4\x8b\x4b\x32\x17\xa6\x24\xa5\xd8\x04\x25\x3d\xdf\x98\x24\x03\x5b\x7c\x9a\x65\xac\xad\xc4\x35\xbb\x25\xc0\xa0\x01\xd0\x65\x7e\x83\x36\x70\xe0\x4f\x13\xa3\x84\xdb\x9c\xca\x5b\xf3\xcc\x3d\x72\x6a\x5e\xb7\x17\x54\x29\x5d\xab\x9c\xe4\x8e\x6e\xc2\x3e\x31\x9c\x42\xc8\x39\x3a\x46\xa7\xa8\x21\x19\xad\xa9\x94\x1f\xaa\x44\x8b\xfa\x3d\xf5\xf6\xe4\xb0\x0a\xa9\xe0\xa4\x58\x19\x64\xb5\xca\x43\x32\xee\x54\xc4\xf4\xcb\xa3\x1d\x64\xaf\xeb\x5a\x5d\x62\x16\xc2\x2b\x81\xaa\x01\x91\x6e\xc8\x3f\xad\x06\x67\xe6\xe2\xda\xff\x56\x0e\xad\x71\xd5\x35\x73\xa7\xf7\x06\x6d\x3a\x8c\x6b\x0a\xad\x46\xe6\x68\xa5\xf3\x21\xf2\xb9\xa6\x8d\x3a\x18\x0b\x92\xb1\x2a\x9f\x6b\x49\xba\x18\xd2\xb1\xbb\xce\xf8\x6d\x92\x96\x30\x6f\x35\x29\x95\x82\x89\x0b\x9a\x53\xf1\xe0\x42\x7c\x0c\x8e\x39\xd6\xa7\x36\x69\xa6\xf5\xe6\xe5\xdd\xf2\x21\x5c\xd7\x0d\xc3\xd9\x9a\x70\x6f\x26\x52\xc4\x85\x52\xf4\x74\xb5\x06\x97\x2d\x5a\xb4\x37\xb4\xd2\x97\x11\x45\x5d\x6a\x96\x80\x7c\xfc\xae\x35\x4c\xd8\x50\xba\xc1\x70\xfd\x5d\x67\x3e\x9b\x6a\x53\xd2\x96\x05\xd1\x3c\xa8\xf2\x47\xcc\xff\x98\x9e\x13\x40\xfd\x92\xfe\xf8\xcd\x6b\x1c\xb1\x22\xb7\xd5\x23\x7f\xf8\x16\xd5\xa4\xc9\x0c\x87\x48\x73\x2d\xaa\x12\x83\x82\xa1\x42\x6a\xe4\xac\xb1\x35\x2a\x47\x3e\x93\x40\xf4\xcf\xdf\xa1\x35\x6b\x1b\x7e\xec\xd7\x4f\x78\xad\x7e\xd3\xb6\x1b\x2d\x01\x53\xec\x5e\x02\x15\x04\x73\x81\x5e\x7f\x8b\x4a\x5a\xb5\x52\xf1\x01\xbf\xee\x5d\x96\xbe\xff\x2e\xf1\x80\xa7\x5d\x93\xd2\x2e\x48\x9b\xe1\x5e\xe6\x1c\xd7\x1a\xcf\xc8\xdc\x93\x92\x6c\x0b\xaa\x48\xbc\xda\xbd\x1a\x37\xad\x1f\xe7\x60\x85\x68\xe2\x9d\xcb\xec\x86\x4a\xb0\x47\xe4\x8f\x69\xb7\x8b\x84\x7b\x42\x92\x16\x94\xf0\x30\xec\x12\x01\x2b\x59\x61\x1c\x94\x81\x67\x40\x1d\xfb\xad\x65\xcb\x07\x01\xaf\xad\xf3\x77\xfd\x7c\xbf\xa8\x8e\xfd\x71\xa3\x88\x69\x70\x3e\x36\x61\x09\xbb\x1a\xa6\x81\x17\xa1\x9a\xda\x4d\xc3\xda\x68\xee\x7b\x6f\x6c\xca\x66\x63\x6d\x04\x46\x5c\xe0\x2c\x23\x5c\x71\xa3\x73\x07\x23\x1e\xdd\x12\x15\xd3\x5f\x07\x6d\x87\xc7\xaa\x44\x13\xac\x21\x6a\x57\x0c\xe8\xa4\x79\xcc\x3a\xa2\xa0\x49\x82\xdc\x61\x1a\x72\x43\xb9\x48\x46\x41\xd5\x2f\xf5\x37\x34\xa7\xd5\x8d\x42\x80\x43\x65\x5b\x08\x5a\x03\x52\x00\xec\x8c\x3a\x82\x46\x37\xf0\x1d\x2f\xd8\xb3\xde\xe3\xf8\x14\xc9\x13\xa4\xeb\x40\x2b\x07\xde\x4b\xdb\x17\x44\x2a\xa1\x6a\x9c\xa8\x20\x71\x52\xe3\x06\xdb\x65\x89\xd2\xcc\x58\x59\x62\xfe\xca\xf8\x80\xb0\x0a\x5c\xd2\x22\x44\x6a\x03\x0d\x2e\xdc\x34\xfa\x21\x27\xbb\xda\xc8\x82\x54\xb8\x8a\xfa\x7b\xfb\x06\x40\xf5\x0a\x62\xf7\x95\x45\x34\xd1\x10\xba\x89\x3b\xd8\xdc\x3b\x7e\xc4\xd9\x2d\xa9\x72\x8d\xc8\xae\xf6\x71\xfe\x50\xe1\xd2\x54\xc8\x76\x78\xd3\x24\xb7\xf4\xa3\x84\x5d\x50\x8e\x2e\x4b\xa3\x0b\xc6\xd8\x22\x59\x5a\xd9\xdc\xd5\xec\xb5\x3c\xb1\xc4\xed\x47\x2e\x35\xb1\x30\x3f\x03\x79\x22\x38\x69\xe8\x5d\x46\xac\x9a\x2b\x3b\xb2\xab\x41\xdd\x45\x6b\xbb\x6d\x0c\xcb\xd4\x75\xa3\xde\x69\x52\xb2\xc4\x39\xb2\x55\x55\x6d\x5c\x48\x16\x15\x57\xec\x6d\x49\xa2\xfe\x86\x92\x2b\xb8\x43\x94\x66\x28\xe8\xb0\x3e\x7a\xc1\x87\xa2\x1b\x1e\x24\xf7\x9b\x25\xbc\x46\xd5\xc1\x87\x1f\xcf\xfb\xfc\xf1\x03\xce\x19\x47\x3f\x16\x2c\xbb\x45\xe7\x44\x5d\x81\xe2\xf8\xe7\xc3\xe2\xe6\x20\x48\xe2\x20\xc5\x18\x2c\x5a\xb3\xcc\x77\x0b\x8a\xb6\x07\xe9\xfa\x6a\x40\xba\x9a\x65\xdc\xe6\xf1\x47\x85\xe8\x2a\xf1\x4d\x2a\x0a\xe5\x9a\xa0\x46\x1d\x6a\xf5\xb2\x45\xfe\x87\x23\x10\xf6\x8e\xda\x37\x6b\x76\x7f\x24\xd8\x51\xcb\xc9\x11\x8d\x06\xfd\x81\xc7\x75\x4b\x1e\xe4\x33\x69\x23\xfb\x9b\x7e\xa9\x77\x51\x16\x4c\x99\xd5\xd5\xef\x52\xcb\xf9\xf0\xe3\xb9\x14\x95\xf0\x9a\xc9\x94\xa3\x13\x22\xb2\x93\x8c\xd4\xeb\x13\xd3\xad\x67\x37\x5d\x25\xab\xa8\x60\x4d\x22\xa8\xfa\x29\xca\x58\x51\x98\x8a\x67\x6c\x85\xce\x48\xbd\x76\xa4\x92\x7c\x50\x8f\x38\x07\x5f\x0e\x8e\xa9\x66\x2c\x0d\x22\xc6\x3b\x5a\xf2\x5d\x73\xb2\xbc\x8d\xd4\x2c\xf3\x9d\xa2\xaf\x3f\xc5\xd6\x7a\x04\x54\x0b\x70\x61\xd4\xa9\xda\xa7\x23\xa8\x54\xcf\x64\xb7\x3e\x36\xfa\xd5\xc1\xc2\xbe\xa6\x82\xfa\x3c\xdf\x71\x12\x98\x95\xfd\x7c\x8f\x25\xa2\xcb\x95\xbe\x16\xe5\x24\x47\xec\x8e\x34\x0d\xcd\x09\xb7\xac\x38\x89\x63\x56\xb4\x78\x2a\x1e\xb9\xc7\xe5\xfa\x2a\x70\xb9\x92\x2f\xbc\x1e\xb3\x95\xef\x6e\x32\x5b\x9c\x97\x14\x90\xbb\xfc\xac\x24\x39\x10\x59\x4b\xea\x6d\xc1\x27\xac\x10\xdf\xf6\xea\xc8\x33\x5c\x90\xcb\x5f\xc0\xd7\xc7\x85\x7e\xbe\x7f\x83\xb4\x3f\x7a\xa8\x09\x5b\x54\x64\xff\x9b\x3b\x64\xa8\x62\x79\xd8\xd3\xb3\xc7\x4c\x18\x5e\xcd\xbc\xf3\xa1\x4b\xb2\xef\x4a\x4d\xb8\xc1\x82\xdc\xe3\x34\x2d\xe1\xda\x0e\xb1\x43\x60\xd2\xf1\x33\x66\xc3\x9c\x5e\x5d\xa2\x9f\x34\xdd\xdd\x81\x33\x34\x4c\x68\x8d\xf7\x9c\x95\x98\x26\x42\xe9\x7a\x70\x38\x7e\x47\xaf\x1c\x51\xa4\xa9\x46\x97\xc5\xc3\x07\x5e\xd1\x9b\x56\xde\x90\xcd\xad\x75\x5f\xd3\x3e\x32\xf4\xc7\x53\xae\x3a\xdd\xca\x33\x2f\xda\x54\x0f\xa7\x2f\x45\x87\x6e\x77\x85\x12\x4b\x2e\xcc\x05\x71\x52\x71\xaa\x7c\xb6\x5e\x10\x94\x52\xba\xc4\x1a\xe0\x68\x72\x39\x1c\x5a\x41\x3b\x44\x3f\xb3\x1b\x5a\x59\xee\xc0\x4c\x98\xc3\x0a\xd3\x22\x36\x8d\x7b\x8d\xe9\xab\xd0\x98\x38\x2f\x2e\x2a\xbc\x2c\xe2\x4e\xf1\xbe\xe0\x2a\xb0\x8a\x36\x21\xea\xdd\x93\x9c\x72\xf9\xff\x68\xb1\xf8\x59\x39\x8c\xda\x0a\x7a\x83\x50\x2e\x15\xc3\x9e\x5d\x6d\x1d\xcd\x34\x76\x77\x8e\x35\x4f\x4c\xc6\x23\xb8\xac\x72\x39\x0c\xc2\x7b\x71\x99\x86\x9a\x86\x60\x80\x7a\x93\x4c\xbc\xd9\x92\xa0\xeb\x35\xcd\x6e\xaf\x3c\xbf\x11\x6b\xe4\x6f\x95\xf7\x93\x13\xb0\x90\xe3\x3c\x7c\x77\x57\x8c\xdf\x0c\xf3\x2a\xd5\x7c\x71\xed\x49\xb4\x85\x99\x2a\x49\x04\x61\xce\x59\x46\xe1\x8e\x47\x65\x7c\xeb\x44\x62\xae\x44\xe2\xee\x86\xa7\xb4\xa0\xad\xe4\xb6\xdd\x08\x46\x81\xc3\xdc\x93\xc3\x10\xf7\xa2\x99\xa5\x9d\x0d\x49\x6f\xc5\x64\xac\xbe\xeb\x1e\x3a\x9f\xf5\xfa\x69\x5f\x98\xf3\x75\x01\x81\x31\xec\xc2\x5b\x9d\xd6\x40\xb3\x0e\x96\xde\x47\xe9\x8b\x9f\x1c\x15\xb6\xf2\xa4\x5e\x35\xa3\x85\x06\x9f\x71\xba\x41\xf8\xa9\x98\xde\x0e\xbb\x3f\x45\x93\x9e\xc7\xac\x3b\x83\x00\x05\xfd\x9b\x71\xa3\x29\x66\x54\xb3\xba\x2d\x70\xc4\x63\xed\x03\x2a\x6e\xeb\x41\xd1\x7d\xd8\x85\x5b\x6d\x2e\xc2\xcc\x44\x62\xdd\x00\x6c\x26\xae\x77\x0f\xc1\x68\x20\x60\x33\x50\xcb\x97\xea\xd0\xb7\xdf\x7f\xf7\xdd\x18\x3c\x4d\x0f\x7e\x26\xae\x77\x01\xe1\x69\x06\x09\x72\x30\xa1\x1d\x84\xa7\x19\xc2\xcf\xc4\xa7\x14\x00\x4f\x93\x98\xd0\xf6\x38\xf8\x33\x20\x4f\x42\x42\x56\xbe\xcd\xb5\x07\xf1\xd7\x50\x2e\xfe\x64\x86\x3d\x40\x16\xf5\x32\xf0\x21\x79\xf5\x00\x9f\xa5\xca\xbb\xdf\x69\x36\x7d\x42\x0e\x7d\x2f\x33\x3e\x4a\x38\x94\x39\x3f\x99\x0f\x0f\xbf\x6b\x29\x5a\xa0\x2c\xf8\x28\x4d\x30\x26\x07\x38\x00\x1a\x94\xf1\xde\xcf\x63\x87\xf1\x07\x48\xd6\xe0\x1c\x7c\xa5\x40\x4e\xbb\xcb\x53\x07\x5c\xa6\xa0\x99\xec\x69\x79\x3e\xe0\xac\xf5\x9d\xe4\xaa\x27\x06\x40\xc3\xf3\xd2\x53\x84\x26\xc8\xee\xa0\xdb\x68\x0e\xfa\x44\x4e\x39\x90\x64\x3f\xf3\x3c\x92\x49\x0e\xa4\xa9\xf2\xcd\x41\xf9\xe3\x56\xfc\x01\x09\x47\x84\x64\x4f\x08\x82\x49\xee\x42\x54\xea\x96\x9e\xf1\x9d\x9a\xc0\x00\x4f\x5e\x00\xe5\x74\x27\xd6\x56\x9c\xce\xe4\xde\xcc\xcc\x06\x92\x7c\x37\xc2\x30\xa7\xf3\xb1\x81\x44\xbd\x62\x21\xb3\xb2\xb0\x93\xd8\x02\x3c\x27\x02\x96\x67\x0d\xcc\x9a\xd8\x79\x12\x04\x3c\x07\x17\x9e\x79\xeb\x8a\xfc\x47\x87\x93\x96\x70\x9b\x6a\x82\x4e\xc7\xdf\xf7\x6d\xa7\xe6\xea\x67\x77\xa7\x0e\x9d\x74\x85\xc3\xe3\x2b\xa5\x38\xfd\x13\x5c\xfe\x10\x7c\xeb\xc2\xae\xcd\xba\x07\x2c\x28\xb8\xfb\x9b\x41\xbf\xf1\xcb\x62\xe0\x7a\x74\x3f\x5b\x05\xd9\x78\x15\xc3\xae\xc7\xbd\xc7\xf1\xeb\x47\x69\xdf\xbb\xc7\xe6\xbb\xc7\x78\xaf\x24\xa7\x35\x50\x69\xbd\x12\xe2\x21\x63\x4b\x03\x48\xa1\x99\xb6\x3b\xa4\xa7\x57\x97\x28\x6b\x88\xca\xc0\xc6\x05\x3f\x46\x33\x2a\x14\x59\x47\x84\xd2\x50\xb9\xbb\x79\x62\x21\x48\x59\x8b\xf8\x06\xda\x7b\xc7\xbe\x0a\xef\xd8\x4c\x93\xfa\xaf\xee\x35\x6b\xff\x58\xb7\x25\xae\x8e\xe4\x29\x57\x7e\x32\x63\x6f\x87\xd9\xd4\x07\xd2\xe7\x18\xd9\x7c\x16\xb5\x30\x2a\xa7\x4b\xa5\xd5\x69\x10\x75\xd0\xe5\x5c\xd5\x72\x73\x2a\xc0\x23\x78\x20\x14\xdd\x99\x73\xa6\xf1\x4c\x06\xdc\x21\x63\x35\x78\xc6\x8c\x94\x36\x03\x75\xf3\x67\x19\x81\x07\x9a\xe2\x5b\x75\x20\xa4\xb5\x0a\x75\xa5\x32\x4f\x3b\x2a\xbd\x3a\x65\xa6\xf0\x18\x2e\x0a\x76\x0f\x48\x6a\x5c\x93\x9e\x66\x20\xf7\x85\x1c\xab\x49\xe6\x5f\x12\x54\xd2\xa6\x61\x8d\xf1\x9c\x00\xcc\x84\xdd\x76\x51\xd1\x21\xf2\xfe\x4a\x1a\x7d\x45\x6b\x4c\xb0\xc0\x82\x08\x6f\xba\x21\x0a\x20\xae\x74\x72\x93\xfc\xb7\x8d\xe9\xd4\x78\x50\x86\x4f\x2e\xc9\x1a\xdf\x51\xd6\x36\x8a\x3a\x84\xe4\x0b\xf3\xaa\x14\xdd\xe8\x81\xb5\x0e\x4f\xbd\x55\x69\x0e\x6e\x76\xc1\xc0\xec\xde\x3a\xbf\xef\x5e\x56\x57\xee\x9c\x59\x4b\xdc\x11\xf9\x4c\xb9\x48\x9f\x4b\xbb\xc4\xb6\x22\xff\x53\xaa\xb1\xed\x32\x06\xf6\x02\xfa\xdc\x1d\xaf\xa5\xbe\xf0\x6b\x34\x7d\xae\x7f\x2c\xfd\xb7\xfa\x6a\xf1\xdd\x42\xfd\x69\x1b\xa5\xd8\xd4\xbc\xe0\x5a\x63\x34\x69\x2d\x7b\xc5\x38\xd4\xfe\x20\x8a\xb1\x0b\x1f\x28\x68\xf6\x70\x79\x9e\xa6\x22\xba\xb0\x01\xf9\x32\xfa\x11\x73\x92\xa3\x77\xb8\xc2\x37\xda\xa6\xf2\x72\x71\xf5\xe3\xbb\x38\x62\x40\xdd\x30\x65\x1f\xba\x3c\x1f\x71\x40\x3b\xb9\xaa\x3f\xf2\x7e\x77\x99\x9b\x83\xb1\x27\x2b\x0f\x3b\x1e\xfd\x0e\x73\x52\xad\x80\x87\x60\x4f\x6d\x16\x1e\xd1\xc1\x00\xb6\x2e\x12\x1f\xb2\x8f\xbb\x32\xbf\xdd\x4d\x37\x61\x4e\xfe\x6e\x28\xdb\x31\xe8\xe8\x23\x35\x15\x93\x31\xe9\x10\x7e\x26\x70\x73\x43\xc4\x65\x95\x15\x2d\xa7\x77\x70\xce\x7d\xdd\x7f\xcf\x53\xa8\x9c\xad\x8b\x21\x2a\xff\x9c\x87\x75\x00\x56\xdd\x30\xa5\x8f\x34\xb8\xe2\x58\x47\xe3\xd0\xca\x64\xd5\xeb\xde\xe9\x4a\x30\xa1\x6d\x06\xbb\x56\x6a\x6a\xd7\x34\x41\x40\x5d\xbb\x57\x06\x2a\xa3\x2a\x3b\xc4\x05\x2e\x6b\xa4\x8b\x74\xc4\xbd\x76\x0d\xc9\xa4\x76\xf3\xe0\x8a\x3d\x65\x24\xcc\x12\x41\x3b\xb2\x1b\x54\x41\xab\x39\x03\x93\xaf\x79\x83\x33\xbd\xd4\x77\x7b\xa9\x9c\x05\xc7\x54\xe3\x46\xd0\xac\x2d\x70\xa3\x66\x44\xd2\xd2\xf5\xa6\xf2\x2e\x88\x5b\x30\x4b\x14\xe1\x82\xe9\x0b\x75\x98\xc3\x29\x5d\xd0\x76\x4d\x9d\xec\x7b\xcc\x2d\x1e\x8b\xdc\x60\x5a\x53\x5e\x62\x2e\xff\x27\xbb\x6d\x6b\xf9\x40\x90\xa6\xc0\xb7\x24\x18\xdf\x95\x30\xd9\xff\x3b\x2c\x71\x46\xe6\xf9\x7f\x5f\x9e\x0f\xf7\x8f\xb7\xdd\x2f\xcf\xf5\x1e\x0a\x0e\x40\x57\xc8\x78\x8c\x3d\x14\xe5\x31\x0d\xe1\x93\xf1\x41\x10\x1e\xd3\x36\x41\xab\xf9\x2e\xba\xc8\xff\xb2\x4d\x07\x97\x6d\x76\x1b\x0e\x81\x02\xed\x0e\x52\xe5\x8a\x53\x6d\x4d\xa8\x6e\xc8\x8a\x7e\xde\x9a\x4c\x43\x6e\x22\xb0\x99\x3b\x99\x7a\xad\x51\x2c\xa2\xbe\x84\xe8\xc7\xf8\x3d\x5d\x6d\xb5\xd1\x3a\xc4\xaa\x67\xb1\x02\x91\xa9\x0b\xfe\x59\xb3\x90\xc5\x24\x70\x4e\x6c\x3a\xf0\x3d\xbf\x28\x30\x17\x34\x53\x65\x31\xa4\xda\x37\xb9\x30\x83\x8c\xeb\x4f\x8b\x8d\x37\x7b\x57\xb3\x0a\x9d\x7e\x5a\xa0\x73\xca\x6f\xe3\xb8\x34\x2e\x46\xd3\x66\x4a\xa9\x68\x0a\x73\x31\x3b\x38\xe8\x5f\xcd\x6c\x74\x56\x65\x81\x8f\xa6\xc9\x32\xeb\x6d\xda\xda\x73\x84\xef\x39\xd1\xc3\x5d\xca\xe1\xca\x3f\x4f\x96\x3e\x80\xec\xc1\xf8\xe5\x70\x4e\x3d\x0e\x55\x6f\x23\x2c\xe0\x92\x6a\x71\xf4\x6a\x6d\x04\xe9\x02\xeb\x70\x0c\xea\x6c\x04\x49\x26\xdc\x2e\xe1\xb7\xc7\x47\xd8\x06\xc1\xef\xed\xbe\x18\xc7\x9c\x42\x1c\x30\x66\x26\x95\x34\x11\x11\x05\x9b\x89\xab\xee\x35\x3b\x98\x2d\xf6\xe4\xe5\x0a\xb1\x92\x0a\x61\xa3\x68\xfa\xea\xa1\x2e\xd4\xb7\x7c\x80\x44\x6d\xeb\x1c\xda\x6e\xdf\xbd\x75\x65\xc1\xd0\x49\x4e\xee\x4e\x78\x8e\x5f\x1f\xaa\xee\x71\xe3\x7c\x8f\xa9\x9b\xdd\x38\x31\x47\x2f\x5e\xbf\x38\x46\x0b\x5a\xd2\x02\x37\xc5\x43\x2f\xe4\xa7\x7b\x2e\xe6\x3f\xb2\x1d\x51\x29\x8c\xdf\xbe\x40\x2f\x59\xa3\x7a\x94\xe1\x0a\x15\x04\xdf\x11\x9b\x7e\x20\xb9\xc9\x03\x22\x65\x2d\x1e\x5e\x05\xc3\x68\xa0\xc1\x33\xb0\x90\x19\x88\x5f\x71\x10\xf4\x6d\xe6\xf2\x85\x68\x5a\xf2\x42\xb9\x16\x95\x4f\x50\x72\x6c\x4e\x04\xbc\x64\x82\x1b\xf4\xc0\x71\xa8\x8c\xb6\x8a\xf8\xe4\x66\x09\xd2\x95\x33\xad\xbc\x9d\x2f\x9e\x54\x22\x20\xf0\xe5\x53\x53\x4f\xb8\x39\x1c\x7c\x54\x1e\x17\x79\x3b\xb0\x30\xef\x5d\x72\x72\x0e\x92\xbe\x48\xa7\x82\x48\x71\xfd\xf2\xb4\xc4\xbf\xb3\x0a\x5d\xfc\x68\x3d\x3d\xaf\xbe\xd0\x44\x05\x99\x55\xcc\xba\x72\xe4\xe6\x71\xae\xba\x8a\x7f\x6f\x1b\x22\x95\x17\x90\x36\x74\x6a\x9f\x1e\x6a\x40\xf2\x77\x1d\x30\xad\xfe\x6a\x4b\x8d\x06\x14\x21\x9b\x47\x5c\xe5\x68\x49\xad\xa1\xda\xd7\x64\xb6\x51\x7c\x95\xa4\xb8\x89\x65\x2c\xf4\xf7\xd7\x7f\xcb\xee\x9c\xe9\x37\x75\xf4\x26\x7a\xcf\x2a\x72\xa8\x0e\x32\x92\x27\xd9\xfc\xf3\x53\x43\x05\x09\xb2\x27\x90\x18\x92\x7b\x36\x66\xaf\xdc\x08\xcc\xf3\x1d\xd1\xaa\x90\xbe\xda\xf9\x46\x20\x2d\x0b\xb6\xb4\xf7\x8f\x5d\xf4\xee\xe3\x87\xcb\xa4\xce\x7d\xfc\x70\xf9\xf8\x1d\x4b\x54\x28\x77\xe8\x69\x78\x14\x2f\x43\xba\x87\x01\xaa\x03\x82\x66\xf3\x96\x56\x09\x95\x06\x2f\x3e\xd7\x3a\x15\xc0\x44\x6a\x2c\xd6\x58\xc1\x8f\xba\xd2\xa7\x6a\xa1\xe5\xca\x87\xad\x4f\x35\x69\x5c\x42\x9f\xad\x5a\x89\xce\x89\x4e\x00\xcd\xdf\xd8\x02\xaf\x8e\x9a\xff\x42\xd8\xe3\x65\x89\x69\x13\x7e\xfe\x46\xf3\x37\x54\xea\xff\xf4\x76\xe6\x4b\xe5\xc5\xa7\x95\xfd\x53\x98\xec\x1d\xa6\x05\x5e\xd2\x82\x0a\x15\xea\xf3\xea\xb8\x07\x22\xab\x2a\x25\x06\x2b\x18\x02\xed\x13\x89\x6a\x08\x34\xb4\x49\x85\x2e\x85\xad\x69\xbb\x0b\x6b\x82\x88\xff\xb8\x58\xb3\xcc\x31\xf8\xc0\xc7\x0f\x97\x5b\x89\x3d\xc9\x1b\xe0\x62\x4f\x3e\x3d\x2a\xf6\xd4\x1f\x16\x06\x6b\x20\x5c\x68\xd3\x2f\xb2\xf9\x28\x92\xef\x5f\x67\x0f\x41\xc3\x75\x7b\xa3\x15\x5e\xfa\xad\x9f\xa4\x69\x2c\x65\xdc\xac\xe8\x02\xc0\x6a\x0c\xf2\x8d\x96\xc8\x72\x2d\xff\x16\x8c\xd7\x06\x71\x00\xc5\x48\x92\x06\xa4\x38\x30\x8a\x44\x96\xec\x44\xd1\xec\x66\x7b\xfa\x11\xdb\xfd\xb9\xa7\x32\x23\xf5\x7a\x35\xb9\xbb\x7b\x03\x3f\x23\xf5\xfa\xed\x20\x74\x58\x15\x43\x7c\xbb\xd8\x2c\x74\xaf\x16\x39\x3c\xeb\xe0\x22\xf7\x90\x53\x08\xa9\xed\x38\x05\xe5\xfd\xce\xbc\xab\x0b\x28\x6f\x56\x7b\x0c\x6e\x4a\xfb\xe1\x94\x12\x59\x7a\xd2\xe7\x54\xc9\x02\x24\x94\x25\xc5\xe6\x84\xb3\x0e\x62\xe9\x2c\x53\x69\x54\xaa\x98\xb8\xa9\xa2\x6e\xa3\x61\x1a\xc6\xc4\x21\x6a\x70\x14\x96\x52\xe1\xb1\x28\xcb\x55\x5b\x14\x7a\x83\x89\x86\x90\x43\xdf\x62\x73\xf2\xf4\x92\xdf\x1b\x5e\x84\x81\x07\x47\x07\x2a\xf9\x38\x2f\xb6\xf9\x49\x36\x60\x8a\x9c\x08\x09\xfb\xd0\xfc\x2e\xdc\xdb\x53\x45\x6a\x83\xf3\xb0\x62\x8d\x2a\xf4\xde\xdf\x31\xae\x3a\x6d\xcb\x49\x73\x6c\x24\xd1\x8e\xca\x6a\x6f\x3b\x9d\x31\x19\x05\x09\x44\x0f\x4f\xa6\x29\x85\xe9\xb2\xa9\xad\xee\x93\x50\x0f\xd3\xab\x85\xb9\x31\xbb\xca\x7e\x98\x54\xcb\x72\xfe\x94\x41\x63\xe4\x20\x61\xe7\xcf\x3b\xe4\x3c\x35\xdc\x1c\x14\x4a\xbe\xcb\xd0\xcd\x58\x39\xca\x80\x7c\x68\x1c\xe0\x5a\xbf\x38\xe5\x21\xd4\xd6\xaa\x0a\x57\x3e\x25\xcf\xdb\x52\x99\x8b\x14\x9b\x8c\x2b\x6a\xb4\xca\xa7\x67\xbb\x3f\xd3\x67\xea\xd9\xbe\xa6\xa6\xdf\x1f\x06\xb3\x06\x33\x71\x63\x81\xac\xa0\x03\x5f\x3e\xf0\xdf\x8a\x23\xfd\xf5\xa3\x1a\x00\x3f\xf0\x14\x2e\xce\xa7\x33\x49\x41\x40\x02\x1e\x03\x20\x00\x00\x0e\xb0\xf5\x4a\xa1\xbd\xb2\xf5\x48\xf3\x09\xd3\xaf\x66\x6a\x04\x2a\x42\x88\xeb\x38\x08\x23\xd4\x35\xdf\xb1\x77\xf2\x68\x75\x50\xdc\xe0\x92\x08\xd2\x28\xbe\xad\x36\x65\xc6\xaa\x4a\x65\xfd\x33\xf4\x4b\x4d\xaa\x85\xc0\xd9\x6d\xd0\x5e\xbf\x97\xe2\xcf\x46\x8a\xa7\xfb\x05\x8d\x10\xa1\xb9\x5b\x7f\x07\x8e\xeb\x79\xab\x69\x65\x84\xce\x97\x3c\x49\x5f\xd8\xd7\xa7\x2b\xe6\xbd\xc3\x93\xb8\x7b\x7d\x0b\x8b\x7d\x7a\x20\xba\xdd\xcf\x49\xe5\xcd\xe2\x55\xe8\x20\x87\x10\x58\x8a\x6c\x46\x19\x32\x2d\x71\x83\x7b\x23\xb1\x04\x19\x0c\x6c\x0f\x5a\x7e\xac\x57\x5e\x2c\xd6\x4d\x60\xe9\x31\xaf\xb6\x4a\x90\x22\xb0\xec\xd8\x46\x59\xb1\x20\xd1\xed\xea\xa8\xec\x36\x00\x24\x6a\xc8\x9a\x51\x62\x2c\x3a\x01\xc1\xf2\x62\xdd\xe1\x4b\xab\x30\x36\xa3\xba\x98\xad\x1e\x16\xbb\xe3\x40\x2b\x8b\xcd\xed\x71\xb0\xaa\xd8\x46\xd5\xb0\xb0\x4e\x00\xa8\x28\xb6\x59\x31\x2c\x62\x08\x24\xdd\xa2\x4c\x14\x14\x1b\x29\x18\x16\xb6\xd6\x06\x8b\x89\x05\x8b\x85\x45\xfb\xba\x59\x48\x0c\x56\x28\x0c\x60\xd3\x4d\x2e\x10\x06\x2a\xff\x05\x4f\xe2\x07\x95\xfd\xda\xba\xe4\x57\x42\x86\x3b\xac\xd4\x57\x6a\x99\x2f\x5d\xc0\x2b\x4a\x16\x01\x4b\x7c\xa5\x16\x65\x40\x91\xf2\x5e\x1b\x85\xbb\x00\x14\xa3\xa5\xbd\x86\x22\x06\x40\x33\x26\x84\xc6\x04\x0d\x64\x52\x13\x4b\x7a\xa5\x95\xf3\x4a\x29\xe5\x05\x2b\xe3\x95\x54\xc2\x0b\x95\x38\x86\x7e\x8c\xcc\x06\x80\x94\xef\x4a\xa8\xb8\x05\x2b\xdd\xe5\x31\x2c\x60\x37\x93\xca\x76\x25\x14\x9c\x81\x94\xeb\x8a\x97\xea\x02\x94\xe9\x02\x56\xc9\x80\x38\xca\x62\xb7\xd4\xe7\x7b\x43\xdd\xf9\xed\x14\xb4\xd2\x90\x52\x66\xd1\x32\x66\x9d\xc2\xe6\x55\x32\x53\xac\x39\xac\xac\x43\xaa\x98\x41\xcc\x30\xf1\xcb\x1f\xa7\xb0\x6b\xdf\xe2\x12\xbd\x3c\xb3\x99\x43\x2e\x41\xfa\xb2\x12\xa4\x59\xe1\x8c\xbc\xf2\xaf\x83\xb1\x98\x2c\x9b\xef\xb2\xc6\x55\x5e\x68\x03\x25\xae\x10\xf9\x2c\x48\x53\xe1\x42\x7d\x2b\x6f\xe8\x1d\x69\xd0\xcb\xd3\xa2\x5e\x63\xb4\x22\x58\xb4\xcd\xb4\x29\x0d\x74\x49\x54\x14\xe1\x11\x30\xba\x03\x46\xc3\xf5\x6b\xce\x7b\xdd\x53\x03\xd1\xa3\x88\xdc\xe7\xfc\x12\xde\x67\xac\x52\xb2\x47\x09\xba\x07\xd6\x36\xc6\x51\xd0\x41\xc9\x34\xf2\xd2\xa7\x3e\x1a\xa4\x8a\xb9\x41\x1f\x26\x8d\x2a\xc4\xab\xdf\x2e\x5a\xf9\xc3\xd6\x31\x80\x3b\x8b\xa8\xf4\x62\x1e\x93\xf2\x5e\x56\x03\x98\x14\x39\x38\xe5\xc4\xeb\x50\xbb\x6b\xcc\xb5\x71\x27\xaa\xf8\x7a\xd5\x07\xbc\xf5\xd3\x2a\xbf\x52\x5d\x72\x22\x48\x53\xea\x54\x5a\x58\x30\xbd\x9f\x2c\xc4\x10\xae\xeb\x22\x08\x6e\x04\x9a\xf4\x8a\xe5\xe4\xaa\x5d\x16\x94\xaf\x17\xc9\xf6\xd3\xf7\x23\x2f\xeb\x78\x91\xa1\x4f\x15\xe2\x44\xdd\xb0\xb7\x8e\xe3\xde\x28\xed\x19\xf3\xa8\x39\x63\x78\x72\x98\xca\xe4\x29\x88\x20\xee\x4f\x5e\xff\x7f\x05\xc0\x8a\x55\xb9\x7a\xe3\x63\x55\xfb\xef\xa0\x0c\x17\x05\x37\x1a\xa8\xbe\x47\x53\xee\x98\x79\x78\xeb\x49\x92\xea\x4a\xb5\xb4\x3b\x8d\xaa\x62\x45\xb6\x7a\x23\x77\xa2\xdf\xa0\xfd\xd8\x92\x69\x61\x3b\x49\x6f\x22\x39\x2a\x99\x4e\x39\xab\x10\xab\x2c\x81\x43\x84\x8b\xc2\x7e\xa7\xc3\x2c\x0a\xf7\xb6\x21\xe6\x00\xec\xa2\x8e\xe1\xde\x88\x3d\xda\x76\x69\xc4\x4e\x76\x31\x2d\x5c\x32\x3c\x56\x2f\x1f\xa9\xe8\x64\x8b\x70\x82\x6d\x96\x55\xf4\x44\x5b\xc1\x33\xdf\x4f\x95\x92\xbd\x73\x2a\x44\x43\x97\xad\x08\xef\x38\x9c\xe7\x54\x9f\xc9\x2b\xe0\x0e\x05\x2e\xc5\x48\x45\xb3\xae\x47\x4a\x35\x21\xdc\x70\xa1\x23\x73\xf1\xcd\xbc\x53\x12\x91\x24\xf2\x1e\xea\xce\xdd\x26\x5f\xeb\x84\xbb\x92\xeb\xfa\xc7\x83\x30\xd1\x9c\x65\xad\xbc\xec\x74\xeb\xd9\xb9\x6e\x75\x44\x7d\x7c\x65\x82\x3b\x0f\x10\x57\xad\xfa\x39\x57\x87\xcc\xd9\x7d\x75\x8f\x9b\xfc\xf4\x6a\x32\x31\xa4\xaf\x5a\x75\xcf\xfb\x5a\xa3\x25\xa3\x8a\x47\xe2\x25\x6b\x85\x0d\x7d\x0e\x2b\x92\x03\x5f\xc3\xde\xa7\x30\x35\x59\x7b\x9f\xc2\x1f\xce\xa7\x20\x9f\xd6\x2a\x5c\x41\xb9\x90\xd2\xb6\x77\x4a\x8c\x1d\x4e\xce\xce\x0e\x8d\xb7\xde\xf9\xd4\xfc\x73\x98\xe3\xe0\xa9\x7f\x31\xf1\xc9\xcc\xae\xef\x56\xd1\x53\x28\xcd\xf1\xd6\x22\x7a\x47\x66\x60\x45\x0b\x50\x10\x77\x3a\xd4\x7a\x41\x0a\xa9\x7c\xa0\x81\x1b\xa6\x66\x80\xfa\xec\x48\x97\x01\xc5\x55\xc5\x34\x3f\xe7\x87\xa8\xc0\x4b\x52\xf0\x43\x7d\x87\x94\xfb\xb5\xab\x5a\x09\x01\x10\x42\x9d\x38\x00\x18\x1c\xd3\xa0\x32\x3a\x9d\x68\x06\x22\x80\x79\xd3\x95\x38\xcf\xd6\xa4\xc4\xea\x9f\x6f\xe5\xbc\x45\xca\x7a\xf9\x8d\x72\x24\x55\x10\x41\x74\x12\x3d\x69\x4a\x8e\xd8\xea\xb0\x97\x4d\xf5\xe2\xee\x75\x14\xe3\x56\xb7\x44\x44\x8e\x95\xed\xec\x8c\x29\xb8\xea\x19\x51\xe5\x66\x11\xf2\xb6\x20\xf7\x0f\xc4\xd7\xd7\xb5\xce\x0b\xa5\x8e\xb5\x9e\xd9\x2f\x8c\x34\xb0\x02\xaf\x62\x02\x90\xc0\xde\x29\xb2\x77\x8a\x3c\x2b\xa7\x88\xc7\xf8\xd5\x69\xa6\xdc\x02\xba\x78\x8e\x12\xc0\x24\xf8\x16\x42\xeb\x4f\xf1\x8a\xd5\x6a\x35\xce\xba\x4a\x8c\x9f\x04\x22\x4e\x9a\x3e\x10\xd4\xc1\xf1\xf1\xc1\x81\xf5\xaf\x98\xcd\xdc\x8a\xd5\xd1\x0f\x88\x54\x19\xcb\xe3\xd5\x43\x65\xbb\x56\x7d\x6c\xb8\x50\xaa\x41\x77\x87\xf7\x5d\x43\xa5\xed\x2f\x0c\x6e\xca\x02\x4e\xa9\xfe\xc5\xb7\x40\x02\xd3\xb2\xf5\x1b\xde\xce\x14\xec\x9d\x38\xb7\x94\xec\x80\x41\x85\xb0\x6c\x53\x72\xdd\x52\xe0\xa8\xa0\x25\x55\xd9\x9e\xb9\xe2\xa9\x84\x0b\x8e\x5e\xea\x1f\x8f\xb3\xba\x85\xf0\x0c\xf3\x74\x49\x4a\xd6\x3c\x1c\x3a\x32\xf2\xf5\x1e\x5d\xf3\x44\xbc\xdc\xa8\x36\x09\x99\x02\x80\xc5\xc3\x23\xea\x0d\x6e\xe6\x20\x95\x55\x75\x1b\x44\x7f\x3b\x4f\x82\xb2\x3b\x39\xb9\xa4\xae\xbf\x26\x1a\x1e\x56\x9a\xbe\x73\xd4\xa8\x77\x49\x75\x87\xee\x70\xc3\x61\x68\x4b\x89\xaa\x42\x4e\xef\x28\x67\xa0\xed\x32\x69\xc9\x91\x1b\x8f\xb5\xa2\x6e\x85\xe1\x83\x66\x37\x02\x07\x6b\x6a\x7e\x75\x3b\x71\xa0\x25\xbd\x0e\x87\x5c\xdb\x96\x38\x70\xfb\xb5\x39\x4b\xdd\xf1\x57\x77\xfe\x9c\x92\xf4\x08\xab\x94\xa2\xe1\x80\x4a\xc3\xa0\x14\x05\x07\xea\x1a\x7e\x3a\xc7\x6f\x94\x90\x32\x74\x9f\x53\x60\xda\xc6\x85\x79\xba\x1f\xfd\x29\x48\x59\xb3\x06\x37\x0f\x28\x37\xb6\x85\x87\x84\xe4\x5a\x2f\xbb\x76\xeb\x6a\x3b\x6a\x34\x39\x6d\xb6\xc9\xdc\x28\x49\x4e\xdb\x20\x2e\x75\x7f\x4e\x3e\xa9\xf2\x71\xa6\x2c\x9d\x2d\x60\xa1\x89\x38\xd0\x71\x9c\xdd\xc6\x51\xfa\xdc\xe4\x6d\x54\x87\x7d\xf1\xc2\xf8\xaa\x4a\x82\x2b\xa7\xfd\x2a\xcf\x24\xcb\xc9\x41\xcc\xc2\x68\x08\xe9\x3e\x79\x26\xa5\xca\xb8\x39\x4c\x9c\xc4\x4b\xf3\xe0\x2b\xa9\x76\xbc\x53\x52\xe7\x51\xcb\xc9\xc5\x16\x0b\x81\xb3\x0f\xe9\xef\xe4\x67\x29\x4e\x13\x6a\xb7\x31\x81\x0b\x84\x4d\x52\xf8\x0a\x15\x2c\xc3\x85\x5b\x3d\x5f\x1e\xc5\x1d\xbb\xee\x50\x58\x43\xbb\x5c\x3d\xd9\x27\x2d\xe3\x95\x01\xa7\xe0\xda\x47\x48\x33\xbc\x0c\x5a\x6b\x74\x72\xa8\x96\xf9\x6e\xc5\xae\x55\xa1\xbb\xcf\xb4\x6c\x4b\xd4\x72\xd9\x43\x56\xf5\x9f\x09\x52\x74\x1d\xbc\xb7\x10\xf8\x2a\xed\x99\x56\x8a\x60\xff\x2a\xa4\xea\xb2\xdb\xf9\x0c\x3b\x0a\xdd\xa5\x55\xe5\xae\xd8\x4b\x04\x6f\x95\x4a\x69\x7a\x67\x14\x25\xb6\x52\x1e\x2e\xa7\x38\x84\x37\xac\x0a\x0f\x54\x75\x2b\x07\xe7\xa0\xa2\x45\xff\x20\xd8\xca\x8d\x45\xb4\xb7\x94\xa3\xb6\x32\x51\x15\x1b\x6c\x66\x7c\xe3\xb6\x9c\x34\x47\x37\x2d\xcd\x77\xbe\x65\xa3\x5c\x79\x95\x81\xf8\xf1\xdb\xb3\x3e\x23\x7e\x4b\x97\x0d\x41\x67\x6b\x5c\x55\xa4\xf0\x04\xae\x0e\xb8\x98\xec\xf3\x78\xe1\xd1\x48\xdd\xd1\x98\x2f\x79\xcb\x9a\x25\x7f\x9c\xfc\xb9\x2f\x5d\xd2\xe9\x0f\x55\x66\xb3\x68\x13\x0a\x6c\x76\x96\x9f\xb7\x67\xb6\xcc\x7d\xd1\x56\xa8\x6a\xcb\x25\x09\x9e\xc1\x2f\x5d\x0a\xf2\x39\x24\x07\x6e\x9f\xc3\xa7\xa7\xfc\xd3\xa7\xf7\x09\x35\x4b\xc6\xd6\xec\x9e\x35\x45\x7e\x4f\x73\x8b\x97\xf5\x52\x92\x7c\xf5\x7c\x8a\x88\xdc\xdf\xd3\x7c\xee\x10\x2d\xd2\x95\x1c\x22\x52\x63\x74\x00\x1b\x11\x29\xf7\x52\x7d\xf6\x15\xba\xa0\xca\xae\xa7\xfe\x4b\x1b\x7c\xca\x25\xad\xb0\x2d\xef\xd2\x2d\x42\x14\x93\x58\x9e\x0d\x6b\xe2\xe4\x44\x1c\xa2\x65\x6b\x8c\x4e\x4c\xac\x11\xa7\x65\x5b\x08\x5c\x11\xd6\xf2\xe2\x21\xb8\x3d\x9e\x72\xfa\xe3\xb2\xb0\x20\x9f\xc3\x90\x49\x7d\x99\xe8\x1e\xef\xcb\xc6\x1b\x52\x91\x86\x66\x76\xc1\xc0\x55\xb9\x55\x04\x1a\xa7\xac\x22\xf9\x89\x13\x94\x1a\x21\x4b\x45\x2d\x92\x4c\x61\x2c\xe4\xa8\x2e\xda\x1b\x3a\x69\xb5\x7f\xd2\x18\xc5\x2e\xca\x0a\x82\xe4\xe8\x47\x27\x6e\xcb\xdf\xbf\xee\x42\x8c\xbe\x3a\xea\x89\xd3\x9c\xd4\xa4\x92\x87\xb7\xf2\x76\x5f\x58\x77\x56\x53\xb0\xf5\x6c\x1b\x5f\xc0\x97\x0f\xb4\xf1\x78\xe2\xc5\x67\xd1\x60\xc9\xc4\x4a\xa9\x31\x5a\x6f\x05\x5d\x21\x5c\x85\x99\xce\xe3\x04\x51\x7d\x25\xa2\xf8\x11\x0b\xec\x24\xc7\x30\x46\x83\x41\x21\x61\xa6\x9a\x5b\x9a\x83\x60\x03\x36\xa7\x83\x2f\x01\xc6\x37\x3f\x9b\x6f\x10\xa0\x39\x1d\x84\x19\x1e\xf6\x68\x80\x26\x1f\x09\x01\x1b\x8c\x66\x5f\x56\x00\x3d\xff\x88\xcc\xc7\x8e\x8b\x5b\x15\x2c\xbb\x05\xd6\xc3\x79\xab\x9f\x1d\xdc\xe6\xcd\x8f\xc3\x82\x38\x81\x78\xf7\xa9\xdb\xbb\x39\x5f\x9e\xa0\x52\x81\x1a\xe6\x03\xf2\x58\x34\xac\x08\x30\x1f\x5d\xc6\x74\x49\xe4\xd1\x6f\xda\x2a\x50\x7f\x03\xa4\xe7\x60\x81\x79\x62\x91\xce\x61\x8d\x6b\x4e\x84\x8e\xe6\x54\x65\xfc\x4a\x22\xb0\x2a\xe3\x7b\xf4\xd7\x78\xde\x84\x19\xbd\xa5\xb2\x62\x8d\x9b\x09\x6b\xaf\x55\xde\x41\x4e\x73\x62\xe8\xe7\x72\x5d\x54\x1d\xe2\x6d\x45\xb6\xf9\xea\xc7\x8f\x09\xd5\x2c\xe4\xc3\x83\xb1\x9b\x05\x55\x56\x2d\x55\x01\xbf\xbb\x75\x84\xc7\xbe\xf2\x36\x96\xa1\xf5\xc8\xb6\xac\x9b\x8c\x5c\xb9\xa2\xfc\xe0\xa2\xf2\x07\x3f\x9d\x5d\xf4\x5f\xeb\x1f\x8e\x9f\xce\x2e\xbe\x1a\x78\x9d\x9b\x8c\x74\xb0\x05\x39\xe5\xb7\x7b\x6c\x9d\xae\xfd\x8b\x60\xeb\x6c\xec\x81\xaf\xc5\xe2\xb7\x07\xd6\x09\xeb\xc1\xcf\x04\x58\xe7\x49\xf7\xf6\xd3\x99\x6e\xeb\x3c\x49\xcb\xb0\x78\x32\xbe\x31\xe5\xea\xbc\xf3\xa4\xd0\x4a\x0a\x9e\x63\x55\x3e\x38\xb6\xf9\x7a\x05\xa7\x2c\xf0\x85\x7a\xfb\x29\xa7\xf3\x91\xaa\xdf\x25\xdd\x87\x63\xce\xbe\xde\x5d\x79\xf3\x9a\xfe\x25\x26\x6c\x5b\xa8\x02\xbd\xef\x66\xab\x4c\x54\x7c\x20\xf5\x64\xc9\xdf\x81\xa2\xa4\x1f\x1e\x58\x3b\xa9\x90\x3f\x30\x4e\x55\x34\x06\x16\xaa\xfc\x8a\xc5\xa1\x0d\x6c\x04\x6d\xeb\x3c\x46\xe7\x17\x57\x1f\x2e\xce\x4e\xaf\x2f\xce\xdf\x20\xfb\x05\xea\x2b\xc2\xc7\xe8\x9a\x75\xc6\xd1\xc0\x8d\xc4\x39\x7d\x75\x8c\x60\xd7\xb7\x43\xc3\x7a\x71\xd5\x79\xa8\x35\x9c\x6e\x85\x2e\x2b\x2a\x5c\x94\x58\x58\xb5\xcb\x0a\x56\x99\xc8\x2a\x49\xd5\xd8\x66\x6f\xa8\x38\xd4\x8a\x9c\x41\x52\x58\x93\xfe\x57\x02\x44\x09\xba\xd2\x71\x29\xae\xeb\x93\x37\x7a\xd0\x75\xc7\xc6\x75\xc0\x71\x73\xb4\xdf\xa4\x8b\xa6\xd1\x72\xc7\x05\x91\xda\x98\xd0\x88\x24\x18\x56\xf8\x41\x52\x12\x1e\x1c\x1f\x58\xe5\xab\x70\x95\x9a\x6c\xf0\xb2\xfd\x60\x90\xac\x0d\x6b\x96\x2f\xf6\xf7\xd9\x31\x42\xbf\xc8\xab\xfe\x3d\xe5\xe4\x50\x6a\x4f\xc0\x28\x6a\xaf\x0b\x8a\xb8\x1f\xf3\x3a\xd8\xc9\xe6\x57\xde\x2e\xa1\x9d\x35\x60\xf3\x1a\x2c\x3b\x86\xc5\x0e\x64\x97\xb6\x3b\xe0\x15\xfd\xd0\x8d\xe0\xe3\x87\x9f\xb7\xef\x80\x3e\x75\xe0\xcf\x9f\xb1\xb2\xa4\x02\xad\x31\x5f\xbb\x3a\x03\x5d\xfc\x86\x3b\xf5\xdb\xf5\x2b\xce\x15\xbb\x89\x9b\xcd\x19\x75\x79\x03\x20\x1e\xc4\xc1\x4f\xf6\xf1\xc1\xe5\xd1\xfd\xec\xa3\x42\x4c\x8e\xde\xa1\x45\xa4\x05\xae\x4d\x95\x79\x76\x63\xd8\x4d\xa5\x61\x8b\xa8\x9c\xe0\xc1\xbc\xb0\xaf\xbc\xf7\x2a\xbf\x59\x3a\x5a\xf9\x51\xc3\xcd\x89\xc0\xb4\x08\x5b\xfa\xba\xb9\x14\xac\x66\x05\xbb\x49\xab\xb2\x3e\x32\x19\xdf\xe8\xa8\xf9\x23\x7c\x24\x67\x79\xfb\xfb\x47\x0a\x42\x84\x4d\x02\x90\x13\xd2\x8d\xcc\xe9\xe0\x2a\xee\x7e\x37\x15\xf9\x1f\x7d\xe0\x3b\x56\xea\x86\xb3\x11\x53\x7f\x97\x1d\xb0\x86\xe2\xc1\x5d\x06\x7b\x4d\x9a\x92\x72\xc9\x70\xfa\xda\x5e\x90\xe2\xb4\x26\xf8\x78\x13\xbc\xad\x12\xe8\x4e\xe6\xb4\x9a\x38\x1d\x08\x1c\x65\x85\x92\x2b\x85\x12\xd7\x36\x81\x0c\xd5\xe6\xee\x31\xc2\xba\x21\x47\xe4\x33\xe5\xca\xa6\xa2\xf2\x56\x58\x03\xd0\x02\x7c\x14\x1d\x6b\x38\xb3\x66\x36\xfd\x76\xf1\x30\x88\x13\xf3\x74\xa9\x49\xb2\xd6\xa4\xa9\x5c\xf5\xb8\x28\x1e\x74\xf1\x5e\x95\x13\xaf\xcd\x18\xf8\x46\x75\x9c\x35\xc6\xa5\x50\x37\xf4\x8e\x16\x24\x04\xd5\x26\xd6\xb4\xba\xe1\x5d\xee\x3e\x2e\x0a\x76\x4f\x4c\xaa\x1e\xd9\x18\x87\xdc\x62\x5c\x40\x22\x15\xd5\xf9\x78\xff\xcb\x35\xaa\x88\x24\xb7\xa6\x7c\xeb\x8b\x8a\xec\x48\x30\x36\xfc\xe8\xe8\x48\xd9\x7e\x5e\xfe\x53\xea\xbc\x79\xf1\x0a\x7d\x22\xe6\xfb\xf2\x02\x20\x39\x42\x26\xd0\xfd\x9a\xa9\xdb\x7e\xcb\xcd\xd8\xe2\x2b\x5a\x6a\x80\x59\x5c\xe5\xf6\xed\x13\x49\x41\x2a\x9b\x5a\x44\xf6\xe8\xa8\x9a\x14\x1c\x75\xde\xd3\xad\xf4\xe3\x19\x1c\xda\x1a\xc3\x9d\x82\xec\xed\x48\xeb\xfb\x8b\x98\x5d\x34\x9f\xc7\x88\x3f\x94\x05\xad\x6e\x0f\x11\x15\x96\xe5\xc9\x1d\x62\xc2\x4a\xab\x5b\xbb\x7f\x1b\x82\xa7\x3d\x24\x96\xe4\xce\x76\xc0\xd6\xdc\x5f\x24\x19\x81\xaf\x1f\x6a\x15\x27\x82\x1c\x9b\x30\x21\x34\xfe\x65\xfc\xc5\x0b\x35\xba\xc8\x6d\xfe\x0b\x8f\x1c\x70\x35\xdf\x82\xe7\x52\x0e\xad\x98\x76\x70\xb9\x38\x5b\x5c\x0e\xa0\x01\xf5\x6f\x3d\xb7\xc5\xcc\xe0\x5c\x40\x74\x6e\xf0\x82\x3b\xe5\xb6\x98\x12\xa6\x6a\xe0\xbb\xd1\x57\xb3\x35\xae\x4f\x5b\xb1\x3e\xa7\x3c\x63\x77\x24\xe1\x12\x65\x4b\xeb\x19\xc7\x01\xa2\x76\x3a\x35\x1d\x74\xf6\xdf\xa7\x57\x70\xbc\x20\x58\xe0\x85\xed\xed\x82\xf0\xa4\x1b\xd7\x78\x5f\x0d\x95\x47\xe9\xe9\xde\xf1\xf3\x87\x74\xfc\xa8\x93\xf5\xb5\x38\x7b\x68\x45\x05\xc5\x82\x45\x33\x43\xfb\xd6\x89\x96\x0b\x56\x9a\x23\x72\x69\x49\x28\x97\xbf\x12\xe6\x3d\xaa\x61\xf1\xd3\xab\xe8\x4d\x95\x8c\xcf\x38\x75\x75\x2a\x07\x41\xb0\x87\xa8\x22\xf7\xfa\xbb\x11\xa9\x66\xdf\xff\x2f\x13\xd2\x2c\xf7\x2f\x2e\xfe\xfa\xe6\xbf\xcc\x71\x91\x77\xe6\xbf\x3a\xcb\x98\x49\xfb\x0e\x5f\x68\x5c\xb9\x47\x85\x4b\xb2\xbd\xf9\x05\x21\xfa\x1b\x9c\x3f\x19\x13\xa3\x9e\xf3\xbf\xb7\xb8\xd0\x73\xf6\x7e\x17\xf6\xb1\xfe\x9c\x83\xbb\x64\xd7\xdf\xce\xf5\x7b\x67\x87\x68\x39\x51\xf2\x53\x3f\x21\x1a\x5c\x71\xb9\x00\xe1\x73\xe9\xab\x2e\x07\xc6\xe5\x77\x80\x5e\x8a\xac\x06\xd4\x3a\xdb\x61\x1a\x83\xee\xb4\x99\xef\x9f\x5d\xfa\x42\xa8\x0f\x3b\xf6\x81\xa9\xbd\x0a\x37\x0f\xf5\x3a\x7c\xa5\x5e\x46\x3f\x53\x2e\x74\xfc\xab\xa6\xa6\x20\xf5\x68\xb4\x42\x84\xd4\x79\xae\x54\xf1\xdb\xfa\x1f\x38\xcf\x9b\x37\x5a\x16\xda\x92\x3a\x8d\xba\x31\x32\x53\x2f\x17\x57\xa0\xc2\x9b\x2f\xc5\x43\x4d\x33\x75\x3d\xbc\x3e\xbb\x52\x54\x38\xfa\xe1\x7b\x5d\xc3\xe3\x2f\x7f\xfe\xfe\xdb\xe0\xf2\x3e\x6d\x66\x41\xb2\x0d\xe6\x49\xfd\x6a\x5b\xab\x1c\xe9\x51\xa9\x4a\xf1\x59\x74\x38\x8d\xe6\x44\xeb\xbd\x26\x17\xd0\xf1\xfa\xf0\xbe\x82\xaa\x4e\xfb\x68\xcb\x67\x12\x6d\x69\xb3\x89\x34\x3f\xd9\x86\x17\x69\x36\x74\x35\x60\x43\x28\x12\xcb\x3b\x87\x0d\x79\xac\x26\xac\xa0\xa5\xb3\xa1\x9d\xdc\x64\xe9\x6f\x53\x63\x3e\x92\x12\x6a\xf2\x6f\xfe\x4a\xcc\xbd\x09\x57\x50\x17\xcc\xfb\x01\x20\x77\x85\xde\x4f\xa2\x71\x1b\xff\xca\xf4\x5d\x78\xe8\x77\xd9\x56\xf9\xae\x56\x93\xa5\x42\x1e\xc9\x72\x65\xcd\xa4\xf2\x9e\xee\x27\xaa\xc8\x49\xe1\xa4\x51\x45\x44\x1f\xd1\xca\x12\x18\x30\xfa\x42\x8e\x05\x39\x72\x3d\x1b\x31\x1f\x40\xba\x4b\x21\x2e\xe8\xb6\xbe\xbf\x81\x66\x34\x2e\x48\x9b\x94\xcc\xaf\x83\x85\x7a\xde\x3a\xaa\xe4\xf9\xd1\x11\x4b\x8d\xe4\x73\x92\xc3\x11\xce\x21\x95\x65\x86\xbb\xee\x8b\xee\xac\xad\x4c\x77\x47\x66\x1c\x73\xf9\x59\x17\x20\xa4\xb5\xa6\xb3\x02\xd3\xc9\x22\x20\x83\x73\x3d\xf6\xaa\xfe\xe7\x42\xdb\xf8\x7c\xfe\x17\x38\x56\x5e\x62\x0e\x46\xa3\x54\x5d\xf8\x03\x36\x77\x4e\x55\x48\x72\x7a\x7f\xcf\x5c\xd3\x6e\x32\x8e\xec\xf2\x76\x3f\xe9\x5f\x32\xd9\x9d\xad\x98\xa7\xa2\x90\x16\x9d\x77\x66\x5f\x19\x26\x3d\x4e\x4c\x57\x4c\x41\xde\x9c\x4a\x84\xb9\xab\x4b\xda\x1a\xf3\x88\x87\xdd\xf0\x08\x9c\x79\xeb\xb9\x46\x8f\xc6\xb7\x3f\xed\x12\x8e\xf6\xdc\xe6\x4d\xee\xe2\xea\x11\x67\x15\x6e\x77\xcd\x66\x08\x6b\x26\x58\x35\x23\x73\xe1\x6a\xe4\xc5\xbe\xd7\x55\x3f\x71\xa6\xb3\x6e\x8a\xd0\xcd\xdd\x11\xd1\x01\xa4\x3e\x26\x76\x14\xfb\x7a\x8b\xa3\xf9\x75\x67\xf1\xee\xd0\xfa\x0b\x8b\x40\xc9\x13\x72\x7d\x2e\xcf\x8d\x8a\x68\xf3\x79\xb8\xd9\x2e\xa8\xdb\x2f\xde\xbe\x08\x8e\x3b\x92\x46\xb0\x1b\x91\x9c\xcf\x87\x9e\x95\x8b\x7c\xcf\x9a\x94\xec\xfe\xab\xde\x2b\x83\x60\x06\xf3\xb7\x61\xc2\xdc\xf4\x75\xe2\x79\x9d\xa2\x85\xf2\xc2\x7a\x43\x1a\x73\x9f\xd8\xb3\x15\x56\x69\x47\x8e\x1d\xe8\x68\x05\xa9\x8e\x1c\x3b\x7d\xb4\x76\x0b\x04\xff\xe4\x62\x2e\x92\x17\xde\xb7\xc9\x05\x47\xb2\x43\xfc\xf6\x14\xc8\x8d\x04\xf6\xf2\xab\x79\xc1\xa4\x0d\xca\xf5\xea\x18\x0d\x76\xc7\x2b\x1e\xe3\xf5\x2c\xb0\xab\x1d\x98\x2c\x88\x77\xe8\x72\xfa\x2b\xd6\xa8\x64\x6e\xaa\x01\x78\xba\x9a\xae\x26\xbb\xfb\xd0\x20\xac\x94\xb8\x0e\xd4\x20\x95\xac\xc3\xaf\xc5\xbf\x05\x9b\x98\x03\x35\xf1\x2e\x86\x2f\xe1\x63\x48\x00\x59\x45\x00\x5f\x62\x03\x31\x22\x2c\xc3\xa7\xd0\x24\x42\x88\x11\xb1\x8b\x7f\x5a\x35\xec\x18\x26\x02\x4a\xad\x83\xdd\x55\xb9\x0e\xb3\x48\x12\x9c\xee\xdd\xfa\x75\xcc\xc6\x05\x6f\x1a\x8b\x21\x61\xa3\x59\xf5\xe1\x91\xd3\xb7\x9d\xbf\xa4\x2f\xa0\x1d\x55\xbd\x26\xa6\xa4\x83\x3b\xa9\x08\x17\xac\xba\x81\xa0\x78\x32\x3f\x7e\x82\xe4\x2e\x30\xe1\xa1\x8e\x58\xc3\xe1\xc5\x8c\xa3\xd8\xf7\x13\x83\xf4\x6b\x5e\x74\x50\x35\x1d\x08\x7e\x8e\xc5\xf4\x3d\xbf\x6b\x1d\xf2\x70\xf4\xe1\xb4\x02\xcd\x80\x45\x1b\x1d\x17\x00\xc4\x1c\x44\xd4\x5d\xae\x61\x70\xe6\x40\x9a\x1b\x10\xe2\xd3\xc0\xe6\x50\x8a\x31\xf8\xf3\x3e\xc4\x39\x90\xea\x2e\x81\xd0\xbb\x96\x00\x89\x9e\x32\x9f\xa6\x26\x3d\x04\x1c\x1d\xda\xd1\x21\x84\x3a\x12\x53\x30\xe9\x40\x8a\x41\x30\xf5\x0d\xc0\x74\x20\x51\x38\xac\x7a\x42\x7d\xee\xb9\x00\xeb\x5d\x4b\x38\xba\xc9\xa0\xeb\x40\xaa\x08\x08\xce\xde\xb5\x34\xee\xa4\x1b\x08\xb0\xbd\x6b\x5b\x43\xb7\x77\x2d\xb1\xfa\xb9\x6e\x30\xe4\x92\x89\xfe\x06\x30\x4c\x12\x48\xa2\x3e\xde\xc9\x14\x9a\x49\x12\xc5\x20\xf2\x49\xfa\x49\xb5\x63\x8f\x63\xa0\xa0\x65\x1a\x4d\xb8\xfe\x97\x44\x16\x82\x2e\x66\xf4\xc1\x24\xba\x33\xd1\xc6\x86\x2d\x0d\x2b\xc5\x1b\x56\x02\x6a\x4a\xd7\x60\xf8\x29\x5d\x83\xc3\xcb\xa7\xad\x89\x82\xa2\x77\xe2\x78\x1a\x68\x3e\x89\x6a\x0f\x94\x7e\x12\x72\x3e\x89\xe4\x14\x3c\xbd\x16\xd3\x29\xe0\xf3\xde\xe0\xd3\x99\x13\x1c\xf3\x40\xb7\x38\x34\xbd\xff\x2c\x10\x00\x07\xa5\x01\x41\xf9\x2f\x84\x43\xa8\xba\x06\x89\xd1\xd1\x2d\x2d\x52\x07\x38\xba\x27\x8e\xe7\xd1\x2d\x35\xaa\x07\x48\x16\x12\xfb\xa3\x5b\xe2\x7e\x84\xc0\xe6\x77\x2d\x09\x40\x1f\xaa\x7e\xfa\x30\xfb\x30\x28\xfd\xae\xc1\xac\x6e\xfd\xa7\x41\xfb\x1d\x00\x92\xea\x3d\x1c\xbf\x6b\x7a\xf4\xfe\xb8\xb7\xcd\x4d\x78\xcb\x0d\xec\x49\xe0\xa2\x83\x65\xcc\x7c\xf5\x3a\x06\x8b\x09\xe6\xf1\x83\x82\x99\xd3\x00\x99\x60\x8a\x70\x20\xcd\xae\xcd\x51\xd9\xe1\xe0\x9a\x5d\x03\xc2\x6c\xa6\xa9\xc1\x1d\x24\xe7\x34\xe0\x66\x12\xc5\x71\x70\xce\x24\x08\xad\xae\xcd\x99\x5a\x34\x03\x8e\xb3\x6b\x30\x60\xce\x44\xa2\xa8\x03\xf2\x9c\x82\xe8\x4c\xa6\x38\x0f\xd2\xb3\x6b\xb3\xae\x6e\x28\x1d\xe6\xd3\xef\x31\x0c\xf0\x33\x79\x2a\x6c\xf8\xc9\x7c\xe8\xcf\xae\xcd\x9c\x96\x54\xc5\x11\x25\x02\x83\x0e\x3b\x98\xa0\x19\xa2\xfd\x95\x7b\x7f\xe5\xde\x5f\xb9\x37\x5a\x12\x78\x69\xf2\xfd\x18\x04\x63\x9a\x26\x58\xfb\x90\xa7\xe3\x80\xa6\x73\xee\xf1\xa3\xe0\xa7\x1d\xb4\x69\xda\x46\xdf\x1d\x0c\x6a\xd7\x92\x00\x51\xbb\x36\x8b\x95\xa7\x83\xa4\x76\x0d\x08\x97\x9a\x76\x14\x1d\xb4\x2a\x00\x38\x35\x89\xb2\x0f\xb2\x1a\x82\x50\x4d\x53\xbc\x46\xe0\x56\xb7\x00\x53\xed\xda\x5c\x4d\x70\x06\xc0\x6a\xd7\x60\x50\xab\xc9\xfa\x8a\x0f\xcd\xba\x0d\xe8\x6a\xd7\x66\x2b\x73\x49\x40\xac\xde\x6b\x40\x48\xd6\xe4\xa9\x31\xac\x23\x00\xce\x9a\x4c\x32\x01\xcc\xd5\x7b\x69\xee\x84\xa6\x01\xbc\x76\x0d\x00\xf5\x9a\x3c\xf2\x14\x68\xd8\xae\x3d\xa9\x06\x0c\x06\x8e\x1d\xf6\x2f\x49\x01\x4e\x37\xeb\x3e\x17\x53\x6d\x02\x71\x1d\x74\xb5\x13\x93\x98\x81\xfa\x50\x30\x00\xa0\x7d\xf7\xcc\xac\x61\x4f\x1a\x7b\x61\x52\x70\xe5\x55\x01\x48\x15\x16\x78\xa1\x43\x2a\x80\x24\xc1\x81\x17\xe8\x72\x05\x0d\x15\xd8\x07\x5e\x0c\x02\x2f\x16\x06\xc0\xc6\x5b\x2d\x15\x4f\x91\xd2\x57\x40\xd4\x85\x8e\xa7\x00\x12\x85\x46\x5d\x28\xef\x19\xd4\xa0\xb9\x8f\xba\x00\xb4\x7d\xd4\xc5\xde\x04\x94\xd0\xf6\x26\xa0\x67\x6e\x02\xda\x47\x5d\xec\xa3\x2e\xf6\x51\x17\xfb\xa8\x8b\x9d\x46\x5d\x98\xcb\x01\x6b\x50\x2c\xdf\xa1\x6b\x92\x67\x3c\xab\x88\x0b\x03\x5a\x77\x9a\x65\xac\xad\xc4\x35\xbb\x25\x00\xb7\x2a\xe8\x9a\xb9\x41\x17\x30\x50\x73\x2b\x7d\xa4\x3b\x27\x6e\x73\x2a\xef\x75\x33\xd6\xff\xd4\xbc\x6a\x2f\x5c\x52\x7a\x55\x39\xc9\x1d\x4d\xe0\xfa\x9b\x93\x2e\xe4\x7c\x1c\xa3\x53\xd4\x90\x8c\xd6\x54\xde\x43\x54\x7a\xbe\xfa\x5d\x6f\x10\x8b\x8b\x03\xbd\xd5\x08\x4e\x8a\x95\xc1\x0e\xa9\x3c\x9c\x3b\xef\x96\x64\x44\xca\x16\x5d\xd6\x6a\x07\xb3\xe0\x15\x16\x08\xb0\x21\xff\x34\x19\x45\x50\x66\xac\xc7\x7f\xed\xf5\xa6\xe7\xf4\x56\x53\x0c\x83\xea\xdb\xe8\x28\xae\xa9\xa9\xd5\xf1\x18\x3c\x84\x7c\xae\x69\xa3\x36\xfb\x82\x64\xac\x0a\x03\xa2\x77\xad\xb7\x99\x2e\x86\x34\xec\xae\x32\xd6\x75\xf0\x9d\x3b\x6f\x1b\x07\x80\x7e\x87\x0b\x9a\x53\xf1\xe0\x02\x1a\x0c\x1a\x25\xd6\x27\x30\x6d\x61\x4e\x79\xb7\xe6\x08\xd7\x75\xc3\x70\xb6\x26\xdc\x1b\xfd\x61\xc2\x6a\x9b\x8c\x61\x97\x51\xa5\x51\x60\x95\xf2\xad\x28\x4b\xad\xac\x78\x40\x0d\x13\x18\xac\x37\x8d\x0c\xd1\xdf\x55\xf6\x93\x09\x96\x1b\xad\x22\x89\xe6\x41\x95\xb3\x60\xa6\x3b\xde\x3c\x50\xef\x20\xc0\x6d\x0d\xac\xc8\x6d\xbd\xac\x1f\xbe\x45\x35\x69\x32\x73\xda\xd5\x35\x8b\x96\xca\x79\x58\xc0\xdd\x90\x52\xdc\xac\xfc\x5e\xf5\x3e\xf1\xe7\xef\xd0\x9a\xb5\x0d\x3f\x3e\x4f\x33\xa9\x0b\x86\x5e\xab\x37\xb5\x8d\xc1\x5e\xde\x04\x2a\x08\xe6\x02\xbd\xfe\x16\x95\xb4\x6a\xa5\x5a\x01\x22\xe8\x5d\x0d\xbe\xff\x2e\xe1\x18\xc2\x2f\x05\xf0\xeb\xc0\x66\x68\x8a\x39\x6d\xb5\xae\xf3\x6f\x6e\x05\x00\x30\xe6\xae\xe9\xba\x5c\x1a\x07\x64\xe0\x07\x36\xa2\x2b\x7d\xab\x54\x82\x3d\x02\xc7\x82\xeb\xdf\x40\x6d\x1a\xac\x5b\x00\x1f\x8c\xab\xd9\xf1\x04\x69\xe3\x48\x9a\xf8\x7b\xb4\x23\xbf\xb5\x6c\xf9\x20\x60\x95\x15\xfe\xae\x9f\xed\x97\x54\xb0\x3f\x6e\x94\x6b\x9b\x1c\xf7\x26\x4c\x4e\x57\xad\x6d\xe2\x25\x88\xae\x73\xd3\xb0\x36\x98\xa5\xd9\x1b\x8b\xb2\x24\xd8\x1b\xad\x35\x51\x67\x19\xd1\xd0\xe4\xe7\x1d\xfc\x63\x15\xf6\x13\xa8\xaf\x46\x97\x78\xd7\xf5\x08\x82\xd5\xd2\xec\x8a\x7c\x41\x10\x96\xe8\x84\xc4\xb4\xf9\x86\xdc\x50\x2e\x92\xd0\xb3\xf4\x0b\xfd\xcd\xc9\x69\x75\xa3\x11\x4b\xca\xb6\x10\xb4\x2e\xdc\xec\x04\x07\xe1\x88\x19\x29\xeb\x9b\xdb\xb1\x67\xcb\xc5\xba\x10\x88\xae\x15\x19\x75\xbf\xbc\x74\x7d\x20\x95\xd0\x00\x19\x8d\x14\xe4\x35\x6e\xb0\x9b\xfe\x8c\x95\x25\xe6\xaf\xb4\x55\x1f\xe1\x2c\x22\xc5\x4c\x2d\x2a\x29\x57\x1b\x5c\xb8\x69\xf3\x5d\xf1\xdb\x6e\x4e\x41\x2a\x5c\x05\xfd\x6f\x7d\x73\x93\x7a\x1c\xb1\xfb\xca\x56\x0e\xd7\xb0\x6a\xfd\x5d\x89\x00\x39\x93\x3f\xe2\xec\x96\x54\xb9\x42\xd2\xd4\x93\x93\x3f\x54\xb8\x34\x85\x7d\x1d\xae\x20\xc9\x07\xb4\x23\x81\xbd\xda\x26\xab\x4b\x0c\xd8\x12\x27\x5a\x2d\xdb\x76\xa6\x5a\x9e\x50\xa0\xef\x23\x97\x7a\x4b\x98\xff\x70\x1d\x3c\xda\xd0\xbb\x8c\x40\x74\x59\xd9\x81\x6d\x07\x71\x17\xac\xb4\xb3\x31\x0c\x53\x65\x87\x7a\xa7\x42\xf1\x77\xe7\x48\x54\xf5\x3c\x71\x21\xd9\x4a\xf8\x3e\x67\x8b\x53\x0c\x36\xca\xf2\x61\x17\x88\x7c\x10\xe0\x39\x7d\x74\x26\x1f\x08\xb2\xd3\xa8\x9c\x6d\x96\xb0\x0a\x24\x07\x1f\x7e\x3c\xef\xf3\xb0\x0f\x38\x67\x1c\xfd\x58\xb0\xec\x16\x9d\x13\xa5\xf4\x7f\x09\x48\xba\x66\x99\xef\x06\xdc\x63\x0f\x42\xf1\x87\x04\xa1\x68\x96\xe1\x69\xf8\x23\x41\x50\x94\xf8\x26\x05\xf9\x68\x4d\x50\xa3\x0e\xa1\x7a\xd1\x22\xad\xce\x3c\x3a\xdf\xac\xd9\xfd\x91\x60\x47\x2d\x27\x47\x34\x18\xc4\x04\x1a\xcb\x2d\x79\x90\x7f\x87\x8f\xe6\x6f\xfa\x85\xde\x45\x50\x30\x65\x9c\x55\xbf\x4b\xcd\xe1\xc3\x8f\xe7\x52\x3c\xc1\xaa\x35\x52\x8e\x4e\x88\xc8\x4e\x32\x52\xaf\x4f\x4c\x77\x9e\xcd\xf4\x94\xac\xa2\x82\x35\x09\xc0\x97\xa7\x28\x63\x45\x61\xea\xd3\xb0\x15\x3a\x23\xf5\xda\x91\xd9\x19\xb4\xe3\xcc\x31\x3f\x2d\x34\x41\xcd\x18\xbc\x0c\xbb\x77\x4c\xe4\x7b\xe6\x94\x78\x9b\xa4\x59\xe6\xc9\xd5\x51\xbf\xc4\x96\xf9\x03\x22\x9d\x3f\xca\x34\xed\x1e\xd9\xe1\x60\x61\x5f\x51\x17\x6b\xcf\xfb\xd7\x07\x6b\x30\xa4\xc3\xf7\x4c\x8f\x4d\xa1\xcb\x95\xbe\x0e\xe4\x24\x47\xec\x8e\x34\x0d\xcd\x09\x47\x8e\x17\x75\x9b\x30\x48\xb2\xa2\xc5\x53\xcc\xee\x1e\x6f\xe2\xd9\xe0\x4d\x24\x5d\xd8\x3c\x06\x27\xdf\xdb\x64\x70\x38\x2f\x69\xf5\x07\x60\x71\x00\xd4\x08\xa9\xe7\x4c\xfe\xd5\x0a\xc3\xb9\x57\x21\x9e\xe1\x82\x5c\xfe\x02\xba\x0e\x2d\xf4\xb3\xfd\x1b\x91\xfd\xd1\xab\x7d\x1c\xb1\x75\x4d\x55\x45\xfe\x9b\x3b\x08\xa8\x62\xf9\xb4\x85\x7f\x5f\x11\xd9\xdb\xe7\xba\xa0\xeb\xb6\x62\xf6\x06\x0b\x72\x8f\xe1\x52\xf6\xda\x0e\xa9\x8f\x5d\xe0\x36\xc3\xe9\xd5\x25\xfa\x49\xd3\xdc\xbe\x1c\x73\xc3\x84\xd6\x00\xcf\x59\x89\x69\x02\x64\x9a\x57\x70\xde\xef\xdc\x95\x23\x88\x34\x45\x29\xbf\xc2\x6b\xea\xaa\x05\xb6\xf2\xd6\x67\x6e\x63\xfb\xca\xb7\xde\x50\x77\xaf\xa0\x74\xfa\x89\x67\xbe\xb2\xa1\xdd\x1d\x22\x95\x59\xd5\xa8\x29\xae\x0b\x18\x40\x9c\x54\x9c\x2a\x5f\x9b\x17\x32\x62\x60\x88\x35\xa2\xb5\x8e\xcb\xd6\x4a\x4c\xf8\x64\xfe\xcc\x6e\x68\x65\x4f\x36\x33\xce\xe4\x15\xa6\xc1\xba\x76\x7b\xad\xe3\xd9\x68\x1d\x9c\x17\x17\x15\x5e\x16\x61\xc7\x64\x5f\x58\x14\x58\xf9\xe5\x89\x7a\xef\x24\xa7\x5c\xfe\x3f\x5a\x2c\x7e\x56\x0e\x83\xb6\xb2\x9a\x73\xb4\x68\xaa\x61\x91\x2e\xef\x4c\x1f\xea\xed\xcf\x9a\xe6\x4f\x49\x15\x8a\x2f\xab\x5c\x76\x9b\xf0\x5e\x64\x99\xa1\xa4\x8b\x30\x43\x7c\x58\x26\x0e\x67\x49\xd0\xf5\x9a\x66\xb7\x57\x9e\x5f\x80\x35\xf2\xb7\xca\xfb\xc9\x09\xb2\xb0\x86\xc6\x37\xde\xdb\x96\xf1\x9a\x61\x5d\xa5\x5c\xa9\xaf\x3d\x09\xb2\x30\xd3\x22\x09\x20\xcc\x39\xcb\x68\xe7\x34\x8a\x42\x99\x77\xe2\x27\x57\xe2\x67\xfb\xe1\x28\x6d\x62\xb6\x5c\xb4\x8b\x6c\x31\xfb\xb9\x27\xeb\x62\x17\x64\x33\x23\x5b\x0f\x41\x6f\xad\x24\x74\x99\xeb\x1e\x9e\x8c\xf5\xda\x68\xdf\x86\xf3\x5f\x00\x3c\x5b\x76\x51\xad\xfe\x67\x00\xbf\x36\x97\xd5\xe1\xca\x18\x37\xff\xa3\x7b\x41\x8c\x56\x36\xf9\x77\x27\x53\xa7\x9f\x08\xe9\xab\x80\xbb\x81\x9c\xec\x50\x15\x96\xe8\x30\xc3\xf9\x82\x63\x06\x89\x81\xcf\x58\xff\x66\x3c\x27\x8a\xb7\xd4\xac\x6e\x8b\x50\x7c\xd6\x06\x02\xd0\x16\x86\x76\xfd\xfd\x6d\x3c\x2c\x73\xca\xc5\x07\x32\x61\x36\x2a\xc7\xc7\xdc\x21\xb6\xaa\x3c\xac\x72\x3c\x24\x58\x4b\x30\xf4\xed\xf7\xdf\x7d\x37\x56\x67\x7e\xba\x96\x7c\xdc\x6b\x33\x5e\x67\x7e\xba\x96\x7c\x90\x62\xa8\xce\x7c\x28\x8b\x25\x48\x34\x58\x67\x3e\x9a\xb5\xb2\xdb\x62\xf2\x51\xe3\x73\x6a\xb2\x2a\x84\x55\x42\x53\x54\xe1\x69\x9b\x91\xc4\xd4\x50\xca\x69\x4c\x69\xe8\xa5\xa3\xee\x2e\xd1\x34\x21\xbd\xd4\x4f\x1c\x8d\xa8\x04\xf1\xa4\xd2\xcd\x74\xd1\xe8\x95\x75\x2a\x95\x34\x92\x24\x0a\x38\x58\x2e\x81\x74\x37\x05\xb9\xe7\x96\xe1\x4e\x05\x3b\x88\x27\x7f\x02\x93\x3a\xe1\xe1\xfe\xa0\x04\xce\xad\xd3\x36\x13\x22\x31\x61\x29\x9a\x29\xe2\xa8\x4b\xb6\x8c\x92\x45\x53\xe9\x98\xe1\x14\x4b\x00\x5d\x6f\x8f\x43\x12\x2b\x01\x14\x93\x41\x4c\x00\x34\x81\x49\x94\x3d\x11\x03\x99\xd4\xc4\xd4\xc9\xb4\x84\xc9\x94\x88\x68\x58\x34\x34\x3c\x25\xd2\x04\x65\x01\x37\x40\x38\x11\xb2\x9f\xdc\x08\x20\x39\x95\xfe\x38\x99\xd2\x08\xec\x66\x52\xd2\x23\xf8\x68\xc3\x02\xac\xe3\x69\x8d\x80\xf0\xeb\x9d\x45\x54\xc3\x52\xe1\xd2\x12\xe0\xba\x6a\xc2\x61\x9d\x13\x92\xf7\x96\x62\xdb\x4c\x83\x46\xf5\x0d\x75\xe6\x92\x63\x77\x9a\x8e\x0b\x73\x95\x4d\x63\xba\x78\x3b\xe1\x87\xde\xdd\x35\x07\xc1\xb6\x61\xfc\x3e\xa9\xbf\xca\x60\x48\xe4\xc6\xc8\xf2\xcb\x62\xe0\x6f\x72\x3f\xcf\x84\x0d\xdc\xbb\x99\x26\xdb\x17\x06\xde\xdc\xfb\x43\x42\x83\xed\xfc\x21\xbc\x57\x0b\xcd\x9a\x48\xb4\x3e\xb6\x62\x0d\x62\x4b\x48\x45\x6a\xc5\x38\xdd\x61\x3a\xbd\xba\x44\x59\x43\x54\xaa\x23\x2e\xf8\x31\x1a\x29\x74\x91\x03\xac\xb5\x4a\xab\xeb\xee\x54\x58\x08\x52\xd6\x22\xbc\x39\xf6\xee\x90\x67\xe3\x0e\x99\x61\x87\xfd\xd5\xbd\xe2\xf0\xed\xdb\x12\x57\x47\xf2\x24\x2a\xc7\x88\x67\x6b\x0e\x1b\x62\x07\x9c\xfd\x18\xd9\x80\x76\x35\xb9\xca\xa4\xa4\x72\x61\x34\x16\x26\xa4\x5c\x0f\x86\x80\xae\x27\x9b\xa8\x15\xbd\x19\xf3\xa3\x0b\x95\x0f\x4e\x6f\xc6\x6a\xd0\xec\x18\x69\x67\xae\xa9\x6e\xae\xec\x41\xf5\x2a\xa1\xfb\xb6\x83\x18\x07\xd0\x2a\xc7\x95\x4a\xfb\xea\x28\xf4\x6f\x4d\xfa\xda\x84\x8b\x82\xdd\xf3\x68\x37\x7d\xe9\x2a\xd7\x5d\x8e\xcf\xe4\xb1\x2e\x09\x2a\x69\xd3\xb0\xc6\x98\xd4\xfd\x61\x04\x69\x4a\x9e\x26\xe4\xad\x8d\x34\xfa\x1a\xd2\x18\x8f\xed\x82\x08\x7f\xfb\xc9\xcb\x7c\xa5\x33\x14\x62\x99\x51\x36\x30\x4d\x83\x33\x18\xef\xdb\x92\xac\xf1\x1d\x65\x6d\xa3\x29\x0b\x86\x5e\x98\x3f\x29\x51\xf7\xc0\xc2\x65\x4a\xad\xc9\x53\xe3\xd0\xbb\xd9\xe4\x23\x6b\xe6\x76\x43\xc4\xd2\x2a\x2f\x98\x39\xb3\x76\x9f\x23\xf2\x99\x72\xb1\x41\xce\x2d\x97\x2d\xfb\xfb\xc8\x6a\xdc\x1d\xaf\xa5\x3c\x4d\x40\x81\xfe\xd5\x7f\xa3\xaf\xce\xdd\x2d\xd4\x9f\xfe\xa8\x18\xd0\x7b\x85\x0e\xe4\x67\x2d\x68\xf6\x90\x80\x7a\xdc\xf9\x57\xe5\x8b\xe8\x47\xcc\x49\x8e\xde\xe1\x0a\xdf\xe8\xfb\xf7\xcb\xc5\xd5\x8f\xef\x5e\xc9\x05\x8d\x96\x4d\xba\x3c\x1f\x73\xd0\xda\x2f\xe8\x0f\xbc\xdf\x3e\xa5\x69\x30\xd6\x24\x01\xba\xc3\xd1\xee\x20\x39\xcb\x4a\x9a\x18\xf8\xc2\x66\x36\xfb\x10\x07\x7f\x70\xb4\xef\xca\xfc\xd1\xd1\xed\xbb\xae\xcf\x63\x6e\xc1\x3f\x73\x81\xf9\xfa\x03\x91\x0b\x4d\x16\x84\x4f\x01\x7f\x8c\x6b\xa0\xea\x65\xd4\xf4\xde\x96\xb7\x0a\x8e\xad\x7e\xa3\x24\x2f\x1b\xf7\xe5\x4a\x36\x97\x2f\x4d\xc7\x8e\xa5\x2a\xdb\xa9\xae\x37\x54\xac\xdb\xe5\x71\xc6\xca\x13\xf5\x11\x92\xeb\xff\x3f\x59\x16\x6c\x79\xf2\xed\x7f\xe2\xd5\xbf\xe7\x7f\x79\xfd\x9f\xcb\xe5\xbf\x2f\xc9\x0f\x3f\xfc\xe7\xeb\x1f\xbe\xff\xcf\xef\xff\x1d\xaf\x96\xdf\x7e\xf7\xed\x77\xff\xfe\x1f\x3f\xbc\xce\xbf\x5f\xfd\xe7\x9f\xbf\x3f\xc1\x35\xe5\xe6\xc5\xbb\xd7\x4b\x22\xf0\xeb\x13\xd3\xdb\x7f\x70\xdd\xdd\x7f\x28\x28\xdf\xe3\x1b\xf6\xcd\xcf\x7f\xfe\xf3\x98\x52\x1a\x63\xb0\x21\xfd\xfd\x79\xea\xed\x3b\xd5\xd7\x23\x3b\x3c\xb0\xf7\x26\xff\x64\xa2\x7f\x87\x93\x3a\xc0\x1e\x57\xcf\x48\xb5\x50\xea\x73\xf6\x1d\x55\xe2\x68\x89\xb9\x9c\x51\x2e\xf0\x66\x19\x9e\xd0\x6a\xe2\x1b\x32\x9e\x85\x1c\x1c\x23\x6e\x6e\x46\x77\xc6\x20\xe7\xa7\xb9\x69\x4b\xa5\x1d\x18\x47\x1b\xa9\x44\xf3\xa0\x4a\x5c\xe8\x92\x2a\x39\xcb\x6e\xa5\x26\x58\xe2\x1b\x72\x70\xc0\xd1\xd9\xbb\x71\x40\x7a\x3b\x60\x3a\x1e\xd7\x77\x8c\x7e\xc5\x0d\x55\x37\x14\x2f\xc0\xf0\xdf\x5e\xfe\x7a\xfa\xe1\x1f\xef\x4f\xdf\x5d\xbc\x1a\x25\x2a\x95\x3c\xf2\xb9\xc6\xaa\xe6\x52\xeb\xb2\xe1\x5c\x05\x78\xd9\x21\x52\xdd\xd1\x86\x55\x65\xe7\xd2\xbb\x33\x5f\x1a\x25\x99\x29\x38\x24\xed\x44\xe3\xac\xb8\xb3\x3e\x4a\xd7\x2b\x6b\x19\xa4\x55\xdd\x0a\x6b\x3d\x36\x4a\xdf\x28\xc5\xb6\xca\xd6\xb8\xba\xb1\x08\x0b\xde\x98\x10\x7f\xa8\x04\xfe\x6c\x1d\x0c\x84\x67\xb8\xb6\x72\x11\xa3\x9c\xb5\x53\x9d\xfc\xb7\x7f\x3b\x44\x94\xbc\x41\xff\xe6\x11\x3b\x46\x17\xe6\x7d\x6f\x02\xb5\xcf\x93\xdc\x91\x46\x7d\xc0\x4c\xd5\xb8\x9a\xd2\x90\x1b\xdc\xe4\x85\x09\x20\xf6\x2d\xba\x76\xc2\x90\x52\x79\x39\x62\x8d\x5c\xbb\x63\x74\xe6\xe6\xaa\xad\xf3\x69\x65\x17\xc6\x29\x04\xe6\xb7\xfc\x84\x56\xf2\x58\x1d\xc9\xe3\x70\x84\x6b\xa9\x20\xa9\xdb\xc5\x89\xb6\x0e\x1f\xa9\x1a\x00\x55\x7e\x84\xcd\xb6\x3c\x72\x4b\x7d\xf2\x4d\xd3\x56\x95\x64\x2c\xd8\x3d\x45\xab\x23\x7c\xc4\xd7\x64\xa2\xd8\xcf\xb9\x54\x7d\x33\xd9\xef\x37\xca\x5a\x53\x37\xac\x94\x83\x6e\xf9\x31\xf9\xac\x34\xbf\xe6\x58\x9e\x92\x31\x16\x12\x70\x76\x82\x38\xcb\xb8\x1d\x9e\x54\x77\xf1\x23\xf9\xb3\x81\x7b\xf3\x36\xb6\x5b\x21\x93\x16\xef\xcc\xd7\x6e\x7a\xc6\x57\x66\x73\x01\xbd\x49\x01\xcd\x0f\xa9\xee\x12\xa7\xa7\x5f\xf3\xaa\xba\xfb\x15\x37\xbd\x4b\x48\x35\x3a\x30\xeb\x69\x9f\xe0\xe6\xca\x57\x7c\x16\x1e\x6c\xfc\xc6\x11\x36\x69\xf5\x3a\xee\xcb\xc4\xb1\xfe\xfa\x77\x8e\xb3\x7f\x5c\x9e\x5f\xbc\xbf\xbe\x7c\x7b\x79\xf1\x61\x5a\x1f\x04\xa8\x5c\xca\x9c\x07\xec\xe0\x41\x84\x9f\xf6\x78\x67\x40\x13\xec\xb8\x6a\xdd\x10\x79\x1f\xe7\xd6\x53\x33\xb1\x01\xa3\x11\x06\x6e\x4f\xaa\xeb\x23\xae\x5c\x2d\x91\x71\x82\x10\xa6\x6d\x08\xcf\x66\xdd\x01\xa2\xf2\x6c\xcc\x61\xe0\x01\x92\x96\xb5\xcf\x61\xe3\xe1\x9e\x3a\x06\x9f\xc4\xcc\x03\x34\x15\x9b\xf7\x0d\xfb\x2f\x5e\x04\x3c\xda\xd0\x2d\xfc\xb6\x61\x81\x00\xd9\xfe\x75\x4c\x43\x61\x28\xa3\xd3\xc4\x51\x3b\xe0\x26\xb2\x28\x30\x0e\x8f\xd1\x19\x25\xc4\xd5\x3a\x91\xbf\x93\xb2\x16\x81\xdc\x18\x98\x49\x3c\xb3\x70\xab\x7f\x23\x0f\x51\x18\xa1\x81\x33\xc1\xe2\x06\xdd\x92\x07\x1d\x41\xeb\xb0\x5b\x9f\x45\xe8\x8b\x86\x15\xd9\x69\xe4\x0b\xac\x32\xee\xf3\xbc\x88\x74\xed\x11\x6a\xdd\xc2\xea\xdc\x26\xcc\x34\xbc\xbe\x6d\x12\xa2\x30\xb0\xbc\xed\x9c\xd2\xb6\xf0\xb2\xb6\xbb\x0a\xb3\x00\xc6\x50\xc0\x30\x5c\xa7\x40\xc1\x7a\xb1\x9a\x0a\x7f\xd5\x58\x18\x39\x2a\x89\xc0\x52\xe7\x3d\x96\x1b\x2f\xb6\x4b\x7a\x0f\x2b\x4b\xc5\x61\xf7\x9b\x01\x70\xed\x7e\xf0\xe1\x5d\x23\x84\x79\x4d\xb2\xe3\x8a\xe5\xca\x80\x7f\xa8\xff\xb3\x5f\xb1\xd7\xfc\x41\x60\xd1\xf2\xe3\x35\xe3\xe2\xf2\x2a\x4a\x54\x3f\x5c\xb3\xfc\xf2\x2a\x12\x0d\x05\xe7\x66\x29\x68\xaf\x30\x7c\xd7\x1e\x5e\x2b\x60\x5f\x8f\x21\xba\xce\x40\x68\x4d\x38\xc7\x09\x28\xac\x50\xdc\xd5\x0d\x1c\x55\xc0\xc0\x93\x90\x56\x77\x1e\x2f\x05\xc3\x4f\x05\x1e\xe7\x34\xe4\x3f\x20\xd6\xdf\x10\xbf\x2f\x32\x47\x41\x74\xbf\x10\x62\x5f\x84\xae\x79\x98\xd4\x6b\x52\x92\x06\x17\x47\xc6\x24\xde\x47\xfa\x3b\x1c\x42\xf7\xc5\xce\x9d\x0f\xf6\xb7\x41\x7b\x2e\xee\x1f\xfc\xdc\x27\x62\xfb\xc1\xd0\xfc\x7a\xe8\x7c\x80\x13\x30\x13\xbf\x2f\xe1\xa8\x83\x31\xfa\xa0\xa8\x7c\x03\x94\x3d\xc0\x20\x47\x70\xf8\xa0\xb8\x7a\x09\x03\x85\x63\xe7\x01\xd0\xf2\xc0\xe8\x77\x3b\xe7\x4a\x20\x4c\x3b\x20\x53\xd2\x11\x44\xbb\xb8\x43\x6c\x46\x32\x42\x03\x19\x9f\xe2\x5a\xd1\x0f\xb7\xec\x44\xd2\xaa\x61\xe5\x31\x82\x82\xe5\xda\xe0\x75\x9a\x5b\x4a\xb7\x24\x58\xe5\x40\xb7\xfd\x45\xe5\xeb\xbe\xa8\x6c\xc4\x20\x03\xc6\xf3\x95\xdc\x52\xe2\xf5\x36\x83\xbd\x39\x52\x1b\x3e\x60\xd8\x8e\xb8\x6b\xc7\x0d\xdb\x9d\xe9\x78\xec\xab\x31\x76\x63\xad\xcd\x53\xf3\x07\x61\x57\x53\xee\x2e\xdb\xb6\x73\x7b\x05\x97\xed\xec\xdd\xf9\x2c\xf7\x57\x90\xe8\x94\x29\x17\xe2\x06\x0b\x12\xee\x59\x5b\xc1\x36\xd5\x20\xc9\x31\x57\x59\xdc\xaa\x1a\x24\x19\x72\x99\x85\xed\xaa\x91\x93\x1a\x73\x9d\x8d\x5b\x56\xc3\xc7\x36\xc9\x85\x96\x5a\x47\xf1\xa9\x5d\x69\xcf\xa7\x08\xe3\x84\xb7\xcc\xb6\xde\x89\x4e\x70\x9a\x85\xf7\x9d\xf3\x31\x41\xbd\x9f\xba\xa5\x26\x47\x82\x1d\x63\x11\x31\xe5\xe1\x99\x46\x1d\x64\xdd\x3b\x50\xed\x6f\x86\x6e\x04\x73\x9c\x41\x35\x3f\x98\x6b\xcd\xb6\x04\x5d\x24\xe2\x6a\x1b\x1d\x1a\xc4\xe5\x06\x18\xd8\x08\x27\x0f\xb9\xde\x00\x14\x87\xce\x39\x98\x0b\x2e\x85\xf0\x31\x4c\x6c\x80\xee\x9d\x80\x38\x0b\x4f\x78\x40\x74\xdf\x1d\x45\x5d\xf4\xdb\x6e\x9d\x77\xb6\x25\x3a\xf1\x40\xdb\xa9\x27\x70\xc0\xce\x3c\xdb\x52\x0f\x4d\xd8\xb9\x67\x5b\xba\x93\x0f\xb4\x1d\x55\x81\x81\xed\x9c\x7d\xb6\xa5\x81\xc8\x25\x39\xff\xc6\x27\x61\xb6\x13\x70\x5e\x8f\x51\x2a\xa0\xf1\xb6\xce\x41\xdb\x66\xc0\x85\xc2\x61\x34\x37\x3a\xba\x2b\x28\x4d\xf4\xa5\xe0\x34\x51\xd2\xed\x3d\x81\x28\x3c\xa7\xa9\x6b\x33\xd6\x2e\x0d\x5e\x13\x25\xb9\x21\x13\x46\xdb\x99\x02\x66\x21\x6d\xa2\x64\xb4\x4d\x94\x0c\x73\x0b\x07\xb9\x4d\x44\xad\x85\xb9\x2d\x6d\x4b\x77\x5f\x02\x67\xb0\xef\xe4\x04\xb9\x31\x53\x29\xfb\xce\x4e\xa8\x3b\x13\xf8\x8d\xbe\xd3\x33\xc5\xad\x69\x5b\x3a\x7f\x4e\x71\x73\xda\x96\xea\xee\x4c\x38\x43\x94\xef\xca\xed\x69\xdb\x0c\x7e\x92\xe0\x06\xb5\x2d\xc1\x1d\x9a\x30\x1b\xfd\xb2\x43\x49\x6e\x51\x47\x22\x75\xf8\xa9\x0c\x05\xe6\x2e\xed\x77\x07\xcc\x56\xd2\xdc\xa7\xb6\xa5\xbb\x51\xa1\x82\xa6\x2a\x1e\x12\xdc\xa9\x40\xaa\xff\x3f\x7b\xff\xda\xe4\x46\x6e\xe4\x8d\xe2\xef\xff\x9f\x02\xd1\xde\x78\x5a\x8a\x68\xb2\x25\xdb\xeb\xf0\x7f\xd6\xbb\x27\xda\x92\x66\xb6\xc3\xba\x74\xa8\x35\x33\x8f\x4f\x9c\x88\x09\xb0\x0a\x24\xf1\x74\x11\x28\x03\x28\xb6\xb8\x7b\xf6\xbb\x9f\x40\x26\x50\x17\x92\x55\x00\xaa\x49\x49\x33\xae\xda\x17\xeb\x51\xb3\xb2\x70\x49\x24\xf2\xf2\xcb\xcc\x6e\xd0\x35\x36\xac\x1a\x49\x7c\x2f\xf8\x1a\x0a\xaf\xc6\x4a\x8d\x51\x41\x58\xff\xa4\x4b\xa9\xc4\xa0\xac\x7f\xe2\x83\xb3\x09\x87\xd2\x87\x71\xc7\x06\x69\xfd\x33\x42\x30\x45\x07\x6d\xeb\x17\xe2\x83\xb7\x89\x62\xc9\x85\x79\x9f\x12\xc4\xad\xc9\x8d\x69\xee\x1f\x1b\xd4\xf5\xcf\x29\x83\xbb\xa3\x07\x9e\x2a\x5b\xa3\x82\xbe\xdd\xd1\x44\x8b\xd6\xf8\x20\xb0\x7f\x92\x82\xc1\x91\x8b\x98\x12\x32\xae\xdf\xf9\x0a\x46\x68\x4f\x28\x39\xe1\xd0\xb4\x82\xce\x63\x43\xca\xfe\x99\xcc\xdb\xc9\xbc\x1d\x7c\xe2\x83\xd7\x29\xaa\xf9\x3f\xa7\x6d\x1b\xfd\xe3\xd8\x10\x7c\x6f\xf0\x3b\xf1\x8b\x71\x4d\xc4\x54\x7c\xf3\xd8\x3b\xa9\x0c\x11\xd5\x66\xc1\x54\xe3\x28\x75\x71\x71\xa2\x79\xce\x48\x46\x07\xe3\x3a\xa7\xad\x78\x5b\x6b\x16\xf1\x31\xf5\x57\x72\x53\x56\x86\x91\x8f\xb5\x8a\x5e\xeb\x78\x8b\x5d\x33\x97\x40\xca\x9a\x7f\x06\x03\xa7\x51\xa2\xcc\xd7\x55\xc7\xa8\xe8\x06\x52\xfc\x67\x19\x0e\x72\x56\xcf\xaf\x15\x16\x3d\x45\xeb\x2a\xb4\x1f\x82\xf0\xe6\x3c\xe7\x28\x56\xee\x12\xae\xd3\x14\x80\xe1\x5e\x46\x21\x98\x4a\xf8\x8f\x0b\xa7\x82\x6e\xe8\x67\xbe\xa9\x36\x84\xba\x96\xaa\x61\x1d\xd4\xad\x5d\xcb\x06\x83\x32\x35\x5f\x7b\x6b\x48\xaa\x9c\xb0\xd6\xd7\x37\xb6\x43\x1f\xbd\x05\xbb\xb7\x47\x5c\xb4\xf6\x28\xf8\x79\xb9\x3c\xb2\x47\xfe\x10\x42\x08\xaf\xfe\x0e\xd7\x44\x6e\xb8\x09\xd5\x5f\x26\xae\x20\x10\x6d\x8e\xed\x15\xe1\xa6\x63\x6d\x38\xee\x02\xe4\x0b\x0d\xb6\x9a\x23\x18\x01\xf5\x95\x51\x5a\x05\xcf\x40\x37\x78\xe4\xda\x95\x16\x22\x7c\x53\x62\x05\x50\xe0\x92\x59\xec\x8d\xe7\x82\x44\xbf\x12\x8e\x8c\x6b\x9b\xc2\xb2\x4a\x71\xb3\xb3\x36\x34\xfb\x1c\x7f\xa7\x5c\xde\xbb\x17\x5b\x45\x74\xc1\xb5\xeb\xab\xfb\xab\x0a\xfb\xa6\x9c\xb4\x7d\x6e\x09\x95\x55\xae\xfd\xa0\x61\xcd\xd8\x67\x73\x7d\x82\x6f\x20\xf0\xa5\x6e\x98\x31\x2b\x65\xde\xda\x92\x83\x2f\x9e\x42\xa0\x83\x88\xbb\x53\x7c\xcb\x0b\xb6\x62\x6f\x74\x46\x0b\xe0\x91\xb4\xd2\x78\x37\x3d\x54\xe0\x58\x29\x59\xe8\x28\xa0\x11\x8c\xc7\x8e\x1c\x9a\xa5\x67\x54\x90\x15\xe5\x82\x6c\xec\xda\x95\x9e\x38\x54\x4a\x16\xa0\x30\x96\x54\xc5\xc4\xf9\x1d\x41\x57\xb1\xd9\xea\x88\x24\x87\x66\x03\xc5\xae\x19\x1f\x47\x13\x44\xc8\x5f\x04\x7b\xfc\xc5\x7e\x2d\x7c\xce\x97\x05\x6d\x42\xfa\x9a\xf9\xbe\xdd\x2d\x78\x42\xfd\xe9\xbe\x05\x0a\x7e\x83\x6b\x62\x54\xc5\x08\x2d\x1e\xe9\x0e\x96\x71\xff\x1b\x5c\x7f\x47\x5e\x3e\x07\x5e\xa7\x9a\xd4\xdf\x08\x4b\x92\xdf\x3f\x27\x6b\xaa\xc9\xab\x9b\xbb\x5f\xee\xff\x7e\xff\xcb\xcd\xeb\x77\xb7\xef\xe3\x8e\x7d\x8c\x9e\x9d\xd1\x92\x2e\x78\xc1\x63\x6e\x96\x03\xab\xb8\xfd\x32\x88\xcb\x3c\xbf\xce\x95\x2c\x71\xfe\x0e\xde\x15\x71\xa1\xbb\x35\xda\x6b\xb7\xda\x2e\xd3\x06\xdb\xb6\xec\x7c\x30\x48\x77\xa5\xa8\x68\x95\xd5\x6a\xb6\x42\x55\x02\xba\xaf\x07\x28\xa4\xf8\x18\x68\x1e\x65\xa1\x74\x56\xf0\x26\xcf\x59\x9e\x36\xa5\x28\x84\xd7\xd1\x8f\xbd\xf2\x9f\xd9\x35\x68\x2f\x72\xf7\xe1\xfe\xf6\x7f\xa7\x8e\x80\x38\xfe\x4a\x30\xb3\xa2\x4d\xdd\x18\x7b\xa6\x9e\x9e\x92\x65\xf2\x9a\x7f\x64\x1b\xb9\x9d\x56\xfd\xd8\xcf\x63\x56\x3d\x5a\xc1\xad\xef\x81\xe0\xb1\xe8\x6e\x4f\x25\xda\x22\x53\xb4\xe8\x40\xc1\xfb\x39\xb9\x43\x51\x1d\xb1\x66\xdd\xb7\x1b\x21\x83\x38\x66\xad\xb1\xea\x6d\xb1\x23\x56\x33\xdd\xd2\x22\xe6\x8e\x32\x92\x28\x29\xeb\x1b\x64\x2d\xb5\x39\xd6\x22\xfa\x64\xd2\xd9\x5e\x4c\x50\x7d\x38\x69\x15\xeb\xb7\x48\xce\x84\x34\x4e\x8b\x87\x62\x83\x12\x1a\x35\x67\x24\x4e\x93\x6f\xd5\x17\xee\x48\x50\xed\xd0\xe9\x4d\x4b\x52\xb7\x06\x77\xfe\xcb\x41\xd2\xd8\xdf\xa4\xd2\x6e\x70\x07\xc2\xb9\xd1\xed\xed\xd7\x15\xa3\x79\x44\x96\x23\xf6\x22\xd0\xae\x1f\x89\x7e\xf0\x7d\x5a\x9c\x4e\xe1\x6c\x10\xfc\x62\x3d\xd4\x4f\x31\xa7\x6a\xc9\xa8\xa9\x14\x43\x5d\x02\xcb\x27\x62\x2b\xc0\x20\x34\x30\x21\x0b\x0c\xeb\x4f\x7f\x94\xd2\x34\x35\x26\x93\x36\xfe\xe7\xda\xbd\xc7\x75\x6b\x49\xd7\x14\x23\x9f\x34\x9f\x45\x2d\x22\xb0\x78\x53\xc2\xb2\xd3\x7b\xf6\xc4\x0c\xae\x2a\x71\x83\xfd\x30\x92\x95\x8f\x1f\x6e\x5f\xc3\x79\xac\xc4\x5e\xea\xc4\x41\x68\x37\x5e\xf5\xfc\xd1\xf2\xe3\x1e\x07\xba\x02\x99\xcc\x60\xf7\x07\x5a\x68\x19\xea\xed\x43\xc0\x5a\x82\x30\xc8\x9d\xcc\xef\xbb\x76\x13\x56\xef\x75\x7f\x5e\x48\xb3\x26\x7b\x3f\x08\x2b\x1b\x22\x3f\x42\xf7\xaa\xe9\x7e\xd4\x02\x0c\x70\x91\x4c\xde\xd0\x07\xa6\x49\xa9\x58\xc6\x72\x26\x86\xab\x28\x93\xae\xcb\xef\x4f\x7f\x8c\xe2\x8c\x98\xbe\x22\xc0\x19\xef\xa5\xb0\xc7\x21\x89\x37\x9a\xae\x96\xe0\x08\xe8\x4a\x17\x70\x5c\xa3\x0e\x1e\x61\xe3\x08\x29\x66\x70\x18\x2a\xdf\xe5\xde\x2a\xf9\xb8\xd0\x7f\xc3\x2a\xb4\x68\x58\x40\x1c\x67\xa8\x3f\x5d\x3d\xff\x35\xc3\x6c\x1e\x42\x4d\xcd\x68\xd0\x57\x54\x5b\xf1\x82\xae\x0b\x43\x72\xc9\x10\x45\xaa\xaa\xb0\xed\x41\x35\xf9\xf1\xf6\x35\x79\x41\x9e\xd9\xb1\x3e\x07\xf6\x58\x52\x5e\x40\x88\x0a\xfa\x94\xec\x59\x22\x61\x1f\x9b\x1b\xc2\xdc\x35\x11\xc3\x1c\x37\x38\xfa\x57\x44\x48\xa2\xab\x6c\xed\xe7\xec\x1b\xe0\x06\x69\x2e\x18\x29\x99\xb2\xcc\x02\xae\xba\xe6\x28\x05\x8e\x4a\xec\x49\x3b\x76\x94\xfa\x8e\x4a\xd4\x3e\x85\x8f\x52\xf2\x51\x49\x14\x8c\x3f\x06\xda\xe3\x93\x63\x72\xf1\xc7\x33\xc8\xc5\xb6\x8a\x03\x8d\x95\x3b\xab\x82\x0c\xed\xd1\x71\x61\xe6\xea\x16\x1c\xfe\x27\x65\x85\xf3\x48\x4d\xcd\xde\x72\x51\x7d\xc6\xe6\x5d\xe9\x06\xfd\xfd\x1b\x78\x9d\x64\x7e\x52\xb0\x29\x90\xd6\x85\x65\xa3\x63\xa2\xfa\xad\xe4\xa5\xfd\x1e\x84\xc7\x55\xbd\x28\xf1\x41\x8b\x42\x5a\xb1\x6e\x35\x19\x2a\x72\xb9\x39\x18\x2c\x40\x70\x68\xb6\x6e\x0f\xc0\x32\x57\x04\xe9\x18\xe6\x6b\x33\x57\x90\x64\x24\xf3\x35\xcc\x15\x66\xed\x53\x32\x5f\x8a\x6b\xa3\x60\x5b\x16\x15\x77\xee\x66\xc2\xd9\xb7\xac\xc2\xe8\x77\x09\xc8\x10\x00\xdc\xba\x26\x6a\xc0\x55\x71\xb6\xaf\xf3\x06\x45\x06\xed\xdc\x3b\x29\x46\xb0\x92\x45\x14\x36\xa2\x6b\xad\xca\x02\xd2\x3d\x68\x3d\x49\x4b\xe6\x9b\x9d\xa3\x09\x54\xb9\x3f\x3a\x47\x6b\x1d\x75\xe7\x08\x76\xe4\xb7\x3a\xc7\x2a\xe2\xc6\x3c\x98\xa3\xbd\x66\xbb\x73\x84\x3b\xee\xdb\x9c\x63\xb4\x0b\xe6\x91\x8b\x5c\x3e\xea\xb1\x57\xc1\xcf\xf8\xba\x97\x3b\x99\x6f\x8b\xa4\x5b\xd7\x41\x8c\xd0\xee\x78\x0d\x8e\xdd\x07\x3e\x28\xb4\x54\x72\x13\x75\xbf\x1c\xca\xd1\xbd\xe6\x25\xbf\x2d\xf3\x2a\x45\x56\xaf\x36\x9a\xbe\xaa\x3b\x3a\xdd\x97\x2c\x4b\x3e\x0c\x3f\xbc\xbb\xbf\xe9\x92\x00\x40\x3e\x54\xf5\xb7\x2b\x60\xff\x1e\x75\x0e\x68\xbe\xe1\x58\xf2\xfe\x91\x2d\xd6\x52\x3e\x90\x67\x47\xca\xd7\x37\xe1\xb5\x99\xe6\x2b\x7d\xed\xb8\x76\x66\x67\x12\x87\x44\xe6\xa2\xe0\xa2\xe5\x46\x82\x34\x66\xa7\xea\xda\xc1\xb6\x5a\x5c\xc1\xc6\x45\x11\x15\x74\xd3\x44\x0e\x0e\x97\x04\xe0\x70\x00\x1c\x43\xd7\x52\x14\x4d\x4c\x03\x80\xb6\x3a\xe5\x9a\xce\xf0\x42\xb4\xcc\xc6\x35\xa2\xca\xd7\x52\x48\x87\x53\xd1\x4c\x6d\x99\x8a\x14\x38\x56\x42\xa1\x37\x0a\x86\xeb\x4e\x2e\xcc\xbd\xed\xb7\x3a\xb9\xb0\x3d\xe4\xb6\x58\x68\x76\x80\xe3\xda\x8d\xa5\x82\x50\x29\xff\x0c\x6c\x79\xdd\x32\xf1\x13\xb6\xad\x65\x45\x1c\x64\xed\x37\xb4\x57\xb5\x3d\x39\x6a\x8b\xc0\xae\x74\x2f\x5b\x99\xe7\x2f\x87\xc6\xce\x8c\x9a\xfd\x80\x2d\x7a\x68\x6b\xa6\x5c\xb6\x21\x9b\x34\xa1\xc9\x4d\xf3\x44\xda\xa5\x78\xdb\x44\x8a\xaa\xd3\x9a\xa6\xe4\x7c\xe6\x29\x3e\xcd\x79\x39\x7a\x16\xcc\xfe\x71\x88\x22\xda\x1c\x99\xbe\xe3\xf0\xb1\xcd\xac\x71\xb2\xf5\x7c\x67\xe7\x74\x10\x9a\xe0\x4f\xac\x85\xaf\xb6\xfd\x28\xdf\x2e\x9a\xe3\xd6\xfd\x9a\x50\xe3\xc2\x29\x1b\x66\x14\xcf\xb4\xc7\xd5\x58\xbe\xcd\x14\x14\x0a\x68\x15\xd9\xef\x9d\x83\x57\xa2\x94\x8b\x91\x42\x31\x8f\x65\x05\xeb\xaa\x58\xc1\xa8\x66\x23\xdb\x9c\x10\xd4\xa5\x7b\x15\x98\x34\x98\x5b\xc4\xde\xed\x01\x0f\xe1\xe3\x10\xf7\x7b\x60\x3b\x77\x5a\x4a\xca\x3d\x03\xfa\xaa\x49\x61\x48\xff\x5d\x5d\x60\xaa\xee\xa0\x42\xb6\x9c\x92\x7b\xcc\xf7\xf4\x6d\x57\x70\xb6\xf3\x2f\xb3\xea\x03\xfc\x24\x42\x8d\x0b\x0f\x41\xfe\xbe\x25\x51\x6b\xaa\x73\x3f\x3d\xdf\x46\x46\x0f\x7b\x6c\x9a\xae\x74\x98\x07\xc2\x5b\xc9\x1d\x9d\x35\xd9\x9f\x7b\x2f\xc5\x53\x72\xe2\x10\x1c\xba\xbb\x1c\x71\x58\xe8\xa8\x4d\xae\x74\xf3\xea\xdc\xfe\xbf\xbe\xe1\xc7\xc0\xa7\x43\xde\xc0\x41\xb6\x18\x44\x54\x9f\x03\x49\xfd\x15\x10\xd4\x47\xc7\x11\xd3\x66\xa4\x26\x36\xa6\xd3\xd5\x30\xe6\xfa\xdc\x22\x2e\x0a\x5b\xed\x71\xb9\xbd\xdf\xfd\x86\x30\xd5\x51\x05\x06\x87\x30\xd4\x67\x5e\xf1\x28\xac\x74\xda\x9a\x87\x30\xd2\x07\x18\xe8\x7e\x81\x19\xc0\x46\x87\xb0\xcf\xfd\xcb\x34\x80\x89\xfe\xda\x98\xe7\x27\xf5\xf9\x0b\x63\x9b\x47\x62\x9a\x43\x49\x72\x4f\xc1\x32\x03\xed\x1e\x4d\xf2\xb4\x18\xe6\xd1\x22\x75\x6f\x61\xc7\x08\xd6\x54\xec\xf3\x48\xcc\x73\x83\x69\xee\xe5\xfe\x58\xac\xf3\x11\x2c\x73\x2f\xcd\x28\x8c\xf3\x31\x0c\x73\xff\x19\x4d\xc3\x36\xef\x61\x97\xfb\x15\xd5\x78\x4c\x73\x12\x66\x39\x1c\x13\x8f\xc1\x28\x8f\xc3\x26\xb7\x9d\xd3\xbd\x13\x4f\xc0\x24\xef\x61\x8e\xfb\x19\x29\x16\x8b\x1c\x55\x73\x76\x18\x7b\x3c\x1e\x73\x9c\x5a\x4d\x32\x12\xed\x1a\xc6\xb1\x9e\xb0\x7a\x67\x08\x25\xfc\x14\x74\xf0\xaf\x7f\x7d\x82\x4a\x56\x18\xc7\x3b\x16\xbf\x3b\x54\x05\x27\x15\xb7\xdb\xc2\xe5\x0e\x4a\xc5\x44\xbc\x6e\x58\x32\x05\xf1\xb9\xa3\x70\xb9\xce\x5d\xdd\x3b\x95\x11\x78\x5c\x74\x10\x0d\xd9\xa7\x49\x38\xdc\x06\x67\xdb\x4b\x32\x09\x7f\xdb\xf1\xdf\x0d\x29\x9f\x61\xdc\x6d\xf0\x6c\xa4\xe1\x6c\x47\xe0\x6b\x0f\xf0\xb3\xa1\x9b\x25\x88\xab\x0d\x33\x62\x18\x47\x7b\x0e\xfc\xec\x08\xdc\xac\xf3\xa4\xf7\x7b\xd8\xd2\xf1\xb2\xc9\xee\xf3\x13\xbb\xcc\x63\x90\x5c\x61\x04\x57\x0c\xde\x75\x14\xce\xb5\x85\x63\x1d\x3a\xff\x51\xf8\xd6\xa3\xf8\xd5\xa1\xf3\x3a\x80\x6b\x1d\xc2\xad\xf6\x92\x3c\x8e\x67\x8d\xc1\xab\xf6\x92\xdc\xc3\xb1\x9e\x1e\xa7\x3a\x82\x75\x23\x70\x61\x27\x61\xdd\x48\xc1\x32\x84\x43\x3d\x07\xfe\x74\x14\xee\x34\x3a\xc6\x17\xbf\xa5\xa3\x60\x24\x67\x82\x8f\x7c\x59\x69\x14\x87\x23\x1d\x85\x1f\x8d\x41\x46\xc5\xe3\x46\x0f\x71\xa1\xbd\x44\x63\xf1\xa2\xbf\xe1\xf3\x1e\x63\x4e\x06\xf1\x9e\xe3\x70\x9e\x21\xb8\x58\x34\x66\x2e\xca\xf8\x09\xe1\x39\xc7\xe1\x38\xbf\xec\x1c\x42\x78\xcd\x71\x38\xcd\x2f\x3b\x87\x10\x1e\x73\x1c\x0e\xf3\x4b\xce\x21\x68\x22\xc7\xe1\x2c\x47\xe1\x2b\xf7\xf1\x93\x49\xf2\x72\x1f\x57\xd9\x87\x9b\x1c\x8a\xe3\xc6\xe0\x29\xbf\xb6\xfa\x1d\x23\xd3\xd2\x70\x91\xc9\x78\xc8\x06\xeb\x38\xc8\x96\xe7\xc1\x41\xa6\xe2\x1f\x11\xdb\x38\x48\x32\x1a\xf7\x78\x14\x1b\x34\x48\x7a\x18\x43\x37\x84\x8f\x1b\x24\x1b\x8b\xff\x89\x12\x5a\xe9\xb8\xc6\x44\x3c\x63\x7b\x7b\x06\xa7\x15\xc6\x31\x1e\xc1\x65\x0d\x73\xcb\x37\xbe\xf6\xd1\x38\xc5\x44\x7c\x62\xcb\x0e\x19\x9c\x4c\x18\x97\x78\x1c\x73\x18\x38\xa2\x01\x5b\x25\x52\xed\x1c\xfc\xc8\x89\xa5\x34\x39\x17\xb6\x30\x15\x53\x18\x0b\xb1\x8d\xc1\x12\x9e\x92\x57\xc7\x87\x9b\x7b\xff\x54\x52\x7b\xe1\xee\x73\x7d\xc8\xeb\x63\x19\x6a\x41\x35\x48\x18\xa4\x00\x2b\xe9\xe2\x89\x05\x53\xc7\xaf\x79\x21\x0d\xd1\x3b\x91\x41\x63\x26\xec\x73\xa4\xc9\x86\xe6\x0c\x19\x9c\xa3\x6a\xb2\xbf\x48\xfd\x1e\x83\x52\xe6\x9f\xd8\xa6\x2c\xa8\x39\x38\xb7\x7b\x25\x26\xeb\xdf\x01\x03\x88\xa6\x88\x76\x07\x0a\x00\xf6\x59\x29\x73\x04\xe7\x1d\x0c\xdf\x48\x57\x7f\xba\x9e\xff\xde\x4f\x86\xf4\x82\x66\x6d\xc2\x91\xfe\x9f\xa5\x7a\x28\x24\x6d\x2f\xe8\xe5\x65\xab\x97\xfe\x31\xbc\xc3\x8a\x9b\xf9\xc3\x9f\x21\xda\x9e\xc9\xcd\xa6\x12\xdc\xec\xae\xe1\x7d\xbe\xa8\x8c\x54\xfa\x3a\xb7\x1c\x7f\x4d\x4b\x3e\xcb\xa4\xd8\x5a\x19\x2f\x85\x9e\x6f\xf2\xdf\x79\xba\xa3\x22\xe5\x4d\x5f\x8a\xaf\x84\x8a\xb9\x69\x46\xe0\x36\xb7\x12\xda\xa8\x2a\xb3\xa7\x2e\x6f\xc1\x2f\x37\xb4\x24\xda\x0c\x62\x86\x5d\xab\xac\xa6\x3a\xb7\x65\xf8\x0d\xdd\x79\x19\x09\x20\x34\xc3\x94\xe5\x1c\x23\x65\x81\x0d\xf6\x4c\x1f\x24\x82\xd4\x8d\xc5\x8d\xe2\x6c\xcb\x08\x55\x0b\x6e\x14\x55\xbb\xd6\x5e\x7e\x5a\xb3\x1d\x04\x9a\xec\xe9\xf8\x47\xc5\xd4\x0e\xe4\xc9\xd0\xad\xda\x80\x6d\x21\xa4\xa7\xb6\x2c\xc7\x18\xf3\x46\xe6\x7c\xb9\xe3\x62\xe5\x8e\xba\x3e\x60\x95\xe3\xd0\x0c\x7b\xb1\xcc\x56\x15\xcf\xd9\x75\x6b\x43\xcf\x81\x7a\xf1\xf3\x8e\x80\xbb\x18\x2a\x72\xaa\x72\x47\x69\x3a\x00\x7d\x0b\x35\x1d\x80\x5f\xd3\x01\xd0\x3d\x96\xe0\x1e\xf3\x3b\x13\x1d\xaf\x25\xa7\x21\xe6\x4c\x23\x14\x96\xad\xe9\x96\x4b\xd5\x6a\x59\x74\x5c\xb1\x38\xed\x29\xb1\x23\x9f\x51\x91\xcf\xb0\x43\xd0\xa8\xc3\xb2\x5c\x72\xfb\xc5\xb8\x68\xd3\x92\xec\xf9\x17\xb0\x6c\xbf\xce\xd6\x2c\xaf\x0a\x87\xa5\xd1\x46\x51\x2e\x7a\x73\x77\x62\x4c\x75\x21\x73\x76\x13\x18\xd9\xc1\xe8\x5e\xd7\x18\x4c\xfb\x7a\x3d\xb3\xf6\xe8\x54\x55\x30\x1d\x6c\xf3\x31\xb8\x83\xf1\x93\xc0\xdf\xb1\x25\x53\x8a\xe5\xaf\x2b\x2b\x3d\xee\xeb\xa1\xdc\xae\x40\xaf\xc5\x7f\x7e\xf3\x99\x65\x55\x72\x25\xcf\x4f\xae\xcb\x52\x5e\x79\xf5\xce\x7d\x0e\x24\x80\xfb\x03\x28\x4f\x01\xaa\xa0\x47\xd9\x35\x73\xfa\xa4\xa6\x86\xeb\x25\x9a\xff\xf5\x2a\xb2\xcf\xf6\x60\x6b\x90\x69\x71\x06\x0f\xf1\x4e\x04\xaf\xea\x5f\x91\x45\x05\x11\x40\x2b\xbe\xb2\xb5\xb4\x7a\x1b\xc5\xcd\x82\xef\x6e\xb9\xb4\x0a\x61\x78\xb8\x52\x30\x22\x15\x02\xf0\x7c\x7f\xd7\x66\x78\x88\x83\x68\xc8\x72\x4d\x36\x32\xa2\xcf\x6b\xbd\x57\xde\x4a\xb7\x9f\x01\xf1\x6b\xff\x63\x05\xd9\x0c\xda\x10\x5d\x6d\xa0\x45\x26\xe3\xab\xb5\x89\x68\x1b\xc6\xe7\x6c\xde\x84\x19\x9a\x61\x6d\x18\x33\x00\xb1\x6e\x77\xcc\x42\xe6\x08\xd2\x74\x20\x0a\x6c\x1b\xfe\xac\xbe\x1b\x1c\x1a\xfa\xaa\x06\x11\xef\x73\x5d\x90\xf0\xb1\xed\xbe\x22\xcc\x64\xf3\xe7\x57\x75\x41\x67\x0a\x6b\xb0\xd8\x11\x6e\x98\x55\xd3\x63\xca\x0e\xac\x95\xac\x56\xb8\x92\xac\x70\x03\x97\xcb\x16\x73\x60\x7b\xd8\x3c\xb7\xc7\xf4\x02\x17\x37\xdc\x39\xc6\x59\xe1\x76\x38\x35\x60\x32\xb7\xd7\xaa\xc9\xd6\xb5\x37\x4c\x29\xa6\x4b\x29\x80\x32\xfc\xe5\x4d\x33\xb7\x7f\x8b\x18\x39\x12\x7d\xa6\x9f\x37\xcc\xb0\xe6\xab\xb5\xe7\x05\xea\x7c\x80\x96\xc7\x1a\x1e\x0a\xe5\x9f\x45\x16\x93\xec\xe2\xf6\x04\x36\x14\x6d\x71\x6a\x4b\xb6\x19\xa6\x36\x7e\xe6\x41\xba\x98\x95\xef\x6e\x64\x9c\x17\xdf\x20\x1a\xdc\x71\x36\x79\x41\x9e\x01\xeb\x72\x73\xa9\x49\xb8\xa0\x8f\x15\xda\x33\x59\x3e\x9f\x93\x1b\x22\xaa\x5a\x16\x3d\x6d\x90\x42\xd6\x63\x74\x83\xd1\xe8\x21\xa1\xfe\x6b\x11\xa7\x3a\xa5\x49\x4c\x59\x37\xd3\x1d\x51\xe8\xf3\x06\xb9\x0f\xd3\xc7\xa4\x82\xc9\x5e\x11\xaa\xb5\xcc\x38\x8d\x29\x6f\x8e\x4f\xcd\x65\x5d\xd6\xc5\x6d\x39\x57\x7b\xd6\xfd\x83\x31\xb2\xc7\xc8\x0d\x29\x5c\xf7\xf3\xee\x52\xb4\x05\x56\x34\x65\xb8\x3e\x2c\x9d\x4b\xed\xb3\xe9\xa2\xdf\x4d\x28\xd6\x7a\x74\x1a\xbd\xc3\x4f\x20\x89\xb9\xe3\x2d\x7e\xb0\x62\xdf\x39\x15\x35\x5a\x00\xfa\x2a\xea\x68\x35\xcf\x03\xdb\x5d\xb9\x4e\xda\xc4\xee\x31\xad\x09\x2b\x56\x38\x97\x50\x6c\xcf\xa5\x9a\x22\x10\xc4\xf1\xc4\xaf\xf0\x18\x2e\xab\xbf\x98\xf6\xc2\x11\xc5\x07\xe3\x81\xd0\x16\xd8\xb9\xc0\x12\x29\x92\x66\x5f\x9a\x80\x62\xca\xec\xc9\xb8\x26\x3e\xf8\xf8\xad\x7b\xd2\x3a\x7c\x6c\x75\xec\xb7\x4b\x71\xa9\x91\x09\xec\xf9\x5d\xf3\x94\x8e\xb5\xf8\x18\x09\xdc\x0a\xc7\xd7\x71\x03\xf9\x09\x9a\x53\xf9\xe1\xa6\x9c\x5d\x7c\xec\xed\x78\x2b\xae\xc8\x7b\x69\xec\xff\x7b\x03\x1d\xc2\xaf\xc8\x6b\xc9\xf4\x7b\x69\xe0\x3f\x53\x17\x9d\x90\x1f\x0c\x9e\x81\xb7\xc9\xef\x8e\xde\x30\x5c\x8f\x27\x6d\xd7\x8d\x40\x18\xb6\x5d\x5e\xd7\x63\x3e\xfd\xcc\xe1\x73\xbb\x74\xd1\x5d\x27\x00\xb8\x26\xb7\xc2\xaa\xc4\x6e\x99\xc7\x1c\x07\x1c\x8b\x1b\xa2\xef\xed\x24\xa4\x98\x61\x13\xf3\x98\xca\x7b\xfb\xcf\xfe\x18\xdf\xd4\xfd\xe1\xdb\xfb\x9f\xd2\x69\xab\xa1\x7b\x74\xb8\xa7\x1b\xea\x0f\x80\x1e\x7c\xdb\x46\xe5\x8c\x61\xfe\x7a\x70\x6b\xba\x05\xc5\x99\x8b\x55\x51\xab\xc0\xe9\x33\xc7\x14\x7f\x0f\x51\x84\x52\x01\xa5\x62\x86\xe5\x80\xf1\x14\x1e\xce\x95\xce\x51\x10\x90\xc1\xf1\x02\x48\xbb\x2c\x68\xc6\x72\x92\x83\x01\x61\x07\x6e\x14\x35\x6c\xc5\xe3\x2a\xe7\xb4\x9f\x0d\x53\x2b\x46\x4a\xab\x5f\xa4\x0e\x2b\xf9\x12\xc7\x67\xf4\x21\x4f\xab\x3d\xdf\x3c\x69\xfd\xc9\xf0\x89\xef\x52\xe6\x7f\xef\xd9\x33\xe1\xa5\xc4\x56\x90\xed\x97\x52\xd6\x00\x94\x47\x68\xcd\xfb\xcd\xe9\x8d\xae\xb1\xdf\xa4\x37\x4e\x7a\xe3\xa4\x37\x4e\x7a\xe3\xa4\x37\x4e\x7a\xe3\xa4\x37\x4e\x7a\xe3\xd1\x67\xd2\x1b\xfd\xf3\x45\xf4\xc6\xc4\x8f\xa0\xff\x73\x84\x5b\xf6\x67\xf4\x67\x37\x7e\x58\xf4\xb0\x82\xd2\x0a\x3e\xe9\x68\xa1\xd7\x75\xc8\x5a\x55\xef\xde\xe9\x02\x9f\xc0\xd5\x8b\x1d\xcf\x89\xa2\x62\x15\x4b\xf2\xe5\xec\xe5\x8b\x17\x71\xfc\x1d\xdb\x55\xb7\x79\xe2\x4b\xc6\x93\x24\x6e\x9c\xb5\xfc\xe4\x11\x3f\xc6\x9d\x0b\x47\x5a\xe2\xf9\x21\x96\xd5\xfa\xe2\x60\x27\x88\xbe\xba\xab\xb4\x0e\x98\x75\x42\x72\x23\x03\xa4\x35\xe6\x62\xc3\x0c\xa1\xa6\x13\x38\xe1\x1b\x16\x77\x3f\x97\x32\x47\x41\xef\x2a\x6e\xf9\x48\x70\x4e\xa4\x70\xf1\x32\x01\x59\xf8\x7b\x33\x48\x0b\x3a\x36\x58\xd0\xee\x0c\x32\x46\xb1\x6b\xea\x02\x80\xae\xe1\x80\xa3\x21\x5a\x6e\x18\xc1\xe4\x40\x77\x6d\xd8\x29\x30\xbf\x2b\xe4\x19\x9b\xaf\xe6\x24\xaf\x5c\x33\xd6\x20\x49\x2c\x31\xf6\x1c\x6f\x60\xcc\xbe\x86\x88\xb3\x54\xf0\xff\xec\xb2\x18\xb5\x03\xec\xe0\x96\x09\x53\xd1\x22\xa2\x1d\x12\xdb\xf2\xcc\xd4\xf5\x7d\x20\x9d\x82\x1b\x44\x1a\x9c\xb2\x76\xf3\xbe\x4c\x89\xba\xc5\xf6\x94\x7b\x5f\x3f\xaa\xcf\xa6\x36\x96\x6e\x6c\xe9\x4f\x86\x3f\x07\xce\xfc\xf0\x31\xae\x6a\xea\xd8\x46\x79\x2e\x70\x28\x95\x0b\x73\x1e\x0e\x3b\xc5\x1f\x01\x38\x90\x06\x74\x64\xa7\xd2\xe1\x60\x8c\xba\xc7\x92\xb4\xf3\xbf\x79\xff\x9a\xe5\x48\xe9\x93\x2c\x65\x21\x57\xbb\xf6\x5e\x61\xb2\x55\x5d\x16\x2b\x56\xed\xa3\x44\x57\x0b\x67\x3d\x59\xfe\x7a\xbf\xc7\x02\x53\xc4\x2f\xee\x99\x3c\x37\x09\x14\x27\xcf\xcd\xe4\xb9\x99\x3c\x37\x83\xcf\xe4\xb9\x99\x3c\x37\x93\xe7\x66\xf2\xdc\x1c\x7d\xfe\xb9\x3d\x37\x53\xc4\x6f\xd2\x1b\x27\xbd\x31\xe9\x99\xf4\xc6\xd0\x33\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x7b\xcf\x6f\x47\x6f\x4c\xfc\x48\x3c\xf9\xd8\x65\x9d\x1d\x3a\xd8\xa3\x22\x4d\xa7\x68\xfc\x04\x91\x99\x27\x24\x35\x96\x32\x1f\xc8\x69\x84\x20\xc9\xe0\x5c\x32\x39\x73\x45\xf2\x20\x5c\x63\xc9\xb9\x78\xa5\xa6\x1b\x8c\x09\x5d\x91\xff\x92\x82\x61\xbe\x97\x15\x13\x5a\x06\x3a\x6f\x41\xaf\x08\x4b\xea\x99\x7e\x3e\x98\x8b\x33\xe5\x4b\x4e\xf9\x92\x53\xbe\xe4\xb7\x9a\x2f\xb9\xa6\x1a\x8b\xac\xb8\x0e\x72\x4d\xfa\x64\x90\x62\x17\x12\xd1\x92\x70\x56\xb8\xfe\xdb\xd1\xec\xc9\x20\xcd\xaf\x93\x5d\x69\x0f\x81\x63\x52\xbb\xd2\x2d\x46\xc3\xf5\xc8\x1d\x90\x84\xe5\x77\xdd\x59\x46\xdc\x64\xe8\x93\x80\xc9\x50\x68\xbe\x50\x32\x35\x43\xd6\x96\x64\xc9\x45\x7e\x64\x8e\x11\x64\xdd\xca\x46\x9c\xd4\xa4\x1c\xc8\xee\xf4\x46\x04\x72\xdb\x31\xe8\xce\xb5\xf5\x6b\xca\x88\x04\xbf\x81\x57\x15\xc6\x3b\xb9\xc0\xfb\x00\x35\x34\x88\xdc\x42\x83\x19\x67\x37\xd7\x5d\x8d\x52\x74\x7b\xdf\x4b\x2f\xa3\x1a\xaf\xaa\x78\x45\x79\x9c\x0f\x66\x7c\x94\x98\xec\x2f\xc6\x3e\x29\xf4\x79\x15\x3c\xe2\xaa\xe9\x3e\x72\xe9\x96\xf5\xa8\xd3\x10\xae\xb3\x44\x8a\x9d\xfb\xa1\x09\xf5\xa7\x79\xf0\xc6\x98\x20\x47\xb9\xe5\xc9\xce\x44\x12\xe7\x50\x4c\xb7\x52\xc3\x4e\xc5\x51\xe6\xf4\x78\xc7\x22\x79\x82\x73\x91\x8c\x73\x30\x92\xfd\x6d\xb3\xa3\x77\x1a\x50\xed\x6b\x1c\x41\x93\x34\xc5\xdc\x4e\xe0\x6f\x24\x4f\xb3\x6e\xc7\xfb\x1d\xc9\xfe\xf2\xd4\x6c\x52\xb7\xbb\x49\x67\x12\xe2\x99\x6f\xcf\x71\x59\x3b\x22\x47\x51\xec\x77\x5e\x5a\x19\x30\x8a\xe4\x81\x03\x13\xf8\xfa\x69\x3e\xcc\x27\x6e\xe4\x38\x7f\x24\xd9\xdf\x46\xe7\x45\xc3\x72\x56\xa9\x6e\x8f\xe6\x39\xf0\x68\xee\x7b\x28\x47\x51\x3d\xe2\xd5\xec\xb8\xfd\x46\x11\x3d\xea\xd9\x3c\xc9\x58\x7b\xbc\x9b\xa3\x9c\xb1\xa4\xcf\x21\xeb\x86\xfc\x69\xcd\x47\x9e\xb7\x73\xb8\xf8\xc8\xd3\xdc\x7c\x64\xbc\xab\x8f\x3c\xf5\x1c\x8d\x75\xf9\x91\x91\x6e\x3f\x32\xc2\xf5\x47\xc6\xba\xff\xc8\x58\x17\x20\x19\xbd\x2e\xa0\x0e\xbe\x1d\x6c\x09\x7e\xfc\x49\x2b\xde\x37\x34\xe4\x11\x9c\x70\xa8\xd1\xba\xc6\xe2\xa0\x6f\x6d\x68\x69\x25\xdc\x7f\x5b\x35\x09\x0e\xe5\xff\xa4\xea\x32\x94\x2b\x6d\xcd\x26\xe7\xfe\x6f\x51\xf2\xde\xba\xd6\x47\x13\x89\xdb\xd1\x71\xbd\xd7\x32\x8d\x0a\xef\x60\xb0\x23\xdf\xd7\xd1\x53\x75\xc4\xc7\xb5\xd4\xa8\xcf\xd5\xc5\x7d\x2f\x1e\xd8\xee\xe2\xea\x29\x72\xd3\x12\xb9\x15\x17\xa8\x78\x1e\x44\x74\xbc\x56\x9b\x6a\x44\x88\x62\x47\x2e\x80\xd2\xc5\x11\x74\xf0\x48\x23\xe0\x09\x6e\xf4\xa4\x97\xea\x5e\xea\x63\xe1\x17\x0d\x81\xda\x3b\xe9\xdd\x3f\xcd\x9f\x52\xe2\x07\x5e\xfb\xbd\x3f\xd4\x5d\xc9\x33\xef\x51\xa2\x2b\xbb\x53\xe6\x79\xb8\xec\x56\x6b\xaa\x1d\x4c\x38\x80\x46\x36\x8c\x0a\x4d\x2e\xbc\x1f\xfb\xb2\xd5\x5b\x3e\xec\x03\xf3\x4f\xf2\x3d\x32\x4a\x66\xa4\xcb\x46\xe3\xa0\xe5\x7f\x4b\x31\x4d\xf6\x3c\x59\xce\xbf\xdf\x14\xe5\xac\x9d\xff\xb1\x2e\x17\xfb\x3c\xf3\x7e\x9b\xe7\x76\xfd\x85\x34\x2d\x32\xe4\x19\x15\x86\xcf\xea\x5f\x24\x90\xad\xbd\x39\xe0\x72\x6c\xa7\x61\x75\x39\x28\xd5\x2d\xd2\x2e\x50\xde\xf0\xf0\x95\x6b\xd3\x30\x6a\x05\xb8\x26\xbe\xaf\x35\xd5\x75\xbf\x58\x29\xbc\x1b\x1e\xc5\xdd\x70\xcf\x9e\xc3\xc7\xb9\x15\xd1\x58\x84\xd5\x00\x74\x4a\xb3\xef\x09\x15\xd2\xfc\x03\xb6\xa3\x5c\x42\x1d\x6f\x18\x9a\x14\xee\x38\xdb\x7f\xf1\x1e\x73\x58\xd9\xa4\x15\x80\x3d\xe2\xf5\xdc\xe7\xe4\x0d\x1c\xc3\xf6\x60\x39\x74\x73\x4b\xa0\xe9\xdb\xca\x27\x1e\xa2\x84\x93\x97\xa6\x6f\xcd\xda\xd3\x39\x47\x20\x73\x74\xea\xe2\xe3\x99\x52\x17\xf7\x5c\xbc\xff\x54\x99\x8b\x89\xce\xfb\x29\x7d\x71\xe8\x99\xd2\x17\x13\xd3\x17\xa3\xe6\x8f\x37\x43\x74\x1e\x63\x90\x66\x93\xe7\x38\x98\xc7\x48\x7e\x76\xdd\xdd\x23\x9c\x5f\x76\xab\x37\x55\x61\x78\xd9\x80\x94\x34\x0e\xb5\x40\xe7\xc6\xd2\x85\xc8\x3b\x92\x27\x26\x42\x09\x71\xdf\xbd\x63\x0a\xdf\x03\x10\x93\x86\x1b\xec\x0a\xc3\xc4\x74\xa0\x73\x55\x4d\x11\xf2\x17\xbd\x57\x04\x63\xf5\x83\xad\x21\xf1\x19\x13\x42\x7c\x0d\xba\x82\x6e\x62\x3c\x70\x7b\x3e\xb3\xca\x48\x61\xd9\xcc\x2a\x0b\x5e\x76\x47\x88\xc1\x43\x9d\x1a\x7d\x9f\x5b\xe6\x03\xb9\x2b\xbe\x65\xa2\x51\x76\x9e\xe9\xe7\x31\x8a\x98\xf3\x33\x0f\x28\x89\x5d\xd5\x2f\x2a\x12\x39\xa4\x1c\xc2\xad\x35\x4a\x11\x4b\x50\xc0\x9c\x92\x13\x41\x74\x4f\xf1\xfa\x4b\xeb\xf6\xff\x8f\x56\xf0\xbb\x56\xa8\x22\x23\xb1\x2d\x95\x0b\x16\xb6\x56\xba\x1a\x56\x68\x14\xa9\x13\xc7\x6c\x47\x04\x2b\xcf\x17\xa8\x1c\x19\xa4\xfc\x6a\x29\xac\xfd\x81\x49\x22\x53\xf0\xa1\xa1\xa0\xe4\xd8\xdc\x86\x11\xbe\x88\xa7\x26\x35\x9c\x28\x10\x39\x65\x35\xf4\x7c\xf1\x49\x71\xe2\x63\x01\x47\x58\x83\x51\xc1\xd7\x5f\x7d\x72\xc3\x91\x00\xa3\x0f\x16\x26\x2f\xc8\xd1\xe0\xe2\x41\xa0\x70\x74\x30\x55\x1f\xcf\x72\x08\x36\xec\x3b\xf6\x3c\x25\xa8\xf8\x35\x93\x1b\x0e\x03\x89\x4d\x50\x70\x64\x70\xf3\x20\x30\xb7\x1f\x10\x1c\x75\x30\x02\x69\x0e\xc9\x34\x8f\x8c\xf1\x4b\xa5\x39\x8c\x0a\x02\x4e\x18\xff\x09\xe3\x3f\x3a\x37\x34\x35\xb0\xf7\xd4\xa0\xde\xa8\x5d\x3e\x63\x30\xef\x6c\x81\xbc\x33\x07\xf1\xe2\x02\x78\x24\x49\x9c\x44\x04\xef\x20\x1c\x97\x42\xf2\x94\x81\xbb\xe4\x73\x91\xf8\x42\x6a\xb0\xee\x6c\x81\xba\xf3\x04\xe9\xce\x11\xa0\x4b\x92\xf5\xc9\x67\x3f\x4d\xa6\x25\x07\xe4\xe2\x83\x71\x2d\x3f\x4b\xe4\x5c\x83\x81\xb8\x6e\x78\x2d\x45\x64\x1f\x0d\xc2\x1d\x84\xd6\x92\x03\xd4\x87\x7e\x9f\xe3\x5e\x9d\xd8\x05\x18\xf0\xfd\xec\x79\x76\xd2\x03\xae\xc7\xbc\x3f\x5d\xdf\x4e\x24\xcd\x23\x41\xb7\x88\x50\x5a\xac\x7f\x05\x02\x6e\x69\x61\xb4\xa4\x33\x92\x12\x4f\x49\x19\xfe\xc9\x43\x24\xd1\x69\x77\xc2\xf0\xa7\xa6\xde\xb5\x4f\xd9\x41\xfe\xdd\xe0\x6c\x30\x02\x40\xb7\x92\xe7\xa4\xac\x8c\xc1\x83\x16\x91\x83\x37\x48\xd5\xe5\xe7\x4d\x39\x78\x87\x39\x78\x9d\xad\x6a\x65\x66\x05\x69\xf6\x84\x85\xfa\x13\xf1\xc2\xa3\x6c\x27\xea\xc5\x24\xe2\x05\x29\x1e\x24\xea\x45\x26\xe2\x85\x27\xdf\x4d\xd4\x0b\x27\xe2\x05\x29\x1e\x24\xea\x85\x12\xf1\xa2\x25\xd3\x3e\x6b\xf6\xef\x79\x98\x66\x30\x5b\xef\x68\x36\x5e\xdc\xe4\x87\xb2\xf5\x0e\xb3\xf1\xe2\xf6\xbe\x3f\x5b\x2f\x90\x8d\x17\xc1\xac\xdf\x4c\xaf\xc3\x29\x1b\xcf\xff\x7a\xca\xc6\x23\x53\x36\x9e\x7b\xa6\x6c\xbc\xd8\x67\xca\xc6\x9b\xb2\xf1\xa6\x6c\x3c\x78\xa6\x6c\xbc\x29\x1b\xaf\xe7\x99\xb2\xf1\xa6\x6c\xbc\x29\x1b\x2f\xf6\x99\xb2\xf1\x8e\x3c\x53\x36\xde\x94\x8d\x37\x65\xe3\x4d\xd9\x78\x53\x36\x5e\xf3\x4c\xd9\x78\x53\x36\xde\x94\x8d\x57\x3f\x53\x36\xde\xfe\x33\x65\xe3\xc1\x33\x65\xe3\xed\x65\xe3\x75\x82\x58\xbf\xde\x94\xbc\xf6\x34\x62\xd9\x65\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xfa\x99\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x0b\x3c\x53\x5e\xde\x94\x97\x37\xe5\xe5\x0d\x3f\x53\x5e\xde\x94\x97\x37\xe5\xe5\xb5\x9e\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\xfb\xe2\x79\x79\xc1\x9f\x50\xb5\xea\x95\x34\x9d\x93\x7c\x79\xa3\x56\x15\x5e\x32\xce\xfd\xca\x84\x51\x3b\x70\xfd\xe3\x45\x94\xcb\xec\x81\x29\xc2\x37\x74\xc5\x2e\x07\xac\xcf\x57\xef\x5e\xdb\x4d\xac\xb4\x3d\x0b\x2e\x7d\xc7\x6d\x6a\xa9\xe4\x96\xe7\x2c\xb7\x96\xa6\xe2\x74\x51\xd8\xeb\x6d\xc9\x14\x13\xf6\x06\xf8\x97\x67\x3f\xdd\x7c\xfc\xe5\xfd\xcd\xbb\x37\xfd\xf2\xc2\x5e\x80\xec\x73\x49\x45\xce\x72\x52\x69\x7f\xaa\xdd\x4d\xcb\xd4\xe5\xa5\x26\x4c\x6c\xb9\x92\xc2\x4e\x06\x6c\x27\x4a\xb6\xee\x6b\xbd\x64\x33\x2a\x5c\x58\x46\x31\x2d\x8b\x2d\xcb\x51\x25\xa8\x47\xe7\x25\x05\x17\x65\x65\x3c\xdc\xf3\x91\x0f\x78\xe8\x17\x8c\x54\x22\x5b\x53\xb1\xb2\xf3\xb5\x0b\xd8\x9a\x1f\xd1\x3b\x61\xe8\x67\xfb\x5d\x30\x64\x74\x46\x4b\x1f\x09\xed\x77\x19\xe5\xb2\xb2\x4b\xf6\x2f\xff\x72\x45\x38\xfb\x8e\xfc\x4b\x8b\xe0\x9c\xbc\x71\x34\x5a\x0b\x8a\xe1\x26\xb6\x1d\x08\x37\x2e\x9a\xe5\xbc\x22\x8a\xad\xa8\xca\x0b\xa6\x21\xc0\xf1\xb8\x66\x90\x14\x89\x6a\x8d\xdb\x2e\xe6\x6d\xba\x5e\x8a\x42\x9a\x39\x79\x55\xaf\x27\xc6\x79\xf2\x39\x79\x27\x21\xc8\xb1\x94\xdf\x91\xb5\x31\xa5\xfe\xee\xfa\xfa\xa1\x5a\x30\x25\x98\x61\x7a\xce\xe5\x75\x2e\x33\x7d\x6d\xa8\x7e\xd0\xd7\x5c\x58\x86\x9e\xe5\xd4\xd0\x19\x5c\xe2\x19\xf8\x2d\xae\x51\xae\xce\x32\xb9\xd9\x50\x91\xcf\xa8\x63\xd9\x59\xbd\xfd\xd7\xbf\x73\xf2\x67\x46\xeb\x5f\x71\x31\xa3\x33\xbd\x66\x45\x71\xd9\x33\xe8\xc0\x7d\x1c\x21\x5d\x42\x07\x9a\x89\x6d\xd4\x29\x7c\xeb\xba\xb9\xb7\x58\xb8\x5e\x7b\x38\x98\x9a\x19\xcf\x8a\xf5\xa4\xfb\x65\xe4\xe1\x36\x8c\x5b\x81\xce\x18\xdf\x88\xed\x4f\xb4\xeb\x8f\x12\x47\x07\x4c\xdc\x0f\x06\x44\x1c\xb7\xf7\xdd\xab\xf0\x44\xe2\x9c\x91\xf6\x5a\x1e\x96\xea\x9d\x89\xbc\xa7\x9b\x26\x81\xf4\xc8\xf8\xe7\xe4\x1d\x3a\x1a\x02\xd2\x9c\x92\x57\xbf\xdc\xbe\x7e\xf3\xfe\xd3\xed\xf7\xb7\x6f\x3e\x0e\xdf\x58\x91\x37\x15\xdc\xfb\x09\x53\xb9\x0c\xc8\xd3\x8e\xdc\x0c\x4c\xa7\x91\xaa\xa5\x62\x5b\x2e\xab\x46\x9f\x39\xce\x96\x5c\x84\xae\xbb\x36\xb7\x3a\xff\xf6\x8e\x68\xa6\xb6\x3c\x3b\xbe\xf4\x41\x4f\x75\x47\xac\x47\x8b\xef\x50\x54\x74\x5f\xb8\x47\x09\xf1\x00\xd1\xa3\x22\x3e\x4a\x94\x07\x08\x1f\x15\xf4\x11\x02\x3d\x62\xb3\x0e\xc5\x3d\x8a\xf5\xd7\x6c\x49\xab\x02\x55\x84\x8b\x8b\x79\x9f\x3c\x75\x84\x12\x58\xfd\x7b\x25\x03\x49\x99\x1d\x76\xbf\xc7\x84\xe7\xa5\x54\xbd\x87\xf7\xd2\xc5\x60\x42\x8c\xd4\x12\x91\x4e\x61\x41\x9d\xdb\x69\x2c\x11\xde\xd0\xf8\x40\x49\x26\xc5\x92\xaf\xde\xd1\xf2\x6f\x6c\xf7\x91\x2d\x13\xe3\xef\x68\xb4\x38\xef\x3f\xa8\xef\x56\x72\x22\xc1\xb0\x9a\x9c\x16\xce\x89\x0e\xe2\x1c\xa4\x1b\x23\xec\xcf\xd9\x05\x67\xd0\xde\x63\xa4\xfc\xd1\xc1\x5d\xb6\xc5\xbd\x3b\x3b\xa6\xad\x96\x44\xda\x27\x03\xca\x4b\x26\x45\xc6\x4a\xa3\xaf\xe5\xd6\xca\x36\xf6\x78\xfd\x28\xd5\x83\xd5\x46\xec\xa9\x9f\xa1\x9a\xae\xaf\xc1\x7a\xbc\xfe\x1d\xfc\xbf\xc8\x8f\x7e\xfa\xf0\xfa\xc3\x77\xe4\x26\xcf\x5d\xa1\x8a\x4a\xb3\x65\x55\xb8\x1c\xec\x39\xa1\x25\xff\x89\x29\xcd\xa5\xb8\x22\x0f\x5c\xe4\xb1\x3e\xb1\x8a\xe7\xff\xd7\xf0\x21\xf6\x4f\xe2\x1e\xc9\x12\xdd\x9d\x23\xf6\xe9\x1e\x6c\xf1\x5d\x47\xfd\xac\xf9\x3c\x0e\xaf\x41\x40\xa3\xd1\xc0\x8b\x3e\x56\xe0\xae\xb0\x84\xc9\x2e\xa4\x2c\x18\x0d\xdd\x6d\x69\xf6\x64\x8c\xdd\x9e\x60\x47\xc2\xfe\xa7\x4b\x92\xcb\x46\x94\xa0\x1f\xd4\x9d\x8a\x52\xe6\xdf\x11\x5d\x95\xa5\x54\x51\x21\xfc\x0d\x33\xd4\xea\xe8\x73\xcb\xca\x57\xdd\xff\x04\xf7\x48\xeb\xdf\xc0\x79\x11\xe5\xac\xad\x5f\x01\xc9\x8c\x01\xcb\x2b\x70\xd1\xcc\x85\xcc\xd9\x7b\xf8\x16\xfc\xa7\xd3\x20\x6e\xb2\x4c\x56\xc2\xc0\x1f\x22\xe8\x6b\x43\x4d\xa5\xe7\x6b\xa9\xcd\xed\xdd\x95\xff\xcf\x52\xe6\xb7\x77\x81\x1b\x8d\x24\xcb\xd1\xe6\x60\x8e\x38\x09\xee\xcd\x76\x01\x90\x0d\x85\xff\xf9\xbd\xdd\xb5\x3b\x6a\x62\x1d\x36\x5c\x93\x47\xc5\x8d\x61\x02\x14\x21\xc0\x8c\xc9\xe5\x95\x3d\x14\xcd\x7d\xbe\x7d\x79\x71\x16\x79\xbd\xf4\x83\x1d\xb1\x04\xf6\x35\x3f\x7f\x64\xd5\xfa\x6e\x89\x53\xe9\xfc\xd3\x40\x22\x6f\xee\x6e\xc9\x16\x57\xf6\x2b\x3b\x97\x96\xd1\xbb\x98\x20\x12\x3c\x9e\xe9\xfb\x27\x8b\x86\xba\xae\x8c\x5b\xff\x5a\x83\x8f\xd9\x47\x48\x45\xaa\xb1\x55\xa4\xe0\x1b\xee\x12\x87\x5d\x95\x1a\x4d\x9e\xe1\x3f\xce\xb3\xb2\x8a\x39\xb6\xee\xd7\x1b\xb6\x91\x6a\x77\xe5\xff\x93\x95\x6b\xb6\x61\x8a\x16\x33\x6d\xa4\xa2\x2b\x76\x55\x7f\x20\x96\x70\xfd\x7b\x24\xdd\x19\xe4\x21\xfd\x18\x57\xb6\x35\xb6\xb2\x4a\x59\x05\xa3\xd8\x79\x81\xca\xf2\x93\x4b\x97\x7a\x47\xde\x8f\x54\x89\x6a\xcb\x1b\x95\xaa\x9a\x7b\x41\xb3\xde\xca\xa2\xda\xc4\xe3\xe2\xfc\x95\x8f\xc5\x8e\xc4\xd6\x6a\xe2\xfa\x2c\xca\x45\xce\xb7\x5c\x8f\x02\x02\xde\xd7\x31\x26\x88\xf7\x55\xc6\xda\x7b\x88\xe4\x8f\x07\x58\xda\x87\x7d\x2e\xa5\x06\x67\x9b\x47\x0f\x76\x65\xe9\xcb\xb8\x40\x50\xe2\xc4\xfd\xd7\xc6\x6c\xb5\xaf\x5f\xf3\x5d\x73\xae\x6b\x51\x7a\x86\x5d\x4a\x91\x83\x7e\x40\xa7\x14\x83\x9a\x65\x8a\x99\x53\xd9\x59\x48\xcd\x3b\xde\x20\xe6\x97\x12\x19\xfd\xa6\x8c\xb3\x3a\x70\x03\x53\x6a\xae\xd3\xa5\x92\x9b\x39\x01\x97\x57\xe4\x21\x58\x30\xf0\xc1\x14\x3c\xf7\xd4\x1e\x58\x24\x72\x68\x32\xf9\x82\xcf\x3f\xb9\xc9\x77\x8f\x1c\x25\x95\xb5\xe4\x22\xe7\xf6\x1b\xb7\xf7\xa2\x7e\x18\x1e\xdd\x0c\x8e\x53\x20\xda\x11\x11\x75\xec\x8f\x76\x40\x88\xf0\xae\x2a\x0a\xdc\xc4\xb8\x00\xe4\xed\xde\x4b\x0e\x43\x59\xab\x15\x0e\xb1\xde\x72\x7b\xf6\x4f\x41\x3a\x81\xa4\xbb\x85\x41\xbd\x3c\xb6\x3f\xa8\x34\xfa\x0f\xcb\xaa\x70\xa5\x0f\x77\x43\x78\x78\x88\xfd\xd9\x11\xba\xc0\xa6\x4f\xac\xba\x93\xb9\xe5\x5e\x88\x33\xd6\x36\x06\x38\x9f\xb5\x97\xb1\xfd\xe3\xf4\x2e\xe6\x92\x6a\x4b\xd3\x48\xc2\x85\x55\x6e\xf2\x8a\x16\x30\x30\x08\xb7\x96\x88\x7d\x42\x43\xd8\xfb\x3c\xfb\x93\xfc\x70\x6e\xa7\x08\xf4\xbc\x95\x19\x2d\x3e\x00\x23\x7c\xac\x1d\xe9\x35\xa6\x89\x09\xa8\xe6\x68\xe5\xa8\xd5\x9f\xb8\x1c\x3a\x39\x46\x92\x82\x19\xb2\x93\x15\x41\x98\x44\xd7\x3d\x9f\x3b\x7e\x23\x5c\x68\x9e\xb3\x7a\xcb\x02\xb1\x1e\xd8\xcc\x2f\x1c\x34\x0a\xde\x29\x5f\xf6\xb6\x48\xbd\x25\x22\xe4\x7f\x94\xdc\x3f\x85\x94\x10\xdc\xd4\x06\x48\x24\x48\xc1\xc7\x47\xed\xbb\x9c\x16\xfc\xbf\x80\xf1\x1a\x43\x48\x93\x05\x2b\xa4\x58\x41\x04\xab\x3f\x75\xd0\x69\x71\x73\x72\x2b\xb8\x69\xbf\x8d\x61\x32\x96\x55\x00\xe4\x11\x44\xaa\x9c\x29\x52\x2a\x2e\xa1\xb6\x6e\xf3\xcb\x5e\xd2\x0b\x66\xbf\xad\x0d\x05\x8b\x0f\xe2\x54\x62\x07\xe3\x6d\x85\xc0\x96\x94\x17\x2e\x9f\x10\xaa\x17\x6b\xfb\x37\xcb\xf9\x43\x35\x32\x8d\x24\x6b\xba\x65\xf0\x32\xc3\x5a\xa8\x5c\x93\x35\x15\x39\xfc\x67\x96\x49\x95\xe3\xbc\xc1\xf9\xa9\x18\x0c\xe2\x4e\x16\x3c\x1b\xd0\xca\xac\x5a\x68\x19\x0d\x04\x0b\x15\xfb\x23\x85\xc8\x8f\xda\xd0\xa2\xf5\x6f\x9b\x40\x54\xb4\x12\xfc\x1f\x15\x23\x74\x23\xad\x5c\x2d\x5a\xaf\xea\xc3\x15\xf7\xc9\x9e\x76\x6a\xbd\x14\xdf\xf2\x25\xcb\x76\x59\xc1\x08\xcd\x9c\x3f\xf0\x23\xa3\x39\x17\x4c\x6b\x7b\xcc\x17\xd6\x00\x93\x8a\xbc\xe5\x5b\xd6\xfa\xb7\xe1\xb2\x89\xde\xec\xf8\xd8\x06\x58\x02\x2a\x6a\x7f\x11\xa0\x60\x2b\x7d\x00\xef\x99\x91\xb0\xd4\xd5\x40\x58\xdb\x01\xc9\x5b\x59\xc2\x8b\x1d\x54\x44\xf5\x71\x55\x5f\x0c\xd6\x79\x19\xae\xc1\x97\x61\x37\xa0\x97\x24\x64\x8d\x36\x86\xdb\xae\x64\x35\xe4\x54\xb4\x02\xb6\x1b\xfa\xd9\xce\x00\xa4\x13\x35\x81\x22\x0e\x2e\x78\xe6\x0a\x16\x63\xfe\x71\x77\xa7\xf5\x9c\xbc\x75\x8e\x1b\xc5\x1c\x9a\x32\x1f\x3a\x57\x7c\x6f\x73\x21\xbc\xaf\xf9\x86\x17\xd4\x32\xbd\x5e\x73\x29\x0e\x59\x00\xa3\xb7\xbd\x44\x1b\x4f\xca\xc2\x97\x9a\x85\x74\x98\x8d\xdc\xda\x13\x36\x08\x35\xe9\x25\x1a\x23\xa4\xad\x6c\x2e\x24\xcd\xf5\x75\x29\x73\x7d\x6d\x27\xd7\x20\x4d\xf4\xf5\x48\x34\xc9\x5e\x2e\x9a\x43\x50\xb7\x50\x2e\x2d\xc6\x83\x5d\xb4\x97\xe6\x23\x1d\x84\x51\x18\x49\x54\x25\x20\xb6\x0c\x4b\x6e\x65\xdb\x13\xaf\xc5\x21\xe0\xd8\x91\x89\xc4\xc2\xc7\x02\xd7\x99\x07\x97\xa5\x81\xc8\x82\x2e\xd1\x20\x24\xa2\x07\x4a\x16\x20\xdc\x0f\x34\x0b\x23\x12\x42\x0b\xd1\x03\x37\x1b\x46\x24\x84\x9c\x22\x03\xa0\xb3\x41\x44\x42\x80\xee\x20\xf4\xac\x0f\x91\x10\xa0\x19\x04\xa0\xf5\x01\xcd\x02\x74\xbf\x61\x18\x1a\x3e\x51\xe0\xf0\x68\xdb\x3c\x0e\x69\xea\xc6\x98\x72\xde\xdf\xd4\xc7\x1b\xa9\xcf\xc9\x7b\x69\x1a\xdd\xc9\x8b\xa2\x10\x47\xda\xf5\x38\x0a\x2f\x25\x6f\xde\x7f\xfa\xf8\xf7\xbb\x0f\xb7\xef\x3f\xed\x0b\x82\xd0\xd1\x49\xc4\x9a\x46\x14\x46\x3d\x03\xe2\x14\x9f\x51\xb8\xd3\x00\xcd\x68\xe0\xd2\x9e\x20\x08\x92\x8d\x06\x2e\xc5\xd8\xe8\xad\xb1\xc6\x02\x97\x3a\x82\x20\xb8\x63\x01\x31\x31\x09\x82\xa3\xcb\xd6\x8f\x53\xc5\x67\x2c\x5a\x35\x74\x0e\x6a\x08\x68\xaa\x44\x8f\x5a\xa5\x71\xf8\xd5\x08\xb7\x3d\x10\x88\x46\xb1\xfa\xb7\xe2\x9d\xfd\xb1\x8e\xef\x11\xb8\xd6\x28\xcf\x28\xb8\xf8\xe3\xd1\xad\xf8\x24\x39\x8e\x23\x90\xae\x47\xa6\x18\x83\x77\x8d\x9a\xe0\x11\xc9\x3e\x84\x7a\x8d\xa2\xd9\x46\xc6\xc6\x63\x5f\xd3\x48\x47\xea\x9b\x51\x44\xc3\x49\x0e\xdd\xeb\x24\x8a\x68\x4a\xc2\x83\xbb\x54\xa2\xe8\x26\x25\x3f\x44\x51\x3c\xc7\xf5\x83\xcf\x53\xd0\xb3\xf8\xa4\x1f\xa5\x30\x92\x16\x9f\x74\x3c\x6d\x24\x83\x16\x15\x9b\x9f\x00\x55\x8b\x4f\x6a\x11\x92\x64\x84\x2d\x3e\x27\xc4\xd9\x8e\x1b\x37\x49\x2f\x9c\x72\x0a\xe4\x2d\x3e\xa3\xb2\xcb\xe3\x43\xb2\x47\x86\x3b\xe0\x44\x4f\x20\x49\xbe\x86\xc3\xbd\xfb\xc4\xbb\xdf\x93\xc8\xc6\xba\xea\xbb\xcf\xa8\x7d\x4c\x0b\xdb\xe2\x13\x8f\xd7\x4d\x9a\x35\xc6\x7a\x47\x47\x71\xf1\x49\x8b\xe5\xe2\x93\x5a\xd3\x22\xa5\x9e\x45\x72\xfa\x7d\x3c\xa6\x17\x9f\xb3\x20\x7b\xf1\x39\x0f\xbe\x77\x8f\xf6\x99\x50\xbe\xf8\x3c\x0d\xeb\x8b\xcf\x18\x59\x9e\x8a\xfb\xc5\xe7\x4c\xe8\x5f\x7c\x4e\x8b\x01\xc6\x67\x94\xc4\x49\xc4\x03\xe3\x13\x8b\x0a\x4e\xbc\x3e\xf6\x4a\x6c\x27\x63\x83\xf1\x19\xb1\x0c\xe9\x22\x27\x1e\x2d\xdc\x1e\x54\x82\xe0\x49\x47\x0e\xe3\x73\x16\xfc\x30\x3e\xa7\x47\x11\xe3\x73\x36\x2c\x31\x3e\xa7\x47\x14\xe3\x33\x1e\x57\x8c\xcf\x18\x49\x36\x02\x63\x8c\x4f\x3c\xd2\x38\xe9\xcc\x7a\x54\xf2\x53\xf0\xc6\xf8\x8c\x2b\xaa\x94\x82\x3d\x76\xaf\x44\x22\x90\xd3\x74\xa5\xba\xef\xed\x00\x0e\x39\x89\x62\x2c\x66\x19\x9f\x51\x8b\x97\x86\x5f\xc6\xe7\xd4\x28\xe6\xd1\xc3\x4f\x97\xd8\xd1\xb8\xe6\xf6\x98\x12\x04\x76\x1a\xc6\x19\x9f\x24\xa4\x73\xf4\x82\xee\x55\x41\xfa\xc6\x8d\xe4\x1e\x04\x74\xd2\x69\x69\xa1\xa5\x9f\x82\x83\xc6\x67\x32\xc0\x27\x03\xfc\xb4\x06\x38\x62\x68\x27\xeb\x3b\x51\xa6\x26\xe5\xd9\xc5\x8d\x3a\x80\xb6\x4e\xfc\x6e\x74\x14\x2f\xb1\xa0\x82\x8f\xe4\x79\x4d\xdb\x48\x52\xca\xb2\x2a\xa8\xe9\xa9\xcf\x11\x8a\xc1\xef\x97\xa8\xf1\xc2\xb7\x89\xaa\xd4\x60\x25\x77\x8f\x6f\xc2\x31\xa9\xc3\x68\x14\xb9\x29\x0a\xc2\x05\x0a\x5f\x20\xef\xc3\x15\x8a\xa1\x72\x1c\x20\x49\x31\xfa\xb7\xb5\x93\x7b\x74\x0d\x22\x5a\xf1\x1a\xae\x11\xca\x09\x15\xcd\xa0\x81\x04\x8d\xe0\x3e\xe7\xf7\xe7\xa2\x69\x22\x51\xab\x67\x75\x91\xc8\xfd\x0e\x38\x21\x16\x81\x02\x70\xda\xf8\xe5\x82\x79\x1a\xfa\x00\xf1\xaa\x8c\xe5\x4c\x64\x0c\x0a\x38\x57\x4c\x47\x1e\xdc\x85\xb5\x4c\xc8\x1b\xb1\xad\xc3\x30\x15\x86\xb6\xf1\x9a\x3c\xfa\x85\x00\xc9\x2f\x11\xbc\xb5\xac\xed\x02\x16\xad\x18\x2e\xdc\xe8\xde\xde\x0c\x1e\xf5\xba\xf2\x75\xed\xa9\x0c\x71\x74\x8a\xb2\x52\x47\x21\x22\x15\xb3\x03\x2d\xa5\xa9\x77\xd0\xcd\xcf\x3a\x43\xc4\x24\x45\x8d\x38\x4b\x72\xd5\x57\x4a\xaf\x3a\x8b\xea\x90\xae\x36\x24\xab\x0c\xa9\xea\x42\x42\x6d\x8d\x08\x09\xdc\x3c\xc9\xea\x41\xaa\x6a\x90\x74\x75\x97\x8a\x2d\xf9\xe7\xe4\xb3\x76\xd3\xca\x2f\xe2\x39\x13\xc6\x9a\xe6\x80\xf4\x2f\x15\x2b\x99\x18\x04\x3b\xb7\x1f\xc0\x67\x43\xe7\x02\xd1\x5d\xd4\x79\xcb\x44\x38\x2b\x8e\x02\x2d\x8f\xb1\x02\xe7\xfe\x58\x36\xe8\x24\x6d\x26\x69\x73\x6a\x69\xe3\x18\xed\x57\x2b\x6a\x4e\xac\xa9\x03\xda\x35\x05\x76\xfb\xba\x85\x92\x85\xd3\x94\x9c\x7a\xd6\xca\x60\xc0\x84\xc6\xc0\x8c\x3f\x35\xfd\xe3\xb8\x6e\xc4\xa5\x91\x58\xa2\x17\x93\x59\x14\x29\xd8\x96\x15\x4e\xf3\x09\x50\xdc\x50\x41\x57\x58\xcf\xdd\x48\xef\xaf\xb4\xf6\xa7\x3d\x76\x8a\xe7\x1d\x05\x1c\x73\x2e\x83\x25\x06\x7d\xae\x06\xbc\xaa\x64\x51\x30\xa5\x49\xc1\x1f\x18\x79\xcd\xca\x42\xee\x5c\xf9\x74\x91\x93\x7b\x43\x8d\x3d\x7a\xf7\xcc\xe8\xd3\x54\xb0\xab\xd3\x5d\x31\xd7\x2a\x65\x3b\x21\xe9\x15\x52\x3d\x49\x89\x89\x5a\xe4\x83\x00\x39\x77\x53\x3c\xd2\x9d\xbe\x22\xef\xd9\x96\xa9\x90\x4c\xb8\x5d\xbe\x97\xe6\x0e\x55\xe1\x2e\xce\x08\xc9\x10\xbe\x24\xdf\x41\x03\x21\x43\x0c\x5d\x81\x59\x53\x27\xab\x06\x68\x4b\xd5\x21\x8f\xe2\xeb\x91\x6b\x36\x36\xf5\x06\x9f\x51\xac\xfa\x3b\xf8\x8e\x15\xc8\xf8\xdf\x27\xd9\xbe\xc2\x27\x97\x25\x6c\xdc\x0d\xa6\xa1\xf9\x66\x73\xac\xcd\xd3\xae\x99\x21\x56\x44\x0f\x89\x13\x6b\x5e\x71\x41\xb0\x87\x20\x36\x67\x6c\x98\xbf\x1e\x19\x1a\xa8\xda\xaf\x78\xd8\x4c\x8e\xb2\xbe\xe2\x2f\xef\x52\x6a\x73\x6f\xed\xe0\xd4\x6a\x42\x77\xfe\x45\xc8\x71\xa4\x45\xc1\x72\xc2\x37\x1b\x96\x5b\xbb\xb7\xd8\x11\xba\x34\x11\xbd\x50\xad\xbd\xd6\xb1\xc9\x33\xc5\xa8\x4f\xaf\x84\x84\x3a\x48\x82\x6c\xe7\x55\x46\xd0\xec\x50\x34\x4c\x6d\xb8\x00\x63\x1c\xa3\x75\x2e\x83\xb3\xc9\xab\x8c\xb9\x47\x3a\x99\x97\xcd\x89\x86\xdb\xaf\xc5\x21\xfb\x01\xd1\x08\xd2\x8b\x42\x66\x0f\x9a\x54\xc2\xf0\x02\xa7\x2c\xe5\x03\xc9\xe4\xa6\x2c\xe0\xec\x3c\xe1\x16\xa8\xff\xe7\xac\xe6\xb7\x99\xa5\xae\xaf\x7f\xd7\xfc\x09\xfe\xe1\xd4\xf5\x8b\xd8\x67\x96\x8d\x28\x17\x61\x25\xa4\xdd\x24\x88\x0e\x4b\x51\xab\x85\x4b\x69\x2f\xa4\x78\xdf\x6b\xd3\xb3\xa0\x16\x86\x73\xf2\xe6\x33\xcb\x5a\xbd\x28\xa0\x13\x6b\x16\xc8\x6e\x6f\x3f\x46\xc2\xa1\x3e\x57\x53\xc0\xa8\x4c\x9d\xf6\xd3\x59\xb9\x57\xf8\xb6\xef\xaf\xe6\x88\x91\x82\x0b\x96\x16\x2e\x74\x79\x3e\xed\x7c\xfd\x9a\x57\xd0\xc7\xe5\x34\xe7\x14\xa7\x36\x57\xd0\x94\x61\x57\xe3\x50\xfd\xf8\xa0\xaf\x80\x94\x86\x3c\xbb\xbc\xbe\x4c\x69\xcb\xbe\xef\x86\xbc\xb4\x9a\x4c\xc1\x50\x42\xa3\x4f\xd2\x7d\x23\x85\xa8\x26\x9a\x6f\xca\x62\x07\xab\x70\x99\x5f\x11\x6e\x3c\xb0\x55\x55\xc2\xaf\x49\x4a\xe7\x3f\xc8\x06\xb9\x22\x5a\x12\xa3\xa8\x6f\x15\x84\xff\x6a\xc9\x19\x55\xe1\x7d\x93\x40\xf2\xd9\xe5\xff\x7b\x79\x45\x98\xc9\x9e\x93\x47\x29\x2e\x0d\x6c\xc8\x9c\x7c\xc2\xca\x17\xd4\x7f\x72\x27\xab\x04\xa2\x82\x61\x99\x0a\xf6\xb9\x2c\x78\xc6\x4d\xb1\x03\xa1\x4e\x64\x65\x30\xed\x93\x1a\x97\xd2\x95\x40\xf4\xcd\x67\x6e\x1c\x32\xcb\x9e\xe4\x17\xc0\x9d\x28\xe0\x09\xb5\x4a\xdc\x96\x5d\xaf\x19\x2d\xcc\x3a\xa5\x87\x8e\xe5\x1b\x21\xc5\xec\xbf\x98\x92\x90\x40\x26\x1c\x8d\x33\xb6\x99\x1c\x15\xff\x49\x6d\x41\x95\x18\xd2\xb0\x97\xc1\x0f\x6c\x4c\xa3\xf6\xff\xfc\xf4\xe9\xee\x07\x66\xf6\x84\xa1\xa5\xe7\xc1\x2c\xf1\x22\xb1\x64\x6a\x29\xd5\xe6\x5c\x52\x71\x2d\x75\xe4\x0c\xc9\xc1\x2c\xa5\x36\x58\x00\x01\x55\x2f\xc1\x32\xcb\xcb\x0d\x8e\x22\x65\xff\x65\x5d\xd2\xe1\xf6\x6e\x4e\xfe\x2e\x2b\x28\x44\x40\x17\xc5\x0e\x32\xb8\x5d\x4a\x54\x02\xc5\x0b\x3b\xbc\x0b\x2b\xc7\xec\xba\xff\x27\xa3\x39\xa6\xd5\x6b\xc3\x68\x72\x0f\xa8\x24\xc6\x6c\x7d\x6f\xec\x65\x53\x69\x23\x37\x64\xed\x06\x9d\x92\x0e\xd6\x7e\x1c\xaf\xcd\x81\x1f\xd1\xe6\x84\xa6\x7d\x28\x20\x1c\xf5\x2f\xd5\x3b\xd6\x8e\x01\x57\xc5\xfd\xfb\x02\x1a\x62\x67\x30\xd5\xa4\x70\x2b\x0e\xdc\x35\x63\xc7\x24\x09\x81\x53\xc4\xda\x15\x09\xc4\xc6\x76\x6a\x4d\x45\x10\x90\x63\x9e\x43\x37\x0f\x74\x10\x44\x84\x3a\xf7\x9f\xa7\x35\xeb\x3c\xed\xf0\x87\xeb\x65\x9c\x74\xfc\xe3\xda\x28\x26\xae\xef\x2c\x79\x46\x5f\xa8\x89\x62\x99\x84\xfe\x3d\xc4\xfe\x62\x11\x16\x48\xcf\x42\x0d\x0f\x0e\x8e\x66\x6a\x1b\x4e\xbf\xdc\x1f\x77\xd2\xd6\x95\x32\xc6\x06\xf6\x0f\x15\xbb\x0f\xd1\xc8\x2c\x68\x37\x05\x23\xe2\xc2\xb0\x55\x94\x55\xd8\x7d\xef\x29\xfd\x21\xd1\xbd\xae\x88\xa8\x36\x0b\xa6\x9a\xb4\x01\x65\xd2\x0c\x83\xee\xb6\xb4\xe2\xff\xef\x91\x70\xa8\x76\xd0\xe1\xe3\x74\x78\x45\xc5\x8a\x91\x97\x76\xeb\xff\xf4\xaf\xff\xfa\x87\x7f\x9d\xe3\x90\x3d\x54\x25\x1a\x6d\x62\x9f\xdb\x9b\xf7\x37\xbf\xdc\xff\xf4\x0a\xb2\x07\xe3\xf9\xe5\xf3\xac\xb1\xa8\x67\x5c\x98\x99\x54\x33\x5c\xf3\xef\x88\x51\xd1\xe7\x0c\x90\xfc\x09\x92\xab\xeb\x53\x87\x97\xdb\x05\xec\x9c\xce\x92\x26\x7e\x9c\xa6\x62\xf5\xa6\xae\xbf\xd0\x1e\xa4\x33\x9e\xa0\x34\xb1\x37\x03\x06\x3c\x87\x56\x6c\xb2\xf2\x5e\x66\x0f\xa3\xf4\xe2\xcb\x4f\xaf\xee\xf0\xe5\x96\x6a\x4c\x85\x73\x13\x10\x2e\xb6\xb2\xd8\xc6\x6f\x07\x25\x9f\x5e\xdd\xc1\x44\xe7\xf0\xbf\xc0\xd3\x02\xc6\xe4\xce\x7e\xc1\x83\xbc\x31\x80\x14\x49\xb3\x2e\x1a\x08\x30\x7c\x5a\x70\x6d\x78\x06\xd4\x1b\x97\xa2\xfd\x4e\x5c\xdc\xe8\x8b\xea\xe3\x97\x1f\x7c\xc8\xe9\xa8\x6a\x9e\xc4\xe3\xdd\xe4\x96\x96\x6a\x1e\x0f\xea\x9b\xee\x88\xd6\x1d\xe1\xee\x06\xc4\xf0\x4f\x77\xc4\xb1\xe7\x24\x77\xc4\xb7\x21\x25\x13\x7e\x5c\x2a\x76\x6f\x64\x99\x1c\x1d\xc0\xd7\x7a\x62\x03\x0b\xb6\x8c\x83\x23\xd3\x5e\x57\x7e\x5e\x31\xd7\x40\xfa\xe6\xee\x36\xc1\x6b\x21\x3b\xee\x7a\x44\x07\xea\x2a\x5b\x7b\x7f\x94\x60\x5a\x5f\x83\x93\xbf\x2a\xd1\x5e\x8b\x20\xba\xa4\xbc\xa8\x14\xbb\xb2\xab\xc5\x36\xb0\x06\x57\x4d\x1a\x83\x9d\x02\x13\xf8\x8f\xcc\x64\xc3\xa5\x0b\x9b\xc7\x47\x3e\x9c\xff\xd1\x2f\xe3\x5e\x80\x81\x64\x8a\xea\x35\x1b\xec\xdb\xd8\x3c\xec\x33\x37\xda\x37\x9f\xa6\x5a\x0a\x74\xc8\xba\x65\x85\x3b\x4e\xb7\x6a\xd6\xc6\x99\xf3\x6e\xa0\x48\xf6\x4e\xe6\x97\x97\xba\x43\x72\xa5\x68\xc6\x48\xc9\x14\x97\x39\x81\x4c\xcf\x5c\x3e\xc6\x1c\xd8\x05\x5b\x71\xa1\x1d\xb7\xc0\xb4\x3d\x5b\xd9\x1b\x0e\xfb\xf1\xfa\xb2\x54\x73\xf2\x31\xb6\xfe\x18\x69\x92\x6c\x64\x65\x32\xd9\x08\x3c\x37\x93\xab\xbd\x25\x8e\xac\x37\x01\xcc\x54\xd1\xa2\xd8\x35\x8c\xea\xb1\xb0\xe6\xe8\xd2\x44\x10\x6d\x2f\xde\x17\x89\x37\xd9\x13\xd2\xfc\x6d\xfc\x60\xc1\xb3\xcf\x68\xb6\x8e\xaf\xc8\x34\x85\xb0\x5a\xcf\x14\xc2\x9a\x42\x58\x53\x08\x6b\x0a\x61\xf5\x3d\x53\x08\x6b\x0a\x61\x4d\x21\xac\x29\x84\x35\x85\xb0\x9a\x67\x0a\x61\x9d\x66\xfc\x53\x08\x6b\x0a\x61\xed\x3f\x53\x08\xeb\xd8\xf3\x1b\x73\x4f\x4e\x21\xac\xaf\xef\x9c\x9d\x42\x58\x53\x08\x2b\x96\xc8\x74\x47\x4c\x21\xac\x29\x84\x35\xf8\xe3\xc8\x1f\xfa\xd8\xcf\x9d\xb5\x6f\x52\xf2\xbc\xee\xc0\xdb\xcd\x33\xb4\x8c\x2c\xdf\xb5\xb3\x7c\x90\xe8\xbc\x29\x21\x1f\x98\x58\x53\xe3\xc2\x67\xa9\xb8\x80\x0f\x52\x87\x2c\x98\xb3\xb5\x46\xe9\x6b\x8f\x54\xca\xbc\xf1\xbe\xb7\xdc\xee\x68\x0b\x0e\x8b\xab\x78\xf1\x1c\xe7\x6f\x4f\xf3\xb5\xc7\xa5\x6a\x11\xcc\xac\x8a\xf1\xb3\xc7\x7b\xd0\x53\xfb\x7d\x27\x78\xce\x13\xbc\xe6\xde\x17\x1e\x7b\x35\x87\x3c\xe6\x8d\x1f\x3c\x92\xe2\xb0\xb7\xfc\x88\x0f\x3c\x96\xee\x71\x4f\xf9\x51\xff\x77\xec\xe4\x0f\xbd\xe4\x43\xbe\xef\xf8\x25\xad\x3d\xe4\x21\xbf\x77\x74\x68\xc8\x7b\xc7\x63\x7c\xde\x29\x44\xe7\x67\xf0\x77\x3f\xd1\xd7\x9d\xe4\x12\x4b\x56\x23\x52\xbc\x03\x09\xf7\x93\x03\x04\x7c\x5a\x2b\xa6\xd7\xb2\x88\x38\xd7\x9d\x33\xfd\x8e\x0b\xbe\xa9\x36\xd0\x3a\xd2\x1e\x5f\xee\x7a\x43\x56\x8a\xd5\x6d\x62\x23\xa6\x87\x77\x06\x3a\xf1\x9a\x2e\x94\x75\x97\xc9\xa5\x61\x8a\xac\xe9\x16\xe4\x64\x95\x65\x8c\xe5\x71\x2d\x20\xda\x26\xd9\x1f\xe6\xf5\x68\xeb\x3e\x00\x2f\xc3\x44\xb0\x2e\x26\x68\x8a\x7f\xf8\x7d\xe4\xca\xc7\x69\x95\xd1\x21\x85\xc4\x70\x42\x9c\x16\x19\x1d\x4a\x48\xbb\x1e\xe2\x4d\x96\xb3\x84\x0f\x22\x43\x07\x2e\x20\x10\x2d\x18\xc7\x87\x0d\x12\xcf\x79\x72\xb8\x20\x3a\x54\x50\x07\x00\x22\x27\xfd\xf4\x30\x41\x92\x3c\x8c\x0f\x0f\xb8\x41\xc4\x9b\x9e\x4f\x0c\x0d\x8c\x09\x0b\x3c\xa9\x2e\xe6\x53\xc3\x01\xa3\x2c\xd4\xe4\x30\xc0\x69\x43\x00\x5f\xa4\x16\x6e\xc2\x3a\xa6\xb9\xfc\x93\xdd\xfd\x69\xae\xfe\x78\x37\xff\x39\x5c\xfc\x89\x5b\x13\xef\xb6\x49\x70\xd9\x8c\x71\xd7\x8c\x70\xd5\xc4\xbb\xf2\xdd\xa2\x46\xf2\x47\xc8\x45\xd3\x71\xbc\x44\xd2\x1c\x70\xcf\x8c\x71\xba\x9c\xc0\xe1\x92\xe2\x90\x8f\x76\xc6\xc7\x83\x3b\x89\xd3\x3e\xc6\x3a\xe2\x93\xb8\x25\x5e\xf8\x44\xba\x95\x12\x44\x88\xeb\x3b\xff\x9a\x15\x74\x77\xcf\x32\x29\xf2\x88\x9b\x69\xaf\x90\x59\xcd\xd3\x1a\x09\x38\x1d\x3b\x15\xa1\xb9\xa6\xda\xb7\x99\xf7\xe0\xd7\xa2\xdb\xfe\x1c\xfa\x05\xe0\x88\x23\xbc\x3f\xe4\xab\x7a\x80\xc8\x59\xd5\x7d\x04\x9b\x8e\xdb\xb0\xff\x94\x8f\x44\x2e\x0d\x13\xe4\x19\x17\x7e\xcf\x9e\xb7\x10\x41\x29\x76\x56\x7d\x40\xec\xfb\x2f\x5f\x78\x72\xdf\x9a\x79\x04\x86\x9e\xd6\xa7\xb4\x4c\x1d\xc9\x53\x98\xa6\x8e\xd4\xb2\x2a\xba\xe6\x29\x9a\xac\xa9\xb6\xe9\xcb\xa6\x44\xe3\x4b\x18\x5b\x7d\x8a\xa8\xc8\x89\x03\xf9\x47\x1d\x9e\x6f\x6a\x0b\x13\xc2\x83\xe7\x0a\x0d\x26\x85\x05\x9b\x80\x5f\x14\xe5\xa7\x85\x04\xbf\x88\x5d\x1d\x08\x03\x5a\x13\x3b\xda\x40\x7b\x42\x08\xf0\x9f\x56\x87\x1c\x0a\xf5\x4d\x3a\xe4\xfe\xf3\x35\xb5\x2a\xc3\x37\x4c\x56\xe6\xc4\x0a\xd5\xe3\x9a\x67\xeb\x26\x2c\x16\xb1\x8c\x76\x1c\x9a\xc8\x6a\x4f\x8f\x7d\xe9\x08\x1f\xde\xd2\x11\x34\x5f\x26\xe7\xb5\xfc\x4a\xb4\xaa\xc8\xfd\x0d\xbb\x63\x7a\x7b\x57\x37\x21\xd2\xa6\x43\x1b\xd5\x84\x92\xd7\xef\xef\x7f\x79\x7b\xf3\xd7\x37\x6f\x43\x67\xe3\x0d\xcd\xd6\xed\xe4\x40\x41\x28\x08\x4f\x38\x6b\x6b\xba\x65\x84\x92\x4a\xf0\x7f\x54\x58\x4b\x95\x3c\xab\x29\x3f\x3f\x71\xa5\xfb\x48\x59\x06\xfd\x19\x47\xf4\x6d\x80\xf7\x5c\x88\x47\x5a\x43\x4e\xc9\xcd\x9e\xcc\x0a\x2d\x95\x7d\xd1\x6a\x51\x14\x65\xe4\x9a\x29\x46\x56\x7c\xeb\x9c\xdc\xae\xa8\x25\xcd\xeb\xf0\x96\x65\x68\xcb\x59\xe1\xbc\x22\xba\x80\x40\xd3\x9a\x11\xc1\x8c\xe5\xee\xda\xc6\x94\x42\x77\xb2\x37\x2b\xcd\xf4\x15\x59\x54\x41\x33\xcc\x9a\x38\x7c\x43\x15\x2f\x76\xed\x81\xd0\x62\x4e\xde\x4b\xaf\xb9\xec\xf6\xa6\x13\x20\xfa\xfa\xc3\x9b\x7b\xf2\xfe\xc3\x27\x68\x00\x0e\xc5\x69\xd7\xd4\xe0\xdb\xb0\x9c\x0b\x66\xe9\xb9\x8e\x5b\x73\x72\x23\x76\x31\x82\x10\xa5\x10\xd7\xc4\xaa\x2b\x4c\x58\x12\xee\x3a\xf1\x85\x6f\x2f\x5e\xcc\xe1\xff\x2e\xec\xea\xaa\xf0\xad\x54\x87\x1d\xbb\xb9\x87\x70\x77\xc0\xad\xc6\x17\x45\x8b\x03\xdc\x9a\x7f\xf5\xce\x0d\x35\xb8\xe1\xce\xae\x68\xbb\xfb\x7e\xcd\x16\x51\xf7\x0a\xf6\x0c\xe1\x62\x55\x24\x70\x77\x62\xf7\x86\x66\xa0\xc9\xd5\xd4\x9b\xdb\xc8\xab\x1a\xee\x48\xba\x5d\x87\x56\x59\x51\x57\xfa\xed\x9d\x67\x88\x39\x16\x61\xde\xec\x35\x9b\x82\x0f\xa0\x8b\x2c\x4e\x93\x7c\x41\xfe\x42\x3e\x93\xbf\x80\xda\xf1\xa7\x18\xbd\x22\xed\xee\x48\x33\x50\x50\xaf\xbe\xbd\x4b\x5e\xe1\x9f\xed\xb1\xb4\xef\xda\x15\xb2\xc6\x21\x17\xb9\x6b\x86\x67\x98\xb2\xa2\x29\x1e\x4c\x24\x4f\x5e\x87\xdf\x0e\xec\x2c\x8c\x03\xfe\xb5\x38\xc6\x59\xb6\xaa\x3b\x13\x73\x06\xd6\xb1\x9f\xb0\x36\xcd\x7b\x77\x70\x3b\xf5\xa4\xe1\x8b\x51\x44\x61\x54\x1b\x6a\xb2\x75\x57\x3a\x58\x95\x49\x9b\xe6\x20\x6a\x92\x4b\x12\xae\x7b\x8c\x0f\x82\x1d\xd6\x3c\x2a\x52\x76\x5e\x06\x8f\x0d\x45\x75\xf8\x60\x68\xf7\xf6\x4c\x83\x48\x33\x2d\xf7\x3a\x4e\x2b\xcd\xbc\x94\xf9\x1c\xd5\x23\x3b\x48\xc7\x10\xc1\x2a\xeb\x8e\xe2\x90\x0e\xe5\xac\x19\x8f\xe8\x89\x3f\x8a\xf6\x54\x67\x54\x20\xae\x6d\xc9\x94\x42\xcc\xca\x62\x47\x5c\x03\xe8\xa8\x0d\x4d\x3a\xab\xa5\x92\x46\x66\x32\xaa\xbb\x41\x37\xbc\xe3\x5e\x84\x69\xa2\x83\xc3\xfb\x90\x7e\x7c\x7d\x77\x45\x3e\xbd\xba\x8b\x3b\x56\x52\x91\xfb\x57\x9f\xee\xba\xf6\xc6\xc5\xa7\x57\x77\x51\x6d\x98\x13\x26\x1b\xdf\xae\xac\x73\xfd\x85\x0c\xb7\xd3\x76\x43\x50\x8c\xe6\xfc\xe4\xf8\x4a\xc7\x3e\x0d\xf5\xa0\x2a\x74\xa0\x57\x29\xb6\x91\x5b\x96\xa3\x52\xe5\xe9\x31\x91\x97\x92\x5b\x0d\x86\x87\x1a\x4e\x45\x60\x33\x27\xf4\x65\xf0\x99\xd0\x97\x64\x42\x5f\x4e\xe8\xcb\x09\x7d\x19\xfa\xed\x84\xbe\x9c\xd0\x97\xfd\xcf\x84\xbe\x9c\xd0\x97\x43\xcf\x84\xbe\x74\xcf\x84\xbe\x1c\x31\xe4\x09\x7d\x19\xf1\xc2\x84\xbe\xfc\xa6\x23\xe7\x13\xfa\x72\x42\x5f\xf6\x3d\x13\xfa\x12\x9e\x09\x7d\x39\xa1\x2f\x27\xf4\xe5\x84\xbe\xec\xfb\xed\x84\xbe\xec\x7f\x26\xf4\x65\xef\xf3\xdb\xd1\x21\x27\xf4\xe5\x84\xbe\x9c\xd0\x97\x5f\x1b\x7d\xe9\xdb\x0b\xa4\x60\x0a\x2f\x5f\xc9\x4d\x59\x19\x46\x3e\xfa\x97\x6b\xf6\x24\x8b\x1d\x22\x12\xa2\x81\x57\x4f\x0f\x74\x62\x4b\xf9\x4a\x01\xc0\xef\x1a\xab\xda\xcf\x32\x1c\xe2\xac\x9e\xdf\xac\x1e\xd1\xf5\xa9\x82\x9d\x05\xdf\xf0\x10\x18\xd3\x3e\x0d\x26\xf2\x2e\xe9\x62\x4b\x12\xb0\xdd\x1d\x7a\x0b\x43\x6b\xb9\x08\xb1\x05\xf9\x67\x38\x1e\x74\x23\xab\xa8\x7b\x1c\xa2\xe4\xb8\xd5\xf5\x3a\xa2\xe3\xf3\xeb\x6f\x13\x49\x93\x61\xce\xc5\xfb\x6d\xee\xd6\x47\x37\xb8\xfd\xfd\x72\xe2\xec\x69\xfb\xe5\x8f\x26\x60\xb2\xea\x2f\x71\x4d\xe4\x86\x1b\xc3\x62\xe2\xea\x56\xed\xa6\xed\x60\x32\x37\x1d\xa5\xc7\x71\x1b\xd4\x98\xa2\x26\x4e\xf0\xb6\x82\x9d\x2d\x34\x93\x34\x6b\xa6\x1e\xb9\xf6\x5d\x59\x6a\xad\x13\xb8\x66\x96\xb3\x25\x17\x51\x43\x86\x2b\xe0\x57\xc5\xa3\x91\x3f\xb4\x16\x9b\xe2\x66\xf7\x4a\x0a\xc3\x3e\x07\x74\xc1\x2e\x9b\xdd\xbb\x57\x89\x2c\x31\x92\xed\x95\x55\xd7\x24\x42\x55\x02\x10\x60\x27\x2e\x03\x86\x5d\xee\xaf\xfd\xc0\x61\xf5\xd8\x67\x73\x7d\x92\xaf\x18\xaa\x1f\x9a\x7d\x63\x33\x7b\x1d\x37\xdb\x73\xf0\xcd\x53\x89\x7e\x10\x82\x77\x8a\x6f\x79\xc1\x56\xec\x8d\xce\x68\x01\x3c\x93\xaa\x1c\xdd\xf4\xd0\x81\xc3\xa6\x64\xa1\xc9\xe3\x9a\xd9\x33\x11\x65\x75\x95\x4a\x82\x3f\x3b\xa3\x82\xac\x28\x17\x64\x63\xd7\xb0\xf4\xe4\xed\x86\xdb\x33\x65\x34\x29\xa9\x8a\x33\xe5\x1c\x49\x07\x30\x5e\x48\x59\x38\xf4\x48\xb1\x6b\xc6\xe8\x8a\xcb\x09\xf9\x8b\x60\x8f\xbf\xd8\xef\xc5\x48\x80\x65\x41\x57\x35\x80\x4a\x33\x73\xa0\xc7\x37\x1f\xef\x5b\xa6\x88\xaf\x00\xf4\xa1\x62\x84\x16\x8f\x74\x07\xcb\xb9\xff\x15\xae\xbf\x23\x2f\x9f\x03\xf7\xd3\x98\x71\xd7\xe3\xc8\xc9\xef\x9f\x83\x9f\xef\xd5\xcd\xdd\x2f\xf7\x7f\xbf\xff\xe5\xe6\xf5\xbb\xdb\xf7\xb1\x22\xc1\xae\x25\x0b\x96\x6b\xcc\x68\x49\x17\xbc\xe0\x71\xb7\xd0\x41\xe4\xa9\xfd\x3a\x88\xd4\x3c\xbf\xce\x95\x2c\x71\x1d\x54\x25\x44\x9c\xf1\xd6\x20\x6d\xbb\xba\x77\x3b\x4d\x01\xb6\x70\xd9\xf9\x64\x04\xe5\x95\xa2\xc2\x78\xc5\xb1\xbd\x2d\xaa\x12\x56\xe1\x3f\x75\x14\x9e\xe6\x63\x00\x5a\x37\x79\xce\xf2\xd4\xa9\x3d\x25\xce\xfb\xca\x7f\x6a\xd7\x64\x42\x90\xbb\x0f\xf7\xb7\xff\x3b\x7d\x14\xc4\xf1\x5c\x52\xc8\xee\x4c\xf8\x1b\x42\x2c\xfb\x8d\xd8\x81\x8f\x0e\x61\x39\xed\xc1\xc0\x0b\x27\xc7\x40\xd5\x77\x47\xaa\x8f\xf9\x63\x25\xba\x79\x75\x0d\x25\xb2\x91\x39\x9b\x93\x3b\x14\xee\x51\xeb\xd7\x7d\xbf\x05\xfb\xa7\x8a\x11\x4b\x44\x18\x0e\x1d\xd3\xac\xae\xbb\xa5\x45\xdc\xdd\x66\x24\xa2\x18\xdb\xf9\x13\x1d\xe9\xb6\xa4\x85\x8e\x10\x40\x29\xf2\xdc\x5e\x69\xef\xac\x3a\x9f\xb8\x9e\xf5\x7b\x24\x67\x42\x1a\x67\x21\xd8\x2f\x43\x42\x88\x92\x19\x89\xb5\x12\x5a\xc1\xc4\x8e\xc4\x75\x1d\xfd\xbc\x38\xe7\xda\xaf\xc5\x9d\xff\x76\x04\x71\xf4\xea\x54\x9a\xe9\xe3\xe2\xbc\xb1\x1b\xec\xf7\x15\xa3\xb9\x14\x45\x6c\xa4\x1f\x7d\xfe\x1b\xaa\x1f\x58\x8e\xff\xe0\xf4\x12\x67\xe3\x68\xd7\xdd\xcf\x0d\xf7\x53\xdc\x79\x5b\x32\x6a\x2a\xc5\x50\x1f\xc1\x68\x06\x13\x74\x11\x15\xab\x48\x02\xd8\xd3\xfc\x83\x28\x76\x1f\xa5\x34\xdf\xd7\xc0\xd7\x44\x36\xf8\x19\xb5\xc1\x3d\x1f\x0b\x28\x21\xe0\x74\xcf\x67\x91\xcb\x09\x8c\xdf\xc6\xdf\xbe\x6e\xb6\xfd\x0c\x6c\xaf\x2a\x71\xa3\x7f\x50\xb2\x4a\x6d\x01\x6a\x39\xf2\x87\xdb\xd7\x70\x56\x2b\x3c\xa7\x4c\x18\xb5\x03\x60\xbd\xf3\x1a\xa7\xe8\x2f\x8d\x4e\xf9\xa3\xe5\xd1\x3d\xae\xb4\x9a\x6c\x25\x34\x8b\x82\x82\xbd\xa3\x3b\x42\x0b\x2d\xbd\xfa\xca\x05\xb9\x83\x28\x66\xdb\x3e\x9b\x63\xb6\x15\x8b\xcc\x9d\x59\x48\xb3\x26\x7b\x24\x80\xe9\x0f\x29\x5f\x45\x4e\x1d\x9d\xa1\x4d\x82\x34\x17\x07\x1f\x30\xf4\x81\x69\x52\x2a\x96\xb1\x9c\x89\x2c\x62\xef\x5b\x5e\xcb\x3f\xfd\xf1\xa4\x81\x31\xe0\x94\xf7\x52\xd8\x63\x92\xc8\x2b\xb7\x22\xe7\x19\x45\xd9\x48\xcd\x9e\xfc\x01\xff\xbd\xaa\x62\x36\x01\x0e\x93\x90\x62\x06\x87\xa4\xd2\x4c\x81\xef\xc4\x9a\x11\x88\xa3\xff\x5b\xb5\x60\x05\x33\x68\xbc\x40\xbe\x1c\x8d\x42\xe7\xdb\x77\xf9\x86\xae\x18\xa1\xa6\x66\x3d\x23\x09\x13\xba\x82\xd6\xa4\xd4\x80\x6b\x45\x32\x1d\x99\xcd\x86\x46\x0b\xf9\xf1\xf6\x35\x79\x41\x9e\xd9\xf1\x3e\x07\x76\x59\x52\x5e\x00\xc8\xd1\x50\x65\x92\xb1\x0b\x7c\xe9\x87\x01\x13\x87\x13\x41\xa4\x42\xc1\x70\x45\x84\xc4\x5e\xb7\x6e\xe6\x71\x76\x98\x37\xf4\x5c\x54\x1e\x1c\x88\xd1\x07\x28\x82\xbe\x23\x90\x72\x80\x22\x77\xec\x2c\x07\x28\x59\x78\xfe\xa8\x99\x1a\x21\x3b\x7f\x3c\x8b\xec\x6c\x2b\x49\xf6\x7c\x74\x56\x27\x86\xc1\xe0\x10\x6c\x98\xa1\x39\x35\xd4\x49\xdd\x26\x73\xe7\x90\x31\x62\xcc\xf2\x41\xd9\x7b\x94\x31\x62\x64\x41\xbf\xec\x8d\x60\x8c\x18\x0e\xfb\x86\x64\xaf\x66\x6f\xb9\xa8\x3e\x63\x60\x7c\x8c\xbb\xe1\xfe\x0d\x10\x20\x99\x3f\x17\xb0\x85\xb4\x2c\x0b\x0e\x29\x2e\x91\x27\xae\x15\xc9\xbd\xed\xb0\xc6\x7e\x4b\x65\x27\x43\x63\xc5\x0f\x2d\x0a\x69\x2f\x08\xab\x2b\x51\x91\xcb\xcd\xc1\x80\xad\x52\xca\x68\xb6\x4e\x39\x16\xf3\x14\x55\xe0\xb7\x27\xc9\xd2\xdc\x2f\x05\xdb\xb2\xa8\x74\xda\xfd\x3a\x26\xf6\x3d\xab\x9c\xfa\x1d\x03\x42\xa4\xa0\x0b\x56\xa4\x64\x48\x21\x2f\xd6\xbe\xab\xe8\x30\x25\x3e\x89\x66\xb9\x92\xc5\x18\xd0\xe7\x47\x59\x00\x40\x89\xd6\x93\xb5\x84\xbe\xf1\xb9\xc2\xcf\xd3\xe7\x6a\x6d\xb4\xee\x5c\xc1\xa6\xfd\xb6\xe7\x5a\x45\xdd\xc5\x64\x7f\xae\xf6\x0a\xef\xce\x15\xee\xce\x6f\x79\xae\x09\xae\xa2\x47\x2e\x72\xf9\xa8\xc7\x5f\x1e\x3f\x23\x01\x2f\x9f\x32\x2b\x08\x0d\x17\x2b\xed\x2f\x90\x38\xdf\x06\x2d\x8a\x8e\x4f\xe3\xd8\x0d\xe2\x03\x60\x4b\x15\xd5\xd1\xd4\xb5\xdd\xdf\x97\x95\x5e\xa5\xad\xb4\x8b\xae\xb6\x24\x77\x04\xd5\x04\x33\x2f\x3a\xe5\xe2\xab\xca\xf6\xd5\x46\xd3\x57\xca\xd2\x36\x9c\x16\xf7\xe5\xa8\xc6\xf7\x3f\xbc\xbb\xbf\xe9\x12\xb1\x47\xe6\x11\xaa\x4d\xd9\x95\xb0\x7f\x8f\x3d\x27\xf9\x86\x6b\xcd\xa5\x20\x8f\x6c\xb1\x96\xf2\x81\x3c\xf3\x91\xc4\x15\x37\xeb\x6a\x31\xcf\xe4\xa6\x15\x54\x9c\x69\xbe\xd2\xd7\x8e\x8f\x67\x76\x36\xb1\x7d\xd8\xb9\x28\xb8\x68\xb9\xbc\xa0\x6c\x91\x83\xb4\xd9\x01\x93\xac\x9e\x51\x24\x45\xbb\x91\xae\xf2\x86\x8b\x8c\x1c\x2e\x0c\xd6\xd1\xe0\xac\x88\xee\x92\x0c\xce\x32\x4c\x43\xb2\x72\xa8\x28\xd7\x74\x86\x17\xa9\x4b\xbb\x86\x24\xfc\xb5\x14\x52\x45\x1d\x37\xfb\xb8\xfa\x1b\x90\x55\x67\x0d\x58\xf4\x9d\xc1\x90\xdd\x89\x86\x15\x70\x5e\xb6\x48\xa2\xcb\x82\xae\xce\x22\xba\x0f\x79\xf4\x7d\x74\x42\x5a\x80\x4f\x61\x3b\x5c\x06\x7f\x42\x3e\xd5\x71\x36\x41\x06\x40\xf3\x6a\xde\xda\xb7\x58\x86\x0c\xee\x6e\x6b\xdf\x62\x63\x12\xe1\xdd\x3d\xdf\xbe\xd5\x36\xf0\xc8\xed\x02\x5b\xd8\xbd\x6e\x65\xa3\xbf\x6c\x1a\xdb\x38\x72\x15\x0e\x2c\xe8\x21\xfb\x38\x76\x65\xf1\x22\x3f\xb0\xa4\x03\x76\x72\x24\xf5\x48\xe3\x04\xef\xaf\x68\x81\x77\x6a\xfb\x84\x24\xda\x28\x91\x24\x5b\xb7\x5d\x48\xfa\x25\x94\x98\xe8\x39\x48\x7d\x47\xe4\x63\x9b\x79\x63\x25\xe0\x79\x4f\xd4\xc9\x61\x49\x98\x88\x91\x5c\x97\xe7\xbe\xf5\x1e\xe1\x87\x0e\xdc\x3b\x99\x93\x75\x10\x96\xd1\xa4\x9c\x40\xb9\x47\x48\x02\xe3\xff\xe5\xb5\xb2\x46\xf7\x13\x12\x11\x66\x71\x69\xce\x10\x5c\xc4\xd2\x2b\x39\xa9\x84\xe1\x85\x8f\xbb\x6c\xca\xc2\x2a\x0c\x9d\xef\xa2\x8f\x38\x5c\xd9\xac\x55\xe6\xe7\xaa\x9e\xe2\x41\xc3\xc6\x2b\xf2\x7f\x2a\x6d\x08\xf5\xe0\x9a\x00\xd1\x4e\xdf\x49\x9f\x69\x83\x0c\xef\x4a\x66\x41\x96\xb7\x91\xf6\xf3\x5b\x9e\x33\x92\xf3\xe5\x92\x45\x80\x80\x70\xb8\x25\x55\x74\xc3\x0c\x84\x5c\x71\x63\x16\x6c\xc5\x05\x56\xab\x5c\x12\x6a\x27\x71\x79\xa9\x9b\x4c\x8f\xd0\x91\x07\xfc\x09\x37\x64\xc3\x57\x6b\x3c\xd1\x84\x92\x42\x8a\x15\xf1\x4e\xf1\x42\xd2\x9c\x80\xd8\x93\x8a\x3c\x52\x15\x52\xd4\x29\xc9\x68\xb6\x06\x0f\x3d\x15\x24\xaf\x14\x94\xc4\x30\x8c\xe6\xbb\x99\x36\xd4\x58\xad\x9f\x21\xb2\xaf\x59\x99\xb0\x97\xbd\x0d\x4c\x86\xb7\x38\xe6\xdb\x58\xe9\x51\x1f\x52\x17\x2f\x74\xaa\x5a\x80\x62\x87\xe5\x3b\xc7\x7c\x2a\xf1\x14\x7c\xa6\x12\x4f\x64\x2a\xf1\x34\x95\x78\x9a\x4a\x3c\x85\x7e\x3b\x95\x78\x9a\x4a\x3c\xf5\x3f\x53\x89\xa7\xa9\xc4\xd3\xd0\x33\x95\x78\x72\xcf\x54\xe2\x69\xc4\x90\xa7\x12\x4f\x11\x2f\x4c\x25\x9e\xbe\xe9\xf4\xfc\xa9\xc4\xd3\x54\xe2\xa9\xef\x99\x4a\x3c\xc1\x33\x95\x78\x9a\x4a\x3c\x4d\x25\x9e\xa6\x12\x4f\x7d\xbf\x9d\x4a\x3c\xf5\x3f\x53\x89\xa7\xde\xe7\xb7\xa3\x43\x4e\x25\x9e\xa6\x12\x4f\x53\x89\xa7\xaf\x5d\xe2\x49\x9b\x9c\x07\x0a\x53\xc4\xe4\x18\xba\x22\x21\x0d\x86\x3e\x14\x38\xad\x96\x4b\xa6\xe0\x3e\x87\x11\x1c\xc4\x90\xea\x0c\x7f\x1f\x38\x0f\x6f\xa7\xbd\xb9\x34\x33\x57\x90\xea\xa8\x5d\xb7\x9d\xe3\xc4\x1d\xe0\xff\x91\xee\x42\x44\x15\xd3\x90\xfa\x27\xc8\x9b\x0f\xdf\xa7\x26\x42\xc6\xe6\xf1\xc0\x28\x3f\x88\x2c\x05\x1c\xd1\x6c\xc4\xb1\x44\x5a\xb7\x1f\x59\x21\x75\xe8\x64\x41\x7f\x4e\x58\xa6\x6c\x4d\x85\x60\x5e\x6b\xe3\x06\x6c\x98\x05\x63\x82\xc8\x92\x09\x8c\x60\xfb\xe6\x89\xa1\x78\xbb\x31\x34\x5b\xcf\xed\x28\x85\xdf\x04\x57\x6b\xa3\xf9\x9e\x36\x8a\xd1\x0d\x6e\x86\x62\x1b\x1a\xcc\xe4\xb1\xc3\x20\x34\x53\x52\x6b\xb2\xa9\x0a\xc3\xcb\x82\xb9\x4f\x11\xcd\x00\xcd\x89\x98\xde\x7a\x41\xc3\x5c\xa3\x19\x06\xd9\x20\x7f\xaf\x1e\xa9\x9b\xb0\x6c\xe7\xa9\x83\xae\x79\x15\xa6\xc8\x36\xa5\xd9\xd5\x90\x10\x46\x96\x5c\x69\x43\xb2\x82\x33\x61\xdc\x68\x11\x9f\x0d\x5f\xbb\xb2\x7a\x6c\x78\x8b\x84\x5b\x21\xed\x16\x41\xe4\x70\x47\x96\x46\x23\x0c\xa2\xf9\x1c\x7e\x28\x40\x31\xe7\xda\xe9\x39\xfa\x8a\x50\xe3\x85\x31\xb0\x8e\x5f\x03\x60\x9e\x1c\x3e\xe5\xbe\x1d\x20\xea\x5e\x68\x0d\xa5\x55\x46\xa5\x41\xaf\x34\x47\x7a\x59\xd0\x90\xe6\xe0\x0f\xda\x55\xa7\x63\x69\xe9\xcb\x03\x20\x16\x68\xff\xc0\x07\x68\x02\xc3\x09\xb6\xb5\xe7\x85\x65\xcc\x9a\x3f\xb4\xe7\x7c\x9f\xe4\x78\x1b\xa6\x36\x5c\x00\xb8\xe4\x1d\xd3\x9a\xae\xd8\x5d\xd0\x6d\xd9\xa7\xaa\x82\xe7\xb2\xd9\x30\x60\xaf\x02\xf4\x56\xf8\x97\x88\xb3\xde\x84\xe9\x2f\x75\x7b\x68\x64\x83\x63\xab\xe1\x46\x8f\x8a\x1b\xc3\x42\x8b\xc9\x35\xd6\x16\x80\x18\xc2\x7e\xd2\x81\xfd\x44\x3b\xc8\xef\xa6\x1f\xda\x1f\xfc\xb0\x25\x6d\x6f\x3a\x91\xbb\x5e\x7e\x8c\x2c\x14\x67\x4b\xb2\xe4\x10\xbf\x87\xf8\xf6\x15\x66\x9b\x06\x41\x60\xd6\x44\xd2\xda\x1a\x15\x52\xf8\x30\xac\x9f\xf1\x9c\xfc\xec\xa6\x6c\x54\x25\x32\x6a\x62\xc1\x3a\x42\xe6\x8c\xf0\x25\x59\x41\x6c\x5d\x21\xb8\xe8\x8f\x2f\xfe\xff\x7f\x22\x8b\x9d\xd5\x1d\xc0\xf9\x6f\xa4\xa1\x45\xbd\xb8\x05\x13\xab\x60\x02\x80\x13\x71\xdd\x64\x85\x7a\x5f\xa0\xb2\x20\x2e\xc9\xcb\xdf\x3f\x2c\xa2\x01\xa5\x46\x92\xeb\x9c\x6d\xaf\x5b\x7b\x3e\x2b\xe4\xea\x58\x3b\xb9\x61\xb5\x25\x52\xf1\x3f\xc2\xf6\x50\xec\x2b\x81\xf1\x7d\xd2\x36\x59\xcb\x47\xac\x69\x71\x84\x5f\xa3\xe0\x41\x0b\x6b\x5b\x94\x55\x81\x58\xad\xef\xed\x99\x81\xf5\xac\x34\x3b\x04\xe6\x1f\x3d\xaf\xe1\xd5\xf5\x1f\xd8\x6f\x3f\x8e\x40\x0c\x3f\x5c\xe9\xd0\xb1\xce\x4d\x12\xe4\xdb\xdc\xb3\xeb\x9c\x7c\x4f\x8b\x62\x41\xb3\x87\x4f\xf2\xad\x5c\xe9\x0f\xe2\x8d\x52\x52\x75\xe7\x51\x50\x1d\x92\xfd\xd9\xba\x12\x0f\xdd\x26\x87\x85\x5c\x59\xbd\xba\xac\x8c\x2f\xd7\x75\x64\xa1\x03\x64\x41\x0e\x71\xed\xae\x3f\xea\xba\xea\x36\xdf\x60\x9f\x81\x6b\x1f\xb9\x15\x60\x82\x30\x3b\xf6\x90\xf1\x64\xcf\x4f\x7b\x6c\xba\xcd\xfc\xbf\x7f\xf1\xc7\x3f\xe3\x41\xb3\x56\xe4\x9f\x5f\x00\x5c\x4a\x87\xb1\x85\x3c\x5b\x83\xec\xe7\x9a\xe8\x0d\x2d\x0a\x6b\x30\xb6\xed\x09\xcb\x1c\xc7\x0e\xc5\x49\xce\x84\x49\x61\xff\x13\x29\xdb\x9f\x3e\xfd\x1d\x34\x6d\x6e\x34\x2b\x96\x57\x88\xf7\xae\xab\xa2\x5c\xc2\x95\x79\xe9\x24\xac\xd5\x83\xea\xe5\x88\xbc\x9b\x4f\xa3\x04\x6f\x65\x51\x6d\xd8\x6b\x06\xcd\x5a\x13\x16\xa9\xf3\x9e\x47\xd0\x15\xae\xb3\xfd\xa2\x90\xd9\x03\xc9\xf1\x8f\xe1\x13\xec\xa3\xe1\xfb\xf5\xc6\x5a\xe8\x4e\xb2\x60\xa6\xc6\x76\x9e\xba\xcb\x79\x7b\x2e\x9d\xf8\xfe\x86\x96\x65\x0d\xa7\x55\xf4\x31\x68\x28\xb6\x27\xee\x3b\xf7\xd2\xf3\x74\x3c\xc7\x8f\x84\x55\x9a\x23\xf3\x6d\x5e\xf5\x1b\x57\xc2\xff\x46\xe4\x5e\x74\x11\x82\x76\x19\x82\x1a\x1c\x5e\xcf\x1d\x6f\x4d\xbb\x82\x20\x37\x4e\xde\x07\x78\x54\x9f\x66\x51\xfb\x94\xb0\x83\xb5\xcf\x0b\xc2\x1d\x2e\x99\xd2\xd0\xf0\xdf\xfc\x04\x1c\xf1\xaa\xa0\x3c\x26\x17\x91\x90\xa6\x41\xf3\x69\xa7\x19\xdf\x01\xb8\xd9\xd3\xe0\x4f\x23\x50\x07\x27\xee\x11\x8c\x07\x0c\x0a\x40\xa5\xc8\x98\x3b\x99\xbb\x57\xe1\x86\x00\x85\xf7\x98\xba\x1b\x12\x31\x6d\x5d\x38\xf1\x82\x49\x17\x26\x3f\x35\x73\xed\xca\x12\xfb\x2f\xb5\x30\xc1\x5f\x05\x99\xe5\xbc\x22\x04\x86\x34\x4a\x82\x80\xec\x68\x75\x26\x6f\x04\x81\x37\x92\xe2\xbc\xf0\x6b\xe6\x36\xd8\xdf\xae\x56\x64\xa0\x5d\x33\x27\x18\x81\xb2\xbb\xe5\xc8\x47\xd1\xbc\xfc\xee\xf2\xe4\xb2\x06\x17\x4a\xc9\x92\xae\x22\x4b\xca\xee\xad\xd7\x3e\x01\x92\x33\x54\xf5\x98\x06\x25\x1b\xfe\x1e\xe7\x78\xa7\x50\x3e\x16\x29\xf9\xee\xd6\xbe\x54\x9e\x0b\xa4\xf8\xad\x08\x7a\x38\xdc\x52\xac\x99\x4b\xc1\x79\xa4\x3b\x42\x95\xac\x44\xee\x7c\x48\xb5\x73\xef\xdd\xde\x04\xde\x4b\x11\x77\x45\x70\xed\x72\xb1\xbb\x99\x5e\x70\x9d\x73\x41\x5e\xce\x5f\xbe\xf8\x36\xae\x86\x4f\x75\xd3\xfe\xe6\x6a\x78\x5f\x5f\x0d\x78\x5e\x4f\x3e\x52\x5f\x80\x2e\x79\xb4\xef\x9c\xf1\x5f\xd7\x97\x03\x0b\x02\xbc\x69\xf0\x4f\xd6\x98\x8f\xdb\xa0\xa6\xbc\xf7\x33\x50\x2b\xad\x56\xdf\xca\x68\x7c\xde\xd1\xd2\xa3\x28\x46\xd6\xaa\x4b\x2b\xb8\x44\x88\xae\x16\x27\x91\x55\x4e\xe0\xc0\xc1\xa9\xfd\x39\x69\xea\xce\xa5\x1e\x10\x5b\x49\x89\xa6\x46\x92\x8b\x0b\xf2\x0c\xa9\x5d\x62\x7e\xc7\xf3\x93\xb3\x99\x5b\xba\x37\x9f\xcb\xa8\x1a\x19\x9d\xe5\x7b\xf3\xb9\xa4\xe0\x0b\x2a\xfb\xd7\x31\x6a\xaa\x8d\xef\x2c\x6a\x1d\xa3\x68\xfe\x95\xad\xe9\x96\x41\xde\x0a\x2f\xa8\x2a\x76\x76\x41\xef\x71\xb6\x64\x51\x19\xc2\xc4\x96\x2b\x29\x36\x4c\x18\xb2\xa5\x8a\xd3\x45\xd0\x89\x8e\x8f\x62\x90\x8a\x67\x8d\x9b\x7f\x79\xf6\xd3\xcd\x47\x88\x3a\x3e\x77\xf9\x87\x6e\x45\x2a\x0d\x78\xb0\x11\xdc\xd3\x1a\x56\xd7\x0a\x6e\x33\x43\xdc\x38\x81\x61\xfc\x9c\xed\x0e\x83\x13\xc0\xaf\x81\x1d\xef\xa6\x32\x15\x56\x62\xfd\x9c\x15\x95\xe6\xdb\xa8\xc3\xb9\x5f\x99\xa0\x25\xb1\xff\xf5\xc4\x0c\x1a\xaf\xe5\xd6\x1a\xcb\x37\xa8\xe4\xba\x34\xaf\xd7\x3c\x70\xc6\xf6\x52\xd0\x1a\xa6\x38\xc8\x13\x03\x97\x3d\x5c\xc1\x75\xba\x6c\x8a\xa7\xd9\x87\xa5\x2e\x75\x5d\x4b\xb3\x5d\x1e\xe5\x2a\x4a\x51\xc3\x64\x50\x84\x1a\x61\x3d\xff\xfc\x30\xb0\x07\x39\xf1\x2d\xdd\x3a\x40\xf3\x74\xae\x9d\x30\xe7\x04\x38\x21\x82\x07\x42\xbb\x5f\x87\xa1\xfb\x06\xd1\xad\x5a\x9e\xf9\x3e\x0f\xce\x60\xc6\x8e\x16\x20\xa0\xd0\x46\xf1\xb2\xd0\xd0\x87\xfe\x71\x73\x41\x14\xd3\xa5\x14\x9a\x75\x95\xbe\x06\xf4\xc3\xb6\x4c\x18\x9d\x60\xf1\xc4\x98\x0e\xa5\xd4\x06\x92\x65\x87\x78\xbc\x1b\x45\xb9\xf3\xaf\x40\x74\x8b\x16\x85\xe5\xa0\xcd\x86\xe5\x9c\x1a\x56\xec\x5c\xdc\x93\x46\xc2\x3c\x2d\x0d\xcc\xa9\x73\x01\x2d\x46\xd6\x54\xe4\x05\x53\xed\xfc\xed\x4e\x08\xcc\x3b\x55\x03\xe5\x53\x30\xe2\xe6\xc1\xa3\x34\xcb\xa4\xca\x1d\xde\x97\x9b\x3a\x90\x46\xb0\x75\xc6\x9c\x7c\x00\x8d\xb9\xd9\xbd\x41\xda\x07\x65\x29\xc0\x51\xa4\x5b\x41\x3b\xa8\x85\x53\x67\xb1\x23\x3c\x62\x78\x21\x52\x3a\xa8\xb8\x60\x46\xf3\x3f\x1b\xf0\xc4\x0c\x00\x68\xd7\x2d\x0c\x05\xfc\xc3\x50\x2c\x22\xd6\xc6\x8c\x49\x4b\x3e\x4f\x52\xf2\x89\x53\x92\x53\x8c\xea\x84\x74\xe4\x73\x25\x23\x27\xa4\x22\x93\xa5\x8c\x03\x9e\x9d\x3e\x11\x39\x25\x0d\x39\x0e\x55\x44\x92\x92\x90\x3b\xe9\xc5\x51\xd4\x03\x29\xc8\xfb\xc9\xc5\xb1\x06\xc0\x40\x02\xf2\x91\xd4\xe2\x38\xa3\x6e\x38\xfd\x78\x3f\xb1\x38\x8a\x66\x52\xf2\x71\x42\xaa\xdd\x98\xa2\x86\x51\x99\x4a\xd1\xfa\x5d\x64\xde\x6b\x7a\xd6\x6b\x6c\x4e\x6b\x8a\x7c\x89\xc5\xdd\xa6\x65\xb3\xc6\xda\xf6\x09\xb9\xac\x71\x25\x82\xc9\xd8\x4c\xd6\x24\xb6\x49\xcc\x62\x3d\x53\x0e\xeb\x53\x33\x58\x13\x0e\xd5\xb9\xb2\x57\x9f\x96\xbb\x9a\x9e\xb9\x9a\x96\xb7\x7a\xc2\xac\xd5\x11\xf9\x9f\x89\x19\xab\xa7\xcc\x57\x4d\x1e\x6d\x5a\xae\x6a\x42\xa6\x6a\x4a\x9e\x6a\x62\x96\x6a\x4a\x8e\x6a\x6c\x86\xea\xe9\xf3\x53\x93\xb6\x22\x36\xaf\x20\x3a\xab\x20\x3d\xa7\x20\x39\xa3\xe0\x3c\x39\xa9\xa7\xcf\x26\x38\x69\x2e\xc1\x93\x33\x09\xe2\x73\x51\xcf\x92\x89\x3a\x3e\x0f\xf5\x2c\x7e\xbc\x88\x5c\x89\x78\xef\x5c\x6c\x4e\xd7\x79\x32\xba\xce\x95\xcf\xf5\xb4\x6c\xae\xb3\x6b\x94\xa7\xca\xe3\x7a\x42\x16\xd7\x3f\x99\xa4\x3d\x55\xe6\xd6\x6f\x5b\xd2\x7e\x0d\x19\x14\xf5\xb3\x52\xb1\x7b\x33\xdc\x66\x71\xcf\x6f\x8a\x2f\xf4\x78\x4d\x5d\x72\x7b\x82\xdb\xb4\x71\x83\x92\xbc\xf2\xcd\x9c\x6f\xee\x6e\x6b\x7b\x55\xb6\xdd\x99\xe8\x3e\x1e\xa4\xe9\x20\xe0\x75\x6a\xf0\xb5\x4b\x0b\x6e\x95\xd3\xac\x14\xbb\xb2\x33\x67\x1b\x98\xd5\x55\xdd\x03\x7b\x90\xb0\x43\x05\xc3\x0b\xcc\x64\xe8\x1e\xf2\x5e\x5e\x57\x6a\xce\x2f\xc9\x32\xa1\x44\x40\xa6\xa8\x5e\x23\x6e\x95\x7d\xe6\xc6\x21\xc5\x15\xa3\x5a\x0a\x4c\xc0\x6e\xc1\x6f\xb9\x26\x25\xd5\x3a\xe0\xc6\x71\x52\xcb\x0d\x0e\x09\xba\xba\x9b\x6d\x62\x2b\x45\x33\xe6\x12\xee\x49\x26\x2b\x61\x72\xf9\x38\x6c\x1e\x43\x31\x4f\xed\xf7\x19\x9b\xe8\x21\x43\x58\xf9\xcf\xc0\x4f\xe6\x2b\xa1\xce\xc9\x47\xb6\xa2\x2a\x2f\x42\x32\xc0\x49\x0d\x59\x99\x4c\x36\x42\xc4\x8d\x7e\xdf\x75\x0e\xc1\x22\x60\x03\x08\x1f\x0e\xaf\x83\x67\xae\x76\x84\x38\xb0\x10\xc3\xd2\x60\xdf\xbf\x1e\xe9\x43\x0f\x30\x96\xaf\x12\x0b\x20\x07\xff\x5e\xef\x4e\x41\xfe\x0c\xcd\xd6\xa1\x58\x55\x7a\x4b\xf3\xc9\x21\x3f\x39\xe4\x27\x87\xfc\xe4\x90\x9f\x1c\xf2\xc7\x9e\xc9\x21\x3f\x39\xe4\x3b\xcf\xe4\x90\xef\x7b\x26\x87\x7c\xff\x33\x39\xe4\x27\x87\xfc\x3f\x9d\x9b\x68\x72\xc8\x4f\x0e\x79\xff\x4c\x0e\xf9\xc9\x21\x3f\x39\xe4\x83\x6f\x4c\x0e\xf9\xa1\xe7\xb7\xe9\x90\x0f\xfe\xa4\xd3\xbe\x29\x0a\xda\x7d\x79\x07\x5e\x43\x9e\x39\x07\x78\xb7\xd6\x83\x23\x37\x6f\x20\xff\xbd\x13\x38\xe8\x3c\xe5\xdd\xdc\xad\x3e\x55\x48\x47\xc9\xa2\xb0\x36\xd0\x86\xee\x06\x3b\xc5\x79\xfc\xff\xdb\x4e\x4f\x2a\xbe\x24\x42\xee\xd5\xc7\x05\xbf\x37\xf6\xa3\xca\xe7\xe4\x53\xbf\x11\xca\x57\x42\x2a\xe6\x29\x73\xb1\xba\xc2\xa2\x4e\x75\xbf\x38\x23\x5d\x51\x8a\xee\x47\x2f\xfe\xfb\x7f\x2e\xfa\xd9\xee\x10\xac\xfe\x55\x0a\xc5\xc5\x48\xeb\x90\x33\x75\x94\x23\x35\x94\x3c\x71\x2a\x27\x6a\xec\x75\x14\xe9\x3c\x3d\x87\xe3\x34\xd1\x69\x1a\xa5\x79\x45\x3b\x4c\xdb\xce\xd0\x20\xd5\x08\x67\xe9\x9e\x23\x34\x42\xd9\x88\x75\x94\xb6\x9c\xa0\x41\xaa\x31\x4e\xd2\xae\x03\x34\xbc\xa2\x61\x07\xe9\xbe\xf3\x33\x3c\xf9\x61\xe7\x68\xbc\xe3\x33\xd2\x3f\x93\xa0\x05\xc4\x99\xbc\x51\xd7\x54\x4a\xa3\xa3\xe4\x16\x47\x11\xd5\x3d\x13\x9b\x1b\xc5\xe5\xb5\x8e\x69\x6b\x14\x5b\x8b\x33\x4e\xbd\x8b\xf0\x1d\x9f\xc7\x6f\x1c\x2b\x52\x63\xb4\xfb\x64\x5f\x71\x94\xf4\x8b\xf7\x13\xb7\xfd\xb3\x31\x82\x3a\xc6\x47\x1c\x7d\xca\x12\x7c\xc3\xe9\x7e\x61\xd8\xef\xb0\x04\x1a\xe7\x13\x8e\x94\x37\xe7\xf0\x05\x8f\xf7\x03\xa7\xf9\x80\xe3\xfd\xbf\x27\xf2\xfd\x26\x9a\x68\x09\x3e\xdf\x53\xf9\x7b\xcf\xd6\xa7\x23\x6a\x8d\x62\xfd\xbb\x29\x95\xa7\x23\xfd\xba\x31\x3e\xdd\xd3\xfa\x73\xa3\x97\x3a\xc6\xbb\x10\xe5\x59\x48\xf3\x2a\x24\x79\x14\x92\xfd\xb6\x44\x86\x03\x78\xf1\x9e\x84\xb6\x97\x20\x48\xf6\x49\x5e\x84\x27\x79\x10\xe2\xfc\xb4\xa9\x3e\x5a\xf4\xbf\x06\xa7\x9d\xea\x9f\x8d\xdc\xfd\x18\x21\x10\xf4\x87\x44\x1d\xe8\xc4\xd6\x3c\x23\x9a\xf2\x04\x5b\x81\x27\xb5\xe3\x69\x59\xfb\x41\x1d\xe1\x8b\x95\x8c\x3f\xad\x82\x1a\xdd\x76\x27\xbd\xe1\x8e\x6b\xa7\x33\xb8\x72\x27\x69\xb5\x73\xda\x15\x49\x69\xac\x93\xde\x52\x67\x8c\x29\x14\x68\xa6\x13\x6d\x0b\xc5\xb5\xd1\xe9\x2e\xfe\x20\xcd\x2f\xbb\x31\x51\x91\x9c\x51\x51\x9c\x40\xf5\xd4\xd3\x47\x70\xc6\x47\x6f\xce\x66\xd7\x45\x44\x6c\xe2\xbb\xcd\xa6\x45\x6b\x7e\xc3\x7a\x54\x44\x54\xe6\x9f\x50\x8f\xfa\x72\x1a\x47\x7c\xdb\x9a\x51\x0d\x6b\xb0\x1d\xcd\xe0\x42\x25\xb4\xaa\xe9\x36\xa2\xf9\x6d\x6a\x1c\xc1\x5d\x13\x32\x67\xf7\xac\x00\x57\x7a\xdf\x1a\xd0\xdc\xbb\xa0\xef\x22\xc4\x61\xc4\xe1\xdd\xdb\xfc\xd6\x10\xb0\xde\xb3\xf6\xff\x85\xfb\xef\x8f\xcc\x20\x9b\xd7\x17\xbe\x04\x2f\xf6\x92\x1b\x6b\x62\x52\x98\xe0\x9c\xdc\x1f\xa1\x88\xa5\x1e\xfb\xef\x22\xfb\xe6\xe5\xa5\x26\x05\x5d\xb0\x42\xef\x7f\x60\xc1\xc0\x3a\xc9\xab\x02\x9b\x96\x80\xff\x1b\x3f\x36\x58\xbe\x27\x29\x53\x00\x8a\x6e\x41\x6e\xc2\x35\xd5\x9a\xaf\xc4\xcc\xb2\x95\xfd\xca\x75\x1f\x07\x05\x77\xbc\x54\x5c\x2a\xde\x5f\x14\xfd\xc0\x33\xe2\x5f\xc0\x83\x33\x27\x3f\x51\xc5\x65\xa5\x7d\xc5\xaa\x4c\x6e\x4a\x29\xa0\x90\x7f\x35\xd0\xbd\xc3\x34\x05\xe5\x60\x7b\x5c\xb1\xfa\x9a\x78\x2d\xac\x7d\xf9\xd1\x3b\xf7\x97\x5e\x8a\x37\xf9\x86\x43\x03\x9a\x56\x34\x14\x12\x63\x04\x5d\x14\x0c\x83\x2f\xa5\xc2\x4a\x58\x76\x68\xca\xf7\x2b\x61\xc6\x0c\x5d\x2c\xcd\x48\x11\x0a\x4f\xeb\xef\x64\xcd\x77\x7c\xe3\x01\xdd\xfa\x79\x3f\x6f\xda\xcf\xfa\xf9\xbc\x2a\xa8\xd6\xf6\x2a\x70\xa9\x4d\x7c\xe5\x7b\x0a\xc1\xfa\x62\x94\xab\xf9\xd7\x7e\x53\xc2\xd1\xeb\xbb\x38\x62\xc4\x48\x58\x84\x94\xfb\xa3\x8e\x62\x9b\xdb\x65\xab\x6c\x1d\xe1\xae\xa5\x84\xf6\x3b\x7c\xa9\x9b\xd1\x93\x0b\xe4\x23\xe0\xea\x59\xa6\xb8\xe1\x19\x2d\xfa\x9b\xe1\x5b\xdd\xd9\xbf\x92\x15\x95\x36\x4c\x35\x6f\x81\x41\x69\x1e\x25\x7e\x9d\x16\xe4\x81\xed\x1e\xa5\xca\x75\xa0\xdc\x9d\x1f\x61\xb3\xf6\xda\xf8\x21\x5a\x25\x16\x3a\x28\x60\xc8\x56\x6d\x98\x22\x0b\x16\x2a\xfe\xb8\x47\x64\x37\x27\x37\x62\xe7\x2a\xed\x8a\xb6\x1e\x90\xb3\x25\x77\x8d\x9e\xa0\xb6\xd9\x10\x67\xd2\x2e\x13\xb9\x53\xee\x47\x47\x51\x8b\x3c\x52\x38\x70\x98\x8f\x64\xde\x9c\x42\x8f\x3e\xf0\x98\x01\xa9\x08\x06\xde\xe0\x74\x2a\x86\xd1\x4c\xff\xe7\x3e\xd6\x0b\x5e\x01\x8a\xd1\x9c\x9f\x10\x60\xa1\x99\x82\xca\xf3\x35\xdd\x01\x90\x41\x37\xc5\x0d\x90\x16\x1b\xb9\xf5\xd5\x94\x3d\x25\x26\xf2\x52\x72\x2b\x39\xda\xf0\x8b\xc1\x78\xde\xd1\x72\x7b\xc7\x90\x1a\xf5\xea\x7e\xec\x2c\x43\x3f\x77\x02\x54\xc3\xce\x6d\xd7\x8f\xd5\xe8\xc1\x64\x0c\x48\xb9\x03\xac\xc6\x47\xff\x85\x16\x58\x63\x42\x60\xb4\x9f\x09\x81\x31\x21\x30\x26\x04\xc6\x84\xc0\x98\x10\x18\x7d\xbf\x9a\x10\x18\xfd\x23\x9c\x10\x18\x13\x02\xe3\xe0\x99\x10\x18\x13\x02\xe3\xd8\x4f\x27\x04\x06\x99\x10\x18\xfe\x99\x10\x18\x13\x02\x63\x42\x60\x4c\x08\x8c\xb3\xac\xc8\x84\xc0\x98\x10\x18\xdd\x67\x42\x60\x4c\x08\x8c\x09\x81\xb1\xff\x4c\x08\x8c\x09\x81\xb1\xb7\xd8\xa7\x40\x60\xf8\xaa\x98\xbd\x9b\xb5\xef\xdd\x2f\x2b\xc3\xc8\x47\xff\x56\xcd\x5b\xbe\x83\xb6\xbd\x44\x33\xaa\xc2\x5d\x63\x63\x24\x2b\xf4\x7e\x1f\x64\xa3\x34\x70\x08\x89\x97\x7e\x5d\xfe\x7c\x0b\x03\x69\xf9\x68\xb0\x7d\xd6\x67\xe0\x27\x8a\xdd\x81\x21\x24\x08\xcb\x33\xf8\xfd\x7a\xc1\xd1\xcf\x34\x22\xcd\xb8\x8b\xcc\xc0\x32\x95\x33\xf7\xe9\x59\x4d\x7e\x56\xef\x40\x2f\x58\x83\xc4\x1e\x6b\xe7\x3f\xfb\x16\x76\xe2\xa3\x1b\xca\xfe\x5e\xb8\xb3\x3d\x76\x2f\x3c\x1b\x43\xf8\xba\xfe\x06\xd7\x44\x6e\xb8\x81\x66\xb7\xb2\xd3\x28\x6c\xb8\xa0\x05\x37\x1d\xf7\xac\xe3\x1e\x08\xe5\x52\x83\xd5\x53\xeb\x32\x7f\x91\x0d\xf6\x9a\x5e\xa9\x58\x3d\xb7\x56\x7c\x80\x0b\x66\x3e\x8e\xef\x40\x32\x27\x14\x6b\x5f\x9a\xdb\x82\x3f\xf1\xb8\x27\x35\x12\x0f\xe2\x35\xa5\x1a\x6c\xc0\x75\x49\x8d\x25\x6a\x65\x58\xfd\xc3\x7e\x83\xc5\x7f\xbf\x07\xea\xd0\x4f\xbc\x97\xa4\x8f\xc8\x37\xa4\x07\x17\x67\xe0\xc8\x58\x4b\x08\x10\x1a\x52\x18\xf6\xb9\x57\x7b\xeb\x9e\xa9\xfb\xee\x4b\xc4\x9a\x61\x9a\xc0\x05\xc6\xb6\xac\xa8\x89\x12\x6a\x8c\xe2\x8b\xca\x0c\xdc\xc1\xd6\xb4\xc9\xe4\x66\xe3\xf0\x4a\x1e\x20\x01\x98\x27\x3d\x27\x8d\xd6\xdb\xbe\xa3\x01\x00\x30\x27\xe4\x9e\x0d\xb7\x4b\x6c\x8f\x1b\x4e\xa4\x5f\x38\x60\x7b\x88\x35\x32\x9a\xad\x1d\x7c\xea\x29\xf1\xfd\xa5\xfe\x41\xc9\x2a\xbe\x64\xf6\xc5\x4d\x0d\xfa\xb1\x26\x8a\x3b\x9a\x05\x59\x59\x2a\x78\xec\x69\x59\x16\x3c\xa0\xbd\xd8\xb3\x5d\x14\xcd\xca\x69\x02\x2d\xd8\x01\x96\x76\x2f\x37\x75\xe7\x5b\xbb\x18\xee\x02\x09\x06\x7f\xfe\x56\x2d\x58\xc1\xb0\x41\xf7\x1a\x74\x56\xa8\xc3\xfc\x68\xc9\xaf\x79\x89\x5a\x32\x35\x35\x69\x30\x87\xed\x9f\x87\x63\xb5\xee\xbe\x2f\x65\xfe\x1d\xf9\x7f\x84\xd5\xa5\x3e\x21\x59\x6b\xe0\xfd\x70\xfb\xba\x3e\x02\xf6\x57\xdf\xdf\xc3\x72\x92\xdf\x0f\x6b\xb9\x96\x82\x66\x66\xc5\x73\xb2\xc0\xc8\xb9\x66\x86\x3c\x13\xec\x11\x43\xf2\xbe\xff\x22\xe9\xf4\x01\x1e\x24\xe9\x47\x01\x13\xb2\x83\x76\x43\x79\x4e\xfe\x80\x23\x2e\x99\xf2\x00\xbb\x85\x95\xd2\x54\x31\xf2\xe1\xe3\xe5\xf0\xe4\x01\xf3\xa4\x1e\x67\xea\x71\x36\x9b\xcd\xec\xfc\x6f\x97\xa4\x12\xd0\xaf\xdc\x0e\xcc\xaf\x39\x7c\xdd\x8a\x88\x8d\xcc\xf9\x32\x50\xc7\xba\xb3\x2b\xf6\x1c\x35\x43\x03\xd6\xa6\x62\xe7\x66\x3c\xef\x07\xa8\x75\xd4\xc7\x3f\xfd\xf1\xc9\x5e\x00\x55\x89\x9b\xc4\xb3\x60\x57\xd5\x32\x80\x91\x00\x7a\xb0\xf3\x62\xc2\xa8\x1d\x20\x9a\x0e\x6a\x69\x0f\x5b\xa0\x4a\x66\x50\xb9\xe6\x47\x6d\x2f\x69\x6c\x2a\x5b\x9f\x7a\xee\xd6\x7c\x4e\xde\xd1\x1d\xa1\x85\x46\x5c\xec\x00\xec\x88\x60\xff\xd2\x3d\x81\x37\x27\x70\x45\x60\xbc\x70\x21\xcd\x7a\xff\x07\xc1\x7e\xf6\x77\xe0\xd3\x6b\xbf\x72\xd5\x82\x38\xd5\xf7\xc3\x91\x6f\x0f\xb3\x04\x7d\x60\x9a\x94\x8a\x65\x2c\x67\x22\x63\xce\xab\x45\x4d\x58\xbd\x26\xe7\xe1\x84\xf7\x52\x7c\x94\x32\xde\x25\x74\xdb\x02\x5f\xba\xae\xb3\xcd\xb5\x00\xa6\xb0\x65\x11\xaa\x03\x2e\x21\x21\xc5\x0c\x20\x3b\x95\x76\xf7\x2e\x36\x9c\x3f\x38\x6b\x5b\x5a\xf0\xdc\x41\x29\x87\xb9\x60\x43\x57\x8c\x50\x53\x33\x95\xbd\x86\x84\xae\xa0\xe0\xbd\x55\xd2\x0c\xc9\x25\x6b\xa0\x3b\x54\x93\x1f\x6f\x5f\x0f\x92\x7c\x41\x9e\x41\x4b\x6c\x38\xbb\x4b\xca\x0b\x88\x42\x43\xe7\xd6\xbd\xc6\xb0\x4b\x4f\xde\x4e\x65\x90\x26\xf0\x37\x91\x0a\x3b\xdb\x5f\x11\x21\xb1\xf7\x81\x9b\xa7\x95\x5a\x5e\xc2\x39\x57\x70\xb0\x60\x7c\xf7\xa8\x8c\x39\x0e\xc3\xbe\x36\x91\x7f\xa9\xe3\x30\x34\xd1\xb8\x06\xff\xc0\xd3\x3f\x6a\x36\xd8\x37\xfb\x40\xb8\xfd\x78\x62\xe1\xd6\x56\x85\x2c\x83\x77\x57\x08\x39\x75\xc3\x0c\xcd\xa9\x19\x3e\x26\x28\x10\x1b\x94\x60\xe4\x5e\x0f\x47\x70\x86\xc5\x62\xdf\x5e\x0f\xd2\x0c\xf3\xc1\x51\xd1\x17\xb8\x3e\xbf\x8e\x58\xd4\xec\x2d\x17\xd5\x67\x54\x6c\xe3\x5d\x5e\x96\x8f\xee\xdf\xc0\xab\xd8\x74\xe4\xb3\x71\xaa\x17\xea\x89\xf9\xa1\x2e\x38\x7c\xae\x6f\x3b\x7b\xbf\xdf\x50\xc3\x4b\x39\x10\x16\x56\x6f\x04\xbc\xf9\x30\x37\x29\x2a\x72\xb9\x39\x18\xa5\xbd\x83\x40\xcb\x6e\x79\x48\xdb\x9c\x16\xc3\x4d\xbf\x56\x89\x93\x78\x01\xc7\x46\x0f\xc0\xcc\x4a\x0a\x1f\xbc\x05\xc3\x8c\xeb\x7a\x77\xd0\x52\x83\x64\xa1\x78\x73\x83\x34\xb1\x83\xa8\xf9\x90\x94\xe8\x81\x92\xfd\x7d\xe9\x8f\xce\xe9\xa3\x2c\x18\x66\x60\xf9\x49\x59\x12\xdf\xd4\x9c\xe0\x87\x29\x73\xfa\x64\xad\xd6\xce\x9c\xc0\x8e\xfd\x96\xe6\x54\x05\xae\xbf\x83\x39\xd9\xfb\xb2\x3b\x27\xb8\xb4\xbe\x9d\x39\x45\xf9\x34\xdb\x66\x3a\xd8\x37\xf1\xb2\xfb\x86\x14\x5c\xc3\x65\x0f\xe6\xbd\x6e\x8b\x6c\xc0\xf5\x73\x05\xb9\x37\x32\x58\x87\x15\x41\xe1\x7b\xe2\xf4\x0a\x8c\x7e\xe7\x4e\x3d\x58\xa3\x40\x47\x95\x52\xf1\x0d\x55\x3b\x6b\x80\xcd\x0f\x2f\x05\x21\xfd\x90\xbd\xd6\x48\xf3\x3c\xdc\x67\xca\x5a\x9e\x51\x9b\x14\x81\x81\x8c\xbd\x7d\x63\xef\xdf\x38\xc4\x9a\xde\xe9\xcc\x14\xf1\x5b\x7c\x8f\xbf\x07\x57\x18\xa1\xf5\x7e\x0b\xba\x61\xba\xa4\x19\xcb\x3d\x45\x40\x5d\x86\x26\xdc\xe4\x16\xde\xc9\xdc\xe5\x73\x55\xa2\x89\x65\x7b\x5a\xcf\x9c\x53\x25\x4e\x7f\x74\x77\xfa\x73\xb2\xe1\xab\xb5\xa9\x2d\x8e\x82\x56\x22\x5b\x3f\x71\x97\x8e\x2c\x86\xcb\x15\xb3\xe7\xfe\x81\x29\xc1\x0a\x52\x52\x45\x37\x0c\x40\x41\x51\x96\x77\x3c\xd8\x34\x0e\x68\x7a\x04\x43\xb7\x24\xd4\x7f\x66\xe7\x40\xc0\x61\x29\x14\x1f\x6d\x8e\x04\x98\x76\x06\xf6\x13\xa8\x20\xe7\x1d\x59\x1c\xb0\x34\x02\x54\x1a\x03\x28\x4d\xaa\x84\x3c\x7c\x2c\x1f\xb9\xc8\xe5\xa3\x1e\xa3\x3c\xff\x8c\xaf\x7a\xdd\x2e\xab\x9d\xcc\x7b\x0a\xf4\xe0\x54\x5a\xca\xf5\x51\x05\x5a\xe2\xc0\x7c\x67\x39\x1a\x2d\x86\xf7\xcd\x19\x2f\x6e\xad\xb4\x98\xff\x4a\x94\xdd\x53\x68\xb6\xab\x8d\xa6\xaf\x94\xa5\x67\x38\x2d\xee\xcb\xc4\x26\x70\x3f\xbc\xbb\xbf\xe9\xbe\x6e\x15\x8f\x47\xc8\x05\xb5\x33\xb6\x7f\x6f\x32\xa4\x83\xe7\xe9\x91\x2d\xd6\x52\x3e\x90\x67\x3e\xf0\xb5\xe2\x66\x5d\x2d\xe6\x99\xdc\xb4\x62\x60\x33\xcd\x57\xfa\xda\xb1\xe6\xcc\xce\x20\x9c\x5c\xc5\x45\x01\xb2\xd1\x4b\x6f\xc8\xfa\x76\xde\x00\x18\x64\x56\xcf\x02\x36\x08\x4e\x62\x44\xef\xba\x5d\x4d\xa1\xbb\x0c\x20\xed\xea\x2c\xf1\x3a\xb7\x3d\xa2\x7d\x17\x2d\xca\x35\x75\x81\x1d\x97\xb3\x06\x79\x89\x6b\x29\xa4\x8b\xe3\x23\x1c\xdb\xb9\xec\x30\x9f\x3d\x2c\xaa\x9a\x23\x09\xf3\x5d\x32\x6a\x2a\xc5\xc8\xb2\xa0\xab\x93\xa9\xaa\x87\xdc\x34\x14\x03\xf4\x4f\x80\xa3\x60\x29\x5d\xba\x62\x0b\x36\x14\x9c\xf1\xd1\x6d\x45\x0f\xce\xde\x9e\xb4\xd7\x3c\xbc\x3f\xd1\x7b\xb2\xbf\xe6\x41\xd2\x67\xd9\x93\xda\x85\x96\xbc\x15\xe0\x4a\x73\x2f\x5a\x59\xe5\x25\xfa\x51\xd7\x5a\x70\x72\x07\x3d\x3a\x8f\xba\xd7\xec\x4f\xba\x2e\xb6\x88\xa3\xbd\xe7\x82\x0b\xb9\xd9\x62\x28\x1e\x8a\xf0\x27\xdd\x0a\xe4\xbc\x37\x03\x39\x76\x3b\xf4\xf3\x38\xf2\x70\xc4\x3a\x24\xb3\xf9\xc7\x36\xb3\x7d\x0d\x7e\x3f\x09\x80\x01\x93\xfc\x6f\x32\xe8\xc6\x1b\x8d\x62\xb8\xbc\x3f\x78\xef\x88\xd8\x22\xdd\x5f\xf5\x87\xd3\x31\x3f\xa2\x3e\x6b\x5c\xa3\x81\x12\x87\x45\x32\x54\x3f\x34\xd0\x10\x06\x75\x61\x1a\x04\x48\xf3\xef\x6e\xaa\x33\x8a\xa3\x09\x94\x8d\x19\x58\x7d\x23\x0b\x86\x10\x94\x38\xa0\xda\x51\xc8\xc7\xa5\x6e\xd3\xe9\xe3\x88\x80\x75\x74\x58\xa0\x46\xe6\xb8\x7e\x9f\x6a\xda\x70\x1e\x8c\x81\xf6\xbd\x20\x75\xf0\x2f\x83\x1e\x11\x6b\x63\xdb\xf5\x33\xc8\xfb\x50\x1e\xc8\x29\x14\x46\xf1\xb2\x60\xe4\x2f\x0f\x6c\x77\x85\x55\x5a\xd8\x72\xc9\x32\xf3\x1f\xa4\xd2\x01\x76\x05\x98\x9a\xc9\xd6\x5c\xac\x88\xd5\xd8\xa8\x91\x8a\xfc\xc5\xff\xaf\xff\xe8\x3f\x15\x71\x0a\x1e\x8e\x23\xc1\x94\x7c\x03\x2f\xec\xd5\x64\xc1\x69\x23\x2d\xbb\x5c\x30\xe2\xd0\x81\x7d\x03\x45\x23\x36\x8c\x0a\xed\x6b\x29\x15\x45\x87\x94\x76\xa5\x7c\x22\x11\x56\xc4\x03\xf2\x3c\x9a\x84\x2a\x46\xde\xcb\x7b\x87\xc9\xb9\x22\x77\x8a\x2d\x99\x6a\xfe\x25\x18\x15\x26\xe4\xbd\x7c\x83\x05\x0f\x86\x67\x13\x29\x7c\x1e\x58\x6f\xd9\x24\x7c\x3a\x4b\xfd\x37\xb6\xf3\xf2\x01\x57\xe5\x81\xed\x9a\x28\x6c\x73\x10\x42\x8b\x82\xbe\x3c\x62\xe4\x7c\x70\xcd\x1f\xd8\x0e\x8d\xa8\xb0\xee\xf4\x80\x23\x03\xd4\xcf\x55\xc3\x96\x1e\x19\xfd\xe6\x33\xd7\x46\xff\x1b\x1e\xaa\x4c\x6e\x16\xae\x41\x76\x80\x2a\x0e\xcb\xb3\x0f\x8c\xcc\x6f\xa4\xc8\xe1\x3f\x61\x88\xa7\xd8\x08\x3f\xe4\x84\xdd\xf8\xe0\x67\xa9\x58\xa9\x98\x06\xfb\x80\xda\x11\x5d\x6a\xa2\x58\x81\x22\x69\xcd\xcb\xd0\x35\x25\x9b\xfb\x7c\x4e\x7e\xa2\x05\xcf\xeb\xd1\x20\xc7\xe2\xea\xc1\x9c\xdf\xfc\xa3\xa2\x45\xe8\x1c\xb5\xb5\x23\x7c\xc1\x93\xb0\x5b\xf4\x8f\x8a\x6f\x69\xc1\x30\x4b\xfc\x91\x17\x79\x46\x55\x88\xe9\x97\x52\xf9\x62\x52\xda\xd5\x85\x00\x08\x13\xc9\xa8\xa8\x45\x61\xc3\x39\xd6\x4e\x0a\xf1\x20\x29\xa9\x32\x3c\xab\x0a\xaa\x88\x95\x1b\x2b\xa9\x02\xf5\x1f\x62\xef\xf3\xfa\x18\x44\x60\xd6\xf7\x85\xff\xfe\xbb\xed\xbd\x35\xeb\xba\x95\x7b\x70\x7a\x88\x3f\xe8\x1c\x4a\xf2\xac\x5b\x7c\x4e\x2e\xbd\x7c\xac\x45\x4a\x48\x9a\xb5\x10\xa3\x1d\x45\x0d\x2b\xf5\xe4\xcf\x9b\x5b\xa9\x91\x11\x21\x66\xf9\xeb\xce\x83\x6f\xda\xa5\x4d\x00\xf6\xe4\xc6\xeb\x0e\xa1\xdb\xe4\xb0\x2c\x40\xe1\xb1\x94\x8a\x6d\x99\x22\xcf\x72\x09\x14\xd9\x96\x67\xe6\xf9\x9c\xfc\xdf\x4c\x49\xac\x00\xc2\x56\x14\x32\xbc\xf0\x48\x07\x88\xd6\xd0\xb3\xa6\xe5\xf5\x0b\xf2\x0c\x88\x12\xbe\xd9\xb0\x9c\x53\xc3\x8a\xdd\xf3\x1a\xb4\x1e\x51\xeb\xe5\xf4\x7e\xeb\x08\x67\xe2\x11\x47\x62\x47\xa4\xbb\x12\x4a\x5d\xd6\x71\xaa\x43\x50\x92\x78\x69\xdd\x48\x60\xae\xdd\xd9\xef\x58\x0d\xbe\x36\x91\x13\xd8\xd1\x6c\xf7\x7f\x2c\xef\x52\xa2\xd8\x0a\xce\x2d\x9e\xc5\x13\x9c\xda\x68\x1d\xbc\xcf\xf7\x38\x40\xa0\xf7\x4f\x8a\x95\x05\xcf\xe8\x81\x7c\x38\x9a\x7f\xb4\x84\xb2\x18\x54\x64\x70\x6f\x92\x9c\x95\x85\xdc\x39\x08\xf9\x3b\xaa\x38\x7d\xfd\x57\x62\x2d\xc9\x05\xd5\x07\x9a\xc1\x50\xf6\x47\x3f\x67\x39\x45\xfb\x13\xdb\x94\x05\x35\x07\x5c\xd5\x75\xe7\x77\x7f\x0b\xca\xaa\x70\xae\x4e\x0a\x80\x83\x06\xf0\x0d\x83\x76\xc4\x0f\x56\x12\x0a\x4e\x60\xc5\x20\xa9\x59\x3d\xa3\xbd\xdf\x0d\x69\x92\xde\xa4\x3e\x76\x0a\xf6\x8c\x1f\x43\x45\x4e\x55\xee\xf6\xe6\xf2\x52\xd7\x2f\x1f\x35\x5a\x56\xdc\xcc\x1f\xfe\x0c\x16\x4b\x26\x37\x9b\x4a\x70\xb3\xbb\x86\x0a\x8a\x7c\x51\xd9\xcb\xf2\x3a\xb7\xa6\xea\x35\x2d\xb9\xb5\x5c\xb6\x4c\xa0\x51\xb0\xc9\x7f\xe7\xe9\x1e\x33\x56\x42\x6a\x31\x54\x60\x1b\xb6\x53\xce\x5c\xcf\xf4\xa6\x19\x81\xdb\xd9\xca\x15\x8c\xaa\xac\x8d\x6d\x75\x2f\x3c\xd7\x1b\x5a\x12\x6d\xec\x55\x30\xe0\x9e\x37\x6b\x38\xc1\x88\xf2\xf7\x96\xc9\xce\xe3\x89\x16\x3b\xc2\x3e\x1b\xa6\x2c\xdb\x18\x29\x0b\xac\xbb\x62\x86\x0a\x90\x5a\x61\xae\x98\x51\x9c\x6d\x19\xa1\x6a\xc1\x8d\xa2\x6a\xd7\xda\xcb\x4f\x6b\xb6\x03\x45\xc6\xde\x03\xff\xa8\x98\xda\x81\x13\x60\x48\xd7\x6e\x24\x14\x5c\xbf\x6a\xcb\x72\xf2\x68\x35\x7f\x44\xdd\x82\xed\x03\x5c\xa3\x0f\x58\xe5\xb8\x79\x5b\x69\xa6\x66\xab\x8a\xe7\xec\xba\xb5\xa1\x23\x6b\x9e\x0e\xfe\x59\xf7\x78\xc4\xf7\x98\xdf\xc5\x38\xf0\x48\x3a\x43\x3f\x67\x1a\x13\xaf\xd8\x9a\x6e\xb9\xac\xcb\x46\xb8\xd3\x7a\x5c\xd0\x9e\xf6\xa4\xd8\xd1\xcf\xa8\xc8\x67\x58\xeb\x6b\xcc\x81\x71\x45\x34\x6f\xef\xe2\x7c\x20\xf5\xcf\xfd\x3d\x78\x7b\x67\x0f\x94\x82\xc4\xce\xce\xfc\x07\x39\x86\x6b\x52\xe9\x8a\x16\xc5\x8e\x60\x65\x5b\x96\x3b\xb8\x53\xb1\xf3\x4a\xc1\x86\xda\x2f\xc1\x25\x49\x85\xff\xc8\x10\xc5\xc6\xbd\xb6\xa1\xc2\x11\x47\x67\xae\x65\x65\x2e\xc0\xe1\xb2\x70\x65\x38\x35\x28\x50\x56\x51\xe9\x25\xb9\x60\x35\x52\xab\x86\x16\xb8\xc9\xfd\x5b\x73\xcd\x5e\xb9\xc2\x9d\x0d\x63\xf4\x89\x6b\xff\x80\x76\xb4\xa4\xbc\xe8\xb8\xf0\xac\x72\xee\xaa\x47\x62\x9a\x40\x4e\xcc\x5a\xc9\x6a\xb5\x76\xd5\x24\x07\x4c\x27\xb4\x43\x5a\x66\xf3\xc5\x7b\x29\xd8\xc5\x95\xab\xec\x88\xd2\x8b\x3c\xbb\xb8\x78\x7e\x45\xe0\x12\x04\xf8\x2a\xb9\xed\xaf\xc5\xe4\x96\x7b\xee\x28\xc1\xe8\x16\x6d\x0f\xa6\xbd\x97\xd6\x8c\xe6\x85\xdd\x79\x37\x63\x88\x0c\xf5\x9b\x89\xa5\x92\x9f\x41\x18\xf8\x8a\x7c\x75\xce\xd7\x07\x61\xf7\xaa\x36\x74\x5d\x7a\xc5\x2b\xcf\x6b\xfd\x2a\xcf\x7b\x99\xb3\x3b\xa9\xcc\x15\xec\xf4\x5b\x49\xf3\xbf\xd2\xc2\xde\xfb\x96\x6f\x50\xcf\x86\xb4\x2f\x87\x02\x7a\xe3\x84\x25\xd4\xdf\xed\x25\x9a\x98\x0e\xe8\x27\x3f\x13\xcc\xb8\xe2\x88\xfe\xdf\xae\x7f\xb7\xe5\xca\x54\xb4\x98\xf1\x52\xe3\x41\x75\x0e\x39\xbb\x16\xbc\x3f\x0d\x35\x78\xeb\x78\xb1\x7f\x7b\x17\xe7\x8f\x6b\xfd\x1e\xa1\x43\x1e\x51\xd1\x9c\x5f\x57\xb4\x61\xb8\x54\xae\x90\x39\xd3\x75\xc9\x46\xdc\x20\x0f\x6a\xd4\x98\xe2\x5d\x1a\x62\x14\x5d\x2e\x79\xe6\xa0\x17\xbc\x66\x90\x39\xa4\x98\x0c\x94\x89\xb6\xc3\xf3\x77\x0f\xa6\xba\x81\x57\xfa\x6f\xcd\xf2\x63\x92\x4a\xe5\x20\x50\x8a\xe9\x52\x0a\xcd\x87\x22\x64\x80\x97\x14\xba\x52\x58\xb4\x97\x36\xc3\xa3\x4a\xf1\xad\x3d\x31\xc6\x55\x0a\xf7\xb5\x74\xb9\x86\x52\x6d\xa4\x3f\xa4\xe3\x52\xac\xd8\x67\xba\x29\x11\x35\x57\x5f\xc4\x85\xa4\xf9\x6c\xe1\xd8\xd0\x79\xd2\xfd\x9c\xac\x19\xdd\x4b\xd3\x89\x8f\x66\xb2\x01\xbb\x28\xe0\x28\x8d\xd0\x5c\x42\x10\x01\x3f\xa7\x4f\xb8\x60\x77\xb2\xe0\x59\x5c\xe5\xf0\xa3\x6f\x92\x9c\x09\x69\xe7\x05\x99\x98\x5c\x7b\x4d\xd8\x5d\xa5\xfd\xc2\xdd\x48\xa2\x64\x65\x58\x4b\xdb\x71\x5b\x68\x24\x6c\xdc\xcc\x8a\xe9\xc2\xca\x36\x5f\x14\xfa\x91\xe7\xad\x32\xbe\xfd\x87\xfd\xe2\xad\x84\xd2\xd1\x5e\x73\x71\x21\xe4\x82\x33\x61\x88\x53\xbb\xec\x19\x11\x39\xa1\x5b\xc9\x73\x2c\x50\x9f\xc9\x81\xcb\x6d\x2d\x4b\x60\xba\xb6\x38\x02\x02\x56\x5a\x61\x31\x04\x2b\x8f\xbc\xdc\xb8\x22\x8b\xca\x10\xc5\xf5\x43\xff\x02\x94\xd2\x60\x94\xb3\xd8\x11\xbe\x71\xcc\x95\xd7\xab\xa0\x4b\x2c\x7d\xbc\x9a\x93\x0b\x27\x35\x2f\x88\x5c\xe8\xac\x1a\x5c\xd5\xbe\x89\x5a\x0d\x33\xa3\xae\x40\x29\xcc\x15\xe6\x04\x40\x34\xb8\xf7\x06\xc5\x03\xce\xc7\xe9\x84\x6b\xba\x65\x64\x25\x65\x4e\xe4\x96\x29\x5a\xb8\xe3\xd1\x0c\x78\xac\x00\xc4\x22\xa4\xaf\xd6\x2c\x7b\xf0\x97\x40\x14\x63\x1e\x79\x6f\xbf\xfa\x24\xfc\x22\xb3\xbf\x80\xf9\xdc\x0d\xd5\x65\xf0\xe0\xb2\x5a\xc0\x1d\xa6\xa4\xfe\xe7\x91\x2f\x0e\xe0\x04\x7c\x8a\x9d\x77\x8d\x78\x6d\xaa\xe4\x64\x41\xb3\x07\x26\xf2\xa6\x1e\x79\xa3\x9e\xf8\x81\xf6\x33\xfa\xcf\x56\x48\xdb\x3d\x05\xe5\xba\xb9\xc8\xfd\x9b\xbe\x2c\x43\x2b\x70\xe3\xc6\xd0\x3f\x54\x60\x1e\x77\x7d\x3b\x9f\x3f\x2a\xfe\x1e\x76\xab\x31\xef\x71\xff\x24\xf4\x52\x7c\x73\x54\x6c\xb4\x09\x65\xfd\x1e\xd5\xd3\x94\xbc\x2f\x5a\x63\x8d\xd5\x8a\xf7\xf5\x17\x2f\xd7\x3e\xc1\xd7\x3a\xb3\x6f\xff\xc7\xb0\x86\xb8\x62\xa6\x66\x86\x7a\xc7\x6f\xef\xba\x51\xe4\x6e\xb7\x82\x01\xb6\xf2\xb1\xd8\x9c\x95\x4c\xe4\x50\xfe\xef\x71\xcd\x8c\x6f\x3e\x50\x89\x9c\xa9\x02\xb4\xb3\xac\x90\x55\x3e\x73\xc5\xc5\x95\xaf\xf8\xd3\x4f\x19\xc7\xb3\x73\x25\xf1\xf7\xd6\x0f\xd9\x81\xc2\xbf\x12\x7f\x29\xda\x0d\x75\x33\xeb\xe7\xd7\x96\x6a\xec\xdd\x89\xbc\xa5\xd1\x81\xec\xea\x0c\xd4\xa7\x8b\xf5\x0f\x14\x67\x82\x10\x61\x5c\x8e\xde\x1c\xe5\xa0\xfc\x69\x4f\xf3\x1e\xa4\xe7\x47\xab\xb4\xc7\x69\x63\x97\xed\xf0\x28\x56\xa3\xaa\xb1\xa8\x3e\xaf\xb7\xa0\xc6\x32\xf4\x15\x6c\xf1\x30\xa7\x28\x66\x07\x9a\x35\x8a\x8d\x37\x1c\x8e\xac\x52\x47\x3b\x19\x26\x0b\xc5\xf1\x91\x72\xcb\x00\xaa\x87\xed\xae\x8e\xdb\x3b\xdd\xb6\x63\x82\x24\xe3\x36\xb1\xbd\x59\x21\x9e\x9e\x5f\x24\x45\xcd\xb1\x0c\xd1\x0c\x8e\x2b\x5a\xf4\xbe\x93\x44\x2b\x70\xde\x1d\xd6\x6c\xc9\x15\x7b\xa4\x45\xd1\x1b\x40\x3f\xbf\x2e\x06\x87\x30\x8e\xbb\xac\x86\xec\xf5\x7b\x78\xad\x51\x42\xd1\x55\xe8\xb8\xac\xa5\x98\x7f\xcb\xc6\x50\x0a\x20\xc0\x49\x5e\xb8\xd0\x1c\x20\x42\xc3\xf0\xed\xd5\x00\x36\xba\xf0\x73\x1e\x44\x90\x96\x83\x77\x69\x5c\x70\x3e\x0c\xa2\x3e\xc0\x32\x34\x40\x12\xc0\x83\x28\xe3\x91\xaf\x41\xc7\x52\xf3\xc0\x59\xac\xab\x5c\x91\xd7\xef\xef\x7f\x79\x7b\xf3\xd7\x37\x6f\xe7\xe4\xa6\x28\x1c\x3f\xd4\x78\x5a\xb7\x5e\xf7\x25\xcb\x42\xe1\x5d\x4b\x11\xd4\xb9\x4a\xf0\x7f\x54\x38\x56\x7f\xf4\x37\xb4\xac\xe1\x5d\x97\xd6\xba\xbe\x0c\x48\x03\x7c\xb8\x20\x6f\x9c\x8a\x0e\x3b\x56\x7b\x09\x7d\x99\x0a\x2b\x25\xea\xae\x0d\xad\xbd\x0d\xd1\xd5\x75\x63\x15\x29\x22\x19\x9d\xc4\x07\x2d\x45\x40\xe1\xc4\xe7\xf0\x4c\xc2\x86\x4a\x97\x6e\x02\xf6\x26\xdc\xc2\x58\x62\xab\x19\x63\x78\x72\xfe\x14\xc3\xe5\x6a\x07\xfd\xef\xb5\x66\xb9\x67\x77\xcc\xc9\x8f\xe8\x67\x0b\x45\x78\xbd\x17\xae\x1b\x91\xdb\x6f\xe5\xd3\x00\xa9\x6b\xd5\x33\x2e\x60\xee\xd5\x58\x80\xee\x41\xdc\xc2\x5a\xe5\x85\x66\xc9\xde\x33\x7c\x5a\x3e\x34\x5f\x53\x93\x03\x07\xd2\xca\xc8\x59\x93\x60\x89\x6b\xce\x63\x50\x11\x3e\x2c\x63\x55\x57\xb9\x67\xa0\x3a\x57\x95\x55\x9b\xe2\xab\xfb\xc4\xd5\xf7\x19\x94\x98\x76\x6f\xa1\x35\x92\x9d\xc6\x70\x5d\xc1\xd8\xaa\x65\xf1\xf1\xd1\x70\xf9\xc1\x23\x58\x2c\xe5\xf0\x53\x9e\x4f\x92\x2f\x9c\x73\xcc\x25\x9c\x9e\x11\x28\xbf\xf7\xe4\x90\x27\x21\x9a\x01\x46\xfe\x66\xb9\xe4\x02\x61\x9f\x4b\xbe\x8a\xba\xcf\x8f\xbe\xd9\xdc\x6e\x0e\x75\xdb\xc4\x0c\xfb\xef\x35\xa8\xef\x87\xb5\x56\xa8\xa3\xf6\x94\xf2\x70\xa8\x01\xf6\x1b\x49\x07\x33\xf1\x2f\x0c\x0d\xde\x0e\xf2\x15\xfc\x6e\x70\xe3\x6f\xef\xc8\x82\x5a\xc6\x8a\x9d\x50\xec\xa4\x48\x52\x19\xc5\x83\x29\x76\x5f\xdd\x73\x2d\xf8\xe2\x8a\x41\x44\x0a\x71\x4b\x70\x7b\xe7\x7d\x45\x38\x49\x6d\x78\xf6\xb0\x83\x8f\x60\xf5\x1c\x17\x4a\xac\x74\x18\xed\xbb\x60\xe4\x3f\x5e\x90\xff\xf5\xbf\xc8\x5f\xfe\xfd\xcf\x7f\xfa\xe3\x8b\x17\xcf\x96\x52\x91\x97\x24\xa7\xbb\xe7\x56\x40\x7a\xdc\xaa\x5b\x46\xf2\xef\xff\x1e\xa4\x78\xe1\x07\x79\xd1\x48\xe1\xa6\xb8\xe3\x8b\x3f\xbb\x6f\xfc\x81\xac\x65\xa5\xf4\xf3\x90\xe2\x12\x7f\xea\x53\x73\x13\x9f\x86\x17\x1e\x4a\x3a\xee\x5e\xf2\xae\x46\x96\x61\x6a\x03\xd9\x28\x6b\x2c\x0f\x55\x5f\x23\xcd\xd5\x1d\x51\xc5\xd8\xc8\x26\x02\xd2\x40\xcd\xf0\x8c\x20\xd0\xac\x09\x66\x5c\xb5\x82\x25\x4d\x50\x64\x30\x08\xdc\xd5\x12\x2e\xda\xd4\x2e\x3a\xfa\x5c\x63\xf1\xb1\xa8\xf0\xc9\x45\x3d\x94\x8b\x5a\x4b\x80\xa6\x1a\xce\x33\x6b\x37\x0d\x7c\xb8\xad\xd0\x21\x54\x67\x6e\x2c\xd3\x41\xf4\x89\x6c\xb9\x75\x6b\xf5\x11\x97\xa4\x5e\xfa\x96\xfb\xcc\x75\xfe\x1c\xa8\x5e\xd1\xaa\x0b\xb8\xe7\xba\x5b\xec\x5c\x28\x11\xca\x53\xfb\xae\x4f\x58\x0b\xaa\xf9\x74\xbf\xb8\x05\x9e\x02\x25\xaa\x13\x37\xf5\xd1\x39\x21\x89\x33\x89\x08\xfe\x21\xac\x54\x51\xd7\x38\x93\x75\xe6\x5d\x56\x8b\x82\xeb\x35\x22\xad\x28\x38\xcb\xe4\xb2\xf5\x1b\x45\x07\xbd\xb6\x66\x4d\xad\x2d\xa0\x0d\x44\xfa\x2d\xb7\x5d\x78\x1e\xba\x20\x8b\x8a\x17\xe8\x2f\xaa\xf7\xd5\x03\x3a\x71\x6b\xfb\xc7\xda\x28\xbc\x5b\xa6\x76\x2e\xc2\x02\xea\x2e\x78\xf3\x6b\x0e\xcb\x1a\x36\xbf\x68\xb3\x65\x7f\x95\xad\x66\x50\xb5\xe2\x0b\x85\xef\xc0\xa9\x04\xa0\x8b\xe3\xe1\x18\xf2\x8c\xf7\x8b\xde\xc6\x07\xe3\xe3\x5b\x95\x52\x4c\x18\xf4\x51\x3c\x0f\x0c\xfd\x8b\x58\xd0\x6e\xa3\xb9\x58\xcd\xea\xdf\xcd\x6a\x3b\x1a\xc2\xa6\x23\x3d\x5a\x63\x30\x59\xda\x48\x45\x57\x01\xb0\x13\xfe\xa6\xce\xce\x72\xde\x42\x10\x8d\xda\xff\x6d\x4d\x5b\xd9\x99\x7b\xd4\x86\xee\x6c\x74\xe5\xbc\x93\xf9\xf1\x0b\x7d\x0f\x98\xd3\xfc\xb8\xab\x7f\x78\x20\x87\xab\x4f\xbd\x81\x5f\xf4\xd9\x0b\xae\x4a\x5f\x2b\xbc\x91\x5c\x3f\xd6\x4d\xfb\xba\x64\x4a\x73\x6d\x98\x30\x33\xa4\xaa\x7f\xe7\x7c\x53\x30\x84\xd9\xcb\x63\x5b\x39\xe0\x0c\x89\xda\xe1\xe3\x0a\x6a\x4e\x0d\x45\x2f\x66\x70\x1d\x5b\x7e\xd9\xda\x2a\xb2\xab\xf8\x13\x4c\xe1\x5e\xd0\x52\xaf\xa5\x79\x5d\x13\xc4\xc4\xa4\xa3\x03\xf6\x3e\xe9\x15\x40\x55\x21\x7d\xcb\x75\xef\xc5\xd3\x8c\xc7\xaf\xd8\xed\xd1\x76\xd0\x93\xa3\x24\xc1\x59\xd0\x1c\x64\x48\x17\xc3\xe0\x56\x8d\xb6\x04\xa7\x9e\xd5\xa6\x98\x02\x58\x83\xf7\x34\x76\x3f\x72\x94\x7a\x8b\x5c\x63\x0c\xa3\xd0\x21\x94\x08\xf6\xe8\xd9\xc3\x0e\x1f\x7e\xdc\x76\xa4\xf6\x42\xbd\x3c\xa8\xdc\xbd\x8b\x1e\x6a\x0d\x05\xe9\xf9\xe6\xf8\xc0\xf7\xfd\xa4\x47\xe9\xee\x2d\x5b\x67\xf4\xee\x63\x75\x81\xc4\x05\xab\x83\x0d\xee\x8e\x39\xbe\x65\xd8\xea\xae\x35\x2f\xb7\xd2\x14\xa5\xee\x16\x02\x42\xb7\x28\x3f\x97\x95\xdd\xde\x2b\xf2\x08\xee\x6c\x41\x8c\x3c\x6e\x19\xb9\x0d\xd8\x40\x03\xd3\x66\x90\xbe\xca\xa6\xbb\xf2\xf6\x71\x56\xad\xe5\x38\x4a\x16\xa2\x98\x80\xa4\x39\x26\x9b\x83\x40\xc2\x92\x0f\x56\x5d\xec\x16\x24\xb9\xbb\xc5\xfa\x9a\x0e\x14\x85\x55\x47\x7d\x6c\xb0\x86\xef\x61\xdf\x60\xc8\x62\x61\x22\x1b\x0a\x7e\xdc\x2e\x3b\x34\x8f\x14\xb9\x6d\xb4\xb2\xbf\x71\x91\xb7\x6a\xe3\x0f\x87\x7b\xed\x12\xdf\xdc\xdd\xe2\x08\xe7\xe4\x7b\xa9\x20\xf1\x49\xba\x40\x10\x57\xf9\xac\xa4\x50\x21\xc1\xae\xfd\x55\x3d\x8a\x7e\xe5\xa9\x55\xbb\x79\x6c\x2c\xe5\x81\xf7\x37\x39\xed\xa6\xd4\xf0\xa6\xb3\xa9\x71\x7e\x9a\xde\xd5\x1d\x3b\x9a\x21\xb7\xed\x61\xc5\x8b\xbd\x0c\xc0\x13\x8f\x66\xc8\x71\x31\x83\x75\x3b\xfa\x87\x9e\x32\x13\x83\x96\xce\x60\x21\xfa\xfd\x1a\xe0\x4d\xd9\xee\x4e\xc2\x85\xaf\x02\xde\xd4\xf5\x0e\x54\x89\x3d\xd3\x35\x5a\x7f\x7f\x0c\x22\x72\xb8\xe8\xfd\x99\xd1\xc3\x27\x2a\x74\xff\x0d\x15\xb9\x8f\xe8\x80\x30\x5c\xdc\xfe\xcc\x2b\x7e\xb2\x82\xf6\xe7\x28\x66\x3f\xae\x90\x7d\x03\x4e\x1d\xb2\xa2\x13\x8a\xd8\x7f\x53\x1c\x33\x8c\xe7\x76\xf6\x7e\x50\x88\xdd\xb8\x7a\x69\x80\x70\x07\x70\x92\x93\x53\xda\x75\x01\x82\x6e\x54\xb0\x53\x0b\x2e\xfa\xa0\x4a\x21\x59\x02\xa9\x40\x6f\x3e\x5b\x21\xa9\xa3\x73\xa7\xf7\x5f\xea\x02\x36\x71\xd8\xb5\x5f\xc3\xf1\x9a\xdd\xc4\x01\x94\xdb\xa7\x35\xeb\xfc\x12\xbc\x06\x37\xef\x5f\xf7\x5f\xda\x29\x41\xd7\x9b\x81\x41\xe1\xe0\xeb\xbf\x58\xbe\x1d\x70\xd7\xd5\x76\x19\x62\x99\xaf\x30\x45\x13\xd1\xbd\x90\x23\xe3\x12\xa5\x80\xfd\x21\x6d\x73\xc0\x54\xc3\xe7\x81\x21\x0c\x1c\x29\x3e\x35\xa6\x9b\x96\x02\xfc\xd0\xa4\x00\xe3\x0a\x75\x52\x80\xeb\x45\x89\x2b\xd7\x67\xe4\xd7\xca\x9d\x95\x27\xcb\x9d\xad\x7d\x53\x6e\x37\x8e\x66\xd0\xde\x8a\x2b\xf2\x5e\x1a\xfb\xff\x30\x1b\x2e\x14\xbb\x14\x39\x79\x2d\x99\x7e\x2f\x0d\xfc\xfe\x24\xcb\x84\x03\x4c\x58\x24\x87\xbe\xc7\x94\x1f\xb0\xb2\x21\xdc\x82\xd0\x7b\x3f\xdd\xa8\xf4\xec\x76\x3a\xe0\xad\x20\x52\xf9\xd5\xa8\x73\x02\xb5\xfb\x80\xd7\xfa\x85\x14\x33\xec\xe1\x10\x20\xdd\x9b\x70\x68\xbf\xd2\x5e\xc3\xf6\xc7\x42\xcb\xdf\x19\x8a\x6b\x25\x01\x5e\x02\xfc\x0b\x58\x08\x65\x01\x45\xfb\x72\x44\x61\x0f\xd7\xbd\x25\x76\xd5\xa8\x61\x2b\x9e\x91\x0d\x53\x2b\x46\xca\x70\x41\x82\xa8\xee\xcf\x69\x75\x46\x03\xb5\xd3\x62\x82\x8a\x0f\xac\xff\xfd\x59\xbd\x0d\xe7\x0c\x3b\xc2\x65\xf2\xd6\x0a\x9f\xaf\xa4\x60\xb5\x06\x80\x77\xc1\x86\x42\xcf\x8b\xff\xae\xab\x69\xfc\x0f\x29\x29\x57\x7a\x4e\x6e\x88\xe6\x62\x35\x00\xe5\x6f\xbf\xe3\x7c\xb4\x6d\xf2\x96\xf2\x41\xd2\x3c\x15\x84\x05\x5a\x14\xca\xe5\xc1\x9d\x7b\x45\x1e\xd7\x52\x33\x10\xd8\x75\xe6\xf6\xc5\x03\xdb\x5d\x5c\x75\x4e\xd0\x90\x5d\x7c\x71\x2b\x2e\xae\x6a\xf7\x45\xe7\xe0\xd6\xf7\x1c\xf8\xab\x2e\xe0\x6f\x17\xf3\x83\x6b\xba\xdf\xb5\x1e\xba\xbe\x9f\xa4\x43\xa1\x61\xf5\xaa\xa0\x5a\xf7\x55\xc7\xd9\x6b\x1f\xd7\xae\x7f\xd3\x7a\xfb\xa0\x3b\x59\x56\x50\xbe\x41\xcd\xf2\xe8\xc0\x4f\x62\xfd\x65\xf6\xd3\xc7\xbd\xa7\x83\xcc\x8b\xef\xbf\x93\x79\x78\xc6\xcd\x4f\xeb\xaa\x9c\x8f\x70\xad\x3b\xa7\x84\xf3\xae\xb5\x9c\x23\x47\xa7\xdb\x5d\x95\xba\x50\xe5\xf7\xbc\x60\x08\xc0\x81\x7a\x01\x1b\x2c\xa7\x08\x60\x1f\xcc\x64\xcb\x8a\xaa\xaf\x6a\x2c\x17\x48\x0e\xcc\x01\x27\x87\xe1\xd8\x2d\x98\xa1\x35\x62\x72\xdc\xd2\x44\x31\xc3\x4f\xf5\x4f\xbd\xea\xe3\xf4\xe7\xc6\x19\xe2\x1d\x9e\x77\xf5\xde\xfd\xd4\xef\x22\x58\xd0\xec\x01\xb1\xc5\x5c\xbb\x95\x4a\x1b\x7d\x28\x7c\xf1\xe9\x48\x78\xf7\x58\x08\x03\x80\x41\x2e\x0f\x2e\xaf\x14\xc4\xca\x9e\x39\xeb\xec\x39\xc0\x99\xca\x35\xdb\x30\x45\xf7\x33\x0a\x7b\xc7\x86\xc1\x4a\x50\x9f\x8e\xa7\xd6\x74\x1d\xef\xfb\xbf\x06\x29\xa2\x20\xeb\x17\xa2\x18\x05\x33\x5e\x30\xd5\xfd\x99\x8e\xa7\x84\xf7\x8e\x08\x33\x0d\xef\xf1\xfa\x1d\x1e\x4e\xf7\xa7\x7b\x15\x85\xee\x0d\x35\x6c\x59\x15\xf7\xcc\xfc\xd8\xf9\xdd\xc1\xd6\x75\xc1\x42\x9b\xb2\x90\x3b\x04\x1b\x23\x7d\x2c\xd8\xeb\x64\x7d\x8b\xaa\xc7\x95\x2b\x86\x3e\xe0\x03\xba\x00\x4a\xcc\x81\xd5\x7c\xa2\x7d\x4a\x64\x49\xc9\xa2\xe0\x62\x85\x83\x0f\xf2\xfc\xc7\xf6\xaf\x31\xb9\x15\x27\xe1\x12\x7a\x01\x8b\x56\x57\xeb\x1d\x48\x93\xf4\x79\x13\x1d\x82\xad\x69\xfb\x65\xb4\xbf\x1b\x63\x8f\x42\x19\x17\x18\x73\xcc\xd5\x7d\xe7\x7f\xbd\xb7\xbb\x52\xe5\x5c\xd0\x82\xd8\x9d\xab\x1b\x84\xb6\x46\xd9\x7b\x6d\xb5\x12\xc5\x3d\xe9\x16\x14\xa2\xc1\x8e\xbc\x38\x67\x8a\xc7\xe0\xdd\xd7\x87\xf5\x38\x52\x54\xbe\x5b\x42\xab\x46\x0d\x0e\x30\xff\xf1\x59\xb5\xf0\x8b\x9d\x6d\x3f\x95\x98\xdb\x5a\x29\x7b\xb8\xe3\x5d\xa1\x8d\xbf\xb1\x33\xf0\xf5\x31\x30\x1e\x87\xa5\x33\x0e\xf5\x8c\x9e\x81\x1c\xd3\x89\x67\x7e\x04\xff\xbf\xc0\x60\x31\x89\xbd\xfd\x6a\x1f\x3b\xcb\x05\x56\x19\xf8\x81\x09\x27\xed\x06\x67\x77\xf8\x73\x7f\x35\x6d\xa4\x36\x44\xb1\xcc\xea\x8a\xab\xe6\xaf\xfe\x85\x83\x1d\xa8\x13\x5a\xbd\x3f\x6b\x4e\x6e\x0d\xc9\xa4\xc2\x44\xd4\xbc\xc6\x05\xf8\xbf\x5f\xea\x16\xdd\xab\x9e\xe4\x5a\x2b\x30\x60\xcb\x01\xae\xbc\xa9\xd0\x1d\xe7\xb5\x83\x9b\xbb\x5b\x00\x10\x1d\x56\x7e\x1f\x2a\x89\xd3\x7f\x0a\xca\x35\xd5\x07\x3c\xde\xcb\x58\x8a\x51\x7d\xb8\xbc\x3d\x3f\x3f\xb2\xad\x7b\xff\xe4\x99\x91\x6c\x5f\x42\x5c\xf8\x65\xf3\x6f\xb0\xc7\x18\xbb\xe8\xfc\x19\x8b\xab\xb0\xbc\xd5\x66\xd9\x03\x0f\xf0\x5f\xfe\xbf\x00\x00\x00\xff\xff\x31\x7d\x06\x66\xf0\xcf\x06\x00") func kubedbCom_mariadbsYamlBytes() ([]byte, error) { return bindataRead( @@ -584,12 +562,12 @@ func kubedbCom_mariadbsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_mariadbs.yaml", size: 140891, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_mariadbs.yaml", size: 446448, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_memcachedsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x4f\x73\xe3\xb8\x72\xbf\xcf\xa7\xe0\x21\x87\x24\x55\x9a\x64\xb3\xaf\xb6\x12\x5f\x52\x7e\xf6\xcc\x66\xb2\xf3\xc7\x35\x1a\xef\x3b\x6c\x6d\xaa\x20\xb2\x25\x21\x06\x01\x2e\x00\xca\xf6\xa6\xf2\xdd\x5f\x91\x34\x65\x59\x22\x81\x6e\x90\xb4\xe4\x31\x70\xb2\x45\xb2\xd1\x68\x34\x1a\x3f\x34\x1a\x0d\x56\xf0\x5f\x41\x1b\xae\xe4\x59\xc2\x0a\x0e\x77\x16\x64\xf5\x9f\x79\x7b\xf3\xef\xe6\x2d\x57\xff\xb2\xf9\x61\x01\x96\xfd\xf0\xe6\x86\xcb\xec\x2c\xb9\x28\x8d\x55\xf9\x57\x30\xaa\xd4\x29\x5c\xc2\x92\x4b\x6e\xb9\x92\x6f\x72\xb0\x2c\x63\x96\x9d\xbd\x49\x92\x54\x03\xab\x7e\xfc\xc6\x73\x30\x96\xe5\xc5\x59\x22\x4b\x21\xde\x24\x89\x60\x0b\x10\xa6\x7a\x27\x49\x58\x51\x9c\x25\x37\xe5\x02\xb2\xc5\x9b\x24\x91\x2c\x87\xb3\x24\x87\x3c\x65\xe9\x1a\x32\xf3\xb6\x79\xf2\x36\x55\xf9\x1b\x53\x40\x5a\x7d\xc3\xb2\xac\xae\x8c\x89\x2b\xcd\xa5\x05\x7d\xa1\x44\x99\xcb\x9a\xde\x2c\xf9\xef\xf9\x97\xcf\x57\xcc\xae\xcf\x92\xb7\xd5\x07\x6f\x37\x4d\xb3\xea\xba\x1a\xea\xbf\xee\xfc\x62\xef\x0b\x38\x4b\x8c\xd5\x5c\xae\x0e\x3e\xb7\xcc\x96\xe6\x6d\xb1\x66\x06\x76\x3e\x9f\xd7\x3f\x7b\xbf\x6e\x25\xf1\xf6\x40\x0c\x3b\xb4\xce\x57\xb0\x43\x28\x63\xb6\xfa\x77\xa5\x55\xb9\x95\x49\xdd\xf2\xe6\xf5\x07\x81\xa5\xcc\xc2\x4a\x69\xde\xfe\x3f\xab\xbe\x63\xc6\x2a\x0d\x0f\xff\x6f\xa5\x59\xfd\xc3\x8a\xc2\xa4\x2a\x6b\x9f\xb1\xba\x03\x92\xa4\xe9\xc7\x4f\xad\xa0\xeb\xdf\x04\x37\xf6\x97\xa7\xbf\x7f\xe4\xc6\xd6\xcf\x0a\x51\x6a\x26\x76\xbb\xa6\xfe\xd9\xac\x95\xb6\x9f\x1f\x99\x9b\x25\x79\xda\x3c\xe0\x72\x55\x0a\xa6\x77\xbe\x78\x93\x24\x85\x06\x03\x7a\x03\xd7\xf2\x46\xaa\x5b\xf9\x9e\x83\xc8\xcc\x59\xb2\x64\xa2\x16\xb1\x49\x55\x25\x87\x9a\x5e\xc1\xd2\xfa\x13\x53\x2e\xf4\x83\x9e\x3d\xd4\xd1\xf4\xcb\x59\xf2\x7f\xff\xff\x26\x49\x36\x4c\xf0\xac\x96\x6f\xf3\x50\x15\x20\xcf\xaf\x3e\xfc\xfa\xe3\x3c\x5d\x43\xce\x9a\x1f\xab\x8a\x55\x01\xda\x6e\x85\xd6\x68\xde\x56\xe7\xb7\xbf\x1d\xf4\x69\x53\x6a\x69\xf9\x5e\xda\xd5\xfd\xb6\x74\xd5\xbb\xed\xfe\x27\xbf\x24\x49\xce\xee\x3e\x82\x5c\x55\xda\xf3\xd3\x8f\x7b\xcf\x0a\x66\x2d\x68\x79\x96\xfc\xcf\x6f\x6c\xf6\xe7\xef\xff\xf8\xdb\x8c\xcd\xfe\xfc\xd7\xd9\x7f\xfc\xfe\xcf\xbf\x3d\xfc\xf1\x4f\xff\xf9\x0f\x7b\xdf\x74\x32\xd9\xfe\xac\x16\xff\x0b\xa9\xdd\xfe\xdc\x8e\x2d\x1f\xdf\xa9\x92\x4b\xbe\x9a\xd7\xdd\xb1\xcf\x7f\xdf\x37\xb5\xac\x6f\xcd\x3b\xc1\x8c\xe5\xe9\x5f\x85\x4a\x6f\xe6\x95\xb6\x1e\xbe\xe5\xa6\x51\x95\xa5\xf9\x56\xb1\xdf\xf9\xac\xb7\xc5\x3b\xe4\x99\xb6\xdc\xee\xf5\xf8\x13\xfa\x4a\xe7\xcc\x9e\x25\x5c\xda\x1f\xff\xcd\x59\x4b\x65\x79\x56\xa0\x3b\xdf\xd1\xc0\xb2\x2f\x52\xdc\xbb\xf9\x5c\x28\x25\x80\xc9\xce\x77\x36\x95\x49\x83\x0f\x97\x81\x2d\xd5\xf0\x47\xc9\x35\x64\x5d\x9f\xcf\xb6\xc4\x3b\x1e\x76\x2a\x47\x5b\xd8\x9f\xa5\x86\x4b\x6e\x6e\x42\x7a\xae\xb2\x01\x5c\xae\x3e\xa9\x2c\xbc\xfb\x32\x6e\x6e\x3e\x77\x8c\x1c\x12\x81\xeb\xaf\x1f\x82\xbf\x1f\xa8\x7e\xfb\x66\x84\xf4\xf1\x50\xa5\x72\xeb\x44\x2b\xda\xde\x87\xd7\x5f\x3f\x04\xe9\xcb\x7b\x2e\x82\x46\xfa\xf0\x31\x64\x20\xd5\x60\x07\xe9\x8b\x59\x33\x0d\x03\x28\xb8\x65\xfe\xc8\x60\xf7\xe3\xb6\x72\xaa\xdc\x53\x28\xd6\xcb\x4e\xb1\xfa\x84\x9e\x2b\xc9\xad\xd2\x3d\x4f\x93\x84\x5b\xc8\x7b\x1f\x22\xe4\xd9\xbe\xc2\xb4\x66\xf7\x3d\x16\xda\xae\x8f\x36\x44\x5a\x9d\xe9\xd3\x59\x14\x13\x0d\x89\xaf\xb0\xec\xa3\xe0\xeb\x84\xa4\x07\x1f\x90\xb8\xf0\xa8\x48\x55\x4a\x03\x7a\x12\xbd\x6e\xb5\x88\xac\xb7\x5c\x66\xdd\x2c\x4d\x0c\x0b\xc6\xd2\x9b\x17\xd0\xe9\x27\x09\x2c\x1a\x54\xf9\x89\x15\x21\x7d\x9f\xc1\x92\x95\xc2\xba\x80\xc5\x38\xa8\xce\x69\xfc\x3c\x96\x11\xd3\xfd\x49\x72\x03\xbd\x2a\xb8\xcb\xa4\x53\x03\x92\xda\x8c\xf7\xcb\xa2\x29\x18\x89\xec\x56\xe9\x92\x4b\x53\x5c\x86\x9b\xc0\xbc\x4b\xc1\x9a\x32\xab\xc4\xe4\x78\x5a\x31\xe2\x99\xa1\x1c\xe3\xc3\x3f\x43\xb9\x46\xa9\xb7\x89\xaa\x68\x3c\x17\xa1\x96\xc6\x3d\x8c\x0c\x0f\x1a\x40\x9a\x6f\x82\x67\x82\xc1\xb6\x57\xaa\x0c\xae\xca\x85\xe0\x66\x3d\x7f\x29\x46\x74\xac\xf5\xdd\xb9\xb5\x9a\x2f\x4a\xdb\xdf\x9e\x5d\x5f\x97\xbf\xed\xc3\xdb\xe6\x59\x24\xd4\x9a\x42\x55\xcb\x4c\xdd\xca\x5b\xa6\xb3\xf3\xab\xce\x85\xd7\x2b\xb2\xef\x4b\x0e\x22\x73\xe8\x37\x85\x56\xd2\xeb\xc1\xea\x2e\xc8\xa9\x63\xcb\xe6\x95\xd7\x9e\x93\xa8\xfa\xed\x7a\x52\xab\xd8\xb6\x6e\xc4\x54\xe2\x34\xe3\xc9\xcb\x9e\x07\x2b\x89\x35\x5e\xcf\xf7\x23\x2b\x4d\xaa\xa4\x65\x5c\x82\x76\xad\x6b\xc9\xdc\x26\xb5\x77\x65\xc3\x8d\xea\x9d\x49\x82\x68\xb6\x52\x38\x82\x2a\xb6\x55\x0f\xd7\x44\x0c\xa8\x99\x16\xb6\x38\x09\x40\x5e\xd8\xfb\x4b\x1e\xb4\xf2\xca\x21\xe3\x65\x1e\xbe\x58\xe6\x7f\xc2\x47\x9e\x73\x1b\x48\xc1\xd9\xae\x65\x7a\x84\xb5\xa4\x28\x4f\xde\xb9\x6c\x99\x5e\x81\xfd\xdb\xdf\x3e\x1f\xd1\xcf\x73\x7b\xcb\xb3\xa3\x55\xef\xd6\x1a\x01\x77\xbf\xd6\xf0\xec\xe5\x81\xe9\x66\x79\x71\x32\x68\xf2\x15\x79\x56\xa6\x00\xce\x4b\xa1\xd2\x9b\x30\x87\x58\xbd\x25\x3c\xd0\xf9\xfd\x40\xe3\xfa\x3a\xd8\x5b\xe4\x6c\xdd\x2a\x85\xab\x0a\xbc\x1a\x0b\xd2\x86\xee\x2a\xbd\x8c\xfd\xc0\x22\x1b\xd4\x11\xd3\xee\xfc\x34\xcc\x91\x7b\x8f\xdb\xaf\x50\xa8\x20\xdd\xe4\x1a\x52\xab\xb4\xa7\x3d\x4e\x81\x14\xca\xf0\x81\x24\x36\xdc\xb5\x70\x1a\xe4\x07\x7d\xe4\x8f\x2c\x56\x51\x1a\x0b\x3a\x6c\xf7\x06\x64\x56\x28\x2e\x6d\xaf\x21\x44\x8c\x87\x23\xee\xbe\xb8\x65\xba\x6d\x5c\xb7\x12\x77\xa3\x67\xa7\xac\xd7\xca\xd8\xbe\x55\xae\x4f\xd4\x83\x04\x65\xc3\x4d\x96\x67\x28\x07\x48\x81\x9b\x40\xb7\x61\xba\x66\xc5\x79\x69\xd7\x97\xdc\xa4\x6a\x03\xbe\xb1\xe8\x9a\xe3\x5b\x52\x73\x30\xfe\x31\xe9\x22\x34\x70\x3a\xa8\xa3\xd8\x98\x55\xce\xa5\xb1\x9f\xca\x1f\xa1\x56\xe5\xa1\x37\x3e\xc8\xca\x04\xb0\xfe\x45\xef\xf1\x17\x21\x85\xd2\x96\x89\x23\xae\x1f\x5e\x0d\xb0\x6c\x97\x6b\x57\xb5\xc4\x27\x31\x1b\xfc\x8f\x2e\x09\xcd\x2a\x2d\xea\xfc\x7d\x97\x21\xaa\xb9\x91\x61\x53\xdb\xd1\xc3\x02\x74\xf8\xaa\x2e\xc8\x66\xcf\x1e\xea\xa4\xca\xb7\xd8\x42\xea\x66\x0d\x7b\x21\x18\xef\x74\xcf\x78\xcd\x7b\xf5\xe1\x09\xc3\xd6\x2d\x7f\x64\x09\xad\x95\x55\xf2\xf8\x4b\x8f\x6c\xa2\x4d\xf8\x8a\x30\x59\x26\x4a\xdb\x5b\xa5\x07\xf8\x3d\x8e\x1e\x81\x71\x92\x81\x0d\x85\x56\xd5\xef\xdd\x64\x4f\x66\xe3\xeb\x49\x74\xf5\x61\x19\x65\xeb\xcb\x19\xe2\x41\x25\x86\xe0\x8a\xf8\x1a\xa5\xe6\xa6\x78\x63\x35\x1e\x0b\x61\xbb\xa3\x29\xfe\x7d\xab\xc7\x82\xdf\xc1\xda\x67\xc8\xbf\x97\xf5\x58\xfc\xbb\x5a\xfb\xd4\xd1\xcd\xc5\x6d\xc7\x34\xc5\x1d\xfb\xb1\xfb\x9e\x73\x3b\x65\x9f\x57\xef\x46\xe2\xee\xcb\xfd\x98\xf4\xb1\xf8\x60\xe1\x2e\x3d\x94\xa0\x7c\x71\x23\xfb\x44\x5d\x96\xf2\xe9\x9b\xde\xb6\x7b\xb6\xef\x1f\xcb\xcb\x19\xbb\xb8\x7d\xf8\x70\xfa\x09\x71\x6f\xfe\xb1\x90\x4d\x45\x42\xdb\xaf\x1f\x54\x13\x65\xa4\x26\x84\xdd\xfc\x7d\xa6\x90\xc3\x31\x79\x6d\x96\x92\x1a\x13\xb0\xc3\x54\x80\x02\x13\xe3\x04\x1e\x4b\x90\x0e\xa3\x63\x07\x06\xd6\x83\x8f\x27\x18\x54\x11\x7d\xa8\xa0\xa2\x0d\xf6\x79\x42\x8f\x14\xda\x24\x7b\xcc\xc9\x13\x49\xb4\xf1\xde\x7c\x2f\x13\x52\x04\x93\x6e\xea\x11\x4c\x7e\x27\x60\xd2\x80\xde\xf0\x14\xce\xd3\x54\x95\xd2\x7e\x53\x37\xe0\x81\x47\x84\x60\xc8\x32\xe3\x20\x47\x8d\x14\x4b\x12\xb8\x2b\xb8\xae\x8f\x17\xcf\x21\x55\xb2\x3f\x64\xe5\xb1\xec\x8c\xa1\x9f\xfe\x82\xe4\x05\x37\x7a\x70\xe3\x66\xf4\x38\x38\xaf\xf6\xa3\xfa\x7e\x70\x08\x9b\xe7\x2c\x5d\xe3\xc3\xa0\x3a\x68\xfe\x28\xd5\xe2\xde\x06\x79\xbc\x9a\x63\xfa\xc7\x73\x78\x69\x58\x71\x63\x07\x6c\x81\x5b\x90\x4c\x86\x06\xde\x0d\x3a\x3e\xd6\x7a\xeb\x26\xda\x7c\x6f\xe4\xe2\x70\xe4\x51\xb5\x44\x2f\x82\x1c\x78\x43\x77\x23\x73\xb6\x1a\x70\xd6\x18\xee\xab\x67\xc1\xdf\x9f\xc0\x51\x50\xa5\x42\xf7\xbb\x5e\xd5\xfe\xe0\x64\xe7\x38\x6b\x05\xec\x7c\x12\x7a\xc2\xd3\xa4\x4c\xc0\x87\x2f\x47\x18\x4c\x2b\x66\xe1\x96\x85\x1b\xcb\x42\x2b\x0b\x69\x05\x04\x2e\x55\xce\x78\xf8\x0e\xff\x2b\x52\x4c\x63\xc4\x3b\xc9\x16\xa2\x1f\x62\x20\x1a\x6b\x95\x66\x2b\x18\x94\x36\xe2\x81\xc6\xd5\x10\x7b\x62\xee\x8d\x85\xf0\x38\xf7\x66\xde\x99\x2c\x93\xc0\x83\x76\x77\x23\xa3\x56\x5d\xba\x9f\xd6\xed\x22\x8f\xe3\xde\xd5\xf7\xc9\x6c\x6a\xc5\xd3\xba\xf1\xb4\xee\x08\x07\x6e\x47\x48\x23\xe2\x1e\x49\x8d\x6d\x52\x41\x51\x31\x47\xdf\x74\x7f\x31\x53\xd1\x60\xfb\xbb\x4b\xa2\xce\x4d\x36\x85\x32\x6c\x4c\xb1\x06\x0d\x47\x8b\xc2\xd8\x4e\x94\x82\xa7\xf7\xc1\xa1\x14\x7b\x74\x46\x10\xba\x6b\x6f\x6b\x84\xb8\x8e\x9e\x0d\x2a\x47\x57\xf5\x3e\x5a\x33\xd1\x11\xed\xd1\x3f\x90\x1e\x80\xf4\xfe\x07\xce\x54\x6a\x2b\xe8\x5e\xb5\x3b\x25\xc1\xf4\xaa\x53\x67\x1c\x33\x21\x4a\x93\xbb\x2d\x2f\xc8\x0d\xb1\x32\xbf\xa1\x70\x9b\x09\x84\x91\xd8\x30\x51\x8e\x40\xe1\xbd\x56\xbd\x38\x90\x1c\x0d\xf3\x0b\xdc\x8f\x78\xb4\x17\xb5\x8d\x40\xf0\x7e\xbe\x08\xcf\x33\xd6\x8d\xe9\x73\xf6\x23\x3d\xd8\xf1\x0c\xff\xf3\x9e\xe1\x8f\xc7\xe0\x93\xef\xe5\x18\x7c\x8b\x17\xa3\xd1\x73\x12\x3d\x39\xa3\xe7\x7d\xc9\xcd\xcd\xac\x16\xa9\x03\x62\xf4\x52\x76\x41\x8c\x42\xab\x1c\xec\x1a\xca\xb0\xa3\x72\x77\x85\xd2\xb6\xdf\x6f\x8a\x51\xbf\x3e\x48\xd5\x16\x44\xb4\x00\x52\x8b\x30\x7b\xc5\x3d\x90\x8b\xc0\x0c\x7e\xc8\x8d\x3e\x44\x3c\xd0\x2c\x94\xa2\x1b\xaa\xb5\x85\x16\xac\x41\x82\x6e\x61\x55\x24\xb4\x88\x90\xa0\x00\x25\x5c\x17\x0e\xa8\x00\x6f\xf5\x9e\x56\x82\xb1\x7e\x6d\xa1\x45\x59\x61\xe3\x3d\xc8\xc1\x55\xb4\x70\x52\xba\x2e\x84\x84\x92\x06\xf4\x58\x40\x18\x69\x40\x00\x23\xad\xc7\x68\x01\xa4\xe4\xa0\xb8\x90\x68\x4a\x7a\xff\x05\x46\x52\x06\x74\x21\x39\x8a\x32\x28\xb4\x91\x1a\x41\x39\xb9\x96\x90\x62\x27\x89\x4a\x82\x87\xac\x6d\x89\xc6\x1e\x5d\xc9\x8b\x33\xf6\xe8\x97\xb1\x00\xbd\x17\x1a\x13\x6b\xc4\x40\xc4\x0a\xf2\xba\xf8\xc1\x6e\x33\xe1\x36\x99\xf6\x6e\xed\xe8\x61\x09\x39\x56\x04\xcf\x79\x7f\x5e\x8b\xb6\xd0\xf2\x1b\x3d\x6d\x0e\x4a\xdf\x49\xdd\x0f\xe6\xe5\x70\x8c\x7a\xcd\x40\x5a\x6a\x6e\xef\x2f\x94\xb4\x70\xe7\x54\x25\x6c\xbf\x32\x21\xd4\xed\x95\xe6\x1b\x2e\x60\x05\xef\x4c\xca\x04\x73\xe5\xe3\x79\xca\x2f\xc6\x7c\xa4\xac\x60\x0b\x2e\x38\x46\xb2\x14\xcb\xcd\x32\x94\x25\x42\x87\x8c\x93\xed\x2e\x3e\x80\x38\x49\x32\xad\x3c\x07\x2f\x4f\x87\x5b\xf4\x18\x2b\x5a\xb5\xf1\x76\x04\x5e\x5b\x0a\xad\xd2\x4f\xaa\xec\x0f\x8b\x7c\x4a\x12\xe5\x66\x6b\x36\x59\xbf\x2a\x55\xdf\x2b\xe0\x0e\x24\xa1\x73\xac\x4b\x79\x6e\x7e\x76\xc5\xa2\xb6\x85\x12\x98\x8c\x0f\x4b\xae\xeb\xff\xac\x64\xd5\xbe\x91\x5b\x75\xed\x08\x6c\x6b\xcb\x34\x8d\x32\xf0\x91\xcb\xf2\xee\x8b\x3b\x9d\x5e\x5b\x28\x66\x43\xc0\x06\x50\x30\x89\x34\xbe\xb4\xea\xbf\xb0\x22\x98\xa8\x75\x6c\x25\x07\x13\x75\x05\x2b\x06\x12\x45\x1b\x8c\x5b\x2e\x33\x75\x6b\x26\xe8\xd5\x55\x6e\xd8\x85\x86\x0c\xa4\xe5\x4c\xcc\xf7\x2e\xd3\x72\x33\x8e\x14\xdc\x61\x15\xd8\xd5\x24\x4d\x93\xda\x81\x37\x01\xf5\xf1\xb0\x88\xf7\x95\xfa\x5e\xc0\x4d\x70\xbe\x9c\xa7\x57\x14\x1e\x96\xe7\x4f\xa4\x29\x07\xc6\x9d\xb8\xd1\xff\x18\x21\x77\xee\x08\x7a\xd7\x62\xc0\x37\xd2\xdc\xe0\xff\x18\x49\x4d\xdd\xe0\xfe\xb9\x39\xf2\x85\x6a\xfa\x40\xbb\x4f\xfe\x54\x90\xee\x9f\xe6\x31\xa0\x1c\xb5\x05\xe3\x06\xe1\xcf\xbb\x03\xe3\x03\xd9\xcf\xc9\x8d\x57\x87\xfd\xe0\xd9\xdf\x8b\x5e\xb0\x8c\x8e\x40\xc4\x81\x63\x3f\x47\x7e\x30\x8c\xc1\x8b\x7e\x9c\x88\x01\xbd\x48\x6e\x5d\x20\x77\x1c\x66\x71\x60\x16\x33\xdc\xbc\xe0\x15\x17\x34\xec\x01\xab\x28\x22\x3e\x70\x8a\x22\xe2\x03\xa3\x63\x4c\x16\x38\xd0\x89\x91\x3e\x0d\x64\xa2\x04\x40\x07\x95\xb8\x1e\xc6\x82\xc8\x49\xe7\xbe\xde\x47\x05\x2b\x0d\x25\x48\xb3\x50\xd9\x37\xc8\x0b\xc1\x0e\x0f\x8a\xba\xfa\x2d\x55\xd2\x6a\x25\x44\x58\x06\x6f\x26\xa5\xb2\xec\xa4\xd2\xb9\x3b\x1f\x77\xdd\x7e\xfc\xbd\xb6\x75\xff\xb6\x64\x74\x3b\x97\xf5\x45\xe9\xbd\x9b\x3d\xa8\x68\x79\x95\xc1\xb9\x87\x0e\x96\x56\xf3\x1e\x2c\x41\x6b\xc8\x2e\xcb\x4a\x5a\xf3\x74\x0d\x59\x29\xb8\x5c\x7d\x58\x49\xb5\xfd\xf9\xdd\x1d\xa4\x25\xc6\x31\x8b\xf4\x20\xd2\xf6\xc8\x1a\x1e\x71\x87\xfb\xe9\xd4\x93\xfa\xee\x6d\x9b\xae\xdf\xdd\x15\xba\xc9\x40\x4c\x48\x93\x43\x70\x99\x86\x32\xd7\x14\xd2\x26\x61\x53\x02\x76\xf2\x9a\x52\x71\xc8\x3a\xe2\xd2\x27\xab\xb0\x0e\xd7\x21\x0a\x24\x40\xf6\x4d\x09\xe6\x92\xe6\x74\x7f\x2c\xd4\x6c\x40\x09\x69\x03\xb3\x7d\xbf\xed\x34\xc2\x47\xc4\xbd\xf0\xdd\x8f\x28\x32\xa8\x47\xd7\xc3\x65\xff\x71\x60\xc5\x81\xd5\xfb\x69\x1c\x58\x14\x19\x10\x2b\xb9\x05\xbe\x5a\x7b\xf7\x68\x9a\x42\x4f\x04\x85\xdf\x5c\x49\x48\x1d\x37\xdb\x99\xfd\x11\x2f\x37\x8d\xf4\xbe\x48\x10\x1d\xb6\x57\xda\x26\x8d\x83\xa3\x28\xc6\xac\x82\x84\x73\x10\xf5\xa5\x2a\xdf\x40\xe3\x46\x2e\x61\x88\x47\x38\xd5\x94\x68\xf5\x3b\x4b\xb4\xfa\x6d\x89\x70\x2a\x0e\xac\xae\x12\x07\xd6\xee\xfb\xa7\x3a\xb0\x88\x95\xe0\xc9\x63\xc5\x3a\x3b\x9c\xc9\x51\xd8\x64\x9c\xe8\xbe\x42\x65\xaf\xce\xaf\xf4\xd8\xe4\x4a\xda\x53\xa1\xa1\x3a\x96\xa0\xed\x56\xfc\xd8\x0a\x33\xc0\xe1\xd0\x2b\x09\xb5\x54\xa1\x33\x45\x12\x36\x5b\x24\xc3\x4c\x63\xf8\xac\x31\xb8\xe2\xb0\xd9\x23\x09\x9f\x41\x92\xa1\x1c\x87\xce\x24\x49\xe0\x6c\x92\x04\xcc\x28\x49\xe8\xac\x92\x84\xce\x2c\x49\xb0\x5c\xea\xd1\xf9\xd1\x19\x5b\xd4\x5d\xc2\x02\xc5\xbb\x58\x0e\xd0\x84\x01\xd3\x2f\xe9\xa3\x6d\x90\xd3\x94\xb8\x36\x48\x0a\xf4\xde\xb6\xaa\x50\x42\xad\xee\x7f\x99\xf4\x6c\x0f\xf5\x50\xcc\x0e\x57\xd1\xc5\xd4\x96\xd9\x3e\x10\x78\x45\x7e\xa6\x49\x70\x55\x00\xe0\x89\x3e\xa6\xa6\xc4\xa5\x70\x67\x89\x4b\xe1\xb6\x3c\xa7\x8f\x89\x0a\x54\x86\x82\x94\x01\x53\x33\x41\x20\xc4\x0f\xa8\xa0\x84\xa4\xe1\xe4\x16\xd3\x7a\x92\x0c\x42\x68\x67\x05\x08\x33\x2c\x05\x78\x8c\x3e\x69\xa2\xfd\x1f\xd2\xf2\xe8\x03\x41\x94\xe8\x03\x19\x87\xd1\xa6\x44\x1f\x08\xaa\x44\x1f\x88\xef\x9b\xe8\x03\x41\xb2\x1c\x7d\x20\xd1\x07\x12\x7d\x20\xbb\x25\xfa\x40\xa2\x0f\x64\x64\xe6\x9a\x12\x7d\x20\x07\x25\xfa\x40\x76\xdf\x8f\x3e\x90\x0e\x36\xa3\x0f\xc4\xfb\x41\xf4\x81\x3c\x79\x75\x04\x1f\x88\xf7\x15\x57\xc6\xdb\xe9\xef\x83\x73\x64\xb8\x1d\xe5\x3e\x1f\x7f\x96\x3c\xa4\x66\x20\xb2\xd9\x52\x28\xf9\xb3\xd8\x92\xb2\x9e\xd3\xb2\xd7\xd2\xa6\x7d\xf4\x64\x4f\x1c\xf3\xf8\x04\x86\x44\xc2\xb4\xc4\x85\xfe\x23\xdd\xbb\x85\x62\x1a\x30\x93\x26\xc1\x24\xe0\x33\xd2\xd2\xfa\x97\x9a\x89\x96\xd8\x1b\xc4\x0c\xb4\x93\x19\x6a\x7c\xd6\x59\x42\x9f\xd0\xb3\xcd\x92\x13\x53\x53\xb3\xcc\x12\xbb\x87\x94\x5d\x96\x48\x9b\x96\x55\x76\xb2\x9e\x47\x67\x92\x25\x74\x3c\x2d\x83\x6c\x34\xb8\x07\xc4\x4f\xde\xe0\xa2\x5e\xc4\xdc\x95\xe7\xcc\x06\x8b\x46\x70\xfd\x10\xaa\xbe\xd1\xf5\xaa\x14\x62\x5e\xeb\x64\x28\x98\x7b\x56\x3c\x35\x46\xb3\x25\xb7\x17\xad\x79\x9c\xb6\xd1\xbe\x4b\x21\x90\x6b\x23\xf4\xa8\xc2\x81\xff\x54\xe5\x39\x93\x9e\x81\x71\x0c\xc6\x3c\xb7\x56\x20\x99\x22\x1d\x96\x9b\x22\x6b\x1e\xf2\xfe\x8a\x10\xaa\xb8\x3b\x2c\xe8\xfe\xb9\xa0\x7b\x2c\xc2\xdc\x80\x44\x17\x60\x90\x07\x84\x96\xe2\x3c\xb0\x12\x7a\x9a\x73\xea\x14\xd6\x14\xaa\xe3\x8d\xe2\x74\x23\xbb\x8a\x68\xb7\x5b\x84\x69\x48\xc8\x0d\x17\x81\x7d\x18\x70\xcb\x45\x50\x4d\xf4\x3e\xa4\xdd\x75\x11\xd0\x93\x61\xf7\x5d\x84\xf5\x68\xe0\x9d\x17\x81\x9d\x4a\xbe\xf7\x22\xb0\x1e\xfa\xdd\x17\xcf\xa4\x3b\xa4\x1b\x30\x02\x54\x87\x7e\x0b\x46\x9c\x2a\x5e\xdb\x54\x41\xf2\x85\xa0\x4f\x44\xfa\xee\xc7\x20\x2f\xd3\x10\x90\xd4\x8f\xb9\x46\x87\xa5\x5b\x38\x86\x1c\x60\xd4\xc1\x45\x51\x7a\xb2\xc2\x53\x95\x9d\xaa\xe8\x24\x45\x2c\x34\x2c\xf9\xdd\xe8\x60\xdc\x7b\xd5\xf9\x53\x1e\x62\xef\x0c\x7a\x15\x37\x54\x6b\x77\xc6\x28\x1b\x2d\x5b\xc7\x48\x73\x67\xf9\x28\x34\x05\x5f\x42\x7a\x9f\xfa\x32\xf3\xe3\x75\xa5\x50\xc6\xce\x2d\x73\x5f\xe2\x43\x25\x9a\xd4\xb7\x61\xe2\x12\xd6\x87\x5d\x7e\x86\x70\x3d\xec\x96\xd3\x0c\x66\x23\xce\x85\x6b\x6b\x8b\x9f\x01\x19\x05\x46\x17\xea\x5a\x19\x24\xed\x24\x4c\x40\x15\xff\xff\x05\x2c\x73\xb8\xcb\x0e\xcb\xb3\xc5\x14\x51\x11\x5c\x32\x38\xc6\xe7\x99\x6a\x0b\x8b\xb8\x41\x60\xa4\xa7\x1f\xd4\x4d\x22\x8f\xb0\xc9\xe3\x6d\x8a\x69\xef\x9e\xf4\x5f\x80\xf6\xb4\x30\x79\xff\x05\xbd\xd8\xa9\xe3\x3b\x48\xb1\x99\xfb\xdf\x11\x95\xe5\x6e\x76\x53\x2e\x40\x4b\xb0\x60\x66\x5c\xda\x99\xd2\xb3\x86\xc4\x59\x62\x35\xba\x7b\x4d\xba\x86\x49\x2f\x07\xa4\x46\xe7\x56\x7d\x34\x85\x45\xb6\x69\x31\x57\xe9\xcd\x0b\xb6\xc9\x51\x7b\xf7\xca\x69\xa8\x16\xe1\xe5\x42\xc3\xdc\x62\x6e\x62\x8b\xf0\x0d\xf5\x51\x84\x6f\x7d\x15\x44\xf8\xd6\x96\x08\xdf\x22\x7c\xc3\x94\x97\x38\x01\x46\xf8\xd6\x57\x4e\xd0\x26\x47\xed\xdd\x2b\xa7\xa1\x5a\xe3\x06\x79\x25\x89\xe0\x1b\x90\x60\xcc\x95\x56\x8b\xd1\x3c\x7f\x38\x84\x47\x8d\x17\x25\x20\xbb\xd3\x39\xd0\x41\x89\x82\x66\x5c\x94\x1a\xbe\xad\x35\x98\xb5\x12\x88\xa6\xd2\xce\x63\x52\x86\x1c\x1a\x51\xd2\x3a\x11\x6f\xb5\x88\x9d\x42\x46\x90\x24\x0d\x09\x41\x8e\xcf\xb2\x6d\x4b\x46\x8b\xcf\xb2\xbb\x4f\x40\x88\x34\x74\x18\x78\x6e\x0c\x8b\x0a\xf1\x88\x90\x28\x46\xfc\x5c\x4a\x98\x47\x43\xe6\xd0\x80\xf9\x73\x84\xb9\x93\x82\xfa\x26\x0b\x95\x47\x4d\xc7\x04\x05\xe3\x92\x5b\xce\xc4\x25\x08\x76\x3f\x87\x54\x49\x4c\x76\xf3\xe9\x0c\x76\x01\x9a\xab\xec\x04\x18\x31\x65\x9a\x82\x31\x27\x31\x8b\x11\x50\xf8\x89\xcc\x63\xaf\xda\x52\x1c\x73\x38\x5b\x9e\x83\x2a\xed\xd1\x07\x10\x92\xe5\xd1\x0e\x7f\x56\x72\x1c\xe3\x04\x00\x31\x78\xa8\x09\xb6\xbc\x42\x6a\x3b\x35\xef\x08\x4d\xdd\xab\xc1\xfc\xe1\x6a\xf4\x08\x9c\x8a\xec\x69\x34\x70\x92\x33\x04\x85\x56\x56\xa5\x0a\x15\xa6\x43\x20\x8c\x0f\xb5\x7b\xa2\x45\xbe\xd1\x3d\x6e\x20\x8f\x06\x96\xf1\xb8\x6a\x8e\xab\xe6\xbd\x12\x57\xcd\xbb\x25\xae\x9a\xe3\xaa\xb9\x83\x6e\xc4\xc2\x71\xd5\x1c\x57\xcd\x7b\x25\xae\x9a\x3b\xd8\x8d\x96\x22\xae\x9a\x47\x5d\x35\xb7\xc7\xce\xbc\x79\xb0\xb1\x5a\x2d\x78\xce\x7d\xcb\xe7\x64\x40\x96\x35\x92\x36\x11\x0f\x34\x81\x79\x79\x9c\x23\x5f\x34\x90\x96\x9a\xdb\xfb\x0b\x25\x2d\xdc\x79\x4c\x03\xbe\xb7\x99\x10\xea\xf6\x4a\xf3\x0d\x17\xb0\x82\x77\x26\x65\x82\x61\x12\x76\xd2\xce\xa8\xa4\xac\x60\x0b\x2e\x38\x4e\xd2\xc4\x84\x48\xd9\x8b\x5b\x0a\x26\x49\xa6\x31\x31\x88\xc9\x49\x71\x4d\x8a\xb2\x7c\x50\x28\x44\xd7\x50\xf4\xa8\xd0\x2a\xfd\xa4\x4a\x89\x98\x19\x49\xfe\x19\x96\x7d\x91\xe2\xfe\xab\x52\xf6\x3d\x17\x60\xee\x8d\x05\x44\xc6\x07\x0a\xe7\xba\x94\xe7\xe6\x67\xad\x4a\x44\xb7\xef\xcc\x28\x3f\xfd\x65\x54\x18\x54\x73\xf1\x59\xc9\xaa\xa5\x13\xb4\xef\xda\x00\xe2\x00\xf8\x74\xcd\x33\xf0\x91\xcb\xf2\xee\x4b\x7d\xda\x6e\xfc\x74\xc2\xb0\x01\x52\xd2\x24\x7c\xe6\x2d\xe5\x3b\xa1\x16\x48\xb8\x7e\x7d\x0a\xc2\x25\xaa\xa7\xc9\x84\x09\x26\xe6\x96\xcb\x4c\xdd\x9a\x89\xfa\x7a\x95\x1b\x76\xa1\x21\x03\x59\x2d\xed\xe6\x05\x36\xba\x9b\x28\xc6\xc3\x6a\x26\xcb\x1c\xb7\x1d\xa0\x13\xd5\x30\x3a\xde\xb1\x4c\xdb\xb2\x88\xde\xe8\xa3\x4f\xe6\xd1\x1b\x7d\xc0\x6c\xf4\x46\xbb\x4b\xf4\x46\x63\x3e\x88\xde\xe8\xfd\x6f\xa2\x37\xda\x55\x7b\xf4\x46\x0f\x60\x24\x7a\xa3\x3b\xd8\x8d\x96\x22\x7a\xa3\x47\xf5\x46\x1b\x9b\x71\x8f\xef\x10\xeb\x55\xa8\x49\x7d\x91\xbe\x4c\x6f\x58\x72\x16\x74\xce\x65\xed\xdb\xfc\x04\xc6\xb0\x15\xf8\x33\x10\x22\x55\xad\x83\xf4\x78\x29\x6c\xac\xfb\x1e\x4c\xbc\x00\x36\x4a\x94\x39\x5c\xc2\x86\x7b\x37\x0b\x46\x8f\x8e\xcb\xea\x5a\xb1\x29\x1f\x49\x23\x7c\x82\x40\x30\x7c\xbc\xd6\x63\xbb\xbc\xaf\x3e\x7f\x16\xb5\xa6\xc3\x6b\x77\xe9\x73\xf7\x77\x5e\x55\x3a\x49\x77\x37\x94\xb5\x2a\xd8\x0a\xb9\x4f\x71\x7c\x7d\x7a\xf4\x30\xe3\x09\x63\x73\x7f\x99\x72\x31\x89\x9c\x1f\xe8\xbe\xbb\x2b\x50\x7e\xbe\x49\x46\xd7\x56\x8b\x4e\x70\x70\xdd\x2a\x7d\xc3\xe5\xea\x92\x7b\xc4\x83\x12\xcc\x29\xe4\xa5\xf7\xa6\x4a\xc3\x8c\x7f\x54\x7a\x34\xac\x21\xc1\x78\xeb\x68\x21\xda\x68\x4f\x1d\xc1\x0b\x13\xe2\x91\x47\xad\xfc\xd1\x0a\x8b\xf4\x89\x51\x44\x85\x5d\x47\xd0\x82\xc7\x69\xbe\x30\x42\x1f\xd0\xfd\x60\x34\x2f\x58\x80\x77\x8a\xe8\x01\x23\xd7\x40\x3d\xb9\x8d\xf6\x7d\x51\x3c\x5f\x44\xbf\x17\xc5\xeb\x85\xf5\x79\xd1\xe2\xfb\x91\xab\x58\xf4\x1a\x96\xbe\x82\x25\xaf\x5f\x07\xaf\x5e\xf1\x5e\xae\x49\x26\x71\xc4\x82\x18\x3f\x35\x63\xfd\x26\x47\xb7\x75\xaf\x50\xd3\x8e\xa1\x12\xa8\xd7\x10\x29\xbf\x22\x24\x89\x90\x24\x42\x92\x81\x35\x44\x48\xb2\x4b\x33\x4e\x14\xfd\x25\x42\x12\x77\x89\x90\xe4\xa1\x7c\x9f\x90\xc4\xfb\x0a\x2a\x81\x15\x46\xa1\x7c\x78\x05\xab\x94\x48\x9c\x82\x9c\x1f\x09\x4a\x80\xb3\xcf\xa8\xae\xa1\x84\x31\x61\x77\xd1\x70\x03\x00\x81\x86\xb0\x1d\x81\xb1\x0c\x68\xf1\x12\xd0\x0f\xb2\x67\x69\xa8\x67\xb2\x1b\x4e\x09\x48\x67\xb2\xb8\x0e\x14\xba\xc1\x22\x1b\xca\x86\x31\x12\xd1\x60\xd0\x0c\x5a\x38\x98\xb9\x05\x35\xaf\xd0\xe6\x14\xd2\x7c\x32\x68\x2e\xc1\x21\x16\x24\x37\x18\x35\xf2\x4e\x49\x28\x95\x20\x06\x03\x8d\x6b\xf6\xd0\xa1\x3f\xe3\x56\x4b\x09\xf4\x19\xb7\x66\x14\x16\x3c\x8a\xa5\xff\xce\xc7\xe7\xf3\x0d\x28\x7c\x38\xce\x98\xaa\xe5\x65\x4d\xaa\x0c\xe6\x20\x20\xb5\xfd\x37\x30\xd2\x4e\x3d\x22\x3a\xce\xcb\x55\xa1\xb9\xd2\xbc\x3f\x7e\x05\x23\x22\xbf\x78\xda\x5a\x2e\x04\x33\xc6\x75\xb8\xc1\xdb\x24\x5c\x0a\x9c\x88\xbb\xf7\xde\x8a\xb8\x7b\x97\xa9\x88\xbb\x23\xee\x76\xbd\x17\x71\x77\xc4\xdd\xfb\x25\xe2\xee\x41\x35\x47\xdc\xdd\xf3\x76\xc4\xdd\xbe\x6a\x07\xe2\x6e\x6f\xf2\x15\x8c\xd6\xf9\x13\xae\xd0\x13\x96\x60\x83\xcb\x31\xb2\xc7\x24\x56\x39\x26\x87\xde\x57\xaa\x49\x24\x2b\x85\xfb\xe8\xb3\x97\x1f\x64\x02\x16\x4c\x8f\x2f\xfd\x99\x20\xb0\x49\x12\x70\x66\x01\x97\x7d\x62\x82\x3a\x11\xb9\x26\x70\xf1\xce\xa8\xfc\x12\xe3\x36\x00\x9f\x4d\x02\x3b\xb7\xa0\x32\x48\xa0\x4d\x37\x26\x6b\x04\x9a\x58\xfd\xe2\x58\xc4\x30\xd9\x21\xc6\xb4\x50\xa6\x2c\x0a\x01\x39\x48\xcb\x44\xad\xe5\xce\x7e\x40\xac\xa9\xf0\x29\x4a\xb0\xd3\x32\x66\x79\x60\xee\x4d\x6a\xc5\x50\xde\xf1\x6b\x41\xdc\x3a\x90\x00\x25\x90\xeb\x3f\xbc\x86\xa3\xd6\x7d\x88\x35\x1f\x66\xbd\x47\xda\xdf\x75\x77\x24\x3e\x37\x09\xb6\xb3\xe8\xf9\x48\xd0\x42\x0e\xcb\x41\x82\xef\x43\x4a\xde\x91\xe7\x04\x05\xa0\x37\x3c\x85\xf3\x34\x55\xa5\xb4\x83\x90\x81\x55\x02\x34\x73\xf6\xb5\x67\xdc\xe2\xd4\x00\x96\x4b\x48\x3d\xeb\x09\xa4\x04\x6f\x60\x9c\xd3\x89\x15\xdb\xcc\xe1\x74\x26\x11\x7b\x94\x23\xea\xb8\xeb\xf8\x46\x1a\x61\xbf\x50\x4d\x19\x7c\x1c\xc7\x41\xa0\xf7\x91\x86\x42\xf0\x94\x1d\x08\xcd\xb5\x20\xea\x17\xcc\xc3\xf0\xf8\x06\x79\x21\x98\x3d\x10\x8a\x4b\x61\x73\xb0\x2c\x63\x96\x75\x09\xd2\xa7\xe8\x4c\x4a\x65\xdd\x43\xe9\xb9\xf7\x31\x9c\x8f\x4d\x8f\x25\xf6\xb5\x33\x15\xa5\xb1\xa0\xfb\xaf\x68\xf0\xf2\x0d\x77\x16\xb4\x64\xe2\xc3\x55\xa8\xd1\x41\x8b\xa6\x7f\xb2\x6b\x99\xf8\xa6\xd9\x72\xc9\x53\xf7\xb1\x67\x6f\x7d\x6b\x60\xc2\xae\x2f\xd6\x90\xde\x7c\x56\x19\xb8\x2e\x9a\x18\x67\xeb\x48\x28\x96\xfd\x95\x09\x26\xd3\x41\x5d\xb1\x4b\x66\x5e\xfb\x03\xbe\x32\xb9\xea\xd7\xca\xe9\xfb\xc5\x79\x03\xca\x28\x73\xd1\x68\x97\xb5\x48\x4f\x4f\x37\x05\x9f\xd6\x00\x6b\xeb\xfd\xae\xb9\xb1\xeb\xc4\x9c\xf2\x74\xfa\xca\x06\x4f\x2b\x95\x59\x37\x86\x2b\x79\xbe\x5c\x72\xd9\xf8\x32\x96\x7c\x35\xc4\x95\x91\x0a\x0e\xd2\x73\xd5\x0c\x16\xe4\xd2\x72\x5d\x50\x32\x5d\xd0\x56\x69\xc3\x80\xa5\x6b\x25\xed\x19\x13\x21\xd3\xbe\xb1\x9a\x59\x58\x1d\x58\x5d\x97\xd0\xb5\x12\x82\xcb\xd5\x75\x91\x75\x4c\xed\xbe\x8f\xab\x92\xb3\xbb\x79\xa9\x57\xbd\xed\x74\xfa\xb4\x71\xbe\x6c\x94\x0f\x3b\xc8\x77\x9d\xb3\xbb\x6b\xc9\x36\x8c\x0b\xb6\xe8\xf7\xa0\x9c\x70\x13\x9c\x2a\xd8\xa7\x7e\x0e\x56\x7a\xe9\xed\x24\x36\xe9\x9e\xda\x7b\x89\x6e\x40\x9b\x8e\xec\x0c\x3d\xef\x77\x59\xc6\x59\x4b\xe3\x8d\x87\x51\x63\x99\x2d\x9f\xe8\x69\x9f\xf6\xaa\x45\x85\x6a\x21\xfb\x19\xe4\xc3\x3a\xc3\x81\x95\x0f\x96\x14\xfd\x3d\x5e\xac\x99\x39\x90\x79\xaf\x68\x34\x30\x83\x96\x4c\x47\x8b\xf7\x7e\x6a\x25\x9d\x6c\x7e\x60\xa2\x58\xb3\x1f\x1e\x7f\xab\x9b\xdf\x78\x47\x9e\x3c\x6e\xd0\x3d\x64\x3b\x0a\x66\xac\xd2\x6c\x05\x0f\xbf\xfc\x3d\x00\x00\xff\xff\xe4\x99\x58\x25\x8b\x5a\x01\x00") +var _kubedbCom_memcachedsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\xe4\xb8\x95\x20\x0c\x7f\xf7\xaf\x40\x94\x1d\xa1\xaa\x37\x94\xa9\x6e\xdb\xe3\xf5\xd6\x4e\xcc\x86\x2c\xa9\x7b\xf4\xba\x2e\xda\x52\x75\xf7\x4e\x6c\xec\xd3\x81\x24\x91\x99\x18\x91\x00\x4d\x80\x52\xa5\xf7\xd9\xff\xfe\x04\x0e\x00\x5e\x32\x49\xe2\x80\xca\xac\xaa\xee\x26\xfc\xc1\x5d\x29\xf2\x10\x97\x83\x73\xbf\xd0\x82\xff\xc8\x4a\xc5\xa5\x78\x4d\x68\xc1\xd9\x27\xcd\x84\xf9\x97\x5a\x3e\xfc\x55\x2d\xb9\xbc\x78\xfc\x76\xc5\x34\xfd\xf6\x77\x0f\x5c\xa4\xaf\xc9\x55\xa5\xb4\xcc\x3f\x30\x25\xab\x32\x61\xd7\x6c\xcd\x05\xd7\x5c\x8a\xdf\xe5\x4c\xd3\x94\x6a\xfa\xfa\x77\x84\x24\x25\xa3\xe6\xc7\x8f\x3c\x67\x4a\xd3\xbc\x78\x4d\x44\x95\x65\xbf\x23\x24\xa3\x2b\x96\x29\xf3\x0c\x21\xb4\x28\x5e\x93\x87\x6a\xc5\xd2\xd5\xef\x08\x11\x34\x67\xaf\x49\xce\xf2\x84\x26\x5b\x96\xaa\xa5\xfd\xcb\x32\x91\xf9\xef\x54\xc1\x12\xf3\x0e\x4d\x53\xf8\x18\xcd\xee\x4a\x2e\x34\x2b\xaf\x64\x56\xe5\x02\xe0\x2d\xc8\xff\xff\xfe\xfd\xbb\x3b\xaa\xb7\xaf\xc9\xd2\xbc\xb0\x7c\xb4\xcb\x82\x6f\x59\xe8\x3f\xb6\x7e\xd1\xbb\x82\xbd\x26\x4a\x97\x5c\x6c\x0e\x5e\xd7\x54\x57\x6a\x59\x6c\xa9\x62\xad\xd7\xef\xe1\xe7\xe0\xdb\x7e\x27\x96\x07\xdb\xd0\x82\x75\xb9\x61\x2d\x40\x29\xd5\xe6\x9f\x9b\x52\x56\xf5\x9e\xc0\xca\xed\xe3\x6e\xc3\x12\xaa\xd9\x46\x96\xdc\xff\x7b\x61\xde\xa3\x4a\xcb\x92\xb9\x7f\xd7\xbb\x69\xfe\x41\x8b\x42\x25\x32\xf5\x7f\xa3\x70\x00\x84\xd8\x73\x7c\xeb\x37\x1a\x7e\xcb\xb8\xd2\x7f\xef\xfe\xfe\x86\x2b\x0d\x7f\x2b\xb2\xaa\xa4\x59\xfb\x68\xe0\x67\xb5\x95\xa5\x7e\xd7\x4c\x6e\x41\xf2\xc4\xfe\x81\x8b\x4d\x95\xd1\xb2\xf5\xc6\xef\x08\x29\x4a\xa6\x58\xf9\xc8\x7e\x10\x0f\x42\x3e\x89\xef\x38\xcb\x52\xf5\x9a\xac\x69\x06\x5b\xac\x12\x69\xf6\x01\xe0\x15\x34\x81\x57\x54\xb5\x2a\x1d\x9e\xb9\x6f\xd8\x73\x79\x4d\xfe\xcf\xff\xfd\x1d\x21\x8f\x34\xe3\x29\xec\xaf\xfd\xa3\x2c\x98\xb8\xbc\xbb\xfd\xf1\x4f\xf7\xc9\x96\xe5\xd4\xfe\x68\x3e\x2c\x0b\x56\xea\x7a\xd3\x2c\xe6\xd5\x38\x5f\xff\x46\x48\xca\x54\x52\xf2\x02\x20\x92\x33\x03\xca\x3e\x43\x52\x83\xe5\x4c\x11\xbd\x65\xc4\x21\x15\x4b\x89\x82\xcf\x10\xb9\x26\x7a\xcb\x15\x29\x19\x2c\x51\x68\x98\x52\x0b\x2c\x31\x8f\x50\x41\xe4\xea\x3f\x59\xa2\x97\xe4\xde\x6c\x43\xa9\xcc\x06\x56\x59\x4a\x12\x29\x1e\x59\xa9\x49\xc9\x12\xb9\x11\xfc\x9f\x35\x64\x45\xb4\x84\x4f\x66\x54\x33\x77\x16\x7e\x00\xf2\x0b\x9a\x99\x4d\xa8\xd8\x39\xa1\x22\x25\x39\xdd\x91\x92\x99\x6f\x90\x4a\xb4\xa0\xc1\x23\x6a\x49\xde\xca\x92\x11\x2e\xd6\xf2\x35\xd9\x6a\x5d\xa8\xd7\x17\x17\x1b\xae\xfd\x2d\x4f\x64\x9e\x57\x82\xeb\xdd\x45\x22\x85\x2e\xf9\xaa\xd2\xb2\x54\x17\x29\x7b\x64\xd9\x85\xe2\x9b\x05\x2d\x93\x2d\xd7\x2c\xd1\x55\xc9\x2e\x68\xc1\x17\x30\x71\xa1\x81\x54\xe4\xe9\xef\xeb\xa3\x3a\x6b\xcd\x74\xef\x9a\xd8\x01\x08\x38\xb8\xef\x06\x0d\x09\x57\x84\xba\xd7\xec\xfc\x9b\xed\x35\x3f\x99\x5d\xf9\x70\x73\xff\x91\xf8\x8f\xc2\x11\x74\xf7\x1c\x76\xbb\x79\x4d\x35\x1b\x6f\x36\x8a\x8b\x35\x2b\xed\xc1\xad\x4b\x99\x03\x44\x26\xd2\x42\x72\xa1\xe1\x1f\x49\xc6\x99\xe8\x6e\xba\xaa\x56\x39\xd7\xe6\xa4\xff\x51\x31\xa5\xcd\xf9\x2c\xc9\x15\x15\x42\x6a\xb2\x62\xa4\x2a\xcc\x2d\x4e\x97\xe4\x56\x90\x2b\x9a\xb3\xec\x8a\x2a\x76\xf2\x6d\x37\x3b\xac\x16\x66\x4b\xc3\x1b\xdf\x26\xd1\x7e\xf4\x5d\x8f\x9a\x4a\x75\x7e\x21\x24\xa7\x9f\xde\x30\xb1\x31\x44\xee\x2f\x7f\xda\xfb\x5b\x41\xb5\x41\xc9\xd7\xe4\xff\xf9\x5f\x74\xf1\xcf\xff\xfd\xf2\x7f\x2d\xe8\xe2\x9f\xdf\x2c\xfe\xeb\xff\xfe\xff\xfd\x2f\xf7\x1f\xaf\xfe\xfb\x1f\xf6\xde\xe9\x9d\xa4\xff\xd9\x1e\x60\xfd\xb3\x67\x01\xa1\x79\x27\x52\xac\xf9\xe6\x1e\xb0\x62\x7f\xfe\x1d\x44\xbb\x6a\x3d\x08\xf8\x26\x88\x2c\x2c\x73\x21\x6b\x43\x9d\xcc\xf5\x2b\x4a\xf9\xc8\x53\x46\x12\xe0\x7a\x0e\x78\x55\x1e\x5e\x71\x33\xd6\x3c\x63\x64\x2d\x4b\xa0\xca\x2b\x38\xfc\xdb\x35\x4c\x9c\xaf\x39\x4b\xcf\x1d\xba\x99\xa7\x9e\x78\x96\x01\xce\x28\x96\x12\xaa\x30\x80\xa5\xde\xb2\xf2\x89\x2b\x66\xc8\x11\xad\x32\xdd\x7d\xe9\x10\xee\x72\xff\x84\x06\x76\xcc\x0c\xfa\xa4\x6e\x32\xaa\x34\x4f\xfe\x96\xc9\xe4\xe1\xde\xb0\x94\xc3\xa7\x0e\x48\xe4\x4f\xf7\x07\x6f\xb5\x6e\x9c\xd9\xd2\xcb\x9f\xee\xc9\x35\x57\x0f\xf5\x4d\xed\x01\x4a\x88\xde\x52\x0d\x67\xa0\x35\xf0\x0b\xb3\xf5\x14\x98\x59\xc6\xf4\xd9\x99\x22\x5b\xa9\x34\xc9\x69\xb2\xe5\x82\x01\xb1\xd3\x5b\x26\x08\xfb\x54\x48\xe5\x38\xd8\x01\x48\x4b\x3b\x0b\x99\xf6\x5e\x41\x03\xbb\x14\x4c\x33\xb8\x85\xa9\x4c\x94\xb9\x80\x09\x2b\xb4\xba\x30\x0c\x95\x6e\xd8\xc5\xa3\x11\x2e\x98\xfa\x3d\x7d\x52\xcc\x2e\x73\x65\x96\x09\xfc\xf6\xac\xe7\xa3\x63\x1b\x0c\xc7\xa8\x3e\x1a\xcc\xee\xfd\xdb\xfe\xd6\x7e\xc7\x33\xa6\x76\x4a\xb3\x1c\xae\x83\xe5\x32\x8c\xd8\x29\xd9\xfd\xda\xc9\x8a\x3c\x51\x43\xae\xe4\x00\x48\x42\x72\x59\x09\xbd\x24\x1f\x79\xf1\x9a\xdc\x08\x55\x95\xee\x5d\x03\x6b\xbd\xf7\x09\xae\x88\xaa\x8a\x42\x96\x9a\xa5\x64\xb5\x1b\x84\x69\xde\x85\xf3\x30\xab\xa5\x40\x8f\x2d\x98\x25\xb9\xf9\x44\xf3\x22\x63\xea\x35\x79\xc1\x3e\xe9\x3f\xbf\x38\x27\x2f\x3e\xad\x95\xf9\x3f\xa1\xd7\xea\xc5\x3e\x46\x36\xe3\x36\x2f\x32\x9e\x70\x9d\x39\xca\x5c\x5a\x1c\x58\x31\x07\x88\xf0\x35\xa9\x44\x7d\x95\xda\x47\x3a\x08\xf3\x58\x47\x3d\xf8\x81\x8f\xef\xaf\xdf\xbf\x26\x5b\xf9\x44\x52\x49\x9e\x98\x11\x71\x0c\x65\x26\xac\x2c\x65\xa9\x08\x17\xfb\xdb\x0c\x9c\x26\x91\x79\x51\xca\x9c\xab\x2e\xd1\x3b\xdc\x63\x87\xee\x7d\x98\x46\x86\x89\x67\x33\x0a\x5a\x6a\xae\xf7\x64\x9c\xf6\xe8\x62\xdc\x47\x73\x5b\xfc\x2b\x7e\xf2\x03\xf8\xe6\xf0\x6a\xf8\x38\xd7\x44\xe6\x5c\x6b\x4b\xf4\x1a\x8a\xc5\x55\xfd\x32\x59\xed\x3c\x74\xc3\x6a\x5a\xb8\x33\x08\xf5\x3b\x59\xfa\x57\x0c\x83\xbc\x50\x29\xfd\xf6\x1c\xa6\x65\x11\x63\x67\x6f\x7c\xbd\x06\xaa\xc8\x8b\x6f\x5f\x2c\xc9\x3d\xcf\x79\x46\xcb\x6c\x77\x3e\xba\xdf\x0e\x74\xf3\xbe\x21\xe5\xfe\x43\x66\xea\x2f\xbe\x79\x41\x5e\xca\x12\xbe\x98\x50\x41\x32\x46\x1f\x87\xb1\x03\xe6\x62\x29\xc2\x8e\xb0\xbc\xd0\xbb\x57\xcb\xa1\xb3\x5c\xcb\x32\xa7\xfa\xb5\x11\xeb\xfe\xf4\xc7\xd1\xf3\x36\x82\xdf\x86\x95\xbd\xcf\x94\x8c\xa6\xef\x45\xb6\xc3\x9d\xf7\xbd\xdb\xb3\x17\xba\xac\xd8\x0b\x73\x2e\x6b\x69\x58\xa1\xa1\xae\x8a\x59\x12\xf1\xc1\x41\xac\x17\x32\xb8\x5a\x2e\xc8\x8f\xb0\x7f\x6f\xcd\xe1\xc2\x31\x5b\xc0\xcb\x31\x64\x78\x01\xe2\xff\x08\x5d\xf8\x4c\x94\xbb\xd9\xdf\x95\x94\x19\xa3\x87\x2c\xd8\x0c\x0b\xf5\xf6\x1a\xb7\xbf\x3f\x08\xfe\x8f\x8a\x91\xdb\x6b\x4f\xbb\x0b\xa3\x39\x28\x6d\x28\x44\xda\xe6\x88\x66\xef\x2e\x7f\xba\x1f\xdc\x83\x97\x97\x39\xfd\xa7\x14\xe4\xe6\x6f\xf7\x6e\x0a\xaf\x3e\x1b\x4b\x23\x61\x42\x63\xa4\x61\x5e\xb2\xb4\x6f\x57\x16\xf5\x9e\xf5\xfc\xb1\x57\xcc\xf3\x83\xfe\xb3\x2a\x99\x11\x1c\x82\x52\xc8\xa5\x7f\x72\x5f\xf2\x30\xbf\x93\x6b\xaa\xa9\x15\x40\x2c\xd5\x91\x40\xd7\x7a\x57\x0a\x3c\xcd\x60\xff\xca\x68\x20\xf6\xf1\x96\x14\x31\x81\xe1\x27\x40\xc1\x37\x6f\x65\x8a\xe4\xfa\xff\x6e\xa6\x70\x65\xdf\x22\xb9\x79\x8d\xbc\x93\x82\x9d\xc3\x45\x24\xe6\x26\xba\xff\xfc\xa9\xe4\x9a\x0d\x92\x93\x20\x6b\x30\xf8\xf7\xae\x47\xc0\xef\x9d\x95\x61\x0c\xe6\x61\x8f\xc7\x46\xba\xb5\x18\xec\x98\xc4\x2a\x93\x2b\xe2\x30\xec\x39\x33\xfa\xe1\xc3\x2d\x7a\x42\x3f\x7c\xb8\x3d\xdd\x64\x22\x04\xb5\x7d\x39\xad\xe6\x8d\xe4\x6d\xa5\x40\x2d\xa4\x2d\x09\x60\x98\x59\x98\x77\xdb\xd2\xd7\xb8\x94\xb5\xdc\x93\xaf\x06\xe1\x3a\xb9\x2b\x5a\xbe\x9a\xba\x73\xfb\xaa\xfd\xe0\xbe\x9d\xdd\x7c\x2a\x58\xa2\x6b\xf3\x04\xb9\xdf\x52\x43\x44\x48\x5e\x65\x9a\x17\x99\x3b\x48\x73\xb2\xca\x50\xce\xc1\x15\xba\xa3\x26\x34\x49\xe0\xc6\x92\x6b\x96\xf2\xc4\x28\xe2\xaf\xc1\x12\xd5\x86\x64\x00\x1d\xbe\xf0\x96\x0a\xba\xe9\xa7\x5f\x76\x00\x2d\x22\xb9\x7d\xac\x85\x71\x2f\xa5\x80\xfd\xac\xff\x44\x1f\x29\xcf\xe8\x8a\x67\x5c\xef\x0c\x0f\x7d\x35\xcc\xd8\x1c\x13\x04\x46\xa9\x60\xe9\x93\x2f\x73\x14\xdb\xbf\x6e\x7d\x17\x98\x2f\x79\x69\xde\xbf\x78\x32\x04\xe5\xd5\xb2\xe1\xf8\x5b\x56\x5a\x75\x72\x70\x09\x56\x5c\xe8\x88\x09\x8a\x69\xc0\xd4\x3d\x69\x60\x1c\x9d\x86\x59\xee\x38\x6b\xf1\x44\x6c\xf0\x8f\x3f\x7c\xb8\x9d\xc4\x76\xcc\x9d\xc6\xb1\x1d\xf3\x64\x2f\xdb\x81\x3f\xdc\xb3\xf2\x91\x27\xac\xe6\x3c\x03\xaa\x2f\x3b\x01\xe7\xf9\xf5\xe2\x04\x21\x8a\x25\x25\xd3\x68\xf6\x65\x26\x23\x1c\xfb\xb2\xaf\x5a\x75\x26\x91\x42\x53\x2e\x94\x3b\xb1\xfb\x51\x96\x41\xc8\xa5\x23\x17\xc0\x09\xcd\x59\xfd\x9d\x0d\x49\xc3\xc1\x1b\x0b\x17\x1e\xbd\x00\xa0\x8c\x64\x00\xd3\x11\xdf\x1b\xbf\x45\xcd\x6e\xf6\xff\xd9\x4f\x35\xf6\x26\x25\xac\xd8\xae\x7b\xb1\xb3\x6b\x85\x63\xc5\xf6\xbb\xfb\xce\x1d\x82\xdf\xc8\x77\xf7\x1d\x89\xcd\xde\x11\x73\x70\xc3\x3b\x6a\xde\x2d\x64\x7a\xa6\x48\xc6\xd7\x4c\xf3\xde\x49\x87\x6e\x4e\x2e\x05\xd7\xb2\x1c\x54\x43\xbb\x5c\xec\x83\xdf\x5b\xf2\xd6\xbd\x67\x4d\xd7\x89\xcc\x32\x96\x80\x16\x29\xd7\x76\x41\x1e\x70\x8c\xae\xc3\x9c\x4e\x5c\xbb\xe2\xac\xf8\x7e\x61\x37\xf7\xe2\xc3\xcd\xe5\xf5\xdb\x9b\x65\x9e\xfe\x7e\x2b\x9f\x16\x5a\x2e\x2a\xc5\x16\x5c\x0f\x71\x12\xae\x59\x3e\xa2\x5e\x07\xd1\xd6\x3f\x42\xcb\x92\xf6\xe3\x7e\x41\xf5\x16\xb7\x71\xef\x9d\xa9\xf5\x35\xf9\xc1\x99\x40\xc1\xe4\x61\x4e\x9c\xa5\xa4\x94\x52\x9f\x93\x92\xea\x2d\x18\xe9\x07\x08\x01\x71\xe4\x73\x5d\x65\x99\xdd\x63\x5d\x32\x76\xde\x56\x30\x2f\x3e\x0f\x57\x6d\x2d\x07\x4b\x4c\x87\xcd\x56\x9e\xc8\xc6\x10\x53\x40\x9e\x11\xe5\xfc\x74\x48\x85\xa5\xd7\x43\x4c\x75\x6c\x2f\xef\xeb\x37\xc1\x72\x04\xc6\x1d\xbd\x35\x3b\xfb\xc0\x76\x04\x9c\x43\x6b\x39\x2c\x1a\xfe\xa0\x58\xd9\xc5\x06\xa6\x13\x58\xe6\x45\xa5\x58\xb9\x74\xdc\xe0\xe4\xf7\x2e\xcc\x0f\x60\x22\x1f\xd8\x7a\xda\x06\x7d\x60\x6b\x02\x0e\xc8\x35\x2b\x99\x48\x98\x97\x1d\x68\xa5\xb7\x4c\x68\x23\x0d\xf7\x79\x15\xba\x5f\x07\x6b\xd7\xc1\x8e\x81\xdd\xaa\xd7\xda\x70\xdc\x2d\x0a\x51\x65\x32\xe0\x91\x1a\xde\xa4\xb6\xc6\xea\x76\x46\x47\x9b\x4d\xe4\xa3\x11\xe1\xd8\xd3\xc5\x93\x2c\x1f\xb8\xd8\x2c\x9e\xb8\xde\x2e\x2c\xc7\x53\x17\xe0\x99\xbf\xf8\x3d\xfc\xdf\xc8\xbc\xbc\xa1\xf8\x32\x4d\xad\x13\x87\x54\x8a\xad\x2b\xe7\x65\x52\xcb\x96\x37\xfa\x1c\x14\xa8\x73\x52\xf1\xf4\xbf\x0f\x6d\x15\x89\x21\xd5\x03\xcc\xd9\x0c\x73\x05\x26\xd0\xea\xd2\x5f\xc5\x92\xa6\x52\x01\x14\x38\x99\x1a\x6d\x86\xa9\x90\x22\x34\xcd\xb9\xf8\xe2\x17\x6e\x5c\x20\x1a\xe1\xd3\xe3\x02\x0f\x17\x69\xff\x8e\x76\x77\xf3\x0a\x9e\xeb\x4a\x3c\xf6\x5d\x6f\x81\xae\xbd\x60\xd4\x6b\x03\x03\x3e\x2e\x29\xbc\x8f\xac\xeb\x21\x43\x5d\xd8\x7c\xa7\xfe\x91\x2d\xec\x97\x17\x45\xda\xec\xf1\xe7\x76\x6d\x7d\x1e\x93\xc9\x9e\x63\x6a\xd8\x62\xd2\x71\x58\x1d\xcb\x70\x82\x92\xee\xa2\x4e\x84\xcc\x42\xcc\x11\xf6\x2e\x2c\xb7\x4c\xe0\xca\x10\x44\xa2\xac\x0f\xdb\x31\x57\x17\x8d\xe2\x74\xce\x31\xcf\x5f\x41\x4b\x9a\x33\xcd\x4a\x65\x83\x03\xb4\x34\x6f\x09\xf3\xb6\x96\xe4\x7d\xc1\xc4\xbd\xa6\xc9\xc3\xa0\xed\x77\xe6\xa4\x9f\x9d\x93\xc6\xf9\x85\x1c\x91\xe7\x69\x7d\xbe\x3c\x35\x52\x9a\x73\x5f\xfa\x3f\x0b\xc7\x14\xbe\x2a\x8a\x72\x1a\x5f\x8f\x8d\x63\x79\x4b\x8b\xb0\xb5\xc0\x3f\xb9\xc7\x3e\xeb\x9f\xc1\xb2\xe3\x02\xeb\x0a\x59\x54\x99\x8d\xab\xec\x99\xd0\x96\x2b\x37\xe1\x09\xec\xce\x89\x3a\x78\xc7\x4e\x43\x1c\x72\x99\x32\xb2\xe2\x96\x3e\x54\x8a\x19\x26\x0e\x71\xa2\x2c\xb5\x5c\x6f\x2c\xf4\xc2\x7d\xb7\xcd\x29\x6d\x74\xdc\x8a\xe9\x27\xc6\x04\xf9\x06\x64\x86\x6f\xfe\xcb\x7f\xf9\x2f\xcb\x0e\x11\xff\xe6\x2f\x7f\xfe\xf3\x30\x26\x5d\xf3\x92\x25\x1a\x02\x4b\x89\xb9\x97\xce\x95\x02\xca\x16\x2d\x19\x11\x52\x13\xba\x5e\x5b\x7b\x3d\x30\x5a\xae\x3c\x15\x1f\x86\xfa\xd1\x3c\x95\xf3\xcd\x16\x66\x6a\x10\x5a\x8a\x75\xc6\x13\x0d\xdf\x70\x17\xd8\x86\x5c\x29\x7b\x70\xf6\x1b\x83\x0e\x3a\xe2\x43\xa1\xcc\x1e\x9e\x93\x8c\x3f\x30\xb2\x56\xdf\x97\xb2\x2a\xce\x7d\x50\x10\x29\x99\x82\xd8\x28\x2a\xcc\x57\xed\x47\x72\x1f\x04\xdb\x37\xe0\x2c\x14\xd3\x27\x76\xce\x8f\x1a\x5f\x3a\xc8\x72\xdb\x91\x28\xce\x09\xa3\xc9\xd6\x28\xbc\x0b\x7b\xd4\x05\xe5\xa5\x77\x76\x5d\x53\x4d\x47\xb6\x8a\x65\xe9\x1e\xe1\x4e\x58\xda\xba\x44\x3e\x5a\xac\x28\xe5\x7f\xda\xc3\xe5\xc2\xea\x8e\x83\x40\xbd\x88\xaa\x9c\x90\x46\x9e\xb6\x52\x39\x03\xab\x53\x0c\x8c\x6e\x6e\x4e\xc3\x30\x3b\x26\xb4\xfb\x79\x18\xa2\x59\xd5\x61\xa4\x1c\x83\x98\x64\x96\x1a\x70\x6a\x60\xa6\xa3\x56\xa1\x1a\x1a\xe0\xb1\xb2\x18\x52\x89\x03\xa8\x2e\x7a\xd3\x91\x93\xd1\x98\x16\x0a\x6b\x33\xb8\x5f\xc3\x7e\xda\xf2\x64\x6b\x7e\x32\x60\x1c\x0c\x7f\x3a\xf5\x46\xa3\xe2\x4e\x14\xd3\x95\x3b\x12\x08\x20\x32\x73\x65\x4a\x11\x0e\x3b\x98\xd3\xf2\x81\xa5\x75\x84\xe2\xf0\x34\xef\xcc\x62\x49\xee\xe8\x43\xc9\x32\xaa\xf9\x23\xab\x03\x84\xcd\x34\x9d\x14\x02\x1f\x3f\x5b\x2e\xcf\xec\x45\x1f\x31\xa4\x28\x4d\x4b\x77\x6b\xcd\xf3\x43\x1f\x0f\xd8\x17\x3b\x48\xfe\x96\x16\xad\x10\x5f\xb3\xad\x20\x2e\xc1\x4c\x1c\x09\xa2\x6e\x67\x86\xd7\x8a\x91\x75\x88\x01\x3e\xf6\xe7\x1e\xe7\xb2\x9b\x8e\x43\xb6\xe1\xef\x13\x9c\x00\x41\xc0\xac\x3c\xcc\x2a\x7a\x66\x11\x60\x18\x75\x20\xe9\x30\x66\xb9\xcf\x22\xf8\xc4\xed\x1a\xb0\xa2\xb9\x7d\x01\x98\x2d\x9c\x6d\xf1\xc1\x6e\xe8\xe9\x01\xf1\x0f\xc0\x8c\x60\x0d\x2d\x16\x10\x00\x1a\xc7\x20\x60\x8f\x03\x10\xc7\xd8\x84\x1d\x18\x66\x61\x47\x98\x65\xd8\x31\x66\x53\xb7\xe3\x00\x7f\xeb\x5b\x6f\x2f\xf6\xba\xd9\x36\xa3\x6b\x83\x98\x34\x4c\x8f\xed\xb0\x57\x60\x49\xde\x3a\x9a\x61\x70\x48\x10\xba\x52\x32\xab\xb4\x05\xdc\xfc\xd1\x11\x14\x04\xde\xc0\x84\x58\xc6\x72\x43\x26\x81\x96\xd4\x40\x5a\x44\x06\xc8\x77\xe8\x46\x99\x31\x46\x8d\xdc\x47\x31\xd7\x73\x4c\xac\xb5\x63\x61\x36\x64\xe4\xaf\x66\x5d\x01\xc7\xca\x88\x02\x11\x76\xac\x8c\x69\x6c\x5f\xa7\xb6\x76\x54\x4d\x2d\x78\x8a\x9e\x2f\xe2\x1c\xaa\x2e\xf2\xf1\x69\xcb\x9c\x83\xa9\xc5\xab\x89\x2c\x89\x21\xb6\x20\x20\x18\xf2\x39\x2c\x38\x32\x97\x18\xd4\x6f\x9c\x0b\x9b\x18\xc6\x95\x22\xc5\xc3\xea\xd0\xfd\x2d\x79\x79\x65\x2f\x1f\x2b\xbd\x0b\x9b\xdc\x0a\xcd\xca\x35\x4d\xd8\xab\xb6\x9a\x34\x16\x13\xe5\xe3\xef\xb7\x54\xa4\x99\x95\xf1\xa9\x20\xec\x93\x4b\x32\x32\xdf\x49\x4b\xfe\xc8\x4a\xf2\xf2\x32\x2b\xb6\x94\xac\x19\xd5\x55\xc9\x7a\x03\x5c\x82\xca\x13\x40\xc2\x45\x26\xd8\x8f\x3a\xc1\x52\xb4\x50\xbb\x35\x25\x98\xbc\x9d\xf9\x30\x3a\xb6\xf4\xbd\xa5\x39\x6c\xe0\x01\x40\x6c\x76\xb2\x2a\x9d\x61\x7a\x2d\x2d\x32\x24\xb2\x34\x0a\x11\x7c\x70\x10\x22\x55\xa4\x64\x1b\x23\x4d\x96\x20\x8e\xba\xac\xa1\xca\xfc\x30\x39\x7e\xea\x28\x91\x67\x87\xf1\x61\xe1\xf8\xfb\xb5\x13\x60\x21\xdd\xc5\x09\xe0\xe0\xfc\x71\x82\x03\x57\xa4\xa0\xca\x19\x2c\xc0\xb9\xa4\x94\x4c\x38\x1d\x32\x4d\x9b\xd1\x3a\x23\x2b\x26\x83\x88\x90\x32\xcd\xca\x9c\x0b\xd6\x09\x06\x6e\x27\x23\x0c\xcb\xf5\xb4\x28\xb2\xdd\xe4\xcd\x15\x32\x65\x77\xd5\x2a\xe3\x6a\x7b\x1f\x65\xdb\x7b\xd7\xf3\xa2\xf5\xf3\x1f\xf8\xdc\xac\xbd\x6f\x70\x01\x07\x76\x40\xa2\x98\x50\x1c\x98\xb5\x21\xcf\x46\x78\xe0\x46\xc0\x93\xb0\xdd\x1e\xea\xd5\x7d\x5f\x24\x93\x9b\xa9\xbb\x05\x12\x32\x0b\x32\xa6\x59\x7d\x41\x5a\xf3\xfe\xd1\xe9\x6d\x22\x85\x5f\x7f\x10\x45\xfb\xf7\x41\xe0\x09\xcd\x32\xe5\xa4\x39\xab\x4f\x72\x55\x13\x5b\x2b\x53\x81\x5a\xb1\xf2\xd8\xc2\x0d\x22\x85\x76\x81\xab\x9a\xe5\x82\xf8\xd9\x6c\xdc\xde\x06\x29\x92\x4b\x9b\xb2\x22\x88\x14\xfe\xa1\x61\xb9\x8f\x66\x99\x07\x54\x9f\x8c\x02\x13\x86\x45\xde\x21\xd4\x99\x8d\xa6\x9f\xdd\x68\x1a\xe5\x9a\xb8\x77\xba\x89\xbd\x72\x34\x5d\x40\xe4\xe5\x5e\xfe\x9b\x23\xde\x21\xa5\x31\xe0\xdb\x98\xec\x2e\xb0\xdf\xbd\xd4\x36\x89\x73\x18\x93\xda\x39\xec\x61\xac\x43\x6c\x75\x67\xa7\x7e\xdc\x9b\x05\xb0\x7d\xa6\x1c\x95\x58\x38\x25\x2f\x69\x61\xfc\x08\xcb\x34\x7a\x57\x7d\x77\x5a\xb4\xc8\x41\x6b\x18\x29\xf0\x50\xfb\xe3\x99\x22\xa9\x4c\xaa\xbc\x37\x11\xba\x3d\xcc\x79\x35\xee\x3b\x97\xa4\x3c\x0d\x9b\x02\x71\xa2\x30\xaf\x58\xf9\x2b\x95\x4f\xe2\x89\x96\xe9\xe5\x5d\x6f\x50\x7a\x57\x4c\x69\x9e\x6d\x4b\x5c\x1e\x04\x31\xbf\xd3\x95\xac\xb4\x0f\xe9\x1c\x0b\x64\xeb\xd8\xae\x67\x3b\x75\x7b\xcc\x76\xea\xaf\xca\x4e\x6d\x9e\xb4\x62\x50\xc6\x95\x36\xdc\xae\x83\xf1\xce\x46\x64\x76\xe2\x08\x06\xc3\xd6\x1d\xb3\x34\x6e\x3f\xf6\xba\x25\x3e\x8d\xb1\x2e\xe9\xb0\xb8\xb1\x89\xb4\x84\x31\x7f\x3d\x81\x35\x3e\xd3\xec\x08\x30\x46\x24\xcc\x9e\x35\xb6\xc2\x49\xef\x59\x66\x98\x3c\x58\xd9\x5b\x66\xfc\x42\xa6\xaf\x89\x1c\xf3\xbc\xdb\x01\x45\x09\x60\x2f\xd4\xb9\xab\xb9\x72\x6e\xf5\x27\x83\x7f\xc2\x57\xd9\x80\x5b\x53\x13\xe1\x80\x69\x0b\xb7\x6c\x32\x58\x5e\x03\xb1\x01\xbe\xe0\x86\x5b\xad\xab\xb0\x61\xfe\x13\xea\x85\xdc\x99\x8b\xce\x43\x46\x3a\x33\x0c\x33\xd7\xcc\xa6\xb1\xb2\x32\x57\x44\xae\xcf\x3b\x39\x17\x2f\x1e\xbf\x1d\x51\x87\xfc\x40\x1a\x77\x89\x3f\xee\xbb\xa0\xad\xee\x60\xc9\x77\x1d\x13\x9d\x2b\x3b\xa0\xe0\xf4\xbd\x52\x59\x5b\x66\x11\x0b\x87\x8b\x67\x77\xf1\x88\xcb\x0b\x1b\xc8\x08\xb0\xda\x7a\x13\x10\x36\xb9\x51\x7b\x18\x99\x4d\xe6\xb3\xc9\xfc\x60\x9c\xc8\x64\xde\x22\xbb\x8e\xc2\x10\xb7\xec\xb6\x19\x7d\xd4\x18\x64\xc7\x9e\xa5\x7d\xc5\xbc\xc4\xe4\x04\x21\x6f\x48\xf7\x56\x74\x59\x46\x98\xce\xcf\xce\x96\xcb\xb3\x33\x6f\x79\x77\x48\x5a\xe9\xf5\xe2\xaf\x84\x89\x44\xa6\x16\x85\xcc\xd7\x4b\xa5\x81\xb5\xe2\x66\xdb\x5d\x65\xee\xe7\xd9\xf6\xf9\xc1\x97\xc7\x0f\x11\x49\x4a\x7c\xce\xf3\x77\x13\x98\x63\xc3\x12\xeb\xcc\x69\xb7\x84\xc4\x9b\x40\x51\xbc\xb1\x2e\x54\x44\x32\x0e\xf5\x7c\x0c\x9a\xd7\x35\x7d\x5e\xda\x1f\x97\x49\x51\x9d\xbb\x07\x96\x39\xcb\x65\x39\x52\x3d\xc0\xc3\xb5\x20\xcc\xab\x1d\x98\xee\xfd\x57\xc0\x6d\x93\xaa\x2c\x99\xd0\xd9\xee\x04\x7c\xb7\xde\x87\xb1\xdc\xa2\x66\xec\xc5\xa5\xd6\x76\x64\x5b\xa0\xcc\xd3\x7c\x50\xd4\x5c\x3c\x6e\x68\x0b\x48\xcb\x14\x0f\xef\x31\xf1\x48\x1e\x69\xa9\xc6\x57\x48\xe2\x58\x6d\xca\x1f\xb9\x92\x83\x16\xe4\x81\x05\x36\x36\x04\x83\x32\xb2\xd2\x45\xa5\x1d\xed\xf1\x78\x34\x56\x4f\xa6\x3b\x6a\x1c\xda\x93\x2a\xbe\x7d\x71\xcc\x85\xfa\xaf\xc4\x1e\x65\x43\xcf\x9a\xfa\x58\x5e\xa8\x38\xe2\x49\x60\xa5\x82\xd1\xd2\x3f\xdd\xaf\x06\x84\x02\x8c\xa3\xee\xb4\xae\xb8\x51\x00\x60\x02\xbd\xe6\x88\x20\xf0\x1b\xf7\x64\x37\x8e\x4d\xb3\xbc\x90\x25\x2d\x77\x24\x75\x9a\xee\xce\x47\xb4\xd1\x72\xc0\x52\x63\x53\xde\x5a\x39\x6f\xcf\xae\x0d\x01\xab\x48\x79\x39\x25\x0e\x3c\x67\x29\xaf\x72\x9c\xad\xe1\x27\x28\x44\xe4\x8a\x1b\xf9\xac\x6c\x0b\xc0\x9b\x41\x56\x34\x79\xb0\x92\x5b\xbd\x21\x63\x7a\x7c\xb7\xb6\xc8\x0b\xe7\x75\xc8\x19\x15\xb5\x24\x08\x7e\x24\x99\x32\xb3\x63\xfe\x61\xfb\xcd\x91\x40\x4b\x2f\x11\x0a\x67\xe4\x76\x51\x2b\x2f\x1d\x80\x57\x86\x91\xbf\x05\x1a\x7f\xd2\xcd\x27\xa8\x5c\x22\xfe\x4f\xf6\xc6\xb0\x2d\x64\xd5\x1f\xa9\x69\x46\xa8\x4b\xb5\x5c\x93\x4c\x26\x34\xab\x4f\xa3\xc3\x03\x0e\x4a\xec\xb5\x47\x8d\xd0\xde\xc7\x66\x4e\xc3\xcc\xc5\xf2\x50\x30\x13\x64\x4a\x82\x07\x87\x27\x74\xe5\x2a\xa5\x59\xce\x38\x08\xd5\x9d\x0c\x00\xcb\xe9\x27\x9e\x57\x39\xa9\x94\x99\x99\x14\xee\x5d\x8f\x31\xf5\x04\x9e\x0c\xe6\x0c\x5b\x51\x2c\x0a\xe4\x5c\x00\xb0\xae\x88\x6f\xfe\x72\xef\xf7\xaf\x15\xe4\xb5\x65\x23\x71\xe9\x5e\x48\x56\x55\x6e\x36\xd0\xcd\xca\x89\x16\x72\x0d\x3e\x89\x9a\x31\x43\x55\x28\x6a\xab\x92\x7d\x1c\x31\x1f\xb5\xf0\x58\xf0\xac\x8b\xc8\xbe\x7e\x57\xbd\xb1\x95\x70\x7e\x68\x74\x04\x7d\x3f\x52\x56\x8a\x95\x8b\x4d\xc5\xd3\xa3\xa1\xe3\x28\xb5\x5c\x27\x41\x3a\xf9\xdd\x55\x97\x40\x7e\xc7\x57\x25\x23\x57\x5b\x2a\x04\xcb\xda\xc5\x1f\xbb\xe5\xe3\x7a\x27\xdb\x29\x29\x17\xa8\x28\xf7\xcc\xec\xfb\xaf\x3f\x1b\xe6\xe4\x05\x44\xac\xd3\x69\x10\xec\x57\x5b\x34\x2d\xab\x90\xe5\xd2\x1a\x6b\xc3\x77\x57\x44\xd3\x72\xc3\xb4\x79\x99\x88\x2a\x5f\xb1\xc1\xfb\xf2\x25\x0a\x7d\x7d\xe9\xb4\x9e\xe9\x19\x38\x76\x5b\x7f\xfa\xe9\x1d\x32\x1b\xbf\xef\x4c\x9e\x64\x99\xa5\x4f\x3c\xb5\xe1\x23\x8a\xbc\x34\xe0\x5e\x7d\xb9\x14\xf9\xa7\x27\x9e\x4e\x59\x8e\x33\x1f\xc1\x72\x08\xac\xc7\xa5\x8d\x70\xc3\x55\x5e\x02\xd8\x57\xc3\xec\x99\x83\xd1\x06\x9e\xb2\x66\x87\x7c\xc5\x05\xf5\x05\x0a\x9a\x8d\x06\x52\x68\xf0\xd8\x99\xc1\x06\x21\x2a\xa6\xcf\xc9\xaa\x72\x46\x0d\xa9\xb7\x44\xf1\xbc\xca\x34\x15\x4c\x56\x2a\xdb\x0d\x1e\xfb\xa9\xb7\x78\x9c\xe7\x64\xec\x93\x45\xce\x30\xef\xa9\x1f\xed\xf2\xa0\x0d\x13\xac\xe4\x89\x3f\x90\x0e\x13\xea\xf7\xa8\x28\x1b\x57\x63\xcb\x46\x5f\xd4\xd9\x9d\x95\x21\x66\x36\xce\x8a\x25\x64\x45\x0d\xdf\x29\xb2\x6a\xc3\x7b\x2d\xb7\x9f\x25\xaa\xaa\x89\x25\x31\xb2\x72\x50\xe8\x1b\x77\xb5\xff\x06\xcb\x6c\x7d\xec\x8f\x68\x4a\x59\xc1\x84\xb9\x78\xa2\x8d\x55\x76\x79\x93\x77\xcf\xd9\x7a\xbf\x4c\x98\x41\x8b\x36\xdd\x7c\xd2\x25\x35\x04\x25\x37\xa4\xc3\x5b\xa0\xf9\x9a\x50\x31\x4c\x04\x8e\x1b\x1e\xf2\x0b\x66\x71\x27\x2a\xfd\x70\x9a\x30\x34\x4b\x9d\x86\x59\x02\x4c\xd4\x87\x8b\x0d\x86\x85\xf9\xaf\xb7\xf3\x68\x46\x23\x13\x63\xc3\xc3\x5a\x61\x60\xc3\xb4\xeb\x30\xb0\xc5\xae\xae\x5e\xc5\x9c\x60\xfb\x95\xc4\x8a\x9d\x22\xba\x67\x9d\xc9\xe4\x01\x51\xad\xe1\x3b\xfb\xdc\x9e\x16\xea\x7e\xdc\x2f\xd7\xd0\xd5\x30\x7b\x17\xdb\xad\xd2\x00\xf7\xa4\xc5\x1c\xc0\xd1\xed\x80\x43\x3b\x00\x69\xf0\xd8\x16\x91\x5b\xb1\xc1\x24\xff\x4a\x0c\x64\x94\x07\x65\x06\xaa\xa9\x8a\x28\xa5\xb6\x5f\x05\x54\x31\x6d\xe3\xcb\xa0\x80\x93\xef\x2e\x40\x16\xff\x36\xee\x2c\x73\x2b\xf5\x10\x8c\x98\xe1\x57\xed\xed\x7e\xe0\xd3\x51\x3c\x65\x0e\x76\x6a\xf6\x3f\x19\x89\x36\x0e\x17\x18\xb5\x5f\xfb\xe1\x07\x64\x9e\xb6\x79\x70\x6f\xad\xee\xc0\xc0\xe2\x02\xb5\x7d\x1b\x09\x7c\x78\xad\xeb\x16\xc2\x38\x38\x27\xb0\xa5\x6c\x12\x76\x57\x97\x17\x46\x95\xcd\x3d\xfb\xfe\xea\xa6\xfb\x4a\x17\xc9\xbf\xbf\xba\xe9\x16\xee\x1f\x15\x70\xa7\x15\xee\x27\x23\xc9\xa6\xc7\x28\xdc\xbf\x49\x58\x53\x74\x39\xe5\xea\x61\xae\xda\xff\xab\xac\xda\x7f\x70\xce\xc3\x3e\x82\xb9\x64\xff\xc0\x98\x4b\xf6\xf7\x97\xec\xff\x2c\x34\x88\x1c\xcd\x34\x58\xa4\x68\x6e\xee\x2b\xd4\xb7\x0d\x00\x77\xd7\x9d\xb2\xf4\xdf\x5f\xdd\x2c\x6d\x81\xc6\x11\x6a\xd5\x29\x5f\xe2\x4b\x71\xc3\x9b\x9f\x6b\xeb\x8e\x5c\x07\xe9\xb0\xde\xed\x88\x2e\x38\xe2\x6d\xd9\xab\x6e\x74\xa0\x9a\x7e\xee\x0d\x9a\x5a\x68\xd9\xe2\x54\xb4\x48\xc2\xf5\x07\x56\xf4\x52\xfa\x3d\x41\xc4\x3e\xb8\x67\x65\xe3\xd0\xbb\x4b\x2a\x0e\x5e\x70\xaa\xa1\x38\x40\xa9\x79\x52\x65\x74\xc8\x2a\x6e\x6d\x6c\x4b\x72\x7d\x73\xf7\xe1\xe6\xea\xf2\xe3\xcd\xf5\x6b\xe2\xa1\xf3\xb6\x10\xb9\x24\x1f\x65\x63\x94\xb3\x15\x64\xac\x83\xae\xdf\x66\xcb\xf5\xb6\x35\xa7\x73\x47\x0e\xa9\x68\xbc\x8e\x50\x38\x83\x0a\x72\x2b\xb8\x6e\x22\x69\x06\x45\xa6\x24\x93\xbe\xa1\x9c\x81\xe8\x6c\x81\x1b\xae\xcf\xad\x80\xe4\x6a\x40\x6f\xd9\xde\x17\xe0\x8e\x82\xbf\xbf\x1f\xac\xff\x72\xaf\xf6\x1a\x54\x07\xbc\x8f\x1d\x57\x85\xdf\xda\xd7\x9b\x48\x05\xcb\x13\xea\x40\x37\x5f\x65\x42\x96\x36\x96\x6c\xf0\xa2\x34\x75\x25\x80\x0b\x9d\x2d\xcf\xbc\x50\x93\xd5\xb5\x40\x7c\xf0\x64\xfd\xb1\xd1\x2a\xd4\xce\xc9\xdb\xc5\xa1\x25\x21\xef\x7d\x0b\xad\x73\x23\x99\xec\x95\x1b\x19\x4c\xb2\xf0\xb3\x6c\xfc\xb8\x3d\xd0\xeb\x58\xdd\x6a\xd5\x9e\xa4\x4d\x66\x1f\x04\xba\xe1\x8f\x4c\xd8\x8d\x9b\x4e\xda\xfc\x14\x50\xa7\xf6\xa1\x99\xf1\x0f\x1f\xde\x4c\xff\xa8\xbd\x39\xa8\x4f\x5e\xc9\x3c\xe7\x9a\x6c\xa9\xda\xd6\x49\x5a\x8d\x6f\xbd\xbe\xb5\xd3\xe6\x32\x4e\xb9\x9a\xcd\x89\xa6\x5e\x36\x91\x17\x51\xc1\xfa\xec\x7b\xff\xe8\x9e\x02\x55\xff\x7c\x50\xc7\xba\xdf\xd9\xd5\x04\xfa\x20\x83\x7a\x86\x8a\x66\xd6\x73\x7f\x5e\x4d\x47\xdf\x0e\x11\xe9\xad\xba\xf1\x8f\xbf\x6b\xd5\x02\xaa\x5b\x2a\x82\x90\x01\x4b\x4c\x99\xa6\x3c\x1b\xb6\x42\x35\xfb\xa6\x65\x21\x33\xb9\x89\xab\x3f\xdb\xb3\xf8\xdf\xdb\x28\xdc\x05\x5d\x98\x5d\x9d\x2e\x9b\x63\x6b\x5b\xfb\x20\x62\xb3\x01\xcd\x6a\x6a\x59\x15\xe2\x77\xf1\x8a\xd0\x67\x5f\xe8\x11\x85\xa5\xfd\xd5\x0f\x4b\xde\xa0\x35\xfa\xf2\xdf\x40\x37\x9b\x3c\xcf\x82\x95\x39\x57\xb6\x27\x71\x8f\x14\x35\x08\xf4\xb3\x61\xcd\x54\xc1\xaa\xbe\x61\xfd\x62\x57\x7f\x20\xe3\x28\xd9\x32\xd4\x65\x28\x09\xe5\xb0\xd5\x10\x20\x6a\x87\x68\x15\x25\x5b\xb0\x4f\x5c\x81\x7d\xc0\xb6\x9d\x2c\x1b\xae\xdb\xef\x87\x6a\xd5\xe7\xf7\x86\x1e\x1f\x90\x63\xdf\xcc\x76\xfb\x71\x35\x8d\x9c\xd2\x0b\xd2\x9b\xd9\xc0\xd5\x4a\xb3\x6c\x67\x4b\x25\x42\xc6\xa8\x55\xcb\xe9\x06\x26\x2c\x4b\x67\xa6\x2e\x4a\xfe\xc8\x33\xb6\x31\x9f\xd8\x72\xb1\xe9\x27\x2f\x75\x46\x2b\xcd\x32\xf9\xc4\x5c\xaa\x0d\x3b\x98\xbf\xb9\x9f\x4a\xb7\xa3\xb6\x06\xc5\x8d\x77\xef\x3f\x12\xc1\xec\x67\xfb\x7b\xec\xc6\x08\xf4\x66\x12\x83\xf1\xab\x8b\xc5\x02\xec\x17\x2f\xff\xd3\xc8\x8e\x69\xf6\x8a\xfc\xc4\xdc\xb7\x8d\xf0\x6c\x6e\x74\xa2\xc9\xd3\x56\x82\xa6\x5b\x29\xb7\xa6\xf1\xd3\xcb\x6d\xbb\x36\x2a\x52\xff\xe6\x85\x79\xdb\x08\x70\x96\x6d\x75\x60\x40\x06\xb6\x22\x8d\x47\x6d\x92\x9c\x19\x49\x49\xbd\x11\xb6\x16\xab\x5a\x18\x57\x97\x0f\x18\x8d\xfa\xb5\xdd\x84\x77\x79\xc6\xc5\xc3\x39\xe1\xda\x93\x29\x83\x05\x2e\x94\x4e\x3c\x78\xdc\x2c\x19\xcd\x5a\x54\x7a\x44\xbf\x7b\xee\x29\x4f\xa6\xd0\x1a\x6d\x90\xfc\xb8\x2b\xac\x1f\xbf\xbe\xee\xce\xf9\xdc\x26\xa3\x2f\x5e\x9c\xca\x30\xf7\xcc\x95\x06\xd4\xd2\x09\xf4\x91\x2b\x4c\x5d\x9d\xb3\xdb\xfb\xab\xfb\xdb\xbd\xc6\x3e\xf6\xb7\x43\x93\x78\x5c\xe0\x61\x4c\xe4\xe1\x30\xfe\xe1\x98\x1a\x2c\xf6\x79\x32\x60\xb2\xa5\xc5\x65\xa5\xb7\xd7\x5c\x25\xf2\x91\x21\x95\x0c\x5f\x58\xc9\x19\xa6\x09\xf7\x5b\x67\x61\x90\xab\x7f\xbf\xbc\xc3\x75\x27\x08\x3b\xd0\xfd\x0c\xef\x99\x42\x6b\x24\xfd\xf3\x73\x10\x8e\x3a\xbb\xd9\x79\xf0\xd5\x3b\x0f\xe0\x96\xfc\x52\x1d\x06\x5c\x70\xcd\xa9\x96\xa3\x19\x5f\x5d\x6d\xdc\x76\x32\xb7\x28\x7f\xeb\x5f\x07\xd7\x2e\x30\xd3\x0e\xc4\xb1\x64\xeb\x56\x0d\x54\x0e\xfa\x4e\xa2\x78\x5d\x79\x6c\x2f\x18\xf0\x9c\x08\xf6\xe4\xbe\xc9\xfd\x33\x83\x90\xff\xd5\x85\x6e\x1a\xbc\xa4\xd9\xbf\xbd\xfe\xd7\x96\xd3\xe1\xdf\xea\xa4\xd9\xba\x18\x45\x5d\xb4\x0b\xaa\xa4\x4f\x37\x25\x10\xc2\xff\x81\xa3\x1f\xce\xf4\x65\xd7\xf3\x3f\x2a\x9a\xd9\x7d\x78\xf7\x1c\x3b\x4e\x77\xff\x50\xd3\xf0\x67\xe8\xf7\xfc\x5d\xad\x63\x57\x8a\x01\xcf\xb2\x4f\xe8\x92\x0a\x65\x36\x13\x57\x14\xe7\xcc\xb9\x7e\xce\xc8\x4b\x9d\x14\x81\x8a\x38\x47\x08\xa5\xb6\x93\x74\x7b\xfa\xa6\x0e\xa1\x1e\xfa\xee\x91\xfc\x24\x80\x5b\x38\xd3\x46\x67\x82\x77\xf0\x22\x79\xc3\x95\xb6\xf1\x7e\x16\x12\x34\xcb\x81\x20\xdb\xc1\x3d\x36\x32\xc4\x1d\x94\x17\x2c\x7e\xa6\x69\x5a\xbe\xb6\xbc\xc7\x17\x76\x28\x41\x92\x90\x75\xcb\xab\xda\x03\xf7\x52\xef\x0a\x9e\x18\x35\x68\x98\x4a\x5d\xdd\x01\x04\x45\xfe\xfa\x17\x9b\xa7\xfe\xa7\x3f\xfe\xe5\x9b\xc1\xa3\x3b\x7d\x94\x73\x94\x0d\x21\xca\xdf\x32\x96\x18\x1f\xf2\xb7\x4c\x66\xe3\x71\x51\x7a\x20\x40\xdc\x37\x5d\x95\xdc\x2d\xb4\xf8\x63\x0e\xa7\xa6\xb1\x38\x31\x63\x8e\x38\xfb\xec\xd5\xc9\xec\x61\xd9\xbb\x3e\x95\x46\x58\xf2\x70\xb7\x47\x1e\x2c\x19\x18\x9c\xfe\xd7\x40\x1e\x9e\xa5\x95\xf1\x7f\xf4\xa1\xf1\xc2\x70\x83\xde\xdf\xdb\x3b\x1d\xab\xcd\x09\x8c\x79\xfe\xdd\x5e\x7b\x49\x41\xde\x0d\xf6\x96\x8c\x4a\xb4\x7d\xae\xb1\x47\xac\x7b\xd3\xe2\x8f\x6c\x3d\xf1\x2a\xaa\xd1\x2f\xdb\x41\xef\x66\x13\x14\x2b\xa1\x8c\xdb\x89\xec\x1c\x03\x0b\x24\x9f\xd9\x08\x6d\x56\x6a\x57\x6f\xf5\x8b\x71\xcd\x29\xda\xfc\xfc\xc5\x76\x6f\x9c\x61\x95\xd8\x6c\x90\xb3\x7b\x78\xd6\x3b\x2c\xcc\x5d\xb0\x11\x21\xa5\x11\x57\x0c\x25\x62\x4a\x79\x66\xf1\xee\xbb\xfb\x61\x85\xa0\x85\x4d\x5f\x04\x6b\x26\x99\x8b\x16\x6e\xde\xb1\xb4\xa7\x09\xbc\xb0\x52\xc7\x55\x46\x79\x6f\xe2\xfb\xde\x9d\xec\x7b\xcd\xfe\xe7\xbd\xb5\x29\x75\xec\xf1\x75\x60\xff\xb0\x65\xa9\x17\x62\xed\x8e\xa6\x4e\x6f\x82\x72\x5f\x93\xcf\xa6\x59\xec\xc2\x1f\x53\xf3\x93\xfd\x25\x31\x9f\x9d\x44\xd0\xe0\x4d\x7c\xd4\xd2\x95\x7f\x7c\x3f\x81\x69\x60\x2b\x46\xae\x66\xcf\x16\xf9\x4e\xb4\x85\xf4\x09\x5a\x9d\xca\xd1\x47\xb6\x41\x3c\x6b\x5f\xc9\xd1\xe9\xe8\x4f\x91\x69\x2f\x21\x75\xf2\x79\x62\xf7\xf8\x75\xae\xb1\x26\xfa\xe2\x6e\xa5\x96\x22\x32\x5a\xfa\xae\xe7\xa5\xee\x4d\xb5\x4f\x5c\xd9\xa8\xfd\x6c\x48\xeb\xac\x01\xd8\x40\xb9\xbe\x4e\x8f\x83\x5d\x1d\x27\x5c\xad\x5f\x5f\x86\xdd\x91\xfa\x31\x86\xbd\xfd\x29\x32\x4f\xe0\xf6\xda\x89\x58\x3e\x17\x40\x39\x54\x20\x0d\x2e\xb4\xce\x7d\x70\x81\x23\x61\xcb\xcf\x63\x7b\x69\x7c\x43\x36\x73\x78\x4f\xb2\xc4\x66\xca\xde\x75\x1e\xdf\x73\x28\xbb\xbf\xed\x27\xcb\xf4\x8b\xd8\x5f\xfe\x16\xdc\x83\xc7\xac\xb5\x84\x3e\xb3\xb9\xbf\x1b\x83\x87\xd9\x77\x65\x50\x57\x63\x58\xb8\x1a\xba\x32\xe1\x2b\x31\xcc\x00\x8f\x73\x55\xa2\x58\x0c\x36\x3f\xb3\x91\xe4\x07\xa7\xff\x7c\x46\x85\x2d\xea\x8d\x24\x05\x3f\xba\x87\x5d\x7a\x90\x39\x8f\x86\x28\xd0\xfa\x9a\x8c\xc7\xc2\x7c\x91\x0e\x8c\x75\x5b\xb5\xe0\x5d\xb7\x45\x7f\xd7\xb2\x84\x24\x4b\x6e\xf3\x2e\x9b\x8a\x7a\x2e\xeb\xf2\xdc\xd5\x66\xcf\x69\x31\x50\x33\xce\x5c\xf5\x76\xb5\xe0\x09\xd7\x3a\xb6\xb8\xf5\x5b\x44\x45\xeb\x6e\xe5\xea\x41\xd4\x0b\x55\xb4\x1e\xae\x53\x3d\x6c\x1d\x0e\xd5\xaf\x1e\xae\x53\x3d\x08\x33\xaa\x32\x68\xb7\xf6\xe7\x88\x15\x1b\x51\x13\x14\xaa\x7e\x9e\xd4\x7e\xef\x10\x0e\x75\xf0\xbe\x3a\xb5\x8f\xc0\xb3\xc8\x6e\xb6\x63\x9a\x7d\xbc\xcb\xfc\x6a\x68\x76\x6f\x5d\xda\x73\xd3\xa8\x90\x66\x52\x6c\x5a\x47\x31\x62\xb9\x6c\x95\xc3\x77\x4e\xdf\x5d\x31\x62\x3d\xc5\x15\x86\x1c\xed\xae\x3a\xb0\xa8\x76\x0e\x78\x53\xb8\xbe\x69\xb3\x0a\x69\x9e\x4d\x87\xbc\x51\xc0\xf8\xf2\x95\x81\x6d\xef\x9d\x29\xae\x59\x66\x10\xa6\xf5\xc6\x5e\x9b\x65\xe1\xda\x66\x22\x20\xf6\x36\xd6\x1c\x6b\xa0\x89\x80\x39\xda\x62\xb3\xb7\x95\x26\x72\xe9\xe1\x66\x9b\xd1\xa5\xa8\xa3\xda\x6e\x92\xdb\x35\x02\xe4\xf1\x1b\x70\x76\x77\x21\xa2\x15\x27\x02\x62\xdd\xac\x33\xa2\x29\x27\x72\xa2\xed\xb6\x9d\xd8\xf6\x9c\xcd\x40\x5e\xb4\xe8\x96\x9d\x08\x88\x04\xd1\xd6\xb3\x19\x78\xda\x61\x47\xb0\xd5\x67\x33\x9e\xd5\xf4\xb3\x19\x11\xd5\x5c\xed\x08\x57\x35\x1f\x98\xe3\x78\x7d\x73\x24\x44\xd2\xaa\x83\x8e\xa9\x74\x8e\x06\x7b\x50\x11\x7d\xac\xe6\x39\x1a\xea\x60\x6d\xf4\xbe\xea\xe7\x68\xa8\x47\x93\x85\xf6\x07\x5e\x36\x0a\x57\xe1\xb5\x03\x5f\x1b\xbd\x19\xd8\x2a\xe9\xcd\x08\xd7\x4b\x6f\x46\x54\xb3\x51\xf4\xce\xb9\xa6\xa4\xa8\xb6\xa3\x68\xa0\x6f\x7b\xfa\x1d\xf7\x37\x20\x45\x83\x1c\x6c\x54\x8a\xa4\xbc\x76\x44\x12\x0d\x5c\x9d\x65\x3b\xc6\x1b\x95\xb6\x9f\x1b\xd5\x46\xf6\xe7\x1a\x6c\xd6\xd0\x7e\x78\x38\x2c\xa4\x19\xa1\x78\x05\x3b\xbe\xde\xa8\x05\x3b\x62\x63\x17\x10\x20\x43\xd1\x0d\x76\x44\x60\x50\xa8\x35\x6a\x33\xa2\x9b\xa4\x22\x96\x53\xb7\x51\x0d\xb7\x4b\xdd\x5f\xdd\x98\x5d\xa6\xfb\x64\x10\x3b\x03\xcd\xbc\x5a\x0f\x86\xb5\xa0\x16\x2c\xaf\x07\x05\x16\xf4\x15\x68\x49\x87\xad\x9a\x0e\xfa\x29\x21\x0e\x73\xa4\x95\x53\xf4\xfc\x4e\xd3\xde\xa9\x19\xc7\x68\xf4\xd4\x8c\x58\x41\x14\xd7\xfc\xa9\x19\x71\x6d\xa0\xd0\xec\xaa\x6e\x17\x85\x6d\x08\x85\x17\x75\x22\x1a\x47\xb5\xe6\x13\xb9\x8d\x24\xb2\x99\x54\x33\x62\xdb\x4a\x45\x80\x06\x2d\xfc\x48\x0d\xa6\x9a\x11\xad\x48\x90\xb8\xa6\x53\xcd\xc0\xb6\x9f\x8a\xdb\x92\xbd\x56\x55\x71\x8d\xa8\x9a\x31\x61\x1b\x62\xc4\x23\x12\xd1\xa6\x6a\x7f\x52\x48\x19\x88\xcc\x4a\xde\xac\xe4\xfd\x9a\x94\xbc\x50\x7b\x2c\x3c\x37\xf2\x6d\xb4\x42\x8d\xb2\xa2\xd4\xb1\xfe\x86\x5a\x64\xbf\x65\x16\x5e\x6b\xc4\xb4\xd6\x8a\x65\xc4\xc7\x69\xb2\xd5\x8c\x68\x32\x19\xd7\x78\xab\x19\xf1\x2d\xb8\xf0\x37\xd4\xc8\x25\xf8\x66\x5c\x68\xb8\xdd\xa6\x5d\xe1\xb6\x5c\x51\x32\x4f\x7c\xfb\xae\x66\x4c\x91\x7e\x22\x5b\x7a\x35\x03\xdf\xdc\x2b\x8a\xcf\xfb\x46\x60\x53\xdb\x7c\x35\x63\x92\xc0\x83\x6e\xfd\xd5\x7a\x05\xd9\x04\x2c\x6a\x1b\xba\x0d\xc3\x06\xda\x81\x45\x41\xc4\xb4\x0e\x6b\xc6\xa4\xcd\xc3\xb7\x13\x6b\xc6\x31\x1b\x8b\x3d\x6b\xfa\xf1\x52\x1e\xaa\xed\xd8\xfe\x9c\xd0\x42\x5e\x9c\x51\xee\x4b\x1a\xdb\x90\x40\x6d\xe8\xc6\xb3\xcd\x23\xae\x50\xf7\x6f\xd1\x43\xec\x52\xbe\x9c\xfb\x14\x67\x55\x88\x70\x0f\xe3\x3a\x1f\xcf\xee\x61\xb4\x7b\xd8\x9e\xd7\xec\x1b\xee\x8c\xd9\x37\x3c\xfb\x86\x67\xb3\xc1\x6c\x36\xf0\x63\xf6\x0d\x63\x41\xce\xbe\x61\xc4\xc3\xb3\x6f\xf8\x57\xea\x1b\x76\xc2\xaf\x75\x0c\x23\x11\xed\x8b\xfb\x85\x5d\x73\x95\xcb\x24\x91\x95\xd0\x1f\xe5\x03\x0b\x38\x99\x50\x0a\xd0\x01\xcc\xc0\xc2\x4e\xa3\x2b\xd1\x2a\xe5\x46\x2f\x89\x3c\xdb\x4b\xf7\x9a\x57\x1a\x0c\xaf\x10\x29\x4b\x6b\x78\x44\x62\x44\x71\xf3\xaa\x36\x6b\x5f\x92\x4b\x52\xb2\x84\x17\x9c\xd9\x0e\xc3\xd4\xfe\x6e\x0f\xdf\xd7\x8e\x47\x40\xe4\x5a\xb1\x6c\xed\x6a\x71\x8b\x56\xef\x95\x96\xb4\xef\x08\xb9\x9f\x2a\x46\x0e\x5f\x37\x53\xb5\xca\x88\xf4\x45\xa2\x7d\x33\x9a\x92\xfd\xa7\x97\x02\xec\x8a\x30\x97\xbf\x35\x8b\x8e\x5b\x10\xb6\xb4\x99\xba\xfb\x3c\x2d\xb8\xcb\x9e\x3e\xe6\xed\x66\x9f\x0a\x5e\x02\x7a\xde\xb3\x44\x8a\xe1\xb6\x93\xcd\xe8\xa0\xc2\xcd\xfe\xfb\x1e\x27\x9c\x05\x95\xa5\x24\xad\x4a\xac\x4b\x5e\xae\x8d\x28\xc9\x53\xae\x77\xb5\x23\xd6\xf5\x36\xa2\xf6\xae\xd4\x08\xa3\x90\xb6\x75\x8b\x48\xb4\x28\x4a\x49\x93\x2d\x53\xad\x15\x5b\x19\xd3\x65\x90\x85\xaa\xcf\x36\xc3\xf5\x00\x03\xf5\x0e\xa0\x1a\xe9\x25\xdb\x91\x52\x6a\x1f\x4a\xb0\x37\x69\xec\x34\xad\x07\xc1\x4f\x08\x3e\x60\x85\x05\x5d\xee\x20\x22\x41\xb6\x3e\x82\x5e\x3b\x6f\xa1\x2f\xd4\x07\xc9\x52\x5f\x1f\xe4\xaf\xdf\x90\x82\x95\x89\xbb\x75\xb8\x68\x1d\x28\x6b\xa1\x25\xc9\x8c\xcc\x66\x48\xf9\x30\xf8\x3f\xfe\x99\x6c\x65\x55\xaa\xa5\xcf\xe8\x42\xcd\x99\x7c\x0b\x6f\x59\xed\xd6\xab\x18\x9a\x64\x8c\x2a\x4d\xbe\xfd\x86\xe4\x5c\x54\x86\x35\x07\x81\xb5\x84\xdf\xbf\xfc\x19\x79\x69\x70\x62\x2f\x4e\xe0\x3d\x74\xa2\xbb\xbb\x51\xd8\x9a\xba\x4e\xee\x75\x37\x7e\x3c\x5b\xb0\xf5\x6d\xa8\x95\xbd\xe7\x1d\x73\x6c\xa1\x7d\x12\x42\xcb\x23\x52\x0a\x9c\x0c\x89\x90\x0a\x51\x5c\x17\xf1\xd0\xb8\xa8\x38\x9e\x02\xe7\x0c\xf1\x3d\x7f\x1b\xfd\xf0\x3f\x2a\xb9\xda\xe9\x70\xae\xeb\xff\xb0\xcf\x75\x93\x5c\xfd\x8f\xfd\x45\x65\x7a\x17\xd9\x29\xf4\xde\xd4\x94\xe9\x79\x36\xc4\xf1\x37\x46\x0f\x45\xe5\x41\x81\xc6\x0a\xc9\xab\xb4\xa8\x0d\x8d\x49\xc2\x6c\x83\xc7\xeb\x56\xcb\x79\x69\xa1\x8e\x1e\xcf\xb1\x32\x42\x47\x6b\xb7\xf8\x9d\xf5\xf9\x50\xc3\x5a\xe3\xb1\xcb\x87\x87\x65\xcd\x92\x6d\xb8\xd2\xe8\xbe\x0b\xf6\xe1\x2e\xe2\x28\x2e\x36\xb6\xc6\x76\x5e\x65\x9a\x17\x59\xbd\xe2\xc1\x75\xd6\x80\x1c\x1f\x6a\x1b\x3b\x69\xcb\x06\x47\x6d\xda\xb4\xad\x22\x55\x50\x3e\x4c\xf6\x5e\xd6\xdf\x66\x42\xdb\x12\xcf\xa5\x61\x73\x05\x2d\x69\xbd\x9d\xd0\xdf\x55\xbd\x72\xf6\x54\x0a\x4e\xe0\x61\x92\x0f\x1e\x61\x03\x8d\x66\xf5\x36\x81\xa3\xd0\xb9\x0f\xa7\x22\x96\x66\x82\x8a\x41\x1f\x45\xd7\xfc\x00\x8f\x12\xf9\x54\xc7\xfb\xd9\x66\x1b\x7b\x18\xe5\x24\xc6\xbf\xd1\xe4\x81\x89\x61\x0d\x04\x7a\x20\xc1\x46\xa4\x3b\x41\x73\x5b\x6f\xab\xdd\xd6\x79\x0f\xae\x3a\x77\x76\xb3\xb1\x02\x9a\x4c\xfb\x24\xf0\xd1\xc6\xaa\xc1\x5d\xa9\x14\xb2\xd4\xcf\x0f\xca\x36\x77\x1e\xbb\xff\xca\x7a\xf4\x4a\xfe\x98\xb0\x90\x88\x63\x3e\x3c\x75\xd2\x8f\x83\xb5\x05\x0e\xa6\xed\xea\x0a\xf0\x16\x76\x83\x79\xae\x76\xbd\x40\x55\x2f\x9a\x99\x2b\xbf\xf3\x91\x24\x83\x93\xde\x43\x80\xd5\xee\x39\xfd\x57\x42\xed\x47\x2c\xea\xf7\xfe\x71\x50\x26\x1d\xe5\x53\xe5\x2a\x9c\xa3\x7d\xf6\xe1\x6f\xd7\x5d\x3a\xf3\x81\xa6\x52\x91\xbf\x65\x32\x79\x20\xd7\x0c\xc4\xd7\xcf\xdd\x94\xa4\x5c\xa5\xcf\x2b\x45\x3d\x97\x52\x1e\x84\xf9\xb5\x94\x52\x2e\x57\xa9\x35\x7b\x0d\x43\xfd\x6a\x0b\x29\xe7\x74\x83\xad\xa9\x6f\x34\x60\xb8\x50\xf0\x92\xef\x7b\x35\xf1\x2a\xfc\x7e\x2b\x9f\x16\x5a\x2e\x2a\xc5\x16\x7c\x30\x88\x22\x38\xff\x07\xb6\x33\x7f\xc3\xad\xe0\xef\xf6\xe1\x8e\xca\xa2\x25\x18\xd8\xe1\x77\xc3\xa9\x3f\xfc\xed\xda\xb0\x8b\x5a\x62\x1a\xdc\x7d\xae\xc8\x05\xd3\xc9\x45\xc2\x8a\xed\x85\x9b\xc6\x17\xdf\x8e\x5c\x0a\xae\x65\x89\x6c\x5d\x74\x49\x12\x99\x65\x2e\x8b\x5f\xae\xc9\x15\x2b\xb6\x35\x88\x53\xaf\xe5\xf4\xc5\x78\x0b\x29\x71\x45\x4c\x5b\xa8\x6d\xde\x71\x98\xdd\x52\x0c\xca\x55\x1c\xf1\xf8\x9c\x47\xfe\x0b\xea\xf1\x78\xf4\x6d\x39\x5e\xed\xe2\xb3\x7b\xff\x38\x28\x82\x2d\xaf\x4a\xb7\x54\xb1\x03\x3b\xb8\x33\x1d\x12\x72\xbb\xb6\xa2\x72\xca\x52\x22\x1f\x59\x59\xf2\x94\x29\x52\xd3\x8a\xb6\xe6\xc9\xb3\xa3\xf4\x73\x9a\xb0\x93\x73\x95\xe5\xcf\x5e\x65\x19\xad\xb8\xb4\x08\x93\x79\xe7\x90\x30\xd1\x34\xe7\xe2\x2b\x25\x4d\x81\x7a\xc9\x46\x86\xe8\xfd\x8b\x67\x40\xb1\x2a\x82\x4a\x68\xc6\x6e\x7b\x85\xb0\xae\x17\xcf\x3e\xd7\xd5\x14\xfc\x8f\xad\x4a\x85\x13\x2a\xb7\xfd\xbd\x46\x68\x22\x64\xda\x6f\xcf\xfd\xed\xd5\x2e\x6c\xe1\xab\x2d\xdd\x36\x95\xd5\x6d\xa8\x66\x4f\x14\xd9\xa6\xd5\x2f\x61\xaf\x92\xaf\x3f\xe8\xcb\xbb\x5b\xf2\xbd\x85\x37\xbd\x58\x62\x29\xb5\x95\x9e\xae\x65\x4e\x39\xb2\x89\xc6\xb6\xdb\x7a\xda\x4f\xe8\xae\x06\x46\x2c\x34\xdf\xe1\x63\x70\x7f\x6d\x5d\xa2\xca\x68\x3d\x4e\x23\x99\x6b\xd9\xf5\x8c\x38\x41\xa0\x91\x03\x5a\x66\x16\x1f\xe6\xd9\xf4\x36\x70\xa7\x36\x6a\x22\x6a\xdc\xaa\x44\x31\xa1\x38\x78\x46\x5a\xce\x73\xd7\xc4\xcd\xf6\xfc\xb3\x71\x9a\x56\x58\x18\xbe\x52\x6f\xe4\x86\x0b\x7f\x2b\xa5\x73\xd8\xad\xe9\xb0\xf4\x30\x73\xf7\xcf\xce\xdd\x95\xca\x6e\x04\x5d\x65\xc3\x8e\xa5\x2e\x11\xcf\x28\x78\x41\x19\xbc\x73\x91\x72\x65\xfe\x9f\xdc\xdf\xbf\x01\xe3\x73\x25\xbc\xe4\x09\x66\x58\x47\xb2\x86\x31\x24\x6d\x97\x20\x9e\x7e\x67\x2c\x3d\x41\xd7\x18\xbc\x15\xa9\x99\x26\x53\x9d\xd8\x18\x07\xc5\x96\x4d\xac\x03\x89\x21\xba\x60\xcc\x9f\xf1\x71\xcb\x93\x87\xbb\x96\x8d\x59\x96\xe6\x37\xd1\xfa\xa9\xc3\x54\xf6\xff\x36\x95\x08\xba\xe9\xde\x61\xd5\xc6\x8f\x2d\xea\x7d\xef\x96\x6a\x5e\x26\x54\x29\x99\xf0\xc6\x89\x00\xc6\x86\x9a\xbc\x0f\x1f\x1d\x90\xfd\xe9\xd3\x07\x0e\x3d\x89\x07\xf9\x83\xf2\x5d\x46\x55\x9b\xb7\x8c\xc4\x30\xbb\xd5\x4f\x9e\xb2\x45\x09\x74\x0d\xf4\x8f\x9d\xaa\xe7\x5e\x3e\xeb\xda\xbf\xeb\x20\xf7\x00\x81\xf6\x72\x93\xef\x64\x78\x70\x64\x75\xf5\x73\xe7\x5a\x3d\x89\xa5\xdc\x49\x34\xbd\x7f\xab\xf9\x56\xff\x5f\x87\x64\xba\x71\x19\x79\x30\xd9\xa5\x4f\x1b\xde\x73\xda\xd9\xdf\x9c\x69\x1c\x42\x84\x0a\x59\x54\x99\x8d\xdd\x18\x70\xf8\x1c\x16\x90\x9f\x64\x61\xb5\xdf\x9e\xd4\xdc\x3f\xb2\x5a\xea\x78\x48\xf9\x41\xe1\xd4\x10\x1d\x6e\x8b\xe2\x23\x85\x53\x5b\x12\xd5\x37\x7f\xf9\xf3\x9f\x47\x2a\xcc\x0f\x97\x58\x0d\x97\x52\x1d\x84\x8a\x09\x25\x1f\x0a\x11\x1f\x96\xed\x06\x42\xc7\x83\x21\xe1\xc3\xbc\x21\x14\x2a\x7e\x9c\x1a\xab\xa3\x96\xc9\x09\x39\x56\x75\x06\xd5\xc8\x56\x61\x32\xab\x7a\x32\x8f\x06\x21\x8e\xe7\x53\x8d\x64\x4b\x0d\x43\xec\xc9\xa2\x42\xe6\x48\x8d\x7a\x30\x1a\x37\x7e\x54\x66\xd4\xb0\x53\x68\x7d\xec\x7c\xa8\xc8\x2c\xa8\x26\xc7\x69\x10\x22\x3e\xf7\xe9\x20\xb3\x69\x98\xa1\xe1\x32\x9e\x62\x6a\xfc\x86\xb3\x9b\x10\x99\x4b\xb8\xc8\xdd\x60\x96\xd2\xb3\x72\x93\x90\x21\x61\xe1\x3c\xa4\x18\x56\xd1\x64\x15\x8d\x82\x24\x98\x9c\xa3\xc3\x5c\xa2\x00\xcc\x91\x4c\xa3\xe1\x0c\xa2\x00\xcc\x08\xa6\xd0\x22\xfe\x01\xa0\x71\xac\x01\xf6\x38\x00\x31\x9c\x4b\x84\xcf\x20\xc2\x06\x50\x86\x83\x27\xa3\x72\x84\x7c\xee\x4f\x60\xa5\x98\xcc\xa0\xfd\x8c\x1f\x04\xde\xf4\xe7\x03\x0d\xe7\xf9\x04\x40\x86\xb3\x80\x50\xd7\x33\x1c\xad\x39\x9e\xe7\x13\x88\xe3\x7c\x76\x78\x66\x38\xab\x24\x3e\x97\xa4\xe6\x11\x63\x62\xe6\x48\x0a\x09\xd6\x38\x86\xef\x42\xd5\xb6\xfe\x38\x85\xc0\x8b\xa0\x36\x48\xa6\xe9\x28\x35\xc2\xf7\xab\x01\x07\xe1\x71\x54\x02\x12\x46\xa9\x71\x25\xc9\x7e\x49\x86\x9b\x2c\x3a\xad\xff\xfd\xfd\x9e\x33\xa1\xfe\x79\xcf\x87\x60\xe8\x5b\xef\x84\x67\x1f\xc2\xc0\xf8\xdc\xfd\x8f\x66\x43\xf8\xa1\x21\x5c\x75\x8a\xc7\x78\x33\x80\x95\x73\xd6\xb2\x24\x72\xe5\xca\x4b\x8e\x4a\xd0\xcd\xa5\xb8\xbc\xbb\x35\x7a\x34\x64\x03\xd1\x4c\x2d\xfb\x32\xa5\xd3\x40\xf4\x0d\x48\x4a\x8d\xbe\x41\xb5\x66\x79\xa1\x87\x0f\x7e\xb6\x83\x7f\x76\x3b\x78\xa4\x71\xef\xc7\xfa\xf1\xba\x25\x67\x95\x53\xb1\x30\x37\x0a\x2c\xe2\x1d\xa7\x99\x47\xa6\x80\x02\xbc\xf4\xcd\xb1\x2d\x5f\x02\x13\x09\x04\xc7\xdb\x56\x45\x8d\x16\xd3\xf4\x8a\x7c\xbe\x2d\x13\xe0\x44\xae\xd9\xb2\xcc\xbd\x9b\x96\xc8\xfd\x18\xce\xc1\xe5\xba\x85\xd4\xfb\xe2\x2f\x55\x8b\x1f\x77\xf4\x61\xbd\x65\x96\x6d\xdf\xc9\xf4\x6c\x18\xb9\x9a\xb7\xbb\x9a\x83\x55\x1d\x68\x96\xc9\x27\x3b\xd7\x36\xd7\x32\xe7\x64\xe6\x3e\x4a\x11\x80\x76\xe7\xdc\x28\xd1\xce\xe6\xda\x9e\xbe\xf5\x7d\x1a\xcd\x84\x95\x56\xfc\x2e\x9d\xcb\xec\x7e\x24\xf8\xa6\x85\x42\x46\x51\x15\x36\xc4\xd9\xfc\xb7\x8f\xbe\xb1\x95\x8c\x9d\xeb\x60\xc5\xb6\xf4\x91\xcb\x6a\x24\xfb\xf0\xde\x52\xba\x17\xee\x15\x60\x33\x3b\x59\xd5\xa6\x36\xdb\x2a\xb3\xde\x25\x75\x78\x0e\x83\xa0\xdf\x35\x2f\x81\xf2\x94\x4a\x6f\x9b\x58\xb0\x4f\x5c\xe9\xc3\x3d\x09\x15\xd8\xf1\xb5\x04\x4f\x20\x12\x3d\xaa\xc2\xf0\x30\x64\x63\xbc\x1f\xdb\x4f\x77\x45\xa3\xc7\x7b\xf8\xd3\x2f\xa5\x2d\xde\x2c\x1c\xb5\x47\xed\x20\xcb\x78\xb2\x43\x36\x87\x6b\x1c\x63\xe6\x25\xf2\x37\xaa\x58\x4a\xde\x52\x41\x37\x56\xbf\x7c\x79\x7f\xf7\xb7\xb7\xaf\xcc\xa1\x8d\x56\xd9\xbe\xbd\xee\xf5\xaa\xdd\xb7\x67\xf4\x6e\x7a\x3e\xc3\xde\xda\xd0\x4c\xeb\x48\xab\x7b\x46\x26\x86\x67\x3c\x63\xd5\x90\x0f\x93\x36\xf7\x5b\x77\xee\x5d\xcb\xc7\x3c\x3d\x49\x53\xce\x66\xaa\x71\x04\x68\xf0\x4f\x5b\x9a\xf5\x74\xef\x1b\x70\x4d\xd7\x39\x0c\x29\xd5\x74\x45\x15\xb0\x44\x0b\x01\x68\x0d\xcd\x32\x22\xd7\x6b\xb5\x95\xf2\x90\x02\xb6\x18\x5c\x53\xbb\x93\x7d\x32\x62\x1c\xb9\xfb\xf1\xca\x8a\x16\xa9\x21\x50\x87\x17\x6c\x58\x34\x77\xb1\x6e\xa3\x0b\x78\x6b\x9f\x31\x93\x35\xcc\xd7\xbf\xd3\x5a\x85\x50\x9a\x1e\xa6\xfd\x8f\xd1\x41\xba\x61\xfd\xf9\x64\xa3\xc7\x4b\xcb\x4d\x58\x27\x3e\xbb\x2c\x37\x55\x6e\x7b\x88\xda\xb0\x19\x26\x74\xb9\x83\x14\x5f\x9b\x0c\x9e\xca\xe4\xc1\xb0\xf5\x9c\x6e\xd8\xd9\x99\x22\x57\x6f\xfb\x1a\x37\x92\x7a\xc1\xbc\x3f\x4a\x66\x49\x7e\xa4\x25\x07\xd1\xb0\x15\xaa\xf3\x87\x97\x3f\x5e\x7e\xf8\xf9\xdd\xe5\xdb\x9b\xfe\x02\xa7\xe6\x98\xd8\xa7\x82\x42\x6d\x07\xdf\xe9\xba\x55\xc7\xd5\x4c\x88\x89\x47\x5e\x4a\x91\xbb\x0a\x6c\x60\x98\xb5\x5f\xea\x05\x99\x40\x91\x79\x6b\xc9\x57\x32\x7b\xf4\x8e\x91\x7a\x56\xde\x44\xc2\x45\x51\x69\x6f\x4e\x1f\xe3\xe6\x95\x48\xb6\x54\x6c\x7c\xfd\xdd\xd6\x9a\x88\xda\x09\x4d\x3f\x79\xcb\x28\x53\x09\x2d\x3c\x41\xa4\x24\x95\xd5\xd0\x24\xff\xf0\x87\x73\xc2\xd9\x6b\xf2\x87\x16\xb0\x25\xb9\x71\xef\xb7\x36\xd0\x3a\x5b\xd8\x23\x2b\xe1\x03\x6e\xab\xfa\x99\x50\xc9\x36\xb4\x4c\x33\x17\x5e\xd7\x36\x65\xf9\x0d\x23\x20\xcb\x28\x22\x4b\x73\x76\x4b\x72\x55\xef\x55\x55\xa4\xc3\xd2\x0a\x4e\x8d\xd2\x54\x3d\xa8\x0b\x2e\x0c\x59\x58\x98\xeb\xb0\xa0\x85\xe1\x84\x20\x2a\x5e\x58\xd3\xd8\x02\x32\x38\x45\xba\xa0\x0e\x2d\x17\xf5\x51\x5f\xfc\xbe\xac\x84\xd1\x5b\x17\xb4\x7e\x8a\x8b\x05\x5d\xa8\x2d\x1b\x50\xd5\xaf\x8d\x2c\x63\xa8\x49\xfa\x1a\xd4\xdf\xa2\x94\xb9\x59\x74\xa5\x96\xec\x13\xb0\xf7\x72\x69\x6e\x49\x9f\x6e\x35\xe2\x79\x41\x89\x66\xfd\x86\x47\x26\x1e\xc3\x57\xf2\x8d\x6b\x7e\xd1\x42\xec\xfa\x84\x5c\xe2\x63\x6d\xc7\xab\xb7\xa7\xff\x64\x0e\x0f\xb0\xb5\x29\xa8\xfd\x61\xe2\x31\x72\x7b\xba\xd5\x39\xc4\xe3\x8f\xb4\xec\x48\x95\xa2\x77\x61\xde\xcd\x37\xe4\x08\x33\x6a\xdf\xd5\xf8\x62\xc3\x56\x83\x71\x9b\x41\x67\xe2\x6d\x83\x41\xdf\x7c\xdb\x42\xe5\xd5\xcf\xb7\xd7\x37\xef\x3e\xde\x7e\x77\x7b\xf3\x61\x58\x85\x40\x68\xe9\x60\x27\x41\x4e\xf0\x2c\x40\x4f\x3b\xb4\x73\xc4\x78\xd0\x50\xd5\xa2\x64\x46\xc1\x52\xde\x4c\x3d\x80\x80\x16\xf3\x46\x20\xd6\x38\x69\xf9\xb4\xa8\xb3\xc0\xfb\x01\x62\x88\xb6\x03\x3c\x99\x74\x8f\x00\x35\x77\x63\x0a\x01\x1f\x01\xe9\x49\xfb\x14\x32\x3e\x3e\xd3\x9a\xc0\x47\x11\xf3\x11\x98\x40\xe6\xdb\x96\xd1\x17\x2f\x46\xdc\x71\x58\x14\xfe\xae\x94\x83\xa1\x6d\xfb\x32\xb9\x2d\xd0\xec\xa2\xa7\x7b\x31\xe4\x4c\xb9\x70\x86\x91\x75\xb4\x08\x9d\x13\x42\x7c\x66\x3b\x48\x21\x2c\x2f\xf4\x60\xe4\x78\x74\x8f\xda\xbf\xb3\x5d\xb0\x38\xfd\x9e\x75\xd6\x57\xa4\x7f\x60\x3b\x1b\x0f\x57\x77\xa9\x1a\x77\xb6\xe1\x2b\x69\xa1\x2a\x87\x0e\xf9\xe5\x6d\x71\xec\xa3\xd6\x75\x9a\xeb\xe3\x0d\x8c\xaf\xb9\x3e\xde\xb4\xde\x69\x27\x2c\x91\x87\xad\xfa\x13\x2a\xe5\x87\x2c\xb5\x87\xeb\x88\x35\xd4\x6e\xa2\x13\x18\x06\x5d\xad\x9c\x19\x49\x91\x9c\x69\x6a\x64\xde\xa5\x41\xbc\x60\x88\x49\xfb\x61\xb0\x3a\x9e\x37\xbf\xf9\xb6\x58\xf5\x0f\xed\xa6\x59\x01\xc0\xaa\x60\xc9\x52\xc8\x14\xac\xae\xe7\xf6\x9f\xdd\x4a\x80\xee\x0f\x9a\xea\x4a\x2d\xb7\x52\xe9\xdb\xbb\x20\x50\xfb\x70\x21\xd3\xdb\xbb\x40\x28\x47\x44\x5d\xc0\x88\x7e\x5a\xb1\x5d\xb4\x70\x25\xca\x8f\xd4\x3b\x2b\xe2\x1e\x47\xf4\xc9\xc2\x76\xc7\x3a\xe8\x78\x85\x58\x78\x54\x4f\xac\xa3\x97\xef\xc2\x75\xbd\x42\x5e\xe7\xb8\x7e\x32\xf1\x5d\x64\xc0\x3b\x15\xd8\x23\x7c\xef\x98\xbd\x9e\x30\x01\xb8\xee\x61\x56\x6c\x59\xce\x4a\x9a\x2d\x9c\x4d\xb4\xdb\x4b\xe6\x7c\xbf\x91\x4c\xe8\xde\xb5\x5b\xcf\x1c\xc0\x7e\x35\xb1\xbb\x0c\xfe\xde\x47\x76\x92\xc1\xf7\x8f\xa9\x4b\x1e\x21\x6e\xc0\xc4\xae\x31\x11\x57\x1d\xdd\x21\x06\xdb\x17\x66\xaf\xd7\x0b\x62\x91\xfd\xdd\x60\x50\x1d\x5e\x22\x16\x8a\xef\xe6\x72\xcc\x1e\x2e\x47\xa7\x4a\xa8\x2e\x2d\x51\x2d\x4c\x8e\xa1\x43\x1c\x86\x74\x29\x64\x93\xcc\xcf\xa1\x56\x74\xe3\xce\x1a\x96\xb4\x2e\x65\xbe\x24\xd8\x16\x6a\x3e\xd2\x96\xa7\x1e\xd2\x03\x1b\xd1\xe4\xfc\x98\x15\x95\x5f\xb7\xa2\xf2\x75\x15\xf2\xfe\xac\x5a\x4a\xf0\xa1\xf1\xd9\x2c\x00\xe1\x47\x0c\xdb\x83\x90\xc7\x0c\xdb\x8d\xe9\xb8\xef\xab\x21\x72\xe3\xad\xcd\x43\xfb\x87\x21\x57\x43\xee\x2e\x3f\x9e\xe7\xf6\x1a\x3d\xb6\xab\xb7\xd7\x93\xdc\x5f\xa3\x40\x87\x4c\xb9\x18\x37\xd8\x28\xe0\x8e\xb5\x15\x6d\x53\x1d\x05\xd9\xe7\x2a\x0b\x5b\x55\x47\x41\x8e\xb9\xcc\xc6\xed\xaa\x81\x9b\x1a\x72\x9d\xf5\x5b\x56\xc7\xaf\x6d\x94\x0b\x0d\x53\xff\x85\x8c\xd7\xb6\x3b\xa9\x2b\x6d\x8c\xe4\x23\xfa\x2e\x21\xf9\x01\xa6\xd1\xc6\x80\xb7\xcc\x8f\xce\x8d\x8e\x70\x9a\x8d\xe3\x5d\xed\x63\xc2\x7a\x3f\xed\x40\xec\xcc\x34\xc7\x58\x80\x4d\xb5\xb2\xe3\x82\x0e\xb2\xe6\x1d\xac\xf4\x37\x41\x36\xc2\x39\xce\xb0\x92\x1f\xce\xb5\xe6\x47\x84\x2c\x12\x70\xb5\xf5\x2e\x0d\xe3\x72\x43\x2c\xac\x87\x92\x8f\xb9\xde\x10\x10\xf7\x9d\x73\x38\x17\x5c\x0c\xe0\x25\x8e\x6d\xa0\xf4\x4e\x44\x9c\x45\x8b\x79\x60\x64\xdf\x23\x45\x5d\x74\xc7\x71\x9d\x77\x7e\x44\x3a\xf1\x50\xe8\xd4\x61\x38\x68\x67\x9e\x1f\xb1\x97\x66\xdc\xb9\xe7\x47\xbc\x93\x0f\x85\x8e\x90\xd5\xfc\x3c\x67\x9f\x1f\x71\xad\xf9\xa2\x9c\x7f\xfd\x9b\x30\xd9\x09\x38\x6d\xc6\x24\xae\x9d\xe0\xf3\x9d\x83\x7e\x4c\xe8\x9b\x8b\xe3\x33\xbd\x13\x0d\xea\xe2\x68\xb0\xb8\x72\xc2\x47\xd5\xda\xfd\xc0\x6b\xef\x11\x40\x71\xc9\x23\xdd\x31\xe1\xec\xf0\x5a\xbd\x1f\x78\x37\x64\xc4\x6a\x1b\x53\x40\xb4\xa2\xef\x07\x5e\xe1\xf7\x23\xae\xdf\x33\xb6\xb5\x5d\x74\x9b\x67\x9c\xdb\xd2\x8f\x78\xf7\x25\x72\x07\xbb\x4e\x4e\x94\x1b\x33\x16\x72\xdb\xd9\x89\x75\x67\x22\xbf\xd1\x75\x7a\xc6\xb8\x35\xfd\x88\xa7\xcf\x31\x6e\x4e\x3f\x62\xdd\x9d\x11\x77\x88\xab\x63\xb9\x3d\xfd\x98\x40\x4f\x22\xdc\xa0\x7e\x44\xb8\x43\x23\x76\xa3\x5b\xef\x24\xca\x2d\x5a\x83\x88\x5d\x7e\x2c\x41\xc1\xb9\x4b\xbb\xd3\x89\xe8\x1e\x1f\xe3\x3e\xf5\x23\xde\x8d\x8a\x65\x34\x22\xdb\x45\xb8\x53\x91\x50\xbb\x4e\x57\xac\x5b\x15\x09\x7c\xcf\xf9\x1a\x72\xaf\x62\xa9\xc6\x24\x27\xac\x1f\xf1\x54\x2a\xd2\x29\xeb\x07\xde\x39\x1b\x71\x29\xeb\xce\x35\x13\x9d\xb4\x7e\x4c\x20\x4c\x68\xa7\x6d\xfd\x02\xde\x79\x1b\x49\x96\x9c\x9b\xf7\x39\x4e\xdc\x1a\x5c\xfc\x46\xe0\x9d\xba\x7e\x1c\xd3\xb9\x3b\x79\xe2\xb1\xb4\x15\xe5\xf4\xed\xce\x06\x4d\x5a\xf1\x4e\x60\x3f\xa2\x9c\xc1\xc8\x4d\x8c\x71\x19\xd7\xef\x7c\x01\x25\x74\xc0\x95\x1c\x71\x69\x5a\x4e\xe7\xa9\x2e\x65\x3f\x66\xf5\x76\x56\x6f\x47\x07\xde\x79\x1d\x23\x9a\xff\x36\x75\x5b\xf4\xc3\x58\x17\xfc\xa0\xf3\x3b\xf2\x8b\x18\xff\x95\x11\xcb\xd0\x0e\xac\x3b\x59\x6a\x22\xaa\x7c\xc5\xca\xc6\x50\xea\xfc\xe2\x44\xf1\x94\x91\x84\x8e\xfa\x75\xb0\x75\xd2\x70\x55\xd2\x6a\xc9\x02\xef\x53\xbf\x92\x79\x51\x69\x46\x3e\xd4\x22\x7a\x2d\xe3\xad\x76\xcd\x5a\x02\x29\x6b\x7e\x8c\x3a\x4e\x51\xa4\xcc\x57\x45\xb6\x5e\xd1\x1c\xf2\xbc\x17\x89\x9d\xe4\xa2\x5e\x5f\xcb\x2d\x3a\x46\x47\xb0\x6c\xcf\xea\x0f\xc1\xf0\xe6\x34\xe5\x96\xac\xdc\x45\xb0\xd3\x98\x00\xc3\xbd\x8c\x42\x50\x95\xec\x8f\x2b\x27\x82\xe6\xf4\x13\xcf\xab\x9c\x50\xd7\x64\x2f\x2c\x83\xba\xbd\x6b\xe9\x60\x50\x53\xe4\x4b\x1f\x0d\x89\xa5\x13\x46\xfb\xfa\xca\x4e\xe8\x83\xd7\x60\xf7\xce\x88\x8b\xd6\x19\x05\x3f\x2f\xd7\x3d\x67\xe4\x2f\x21\xb8\xf0\xea\xef\x70\x45\x64\xce\xf5\x58\x0f\x4a\x3f\x6c\x41\xf8\xfa\x2c\xce\x09\xd7\x1d\x6d\xc3\x61\x17\x44\xbe\x40\x7d\xee\x20\x44\xf6\xa9\x2e\x81\xd1\xaa\x22\xd5\xf4\xb4\x87\x7a\x30\x84\xe7\x85\x2d\x6b\x08\x58\xb2\xc0\x72\x3c\xe7\x24\xfa\x85\x60\x24\xea\x31\xc5\x92\xaa\xe4\x7a\x67\x74\x68\xf6\x09\xcf\x53\xce\xee\xdd\x8b\xad\xca\x9f\x60\xda\xf5\x25\xc1\xcb\xca\x76\x2a\x18\x27\xc5\x91\x5b\x59\x40\x79\x8d\x0b\x3f\x69\xd8\x33\xf6\x49\x5f\x1c\xe1\x1b\x36\xf0\xa5\x2e\x77\xbf\x28\x64\xda\x3a\x92\x83\x2f\x1e\x83\xa0\x03\x89\xbb\x2b\xf9\x23\xcf\xd8\x86\xdd\xa8\x84\x66\x80\x23\x21\x62\xb0\x17\x6f\x36\x00\x05\xae\x55\x29\x33\x85\x0a\x34\x82\xf9\x98\x99\x43\x3b\xdc\x84\x0a\xb2\xa1\x5c\x90\xdc\xec\x5d\xe1\x81\x2b\xdb\xfa\xde\x5c\xc9\x82\x96\x18\x3f\xbf\x03\xe8\x4a\xcc\x1a\x19\x91\xa4\x50\xb9\x3c\xdb\x35\xf3\x73\x5d\xf6\x85\xfc\x59\xb0\xa7\x9f\xcd\xd7\xc2\xf7\x7c\x9d\xd1\xc6\xa5\xaf\x58\xdd\xc9\xb5\x09\x4f\xa8\x3f\x3d\xb4\x41\xc1\x6f\x70\x45\x74\x59\x31\x42\xb3\x27\xba\x83\x6d\xdc\xff\x06\x57\xaf\xc9\xb7\xaf\x00\xd7\xa9\x22\xf5\x37\xc2\x94\xe4\x8f\xaf\xc8\x96\x2a\x72\x75\x79\xf7\xf3\xfd\x7f\xdc\xff\x7c\x79\xfd\xf6\xf6\x1d\xee\xda\x63\xe4\xec\x84\x16\x74\xc5\x33\x8e\xe1\x2c\x07\x5a\x71\xfb\x65\x20\x97\x69\x7a\x91\x96\xb2\xb0\xeb\x77\xe1\x5d\x08\x86\xee\xf6\x68\xaf\x29\x60\xbb\xee\x16\x1c\xdb\xba\xf3\xc1\x20\xdc\x4d\x49\x45\xab\x76\x52\x73\x14\x65\x25\xa0\x27\x6f\x00\x42\x8c\x8d\x81\xa6\x28\x0d\xa5\xb3\x83\x97\x69\xca\xd2\xb8\x25\xa1\x22\xbc\x7a\x3f\x76\xe5\x3f\xd3\x6a\xab\x4e\xee\xde\xdf\xdf\xfe\xcf\xd8\x19\x10\x87\x5f\x11\x6a\x16\x5a\xd5\xc5\xe8\x33\xf5\xf2\x4a\x39\xd8\xcb\xbf\xf3\x5c\xb7\xb7\x7c\x2e\x1f\xe7\x5d\xef\x7b\x1c\xb3\xeb\x68\x01\xb7\xe6\x03\xc1\x6b\xd1\x3d\x9e\x4a\xb4\x49\xa6\x68\xc1\x81\x5a\xde\x4b\x72\x67\x49\x35\x62\xcf\xba\x6f\x37\x44\xc6\xc6\x31\x2b\x65\x4b\x89\x66\x3b\x62\x24\xd3\x47\x9a\x61\x78\x94\x96\xa4\x94\xb2\xd3\x0b\xbc\xaf\x91\xe9\xd1\xa8\xb3\x61\x4c\x50\xc2\x35\x6a\x17\xeb\xb7\x48\xca\x84\xd4\x4e\x8a\xf7\xdd\xbd\xcd\x5f\x09\x4e\x92\x6f\x15\x6c\xed\x50\x50\xe5\xa2\xd3\x9b\x7e\x4a\x6e\x0f\xee\xfc\x97\x83\xa0\x6d\x73\x85\x4a\xb9\xc9\x1d\x10\xe7\x46\xb6\x37\x5f\x2f\x19\x4d\x11\x59\x8e\xb6\xa8\xba\x72\x4d\x11\xd4\x83\x6f\x10\xe1\x64\x0a\xa7\x83\xd8\x2f\xd6\x53\xfd\x88\xb9\x55\x6b\x46\x75\x55\x32\x2b\x4b\xd8\x3a\x79\xb6\xf9\x56\x30\x34\x30\x22\x0b\xcc\x16\xf1\xfd\x20\xa5\x6e\x8a\x08\x46\x1d\xfc\x4f\xb5\x79\x8f\xab\xd6\x96\x6e\xa9\xf5\x7c\xd2\x74\x81\xda\x44\x40\xf1\xa6\x46\x61\xa7\x71\xd6\x91\x11\xbc\xac\xc4\xa5\x2d\xe4\x1f\x2d\x7c\x7c\x7f\x7b\x0d\xf7\xb1\x12\x7b\xa9\x13\x07\xae\x5d\xbc\xe8\xf9\x83\xc1\xc7\x3d\x0c\x74\x95\x10\x99\xb6\x25\xed\x69\xa6\xe4\x58\x45\x4d\x3f\x5c\xa4\xf7\x9d\x4c\xef\xbb\x7a\x93\x2d\xb3\xea\xfe\xbc\x92\x7a\x4b\xf6\x1e\x08\x0b\x1b\x22\xed\x81\x7b\xee\x42\x36\xb3\xaa\x1d\x30\xc0\x45\x34\x78\x4d\x1f\x98\x22\x45\xc9\x12\x96\x32\x31\x5c\xde\xd6\x8f\x96\xc9\xef\x2f\x7f\x46\x61\x46\xb8\x39\x82\xc3\x8c\x77\x52\x98\xeb\x10\x85\x1b\x3d\xc5\xfb\x9a\xab\x00\x86\x6b\x2b\x83\x23\x74\x1c\x21\xc5\x02\x2e\x43\xe5\x7b\x33\x1b\x21\xff\xbc\xae\x5e\x9b\xf9\x46\x3b\xe0\xc7\xa1\x3a\x8c\x15\x10\x6a\x0c\xad\xf0\xa9\xae\x11\x0d\x3a\xf9\x29\x43\x5e\xac\xe9\x42\x93\x54\x32\x1b\x45\x5a\x56\x61\xdd\x83\x2a\xf2\xc3\xed\x35\xf9\x86\xbc\x34\x73\x7d\x05\xe8\xb1\xa6\x3c\x03\x17\x15\x34\x5f\xd8\xd3\x44\xc2\x36\x36\x37\x85\xa5\xeb\x56\x64\x73\xdc\xe0\xea\x9f\x13\x21\x89\xaa\x92\xad\x5f\xb3\x6f\x29\x19\x84\xb9\x62\xa4\x60\xa5\x41\x16\x30\xd5\x35\x57\x29\x70\x55\xb0\x37\xad\xef\x2a\x0d\x5d\x15\xd4\x39\x85\xaf\x52\xf4\x55\x89\x24\x8c\x3f\x8c\x34\x7d\xf6\xe3\x80\x2e\xfe\x70\x02\xba\xd8\x16\x71\xa0\x4d\x69\x67\x57\x2c\x42\xfb\xe8\xb8\x30\x72\x75\x2b\xcb\xfe\x46\x51\xe1\x34\x54\x53\xb1\x37\x5c\x54\x9f\x6c\x97\xa1\x78\x85\xfe\xfe\x06\x5e\x27\x89\x5f\x14\x1c\x0a\xa4\x75\xd9\xfa\xc0\x18\xaf\x7e\x2b\x79\x69\xbf\xd9\x59\xbf\xa8\x87\x22\x1f\x34\xcb\xa4\x21\xeb\x46\x92\xa1\x22\x95\xf9\xc1\x64\x21\x04\x87\x26\xdb\xf6\x04\x0c\x72\x21\x40\x63\x90\xaf\x8d\x5c\x41\x90\x48\xe4\x6b\x90\x2b\x8c\xda\xc7\x44\xbe\x18\xd3\x46\xc6\x1e\x19\xca\xef\xdc\xcd\x84\x33\x6f\x19\x81\xd1\x9f\x12\x80\x21\x10\x70\xeb\x3a\x3f\x01\x56\xe1\x74\x5f\x67\x0d\x42\x3a\xed\xdc\x3b\x31\x4a\x70\x29\x33\x54\x6c\x44\x57\x5b\x95\x19\xa4\x7b\xd0\x7a\x91\x06\xcc\x57\xbb\x46\x3d\x52\xc2\x7c\x70\x8d\x46\x3b\xea\xae\x11\xf4\xc8\xaf\x75\x8d\x15\x82\x63\x1e\xac\xd1\xb0\xd9\xee\x1a\x81\xc7\x7d\x9d\x6b\x44\x9b\x60\x9e\xb8\x48\xe5\x93\x9a\xca\x0a\x7e\xb2\xaf\x7b\xba\x93\xf8\xde\x32\xaa\xc5\x0e\x30\x44\xbb\x63\x35\xe8\xe3\x07\xde\x29\xb4\x2e\x65\x8e\xe2\x2f\x87\x74\x74\xaf\xd3\xc4\xaf\x4b\xbd\x8a\xa1\xd5\x9b\x5c\xd1\xab\xba\x4d\xce\x7d\xc1\x92\xe8\xcb\xf0\xfd\xdb\xfb\xcb\x2e\x08\x08\xc8\x87\x52\xef\x66\x07\xcc\xdf\x51\xf7\x80\xa6\x39\x57\x90\x16\xf0\xc4\x56\x5b\x29\x1f\xc8\x4b\xef\x53\xdb\x70\xbd\xad\x56\xcb\x44\xe6\x2d\xf7\xda\x42\xf1\x8d\xba\x70\x58\xbb\x30\x2b\xc1\x45\x22\x73\x91\x71\xd1\x32\x23\x41\x1a\xb3\x13\x75\xcd\x64\x5b\x7d\x83\xe0\xe0\x50\x40\x05\xcd\x1b\xcf\xc1\xe1\x96\x40\x38\x1c\x04\x8e\x59\xd3\x12\x0a\xa6\x4d\x03\x80\x1e\x28\xc5\x96\x2e\x2c\x43\x34\xc8\xc6\x95\x8d\x2a\xdf\x4a\x21\x5d\x9c\x8a\x62\xe5\x23\x2b\x91\x04\xc7\x50\x28\x6b\x8d\x82\xe9\xba\x9b\x0b\x6b\x6f\xdb\xad\x8e\x4e\x6c\x0f\xb1\x0d\x1b\x9a\x1d\xc0\xb8\x76\x47\x9f\x60\xa8\x94\x1f\x23\x47\xee\xd4\x16\x67\x06\x84\x73\xc0\xa1\xd6\xaf\xe7\xac\x6a\x7d\x72\xd2\x11\x81\x5e\xe9\x5e\x36\x34\xcf\x33\x87\x46\xcf\x44\xad\x7e\x44\x17\x3d\xd4\x35\x63\x98\x6d\x48\x27\x45\x76\x33\xe9\x0e\xa4\x5e\x6a\xb9\x0d\x92\x54\x1d\x57\x35\x25\xa7\x53\x4f\xed\x68\xee\x4b\xef\x5d\xd0\xfb\xd7\x01\x05\xb4\xb9\x32\x43\xd7\xe1\x43\x1b\x59\x71\xb4\xf5\x74\x77\xe7\x78\x21\x34\xc1\x47\x8c\x86\x5f\x3e\x22\xbb\x81\x9e\xdd\xba\xa7\x09\xd5\xce\x9d\x92\x33\x5d\xf2\x44\xf9\xb8\x1a\x83\xb7\x49\x09\x85\x02\x5a\x45\xf6\x07\xd7\xe0\x85\xa8\xd2\xf9\x48\xa1\x98\xc7\xba\x82\x7d\x2d\x59\xc6\xa8\x62\x13\x5b\x67\x12\x2b\x4b\x0f\x0a\x30\x71\x61\x6e\x88\xb3\xdb\x0b\x3c\x84\x8f\x83\xdf\xef\x81\xed\x48\xd3\x68\x5d\xf9\x58\x31\x9b\xc2\x1f\x0e\xe9\xbf\xab\x0b\x4c\xd5\x1d\x54\xc8\x23\xa7\xe4\xde\xe6\x7b\xfa\xb6\x2b\x76\xb5\xcb\xcf\xb3\xeb\x23\xf8\x24\xa2\x3a\xcb\x9d\x35\x4d\xe5\xe4\xba\xb5\xd4\xa5\x5f\x9e\x6f\x23\xa3\xc6\x2d\x36\x2b\xe6\xdb\x8a\xd9\x3c\x10\xde\x4a\xee\xe8\xec\xc9\xfe\xda\x07\x21\x1e\x13\x13\xc7\xc2\xa1\xbb\xdb\x81\x8b\x85\x46\x1d\x72\xa5\x9a\x57\x97\xe6\xff\x86\xa6\x8f\x09\x9f\x0e\x59\x03\x47\xd1\x62\x34\xa2\xfa\x14\x91\xd4\x5f\x20\x82\xba\x77\x1e\x98\x36\x23\x35\xb0\xbe\xe3\x09\xe9\x61\xe3\x31\xd7\xa7\x26\x71\xa8\xd8\x6a\x1f\x97\x3b\xf8\xdd\xaf\x28\xa6\x1a\x55\x60\x70\x2c\x86\xfa\xc4\x3b\x8e\x8a\x95\x8e\xdb\xf3\x50\x8c\xf4\x41\x0c\xf4\x30\xc1\x0c\xc4\x46\x87\x62\x9f\x87\xb7\x69\x24\x26\xfa\x4b\xc7\x3c\xa3\x0a\x47\x0e\xf5\xef\x0e\xc7\x36\x4f\x8c\x69\x0e\x25\xc9\x3d\x27\x96\x19\x60\x0f\x48\x92\xc7\x8d\x61\x9e\x4c\x52\xf7\x36\x76\x0a\x61\x8d\x8d\x7d\x9e\x18\xf3\xdc\xc4\x34\x0f\x62\x3f\x36\xd6\xb9\x27\x96\x79\x10\x26\x2a\xc6\xb9\x2f\x86\x79\xf8\x8e\xc6\xc5\x36\xef\xc5\x2e\x0f\x0b\xaa\xf8\x98\xe6\xa8\x98\xe5\xb0\x4f\x1c\x13\xa3\x3c\x2d\x36\xb9\x6d\x9c\x1e\x5c\x78\x44\x4c\xf2\x5e\xcc\xf1\x30\x22\x61\x63\x91\x51\x35\x67\xc7\x63\x8f\xa7\xc7\x1c\xc7\x56\x93\x44\x46\xbb\x86\xe3\x58\x8f\x58\xbd\x33\x14\x25\xfc\x9c\xe8\xe0\x5f\xfe\xfe\x04\x85\xac\x70\x1c\xef\xd4\xf8\xdd\xb1\x2a\x38\xb1\x71\xbb\xad\xb8\xdc\x51\xaa\x18\x19\xaf\x1b\xa6\x4c\xc1\xf8\xdc\x49\x71\xb9\xce\x5c\x3d\xb8\x94\x09\xf1\xb8\xd6\x40\x34\xa6\x9f\x46\xc5\xe1\x36\x71\xb6\x83\x20\xa3\xe2\x6f\x3b\xf6\xbb\x31\xe1\x33\x1c\x77\x1b\xbc\x1b\x71\x71\xb6\x13\xe2\x6b\x0f\xe2\x67\x43\x9c\x25\x18\x57\x1b\x46\xc4\x70\x1c\xed\x29\xe2\x67\x27\xc4\xcd\x3a\x4b\xfa\xb0\x85\x2d\x3e\x5e\x36\xda\x7c\x7e\x64\x93\x39\x26\x92\x2b\x1c\xc1\x85\x89\x77\x9d\x14\xe7\xda\x8a\x63\x1d\xbb\xff\xa8\xf8\xd6\xde\xf8\xd5\xb1\xfb\x3a\x12\xd7\x3a\x16\xb7\x3a\x08\xb2\x3f\x9e\x15\x13\xaf\x3a\x08\x72\x2f\x8e\xf5\xf8\x71\xaa\x13\x50\x17\x11\x17\x76\x14\xd4\x45\x12\x96\xb1\x38\xd4\x53\xc4\x9f\x4e\x8a\x3b\x45\xfb\xf8\xf0\x47\x3a\x29\x8c\xe4\x44\xe1\x23\x9f\x97\x1a\xe1\xe2\x48\x27\xc5\x8f\x62\x22\xa3\xf0\x71\xa3\x87\x71\xa1\x83\x40\xb1\xf1\xa2\xbf\xe2\xfb\x8e\x51\x27\x83\xf1\x9e\xd3\xe2\x3c\x43\xe1\x62\xe8\x98\x39\x94\xf2\x13\x8a\xe7\x9c\x16\xc7\xf9\x79\xd7\x10\x8a\xd7\x9c\x16\xa7\xf9\x79\xd7\x10\x8a\xc7\x9c\x16\x87\xf9\x39\xd7\x10\x54\x91\x71\x71\x96\x93\xe2\x2b\xf7\xe3\x27\xa3\xe8\xe5\x7e\x5c\xe5\x50\xdc\xe4\x98\x1f\x17\x13\x4f\xf9\xa5\xc5\x6f\x0c\x4d\x8b\x8b\x8b\x8c\x8e\x87\x6c\x62\x1d\x47\xd1\xf2\x34\x71\x90\xb1\xf1\x8f\x36\xb6\x71\x14\x24\x3a\xee\xb1\x37\x36\x68\x14\xf4\x78\x0c\xdd\x58\x7c\xdc\x28\x58\x6c\xfc\x0f\x8a\x68\xc5\xc7\x35\x46\xc6\x33\xb6\x8f\x67\x74\x59\xe1\x38\xc6\x9e\xb8\xac\x71\x6c\xf9\xca\xf7\x1e\x1d\xa7\x18\x19\x9f\xd8\xd2\x43\x46\x17\x13\x8e\x4b\xec\x8f\x39\x0c\x5c\xd1\x80\xae\x82\x14\x3b\x47\x3f\x72\x64\x2a\x4d\x4e\x15\x5b\x18\x1b\x53\x88\x0d\xb1\xc5\xc4\x12\x1e\x13\x57\xa7\xbb\x9b\x07\xff\x54\x50\xc3\x70\xf7\xb1\x3e\x64\xf5\x31\x08\xb5\xa2\x0a\x28\x8c\x85\x00\x3b\xe9\xfc\x89\x19\x2b\xfb\xd9\xbc\x90\x9a\xa8\x9d\x48\xa0\x31\x93\xed\x73\xa4\x48\x4e\x53\x66\x11\x9c\x5b\xd1\x64\x7f\x93\x86\x2d\x06\x85\x4c\x3f\xb2\xbc\xc8\xa8\x3e\xb8\xb7\x7b\x25\x26\xeb\xe7\x00\x01\x44\x53\x44\xbb\x13\x0a\x00\xfa\x59\x21\x53\x1b\x9c\x77\x30\x7d\x2d\x5d\xfd\xe9\x7a\xfd\x7b\x8f\x8c\xc9\x05\xcd\xde\x84\x3d\xfd\x3f\xc9\xf2\x21\x93\xb4\xbd\xa1\x67\x67\xad\x5e\xfa\x7d\xf1\x0e\x1b\xae\x97\x0f\x7f\x05\x6f\x7b\x22\xf3\xbc\x12\x5c\xef\x2e\xe0\x7d\xbe\xaa\xb4\x2c\xd5\x45\x6a\x30\xfe\x82\x16\x7c\x91\x48\xf1\x68\x68\xbc\x14\x6a\x99\xa7\xbf\xf7\x70\x27\x79\xca\x9b\xbe\x14\x5f\x28\x2a\xe6\xb2\x99\x81\x3b\xdc\x4a\x28\x5d\x56\x89\xb9\x75\x69\x2b\xfc\x32\xa7\x05\x51\x7a\x34\x66\xd8\xb5\xca\x6a\xaa\x73\x1b\x84\xcf\xe9\xce\xd3\x48\x08\x42\xd3\xac\x34\x98\xa3\xa5\xcc\x6c\x83\x3d\x3d\x14\x12\x41\xea\xc6\xe2\xba\xe4\xec\x91\x11\x5a\xae\xb8\x2e\x69\xb9\x6b\x9d\xe5\xc7\x2d\xdb\x81\xa3\xc9\xdc\x8e\x7f\x54\xac\xdc\x01\x3d\x19\xe3\xaa\x4d\xb0\x2d\xb8\xf4\xca\x47\x96\x5a\x1f\x73\x2e\x53\xbe\xde\x71\xb1\x71\x57\x5d\x1d\xa0\x4a\x7f\x68\x86\x61\x2c\x8b\x4d\xc5\x53\x76\xd1\x3a\xd0\x53\x44\xbd\xf8\x75\x23\xc2\x5d\x34\x15\x29\x2d\x53\x07\x69\xbe\x00\x43\x1b\x35\x5f\x80\x5f\xd2\x05\x50\x03\x9a\xe0\x1e\xf2\x3b\x15\xdd\xb2\x25\x27\x21\xa6\x4c\xd9\x50\x58\xb6\xa5\x8f\x5c\x96\xad\x96\x45\xfd\x82\xc5\x71\x6f\x89\x99\xf9\x82\x8a\x74\x61\x3b\x04\x4d\xba\x2c\xeb\x35\x37\x5f\xc4\x79\x9b\xd6\x64\xcf\xbe\x60\xcb\xf6\xab\x64\xcb\xd2\x2a\x73\xb1\x34\x4a\x97\x94\x8b\xc1\xdc\x1d\x8c\xaa\x2e\x64\xca\x2e\x03\x33\x3b\x98\xdd\x75\x1d\x83\x69\x5e\xaf\x57\xd6\x9e\x5d\x59\x65\x4c\x05\xdb\x7c\x8c\x9e\x20\x7e\x11\xf6\x39\xb6\x66\x65\xc9\xd2\xeb\xca\x50\x8f\xfb\x7a\x2a\xb7\x1b\x90\x6b\xed\xcf\x37\x9f\x58\x52\x45\x57\xf2\xfc\xe8\xba\x2c\xa5\x95\x17\xef\xdc\xe7\x80\x02\xb8\x3f\x80\xf0\x14\x80\x0a\x72\x94\xd9\x33\x27\x4f\x2a\xaa\xb9\x5a\x5b\xf5\xbf\xde\x45\xf6\xc9\x5c\x6c\x05\x34\x0d\xa7\xf0\x10\x6f\x44\xf0\xa2\xfe\x39\x59\x55\xe0\x01\x34\xe4\x2b\xd9\x4a\x23\xb7\x51\x7b\x58\xf0\xdd\x47\x2e\x8d\x40\x18\x9e\xae\x14\x8c\xc8\xd2\x06\xe0\xf9\xfe\xae\xcd\xf4\x6c\x1c\x44\x03\x96\x2b\x92\x4b\x44\x9f\xd7\xfa\xac\xbc\x96\x6e\x3e\x03\xe4\xd7\xfc\x63\x03\xd9\x0c\x4a\x13\x55\xe5\xd0\x22\x93\xf1\xcd\x56\x23\xda\x86\xf1\x25\x5b\x36\x6e\x86\x66\x5a\x39\x63\x1a\x42\xac\xdb\x1d\xb3\x2c\x72\x04\x61\xba\x20\x0a\xdb\x36\xfc\x65\xcd\x1b\x5c\x34\xf4\x79\x1d\x44\xbc\x8f\x75\x41\xc0\x7d\xc7\x7d\x4e\x98\x4e\x96\xaf\xce\xeb\x82\xce\x14\xf6\x60\xb5\x23\x5c\x33\x23\xa6\x63\xca\x0e\x6c\x4b\x59\x6d\xec\x4e\xb2\xcc\x4d\x5c\xae\x5b\xc8\x61\xdb\xc3\xa6\xa9\xb9\xa6\x2f\xec\xe6\x86\x3b\xc7\x38\x2d\xdc\x4c\xa7\x0e\x98\x4c\x0d\x5b\xd5\xc9\xb6\xb6\x86\x95\x25\x53\x85\x14\x00\x19\xfe\x72\xd3\xac\xed\xbf\x21\x66\x6e\x81\xbe\x54\xaf\x1a\x64\xd8\xf2\xcd\xd6\xe3\x02\x75\x36\x40\x83\x63\x0d\x0e\x85\xf2\xcf\x90\xc5\x24\xbb\x71\x7b\xc2\x36\x14\x6d\x61\x6a\x8b\xb6\x69\x56\xe6\x7e\xe5\x41\xb8\x36\x2b\xdf\x71\x64\xbb\x2e\x9e\xdb\x68\x70\x87\xd9\xe4\x1b\xf2\x12\x50\x97\xeb\x33\x45\xc2\x05\x7d\x0c\xd1\x5e\xc8\xe2\xd5\x92\x5c\x12\x51\xd5\xb4\xe8\x79\x93\x14\xb2\x9e\xa3\x9b\x8c\xb2\x16\x12\xea\xbf\x86\xb8\xd5\x31\x4d\x62\x8a\xba\x99\xee\x84\x42\x9f\x97\x16\xfb\x6c\xfa\x98\x2c\x61\xb1\xe7\x84\x2a\x25\x13\x4e\x31\xe5\xcd\xed\xa8\xb1\xac\x8b\xba\xf6\x58\x4e\xd5\x9e\x75\xff\x62\x4c\xec\x31\x72\x49\x32\xd7\xfd\xbc\xbb\x15\x6d\x82\x85\x86\x0c\xec\xc3\xc0\x39\x53\x3e\x9b\x0e\xfd\x6e\x44\xb1\xd6\xde\x65\x0c\x4e\x3f\x02\xa4\xcd\x1d\x6f\xe1\x83\x21\xfb\xce\xa8\xa8\xac\x06\xa0\xce\x51\x57\xab\x19\x0f\x6c\x77\xee\x3a\x69\x13\x73\xc6\xb4\x06\x5c\xb2\xcc\x99\x84\xb0\x3d\x97\x6a\x88\x00\xd0\xce\x07\xbf\xc3\x53\xb0\xac\xfe\x62\xdc\x0b\x3d\x82\x8f\xf5\x07\x42\x5b\x60\x67\x02\x8b\x84\x48\x9a\x73\x69\x1c\x8a\x31\xab\x27\xd3\x9a\xf8\xd8\xe1\x8f\xee\x59\xfb\xf0\xa1\xd5\xb1\xdf\x6c\xc5\x99\xb2\x48\x60\xee\xef\x96\xc7\x74\xac\xb5\x43\x4b\xc0\x56\xb8\xbe\x0e\x1b\xc8\x8f\xd0\x9c\xca\x4f\x37\xe6\xee\xda\x61\xb8\xe3\xad\x38\x27\xef\xa4\x36\xff\x77\x03\x1d\xc2\xcf\xc9\xb5\x64\xea\x9d\xd4\xf0\xcf\xd8\x4d\x27\xe4\x7b\x6d\xef\xc0\x9b\xe8\x77\x27\x1f\x98\xdd\x8f\x67\x1d\xd7\xa5\xb0\x61\xd8\x66\x7b\x5d\x8f\xf9\xf8\x3b\x67\xc7\xed\xda\x79\x77\x1d\x01\xe0\x8a\xdc\x0a\x23\x12\xbb\x6d\x9e\x72\x1d\xec\x5c\xdc\x14\x7d\x6f\x27\x21\xc5\xc2\x36\x31\xc7\x54\xde\xdb\x1f\xfb\x73\xbc\xa9\xfb\xc3\xb7\xcf\x3f\xa6\xd3\x56\x03\xb7\x77\xba\xc7\x9b\xea\xf7\x10\x3d\xf8\xa6\x1d\x95\x33\x05\xf9\xeb\xc9\x6d\xe9\x23\x08\xce\x5c\x6c\xb2\x5a\x04\x8e\x5f\xb9\x4d\xf1\xf7\x21\x8a\x50\x2a\xa0\x28\x99\x66\x29\xc4\x78\x0a\x1f\xce\x15\x8f\x51\xe0\x90\xb1\xf3\x85\x20\xed\x22\xa3\x09\x4b\x49\x0a\x0a\x84\x99\xb8\x2e\xa9\x66\x1b\x8e\xab\x9c\xd3\x1e\x39\x2b\x37\x8c\x14\x46\xbe\x88\x9d\x56\x34\x13\xb7\x63\xf2\x25\x8f\xab\x3d\xdf\x8c\xb8\xfe\x64\x76\xe0\xbb\x94\xf9\xe7\x3d\x7a\x46\xbc\x14\xd9\x0a\xb2\xfd\x52\xcc\x1e\x80\xf0\x08\xad\x79\xbf\x3a\xb9\xd1\x35\xf6\x9b\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\xec\x1d\xb3\xdc\xe8\xc7\x67\x91\x1b\x23\x3f\x62\xed\x9f\x13\xcc\xb2\x3f\x59\x7b\x76\x63\x87\xb5\x16\x56\x10\x5a\xc1\x26\x8d\x26\x7a\x5d\x83\xac\x11\xf5\xee\x9d\x2c\xf0\x11\x4c\xbd\xb6\xe3\x39\x29\xa9\xd8\x60\x41\x7e\xbb\xf8\xf6\x9b\x6f\x70\xf8\x8d\xed\xaa\xdb\x0c\x7c\xc9\x78\x12\x85\x8d\x8b\x96\x9d\x1c\xf1\xb0\x3d\xb9\xb0\xa7\x05\x8f\x0f\x58\x54\x1b\xf2\x83\x1d\xc1\xfb\xea\x58\x69\xed\x30\xeb\xb8\xe4\x26\x3a\x48\xeb\x98\x8b\x9c\x69\x42\x75\xc7\x71\xc2\x73\x86\xe3\xcf\x85\x4c\x2d\xa1\x77\x15\xb7\xbc\x27\x38\x25\x52\x38\x7f\x99\x80\x2c\xfc\xbd\x15\xc4\x39\x1d\x9b\x58\xd0\xee\x0a\x12\x46\x6d\xd7\xd4\x15\x04\xba\x86\x1d\x8e\x9a\x28\x99\x33\x62\x93\x03\x1d\xdb\x30\x4b\x60\xfe\x54\xc8\x4b\xb6\xdc\x2c\x49\x5a\xb9\x66\xac\x41\x90\xb6\xc4\xd8\x2b\xcb\x81\x6d\xf6\x35\x78\x9c\x65\x09\xff\x67\xb6\x45\x97\x3b\x88\x1d\x7c\x64\x42\x57\x34\x43\xb4\x43\x62\x8f\x3c\xd1\x75\x7d\x1f\x48\xa7\xe0\xda\x46\x1a\x1c\xb3\x76\xf3\x3e\x4d\x41\x71\xb1\x3d\xe1\xde\xd7\x8f\x1a\xd2\xa9\xb5\x81\x8b\x2d\xfd\xc9\xec\xe3\x80\x99\xef\x3f\xe0\xaa\xa6\x4e\x6d\x94\xe7\x1c\x87\xb2\x74\x6e\xce\xc3\x69\xc7\xd8\x23\x20\x0e\xa4\x09\x3a\x32\x4b\xe9\x60\xb0\xf5\xba\x63\x41\x9a\xf5\x5f\xbe\xbb\x66\xa9\x85\xf4\x51\x16\x32\x93\x9b\x5d\xfb\xac\x6c\xb2\x55\x5d\x16\x0b\x2b\xf6\x51\xa2\xaa\x95\xd3\x9e\x0c\x7e\xbd\xdb\x43\x81\xd9\xe3\x87\x1b\xb3\xe5\x26\x02\xe2\x6c\xb9\x99\x2d\x37\xb3\xe5\x66\x74\xcc\x96\x9b\xd9\x72\x33\x5b\x6e\x66\xcb\x4d\xef\xf8\x6d\x5b\x6e\x66\x8f\xdf\x2c\x37\xce\x72\x63\xd4\x98\xe5\xc6\xd0\x98\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\xbd\xf1\xeb\x91\x1b\x23\x3f\x82\x07\x8f\xdd\xd6\xc5\xa1\x81\x1d\xe5\x69\x3a\x46\xe3\x27\xf0\xcc\x3c\x23\xa9\xb1\x90\xe9\x48\x4e\x23\x38\x49\x46\xd7\x92\xc8\x85\x2b\x92\x07\xee\x1a\x03\xce\xf9\x2b\x15\xcd\xad\x4f\xe8\x9c\xfc\x53\x0a\x66\xf3\xbd\x0c\x99\x50\x32\xd0\x79\x0b\x7a\x45\x18\x50\x2f\xd5\xab\xd1\x5c\x9c\x39\x5f\x72\xce\x97\x9c\xf3\x25\xbf\xd6\x7c\xc9\x2d\x55\xb6\xc8\x8a\xeb\x20\xd7\xa4\x4f\x06\x21\x76\x43\x22\x5a\x14\xce\x10\xd7\xff\xd6\x9b\x3d\x19\x84\xf9\x65\xb2\x2b\xcd\x25\x70\x48\x6a\x76\xba\x85\x68\x76\x3f\x52\x17\x48\xc2\xd2\xbb\xee\x2a\x11\x9c\xcc\xda\x24\x60\x31\x14\x9a\x2f\x14\xac\x5c\x58\xd4\x96\x64\xcd\x45\xda\xb3\x46\x04\x58\xb7\xb3\x88\x9b\x1a\x95\x03\xd9\x5d\xde\x04\x47\x6e\xdb\x07\xdd\x61\x5b\xbf\xa4\x8c\x48\xb0\x1b\x78\x51\x61\xba\x91\x0b\xac\x0f\x50\x43\x83\xc8\x47\x68\x30\xe3\xf4\xe6\xba\xab\x51\x8c\x6c\xef\x7b\xe9\x25\x54\x59\x56\x85\x17\x94\xa7\xd9\x60\xa6\x7b\x89\xc9\xfe\x66\xec\x83\xb2\x36\xaf\x8c\x23\x58\x4d\x77\xc8\xb5\xdb\xd6\x5e\xa3\x21\xb0\xb3\x48\x88\x1d\xfe\xd0\xb8\xfa\xe3\x2c\x78\x53\x54\x90\x5e\x6c\x79\xb6\x31\x91\xe0\x0c\x8a\xf1\x5a\x6a\xd8\xa8\x38\x49\x9d\x9e\x6e\x58\x24\xcf\x30\x2e\x92\x69\x06\x46\xb2\x7f\x6c\x66\xf6\x4e\x02\xaa\x6d\x8d\x13\x60\x92\xa6\x98\xdb\x11\xec\x8d\xe4\x79\xda\xed\x74\xbb\x23\xd9\xdf\x9e\x1a\x4d\xea\x76\x37\xf1\x48\x42\x3c\xf2\xed\x19\x2e\x6b\x43\xe4\x24\x88\xc3\xc6\x4b\x43\x03\x26\x81\x3c\x30\x60\x02\x5e\x3f\xcf\x86\xf9\xcc\x83\x9c\x66\x8f\x24\xfb\xc7\xe8\xac\x68\xb6\x9c\x55\xac\xd9\xa3\x19\x07\x16\xcd\x7d\x0b\xe5\x24\xa8\x3d\x56\xcd\x8e\xd9\x6f\x12\xd0\x5e\xcb\xe6\x51\xe6\x3a\x60\xdd\x9c\x64\x8c\x25\x43\x06\x59\x37\xe5\x8f\x5b\x3e\xf1\xbe\x9d\xc2\xc4\x47\x9e\x67\xe6\x23\xd3\x4d\x7d\xe4\xb9\xf7\x68\xaa\xc9\x8f\x4c\x34\xfb\x91\x09\xa6\x3f\x32\xd5\xfc\x47\xa6\x9a\x00\xc9\xe4\x7d\x01\x71\xf0\xcd\x68\x4b\xf0\xfe\x11\x57\xbc\x6f\x6c\xca\x13\x30\xe1\x50\xa2\x75\x8d\xc5\x41\xde\xca\x69\x61\x28\xdc\xff\x31\x62\x12\x5c\xca\xff\x1b\x2b\xcb\x50\x5e\x2a\xa3\x36\x39\xf3\x7f\x0b\x92\xb7\xd6\xb5\x3e\x1a\x09\xdc\xcc\x8e\xab\xbd\x96\x69\x54\x78\x03\x83\x99\xf9\xbe\x8c\x1e\x2b\x23\x3e\x6d\xa5\xb2\xf2\x5c\x5d\xdc\xf7\xc5\x03\xdb\xbd\x38\x7f\x0e\xdd\x34\x40\x6e\xc5\x0b\x2b\x78\x1e\x78\x74\xbc\x54\x1b\xab\x44\x88\x6c\x47\x5e\x00\xa4\x17\x3d\xd1\xc1\x13\x95\x80\x67\x98\xd1\xa3\x5e\xaa\x7b\xa9\x4f\x0d\xbf\x68\x00\xd4\xd6\x49\x6f\xfe\x69\xfe\x14\xe3\x3f\xf0\xd2\xef\xfd\xa1\xec\x4a\x5e\x7a\x8b\x12\xdd\x98\x93\xd2\xaf\xc2\x65\xb7\x5a\x4b\xed\xc4\x84\x43\xd0\x48\xce\xa8\x50\xe4\x85\xb7\x63\x9f\xb5\x7a\xcb\x87\x6d\x60\x7e\x44\xf3\x91\x49\x34\x23\x9e\x36\x6a\x17\x5a\xfe\xf7\x18\xd5\x64\xcf\x92\xe5\xec\xfb\x4d\x51\xce\xda\xf8\x8f\x35\xb9\x98\xf1\xd2\xdb\x6d\x5e\x99\xfd\x17\x52\xb7\xc0\x90\x97\x54\x68\xbe\xa8\x9f\x88\x00\x5b\x5b\x73\xc0\xe4\xd8\x4e\xc3\xea\x62\x50\xac\x59\xa4\x5d\xa0\xbc\xc1\xe1\x73\xd7\xa6\x61\xd2\x0e\x70\x45\x7c\x5f\x6b\xaa\xea\x7e\xb1\x52\x78\x33\xbc\x25\x77\xe3\x3d\x7b\x0e\x87\x33\x2b\x5a\x65\x11\x76\x03\xa2\x53\x9a\x73\x8f\xa8\x90\xe6\x07\xe8\x8e\x72\x0d\x75\xbc\x61\x6a\x52\xb8\xeb\x6c\x7e\xf1\x16\x73\xd8\xd9\xa8\x1d\x80\x33\xe2\xf5\xda\x97\xe4\x06\xae\x61\x7b\xb2\x1c\xba\xb9\x45\xc0\xf4\x6d\xe5\x23\x2f\x51\xc4\xcd\x8b\x93\xb7\x16\xed\xe5\x9c\xc2\x91\x39\x39\x75\xf1\xe9\x44\xa9\x8b\x7b\x26\xde\xdf\x54\xe6\x62\xa4\xf1\x7e\x4e\x5f\x1c\x1b\x73\xfa\x62\x64\xfa\x22\x6a\xfd\x96\x33\xa0\xf3\x18\x83\x30\x9b\x3c\xc7\xd1\x3c\x46\xf2\x93\xeb\xee\x8e\x30\x7e\x99\xa3\xce\xab\x4c\xf3\xa2\x09\x52\x52\x76\xaa\x99\x35\x6e\xac\x9d\x8b\xbc\x43\x79\x30\x1e\x4a\xf0\xfb\xee\x5d\x53\xf8\x1e\x04\x31\x29\xe0\x60\xe7\xd6\x4d\x4c\x47\x3a\x57\xd5\x10\x21\x7f\xd1\x5b\x45\xac\xaf\x7e\xb4\x35\xa4\x1d\x53\x5c\x88\xd7\x20\x2b\xa8\xc6\xc7\x03\xdc\xf3\xa5\x11\x46\x32\x83\x66\x46\x58\xf0\xb4\x1b\x41\x06\x0f\x65\x6a\x6b\xfb\x7c\x64\xde\x91\xbb\xe1\x8f\x4c\x34\xc2\xce\x4b\xf5\x0a\x23\x88\x39\x3b\xf3\x88\x90\xd8\x15\xfd\x50\x9e\xc8\x31\xe1\x10\xb8\xd6\x24\x41\x2c\x42\x00\x73\x42\x0e\x02\xe8\x9e\xe0\xf5\xaf\x2d\xee\xff\x6f\x2d\xe7\x77\x2d\x50\x21\x3d\xb1\x2d\x91\x0b\x36\xb6\x16\xba\x1a\x54\x68\x04\xa9\x23\xfb\x6c\x27\x38\x2b\x4f\xe7\xa8\x9c\xe8\xa4\xfc\x62\x29\xac\xc3\x8e\x49\x22\x63\xe2\x43\x43\x4e\xc9\xa9\xb9\x0d\x13\x6c\x11\xcf\x4d\x6a\x38\x92\x23\x72\xce\x6a\x18\xf8\xe2\xb3\xfc\xc4\x7d\x0e\x47\xd8\x83\x49\xce\xd7\x5f\x7c\x72\x43\x8f\x83\xd1\x3b\x0b\xa3\x37\xa4\xd7\xb9\x78\xe0\x28\x9c\xec\x4c\x55\xfd\x59\x0e\xc1\x86\x7d\x7d\xe3\x39\x4e\xc5\x2f\x99\xdc\x70\xe8\x48\x6c\x9c\x82\x13\x9d\x9b\x07\x8e\xb9\x7d\x87\xe0\xa4\x8b\x11\x48\x73\x88\x86\xd9\x33\xc7\xcf\x95\xe6\x30\xc9\x09\x38\xc7\xf8\xcf\x31\xfe\x93\x73\x43\x63\x1d\x7b\xcf\x75\xea\x4d\x3a\xe5\x13\x3a\xf3\x4e\xe6\xc8\x3b\xb1\x13\x0f\xe7\xc0\x23\x51\xe4\x04\xe1\xbc\x03\x77\x5c\x0c\xc8\x63\x3a\xee\xa2\xef\x45\xe4\x0b\xb1\xce\xba\x93\x39\xea\x4e\xe3\xa4\x3b\x85\x83\x2e\x8a\xd6\x47\xdf\xfd\x38\x9a\x16\xed\x90\xc3\x3b\xe3\x5a\x76\x16\xe4\x5a\x83\x8e\xb8\xae\x7b\x2d\x86\x64\xf7\x3a\xe1\x0e\x5c\x6b\xd1\x0e\xea\x43\xbb\x4f\xbf\x55\x07\xbb\x01\x23\xb6\x9f\x3d\xcb\x4e\xbc\xc3\xb5\xcf\xfa\xd3\xb5\xed\x20\x61\xf6\x38\xdd\x10\xae\x34\xac\x7d\x05\x1c\x6e\x71\x6e\xb4\xa8\x3b\x12\xe3\x4f\x89\x99\xfe\xd1\x5d\x24\xe8\xb4\x3b\xa1\xf9\x73\x53\xef\xda\xb7\xec\x20\xff\x6e\x74\x35\xd6\x03\x40\x1f\x25\x4f\x49\x51\x69\x6d\x2f\x1a\x22\x07\x6f\x14\xaa\xcb\xcf\x9b\x73\xf0\x0e\x73\xf0\x3a\x47\xd5\xca\xcc\x0a\xc2\x1c\x70\x0b\x0d\x27\xe2\x85\x67\xd9\x4e\xd4\xc3\x24\xe2\x05\x21\x1e\x24\xea\x21\x13\xf1\xc2\x8b\xef\x26\xea\x85\x13\xf1\x82\x10\x0f\x12\xf5\x42\x89\x78\x68\xca\xb4\x8f\x9a\xc3\x67\x1e\x86\x19\xcc\xd6\xeb\xcd\xc6\xc3\x2d\x7e\x2c\x5b\xef\x30\x1b\x0f\x77\xf6\xc3\xd9\x7a\x81\x6c\x3c\x04\xb2\x7e\x35\xbd\x0e\xe7\x6c\x3c\xff\xf4\x9c\x8d\x47\xe6\x6c\x3c\x37\xe6\x6c\x3c\xec\x98\xb3\xf1\xe6\x6c\xbc\x39\x1b\x0f\xc6\x9c\x8d\x37\x67\xe3\x0d\x8c\x39\x1b\x6f\xce\xc6\x9b\xb3\xf1\xb0\x63\xce\xc6\xeb\x19\x73\x36\xde\x9c\x8d\x37\x67\xe3\xcd\xd9\x78\x73\x36\x5e\x33\xe6\x6c\xbc\x39\x1b\x6f\xce\xc6\xab\xc7\x9c\x8d\xb7\x3f\xe6\x6c\x3c\x18\x73\x36\xde\x5e\x36\x5e\xc7\x89\xf5\xcb\x4d\xc9\x6b\x2f\x03\x8b\x2e\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xd5\x63\xce\xcb\x9b\xf3\xf2\xe6\xbc\xbc\x39\x2f\x2f\x30\xe6\xbc\xbc\x39\x2f\x6f\xce\xcb\x1b\x1f\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xb5\xc6\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\x37\xe7\xe5\x7d\xf6\xbc\xbc\xe0\x23\xb4\xdc\x0c\x52\x9a\xce\x4d\x3e\xbb\x2c\x37\x95\x65\x32\xce\xfc\xca\x84\x2e\x77\x60\xfa\xb7\x8c\x28\x95\xc9\x03\x2b\x09\xcf\xe9\x86\x9d\x8d\x68\x9f\x57\x6f\xaf\xcd\x21\x56\xca\xdc\x05\x97\xbe\xe3\x0e\xb5\x28\xe5\x23\x4f\x59\x6a\x34\xcd\x92\xd3\x55\x66\xd8\xdb\x9a\x95\x4c\x18\x0e\xf0\x87\x97\x3f\x5e\x7e\xf8\xf9\xdd\xe5\xdb\x9b\x61\x7a\x61\x18\x20\xfb\x54\x50\x91\xb2\x94\x54\xca\xdf\x6a\xc7\x69\x59\x79\x76\xa6\x08\x13\x8f\xbc\x94\xc2\x2c\x06\x74\x27\x4a\x1e\xdd\xd7\x06\xc1\x26\x54\x38\xb7\x4c\xc9\x94\xcc\x1e\x59\x6a\x45\x82\x7a\x76\x9e\x52\x70\x51\x54\xda\x87\x7b\x3e\xf1\x11\x0b\xfd\x8a\x91\x4a\x24\x5b\x2a\x36\x66\xbd\x66\x03\x5b\xeb\x23\x6a\x27\x34\xfd\x64\xbe\x0b\x8a\x8c\x4a\x68\xe1\x3d\xa1\xc3\x26\xa3\x54\x56\x66\xcb\xfe\xf0\x87\x73\xc2\xd9\x6b\xf2\x87\x16\xc0\x25\xb9\x71\x30\x5a\x1b\x6a\xdd\x4d\xec\x71\xc4\xdd\xb8\x6a\xb6\xf3\x9c\x94\x6c\x43\xcb\x34\x63\x0a\x1c\x1c\x4f\x5b\x06\x49\x91\x56\xac\x71\xc7\xc5\xbc\x4e\x37\x08\x51\x48\xbd\x24\x57\xf5\x7e\x5a\x3f\x4f\xba\x24\x6f\x25\x38\x39\xd6\xf2\x35\xd9\x6a\x5d\xa8\xd7\x17\x17\x0f\xd5\x8a\x95\x82\x69\xa6\x96\x5c\x5e\xa4\x32\x51\x17\x9a\xaa\x07\x75\xc1\x85\x41\xe8\x45\x4a\x35\x5d\x00\x13\x4f\xc0\x6e\x71\x61\xe9\xea\x22\x91\x79\x4e\x45\xba\xa0\x0e\x65\x17\xf5\xf1\x5f\xfc\xde\xd1\x9f\x05\xad\x9f\xe2\x62\x41\x17\x6a\xcb\xb2\xec\x6c\x60\xd2\x01\x7e\x8c\xa0\x2e\xa1\x0b\xcd\xc4\x23\xea\x16\xbe\x71\xdd\xdc\x5b\x28\x5c\xef\x3d\x5c\x4c\xc5\xb4\x47\xc5\x7a\xd1\xc3\x34\xf2\xf0\x18\xa6\xed\x40\x67\x8e\x37\xe2\xf1\x47\xda\xb5\x47\x89\xde\x09\x13\xf7\xc0\x08\x89\xe3\x86\xdf\x5d\x85\x17\x82\x33\x46\x1a\xb6\x3c\x4e\xd5\x3b\x0b\x79\x47\xf3\x26\x81\xb4\x67\xfe\x4b\xf2\xd6\x1a\x1a\x02\xd4\x9c\x92\xab\x9f\x6f\xaf\x6f\xde\x7d\xbc\xfd\xee\xf6\xe6\xc3\x38\xc7\x42\x72\x2a\xe0\xfb\x11\x4b\x39\x0b\xd0\xd3\x0e\xdd\x0c\x2c\xa7\xa1\xaa\x45\xc9\x1e\xb9\xac\x1a\x79\xa6\x1f\x2d\xb9\x08\xb1\xbb\x36\xb6\x3a\xfb\xf6\x8e\x28\x56\x3e\xf2\xa4\x7f\xeb\x83\x96\xea\x0e\x59\x47\x93\xef\x90\x57\x74\x9f\xb8\xa3\x88\x78\x00\x68\x2f\x89\x47\x91\xf2\x00\xe0\x5e\x42\x8f\x20\xe8\x88\xc3\x3a\x24\xf7\x96\xac\x5f\xb3\x35\xad\x32\x2b\x22\xbc\x78\xb1\x1c\xa2\xa7\x0e\x50\x04\xaa\x7f\x57\xca\x40\x52\x66\x07\xdd\xef\x6d\xc2\xf3\x5a\x96\x83\x97\xf7\xcc\xf9\x60\x42\x88\xd4\x22\x91\x4e\x60\xb1\x32\xb7\x93\x58\x10\xd6\x50\xbc\xa3\x24\x91\x62\xcd\x37\x6f\x69\xf1\x77\xb6\xfb\xc0\xd6\x91\xfe\x77\xab\xb4\x38\xeb\x3f\x88\xef\x86\x72\x5a\x80\x61\x31\x39\xce\x9d\x83\x76\xe2\x1c\xa4\x1b\xdb\xb0\x3f\xa7\x17\x9c\x40\x7a\xc7\x50\xf9\xde\xc9\x9d\xb5\xc9\xbd\xbb\x3b\xba\x2d\x96\x20\xf5\x93\x11\xe1\x25\x91\x22\x61\x85\x56\x17\xf2\xd1\xd0\x36\xf6\x74\xf1\x24\xcb\x07\x23\x8d\x98\x5b\xbf\xb0\x62\xba\xba\x00\xed\xf1\xe2\xf7\xf0\x7f\xc8\x8f\x7e\x7c\x7f\xfd\xfe\x35\xb9\x4c\x53\x57\xa8\xa2\x52\x6c\x5d\x65\x2e\x07\x7b\x49\x68\xc1\x7f\x64\xa5\xe2\x52\x9c\x93\x07\x2e\x52\xac\x4d\xac\xe2\xe9\x7f\x1f\xbf\xc4\x7e\x44\x9e\x91\x2c\xac\xb9\x73\xc2\x39\xdd\x83\x2e\xbe\xeb\x88\x9f\x35\x9e\xe3\xe2\x35\x08\x48\x34\x0a\x70\xd1\xfb\x0a\x1c\x0b\x8b\x58\xec\x4a\xca\x8c\xd1\x10\x6f\x8b\xd3\x27\x31\x7a\x7b\x84\x1e\x09\xe7\x1f\x4f\x49\xce\x1a\x52\x62\xed\xa0\xee\x56\x14\x32\x7d\x4d\x54\x55\x14\xb2\x44\xb9\xf0\x73\xa6\xa9\x91\xd1\x97\x06\x95\xcf\xbb\xff\x04\xf3\x48\xeb\x37\x30\x5e\xa0\x8c\xb5\xf5\x2b\x40\x99\xad\xc3\xf2\x1c\x4c\x34\x4b\x21\x53\xf6\x0e\xbe\x05\xff\x74\x12\xc4\x65\x92\xc8\x4a\x68\xf8\x03\x02\xbe\xd2\x54\x57\x6a\xb9\x95\x4a\xdf\xde\x9d\xfb\x7f\x16\x32\xbd\xbd\x0b\x70\x34\x12\x4d\x47\x9b\x8b\x39\xe1\x26\xb8\x37\xdb\x05\x40\x72\x0a\xff\xf9\x9d\x39\xb5\x3b\xaa\xb1\x06\x1b\xae\xc8\x53\xc9\xb5\x66\x02\x04\x21\x88\x19\x93\xeb\x73\x73\x29\x1a\x7e\xfe\xf8\xed\x8b\x93\xd0\xeb\xb5\x9f\xec\x84\x2d\x30\xaf\xf9\xf5\x5b\x54\xad\x79\x0b\x4e\xa4\xf3\xa3\x09\x89\xbc\xbc\xbb\x25\x8f\x76\x67\xbf\xb0\x71\x69\x8d\x3e\xc5\x08\x92\xe0\xe3\x99\xbe\x7b\x36\x69\xa8\xeb\xca\xb8\xfd\xaf\x25\x78\xcc\x39\x42\x2a\x52\x1d\x5b\x45\x32\x9e\x73\x97\x38\xec\xaa\xd4\x28\xf2\xd2\xfe\xb8\x4c\x8a\x0a\x73\x6d\xdd\xd3\x39\xcb\x65\xb9\x3b\xf7\xff\x64\xc5\x96\xe5\xac\xa4\xd9\x42\x69\x59\xd2\x0d\x3b\xaf\x3f\x80\x05\x5c\x3f\x6f\x41\x77\x26\x79\x08\x1f\x63\xca\x36\xca\x56\x52\x95\x46\xc0\xc8\x76\x9e\xa0\xb2\xf4\xe8\xd4\xa5\x3e\x91\x77\x13\x45\xa2\x5a\xf3\xb6\x42\x55\x8d\xbd\x20\x59\x3f\xca\xac\xca\xf1\x71\x71\x9e\xe5\xdb\x62\x47\xe2\xd1\x48\xe2\xea\x24\xc2\x45\xca\x1f\xb9\x9a\x14\x08\x78\x5f\xfb\x98\xc0\xdf\x57\x69\xa3\xef\xd9\x48\x7e\x7c\x80\xa5\x19\xec\x53\x21\x15\x18\xdb\x7c\xf4\x60\x97\x96\x7e\x8b\x73\x04\x45\x2e\xdc\x7f\x6d\xca\x51\xfb\xfa\x35\xaf\x9b\x7b\x5d\x93\xd2\x13\x9c\x52\x0c\x1d\xf4\x13\x3a\x26\x19\x54\x2c\x29\x99\x3e\x96\x9e\x65\xa1\x79\xc3\x1b\xf8\xfc\x62\x3c\xa3\x5f\x95\x72\x56\x3b\x6e\x60\x49\x0d\x3b\x5d\x97\x32\x5f\x12\x30\x79\x21\x2f\xc1\x8a\x81\x0d\x26\xe3\xa9\x87\xf6\xc0\x90\x91\x43\xb3\xca\x17\x1c\xbf\x71\x95\xef\xde\x62\x94\x2c\x8d\x26\x87\x5c\xdb\xaf\x5c\xdf\x43\x3d\x18\x9e\xdd\x02\xae\x53\xc0\xdb\x81\xf0\x3a\x0e\x7b\x3b\xc0\x45\x78\x57\x65\x99\x3d\x44\x9c\x03\xf2\x76\xef\x25\x17\x43\x59\x8b\x15\x2e\x62\xbd\x65\xf6\x1c\x5e\x82\x74\x04\x49\x75\x0b\x83\x7a\x7a\x6c\x1e\xa8\x94\xb5\x1f\x16\x55\xe6\x4a\x1f\xee\xc6\xe2\xe1\xc1\xf7\x67\x66\xe8\x1c\x9b\x3e\xb1\xea\x4e\xa6\x06\x7b\xc1\xcf\x58\xeb\x18\x60\x7c\x56\x9e\xc6\x0e\xcf\xd3\x9b\x98\x0b\xaa\x0c\x4c\x2d\x09\x17\x46\xb8\x49\x2b\x9a\xc1\xc4\xc0\xdd\x5a\xd8\xd8\x27\xab\x08\x7b\x9b\xe7\x70\x92\x9f\x5d\xdb\x31\x1c\x3d\x6f\x64\x42\xb3\xf7\x80\x08\x1f\x6a\x43\x7a\x1d\xd3\xc4\x04\x54\x73\x34\x74\xd4\xc8\x4f\x5c\x8e\xdd\x1c\x2d\x49\xc6\x34\xd9\xc9\x8a\xd8\x30\x89\xae\x79\x3e\x75\xf8\x46\xb8\x50\x3c\x65\xf5\x91\x05\x7c\x3d\x70\x98\x9f\xd9\x69\x14\xe4\x29\x9f\x97\x5b\xc4\x72\x09\x04\xfd\x47\xd1\xfd\x63\x50\x09\xc1\x75\xad\x80\x20\x83\x14\xbc\x7f\xd4\xbc\xcb\x69\xc6\xff\x09\x88\xd7\x28\x42\x8a\xac\x58\x26\xc5\x06\x3c\x58\xc3\xa9\x83\x4e\x8a\x5b\x92\x5b\xc1\x75\xfb\x6d\xeb\x26\x63\x49\x05\x81\x3c\x82\xc8\x32\x65\x25\x29\x4a\x2e\xa1\xb6\x6e\xf3\xe4\x20\xe8\x15\x33\xdf\x56\x9a\x82\xc6\x07\x7e\x2a\xb1\x83\xf9\xb6\x5c\x60\x6b\xca\x33\x97\x4f\x08\xd5\x8b\x95\xf9\x9b\xc1\xfc\xb1\x1a\x99\x5a\x92\x2d\x7d\x64\xf0\x32\xb3\xb5\x50\xb9\x22\x5b\x2a\x52\xf8\x67\x92\xc8\x32\xb5\xeb\x06\xe3\x67\xc9\x60\x12\x77\x32\xe3\xc9\x88\x54\x66\xc4\x42\x83\x68\x40\x58\xa8\xd8\x9f\x29\x78\x7e\xca\x9c\x66\xad\xdf\xf2\x80\x57\xb4\x12\xfc\x1f\x15\x23\x34\x97\x86\xae\x66\xad\x57\xd5\xe1\x8e\xfb\x64\x4f\xb3\xb4\x41\x88\x6f\xf8\x9a\x25\xbb\x24\x63\x84\x26\xce\x1e\xf8\x81\xd1\x94\x0b\xa6\x94\xb9\xe6\x2b\xa3\x80\xc9\x92\xbc\xe1\x8f\xac\xf5\xdb\x78\xd9\x44\xaf\x76\x7c\x68\x07\x58\x42\x54\xd4\xfe\x26\x40\xc1\x56\xfa\x00\xd6\x33\x2d\x61\xab\xab\x11\xb7\xb6\x0b\x24\x6f\x65\x09\xaf\x76\x50\x11\xd5\xfb\x55\x7d\x31\x58\x67\x65\xb8\x00\x5b\x86\x39\x80\x41\x90\x90\x35\xda\x28\x6e\xbb\x82\xd5\x21\xa7\xa2\xe5\xb0\xcd\xe9\x27\xb3\x02\xa0\x4e\x54\x07\x8a\x38\x38\xe7\x99\x2b\x58\x6c\xf3\x8f\xbb\x27\xad\x96\xe4\x8d\x33\xdc\x94\xcc\x45\x53\xa6\x63\xf7\x8a\xef\x1d\x2e\xb8\xf7\x15\xcf\x79\x46\x0d\xd2\xab\x2d\x97\xe2\x10\x05\xac\xf7\x76\x10\x68\x63\x49\x59\xf9\x52\xb3\x90\x0e\x93\xcb\x47\x73\xc3\x46\x43\x4d\x06\x81\x62\x88\xb4\xa1\xcd\x99\xa4\xa9\xba\x28\x64\xaa\x2e\xcc\xe2\x9a\x48\x13\x75\x31\x31\x9a\x64\x2f\x17\xcd\x45\x50\xb7\xa2\x5c\x5a\x88\x07\xa7\x68\x98\xe6\x13\x1d\x0d\xa3\xd0\x92\x94\x95\x00\xdf\x32\x6c\xb9\xa1\x6d\xcf\x64\x8b\x63\x81\x63\x3d\x0b\xc1\x86\x8f\x05\xd8\x99\x0f\x2e\x8b\x0b\x22\x0b\x9a\x44\x83\x21\x11\x03\xa1\x64\x01\xc0\xc3\x81\x66\xe1\x88\x84\xd0\x46\x0c\x84\x9b\x8d\x47\x24\x84\x8c\x22\x23\x41\x67\xa3\x11\x09\x01\xb8\xa3\xa1\x67\x43\x11\x09\x01\x98\xc1\x00\xb4\xa1\x40\xb3\x00\xdc\xaf\x38\x0c\xcd\x0e\x54\x70\x38\x5a\x37\xc7\x45\x9a\xba\x39\xc6\xdc\xf7\x9b\xfa\x7a\x5b\xe8\x4b\xf2\x4e\xea\x46\x76\xf2\xa4\x28\x84\x91\x66\x3f\x7a\xc3\x4b\xc9\xcd\xbb\x8f\x1f\xfe\xe3\xee\xfd\xed\xbb\x8f\xfb\x84\x20\x74\x75\x22\x63\x4d\x11\x85\x51\x4f\x10\x71\x6a\xc7\xa4\xb8\xd3\x00\x4c\x74\xe0\xd2\x1e\x21\x08\x82\x45\x07\x2e\x61\x74\xf4\xd6\x5c\xb1\x81\x4b\x1d\x42\x10\x3c\xb1\x00\x99\x98\x09\x41\xef\xb6\x0d\xc7\xa9\xda\x31\x35\x5a\x35\x74\x0f\xea\x10\xd0\x58\x8a\x8e\xda\xa5\x69\xf1\xab\x08\xb3\x3d\x00\x40\x47\xb1\xfa\xb7\xf0\xc6\x7e\xac\xe1\x7b\x42\x5c\x2b\xca\x32\x0a\x26\x7e\x7c\x74\xab\x1d\x51\x86\x63\x44\xa4\x6b\xcf\x12\x31\xf1\xae\xa8\x05\xf6\x50\xf6\xb1\xa8\x57\x14\xcc\x76\x64\x2c\x3e\xf6\x35\x0e\x34\x52\xde\x44\x01\x0d\x27\x39\x74\xd9\x09\x0a\x68\x4c\xc2\x83\x63\x2a\x28\xb8\x51\xc9\x0f\x28\x88\xa7\x60\x3f\x76\x3c\x27\x7a\xd6\x8e\xf8\xab\x14\x8e\xa4\xb5\x23\x3e\x9e\x16\x89\xa0\x59\xc5\x96\x47\x88\xaa\xb5\x23\xb6\x08\x49\x74\x84\xad\x1d\x47\x8c\xb3\x9d\x36\x6f\x12\x5f\x38\xe5\x18\x91\xb7\x76\x4c\xca\x2e\xc7\xbb\x64\x7b\xa6\x3b\x62\x44\x8f\x00\x49\xbe\x84\xc1\xbd\x3b\xf0\xe6\xf7\x28\xb0\x58\x53\x7d\x77\x4c\x3a\xc7\x38\xb7\xad\x1d\xf8\x78\xdd\xa8\x55\x5b\x5f\xef\x64\x2f\xae\x1d\x71\xbe\x5c\x3b\x62\x6b\x5a\xc4\xd4\xb3\x88\x4e\xbf\xc7\xc7\xf4\xda\x71\x92\xc8\x5e\x3b\x4e\x13\xdf\xbb\x07\xfb\x44\x51\xbe\x76\x3c\x2f\xd6\xd7\x8e\x29\xb4\x3c\x36\xee\xd7\x8e\x13\x45\xff\xda\x71\xdc\x18\x60\x3b\x26\x51\x9c\xc8\x78\x60\x3b\xb0\x51\xc1\x91\xec\x63\xaf\xc4\x76\x74\x6c\xb0\x1d\x13\xb6\x21\x9e\xe4\xe0\xa3\x85\xdb\x93\x8a\x20\x3c\xf1\x91\xc3\x76\x9c\x24\x7e\xd8\x8e\xe3\x47\x11\xdb\x71\xb2\x58\x62\x3b\x8e\x1f\x51\x6c\xc7\xf4\xb8\x62\x3b\xa6\x50\xb2\x09\x31\xc6\x76\xe0\x23\x8d\xa3\xee\xac\x8f\x4a\x7e\x4e\xbc\xb1\x1d\xd3\x8a\x2a\xc5\xc4\x1e\xbb\x57\x90\x11\xc8\x71\xb2\x52\xdd\xf7\x76\x24\x0e\x39\x0a\x22\x36\x66\xd9\x8e\x49\x9b\x17\x17\xbf\x6c\xc7\xb1\xa3\x98\x27\x4f\x3f\x9e\x62\xa3\xe3\x9a\xdb\x73\x8a\x20\xd8\x71\x31\xce\x76\x44\x45\x3a\xa3\x37\x74\xaf\x0a\xd2\x57\xae\x24\x0f\x44\x40\x47\xdd\x96\x56\xb4\xf4\x73\xe2\xa0\xed\x98\x15\xf0\x59\x01\x3f\xae\x02\x6e\x63\x68\x67\xed\x3b\x92\xa6\x46\xe5\xd9\xe1\x66\x1d\x88\xb6\x8e\xfc\x2e\xda\x8b\x17\x59\x50\xc1\x7b\xf2\xbc\xa4\xad\x25\x29\x64\x51\x65\x54\x0f\xd4\xe7\x08\xf9\xe0\xf7\x4b\xd4\x78\xe2\xdb\x78\x55\xea\x60\x25\xc7\xc7\xf3\xb0\x4f\xea\xd0\x1b\x45\x2e\xb3\x8c\x70\x61\x89\x2f\x80\xf7\xee\x8a\x92\x59\xe1\x38\x00\x92\x5a\xef\xdf\xa3\x59\xdc\x93\x6b\x10\xd1\xf2\xd7\x70\x65\x43\x39\xa1\xa2\x19\x34\x90\xa0\x08\xec\x73\x76\x7f\x2e\x9a\x26\x12\xb5\x78\x56\x17\x89\xdc\xef\x80\x13\x42\x11\x28\x00\xa7\xb4\xdf\x2e\x58\xa7\xa6\x0f\xe0\xaf\x4a\x58\xca\x44\xc2\xa0\x80\x73\xc5\x14\xf2\xe2\xae\x8c\x66\x42\x6e\xc4\x63\xed\x86\xa9\xac\x6b\xdb\xb2\xc9\xde\x2f\x04\x40\x7e\x0e\xe7\xad\x41\x6d\xe7\xb0\x68\xf9\x70\x81\xa3\x7b\x7d\x33\x78\xd5\xeb\xca\xd7\xb5\xa5\x32\x84\xd1\x31\xc2\x4a\xed\x85\x40\x0a\x66\x07\x52\x4a\x53\xef\xa0\x9b\x9f\x75\x02\x8f\x49\x8c\x18\x71\x92\xe4\xaa\x2f\x94\x5e\x75\x12\xd1\x21\x5e\x6c\x88\x16\x19\x62\xc5\x85\x88\xda\x1a\x08\x0a\xdc\x8c\x68\xf1\x20\x56\x34\x88\x62\xdd\x45\xc9\xd6\xfc\x53\xf4\x5d\xbb\x6c\xe5\x17\xf1\x94\x09\x6d\x54\x73\x88\xf4\x2f\x4a\x56\x30\x31\x1a\xec\xdc\x1e\x10\x9f\x0d\x9d\x0b\x44\x77\x53\x97\x2d\x15\xe1\xa4\x71\x14\x56\xf3\x98\x4a\x70\xee\xfb\xb2\x41\x67\x6a\x33\x53\x9b\x63\x53\x1b\x87\x68\xbf\x58\x52\x73\x64\x49\x1d\xa2\x5d\x63\xc2\x6e\xaf\x5b\x51\xb2\x70\x9b\xa2\x53\xcf\x5a\x19\x0c\x36\xa1\x31\xb0\xe2\x8f\x4d\xff\x38\xae\x1a\x72\xa9\xa5\x2d\xd1\x6b\x93\x59\x4a\x92\xb1\x47\x96\x39\xc9\x27\x00\x31\xa7\x82\x6e\x6c\x3d\x77\x2d\xbd\xbd\xd2\xe8\x9f\xe6\xda\x95\x3c\xed\x08\xe0\x36\xe7\x32\x58\x62\xd0\xe7\x6a\xc0\xab\xa5\xcc\x32\x56\x2a\x92\xf1\x07\x46\xae\x59\x91\xc9\x9d\x2b\x9f\x2e\x52\x72\xaf\xa9\x36\x57\xef\x9e\x69\x75\x9c\x0a\x76\x75\xba\xab\xcd\xb5\x8a\x39\x4e\x48\x7a\x85\x54\x4f\x52\xd8\x44\x2d\xf2\x5e\x00\x9d\xbb\xcc\x9e\xe8\x4e\x9d\x93\x77\xec\x91\x95\x21\x9a\x70\xbb\x7e\x27\xf5\x9d\x15\x85\xbb\x71\x46\x16\x0c\xe1\x6b\xf2\x1a\x1a\x08\x69\xa2\xe9\x06\xd4\x9a\x3a\x59\x35\x00\x5b\x96\x1d\xf0\x96\x7c\x3d\x71\xc5\xa6\xa6\xde\xd8\x31\x09\x55\x7f\x0f\xdf\x31\x04\xd9\xfe\xfb\x28\xc7\x97\xf9\xe4\xb2\x88\x83\xbb\xb4\x69\x68\xbe\xd9\x1c\x6b\xe3\xb4\x6b\x66\x68\x2b\xa2\x87\xc8\x89\x51\xaf\xb8\x20\xb6\x87\xa0\x6d\xce\xd8\x20\x7f\x3d\x33\xab\xa0\x2a\xbf\xe3\x61\x35\x19\xa5\x7d\xe1\x99\x77\x21\x95\xbe\x37\x7a\x70\x6c\x35\xa1\x3b\xff\x22\xe4\x38\xd2\x2c\x63\x29\xe1\x79\xce\x52\xa3\xf7\x66\x3b\x42\xd7\x1a\xd1\x0b\xd5\xe8\x6b\x1d\x9d\x3c\x29\x19\xf5\xe9\x95\x90\x50\x07\x49\x90\xed\xbc\x4a\x04\xcc\x0e\x44\xcd\xca\x9c\x0b\x50\xc6\xad\xb7\xce\x65\x70\x36\x79\x95\x18\x3e\xd2\xc9\xbc\x6c\x6e\x34\x70\xbf\x16\x86\xec\x3b\x44\x11\xa0\x57\x99\x4c\x1e\x14\xa9\x84\xe6\x99\x5d\xb2\x94\x0f\x24\x91\x79\x91\xc1\xdd\x79\x06\x17\xa8\xff\x73\x51\xe3\xdb\xc2\x40\x57\x17\xbf\x6f\xfe\x04\x3f\x1c\xbb\x7e\x11\xfb\xc4\x92\x09\xe5\x22\x0c\x85\x34\x87\x04\xde\x61\x29\x6a\xb1\x70\x2d\x0d\x43\xc2\xdb\x5e\x9b\x9e\x05\x35\x31\x5c\x92\x9b\x4f\x2c\x69\xf5\xa2\x80\x4e\xac\x49\x20\xbb\xbd\x3d\xb4\x84\x4b\x7d\xaa\xa6\x80\xa8\x4c\x9d\xf6\xe8\xec\xdc\x95\x7d\xdb\xf7\x57\x73\xc0\x48\xc6\x05\x8b\x73\x17\xba\x3c\x9f\x76\xbe\x7e\x8d\x2b\xd6\xc6\xe5\x24\xe7\x18\xa3\x36\x2f\xa1\x29\xc3\xae\x8e\x43\xf5\xf3\x83\xbe\x02\x52\x6a\xf2\xf2\xec\xe2\x2c\xa6\x2d\xfb\xbe\x19\xf2\xcc\x48\x32\x19\xb3\x14\xda\xda\x24\xdd\x37\x62\x80\x2a\xa2\x78\x5e\x64\x3b\xd8\x85\xb3\xf4\x9c\x70\xed\x03\x5b\xcb\x4a\xf8\x3d\x89\xe9\xfc\x07\xd9\x20\xe7\x44\x49\xa2\x4b\xea\x5b\x05\xd9\x5f\x0d\x38\x5d\x56\x96\xdf\x44\x80\x7c\x79\xf6\xff\x9e\x9d\x13\xa6\x93\x57\xe4\x49\x8a\x33\x0d\x07\xb2\x24\x1f\x6d\xe5\x0b\xea\x3f\xb9\x93\x55\x04\x50\xc1\x6c\x99\x0a\xf6\xa9\xc8\x78\xc2\x75\xb6\x03\xa2\x4e\x64\xa5\x6d\xda\x27\xd5\x2e\xa5\x2b\x02\xe8\xcd\x27\xae\x5d\x64\x96\xb9\xc9\xdf\x00\x76\x5a\x02\x4f\xa8\x11\xe2\x1e\xd9\xc5\x96\xd1\x4c\x6f\x63\x7a\xe8\x18\xbc\x11\x52\x2c\xfe\xc9\x4a\x09\x09\x64\xc2\xc1\x38\x61\x9b\xc9\x49\xfe\x9f\xd8\x16\x54\x91\x2e\x0d\xc3\x0c\xbe\x67\x53\x1a\xb5\xff\xfb\xc7\x8f\x77\xdf\x33\xbd\x47\x0c\x0d\x3c\x1f\xcc\x82\x27\x89\x05\x2b\xd7\xb2\xcc\x4f\x45\x15\xb7\x52\x21\x57\x48\x0e\x56\x29\x95\xb6\x05\x10\xac\xe8\x25\x58\x62\x70\xb9\x89\xa3\x88\x39\x7f\x59\x97\x74\xb8\xbd\x5b\x92\xff\x90\x15\x14\x22\xa0\xab\x6c\x07\x19\xdc\x2e\x25\x2a\x02\xe2\x0b\x33\xbd\x17\x86\x8e\x99\x7d\xff\x77\x46\x53\x9b\x56\xaf\x34\xa3\xd1\x3d\xa0\xa2\x10\xb3\xf5\xbd\xa9\xcc\xa6\x52\x5a\xe6\x64\xeb\x26\x1d\x93\x0e\xd6\x1e\x0e\xd7\x96\x80\x8f\x56\xe7\x84\xa6\x7d\x96\x40\x38\xe8\x9f\xab\x77\xac\x99\x83\xdd\x15\xf7\xfb\x0a\x1a\x62\x27\xb0\xd4\x28\x77\xab\x9d\xb8\x6b\xc6\x6e\x93\x24\x84\x5d\xa2\xad\x5d\x11\x01\x6c\x6a\xa7\xd6\xd8\x08\x02\xd2\x67\x39\x74\xeb\xb0\x06\x02\x84\xab\x73\x7f\x3c\xaf\x59\xe7\x71\xa7\x3f\x5e\x2f\xe3\xa8\xf3\x9f\xd6\x46\x31\x72\x7f\x17\xd1\x2b\xfa\x4c\x4d\x14\x8b\xa8\xe8\xdf\xc3\xd8\x5f\x5b\x84\x05\xd2\xb3\xac\x84\x07\x17\x47\xb1\xf2\x31\x9c\x7e\xb9\x3f\xef\xa8\xa3\x2b\x24\x46\x07\xf6\x83\x8a\xdd\x7b\x74\x64\x16\xb4\x9b\x82\x19\x71\xa1\xd9\x06\xa5\x15\x76\xdf\x7b\x4e\x7f\x48\x6b\x5e\x2f\x89\xa8\xf2\x15\x2b\x9b\xb4\x81\x52\xc7\x29\x06\xdd\x63\x69\xf9\xff\xdf\x59\xc0\xa1\xda\x41\x87\xc3\xc9\xf0\x25\x15\x1b\x46\xbe\x35\x47\xff\x97\x7f\xf9\x97\x3f\xfd\xcb\xd2\x4e\xd9\x87\xaa\xa0\xa3\x4d\xcc\xb8\xbd\x7c\x77\xf9\xf3\xfd\x8f\x57\x90\x3d\x88\xc7\x97\x4f\x8b\x46\xa3\x5e\x70\xa1\x17\xb2\x5c\xd8\x3d\x7f\x4d\x74\x89\xbe\x67\x10\xc9\x1f\x41\xb9\xba\x36\x75\x78\xb9\x5d\xc0\xce\xc9\x2c\x71\xe4\xc7\x49\x2a\x46\x6e\xea\xda\x0b\xcd\x45\x3a\xe1\x0d\x8a\x23\x7b\x0b\x40\xc0\x53\x48\xc5\x3a\x29\xee\x65\xf2\x30\x49\x2e\x3e\xfb\x78\x75\x67\x5f\x6e\x89\xc6\x54\x38\x33\x01\xe1\xe2\x51\x66\x8f\xf8\xe3\xa0\xe4\xe3\xd5\x1d\x2c\x74\x09\xff\x05\x96\x16\x50\x26\x77\xe6\x0b\x3e\xc8\xdb\x3a\x90\x90\x30\xeb\xa2\x81\x10\x86\x4f\x33\xae\x34\x4f\x00\x7a\x63\x52\x34\xdf\xc1\xf9\x8d\x3e\xab\x3c\x7e\xf6\xde\xbb\x9c\x7a\x45\xf3\x28\x1c\xef\x26\xb7\xb4\x44\x73\x7c\x50\xdf\xcc\x23\x5a\x3c\xc2\xf1\x06\x1b\xc3\x3f\xf3\x88\xbe\x71\x14\x1e\xf1\x75\x50\xc9\x88\x87\x8b\x92\xdd\x6b\x59\x44\x7b\x07\xec\x6b\x03\xbe\x81\x15\x5b\xe3\xc2\x91\xe9\xa0\x29\x3f\xad\x98\x6b\x20\x7d\x79\x77\x1b\x61\xb5\x90\x1d\x73\xbd\x8d\x0e\x54\x55\xb2\xf5\xf6\x28\xc1\x94\xba\x00\x23\x7f\x55\x58\x7d\x0d\x01\x74\x4d\x79\x56\x95\xec\xdc\xec\x16\xcb\x61\x0f\xce\x9b\x34\x06\xb3\x04\x26\xec\x8f\x4c\x27\xe3\xa5\x0b\x9b\xe1\x3d\x1f\xce\xfe\xe8\xb7\x71\xcf\xc1\x40\x92\x92\xaa\x2d\x1b\xed\xdb\xd8\x0c\xf6\x89\x6b\xe5\x9b\x4f\x53\x25\x85\x35\xc8\xba\x6d\x05\x1e\xa7\x5a\x35\x6b\x71\xea\xbc\x9b\xa8\x05\x7b\x27\xd3\xb3\x33\xd5\x01\xb9\x29\x69\xc2\x48\xc1\x4a\x2e\x53\x02\x99\x9e\xa9\x7c\xc2\x5c\xd8\x15\xdb\x70\xa1\x1c\xb6\xc0\xb2\x3d\x5a\x19\x0e\x67\xfb\xf1\xfa\xb2\x54\x4b\xf2\x01\x5b\x7f\x8c\x34\x49\x36\xb2\xd2\x89\x6c\x08\x9e\x5b\xc9\xf9\xde\x16\x23\xeb\x4d\x00\x32\x55\x34\xcb\x76\x0d\xa2\xfa\x58\x58\xdd\xbb\x35\x08\xa0\xed\xcd\xfb\x2c\xfe\x26\x73\x43\x9a\xbf\x4d\x9f\x2c\x58\xf6\x19\x4d\xb6\xf8\x8a\x4c\xb3\x0b\xab\x35\x66\x17\xd6\xec\xc2\x9a\x5d\x58\xb3\x0b\x6b\x68\xcc\x2e\xac\xd9\x85\x35\xbb\xb0\x66\x17\xd6\xec\xc2\x6a\xc6\xec\xc2\x3a\xce\xfc\x67\x17\xd6\xec\xc2\xda\x1f\xb3\x0b\xab\x6f\xfc\xca\xcc\x93\xb3\x0b\xeb\xcb\x1b\x67\x67\x17\xd6\xec\xc2\xc2\x02\x99\x79\xc4\xec\xc2\x9a\x5d\x58\xa3\x0f\x23\x1f\xf4\xbe\x9f\x3b\xa3\xdf\xc4\xe4\x79\xdd\x81\xb5\x9b\x27\x56\x33\x32\x78\xd7\xce\xf2\xb1\x40\x97\x4d\x09\xf9\xc0\xc2\x9a\x1a\x17\x3e\x4b\xc5\x39\x7c\x2c\x74\xc8\x82\x39\x59\x6b\x94\xa1\xf6\x48\x85\x4c\x1b\xeb\x7b\xcb\xec\x6e\x75\xc1\x71\x72\x85\x27\xcf\x38\x7b\x7b\x9c\xad\x1d\x97\xaa\x45\x6c\x66\x15\xc6\xce\x8e\xb7\xa0\xc7\xf6\xfb\x8e\xb0\x9c\x47\x58\xcd\xbd\x2d\x1c\xcb\x9a\x43\x16\xf3\xc6\x0e\x8e\x84\x38\x6e\x2d\xef\xb1\x81\x63\xe1\xf6\x5b\xca\x7b\xed\xdf\xd8\xc5\x1f\x5a\xc9\xc7\x6c\xdf\xf8\x2d\xad\x2d\xe4\x21\xbb\x37\xda\x35\xe4\xad\xe3\x18\x9b\x77\x0c\xd0\xe5\x09\xec\xdd\xcf\xb4\x75\x47\x99\xc4\xa2\xc5\x88\x18\xeb\x40\x04\x7f\x72\x01\x01\x1f\xb7\x25\x53\x5b\x99\x21\xee\x75\xe7\x4e\xbf\xe5\x82\xe7\x55\x0e\xad\x23\xcd\xf5\xe5\xae\x37\x64\x55\xb2\xba\x4d\x2c\x62\x79\x96\x67\x58\x23\x5e\xd3\x85\xb2\xee\x32\xb9\xd6\xac\x24\x5b\xfa\x08\x74\xb2\x4a\x12\xc6\x52\x5c\x0b\x88\xb6\x4a\xf6\xa7\x65\x3d\xdb\xba\x0f\xc0\xb7\x61\x20\xb6\x2e\x26\x48\x8a\x7f\xfa\x23\x72\xe7\x71\x52\x25\xda\xa5\x10\xe9\x4e\xc0\x49\x91\x68\x57\x42\x1c\x7b\xc0\xab\x2c\x27\x71\x1f\x20\x5d\x07\xce\x21\x80\x26\x8c\xd3\xdd\x06\x91\xf7\x3c\xda\x5d\x80\x76\x15\xd4\x0e\x00\xe4\xa2\x9f\xef\x26\x88\xa2\x87\x78\xf7\x80\x9b\x04\x5e\xf5\x7c\xa6\x6b\x60\x8a\x5b\xe0\x59\x75\x31\x9f\xeb\x0e\x98\xa4\xa1\x46\xbb\x01\x8e\xeb\x02\xf8\x2c\xb5\x70\x23\xf6\x31\xce\xe4\x1f\x6d\xee\x8f\x33\xf5\xe3\xcd\xfc\xa7\x30\xf1\x47\x1e\x0d\xde\x6c\x13\x61\xb2\x99\x62\xae\x99\x60\xaa\xc1\x9b\xf2\xdd\xa6\x22\xf1\x23\x64\xa2\xe9\x18\x5e\x90\x30\x47\xcc\x33\x53\x8c\x2e\x47\x30\xb8\xc4\x18\xe4\xd1\xc6\x78\x7c\x70\x27\x71\xd2\xc7\x54\x43\x7c\x14\xb6\xe0\x89\x0f\xd2\xac\x14\x41\x42\x5c\xdf\xf9\x6b\x96\xd1\xdd\x3d\x4b\xa4\x48\x11\x9c\x69\xaf\x90\x59\x8d\xd3\xca\x02\x70\x32\x76\x6c\x84\xe6\x96\x2a\xdf\x66\xde\x07\xbf\x66\xdd\xf6\xe7\xd0\x2f\xc0\xce\x18\x61\xfd\x21\x5f\xd4\x02\x44\x4e\x2a\xee\xdb\x60\xd3\x69\x07\xf6\xef\xf2\x89\xc8\xb5\x66\x82\xbc\xe4\xc2\x9f\xd9\xab\x56\x44\x50\x8c\x9e\x55\x5f\x10\xf3\xfe\xb7\xdf\x78\x70\x5f\x9b\x7a\x04\x8a\x9e\x52\xc7\xd4\x4c\x1d\xc8\x63\xa8\xa6\x0e\xd4\xba\xca\xba\xea\xa9\x55\x59\x63\x75\xd3\x6f\x9b\x12\x8d\xdf\xc2\xdc\xea\x5b\x44\x45\x4a\x5c\x90\x3f\xea\xf2\x7c\x55\x47\x18\xe1\x1e\x3c\x95\x6b\x30\xca\x2d\xd8\x38\xfc\x50\x90\x9f\xe7\x12\xfc\x2c\x7a\x75\xc0\x0d\x68\x54\x6c\xb4\x82\xf6\x0c\x17\xe0\x6f\x56\x86\x1c\x73\xf5\xcd\x32\xe4\xfe\xf8\x92\x52\x95\xe6\x39\x93\x95\x3e\xb2\x40\xf5\xb4\xe5\xc9\xb6\x71\x8b\x21\xb6\xd1\xcc\x43\x11\x59\xed\xc9\xb1\xdf\x3a\xc0\x87\x5c\x1a\x01\xf3\xdb\xe8\xbc\x96\x5f\x88\x54\x85\x3c\xdf\xb0\x39\x66\xb0\x77\x75\xe3\x22\x6d\x3a\xb4\x51\x45\x28\xb9\x7e\x77\xff\xf3\x9b\xcb\xbf\xdd\xbc\x09\xdd\x8d\x1b\x9a\x6c\xdb\xc9\x81\x82\x50\x20\x9e\x70\xd7\xb6\xf4\x91\x11\x4a\x2a\xc1\xff\x51\xd9\x5a\xaa\xe4\x65\x0d\xf9\xd5\x91\x2b\xdd\x23\x69\x19\xf4\x67\x9c\xd0\xb7\x01\xde\x73\x2e\x1e\x69\x14\xb9\x52\xe6\x7b\x34\x2b\xb4\x55\xe6\x45\x23\x45\x51\x4b\x23\xb7\xac\x64\x64\xc3\x1f\x9d\x91\xdb\x15\xb5\xa4\x69\xed\xde\x32\x08\x6d\x30\x2b\x9c\x57\x44\x57\xe0\x68\xda\x32\x22\x98\x36\xd8\x5d\xeb\x98\x52\xa8\x4e\xf6\x66\xa5\x98\x3a\x27\xab\x2a\xa8\x86\x19\x15\x87\xe7\xb4\xe4\xd9\xae\x3d\x11\x9a\x2d\xc9\x3b\xe9\x25\x97\xdd\xde\x72\x02\x40\xaf\xdf\xdf\xdc\x93\x77\xef\x3f\x42\x03\x70\x28\x4e\xbb\xa5\xda\xbe\x0d\xdb\xb9\x62\x06\x9e\xeb\xb8\xb5\x24\x97\x62\x87\x21\x84\x96\x0a\x71\x45\x8c\xb8\xc2\x84\x01\xe1\xd8\x89\x2f\x7c\xfb\xe2\x9b\x25\xfc\xef\x85\xd9\xdd\x32\xcc\x95\x6a\xb7\x63\x37\xf7\x10\x78\x07\x70\x35\xbe\xca\x5a\x18\xe0\xf6\xfc\x8b\x77\x6e\xa8\x83\x1b\xee\xcc\x8e\xb6\xbb\xef\xd7\x68\x81\xe2\x2b\xb6\x67\x08\x17\x9b\x2c\x02\xbb\x23\xbb\x37\x34\x13\x8d\xae\xa6\xde\x70\x23\x2f\x6a\xb8\x2b\xe9\x4e\x1d\x5a\x65\xa1\x58\xfa\xed\x9d\x47\x88\xa5\x2d\xc2\x9c\xef\x35\x9b\x82\x0f\x58\x13\x19\x4e\x92\xfc\x86\xfc\x2b\xf9\x44\xfe\x15\xc4\x8e\xbf\x60\xe4\x8a\x38\xde\x11\xa7\xa0\x58\xb9\xfa\xf6\x2e\x7a\x87\x7f\x32\xd7\xd2\xbc\x6b\x76\xc8\x28\x87\x5c\xa4\xae\x19\x9e\x66\xa5\x21\x4d\xf8\x60\x22\x79\xf4\x3a\xfc\x66\x62\x27\x41\x1c\xb0\xaf\xe1\x10\x67\xdd\xaa\xee\x4c\xf4\x09\x50\xc7\x7c\xc2\xe8\x34\xef\xdc\xc5\xed\xd4\x93\x86\x2f\xa2\x80\xc2\xac\x72\xaa\x93\x6d\x97\x3a\x18\x91\x49\xe9\xe6\x22\x2a\x92\x4a\x12\xae\x7b\x6c\x87\x0d\x76\xd8\x72\x94\xa7\xec\xb4\x08\x8e\x75\x45\x75\xf0\x60\xec\xf4\xf6\x54\x03\xa4\x9a\x96\x7a\x19\xa7\x95\x66\x5e\xc8\x74\x69\xc5\x23\x33\x49\x87\x10\xc1\x2a\xeb\x0e\xe2\x98\x0c\xe5\xb4\x19\x1f\xd1\x83\xbf\x8a\xe6\x56\x27\x54\xd8\xb8\xb6\x35\x2b\x4b\x1b\xb3\xb2\xda\x11\xd7\x00\x1a\x75\xa0\x51\x77\xb5\x28\xa5\x96\x89\x44\x75\x37\xe8\xba\x77\xdc\x8b\xb0\x4c\x6b\xe0\xf0\x36\xa4\x1f\xae\xef\xce\xc9\xc7\xab\x3b\xdc\xb5\x92\x25\xb9\xbf\xfa\x78\xd7\xd5\x37\x5e\x7c\xbc\xba\x43\xb5\x61\x8e\x58\x2c\xbe\x5d\x59\x87\xfd\x85\x14\xb7\xe3\x76\x43\x28\x19\x4d\xf9\xd1\xe3\x2b\x1d\xfa\x34\xd0\x83\xa2\xd0\x81\x5c\x55\xb2\x5c\x3e\xb2\xd4\x0a\x55\x1e\x1e\x13\x69\x21\xb9\x91\x60\x78\xa8\xe1\x14\x22\x36\x73\x8e\xbe\x0c\x8e\x39\xfa\x92\xcc\xd1\x97\x73\xf4\xe5\x1c\x7d\x19\x7a\x76\x8e\xbe\x9c\xa3\x2f\x87\xc7\x1c\x7d\x39\x47\x5f\x8e\x8d\x39\xfa\xd2\x8d\x39\xfa\x72\xc2\x94\xe7\xe8\x4b\xc4\x0b\x73\xf4\xe5\x57\xed\x39\x9f\xa3\x2f\xe7\xe8\xcb\xa1\x31\x47\x5f\xc2\x98\xa3\x2f\xe7\xe8\xcb\x39\xfa\x72\x8e\xbe\x1c\x7a\x76\x8e\xbe\x1c\x1e\x73\xf4\xe5\xe0\xf8\xf5\xc8\x90\x73\xf4\xe5\x1c\x7d\x39\x47\x5f\x7e\xe9\xe8\x4b\xdf\x5e\x20\x26\xa6\xf0\xec\x4a\xe6\x45\xa5\x19\xf9\xe0\x5f\xae\xd1\x93\xac\x76\x36\x22\x01\x1d\x78\xf5\x7c\x47\xa7\x6d\x29\x5f\x95\x10\xe0\x77\x61\xab\xda\x2f\x12\x3b\xc5\x45\xbd\xbe\x45\x3d\xa3\x8b\x63\x39\x3b\x33\x9e\xf3\x50\x30\xa6\x19\x4d\x4c\xe4\x5d\x14\x63\x8b\x22\xb0\xdd\x13\x7a\x03\x53\x6b\x99\x08\x6d\x0b\xf2\x4f\x70\x3d\x68\x2e\x2b\x14\x1f\x07\x2f\xb9\x3d\xea\x7a\x1f\xad\xe1\xf3\xcb\x1f\x13\x89\xa3\x61\xce\xc4\xfb\x75\x9e\xd6\x07\x37\xb9\xfd\xf3\x72\xe4\xec\x79\xe7\xe5\xaf\x26\xc4\x64\xd5\x5f\xe2\x8a\xc8\x9c\x6b\xcd\x30\x7e\x75\x23\x76\xd3\xb6\x33\x99\xeb\x8e\xd0\xe3\xb0\x0d\x6a\x4c\x51\x8d\x23\xbc\x2d\x67\x67\x2b\x9a\x49\xea\x2d\x2b\x9f\xb8\xf2\x5d\x59\x6a\xa9\x13\xb0\x66\x91\xb2\x35\x17\xa8\x29\x03\x0b\xf8\x45\xe1\x28\xf2\x41\xa3\xb1\x95\x5c\xef\xae\xa4\xd0\xec\x53\x40\x16\xec\xa2\xd9\xbd\x7b\x95\xc8\xc2\x7a\xb2\xbd\xb0\xea\x9a\x44\x94\x95\x80\x08\xb0\x23\x97\x01\xb3\x5d\xee\x2f\xfc\xc4\x61\xf7\xd8\x27\x7d\x71\x94\xaf\x68\xaa\x1e\x9a\x73\x63\x0b\xc3\x8e\x9b\xe3\x39\xf8\xe6\xb1\x48\x3f\x10\xc1\xbb\x92\x3f\xf2\x8c\x6d\xd8\x8d\x4a\x68\x06\x38\x13\x2b\x1c\x5d\x0e\xc0\x81\xcb\x56\xca\x4c\x91\xa7\x2d\x33\x77\x02\xa5\x75\x15\xa5\x04\x7b\x76\x42\x05\xd9\x50\x2e\x48\x6e\xf6\xb0\xf0\xe0\xcd\x81\x9b\x3b\xa5\x15\x29\x68\x89\x53\xe5\x1c\x48\x17\x60\xbc\x92\x32\x73\xd1\x23\xd9\xae\x99\xa3\x2b\x2e\x27\xe4\xcf\x82\x3d\xfd\x6c\xbe\x87\xa1\x00\xeb\x8c\x6e\xea\x00\x2a\xc5\xf4\x81\x1c\xdf\x7c\x7c\x68\x9b\x10\x5f\x81\xd0\x87\x8a\x11\x9a\x3d\xd1\x1d\x6c\xe7\xfe\x57\xb8\x7a\x4d\xbe\x7d\x05\xd8\x4f\x31\xf3\xae\xe7\x91\x92\x3f\xbe\x02\x3b\xdf\xd5\xe5\xdd\xcf\xf7\xff\x71\xff\xf3\xe5\xf5\xdb\xdb\x77\x58\x92\x60\xf6\x92\x05\xcb\x35\x26\xb4\xa0\x2b\x9e\x71\x1c\x17\x3a\xf0\x3c\xb5\x5f\x07\x92\x9a\xa6\x17\x69\x29\x0b\xbb\x0f\x65\x25\x04\x4e\x79\x6b\x22\x6d\xbb\xb2\x77\x3b\x4d\x01\x8e\x70\xdd\xf9\x24\x02\xf2\xa6\xa4\x42\x7b\xc1\xb1\x7d\x2c\x65\x25\x8c\xc0\x7f\x6c\x2f\x3c\x4d\xa7\x04\x68\x5d\xa6\x29\x4b\x63\x97\xf6\x1c\x3f\xef\x95\xff\xd4\xae\xc9\x84\x20\x77\xef\xef\x6f\xff\x67\xfc\x2c\x88\xc3\xb9\x28\x97\xdd\x89\xe2\x6f\x08\x31\xe8\x37\xe1\x04\x3e\xb8\x08\xcb\xf9\x0c\x46\x5e\x38\x7a\x0c\x54\xcd\x3b\x62\x6d\xcc\x1f\x2a\xd1\xcd\xab\x6b\x20\x91\x5c\xa6\x6c\x49\xee\x2c\x71\x47\xed\x5f\xf7\xfd\x56\xd8\x3f\x2d\x19\x31\x40\x84\xe6\xd0\x31\xcd\xc8\xba\x8f\x34\xc3\xf1\x36\x2d\x6d\x14\x63\x3b\x7f\xa2\x43\xdd\xd6\x34\x53\x08\x02\x14\x43\xcf\x0d\x4b\x7b\x6b\xc4\xf9\xc8\xfd\xac\xdf\x23\x29\x13\x52\x3b\x0d\xc1\x7c\x19\x12\x42\x4a\x99\x10\xac\x96\xd0\x72\x26\x76\x28\xae\xeb\xe8\xe7\xc9\x39\x57\x7e\x2f\xee\xfc\xb7\x11\xc0\xad\x55\xa7\x52\x4c\xf5\x93\xf3\x46\x6f\x30\xdf\x2f\x19\x4d\xa5\xc8\xb0\x9e\x7e\x6b\xf3\xcf\xa9\x7a\x60\xa9\xfd\xc1\xc9\x25\x4e\xc7\x51\xae\xbb\x9f\x9b\xee\x47\xdc\x7d\x5b\x33\xaa\xab\x92\x59\x79\xc4\x7a\x33\x98\xa0\x2b\x94\xaf\x22\x2a\xc0\x9e\xa6\xef\x45\xb6\xfb\x20\xa5\xfe\xae\x0e\x7c\x8d\x44\x83\x9f\xac\x34\xb8\x67\x63\x01\x21\x04\x8c\xee\xe9\x02\xb9\x9d\x80\xf8\xed\xf8\xdb\xeb\xe6\xd8\x4f\x80\xf6\x65\x25\x2e\xd5\xf7\xa5\xac\x62\x5b\x80\x1a\x8c\xfc\xfe\xf6\x1a\xee\x6a\x65\xef\x29\x13\xba\xdc\x41\x60\xbd\xb3\x1a\xc7\xc8\x2f\x8d\x4c\xf9\x83\xc1\xd1\x3d\xac\x34\x92\x6c\x25\x14\x43\x85\x82\xbd\xa5\x3b\x42\x33\x25\xbd\xf8\xca\x05\xb9\x03\x2f\x66\x5b\x3f\x5b\xda\x6c\x2b\x86\xcc\x9d\x59\x49\xbd\x25\x7b\x20\x00\xe9\x0f\x21\x9f\x23\x97\x6e\x8d\xa1\x4d\x82\x34\x17\x07\x1f\xd0\xf4\x81\x29\x52\x94\x2c\x61\x29\x13\x09\xe2\xec\x5b\x56\xcb\xbf\xfc\xf9\xa8\x8e\x31\xc0\x94\x77\x52\x98\x6b\x12\x89\x2b\xb7\x22\xe5\x09\xb5\xb4\x91\xea\x3d\xfa\x03\xf6\xfb\xb2\xc2\x1c\x02\x5c\x26\x21\xc5\x02\x2e\x49\xa5\x58\x09\xb6\x13\xa3\x46\xd8\x38\xfa\xbf\x57\x2b\x96\x31\x6d\x95\x17\xc8\x97\xa3\xa8\xe8\x7c\xf3\x2e\xcf\xe9\x86\x11\xaa\x6b\xd4\xd3\x92\x30\xa1\x2a\x68\x4d\x4a\x35\x98\x56\x24\x53\xc8\x6c\x36\xab\xb4\x90\x1f\x6e\xaf\xc9\x37\xe4\xa5\x99\xef\x2b\x40\x97\x35\xe5\x19\x04\x39\x6a\x5a\xea\xe8\xd8\x05\xbe\xf6\xd3\x80\x85\xc3\x8d\x20\xb2\xb4\x84\xe1\x9c\x08\x69\x7b\xdd\xba\x95\xe3\xf4\x30\xaf\xe8\x39\xaf\x3c\x18\x10\xd1\x17\x08\x01\xdf\x01\x88\xb9\x40\xc8\x13\x3b\xc9\x05\x8a\x26\x9e\x3f\x28\x56\x4e\xa0\x9d\x3f\x9c\x84\x76\xb6\x85\x24\x73\x3f\x3a\xbb\x83\x41\x30\xb8\x04\x39\xd3\x34\xa5\x9a\x3a\xaa\xdb\x64\xee\x1c\x22\x06\x46\x2d\x1f\xa5\xbd\xbd\x88\x81\xa1\x05\xc3\xb4\x17\x81\x18\x18\x0c\xfb\x8a\x68\xaf\x62\x6f\xb8\xa8\x3e\x59\xc7\xf8\x14\x73\xc3\xfd\x0d\x00\x20\x89\xbf\x17\x70\x84\xb4\x28\x32\x0e\x29\x2e\xc8\x1b\xd7\xf2\xe4\xde\x76\x50\x63\xbf\xa5\xb2\xa3\xa1\x58\xf2\x43\xb3\x4c\x1a\x06\x61\x64\x25\x2a\x52\x99\x1f\x4c\xd8\x08\xa5\x8c\x26\xdb\x98\x6b\xb1\x8c\x11\x05\x7e\x7d\x94\x2c\xce\xfc\x92\xb1\x47\x86\x4a\xa7\xdd\xaf\x63\x62\xde\x33\xc2\xa9\x3f\x31\x00\x44\x32\xba\x62\x59\x4c\x86\x94\xc5\xc5\xda\x76\x85\x76\x53\xda\x11\xa9\x96\x97\x32\x9b\x12\xf4\xf9\x41\x66\x10\xa0\x44\xeb\xc5\x1a\x40\x5f\xf9\x5a\xe1\xf1\xf8\xb5\x1a\x1d\xad\xbb\x56\xd0\x69\xbf\xee\xb5\x56\x28\x5e\x4c\xf6\xd7\x6a\x58\x78\x77\xad\xc0\x3b\xbf\xe6\xb5\x46\x98\x8a\x9e\xb8\x48\xe5\x93\x9a\xce\x3c\x7e\xb2\x00\x3c\x7d\x4a\x0c\x21\xd4\x5c\x6c\x94\x67\x20\x38\xdb\x06\xcd\xb2\x8e\x4d\xa3\x8f\x83\x78\x07\xd8\xba\x44\x75\x34\x75\x6d\xf7\xf7\x69\xa5\x17\x69\x2b\xe5\xbc\xab\x2d\xca\x8d\x80\x1a\xa1\xe6\xa1\x53\x2e\xbe\x28\x6d\xdf\xe4\x8a\x5e\x95\x06\xb6\xe6\x34\xbb\x2f\x26\x35\xbe\xff\xfe\xed\xfd\x65\x17\x88\xb9\x32\x4f\x50\x6d\xca\xec\x84\xf9\x3b\xf6\x9e\xa4\x39\x57\x8a\x4b\x41\x9e\xd8\x6a\x2b\xe5\x03\x79\xe9\x3d\x89\x1b\xae\xb7\xd5\x6a\x99\xc8\xbc\xe5\x54\x5c\x28\xbe\x51\x17\x0e\x8f\x17\x66\x35\xd8\x3e\xec\x5c\x64\x5c\xb4\x4c\x5e\x50\xb6\xc8\x85\xb4\x99\x09\x93\xa4\x5e\x11\x12\xa2\x39\x48\x57\x79\xc3\x79\x46\x0e\x37\xc6\xd6\xd1\xe0\x2c\x43\x77\x49\x06\x63\x99\x4d\x43\x32\x74\x28\x2b\xb6\x74\x61\x19\xa9\x4b\xbb\x86\x24\xfc\xad\x14\xb2\x44\x5d\x37\x33\x5c\xfd\x0d\xc8\xaa\x33\x0a\xac\xb5\x9d\xc1\x94\xdd\x8d\x86\x1d\x70\x56\x36\x24\xd0\x75\x46\x37\x27\x21\xdd\x87\x38\xfa\x0e\x9d\x90\x16\xc0\x53\x38\x0e\x97\xc1\x1f\x91\x4f\xd5\x8f\x26\x16\x01\xac\x7a\xb5\x6c\x9d\x1b\x16\x21\x83\xa7\xdb\x3a\x37\xac\x4f\x22\x7c\xba\xa7\x3b\xb7\x5a\x07\x9e\x78\x5c\xa0\x0b\xbb\xd7\x0d\x6d\xf4\xcc\xa6\xd1\x8d\x91\xbb\x70\xa0\x41\x8f\xe9\xc7\xd8\x9d\xb5\x8c\xfc\x40\x93\x0e\xe8\xc9\x48\xe8\x48\xe5\xc4\xf2\x2f\x34\xc1\x3b\xb6\x7e\x42\x22\x75\x14\x24\xc8\x16\xb7\x0b\x51\xbf\x88\x12\x13\x03\x17\x69\xe8\x8a\x7c\x68\x23\x2f\x96\x02\x9e\xf6\x46\x1d\x3d\x2c\xc9\x26\x62\x44\xd7\xe5\xb9\x6f\xbd\x47\xf8\xa1\x01\xf7\x4e\xa6\x64\x1b\x0c\xcb\x68\x52\x4e\xa0\xdc\x23\x24\x81\xf1\x7f\x7a\xa9\xac\x91\xfd\x84\xb4\x11\x66\xb8\x34\x67\x70\x2e\xda\xd2\x2b\x29\xa9\x84\xe6\x99\xf7\xbb\xe4\x45\x66\x04\x86\xce\x77\xad\x8d\x38\x5c\xd9\xac\x55\xe6\xe7\xbc\x5e\xe2\x41\xc3\xc6\x73\xf2\x9f\x95\xd2\x84\xfa\xe0\x9a\x00\xd0\x4e\xdf\x49\x9f\x69\x63\x11\xde\x95\xcc\x82\x2c\x6f\x2d\xcd\xe7\x1f\x79\xca\x48\xca\xd7\x6b\x86\x08\x02\xb2\xd3\x2d\x68\x49\x73\xa6\xc1\xe5\x6a\x0f\x66\xc5\x36\x5c\xd8\x6a\x95\x6b\x42\xcd\x22\xce\xce\x54\x93\xe9\x11\xba\xf2\x10\x7f\xc2\x35\xc9\xf9\x66\x6b\x6f\x34\xa1\x24\x93\x62\x43\xbc\x51\x3c\x93\x34\x25\x40\xf6\x64\x49\x9e\x68\x19\x12\xd4\x29\x49\x68\xb2\x05\x0b\x3d\x15\x24\xad\x4a\x28\x89\xa1\x19\x4d\x77\x0b\xa5\xa9\x36\x52\x3f\xb3\x91\x7d\xcd\xce\x84\xad\xec\xed\xc0\x64\x78\x8b\xdb\x7c\x1b\x43\x3d\xea\x4b\xea\xfc\x85\x4e\x54\x0b\x40\xec\xa0\x7c\xe7\x9a\xcf\x25\x9e\x82\x63\x2e\xf1\x44\xe6\x12\x4f\x73\x89\xa7\xb9\xc4\x53\xe8\xd9\xb9\xc4\xd3\x5c\xe2\x69\x78\xcc\x25\x9e\xe6\x12\x4f\x63\x63\x2e\xf1\xe4\xc6\x5c\xe2\x69\xc2\x94\xe7\x12\x4f\x88\x17\xe6\x12\x4f\x5f\x75\x7a\xfe\x5c\xe2\x69\x2e\xf1\x34\x34\xe6\x12\x4f\x30\xe6\x12\x4f\x73\x89\xa7\xb9\xc4\xd3\x5c\xe2\x69\xe8\xd9\xb9\xc4\xd3\xf0\x98\x4b\x3c\x0d\x8e\x5f\x8f\x0c\x39\x97\x78\x9a\x4b\x3c\xcd\x25\x9e\xbe\x74\x89\x27\xa5\x53\x1e\x28\x4c\x81\xc9\x31\x74\x45\x42\x9a\x18\xfa\x90\xe3\xb4\x5a\xaf\x59\x09\xfc\x1c\x66\x70\xe0\x43\xaa\x33\xfc\xbd\xe3\x3c\x7c\x9c\x86\x73\x29\xa6\xcf\x21\xd5\x51\xb9\x6e\x3b\xfd\xc0\x5d\xc0\xff\x13\xdd\x85\x80\x96\x4c\x41\xea\x9f\x20\x37\xef\xbf\x8b\x4d\x84\xc4\xe6\xf1\xc0\x2c\xdf\x8b\x24\x26\x38\xa2\x39\x88\xbe\x44\x5a\x77\x1e\x49\x26\x55\xe8\x66\x41\x7f\x4e\xd8\xa6\x64\x4b\x85\x60\x5e\x6a\xe3\x1a\x74\x98\x15\x63\x82\xc8\x82\x09\xeb\xc1\xf6\xcd\x13\x43\xfe\x76\xad\x69\xb2\x5d\x9a\x59\x0a\x7f\x08\xae\xd6\x46\xf3\x3d\xa5\x4b\x46\x73\x7b\x18\x25\xcb\x69\x30\x93\xc7\x4c\x83\xd0\xa4\x94\x4a\x91\xbc\xca\x34\x2f\x32\xe6\x3e\x45\x14\x83\x68\x4e\x1b\xd3\x5b\x6f\x68\x18\x6b\x14\xb3\x4e\x36\xc8\xdf\xab\x67\xea\x16\x2c\xdb\x79\xea\x20\x6b\x9e\x87\x21\xb2\xbc\xd0\xbb\x3a\x24\x84\x91\x35\x2f\x95\x26\x49\xc6\x99\xd0\x6e\xb6\x36\x3e\x1b\xbe\x76\x6e\xe4\xd8\xf0\x11\x09\xb7\x43\xca\x6d\x82\x48\x81\x47\x16\x5a\xd9\x30\x88\xe6\x73\xf6\x43\x01\x88\x29\x57\x4e\xce\x51\xe7\x84\x6a\x4f\x8c\x01\x75\xfc\x1e\x00\xf2\xa4\xf0\x29\xf7\xed\x00\x50\xf7\x42\x6b\x2a\xad\x32\x2a\x4d\xf4\x4a\x73\xa5\xd7\x19\x0d\x49\x0e\xfe\xa2\x9d\x77\x3a\x96\x16\xbe\x3c\x80\x8d\x05\xda\xbf\xf0\x01\x98\x80\x70\x82\x3d\x9a\xfb\xc2\x12\x66\xd4\x1f\x3a\x70\xbf\x8f\x72\xbd\x35\x2b\x73\x2e\x20\xb8\xe4\x2d\x53\x8a\x6e\xd8\x5d\xd0\x6c\x39\x24\xaa\x82\xe5\xb2\x39\x30\x40\xaf\x0c\xe4\x56\xf8\x05\x71\xd7\x1b\x37\xfd\x99\x6a\x4f\x8d\xe4\x76\x6e\x75\xb8\xd1\x53\xc9\xb5\x66\xa1\xcd\xe4\xca\xd6\x16\x00\x1f\xc2\x7e\xd2\x81\xf9\x44\xdb\xc9\xef\x96\x1f\x3a\x1f\xfb\x61\x03\xda\x70\x3a\x91\xba\x5e\x7e\x8c\xac\x4a\xce\xd6\x64\xcd\xc1\x7f\x0f\xfe\xed\x73\x9b\x6d\x1a\x0c\x02\x33\x2a\x92\x52\x46\xa9\x90\xc2\xbb\x61\xfd\x8a\x97\xe4\x27\xb7\x64\x5d\x56\x22\xa1\x1a\x1b\xac\x23\x64\xca\x08\x5f\x93\x0d\xf8\xd6\x4b\x1b\x5c\xf4\xe7\x6f\xfe\xeb\x5f\xc8\x6a\x67\x64\x07\x30\xfe\x6b\xa9\x69\x56\x6f\x6e\xc6\xc4\x26\x98\x00\xe0\x48\x5c\x37\x59\xa1\x3e\x17\xa8\x2c\x68\xb7\xe4\xdb\x3f\x3e\xac\xd0\x01\xa5\x5a\x92\x8b\x94\x3d\x5e\xb4\xce\x7c\x91\xc9\x4d\x5f\x3b\xb9\x71\xb1\x05\x29\xf8\xf7\xa0\x3d\x14\xfb\x8a\x40\x7c\x9f\xb4\x4d\xb6\xf2\xc9\xd6\xb4\xe8\xc1\x57\x54\x78\xd0\xca\xe8\x16\x45\x95\xd9\x58\xad\xef\xcc\x9d\x81\xfd\xac\x14\x3b\x0c\xcc\xef\xbd\xaf\xe1\xdd\xf5\x1f\xd8\x6f\x3f\x6e\x03\x31\xfc\x74\xa5\x8b\x8e\x75\x66\x92\x20\xde\xa6\x1e\x5d\x97\xe4\x3b\x9a\x65\x2b\x9a\x3c\x7c\x94\x6f\xe4\x46\xbd\x17\x37\x65\x29\xcb\xee\x3a\x32\xaa\x42\xb4\x3f\xd9\x56\xe2\xa1\xdb\xe4\x30\x93\x1b\x23\x57\x17\x95\xf6\xe5\xba\x7a\x36\x3a\x00\x16\xe8\x10\x57\x8e\xfd\x51\xd7\x55\xb7\xf9\x06\xfb\x04\x58\xfb\xc4\x0d\x01\x13\x84\x99\xb9\x87\x94\x27\x73\x7f\xda\x73\x53\x6d\xe4\xff\xe3\x37\x7f\xfe\xab\xbd\x68\x46\x8b\xfc\xeb\x37\x10\x2e\xa5\xc2\xb1\x85\x3c\xd9\x02\xed\xe7\x8a\xa8\x9c\x66\x99\x51\x18\xdb\xfa\x84\x41\x8e\xbe\x4b\x71\x94\x3b\xa1\x63\xd0\xff\x48\xc2\xf6\xc7\x8f\xff\x01\x92\x36\xd7\x8a\x65\xeb\x73\x1b\xef\x5d\x57\x45\x39\x03\x96\x79\xe6\x28\xac\x91\x83\xea\xed\x40\xf2\xe6\xe3\x08\xc1\x8f\x32\xab\x72\x76\xcd\xa0\x59\x6b\xc4\x26\x75\xde\xf3\x11\x74\x99\xeb\x6c\xbf\xca\x64\xf2\x40\x52\xfb\xc7\xf0\x0d\xf6\xde\xf0\xfd\x7a\x63\xad\xe8\x4e\xb2\x62\xba\x8e\xed\x3c\x76\x97\xf3\xf6\x5a\x3a\xfe\xfd\x9c\x16\x45\x1d\x4e\x5b\xd2\xa7\xa0\xa2\xd8\x5e\xb8\xef\xdc\x4b\x4f\xd3\xf1\xdc\x7e\x24\x2c\xd2\xf4\xac\xb7\x79\xd5\x1f\x5c\x01\xff\x6d\x23\xf7\xd0\x45\x08\xda\x65\x08\xea\xe0\xf0\x7a\xed\x96\x6b\x9a\x1d\x04\xba\x71\xf4\x3e\xc0\x93\xfa\x34\x8b\xda\xa6\x64\x3b\x58\xfb\xbc\x20\x7b\xc2\x05\x2b\x15\x34\xfc\xd7\x3f\x02\x46\x5c\x65\x94\x63\x72\x11\x09\x69\x1a\x34\x1f\x77\x99\xf8\x0e\xc0\xcd\x99\x06\x1f\x45\x44\x1d\x1c\xb9\x47\xb0\xbd\x60\x50\x00\x2a\x86\xc6\xdc\xc9\xd4\xbd\x0a\x1c\x02\x04\xde\x3e\x71\x37\x44\x62\xda\xb2\x70\x24\x83\x89\x27\x26\x3f\x36\x6b\xed\xd2\x12\xf3\x4b\x4d\x4c\xec\x53\x41\x64\x39\x2d\x09\x81\x29\x4d\xa2\x20\x40\x3b\x5a\x9d\xc9\x1b\x42\xe0\x95\x24\x9c\x15\x7e\xcb\xdc\x01\x7b\xee\x6a\x48\x86\xd5\x6b\x96\xc4\x7a\xa0\xcc\x69\x39\xf0\x28\x98\x67\xaf\xcf\x8e\x4e\x6b\xec\x46\x95\xb2\xa0\x1b\x64\x49\xd9\xbd\xfd\xda\x07\x40\x52\x66\x45\x3d\xa6\x40\xc8\x86\xbf\xe3\x0c\xef\x14\xca\xc7\x5a\x48\xbe\xbb\xb5\x2f\x95\xe7\x1c\x29\xfe\x28\x82\x16\x0e\xb7\x15\x5b\xe6\x52\x70\x9e\xe8\x8e\xd0\x52\x56\x22\x75\x36\xa4\xda\xb8\xf7\x76\x6f\x01\xef\xa4\xc0\xb1\x08\xae\x5c\x2e\x76\x37\xd3\x0b\xd8\x39\x17\xe4\xdb\xe5\xb7\xdf\x7c\x1d\xac\xe1\x63\xdd\xb4\xbf\x61\x0d\xef\x6a\xd6\x60\xef\xeb\xd1\x67\xea\x0b\xd0\x45\xcf\xf6\xad\x53\xfe\xeb\xfa\x72\xa0\x41\x80\x35\x0d\x7e\x32\xca\x3c\xee\x80\x9a\xf2\xde\x2f\x41\xac\x34\x52\x7d\x2b\xa3\xf1\x55\x47\x4a\x47\x41\x44\xd6\xaa\x8b\x2b\xb8\x44\x88\xaa\x56\x47\xa1\x55\x8e\xe0\xc0\xc5\xa9\xed\x39\x71\xe2\xce\x99\x1a\x21\x5b\x51\x89\xa6\x5a\x92\x17\x2f\xc8\x4b\x0b\xed\xcc\xe6\x77\xbc\x3a\x3a\x9a\xb9\xad\xbb\xf9\x54\xa0\x6a\x64\x74\xb6\xef\xe6\x53\x41\xc1\x16\x54\x0c\xef\x23\x6a\xa9\x8d\xed\x0c\xb5\x8f\x28\x98\x7f\x63\x5b\xfa\xc8\x20\x6f\x85\x67\xb4\xcc\x76\x66\x43\xef\xed\x6a\xc9\xaa\xd2\x84\x89\x47\x5e\x4a\x91\x33\xa1\xc9\x23\x2d\x39\x5d\x05\x8d\xe8\x76\x94\x0c\x52\xf1\x8c\x72\xf3\x87\x97\x3f\x5e\x7e\x00\xaf\xe3\x2b\x97\x7f\xe8\x76\xa4\x52\x10\x0f\x36\x01\x7b\x5a\xd3\xea\x6a\xc1\x6d\x64\xc0\xcd\x13\x10\xc6\xaf\xd9\x9c\x30\x18\x01\xfc\x1e\x98\xf9\xe6\x95\xae\x6c\x25\xd6\x4f\x49\x56\x29\xfe\x88\xba\x9c\xfb\x95\x09\x5a\x14\xfb\x5f\x8e\x8c\xa0\x78\x29\xb7\x96\x58\xbe\x42\x21\xd7\xa5\x79\x5d\xf3\xc0\x1d\xdb\x4b\x41\x6b\x90\xe2\x20\x4f\x0c\x4c\xf6\xc0\x82\xeb\x74\xd9\x18\x4b\xb3\x77\x4b\x9d\xa9\xba\x96\x66\xbb\x3c\xca\x39\x4a\x50\xb3\xc9\xa0\x36\xd4\xc8\xd6\xf3\x4f\x0f\x1d\x7b\x90\x13\xdf\x92\xad\x03\x30\x8f\x67\xda\x09\x63\x4e\x00\x13\x10\x38\x10\x3a\xfd\xda\x0d\x3d\x34\x89\x6e\xd5\xf2\xc4\xf7\x79\x70\x0a\xb3\xed\x68\x01\x04\xca\xea\x28\x9e\x16\x6a\xfa\x30\x3c\x6f\x2e\x48\xc9\x54\x21\x85\x62\x5d\xa1\xaf\x09\xfa\x61\x8f\x4c\x68\x15\xa1\xf1\x60\x54\x87\x42\x2a\x0d\xc9\xb2\x63\x38\xde\xf5\xa2\xdc\xf9\x57\xc0\xbb\x45\xb3\xcc\x60\x50\x9e\xb3\x94\x53\xcd\xb2\x9d\xf3\x7b\x52\x64\x98\xa7\x81\x61\x73\xea\x9c\x43\x8b\x91\x2d\x15\x69\xc6\xca\x76\xfe\x76\xc7\x05\xe6\x8d\xaa\x81\xf2\x29\xd6\xe3\xe6\x83\x47\x69\x92\xc8\x32\x75\xf1\xbe\x5c\xd7\x8e\x34\x62\x5b\x67\x2c\xc9\x7b\x90\x98\x9b\xd3\x1b\x85\x7d\x50\x96\x02\x0c\x45\xaa\xe5\xb4\x83\x5a\x38\x75\x16\xbb\x0d\x8f\x18\xdf\x88\x98\x0e\x2a\xce\x99\xd1\xfc\x67\x13\x3c\xb1\x80\x00\xb4\x8b\x56\x0c\x05\xfc\x30\xe6\x8b\xc0\xea\x98\x98\xb4\xe4\xd3\x24\x25\x1f\x39\x25\x39\x46\xa9\x8e\x48\x47\x3e\x55\x32\x72\x44\x2a\x32\x59\x4b\x5c\xe0\xd9\xf1\x13\x91\x63\xd2\x90\x71\x51\x45\x24\x2a\x09\xb9\x93\x5e\x8c\x82\x1e\x48\x41\xde\x4f\x2e\xc6\x2a\x00\x23\x09\xc8\x3d\xa9\xc5\x38\xa5\x6e\x3c\xfd\x78\x3f\xb1\x18\x05\x33\x2a\xf9\x38\x22\xd5\x6e\x4a\x51\x43\x54\xa6\x12\x5a\xbe\x43\xe6\xbd\xc6\x67\xbd\x62\x73\x5a\x63\xe8\x0b\x36\xee\x36\x2e\x9b\x15\xab\xdb\x47\xe4\xb2\xe2\x4a\x04\x93\xa9\x99\xac\x51\x68\x13\x99\xc5\x7a\xa2\x1c\xd6\xe7\x66\xb0\x46\x5c\xaa\x53\x65\xaf\x3e\x2f\x77\x35\x3e\x73\x35\x2e\x6f\xf5\x88\x59\xab\x13\xf2\x3f\x23\x33\x56\x8f\x99\xaf\x1a\x3d\xdb\xb8\x5c\xd5\x88\x4c\xd5\x98\x3c\xd5\xc8\x2c\xd5\x98\x1c\x55\x6c\x86\xea\xf1\xf3\x53\xa3\x8e\x02\x9b\x57\x80\xce\x2a\x88\xcf\x29\x88\xce\x28\x38\x4d\x4e\xea\xf1\xb3\x09\x8e\x9a\x4b\xf0\xec\x4c\x02\x7c\x2e\xea\x49\x32\x51\xa7\xe7\xa1\x9e\xc4\x8e\x87\xc8\x95\xc0\x5b\xe7\xb0\x39\x5d\xa7\xc9\xe8\x3a\x55\x3e\xd7\xf3\xb2\xb9\x4e\x2e\x51\x1e\x2b\x8f\xeb\x19\x59\x5c\xbf\x31\x4a\x7b\xac\xcc\xad\x5f\x37\xa5\xfd\x12\x34\x08\xf5\x58\x51\xb2\x7b\x3d\xde\x66\x71\xcf\x6e\x6a\x5f\x18\xb0\x9a\xba\xe4\xf6\x08\xb3\x69\x63\x06\x25\x69\xe5\x9b\x39\x5f\xde\xdd\xd6\xfa\xaa\x6c\x9b\x33\xad\xf9\x78\x14\xa6\x0b\x01\xaf\x53\x83\x2f\x5c\x5a\x70\xab\x9c\x66\x55\xb2\x73\xb3\x72\x96\xc3\xaa\xce\xeb\x1e\xd8\xa3\x80\x5d\x54\x30\xbc\xc0\x74\x62\xcd\x43\xde\xca\xeb\x4a\xcd\xf9\x2d\x59\x47\x94\x08\x48\x4a\xaa\xb6\x36\x6e\x95\x7d\xe2\xda\x45\x8a\x97\x8c\x2a\x29\x6c\x02\x76\x2b\xfc\x96\x2b\x52\x50\xa5\x02\x66\x1c\x47\xb5\xdc\xe4\x2c\x40\x57\x77\xb3\x0d\x6c\x53\xd2\x84\xb9\x84\x7b\x92\xc8\x4a\xe8\x54\x3e\x8d\xab\xc7\x50\xcc\x53\xf9\x73\xb6\x4d\xf4\x2c\x42\x18\xfa\xcf\xc0\x4e\xe6\x2b\xa1\x2e\xc9\x07\xb6\xa1\x65\x9a\x85\x68\x80\xa3\x1a\xb2\xd2\x89\x6c\x88\x88\x9b\xfd\xbe\xe9\x1c\x9c\x45\x80\x06\xe0\x3e\x1c\xdf\x07\x8f\x5c\x6d\x0f\x71\x60\x23\xc6\xa9\xc1\xbe\x7d\x1d\x69\x43\x0f\x20\x96\xaf\x12\x0b\x41\x0e\xfe\xbd\xc1\x93\x82\xfc\x19\x9a\x6c\x43\xbe\xaa\xf8\x96\xe6\xb3\x41\x7e\x36\xc8\xcf\x06\xf9\xd9\x20\x3f\x1b\xe4\xfb\xc6\x6c\x90\x9f\x0d\xf2\x9d\x31\x1b\xe4\x87\xc6\x6c\x90\x1f\x1e\xb3\x41\x7e\x36\xc8\xff\xe6\xcc\x44\xb3\x41\x7e\x36\xc8\xfb\x31\x1b\xe4\x67\x83\xfc\x6c\x90\x0f\xbe\x31\x1b\xe4\xc7\xc6\xaf\xd3\x20\x1f\x7c\xa4\xd3\xbe\x09\x15\xda\x7d\x76\x07\x56\x43\x9e\x38\x03\x78\xb7\xd6\x83\x03\xb7\x6c\x42\xfe\x07\x17\x70\xd0\x79\xca\x9b\xb9\x5b\x7d\xaa\x2c\x9c\x52\x66\x99\xd1\x81\x72\xba\x1b\xed\x14\xe7\xe3\xff\xdf\x74\x7a\x52\xf1\x35\x11\x72\xaf\x3e\x2e\xd8\xbd\x6d\x3f\xaa\x74\x49\x3e\x0e\x2b\xa1\x7c\x23\x64\xc9\x3c\x64\x2e\x36\xe7\xb6\xa8\x53\xdd\x2f\x4e\x4b\x57\x94\xa2\xfb\xd1\x17\xff\xe7\xff\xbe\x18\x46\xbb\xc3\x60\xf5\x2f\x52\x28\x0e\x43\xad\x43\xc6\xd4\x49\x86\xd4\x50\xf2\xc4\xb1\x8c\xa8\x58\x76\x84\x34\x9e\x9e\xc2\x70\x1a\x69\x34\x45\x49\x5e\x68\x83\x69\xdb\x18\x1a\x84\x8a\x30\x96\xee\x19\x42\x11\xc2\x06\xd6\x50\xda\x32\x82\x06\xa1\x62\x8c\xa4\x5d\x03\x68\x78\x47\xc3\x06\xd2\x7d\xe3\x67\x78\xf1\xe3\xc6\x51\xbc\xe1\x13\x69\x9f\x89\x90\x02\x70\x2a\x2f\x8a\x4d\xc5\x34\x3a\x8a\x6e\x71\x84\xa8\xee\x19\xd9\xdc\x08\x97\xd7\x3a\xa5\xad\x11\xb6\x16\x27\x4e\xbc\x43\xd8\x8e\x4f\x63\x37\xc6\x92\x54\x8c\x74\x1f\x6d\x2b\x46\x51\x3f\xbc\x9d\xb8\x6d\x9f\xc5\x10\x6a\x8c\x8d\x18\x7d\xcb\x22\x6c\xc3\xf1\x76\x61\x38\xef\x30\x05\x9a\x66\x13\x46\xd2\x9b\x53\xd8\x82\xa7\xdb\x81\xe3\x6c\xc0\x78\xfb\xef\x91\x6c\xbf\x91\x2a\x5a\x84\xcd\xf7\x58\xf6\xde\x93\xf5\xe9\x40\xed\x11\xd6\xbe\x1b\x53\x79\x1a\x69\xd7\xc5\xd8\x74\x8f\x6b\xcf\x45\x6f\x35\xc6\xba\x80\xb2\x2c\xc4\x59\x15\xa2\x2c\x0a\xd1\x76\x5b\x22\xc3\x0e\x3c\xbc\x25\xa1\x6d\x25\x08\x82\x7d\x96\x15\xe1\x59\x16\x04\x9c\x9d\x36\xd6\x46\x6b\xed\xaf\xc1\x65\xc7\xda\x67\x91\xa7\x8f\x21\x02\x41\x7b\x08\xea\x42\x47\xb6\xe6\x99\xd0\x94\x27\xd8\x0a\x3c\xaa\x1d\x4f\x4b\xdb\x0f\xca\x08\x9f\xad\x64\xfc\x71\x05\x54\x74\xdb\x9d\xf8\x86\x3b\xae\x9d\xce\xe8\xce\x1d\xa5\xd5\xce\x71\x77\x24\xa6\xb1\x4e\x7c\x4b\x9d\x29\xaa\x50\xa0\x99\x0e\x5a\x17\xc2\xb5\xd1\xe9\x6e\xfe\x28\xcc\xcf\x7b\x30\x28\x4f\xce\x24\x2f\x4e\xa0\x7a\xea\xf1\x3d\x38\xd3\xbd\x37\x27\xd3\xeb\x10\x1e\x1b\x7c\xb7\xd9\x38\x6f\xcd\xaf\x58\x8e\x42\x78\x65\x7e\x83\x72\xd4\xe7\x93\x38\xf0\x6d\x6b\x26\x35\xac\xb1\xed\x68\x46\x37\x2a\xa2\x55\x4d\xb7\x11\xcd\xaf\x53\xe2\x08\x9e\x9a\x90\x29\xbb\x67\x19\x98\xd2\x87\xf6\x80\xa6\xde\x04\x7d\x87\x20\x87\x88\xcb\xbb\x77\xf8\xad\x29\xd8\x7a\xcf\xca\xff\xcb\x9e\xbf\xbf\x32\xa3\x68\x5e\x33\x7c\x09\x56\xec\x35\xd7\x46\xc5\xa4\xb0\xc0\x25\xb9\xef\x81\x68\x4b\x3d\x0e\xf3\x22\xf3\xe6\xd9\x99\x22\x19\x5d\xb1\x4c\xed\x7f\x60\xc5\x40\x3b\x49\xab\xcc\x36\x2d\x01\xfb\xb7\xfd\xd8\x68\xf9\x9e\xa8\x4c\x01\x28\xba\x05\xb9\x09\x17\x54\x29\xbe\x11\x0b\x83\x56\xe6\x2b\x17\x43\x18\x14\x3c\xf1\xa2\xe4\xb2\xe4\xc3\x45\xd1\x0f\x2c\x23\xfe\x05\x7b\x71\x96\xe4\x47\x5a\x72\x59\x29\x5f\xb1\x2a\x91\x79\x21\x05\x14\xf2\xaf\x46\xba\x77\xe8\xa6\xa0\x1c\x1c\x8f\x2b\x56\x5f\x03\xaf\x89\xb5\x2f\x3f\x7a\xe7\xfe\x32\x08\xf1\x32\xcd\x39\x34\xa0\x69\x79\x43\x21\x31\x46\xd0\x55\xc6\xac\xf3\xa5\x28\x6d\x25\x2c\x33\xb5\xd2\xf7\x2b\x61\x5a\x8f\x31\x96\x66\xa6\x36\x14\x9e\xd6\xdf\x49\x9a\xef\xf8\xc6\x03\xaa\xf5\xf8\x30\x6e\x9a\xcf\xfa\xf5\x5c\x65\x54\x29\xc3\x0a\x5c\x6a\x13\xdf\xf8\x9e\x42\xb0\xbf\xd6\xcb\xd5\xfc\x3a\xac\x4a\x38\x78\x43\x8c\x03\x43\x46\xc2\x24\xa4\xd8\x9f\x35\x0a\x6d\x6e\xd7\xff\x1f\x7b\x57\xdb\xdb\xc8\x8d\xa4\xbf\xdf\xaf\x20\xb4\xc8\xda\x06\x2c\x8d\xb3\xd9\xdd\x0b\xb2\x49\x00\x27\xf1\xe5\x8c\x4c\x26\x86\x3d\x93\x05\x0e\x07\x1c\xa8\x6e\x4a\xe2\xb9\xd5\xec\x90\x6c\xc9\xfa\xf7\x0b\x56\x91\xec\x6e\xa9\xf9\x22\x8f\x9d\x9d\x00\xd2\xa7\x19\xab\x9b\x2a\x92\xf5\x5e\x0f\x8b\xbd\xb6\x75\x84\xdb\x2b\x25\x94\xdb\xe1\x33\xd5\x51\x4f\x26\xc8\x47\xc0\xd5\xd3\x42\x72\xcd\x0b\x5a\x85\x2f\xc3\x37\xbe\xb3\x7b\xa5\xa8\x5a\xa5\x99\xec\xde\x82\x80\x52\x6f\x05\xfe\x3a\xad\xc8\x23\xdb\x6d\x85\x2c\x55\xa2\xdd\x9d\xa3\xb0\x5b\x7b\xa5\x1d\x89\xc6\x89\x85\x1b\x14\xb0\x64\x2b\xd7\x4c\x92\x39\x4b\x35\x7f\xdc\x1b\x64\x37\x23\xd7\xf5\xce\x76\xda\xad\xfb\x7e\x40\xc9\x16\xdc\x5e\xf4\x04\xbd\xcd\x62\x9c\x49\x87\x4c\x64\xa5\xdc\x51\x47\xd1\x8b\x1c\x69\x1c\x18\xe7\x23\x51\x76\x52\xe8\xd0\x07\x0e\x33\x20\x24\xc1\xc2\x1b\x48\xa7\x64\x58\xcd\x74\x5f\x87\x58\x2f\x69\x02\x24\xa3\x25\x7f\x41\x80\x85\x62\x12\x3a\xcf\xfb\x71\x23\x20\x83\xe1\x11\x37\x40\x5a\xac\xc5\xc6\x75\x53\x76\x23\xb1\xba\x6c\x04\x37\x9a\xa3\x0f\xbf\x88\xd6\xf3\x46\xdb\xed\x8d\x21\x35\xfc\xea\xde\x0f\x96\x21\xcc\x9d\x00\xd5\x30\x73\xdb\x85\xb1\x1a\x01\x4c\x46\x44\xcb\x1d\x60\x35\xee\xdd\x2f\xf4\xc0\x1a\x27\x04\x46\xff\x73\x42\x60\x9c\x10\x18\x27\x04\xc6\x09\x81\x71\x42\x60\x84\x9e\x3a\x21\x30\xc2\x14\x9e\x10\x18\x27\x04\xc6\xc1\xe7\x84\xc0\x38\x21\x30\xc6\x1e\x3d\x21\x30\xc8\x09\x81\xe1\x3e\x27\x04\xc6\x09\x81\x71\x42\x60\x9c\x10\x18\xaf\xb2\x22\x27\x04\xc6\x09\x81\x31\xfc\x9c\x10\x18\x27\x04\xc6\x09\x81\xb1\xff\x39\x21\x30\x4e\x08\x8c\xbd\xc5\x7e\x09\x04\x86\xeb\x8a\x19\xdc\xac\xfd\xec\x7e\xd3\x6a\x46\xee\xdd\x5b\x9e\xb7\xdc\x0d\xda\xc6\x88\x16\x54\xa6\x6f\x8d\xcd\xd1\xac\x70\xf7\x7b\x94\x8d\x8e\x03\x87\x90\x7c\xed\x37\xe4\xcf\xb7\x40\x48\x2f\x47\x83\xd7\x67\x3d\x01\x3f\x51\xbc\x1d\x18\x4a\x82\xb0\x3c\xd1\xdf\xf7\x0b\x8e\x79\xa6\x67\x1c\x33\x1e\x22\x33\xb0\x4d\xe5\xd4\xfe\xf4\xd4\x0f\x3f\xf5\x3b\x10\x04\x6b\x90\x5c\xb1\xb6\xf9\xb3\x4f\x61\x27\xee\x2d\x29\xfb\x7b\x61\x65\xfb\xb9\x7b\xe1\xd8\x18\xca\xd7\xfe\x37\xb8\x22\x62\xcd\x35\x5c\x76\x2b\x06\x17\x85\xc5\x1b\x5a\x70\x3d\x48\xcf\x5a\xee\x81\x52\x2e\xd5\xd8\x3d\xd5\xb7\xf9\xcb\xbc\x60\xaf\xbb\x2b\x15\xbb\xe7\x7a\xc7\x07\xb8\x60\xea\xea\xf8\x16\x24\xf3\x82\x6a\xed\xf7\xe6\xb6\xe4\x23\x0e\xf7\x24\x9f\x89\x07\x71\x9e\x92\x07\x1b\x70\xd5\x50\x6d\x06\x35\x3a\xcc\x3f\x18\x0e\x58\xdc\xef\x07\xa0\x0e\xe1\xc1\x83\x43\xba\x8a\x7c\x37\x74\x74\x71\x22\x22\x63\x22\x21\x40\x68\x88\x5a\xb3\xa7\xa0\xf7\x36\x94\xa9\x87\xe1\x4b\xc4\x84\x61\x8a\x80\x01\x63\x1b\x56\xf9\x41\x09\xd5\x5a\xf2\x79\xab\x23\x36\xd8\x84\x36\x85\x58\xaf\x2d\x5e\xc9\x01\x24\x00\xf3\xa4\x66\xa4\xf3\x7a\xfb\x36\x1a\x00\x00\x33\x42\x1e\x58\xfc\xba\xc4\x3e\xdd\x20\x91\x6e\xe1\x80\xed\xa1\xd6\xc8\x68\xb1\xb2\xf0\xa9\x8f\xa9\xef\x2f\xd4\x8f\x52\xb4\xf9\x2d\xb3\x27\xd7\x1e\xf4\x63\x42\x14\x2b\x9a\x15\x59\x9a\x51\x50\xec\x69\xd3\x54\x3c\xe1\xbd\x18\xd9\xae\xaa\x6e\xe5\x14\x81\x2b\xd8\x01\x96\xf6\x20\xd6\xfe\xe6\x5b\xb3\x18\xd6\x80\x24\x8b\x3f\x3f\xb5\x73\x56\x31\xbc\xa0\x7b\x05\x3e\x2b\xf4\x61\xde\x9a\xe1\x57\xbc\x41\x2f\x99\x6a\x3f\x34\x84\xc3\xe6\xeb\x78\xad\xd6\xda\xfb\x46\x94\x5f\x91\xff\xad\x8d\x2f\xf5\x1e\x87\x35\x01\xde\x8f\xb7\x3f\x78\x11\x30\x4f\xfd\xd7\x03\x2c\x27\xf9\x4b\xdc\xcb\x35\x23\x28\xa6\x97\xbc\x24\x73\xac\x9c\x2b\xa6\xc9\x79\xcd\xb6\x58\x92\x77\xf7\x2f\x92\xc1\x3d\xc0\xd1\x21\x1d\x15\x30\x21\x43\xb4\x25\xe5\x82\x7c\x81\x14\x37\x4c\x3a\x80\xdd\xdc\x68\x69\x2a\x19\xf9\xe5\xfe\x2c\x3e\x79\xc0\x3c\xc9\xed\x54\x6e\xa7\xd3\xe9\xd4\xcc\xff\x76\x41\xda\x1a\xee\x2b\x37\x84\xb9\x35\x87\x5f\x37\x2a\x62\x2d\x4a\xbe\x48\xf4\xb1\x1e\xec\x8a\x91\xa3\x8e\x34\x60\x6d\x5a\xef\xec\x8c\x67\x61\x80\xda\xc0\x7d\xfc\xfb\x5f\x3f\x3a\x0b\x20\xdb\xfa\xfa\x48\x59\x30\xab\x6a\x18\x40\x0b\x00\x3d\x98\x79\xb1\x5a\xcb\x1d\x20\x9a\x0e\x7a\x69\xc7\x23\x50\x29\x0a\xe8\x5c\xf3\x41\x19\x23\x8d\x97\xca\x7a\xa9\xe7\x76\xcd\x67\xe4\x67\xba\x23\xb4\x52\x88\x8b\x8d\xc0\x8e\x08\xde\x5f\xba\xa7\xf0\x66\x04\x4c\x04\xd6\x0b\xe7\x42\xaf\xf6\x1f\x48\xde\x67\x7f\x07\x39\xbd\xfe\x2b\x97\x3d\x88\x93\xb7\x0f\x23\xbf\x1d\x67\x09\xfa\xc8\x14\x69\x24\x2b\x58\xc9\xea\x82\xd9\xac\x16\xd5\x69\xf7\x9a\xbc\x0e\x27\xbc\x13\xf5\xbd\x10\xf9\x29\xa1\xdb\x1e\xf8\xd2\xde\x3a\xdb\x99\x05\x08\x85\x0d\x8b\x50\x95\x48\x09\xd5\xa2\x9e\x02\x64\xa7\x55\xd6\xee\xe2\x85\xf3\x07\xb2\xb6\xa1\x15\x2f\x2d\x94\x32\xce\x05\x6b\xba\x64\x84\x6a\xcf\x54\xc6\x0c\xd5\xaa\x85\x86\xf7\xc6\x49\xd3\xa4\x14\xac\x83\xee\x50\x45\x3e\xdc\xfe\x10\x1d\xf2\x8a\x9c\xc3\x95\xd8\x20\xbb\x0b\xca\x2b\xa8\x42\xc3\xcd\xad\x7b\x17\xc3\x2e\xdc\xf0\x66\x2a\xd1\x31\x81\xbf\x89\x90\x78\xb3\xfd\x25\xa9\x05\xde\x7d\x60\xe7\x69\xb4\x96\xd3\x70\x36\x15\x9c\x6c\x18\x3f\x14\x95\xe7\x88\x43\x3c\xd7\x56\x97\xbf\x97\x38\xc4\x26\x9a\x77\xc1\x3f\xf0\xf4\x07\xc5\xa2\xf7\x66\x1f\x28\xb7\x0f\x2f\xac\xdc\xfa\xae\x90\x61\xf0\xe1\x0a\x21\xa7\xae\x99\xa6\x25\xd5\x71\x31\x41\x85\xd8\xa1\x04\x33\xf7\x3a\x5e\xc1\x89\xab\xc5\xd0\x5e\x47\xc7\x4c\xf3\xc1\xa8\xea\x4b\x98\xcf\x7f\x8f\x5a\x54\xec\x2d\xaf\xdb\x27\x74\x6c\xf3\x53\x5e\x86\x8f\x1e\x6e\xe0\x55\xbc\x74\xe4\x49\x5b\xd7\x0b\xfd\xc4\xf2\xd0\x17\x8c\xcb\xf5\xed\x60\xef\xf7\x2f\xd4\x70\x5a\x0e\x94\x85\xf1\x1b\x01\x6f\x1e\xe7\x26\x49\xeb\x52\xac\x0f\xa8\x34\x36\x08\xbc\xec\x5e\x86\xb4\xcf\x69\x39\xdc\xf4\x47\xd5\x38\x47\x1a\xe0\xdc\xea\x01\x84\x59\x47\x95\x0f\xde\x42\x60\xc6\x95\xdf\x1d\x8c\xd4\xe0\xb0\x50\x7e\xb8\x41\xba\xda\x41\xd6\x7c\xc8\x31\xd5\x03\x29\xc2\xf7\xd2\x8f\xce\xe9\x5e\x54\x0c\x4f\x60\xb9\x49\x99\x21\x3e\xa9\x39\xc1\x83\xc7\xcc\xe9\xbd\x89\x5a\x07\x73\x82\x38\xf6\x53\x9a\x53\x9b\x30\x7f\x07\x73\x32\xf6\x72\x38\x27\x30\x5a\x9f\xce\x9c\xb2\x72\x9a\xfd\x30\x1d\xe2\x9b\x7c\xdd\x7d\x4d\x2a\xae\xc0\xd8\x43\x78\xaf\xfa\x2a\x1b\x70\xfd\x5c\xc2\xd9\x1b\x91\xec\xc3\x8a\xa0\xf0\x3d\x75\x7a\x09\x41\xbf\x4d\xa7\x1e\xac\x51\xe2\x46\x95\x46\xf2\x35\x95\x3b\x13\x80\xcd\x0e\x8d\x42\x2d\x1c\xc9\xce\x6b\xa4\x65\x99\xbe\x67\xca\x44\x9e\x59\x9b\x94\x81\x81\xcc\xb5\xbe\xb9\xf6\x37\x0f\xb1\xa6\x76\xaa\xd0\x55\xfe\x16\x3f\xe0\xf3\x90\x0a\x23\xd4\xef\x77\x4d\xd7\x4c\x35\xb4\x60\xa5\x1b\x11\x50\x97\xa9\x09\x77\x67\x0b\xef\x44\x69\xcf\x73\xb5\x75\x57\xcb\x76\x63\x9d\xdb\xa4\x4a\x9e\xff\x68\x6d\xfa\x05\x59\xf3\xe5\x4a\xfb\x88\xa3\xa2\x6d\x5d\xac\x3e\x72\x97\x46\x16\xc3\x9e\x15\x33\x72\xff\xc8\x64\xcd\x2a\xd2\x50\x49\xd7\x0c\x40\x41\x59\x91\x77\x3e\xd8\x34\x0f\x68\x3a\x82\xa1\x5b\x10\xea\x7e\x66\x67\x41\xc0\x69\x2d\x94\x5f\x6d\xce\x04\x98\x0e\x08\xfb\x15\x5c\x90\xd7\xa5\x2c\x0f\x58\x9a\x01\x2a\xcd\x01\x94\x1e\xd5\x09\x39\x2e\x96\x5b\x5e\x97\x62\xab\x9e\xe3\x3c\xff\x13\x5f\x75\xbe\x5d\xe1\x93\xcc\x7b\x0e\x74\x74\x2a\x3d\xe7\x7a\xd4\x81\x16\x48\x98\xbb\x59\x8e\x66\xab\xe1\xfd\x70\xc6\xa9\x5b\xa3\x2d\x66\x7f\x10\x67\xf7\x25\x3c\xdb\xe5\x5a\xd1\xef\xa5\x19\x4f\x73\x5a\x3d\x34\x47\x5e\x02\xf7\xe3\xcf\x0f\xd7\xc3\xd7\x8d\xe3\xb1\x85\xb3\xa0\x66\xc6\xe6\xfb\xee\x84\x74\x52\x9e\xb6\x6c\xbe\x12\xe2\x91\x9c\xbb\xc2\xd7\x92\xeb\x55\x3b\x9f\x15\x62\xdd\xab\x81\x4d\x15\x5f\xaa\x37\x96\x35\xa7\x66\x06\xe9\xc3\x55\xbc\xae\x40\x37\x3a\xed\x0d\xa7\xbe\x6d\x36\x00\x88\x2c\xfc\x2c\x60\x83\x40\x12\x33\xee\xae\xdb\xf9\x11\x86\xcb\x00\xda\xce\x9f\x12\xf7\x67\xdb\x33\xae\xef\xa2\x55\xb3\xa2\xb6\xb0\x63\xcf\xac\xc1\xb9\xc4\x95\xa8\x85\xad\xe3\x23\x1c\xdb\xa6\xec\xf0\x3c\x7b\x5a\x55\x75\x22\x09\xf3\x5d\x30\xaa\x5b\xc9\xc8\xa2\xa2\xcb\x17\x73\x55\x0f\xb9\x29\x56\x03\x74\x9f\x04\x47\xc1\x52\xda\xe3\x8a\x3d\xd8\x50\x72\xc6\xa3\xdb\x8a\x19\x9c\xbd\x3d\xe9\xaf\x79\x7a\x7f\xb2\xf7\x64\x7f\xcd\x93\x43\xbf\xca\x9e\xf8\x14\xda\xd1\x5b\x01\xa9\x34\xfb\xa2\xd1\x55\x4e\xa3\x8f\xa6\xd6\x92\x93\x3b\xb8\xa3\x73\x34\xbd\x66\x1e\x19\xa6\xd8\x32\x44\x7b\x2f\x05\x97\x4a\xb3\xe5\x8c\x78\xa8\xc2\x3f\xca\x2a\x90\xd7\xb5\x0c\x64\xcc\x3a\x84\x79\x1c\x79\x38\x63\x1d\x8e\x66\xf3\xfb\x3e\xb3\xfd\x3b\xf8\xfd\x45\x00\x0c\x78\xc8\xff\xba\x80\xdb\x78\xb3\x51\x0c\x67\x0f\x07\xef\x8d\xa8\x2d\x32\x7c\x2a\x5c\x4e\xc7\xf3\x11\x5e\xd6\xb8\xc2\x00\x25\x0f\x8b\xa4\xa9\x7a\xec\xa0\x21\x0c\xfa\xc2\x74\x08\x90\xee\xef\x76\xaa\x53\x8a\xd4\x24\xda\xc6\x44\x56\x5f\x8b\x8a\x21\x04\x25\x0f\xa8\x36\x0a\xf9\x38\x53\xfd\x71\x42\x1c\x91\x88\x8e\x0e\x1b\xd4\x88\x12\xd7\xef\xbd\x1f\x1b\xe4\x41\x6b\xb8\xbe\x17\xb4\x0e\x7e\x13\xcd\x88\x98\x18\xdb\xac\x9f\x46\xde\x87\xf6\x40\xd6\xa1\xd0\x92\x37\x15\x23\x5f\x3f\xb2\xdd\x25\x76\x69\x61\x8b\x05\x2b\xf4\xb7\xa4\x55\x09\x76\x05\x98\x9a\x2e\x56\xbc\x5e\x12\xe3\xb1\x51\x2d\x24\xf9\xda\xfd\xeb\xdb\xb0\x54\xe4\x39\x78\x48\xc7\x11\xa1\xe4\x0d\xbc\xb0\xd7\x93\x05\xa7\x8d\x63\x99\xe5\x02\x8a\x53\x02\x7b\x03\x4d\x23\xd6\x8c\xd6\xca\xf5\x52\xaa\xaa\xc1\x50\xca\xb6\xf2\xc9\x44\x58\x11\x07\xc8\x73\x68\x12\x2a\x19\x79\x27\x1e\x2c\x26\xe7\x92\xdc\x49\xb6\x60\xb2\xfb\x4b\xb2\x2a\x4c\xc8\x3b\x71\x83\x0d\x0f\xe2\xb3\xc9\x54\x3e\x8f\x2c\xd8\x36\x09\x3f\x83\xa5\xfe\x89\xed\x9c\x7e\xc0\x55\x79\x64\xbb\xae\x0a\xdb\x09\x42\x6a\x51\x30\x97\x47\xb4\x98\x45\xd7\xfc\x91\xed\x30\x88\x4a\xfb\x4e\x8f\x48\x19\xa0\x7e\x2e\x3b\xb6\x74\xc8\xe8\x9b\x27\xae\xb4\xfa\x07\x0a\x55\x21\xd6\x73\x7b\x41\x76\x62\x54\x24\xcb\xb1\x0f\x50\xe6\x36\xb2\x2e\xe1\xbf\x40\xe2\x4b\x6c\x84\x23\xf9\x88\xdd\xf8\xc5\xcd\x52\xb2\x46\x32\x05\xf1\x01\x35\x14\x9d\x29\x22\x59\x85\x2a\x69\xc5\x9b\x94\x99\x12\x9d\x3d\x9f\x91\x5f\x69\xc5\x4b\x4f\x0d\x72\x2c\xae\x1e\xcc\xf9\xe6\xb7\x96\x56\x29\x39\xea\x7b\x47\xf8\x82\x1b\xc2\x6c\xd1\x6f\x2d\xdf\xd0\x8a\xe1\x29\xf1\x2d\xaf\xca\x82\xca\x14\xd3\x2f\x84\x74\xcd\xa4\x94\xed\x0b\x01\x10\x26\x52\xd0\xda\xab\xc2\x8e\x73\x4c\x9c\x94\xe2\x41\xd2\x50\xa9\x79\xd1\x56\x54\x12\xa3\x37\x96\x42\x26\xfa\x3f\xe4\xda\x73\x2f\x06\x19\x98\xf5\x7d\xe5\xbf\xff\x6e\x7f\x6f\xf5\xca\x5f\xe5\x9e\x9c\x1e\xe2\x0f\x06\x42\x49\xce\x87\xcd\xe7\xc4\xc2\xe9\x47\xaf\x52\x52\xda\xac\x87\x18\x1d\x38\x6a\xd8\xa9\xa7\xbc\xe8\xac\x52\xa7\x23\x52\xcc\xf2\xdd\xce\x81\x6f\xfa\xad\x4d\x00\xf6\x64\xe9\xb5\x42\x68\x37\x39\xad\x0b\x50\x79\x2c\x84\x64\x1b\x26\xc9\x79\x29\x60\x44\xb6\xe1\x85\xbe\x98\x91\xff\x61\x52\x60\x07\x10\xb6\xa4\x70\xc2\x0b\x45\x3a\x31\xa8\x87\x9e\x75\x57\x5e\x5f\x91\x73\x18\x94\xf0\xf5\x9a\x95\x9c\x6a\x56\xed\x2e\x3c\x68\x3d\xa3\xd7\xcb\xcb\xe7\xad\x33\x92\x89\x23\x89\xc4\x81\x4a\xb7\x2d\x94\x86\xac\x63\x5d\x87\xa4\x26\x71\xda\xba\xd3\xc0\x5c\x59\xd9\x1f\x44\x0d\xae\x37\x91\x55\xd8\xd9\x6c\xf7\xff\x86\x77\x29\x91\x6c\x09\x72\x8b\xb2\xf8\x02\x52\x9b\xed\x83\x87\x72\x8f\x91\x01\x82\x5f\x49\xd6\x54\xbc\xa0\x07\xfa\x61\xf4\xfc\xd1\x02\xda\x62\xd0\xba\x00\xbb\x49\x4a\xd6\x54\x62\x67\x21\xe4\x3f\xb3\x75\x81\x8e\xa1\x89\x25\xe7\x54\x1d\xf8\x06\xb1\xf3\x1f\x61\xde\xb2\xae\xf6\x7b\xb6\x6e\x2a\xaa\x0f\xf8\x6a\x98\xd0\x1f\x3e\x0b\xee\x6a\x6d\x93\x9d\x14\x20\x07\x1d\xe4\x1b\xc8\xb6\x83\x1f\xac\x25\xb4\x9c\xc0\x9e\x41\x42\x31\x3f\xa3\xbd\xe7\x62\xbe\xa4\x0b\xaa\xc7\xe4\x60\x2f\xfc\xd1\xb4\x2e\xa9\x2c\xed\xee\x9c\x9d\x29\xff\xf2\x68\xd8\xb2\xe4\x7a\xf6\xf8\x25\xc4\x2c\x85\x58\xaf\xdb\x9a\xeb\xdd\x1b\xe8\xa1\xc8\xe7\xad\x31\x97\x6f\x4a\x13\xac\xbe\xa1\x0d\x37\xb1\xcb\x86\xd5\x18\x16\xac\xcb\x3f\xb9\x71\xc7\xc2\x95\x94\x63\x0c\x3d\xd8\xe2\x91\xca\x2b\x77\x34\xbd\xee\x28\xb0\x3b\xdb\xda\x96\x51\xad\x89\xb2\x8d\xf7\x85\x92\xbd\xa6\x0d\x51\xda\x18\x83\x48\x82\x5e\xaf\x40\x86\x11\xe7\xef\x62\x93\x9d\x43\x14\xcd\x77\x84\x3d\x69\x26\x0d\xdb\x68\x21\x2a\xec\xbc\xa2\x63\x2d\x48\x8d\x3a\x97\x4c\x4b\xce\x36\x8c\x50\x39\xe7\x5a\x52\xb9\xeb\xed\xe5\xfb\x15\xdb\x81\x2b\x63\x2c\xc1\x6f\x2d\x93\x3b\x48\x03\xc4\xbc\xed\x4e\x47\x81\x01\x96\x1b\x56\x92\xad\xf1\xfd\x11\x77\x0b\xd1\x0f\x70\x8d\x3a\x60\x95\xf1\x00\xb7\x55\x4c\x4e\x97\x2d\x2f\xd9\x9b\xde\x86\x3e\xb3\xeb\x69\xf4\x6b\x15\xc8\x89\xef\x31\xbf\xad\x72\xa0\x48\xda\x50\xbf\x64\x0a\x8f\x5e\xb1\x15\xdd\x70\xe1\x1b\x47\x58\x69\x1d\x57\xb5\x2f\x2b\x29\x86\xfa\x29\xad\xcb\x29\x76\xfb\x7a\x8e\xc0\xd8\x36\x9a\xb7\x77\x79\x59\x10\xff\xb8\xb3\x84\xb7\x77\x46\xa0\x24\x1c\xed\x1c\xcc\x3f\xca\x31\x5c\x91\x56\xb5\xb4\xaa\x76\x04\x7b\xdb\xb2\xd2\x02\x9e\xaa\x9d\x73\x0b\xd6\xd4\xfc\x12\x98\x49\x5a\xbb\x1f\x89\x8d\xd8\x25\xd8\xd6\xb4\xb6\x83\x63\x3a\xd7\xb0\x32\xaf\x21\xe5\x32\xb7\x8d\x38\x15\xb8\x50\xc6\x55\x09\x0e\x39\x67\x1e\xab\xe5\xc1\x05\x76\x72\xff\xe8\x0c\xed\xa5\x6d\xdd\xd9\x31\x46\x48\x5d\xbb\x0f\xf8\x47\x0b\xca\xab\x41\x12\xcf\xb8\xe7\xb6\x7f\x24\x1e\x14\x28\x89\x5e\x49\xd1\x2e\x57\xb6\x9f\x64\x24\x78\xc2\x48\xa4\x17\x38\x4f\xde\x89\x9a\x4d\x2e\x6d\x6f\x47\xd4\x5e\xe4\x7c\x32\xb9\xb8\x24\x60\x06\x01\xc0\x4a\x6e\xc3\xdd\x98\xec\x72\xcf\xec\x48\x40\xdd\xbc\x9f\xc3\x34\x76\x69\xc5\x68\x59\x99\x9d\xb7\x33\x86\xda\x50\x38\x50\x6c\xa4\x78\x02\x65\xe0\x7a\xf2\xf9\x53\x5f\xbf\xd4\x66\xaf\x7c\xa8\x6b\x0f\x58\x7c\xef\x78\x2d\xec\xf4\xbc\x13\x25\xbb\x13\x52\x5f\xc2\x4e\xbf\x15\xb4\xfc\x8e\x56\xc6\xf2\x1b\xbe\x41\x4f\x1b\x0e\x7e\x59\x1c\xd0\x8d\x55\x96\xd0\x81\x37\x38\xe8\x91\x07\x02\xdd\xe4\xa7\x35\xd3\xb6\x3d\xa2\xfb\xdb\x9b\x3f\x6d\xb8\xd4\x2d\xad\xa6\xbc\x51\x28\xa8\x36\x25\x67\xd6\x82\x87\x0f\xa2\x26\xad\x8e\x53\xfb\xb7\x77\x79\x19\xb9\xde\xf3\x08\x1e\x72\x98\x8a\x4e\x7e\x6d\xdb\x86\x78\xb3\xdc\x5a\x94\x4c\xf9\xa6\x8d\xb8\x41\x0e\xd6\xa8\xf0\x90\x77\xa3\x89\x96\x74\xb1\xe0\x85\x05\x5f\x70\xcf\x20\x33\x38\x64\x12\x69\x14\x6d\xc8\x73\xb6\x07\x0f\xbb\x41\x5e\xfa\xa7\x6e\xf9\xf1\x98\x4a\x6b\x41\x50\x92\xa9\x46\xd4\x8a\xc7\x6a\x64\x80\x98\xac\x55\x2b\xb1\x6d\x2f\xed\xc8\xa3\x52\xf2\x8d\x91\x18\x6d\x7b\x85\xbb\x6e\xba\x5c\x41\xb3\x36\x12\x2e\xea\xd8\x43\x56\xec\x89\xae\x1b\xc4\xcd\x79\x43\x5c\x09\x5a\x4e\xe7\x96\x0d\x6d\x2e\xdd\xcd\xc9\x04\xd2\xc1\x31\xad\xfa\xe8\x26\x9b\x88\x8c\x12\xa9\xd2\x0c\xcf\x25\x05\x12\x70\x73\x7a\x8f\x0b\x76\x27\x2a\x5e\xe4\xf5\x0e\x1f\x7d\x93\x94\xac\x16\x66\x5e\x70\x16\x93\x2b\xe7\x09\x5b\x53\x1a\x56\xee\x5a\x10\x29\x5a\xcd\x7a\xde\x8e\xdd\x42\x2d\x60\xe3\xa6\x46\x4d\x57\x46\xb7\xb9\xb6\xd0\x5b\x5e\xf6\x1a\xf9\x86\x85\x7d\xf2\x56\x40\xf3\x68\xe7\xb9\xd8\x22\x72\xc5\x59\xad\x89\x75\xbb\x8c\x8c\xd4\x25\xa1\x1b\xc1\x4b\x6c\x51\x5f\x88\x88\x71\x5b\x89\x06\x98\xae\xaf\x8e\x60\x00\xa3\xad\xb0\x1d\x82\xd1\x47\x4e\x6f\x5c\x92\x79\xab\x89\xe4\xea\x31\xbc\x00\x8d\xd0\x58\xe7\xac\x76\x84\xaf\x2d\x73\x95\x7e\x15\x54\x83\xcd\x8f\x97\x33\x32\xb1\x5a\x73\x42\xc4\x5c\x15\x6d\x74\x55\x43\x13\x35\x1e\x66\x41\x6d\x8b\x52\x98\x2b\xcc\x09\xa0\x68\x60\xf7\xa2\xea\x01\xe7\x63\x7d\xc2\x15\xdd\x30\xb2\x14\xa2\x24\x62\xc3\x24\xad\xac\x78\x74\x04\x3f\x57\x01\x62\x1b\xd2\xef\x57\xac\x78\x74\x46\x20\x8b\x31\x47\xde\xdb\xef\x3f\x09\x4f\x14\xe6\x09\x98\xcf\x5d\xac\x33\x83\x83\x97\x79\x05\x77\x78\x28\xf5\xbf\x47\x7e\x31\x82\x14\x70\x87\xec\x5c\x72\xc4\x79\x53\x0d\x27\x73\x5a\x3c\xb2\xba\xec\x3a\x92\x77\xee\x89\x23\x34\xcc\xe8\xff\x34\x4a\xda\xec\x29\x38\xd7\x9d\x21\x77\x6f\xba\xc6\x0c\xbd\xd2\x8d\xa5\x21\x4c\x2a\x30\x8f\x35\xdf\x36\xeb\x8f\x8e\xbf\x03\xde\x2a\x3c\xf9\xb8\x2f\x09\xc1\x11\x6f\x46\xd5\x46\x7f\xa0\x22\x9c\x53\x7d\x99\xa6\xf7\x55\x8f\xd6\x5c\xaf\x78\xdf\x7f\x71\x7a\xed\x3d\xfc\xda\x60\xf6\xfd\xff\xc4\x3d\xc4\x25\xd3\x9e\x19\xfc\x8e\xdf\xde\x0d\xeb\xc8\xc3\xfb\x0a\x22\x6c\xe5\xaa\xb1\x25\x6b\x58\x5d\x42\x03\xc0\xed\x8a\x69\x77\xfd\x40\x5b\x97\x4c\x56\xe0\x9d\x15\x95\x68\xcb\xa9\x6d\x2f\x2e\x5d\xcf\x9f\xf0\xc8\x48\xcf\xce\x36\xc5\xdf\x5b\x3f\x64\x07\x0a\x7f\x25\xce\x28\x9a\x0d\xb5\x33\x0b\xf3\x6b\xcf\x35\x76\x09\x45\xde\xf3\xe8\x40\x77\x0d\x08\x75\x07\xc6\xc2\x84\xe2\x4c\x10\x24\x8c\xcb\x11\x3c\xa5\x9c\xd4\x3f\xfd\x69\x3e\x80\xf6\xbc\x37\x4e\x7b\x9e\x37\x76\xd6\x2f\x90\x62\x3f\x2a\x8f\x46\x75\x27\x7b\x2b\xaa\x0d\x43\x5f\xc2\x16\xc7\x39\x45\x32\x43\x68\xd1\x39\x36\x2e\x70\x18\x59\xa5\x81\x77\x12\x1f\x16\xda\xe3\xe3\xc8\xbd\x00\xc8\x93\x6d\x4d\xc7\xed\x9d\xea\xc7\x31\xc9\x21\xf3\x36\xb1\xbf\x59\x29\x9e\x9e\x4d\x8e\xaa\x9b\x63\x23\xa2\x29\x88\x2b\x46\xf4\xee\x2e\x89\x5e\xe9\x7c\x48\xd6\x74\xc1\x25\xdb\xd2\xaa\x0a\x96\xd0\x5f\xdf\x17\x03\x21\xcc\xe3\x2e\xe3\x21\x3b\xff\x1e\x5e\xeb\x9c\x50\x4c\x15\x5a\x2e\xeb\x39\xe6\x9f\x72\x30\x74\x0c\x24\xc0\x6a\x5e\x30\x68\x16\x12\xa1\x80\x7c\x63\x1a\x20\x46\xaf\xdd\x9c\xa3\x18\xd2\x26\x6a\x4b\xf3\xca\xf3\x69\x18\xf5\x01\x9a\xa1\x83\x92\x00\x22\x44\x6a\x87\x7d\x4d\x26\x96\xba\x0f\xc8\xa2\xef\x73\x45\x7e\x78\xf7\xf0\x7f\x6f\xaf\xbf\xbb\x79\x3b\x23\xd7\x55\x65\xf9\xc1\x23\x6a\xed\x7a\x3d\x34\xac\x48\x15\x78\xcd\x88\xe0\xce\xb5\x35\xff\xad\x45\x5a\x9d\xe8\xaf\x69\xe3\x01\x5e\x67\x26\xba\x3e\x4b\x68\x03\xfc\xf0\x9a\xdc\x58\x17\x1d\x76\xcc\x67\x09\x5d\xa3\x0a\xa3\x25\xfc\xbd\x0d\xbd\xbd\x4d\x8d\xab\xfc\xd5\x2a\xa2\xce\x64\x74\x92\x5f\xb6\xac\x13\x0e\x27\x7e\x0e\x65\x12\x36\x54\xd8\x03\x27\x10\x6f\x82\x15\xc6\x26\x5b\x1d\x8d\xe9\xc9\x39\x29\x06\xe3\x6a\x88\xfe\xc6\x7b\x96\x7b\x71\xc7\x8c\x7c\xc0\x3c\x5b\xaa\xc6\xeb\xb2\x70\xc3\x9a\xdc\xfe\x65\x3e\x1d\x94\xda\xbb\x9e\x79\x25\x73\xe7\xc6\x02\x78\x0f\xea\x16\x26\x2a\xaf\x14\x3b\x3a\x7b\x86\x9f\x5e\x0e\xcd\x75\xd5\xe4\xc0\x81\xb4\xd5\x62\xda\x1d\xb1\xc4\x35\xe7\x39\xb8\x08\x57\x96\x31\xae\xab\xd8\x0b\x50\x6d\xaa\xca\xb8\x4d\xf9\xfd\x7d\xf2\x3a\xfc\x44\x35\xa6\xd9\x5b\xb8\x1c\xc9\x4c\x23\xde\x59\x30\xb7\x6f\x59\x7e\x85\x34\xdd\x80\x70\x04\x8d\x25\x2d\x82\xca\xf1\xc9\xd1\x06\xe7\x35\xe6\x92\x3e\xa0\x91\x68\xc0\xf7\xd1\x45\x4f\x42\x14\x03\x94\xfc\xf5\x62\xc1\x6b\x04\x7e\x2e\xf8\x32\xcb\x9e\x8f\xbe\xd9\x59\x37\x8b\xbb\xed\x6a\x86\x61\xbb\x06\x1d\xfe\xb0\xdb\x0a\xb5\xa3\x7d\x4c\x83\x38\xf4\x00\xc3\x41\xd2\xc1\x4c\xdc\x0b\x31\xe2\x0d\x91\xdf\xc3\x73\xd1\x8d\xbf\xbd\x23\x73\x6a\x18\x2b\x77\x42\xb9\x93\x22\x47\x35\x52\x3c\x98\xe2\xf0\xd5\xbd\xd4\x82\x6b\xaf\x98\xc4\xa4\x10\xbb\x04\xb7\x77\x2e\x57\x84\x93\x54\x9a\x17\x8f\x3b\xf8\x11\xec\x9f\x63\x4b\x89\xad\x4a\xe3\x7d\xe7\x8c\x7c\x7b\x45\xfe\xfc\x67\xf2\xf5\x37\x5f\xfe\xfd\xaf\x57\x57\xe7\x0b\x21\xc9\xe7\xa4\xa4\xbb\x0b\xa3\x20\x1d\x72\xd5\x2e\x23\xf9\xe6\x9b\xe4\x88\x13\x47\xe4\xa4\xd3\xc2\x5d\x7b\xc7\xab\x2f\xed\x6f\x7c\x41\x56\xa2\x95\xea\x22\xe5\xb8\xe4\x4b\xfd\xb1\xa7\x13\x3f\x0e\x31\x1c\x3b\x76\x3c\x34\xf2\xb6\x4b\x96\x66\x72\x0d\xe7\x51\x56\xd8\x20\xca\x9b\x91\xce\x74\x67\xf4\x31\xd6\xa2\xab\x80\x74\x60\x33\x94\x11\x84\x9a\x75\xc5\x8c\xcb\x5e\xb1\xa4\x2b\x8a\x44\x8b\xc0\x43\x2f\x61\xd2\x1f\x6d\x32\xf0\xe7\xba\x88\x8f\x65\x95\x4f\x26\x9e\x94\x89\xf7\x12\xe0\x5a\x0d\x9b\x99\x35\x9b\x06\x39\xdc\x5e\xe9\x10\xfa\x33\x77\x91\x69\x14\x7f\x22\x7a\x69\x5d\xef\x3e\xe2\x92\xf8\xa5\xef\xa5\xcf\xec\xdd\x9f\x91\xfe\x15\xbd\xce\x80\x7b\xa9\xbb\xf9\xce\x96\x12\xa1\x41\xb5\xbb\xf7\x09\xbb\x41\x75\x3f\x1d\x56\xb7\xc0\x53\xe0\x44\x0d\xea\xa6\xae\x3a\x57\x0b\x62\x43\x22\x82\x5f\xa4\x9d\x2a\x6a\xaf\xce\x64\x83\x79\x37\xed\xbc\xe2\x6a\x85\x58\x2b\x0a\xc9\x32\xb1\xe8\x3d\x23\x69\x34\x6b\xab\x57\xd4\xc4\x02\x4a\x43\xa5\xdf\x70\xdb\xc4\xf1\xd0\x84\xcc\x5b\x5e\x61\xbe\xc8\xef\xab\x83\x74\xe2\xd6\x86\x69\xed\x1c\xde\x0d\x93\x3b\x5b\x61\x01\x77\x17\xb2\xf9\x9e\xc3\x8a\x8e\xcd\x27\x7d\xb6\x0c\xf7\xd9\xea\x88\xf2\x8e\x2f\xb4\xbe\x83\xa4\x12\x80\x2e\xc6\xcb\x31\xe4\x9c\x87\x55\x6f\x97\x83\x71\xf5\xad\x56\x4a\x56\x6b\xcc\x51\x5c\x24\x48\xff\x5d\x22\x68\xbb\xd1\xbc\x5e\x4e\xfd\x73\x53\x1f\x47\x43\xd9\xf4\x99\x19\xad\xe7\xa0\xb2\x94\x96\x54\xb3\xe5\x41\x45\xe8\xc0\x2d\x44\x08\xd6\x1a\x2a\x0d\xf6\x9d\xfe\x11\x08\xd6\x54\xb4\x30\xae\x22\x57\x70\x4f\x44\x23\xca\x43\xae\x82\x14\x68\xcd\xb6\xc6\x05\x3f\xa8\xe7\xc4\x0c\xbb\x14\x55\xc5\xeb\xe5\x07\x28\xa2\xa7\xb1\x1e\xf7\xf8\xb8\x2d\xba\x5b\xe7\x04\x0f\x5b\xab\x19\xb9\x43\x84\x29\x06\xa5\x7c\x41\x7e\xf0\x33\x7b\xb0\x13\x33\xf1\xc3\xe8\x16\x7c\x43\xee\xfb\x94\xcc\xc8\x74\x3a\xb5\x7d\xd4\xf1\x2f\xe8\x20\x6b\x61\x6f\x26\x24\xa2\x85\x46\xbe\x16\xf0\x31\x3a\xa6\xd1\x9b\xa2\x66\xbf\x2c\x2e\xc9\x76\x45\x35\xa0\x38\xb7\x66\xbd\x0b\x5e\x32\x13\xae\xc1\xd1\xf0\xd1\x2c\x67\xca\x17\x5a\xd3\xa7\x87\x56\x2e\x83\x96\x2f\xda\x7a\x3c\xaf\xe5\x78\x56\xab\xf1\xc3\x30\xda\x75\xfe\xed\xee\x6b\x31\x0c\x63\x1b\xc3\x58\x9c\x82\xbb\x9d\x39\xac\x9c\xe6\x62\xc3\x06\x38\x9e\xe1\x70\x33\x0b\xf8\xb4\x03\x1a\x05\x39\x57\xa2\x8a\xf5\xb4\xb5\x03\x9c\xb3\xa7\xaf\xc8\xdf\x2e\x10\x68\xd1\x30\x59\xb0\x5a\xd3\x25\xc4\x94\xee\xa7\x80\x5e\x78\xee\xf3\xab\xcf\x22\x7e\x11\xe4\x56\x7a\xc0\x90\x2b\xc3\x72\x3f\xd3\xa7\x0f\x35\xdd\x50\x5e\x81\xba\xe6\x8a\x5c\xcd\xc8\xb5\x25\xce\x12\x11\xb6\x75\x66\xbc\xaa\x80\xeb\x8b\xed\xad\xa7\x3d\x12\xe7\x3b\xa3\xde\xea\x12\xf9\x7f\x70\x76\x2f\x38\xe2\x5f\xfe\xf6\xd9\x8c\xdc\x60\x1d\xfc\x2b\x9b\x91\x30\x64\x77\x45\x9b\x2f\xae\x3e\x43\x44\xab\x91\xde\x7b\x44\x72\x3e\x44\x0e\xea\xf9\x3d\xa4\x15\x2b\x49\xdb\xf4\x41\xc3\xee\x07\x98\x13\x6b\x27\xa7\xd0\xe9\x4d\x85\x5d\x1e\xe8\xdb\xd6\x3b\x7f\xa1\x69\xd5\xdb\x71\xe8\x33\x01\x40\xe7\x2d\x6e\x8e\x43\x42\x3f\x15\x2c\xc2\x44\x9f\x7f\x71\xf5\xd9\xfe\xbe\xce\xc8\x2f\x75\xc1\x60\x44\x18\x09\x52\x66\x73\xc6\x6a\xf2\xc8\x2b\xb8\x9a\xba\x66\xdb\xe0\x88\xdd\xf2\x1c\x2e\xc3\xa2\x95\xc6\x8c\x5f\xee\xa3\x19\x7a\x73\x89\x45\x7e\x40\x8d\x6c\x6b\x68\x11\x4a\x35\x1e\x79\x82\x86\x8e\x6e\x30\x77\x73\x2d\x1e\xa0\x22\x6b\xa1\x34\x4c\x31\x36\xea\x60\xea\x21\xdb\xf3\xac\xee\xf9\xeb\x01\x9f\xff\x21\xd5\x50\xdb\xd1\x1f\x4e\x5f\xef\xaf\x7e\x58\xf3\xec\x69\x98\xf0\xb6\x64\x6b\x9e\x57\xd0\x1b\xa5\xd8\xd6\xb3\x81\xe6\x0a\x7b\x71\x9d\x46\x03\x53\x63\x75\x59\xff\x4c\x4c\x40\xbb\xc4\xe8\xdc\xd7\x3a\x46\x12\x83\x62\x65\xa8\x35\x4f\xff\x67\x3e\x97\x1f\xa1\x8e\xc2\x9a\x1d\x74\x84\xd7\x36\xc6\x87\x87\x2b\x9e\x2f\xd3\xd4\x86\xab\x61\x4e\x3d\xa0\xfb\x60\x4f\xf4\x16\xd4\x92\x35\xa2\x81\x3b\x4d\x12\x0b\x0d\xc6\x35\x26\xd2\xed\xad\x90\xd1\x27\x55\x85\x37\x44\x58\x96\x8e\x8c\xb9\xa7\x68\x2a\x46\x95\x36\x5b\xf0\x9a\x0a\x25\x1a\xe6\x87\x42\xfc\xc3\x6e\x62\x40\xa1\xf3\xf9\xe0\xd2\x6f\xb3\x3f\x93\x7b\x86\xb1\xc7\xc4\x08\xdf\x64\xe0\xe8\x4d\xc6\xb9\xa0\x97\xb6\x1e\xfa\x85\x41\xda\x47\xf5\x53\x70\x5a\x18\x09\x43\x4e\x6d\x1c\xb7\x35\x9c\xdb\xfe\xd3\x90\xa2\x93\x00\x29\x07\x1f\xa9\x62\xda\x1d\x55\xf1\xed\xbf\xc7\xcf\x1b\x04\x89\xdd\x30\xa9\xcc\x8f\xc5\xe8\xf8\x15\x9f\x31\xcb\xdc\x1d\xd5\xc0\xfe\x46\xb8\xec\x87\x90\x81\xc0\xef\x8d\xe5\x7c\xa7\x8e\x86\xff\x48\x2c\x20\xe2\xa9\xfb\xaf\x86\xdc\x65\x31\x47\xc0\xfb\x8f\xac\xb6\x6b\x13\x9d\xdf\xe1\xe3\x0e\x48\x0d\xd6\x56\x32\xa3\x52\xc9\xb2\xfb\xd6\xbd\x70\xc0\x15\x1e\x5b\xe9\x4e\x07\xcc\xc8\xad\x26\x85\x90\x88\x89\x2c\x7d\x88\xea\xbe\x3f\x53\xbd\x71\x2f\x03\x38\x4f\xae\xdc\xed\xf5\x26\xb8\x5e\xb7\x08\xbd\x77\xd9\x94\xeb\xbb\x5b\xc8\x65\x1d\xb6\x21\x8b\x9d\xcf\x0a\xdb\xe0\x66\x45\xd5\x81\xdc\x05\xf9\x47\x32\xaa\x0e\x97\x37\xf0\xf8\xc8\xb6\xee\xfd\xc9\xb1\x23\xd9\x7c\x0e\xdd\x13\x3e\xef\xfe\x06\x7b\x8c\xfd\x9a\x06\x5f\xe3\x39\x1f\x56\xf6\x94\x8c\xd2\x42\xd2\x25\xb3\x7f\xf9\x57\x00\x00\x00\xff\xff\x8d\x4d\x05\x9f\x29\x55\x04\x00") func kubedbCom_memcachedsYamlBytes() ([]byte, error) { return bindataRead( @@ -604,12 +582,12 @@ func kubedbCom_memcachedsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_memcacheds.yaml", size: 88715, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_memcacheds.yaml", size: 283945, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_mongodbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x5d\x73\xdc\xb8\xd2\x3f\x76\x7f\x3e\x05\x2f\x72\x91\xa4\x4a\x27\x79\xfe\xcf\xa9\x53\xc9\xde\xa4\x7c\x2c\xef\x1e\x67\xed\xb5\xca\xb2\x77\x53\xf5\xd4\x3f\x55\x10\x89\x99\x41\xc4\x21\xb8\x00\xa8\x97\x4d\xe5\xbb\xa7\x86\x14\x67\x46\xd2\x90\xe8\x5f\x03\x9c\xe1\xc8\xe8\x2b\x5b\x43\x02\x20\xd0\x2f\x3f\x34\x1a\xdd\xa2\x56\xbf\x4b\x63\x95\xae\x7e\xca\x44\xad\xe4\x83\x93\xd5\xe6\x7f\xf6\xef\xb7\xff\x9b\xfd\xbb\xd2\xff\xcb\xdd\x7f\xdc\x48\x27\xfe\xe3\x6f\xb7\xaa\x2a\x7e\xca\xde\x37\xd6\xe9\xf5\x57\x69\x75\x63\x72\x79\x29\x17\xaa\x52\x4e\xe9\xea\x6f\x6b\xe9\x44\x21\x9c\xf8\xe9\x6f\x59\x96\x1b\x29\x36\x7f\xfc\xa6\xd6\xd2\x3a\xb1\xae\x7f\xca\xaa\xa6\x2c\xff\x96\x65\xa5\xb8\x91\xa5\xdd\x3c\x93\x65\xa2\xae\x7f\xca\x6e\x9b\x1b\x59\xdc\xfc\x2d\xcb\x2a\xb1\x96\x3f\x65\x6b\x5d\x2d\x75\x71\x63\xff\xde\xfd\xfd\xef\xb9\x5e\xff\xcd\xd6\x32\xdf\xbc\x21\x8a\xa2\xed\x4a\x94\x57\x46\x55\x4e\x9a\xf7\xba\x6c\xd6\x55\xdb\xda\x45\xf6\x7f\x5e\x7f\xf9\xed\x4a\xb8\xd5\x4f\xd9\xdf\x37\x2f\xfc\xfd\xae\xfb\xa8\xb6\xa7\xae\xed\xdf\xf7\xfe\xe2\x1e\x6b\xf9\x53\x66\x9d\x51\xd5\xf2\xd5\xeb\x4e\xb8\xc6\xfe\xbd\x5e\x09\x2b\xf7\x5e\xbf\x6e\xff\xec\x7d\xbb\x9f\x87\xbf\xbf\x9a\x84\xbd\xb6\xde\x2d\xe5\x5e\x43\x85\x70\x9b\xff\x2e\x8d\x6e\xb6\x33\xd2\x7e\x79\xf7\xf8\xd3\x74\xe5\xc2\xc9\xa5\x36\xaa\xff\xff\xc5\xe6\x3d\x61\x9d\x36\xf2\xe9\xff\xdb\xb9\xdc\xfc\x47\xd4\xb5\xcd\x75\xd1\xff\x26\xda\xe9\xcf\xb2\x6e\x15\x3f\x6f\xa6\xf9\xf2\x5f\xed\x5f\x4a\x65\xdd\xaf\xfb\x7f\xfd\xa4\xac\x6b\x7f\xa9\xcb\xc6\x88\x72\xb7\x28\xed\x1f\xed\x4a\x1b\xf7\xdb\x6e\x58\x17\xd9\x7a\xd9\xfd\xa0\xaa\x65\x53\x0a\xb3\x7d\xfe\x6f\x59\x56\x1b\x69\xa5\xb9\x93\xdf\xab\xdb\x4a\xdf\x57\x3f\x2b\x59\x16\xf6\xa7\x6c\x21\xca\x76\x6a\x6d\xae\x37\xdf\xdf\xb6\x56\x8b\x5c\x16\x9b\xbf\x35\x37\xe6\x89\xbb\x9e\x7a\xe8\xd6\xe3\xa7\xec\xff\xfd\xff\xfe\x96\x65\x77\xa2\x54\x45\x3b\xaf\xdd\x8f\xba\x96\xd5\xbb\xab\x8f\xbf\xff\xe7\x75\xbe\x92\x6b\xd1\xfd\x71\xd3\xb1\xae\xa5\x71\xdb\xc9\xea\xf8\x6d\xcb\xe9\xdb\xbf\xbd\x5a\xcb\x8e\xda\x59\xf2\x3d\xb4\xcf\xf1\x3d\x1d\xea\x77\xbb\xec\xcf\xfe\x92\x65\x6b\xf1\xf0\x49\x56\xcb\x0d\xd7\xfc\xf3\x3f\x5f\xfc\x56\x0b\xe7\xa4\xa9\x7e\xca\xfe\xef\xff\x12\x17\x7f\xfd\xf7\xff\xf1\xbf\x2e\xc4\xc5\x5f\xff\xeb\xc5\xff\xfe\xdf\xff\xe7\xff\x7a\xfa\xc7\xff\xf4\x7f\xfc\x0f\x2f\xde\x39\x38\xc8\xfe\xcf\xfa\xe6\xff\x91\xb9\xdb\xfe\xb9\x97\x29\xdf\xb8\x6f\x44\x7e\xdb\xd4\x9b\xb9\x2d\x9a\xf2\xd5\x17\x0c\xbd\xd5\xce\xf6\x5f\x8d\x79\xf5\x82\xef\xa5\x0d\xe5\xba\x72\x42\x55\xd2\x1c\xfe\x79\xf0\x3b\x77\xb4\x16\x0f\xef\x75\x55\xc9\x7c\xc3\x26\x03\xbd\x64\xd9\x42\x9b\xb5\x70\x3f\x65\xaa\x72\xff\xfc\xc7\x68\x57\x1b\x65\xb3\x94\xe6\xe0\x33\xb5\x91\x0b\xf5\xc0\x1c\xea\xc1\xa5\xe9\xe9\xe6\xbf\x71\x66\xef\xa6\xc9\x6f\xa5\xfb\xc1\xa7\x2e\x37\xba\xfa\xf0\xb0\x51\x3e\x2f\xa5\x9d\xd4\xfa\x32\x3f\xf8\xe5\x69\xea\xf7\x7f\x1e\x98\xfa\x52\xe7\xa2\xe4\xcc\x9e\xb8\xb7\x1f\x4a\x61\x9d\xca\xff\x55\xea\xfc\xf6\x7a\x63\xd7\x86\x06\xe8\x6b\x6b\x43\x0b\xfb\x6d\x33\xce\xc1\xdf\x09\x2b\xd2\x76\x25\x8c\x53\x6e\x80\x8b\xb6\x7d\xed\x16\xe5\x3f\xff\x9b\xb7\xc7\xb1\x85\xd9\x90\x91\xa2\xf8\x52\x95\x8f\xfe\xb1\xdf\x68\x5d\x4a\x51\x0d\x3e\x77\xb7\x01\x48\xf2\xe3\x65\xe0\x2c\x18\xf9\x67\xa3\x8c\x2c\x86\x9a\xb9\xd8\x76\x34\xca\x50\x03\x1c\x93\xf5\xc6\xe2\x52\xd9\xdb\x90\x15\xcf\x45\xbe\x52\xd5\xf2\xb3\x2e\xc2\x97\xbd\x50\xf6\xf6\xb7\x03\x36\x9b\xd5\xd0\xf7\xaf\x1f\x83\xdb\x89\xc4\xce\x2f\x81\x0d\xab\x91\x58\x0c\xea\xe7\xab\x7e\x19\x46\x1f\xf8\xfe\xf5\x63\x10\xdf\xfd\xac\x5e\x23\x9b\x9e\x28\x7c\x17\x4f\x5e\xad\xcc\x8d\x74\x51\xf8\xce\xae\x84\x91\x11\x5a\xf2\xaf\xd1\x6e\xd0\xc3\x8f\xf4\x83\xe1\xae\x53\x2e\xeb\xd5\x62\x70\x09\x28\x8b\xb4\xd6\x95\x72\xda\x8c\x3c\x91\x65\xca\xc9\xf5\xe8\x03\xc4\xb9\xef\x1f\x13\xc6\x88\xc7\x11\xcb\xe2\x56\xb3\x11\xc5\x9e\xf7\xc6\x64\x81\x3c\xa8\xae\xa9\xaf\x72\x31\xd6\x12\x65\xd1\xb2\x81\x9d\x13\x6b\x54\x04\x36\xdb\x50\x63\x87\x77\x1e\xc4\xbe\xfc\x32\xd3\x73\x23\x5b\x1e\x54\x55\x0c\x0f\xf3\x88\xf0\x28\x36\xff\x9d\x29\xd3\x9c\x0d\xd0\xca\x75\xb5\x50\xcb\xcf\xa2\x0e\xe1\x9d\x42\x2e\x44\x53\x3a\x1f\xd0\x8a\x8b\x8a\xbd\xca\x99\xa0\xbd\xa9\xec\x93\x65\xb7\x72\x94\xa5\xf7\x07\xee\xe5\xa0\xac\x35\x3f\xe3\x73\xd5\x11\x75\xc6\xf6\xbb\xf7\xcd\x5b\x47\x3e\x63\xb3\xdf\x22\xe1\x83\x7c\x8c\xda\xd1\xc5\x66\x1a\x3d\x4f\x6c\x06\x46\xb0\xb8\x1e\xf9\xa3\x59\x5c\x9f\x56\x20\x7d\xbe\xae\x3b\x1f\x74\xa8\xc6\xf3\x8b\xaa\x55\x41\x42\x6a\xd4\x5d\xb0\x25\x8b\x66\x27\x2a\x5d\xc8\xab\xe6\xa6\x54\x76\x75\x7d\xce\x8a\x3e\xf6\xde\xfc\x9d\x73\x46\xdd\x34\x6e\xfc\x3b\xf7\x4f\x3e\x68\xf3\x12\xef\x9b\x09\x9b\xb4\x96\xd3\xb8\x6c\x5e\xe8\xfb\xea\x5e\x98\xe2\xdd\xd5\xe0\x26\x39\xd9\xa4\x6e\xec\x4a\x96\x85\x47\x6e\xd0\x36\xb3\xc1\x73\x91\x61\x02\xcc\xde\x76\xd8\x57\x24\xfb\x03\xb7\x4e\xb3\x43\x59\xcb\xa6\xdb\x71\x10\xcd\xa0\xd7\xe4\x64\x6f\xcf\xae\x6f\x66\xb4\x3b\x7b\xfb\x79\x22\x66\xdb\x9e\xee\xf8\x7c\x13\xac\xd1\x67\xad\xc7\xed\x4e\x59\x3d\x6a\xf9\xd8\x6d\xf7\xb3\x73\x62\x56\xee\x87\x11\x8f\x93\xa9\x80\xee\x78\x70\xcd\xdb\x90\x5c\xd7\xee\xf1\x52\x05\xed\x82\xd7\xb2\x50\xcd\x3a\xdc\xe1\xa1\xfe\x92\x9f\xd4\x5a\x0d\x1e\xfe\x10\x5b\xf2\x7e\xf3\x22\x9f\xc1\x9e\xbf\x6c\xce\xf2\x30\xc4\x09\xb3\x94\xee\x8f\x3f\x7e\x9b\x91\x0f\xf0\xfe\x5e\x15\xb3\x19\x8e\x9f\xfb\x4a\xf9\xf0\x7b\x0b\x5b\xdf\xce\xc6\xa4\xdb\xce\xcd\x16\x7d\x27\x0f\x5b\x4b\x53\x6f\x42\x16\xa5\xce\x6f\xc3\x1c\xaa\x6d\x30\x56\xa4\xc3\x9b\xa7\xb6\xbe\x7f\x0f\xf6\x28\x7a\xbf\x7c\x99\xcb\xab\x0d\xf8\xb7\x4e\x56\x2e\xf4\x04\xf6\x7c\xcf\xdc\xeb\x22\xca\xc2\x1d\xef\x64\xb4\x1b\x30\x7b\xd5\x95\xfb\x2a\x6b\x1d\xc4\xef\xca\xc8\xdc\x69\x43\xf8\x56\xef\xa4\xd5\xda\xaa\x48\x4d\xdd\x29\xdf\x46\x36\x8a\x1f\x7e\x37\x66\xf6\x12\x94\x8d\x75\xd2\x84\x9d\x6a\xca\xaa\xa8\xb5\xaa\xdc\xa8\xb2\x26\xca\xdc\x8c\x4e\x23\xfd\xf3\xbf\xfd\xf0\x61\x01\x19\xde\xa9\x78\xd7\x66\xa5\xad\x1b\xf3\x58\x50\x96\x26\xca\x84\xba\x70\x75\x4a\x50\x25\x01\x33\xa5\x6c\xa0\x9b\x3a\x5f\x89\xfa\x5d\xe3\x56\x97\xca\xe6\xfa\x4e\x52\x74\x80\x0f\xe7\xf4\x4d\x5e\x0f\x87\xff\x61\x0d\x46\x32\x6b\x6d\xa4\xbc\x70\xda\xeb\xfa\xa0\xb5\xf6\x67\xa8\x96\x7b\x5a\xbd\x8f\xd5\x46\x0d\x89\x71\xa7\xc6\xfc\x36\x86\xb5\x36\x4e\x94\xb3\xd9\x3c\x25\xa0\xde\x3f\xd4\x6e\xb3\xaf\xda\xd5\x99\x5c\x75\xa9\x3f\x87\x66\xf1\x62\xc3\x8d\x83\xbf\xed\x0f\x92\xab\xfa\xd6\xba\xa9\x46\xad\x84\xf7\x0b\xab\x30\xe3\x3f\x2b\x93\xbd\xe1\x5a\x13\xbe\xaf\x0f\xb2\x56\x17\x4f\x63\xe0\xae\x68\xbd\xdd\x08\x75\x5e\x8e\xf7\xa5\x50\x83\xce\x41\x92\x71\xdb\x34\x70\x66\x1b\x8b\xed\x98\xd9\xb3\xb8\xd2\x4e\x57\xf3\xdb\x54\x16\x47\x08\xcf\xd9\x74\xc2\x9e\x37\x6d\xdc\xbd\x36\x11\x3c\x6c\xb3\x8b\xed\x3a\x9b\xf0\xa8\xda\xe8\xcd\x6f\xc3\x5d\xcc\xf6\x28\xfa\xd9\x8d\xb9\xc3\x14\xf5\x30\xda\x1b\x48\xc6\x69\x94\x38\x4a\xc6\xa3\xe8\x28\x3a\x22\x45\x81\xed\x08\x3c\x4c\xec\x88\x76\x82\xbc\x23\xec\x2c\xf9\xe5\xe0\x68\xa7\xca\x3b\xa2\x9d\x2f\xbf\xec\x05\x9a\x02\xfa\xc1\x67\x47\xfe\xa8\xb2\xfd\x67\xbd\x07\x96\x3b\x02\x8e\xfd\xf7\x5f\x18\xdf\x15\xec\x88\x02\xc4\xf7\xdb\x25\x4f\x22\x25\x22\xed\x65\xe3\x3e\x8d\xfd\xfc\x69\xd2\x9c\x10\x02\x79\x76\x74\xbe\x3a\x81\x1e\x85\x13\xd6\x4f\xc6\x88\xcc\xd9\x11\x4b\x15\x65\x78\xb4\x4e\x70\x8f\xa8\xf4\x67\x60\x2c\xcf\xcb\x01\x02\xe2\x9d\x25\xed\x9c\xb1\x22\x82\xf6\x06\xc8\x64\x7c\x46\x94\xd0\x8e\xd8\xbc\x0f\x45\x0e\x45\xe8\x0f\x8b\x26\x0a\xee\x90\x27\x6a\xe4\x58\xa3\x97\xe3\x83\x24\x0d\x07\x01\x73\x31\xec\x40\xe3\x9d\x5f\xef\x2d\x1b\xc7\x04\x98\x13\x60\xf6\xbe\x90\x00\x73\x47\x56\x9a\x3b\x95\xcb\x77\x79\xae\x9b\xca\x7d\xd3\xb7\x92\x00\xf3\xc0\xd0\xee\xa6\x50\xb2\x9a\x24\x5e\x35\xcb\xe4\x43\xad\x4c\x9b\x8a\xe7\x5a\xe6\xba\x1a\x0f\x64\xdb\x11\x25\x83\xc5\xa1\x71\xd1\x25\x91\x2e\x83\x93\x45\xe8\x92\xa4\x88\xcc\x2b\xd1\x82\x6a\x09\xb7\xb9\x3b\x3f\x12\xd7\x81\xf6\x67\xa3\x6f\x1e\x5d\x90\xf7\xb2\x4b\x83\x35\x1f\xe7\xa5\x91\x4b\x65\x5d\x84\xe0\x14\x27\x2b\x51\x85\x86\x08\x47\xb9\xa0\xdc\x7b\x64\x8f\x10\x26\xd3\xcd\x9d\xc7\x61\xcb\xe5\x36\x73\x13\xe4\xa8\x8d\x75\xae\xbf\x16\xcb\x08\x99\x39\xe4\xe3\xe6\xf7\xe0\x76\x66\x98\xe8\x40\xeb\xd0\x93\xe0\x74\xba\xfe\x44\x47\xc9\x4e\xd0\x32\xf4\xe0\xaf\xa1\xb9\x0b\x6c\x2e\x4a\xf9\xf1\xcb\x0c\x04\x77\x29\x9c\xbc\x17\xe1\x8a\xbd\x36\xda\x75\x69\xbb\x2e\xf5\x5a\xa8\xf0\xb8\x9c\xc4\xec\xdd\xe0\x6d\xf9\xa1\x12\x37\xe5\x38\xe4\x22\x4e\x84\xd3\x46\x2c\x65\x94\xe4\x50\x4f\x6d\x5d\xc5\xd0\x6b\xf6\xd1\x3a\x19\x7e\x03\xa9\xb3\xa3\x47\xc9\xf7\xf3\x24\x35\xc3\x08\xb2\x67\xb9\xe1\x27\xda\x6f\x66\xeb\x8f\x51\x2f\xca\x6c\x0f\x68\x53\xfe\x8a\xc3\xdd\xa7\xfc\x15\x7b\x8f\x8d\x03\xa9\x58\xa9\x27\x22\x26\x1a\xf3\x4b\x6b\xa7\x2b\x75\x50\xa4\xdb\xec\x02\x5a\xce\xda\xac\x46\xb3\x15\xfb\x4d\xb5\xf9\x9b\x27\x67\xa6\xe6\x26\x28\xe0\xf2\xce\xd6\x2b\x69\xe4\x6c\x22\xac\xb6\x40\xa2\x54\xf9\x63\x70\x78\xd4\x8b\xf6\x22\x2e\xb0\xef\x3c\x38\x62\xec\xd6\xc8\xa1\xae\x87\x3d\x46\x7f\xae\x75\xf1\x4d\xae\xeb\x52\x1c\xf6\x4d\x51\x72\x52\x1b\x5d\x96\x61\x57\x04\x45\x55\x69\x27\x66\x7d\xdf\xd4\x1f\xf5\x7c\x20\xe9\xf9\x3e\xfd\x28\xf3\xf0\x32\x81\xfa\x3e\x91\xe6\x60\xd1\x56\x4e\x18\xb5\x45\x64\x03\xa2\x0b\xf9\x8e\xd0\x1e\xd2\x66\xf6\x94\x25\x5a\x1a\x23\x8b\xcb\x66\x33\xa3\x4f\x59\xe0\x55\xb5\xfc\xb8\xac\xf4\xf6\xcf\x1f\x1e\x64\xde\xf8\x6e\x6b\xf6\x04\x9c\x40\xe2\xe7\x8f\xdd\x78\xe9\xe7\x1d\xbc\x5e\xb2\x36\x57\xb7\xcb\x57\xbb\x0c\xe3\x60\x74\x03\x74\x0c\x1b\x36\xd0\x8e\xc0\x63\xd9\x9e\xd8\x81\x0d\x59\x57\x98\xc1\x08\x87\x47\x53\x04\x77\x7c\x27\xca\x86\x33\x49\xcc\x75\xe9\x28\x68\xc4\xe8\xc1\xe8\x3e\x71\x82\x3a\x32\xf0\x50\x78\xf7\x4e\xbf\xa8\xe0\x8b\xac\xd0\xab\x8c\x3d\x2f\xad\x74\x3e\xd5\x1a\x49\x82\xf9\x92\x92\x60\xc2\xaf\x27\xc1\x3c\xfc\x22\x36\x2f\x8c\xce\xee\xa5\x5a\xae\x08\x11\x53\x3d\xf1\x62\x7d\xf0\x48\x1f\x6c\x71\x2f\xf6\x90\x09\xf1\x85\xee\xc3\x49\x0f\x83\xd3\x8a\xac\x5c\xff\x99\xf1\xf0\x1f\xaa\x2c\x37\xd0\xf6\x5a\x96\x6d\xa6\x89\x6f\xd2\xd0\xb5\x00\xa8\x32\x12\x0c\x1c\xa6\x64\x6d\xc8\x94\xac\xcd\x18\x25\x18\x38\x40\x49\x30\x49\x94\x04\xd3\xf7\xce\x39\x08\x26\xa3\x33\xac\x1b\x64\xca\x2f\x5e\x23\x0c\x32\x86\x22\x7d\x02\xf9\xd1\x5a\x17\xc9\x87\xf7\x6c\x1a\x36\xab\x31\x35\x82\x6b\xeb\xd1\xf6\xcb\x8f\xc9\x28\x5f\xe1\x87\xc1\xc6\x2c\x44\x13\x86\x58\xa9\x8c\x6f\xa9\xb2\x70\x15\x1c\x66\xb1\xa2\x0c\x80\x6f\xb9\xb2\x30\xeb\x95\xc5\x18\x7d\x88\x15\xcb\x02\x2c\x59\xc6\xb4\x66\x59\x88\x45\xcb\x42\xac\x5a\x16\x34\x57\xad\x74\x7f\xda\xab\x73\x8d\x10\x7e\xe6\x75\x98\x82\xb8\x25\x10\x0e\xc0\x2f\x56\x7d\xfc\xc0\x31\x70\x3a\x7b\x66\x78\x1c\xe1\x74\xad\x4b\xbd\x7c\xfc\x15\x55\x9c\xcc\xbb\xba\xa8\x8c\x5e\xec\x8f\x30\xb9\xf2\x7c\x74\xf1\x12\xa0\xfc\xe0\xfe\xbc\x49\xb1\x20\x13\x9c\x25\x5f\xde\x30\x25\x97\x01\x99\x92\xcb\x60\x8c\x4e\xe1\xcb\xe3\x80\xaa\x18\x80\x2a\x10\x32\x80\x93\xc4\x78\x89\x03\xa0\x60\xc9\x60\xcd\x02\xbe\xda\x2c\xc0\x04\x8f\x0d\xb5\xfa\x28\x48\x9a\xcc\x88\x43\xfe\xa4\xca\xa9\xe4\x53\x4a\x3e\x25\x1a\x25\x9f\xd2\x29\x06\x90\x7c\x4a\xc9\xa7\xe4\xa7\xe4\x53\x4a\x3e\xa5\xbd\xb7\x92\x4f\xa9\xa3\xe4\x53\x4a\x3e\xa5\xe4\x53\x8a\x30\xd0\x8e\x92\x4f\x89\x44\xc9\xa7\xe4\x7b\x27\xf9\x94\x88\x43\x4e\x3e\xa5\xe4\x53\x3a\x1b\x9f\x12\xe9\x31\x61\x96\x33\x4a\x3d\x25\xab\xbb\xc0\xc1\xd0\xed\x29\x2d\x5d\x25\xc0\x55\xad\x85\x8a\xdf\xe2\xcf\x46\x13\x5c\x60\x70\x55\xf7\xae\x1a\xc4\xaf\xf2\x91\x9c\x22\x1a\x87\x2a\x10\x40\x61\xe8\x16\x7a\xc6\x51\x66\x07\x58\xe6\xd1\x8c\x9c\x8f\x62\x9f\x50\x35\x44\x35\xf0\xa0\xfa\xc1\xf2\xe4\xe3\xbc\xc0\xc9\x8d\xcf\x58\x31\x46\x3e\xfc\xc9\x0d\x07\x96\xfd\x1e\x5c\x37\x5e\xba\x77\x7c\xfd\x98\x29\xde\x19\x4b\x08\xa7\x75\x67\xf4\x81\xa7\x72\x9f\x9c\x4b\xa0\xc4\xed\x20\x93\x74\xf9\x6f\x92\xb2\x1f\xa5\x1f\x46\xd9\x93\x1f\xa6\xa6\xdd\xaa\x86\xcb\xcf\x41\x3d\x52\x20\x62\x9b\xec\xf2\xaa\x29\xcb\xeb\x96\xa7\x8f\x97\xa2\x2d\x32\x5e\x8c\x39\x25\x95\x72\xef\x7b\xf5\x7c\xbc\x09\xf1\x6d\x1d\xc8\x5d\x76\x04\x49\x2c\x7d\xb3\x94\xeb\xf5\x5a\x54\x04\x81\x3b\xf5\x40\x3d\x7b\x1f\x70\x90\xf0\xc5\x5d\x40\xbb\xc2\xba\x95\xb8\x33\x0a\x69\x9d\xb6\x4b\xea\x88\xe3\x73\x65\xed\x98\xf8\xdd\x65\x3c\xf7\x2e\xdb\x4b\x85\x19\xd7\xc0\xce\x70\x43\xbb\xdf\x21\x62\x6e\x3b\xe2\x15\xd2\xc1\x1c\xa9\x2c\x37\x5f\xaa\x4d\x16\xb5\xc7\x99\xd7\x26\x4b\x85\xb9\xa6\xea\x2f\x15\xe6\xda\x23\x7c\xaf\xd7\x51\x32\x53\x2f\x28\x99\x29\xce\x2b\xe0\x6d\x6e\xdf\xce\x91\x31\x06\x08\x72\xd3\x70\xe3\x64\xb0\x7b\x0b\x2b\x01\x61\xe5\x08\x2a\x2a\x38\x2c\xa1\xe1\x08\x0c\x47\x58\x60\x26\xae\x8d\x5c\xa8\x87\xc9\x36\x20\xa4\xec\xd2\xcf\xc7\x93\x56\x10\x3f\x1a\x8d\x2e\xfe\xde\x42\x40\xfb\x0d\x92\x66\x72\xeb\x9c\xea\x52\x3a\x47\x6d\xbb\x54\x0b\x99\x3f\xe6\x25\x61\xc4\x18\x7f\xd5\xda\xba\x6b\x27\x0c\x31\x30\x0f\x67\x5e\xf9\x30\x9c\x7b\x37\x46\xfb\x19\xe2\xe6\xd9\xa7\xf9\x07\x8f\x32\xec\xf5\xca\xb9\xfa\x17\x4a\xd9\xd2\x9e\x78\x13\xbe\xd2\x16\xe8\x23\xe3\x4f\xdc\xe6\x7b\xfe\x2d\x45\xe1\x71\x6d\xbe\xa6\xa3\xc7\xe3\x71\xd0\x69\x16\x25\x2e\xee\xc8\xbd\xf2\xa3\xd3\x88\x78\xef\xf9\x4b\xed\x27\xb2\xa4\xf4\x68\xb1\x69\x68\x19\x59\xf6\xf4\xd7\x9a\xaa\xa7\x7b\x12\xd5\xe3\x17\x68\x23\xd8\xc6\x3a\xc1\x31\xd4\x2f\xdf\x65\x30\xd6\xc3\xc5\x6d\x73\x23\x4d\x25\x9d\xb4\x17\xaa\x72\x17\xda\x5c\x74\xcd\xfc\x94\x39\x03\xb1\x80\xcd\x57\x12\x15\xc6\xa3\x45\xdb\x6f\xd6\x70\x4a\x0b\xe0\xf2\xfa\x5a\xe7\xb7\x6f\xc8\x06\x24\xae\x27\xd0\xfc\x58\x11\x7c\xa1\x36\xf2\xda\xe9\xd1\x5a\xb2\xfb\x0f\x27\x18\x9a\x60\x68\x82\xa1\xaf\x29\xc1\x50\x0f\x25\x18\xfa\xb2\x9f\x64\x90\xf7\x28\xc1\xd0\xc1\x51\x25\x18\x9a\xb8\xde\x47\xf3\x63\xc5\x69\x82\x23\xb3\xac\x54\x77\xb2\x92\xd6\x5e\x19\x7d\x13\xdd\x2b\x4b\x47\xab\x9c\x58\x6e\x10\xa5\xce\xf3\xa2\x18\x7a\xc3\x41\xa8\xb2\x31\xf2\xdb\xca\x48\xbb\xd2\x25\xf1\xf3\xf1\x3b\xe8\xa8\xf8\x42\x48\x19\x5f\x6c\x4c\x3b\x32\x16\x8e\x85\x8c\x61\x8e\xe2\x22\xe2\xa3\x86\x0c\xb0\x50\xf0\x51\xa3\x50\x40\xe4\x8b\xa3\xde\x80\xfb\xae\x08\xda\xc5\x90\x2e\x63\x8a\x31\x5b\x0f\xda\x79\xae\x8d\x67\xda\xf7\x48\xb6\x1d\x45\xb3\x93\x5f\x99\x21\xc3\x06\x90\x29\x55\xa5\x9c\x12\xe5\xa5\x2c\xc5\xe3\xb5\xcc\x75\x45\xad\x48\x32\xbd\xb1\xa8\xa5\x51\xba\x98\xd9\xa0\x6c\x93\xe7\xd2\xda\xd9\x59\x56\x70\x07\x32\x43\xdb\x9a\xb4\xd0\x0b\x9a\x8b\x8a\x70\x6a\x2d\x75\xe3\x66\x25\x88\xc0\x27\x44\xbf\xfc\xbe\x99\xe7\x98\xb7\x81\x18\x81\x74\x5d\xa0\xf3\x15\x20\x31\x9c\xfc\x52\xb8\xc8\x6c\x94\xc4\xc7\xab\xc9\xa2\xcf\x36\xcd\xcf\xef\xa3\x27\xbd\x4f\x54\x1b\xed\x74\xae\xc9\x61\x6a\x60\x07\x58\x08\xeb\x33\xce\xa3\x68\x8e\x69\x82\xd9\x8c\x14\x85\x4a\xde\x88\x83\x94\xbc\x11\xc9\x1b\x31\x4a\xc9\x1b\x11\xda\x5b\xf2\x46\xa4\x7d\x00\x91\x92\x37\x22\x79\x23\x92\x37\xc2\x4b\x33\xb4\xad\x49\x0b\xbd\xa0\xb9\xa8\x88\x33\xf7\x46\xf4\x57\x63\x49\xb5\x2c\x10\xa9\x28\xd5\x5a\x51\xdc\x12\x59\x60\x96\x50\x98\x03\x19\x97\x2a\xa5\x3d\xff\x2f\x01\x1e\xb6\x32\x6f\x8c\x72\x8f\xef\x75\xe5\xe4\x03\x41\xed\x60\x9c\x21\xca\x52\xdf\x5f\x19\x75\xa7\x4a\xb9\x94\x1f\x6c\x2e\x4a\x41\x4d\x78\x8d\xdf\x79\xcb\x45\x2d\x6e\x54\xa9\xe8\x2b\xc1\x48\xb0\x57\x9c\xfd\x16\x3a\xcb\x0a\x43\x8d\xff\xcd\x66\xfb\x15\x70\xd4\xf3\x13\x13\x12\x97\x0f\xe5\xbd\xda\xe8\xfc\xb3\x6e\x2a\xa2\xe5\x86\x7d\x65\xa2\xf8\x52\x95\x8f\x5f\xb5\x76\x3f\xab\x52\xda\x47\xeb\x24\x31\x13\x0f\xfa\x25\xa6\xa9\xde\xd9\x5f\x8c\x6e\x88\x2c\xb2\x67\xe1\xfe\xf9\x8f\x49\x20\x5d\x3b\xa2\xdf\x74\xb5\xf9\xfa\x09\xbf\xf9\xbb\x95\xc4\x64\x1a\xd3\x7f\xb2\x95\x9f\x54\xd5\x3c\x7c\x69\x6f\x0a\x4f\x97\xf6\x5f\xde\x49\x38\x11\x1f\x96\x01\x52\x53\x6e\xd2\x06\x74\xd0\xbe\x32\x65\x07\x0d\x99\x2b\x58\x1d\x80\x6a\xec\x5e\x55\x85\xbe\xb7\x13\xf3\xc5\x72\x6d\xc5\x7b\x23\x0b\x59\x6d\xb6\xc4\xd7\x35\x72\xa3\x83\x31\xc5\xaf\xbb\x9b\x3c\xfb\xe9\x56\xe0\x27\xee\x69\x32\xdc\xe6\x84\x71\x4d\x9d\x4e\x21\x5e\xd1\x1c\xc1\x47\x3a\x85\x20\x50\x3a\x85\x48\xa7\x10\xcf\x5e\x48\xa7\x10\x14\xfa\x01\xfc\x7f\xe9\x14\xc2\x4f\xe9\x14\x62\x56\x96\x35\x9d\x42\x8c\xd2\x39\x6a\xa1\xb9\xa8\x88\x33\x3f\x85\xb0\xae\x50\x04\xff\x2f\xe2\xc1\x69\x9b\xfc\x52\x51\x32\x93\x22\xcd\x3a\x69\xd6\xaa\x6a\xfd\xd5\x9f\xa5\xb5\x62\x29\x69\x59\x76\x01\x16\x3d\xd0\x45\xfc\x94\x66\xce\x5f\xe7\x1c\x9b\x98\x3b\x5d\x36\x6b\x79\x29\xef\x14\xe9\x30\x69\xb2\x68\xd4\xa2\x1d\x01\x92\xfa\x18\xd6\x1e\x13\x06\x58\x62\xf1\x8f\xbb\x6f\x25\x3d\x7e\xda\x8c\x9f\x1d\x83\xb4\xee\xf0\x53\xf2\xc7\x7a\x33\x80\x49\xd9\xa3\xeb\xc1\xe8\x5a\x2c\x81\x73\xad\x79\xf1\xe1\xee\x74\x01\xeb\x00\xc9\x45\x69\x9b\x9b\x49\xd7\xe1\xa9\xfd\x0f\x0f\x35\xd9\x57\x3b\xa9\xb4\x6e\x39\xef\x0c\x84\xf5\x5e\x9b\x5b\x55\x2d\x2f\x15\x61\xea\xc8\x93\x36\xc7\x9a\x36\xa4\xd4\x9e\x54\x1d\x43\x4e\xe7\x89\x28\x2d\xaa\xe7\x15\xbf\xb6\x01\x79\x5d\x41\x0f\x19\xf7\xd4\x86\xec\x75\x81\x18\x1f\xf0\x69\xa2\xd3\x88\xec\xb9\xf0\x0b\x26\xb8\x2f\x13\x5c\x27\x9e\x1f\x13\xf7\x62\x32\xbd\x8a\x0c\x0f\x26\xab\x27\x4e\xe6\x0c\xc8\x77\x89\x7a\x2e\x19\x7e\x4b\xd4\x6b\x89\xf8\x2c\xf1\x7b\x42\x80\xa7\x00\xf2\x13\xf0\xbc\x04\x2c\x1f\x41\x14\x0f\x01\xe6\xa5\x9c\x14\x80\x10\x9d\x0f\x18\xa4\x40\x7c\x5a\xb3\xd2\xad\x89\x43\x5b\x3a\x35\x0b\x91\x1f\x25\xa6\xa8\x4c\xd0\x6a\xf0\x95\x04\xad\xf6\x1b\x4f\xd0\x2a\x41\xab\x04\xad\xf6\xe9\xbc\x0c\x57\x82\x56\xfb\x34\x2b\xdd\x9a\x38\xb4\xa5\x53\xb3\x10\xe4\x26\xf3\x3c\x46\x4e\xb8\x48\x65\x44\x0a\xf6\x42\x98\x1a\xc0\x5c\x80\x1d\x07\x19\x87\x6e\x27\xc8\xcb\x88\x86\x09\x22\xa7\xba\x74\x61\x22\xa2\x3c\x64\xc1\xa8\x1a\x08\x5a\x02\x10\xd5\x01\x9c\x80\xa3\xb9\xc9\xab\xe6\x83\x08\x6e\xf2\xf8\x27\x32\x6a\x43\x10\x1b\x1a\x08\x01\x20\x35\x2a\x4a\x83\x26\x8e\x6a\xfb\xc8\x76\x0f\xb7\x79\xb0\xbd\x0b\xb6\x75\x74\x24\x06\x8c\x8c\xca\x7e\x24\xd3\x49\x66\x23\x46\xb0\xdd\x34\x2a\x17\x0a\xad\x9b\x66\x08\x68\x20\xdd\x34\xa3\x20\xe3\xe0\x93\x5b\x9f\x1f\x50\xf6\x4f\x23\xa4\x58\xb8\xdb\x14\x6c\x49\x1a\x6a\xa5\x0b\x79\x2d\x4b\x99\xbb\xf1\x8a\xdc\xf8\xad\x71\xe2\x22\x93\x46\x59\x1b\xa5\x8d\x1a\x8f\x07\xa3\x4e\x21\x6d\xfa\xfa\x1e\xdf\x97\xc2\x5a\xdf\x65\x2b\xd2\xa7\xd2\x53\xb0\xa5\xfd\x49\xda\x9f\xa4\xfd\x49\x96\xf6\x27\xa3\x8f\xa6\xfd\xc9\x1b\xc2\x28\x69\x7f\x92\xf6\x27\x13\x8e\x22\xed\x4f\x66\x2c\xfb\x69\x7f\x32\x32\x54\x52\xf2\x2f\x2a\xd7\xd2\x12\x7e\xf1\x12\x64\x21\x17\x5b\xa8\x6b\x44\x4d\xec\x35\x97\x11\x93\x1e\xdb\x18\xba\xa2\x29\xfd\x29\x2c\x48\xe3\x03\x12\x81\x51\xb9\x64\x41\xcb\x22\x84\x24\xd3\xa1\xab\x20\x7a\x16\xa3\x09\xfb\x27\xe6\x2c\xa2\xdf\xa7\x20\xe7\x29\x9a\xe6\xa3\xb0\xac\x44\x88\x0d\x24\x67\x22\x82\x4c\x0a\x35\xfb\x10\xd4\x68\xfb\x70\xec\x46\xa9\x59\x86\xa6\xd0\x8e\xb6\xa9\xeb\x52\xae\x65\xe5\x44\xd9\x4a\x8c\x77\xbd\x88\x7b\x55\x2c\x4d\x16\x02\x2f\xa8\x5b\x2b\xfb\x68\x73\x57\xc6\xfa\x1e\x6c\xdf\x4d\xdf\x73\x83\x30\x09\xd8\x6b\x63\xd2\x42\xde\x63\x13\xf7\xd7\xd4\xbd\x35\x1c\xe7\xe0\x5f\x78\x2c\x4f\x16\xb2\xb0\xbc\xdc\x58\xd0\x42\xf0\xf3\x61\x61\xeb\x8d\xe6\xc0\x3a\x15\xd0\x91\xe6\x4e\xe5\xf2\x5d\x9e\xeb\xa6\x72\x51\xd0\x8e\xd3\xa5\x34\xc2\xcb\x1b\x04\xbd\x40\x67\x1d\xb9\x58\xc8\x9c\xb0\x27\x03\x66\xf9\x56\xc6\xbd\x29\xbe\xf9\x14\xe1\x39\xc0\x80\x1b\xdd\xcd\x35\x39\x65\xc1\x74\x86\x83\xa8\x3b\xc9\x9f\x17\xed\x7a\xa2\xa7\xa1\xd1\x9f\x6b\x5d\xfc\xde\xde\xb8\x7e\x5f\x0a\xb5\x1e\x52\x49\x3e\x4e\x15\xad\x83\xe5\xb3\x2e\x86\x59\xd9\x23\x0f\x84\x59\xf3\x4d\x44\x21\x9c\xb8\x6e\x37\xaa\x43\xdd\x50\x04\x4e\xd4\xca\x0b\xfd\x49\x4b\x7c\xab\xc6\x8f\x71\x48\x8d\xf8\x80\x00\xa1\x11\x9f\x69\xbe\x68\x47\x3a\xf8\xe3\x88\xb5\xf6\x32\xb0\xd7\x71\x40\x59\x10\xbf\xc3\xe0\xb4\xe7\xa2\x14\x07\xc1\x29\x47\xe8\x7d\xc4\x7a\x8e\x9e\x29\x8b\xb4\x16\x2e\x6f\xaf\xd0\x4b\x6b\x8f\x6a\x19\xcf\xc2\x8c\xb5\x96\x23\x66\x36\x0b\x7c\xd3\x49\xc0\xbd\xd4\x7b\xf7\xb7\x72\xbc\x9d\x8b\xed\x24\x1e\xc7\xfc\x3d\x71\xdf\x27\x71\x23\xc7\xb7\x6b\xf3\x96\x42\xa7\x8d\x58\x4a\x6f\xac\x83\x77\x48\x7d\x02\x95\x22\xb4\x89\x80\x51\x8c\x7e\xad\x91\x87\xcf\x2c\x7c\x42\xdf\x98\x41\x2f\x4f\xc8\x70\xec\x7f\x72\x06\x73\xd3\x8c\x1d\xe5\x78\x67\x58\x56\x45\xad\xd5\x70\xc6\x77\x6f\x03\xb5\x91\x0b\xf5\xc0\x7e\xdd\xc8\xe5\x48\xca\x99\xa0\xe9\xec\xf8\xf8\x5a\xe6\x46\x0e\x6e\xb8\x46\x3b\x78\x6a\xe1\xdb\x80\xaf\x6c\xfc\xdd\x7b\xb5\x60\x31\xd7\xb6\x46\xe4\x69\x56\x64\x64\x4a\x07\x7f\xca\x37\xdf\xb3\x50\xb9\x70\x4f\xb3\xfd\xb2\xef\xb1\x6f\x2e\xe4\x42\x34\xa5\x1b\x52\x13\xbe\xb3\xa6\xf1\x7d\xd3\xa0\x1d\x1b\x31\x70\x7e\x93\x3f\x6a\xea\x09\x9a\x7a\x3d\xa2\x12\xa9\xa7\x6b\x94\xfd\xe2\x78\x3c\x06\x41\x34\xc7\xcc\xf0\xb0\xf9\xbd\x68\x3b\x3e\xf8\x13\x69\x83\x78\xd8\xc4\xea\xba\xb3\x98\xc3\x92\x38\x74\xf6\x60\xb9\x1a\x60\x98\xe1\xcb\xc6\x3a\x69\xde\x35\x6e\x75\x88\x6f\x07\x9b\xcc\x75\xb5\x50\xcb\xc3\x5b\xc3\x31\xb6\x13\xf7\xf6\x43\x29\xac\x53\xf9\xbf\x4a\x9d\xdf\x5e\x3b\x6d\x0e\x7e\x8b\x8f\x75\x17\x76\x48\x97\x79\x66\xe2\xa9\x79\x61\x9c\x1a\xcb\x10\x46\x61\x5d\x3f\xe3\xfa\x32\x79\xf9\x4f\x9a\x3a\xd8\xf0\xf1\x92\xf9\xa5\x63\x8c\x7f\xb1\x6d\x1c\xb5\x47\xe2\xaf\xc6\xc8\x4b\x65\x6f\x59\x56\x41\xe4\x2b\x55\x2d\x83\xc0\x54\xa1\xec\x6d\x10\xa0\xdb\x34\xf0\xfd\xeb\x47\xf6\xfb\x81\xec\x37\xe6\xc7\x20\x28\xb3\x30\xa6\x1a\xe7\x89\x7e\x6a\x07\x7f\xfc\xfe\xf5\x23\x8b\x5f\x7e\x56\x87\x0f\xff\x7c\xfc\x12\x2e\x43\xe3\x5a\x33\xa3\xcc\xb9\x5d\x09\x13\x02\xde\xc7\xe7\x7c\x37\xc0\xc3\x3f\xf7\x9d\xa3\xf3\x9e\xcb\x7a\xb5\x38\x38\xad\xbe\x49\x5f\xeb\x4a\x39\x3d\x1c\x29\x3b\xbd\xe7\x71\xcc\xe2\x4f\x2e\x22\x3d\xcf\x0c\xf1\x2c\x69\x10\x5d\x13\x5f\xe5\x60\x38\x17\xc5\x23\x13\xc1\x59\xe9\xdd\x26\x8f\x1d\x76\x07\xf1\x75\xcf\x45\x30\xdf\xaa\xaa\x38\x3c\xa4\x89\x61\x41\x2c\xbe\x39\x83\x45\x9f\x25\xb0\xe8\x50\xe5\x67\x71\xf0\xa4\xc0\x37\x73\x9e\xed\x57\x16\x0d\xd5\x8d\x2a\x3f\x8f\x66\xa4\x79\x61\xbd\x1e\x58\xa2\x13\x6d\x7c\x7b\x96\x41\x01\x90\xd4\x63\x3d\x7f\xe8\x3c\x69\xf0\x7e\xcf\xe9\xb8\xd7\x74\x64\xeb\x96\x21\xee\xc5\x61\x0b\x35\x26\xa5\xde\x4f\x1c\xdb\x03\x66\x04\x4d\x33\x2e\x46\x56\xb1\x04\xc8\xa8\xbb\x00\x67\x4d\xa0\xee\xad\x74\x21\xaf\x9a\x9b\x52\xd9\xd5\xf5\xb9\x28\xd1\x58\xfb\xbb\x77\xce\x19\x75\xd3\xb8\xe1\xef\xc1\xfc\xec\xe1\xdf\xe6\xd9\x24\xb4\x9c\x82\xb2\x65\xa1\xef\xab\x7b\x61\x8a\x77\x57\x07\x37\x5e\x3f\x90\x7e\x5f\x28\x59\x16\x23\xfc\x8d\xb4\x95\x75\x07\xec\xbf\x4b\x63\x49\x19\xcf\x81\x73\xae\x76\x98\x91\x8b\x2c\x50\x4f\xc4\xb6\x7d\x13\x4c\x89\xf7\xc0\xeb\x8c\xed\xe0\xee\xc4\xff\xe7\xc8\x4c\xb3\x75\xcf\xd3\xe2\xcd\x00\xbe\x29\xd4\x9d\xb2\x91\xcf\x7b\xfb\x59\x38\x01\x2b\xf6\x5d\x87\x73\x22\x05\xd4\x4c\x0b\x5b\x46\x1b\x90\xeb\xda\x3d\x0e\x24\x9e\xf7\x7a\x0c\x64\xa1\x9a\xc1\x12\xc8\xfe\xcd\xb2\xfa\x4b\x7e\x52\x6b\xc5\x3d\xbd\x1b\xfd\xae\x05\x2b\x00\x2b\x10\xcf\x94\xcd\xec\x9d\xcb\x4e\x98\xa5\x74\x7f\xfc\xf1\xdb\x09\xfd\x3c\xf7\xf7\x6a\x38\x04\x71\xea\xee\xc7\xb9\xa6\x94\x0f\x5d\x1c\xdf\xf9\x81\x69\x3d\x1e\x68\x7d\x6c\x34\xf9\x03\x79\x56\xa6\x00\xce\x8b\x52\xe7\xb7\x3c\x87\x58\x21\x9c\xb0\x81\xce\xef\xa7\x36\xbe\x7f\x67\x7b\x8b\x46\xbf\x6e\x99\xcb\xab\x0d\x78\xb5\x4e\x56\x8e\x7b\xaa\x74\x1e\xe7\x81\x75\x11\xb4\x10\xd3\x9e\xfc\x74\x83\x83\x57\x4f\xb9\xaf\xb2\xd6\x2c\xde\x54\xa6\x0d\x92\xf4\x7c\xcf\xe8\x84\xd4\xda\xaa\xc0\x26\xee\xd4\xd8\xc6\x29\xc8\x0f\xba\x1b\x1f\x3c\xad\xdd\xb9\x3c\xef\xf4\xa6\x8f\x84\x1a\x54\x84\x04\x79\x38\xe1\xe9\xcb\xf8\x9c\x6e\x3f\xee\x30\x13\x1f\x46\xcf\xa3\x73\xbd\xd2\x76\xb0\x2c\x99\x6f\xaa\x83\x26\xca\xf1\x55\x96\x47\x94\x19\xb3\xa0\x2c\xd3\x6d\x98\xaf\x44\xfd\xae\x71\xab\x4b\x65\x73\x7d\x27\x7d\xb2\x38\x66\xe3\xfb\xa6\xae\xbb\x90\x67\x7e\x43\x81\xe6\xa0\xcb\xf4\xe1\xf4\xe8\xd6\xd8\xdf\xca\x9f\x5c\xad\xf2\xb4\x1a\x1f\xab\x8d\x0a\x10\xc3\x9b\xde\xd3\x6f\x42\x6a\x6d\x9c\x18\x0e\x11\x9e\x7e\xff\xf0\xc3\x00\xcb\x7e\xbb\x76\xd5\xce\xf8\x24\x6a\x43\xfd\x79\x68\x86\x2e\x36\x5c\x74\xf0\xef\xfb\x03\x42\xd5\x4d\xc5\x33\x6d\x27\x0f\x0b\x30\xfc\x5d\x1d\x4b\x67\x5f\x3c\xf5\x89\xce\x6f\xbd\x85\xd4\x7b\x77\xd1\x58\xea\x7d\xf3\xe2\x8c\x61\xeb\x76\x7c\xf0\x0c\xad\xb4\xd3\xd5\xe9\xb7\x1e\xc5\x44\x87\xf0\x9b\x86\xe1\x39\xd1\xc6\xdd\x6b\x13\xe0\xf7\x38\x79\x04\xc6\x2c\x03\x1b\x6a\xa3\x37\x7f\x3f\xdc\xec\x6c\x0e\xbe\x3c\x37\x0b\xa3\x1c\x7d\x8d\x86\x78\xa0\x8d\x11\x46\x05\x3e\x86\x67\x73\x24\xdd\x96\xeb\x08\x38\xee\xe8\xc8\x7f\x6e\xb5\x23\xbc\xa6\x3c\xfd\x2c\x6b\x47\x13\x96\xd7\xc1\x6a\x76\xf8\x6e\xcc\xf5\xcf\x8d\x1e\xa7\xbc\x1c\x6b\xf4\x62\xbe\xb4\xa4\x23\xc0\x44\xf9\xe2\x46\x5e\x36\x4a\xc9\x62\x44\xfc\x76\xcf\xf1\xfd\x8e\xce\x47\x76\x69\xe7\xf0\xfc\xf6\x33\xf0\x6c\x7e\x47\xb0\xaa\xc8\xb0\xf3\xfa\xa0\x9e\xd0\xba\x62\xd4\xd3\xfc\x97\x83\x02\x0a\x85\xfd\x50\x9a\x12\x8d\x09\xd8\x1b\x14\x83\x81\xc1\x38\x81\x1d\xb1\x78\x98\x1c\x3b\x10\xd8\x0f\x3d\x9e\x20\xa8\x23\x5c\x54\x48\xd1\x06\x2f\xc7\x44\x96\x14\xb0\x30\xd6\x09\x8d\x27\xb1\x51\x7b\xf0\x9a\xe6\x73\x3a\x1f\x83\x94\xc0\xe4\x78\xeb\x09\x4c\xbe\x11\x30\xf9\x3c\x89\xd8\x37\x7d\x2b\x3d\xf0\x08\x08\x86\x6c\x0a\x25\xab\xa8\x91\x62\x59\x26\x1f\x6a\x35\x9b\xac\x59\x34\xb9\x89\x1e\x07\xe7\xe5\x7e\xd2\xda\x07\x87\xb0\x79\xee\xd2\x75\x3e\x0c\xd4\x41\xf3\x67\xa3\x6f\x1e\x1d\xcb\xe3\xb5\x1c\x4b\x6d\x75\x04\x87\x97\x91\x4b\x65\x5d\xc0\x11\xb8\x93\x95\x08\x48\x9b\x11\x70\x7d\xac\xf7\xd6\x4d\x74\xf8\xde\xcd\xcb\x88\x23\x0f\xe5\x12\x73\xc3\x72\xe0\x85\x9e\x46\xae\xc5\x32\xe0\xae\xb1\x7c\xdc\xfc\xc6\x7e\x7f\x06\x57\x41\xb5\xe6\x9e\x77\xfd\x50\xe7\x83\x93\xdd\xe3\x6c\x19\xf0\xe0\x2f\xdc\x1b\x9e\x36\x17\xa5\xfc\xf8\xe5\x04\xc2\xb4\x14\x4e\xde\x0b\xbe\xb2\xac\x8d\x76\x32\xdf\x00\x81\x4b\xbd\x16\x8a\x7f\xc2\xff\x03\x31\xa6\xb5\xe5\x87\x4a\xdc\x94\xc3\x10\x83\xf0\xb1\x5d\x06\xa3\xa0\xb4\x11\x4f\x6d\x5c\x85\xe8\x13\xfb\x68\x9d\xe4\xc7\xb9\x07\xa7\x01\x1b\x97\xd4\x27\xee\x3e\x8c\x8c\x7a\x76\x39\xfc\x6b\xfb\x5d\xb0\x1c\x0f\xee\xbe\x67\x73\xa8\x95\x6e\xeb\xa6\xdb\xba\x11\x2e\xdc\x46\x48\x23\x32\x2e\x49\x9d\x6e\xd2\xac\xa8\x98\x93\x1f\xba\x9f\x8d\x29\x0a\xd6\xbf\xfb\x4d\xd8\x9a\x1f\x9b\x37\x3a\xd2\x3b\x5b\xaf\xa4\x91\x27\x8b\xc2\xd8\x1a\xca\x52\xe5\x8f\xec\x50\x8a\x17\xed\x44\x98\xf4\xb1\xb3\xad\x08\x71\x1d\x03\x07\x54\x23\x4b\x35\xf8\x53\x21\x9c\xb8\x11\x36\x65\x11\xa4\x48\x6d\xca\x22\x78\xe6\x59\x04\x57\xa2\x3c\x10\xdb\x34\x3c\x0a\x55\xbd\xbe\xe8\x39\xc6\x66\xb5\xb6\x6e\x69\xa4\xfd\xe3\xdd\x27\x8e\x36\x6c\xf3\x8f\x85\x58\x26\x6f\x26\xd3\x8c\x0a\x94\xd6\xe2\xe1\xbd\xae\xaa\x6e\x07\x39\x9e\x23\x80\xe8\x3e\xa6\x21\xbd\xf1\x4c\xaa\xc4\xe1\x7b\xad\xeb\xcd\x7f\x0b\x99\xe5\xf1\xfc\xbf\xc4\x31\xbe\xf9\x29\x16\xf9\x6d\x53\x07\xd9\xd2\x65\x1e\x54\x3c\x20\x2d\x13\x61\x99\x4a\x9d\x0f\xef\x35\x48\x35\x33\x88\x89\x52\x91\x36\x33\x2f\x32\xec\x89\x7c\x76\xe4\xbd\x38\xb9\xed\x77\x92\x02\xb0\xbe\x9d\xcb\xf3\x16\x29\xe7\x97\xbe\xf0\xe1\xe7\x2d\x12\x92\x77\xf8\xcf\xd6\x46\xc3\x8a\x9f\xf7\xe7\x39\x5b\x1b\x4d\xcc\xda\x13\x95\x53\x08\x89\x5a\x9f\x0f\x8e\xc0\x2e\xbe\xc4\xad\xac\x06\x47\x12\xb9\xc2\xed\x45\x16\x0f\x5f\xc1\x1a\xa8\xb1\xd8\xcc\x4e\xe3\xcd\x91\x84\xb0\xcf\x1f\x3a\x9c\x18\xf6\xf9\xa0\x28\xfc\x3b\x96\x74\x33\x03\xf8\x37\xbe\x6e\xf0\x7b\x80\x9e\xb7\x49\x58\x53\x6f\x62\x59\xb0\x45\xda\x9a\x8e\x26\x9c\xdd\x7b\x6c\x24\xf1\xec\xf3\x71\x79\xd6\x75\x38\x11\x6d\x4f\xd4\x45\xf5\x9d\x46\xf6\x44\x8c\xd0\x02\x22\x40\xa8\x71\x3a\x94\xe0\x8c\x93\x89\x3c\x25\xb1\x2d\x3c\x48\xaf\xf3\xaf\x27\x24\x1a\x8e\x5a\xae\x13\x5e\x41\x42\x58\x16\xa5\xfa\x6b\x54\x79\x1c\x39\x46\x85\x06\x3f\x9c\x38\xb7\xa7\x13\xc1\xc4\xa9\xf8\xf8\x0d\x31\xdd\x59\x03\x4f\xd2\xad\x2e\xea\x4a\x10\x8e\x06\x7b\x9a\x66\x57\x41\x32\x1e\x93\x14\x29\x26\xc7\xff\x82\xe1\xb0\xf4\xd8\x5f\x3c\xf2\x17\x8d\xfb\xa5\x47\xfd\x42\x1f\x89\x94\x4b\xa6\xc4\xfb\x12\xa3\x7d\x81\x58\x5f\x2a\x82\xa0\x68\x21\xf2\xd4\x50\x63\x7c\xa9\x9a\x97\xa6\x0e\x0e\x67\x12\xe9\x89\xac\x08\x46\x73\xa8\x3d\x1f\xd1\xf1\xf7\x76\x48\xc2\xe2\x9e\xce\xc5\x18\x4d\xe5\x57\xf1\x27\x3a\xee\x09\x2f\x2c\x98\x4d\x32\x17\xc4\x4d\xf2\x50\x5e\x37\xa8\x37\xe2\x0d\xcb\x64\x47\xbd\x84\x5d\xec\xc4\x6f\xc5\x71\x2e\x75\x82\x26\x3b\xe3\x5d\xe8\x84\x7b\xc1\x6e\xa8\xa1\x57\x39\x01\xf3\x98\xfd\x18\x38\x85\x7b\x79\x13\x67\x52\xe6\xc5\x4d\x06\x9f\xc2\x97\x36\x19\x7d\xe0\x17\x36\x27\x17\x05\xe8\xaa\x26\x24\x09\x08\x98\x3d\x0d\x4c\x25\x35\x38\x96\x50\xba\x27\xb2\xe7\x6f\x34\xc1\xf4\xf3\x61\x51\x9c\x56\xbe\x84\xd3\x60\x8b\xa4\xf9\x38\x9c\x88\xba\xa7\x13\xf9\x66\x46\x72\xc4\x6d\x7b\x3c\x93\xc3\x3b\x7f\x42\xeb\x9e\x4e\xe7\x1f\x1e\x4d\x78\x7d\xea\xe1\xd1\xb8\x78\x34\x31\x76\x4f\x6f\x63\x93\xe7\x49\xa4\xdd\xd3\x5c\x76\x2b\xc9\xd3\x3a\xab\x0d\xdd\x48\xe2\xee\x9e\xc8\x62\xe2\x4f\xe4\xfd\x7c\x68\x94\xc3\x73\x7f\x62\x6f\xb0\x4d\xd2\xac\x90\x12\x7e\xf7\xf4\x63\xc6\xb5\x8c\x27\x0a\x7f\xde\xde\x6c\x23\x07\x06\x13\x8a\x3f\xef\xce\xc7\x2d\xc3\x09\xc6\x7b\x22\xcb\x90\x2f\xe1\xf8\xf3\x81\x91\x26\xd6\x97\x80\x9c\xd1\xe4\x78\x42\x72\xb0\x41\xda\x52\x8d\x26\x2a\x7f\xde\xa3\x6f\xb9\xc6\x12\x97\xf7\x44\x5d\x30\x6f\x22\xf3\xe7\x43\x23\xc9\xf5\x8c\x4f\xe7\x69\x6b\x35\x96\x00\x7d\xf7\x94\x67\x57\x48\x5a\xcb\xb1\xc4\xe8\x3d\x51\x97\x32\xea\xc4\xbb\x78\xaa\x9e\xa8\xca\x22\xcc\xe6\x60\x82\xf5\x9e\xc8\x81\x79\xd4\x84\xeb\xcf\x87\x47\xc1\x7a\xc4\x04\xec\x78\xc3\x91\xcd\x33\x29\x41\x3b\xde\xea\x70\xc2\x76\xbc\x2d\x52\x02\x77\xb8\xd9\x93\x6d\xd6\x3d\x89\xde\x7b\x3a\xdd\xbe\x3a\x6d\x7c\xbc\x7b\x43\x4a\x02\x79\xb0\x7f\x9a\xfa\x3c\x9c\x58\x7e\xf7\xfb\xe1\x04\xf3\xbb\xdf\x3d\x89\xe6\x9f\x8f\xd9\x33\x11\x6b\xdd\x54\x5e\xab\x46\xfa\xfa\x81\x14\xf6\x3d\x9d\xc4\x32\x4e\x21\x05\x63\x29\xef\xc1\x01\x46\xb1\xb6\x23\x29\xf1\x9f\x0f\xc7\xc3\x09\xe4\x14\xf9\xdb\x17\xa8\x06\xda\x97\x32\xff\xf9\x30\x67\x8b\x34\xc7\x52\xeb\x3f\xef\xd1\x37\xd3\xc4\x54\xfb\xdb\xe7\x4f\xb4\xe9\x1f\x49\xc5\x0f\x36\x46\xdd\x21\x87\x87\xde\xf9\x53\xf6\x6f\x9f\x7c\x2b\xb1\x9f\x67\x1d\x2a\x39\x5a\x0a\x60\xef\xa1\xf3\x08\xf1\xf0\x94\x0c\xe8\x69\x92\x20\x0f\x62\x29\x01\x5e\xe3\xc0\xa8\x99\x8f\xf3\xb2\x31\x67\x58\x96\xd8\x9e\x18\x07\xee\x1d\x21\x59\x63\x7b\xe2\x64\x8f\x7d\x3e\x50\x24\x8b\x6c\x4f\x48\x36\xd9\xe7\xbd\xc1\xd3\x82\x66\x75\xce\x80\x2c\xb3\xbb\xe7\x89\xd9\x66\x7b\x02\x43\x6d\xf6\x5f\xa2\x64\x9f\xed\x89\xba\x81\xd9\x6f\x1f\x9a\x60\x7a\x56\xda\xe7\x9d\x50\x2c\xc7\xf3\x37\xc8\x73\x45\x2e\x7d\xd0\xd3\xdb\xd1\x35\x68\x89\x84\xd0\xfe\x32\x76\xc9\x84\x9e\xd8\xaa\x2e\xe3\x96\x50\x88\xd0\x33\x47\xa3\x64\xac\xd2\x0a\x3d\xb1\xd4\x45\x96\x2c\xc2\x10\x71\x4b\x32\x6c\x07\x1b\x20\x30\xec\x12\x0d\x3d\x05\xc9\x0c\xa3\x64\x43\x94\x7e\x39\x25\x1c\x22\x74\xcc\x17\x55\xb0\xb4\x43\x4f\x4c\x49\xe5\x81\x94\x39\x82\x0e\xb0\x13\x4a\x49\x88\x9e\xde\x8e\xa1\x4e\x9b\x82\x43\x94\x36\x05\x69\x53\x30\xd1\xa6\x00\x2e\x61\xd1\x13\xe3\xba\x09\xb9\xa4\x45\x4f\x8c\x29\x66\x94\xb8\xe8\x09\x2b\x75\xf1\x7c\x8c\x98\x54\x63\xf2\x3c\xf9\x0d\x00\xb2\x34\x42\xbc\x15\x3d\x58\x9f\x98\x15\x64\xb0\x74\x06\x34\xb0\x91\x52\x1a\x3d\x51\x25\x60\xb4\xb4\xc6\xf3\x41\x9d\xc4\x11\xed\x2b\xbd\x01\x0f\x71\xbc\x14\x07\xdc\x5c\xc4\x44\x16\xbe\x52\x1d\x60\x73\xd4\xb0\xb4\xc1\x12\x1e\xbb\x87\x06\x4b\x79\x3c\x1f\x92\x87\x6b\x07\x4a\x7b\xf4\x74\xa2\xb3\x93\xd1\xd2\x1f\x70\x6b\x9e\x52\x20\x70\x7b\x67\x90\x8c\x67\x24\xd5\x3f\xdc\x6d\x8a\x30\x99\x5f\xe6\x9c\xa1\xd2\x24\xbb\x27\x62\xe5\xd6\x19\x29\x59\xd2\xd3\x89\x94\x84\xa7\xa4\x09\xdc\x1e\xb5\xc4\x09\xdc\x70\x12\x20\xaf\x00\xf9\x4b\xa5\x3c\x6f\x92\x34\x49\xfe\xd2\x29\xcf\x1b\xa5\x5c\x9f\xf4\x97\x52\xc1\xdb\x1c\x2d\xad\x02\x37\xe7\x4f\xf5\x0f\x36\x49\xd3\x48\xc3\x25\x58\x76\xcf\x8c\x95\x62\xd9\x7b\x6a\xa8\x24\xcb\xf3\x71\xfb\xf4\x96\xd7\x1b\x76\x36\xc1\x06\x29\x2f\xd3\x19\xe6\x3b\x78\x3b\x79\x99\x62\xa7\x52\x9a\x20\xa1\x28\x4d\x23\x8c\x95\x9a\xe9\xe9\xcd\x04\x8b\xbd\x39\x88\x10\xdd\xae\x91\x4b\xda\x80\xed\xd2\x98\xb1\xb9\x89\x12\x8c\xed\x2d\x99\xd3\xd3\x89\x18\x9b\x58\x52\x27\xac\xdd\x09\x98\x82\x12\x0b\x31\x41\x9c\xa5\x27\xa0\x81\xc0\x5a\xde\x47\x6a\xe5\x06\xf7\xaa\x14\x26\xe9\x2e\x25\x7c\xac\xf2\xb2\xb1\xea\x8e\x50\xb9\xca\xa7\xad\xba\x06\xbf\xa9\xe0\x2a\x58\xfb\x4d\x95\xaa\x8a\xd5\xdc\xff\x35\xce\xb6\x84\x96\xbc\x6b\x62\xa4\x1d\x84\xaa\x94\x35\x69\xcc\xa8\x75\x8e\x31\x44\xfb\x9f\x21\x03\x8c\x54\x3c\xa3\xbf\x03\x1a\xdc\x50\x94\x6a\x18\x9d\x23\x7c\x3c\x5a\x2b\xca\xd4\x77\xba\xee\x3a\xb4\x10\x5f\x96\xd9\x7b\xb5\x08\x62\xb4\x78\x15\x81\x8e\x51\x8f\x64\xf4\x67\x9b\x1b\x55\xbb\xeb\xc1\x50\x1a\x6f\x75\x25\xa0\x52\x09\x65\x6a\xfd\x86\x97\x36\xaf\x94\x0c\x0e\xd4\x5d\x15\x6d\x2f\x45\x01\xaf\x34\x53\x40\xb9\xe1\x40\x98\x05\x9f\xc5\xf5\xde\x6a\xf0\x8a\xa4\xb7\xe2\x08\x49\x98\x68\x95\x46\x48\xcb\x4e\xa9\x30\x42\x6e\xc8\x53\x59\x84\xd4\x4e\x24\x76\xf6\x55\x12\x21\xaa\xe9\x38\x0c\xea\xe7\x2b\x4f\xd5\x10\x5f\xc5\x10\x1a\xdf\x8d\x55\x31\xa0\xf0\x5d\x3c\x79\xa5\x6d\xe4\x49\x6b\x44\xaa\x08\x12\x45\xf6\xbd\x55\x40\xfc\x15\x40\xbc\xeb\x34\x5e\xf9\x83\xb2\x48\x94\x43\x46\x82\xcf\x0f\xda\xb3\x8e\xfb\x82\x7c\x8e\xb2\xa3\x8a\x22\xb5\xa2\x07\x8d\xf7\x28\xbe\x12\xea\x06\x3a\x62\x1a\x73\x92\x27\xc1\x77\xf6\x18\x45\x66\x3c\xa7\x89\x7e\x79\x18\xad\xd0\x71\x44\x78\x14\x9b\xff\xce\x94\x69\xce\x06\x68\x79\x2f\x3b\x52\x66\x98\x78\x82\x13\x17\x15\x7b\x95\x33\x41\x7b\xd3\x7d\xb3\xa4\x93\x1a\xc0\x2d\x4b\x3b\xa1\xc1\x4e\x67\x90\x93\x19\xda\xa9\x0c\xe0\x5f\xa7\x9c\xc6\xf8\x4f\x62\x08\xa7\x30\x44\x87\x36\xc5\xe2\x46\xa8\x0c\x4f\x3b\xbe\xa1\x68\x3c\xbf\xa8\x0e\xa7\x79\x22\x09\xa9\x37\x21\xea\x31\xf7\x1d\x68\x95\x8b\xb9\x2a\xfa\xd8\x7b\x73\x5a\x25\x0b\x3c\x2f\x6c\xbc\x6f\x26\x6c\xd2\xc6\x92\x9c\x7a\x7b\x20\x5c\x8a\x4d\x36\xa9\x1b\x3b\xf9\x4a\x20\x16\x95\x80\xde\x93\x05\x83\x13\xc0\xbb\xb0\x93\x45\x05\xd0\x6f\xb8\x02\x87\xfe\x6f\xcc\xae\x73\xee\x9f\xc2\xd9\x36\xd0\x3b\xa6\x20\xbf\x41\xf7\x48\xc1\xb6\xb1\xbb\xa2\x93\xb1\x32\xf9\x06\x28\x99\x93\xa9\x80\xee\x78\x70\xcd\xdb\x90\xaf\x2a\x04\xc9\x2b\xe4\xad\x06\x41\x73\x78\x50\xaa\x40\xc4\x38\xba\x1a\xae\xfc\x70\xc4\x3d\xbf\x27\x79\xe4\x5c\x0f\x43\x68\x55\x1d\x8e\xeb\x03\xf4\x56\x71\x38\xe6\x70\xfc\xdc\xe7\xad\xd8\x70\x7e\x1b\x13\x42\x65\x86\x53\xa2\xef\xe4\x61\x6b\x69\xea\x4d\x88\xa7\xc2\x02\x89\xad\x69\x95\x15\x68\x87\x86\xb4\x8a\x0a\x31\x2c\x0a\xb9\x8a\xc2\xdb\x3e\x73\xf7\x57\x4a\x98\xd9\xc9\xe8\x68\x55\x04\xff\xaa\x8f\x57\x43\x20\xf1\x3b\xa5\x0a\x02\x71\xd2\x28\xd5\x0f\x88\x4d\xf9\xab\x1e\x44\xf1\xc3\x7b\x2b\x1d\xf8\x97\xc0\x57\xe1\x80\xb2\x08\xa4\xca\x06\x44\x99\x9b\xd1\x69\xa4\x7f\xfe\x7d\xd5\x0b\x46\x77\x2a\xde\xb5\xf1\x55\x2c\xa0\x2c\x4d\x94\x09\x75\xe1\xea\x94\xa0\x4a\x02\x66\x6a\xb4\x1a\x01\x29\x68\x07\xa9\x42\x40\xc3\x39\x40\xf5\x01\x5a\x83\x91\xcc\x1a\xb9\xda\x00\xad\xb5\xf1\x2a\x03\xb4\x36\xc8\xd5\x05\xe6\xb7\x31\x24\x54\x12\x38\xee\x5e\x2e\x01\xf5\xee\x21\x62\x75\x80\x28\xaa\x6b\xb8\x22\xc0\x58\x35\x00\x52\x25\x00\xef\xc7\x8e\xe4\xed\x3f\x9a\x7d\x88\xc9\x73\xbe\xfc\xfc\x53\xdb\x1a\x4f\x3e\x7e\xef\x7a\x40\x79\xf8\x49\xa6\x89\x92\x7f\x7f\x66\xb8\xc8\x97\x6b\xdf\x3f\x8b\x40\x8e\xfd\x63\x6e\x09\x3d\x39\xf5\xe3\x30\xe7\x70\x1e\x7d\xff\xbc\x91\xf2\xe7\x9f\x65\x64\xd6\xd9\x04\x37\x79\x73\xe2\xcf\xf6\x20\x99\x90\xff\x3e\xea\x51\x32\x90\xf3\x1e\x3b\xde\x03\xf2\x54\x42\x29\x2d\x39\xe9\x2c\xc1\x54\x96\xe0\x51\x60\x47\x68\x0a\x4b\x6e\xfa\x4a\xe4\x4c\x78\x47\x68\xda\x4a\xc6\x14\xa0\xe9\x2a\x91\x54\x95\x50\x9a\x4a\xe0\xd0\x7e\xff\x05\x6a\x7a\x4a\x7a\x6a\x4a\x70\x12\xb1\x94\x94\x34\x8d\xfd\xfc\x69\xd2\x9c\x40\xb9\xe9\xcf\x57\x27\x70\xf2\xd0\x73\x53\xe9\xf2\xf3\xcf\xb3\x54\x51\x16\x92\x77\x9e\xd9\x23\x2f\x59\x2d\x27\xd7\x3c\x2c\xde\x59\xd2\xce\x59\x60\x3e\x79\x2e\xe3\x07\xe5\x91\x67\xf3\x3e\x33\x7f\x3c\xbb\x3f\x6e\xde\xf8\xa3\x8a\x1a\x23\x57\x3c\x43\xd2\x70\x10\x30\x17\xc3\x0e\x34\x4e\xcd\x07\x7f\xbe\xc6\x31\x01\xe6\x04\x98\xbd\x2f\x24\xc0\xdc\x11\x2b\x6f\x3b\x18\x98\x0d\xe5\x6b\x07\xa7\x91\x99\xa7\x1d\xcf\xd1\x8e\x4a\xe2\x0c\x12\xc8\xc5\x4d\x0d\x17\x2d\x24\x96\x70\x17\x7b\x34\xf7\xba\x77\x20\x9e\x9c\xeb\x14\xee\xf5\xe6\x5a\x3f\xb2\xf3\x92\x92\x5b\x9d\x76\x14\xef\xcd\xa9\x4e\x6a\x26\xc2\xf5\x62\x4a\x0e\xf5\x48\x41\x2e\xa3\x79\xd3\x3d\x39\xd3\xbd\xdc\x36\x92\x2b\xfd\x88\x7e\x72\x6f\x6e\x74\x52\x2b\x84\x9c\xe8\xa4\x76\x66\x98\xa6\xc0\x93\x9b\xf7\xe8\xe7\x94\x67\x7c\x36\x7e\x94\xdc\x02\x63\xb9\xcc\xc3\x33\x0f\x78\xf2\x97\x1f\x51\x70\x09\xf9\xca\x69\x47\x8b\x40\x9e\xf2\xc4\xec\x7b\x8f\xf9\x52\x72\x92\x72\x90\x13\x27\x82\x96\x7b\x9c\x76\x59\x87\x96\x73\x9c\xd6\x96\x37\xd7\x38\x60\xcf\x8f\x92\xad\x67\x3c\xaf\xb8\x3f\xa7\xb8\x27\x9f\x38\x41\x7f\x18\x55\x8f\x06\x57\x7a\x3f\x73\xdc\x11\x33\xdb\x33\xde\x94\xc0\xe2\x70\xf7\x29\x81\xc5\xde\x63\xe3\x58\x2c\x56\xee\x89\x88\x99\xc6\xfc\x02\xef\x4b\x13\x7e\x96\x31\x31\x67\x6d\x99\xa3\x99\x1b\x28\xe5\x77\x0c\x66\x22\xa5\xe7\x3e\x22\x43\x01\xe9\xb8\xf1\xf6\x22\x2e\x50\x84\xdc\xe8\xd4\xf0\xad\x91\x73\x5d\xcf\xf2\x8e\xfe\x6c\x2b\x51\xdb\x95\x0e\x49\x30\x6b\x96\x83\x0c\xe1\x31\xbd\x64\xd6\x1d\x56\xdf\x63\x32\xee\x6d\xbe\xf2\xc9\x97\xa7\x85\xb1\xb5\xbb\x68\x5b\x1f\xfc\xa1\xed\x16\x5e\x2c\x27\xec\xea\xab\xdc\x70\xb3\x1c\xb9\x85\xe1\x5b\xb1\x80\x39\x1b\x19\xde\xe0\x4f\x4f\x5b\xe3\x97\x3d\x8e\x8d\x52\x2c\xe5\x61\x9f\xe0\xe8\xf0\x86\x38\x71\x84\x0b\x49\x9f\x7b\x98\xfb\x64\x75\x07\x76\xe6\x57\xa0\xe3\x16\x8b\x20\x2e\x77\xa2\x6c\x22\xb4\xf0\xb3\xd1\x23\xbb\x2f\x9a\xfd\xdd\xc6\x42\xfe\x2a\x1f\xbd\x01\x12\xa7\x03\xe0\xb4\xf3\x34\xa0\x41\xfa\x39\x1a\xfd\x0c\x2d\x16\xac\x26\x62\x66\x5a\x34\x17\x7d\xcd\x90\x88\x2d\x60\xa6\x81\xa8\xac\xe8\x1b\x18\x5a\xac\x15\x71\xbe\xb1\x60\x22\x28\x1c\x19\x09\x18\x02\xa6\x9e\x1c\x14\x04\xb4\x49\x0f\xfc\x89\xbe\x9a\xa4\x70\x1e\xe2\x62\x76\x5b\x98\xa4\xf4\x46\x1b\x9d\x9d\xd2\xf3\x9f\xaa\x8d\x8e\x66\x10\xed\x11\xd1\xf9\x61\x88\x51\x1b\xbd\x96\x6e\x25\x9b\x83\x0c\xe2\x63\x1f\xf9\x50\x6b\xe3\xc2\xb2\x6f\x8c\x81\xfb\xec\xe8\x67\x66\x03\x90\x0b\x18\x0c\x5d\xe4\xa2\x8b\x88\x07\x9a\x71\x5b\x1c\x87\x6a\x3d\xc1\xc9\xe4\xe8\xd0\x8d\xd7\x45\x86\xc6\xc5\x31\x42\xc2\xe8\xa1\x52\xcc\x0e\xb0\x90\xa9\x0c\x0e\x9b\xca\xe0\xb8\x36\x7a\x54\x1b\x18\xa6\x86\x05\xf8\xe3\xbc\xc0\x09\xea\x67\xac\x18\x23\x90\x1f\xee\x05\x5d\x31\x2c\x6c\x1f\x5c\x37\x5e\x9c\x3a\xbe\x7e\xcc\xd8\x74\xc6\x12\xc2\xf1\xe8\xac\x60\x52\x34\x06\x7d\x72\x2e\x81\x22\xce\x41\x26\xa1\x43\xd6\x9e\x92\xb2\x27\x77\x72\x76\xca\x9e\xfc\x30\x15\xa0\x0f\x42\x63\xb0\x47\x5a\x58\x95\x19\x0d\x26\x8c\x9d\x45\x93\x70\xc3\x98\x2a\x2b\xa5\x5a\xab\xf1\x8c\x53\x19\x2b\x6b\x62\x86\xf1\x3b\xb4\xfc\xd2\x9e\xcf\x88\x69\xd1\x35\x32\x6f\x8c\x72\x8f\xef\x75\xe5\xe4\x43\x94\xc2\xec\xa2\x2c\xf5\xfd\x95\x51\x77\xaa\x94\x4b\xf9\xc1\xe6\xa2\x14\xbe\x2c\x7c\x19\xa4\x3e\x72\x51\x8b\x1b\x55\x2a\xca\xcc\x22\x9a\x5b\x14\x24\x4d\x04\x5c\xa0\x01\xf5\x2e\x72\x35\xa2\x30\x9a\x70\xed\x7e\x1e\xa3\x25\xcb\x58\xdd\xb3\x8d\x77\x21\xe8\xdc\x52\x1b\x9d\x7f\xd6\xcd\x78\xd0\x75\x86\xb9\xd9\xba\xf3\xff\xaf\x5a\xb7\x95\xae\xfc\xe1\x5b\xd8\x88\x4d\x53\xbd\xb3\xbf\xf8\x22\xe0\x33\xf0\x1a\x05\x3d\x4c\xa6\xed\xff\x37\x5d\x6d\xbe\x2f\xf2\x57\x7d\xf7\x84\xae\x66\x93\x7d\x94\x95\x9f\x54\xd5\x3c\x7c\xf1\x27\xea\xcd\x40\xb5\x51\xca\x3b\x49\x82\x49\x90\x7c\x19\x3d\x5e\x42\x8d\xd5\xa8\xf3\x44\x2b\xb0\x1a\xf5\x85\x23\x33\x1a\x25\x2b\x8c\x7b\x55\x15\xfa\xde\x4e\xb0\xaa\xcb\xb5\x15\xef\x8d\x2c\x64\xe5\x94\x28\xaf\x6b\x39\x98\x33\xfd\xf5\xc0\x89\x13\xf7\xba\x0b\xea\x6e\x12\xe3\xa4\x5e\xf0\x26\x68\x3d\x1e\x16\xf1\x3e\xb2\x11\x72\x73\x37\xbc\x21\xf1\x8e\xba\x14\x37\x72\x38\xd3\x1f\x06\xdb\x62\x44\x21\x85\x86\x63\x8c\xa3\x7f\x0a\xf2\xf7\x69\xcf\xd1\x4f\x18\xdd\x0c\xf8\x24\x6d\x1c\xfc\x1f\x7f\x2d\x7c\xe0\xfe\xd8\x23\x1a\x8f\x8b\xf1\x83\x76\x6f\x14\x13\x08\xd2\xfd\x66\x9e\x02\xca\x49\x47\x30\xe3\x20\xfc\xb8\x27\x30\x3e\x90\x3d\xab\xba\x0a\x7e\xf0\xec\x5f\x45\x2f\x58\xf6\x7e\x0e\x06\x8e\xfd\x23\xf2\x83\x61\x0a\x5e\xf4\xe3\x44\x0a\xe8\x25\x8e\x76\x0c\xe4\xc6\x19\x2c\x0d\xcc\x52\xc4\xcd\x0b\x5e\x69\x11\xd1\x1e\xb0\x4a\x6a\xc4\x07\x4e\x49\x8d\x44\xb8\x1b\xe7\x15\x34\x1a\xe8\x24\x5d\x73\x86\x40\x26\x69\x02\x70\x50\x49\x5b\x61\x2a\x88\x9c\xd4\xf6\x0d\xfe\x54\x8b\xc6\xbe\xd6\x7b\xc3\xf2\x5a\xeb\xe2\x9b\x5c\xd7\xa5\x78\x7d\x4d\x7d\x6c\xdd\x72\x5d\x39\xa3\xcb\xf2\x30\x8f\x79\x8d\x6e\x55\x69\x27\x46\x99\x66\x56\x38\x63\x2d\x9d\x28\x84\x13\x3f\xc2\xb7\xda\x01\xd9\xf3\x7e\xe7\x62\xa1\x2a\xe5\x06\x0f\x7b\x28\x5a\xa0\xd2\x85\x7c\xe7\x69\x87\xda\x56\xf7\x9c\x5c\x48\x63\x64\x71\xd9\x6c\x66\xeb\x3a\x5f\xc9\xa2\x29\x55\xb5\xfc\xb8\xac\xf4\xf6\xcf\x1f\x1e\x64\xde\x50\x1c\xb3\x44\x0f\x22\x76\x46\xd6\x8d\x91\x9e\x96\x04\x3f\x81\x5b\x0b\x97\xaf\x3e\x3c\xd4\xa6\x8b\x1c\x07\x12\x18\x41\x19\x92\x78\x83\xeb\x08\xcc\x94\x94\xf1\x4e\xf2\x3a\xda\x8c\x50\x1c\x88\x4b\x9f\xac\xc3\x36\x5c\x07\x9c\x10\xc6\xdc\x77\xc4\x1e\x25\xe6\x74\xdf\x11\x2f\x8f\x1a\x3d\x07\x53\xf7\x7c\xbf\x68\xc0\x4b\xe0\x59\xf8\xfe\x4b\xc8\x1c\xb4\xd2\xd5\x46\x59\x24\xc1\x4a\x82\x35\xf2\x6a\x12\x2c\x64\x0e\xc0\x4e\xee\xa5\x5a\xae\x08\xc9\x04\x33\x56\x0a\x3c\xfa\xe1\x4a\x86\x66\xc6\xda\x5a\x7f\xc2\xc3\xdd\x47\x7a\x1f\x04\xa6\x8e\xba\x2a\xfd\x27\xc5\xc1\x51\x88\x32\xdb\x40\xc2\x6b\x59\xb6\xa5\xd1\xbe\x49\x43\x93\x5c\x40\xc4\x13\x9c\xea\x28\x69\xfd\x83\x94\xb4\x7e\x4f\x09\x4e\x25\xc1\x3a\x44\x49\xb0\xf6\x9f\x9f\xab\x60\x81\x9d\xd0\x9b\xa7\x4e\xeb\xc5\x6b\x4b\x4e\xc2\x26\x71\xa2\xfb\x6a\x5d\xfc\x70\x7e\xa5\xdd\x27\x6f\x66\x7b\x2a\x34\xd4\xc6\x12\xf4\xcb\x4a\x97\x2d\x9e\x02\xe6\x43\xaf\x8c\xab\xa9\xb8\x96\x22\xe3\x59\x8b\x2c\x4c\x35\xf2\xad\x46\x70\xc7\x3c\xeb\x91\xf1\x2d\x48\x16\x3a\x62\xae\x25\xc9\x98\xd6\x24\x63\x58\x94\x8c\x6b\x55\x32\xae\x65\xc9\xd8\xf3\xd2\x4a\xe7\xa7\xd1\xd8\xa2\xc3\xc4\x0b\x14\x3f\x34\x64\x06\x27\x04\x98\x5f\xe8\xa5\x6d\x90\xd3\x94\xb8\x96\x35\x0b\xf8\x6a\x3b\x5d\xeb\x52\x2f\x1f\x7f\x9d\xf4\x6e\x0f\x7a\x29\x66\x6f\x54\xc9\xc5\xd4\xd3\xc5\x4b\x20\xf0\x03\xf9\x99\x26\xc1\x55\x0c\xc0\x93\x7c\x4c\x1d\xa5\xad\xf0\x41\x4a\x5b\xe1\x9e\x8e\xe9\x63\x42\x81\x4a\x28\x48\x09\x30\xcd\x70\x4d\x19\xf2\x0b\x28\x28\x81\x38\x1c\xfe\x62\x6c\x25\x61\x10\x82\xdd\x15\x00\x2c\x2c\x02\x3c\xa2\x1b\x4d\xb2\xff\xa3\x72\x2a\xf9\x40\x08\x94\x7c\x20\x71\x06\xda\x51\xf2\x81\x90\x28\xf9\x40\x7c\xef\x24\x1f\x08\x71\xc8\xc9\x07\x92\x7c\x20\xc9\x07\xb2\x4f\xc9\x07\x92\x7c\x20\x91\x07\xd7\x51\xf2\x81\xbc\xa2\xe4\x03\xd9\x7f\x3e\xf9\x40\x0e\x0c\x33\xf9\x40\xbc\x2f\x24\x1f\xc8\xb3\x47\x23\xf8\x40\xbc\x8f\x9c\xb6\x9c\xc5\x48\x86\x5b\x4f\xe7\x34\xdb\xe5\xcf\x92\x47\xe4\x0c\x42\x36\x5b\xa4\x25\x7f\x16\x5b\x28\xeb\x39\x96\xbd\x16\x33\xfb\x64\x63\x0f\xca\xfc\x59\x16\xf6\x46\x54\x03\xc5\x68\x02\x2a\x81\x9e\x91\x16\xac\x0e\x0e\x66\xa2\x05\x57\x03\xcc\x40\x3b\x99\xa2\xa6\x67\x9d\x05\xd6\x04\xcf\x36\x0b\x27\xa6\x46\xb3\xcc\x82\xcb\x03\x65\x97\x05\xdb\xc6\xb2\xca\x4e\xb6\xf2\xe4\x4c\xb2\xc0\xc2\x63\x19\x64\x93\xc2\x7d\xd5\xf8\xec\x15\x2e\xe9\x41\xff\xe8\x3c\xd9\x60\xc9\x08\x6e\x18\x42\xb5\x75\x9a\xaf\x9a\xb2\xbc\x6e\x79\x92\x0b\xe6\x8e\x8a\xa7\x62\x7c\x76\xa5\xdc\xfb\x5e\x3d\x4e\xfb\xd1\xbe\xa2\x10\xc4\xbd\x11\x59\xaa\x68\xe0\x3f\xd7\xeb\xb5\xa8\x3c\x82\x71\x8a\x81\x79\xaa\x56\x10\x07\x05\x5d\x96\x9b\x22\x6b\x1e\xb1\x7e\x05\xa7\x55\x5a\x0d\x0b\xdc\x3f\xc7\xaa\x63\xc1\x73\x03\x82\x2e\x40\x96\x07\x04\x4b\x71\xce\xec\x04\x4f\x73\x8e\x9a\xb0\x8e\x50\xc7\x1b\xe2\x74\x83\x5d\x45\x58\x75\x0b\x1e\x87\x70\x2a\x5c\x30\xd7\x90\x51\xe5\x82\xd5\x13\xbe\x86\x58\xad\x0b\xc6\x4a\xf2\xea\x5d\xf0\x56\x94\x59\xf3\x82\xb9\xa8\x70\xdd\x0b\x66\x3f\x78\xed\x8b\x23\xf1\x0e\x54\x01\x83\xc1\x3a\x78\x15\x8c\x64\x2a\x7e\x34\x53\x01\xf9\x42\xc8\x37\x22\x7d\xf5\x31\xe0\x6d\x1a\x01\x92\xfa\x31\x57\x74\x58\xba\x85\x63\x44\x01\x43\x85\x0b\x61\x7a\x98\xe1\x51\x66\x47\x19\x1d\x62\xc4\xda\xc8\x85\x7a\x88\x0e\xc6\x49\xd5\xf7\x77\x63\x48\xab\x13\xf4\x28\x4d\x54\x5b\x77\x46\x94\x83\x96\xad\x63\xa4\x2b\x83\x1f\xa5\xcd\x52\x2d\x64\xfe\x98\xfb\x32\xf3\xd3\x79\xa5\xd6\xd6\x5d\x3b\x31\x5e\xc4\x07\x6d\x34\x6b\xab\x61\xd2\x12\xd6\xf3\x8a\x9f\x11\x5c\x0f\xfb\x34\xcf\x60\x36\xd0\x16\xae\x9c\xab\x7f\x91\xc4\x28\x30\x7c\x52\x57\xda\x12\xdb\xce\x78\x13\xb4\x19\xff\xbf\xa5\x28\x46\xdc\x65\xaf\xe9\x68\x31\x45\x28\x82\xcb\x82\x63\x7c\x8e\xd4\x1b\x2f\xe2\x86\x80\x91\x9e\xbf\xd0\x7e\x12\x2c\x61\x93\xc7\xdb\xd4\xd3\xd6\x9e\xf4\x17\x40\x7b\x4e\xa2\x7a\xfc\x42\xde\xec\xb4\xf1\x1d\x50\x6c\xe6\xcb\xf7\x40\x66\x79\xb8\xb8\x6d\x6e\xa4\xa9\xa4\x93\xf6\x42\x55\xee\x42\x9b\x8b\xae\x89\x9f\x32\x67\xc8\xcb\x6b\xf3\x95\x9c\xb4\x38\x20\x1a\x9d\xbb\x59\xa3\x29\x34\xb2\xcb\xeb\x6b\x9d\xdf\x9e\xb1\x4e\x4e\xdc\xfb\x82\xe6\xc1\x5a\xc0\xc3\xb5\x91\xd7\x8e\x52\x89\x2d\xc1\x37\xd2\x4b\x09\xbe\x0d\x75\x90\xe0\x5b\x4f\x09\xbe\x25\xf8\x46\xa1\x73\x34\x80\x09\xbe\x0d\xd1\x0c\x75\x72\xe2\xde\x17\x34\x0f\xd6\x8a\x1b\xe4\x95\x65\xa5\xba\x93\x95\xb4\xf6\xca\xe8\x9b\x68\x9e\x3f\x1a\xc2\x43\xe3\x45\x01\x64\x37\x9f\x0b\x1d\x48\x14\xb4\x50\x65\x63\xe4\xb7\x95\x91\x76\xa5\x4b\xc2\xa7\x62\xf7\x31\x11\x91\x23\x23\x4a\x6c\x11\xe9\x5a\x0b\x5c\x14\x18\x41\x42\x1c\xc2\x41\x8e\x47\x39\xb6\x85\xd1\xe2\x51\x4e\xf7\x01\x84\x88\xa1\x43\xe6\xbd\x31\x2a\x2a\xa4\x23\x42\x70\x1a\xe9\xb6\x14\xb0\xa3\x1c\x1b\xca\xb0\x9f\x11\x6c\x27\x82\xfa\x26\x0b\x95\x27\x99\x63\x80\xc1\x54\xa5\x9c\x12\xe5\xa5\x2c\xc5\xe3\xb5\xcc\x75\x45\xc9\x6e\x3e\x9d\xc2\xae\xa5\x51\xba\x98\xc1\x40\x6c\x93\xe7\xd2\xda\x59\x58\x31\x00\x85\xcf\xc4\x8e\xfd\xd0\x9a\xe2\x94\xe2\xec\xd4\x5a\xea\xc6\x9d\x5c\x80\x88\x43\x8e\x76\xf9\x73\x33\x8f\x31\x6e\x00\x80\xc1\x43\x5d\xb0\xe5\x15\x91\xdb\xd1\xbc\x23\x18\xbb\x6f\x84\xf9\xe3\x55\xf4\x08\x9c\x4d\xb3\xf3\xf8\xc0\x49\xee\x10\xd4\x46\x3b\x9d\x6b\x52\x98\x0e\xd0\x30\x3d\xd4\xee\x19\x17\xf9\xa4\x3b\x6e\x20\x8f\x91\xa2\x50\x69\xd7\x9c\x76\xcd\x2f\x28\xed\x9a\xf7\x29\xed\x9a\xd3\xae\xf9\x40\xbb\x09\x0b\xa7\x5d\x73\xda\x35\xbf\xa0\xb4\x6b\x3e\x30\xdc\xa4\x29\xd2\xae\x39\xea\xae\xb9\xbf\x76\xe6\xcd\x83\x4d\xe5\xea\x52\xad\x95\x6f\xfb\x9c\x05\x64\x59\x83\xb8\x09\xbc\xd0\x24\xed\xf9\x8d\x9c\xf8\xa0\x95\x79\x63\x94\x7b\x7c\xaf\x2b\x27\x1f\x3c\xaa\x81\xbe\xda\xa2\x2c\xf5\xfd\x95\x51\x77\xaa\x94\x4b\xf9\xc1\xe6\xa2\x14\x94\x84\x9d\xd8\x1d\x95\x5c\xd4\xe2\x46\x95\x8a\x36\xd3\x60\x42\xa4\xe2\xec\xb6\x82\x59\x56\x18\x4a\x0c\x62\x36\xab\x51\x43\x51\x96\x4f\x0c\x45\x58\x1a\x84\x8f\x6a\xa3\xf3\xcf\xba\xa9\x08\x96\x11\xf2\xcf\x88\xe2\x4b\x55\x3e\x7e\xd5\xda\xfd\xac\x4a\x69\x1f\xad\x93\x84\x8c\x0f\xc8\xc8\x4d\x53\xbd\xb3\xbf\x18\xdd\x10\x96\x7d\xcf\xa2\xfc\xf3\x1f\x51\x61\x50\x3b\x8a\xdf\x74\xb5\xf9\xd2\x09\xbe\xef\xbb\x95\x84\x0b\xe0\xd3\x7d\x9e\x95\x9f\x54\xd5\x3c\x7c\x69\x6f\xdb\xc5\x4f\x27\x2c\xef\x24\x94\x34\x89\x9e\x79\x4b\xfb\x6e\xa8\x31\x1b\x6e\x1f\x9f\xa2\xe1\x86\xb4\xd2\x70\xc3\x80\x8a\xb9\x57\x55\xa1\xef\xed\x44\x6b\xbd\x5c\x5b\xf1\xde\xc8\x42\x56\x9b\xad\xdd\x75\x4d\x8d\xee\x06\xa7\xf1\x75\x37\x93\x65\x8e\xdb\x0a\xe8\x44\x3d\x44\xc7\x3b\x4e\x18\xd7\xd4\xc9\x1b\x7d\x72\x63\x9e\xbc\xd1\xaf\x06\x9b\xbc\xd1\xe3\x94\xbc\xd1\x94\x17\x92\x37\xfa\xe5\x3b\xc9\x1b\x3d\xd6\x7b\xf2\x46\x07\x0c\x24\x79\xa3\x0f\x0c\x37\x69\x8a\xe4\x8d\x8e\xea\x8d\xb6\xae\x50\x1e\xdf\x21\xd5\xab\xd0\x36\xf5\xa5\xf2\x65\x7a\xa3\x36\xe7\xa4\x59\xab\xaa\xf5\x6d\x7e\x96\xd6\x8a\xa5\xf4\x67\x20\x24\xb2\xda\x81\xa6\xe3\xa5\xb0\x71\xe3\x75\x30\xe9\x13\x70\xa7\xcb\x66\x2d\x2f\xe5\x9d\xf2\x1e\x16\x44\x8f\x8e\x2b\xda\x5e\xa9\x29\x1f\x21\x09\x9f\x20\x10\x8c\x1e\xaf\xb5\xfb\x2e\xef\xa3\xc7\xcf\xa2\xd6\x2d\x78\xeb\x2e\x3d\xf6\x7a\xaf\x37\x9d\x4e\xb2\xdc\x5d\xcb\x46\xd7\x62\x49\x3c\xa7\x38\x3d\x3f\xed\x3c\xcc\xf4\x86\xa9\xb9\xbf\x6c\x73\x33\xc9\x3c\x3f\xb5\xfb\xe1\xa1\x26\xf9\xf9\x26\x91\xae\x2d\x17\xcd\x50\xb8\xee\xb5\xb9\x55\xd5\xf2\x52\x79\xa6\x87\x34\x31\x73\xc8\x4b\xef\x4d\x95\x46\x91\x7f\x52\x7a\x34\xaa\x22\xa1\x78\xeb\xb0\x10\x6d\xb2\xa7\x0e\xf0\xc2\x70\x3c\xf2\xa4\x9d\x3f\x99\x61\x89\x3e\x31\x64\xaa\xa8\xfb\x08\x2c\x78\x1c\xf3\x85\x01\x6b\x80\xfb\xc1\x30\x2f\x18\xc3\x3b\x05\x7a\xc0\xe0\x1e\xd0\x9b\xdb\x64\xdf\x17\xe2\xf9\x02\xfd\x5e\x88\xd7\x8b\xea\xf3\xc2\xe2\xfb\x89\xbb\x58\xf2\x1e\x16\xdf\xc1\xc2\xfb\xd7\xe0\xdd\x2b\xdd\xcb\x35\x89\x11\x27\x6c\x88\xe9\xa6\x99\xea\x37\x39\xb9\xae\xfb\x01\x39\xed\x14\x2c\x41\x7a\x8c\x90\xf2\x2b\x41\x92\x04\x49\x12\x24\x09\xec\x21\x41\x92\xfd\x36\x93\xa1\x18\xa6\x04\x49\xc6\x29\x41\x92\x27\x7a\x9b\x90\xc4\xfb\x08\x29\x81\x15\x85\xa1\x7c\x78\x85\xca\x94\x44\x9c\x42\xb4\x8f\x00\x13\xd0\xf4\x33\x69\x69\x90\x30\x26\xea\x29\x1a\x4d\x00\x08\x68\x88\xba\x10\x14\xcd\x40\x9e\x5e\x00\xfd\x10\x57\x16\x43\x3d\x93\x55\x38\x05\x90\xce\x64\x71\x1d\x24\x74\x43\x45\x36\xc8\x81\x31\x11\xd1\x50\xd0\x0c\x79\x72\x28\xb6\x85\x64\x57\x30\x9b\x02\xd9\x93\x20\x5b\x42\x43\x2c\xc4\xd1\x50\xd8\xc8\x6b\x92\x48\x2c\x01\x06\x03\xc5\x55\x7b\xe4\xd0\x9f\xb8\xdd\x22\x81\x3e\x71\x7b\x26\x61\xc1\x93\x68\xfa\x37\x2e\x9f\xc7\x13\x28\x7a\x38\x4e\x4c\xd6\xf2\x0e\xad\xd2\x85\xbc\x96\xa5\xcc\xdd\x70\x05\x46\xec\xd6\x23\x61\xe1\xbc\xa3\xaa\x8d\xd2\x46\x0d\xc7\xaf\x50\xa6\xc8\x3f\x3d\x7d\x2f\xef\x4b\x61\xed\xd8\xe5\x06\xef\x27\xd1\x52\xe0\x24\xdc\xfd\xe2\xa9\x84\xbb\xf7\x07\x95\x70\x77\xc2\xdd\x63\xcf\x25\xdc\x9d\x70\xf7\x4b\x4a\xb8\x3b\xa8\xe7\x84\xbb\x07\x9e\x4e\xb8\xdb\xd7\x6d\x20\xee\xf6\x26\x5f\xa1\x70\x9d\x3f\xe1\x0a\x9e\xb0\x84\x1a\x5c\x4e\x99\x7b\x4a\x62\x95\x53\x8e\xd0\xfb\xc8\xc6\x88\x14\x4d\x39\x7e\xf5\xd9\x3b\x1e\x62\x02\x16\xca\x8a\x2f\xfc\x99\x20\xa8\x49\x12\x68\x6a\x81\x96\x7d\x62\x82\x3e\x09\xb9\x26\x68\xf1\xce\xa4\xfc\x12\x71\x3f\x80\x9e\x4d\x82\x6a\x5b\x48\x19\x24\xc8\xaa\x9b\x92\x35\x82\xdc\x58\xfb\x60\xac\xc6\x28\xd9\x21\x62\x6a\x28\xdb\xd4\x75\x29\xd7\xb2\x72\xa2\x6c\xb9\x7c\x74\x1d\x08\x7b\x2a\x7a\x8a\x12\xaa\x59\xa6\x6c\x0f\xec\xa3\xcd\x5d\x19\x3a\x76\xfa\x5e\x90\xb6\x0f\x04\xa0\x04\x71\xff\x47\xe7\x70\xd2\xbe\x8f\xb0\xe7\xa3\xec\xf7\xa0\xf3\xdd\xf1\x85\xa4\xe7\x26\xa1\x2e\x16\x9e\x8f\x84\x3c\xc9\xbc\x1c\x24\xf4\x35\x44\xf2\x8e\x1c\x13\x14\x48\x73\xa7\x72\xf9\x2e\xcf\x75\x53\xb9\x20\x64\xe0\x74\x29\x8d\x18\x5d\x6b\x8f\xdc\xd2\xd8\x40\x2e\x16\x32\xf7\xec\x27\x88\x33\x78\x2b\xe3\xdc\x4e\xdc\x0c\x5b\x8c\x38\x9d\xa1\xc6\x76\xf3\x48\xba\xee\x1a\x5f\x49\x13\xf4\x17\xe9\x53\x82\xaf\xe3\x8c\x34\x30\xf8\x93\x91\x75\xa9\x72\x71\xfd\x7a\x1b\x3c\xc6\x5d\xb7\xf2\xf1\x67\x75\x18\x47\xf8\x98\xb2\x90\x0b\xd1\x94\xee\xb3\x2e\x06\xe7\x2c\x8e\x87\x7f\x54\x78\xa2\x48\x56\x2c\x71\x58\x8f\xcc\x45\x47\xf4\xfb\xd9\x54\xa6\xf5\x3b\x14\x49\x83\xa7\xdc\x41\xbb\x95\xc3\x36\xef\xa2\x1d\xc8\x74\x22\xb1\xd1\x35\xdd\x0e\x73\x5c\x4f\x8f\x6d\x24\xac\xcc\x8d\x0c\xd1\xf5\xa3\x5f\x31\x04\xa7\x46\xda\x1c\x9a\xf4\x83\x90\xc6\x27\xf9\xaf\x38\x7c\x8c\xd7\x86\xb9\xeb\xc9\x30\x7e\x93\xeb\xba\x14\xee\xd5\x17\x8d\x09\xd4\x5a\x3a\x51\x08\x27\x38\xda\x44\x54\x95\x76\xe3\x46\xf4\xd8\x27\x98\xa3\x3f\xdb\x01\x0c\xe6\xfb\xce\xbc\x6c\xac\x93\x66\xb8\x38\x8b\x77\xdc\xf2\xc1\x49\x53\x89\xf2\xe3\x15\x57\x29\x92\xa7\x66\x58\x18\xfb\x41\x7c\x33\x62\xb1\x50\xf9\x78\xc2\x03\x6f\x7f\x2b\x29\x4a\xb7\x7a\xbf\x92\xf9\xed\x6f\xba\x90\x63\x25\x66\xe2\x98\x94\x52\x8b\xe2\x5f\xa2\x14\x55\x1e\xb4\x14\xfb\xcd\x5c\xb7\x9e\xc0\xaf\xa2\x5a\x0e\x73\xe5\xf4\xeb\x32\x5a\xfb\x28\x8a\xad\x8c\x56\xa6\xa9\xf2\xac\x74\x47\x13\x18\xcc\xa3\xf7\x49\xb1\xad\xa3\x5e\xf2\x08\xd6\xd3\x4a\x6b\x95\xae\xde\x2d\x16\xaa\xea\xbc\x98\x0b\xb5\x0c\x71\x62\xe6\xa5\x92\x95\xa7\xc8\x14\x75\x7b\x8b\x65\xb9\x41\x72\xdc\x60\xfe\x99\xb0\x2d\xe5\x98\x0f\x8d\x0f\x2c\x06\x7f\xb2\x2b\x61\x8a\x6f\xba\xd6\xa5\x5e\xbe\x52\xbd\x63\x33\x9f\xb7\x6b\x7f\x2d\xcd\xdd\x61\x37\x9d\xd7\x84\x75\xef\xb7\xfa\x2e\x84\x83\xc4\xbd\xfd\x50\x0a\xeb\x54\xfe\xaf\x52\xe7\xb7\xd7\x4e\x9b\x51\xcd\x42\xe5\xa6\x85\xfd\x16\xd3\x9b\x59\x0b\xe3\x14\x25\xd7\xc8\x14\x7c\x49\xcf\x1d\x42\xf3\xa3\x67\xdb\xc4\x30\x1f\x2f\x8f\x7a\xac\xde\x77\x1a\x26\x83\x59\x26\xfe\x6a\x8c\xbc\x54\xf6\x36\x06\xa7\xe4\x22\x5f\xa9\x6a\x39\xb6\x85\x7d\x3e\x38\x02\xbb\x14\xca\xde\x46\xf5\xa0\x6d\x1a\xfc\xfe\xf5\x63\xb4\xf6\x22\x8b\xc7\xad\xf2\x07\xa8\x01\x1e\xdf\xb8\xcc\x4e\xe3\xcd\x7e\xc9\xbc\x0f\x7d\xff\xfa\x31\x0a\xff\x0e\xb9\x5c\x7a\xa2\xf2\x6f\x7c\xdd\xe0\xdf\x22\x3f\x6f\x93\xb0\xa6\x1b\x3b\x25\x23\xb6\x48\x5b\xd3\xdd\x87\x8c\x3f\xd6\x0f\x2e\x74\x5d\x73\x59\xaf\x16\x51\x7c\xfd\x6b\x5d\x29\xa7\xa3\xc5\x06\x46\x8f\xfa\x8c\x1c\xc3\x36\x15\x0f\xfb\x64\x0c\x1a\x64\xd7\xe4\x57\xe9\x0d\xd4\x41\x22\x31\x27\x48\x35\x46\x0e\x58\x8c\x78\x44\x4b\x93\xc7\x9e\xab\x83\xe5\x4c\x55\xc5\xf8\xd0\x4f\x04\x13\xa7\xe2\xe3\x37\xc4\x74\x67\x0d\x3c\xbb\x5d\xcf\x67\x11\x25\x91\x08\xe1\xec\xa4\xa7\x69\x76\x15\x24\xe3\x31\x49\xf4\xb9\xf7\xac\xa5\x27\x30\xf8\xdc\x7f\xf6\xd2\x13\x5a\x99\x1a\x99\xd7\x8e\x26\xca\xd8\x8e\xc4\xc1\x8f\x9d\xd5\xec\x9e\x1a\x3d\xb3\x79\x3e\xc6\xa8\x51\xf0\x14\x2d\x44\x9e\x1a\xdf\xc1\xd0\xf3\x06\x09\xa9\x82\x49\xea\xc0\xaa\x28\x8a\xc0\xa8\x01\x2f\xcc\xeb\x11\x1d\x7f\x6f\xd7\xba\x68\x9b\x9b\x52\xd9\xd5\xf5\x5b\x33\x46\x53\xf9\x55\xde\x39\x67\xd4\x4d\xe3\x08\xb5\xf7\x58\x75\x08\xe3\xcf\x05\x71\x93\xdc\x72\x6a\xa8\xd8\x14\xfa\xbe\xba\x17\xa6\x78\x77\x35\xea\xd0\x48\x76\xd4\x4b\x0b\x25\xcb\x82\x20\x8f\x9c\xb6\x37\x24\x6a\xf5\xbb\x34\x96\x98\x63\xb9\x23\xd0\x64\x67\xfd\x67\x50\x53\x18\x33\x7b\x41\x33\x53\x6d\xc7\x04\x98\x70\x72\xca\xa9\x1f\x00\xa7\xec\x2e\x46\xfc\x3c\x31\x93\xe6\xba\x72\x42\x55\x48\x55\xb3\x8c\xc7\xa7\x85\xba\x53\xd6\x17\xe8\x16\xd8\x47\x3f\x6b\x33\x12\x85\x7e\x48\xf1\x25\x01\xaa\xaa\x71\x12\x98\x4a\x6a\x50\xae\x6b\xf7\xe8\x49\x03\x4e\xf6\xfc\xc9\x42\x35\xde\xc2\xa3\x74\xa7\x95\xfa\x4b\x7e\x52\x6b\x15\xeb\x3e\x1b\x69\x3e\x16\x51\x2e\xbe\x47\xc6\xb1\x65\xf3\x66\x0e\xef\x9c\x30\x4b\xe9\xfe\xf8\xe3\xb7\x19\xfb\x87\xef\xef\x95\xff\x14\x7f\xde\x49\x0b\x4a\xf9\xf0\x7b\x0b\xe7\xdf\xfe\x26\x4f\xd3\x4a\xa8\xce\x65\xb7\x92\x3c\xad\xb3\xda\xd0\x2d\x4a\x9d\xdf\xc6\x71\xc8\x17\xc2\x09\x1b\xf9\xf0\xf1\xa9\xcd\xef\xdf\xa3\x79\x9d\x49\xb3\xb2\xcc\xe5\xd5\x66\xf3\x64\x9d\xac\x5c\xac\x68\x85\xb7\x15\xd7\x52\x17\x71\xef\x19\x9d\x24\x72\xa0\xfb\x88\x60\x6e\x51\xee\xab\xac\x75\x14\x19\x52\xa6\xcd\x02\x45\x9c\x07\xd2\xc4\xd6\xda\xaa\xc8\x4d\xde\x29\x8a\x63\x21\xea\x39\xd0\xee\x3b\x82\x97\xab\x0b\xe1\x8e\x73\xda\x2f\xab\xa2\xd6\xca\x5b\xa2\x0b\x92\xeb\x19\x9f\xce\xd3\xd6\x6a\x3b\x29\xe3\xc2\x37\xbe\x2b\x24\xad\xe5\x4a\x5b\x6f\xa1\x32\xea\x52\x46\x9d\xf8\xb1\x60\x52\xb0\x31\xa2\x2a\x8b\x30\x9b\xca\x46\x3a\x16\xc9\x57\xa2\x7e\xd7\xb8\xd5\xa5\xb2\xb9\xbe\x93\x54\xdd\x43\xc1\x7a\x7d\xd3\xd7\x5d\x40\x74\xbc\x86\x23\x9b\xe7\x2e\x87\x90\xd3\x31\x2f\xce\x66\x99\xfa\x33\x96\xd6\x7d\x5a\xed\x8f\xd5\x46\x15\x0a\xbf\xd3\x6a\xfe\x9b\xf5\x5a\x1b\x27\xc6\xef\xdf\x67\x27\xdd\x57\xa7\x8d\x8f\x3f\x1f\x7f\xeb\x1e\xb9\x6a\x57\xf2\xa8\xea\x53\xfd\x39\x36\xd3\x17\x1b\xae\x1e\xfd\x7d\x7f\xe0\xa1\x6a\xb8\x8a\x03\x4d\x66\x0d\x24\xba\x8b\x8a\x47\x0e\x62\xf3\xd8\xc8\x8b\xa7\x31\x85\xae\x5f\xbd\xdd\x3a\x76\x3e\xa8\xf7\xa5\x50\xa3\x6e\x61\xb2\x59\xdd\x34\xf4\x06\xb6\x5d\xdb\xef\x08\x9e\xe9\x95\x76\xba\x9a\xff\x56\xbd\x38\x72\xd0\xdc\xa6\xc3\xe0\xb9\xd5\xc6\xdd\x6b\x13\xd1\x8f\x3a\xfb\x88\xcd\xb3\x0e\x70\xac\x8d\xde\xfc\x3e\xde\xdd\xd9\x04\x66\x78\x12\xf3\xf5\x34\x49\x68\x06\x29\x54\x94\xdb\x38\x30\x6a\xe6\xe3\x9c\x11\x75\x44\x8e\xed\xdc\x11\xe3\x98\xbc\x23\x7a\x1c\xc5\x8e\xf0\x88\x8a\x97\x03\xa5\xc7\x56\xec\x88\x1e\x65\xf1\xb2\x37\x78\x5a\xb0\xe3\xfd\x8e\x68\xb1\xa2\xfb\xcf\x93\x8e\xe3\x77\x04\x06\xc8\xec\xbf\x44\xab\xcc\xd6\xd1\xe4\x05\xf4\xa8\x71\xa6\x2f\x3b\xa1\xd6\x72\xcf\xf0\xb9\x22\x86\xd3\xed\xe8\xed\xe8\x1a\x2c\xfe\x2d\xbc\xbf\x8c\x19\x13\xb7\x23\xb6\xaa\xcb\x78\x71\x72\x51\x7a\xe6\x68\x94\x8c\x11\x45\xb7\x23\x96\xba\xc8\x92\x45\x18\x22\x5e\x2c\xde\xde\x60\x03\x04\x86\x19\x9f\xb7\xa3\x20\x99\x81\x63\xf6\x22\xf5\x8b\xc7\xf1\x45\xe9\x98\x2f\xaa\x50\x94\xdf\x8e\x98\x92\xca\x03\x29\x73\x04\x1d\x60\x27\x9d\xb7\xf5\x47\x33\xd4\x69\x53\x70\x88\xd2\xa6\x20\x6d\x0a\x26\xda\x14\x3c\x4f\x6d\xfb\x4d\xdf\x4a\x22\x5c\x65\x5c\x12\x69\x0a\x25\xab\x49\x23\xd6\xb3\x4c\x3e\xd4\x0a\xc8\x0b\xbb\x4f\xf4\x1c\xb1\xaf\xc7\x88\x49\x35\x26\xcf\x93\xc7\xed\x93\xa5\x11\xe2\xad\xe8\x21\xf6\xc4\x5c\x1e\x9d\x2f\x2f\xd4\xc1\xf9\x67\xa3\x6f\x1e\x5f\x67\xb4\xdc\x27\x72\x3e\x6e\x5f\x2d\x85\xec\xb4\x8e\x68\x23\x97\xca\xba\x88\x21\x5b\x4e\x56\xa2\x8a\x57\x18\x27\x62\xfa\x89\xde\xeb\x7e\xe4\x60\xb2\x6e\x7e\x09\x8e\xf9\x50\xae\x35\x37\x51\x1c\xf2\xb1\xa3\x53\xd6\x62\x19\x31\x87\x94\x7c\x6c\x0b\x0e\xc5\x6a\xef\x0c\x52\xe8\x68\x1d\xb1\x12\x48\x8a\x0b\x99\x5d\xbe\x9b\x56\x40\x46\x9f\x88\x95\x11\xc7\xe6\xa2\x94\x1f\xbf\xcc\x50\x49\x2c\x85\x93\xf7\x22\x9e\x11\xaa\x8d\x76\x32\xdf\x00\xc1\x4b\xbd\x16\x2a\x5e\x24\x5b\x12\x20\xaf\x00\x59\x5b\x7e\xa8\xc4\x4d\xe9\x87\xa0\xc0\x24\x39\x6d\xc4\x52\x46\x4d\xbf\xf8\xd4\xe6\x55\x4c\xfd\x6a\x1f\xad\x93\xf1\xee\x65\x76\xb8\xe0\xe8\x19\xf1\x9e\xa4\x71\x1c\x69\xf7\x6c\x3b\xfe\x54\x3b\x1f\xc1\x7a\xcb\xeb\x0d\x3b\x9b\x60\x83\x94\x4d\xe9\x0c\xb3\x14\xbc\x9d\x6c\x4a\xb1\x13\x20\x4d\x90\x06\x94\xa6\x11\x3a\xdd\xad\xa3\x44\xaf\xce\x3e\x58\xec\xcd\x41\x84\xe8\x76\x6d\xbf\x49\x5b\xc7\xbb\x63\x40\xfa\xa2\x3b\x5b\xaf\xa4\x91\xb3\x8d\x5e\xdc\x02\x9d\x52\xe5\x8f\xd1\x42\x0e\x5f\xb4\x3b\xc1\x62\x52\x62\x18\x26\x88\x8f\xf4\x04\x22\x10\x58\xc2\xfb\x48\xad\x8b\xa1\xaa\x39\xdb\x47\x28\x85\x15\x74\xe5\x8c\x2e\xcb\x38\x97\xaa\x09\x75\x75\xb6\x8f\xce\xe4\x86\x3f\xe9\xb1\xb1\x5a\x43\x3d\xfd\xe8\x73\x34\x54\xa3\xa8\x27\xf2\xfc\x3c\x15\x0d\x89\x6a\xa8\x74\x21\xdf\x11\xdb\x45\xdb\xee\x9e\x97\x0b\x69\x8c\x2c\x2e\x9b\xcd\xac\x5f\x77\x35\xa0\x55\xb5\xfc\xb8\xac\xf4\xf6\xcf\x1f\x1e\x64\xde\x50\xee\xc0\xf7\x04\x9e\x9a\xf3\xce\xcc\xbb\xb1\x63\xe7\x6a\xfc\xde\x36\xb4\x16\x2e\x5f\x7d\x78\xa8\x4d\x77\x29\x92\x11\xe9\x03\x87\x13\xf4\x14\x12\x5e\x94\xf1\xc2\x0b\x7a\x0a\x0a\xf2\xc9\xc8\xe5\x2f\x27\x1c\x40\x5b\xb1\x92\x39\x71\x01\x6b\xd6\x51\xf0\xe8\x39\x07\xfa\xfb\xc4\x0d\x78\xca\x18\x01\x0e\xbb\xf7\xfa\x45\x67\xbc\xcc\x0e\x6d\xcc\x82\xe6\xaa\x95\xee\x36\xfc\x2f\x09\x36\x8d\x92\x60\x27\xc1\x46\xe8\x24\x82\xcd\xec\xf4\x5e\xaa\xe5\x8a\x18\x85\xd8\x13\x3f\x46\x8e\x17\x21\x87\x33\xc0\xc5\x1e\x6a\x02\x5e\xea\x26\x83\xfc\x02\x63\xca\xd1\xd5\xed\x3f\x3d\x2e\x6e\xe5\x28\xe3\x0d\x44\xbf\x96\x65\x9b\x4f\xe8\x9b\x34\x98\x46\x61\xa8\xa0\x04\x5f\x31\x4a\x56\x2e\x59\x39\xfc\xbd\x73\xb3\x72\x09\xbe\xe2\x94\x04\x3b\x09\x36\x42\xe7\x04\x5f\xf1\xee\xd0\xe5\xb8\x78\x8d\x7c\x20\xac\x47\xfe\x24\xe8\xf1\x5a\x17\xc9\x5f\x3a\xf0\xd6\x6e\x6a\x36\xab\x75\x2c\xd4\x59\x8a\x1b\x59\xf6\x6c\x82\xcb\x7a\x98\x81\x09\x87\xbc\x59\xa8\xa6\x0d\xb5\x90\x59\x98\x95\xcc\xe2\xa8\xfa\x70\x6b\x19\x6d\x20\x61\x56\x33\x0b\xb7\x9c\x59\xac\x2f\x09\xb5\xa0\x59\xa0\x15\xcd\x02\x2c\x69\x16\x6a\x4d\xb3\x50\x8b\x9a\x05\xcf\x5f\xab\x1d\x3e\x6d\xf4\x13\x93\x1b\x78\xe7\x9c\x87\x29\x98\xa3\x22\xc0\x13\xd6\xcb\x55\x1f\x77\x72\xcc\x7d\x47\xd0\x6c\xf1\xb9\xc6\xe9\x5a\x97\x7a\xf9\xf8\x2b\x47\x21\x07\xe4\x26\xe0\xc8\xf8\xc5\xfe\x68\x93\xcb\xb4\x23\x96\xcb\xf4\x39\x70\x4a\x7e\xd3\x57\x74\x14\xfc\x1a\x00\x24\x93\xcf\x14\xa3\xe4\x5a\x49\xae\x15\xfc\xbd\x73\x73\xad\x04\x02\xc0\x58\xe0\x2f\x02\x94\x61\x4c\x1c\xf3\x45\x2e\xd8\x63\x49\x14\x7b\x66\x78\x1c\xc1\x06\x77\xac\x71\x72\x90\x08\x07\xd0\x4d\x0e\x2a\x60\xff\x5c\xe5\x54\xf2\xd1\x0d\xbc\x95\x7c\x74\xc9\x47\x97\x7c\x74\xc9\x47\xf7\x8c\x92\x8f\x2e\xf9\xe8\x92\x8f\x8e\xfc\x66\xf2\xd1\x0d\x53\xf2\xd1\xbd\x7c\x33\xf9\xe8\x0e\x52\xf2\xd1\x51\x28\xf9\xe8\x92\x8f\x2e\xf9\xe8\xc8\x2f\x27\x1f\x5d\xf2\xd1\x3d\x7f\x31\xf9\xe8\xb2\x99\xf9\xe8\xc8\x8f\x0a\xb3\x9c\x71\xea\x40\x59\xdd\x45\x1a\x1c\x66\xe3\xe9\xa9\x94\x41\x8e\x6c\xad\xe5\x74\x2d\xff\x6c\x34\xd1\xdd\x88\x63\x9e\x6d\xa5\xa7\x5f\xe5\x23\x54\x5a\x81\x07\xaf\x60\x50\xc5\xd4\x61\x58\xd6\xec\x80\x8e\xf0\xec\xd9\x19\x94\x63\x67\x9f\x38\x2a\x0f\x01\x23\x0c\x55\x87\xd7\xb0\xe1\xf1\x0d\xb7\x6e\x0d\x73\x55\x99\xb5\x6a\x8e\x66\xc8\xf0\xca\x34\x8c\xb5\xe5\x97\x5d\xe1\xad\x71\x40\xa9\x15\xe6\x32\xb3\xca\xab\x30\xfb\xe2\x95\x54\x39\x1a\x47\xc1\x05\x54\x18\x0c\xd5\xe5\x0b\x4b\x86\x26\x19\x1a\x94\x77\xa0\x17\x90\xb4\x88\xd5\x78\x09\x5e\xb8\x77\x2a\x04\x6e\x93\x2b\x5f\x35\x65\x79\xdd\xca\xc4\x69\x52\x6f\x4e\x84\x87\xa7\x98\xae\x4a\xb9\xf7\xbd\x79\x38\xcd\x64\x51\xb6\x54\x50\xf7\x1d\xc1\xda\x00\xdb\x5c\xe6\x7a\xbd\x16\x15\x51\x90\xe7\x34\x70\xc2\x1e\xb1\x23\x68\xd0\xac\x24\x02\xa0\x86\x67\xe9\x77\x60\x07\x19\xda\x0b\x7d\x37\xd9\x11\xd7\x8f\xce\xde\x59\x86\x75\x9b\xf1\x5d\xf7\x41\x9e\x44\x1c\x08\x44\xe8\x94\x07\x0a\xf6\x3b\x46\xa1\x41\x47\xfc\x42\x7d\xb8\x73\x9c\xed\xa2\x4d\xf5\x55\x8f\xd2\xf3\x19\xd5\x57\x4d\x85\x44\x8f\xdd\x6f\x2a\x24\xea\x21\xde\x9e\xb8\xa3\x64\x22\x09\x94\x4c\x64\xcc\xd7\x18\x99\x28\x28\x3b\x6c\xe6\x78\xe0\x2d\x05\x1d\xfb\x4e\xbe\xad\xd8\xc2\x63\x50\xf0\xb9\x42\xcf\x11\x3e\xb6\xe0\x71\x85\x8e\x2b\x70\x2c\x01\xa8\x8d\x5c\xa8\x87\xc9\x37\x5d\xe4\x2a\x09\xcf\xc7\x96\x56\x79\xe0\x3d\xc6\x51\xfc\x64\x2a\x85\x54\x44\x70\xbf\x61\xf2\x2c\x6f\x1d\x84\x5d\x19\x83\x49\xfa\x28\xd5\x42\xe6\x8f\x79\x49\xfc\x02\x9c\x27\x6b\x6d\xdd\xb5\x13\x06\x08\x6a\xe5\x31\xbe\x7c\x18\xcf\x13\x1f\xab\x9f\x0c\x75\xa9\xed\xd3\x79\x05\x6b\x33\x31\xc5\xca\xb9\xfa\x17\x6a\x89\xf8\x9e\xf8\x8b\xb1\xd2\x16\xec\x2b\x0b\x9b\xd0\xcd\xf7\xfd\x5b\x8a\x82\xe0\x86\x7e\x4d\x27\x8b\x65\xe5\x22\xef\x2c\x5a\x2c\xe9\x89\x7a\x0f\x8b\xe4\x04\xb0\xeb\xf3\x17\xdb\x4f\x66\x4b\xfa\xd1\xe3\x38\x39\xa5\xfc\x83\x96\xa6\xd6\x88\x4d\xe8\x49\x54\x8f\x5f\xe0\x4d\x72\x1b\xf7\xc7\xba\xeb\xf0\xf2\x7d\x26\x13\x3e\x5c\xdc\x36\x37\xd2\x54\xd2\x49\x7b\xa1\x2a\x77\xa1\xcd\x45\xd7\xd4\x4f\x99\x33\x30\x9b\xd8\x7c\x25\x39\xc2\x7c\xf4\xdb\x33\x9b\x35\x3e\x86\xc5\x71\x79\x7d\xad\xf3\xdb\x37\x6c\x73\x92\xb4\x30\xa5\x65\xde\xac\xcb\x78\xa9\x36\xf2\xda\x69\x6f\xdd\xfe\xfd\x17\x12\x9c\x7e\x49\x09\x4e\x0f\x77\x97\xe0\x34\x85\x12\x9c\x4e\x70\x7a\x84\x12\x9c\xa6\xbc\x3f\x07\x80\x90\xe0\xf4\xeb\xd7\x12\x9c\x3e\x48\x49\x5a\x66\xce\xba\xd3\x06\x15\x67\x59\xa9\xee\x64\x25\xad\xbd\x32\xfa\x66\x32\x8f\x39\x86\xbc\xb9\xf7\x2c\x18\x88\x7b\xfe\x17\x50\x39\xb7\x97\x84\x2a\x1b\x23\xbf\xad\x8c\xb4\x2b\x5d\x02\x53\xc2\xcb\xbb\xc1\x51\x05\xf0\x0e\x80\xc7\x14\xb8\x16\x66\x2e\x2e\x1b\xf1\xb3\x38\x30\x04\xe9\x9f\x24\x5c\x85\x8d\xee\x4f\x12\x2d\xc5\x40\xf4\x3c\x34\x1f\x78\x4f\x1f\x45\xf1\x38\x82\x67\x4e\x3f\x8e\x45\x18\x38\x24\x04\x83\x04\xe0\x8f\x88\xd8\x83\x83\xd2\x8f\x76\x75\x0e\x82\x37\x0c\x46\x56\x95\x72\x4a\x94\x97\xb2\x14\x8f\xd7\x32\xd7\x15\x52\x45\xec\x78\x86\xaa\x96\x46\xe9\x62\xc6\x03\xb4\x4d\x9e\x4b\x6b\x67\x6d\xed\x19\xbb\xaf\x99\xdb\xfb\xa4\xe1\x08\x34\x47\xb5\xe3\xd4\x5a\xea\xc6\xcd\x56\xa0\xc1\x4f\x9a\x2c\xf9\xc7\x66\x1d\xa6\xb8\x19\xc8\x0c\x2a\xed\x2e\x19\x5c\x81\x52\xc7\xcd\x23\xc8\x13\xbb\x8d\xf2\xf9\x78\x35\x79\xe4\xe5\xa6\x9b\x79\x4f\xc4\x51\xee\x16\xd6\x46\x3b\x9d\x6b\x28\x4c\x93\xd1\x11\x1e\x1a\xfe\x8c\x5b\xa9\x5a\x69\xda\x80\x4e\x23\x45\xa1\x92\x97\x07\xa2\xe4\xe5\x39\x34\xc4\xe4\xe5\x49\x5e\x9e\x41\x4a\x5e\x9e\x83\x94\xbc\x3c\x3d\xfd\x80\x7b\xa0\xe4\xe5\x49\x5e\x9e\x08\x03\x4c\x5e\x9e\x3d\x4a\x5e\x9e\x97\xef\x26\x2f\xcf\x8b\x57\xde\x96\x97\xa7\xbf\xbe\x4f\xae\x47\x85\x4a\x55\xa9\xd6\x8a\xea\xee\xc9\x22\x64\xb9\x66\x71\x2d\xf3\x62\xb7\xb4\x6f\xef\xcb\xc0\x17\xac\xcc\x1b\xa3\xdc\xe3\x7b\x5d\x39\xf9\x40\x54\x69\x38\x17\x89\xb2\xd4\xf7\x57\x46\xdd\xa9\x52\x2e\xe5\x07\x9b\x8b\x52\x20\x05\x23\x78\x77\x68\x73\x51\x8b\x1b\x55\x2a\x6c\xa5\x98\x09\x5b\x8b\x37\xe7\x7a\xc8\xb2\xc2\x20\xb1\xf7\xd9\x59\x7c\x15\xeb\x16\xc2\x13\xe3\x02\x4b\xcc\xe1\xd7\xda\xe8\xfc\xb3\x6e\x2a\x00\x59\xb0\xfc\x96\xa2\xf8\x52\x95\x8f\x5f\xb5\x76\x3f\xab\x52\xda\x47\xeb\x24\x90\x21\x8d\xf3\x65\xa6\xa9\xde\xd9\x5f\x8c\x6e\x00\x76\xda\xb3\xb8\xff\xfc\xc7\xa4\xf0\xb4\x1d\xdd\x6f\xba\xda\xcc\xc8\x11\xe6\xe1\xbb\x95\x40\x62\xa2\xe3\x4d\x83\x95\x9f\x54\xd5\x3c\x7c\x69\xb3\x1c\x4c\x5f\x9e\x47\xde\x49\x56\x72\x57\x3c\x13\xb1\xa6\xde\xf8\x0f\xec\xa8\x7d\xed\x18\x1d\x35\x10\x07\xb1\x3b\x62\xa8\xca\x7b\x55\x15\xfa\xde\x1e\x89\x87\x96\x6b\x2b\xde\x1b\x59\xc8\xca\x29\x51\x5e\xd7\xe8\x2d\x2e\xe6\xf4\xbf\xee\xf6\x68\x19\xbc\xb7\x0a\xe4\x48\x3d\x4e\x8e\x3f\x9d\x30\xae\xa9\xd3\xe9\x13\x99\xe6\x0e\x96\xd2\xe9\xd3\xae\x9b\x74\xfa\xf4\x92\xd2\xe9\x93\x87\xd2\xe9\xd3\xcb\x7e\x92\x6f\x76\x8f\xd2\xe9\xd3\xe0\xa8\xd2\xe9\xd3\x09\x06\x98\x4e\x9f\xf6\x28\x9d\x3e\xbd\x7c\x37\x9d\x3e\xbd\x78\xe5\x6d\x9d\x3e\x59\x57\x28\xa2\x0f\x1f\xf5\x96\xb5\x4d\x7f\xa9\xa8\x99\xb4\xd1\xe6\x9d\x34\x6b\x55\xb5\x67\x10\x9f\xa5\xb5\x62\x29\xe9\x99\xe4\x41\xd6\x3e\xd0\xd5\x74\x29\x2e\x9d\x83\xda\xa5\x4f\xd8\x9d\x2e\x9b\xb5\xbc\x94\x77\x8a\x7c\xd8\x38\x79\xf4\x77\xd1\x8e\x06\x2d\x01\xc0\xd2\x4c\x47\x08\x5c\xc6\xe3\x89\x77\xdf\x4f\x7e\x65\x3e\xd9\xa9\x3b\x86\x6a\x8f\x3b\xe6\xc2\x4f\xeb\xcd\x60\x8e\xc2\x4e\x5d\x4f\x46\xd7\x62\x09\x9e\x83\xce\x97\x7f\x77\x27\x4b\x78\x47\x68\x6e\x64\xdb\xdc\x1c\x65\x9d\x9e\xfa\xf9\xf0\x50\x43\xfe\xf6\xa3\x48\xff\x96\x5b\xcf\x50\xf8\xef\xb5\xb9\x55\xd5\xf2\x52\x11\xa7\x15\x9a\xd0\x73\xa8\x87\x47\x4e\x45\x8d\xe8\x31\x28\xfd\x34\xaa\x20\x11\x2f\x3a\xef\x2a\x17\xec\x41\x67\x78\x2f\x43\x4e\xf6\x20\x8f\x17\x2c\x40\xa0\x4f\x9a\x33\xc5\xe8\xfe\x94\x77\x09\x8d\xe7\x8b\x66\xac\x25\xdf\x0f\xcd\xf3\x42\x07\x78\x83\x99\x1e\x68\x76\x8f\xdc\xcc\x45\xb0\xef\x99\xe3\x79\x66\xfa\x9d\x39\x5e\x67\xd4\xe7\xcc\xbb\x6f\x08\x7a\x63\x60\x5f\x0c\xdf\x13\xc3\xf6\xc3\x44\xf3\xc2\xe0\x5e\xe6\xa3\x80\x27\xc0\xd1\x83\x43\x21\xd4\xdf\x38\x5b\x5d\x9e\x38\x7b\x90\xe6\xc4\x72\xd0\xe3\x40\x4a\xe5\x04\x11\x13\x44\xf4\x50\x82\x88\xcf\x28\x41\xc4\x43\xaf\x24\x88\x98\x0c\xe9\x08\x25\x88\xe8\xa7\xd9\xea\xf2\xc4\xd9\x83\x34\x27\x96\x83\x5d\x98\x84\x47\xa1\x04\xc1\x08\x03\x53\x71\x24\x2a\x14\x20\x7e\x04\xf1\x06\x83\xd9\x30\x7b\x05\x2d\x39\x27\x0c\x17\x8d\x32\xc0\x04\x13\x40\xaf\xe8\xc2\x22\x9a\x0e\x5e\x26\x06\x5a\x05\x39\x87\x87\x52\x71\x84\xca\x54\x87\x0c\x64\x7a\xb4\x38\x41\x08\x8d\xa2\x48\x94\x13\xe0\x03\x22\x50\x04\x7d\xc2\x93\x8a\xd8\x66\xc8\x2e\xf3\x6c\x32\xcb\x1e\x47\xb1\xc5\x18\xc2\x04\x47\x89\xb0\x2d\xd9\xc4\x43\xac\xc7\x0c\x66\x9d\x56\xdd\xc3\xa1\xab\xd3\x0e\x87\x13\xa8\x3a\xed\x88\xa0\x3d\xc0\xac\x2c\x62\xd2\x2b\x2d\x9d\x5e\xf0\xf1\x70\xd2\x29\x59\x9a\x3c\xf4\x4a\x17\xf2\x5a\x96\x32\x77\xda\x1b\xff\xc1\xcb\xba\x01\x30\x04\x79\xd4\xb5\x51\xda\x28\x7f\x7c\x25\x32\xc5\xf4\xe9\xed\x7b\x7f\x5f\x0a\x6b\x29\x97\x3f\xc9\x53\x80\xa5\x00\x4d\xfb\xb8\xc1\x57\xd2\x3e\xee\x25\xcd\xca\x6a\xa5\x7d\x5c\xda\xc7\xa5\x7d\xdc\x33\x3a\x2f\xbc\x95\xf6\x71\x87\x29\xed\xe3\x4e\x3a\xa2\xb4\x8f\x7b\x45\xe7\xa5\x57\x4e\x2f\xf8\x67\xba\x8f\x23\x27\x9f\x44\xb8\x9e\x9e\x70\x92\x9f\x90\x11\xbd\x54\x87\xac\x25\x92\x58\x72\x8e\x5f\x40\x7e\x74\x63\x8c\x8b\xa6\xa4\xa5\x22\x22\x8f\x17\x4c\x48\x89\x70\xd6\x82\x9e\x81\x0e\x4d\xba\x86\xa9\x3b\x2c\x1b\xde\x11\xc6\x02\xe4\xbe\xc3\xee\x6b\x41\xf9\xee\xa6\xfd\x50\x3c\xbb\x1d\x6a\xab\xa1\x8c\x76\xb0\xa9\x43\xb2\xd8\xc1\x8d\xb7\x2f\x4c\xd5\x38\x92\xad\x6e\x4a\xcd\x6c\x9b\xba\x2e\xe5\x5a\x56\x4e\x94\xad\xf4\x91\xd6\x15\xf0\x01\xe0\xa9\x1a\x51\x98\x84\x6c\x4b\xed\xa3\xcd\x5d\x19\xfb\x1b\x71\x1f\x07\xe6\xdf\x60\x40\x40\xd0\xaf\x81\x4b\x1e\xe4\xcf\x00\x7c\x19\x88\x1f\x83\x15\xef\x43\x63\x14\x3c\x67\x23\xca\x04\xfc\x3c\x8d\xf0\x62\x85\xe5\x66\xc4\x79\x83\x93\x8f\x71\x0e\xe0\x4d\x9a\x3b\x95\xcb\x77\x79\xae\x9b\xca\x45\x45\x70\x4e\x97\xd2\x08\x12\x2f\x11\xf5\x0e\xc6\x6e\x72\xb1\x90\x39\x71\x5f\x0b\xae\xc4\xad\x9c\x26\x6b\xc7\xe6\xf3\x04\xe1\x30\x8c\xd5\xf8\x6e\x3d\xa0\xb4\x33\xd3\x1b\x33\x40\x6f\x43\x9f\x1c\xfd\xba\x36\xa1\x41\xef\x23\xb5\x91\x0b\xf5\x30\xf4\xb5\xde\xef\x33\xb2\x2e\x55\x2e\x06\xd7\x8e\xe2\x0f\xf0\xaf\x8f\x75\xda\x88\xe5\xe0\x9a\x50\xe4\x50\xb4\xee\xb9\xcf\xba\x18\x17\x56\x82\xe4\x13\xd7\x9c\xb2\x84\x85\x70\xe2\xba\x75\x55\x8c\x75\x49\x55\x33\xa2\x56\xa4\xcd\x1b\x99\x69\x6f\x95\xff\x30\x93\xdc\x18\x05\x6e\x11\x1b\xa3\x00\x9f\x8b\x76\xf4\xa3\x0f\x78\xf0\x10\x49\x5c\x49\xae\x26\xea\x02\xd2\x5c\x4c\xf3\x89\x3c\xa0\xba\x94\xe6\x32\x62\xd2\x63\x96\x10\x00\x42\x5d\xd0\xb5\x70\x79\x9b\xa4\x45\x5a\x7b\x32\xdc\x71\x96\xe0\xa0\xb5\xc1\x53\xe4\x5f\xe2\xb9\x20\x88\x3b\x16\x24\xc3\xcb\xad\xf4\xb7\x77\xb1\x9d\xe4\xe3\x83\x8b\x27\xee\xfd\x24\x6e\xa4\x7f\xb3\x7e\x5e\x12\xde\xa1\x09\x52\xc4\x12\x69\x88\x7d\xca\xb0\x22\x56\x53\x11\x46\xe5\x99\x89\x31\x4e\xbd\xd8\xa2\xba\x03\x3f\x8e\xb6\xbb\xd6\xd5\x52\x1f\x5c\x78\x9f\xca\xca\x75\xb5\x50\xcb\x71\x2c\x44\x82\x79\xf7\xf6\x43\x29\xac\x53\xf9\xbf\x4a\x9d\xdf\x5e\x3b\x6d\xa2\x60\xab\x85\xfd\x46\x70\x45\x92\x19\xba\x16\xc6\x29\x4a\x82\xb5\x69\x82\xf6\xa8\x09\xd1\xe8\x4e\xf5\x8e\x6f\x3f\x5e\x1e\x15\xe1\xf5\x9d\x86\x2a\x04\xf1\x57\x63\xe4\xa5\xb2\xb7\x31\x38\x25\x17\xf9\x4a\x55\x4b\x9f\x36\xc8\x10\x76\x29\x94\xbd\x8d\xea\x0b\xd9\x34\xf8\xfd\xeb\xc7\x68\xed\x45\x16\x8f\xa8\x1b\x8f\xd8\xcc\x4e\xe3\xcd\x7e\xc9\xbc\x0f\x7d\xff\xfa\x31\x0a\xff\xfe\xac\xc6\xcf\x61\xa8\xfc\x1b\x5f\x37\x58\x99\x1b\x19\xd7\x97\x67\x57\xc2\x78\xad\x24\xd0\x22\x6d\x4d\x77\x1f\x32\xfe\x58\x3f\xb8\xd0\x75\xcd\x65\xbd\x5a\x44\xd9\x59\xae\x75\xa5\x9c\xf6\x07\x98\x12\xa1\x34\x0c\xdc\xfc\x60\x93\x12\xa8\x78\x32\x91\xef\x79\xd8\x27\x63\xd0\x20\xbb\x26\xbf\x4a\x6f\xf4\x12\xb2\xdd\xa3\x1e\x6a\x4d\xe1\x0e\xa0\x9c\xa7\x46\x95\xc7\x9e\xab\x83\xe5\x4c\x55\xc5\xf8\xd0\x4f\x04\x13\xa7\xe2\xe3\x37\xc4\x74\x67\x0d\x3c\xbb\x5d\xcf\x67\x31\xea\xb2\xa5\xae\x44\x21\x17\xa2\x29\x1d\x05\x78\x4e\xb3\xab\x20\x19\x8f\xb3\x72\x71\xad\x09\x73\xd9\x11\x5e\x08\x01\x3d\x95\xa2\x47\xf2\x43\x1f\x19\xdf\x65\x55\x53\x52\x3f\x4f\xe0\xae\x8a\x78\xc0\x90\x65\xba\xee\xdc\x59\xb1\x34\x2f\x4d\x1d\x58\x15\x45\x11\x18\x75\x17\xcd\x12\x47\xb7\x69\x95\x2e\xe4\x55\x73\x53\x2a\xbb\xba\x7e\x6b\xc6\x68\x2a\xbf\xca\x3b\xe7\x8c\xba\x69\x9c\xff\xfb\xe7\xe2\x88\x25\x6e\x92\x5b\x4e\x0d\x15\x9b\x42\xdf\x57\xf7\xc2\x14\xef\xae\x46\x1d\x1a\xc9\x8e\x7a\x69\xa1\x64\x59\x10\xe4\x91\xd3\x76\xd6\x9d\x50\xff\x2e\x8d\x65\x14\xd8\x87\x02\xef\xda\xcf\xc0\xea\x30\x4c\x1e\x7c\xb7\x1d\x13\x60\xc2\xc9\x51\x75\x3f\x00\x4e\xd9\x1d\xb5\xff\x3c\x31\x93\xe6\xba\x72\x42\x55\x68\x29\x63\x06\x9f\x16\xea\x4e\x59\xea\x01\x2a\xb3\x8f\x7e\xd6\x66\x24\x0a\xfd\x90\xe2\x4b\x02\x02\x66\x4f\x03\x53\x49\x0d\xca\x75\xed\x1e\x3d\x35\x48\xc8\x9e\x3f\x59\xa8\x66\x1d\xcf\x69\xa5\xfe\x92\x9f\xd4\x5a\x79\xe3\x18\xa1\x28\x29\xcf\x7c\x2c\x46\xc3\x72\x4f\xe4\x9b\x29\x9b\x37\x73\x78\xe7\x84\x59\x4a\xf7\xc7\x1f\xbf\xcd\xd8\x3f\x7c\x7f\xaf\xfc\x11\xa2\xa7\x1a\x1e\x8d\x8b\x4b\xf9\xf0\x7b\x0b\xe7\xdf\xfe\x26\x4f\xd3\x62\xf6\xe7\xb2\x5b\x49\x9e\xd6\x59\x6d\xe8\x16\xa5\xce\x6f\xe3\x38\xe4\x0b\xe1\x84\x8d\x7c\xf8\xf8\xd4\xe6\xf7\xef\xd1\xbc\xce\xa4\x59\x59\xe6\xf2\x6a\xb3\x79\xb2\x4e\x56\x2e\x56\xb4\xc2\xdb\x8a\x6b\xa9\x8b\xe8\x19\xa8\x8e\x1f\x39\xd0\x7d\x44\x30\xb7\x28\xf7\x55\xd6\x3a\x8a\x0c\x29\xd3\x46\xc4\x12\xe7\x81\x34\xb1\xb5\xb6\x2a\x72\x93\x77\x8a\xe2\x58\x88\x7a\x0e\xb4\xfb\x8e\xe0\xe5\x2a\x1b\xeb\xa4\x89\x73\xda\x2f\xab\xa2\xd6\x8a\x50\xbf\x14\x90\xeb\x19\x9f\xce\xd3\xd6\x6a\x3b\x29\xe3\xc2\x37\xbe\x2b\x24\xad\xe5\x4a\x5b\x6f\xb5\x56\xea\x52\x46\x9d\x78\x17\x4f\xd5\x13\x55\x59\x84\xd9\x54\x36\xd2\xb1\x48\xbe\x12\xf5\xbb\xc6\xad\x2e\x95\xcd\xf5\x9d\xa4\xea\x1e\x0a\xd6\xeb\x9b\xbe\xee\xe2\xfc\xe3\x35\x1c\xd9\x3c\x77\x89\x9c\x9c\x8e\x9b\x1a\x43\xfd\x19\x4b\xeb\x3e\xad\xf6\xc7\x6a\xa3\x0a\x85\xdf\x69\x35\xff\xcd\x7a\xad\x8d\x13\xfe\xf8\xf9\xd3\xed\xab\xd3\xc6\xc7\xbb\x37\xec\xdc\x23\x57\xed\x4a\x1e\x55\x7d\xaa\x3f\xc7\x66\xfa\x62\xc3\xd5\xa3\xbf\xef\x0f\x3c\x54\x0d\x57\x71\xa0\xc9\xac\x81\x44\x77\xfd\xfc\xc8\x41\x6c\x1e\x1b\x79\xf1\x34\xa6\xd0\xf5\xab\xb7\x5b\xc7\xce\x07\xf5\xbe\x14\x6a\xd4\x2d\x4c\x36\xab\x9b\x86\xde\xc0\xb6\x6b\xfb\x1d\xc1\x33\xbd\xd2\x4e\x57\xf3\xdf\xaa\x17\x47\x0e\x9a\xdb\x74\x18\x3c\xb7\xda\xb8\x7b\x6d\x22\xfa\x51\x67\x1f\xb1\x79\xd6\x01\x8e\xb5\xd1\x9b\xdf\xc7\xbb\x3b\x9b\xc0\x0c\x62\x56\xc1\x49\x42\x33\x48\xa1\xa2\xdc\xc6\x81\x51\x33\x1f\xe7\x97\xbc\x24\xc7\x76\xee\x88\x71\x4c\xde\x11\x3d\x8e\x62\x47\x78\x44\xc5\xcb\x81\xe2\x15\xe4\xf0\xea\x90\x19\x7f\x5a\x38\x05\x39\x69\xb1\xa2\xfb\xcf\x93\x8e\xe3\x77\x04\x06\xc8\xec\xbf\x84\x94\xe1\x9c\x3c\x47\x18\x35\xce\xf4\x65\x27\xd4\x44\x87\x19\x3e\x57\xc4\x70\xba\x1d\xbd\x1d\x5d\x83\xc5\xbf\x85\xf7\x97\x31\x63\xe2\x76\xc4\x56\x75\x19\x2f\x4e\x2e\x4a\xcf\xbc\x12\xbf\x78\x14\xdd\x8e\x58\xea\x22\x4b\x16\x61\x88\x78\xb1\x78\x7b\x83\x0d\x10\x18\x66\x7c\xde\x8e\x82\x64\x06\x8e\xd9\x8b\xd4\x2f\x1e\xc7\x17\xa5\x63\xbe\xa8\x42\x51\x7e\x3b\x62\x4a\x2a\x0f\xa4\xcc\x11\x74\x80\x9d\x74\xde\xd6\x1f\xcd\x50\xa7\x4d\xc1\x21\x4a\x9b\x82\xb4\x29\x98\x68\x53\xf0\x3c\x2f\xeb\x37\x7d\x2b\x89\x70\x95\x71\x49\xa4\x29\x94\xac\x26\x8d\x58\xcf\x32\xf9\x50\x2b\x46\xf2\xd1\x8c\x95\x80\x34\x63\x4a\x35\x26\xcf\x93\xc7\xed\x93\xa5\x11\xe2\xad\xe8\x21\xf6\xc4\x5c\x1e\x9d\x2f\x2f\xd4\xc1\xf9\x67\xa3\x6f\x1e\x5d\x14\x4f\xf4\x32\x6a\xee\xce\xf8\x8e\x68\x23\x97\xca\xba\x88\x21\x5b\x4e\x56\xa2\x8a\x75\x91\x20\x6a\xfa\x89\xde\xeb\x7e\xe4\x60\xb2\x6e\x7e\x09\x8e\xf9\x50\xae\x35\x37\x51\x1c\xf2\xb1\xa3\x53\xd6\x23\x39\x7e\xe1\xd6\x6e\xe5\x63\x5b\x6d\x29\x56\x7b\x67\x90\x42\x47\xeb\x58\xf1\x09\x29\x2e\x64\x8e\xf9\x6e\x5a\x01\x19\x7d\x22\x56\x46\x1c\x9b\x8b\x52\x7e\xfc\x32\x43\x25\xb1\x14\x4e\xde\x8b\x78\x46\xa8\x36\xda\xc9\x7c\x03\x04\x2f\xf5\x5a\xa8\x78\x91\x6c\x49\x80\xfc\xc5\x1e\x6c\xf9\xa1\x12\x37\xa5\x1f\x82\x02\x93\xd4\x25\x77\x8d\x9a\x7e\xf1\xa9\xcd\xab\x98\xfa\xd5\x3e\x5a\x27\xe3\xdd\xcb\xa4\xe5\x8d\x05\x9a\xa4\x69\xa4\x27\x69\x1c\x47\xda\x3d\xdb\x8e\x3f\xd5\xce\x47\xb0\xde\xf2\x7a\xc3\xce\x26\xd8\x20\x65\x53\x3a\xc3\x2c\x05\x6f\x27\x9b\x52\xec\x04\x48\x13\xa4\x01\xa5\x69\x84\x4e\x77\x1f\xce\x4a\xdd\xd3\x9b\x09\x16\x7b\x73\x10\x21\xba\x5d\xdb\x6f\xd2\xd6\xf1\xee\x18\x90\xbe\xe8\xce\xd6\x2b\x69\xe4\x6c\xa3\x17\xb7\x40\xa7\x54\xf9\x63\xb4\x90\xc3\x17\xed\x4e\xb0\x98\x94\x18\x86\x09\xe2\x23\x3d\x81\x08\x04\x96\xf0\x3e\x52\xeb\xe2\x9b\x5c\xd7\xa5\x18\xf6\x31\x52\x78\x25\xd7\x95\x33\xba\x2c\xe3\x5c\xaa\x16\x55\xa5\x1d\xad\x92\xda\x5c\x6e\xf8\x93\x1e\x5b\x4b\x27\x0a\xe1\x44\x9a\xa3\x11\x7b\xea\x29\x92\x48\x9e\x9f\xc5\x42\x55\xca\x79\x6d\x1f\x64\xa8\x74\x21\xdf\x11\xdb\x45\xdb\xce\x9e\x6a\xa5\x49\x63\x64\x71\xd9\x6c\x66\xfd\xba\x2b\x34\xad\xaa\xe5\xc7\x65\xa5\xb7\x7f\xfe\xf0\x20\xf3\x86\x72\x07\xbe\x27\xf0\xd4\x9c\x77\x66\xde\x8d\x1d\x3b\x57\xe3\xf7\x96\x31\x8a\x1f\xbd\x26\x38\x9c\xa0\xa7\x90\xf0\xa2\x8c\x17\x5e\xd0\x53\x50\x90\x4f\x06\x97\x55\x9a\x60\x00\x48\xe9\xa5\xd7\xc4\x5e\xb3\x8e\x82\x47\xcf\x39\xd0\xdf\x27\x6e\xc0\x53\xc6\x08\x70\xd8\xbd\x47\x2e\xf3\xf4\x9a\xd8\xa1\x8d\x59\xd0\x5c\xb5\xd2\xdd\x86\xff\x25\xc1\xa6\x51\x12\xec\x24\xd8\x08\x9d\x44\xb0\x99\x9d\xde\x4b\xb5\x5c\x11\xa3\x10\x7b\xe2\xc7\xc8\xf1\x22\xe4\x70\x06\xb8\xd8\x43\x4d\xc0\x4b\xdd\x64\x90\x5f\x60\x4c\x39\xba\xba\xfd\xa7\xc7\xc5\xad\x1c\x65\xbc\x81\xe8\xd7\x4f\x15\x36\xbf\x49\x83\x69\x14\x86\x0a\x4a\xf0\x15\xa3\x64\xe5\x92\x95\xc3\xdf\x3b\x37\x2b\x97\xe0\x2b\x4e\x49\xb0\x93\x60\x23\x74\x4e\xf0\x15\xef\x0e\x5d\x8e\x8b\xd7\xc8\x07\xc2\x7a\xe4\x4f\x82\x1e\xaf\x75\x91\xfc\xa5\x03\x6f\xed\xa6\x66\xb3\x5a\xc7\x42\x9d\xa5\xb8\x91\xe5\x35\xa1\x04\x7d\xec\x8e\xb3\x28\x90\x37\x0b\xd5\xb4\xa1\x16\x32\x0b\xb3\x92\x59\x1c\x55\x1f\x6e\x2d\xa3\x0d\x24\xcc\x6a\x66\xe1\x96\x33\x8b\xf5\x25\xa1\x16\x34\x0b\xb4\xa2\x59\x80\x25\xcd\x42\xad\x69\x16\x6a\x51\xb3\xe0\xf9\x6b\xb5\xc3\xa7\x8d\x7e\x62\x72\x03\xef\x9c\xf3\x30\x05\x73\x54\x04\x78\xc2\x7a\xb9\xea\xe3\x4e\x8e\xb9\xef\x08\x9a\x2d\x3e\xd7\x38\x5d\xeb\x52\x2f\x1f\x7f\xe5\x28\xe4\x80\xdc\x04\x1c\x19\xbf\xd8\x1f\x6d\x72\x99\x76\xc4\x72\x99\x3e\x07\x4e\xc9\x6f\xfa\x8a\x8e\x82\x5f\x03\x80\x64\xf2\x99\x62\x94\x5c\x2b\xc9\xb5\x82\xbf\x77\x6e\xae\x95\x40\x00\x18\x0b\xfc\x45\x80\x32\x8c\x89\x63\xbe\xc8\x05\x7b\x2c\x89\x62\xcf\x0c\x8f\x23\xd8\xe0\x8e\x35\x4e\x0e\x12\xe1\x00\xba\xc9\x41\x05\xec\x9f\xab\x9c\x4a\x3e\xba\x81\xb7\x92\x8f\x2e\xf9\xe8\x92\x8f\x2e\xf9\xe8\x9e\x51\xf2\xd1\x25\x1f\x5d\xf2\xd1\x91\xdf\x4c\x3e\xba\x61\x4a\x3e\xba\x97\x6f\x26\x1f\xdd\x41\x4a\x3e\x3a\x0a\x25\x1f\x5d\xf2\xd1\x25\x1f\x1d\xf9\xe5\xe4\xa3\x4b\x3e\xba\xe7\x2f\x26\x1f\x5d\x36\x33\x1f\x1d\xf9\x51\x61\x96\x33\x4e\x1d\x28\xab\xbb\x48\x83\xc3\x6c\x3c\x3d\x95\x32\xc8\x91\xad\xb5\x9c\xae\xe5\x9f\x8d\x26\xba\x1b\x71\xcc\xb3\xad\xf4\xf4\xab\x7c\x84\x4a\x2b\xf0\xe0\x15\x0c\xaa\x98\x3a\x0c\xcb\x9a\x1d\xd0\x11\x9e\x3d\x3b\x83\x72\xec\xec\x13\x47\xe5\x21\x60\x84\xa1\xea\xf0\x1a\x36\x3c\xbe\xe1\xd6\xad\x61\xae\x2a\xb3\x56\xcd\xd1\x0c\x19\x5e\x99\x86\xb1\xb6\xfc\xb2\x2b\xbc\x35\x0e\x28\xb5\xc2\x5c\x66\x56\x79\x15\x66\x5f\xbc\x92\x2a\x47\xe3\x28\xb8\x80\x0a\x83\xa1\xba\x7c\x61\xc9\xd0\x24\x43\x83\xf2\x0e\xf4\x02\x92\x16\xb1\x1a\x2f\xc1\x0b\xf7\x4e\x85\xc0\x6d\x72\xe5\xab\xa6\x2c\xaf\x5b\x99\x38\x4d\xea\xcd\x89\xf0\xf0\x14\xd3\x55\x29\xf7\xbe\x37\x0f\xa7\x99\x2c\xca\x96\x0a\xea\xbe\x23\x58\x1b\x60\x9b\xcb\x5c\xaf\xd7\xa2\x22\x0a\xf2\x9c\x06\x4e\xd8\x23\x76\x04\x0d\x9a\x95\x44\x00\xd4\xf0\x2c\xfd\x0e\xec\x20\x43\x7b\xa1\xef\x26\x3b\xe2\xfa\xd1\xd9\x3b\xcb\xb0\x6e\x33\xbe\xeb\x3e\xc8\x93\x88\x03\x81\x08\x9d\xf2\x40\xc1\x7e\xc7\x28\x34\xe8\x88\x5f\xa8\x0f\x77\x8e\xb3\x5d\xb4\xa9\xbe\xea\x51\x7a\x3e\xa3\xfa\xaa\xa9\x90\xe8\xb1\xfb\x4d\x85\x44\x3d\xc4\xdb\x13\x77\x94\x4c\x24\x81\x92\x89\x8c\xf9\x1a\x23\x13\x05\x65\x87\xcd\x1c\x0f\xbc\xa5\xa0\x63\xdf\xc9\xb7\x15\x5b\x78\x0c\x0a\x3e\x57\xe8\x39\xc2\xc7\x16\x3c\xae\xd0\x71\x05\x8e\x25\x00\xb5\x91\x0b\xf5\x30\xf9\xa6\x8b\x5c\x25\xe1\xf9\xd8\xd2\x2a\x0f\xbc\xc7\x38\x8a\x9f\x4c\xa5\x90\x8a\x08\xee\x37\x4c\x9e\xe5\xad\x83\xb0\x2b\x63\x30\x49\x1f\xa5\x5a\xc8\xfc\x31\x2f\x89\x5f\x80\xf3\x64\xad\xad\xbb\x76\xc2\x00\x41\xad\x3c\xc6\x97\x0f\xe3\x79\xe2\x63\xf5\x93\xa1\x2e\xb5\x7d\x3a\xaf\x60\x6d\x26\xa6\x58\x39\x57\xff\x42\x2d\x11\xdf\x13\x7f\x31\x56\xda\x82\x7d\x65\x61\x13\xba\xf9\xbe\x7f\x4b\x51\x10\xdc\xd0\xaf\xe9\x64\xb1\xac\x5c\xe4\x9d\x45\x8b\x25\x3d\x51\xef\x61\x91\x9c\x00\x76\x7d\xfe\x62\xfb\xc9\x6c\x49\x3f\x7a\x1c\x27\xa7\x94\x7f\xd0\xd2\xd4\x1a\xb1\x09\x3d\x89\xea\xf1\x0b\xbc\x49\x6e\xe3\xfe\x58\x77\x1d\x5e\xbe\xcf\x64\xc2\x87\x8b\xdb\xe6\x46\x9a\x4a\x3a\x69\x2f\x54\xe5\x2e\xb4\xb9\xe8\x9a\xfa\x29\x73\x06\x66\x13\x9b\xaf\x24\x47\x98\x8f\x7e\x7b\x66\xb3\xc6\xc7\xb0\x38\x2e\xaf\xaf\x75\x7e\xfb\x86\x6d\x4e\x92\x16\xa6\xb4\xcc\x9b\x75\x19\x2f\xd5\x46\x5e\x3b\xed\xad\xdb\xbf\xff\x42\x82\xd3\x2f\x29\xc1\xe9\xe1\xee\x12\x9c\xa6\x50\x82\xd3\x09\x4e\x8f\x50\x82\xd3\x94\xf7\xe7\x00\x10\x12\x9c\x7e\xfd\x5a\x82\xd3\x07\x29\x49\xcb\xcc\x59\x77\xda\xa0\xe2\x2c\x2b\xd5\x9d\xac\xa4\xb5\x57\x46\xdf\x4c\xe6\x31\xc7\x90\x37\xf7\x9e\x05\x03\x71\xcf\xff\x02\x2a\xe7\xf6\x92\x50\x65\x63\xe4\xb7\x95\x91\x76\xa5\x4b\x60\x4a\x78\x79\x37\x38\xaa\x00\xde\x01\xf0\x98\x02\xd7\xc2\xcc\xc5\x65\x23\x7e\x16\x07\x86\x20\xfd\x93\x84\xab\xb0\xd1\xfd\x49\xa2\xa5\x18\x88\x9e\x87\xe6\x03\xef\xe9\xa3\x28\x1e\x47\xf0\xcc\xe9\xc7\xb1\x08\x03\x87\x84\x60\x90\x00\xfc\x11\x11\x7b\x70\x50\xfa\xd1\xae\xce\x41\xf0\x86\xc1\xc8\xaa\x52\x4e\x89\xf2\x52\x96\xe2\xf1\x5a\xe6\xba\x42\xaa\x88\x1d\xcf\x50\xd5\xd2\x28\x5d\xcc\x78\x80\xb6\xc9\x73\x69\xed\xac\xad\x3d\x63\xf7\x35\x73\x7b\x9f\x34\x1c\x81\xe6\xa8\x76\x9c\x5a\x4b\xdd\xb8\xd9\x0a\x34\xf8\x49\x93\x25\xff\xd8\xac\xc3\x14\x37\x03\x99\x41\xa5\xdd\x25\x83\x2b\x50\xea\xb8\x79\x04\x79\x62\xb7\x51\x3e\x1f\xaf\x26\x8f\xbc\xdc\x74\x33\xef\x89\x38\xca\xdd\xc2\xda\x68\xa7\x73\x0d\x85\x69\x32\x3a\xc2\x43\xc3\x9f\x71\x2b\x55\x2b\x4d\x1b\xd0\x69\xa4\x28\x54\xf2\xf2\x40\x94\xbc\x3c\x87\x86\x98\xbc\x3c\xc9\xcb\x33\x48\xc9\xcb\x73\x90\x92\x97\xa7\xa7\x1f\x70\x0f\x94\xbc\x3c\xc9\xcb\x13\x61\x80\xc9\xcb\xb3\x47\xc9\xcb\xf3\xf2\xdd\xe4\xe5\x79\xf1\xca\xdb\xf2\xf2\xf4\xd7\xf7\xc9\xf5\xa8\x50\xa9\x2a\xd5\x5a\x51\xdd\x3d\x59\x84\x2c\xd7\x2c\xae\x65\x5e\xec\x96\xf6\xed\x7d\x19\xf8\x82\x95\x79\x63\x94\x7b\x7c\xaf\x2b\x27\x1f\x88\x2a\x0d\xe7\x22\x51\x96\xfa\xfe\xca\xa8\x3b\x55\xca\xa5\xfc\x60\x73\x51\x0a\xa4\x60\x04\xef\x0e\x6d\x2e\x6a\x71\xa3\x4a\x85\xad\x14\x33\x61\x6b\xf1\xe6\x5c\x0f\x59\x56\x18\x24\xf6\x3e\x3b\x8b\xaf\x62\xdd\x42\x78\x62\x5c\x60\x89\x39\xfc\x5a\x1b\x9d\x7f\xd6\x4d\x05\x20\x0b\x96\xdf\x52\x14\x5f\xaa\xf2\xf1\xab\xd6\xee\x67\x55\x4a\xfb\x68\x9d\x04\x32\xa4\x71\xbe\xcc\x34\xd5\x3b\xfb\x8b\xd1\x0d\xc0\x4e\x7b\x16\xf7\x9f\xff\x98\x14\x9e\xb6\xa3\xfb\x4d\x57\x9b\x19\x39\xc2\x3c\x7c\xb7\x12\x48\x4c\x74\xbc\x69\xb0\xf2\x93\xaa\x9a\x87\x2f\x6d\x96\x83\xe9\xcb\xf3\xc8\x3b\xc9\x4a\xee\x8a\x67\x22\xd6\xd4\x1b\xff\x81\x1d\xb5\xaf\x1d\xa3\xa3\x06\xe2\x20\x76\x47\x0c\x55\x79\xaf\xaa\x42\xdf\xdb\x23\xf1\xd0\x72\x6d\xc5\x7b\x23\x0b\x59\x39\x25\xca\xeb\x1a\xbd\xc5\xc5\x9c\xfe\xd7\xdd\x1e\x2d\x83\xf7\x56\x81\x1c\xa9\xc7\xc9\xf1\xa7\x13\xc6\x35\x75\x3a\x7d\x22\xd3\xdc\xc1\x52\x3a\x7d\xda\x75\x93\x4e\x9f\x5e\x52\x3a\x7d\xf2\x50\x3a\x7d\x7a\xd9\x4f\xf2\xcd\xee\x51\x3a\x7d\x1a\x1c\x55\x3a\x7d\x3a\xc1\x00\xd3\xe9\xd3\x1e\xa5\xd3\xa7\x97\xef\xa6\xd3\xa7\x17\xaf\xbc\xad\xd3\x27\xeb\x0a\x45\xf4\xe1\xa3\xde\xb2\xb6\xe9\x2f\x15\x35\x93\x36\xda\xbc\x93\x66\xad\xaa\xf6\x0c\xe2\xb3\xb4\x56\x2c\x25\x3d\x93\x3c\xc8\xda\x07\xba\x9a\x2e\xc5\xa5\x73\x50\xbb\xf4\x09\xbb\xd3\x65\xb3\x96\x97\xf2\x4e\x91\x0f\x1b\x27\x8f\xfe\x2e\xda\xd1\xa0\x25\x00\x58\x9a\xe9\x08\x81\xcb\x78\x3c\xf1\xee\xfb\xc9\xaf\xcc\x27\x3b\x75\xc7\x50\xed\x71\xc7\x5c\xf8\x69\xbd\x19\xcc\x51\xd8\xa9\xeb\xc9\xe8\x5a\x2c\xc1\x73\xd0\xf9\xf2\xef\xee\x64\x09\xef\x08\xcd\x8d\x6c\x9b\x9b\xa3\xac\xd3\x53\x3f\x1f\x1e\x6a\xc8\xdf\x7e\x14\xe9\xdf\x72\xeb\x19\x0a\xff\xbd\x36\xb7\xaa\x5a\x5e\x2a\xe2\xb4\x42\x13\x7a\x0e\xf5\xf0\xc8\xa9\xa8\x11\x3d\x06\xa5\x9f\x46\x15\x24\xe2\x45\xe7\x5d\xe5\x82\x3d\xe8\x0c\xef\x65\xc8\xc9\x1e\xe4\xf1\x82\x05\x08\xf4\x49\x73\xa6\x18\xdd\x9f\xf2\x2e\xa1\xf1\x7c\xd1\x8c\xb5\xe4\xfb\xa1\x79\x5e\xe8\x00\x6f\x30\xd3\x03\xcd\xee\x91\x9b\xb9\x08\xf6\x3d\x73\x3c\xcf\x4c\xbf\x33\xc7\xeb\x8c\xfa\x9c\x79\xf7\x0d\x41\x6f\x0c\xec\x8b\xe1\x7b\x62\xd8\x7e\x98\x68\x5e\x18\xdc\xcb\x7c\x14\xf0\x04\x38\x7a\x70\x28\x84\xfa\x1b\x67\xab\xcb\x13\x67\x0f\xd2\x9c\x58\x0e\x7a\x1c\x48\xa9\x9c\x20\x62\x82\x88\x1e\x4a\x10\xf1\x19\x25\x88\x78\xe8\x95\x04\x11\x93\x21\x1d\xa1\x04\x11\xfd\x34\x5b\x5d\x9e\x38\x7b\x90\xe6\xc4\x72\xb0\x0b\x93\xf0\x28\x94\x20\x18\x61\x60\x2a\x8e\x44\x85\x02\xc4\x8f\x20\xde\x60\x30\x1b\x66\xaf\xa0\x25\xe7\x84\xe1\xa2\x51\x06\x98\x60\x02\xe8\x15\x5d\x58\x44\xd3\xc1\xcb\xc4\x40\xab\x20\xe7\xf0\x50\x2a\x8e\x50\x99\xea\x90\x81\x4c\x8f\x16\x27\x08\xa1\x51\x14\x89\x72\x02\x7c\x40\x04\x8a\xa0\x4f\x78\x52\x11\xdb\x0c\xd9\x65\x9e\x4d\x66\xd9\xe3\x28\xb6\x18\x43\x98\xe0\x28\x11\xb6\x25\x9b\x78\x88\xf5\x98\xc1\xac\xd3\xaa\x7b\x38\x74\x75\xda\xe1\x70\x02\x55\xa7\x1d\x11\xb4\x07\x98\x95\x45\x4c\x7a\xa5\xa5\xd3\x0b\x3e\x1e\x4e\x3a\x25\x4b\x93\x87\x5e\xe9\x42\x5e\xcb\x52\xe6\x4e\x7b\xe3\x3f\x78\x59\x37\x00\x86\x20\x8f\xba\x36\x4a\x1b\xe5\x8f\xaf\x44\xa6\x98\x3e\xbd\x7d\xef\xef\x4b\x61\x2d\xe5\xf2\x27\x79\x0a\xb0\x14\xa0\x69\x1f\x37\xf8\x4a\xda\xc7\xbd\xa4\x59\x59\xad\xb4\x8f\x4b\xfb\xb8\xb4\x8f\x7b\x46\xe7\x85\xb7\xd2\x3e\xee\x30\xa5\x7d\xdc\x49\x47\x94\xf6\x71\xaf\xe8\xbc\xf4\xca\xe9\x05\xff\x4c\xf7\x71\xe4\xe4\x93\x08\xd7\xd3\x13\x4e\xf2\x13\x32\xa2\x97\xea\x90\xb5\x44\x12\x4b\xce\xf1\x0b\xc8\x8f\x6e\x8c\x71\xd1\x94\xb4\x54\x44\xe4\xf1\x82\x09\x29\x11\xce\x5a\xd0\x33\xd0\xa1\x49\xd7\x30\x75\x87\x65\xc3\x3b\xc2\x58\x80\xdc\x77\xd8\x7d\x2d\x28\xdf\xdd\xb4\x1f\x8a\x67\xb7\x43\x6d\x35\x94\xd1\x0e\x36\x75\x48\x16\x3b\xb8\xf1\xf6\x85\xa9\x1a\x47\xb2\xd5\x4d\xa9\x99\x6d\x53\xd7\xa5\x5c\xcb\xca\x89\xb2\x95\x3e\xd2\xba\x02\x3e\x00\x3c\x55\x23\x0a\x93\x90\x6d\xa9\x7d\xb4\xb9\x2b\x63\x7f\x23\xee\xe3\xc0\xfc\x1b\x0c\x08\x08\xfa\x35\x70\xc9\x83\xfc\x19\x80\x2f\x03\xf1\x63\xb0\xe2\x7d\x68\x8c\x82\xe7\x6c\x44\x99\x80\x9f\xa7\x11\x5e\xac\xb0\xdc\x8c\x38\x6f\x70\xf2\x31\xce\x01\xbc\x49\x73\xa7\x72\xf9\x2e\xcf\x75\x53\xb9\xa8\x08\xce\xe9\x52\x1a\x41\xe2\x25\xa2\xde\xc1\xd8\x4d\x2e\x16\x32\x27\xee\x6b\xc1\x95\xb8\x95\xd3\x64\xed\xd8\x7c\x9e\x20\x1c\x86\xb1\x1a\xdf\xad\x07\x94\x76\x66\x7a\x63\x06\xe8\x6d\xe8\x93\xa3\x5f\xd7\x26\x34\xe8\x7d\xa4\x36\x72\xa1\x1e\x86\xbe\xd6\xfb\x7d\x46\xd6\xa5\xca\xc5\xe0\xda\x51\xfc\x01\xfe\xf5\xb1\xce\x08\x27\x97\x83\x4c\x4e\x11\x44\xa3\xcb\x52\x55\xcb\xef\x75\x21\xdc\xe8\xea\x52\xa5\x7a\x2d\x1e\xae\x1b\xb3\xf4\x72\x0a\xc9\x43\x85\x79\xa6\x20\x8f\x54\x90\x27\x6a\x2d\x1e\xbe\x57\xe2\x4e\xa8\x52\xdc\xf8\x71\xfe\x19\x7f\x2a\x49\x38\x7d\xdb\x11\xc2\x50\x3d\xfd\x8c\x61\xba\x8b\xad\xb4\x1d\xf8\x71\xb4\x5d\xbb\x12\xe6\x60\x93\x3e\x5e\xcf\x75\xb5\x50\xcb\xeb\xd6\x9b\x16\x22\x7c\xe2\xde\x7e\x28\x85\x75\x2a\xff\x57\xa9\xf3\xdb\x6b\xa7\x4d\x14\x19\x5c\xd8\x6f\x84\x1d\x22\x99\x83\x6a\x61\x9c\xa2\xe4\xbd\x99\x26\x96\x82\x9a\xa7\x86\xee\xeb\xe8\x92\x19\x7d\xbc\x8c\x34\x43\x94\x1d\xc7\xc5\xb6\xd3\x50\x69\x13\x7f\x35\x46\x5e\x2a\x7b\x1b\x83\x53\x72\x91\xaf\x54\xb5\xfc\xac\x8b\x78\xec\x52\x28\x7b\x1b\x15\xa2\x6e\x1a\xfc\xfe\xf5\x63\xb4\xf6\x22\x8b\xc7\xad\xf2\x07\xb7\x40\xe1\x3d\x31\x99\x9d\xc6\x9b\xfd\x92\x79\x1f\xfa\xfe\xf5\x63\x14\xfe\xfd\x59\x8d\x9b\x4d\x2a\xff\xc6\xd7\x0d\x56\xe6\x46\xc6\xdd\x62\x6d\xec\x8c\x8c\xd8\x22\x6d\x4d\x77\x1f\x32\xfe\x58\x3f\xb8\xd0\x75\xcd\x65\xbd\x5a\x8c\x2e\x17\x19\x42\xea\x4a\x39\xed\x8f\xfb\x21\xee\x47\xe1\xe8\x42\xbf\x1f\x86\x12\x3f\x72\x32\x91\xef\x79\xd8\x27\x63\xd0\x20\xbb\x26\xbf\x4a\x2f\x8e\x45\x76\xff\x54\x5f\xe3\x14\xf1\xa1\x14\x37\x77\x54\x79\xec\xb9\x3a\x58\xce\x54\x55\x8c\x0f\xfd\x44\x30\x71\x2a\x3e\x7e\x43\x4c\x77\xd6\xc0\xb3\xdb\xf5\x7c\x16\xa3\xc7\xa0\xd4\x95\x28\xe4\x42\x34\xa5\xa3\x00\xcf\x69\x76\x15\x24\xe3\x31\x89\xc7\x73\x2a\xb7\xe4\x9a\x30\x97\x1d\xe1\xf9\xa9\x51\x67\x21\x3d\xc0\x12\xfa\x48\x24\x57\xe4\xad\xf4\x9f\xa5\x5c\xb4\x03\x25\x22\x88\xa8\x19\x25\x29\x5a\x88\x3c\x35\xba\xee\xc2\x52\x62\x69\x5e\x9a\x3a\xb0\x2a\x8a\x22\x30\xea\x2e\x9a\x25\x8e\x6e\xd3\x2a\x5d\xc8\xab\xe6\xa6\x54\x76\x75\xfd\xd6\x8c\xd1\x54\x7e\x95\x77\xce\x19\x75\xd3\x38\xff\xf7\xcf\xe5\xb6\x10\x71\x93\xdc\x72\x6a\xa8\xd8\x14\xfa\xbe\xba\x17\xa6\x78\x77\x35\xea\xd0\x48\x76\xd4\x4b\x0b\x25\xcb\x82\x20\x8f\x9c\xb6\x37\x24\x6a\xf5\xbb\x34\x96\x51\xf7\x18\x8a\x87\x68\x3f\x03\x4b\x8f\x3d\x79\x4c\xc4\x76\x4c\x80\x09\x27\x07\x3b\xfc\x00\x38\x65\x17\x6c\xfb\xf3\xc4\x4c\x9a\xeb\xca\x09\x55\xa1\x15\x26\x19\x7c\x5a\xa8\x3b\x65\xa9\x87\xde\xcc\x3e\xfa\x59\x9b\x91\x28\xf4\x43\x8a\x2f\x09\x08\x98\x3d\x0d\x4c\x25\x35\x28\xd7\xb5\x7b\xf4\xa4\x86\x27\x7b\xfe\x64\xa1\x1a\x6f\x71\x6b\xba\xd3\x4a\xfd\x25\x3f\xa9\xb5\xf2\x86\x97\x10\x5b\x24\xcd\xc7\x62\x34\x5a\xea\x44\xbe\x99\xb2\x79\x33\x87\x77\x4e\x98\xa5\x74\x7f\xfc\xf1\xdb\x8c\xfd\xc3\xf7\xf7\xca\x1f\xb8\x73\xaa\xe1\xd1\xb8\xb8\x94\x0f\xbf\xb7\x70\xfe\xed\x6f\xf2\x34\x2d\x94\x72\x2e\xbb\x95\xe4\x69\x9d\xd5\x86\x6e\x51\xea\xfc\x36\x8e\x43\xbe\x10\x4e\xd8\xc8\x87\x8f\x4f\x6d\x7e\xff\x1e\xcd\xeb\x4c\x9a\x95\x65\x2e\xaf\x36\x9b\x27\xeb\x64\xe5\x62\x45\x2b\xbc\xad\xb8\x96\xba\x88\x9e\x18\xe4\xf8\x91\x03\xdd\x47\x04\x73\x8b\x72\x5f\x65\xad\xa3\xc8\x90\x32\x6d\xa6\x1a\xe2\x3c\x90\x26\xb6\xd6\x56\x45\x6e\xf2\x4e\x51\x1c\x0b\x51\xcf\x81\x76\xdf\x11\xbc\x5c\x65\x63\x9d\x34\x71\x4e\xfb\x65\x55\xd4\x5a\x11\xca\xca\x01\x72\x3d\xe3\xd3\x79\xda\x5a\x6d\x27\x65\x5c\xf8\xc6\x77\x85\xa4\xb5\x5c\x69\xeb\x2d\xa2\x47\x5d\xca\xa8\x13\xef\x8b\x2a\x05\x1a\x23\xaa\xb2\x08\xb3\xa9\x6c\xa4\x63\x91\x7c\x25\xea\x77\x8d\x5b\x5d\x2a\x9b\xeb\x3b\x49\xd5\x3d\x14\xac\xd7\x37\x7d\x2d\x2d\x5d\x07\x51\x1a\x8e\x6c\x9e\xbb\xfc\x1a\x4e\xc7\xbd\xb1\xac\xfe\x8c\xa5\x75\x9f\x56\xfb\x63\xb5\x51\x85\xc2\xef\xb4\x9a\xff\x66\xbd\xd6\xc6\x09\xff\x1d\xc4\xd3\xed\xab\xd3\xc6\xc7\xbb\x37\xec\xdc\x23\x57\xed\x4a\x1e\x55\x7d\xaa\x3f\xc7\x66\xfa\x62\xc3\xd5\xa3\xbf\xef\x0f\x3c\x54\x0d\x57\x71\xa0\xc9\xac\x81\x44\x77\x2b\xf0\xc8\x41\x6c\x1e\x1b\x79\xf1\x34\xa6\xd0\xf5\xab\xb7\x5b\xc7\xce\x07\xf5\xbe\x14\x6a\xd4\x2d\x4c\x36\xab\x9b\x86\xde\xc0\xb6\x6b\xfb\x1d\xc1\x33\xbd\xd2\x4e\x57\xf3\xdf\xaa\x17\x47\x0e\x9a\xdb\x74\x18\x3c\xb7\xda\xb8\x7b\x6d\x22\xfa\x51\x67\x1f\xb1\x79\xd6\x01\x8e\xb5\xd1\x9b\xdf\xc7\xbb\x3b\x9b\xc0\x0c\x62\xb2\xa7\x49\x42\x33\x48\xa1\xa2\xdc\xc6\x81\x51\x33\x1f\xe7\x57\x22\x23\xc7\x76\xee\x88\x71\x4c\xde\x11\x3d\x8e\x62\x47\x78\x44\xc5\xcb\x81\xe2\x85\x7d\xf0\xa2\x5d\x19\x7f\x5a\x38\x75\xd2\x68\xb1\xa2\xfb\xcf\x93\x8e\xe3\x77\x04\x06\xc8\xec\xbf\x84\x54\x47\x9b\x3c\x75\x0b\x35\xce\xf4\x65\x27\xd4\xfc\x53\x19\x3e\x57\xc4\x70\xba\x1d\xbd\x1d\x5d\x83\xc5\xbf\x85\xf7\x97\x31\x63\xe2\x76\xc4\x56\x75\x19\x2f\x4e\x2e\x4a\xcf\xbc\xca\x8b\x78\x14\xdd\x8e\x58\xea\x22\x4b\x16\x61\x88\x78\xb1\x78\x7b\x83\x0d\x10\x18\x66\x7c\xde\x8e\x82\x64\x06\x8e\xd9\x8b\xd4\x2f\x1e\xc7\x17\xa5\x63\xbe\xa8\x42\x51\x7e\x3b\x62\x4a\x2a\x0f\xa4\xcc\x11\x74\x80\x9d\x74\xde\xd6\x1f\xcd\x50\xa7\x4d\xc1\x21\x4a\x9b\x82\xb4\x29\x98\x68\x53\xf0\x3c\x5d\xde\x37\x7d\x2b\x89\x70\x95\x71\x49\xa4\x29\x94\xac\x26\x8d\x58\xcf\x32\xf9\x50\x2b\x46\x4e\xb8\x8c\x95\x17\x2e\x63\x4a\x35\x26\xcf\x93\xc7\xed\x93\xa5\x11\xe2\xad\xe8\x21\xf6\xc4\x5c\x1e\x9d\x2f\x2f\xd4\xc1\xf9\x67\xa3\x6f\x1e\xe3\xa4\x79\x5b\x52\xf2\x61\x9f\xd0\x11\x6d\xe4\x52\x59\x17\x31\x64\xcb\xc9\x4a\x54\xb1\x2e\x12\x44\x4d\x3f\xd1\x7b\xdd\x8f\x1c\x4c\xd6\xcd\x2f\xc1\x31\x1f\xca\xb5\xe6\x26\x8a\x43\x3e\x76\x74\xca\x5a\xf8\x93\x1c\x92\x5b\xbb\x95\x8f\x6d\x3e\xbe\x58\xed\x9d\x41\x0a\x1d\xad\x63\xc5\x27\xa4\xb8\x90\x39\xe6\xbb\x69\x05\x64\xf4\x89\x58\x19\x71\x6c\x2e\x4a\xf9\xf1\xcb\x0c\x95\xc4\x52\x38\x79\x2f\xe2\x19\xa1\xda\x68\x27\xf3\x0d\x10\xbc\xd4\x6b\xa1\xe2\x45\xb2\x25\x01\xf2\xe7\xe0\xb6\xe5\x87\x4a\xdc\x94\x7e\x08\x0a\x4c\x92\xd3\x46\x2c\x65\xd4\xf4\x8b\x4f\x6d\x5e\xc5\xd4\xaf\xf6\xd1\x3a\x19\xef\x5e\x66\x87\x0b\x8e\x9e\x11\xef\x49\x1a\xc7\x91\x76\xcf\xb6\xe3\x4f\xb5\xf3\x11\xac\xb7\xbc\xde\xb0\xb3\x09\x36\x48\xd9\x94\xce\x30\x4b\xc1\xdb\xc9\xa6\x14\x3b\x01\xd2\x04\x69\x40\x69\x1a\xa1\xd3\xdd\x3a\x4a\xf4\xea\xec\x83\xc5\xde\x1c\x44\x88\x6e\xd7\xf6\x9b\xb4\x75\xbc\x3b\x06\xa4\x2f\xba\xb3\xf5\x4a\x1a\x39\xdb\xe8\xc5\x2d\xd0\x29\x55\xfe\x18\x2d\xe4\xf0\x45\xbb\x13\x2c\x26\x25\x86\x61\x82\xf8\x48\x4f\x20\x02\x81\x25\xbc\x8f\xd4\xba\xf8\x26\xd7\x75\x39\x52\x4a\x82\xc2\x2b\xb9\xae\x9c\xd1\x65\x19\xe7\x52\xb5\xa8\x2a\xed\x68\x05\x6e\xe6\x72\xc3\x9f\xf4\xd8\x5a\x3a\x51\x08\x27\xd2\x1c\x8d\xd8\x53\x4f\xed\x2a\xf2\xfc\x2c\x16\xaa\x52\xce\x6b\xfb\x20\x43\xa5\x0b\xf9\x8e\xd8\x2e\xda\x76\xf6\x54\xc2\x46\x1a\x23\x8b\xcb\x66\x33\xeb\xd7\x5d\xfd\x4f\x55\x2d\x3f\x2e\x2b\xbd\xfd\xf3\x87\x07\x99\x37\x94\x3b\xf0\x3d\x1d\xa5\xc8\x7e\x37\x76\xec\x5c\x8d\xdf\x5b\xd6\x56\x74\x71\xf9\xea\xc3\x43\x6d\xba\x4b\x91\x8c\x48\x1f\x38\x9c\xa0\xa7\x90\xf0\xa2\x8c\x17\x5e\xd0\x53\x50\x90\x4f\x06\x97\xc2\x9a\x60\x00\x6d\x55\x2a\xe6\xc4\x05\xac\x59\x47\xc1\xa3\xe7\x1c\xe8\xef\x13\x37\xe0\x29\x63\x04\x38\xec\xde\xeb\x17\x9d\xf1\x32\x3b\xb4\x31\x0b\x9a\xab\x56\xba\xdb\xf0\xbf\x24\xd8\x34\x4a\x82\x9d\x04\x1b\xa1\x93\x08\x36\xb3\xd3\x7b\xa9\x96\x2b\x62\x14\x62\x4f\xfc\x18\x39\x5e\x84\x1c\xce\x00\x17\x7b\xa8\x09\x78\xa9\x9b\x0c\xf2\x0b\x8c\x29\x47\x57\xb7\xff\xf4\xb8\xb8\x95\xa3\x8c\x37\x10\xfd\x5a\x96\x6d\x3e\xa1\x6f\xd2\x60\x1a\x85\xa1\x82\x12\x7c\xc5\x28\x59\xb9\x64\xe5\xf0\xf7\xce\xcd\xca\x25\xf8\x8a\x53\x12\xec\x24\xd8\x08\x9d\x13\x7c\xc5\xbb\x43\x97\xe3\xe2\x35\xf2\x81\xb0\x1e\xf9\x93\xa0\xc7\x6b\x5d\x24\x7f\xe9\xc0\x5b\xbb\xa9\xd9\xac\xd6\xb1\x50\x67\x29\x6e\x64\xd9\xb3\x09\x2e\xeb\x61\x06\x26\x1c\xf2\x66\xa1\x9a\x36\xd4\x42\x66\x61\x56\x32\x8b\xa3\xea\xc3\xad\x65\xb4\x81\x84\x59\xcd\x2c\xdc\x72\x66\xb1\xbe\x24\xd4\x82\x66\x81\x56\x34\x0b\xb0\xa4\x59\xa8\x35\xcd\x42\x2d\x6a\x16\x3c\x7f\xad\x76\xf8\xb4\xd1\x4f\x4c\x6e\xe0\x9d\x73\x1e\xa6\x60\x8e\x8a\x00\x4f\x58\x2f\x57\x7d\xdc\xc9\x31\xf7\x1d\x41\xb3\xc5\xe7\x1a\xa7\x6b\x5d\xea\xe5\xe3\xaf\x1c\x85\x1c\x90\x9b\x80\x23\xe3\x17\xfb\xa3\x4d\x2e\xd3\x8e\x58\x2e\xd3\xe7\xc0\x29\xf9\x4d\x5f\xd1\x51\xf0\x6b\x00\x90\x4c\x3e\x53\x8c\x92\x6b\x25\xb9\x56\xf0\xf7\xce\xcd\xb5\x12\x08\x00\x63\x81\xbf\x08\x50\x86\x31\x71\xcc\x17\xb9\x60\x8f\x25\x51\xec\x99\xe1\x71\x04\x1b\xdc\xb1\xc6\xc9\x41\x22\x1c\x40\x37\x39\xa8\x80\xfd\x73\x95\x53\xc9\x47\x37\xf0\x56\xf2\xd1\x25\x1f\x5d\xf2\xd1\x25\x1f\xdd\x33\x4a\x3e\xba\xe4\xa3\x4b\x3e\x3a\xf2\x9b\xc9\x47\x37\x4c\xc9\x47\xf7\xf2\xcd\xe4\xa3\x3b\x48\xc9\x47\x47\xa1\xe4\xa3\x4b\x3e\xba\xe4\xa3\x23\xbf\x9c\x7c\x74\xc9\x47\xf7\xfc\xc5\xe4\xa3\xcb\x66\xe6\xa3\x23\x3f\x2a\xcc\x72\xc6\xa9\x03\x65\x75\x17\x69\x70\x98\x8d\xa7\xa7\x52\x06\x39\xb2\xb5\x96\xd3\xb5\xfc\xb3\xd1\x44\x77\x23\x8e\x79\xb6\x95\x9e\x7e\x95\x8f\x50\x69\x05\x1e\xbc\x82\x41\x15\x53\x87\x61\x59\xb3\x03\x3a\xc2\xb3\x67\x67\x50\x8e\x9d\x7d\xe2\xa8\x3c\x04\x8c\x30\x54\x1d\x5e\xc3\x86\xc7\x37\xdc\xba\x35\xcc\x55\x65\xd6\xaa\x39\x9a\x21\xc3\x2b\xd3\x30\xd6\x96\x5f\x76\x85\xb7\xc6\x01\xa5\x56\x98\xcb\xcc\x2a\xaf\xc2\xec\x8b\x57\x52\xe5\x68\x1c\x05\x17\x50\x61\x30\x54\x97\x2f\x2c\x19\x9a\x64\x68\x50\xde\x81\x5e\x40\xd2\x22\x56\xe3\x25\x78\xe1\xde\xa9\x10\xb8\x4d\xae\x7c\xd5\x94\xe5\x75\x2b\x13\xa7\x49\xbd\x39\x11\x1e\x9e\x62\xba\x2a\xe5\xde\xf7\xe6\xe1\x34\x93\x45\xd9\x52\x41\xdd\x77\x04\x6b\x03\x6c\x73\x99\xeb\xf5\x5a\x54\x44\x41\x9e\xd3\xc0\x09\x7b\xc4\x8e\xa0\x41\xb3\x92\x08\x80\x1a\x9e\xa5\xdf\x81\x1d\x64\x68\x2f\xf4\xdd\x64\x47\x5c\x3f\x3a\x7b\x67\x19\xd6\x6d\xc6\x77\xdd\x07\x79\x12\x71\x20\x10\xa1\x53\x1e\x28\xd8\xef\x18\x85\x06\x1d\xf1\x0b\xf5\xe1\xce\x71\xb6\x8b\x36\xd5\x57\x3d\x4a\xcf\x67\x54\x5f\x35\x15\x12\x3d\x76\xbf\xa9\x90\xa8\x87\x78\x7b\xe2\x8e\x92\x89\x24\x50\x32\x91\x31\x5f\x63\x64\xa2\xa0\xec\xb0\x99\xe3\x81\xb7\x14\x74\xec\x3b\xf9\xb6\x62\x0b\x8f\x41\xc1\xe7\x0a\x3d\x47\xf8\xd8\x82\xc7\x15\x3a\xae\xc0\xb1\x04\xa0\x36\x72\xa1\x1e\x26\xdf\x74\x91\xab\x24\x3c\x1f\x5b\x5a\xe5\x81\xf7\x18\x47\xf1\x93\xa9\x14\x52\x11\xc1\xfd\x86\xc9\xb3\xbc\x75\x10\x76\x65\x0c\x26\xe9\xa3\x54\x0b\x99\x3f\xe6\x25\xf1\x0b\x70\x9e\xac\xb5\x75\xd7\x4e\x18\x20\xa8\x95\xc7\xf8\xf2\x61\x3c\x4f\x7c\xac\x7e\x32\xd4\xa5\xb6\x4f\xe7\x15\xac\xcd\xc4\x14\x2b\xe7\xea\x5f\xa8\x25\xe2\x7b\xe2\x2f\xc6\x4a\x5b\xb0\xaf\x2c\x6c\x42\x37\xdf\xf7\x6f\x29\x0a\x82\x1b\xfa\x35\x9d\x2c\x96\x95\x8b\xbc\xb3\x68\xb1\xa4\x27\xea\x3d\x2c\x92\x13\xc0\xae\xcf\x5f\x6c\x3f\x99\x2d\xe9\x47\x8f\xe3\xe4\x94\xf2\x0f\x5a\x9a\x5a\x23\x36\xa1\x27\x51\x3d\x7e\x81\x37\xc9\x6d\xdc\x1f\xeb\xae\xc3\xcb\xf7\x99\x4c\xf8\x70\x71\xdb\xdc\x48\x53\x49\x27\xed\x85\xaa\xdc\x85\x36\x17\x5d\x53\x3f\x65\xce\xc0\x6c\x62\xf3\x95\xe4\x08\xf3\xd1\x6f\xcf\x6c\xd6\xf8\x18\x16\xc7\xe5\xf5\xb5\xce\x6f\xdf\xb0\xcd\x49\xd2\xc2\x94\x96\x79\xb3\x2e\xe3\xa5\xda\xc8\x6b\xa7\xbd\x75\xfb\xf7\x5f\x48\x70\xfa\x25\x25\x38\x3d\xdc\x5d\x82\xd3\x14\x4a\x70\x3a\xc1\xe9\x11\x4a\x70\x9a\xf2\xfe\x1c\x00\x42\x82\xd3\xaf\x5f\x4b\x70\xfa\x20\x25\x69\x99\x39\xeb\x4e\x1b\x54\x9c\x65\xa5\xba\x93\x95\xb4\xf6\xca\xe8\x9b\xc9\x3c\xe6\x18\xf2\xe6\xde\xb3\x60\x20\xee\xf9\x5f\x40\xe5\xdc\x5e\x12\xaa\x6c\x8c\xfc\xb6\x32\xd2\xae\x74\x09\x4c\x09\x2f\xef\x06\x47\x15\xc0\x3b\x00\x1e\x53\xe0\x5a\x98\xb9\xb8\x6c\xc4\xcf\xe2\xc0\x10\xa4\x7f\x92\x70\x15\x36\xba\x3f\x49\xb4\x14\x03\xd1\xf3\xd0\x7c\xe0\x3d\x7d\x14\xc5\xe3\x08\x9e\x39\xfd\x38\x16\x61\xe0\x90\x10\x0c\x12\x80\x3f\x22\x62\x0f\x0e\x4a\x3f\xda\xd5\x39\x08\xde\x30\x18\x59\x55\xca\x29\x51\x5e\xca\x52\x3c\x5e\xcb\x5c\x57\x48\x15\xb1\xe3\x19\xaa\x5a\x1a\xa5\x8b\x19\x0f\xd0\x36\x79\x2e\xad\x9d\xb5\xb5\x67\xec\xbe\x66\x6e\xef\x93\x86\x23\xd0\x1c\xd5\x8e\x53\x6b\xa9\x1b\x37\x5b\x81\x06\x3f\x69\xb2\xe4\x1f\x9b\x75\x98\xe2\x66\x20\x33\xa8\xb4\xbb\x64\x70\x05\x4a\x1d\x37\x8f\x20\x4f\xec\x36\xca\xe7\xe3\xd5\xe4\x91\x97\x9b\x6e\xe6\x3d\x11\x47\xb9\x5b\x58\x1b\xed\x74\xae\xa1\x30\x4d\x46\x47\x78\x68\xf8\x33\x6e\xa5\x6a\xa5\x69\x03\x3a\x8d\x14\x85\x4a\x5e\x1e\x88\x92\x97\xe7\xd0\x10\x93\x97\x27\x79\x79\x06\x29\x79\x79\x0e\x52\xf2\xf2\xf4\xf4\x03\xee\x81\x92\x97\x27\x79\x79\x22\x0c\x30\x79\x79\xf6\x28\x79\x79\x5e\xbe\x9b\xbc\x3c\x2f\x5e\x79\x5b\x5e\x9e\xfe\xfa\x3e\xb9\x1e\x15\x2a\x55\xa5\x5a\x2b\xaa\xbb\x27\x8b\x90\xe5\x9a\xc5\xb5\xcc\x8b\xdd\xd2\xbe\xbd\x2f\x03\x5f\xb0\x32\x6f\x8c\x72\x8f\xef\x75\xe5\xe4\x03\x51\xa5\xe1\x5c\x24\xca\x52\xdf\x5f\x19\x75\xa7\x4a\xb9\x94\x1f\x6c\x2e\x4a\x81\x14\x8c\xe0\xdd\xa1\xcd\x45\x2d\x6e\x54\xa9\xb0\x95\x62\x26\x6c\x2d\xde\x9c\xeb\x21\xcb\x0a\x83\xc4\xde\x67\x67\xf1\x55\xac\x5b\x08\x4f\x8c\x0b\x2c\x31\x87\x5f\x6b\xa3\xf3\xcf\xba\xa9\x00\x64\xc1\xf2\x5b\x8a\xe2\x4b\x55\x3e\x7e\xd5\xda\xfd\xac\x4a\x69\x1f\xad\x93\x40\x86\x34\xce\x97\x99\xa6\x7a\x67\x7f\x31\xba\x01\xd8\x69\xcf\xe2\xfe\xf3\x1f\x93\xc2\xd3\x76\x74\xbf\xe9\x6a\x33\x23\x47\x98\x87\xef\x56\x02\x89\x89\x8e\x37\x0d\x56\x7e\x52\x55\xf3\xf0\xa5\xcd\x72\x30\x7d\x79\x1e\x79\x27\x59\xc9\x5d\xf1\x4c\xc4\x9a\x7a\xe3\x3f\xb0\xa3\xf6\xb5\x63\x74\xd4\x40\x1c\xc4\xee\x88\xa1\x2a\xef\x55\x55\xe8\x7b\x7b\x24\x1e\x5a\xae\xad\x78\x6f\x64\x21\x2b\xa7\x44\x79\x5d\xa3\xb7\xb8\x98\xd3\xff\xba\xdb\xa3\x65\xf0\xde\x2a\x90\x23\xf5\x38\x39\xfe\x74\xc2\xb8\xa6\x4e\xa7\x4f\x64\x9a\x3b\x58\x4a\xa7\x4f\xbb\x6e\xd2\xe9\xd3\x4b\x4a\xa7\x4f\x1e\x4a\xa7\x4f\x2f\xfb\x49\xbe\xd9\x3d\x4a\xa7\x4f\x83\xa3\x4a\xa7\x4f\x27\x18\x60\x3a\x7d\xda\xa3\x74\xfa\xf4\xf2\xdd\x74\xfa\xf4\xe2\x95\xb7\x75\xfa\x64\x5d\xa1\x88\x3e\x7c\xd4\x5b\xd6\x36\xfd\xa5\xa2\x66\xd2\x46\x9b\x77\xd2\xac\x55\xd5\x9e\x41\x7c\x96\xd6\x8a\xa5\xa4\x67\x92\x07\x59\xfb\x40\x57\xd3\xa5\xb8\x74\x0e\x6a\x97\x3e\x61\x77\xba\x6c\xd6\xf2\x52\xde\x29\xf2\x61\xe3\xe4\xd1\xdf\x45\x3b\x1a\xb4\x04\x00\x4b\x33\x1d\x21\x70\x19\x8f\x27\xde\x7d\x3f\xf9\x95\xf9\x64\xa7\xee\x18\xaa\x3d\xee\x98\x0b\x3f\xad\x37\x83\x39\x0a\x3b\x75\x3d\x19\x5d\x8b\x25\x78\x0e\x3a\x5f\xfe\xdd\x9d\x2c\xe1\x1d\xa1\xb9\x91\x6d\x73\x73\x94\x75\x7a\xea\xe7\xc3\x43\x0d\xf9\xdb\x8f\x22\xfd\x5b\x6e\x3d\x43\xe1\xbf\xd7\xe6\x56\x55\xcb\x4b\x45\x9c\x56\x68\x42\xcf\xa1\x1e\x1e\x39\x15\x35\xa2\xc7\xa0\xf4\xd3\xa8\x82\x44\xbc\xe8\xbc\xab\x5c\xb0\x07\x9d\xe1\xbd\x0c\x39\xd9\x83\x3c\x5e\xb0\x00\x81\x3e\x69\xce\x14\xa3\xfb\x53\xde\x25\x34\x9e\x2f\x9a\xb1\x96\x7c\x3f\x34\xcf\x0b\x1d\xe0\x0d\x66\x7a\xa0\xd9\x3d\x72\x33\x17\xc1\xbe\x67\x8e\xe7\x99\xe9\x77\xe6\x78\x9d\x51\x9f\x33\xef\xbe\x21\xe8\x8d\x81\x7d\x31\x7c\x4f\x0c\xdb\x0f\x13\xcd\x0b\x83\x7b\x99\x8f\x02\x9e\x00\x47\x0f\x0e\x85\x50\x7f\xe3\x6c\x75\x79\xe2\xec\x41\x9a\x13\xcb\x41\x8f\x03\x29\x95\x13\x44\x4c\x10\xd1\x43\x09\x22\x3e\xa3\x04\x11\x0f\xbd\x92\x20\x62\x32\xa4\x23\x94\x20\xa2\x9f\x66\xab\xcb\x13\x67\x0f\xd2\x9c\x58\x0e\x76\x61\x12\x1e\x85\x12\x04\x23\x0c\x4c\xc5\x91\xa8\x50\x80\xf8\x11\xc4\x1b\x0c\x66\xc3\xec\x15\xb4\xe4\x9c\x30\x5c\x34\xca\x00\x13\x4c\x00\xbd\xa2\x0b\x8b\x68\x3a\x78\x99\x18\x68\x15\xe4\x1c\x1e\x4a\xc5\x11\x2a\x53\x1d\x32\x90\xe9\xd1\xe2\x04\x21\x34\x8a\x22\x51\x4e\x80\x0f\x88\x40\x11\xf4\x09\x4f\x2a\x62\x9b\x21\xbb\xcc\xb3\xc9\x2c\x7b\x1c\xc5\x16\x63\x08\x13\x1c\x25\xc2\xb6\x64\x13\x0f\xb1\x1e\x33\x98\x75\x5a\x75\x0f\x87\xae\x4e\x3b\x1c\x4e\xa0\xea\xb4\x23\x82\xf6\x00\xb3\xb2\x88\x49\xaf\xb4\x74\x7a\xc1\xc7\xc3\x49\xa7\x64\x69\xf2\xd0\x2b\x5d\xc8\x6b\x59\xca\xdc\x69\x6f\xfc\x07\x2f\xeb\x06\xc0\x10\xe4\x51\xd7\x46\x69\xa3\xfc\xf1\x95\xc8\x14\xd3\xa7\xb7\xef\xfd\x7d\x29\xac\xa5\x5c\xfe\x24\x4f\x01\x96\x02\x34\xed\xe3\x06\x5f\x49\xfb\xb8\x97\x34\x2b\xab\x95\xf6\x71\x69\x1f\x97\xf6\x71\xcf\xe8\xbc\xf0\x56\xda\xc7\x1d\xa6\xb4\x8f\x3b\xe9\x88\xd2\x3e\xee\x15\x9d\x97\x5e\x39\xbd\xe0\x9f\xe9\x3e\x8e\x9c\x7c\x12\xe1\x7a\x7a\xc2\x49\x7e\x42\x46\xf4\x52\x1d\xb2\x96\x48\x62\xc9\x39\x7e\x01\xf9\xd1\x8d\x31\x2e\x9a\x92\x96\x8a\x88\x3c\x5e\x30\x21\x25\xc2\x59\x0b\x7a\x06\x3a\x34\xe9\x1a\xa6\xee\xb0\x6c\x78\x47\x18\x0b\x90\xfb\x0e\xbb\xaf\x05\xe5\xbb\x9b\xf6\x43\xf1\xec\x76\xa8\xad\x86\x32\xda\xc1\xa6\x0e\xc9\x62\x07\x37\xde\xbe\x30\x55\xe3\x48\xb6\xba\x29\x35\xb3\x6d\xea\xba\x94\x6b\x59\x39\x51\xb6\xd2\x47\x5a\x57\xc0\x07\x80\xa7\x6a\x44\x61\x12\xb2\x2d\xb5\x8f\x36\x77\x65\xec\x6f\xc4\x7d\x1c\x98\x7f\x83\x01\x01\x41\xbf\x06\x2e\x79\x90\x3f\x03\xf0\x65\x20\x7e\x0c\x56\xbc\x0f\x8d\x51\xf0\x9c\x8d\x28\x13\xf0\xf3\x34\xc2\x8b\x15\x96\x9b\x11\xe7\x0d\x4e\x3e\xc6\x39\x80\x37\x69\xee\x54\x2e\xdf\xe5\xb9\x6e\x2a\x17\x15\xc1\x39\x5d\x4a\x23\x48\xbc\x44\xd4\x3b\x18\xbb\xc9\xc5\x42\xe6\xc4\x7d\x2d\xb8\x12\xb7\x72\x9a\xac\x1d\x9b\xcf\x13\x84\xc3\x30\x56\xe3\xbb\xf5\x80\xd2\xce\x4c\x6f\xcc\x00\xbd\x0d\x7d\x72\xf4\xeb\xda\x84\x06\xbd\x8f\xd4\x46\x2e\xd4\xc3\xd0\xd7\x7a\xbf\xcf\xc8\xba\x54\xb9\x18\x5c\x3b\x8a\x3f\xc0\xbf\x3e\x76\x25\xcc\x30\x7f\x44\xea\xc3\x69\x23\x96\x83\xeb\x4e\x91\x75\xd1\xba\x00\x3f\xeb\x62\x5c\x21\x10\xb4\x0b\x91\xaf\x28\x6c\x52\x08\x27\xae\x5b\x77\xc8\x58\x97\x54\x55\x26\x6a\x45\xda\x20\x92\x05\xe3\x56\xf9\x0f\x4c\xc9\x8d\x51\x20\x1d\xb1\x31\x0a\xb8\xba\x68\x47\x3f\xfa\x80\x07\x73\x91\x54\x02\xc9\x9d\x45\x5d\x40\x9a\x1b\x6b\x3e\xd1\x0d\x54\xb7\xd5\x5c\x46\x4c\x7a\xcc\x12\x82\x4c\xa8\x0b\xba\x16\x2e\x6f\x13\xc1\x48\x6b\x4f\x86\x6d\xce\x12\x80\xb4\x76\x7e\x8a\x1c\x4f\x3c\x37\x07\x71\x57\x84\x64\x91\xb9\x95\xfe\xf6\x2e\xb6\x93\x7c\x7c\x00\xf3\xc4\xbd\x9f\xc4\x8d\xf4\x3b\x04\xce\x4b\xc2\x3b\x34\x41\x8a\x8a\x22\x0d\xb1\x4f\x4b\x56\xc4\x6a\x2a\xc2\xa8\x3c\x33\x31\xc6\xa9\x17\x5b\xe4\x78\xf0\xc7\x0e\xf0\x1d\xf8\x69\xa4\xcb\xa1\xee\xda\xfa\xd6\x0b\xb5\xbc\x96\xe6\xee\x15\xf6\xbb\xc8\xd6\xba\x5a\xea\x97\x5d\x3d\x8d\xe0\x6f\xc4\xce\xad\x2d\x0f\xad\xcc\xe0\x14\x0e\x60\xcd\x31\x9d\xeb\xc1\x96\x23\xfa\xc9\xb3\x90\x63\x92\x3a\x8e\x1d\x7d\x26\xc2\x87\x15\xbd\x1c\x36\x86\x0d\xbd\x2f\x8f\x61\x41\xcf\xcb\xe3\x8c\x3b\x80\xf9\x06\xb1\xde\xa8\x94\x8c\x62\x3b\xdf\x04\x8f\x63\x39\x4c\x5f\x86\x8b\xbb\x1f\xab\x1d\x7b\x44\xa3\x3f\x8f\x61\x30\xdf\xc4\x53\x31\x97\x07\x35\xd0\x30\x96\x17\x5b\x11\x4d\x1c\x0d\x4b\x11\x1b\xa3\x60\x27\x12\x66\xa2\xbb\xef\x08\x88\xc2\x8f\x8d\xc6\x31\x11\x01\x0b\x91\x7d\x2e\xc3\x23\x25\x60\x9e\x79\x49\x0a\x01\xcb\x8c\x0e\x61\x1c\xbb\x10\x5e\x65\xf4\x3a\x6c\xab\xbb\xaf\xf9\x76\xe0\x64\x71\xb0\xb9\xbd\x54\xc9\x87\x73\x24\x0f\xbe\xd9\xd4\x85\x70\xf2\xda\x19\xe1\xe4\xf2\xd5\x6b\x63\x0a\xc0\xe8\xb2\x54\xd5\xf2\x7b\xdb\x00\x47\x49\xd5\xc2\x38\x35\x96\xc4\x35\x86\xdf\x6c\x94\x71\x86\x4e\x6f\x39\xcb\x76\x27\x8d\x3d\xf0\x2d\x03\x4d\x1d\x52\x04\x17\x7d\x1b\x7f\xf3\x74\x67\x9d\x70\xcd\xb3\x49\x1d\x9a\x6a\x7d\x63\x37\xa0\xb2\xf8\x45\x56\x4f\xae\xec\x97\xe3\x1b\xf3\x56\x0f\xcf\x6d\xbd\x12\x96\xce\x9d\x46\x0a\x4b\x9e\x99\x03\x5f\xfc\xe2\x4f\xfd\x4c\x67\x77\xff\x21\xca\x7a\x25\xfe\x63\xf7\xb7\xf6\xf3\x3b\xa0\xf3\xec\xe7\xee\xdc\x46\x16\x7b\xa1\x6d\x3d\xc4\xed\xfe\xf2\xff\x07\x00\x00\xff\xff\x2d\xde\x7c\xf8\xe4\x9a\x07\x00") +var _kubedbCom_mongodbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdc\x36\x96\x37\xfa\xff\x7c\x0a\x94\xb3\x55\x92\x6f\xa9\x5b\xf1\x4c\x36\x9b\x71\x6d\xcd\x53\x8a\x24\x67\x75\x63\x3b\x5a\xb7\x1c\x3f\x55\x5b\xcf\x9d\x41\x93\x68\x35\x46\x24\xc1\x10\xa0\xe4\xce\xad\xfb\xdd\x6f\xe1\x8d\x04\xd9\x24\x70\xc0\x6e\xc9\x8a\xa7\xf1\xc7\x8c\xd3\x22\x0f\xf1\x7a\x70\x5e\x7f\x07\x97\xf4\x57\x52\x71\xca\x8a\xd7\x08\x97\x94\x7c\x16\xa4\x90\xff\xc5\xe7\x77\x3f\xf0\x39\x65\xa7\xf7\xaf\x96\x44\xe0\x57\x7f\xba\xa3\x45\xfa\x1a\x9d\xd7\x5c\xb0\xfc\x03\xe1\xac\xae\x12\x72\x41\x56\xb4\xa0\x82\xb2\xe2\x4f\x39\x11\x38\xc5\x02\xbf\xfe\x13\x42\x49\x45\xb0\xfc\xf1\x86\xe6\x84\x0b\x9c\x97\xaf\x51\x51\x67\xd9\x9f\x10\xca\xf0\x92\x64\x5c\x3e\x83\x10\x2e\xcb\xd7\xe8\xae\x5e\x92\x74\xf9\x27\x84\x0a\x9c\x93\xd7\x28\x67\xc5\x2d\x4b\x97\x7c\xae\x7f\x9f\x27\x2c\xff\x13\x2f\x49\x22\xdf\xc0\x69\xaa\x3e\x85\xb3\xeb\x8a\x16\x82\x54\xe7\x2c\xab\xf3\x42\x51\x9b\xa1\xff\x7b\xf1\xcb\xfb\x6b\x2c\xd6\xaf\xd1\x5c\xbe\x30\xbf\xd7\x83\x52\x5f\xd2\xb4\x7f\x75\x7e\x11\x9b\x92\xbc\x46\x5c\x54\xb4\xb8\xdd\x7a\x5d\x60\x51\xf3\x79\xb9\xc6\x9c\x38\xaf\x2f\xd4\xcf\xc1\xb7\xed\x3c\xcc\xb7\x26\xc1\xa1\x75\x76\x4b\x1c\x42\x29\x16\xf2\x3f\x6f\x2b\x56\x37\x33\xa2\x46\xae\x1f\x37\xd3\x95\x60\x41\x6e\x59\x45\xed\x7f\xcf\xe4\x7b\x98\x0b\x56\x11\xf3\xdf\xcd\x5c\xca\xff\xc0\x65\xc9\x13\x96\xda\xbf\x61\x35\xfd\x08\xe9\x55\x7c\x27\xa7\xf9\xe2\x47\xf5\x4b\x46\xb9\xf8\xd9\xfd\xf5\x2d\xe5\x42\xfd\xa5\xcc\xea\x0a\x67\xed\xa2\xa8\x1f\xf9\x9a\x55\xe2\x7d\xdb\xad\x19\xca\x6f\xf5\x1f\x68\x71\x5b\x67\xb8\x6a\x9e\xff\x13\x42\x65\x45\x38\xa9\xee\xc9\xc7\xe2\xae\x60\x0f\xc5\x1b\x4a\xb2\x94\xbf\x46\x2b\x9c\xa9\xa9\xe5\x09\x93\xe3\x57\xd4\x4a\x9c\x90\x54\xfe\x56\x2f\x2b\xb3\xbb\xcc\x17\xf4\x7a\xbc\x46\xff\xef\xff\xf7\x27\x84\xee\x71\x46\x53\x35\xaf\xfa\x8f\xac\x24\xc5\xd9\xf5\xd5\xaf\x7f\x59\x24\x6b\x92\x63\xfd\xa3\xfc\x30\x2b\x49\x25\x9a\xc9\xd2\xfb\xad\xd9\xe9\xcd\x6f\x08\xa5\x84\x27\x15\x2d\x15\x45\x74\x24\x49\xe9\x67\x50\x2a\xf7\x36\xe1\x48\xac\x09\x32\x9b\x89\xa4\x88\xab\xcf\x20\xb6\x42\x62\x4d\x39\xaa\x88\x1a\x62\x21\x54\x97\x1c\xb2\x48\x3e\x82\x0b\xc4\x96\xff\x24\x89\x98\xa3\x85\x9c\x86\x8a\xcb\xe9\xab\xb3\x14\x25\xac\xb8\x27\x95\x40\x15\x49\xd8\x6d\x41\x7f\x6f\x28\x73\x24\x98\xfa\x64\x86\x05\x31\xeb\x60\x9b\xda\xf4\x05\xce\xe4\x24\xd4\xe4\x04\xe1\x22\x45\x39\xde\xa0\x8a\xc8\x6f\xa0\xba\x70\xa8\xa9\x47\xf8\x1c\xbd\x63\x15\x41\xb4\x58\xb1\xd7\x68\x2d\x44\xc9\x5f\x9f\x9e\xde\x52\x61\xcf\x76\xc2\xf2\xbc\x2e\xa8\xd8\x9c\x26\xac\x10\x15\x5d\xd6\x82\x55\xfc\x34\x25\xf7\x24\x3b\xe5\xf4\x76\x86\xab\x64\x4d\x05\x49\x44\x5d\x91\x53\x5c\xd2\x99\xea\x78\x21\x14\x83\xc8\xd3\x6f\x9a\xa5\x3a\x72\x7a\xda\x3b\x1e\xba\xa9\x8d\x37\x3a\xef\x72\x03\x22\xca\x11\x36\xaf\xe9\xfe\xb7\xd3\x2b\x7f\x92\xb3\xf2\xe1\x72\x71\x83\xec\x47\xd5\x12\x74\xe7\x5c\xcd\x76\xfb\x1a\x6f\x27\x5e\x4e\x14\x2d\x56\xa4\xd2\x0b\xb7\xaa\x58\xae\x28\x92\x22\x2d\x19\x2d\x84\xfa\x8f\x24\xa3\xa4\xe8\x4e\x3a\xaf\x97\x39\x15\x72\xa5\x7f\xab\x09\x17\x72\x7d\xe6\xe8\x1c\x17\x05\x13\x68\x49\x50\x5d\xca\xd3\x9b\xce\xd1\x55\x81\xce\x71\x4e\xb2\x73\xcc\xc9\xa3\x4f\xbb\x9c\x61\x3e\x93\x53\x1a\x9e\x78\x97\x31\xdb\x36\x74\x3c\x1a\xee\xd4\xf9\x05\xa1\x1c\x7f\x7e\x4b\x8a\x5b\xc9\xdc\xbe\xff\x4b\xef\x6f\x25\x16\x72\x4b\xbe\x46\xff\xcf\xff\xe0\xd9\xef\xff\xe7\xf8\x7f\x66\x78\xf6\xfb\xb7\xb3\xbf\xfe\x9f\xff\xeb\x7f\xcc\x3f\x5e\xfe\xaf\x7f\xeb\xbd\x33\xd8\x49\xfb\xb3\x5e\xc0\xe6\x67\xcb\xfa\x43\xfd\x4e\xe4\x8f\x2b\x2a\x59\xe4\x82\x24\x15\x11\xfd\x41\x74\x76\x9b\x7e\x04\xad\x58\x85\x7e\x26\x9b\x37\x34\x23\x88\x55\x68\xb1\x78\xeb\xd2\xe1\x73\x74\xce\x0a\x81\x69\xc1\xd1\x3f\x44\xc6\xe7\x25\xc9\xff\xd1\xa3\x8a\xe4\x7b\x77\x64\xb3\x92\x24\xfe\x71\x47\x36\x73\xf1\x59\xfc\x03\xa5\xa4\x24\x45\x2a\xb7\x2c\x2b\x10\x29\xf0\x32\x23\x8b\xc5\xdb\x79\x7f\xee\x46\xc6\xa2\xbb\xbb\xc2\x75\x26\xde\xb1\x74\x6b\x39\xb6\x46\x73\xf4\x4b\xa9\x6f\x45\xc9\x78\x53\x82\x96\x54\x6d\x52\x54\x73\x22\xbf\xaf\xae\x21\x92\x22\xd9\x47\x8e\x96\x1b\x4b\xbb\xdf\x1d\xdd\xde\xd5\x5c\x6d\x6b\x6c\x0e\xe0\x92\x88\x07\x42\x0a\xf4\xad\x62\x36\xdf\xfe\xc7\x7f\xfc\xc7\x1c\x5d\x68\x02\xea\x23\xdf\x7e\xff\xdd\x77\x73\x74\x41\x2b\x92\x08\x75\x37\x0d\x52\x7d\xa0\x62\x4d\x0b\x75\xc2\x4a\x2c\xd6\x08\x57\x04\xc9\xf3\x83\x57\x2b\x92\xc8\xce\x2d\x37\xfa\x54\x72\x22\xe4\x51\x9f\xa3\x1b\xf9\x5f\x39\xbd\x5d\xcb\xde\x0c\xd2\xa4\x85\x64\xa2\xab\x8c\x26\x42\xd1\x47\x4c\xac\x49\x85\x98\x9a\x0c\xc9\xb5\xb1\xa5\xaf\xbe\xab\x96\x48\xce\xcf\x09\xca\xe8\xdd\x30\xc9\x15\xff\x49\x5e\xc1\x9a\xb1\xca\x97\x2a\xc2\xeb\x4c\xa0\x04\x17\x72\x4e\xf4\x07\xda\x39\xe6\x44\xcc\x8f\x06\x08\xad\x58\x95\x63\xf1\x5a\xb2\xeb\xbf\xfc\x79\xe0\xef\x7a\xa7\x4b\x66\x7e\x4b\xaa\xad\xbf\x53\x41\xf2\x81\x1d\xd1\x5b\xf4\xab\x15\xaa\x0b\x79\x3a\xe8\x8a\x92\xf4\x04\x11\x9c\xac\xe5\x4e\x9c\xe9\x65\x2b\x31\xad\x90\x99\xf1\x0b\x2c\x30\x5a\xc9\x9b\x77\x70\xd0\xea\x26\x93\x43\x5d\x91\x8a\x14\x09\x49\xed\xf1\x78\xa0\x59\x26\x87\x5d\x56\xec\x9f\x7a\x95\x68\x61\xee\xa6\x7b\x29\x78\x11\x84\x87\x57\x1b\xeb\xc9\x7e\x58\x33\x4e\x14\x47\x91\x8c\x5d\xbe\x76\x47\x36\x6a\x6a\x25\xd3\x23\x85\xb0\x3f\xab\x2e\xcf\xe5\x90\xda\x01\x0d\x12\x56\xd7\x22\xe5\xb2\x2b\x77\x64\xc3\x7d\x3d\x6c\x28\xa9\x0d\xc7\xd5\x92\x0e\xd2\xac\x8b\x2d\x8a\x86\xb3\x9b\x2b\x44\x75\x0c\xab\xbe\xcb\x0d\xda\xd0\x7d\x58\xd3\x64\x3d\xbc\x33\xb9\x22\x61\xde\xb7\xcb\xa0\x67\xf5\xc4\x9d\x3f\x4e\x44\x5d\xea\x6f\x92\xaa\x62\x95\xec\x0c\xe1\xc3\x93\x4a\xd5\x74\xe5\xb8\xba\x23\xa9\xd9\xe4\x38\x9b\x23\x29\x74\x72\x94\x9b\x53\x5b\x91\x0c\x0b\x7a\x4f\x1a\xc9\x40\xf6\x23\xd1\x5c\x6c\x74\x46\x8f\xe6\xf3\x23\x7d\x2c\x59\x25\x65\xad\xca\x9c\x27\xf9\xfb\x10\x93\x18\xdd\xa0\xbd\x2d\xfa\x0e\x97\xce\x7d\x2e\xe7\x4f\x30\x84\xf5\x97\x0c\x43\xc0\x66\x26\x86\x79\x91\x8f\x41\xea\x76\x47\x36\x63\x7f\xea\x75\xe6\xc6\x6c\x3f\xc1\xec\x6e\x19\xfe\x26\x1a\xbf\xa0\xdc\x96\x8f\x30\xe6\x81\x2f\x07\xd8\xb3\x16\x46\x68\x46\x4e\xd4\x2a\x8e\xd2\x44\x21\xae\x7c\xb5\x52\xab\xed\xf0\x84\x76\xa7\x79\xa8\x3a\x37\x4d\x73\x9e\x6a\x2e\x05\x9a\x0e\x0b\xde\x62\xb7\x1e\x92\x51\x8c\xb8\xc3\x74\x3d\x44\xa7\xb3\x63\xdd\x42\x4c\xd9\x7c\xc5\xcb\x9a\x75\x93\x1b\x38\x62\xd7\x35\x67\x52\x1f\xb1\x55\x3b\x09\x82\xa1\x1c\x97\x96\x33\xfa\xc6\xce\xe6\xe8\x9d\x39\xcd\x72\x17\x14\x08\x2f\x39\xcb\x6a\xa1\x89\xb6\x7f\x34\x47\xbd\xb9\x68\x3d\x34\x49\x46\x72\xc9\x9d\xd4\x29\x6f\x08\x38\xc7\x5f\x71\x51\x7d\x76\xc7\x38\x81\x3b\x67\x9e\xe3\x22\x25\x67\x5a\x91\x74\x78\xd2\x66\xa3\x83\x9f\x8d\x8f\x61\x50\x58\xec\xff\x19\x57\x15\xde\xa6\x6c\x79\x67\xf0\x8a\x5d\xa8\x93\xb4\x41\x0f\x6b\xa2\x76\x5a\xcb\xc4\x25\xa3\x94\x3b\x4e\x5d\x19\x96\xf7\x6a\x75\x71\x68\x0b\xeb\xde\x2c\x19\xcb\x08\xde\x66\xc3\x5c\x91\x7c\x3f\x20\x78\x6f\xf5\xe8\x48\x3e\x65\xb7\x90\x7e\xcf\xde\x2e\x25\x4b\x8f\x8e\xb8\x36\x17\x48\x4d\xda\x70\x98\x11\x21\x6f\x5b\x39\xb9\xab\x97\xa4\x2a\x88\x14\x7b\x29\x3b\x4d\x59\xc2\xa5\x6a\x92\x90\x52\xf0\x53\x2e\x58\x85\x6f\xc9\xa9\xe6\x25\xfc\x1b\xfd\xe5\xa1\xa3\xe6\xd9\x0a\xa3\x2b\x96\x64\x35\x17\xa4\x3a\xab\xc5\x7a\x48\xdc\xed\x4e\xc0\x79\xf7\x61\x25\xc2\x57\xa4\xcc\x68\x82\xb9\x5e\x17\xbe\xc6\x55\xaa\x44\xc8\x63\xc3\xda\x14\x5b\xdb\xea\xec\x92\xa0\xcf\xff\xfe\xed\x5f\x11\x5d\x21\xce\x33\xc5\x45\xcc\xbd\xfd\x8f\x94\x72\x29\xb2\xa7\xff\x98\xbf\x44\x0b\x42\x10\xbe\xc7\x34\x93\xbf\xa0\x73\x7f\x5f\x51\x33\x9d\x72\x02\xe7\xc6\x0c\x32\x4f\x58\x7e\x9a\xe3\xa2\xc6\xd9\x69\x23\x65\x9d\x96\x15\xbb\xad\x70\x7e\xaa\x1f\x3a\xfd\x26\xc9\x53\xbd\x33\x67\xfa\x97\x99\x99\x17\x5c\x8b\xb5\xec\x5d\x7f\xba\x47\xa7\x5a\x72\x69\x7a\xbb\x50\x0a\xb2\x77\x32\xcf\x9d\x07\x95\xea\x5d\x34\x67\x43\x8b\x8b\xe6\xb2\xbc\xa7\x29\x41\x89\x32\xfb\x19\xe2\x75\xb5\x6d\xed\x90\x4d\x71\x35\xb9\x24\x52\xdd\x5c\x62\x4e\xd0\x31\x9d\x13\x63\x0e\x9a\x27\xc5\xea\x65\x4f\xca\x6b\x6f\x3f\x7b\xf7\x6c\xd1\x94\x77\x11\xc2\xbc\xfb\x65\xfd\x8a\xba\x00\x1e\x28\x27\xf6\x12\x1b\x7a\x68\x6c\xf1\xd5\x1d\x17\xa1\x91\xe1\x07\x7e\x99\x61\x2e\x68\xf2\x63\xc6\x92\xbb\x85\x60\x15\xe0\xc0\x9e\x7d\x5a\x6c\xbd\xe5\x58\x27\xe4\x9c\x9f\x7d\x5a\xa0\x0b\xca\xef\x1a\xab\xc6\x88\xa0\x86\x95\x00\x88\x85\xc0\xc9\x9a\xa4\x5a\x96\x92\xa7\x36\x23\x42\x9e\xfc\x35\xe3\x02\xe5\x38\x59\xd3\x82\x58\xfd\xa5\x40\xe4\x73\xc9\xf8\x20\x53\x42\xd6\xce\x54\xb2\x74\xd0\x5c\x11\xc3\x11\xf0\x03\x27\x7a\x98\x4b\x39\x4c\x65\x93\x1c\xe2\x0f\x21\x89\x6e\xc5\x6f\xe4\xb6\x1e\xb9\x6a\xba\x53\x2b\xd5\x76\xbe\xe1\x82\xe4\xea\x2c\x58\xb6\x68\x44\x6b\x35\x5f\x1b\x56\xa3\x07\x5c\x08\x24\xd8\xe8\xed\x95\xb3\x5a\xca\xf8\x37\xb4\x7c\x8d\x2e\x0b\x5e\x57\xe6\x5d\x7b\x4b\xbb\x9f\x90\xf2\x7f\x5d\x96\xac\xd2\x2a\xeb\xf8\x8d\xb8\x26\x7a\x3d\xe4\x68\xb1\xb2\x5d\x69\x32\x73\x74\xf9\x19\xe7\x65\x46\xf8\x6b\xf4\x82\x7c\x16\xdf\xbd\x38\x41\x2f\x3e\xaf\xb8\xfc\xbf\x42\xac\xf8\x8b\xf1\x5b\xf6\x2a\x97\x5c\x8e\x8a\xcc\x58\xb1\x2a\xbd\x07\x96\xc4\x10\x92\x8c\xcc\xd1\x08\xdd\x25\x1d\xa5\xb9\xaf\xa5\x1e\xfd\xc0\xcd\x2f\x17\xbf\xbc\x46\x6b\xf6\x80\x52\x86\x1e\x94\x4a\x75\x2f\x85\x0e\xa5\xed\x70\x7b\x77\x39\xd3\xac\xac\x72\x09\xcb\xcb\x8a\xe5\x94\x8f\xcb\xdf\x7a\x8e\xcd\x76\x1f\x13\xfa\x82\x82\x49\x89\x2b\x41\x45\xcf\x1e\xec\xb6\xee\x8e\xbb\x51\x52\x95\x79\xc5\x76\x7e\x64\xbf\x99\x7d\x35\xbe\x9c\x2b\xc4\x72\x2a\x84\x95\xd3\x2d\x07\xa3\xbc\x79\x19\x2d\x37\x96\xba\xbc\xd6\x9d\xbd\x33\x4a\xf5\x0d\xab\xec\x2b\xa7\x29\xb9\x3f\xe5\x29\x7e\x75\xa2\xba\xc5\x8d\x30\x23\x3a\x63\xc0\x1c\xbd\x78\xf5\x62\x8e\x16\x34\xa7\x19\xae\xb2\xcd\xb0\xde\x6d\xe7\xdb\x90\x6e\xdf\x97\xbc\xde\x7e\x48\x76\xfd\xc5\xb7\x2f\xd0\x31\xab\xd4\x17\xa5\x94\x9e\x11\x7c\x3f\xbe\x3b\x54\x5f\x34\x47\xd8\x20\x92\x97\x62\xf3\x72\x54\x80\x87\x88\xef\x61\xe1\xbd\x22\x38\xfd\xa5\xc8\x46\x95\xc6\xee\x7a\x5b\x01\xf0\x85\xa8\x6a\xf2\x42\xae\xcb\x8a\xc9\xbb\x52\x72\x57\x29\x6d\x28\x7b\xb4\xa1\xd8\x0c\x64\x74\xb4\xb4\x40\xbf\xaa\xf9\x7b\x27\x17\x57\x2d\xb3\x26\x3c\xf7\x6d\x86\x17\xca\x55\xe2\xe1\x0b\x4f\xc4\xb9\x51\x50\x8e\x95\x4d\x53\xbd\xba\x80\xcd\xef\xc7\x82\xfe\x56\x13\x74\x75\x61\x79\x77\x49\x2a\x4e\xb9\x32\x0d\xa5\xee\x8d\x28\xe7\xee\xec\xd3\x62\x74\x0e\x8e\xcf\x72\xfc\x3b\x2b\xd0\xe5\x8f\x0b\xd3\x85\x97\x4f\x76\xa5\xa1\x30\xa3\xf1\xe9\x3f\xb3\x66\xce\x46\xc5\xe9\x11\x2d\x07\xff\x5e\x57\x44\x0a\x0e\x41\x29\xe4\xcc\x3e\xd9\x97\x3c\xe4\xef\xda\x3c\xa8\xfe\xaa\xb9\x8e\xb2\x49\x0c\x1f\x5a\x75\xa7\xc9\xdd\xbf\xa4\x45\x6a\x1e\x77\xa4\x88\x09\x17\x7e\xa2\x38\xf8\xed\x98\x9d\x7b\x6b\x28\x47\xff\x25\xbb\x70\xae\xdf\xd2\x56\x18\xf4\x9e\x15\xe4\x44\x1d\x44\x24\x4f\xa2\xf9\xe7\xa7\x8a\x0a\x32\xca\x4e\x82\x57\x83\xdc\x7f\x63\x3a\xd9\x56\xaf\xe4\xc5\xe0\xaa\x66\x52\xfc\xd5\x3b\xd8\x5c\x12\xcb\x8c\x2d\x91\xd9\x61\xbb\xf4\xe8\xe3\x87\x2b\x70\x87\x3e\x7e\xb8\x7a\xbc\xce\x44\x08\x6a\x7d\x39\xad\xb9\x1b\x1d\x5f\x43\x2b\x01\x78\xad\x0c\x1d\xe9\xcb\x2f\x65\xcd\x7b\xf2\xd5\x28\x5d\x23\x77\x45\xcb\x57\x53\x67\xae\xef\x06\x1d\x9d\xb7\xa3\xcb\xcf\xa5\x36\x6a\x6b\x57\x2e\x5a\xac\xb1\x64\x22\x28\xaf\x33\x41\xcb\xcc\x2c\xa4\x5c\x59\x2e\x39\xe7\xe8\x08\xcd\x52\x23\x9c\x24\xea\xc4\xa2\x0b\x92\x2a\x0f\x57\xfa\x5a\xf9\xec\x5d\x4a\x92\xd0\xf6\x0b\xef\x70\x81\x6f\xc7\xec\x37\xc8\xf2\x22\x94\xeb\xc7\x9c\x1d\x77\xcc\x0a\x35\x9f\xcd\x9f\x8c\x2a\x4d\x33\x2a\x36\xf2\x0e\x7d\x39\x7e\xb1\xa5\x8e\x97\x89\xab\xa1\x4f\x3e\xcc\x51\xd7\xbe\xeb\xdd\x52\x97\x2f\x3a\x96\xef\x9f\x3e\x48\x86\xf2\x72\xde\xde\xf8\x6b\x52\x8d\xa8\x97\xb6\x69\x71\xa1\x23\x26\x18\x07\x57\x5f\x1a\xf0\x6f\xa7\xf1\x2b\xd7\x7f\xb5\x58\x26\x36\xfa\xc7\x8f\x1f\xae\x26\x5d\x3b\xf2\x4c\xc3\xae\x1d\xe5\x5c\x1d\xba\x76\xd4\x1f\x16\xa4\xba\xa7\x09\x69\x6e\x9e\x51\x1f\xc5\xfe\x6f\x9e\xaf\x77\x4f\x84\x4c\x8a\x5b\xa3\x93\x9d\x29\xcc\xf5\x65\xac\x8a\x4a\x9d\x49\xac\xfb\x5b\xaf\xd8\xc2\x7b\x65\x20\x74\x66\xd8\x85\xba\x09\xe5\x5a\xfd\x3c\x6a\xd4\x0e\x9e\x58\x75\xe0\xc1\x03\x50\x9c\x11\x8d\xec\x74\xc0\xf7\xfc\xa7\xa8\x9d\xcd\xe1\x3f\xdb\xae\xc6\x9e\xa4\x84\x94\xeb\x55\xd8\xd3\x7b\x4e\xca\xf5\x9b\x45\xe7\x0c\xa9\xdf\xd0\x9b\x45\x47\x62\xd3\x67\x44\x2e\xdc\xf8\x8c\xca\x77\x4b\x96\x1e\x71\x94\xd1\x15\x11\x74\xb0\xd3\xa1\x93\x93\xb3\x82\x0a\x56\x8d\xaa\xa1\xdd\x5b\xec\x83\x9d\x5b\xf4\xce\xbc\xa7\xc3\x7c\x12\x96\x65\x24\x51\x5a\x24\x5b\xe9\x01\x59\xc2\x31\xba\x0e\x31\x3a\x71\x13\xac\xa8\xc5\xf7\x53\x3d\xb9\xa7\x1f\x2e\xcf\x2e\xde\x5d\xce\xf3\xf4\x9b\x35\x7b\x98\x09\x36\xab\x39\x99\xd1\x41\xdb\x35\xf2\xbb\x36\x11\xcc\x31\xe8\xf3\x3c\xa0\x80\xf3\x68\xcc\x6d\xf8\xd1\x98\x40\x95\xc9\x43\xae\x38\x49\x51\xc5\x98\x38\x41\x15\x36\x9e\x89\x11\x46\x80\x0c\xfb\x5c\xd5\x59\xa6\xe7\x58\x54\x84\x9c\xb8\x0a\xe6\xe9\xd3\xdc\xaa\xce\x70\xa0\xcc\x74\xdc\x6c\x65\x99\x6c\x0c\x33\x55\x9b\xc7\xa3\x9c\x3f\xde\xa6\x82\xf2\xeb\xb1\x4b\xd5\x37\x97\x8b\xe6\x4d\x1b\x4c\xa1\xbc\x8c\x82\x29\x67\xb7\x72\xde\xad\xd8\xb8\x68\xf8\x91\x93\xaa\xbb\x1b\x88\x48\xd4\x30\x4f\x6b\x4e\xaa\xb9\xb9\x0d\x1e\xfd\xdc\x85\xef\x03\xd5\x91\x0f\x64\x35\x6d\x82\x3e\x90\x15\x52\xc1\x9a\xc6\xfb\x62\x65\x07\x5c\x8b\x35\x29\x84\x94\x86\x87\xfc\x19\xdd\xaf\x2b\x6b\xd7\xd6\x8c\x29\xbb\xd5\xa0\xb5\x61\xbf\x53\x14\x0e\x86\x18\x8e\xde\x1b\x9f\x24\x57\x63\x35\x33\x23\xa2\xcd\x26\xec\x5e\x8a\x70\xe4\xe1\xf4\x81\x55\x77\xb4\xb8\x9d\x3d\x50\xb1\x9e\xe9\x1b\x8f\x9f\x2a\x77\xe4\xe9\x37\xea\xff\x3c\xfd\xb2\x86\xe2\xb3\x34\x35\x5e\xfd\x9a\x93\x55\x6d\xdc\x50\x7c\xee\x44\xee\x9e\x28\x05\xea\x04\xd5\x34\xfd\x5f\xe3\xce\xfe\x08\x56\x3d\xea\x43\x56\xae\xa7\x6a\x02\xaf\xae\xec\x51\xac\x70\xca\xb8\xa2\xa2\x56\xa6\xd9\x36\xe3\x5c\x88\x23\x9c\xe6\xb4\xf8\xe2\x07\xce\x2f\x10\x79\xee\x69\xbf\xc0\x43\x8b\x74\x78\x46\x7b\x4e\x5e\xf5\x5c\x57\xe2\xd1\xef\x36\x81\x67\xd6\x0b\x86\xad\x36\x30\xe2\xe3\x62\x85\xf5\x91\x75\x3d\x64\xa0\x03\x9b\x6f\xf8\x6f\xd9\x4c\x7f\x79\x56\xa6\xed\x1c\x3f\xb5\x6b\xeb\x69\x4c\x26\x3d\xc7\xd4\xb8\xc5\xa4\xe3\xb0\xda\x97\xe1\x04\x24\xdd\x45\xad\x08\x3a\x08\x31\x7b\x98\xbb\xb0\xdc\x32\xe1\x56\x56\x01\xf7\x5c\xfb\xb0\xcd\xe5\x6a\x22\xf7\x8d\xce\xe9\xf3\xfc\x95\xb8\xc2\x39\x11\xa4\xe2\x3a\x38\x40\x30\xf9\x56\xa1\xe2\xcb\x18\xfa\xa5\x24\xc5\x42\xe0\xe4\x6e\xd4\xf6\x7b\xb8\x49\x9f\xfc\x26\x8d\xf3\x0b\x19\x26\x4f\xd3\x66\x7d\x69\x2a\xa5\x34\xe3\xbe\xb4\x7f\x2e\xcc\xa5\xf0\xac\x38\xca\xe3\xf8\x7a\x74\x5c\xcb\x3b\x5c\x86\xad\x05\xf6\xc9\xde\xf5\xd9\xfc\xac\x2c\x3b\x26\x09\xa9\x64\x65\x9d\xe9\xdc\xb3\x81\x0e\xad\x29\x1f\x0f\x1f\x0d\x1d\xa2\x40\x02\xc3\x56\xbf\x23\x93\x18\x42\x56\xe3\xf9\xb4\x44\x86\x51\xb2\x4e\x82\x43\x7c\x32\xc3\x28\x55\x7f\x84\xad\x3f\x8e\x76\xdc\xc0\xe8\x89\xaf\xf5\x46\xd1\x8e\x52\x0c\x46\xd7\xee\xc7\x39\xef\x35\xbe\xec\x92\xfc\xe0\x99\x2a\x92\xa5\x03\x09\x10\xed\x21\x1a\xcf\x30\x18\x25\xda\xe4\x46\xc4\xe6\x41\x8c\x53\x1c\xc8\x8f\x00\xe6\x42\x78\xad\x42\x43\x39\x12\x80\x7c\x88\x51\x9a\x9e\x3c\x89\x91\x9c\x88\x66\xa2\x41\x71\x27\x23\xe9\x12\x23\xa9\x11\xa3\x14\xe1\x29\x13\x5b\xe9\x11\x1e\x1f\x5b\x30\x6d\x02\x85\xed\x8b\xfb\x4d\x9f\x40\x40\x59\x27\x90\x46\xb1\xd5\xb1\x98\x54\x0a\x04\x13\x20\x50\x30\xa5\x62\xab\x17\xe0\xb4\x0a\x2f\x49\xd4\xec\x83\xa8\xd4\x8a\x00\x4d\x67\xcf\xc2\xd3\x2b\x02\x34\xa7\xe5\xba\x05\x88\xc6\x5d\x10\x6a\x8e\x03\x14\xfd\x49\x18\x08\x9c\x88\x81\x80\xc9\x18\x28\x98\x90\x81\xa6\x26\x65\x04\x46\xaa\x8f\x40\x5c\x62\x06\x60\xdf\xa8\x0e\x45\x24\x67\x04\x48\xfa\x53\x37\x10\xf4\x78\xfa\x53\x38\x90\x37\x8d\x03\xf9\x53\x39\x10\x44\x81\x08\x3b\x56\x7c\x1a\xdb\xf3\xd4\xd6\xf6\xaa\xa9\x05\x57\xd1\x97\xf6\xb2\x35\x47\x43\xa9\x2f\xad\x50\xd4\xcf\x7e\x19\x17\x1c\x7d\x59\x31\x08\x60\x62\xf0\x2b\x45\x9c\x86\xd5\xa1\xc5\x15\x3a\x36\x69\xdc\xa4\xb2\x2e\x6c\x74\x55\x08\x52\xad\x70\x42\x5e\xba\x6a\x92\x2f\x26\xca\xc6\xdf\xaf\x71\x91\x66\x5a\xc6\xc7\x05\x22\x9f\x0d\x20\x83\xfc\x4e\x5a\xd1\x7b\x52\xa1\xe3\xb3\xac\x5c\x63\xb4\x22\x58\xd4\x15\x19\x0c\x70\x09\x2a\x4f\x8a\x12\x2c\x32\x41\x7f\xd4\x08\x96\x85\xb3\xb5\x9d\x2e\xa9\xce\xeb\x9e\x8f\x6f\x47\x47\xdf\x53\x99\xef\x5c\xa7\xce\x88\x35\xda\xb0\xba\x32\x86\xe9\x15\xd3\x9b\x21\x61\x95\x54\x88\xd4\x07\x47\x29\x62\x8e\x2a\x72\x2b\xa5\xc9\x4a\x89\xa3\x06\x61\x41\xa5\xb5\x4c\x8e\x9f\xda\x4b\xe4\xd9\x76\x7c\x58\x38\xfe\x7e\x65\x04\x58\x95\x0f\x63\x04\x70\xe5\xfc\x31\x82\x03\xe5\xa8\xc4\xdc\x18\x2c\x94\x73\x89\x73\x96\x50\x3c\x66\x9a\x96\xcd\x59\x23\x2d\x26\x2b\x11\x21\x25\x82\x54\x39\x2d\x48\x27\x18\xd8\x4d\x46\x18\x97\xeb\x71\x59\x66\x9b\xc9\x93\x5b\xb0\x94\x5c\xd7\xcb\x8c\xf2\xf5\x22\xca\xb6\xf7\x7e\xe0\x45\xed\xe7\xdf\xf2\xb9\x69\x7b\xdf\xe8\x00\xb6\xec\x80\x88\x93\x82\x53\x75\x59\x4b\xf6\x2c\x85\x07\x2a\x05\x3c\xa6\xa6\xdb\x52\x3d\x5f\x0c\x45\x32\x99\x9e\x9a\x53\xc0\x54\x66\x41\x46\x04\x69\x0e\x88\xd3\xef\x5f\x8d\xde\x56\xa4\xea\xd7\x8f\x45\xe9\xfe\x3e\x4a\x3c\xc1\x59\xc6\x8d\x34\xa7\xf5\x49\xca\x1b\x66\xab\x65\x2a\xa5\x56\x2c\xed\x6e\xa1\x72\x23\x85\x66\x81\xf2\xe6\xca\x55\xe2\xa7\x93\xf0\xd7\x9d\x20\x8e\x72\xa6\x53\x56\x0a\xc4\x0a\xfb\xd0\xb8\xdc\x87\xb3\xcc\x12\x6a\x56\x86\x2b\x13\x86\xde\xbc\x63\x5b\xe7\x60\x34\x7d\x72\xa3\x69\x94\x6b\x62\x61\x74\x13\x7d\xe4\x70\x3a\x53\x91\x97\xbd\x7c\x38\xc3\xbc\x43\x4a\x63\xc0\xb7\x31\xd9\x5d\xa0\xbf\x7b\x26\x34\xe0\xcd\xf8\x4e\x72\x71\xbe\xc2\xbb\x0e\x30\xd5\x9d\x99\xfa\xb5\xd7\x0b\x75\xed\x13\x6e\xb8\xc4\xcc\x28\x79\x89\xb3\xe3\x3d\x57\xa6\xd4\xbb\x9a\xb3\xe3\xf0\x22\x43\xad\xbd\x48\xd5\x1d\xaa\x7f\x3c\xe2\x28\x65\x49\x9d\x0f\x82\x46\xb9\x4d\xae\x57\xeb\xbe\x33\x80\x4e\xd3\x76\x53\x20\x4e\x54\xf5\x2b\x56\xfe\x4a\xd9\x43\xf1\x80\xab\xf4\xec\x7a\x30\x28\xbd\x2b\xa6\xb4\xcf\xba\x12\x97\x25\x81\xe4\xef\x78\xc9\x6a\x61\x43\x3a\x7d\x81\x6c\x1d\xdb\xf5\xc1\x4e\xed\xb6\x83\x9d\xfa\x59\xd9\xa9\xe5\x93\x5a\x0c\xca\x28\x17\xf2\xb6\xeb\xec\x78\x63\x23\x92\x33\xb1\x07\x83\xa1\x73\xc6\x34\x8f\xeb\xc7\x5e\x3b\xe2\x93\xef\xea\x62\x66\x17\xb7\x36\x11\x47\x18\xb3\xc7\x73\x1c\x4f\x08\x81\xcd\x8e\x8a\x86\x47\xc2\x1c\x18\xa3\x13\x4e\xba\x20\x99\xbc\xe4\x11\xee\x9a\xf1\x4b\x96\xbe\x46\xcc\xe7\x79\xd7\x4d\x01\xb8\xa9\xb9\xe0\x27\x06\x95\xf2\x44\xeb\x4f\x72\xff\xb5\x38\x0a\xf2\xd4\x34\x4c\x38\x60\xda\x82\x0d\x1b\x8d\x42\x11\x02\x26\xc0\x82\x13\x5a\x10\x08\x8d\x46\x28\xff\xa9\xb0\x15\xaf\xe5\x41\xa7\x21\x23\x9d\x6c\xf2\x32\x17\x44\xa7\xb1\x92\x2a\xe7\x88\xad\x4e\x3a\x39\x17\x2f\xee\x5f\x79\xd4\x21\xdb\x80\xc6\x5d\x64\x97\xfb\x3a\x68\xab\xdb\x1a\xf2\x75\xc7\x44\x67\x70\x09\xb8\x5a\x7d\xab\x54\x36\x96\x59\xc0\xc0\xd5\xc1\xd3\xb3\xb8\xc7\xe1\x85\x0d\x64\x48\x5d\xb5\xcd\x24\x00\x6c\x72\x5e\x7b\x18\x3a\x98\xcc\x0f\x26\xf3\xad\xf6\x48\x26\x73\x87\xed\x1a\x0e\x63\x01\x99\x5c\x33\xba\xd7\x18\xa4\x5b\xcf\xd2\xbe\x24\x56\x62\x32\x82\x90\x35\xa4\x5b\x2b\x3a\xab\x22\x4c\xe7\x47\x47\xf3\xf9\xd1\x91\xb5\xbc\x9b\x4d\x5a\x8b\xd5\xec\x07\x44\x8a\x84\xa5\x7a\x0b\xc9\xaf\x57\x5c\xa8\xab\x15\xd6\xdb\xee\x28\x73\xdb\x4f\xd7\xe7\xa7\xbe\xec\x5f\x44\x20\x2b\xb1\x39\xcf\x6f\x26\x5c\x8e\xed\x95\xd8\x64\x4e\x9b\x21\x24\xd6\x04\x0a\xba\x1b\x1b\x50\x57\x94\x51\x85\x7d\x2a\xb7\x79\x83\x7f\x7a\xac\x7f\x9c\x27\x65\x7d\x62\x1e\x98\xe7\x24\x67\x95\x07\x3d\xc0\xd2\xd5\x24\xe4\xab\x1d\x9a\xe6\xfd\x97\xea\xb6\x4d\xea\xaa\x22\x85\xc8\x36\x8f\x70\xef\x36\xf3\xe0\xcb\x2d\x6a\x5b\x2f\x2e\xb5\xb1\x23\x6b\x10\x67\xcb\xf3\x95\xa2\x66\xe2\x71\x43\x53\x80\x1c\x53\xbc\x7a\x8f\x14\xf7\xe8\x1e\x57\xdc\x3f\x42\x14\x77\xd5\xa6\xf4\x9e\x72\x36\x6a\x41\x1e\x19\x60\x6b\x43\x90\x5b\x86\xd5\xa2\xac\x85\xe1\x3d\x76\x1f\xf9\xf0\x64\xba\xad\xd9\x43\x3d\xa9\xe2\xd5\x8b\x7d\x0e\xd4\x7e\x25\x76\x29\x5b\x7e\xd6\x62\x09\x5b\xa1\x62\x8f\x2b\x01\x95\x0a\xbc\xd0\x3f\xdd\xaf\x06\x84\x02\x88\xa3\xee\x71\x5d\x71\x5e\x02\xca\x04\x7a\x41\x01\x41\xe0\x97\xe6\xc9\x6e\x1c\x9b\x20\x79\xc9\x2a\x5c\x6d\x50\x6a\x34\xdd\x8d\x8d\x68\xc3\xd5\x88\xa5\x06\x5b\x70\x34\x9b\xf3\xb6\x33\x36\x84\x1a\x45\x4a\xab\x29\x71\xe0\x39\x49\x69\x9d\xc3\x6c\x0d\x9f\x14\x10\x91\x01\x37\xb2\x59\xd9\x9a\x80\x35\x83\x2c\x71\x72\xa7\x25\xb7\x66\x42\x7c\x7a\x7c\x17\x5b\xe4\x85\xf1\x3a\xe4\x04\x17\x8d\x24\xa8\xfc\x48\x2c\x25\x72\xc6\xec\xc3\xfa\x9b\x9e\x40\x4b\x2b\x11\x16\xc6\xc8\x6d\xa2\x56\x2c\x04\xdb\x4b\x79\x91\xbf\x53\x3c\xfe\x51\x27\x1f\x81\x72\x89\xe8\xef\xe4\xad\xbc\xb6\x80\xa8\x3f\x4c\xe0\x0c\x61\x93\x6a\xb9\x42\x19\x4b\x70\xd6\xac\x46\xe7\x0e\xd8\x82\x23\x77\x5b\xb3\xa1\xad\x8f\x4d\xae\x86\xec\x8b\xbe\x43\x95\x99\x20\xe3\x4c\x79\x70\x68\xa2\xe0\xe6\x24\x4d\x7d\x33\x8e\x52\x35\x2b\xa3\x88\xe5\xf8\x33\xcd\xeb\x1c\xd5\x5c\xf6\x8c\x15\xe6\x5d\xbb\x63\x9a\x0e\x3c\xc8\x9d\x33\x6e\x45\xd1\x5b\x20\xa7\x85\x22\xd6\x15\xf1\x15\x06\xa2\x9d\x3f\x27\xc8\x6b\x4d\x3c\x71\xe9\x56\x48\xe6\x75\x2e\x27\xd0\xf4\xca\x88\x16\x6c\xa5\x7c\x12\xcd\xc5\xac\x50\xa1\xb0\x46\x25\xbb\xf1\x98\x8f\x9c\x7d\x5c\xd0\xac\xbb\x91\x2d\x7e\x57\x33\xb1\x75\x61\xfc\xd0\xe0\x08\xfa\xe1\x4d\x59\x73\x52\xcd\x6e\x6b\x9a\xee\x6d\x3b\x7a\xb9\xe5\x2a\x09\xf2\xc9\x37\xe7\x5d\x06\xf9\x86\x2e\x2b\x82\xce\xd7\xb8\x28\x48\xe6\x02\xe5\x77\xe1\xe3\x06\x3b\xdb\x81\x94\x0b\x20\xca\xed\x98\x7d\xff\xfc\xb3\x61\x1e\x1d\x40\x44\x3b\x9d\x46\xc9\x3e\x5b\xd0\xb4\xac\x06\xc2\xa5\xb5\xd6\x86\x37\xe7\x48\xe0\xea\x96\x08\xf9\x32\x2a\xea\x7c\x49\x46\xcf\xcb\x97\x00\xfa\xfa\xd2\x69\x3d\xd3\x33\x70\xf4\xb4\x7e\xfa\xf4\x1e\x98\x8d\x3f\xb4\x26\x0f\xac\xca\xd2\x07\x9a\xea\xf0\x11\x8e\x8e\x25\xb9\x97\x5f\x2e\x45\xfe\xe1\x81\xa6\x53\x86\x63\xcc\x47\x6a\x38\x48\x8d\xc7\xa4\x8d\x50\x79\xab\x1c\x2b\xb2\x2f\xc7\xaf\x67\xaa\x8c\x36\xea\x29\x6d\x76\xc8\x97\xb4\xc0\x16\xa0\xa0\x9d\x68\xc5\x0a\xe5\x3e\x36\x66\xb0\x51\x8a\x9c\x88\x13\xb4\xac\x8d\x51\x83\x89\x35\xe2\x34\xaf\x33\x81\x0b\xc2\x6a\x9e\x6d\x46\x97\xfd\xb1\xa7\xd8\x7f\xe7\x64\xe4\xb3\xde\x9c\xe1\xbb\xa7\x79\xb4\x7b\x07\xdd\x92\x82\x54\x34\xb1\x0b\xd2\xb9\x84\x86\x3d\x2a\x5c\xc7\xd5\xe8\x12\x3b\xa7\x4d\x76\x67\x2d\x99\x99\x8e\xb3\x22\x09\x5a\x62\x79\xef\x94\x59\x7d\x4b\x07\x2d\xb7\x4f\x12\x55\xd5\xc6\x92\x48\x59\x39\x28\xf4\xf9\x5d\xed\xff\x82\x30\x5b\x37\xc3\x11\x4d\xba\x62\x0a\x97\x42\xab\xb3\xab\xf4\xf0\x26\xcf\x9e\xb1\xf5\x7e\x99\x30\x03\x87\x37\x5d\x7e\x16\x15\x96\x0c\x25\x97\xac\xc3\x5a\xa0\xe9\x0a\xe1\x62\x9c\x09\xec\x37\x3c\xe4\x0f\x7c\xc5\x3d\x12\xf4\xc3\xe3\x84\xa1\x69\xee\x34\x7e\x25\xa8\x8e\xda\x70\xb1\xd1\xb0\x30\xfb\x75\x37\x8f\xc6\x1b\x99\x18\x1b\x1e\xe6\x84\x81\x8d\xf3\xae\xed\xc0\x16\x3d\xba\x66\x14\x87\x04\xdb\x67\x12\x2b\xf6\x18\xd1\x3d\xab\x8c\x25\x77\x00\xb4\x86\x37\xfa\xb9\x9e\x16\x6a\x7e\xec\xc3\x35\x74\x35\xcc\xc1\xc1\x76\x51\x1a\xd4\x39\x71\x2e\x07\xe5\xe8\x36\xc4\x55\xe9\x34\x26\xf7\xb1\x06\x91\x5b\x92\xd1\x24\xff\xba\x18\xc9\x28\x0f\xca\x0c\x58\x60\x1e\x01\xa5\xd6\x47\x01\xe5\x44\xe8\xf8\x32\x05\xe0\x64\x2b\xb1\xa1\xd9\xdf\xfc\xce\x32\x33\x52\x4b\x41\x8a\x19\x76\xd4\xd6\xee\xa7\x7c\x3a\x9c\xa6\xc4\xd0\x4e\xe5\xfc\x27\x9e\x68\xe3\x30\xc0\xa8\xfe\xda\xc7\x8f\xc0\x3c\x6d\xf9\x60\x6f\xac\x66\xc1\x94\xc5\x45\x61\xfb\xb6\x12\xf8\xf8\x58\x57\xce\x86\x31\x74\x1e\xc1\x96\x72\x9b\x90\xeb\x06\x5e\x18\x04\x9b\x7b\xf4\xd3\xf9\x65\xf7\x95\xee\x26\xff\xe9\xfc\xb2\x0b\xdc\xef\x15\x70\xa7\x01\xf7\x23\x4f\xb2\xe9\x3e\x80\xfb\x6f\x13\xd2\x82\x2e\xa7\x94\xdf\x1d\x50\xfb\xbf\x4a\xd4\xfe\xad\x75\x1e\xf7\x11\x1c\x20\xfb\x47\xda\x01\xb2\x7f\x18\xb2\xff\x49\x78\x10\xda\x9b\x69\xb0\x4c\xc1\xb7\xb9\x45\xa8\x77\x0d\x00\xd7\x17\x1d\x58\xfa\x9f\xce\x2f\xe7\x1a\xa0\xd1\xc3\xad\x3a\xf0\x25\x16\x8a\x5b\xbd\xf9\x54\x53\xb7\x67\x1c\xa4\x6d\xbc\x5b\x8f\x2e\xe8\xf1\xb6\xf4\xd0\x8d\xb6\x54\xd3\xa7\x9e\xa0\xa9\x40\xcb\x7a\x4f\x45\x8b\x24\x54\x7c\x20\xe5\x20\xa7\xef\x09\x22\xfa\xc1\x9e\x95\x8d\xaa\x3a\xc7\x8c\x53\xe5\x05\xc7\x42\x81\x03\x54\x82\x26\x75\x86\xc7\xac\xe2\xda\xc6\x36\x47\x17\x97\xd7\x1f\x2e\xcf\xcf\x6e\x2e\x2f\x5e\x23\x4b\x9d\xba\x42\xe4\x1c\xdd\xb0\xd6\x28\xa7\x11\x64\xb4\x83\x6e\xd8\x66\x4b\xc5\xda\xe9\xd3\x89\x61\x87\xb8\x68\xbd\x8e\x0a\x38\x03\x17\xe8\xaa\xa0\xa2\x8d\xa4\x19\x15\x99\x92\x8c\xd9\xe2\xdb\x92\xa2\xb1\x05\xde\x52\x5d\x41\xb3\xb0\x18\xd0\x6b\xd2\xfb\x82\x3a\xa3\xca\xdf\x3f\x4c\xd6\x7e\x79\x50\x7b\x0d\xaa\x03\xd6\xc7\x0e\x43\xe1\xd7\xf6\xf5\x36\x52\x41\xdf\x09\x4d\xa0\x9b\x45\x99\xb0\x65\x37\x47\x0f\x4a\x8b\x2b\xa1\x6e\xa1\xa3\xf9\x91\x15\x6a\xb2\x5e\xa1\x47\xe7\x63\x5e\x14\x6a\xe3\xe4\xed\xee\xa1\x39\x42\xbf\xd8\x92\x5a\x27\xaa\x30\x5a\x54\x2d\x49\xc5\x06\x5c\xe4\x8c\xde\x0e\xb5\xb1\xba\xf5\xd2\xed\xa4\x4e\x66\x1f\x25\x7a\x4b\xef\x49\xa1\x27\x6e\x3a\x6b\xb3\x5d\x00\xad\xda\x87\xb6\xc7\x1f\x3f\xbc\x9d\xfe\x51\x7d\x72\x40\x9f\x3c\x67\x79\x4e\x05\x5a\x63\xbe\x6e\x92\xb4\x5a\xdf\x7a\x73\x6a\xa7\xf5\xc5\xcf\xb9\xda\xc9\x89\xe6\x5e\x3a\x91\x17\x80\x60\x7d\xf4\x93\x7d\xb4\xa7\x40\x35\x3f\x6f\xe1\x58\x0f\x3b\xbb\xda\x40\x1f\x60\x50\xcf\x18\x68\x66\xd3\xf7\xdd\x30\x1d\x6d\xe9\x78\xa0\xb7\xea\xd2\x3e\xfe\xde\xc1\x02\x6a\xca\xcf\x2b\x21\x43\x0d\x31\x25\x02\xd3\x6c\xdc\x0a\xd5\xce\x9b\x60\x25\xcb\xd8\x6d\x1c\xfe\xec\xc0\xe0\xbf\xd1\x51\xb8\x33\x3c\x93\xb3\x3a\x5d\x36\x87\x62\x5b\xdb\x20\x62\x39\x01\xed\x68\x1a\x59\x55\xc5\xef\xc2\x15\xa1\x27\x1f\xe8\x1e\x85\xa5\xfe\xe8\xc7\x25\x6f\xa5\x35\x5a\xf8\x6f\xc5\x37\xdb\x3c\xcf\x92\x54\x39\xe5\x92\x49\x0c\x4a\x51\xa3\x44\x9f\x6c\xd7\x4c\x15\xac\x9a\x13\x36\x2c\x76\x0d\x07\x32\x7a\xd9\x96\xe4\x2e\x63\x49\x28\xdb\xa5\x86\xd4\x46\xed\x30\xad\xb2\x22\x33\xf2\x99\x72\x65\x1f\xd0\x65\x28\xab\xf6\xd6\x1d\xf6\x43\x39\xf8\xfc\xd6\xd0\x63\x03\x72\xf4\x9b\xd9\xa6\x1f\x57\xd3\xca\x29\x83\x24\xad\x99\x4d\xb9\x5a\x71\x96\x6d\x34\x54\xa2\xca\x18\xd5\x6a\x39\xbe\x55\x1d\x66\x95\x31\x53\x97\x15\xbd\xa7\x19\xb9\x95\x9f\x58\xd3\xe2\x76\x98\xbd\x34\x19\xad\x38\xcb\xd8\x03\x31\xa9\x36\x64\xab\xff\xf2\x7c\x72\xe1\x46\x6d\x8d\x8a\x1b\xef\x7f\xb9\x41\x05\xd1\x9f\xe5\x3b\x0b\xf4\xb2\x13\xa3\xf1\xab\xb3\xd9\x4c\xd9\x2f\x8e\xff\x29\x65\xc7\x34\x7b\x89\x3e\x11\xf3\x6d\x29\x3c\xcb\x13\x9d\x08\xf4\xb0\x66\x4a\xd3\xad\xb9\x19\x93\x7f\xf5\x72\x5d\xae\x0d\x17\xa9\x7d\xf3\x54\xbe\x2d\x05\x38\x7d\x6d\x75\x68\xa8\x0c\x6c\x8e\x5a\x8f\xda\x24\x39\x33\x92\x93\x5a\x23\x6c\x23\x56\x39\x3b\xae\x81\x0f\xf0\x46\xfd\xaa\x1c\x45\xbe\xc9\x33\x5a\xdc\x9d\x20\x2a\x2c\x9b\x92\xbb\xc0\x84\xd2\x15\x77\x76\x6f\x56\x04\x67\x0e\x97\xf6\xe8\x77\xbb\xae\xf2\x64\x0e\x2d\xc0\x06\xc9\x9b\x4d\xa9\xfd\xf8\xcd\x71\x37\xce\x67\x97\x8d\xbe\x78\xf1\x58\x86\xb9\x1d\x47\x1a\x50\x4b\x27\xf0\x47\xca\x21\xb8\x3a\x47\x57\x8b\xf3\xc5\x55\xaf\xb0\x8f\xfe\x6d\xdb\x24\x1e\x17\x78\x18\x13\x79\x38\xbe\xff\x60\x97\x9a\x1a\xec\x6e\x32\x60\xb2\xc6\xe5\x59\x2d\xd6\x17\x94\x27\xec\x9e\x00\x95\x0c\x0b\xac\x64\x0c\xd3\x88\xda\xa9\xd3\x34\xd0\xf9\x7f\x9d\x5d\xc3\xaa\x13\x84\x1d\xe8\xb6\x87\x0b\xc2\xc1\x1a\xc9\x70\xff\x0c\x85\xbd\xf6\xee\xe0\x3c\x78\xf6\xce\x03\x75\x4a\xfe\xa8\x0e\x03\x5a\x50\x41\xb1\x60\xde\x8c\xaf\xae\x36\xae\x4b\x9d\xeb\x2d\x7f\x65\x5f\x57\xae\x5d\x75\x99\x76\x28\xfa\x92\xad\x1d\x0c\x54\xaa\xf4\x9d\x84\xd3\x06\x79\xac\x17\x0c\x78\x82\x0a\xf2\x60\xbe\x49\xed\x33\xa3\x94\xff\xd3\x84\x6e\xca\x7d\x89\xb3\xbf\xbd\xfe\x4f\xc7\xe9\xf0\xb7\x26\x69\xb6\x01\xa3\x68\x40\xbb\x14\x4a\xfa\x74\x53\x02\x42\xf4\x37\x18\xff\x30\xa6\x2f\x3d\x9e\xff\xae\x71\xa6\xe7\xe1\xfd\x2e\x76\x9c\xee\xfc\x81\xba\x61\xd7\xd0\xce\xf9\xfb\x46\xc7\xae\x39\x51\x77\x96\x7e\x42\x54\xb8\xe0\x72\x32\x61\xa0\x38\x47\xc6\xf5\x73\x84\x8e\x45\x52\x06\x10\x71\xf6\x10\x4a\xad\x3b\x69\xe6\xf4\x6d\x13\x42\x3d\xf6\xdd\x3d\xf9\x49\xd4\xde\x82\x99\x36\x3a\x1d\xbc\x56\x2f\xa2\xb7\x94\x0b\x1d\xef\xa7\x29\xa9\x62\x39\x2a\xc8\x76\x74\x8e\xa5\x0c\x71\xad\xe0\x05\xcb\xbf\xe3\x34\xad\x5e\xeb\xbb\xc7\x02\x3b\x54\x4a\x92\x60\x4d\xc9\xab\xc6\x03\x77\x2c\x36\x25\x4d\xa4\x1a\x34\xce\xa5\xce\xaf\x15\x05\x8e\x7e\xf8\x5e\xe7\xa9\xff\xe5\xcf\xdf\x7f\x3b\xba\x74\x8f\x1f\xe5\x1c\x65\x43\x88\xf2\xb7\xf8\x12\xe3\x43\xfe\x96\xc9\xd7\x78\x5c\x94\x9e\x12\x20\x16\x6d\x55\x25\x73\x0a\xf5\xfe\x91\x8b\xd3\xf0\x58\x98\x98\x71\x88\x38\x7b\x72\x74\x32\xbd\x58\xfa\xac\x4f\xe5\x11\x9a\x3d\x5c\xf7\xd8\x83\x66\x03\xa3\xdd\x7f\x0e\xec\x61\x27\xad\x8c\xfe\x36\xb4\x8d\x67\xf2\x36\x18\xfc\xdd\x9d\xe9\x58\x6d\xae\x80\x98\xe7\xdf\xf7\xca\x4b\x16\xe8\xfd\x68\x6d\xc9\xa8\x44\xdb\x5d\x8d\x3d\xc5\x6a\x30\x2d\x7e\xcf\xd6\x13\xab\xa2\x4a\xfd\xd2\x0d\x7a\x97\x93\xc0\x49\xa5\x60\xdc\x1e\xc9\xce\x31\x32\x40\xf4\xc4\x46\x68\x39\x52\x3d\x7a\xad\x5f\xf8\x35\xa7\x68\xf3\xf3\x17\x9b\x3d\xff\x85\x55\x41\xb3\x41\x8e\x16\xea\x59\xeb\xb0\x90\x67\x41\x47\x84\x54\x52\x5c\x91\x9c\x88\x70\x6e\x2f\x8b\xf7\x6f\x16\xe3\x0a\x81\xb3\x9b\xbe\xc8\xae\x99\x64\x2e\x9a\x99\x7e\xc7\xf2\x9e\x36\xf0\x42\x4b\x1d\xe7\x19\xa6\x83\x89\xef\xbd\x33\x39\xf4\x9a\xfe\xe7\x42\xdb\x94\x3a\xf6\xf8\x26\xb0\x7f\xdc\xb2\x34\x48\xb1\x71\x47\x63\xa3\x37\x29\xb8\xaf\xc9\x6b\xd3\x0e\x76\x66\x97\xa9\xfd\x49\xff\x92\xc8\xcf\x4e\x62\x68\xea\x4d\x78\xd4\xd2\xb9\x7d\xbc\x9f\xc0\x34\x32\x15\x9e\xa3\x39\x30\x45\xb6\x12\x6d\xc9\x6c\x82\x56\x07\x39\x7a\xcf\x36\x88\x9d\xe6\x15\xed\x9d\x8f\x7e\x8a\x4c\x7b\x09\xa9\x93\xbb\x89\xdd\xfe\xe3\xdc\xec\x9a\xe8\x83\xbb\x66\x82\x15\x91\xd1\xd2\xd7\x03\x2f\x75\x4f\xaa\x7e\xe2\x5c\x47\xed\x67\x63\x5a\x67\x43\x40\x07\xca\x0d\x55\x7a\x1c\xad\xea\x38\xe1\x68\x7d\x7d\x19\x76\x7b\xaa\xc7\x18\xf6\xf6\xa7\xc0\x3c\x81\xab\x0b\x23\x62\xd9\x5c\x00\x6e\xb6\x02\x6a\xf7\x82\xb3\xee\xa3\x03\xf4\x84\x2d\xef\x76\xed\xa5\xf1\x05\xd9\xe4\xe2\x3d\xb0\x0a\x9a\x29\x7b\xdd\x79\xbc\xe7\x50\x36\x7f\xeb\x27\xcb\x0c\x8b\xd8\x5f\xfe\x14\x2c\x94\xc7\xcc\x19\xc2\x90\xd9\xdc\x9e\x8d\xd1\xc5\x1c\x3a\x32\xa0\xa3\x31\x2e\x5c\x8d\x1d\x99\xf0\x91\x18\xbf\x00\xf7\x73\x54\xa2\xae\x18\x68\x7e\x66\x2b\xc9\x8f\x76\x7f\xf7\x8b\x0a\x0a\xea\x0d\x64\x05\xbf\x9a\x87\x4d\x7a\x90\x5c\x8f\x96\x29\xe0\xe6\x98\xf8\x63\x61\xbe\x48\x05\xc6\xa6\xac\x5a\xf0\xac\x6b\xd0\xdf\x15\xab\x54\x92\x25\xd5\x79\x97\x2d\xa2\x9e\xc9\xba\x3c\x31\xd8\xec\x39\x2e\x47\x30\xe3\xe4\x51\x77\xd1\x82\x27\x1c\xeb\x58\x70\xeb\x77\x00\x44\xeb\x2e\x72\xf5\xe8\xd6\x0b\x21\x5a\x8f\xe3\x54\x8f\x5b\x87\x43\xf8\xd5\xe3\x38\xd5\xa3\x34\xa3\x90\x41\xbb\xd8\x9f\x1e\x2b\x36\x00\x13\x54\xa1\x7e\x3e\xaa\xfd\xde\x6c\x38\xd0\xc2\x5b\x74\x6a\x1b\x81\xa7\x37\xbb\x9c\x8e\x69\xf6\xf1\xee\xe5\xd7\x50\xd3\x73\x6b\xd2\x9e\xdb\x42\x85\x38\x63\xc5\xad\xb3\x14\x1e\xcb\xa5\x03\x87\x6f\x9c\xbe\x9b\xd2\x63\x3d\x85\x01\x43\x7a\xab\xab\x8e\x0c\xca\xcd\x01\x6f\x81\xeb\xdb\x32\xab\x2a\xcd\xb3\xad\x90\xe7\x25\x0c\x87\xaf\x0c\x4c\xfb\x60\x4f\x61\xc5\x32\x83\x34\xb5\x37\xf6\x42\x0e\x0b\x56\x36\x13\x40\x71\xb0\xb0\xa6\xaf\x80\x26\x80\xa6\xb7\xc4\xe6\x60\x29\x4d\xe0\xd0\xc3\xc5\x36\xa3\xa1\xa8\xa3\xca\x6e\xa2\xab\x15\x80\xe4\xfe\x0b\x70\x76\x67\x21\xa2\x14\x27\x80\x62\x53\xac\x33\xa2\x28\x27\xb0\xa3\x6e\xd9\x4e\x68\x79\xce\xb6\x01\x0f\x5a\x74\xc9\x4e\x00\x45\x04\x28\xeb\xd9\x36\x38\xef\xd0\x2d\x58\xea\xb3\x6d\x3b\x15\xfd\x6c\x5b\x04\x9a\xab\x6e\x61\x54\xf3\x91\x3e\xfa\xf1\xcd\x81\x14\x91\x83\x83\x0e\x41\x3a\x07\x93\xdd\x42\x44\xf7\x61\x9e\x83\xa9\x8e\x62\xa3\x0f\xa1\x9f\x83\xa9\xee\x4d\x16\xea\x37\xb8\x6c\x14\x46\xe1\xd5\x0d\x8e\x8d\xde\x36\x28\x4a\x7a\xdb\xc2\x78\xe9\x6d\x8b\x2a\x36\x0a\x9e\x39\x53\x94\x14\x54\x76\x14\x4c\xf4\xdd\x40\xbd\xe3\xe1\x02\xa4\x60\x92\xa3\x85\x4a\x81\x9c\x57\xb7\x48\xa6\x01\xc3\x59\xd6\xcd\x5f\xa8\xd4\x7d\xce\xab\x8d\xf4\xfb\x1a\x2c\xd6\xe0\x3e\x3c\x1e\x16\xd2\xb6\x50\xbc\x82\x6e\xcf\x37\x6a\x41\xb7\xd8\xd8\x05\x00\xc9\x50\x74\x83\x6e\x11\x3b\x28\x54\x1a\xb5\x6d\xd1\x45\x52\x01\xc3\x69\xca\xa8\x86\xcb\xa5\xf6\x47\xe7\xb3\xcb\x74\x9f\x0c\xee\xce\x40\x31\x2f\xe7\xc1\xb0\x16\xe4\xd0\xb2\x7a\x50\x60\x40\xcf\x40\x4b\xda\x2e\xd5\xb4\x55\x4f\x09\xb0\x98\x9e\x52\x4e\xd1\xfd\x7b\x9c\xf2\x4e\x6d\xdb\x47\xa1\xa7\xb6\xc5\x0a\xa2\xb0\xe2\x4f\x6d\x8b\x2b\x03\x05\xbe\xae\x9a\x72\x51\xd0\x82\x50\x70\x51\x27\xa2\x70\x94\xd3\x9f\xc8\x69\x44\x91\xc5\xa4\xda\x16\x5b\x56\x2a\x82\xb4\xd2\xc2\xf7\x54\x60\xaa\x6d\xd1\x8a\x04\x8a\x2b\x3a\xd5\x36\x68\xf9\xa9\xb8\x29\xe9\x95\xaa\x8a\x2b\x44\xd5\xb6\x09\xd3\x10\x23\x1e\xa1\x88\x32\x55\xfd\x4e\x01\x65\x20\x74\x50\xf2\x0e\x4a\xde\xd7\xa4\xe4\x85\xca\x63\xc1\x6f\x23\x5b\x46\x2b\x54\x28\x2b\x4a\x1d\x1b\x2e\xa8\x85\xfa\x25\xb3\xe0\x5a\x23\xa4\xb4\x56\xec\x45\xbc\x9f\x22\x5b\x6d\x8b\x66\x93\x71\x85\xb7\xda\x16\x5f\x82\x0b\x7e\x42\xa5\x5c\x02\x2f\xc6\x05\xa6\xdb\x2d\xda\x15\x2e\xcb\x15\x25\xf3\xc4\x97\xef\x6a\xdb\x14\xe9\x27\xb2\xa4\x57\xdb\xe0\xc5\xbd\xa2\xee\x79\x5b\x08\x6c\x6a\x99\xaf\xb6\x4d\x12\x78\xc0\xa5\xbf\x9c\x57\x80\x45\xc0\xa2\xa6\xa1\x5b\x30\x6c\xa4\x1c\x58\x14\x45\x48\xe9\xb0\xb6\x4d\x9a\x3c\x78\x39\xb1\xb6\xed\xb3\xb0\xd8\x4e\xdd\x8f\x97\xf2\x40\x65\xc7\xfa\x7d\x02\x0b\x79\x71\x46\xb9\x2f\x69\x6c\x03\x12\xd5\xa1\x1b\x3b\x9b\x47\x0c\x50\xf7\xbf\xa2\x87\xd8\xa4\x7c\x19\xf7\x29\xcc\xaa\x10\xe1\x1e\x86\x55\x3e\x3e\xb8\x87\xc1\xee\x61\xbd\x5e\x07\xdf\x70\xa7\x1d\x7c\xc3\x07\xdf\xf0\xc1\x6c\x70\x30\x1b\xd8\x76\xf0\x0d\x43\x49\x1e\x7c\xc3\x80\x87\x0f\xbe\xe1\xaf\xd4\x37\x6c\x84\x5f\xed\x18\x06\x6e\xb4\x2f\xee\x17\x36\xc5\x55\xce\x92\x84\xd5\x85\xb8\x61\x77\x24\xe0\x64\x02\x29\x40\x5b\x34\x03\x03\x7b\x1c\x5d\x09\xd7\x29\x95\x7a\x49\xe4\xda\x9e\x99\xd7\xac\xd2\x20\xef\x8a\x22\x25\x69\x43\x0f\x31\x88\x28\x2e\x5f\x15\x72\xec\x73\x74\x86\x2a\x92\xd0\x92\x12\x5d\x61\x18\xeb\xdf\xf5\xe2\x5b\xec\x78\x00\x45\x2a\x38\xc9\x56\x06\x8b\xbb\x70\x6a\xaf\x38\xd2\xbe\x61\xe4\xb6\xab\x10\x39\x7c\xd5\x76\x55\x2b\x23\xcc\x82\x44\xdb\x62\x34\x15\xf9\xa7\x95\x02\xf4\x88\x20\x87\xdf\xe9\x45\xc7\x2d\xa8\xa6\xb4\xed\xba\xf9\x3c\x2e\xa9\xc9\x9e\xde\xe7\xe9\x26\x9f\x4b\x5a\xa9\xed\xb9\x20\x09\x2b\xc6\xcb\x4e\xb6\xad\xb3\x15\x2e\xfb\xef\xdb\x3d\x61\x2c\xa8\x24\x45\x69\x5d\x41\x5d\xf2\x6c\x25\x45\x49\x9a\x52\xb1\x69\x1c\xb1\xa6\xb6\x11\xd6\x67\xa5\xd9\x30\x1c\x68\x5b\xd7\x1b\x09\x97\x65\xc5\x70\xb2\x26\xdc\x19\xb1\x96\x31\x4d\x06\x59\x08\x7d\xb6\x6d\xa6\x06\x98\x52\xef\x14\x55\x29\xbd\x64\x1b\x54\x31\x61\x43\x09\x7a\x9d\x86\x76\x53\x7b\x10\x6c\x87\xd4\x07\xb4\xb0\x20\xaa\x8d\x8a\x48\x60\xce\x47\xc0\x63\xa7\xce\xf6\x55\xf8\x20\x59\x6a\xf1\x41\x7e\xf8\x16\x95\xa4\x4a\xcc\xa9\x83\x45\xeb\x28\x58\x0b\xc1\x50\x26\x65\x36\xc9\xca\xc7\xc9\xff\xf9\x3b\xb4\x66\x75\xc5\xe7\x36\xa3\x0b\xd4\x67\xf4\x4a\xbd\xa5\xb5\x5b\xab\x62\x08\x94\x11\xcc\x05\x7a\xf5\x2d\xca\x69\x51\xcb\xab\x39\x48\xcc\x11\x7e\xbf\xff\x0e\x78\x68\x60\x62\x2f\x4c\xe0\xdd\x76\xa2\x9b\xb3\x51\x6a\x4c\x5d\x23\xf7\x9a\x13\xef\xcf\x16\x74\xbe\xad\xb0\xb2\x7b\xde\x31\x73\x2d\xb8\x2b\x51\x08\xb6\x47\x4e\x01\x93\x21\x01\x52\x21\xe8\xd6\x05\x3c\xe4\x17\x15\xfd\x29\x70\xc6\x10\x3f\xf0\x37\xef\x87\x7f\xab\xd9\x72\x23\xc2\xb9\xae\xff\xad\x9f\xeb\x26\xb9\xda\x1f\x87\x41\x65\x06\x07\xd9\x01\x7a\x6f\x31\x65\x06\x9e\x0d\xdd\xf8\xb7\x52\x0f\x05\xe5\x41\x29\x8d\x55\x25\xaf\xe2\xb2\x31\x34\x26\x09\xd1\x05\x1e\x2f\x9c\x92\xf3\x4c\x53\xf5\x2e\xcf\xbe\x32\x42\xbd\xd8\x2d\x76\x66\x6d\x3e\xd4\xb8\xd6\xb8\x6f\xf8\xf0\xb0\xac\x59\x91\x5b\xca\x05\xb8\xee\x82\x7e\xb8\xbb\x71\x38\x2d\x6e\x35\xc6\x76\x5e\x67\x82\x96\x59\x33\xe2\xd1\x71\x36\x84\xcc\x3d\xe4\x1a\x3b\xb1\x63\x83\xc3\x3a\x6d\x5a\xa3\x48\x95\x98\x8e\xb3\xbd\xe3\xe6\xdb\xa4\x10\x1a\xe2\xb9\x92\xd7\x5c\x89\x2b\xdc\x4c\xa7\xaa\xef\xca\x5f\x1a\x7b\x2a\x56\x4e\xe0\x71\x96\xaf\x3c\xc2\x92\x1a\xce\x9a\x69\x52\x8e\x42\xe3\x3e\x9c\xba\xb1\x04\x29\x70\x31\xea\xa3\xe8\x9a\x1f\xd4\xa3\x88\x3d\x34\xf1\x7e\xba\xd8\x46\x6f\x47\x19\x89\xf1\x47\x9c\xdc\x91\x62\x5c\x03\x51\x35\x90\xd4\x44\xa4\x9b\x02\xe7\x1a\x6f\xcb\x2d\xeb\xdc\xa3\xcb\x4f\x8c\xdd\xcc\x07\xa0\x49\x84\x4d\x02\xf7\x16\x56\x0d\xce\x4a\xcd\x81\x50\x3f\x1f\xb9\x2e\xee\xec\x3b\xff\x5c\x7b\xf4\x2a\x7a\x9f\x90\x90\x88\x23\x3f\x3c\xb5\xd3\xf7\xa3\xd8\x02\x5b\xdd\x36\xb8\x02\xd4\xd9\xdd\xca\x3c\xd7\xb8\x5e\x14\xaa\x17\xce\xe4\x91\xdf\xd8\x48\x92\xd1\x4e\xf7\x36\xc0\x72\xb3\x4b\xfd\x95\x50\xf9\x11\xbd\xf5\x07\xff\x38\x2a\x93\x7a\xef\xa9\x6a\x19\xce\xd1\x3e\xfa\xf0\xe3\x45\x97\xcf\x7c\xc0\x29\xe3\xe8\xc7\x8c\x25\x77\xe8\x82\x28\xf1\xf5\xa9\x8b\x92\x54\xcb\x74\x37\x28\xea\x03\x94\xf2\x28\xcd\xe7\x02\xa5\x5c\x2d\x53\x6d\xf6\x1a\xa7\xfa\x6c\x81\x94\x73\x7c\x0b\xc5\xd4\x97\x1a\xb0\x3a\x50\xea\x25\x5b\xf7\x6a\xe2\x51\xf8\x66\xcd\x1e\x66\x82\xcd\x6a\x4e\x66\x74\x34\x88\x22\xd8\xff\x3b\xb2\x91\x7f\x83\x8d\xe0\x67\xfd\x70\x47\x65\x11\x4c\x19\xd8\xd5\xef\xf2\xa6\xfe\xf0\xe3\x85\xbc\x2e\x1a\x89\x69\x74\xf6\x29\x47\xa7\x44\x24\xa7\x09\x29\xd7\xa7\xa6\x1b\x5f\x7c\x3a\x72\x56\x50\xc1\x2a\x60\xe9\xa2\x33\x94\xb0\x2c\x33\x59\xfc\x6c\x85\xce\x49\xb9\x6e\x48\x3c\xf6\x58\x1e\x1f\x8c\xb7\x64\x0c\x06\x62\xea\x6c\x6d\xf9\x8e\xd9\xd9\x8e\x62\x50\x2d\xe3\x98\xc7\x53\x2e\xf9\x1f\xa8\xc6\xe3\xde\xa7\x65\x7f\xd8\xc5\x47\x0b\xfb\xb8\x52\x04\x1d\xaf\x4a\x17\xaa\xd8\x90\x1d\x9d\x99\x0e\x0b\xb9\x5a\x69\x51\x39\x25\x29\x62\xf7\xa4\xaa\x68\x4a\x38\x6a\x78\x85\xab\x79\xd2\x6c\x2f\xf5\x9c\x26\xcc\xe4\x01\x65\xf9\xc9\x51\x96\xc1\x8a\x8b\xc3\x98\xe4\x3b\xdb\x8c\x09\xa7\x39\x2d\x9e\x29\x6b\x0a\xe0\x25\x4b\x19\x62\xf0\x2f\xf6\x02\x8a\x55\x11\x78\x82\x33\x72\x35\x28\x84\x75\xbd\x78\xfa\xb9\xae\xa6\x60\x7f\x74\x90\x0a\x27\x20\xb7\xfd\xdc\x6c\x68\x54\xb0\x74\xd8\x9e\xfb\xaf\x87\x5d\xe8\xec\x57\x0d\xdd\x36\xf5\xaa\xbb\xc5\x82\x3c\x60\x60\x99\x56\x3b\x84\x1e\x92\xaf\x5d\xe8\xb3\xeb\x2b\xf4\x93\xa6\x37\x1d\x2c\xb1\x62\x42\x4b\x4f\x17\x2c\xc7\x14\x58\x44\x63\xdd\x2d\x3d\x6d\x3b\x74\xdd\x10\x43\x9a\x9a\xad\xf0\x31\x3a\xbf\x1a\x97\xa8\x96\x5a\x8f\xd1\x48\x0e\x58\x76\x03\x2d\x4e\x10\x68\xe5\x00\xc7\xcc\x62\xc3\x3c\xdb\xda\x06\x66\xd5\xbc\x26\xa2\xd6\xad\x8a\x38\x29\x38\x55\x9e\x11\xc7\x79\x6e\x8a\xb8\xe9\x9a\x7f\x3a\x4e\x53\x0b\x0b\xe3\x47\xea\x2d\xbb\xa5\x85\x3d\x95\xcc\x38\xec\x56\x78\x5c\x7a\x38\xdc\xee\x4f\x7e\xbb\x73\x9e\x5d\x16\x78\x99\x8d\x3b\x96\xba\x4c\x3c\xc3\xca\x0b\x4a\xd4\x3b\xa7\x29\xe5\xf2\xff\xd1\x62\xf1\x56\x19\x9f\xeb\xc2\x4a\x9e\xca\x0c\x6b\x58\xd6\xf8\x0e\x49\x5d\x08\xe2\xe9\x67\x46\xf3\x13\x30\xc6\xe0\x55\x91\xca\x6e\x12\xde\x89\x8d\x31\x54\x34\x6c\x62\x13\x48\xac\xa2\x0b\x7c\xfe\x8c\x9b\x35\x4d\xee\xae\x1d\x1b\x33\xab\xe4\x6f\x85\xf3\x53\xe7\x52\xe9\xff\x6d\x2a\x13\x34\xdd\xbd\x86\xaa\x8d\x37\x0e\xf7\x5e\x98\xa1\xca\x97\x11\xe6\x9c\x25\xb4\x75\x22\x28\x63\x43\xc3\xde\xc7\x97\x4e\xb1\xfd\xe9\xdd\x57\x37\xf4\xa4\x3b\xc8\x2e\x94\xad\x32\xca\xdd\xbb\xc5\x13\xc3\x6c\x46\x3f\xb9\xcb\x7a\x4b\x80\x31\xd0\x6f\x3a\xa8\xe7\x56\x3e\xeb\xda\xbf\x9b\x20\xf7\x00\x83\xb6\x72\x93\xad\x64\xb8\xb5\x64\x0d\xfa\xb9\x71\xad\x3e\x8a\xa5\xdc\x48\x34\x83\x7f\x6b\xee\xad\xe1\xbf\x8e\xc9\x74\x7e\x19\x79\x34\xd9\x65\x48\x1b\xee\x39\xed\xf4\x6f\xc6\x34\xae\x42\x84\x4a\x56\xd6\x99\x8e\xdd\x18\x71\xf8\x6c\x03\xc8\x4f\xb2\xb0\xea\x6f\x4f\x2a\xee\x1f\x89\x96\xea\x0f\x29\xdf\x02\x4e\x0d\xf1\x61\x57\x14\xf7\x00\xa7\x3a\x12\xd5\xb7\xdf\x7f\xf7\x9d\x07\x61\x7e\x1c\x62\x35\x0c\xa5\x3a\x4a\x15\x12\x4a\x3e\x16\x22\x3e\x2e\xdb\x8d\x84\x8e\x07\x43\xc2\xc7\xef\x86\x50\xa8\xf8\x7e\x30\x56\xbd\x96\xc9\x09\x39\x56\x4d\x06\x95\x67\xaa\x20\x99\x55\x03\x99\x47\xa3\x14\xfd\xf9\x54\x9e\x6c\xa9\x71\x8a\x03\x59\x54\xc0\x1c\x29\xaf\x07\xa3\x75\xe3\x47\x65\x46\x8d\x3b\x85\x56\xfb\xce\x87\x8a\xcc\x82\x6a\x73\x9c\x46\x29\xc2\x73\x9f\xb6\x32\x9b\xc6\x2f\x34\x58\xc6\x53\x0c\xc6\x6f\x38\xbb\x09\x90\xb9\x04\x8b\xdc\x0d\x66\x29\xed\x94\x9b\x04\x0c\x09\x0b\xe7\x21\xc5\x5c\x15\x6d\x56\x91\x97\x24\x82\xe4\x1c\x6d\xe7\x12\x05\x68\x7a\x32\x8d\xc6\x33\x88\x02\x34\x23\x2e\x05\x87\xf9\x07\x88\xc6\x5d\x0d\x6a\x8e\x03\x14\xc3\xb9\x44\xf0\x0c\x22\x68\x00\x65\x38\x78\x32\x2a\x47\xc8\xe6\xfe\x04\x46\x0a\xc9\x0c\xea\x67\xfc\x00\xf6\xcd\x70\x3e\xd0\x78\x9e\x4f\x80\x64\x38\x0b\x08\x74\x3c\xc3\xd1\x9a\xfe\x3c\x9f\x40\x1c\xe7\xce\xe1\x99\xe1\xac\x92\xf8\x5c\x92\xe6\x8e\xf0\x89\x99\x9e\x14\x12\xa8\x71\x0c\x5e\x85\xca\xb5\xfe\x18\x85\xc0\x8a\xa0\x3a\x48\xa6\xad\x28\xe5\xb9\xf7\xeb\x11\x07\xe1\x7e\x54\x02\x14\xde\x52\x7e\x25\x49\x7f\x89\x85\x8b\x2c\x1a\xad\xff\x97\x45\xcf\x99\xd0\xfc\xdc\xf3\x21\x48\xfe\x36\xd8\xe1\x83\x0f\x61\xa4\x3d\x75\xfd\xa3\x83\x21\x7c\xdb\x10\xce\x3b\xe0\x31\xd6\x0c\xa0\xe5\x9c\x15\xab\x10\x5b\x1a\x78\x49\xaf\x04\xdd\x1e\x8a\xb3\xeb\x2b\xa9\x47\xab\x6c\x20\x9c\xf1\xf9\x50\xa6\x74\x1a\x88\xbe\x51\x92\x52\xab\x6f\x60\x21\x48\x5e\x8a\xf1\x85\x3f\xd8\xc1\x9f\xdc\x0e\x1e\x69\xdc\xfb\xb5\x79\xbc\x29\xc9\x59\xe7\xb8\x98\xc9\x13\xa5\x2c\xe2\x1d\xa7\x99\xdd\x4c\x01\x05\x78\x6e\x8b\x63\xeb\x7b\x49\x99\x48\x54\x70\xbc\x2e\x55\xd4\x6a\x31\x6d\xad\xc8\xdd\x6d\x99\x8a\x4e\xe4\x98\xf5\x95\xd9\x3b\x69\x09\xeb\xc7\x70\x8e\x0e\xd7\x0c\xa4\x99\x17\x7b\xa8\x9c\xfb\xb8\xa3\x0f\x8b\x35\xd1\xd7\xf6\x35\x4b\x8f\xc6\x37\x57\xfb\x76\x57\x73\xd0\xaa\x03\xce\x32\xf6\xa0\xfb\xea\xde\x5a\x72\x9d\x64\xdf\xbd\x1c\x41\xf1\xee\x9c\x4a\x25\xda\xd8\x5c\xdd\xee\x6b\xdf\xa7\xd4\x4c\x48\xa5\xc5\xef\xca\xb8\xcc\x16\x9e\xe0\x1b\x67\x0b\x49\x45\xb5\xd0\x21\xce\xf2\xdf\x36\xfa\x46\x23\x19\x1b\xd7\xc1\x92\xac\xf1\x3d\x65\xb5\x27\xfb\x70\xa1\x39\xdd\x0b\xf3\x8a\xba\x66\x36\xac\x6e\x4c\x6d\xba\x54\x66\x33\x4b\x7c\x7b\x1d\x46\x49\xbf\x6f\x5f\x52\xca\x53\xca\xac\x6d\x62\x46\x3e\x53\x2e\xb6\xe7\x24\x04\xb0\x63\xb1\x04\x1f\x41\x24\xba\xe7\xa5\xbc\xc3\x80\x85\xf1\x7e\x75\x9f\xee\x8a\x46\xf7\x0b\xf5\xa7\x3f\x4a\x59\xbc\x83\x70\xe4\xb6\xc6\x41\x96\xd1\x64\x03\x2c\x0e\xd7\x3a\xc6\xe4\x4b\xe8\x47\xcc\x49\x8a\xde\xe1\x02\xdf\x6a\xfd\xf2\x78\x71\xfd\xe3\xbb\x97\x72\xd1\xbc\x28\xdb\x57\x17\x83\x5e\xb5\x85\xdb\xa3\xf7\xd3\xf3\x19\x7a\x63\x03\x5f\x5a\x7b\x1a\xdd\x0e\x99\x18\xf6\xe2\xf1\xa1\x21\x6f\x27\x6d\xf6\x4b\x77\xf6\x8e\xe5\x7d\x9e\x3e\x4a\x51\xce\xb6\xab\x71\x0c\x68\xf4\x4f\x29\x16\x78\x89\x39\x59\x0c\xfa\xb5\xba\xc2\xba\x79\x14\x14\xd0\xe9\xe3\x21\x01\x8f\xd2\x2e\xde\xa4\xc6\x6b\x34\x38\xf9\x93\x3c\x49\xae\xc7\x68\x90\x6a\xb4\x17\xa9\x6b\x36\x1c\xf6\xa0\x44\x79\x90\xfa\x9e\xa2\x11\xae\x1d\x63\x22\x1c\x35\x02\x86\x4c\x7f\x7e\x83\xdf\xa8\xf1\x7c\x17\xaf\x90\x07\x8c\x7f\x82\x47\xa8\xf5\xfc\x0c\xdf\xa9\x71\xde\x20\x38\x76\xde\x14\xb4\x3c\xc7\xe3\x33\x48\x13\x84\x8f\x37\xea\xed\x19\xde\x99\x3e\x0f\x10\xc0\xd3\x33\xe2\x30\x1c\xf2\xfe\xec\x8a\x70\x37\x05\xd3\xce\xe3\xdd\xd9\xaf\x67\x27\xac\x4f\x7b\x3d\x3a\x93\xbd\x39\x00\xc5\xd4\xef\xc5\x99\xe6\xc1\x51\xab\xe8\xd1\x97\x63\xbd\x37\x10\x95\x0e\x45\x78\x6e\xba\xec\xd6\x43\x72\x5a\x55\xd4\xd1\x13\xaa\xdb\xae\xf8\x6e\x30\x7f\x0c\xc4\x17\xe3\xf7\xc3\x4c\xf2\xc1\x04\x30\x9d\x62\xfd\x2f\xcd\x45\xeb\xa1\x19\xe1\x7b\x09\x78\x57\x00\xf6\x4e\x9f\x57\x65\xdc\xa3\xe2\xf1\xa6\x04\x0c\x43\x3e\x2f\x8a\xcf\x83\xb2\x83\xf7\xc4\xe3\x25\xf1\x5b\x4d\xfd\xde\x91\x1d\x3c\x23\xca\x03\x32\x2c\xe4\x3d\x96\x57\xc4\xb3\x15\x46\x57\x6c\x8d\xb3\x81\xe2\xd8\x23\x91\x9f\x4d\x8a\xb0\x15\xca\xe5\xa5\xa8\x29\x28\x56\x88\xb3\x0c\xb1\xd5\x8a\xaf\x19\xdb\xde\x17\x8e\xfd\xa8\x85\xc6\x27\x9f\xe5\x20\xd1\xf5\xaf\xe7\xda\x72\x97\x4a\xfd\x7f\x5b\x7f\x1d\x5f\x43\x5a\x50\xbf\x52\x70\x55\xe8\xbb\x5b\x72\x55\xb9\x2c\xf2\x05\x8a\x33\xfa\x7b\x3b\x8a\x08\xcd\xa0\x64\x5c\xdc\x56\x84\x7f\x3a\x7b\x3b\xb4\x5f\x42\x77\x26\xfe\xbd\xae\x46\x6f\x2e\x88\x01\x1b\x54\x8c\x00\xe4\x6c\xcd\xf1\xe7\x73\x56\x14\xa6\x5c\xb4\x8f\x1c\x14\x90\x08\xe6\x49\x2f\x2b\xb2\xa2\x9f\x77\xec\x7e\xd0\x32\xbd\xfc\xf3\x2e\xb3\xbc\xac\x93\x3b\x3f\x60\xf8\x61\x8a\xd1\x12\x27\x77\x75\xe9\xb3\xa3\x84\xb3\x7d\x92\xd1\x59\x39\x2c\xd3\x9e\x96\x29\x63\xc9\x78\xbc\x02\x64\x96\xf1\x03\xbf\xcc\x30\x17\x34\x51\x28\x1b\x0b\xc1\xc6\x59\x18\xda\x4e\x40\xff\xb4\xd8\x7a\xbb\x63\x2f\x2e\xd0\xd9\xa7\x05\xba\xa0\x7c\xcc\x1c\xa5\x5b\x5b\x95\xc1\x86\x73\x5b\x87\xbb\x52\x6b\x8c\xe5\x58\x5e\xc2\x01\xdb\xb1\x33\xb0\xc2\x38\x49\x6c\xad\x0b\xa3\xbc\x96\x2c\xdd\x39\x74\x01\x3f\x70\xa2\x87\xbd\x94\xc3\x96\x7f\x1e\x45\x70\x80\x2e\x04\x0a\x5a\xb6\x87\x97\x00\x06\x19\x12\x20\x89\x2c\xa4\x48\x0c\x74\x48\x90\x66\x0f\x5a\x04\x04\x21\x12\x24\x3a\x0c\x31\x12\x34\xa1\x87\x3b\x3b\x0a\x35\xb2\xb7\x2d\x12\xec\x83\x76\x03\x47\x62\x8d\x04\xa9\xba\x58\x24\x10\xcc\x11\xdb\xc0\x38\x7c\x25\xae\x04\x15\x80\x42\x87\xdb\xb9\xd1\xcd\xab\x76\x70\x43\x50\x37\xc1\x11\xb6\xfb\xf6\x6a\x85\x58\x4e\x85\xb0\x2a\x7a\xda\x66\x19\xd9\x87\xe4\x4e\x04\xe2\x6a\xea\x74\xed\x16\xde\xe6\x4d\x83\x04\x86\x4e\x53\x72\x7f\xca\x53\xfc\xea\x44\x75\x53\x6f\x9c\x30\x1c\xac\xe8\x8c\x19\x73\xf4\xe2\xd5\x8b\x39\x5a\xd0\x9c\x66\xb8\xca\x36\x1d\x0b\x56\xf3\x5c\x90\xea\x8a\x55\x4d\x87\x54\x96\xee\xb7\x2f\xd0\x31\xab\x54\xcf\xa4\x42\x9f\x11\x7c\x4f\x6c\x16\x93\xe4\x44\xe1\x8e\x92\xbc\x14\x9b\x97\x41\x4c\xf7\x18\x2c\x77\x38\x98\x65\x28\x88\xc7\xb6\x5e\xce\x8b\xd1\x29\x5f\x88\xaa\x26\x2f\x54\x4c\x8f\x0a\xca\x91\x37\x01\x27\xa2\x13\x9c\x13\x1c\xbf\x9d\xa8\x7e\xf4\x8e\xf2\x26\xab\x0f\x6c\x6d\xb6\x20\x4d\x67\x33\xbe\x50\xe1\x46\x2f\x9e\xfc\x26\x42\x51\x68\xd4\xfa\x2b\xe3\x8e\xc2\x76\x60\xee\x3a\x7c\xd4\xa1\x19\x57\x17\xf6\x2e\x72\x72\xf2\x53\xca\xef\xe0\x05\x8e\xa8\x16\x1f\x8e\xcf\x72\xfc\x3b\x2b\xd0\xe5\x8f\x36\x20\xef\xe5\x17\x9c\xb8\x20\x43\x84\xc0\x92\xce\x9a\xb9\x0d\x0a\x88\x01\x58\x52\xa5\x74\x4a\x01\x0b\x2c\xb5\x9d\xd9\x37\xfa\x92\x9a\xfc\x5d\x7b\x34\xd4\x5f\xc3\xe0\xaf\x2e\x62\xa8\x3c\x65\x4b\x6a\x3d\xfe\xae\xb4\xb5\x07\xc1\x28\x51\x37\xd6\xad\x2f\x09\x6c\x70\xa8\x47\xff\x25\xbb\x76\xae\xdf\xd6\x86\x65\xf4\x9e\x15\xe4\x44\x31\x02\x24\x39\x81\xfe\x67\x70\x2b\x7e\xaa\xa8\x20\x41\x76\x08\xbe\x32\xe5\x39\x80\x54\xc6\xdb\xb2\x78\xba\x56\x2a\x85\xbf\xae\x4e\x94\xb9\x3c\x97\x19\x5b\x5a\x47\xf8\x3e\x7b\xfa\xf1\x43\xa0\xfc\xf8\x40\x47\x3f\x7e\xb8\x7a\xba\x4e\x4e\x10\x9c\xf7\x14\x1a\xe2\x76\x75\x4a\x88\x48\x58\xde\x8d\x93\x73\x11\x0d\xa3\xdc\x03\x42\x49\xdc\x61\x81\x56\xe0\x8e\x16\xc1\x5a\x1e\xdd\xa3\x79\xf9\xb9\xd4\x7e\x45\x13\x0a\xba\x58\x63\x55\xa1\xaf\x41\x75\x95\x1b\x25\x7c\xa7\x52\x7e\xc7\xe5\x0d\xd3\xe4\x40\x5b\x50\x76\x74\x41\xb4\x65\x33\x7d\x6d\xf1\x6a\xc1\x14\x87\x09\xea\xb8\x90\xf4\xb5\xe6\xb9\x28\xd7\xff\xa9\x76\x38\x8c\xea\xb1\x0a\x5d\xa4\x45\xf3\x2a\xbe\xc7\x34\xc3\x4b\x9a\x51\xa1\xe2\x85\x5f\xce\x1b\xd0\x7d\x88\xd0\xab\x00\x2e\x07\x41\x29\x3b\x0f\xc2\xf1\xb4\x27\x88\x5d\xd0\x18\xea\xe0\x78\x20\x80\x66\xd0\x58\xea\xee\xd0\xc3\xa2\x0e\xec\xca\xb6\x4c\x3b\xf8\xd0\xc7\x0f\x57\x7b\xb9\xd6\x25\x8f\x8a\xbb\xd6\xe5\x1b\x83\xd7\xba\xfa\xc3\x42\x43\x2f\x7b\x27\x6d\x1b\x0b\xfc\x51\x6f\xf6\x7f\xdd\x3d\x07\xc9\xdd\x19\x1c\xbd\x70\x50\x14\xdc\x9c\x7e\xe3\x3d\xe0\x7a\xc5\x83\x63\xb7\xa1\x6f\xa6\xe0\x8b\x96\x2c\xe4\x5a\xff\x1c\xac\x81\x03\xe6\x28\x8a\x41\x45\x0f\x50\xdd\x04\x28\x70\xd2\x22\xfa\x01\x3b\xdd\xed\x6a\xf8\x1f\xb3\x43\xda\xf5\x84\x27\xa4\x5c\xaf\xbc\xa7\xa3\x33\x29\xe7\xa4\x5c\xbf\xe9\xe5\x29\x29\xbc\xcf\x37\x0b\x20\x26\x72\xd3\xbb\x2d\x6c\x64\x2f\x8e\xbf\x6d\xd0\x13\x1d\x82\x30\x1d\x1c\x9d\x53\xa1\xf7\x9d\x79\x5f\xe3\x66\x77\x00\x4e\x83\x7b\xba\x03\x80\x1a\x83\xbb\xa8\x17\x23\x16\x40\xcf\x36\x60\xed\xc9\x88\x12\x38\xd0\xa2\x63\x90\xa2\x1f\x63\x11\x33\x0a\x1b\x1e\xf3\xb6\xd0\x07\x49\x51\xc5\x98\x38\x41\x15\x06\xd5\x1e\x54\xf5\x54\x94\x45\xb2\xce\x32\x3d\xf7\xa2\x22\xe4\xc4\x35\x74\x9c\x7e\x59\xe9\xc4\x19\x6e\xe0\xd2\x08\x8e\x36\x0a\x79\x35\xf6\xd2\x88\x02\x09\xdd\x6d\xb3\xc6\xde\x4f\x21\x21\x04\x79\xe6\x7c\xd1\x50\x18\xc0\x6c\x0e\x4e\x49\x83\xe9\xfc\x91\x93\xaa\xbb\xab\x1a\xe0\xe6\x9a\x93\x6a\x6e\x6e\xc1\x77\x10\x1b\xfb\xd3\x4d\x31\xe4\x7e\x0c\x65\xf4\xd9\xe6\x9f\x60\x83\x7a\xdb\x84\x99\xa2\x00\xb8\x88\x6d\x83\x91\xd4\xc3\x33\xae\xec\xc1\xcf\x68\x17\xc7\x54\xd1\x85\xd5\x65\x7c\xce\xf9\x81\xb6\x3d\x42\x6d\x46\x68\x75\xc6\x09\xd7\x17\xa0\xc0\xa6\x0f\x49\xd7\x36\xcf\xfd\x55\x35\x95\xdd\xba\x18\xbb\xe1\x81\xa7\x3d\x0c\xde\xa7\xe6\xbf\x7b\x12\x5a\x3d\x58\xbb\xdd\xef\x85\x84\x51\x5a\xa4\xfe\x95\xe8\xae\xc2\xb9\x7a\xbe\x2b\x8d\x6a\x1a\xa0\xcc\x30\xdb\x20\x19\x62\x20\x24\xf2\x7c\xc3\x7f\xcb\x66\xba\x07\xb3\x32\x50\xb1\xc3\xb6\xa7\x74\xcb\x3f\xad\x79\xf1\x0f\xe0\x4c\xdf\xcb\x0a\xa2\x83\x00\xd9\xb4\xc7\x9f\x63\xb8\xcc\xb8\x83\x44\xa3\x4a\x09\x72\x1d\xf7\x63\x04\x12\xcd\xbb\xac\x7d\x03\x52\x5f\xba\xc4\x15\xce\x89\x20\x55\x1b\x19\x9a\xe8\x20\x30\xf9\xcf\x5f\x4a\x52\x2c\x04\x4e\xee\x82\xfe\x9c\x83\x94\xf1\x55\x48\x19\xd3\xfc\xd8\xb6\xd2\x5a\xda\x46\x17\x9b\xaa\xbf\xb0\xec\x0f\xdd\x68\x61\x2e\xc6\x67\xc1\x05\x9f\xd6\x37\xad\x41\x68\xdf\xe1\xd1\x32\x8f\x68\xcb\xca\x65\xdf\xe8\x89\x16\xcd\xcf\x0e\x7a\xa9\xdf\x30\xe2\x22\x9b\x86\xd7\x0a\x7a\xd0\x01\x68\xa4\x83\xe3\x82\xe5\x91\x06\x37\xd3\x56\x9e\x29\x24\xa7\x34\x48\xd5\x9b\x73\x3a\x94\x5f\x1a\xe6\x85\xf0\xfc\x53\x37\xf9\x29\x48\x77\x4f\xb9\xa8\x9d\x29\xdd\x4f\x5e\x6a\x87\xe4\xa3\x04\x45\x81\x8c\x8c\x13\xf2\x58\x01\x66\x3e\x37\xcf\x75\x20\xa7\xb5\x3d\xb4\x21\x84\x0b\xdb\x7c\x69\xaf\x83\x29\xae\xa0\x4e\x46\xa4\xc0\x82\xcc\x23\x13\xd3\x61\xc3\x66\x17\x10\x40\xaa\x9b\x1a\x1b\x24\x09\x03\x4a\x6d\x16\x0a\x36\xfe\xfd\x62\xa6\xda\x36\x01\x3b\x15\x20\xef\x81\x33\x6c\xdd\x06\xb4\xdb\x47\x67\xde\x02\xc4\x9c\x10\xea\x6a\x33\xb2\x08\x09\x14\x80\xc2\x3a\x38\xa4\x58\x34\x56\xdb\x22\x44\x35\x04\x42\x67\x1d\xec\x1d\x20\xc7\x17\x44\x14\x39\x99\xc0\xe1\x7c\x5f\x20\xc9\xd1\xac\xe0\xa1\xdc\x5f\x20\x4d\x48\x86\x70\xf7\x12\x04\x12\xde\x53\xb6\x70\x97\xe4\x3e\x2e\x4c\xdd\x62\xae\x4d\xf3\xf5\x88\xf2\xf8\x08\x5c\x22\x1f\xc5\x66\x1a\x03\xe7\xca\xc9\x47\x0e\x66\x1d\x03\x49\x8e\xe5\x26\x0f\x67\x20\x03\x89\x4e\xc9\x53\x76\x5b\x14\x5b\x80\xd5\xf0\x47\x41\x74\xd8\xf6\xa9\x60\xb5\x7f\x14\xa3\x3a\xc2\x5d\xb1\x10\xfd\xff\x79\xeb\xfe\x7b\x47\x21\x44\x31\xbb\x21\x84\xbe\x3b\x38\x87\x43\x79\xe4\xad\x38\xea\xa4\x92\x07\x07\x1f\x4e\x35\xdf\x1e\x55\xd8\x20\x06\x53\x93\x39\x85\x2b\xc8\x8b\x2b\x74\x7c\x6e\xf3\x84\x9b\x20\x9e\xab\x42\x90\x6a\x85\x13\xf2\xd2\x51\x9c\xfd\x86\x3a\xf3\xa6\xcd\xb8\x5b\xe3\x22\xcd\xb4\xb6\x86\x0b\x44\x3e\x0b\x52\x15\x38\x53\xdf\x4b\x2b\x7a\x4f\x2a\x74\x7c\x96\x95\x6b\xbf\x6c\xb3\x22\x58\xd4\x95\xdf\x18\x0a\x56\xb5\xd5\x57\xe3\xe2\xc2\x74\x47\x8d\xdc\xef\xe2\x4d\x3a\xc3\x90\x03\x0e\xee\x06\x3d\x1b\xdc\xb5\x1e\xcc\xe5\xc6\x52\x37\x9d\x62\x8d\x1b\x56\x57\xc6\x75\x14\xaa\xf3\x66\x5b\xc2\x2a\xa9\x56\xeb\x8e\x61\x6e\xca\xac\x93\xaa\x2d\x7a\x93\x64\xb5\xfc\x61\x6f\x51\xb9\x7b\x8d\x8b\x8e\x00\xb6\xb3\xad\x71\x28\xac\xba\xf5\xd1\xd4\x60\x95\x4b\xd9\x08\x61\x94\xa3\x12\x73\x0e\x30\x81\x18\xa5\xcb\x01\x93\x73\xd6\x56\x2b\x3f\x4a\xdc\x4a\x89\x20\x55\x1e\xca\x12\x45\x46\x86\x69\xaa\x6e\x39\xa3\x67\x08\x97\x65\x16\x74\x7a\x83\x17\xa3\x60\x29\xb9\xae\x97\x19\xe5\xeb\xc5\x24\x2b\xf9\xfb\x01\x02\x3a\x4a\xca\xf5\xfc\x83\xc6\x3b\x66\x59\x1f\x2e\x74\x07\x59\x14\xb9\x7c\x76\x71\xdc\xd3\xc6\x54\xfe\x61\x46\x04\x69\xfe\xe4\x8c\xe3\x57\x98\x11\x55\x4a\xe6\xf2\xad\x8f\x45\xe9\xbe\x87\x12\x9c\x65\xdc\xc8\xca\xda\x3a\x41\x79\x73\x91\xc0\x14\x71\xa5\x74\x2e\xed\x6e\xa4\x0a\x73\xd5\xc2\x7f\xf0\x46\x3c\x31\xa5\xfe\xc2\x3d\x1d\x9c\x58\x8e\x72\xa6\x13\x69\x0b\xc4\x0a\x3b\xfb\x27\x0a\x51\x23\x50\x8f\xd8\x36\xa7\x98\x21\xae\x88\x39\x2c\xa1\xad\x79\x70\x5f\x7c\x15\xee\x8b\x49\x8e\xcb\x45\x03\x45\x8c\x15\x81\x99\xca\x3d\xb0\x65\xe1\x74\xc0\xcf\xca\x53\x8e\xa6\xe9\x65\xa3\xd2\x0e\x54\x09\x8f\xf2\x80\xc6\xe6\x1d\x9e\x09\x51\xd1\x65\x2d\xc2\xbb\x17\xa7\x29\xd5\x67\xfe\x3a\x62\xc7\x47\x2c\xd5\x00\xe8\x73\xdb\x3b\x25\x4a\x11\x6e\x38\xde\xcc\x98\x03\x92\x08\xd3\x8e\xd1\xcc\x9b\x73\xbd\xcd\x47\x1b\xe1\x23\x48\x55\xc9\x25\xfa\xa5\x23\x8e\x52\x96\xd4\x52\x11\x6c\xd6\xdb\x09\x22\xd0\x79\x37\xb0\x55\x0b\xee\x52\x60\x06\x85\xea\xd7\xae\xf2\x72\xca\x1e\x8a\x07\x5c\xa5\x67\xd7\xde\xb4\xb4\xae\x68\xd8\xbe\xe3\xba\x96\x2c\x29\x85\x69\x8f\x97\xac\xf6\x97\x44\x43\xca\xb3\x94\x8e\xd7\xd0\x3b\x78\x9a\xbc\xed\xe0\x69\xfa\x4a\x3d\x4d\xf2\x0d\x2d\x8a\x66\x94\x0b\x29\x11\x74\x4e\x16\xd0\x57\xee\xc5\x58\x8e\xe8\xdb\xf8\xd9\xd7\xbc\xbb\x9f\x25\x15\x23\xea\x2a\x61\x57\x9f\xa2\x76\x17\x38\x02\xb4\xc9\x8d\xf2\x80\xc2\xba\x2d\xce\xbc\xaf\x68\x02\xb4\x86\x81\x39\x70\x12\x2c\x16\x24\x93\x82\x15\xea\x3a\xf4\x80\xc6\xc1\x92\xa5\xaf\x75\x05\x06\x5c\x14\x4c\xdf\x2b\xfc\x04\x65\x78\x49\x32\x7e\x62\x54\xdb\x22\x6d\xc1\xf2\x80\x74\xe5\xe5\xd7\x5c\x4d\x40\x83\x71\xdc\xe4\xa9\xaf\x34\xb2\x1f\xf4\x8d\xfe\xdd\xaf\xdf\x6e\x70\x02\x93\x35\xc9\xb1\xfa\xe7\x1b\x39\x97\x23\xc8\xd8\x63\x8d\x72\x24\x45\x27\x41\x34\xfc\x09\xa9\x72\x8e\xd8\xaa\x89\xbb\xd6\x60\x13\xf7\xaf\x46\x0b\xee\x6f\xb7\x48\x97\x0c\xb2\x9b\xca\x87\x3e\xbe\xdd\xb6\xf1\xc8\x1b\x83\xb8\xdc\x50\x42\x6a\x50\x72\x8f\x41\xbc\xcb\x4e\xdf\x3b\xbe\x54\xc5\x36\xf4\x6c\x3f\xe2\xf0\xe1\xe6\x67\xa4\x04\x98\x55\xd4\x2a\x47\x58\x99\xd1\xc1\x41\x76\x70\x90\x05\xda\xb3\x75\x90\x39\x97\x8b\xe2\x06\x94\xdb\x81\x6b\xa7\x19\xf4\x6e\x91\xef\xba\x56\x5b\x8b\xe4\xbb\x24\x4d\x6d\x14\x2d\x86\xc2\x9d\x59\x72\x1f\x5b\xcf\x1a\xab\xba\x91\x05\x47\xf3\xf9\xd1\x91\x45\xf9\xf5\xe3\x43\xf7\x48\xd6\x62\x35\xfb\x01\x91\x22\x61\xa9\xde\x8a\xb2\xaf\x15\x17\x4a\x3c\x69\xed\x21\xf1\xa3\xcf\xcd\xe8\x3a\x91\x0c\xaa\x9f\xb0\x2d\x12\xc9\x00\x2d\x12\xcf\x9b\x1d\x04\x8b\x56\x9c\x68\x50\xfc\xcc\x04\x80\xe0\x4c\xdd\xa6\xe4\x8a\x16\x3e\x36\xa3\x39\x55\x39\xec\xa9\xe2\xd3\x84\x0b\x8e\x8e\xf5\x8f\xf3\xa4\xac\x61\x86\x1b\x64\xc8\xcc\x73\x92\xb3\x6a\x73\xd2\x90\x92\x24\x3a\xb4\xcd\x13\x2f\x23\x24\x96\xa4\xae\x2a\x52\x88\x6c\xf3\x04\xb2\x4b\x33\x9b\x90\x7c\xea\xb6\xf5\xf2\x36\x1a\xcf\x91\xb2\xf7\x35\xf7\x1f\xc8\x14\xd4\x36\x93\x09\x73\xd2\xd8\x5a\x95\x69\x81\x14\xf7\xe8\x1e\x57\x1c\x36\x03\x68\x9a\xb8\x92\xd2\x7b\xca\x19\x78\x4b\x8d\x5a\xc5\xe4\x06\x65\xb5\x28\x6b\x61\xf8\x2a\x24\xbf\xd8\xe9\xf9\x9a\x34\xc8\x92\xcd\x8e\xed\x49\x6e\xaf\xc2\x89\x12\x0d\xb9\xf8\x89\xb0\x5f\x9d\xba\x15\x5a\x9e\xdd\xa2\x6f\x5a\xc1\xed\x11\x57\x30\x56\xe2\x02\x83\x85\xa1\x58\x81\x2b\x26\xf4\xe0\xcb\x04\x15\x80\x08\x2a\xc7\xc5\x05\x8d\x48\xde\xba\x34\x6f\x74\x63\xac\x05\xc9\x4b\x56\xe1\x6a\x83\x52\x63\x93\xf1\xc7\x3b\x6c\xc3\x08\x38\x38\x02\x3b\xe3\xb3\xa9\x51\xa5\xb4\xda\x47\xfe\x56\x4e\x52\x5a\xe7\x71\x56\xb4\x4f\x0a\xf4\xd4\x00\xaa\x5a\x5f\xb9\x26\x64\x0d\x7f\x4b\x9c\xf8\x51\x6d\xf5\x2c\x51\xde\x4e\xa8\x16\x15\x5c\x1c\xc0\x17\xc6\x67\x99\x13\x5c\x58\xa9\x1d\x64\x93\x2f\x58\x4a\xe4\x8c\x5b\x62\xba\x6f\x8e\x99\xae\x30\x2e\x2d\xe0\xd9\x3c\x36\x84\x5e\x4a\x31\xe9\x9d\xba\x09\x9f\x64\x11\x51\x54\xbe\x34\xfd\x9d\xbc\x95\xd7\x79\x24\xd2\x28\x13\x38\x43\xd8\xc0\x64\xac\x34\x6a\x72\xb3\xaa\x96\x0f\x84\xcd\x53\xca\xcf\x4f\x39\x6a\x0e\x90\x75\x8c\xc8\x55\x95\x7d\xd3\xb2\x86\x32\x84\x65\x5c\xfb\x8f\x69\x82\x97\x41\xab\x96\xa6\xad\xe5\x8f\x66\x25\x6f\x14\x54\xeb\x67\x9a\xd7\x39\xaa\xb9\xec\x29\x2b\xba\xcf\x04\xa9\x36\x1d\x7d\xd0\x3b\x56\x9b\xac\x72\x5a\x28\xa2\x5d\xf5\x4e\x95\x60\xb0\xf3\x1b\xf6\x73\x36\x8a\xba\xca\x66\xb3\x26\x4d\x5e\x2b\xf1\xd7\xf4\xd2\x08\x70\x6c\x85\xb0\xa7\x74\xae\x6d\x8d\x80\xa3\x90\x6e\xb1\x46\x6a\xee\x9d\x97\x82\x66\xee\x81\x01\x9c\x14\x83\x5d\xdc\x2c\x4c\x5d\x98\x08\x9f\xad\xdd\x3d\xbc\xb9\x6b\x4e\xaa\xd9\x6d\x4d\xd3\x47\xdb\xd6\x20\x2e\xbf\x4a\xc0\xfc\xfd\xcd\x79\x97\xb1\xbf\xa1\xcb\x8a\xa0\xf3\x35\x2e\x0a\x92\x75\xa1\xb6\xfd\x66\xe0\x31\x18\xee\x6e\x7e\xee\x16\xd2\xb6\xff\xd6\xd8\x2b\x7a\xd4\x1f\x2f\x33\xf7\xd9\x00\xff\xc1\xc0\xa6\x61\x7e\xa2\x16\x8c\xfa\xf1\xc1\xa6\xb3\x3a\x12\x66\xba\xb5\x8e\xbd\x39\x47\x02\x57\xb7\x44\x48\x22\xa8\xa8\xf3\x25\x09\x9e\xe1\xe7\x04\x70\xfc\x5c\x52\x91\xf7\x97\x2d\xac\x97\xe3\xd3\xa7\xf7\x91\x68\x51\x43\x6b\xfa\xc0\xaa\x2c\x7d\xa0\xa9\x2d\x15\x7d\x2c\xc9\xbe\x7c\xbe\xd0\x4d\x0f\x0f\x34\xdd\x65\xd8\xc6\x8c\xaa\x86\x8d\xd4\xb8\x9b\x7a\xa0\x5e\x3c\x08\xdd\x8e\xd5\xe7\x5f\xa2\x4b\xaa\xcc\x91\xea\xbf\xb4\x81\x2c\x5f\xd2\x02\x0b\xeb\xe4\x68\x16\x28\x48\x51\x5e\x03\xf2\x5c\x59\xf3\x31\x27\xe2\x04\x2d\x6b\x6d\xce\x5a\x32\xb1\x46\x9c\xe6\x75\x26\x70\x41\x58\xcd\xb3\x4d\x70\x1b\x7d\xa9\xa5\x81\xdd\xc7\x19\xf9\x3c\x5e\x4d\xd9\xb6\xee\xbd\xdc\xbc\xd2\xbd\x9f\x6f\x49\x41\x2a\x9a\xd8\x05\x05\x29\xbc\x36\x6a\x57\x45\x54\x72\xca\x0a\x92\x9e\x36\x97\xb5\x2e\x6a\xad\xa2\x78\x49\x82\x96\xaa\xa6\x6d\x99\xd5\xb7\xd4\xeb\x49\xf9\x22\x71\xb9\x6d\x94\x20\x44\xef\x69\x04\x70\x58\xf6\xd4\x01\x3e\x78\x4b\x8a\xb8\x19\x8e\x75\x4d\x49\x49\x0a\xc9\x00\x0a\x67\x97\x86\x75\x00\x35\x1d\x7b\x5b\x05\xe3\xab\x79\x5e\xc1\x5e\x0e\xcf\xbd\xfc\x2c\x2a\x2c\x19\x64\x2e\x59\x9d\x8d\x0a\xa1\x2b\x84\x8b\x30\x33\x7b\xdc\x60\xbf\xaf\x50\x34\xf8\xc2\xd0\x68\x71\x01\xd2\x90\xb0\x6b\x37\x40\x5a\x73\x63\x73\x80\x6c\x00\xf3\x76\x20\x72\x64\x2f\xdd\x12\xba\x36\x60\x79\x24\x20\x39\x48\x39\x14\xb0\xcc\xb7\xc3\x15\xc3\x33\xd0\x1d\xf5\x01\x7c\x65\xa8\x7d\x65\xd1\xcb\x4f\x19\x17\xba\xca\x58\x72\x17\x81\x62\xf6\x46\x3f\xdf\xb3\x96\x98\x1f\x63\x60\xcc\x3c\xd6\x11\x73\xb6\x9d\x0b\x56\x05\x0b\xe9\x8f\x78\x89\xca\xa3\x5a\x31\x79\xde\x14\x68\x37\x5a\x12\xc9\x7e\xaa\xba\x08\x20\x20\x81\xe5\x38\x2c\x30\x9f\x00\x3f\xdd\xaf\x40\xc1\x89\xd0\x11\xd0\x0a\x4c\x36\x27\x02\x83\x00\xf1\x67\x7f\x33\x82\x60\xd1\xa1\x24\x45\x3c\xbb\x04\xd6\xce\xae\x3c\xc9\x9c\xa6\x04\x62\xa4\xc5\x6a\xb2\x2b\x92\x00\xc2\x5c\xe1\x45\x30\x74\xef\x3e\x7e\x8c\xc4\x10\x92\x2f\xf4\xe6\xca\x6c\x08\x65\x89\x54\x75\x72\x5a\xad\x2d\x38\x36\xb6\x72\x36\xa8\xa1\xf7\x84\x36\xc8\xdb\x84\x5c\x37\xa5\x7c\xa2\x4a\xce\x1c\xfd\x74\x7e\xd9\x7d\xb5\x7b\xe8\x7e\x3a\xbf\x44\x17\xe0\xd2\x40\x51\x45\x02\x1b\xf3\xa4\x97\xe4\x23\x14\x09\xbc\x4d\x48\x5b\xf8\x28\xa5\xfc\xee\xb9\x40\x11\x1e\x2a\x04\x3e\x8b\x0a\x81\x5b\xfb\x23\xd8\x81\x43\x79\xc0\x43\x79\xc0\xe7\x55\x1e\xf0\x49\x79\x24\x7a\x34\x73\x7c\x99\x46\x4b\x41\xb6\xca\x9d\x6b\xcc\xba\xbe\x68\xbd\x6b\xb4\x90\x97\x5a\x58\xdd\xfe\x38\x04\x2d\x68\xcb\x65\x49\x0a\x4f\x3e\xc5\x8f\x8c\xa7\x0a\xb2\x2f\x00\x14\xdf\x61\xfb\xc3\xb6\xf9\xc3\x9d\xc0\x20\xd9\x27\x9c\xe0\x7d\x15\x25\xd2\x7b\x77\x67\xd1\x8e\x8a\x0f\xa4\xf4\xce\x50\x4f\xa0\xd3\x2f\xf4\x2c\xd9\x54\xc8\x1f\x18\xa7\x82\x55\x1b\x84\x85\x02\xc6\xaa\x04\x4d\xea\x0c\x87\x3c\x62\xda\x8e\x3d\x47\x17\x97\xd7\x1f\x2e\xcf\xcf\x6e\x2e\x2f\x5e\x23\xfb\x15\xea\x0a\xf5\x73\x74\xc3\x5a\xc3\xb7\x97\x2a\x6e\x83\x0a\x74\x2c\x6d\xdb\xc7\x13\xc3\xee\x71\xd1\x46\x49\x28\x48\xb7\x80\x5d\xea\xaa\xa0\xa2\x8d\xa2\xd4\x85\x77\x32\x56\x98\x88\x42\x49\xd9\xd8\xdf\x6f\xa9\x38\xd1\x7e\xf1\x70\x21\x45\xf9\x6a\xb7\x17\x8a\x9f\xe8\x98\xaa\x66\x08\x5e\x8b\x09\x58\xed\xb3\xb1\x48\x71\x15\xfd\xb4\x8f\xad\x79\xd9\xdc\x7d\x36\x18\xdb\xf6\x31\xac\xc1\x6c\x63\xb4\x21\x79\x2b\x1f\xcd\x8f\xac\x30\x98\xf5\x12\x05\x82\x34\xdb\x4e\x59\x90\x3e\xf9\x72\x77\x2f\xce\x11\xfa\x45\xac\x49\xf5\x40\x39\x00\x1c\x9e\xf6\xa1\x02\x1b\x67\x9b\xfc\x80\x1b\x43\xde\xfd\x4a\x98\x70\x61\xa2\x64\x96\x6e\xa7\x0d\xd0\xd2\x2d\xbd\x27\x85\x9e\xd8\xfd\xb1\x68\xdb\xb5\xa8\xd5\xfe\xd0\x9e\xe1\x8f\x1f\xde\xee\xaf\x33\xfa\xc4\x46\x75\xe5\x9c\xe5\x39\x15\x68\x8d\xf9\xda\xe2\xac\x38\xb1\x47\x0d\xd7\xd8\x4f\x1f\x61\x1c\x17\xb4\xde\x30\xae\xab\xe1\x5e\x22\xaa\x40\x1d\xfd\x64\x5f\xe9\x29\xd0\xcd\xcf\xb6\x16\x54\x90\xdf\x28\x3d\x2b\x3e\x88\x73\xac\x28\x42\x33\x96\xfd\x62\xef\x93\x22\xd5\x88\xe0\x91\xc5\x25\xed\x6b\xef\x35\x7e\xa8\x8e\xd7\x36\x3f\x6a\xa1\x0d\x84\x03\x94\x12\x81\x69\xc6\x9d\xf9\x15\xac\x64\x19\xbb\x1d\x0e\x8e\x8c\x98\x9c\x6f\x74\x46\xcb\x0c\xcf\xe4\xac\xef\x4f\xd7\x8a\xad\x07\x65\x13\x76\xe4\x04\xb5\xa3\x6c\x74\x0c\x95\x1b\xb3\xbf\xba\x3a\x4f\x36\x11\x8f\x20\x9c\x36\xb3\x13\x9c\x0b\xab\xa5\x2a\xeb\x82\xad\x6f\xa1\xf8\x7c\x8b\xc4\x51\x92\x2a\xa7\x5c\x32\x2f\x47\x6a\x85\xa8\xb2\x5b\x52\xed\x13\x4d\xfa\xbe\x04\xd6\xe6\x44\xfb\xc5\x5a\x7f\xc0\x3d\x88\xbd\x4a\x0e\x17\x4a\x6c\xdd\x2e\x17\xad\x0e\x44\x87\xb9\x96\x15\x99\x91\xcf\x94\x2b\x8d\x43\xe5\xa4\x05\x92\x65\xda\xcb\xdd\xad\xa3\x69\x0d\x92\xd6\x7c\xa9\x9f\xca\x36\x31\x71\x93\xad\x2c\xd8\x98\x91\x55\xf8\x08\xce\xb2\x8d\x86\xa9\x57\x18\x1f\xda\xfc\x83\x6f\x83\x28\x70\xac\x32\x6e\xa6\xb2\xa2\xf7\x34\x23\xb7\x52\x1b\x5d\xd3\xe2\xd6\xc1\x24\xc1\x59\xc6\x1e\x88\x49\xeb\x25\x41\x4f\x5f\xbf\x76\x0b\x17\x6e\x64\xaf\x3a\x53\xef\x7f\xb9\x41\x05\xd1\x9f\xe2\x00\xfe\x32\x5d\xfb\x95\x9d\x09\xe6\x6e\xcc\x66\x33\x65\x5b\x3b\xfe\xa7\x94\xe3\xd3\xec\x25\xfa\x44\x4c\xff\xa4\x82\x23\xb9\x4d\x22\xd0\xc3\x9a\x29\x6b\x49\xcd\x01\x35\x16\xdb\x1d\xa0\x8e\xbf\x4e\x62\x33\x14\x4e\x25\x15\x29\x34\xeb\xab\x5a\xcd\x57\xda\xc2\x60\xf8\x15\x1a\x8e\x5a\x6f\xfe\x5e\xf4\x81\x89\x37\x86\x75\x6a\x0c\xed\x74\x50\x7a\x70\x83\xf2\xa1\x50\x23\xf8\x26\xcf\x68\x71\x77\x82\xa8\xb0\x6c\x57\xee\x3a\x13\xba\x5d\xdc\x41\x71\xcd\x2a\x82\x33\xe7\xd6\xda\xc3\xce\xd9\xdb\x8d\x24\xa2\x0d\xf7\x37\x9b\x92\xa8\xf3\xdc\xb0\x25\x13\x3e\xe6\x1a\x39\x5e\x84\x0d\xd7\xcf\x6b\x26\x80\x66\x8d\x3d\xf0\x7f\xca\x63\x90\x35\x8f\xae\x16\xe7\x8b\xab\x5e\xf1\x64\xfd\x5b\xc7\x35\xb5\x43\xe0\xfc\xbe\x22\xe7\x63\x2e\x7f\x35\x09\xfb\x95\xc9\x93\x35\x2e\xcf\x6a\xb1\xbe\xa0\x3c\x61\xf7\x24\x52\xb9\xb4\x50\xad\xc6\xf1\x83\xa8\x9d\x62\x4d\x0b\x9d\xff\xd7\xd9\x75\xaf\x32\xe1\x9e\xe4\x93\xb6\xe7\x0b\xc2\xa3\x35\xd1\xe1\x7e\x1b\x4a\x8f\xda\xeb\x83\xd3\xef\xab\x71\xfa\xa9\xd3\xf8\xb5\x3a\xfa\x68\x41\x05\xc5\x82\x81\x32\xd4\xbb\x56\x9e\x9a\x0b\x96\x9b\x23\x75\x65\xc9\xa8\x50\x13\xe5\xb4\xeb\x50\x06\x6d\xb0\xb6\x1e\x06\x55\x32\x46\xc2\x69\x83\x91\xdc\x0b\x44\x3f\x41\x05\x79\x08\x13\x55\x7d\xa3\x0d\x8d\xff\x34\x69\x07\x72\x1f\xe3\xec\x6f\xaf\xff\xd3\x1c\xad\x02\xe7\xe4\x6f\x4a\x86\x09\x92\x6c\x61\x2d\x1a\xd3\x96\xa9\x52\xb6\x3f\x93\x16\x42\xf4\xb7\x38\x3e\x67\x4c\xbd\x7a\xbc\xff\x5d\xe3\x4c\xcf\xe3\xfb\x7d\xda\x25\xbb\xeb\x11\xd5\x3d\xbb\x47\xec\x3a\xbc\xb7\xb6\x1c\x29\x98\xab\x3b\x5b\x3d\x11\x96\x16\x2b\x5c\x70\xb9\x78\x5d\x9f\xd1\x91\x71\x09\x1f\xa1\x63\x91\x94\x40\x4c\xcb\x47\x48\x5b\xd2\xc3\x34\x6b\xf1\xb6\x49\x57\x0a\xf5\xe7\x91\xfc\xa3\x6a\x8f\xc7\x99\xe0\x3a\x03\xb8\x56\x04\xd0\x5b\xca\x85\x8e\x41\xd7\x14\x21\x95\x6d\x88\x4e\x50\x91\xb2\xd8\xb5\x02\x74\x2f\xff\x8e\xd3\xb4\x7a\xad\xef\xe0\x95\x91\x89\x2a\xa5\x51\x33\x78\xd9\x72\xeb\xf9\x3f\x16\x9b\x92\x26\x4a\x7d\xbe\x39\xbf\x56\x94\x38\xfa\xe1\x7b\x8d\x75\xf4\x97\x3f\x7f\xff\x6d\x70\x0b\x7c\xb9\x0c\xa2\x49\x36\xae\xa8\xf8\x6e\x88\x43\x23\xe4\x7f\xdd\x9b\x18\x34\x2d\x22\x5c\x09\x66\x8b\xb6\xb2\xb5\xde\x97\x86\x79\xcb\x45\x6e\xee\x96\xe0\x60\xa3\xc4\xbb\x43\xf4\xf2\x57\x10\xbd\x6c\x33\x14\x35\xff\xda\x95\xff\x69\xd6\x77\x6d\x59\x9f\x61\x6d\xe1\x6d\x07\x66\x7d\x1d\xd6\x16\xa4\xbb\x3b\xeb\xdb\xab\xc6\x4f\x7f\xf3\x1d\xa9\x99\xbc\x41\xbd\x7f\x77\x57\x6a\x57\xcb\x81\x52\x77\x42\xa6\x63\xd0\xe8\x8b\x18\xe7\xde\xfb\x37\x8b\x9e\xfd\x41\xfe\x62\x3d\x7a\x5d\xaf\x9d\x9f\x55\x8e\x78\xf4\x76\x55\x5f\x8a\x95\x17\xdc\xe9\x91\x6d\x8e\xd6\x70\x4e\x3e\x77\x95\x47\x39\x49\x9c\x54\xf7\x61\xf1\x68\x67\x5b\x58\x60\x02\xd0\x17\x76\x51\xc9\x99\xd0\xb3\x03\xf1\x24\x3d\xa9\x73\xea\x51\x66\x19\x26\x36\x54\xb1\xf9\xaa\x47\x0b\xf5\x8e\x75\x8b\xca\x33\xa7\xe3\xfc\x2a\xc9\x89\x25\x0f\x26\x9c\x43\xf0\xc2\x7a\xbb\xf3\xf9\xec\xbe\xbd\x18\x61\x67\x66\x5c\xbb\x72\xdb\x36\x7c\x4e\xcb\x92\xe7\x19\xa6\x5e\xb8\xa6\x1e\x6f\x18\x7a\x5d\xff\x73\xa1\x2d\xb6\xc0\x92\x48\xdd\x3a\x2a\x08\xa3\x41\xca\x4d\x10\x0f\x36\xda\xbe\x82\x39\xf6\x73\x9e\x89\xeb\xde\x4e\xcc\xcc\x6e\x81\xf6\x27\xfd\x4b\x22\xbb\xb4\x17\xa6\xac\x28\xc5\xc7\xc1\x9e\xdb\xd7\xfa\xe9\xdd\x23\xd3\x07\x51\x29\xb6\xa7\x17\x61\xde\x20\x6b\xd7\xc6\x80\x05\xce\x03\xff\xb2\xf3\x8f\x1e\xfd\x4e\xf8\x14\x99\xa4\x1b\x9c\xae\x0b\x9b\x21\xbe\x4f\x05\x0e\xc6\x72\x9a\x5d\xb8\x33\x53\x59\x33\xc1\x8a\x89\xf9\x4a\xd7\x03\x2f\x77\x63\x02\xf4\x13\xe7\x3a\x47\x2f\x0b\xd9\x4f\x1a\x42\x3a\xb4\xbb\xf1\x0e\xa9\xa2\xb7\xe6\x0a\x66\x85\xf5\x13\xf1\xb0\x7f\xd9\x98\x6e\xf7\x70\xec\xff\x75\xb0\x0f\xf6\x8d\xa0\xb4\xaf\x33\x5f\xa6\x91\x59\x85\x57\x17\x46\x14\xb6\x99\x83\xdc\x6c\x47\xd4\xee\x47\x67\xcf\x05\x07\x05\x48\x3e\xda\xaf\x58\x91\x5e\x5d\xec\x7c\xbc\x59\x25\x1e\x58\x15\x8b\xc1\x72\xdd\x79\xad\x17\xe6\x63\xfe\x06\x89\x3b\x06\x9d\xe0\x2f\x7c\x4a\x17\x2a\x7e\xc0\x19\xe2\x80\xb3\x0e\x12\x57\xa1\xf5\xcf\xa1\xa3\xed\x39\xba\x41\xaa\xde\xa3\xad\x8f\xee\xe0\x91\x05\x2a\x36\xcd\x91\x7e\x94\x23\x3b\xe9\x9a\x0e\x20\x73\xc0\x93\x5f\x26\x21\x73\xec\x4d\x9f\xd2\xa7\x23\x92\x65\xfd\x6a\x5e\x32\x49\xcf\x72\x3d\x5b\xe6\x85\x9b\x63\x19\x1c\x3a\x28\x25\x60\xaf\xcc\xca\x0e\x77\x67\x86\xa5\x2b\xab\xfb\x3f\x37\x50\x54\x67\xc5\x2a\x05\xbb\x41\x35\x12\x47\x8b\x8e\x6e\x70\x38\x4e\x4c\x4d\xb7\x1c\x97\xdc\x7f\x25\x4a\x56\xe5\x56\xe5\xd9\x03\x5b\x9a\x5a\xa4\xea\xdd\x78\x65\xaa\xed\xca\x53\x61\xe9\x1e\x50\xb0\x62\xbb\xce\x14\x48\x79\xb7\x75\xa8\xc0\x75\xa6\x82\x54\x83\xb5\x2a\xfa\x55\x28\x82\x14\x7d\x55\x2a\xc6\xea\x4f\x00\x98\xbe\x5b\x9f\xe2\x8b\x78\x1d\xcd\x46\x8f\xda\x58\xb6\xfa\x94\x8d\x5f\xd7\x87\x0e\x50\x02\x64\x4a\x5d\xa9\xeb\x86\xba\x5e\x33\x03\xe0\xd3\x9c\x74\x84\x33\x06\x42\x45\x77\x36\x81\x53\x9e\xcf\x84\xea\x6c\x4a\x80\xef\x25\xae\x9c\x40\x62\x2b\x64\x4f\xa8\xf7\xe0\xa2\x1e\x35\x05\xf3\x5a\x8a\x08\x04\xfe\xa1\x9b\x60\x76\xae\x40\x2f\xc4\x97\x4c\x00\x2e\xaa\x6d\x5d\xee\xdb\x91\x1c\x4e\x10\xc1\xc9\x1a\xdd\x91\xcd\x4c\xf1\x18\x30\x4d\x84\x4a\xac\x72\xfa\xd4\x34\x5d\x60\xd1\xad\xba\xd5\x5a\x9c\xa0\x05\x65\x64\x6b\x2b\x9c\xdb\x8c\xb7\x76\xcf\x35\xd9\x83\xc0\xec\xb9\xb6\x61\x6e\x84\x3b\xf4\xb0\x66\xdc\x18\x72\x8c\x51\xe7\x8e\x6c\x14\x3b\x49\x58\x01\x52\x29\xda\x66\x08\xa8\x59\x53\xb1\x3c\xbd\xcc\x3a\x79\x62\x49\x0a\xab\xd1\xde\x36\xcf\xb8\xdb\xd0\x1f\xc9\xbc\x03\x77\x62\x6f\x06\x8a\x14\xd5\x85\xd3\x23\xfd\x1d\x05\x60\xa9\xa2\xb0\x38\x29\x60\xd1\xcd\x0e\x4d\x35\x77\xdd\x90\x24\x05\x60\x4d\xb9\xa9\x89\xad\xa8\xc6\xcc\xa8\xde\x4b\xcd\x26\xe8\x64\x28\x72\x22\xea\x12\x16\x7e\xd4\x36\x15\x57\x26\x47\x4e\x38\x47\x1a\x26\x3b\xc7\xd5\x1d\x49\x9b\xfa\x1e\x73\x55\xd8\x27\x66\x85\x2c\x0c\xa8\xad\x82\xa3\x35\x25\xbc\x71\xd3\x45\x23\xea\xce\xc9\x76\x34\x9f\xeb\x72\x3d\x43\x69\xa4\x60\x3a\x91\x4c\xa1\x2f\xb9\xe0\x52\xc5\xab\x2b\xe1\x52\x2d\xad\xb2\x14\x83\xea\x43\xb8\xcd\xd4\xba\xc4\x60\x13\x66\xdb\xe2\xf9\xa0\x6e\x77\x24\xa8\xaf\xf4\x5b\x37\x30\xcc\xf0\x81\x96\x6d\xc7\xf4\x1a\x4d\xab\x72\xa2\x1b\xbc\x32\xda\x48\xdf\x47\x6a\xa4\x45\x92\x44\x6e\x4d\xb5\xe1\x6a\x69\xd1\x14\x87\xab\xab\xf5\xea\xa6\x45\x53\xf5\xd7\x59\xd3\x15\xd4\xa2\x89\x42\x2a\xae\x45\x13\x0d\x57\x57\x8d\x26\x09\x90\x82\xe3\xbb\x39\xb9\x6a\x5b\xdb\xe2\xeb\xb7\xb5\x2d\xb6\x92\x5b\xdb\xe0\x35\xdd\xda\xb6\x75\xee\x1b\x2e\x5e\xb6\xc9\x3f\xd1\x73\x68\xcb\xb9\xe5\xb8\x6c\x84\x0a\xc1\xe6\xe8\x9d\xb9\x15\x26\x2c\x0b\x2e\xda\xf2\x6e\x26\xed\xa7\x7b\xc5\x4c\x3a\x39\x6a\x90\x24\x23\x39\x29\x84\x01\x29\xb0\x64\xd5\xb5\x13\x4d\xb4\xc9\xf1\x37\xf7\x46\xdc\x8d\x65\x3a\x36\x8d\x79\xc6\xd5\x5b\xd2\x6d\x26\x97\x26\xea\xf9\xc8\xfb\x2f\xb2\x30\xa6\xfb\x52\x38\x2c\xb2\x6d\xd0\xb8\x3a\xdd\xe2\xa2\xeb\x22\x46\xfb\x05\xe2\xf0\x74\x83\x47\xe3\x45\x10\x55\x71\x7b\xe0\x98\x3c\xdd\x26\xec\x5d\x2b\x79\xee\x54\xe8\x6d\xd3\x64\xed\x74\x24\xe6\x88\xd1\xb2\x0a\x49\x76\xaf\x94\x01\x7b\xd5\x9b\x02\x32\x91\xa3\x87\xd8\x56\xbb\x6f\x80\xcf\x07\xb0\x20\xbe\xf3\x42\x58\xa3\x77\x68\x02\x07\x2a\x35\xff\x67\xae\xd3\x6f\x97\x29\xdf\xaa\x0d\x1e\xb1\x37\x00\xe5\xca\x27\xf7\x3b\xb2\x84\x79\xd4\x5d\xd2\x05\xae\xf6\x14\x33\x8f\xa2\x1a\x57\xf8\xbc\x6d\x53\xd5\x99\xb8\x62\xe8\x6d\x03\x96\x45\x8f\x97\x10\x6d\x40\xae\xaf\x40\x7a\x34\xd5\xed\x82\xea\x93\x4a\xa5\xb7\x6d\xea\x74\xa3\x89\xe5\xd3\xdb\x16\x2e\xa4\x3e\x81\xa8\xde\x77\x4d\xf1\xf5\xa1\x92\xea\x93\xa8\xee\x56\x86\xdd\xe9\xdd\x54\x95\x17\x4d\x2b\xcd\xde\xb6\x60\x91\xf6\x49\xf3\xd2\x14\x76\x47\x7b\x28\xd7\xde\xb6\x1d\xa6\x69\x8a\x80\x8b\x26\x14\x73\x6f\xdb\x24\xe9\x15\x1d\xcc\x18\x07\x33\x46\x54\x3b\x98\x31\xdc\xb6\xb3\x19\x63\xa4\x48\x7d\xf4\x14\x76\x4d\x21\x03\xe5\xea\x27\x9c\x9d\xed\xf2\xf6\xbd\xc2\xf5\xd1\x34\xbd\x85\xee\x9b\x12\xf6\xd1\x64\xf7\x5b\xf2\xbe\x6d\x7b\x29\x7e\xdf\xb6\xc9\xd7\xc9\xb4\x82\xf8\x6d\x03\x94\xc6\x9f\xc4\x04\xdb\x52\xfa\xc3\x45\xf2\x27\x18\xce\x46\x8a\xea\xf7\xca\xe5\x4f\x38\x1e\xfb\x29\xaf\xef\x74\x75\xa7\x42\xfb\x6d\xdb\x45\xf2\x9d\x58\x7c\xbf\x6d\xb0\x32\xfc\x93\x44\xb2\x55\x03\x3b\x3e\x50\x90\x7f\x12\xc5\xb8\x22\xfe\x6d\xdb\x49\xd8\x8d\x2e\xec\xef\xbc\x1a\x2a\xf1\x3f\x75\x5e\x73\x2c\x2c\x6b\xdb\x2e\xf6\x3f\x89\x68\x47\xa7\x78\x15\xc6\x1f\xd9\x6e\x3b\x4d\xb2\xed\xfd\xee\x5b\xb8\xbd\x4d\xa3\x2a\xf4\xf7\x9b\x02\x95\x93\x5c\xf2\x89\xf7\xdb\x74\xad\x61\xe2\x70\x27\x2a\x0d\xd3\xcc\xf7\xcf\xd1\x1c\x1f\xf9\x11\x1d\xde\xb8\x37\x73\xa6\x29\x83\x76\x88\x4e\xea\x77\x7b\xff\xd1\x49\x06\x6c\xe1\x10\x9a\xf4\x2f\x1b\x9a\xb4\x30\xe5\x02\x07\xe3\x92\x74\xb4\x51\x04\x51\x40\x5c\x92\x52\x1d\x22\x48\x02\xe2\x92\x94\x8f\x36\xea\x20\x1d\xe2\x92\x0e\x71\x49\xb1\x7d\x3f\x18\xf4\x0e\x06\xbd\x83\x41\x0f\xdc\x0e\x71\x49\x87\xb8\xa4\x3f\xbc\x22\x74\x88\x4b\x3a\xc4\x25\x75\xe2\x92\x8c\xc2\x14\x25\x14\x9b\xa0\xa4\xe7\x1b\x93\x64\xca\x16\x9f\x25\x09\xab\x0b\x71\xc3\xee\x08\x30\x68\x00\xa4\xcc\x6f\xd1\x06\x0e\xfc\x69\x62\x94\x70\x9d\x52\xa9\x35\x4f\xdc\x23\x67\xe6\x75\xab\xa0\xca\xdb\xb5\x48\x49\xda\xd0\x8d\xd8\x27\x86\x53\x08\x39\x47\x73\x74\x86\x2a\x92\xd0\x92\xca\xfb\x43\x41\xb4\xa8\xdf\x63\xb5\xa7\xa6\x56\x21\x15\x9c\x64\x2b\x53\x59\xad\x70\x2a\x19\xb7\x22\x62\xbc\xf2\x68\x07\xd9\xe9\xba\x16\x97\x98\x2d\xe1\x15\x41\xd5\x14\x91\xae\xc8\x3f\xad\x04\x67\xe6\xe2\xc6\xfd\x56\x0a\xc5\xb8\x6a\x9b\xd1\xe9\x9d\x41\x9b\x0e\xe3\x92\x42\xd1\xc8\x1a\x5a\xf1\x7c\x88\x7c\x2e\x69\xa5\x0e\xc6\x82\x24\xac\x48\xa7\x5a\x92\x2e\xfb\x74\xec\xae\x33\x7e\x9b\xa8\x25\x4c\x6b\x4d\x4a\xa5\x60\xe2\x8c\xa6\x54\x6c\x9a\x10\x1f\x53\xc7\x1c\xeb\x53\x1b\x35\xd3\x7a\xf3\xf2\x76\xf9\x10\x2e\xcb\x8a\xe1\x64\x4d\xb8\x33\x13\x31\xd7\x85\x12\xf4\x34\x5a\x43\x93\x2d\x9a\xd5\xb7\xb4\xd0\xca\x88\xa2\x2e\x25\x4b\x40\x3e\x7e\xdb\x2a\x26\x6c\x28\x5d\x6f\xb8\xee\xae\x33\x9f\x8d\xb5\x29\x69\xcb\x82\xa8\x36\x0a\xfe\x88\xb9\x1f\xd3\x73\x02\xc0\x2f\xe9\x8e\xdf\xbc\xc6\x11\xcb\x52\x8b\x1e\xf9\xc3\xb7\xa8\x24\x55\x62\x38\x44\x9c\x6b\x51\x41\x0c\x0a\x86\x32\x29\x91\xb3\xca\x62\x54\x0e\x7c\x26\x82\xe8\x9f\xbf\x43\x6b\x56\x57\x7c\xee\xe2\x27\xbc\x52\xbf\x69\xdb\x8d\xbe\x01\x63\xec\x5e\x02\x65\x04\x73\x81\x5e\x7d\x8b\x72\x5a\xd4\x52\xf0\x01\xbf\xee\x28\x4b\xdf\x7f\x17\x79\xc0\xe3\xd4\xa4\x38\x05\x69\x3b\xdc\xcb\x9c\xe3\x52\xd7\x33\x32\x7a\x52\x94\x6d\x41\x81\xc4\xab\xdd\xab\xeb\xa6\x75\xe3\x1c\xec\x25\x1a\xa9\x73\x99\xdd\x50\x08\xf6\x88\xfc\x31\x4e\xbb\x88\xd0\x13\xa2\xa4\xa0\x88\x87\x61\x4a\x04\x0c\xb2\xc2\x38\x28\x3d\xcf\x80\x3a\xf6\x5b\xcd\x96\x1b\x01\xc7\xd6\xf9\x6f\xfd\x7c\x17\x54\xc7\xfe\xb8\x05\x62\xea\x9d\x8f\xed\xb2\x84\x2d\x86\xa9\xe7\x45\xa8\xa4\x76\x5b\xb1\x3a\x98\xfb\xde\x19\x9b\xb2\xd9\x58\x1b\x81\xb9\x2e\x70\x92\x10\xae\xb8\xd1\x45\x53\x46\x3c\xb8\x25\x0a\xa6\xbf\x0e\xda\x0e\x8f\x85\x44\xe3\xc5\x10\xb5\x2b\x06\x74\xd2\x3c\x26\x8e\x28\x68\x92\x20\x3a\x4c\x45\x6e\x29\x17\xd1\x55\x50\xf5\x4b\xdd\x0d\xcd\x69\x71\xab\x2a\xc0\xa1\xbc\xce\x04\x2d\x01\x29\x00\x76\x46\x1b\x82\x46\x36\x70\x1d\x2f\xd8\xb1\xde\xe3\xf0\x14\xc9\x13\xa4\x71\xa0\x95\x03\xef\xd8\xf6\x05\x91\x42\x28\x8c\x13\x15\x24\x4e\x4a\x5c\x61\xbb\x2c\x41\x9a\x09\xcb\x73\xcc\x5f\x1a\x1f\x10\x56\x81\x4b\xfa\x0a\x91\xd2\x40\x85\xb3\x66\x1a\xdd\x90\x93\x7d\x6d\x64\x41\x0a\x5c\x04\xfd\xbd\x5d\x03\xa0\x7a\x05\xb1\x87\xc2\x56\x34\xd1\x25\x74\x23\x77\xb0\xd1\x3b\x7e\xc4\xc9\x1d\x29\x52\x5d\x91\x5d\xed\xe3\x74\x53\xe0\xdc\x20\x64\x37\xf5\xa6\x49\x6a\xe9\x07\x09\x37\x41\x39\x1a\x96\x46\x03\xc6\x58\x90\x2c\x2d\x6c\xee\x6b\xf6\x6a\x1e\x09\x71\xfb\x91\x4b\x49\xcc\xcf\xcf\x40\x9e\x08\x4e\x2a\x7a\x9f\x10\x2b\xe6\xca\x8e\xec\x6b\x50\xf7\x41\x6c\xb7\xad\x61\x19\x5c\x37\xea\x9c\x26\x75\x97\x34\x8e\x6c\x85\xaa\x8d\x33\xc9\xa2\xc2\x82\xbd\x85\x24\xea\x6e\x28\xb9\x82\x7b\xac\xd2\x0c\x2d\x3a\xac\x8f\x9e\xf7\xa1\xe0\x86\x07\xdd\xfb\xd5\x12\x8e\x51\x75\xf4\xe1\xc7\x8b\x2e\x7f\xfc\x80\x53\xc6\xd1\x8f\x19\x4b\xee\xd0\x05\x51\x2a\x50\xb8\xfe\x79\x1f\xdc\x1c\x54\x92\xd8\x4b\x31\x54\x16\xad\x5a\xa6\xfb\x2d\x8a\x76\x28\xd2\xf5\xd5\x14\xe9\xaa\x96\x61\x9b\xc7\x1f\xb5\x44\x57\x8e\x6f\x63\xab\x50\xae\x09\xaa\xd4\xa1\x56\x2f\xdb\xca\xff\xf0\x0a\x84\x9d\xa3\xf6\xcd\x9a\x3d\xcc\x04\x9b\xd5\x9c\xcc\x68\x30\xe8\x0f\x3c\xae\x3b\xb2\x91\xcf\xc4\x8d\xec\x67\xfd\x52\x47\x51\x16\x4c\x99\xd5\xd5\xef\x52\xca\xf9\xf0\xe3\x85\xbc\x2a\xe1\x98\xc9\x94\xa3\x53\x22\x92\xd3\x84\x94\xeb\x53\xd3\xad\x67\x37\x5d\x39\x2b\xa8\x60\x55\x64\x51\xf5\x33\x94\xb0\x2c\x33\x88\x67\x6c\x85\xce\x49\xb9\x6e\x48\x45\xf9\xa0\x1e\x71\x0e\xbe\x5c\x39\xa6\x92\xb1\xb8\x12\x31\xce\xd1\x92\xef\x9a\x93\xe5\x6c\xa4\x6a\x99\xee\xb5\xfa\xfa\x53\x6c\xad\x47\xa8\x6a\x01\x06\x46\x1d\xc3\x3e\x1d\xa8\x4a\xf5\x4c\x76\xeb\x63\x57\xbf\x3a\x5a\xd8\xd7\x54\x50\x9f\xe3\x3b\x8e\x2a\x66\x65\x3f\xdf\x61\x89\xe8\x6a\xa5\xd5\xa2\x94\xa4\x88\xdd\x93\xaa\xa2\x29\xe1\x96\x15\x47\x71\xcc\x82\x66\x4f\xc5\x23\x0f\x75\xb9\xbe\x8a\xba\x5c\xd1\x0a\xaf\xc3\x6c\xe5\xbb\xdb\xcc\x16\xa7\x39\x05\xe4\x2e\x3f\xab\x9b\x1c\x58\x59\x4b\xca\x6d\xde\x27\xec\x25\xbe\xab\xea\xc8\x13\x9c\x91\xab\x5f\xc0\xea\xe3\x42\x3f\xdf\xd5\x20\xed\x8f\x4e\xd5\x84\x1d\x10\xd9\x7f\x6e\x0e\x19\x2a\x58\xea\xf7\xf4\x1c\x6a\x26\xf4\x55\x33\xe7\x7c\x68\x48\xf6\x7d\x89\x09\xb7\x58\x90\x07\x1c\x27\x25\xdc\xd8\x21\xb6\x15\x98\x74\xfc\x8c\xd9\x30\x67\xd7\x57\xe8\x27\x4d\x77\x7f\xc5\x19\x2a\x26\xb4\xc4\x7b\xc1\x72\x4c\x23\x4b\xe9\x3a\xe5\x70\xdc\x8e\x5e\x37\x44\x91\xa6\x1a\x5c\x16\xa7\x3e\xf0\x8a\xde\xd6\x52\x43\x36\x5a\xeb\x01\xd3\x3e\x30\xf4\xc7\x13\xae\x5a\xd9\xca\x31\x2f\xda\x54\x8f\x46\x5e\x0a\x0e\xdd\xee\x0a\x75\x2d\x35\x61\x2e\x88\x93\x82\x53\xe5\xb3\x75\x82\xa0\x94\xd0\x25\xd6\x00\x47\x53\x93\xc3\xa1\x05\xb4\x13\xf4\x96\xdd\xd2\xc2\x72\x07\x66\xc2\x1c\x56\x98\x66\xa1\x69\x3c\x48\x4c\x5f\x85\xc4\xc4\x79\x76\x59\xe0\x65\x16\x76\x8a\x77\x2f\xae\x0c\xab\x68\x13\xa2\xde\x3d\x4d\x29\x97\xff\x8f\x16\x8b\xb7\xca\x61\x54\x17\x50\x0d\x42\xb9\x54\x0c\x7b\x6e\xb0\x75\x34\xd3\xd8\xdf\x39\xd6\x3c\x31\xba\x1e\xc1\x55\x91\xca\x61\x10\xde\x89\xcb\x34\xd4\x74\x09\x06\xa8\x37\xc9\xc4\x9b\x2d\x09\xba\x59\xd3\xe4\xee\xda\xf1\x1b\xb1\x4a\xfe\x56\x38\x3f\x35\x17\x2c\xe4\x38\xf7\xdf\xdd\x17\xe3\x37\xc3\xbc\x8e\x35\x5f\xdc\x38\x37\xda\xc2\x4c\x95\x24\x82\x30\xe7\x2c\xa1\x70\xc7\xa3\x32\xbe\xb5\x57\x62\xaa\xae\xc4\xfd\x0d\x4f\x49\x41\x3b\xdd\xdb\x76\x23\x18\x01\x0e\x73\xe7\x1e\x86\xb8\x17\xcd\x2c\xed\x6d\x48\x7a\x2b\x46\xd7\xea\xbb\xe9\x54\xe7\xb3\x5e\x3f\xed\x0b\x6b\x7c\x5d\xc0\xc2\x18\x76\xe1\xad\x4c\x6b\x4a\xb3\xf6\x96\xde\xad\xd2\x17\x3e\x39\x2a\x6c\xe5\x49\xbd\x6a\x46\x0a\xf5\x3e\xd3\xc8\x06\xfe\xa7\x42\x72\x3b\x4c\x7f\x0a\x26\x3d\x0f\x59\x77\x7a\x01\x0a\xfa\x37\xe3\x46\x53\xcc\xa8\x64\x65\x9d\xe1\x80\xc7\xda\x2d\xa8\xb8\xab\x07\x45\xf7\x61\x1f\x6e\xb5\xa9\x15\x66\x46\x12\xeb\x7a\xc5\x66\xc2\x72\x77\xbf\x18\x0d\xa4\xd8\x0c\xd4\xf2\xa5\x3a\xf4\xed\xf7\xdf\x7d\x37\x54\x9e\xa6\x53\x7e\x26\x2c\x77\x01\xcb\xd3\xf4\x12\xe4\x60\x97\xb6\xb7\x3c\x4d\xbf\xfc\x4c\x78\x4a\x01\xe5\x69\x22\x13\xda\x1e\xa7\xfe\x0c\xc8\x93\x10\x91\x95\x6f\x73\xed\x41\xfc\xd5\x97\x8b\x3f\x9a\x61\x0f\xb8\x8b\x3a\x19\xf8\x90\xbc\x7a\x80\xcf\x52\xe5\xdd\xef\x35\x9b\x3e\x22\x87\xbe\x93\x19\x1f\x24\xec\xcb\x9c\x1f\xcd\x87\x87\xeb\x5a\x8a\x16\x28\x0b\x3e\x48\x13\x5c\x93\x03\x1c\x00\x0d\xca\x78\xef\xe6\xb1\xc3\xf8\x03\x24\x6b\x70\x4a\x7d\x25\x4f\x4e\x7b\x93\xa7\x0e\x50\xa6\xa0\x99\xec\x71\x79\x3e\xe0\xac\xf5\xbd\xe4\xaa\x47\x06\x40\xc3\xf3\xd2\x63\x2e\x4d\x90\xdd\x41\xb7\xc1\x1c\xf4\x91\x9c\x72\x20\xc9\x6e\xe6\x79\x20\x93\x1c\x48\x53\xe5\x9b\x83\xf2\xc7\xed\xf5\x07\x24\x1c\xb8\x24\x3b\x97\x20\x98\xe4\x3e\xae\x4a\xdd\xe2\x33\xbe\x63\x13\x18\xe0\xc9\x0b\xa0\x9c\xee\x48\x6c\xc5\xf1\x4c\xee\xed\xcc\x6c\x20\xc9\x77\x03\x0c\x73\x3c\x1f\x1b\x48\xd4\x01\x0b\x99\x94\x85\x1d\xc5\x16\xe0\x39\x11\xb0\x3c\x6b\x60\xd6\xc4\xde\x93\x20\xe0\x39\xb8\xf0\xcc\xdb\x06\xe4\x3f\x38\x9c\xb8\x84\xdb\x58\x13\x74\x7c\xfd\x7d\xd7\x76\x6a\x54\x3f\xbb\x3b\x75\xe8\x64\x03\x1c\x1e\x5e\x29\xc5\xe9\x9f\x40\xf9\x43\xf0\xad\x0b\x53\x9b\x75\x0f\x98\xf7\xe2\xee\x6e\x06\xfd\xc6\x2f\x8b\x9e\xeb\xb1\xf9\xd9\x0a\xc8\xc6\xab\xe8\x77\x3d\x1e\x3c\x8e\x5f\x7f\x95\xf6\x83\x7b\x6c\xba\x7b\x8c\x77\x20\x39\xad\x81\x4a\xcb\x95\x10\x0f\x19\x5b\x9a\x82\x14\x9a\x69\x37\x87\xf4\xec\xfa\x0a\x25\x15\x51\x19\xd8\x38\xe3\x73\x34\x01\xa1\xc8\x3a\x22\x94\x84\xca\x1b\xcd\x13\x0b\x41\xf2\x52\x84\x37\xd0\xc1\x3b\xf6\x55\x78\xc7\x26\x9a\xd4\x7f\x6d\x5e\xb3\xf6\x8f\x75\x9d\xe3\x62\x26\x4f\xb9\xf2\x93\x19\x7b\x3b\xcc\xa6\xde\xbb\x7d\xe6\xc8\xe6\xb3\xa8\x85\x51\x39\x5d\x2a\xad\x4e\x17\x51\x07\x29\xe7\x0a\xcb\xad\x11\x01\x1e\xc1\x03\xa1\xe8\x4e\x9c\x33\x5d\xcf\xa4\xc7\x1d\x12\x56\x82\x67\xcc\xdc\xd2\x66\xa0\xcd\xfc\x59\x46\xe0\x14\x4d\x71\xad\x3a\x10\xd2\x5a\x84\xba\x56\x99\xa7\x2d\x95\x0e\x4e\x99\x01\x1e\xc3\x59\xc6\x1e\x00\x49\x8d\x6b\xd2\x91\x0c\xe4\xbe\x90\x63\x35\xc9\xfc\x4b\x82\x72\x5a\x55\xac\x32\x9e\x13\x80\x99\xb0\xdd\x2e\x2a\x3a\x44\xea\xaf\xa4\xd2\x2a\x5a\x65\x82\x05\x16\x44\x38\xd3\x0d\x11\x00\x71\xa1\x93\x9b\xe4\xbf\x6d\x4c\xa7\xae\x07\x65\xf8\xe4\x92\xac\xf1\x3d\x65\x75\xa5\xa8\x43\x48\xbe\x30\xaf\xca\xab\x1b\x6d\x58\xdd\xd4\x53\xaf\x55\x9a\x43\x33\xbb\xe0\xc2\xec\xce\x3a\xbf\x6f\x5f\x56\x2a\x77\xca\xac\x25\x6e\x46\x3e\x53\x2e\xe2\xe7\xd2\x2e\xb1\x45\xe4\x7f\x4a\x31\xb6\x5e\x86\x8a\xbd\x80\x3e\x77\xcf\x4b\x29\x2f\xfc\x1a\x4c\x9f\xeb\x1e\x4b\xf7\xad\xae\x58\x7c\xbf\x50\x7f\xda\x45\x28\x36\x98\x17\x5c\x4b\x8c\x26\xad\xe5\x20\x18\xfb\xda\x1f\x44\x30\x6e\xc2\x07\x32\x9a\x6c\xae\x2e\xe2\x44\xc4\x26\x6c\x40\xbe\x8c\x7e\xc4\x9c\xa4\xe8\x1d\x2e\xf0\xad\xb6\xa9\x1c\x2f\xae\x7f\x7c\x17\xae\x18\x50\x56\x4c\xd9\x87\xae\x2e\x06\x1c\xd0\xcd\xbd\xaa\x3f\xf2\x7e\x7f\x99\x9b\xbd\xb1\x47\x0b\x0f\x7b\x1e\xfd\x1e\x73\x52\xed\x05\x0f\xa9\x3d\xb5\x0d\x3c\xa2\x83\x01\x2c\x2e\x12\xef\xb3\x8f\xfb\x3c\xbd\xdb\x4f\x37\x61\x4e\xfe\x76\x28\xbb\x31\xe8\xe0\x23\x25\x15\xa3\x31\xe9\x10\x7e\x26\x70\x75\x4b\xc4\x55\x91\x64\x35\xa7\xf7\x70\xce\x7d\xd3\x7d\xcf\x11\xa8\x1a\x5b\x17\x43\x54\xfe\x39\xf5\xcb\x00\xac\xb8\x65\x4a\x1e\xa9\x70\xc1\xb1\x8e\xc6\xa1\x85\xc9\xaa\xd7\xbd\xd3\x48\x30\xbe\x6d\x06\x53\x2b\x35\xb5\x1b\x1a\x71\x41\xdd\x34\xaf\xf4\x44\x46\x05\x3b\xc4\x05\xce\x4b\xa4\x41\x3a\xc2\x5e\xbb\x8a\x24\x52\xba\xd9\x34\x60\x4f\x09\xf1\xb3\x44\xd0\x8e\x6c\x07\x95\xd1\x62\xca\xc0\xe4\x6b\xce\xe0\x4c\x2f\xb5\x6e\x2f\x85\x33\xef\x98\x4a\x5c\x09\x9a\xd4\x19\xae\xd4\x8c\x48\x5a\x1a\x6f\x2a\x6d\x83\xb8\x05\xb3\x44\x11\xce\x98\x56\xa8\xfd\x1c\x4e\xc9\x82\xb6\x6b\xea\x64\x3f\x60\x6e\xeb\xb1\xc8\x0d\xa6\x25\xe5\x25\xe6\xf2\x7f\x92\xbb\xba\x94\x0f\x78\x69\x0a\x7c\x47\xbc\xf1\x5d\x11\x93\xfd\xbf\xfd\x37\xce\xc0\x3c\xff\xef\xab\x8b\xfe\xfe\x71\xb6\xfb\xd5\x85\xde\x43\xde\x01\x68\x84\x8c\xc7\xd8\x43\x41\x1e\x53\x11\x3e\x1a\x1f\x04\xe1\x31\x75\xe5\xb5\x9a\xef\xa3\x8b\xfc\x2f\xbb\x74\x70\x59\x27\x77\xfe\x10\x28\xd0\xee\x20\x45\xaa\x38\xd5\xce\x84\xca\x8a\xac\xe8\xe7\x9d\xc9\x54\xe4\x36\x50\x36\x73\x2f\x53\xaf\x25\x8a\x45\xd0\x97\x10\xfc\x18\x7f\xa0\xab\x9d\x36\x5a\x5b\xb1\xea\x59\xac\x40\x60\xea\xbc\x7f\xd6\x2c\x64\x31\x5a\x38\x27\x34\x1d\xf8\x81\x5f\x66\x98\x0b\x9a\x28\x58\x0c\x29\xf6\x8d\x2e\x4c\x2f\xe3\xfa\xd3\x62\xeb\xcd\x8e\x6a\x56\xa0\xb3\x4f\x0b\x74\x41\xf9\x5d\xb8\x2e\x4d\x13\xa3\x69\x33\xa5\x54\x34\x85\x51\xcc\x8e\x8e\xba\xaa\x99\x8d\xce\x2a\x6c\xe1\xa3\x71\xb2\xcc\x7a\x9b\x76\xf6\x1c\xe1\x07\x4e\xf4\x70\x97\x72\xb8\xf2\xcf\xa3\xd0\x07\x90\x3d\x18\x56\x0e\xa7\xe0\x71\x28\xbc\x0d\xff\x05\x17\x85\xc5\xd1\xc1\xda\xf0\xd2\x05\xe2\x70\xf4\x70\x36\xbc\x24\x23\xb4\x4b\xb8\xf6\xf8\x08\xdb\xc0\xfb\xbd\xfd\x83\x71\x4c\x01\xe2\x80\x31\x33\x29\xa4\x89\xc0\x55\xb0\x9d\xb8\xda\xbc\x66\x07\xb3\xc3\x9e\xbc\x5a\x21\x96\x53\x21\x6c\x14\x4d\x57\x3c\xd4\x40\x7d\xcb\x0d\x24\x6a\x5b\xe7\xd0\xb6\xfb\xee\x4d\x03\x0b\x86\x4e\x53\x72\x7f\xca\x53\xfc\xea\x44\x75\x8f\x1b\xe7\x7b\x48\xdc\x6c\xc7\x89\x39\x7a\xf1\xea\xc5\x1c\x2d\x68\x4e\x33\x5c\x65\x9b\x4e\xc8\x4f\xfb\x5c\xc8\x7f\x64\x3b\xa2\x52\x18\xbf\x7d\x81\x8e\x59\xa5\x7a\x94\xe0\x02\x65\x04\xdf\x13\x9b\x7e\x20\xb9\xc9\x06\x91\xbc\x14\x9b\x97\xde\x30\x1a\x68\xf0\x0c\x2c\x64\x06\xe2\x57\xec\x05\x7d\x9b\xb9\x7c\x21\xaa\x9a\xbc\x50\xae\x45\xe5\x13\x94\x1c\x9b\x13\x01\x87\x4c\x68\x06\xdd\x73\x1c\x2a\xa3\xad\x22\x3e\xba\x59\xbc\x74\xe5\x4c\x2b\x6f\xe7\x8b\x27\xbd\x11\x10\x58\xf9\xd4\xd4\x23\x34\x87\xa3\x8f\xca\xe3\x22\xb5\x03\x5b\xe6\xbd\x4d\x4e\x4e\x41\xb7\x2f\xd2\xa9\x20\xf2\xba\x3e\x3e\xcb\xf1\xef\xac\x40\x97\x3f\x5a\x4f\xcf\xcb\x2f\x34\x51\x5e\x66\x15\xb2\xae\xcc\x9a\x79\x9c\x2a\xae\xe2\xdf\xeb\x8a\x48\xe1\x05\x24\x0d\x9d\xd9\xa7\xfb\x12\x90\xfc\x5d\x07\x4c\xab\xbf\x5a\xa8\x51\x8f\x20\x64\xf3\x88\x8b\x14\x2d\xa9\x35\x54\xbb\x92\xcc\x2e\x82\xaf\xba\x29\x6e\x43\x19\x0b\xdd\xfd\xf5\x5f\xb2\x3b\xe7\xfa\x4d\x1d\xbd\x89\xde\xb3\x82\x9c\xa8\x83\x8c\xe4\x49\x36\xff\xfc\x54\x51\x41\xbc\xec\x09\x74\x0d\xc9\x3d\x1b\xb2\x57\x6e\x05\xe6\xb9\x8e\x68\x05\xa4\xaf\x76\xbe\xb9\x90\x96\x19\x5b\x5a\xfd\x63\x1f\xbd\xfb\xf8\xe1\x2a\xaa\x73\x1f\x3f\x5c\x3d\x7e\xc7\x22\x05\xca\x3d\x7a\x1a\x1e\xc5\xcb\x10\xef\x61\x80\xca\x80\xa0\xd9\xbc\xa3\x45\x04\xd2\xe0\xe5\xe7\x52\xa7\x02\x98\x48\x8d\xc5\x1a\xab\xf2\xa3\x0d\xf4\xa9\x5a\x68\xb9\xf2\x7e\xeb\x53\x49\xaa\x26\xa1\xcf\xa2\x56\xa2\x0b\xa2\x13\x40\xd3\xd7\x16\xe0\xb5\xa1\xe6\xbe\xe0\xf7\x78\x59\x62\xda\x84\x9f\xbe\xd6\xfc\x0d\xe5\xfa\x3f\x9d\x9d\x79\xac\xbc\xf8\xb4\xb0\x7f\xf2\x93\xbd\xc7\x34\xc3\x4b\x9a\x51\xa1\x42\x7d\x5e\xce\x3b\x45\x64\x15\x52\xa2\x17\xc1\x10\x68\x9f\x88\x14\x43\xa0\xa1\x4d\x2a\x74\xc9\x6f\x4d\xdb\x5f\x58\x13\xe4\xfa\x0f\x5f\x6b\x96\x39\x7a\x1f\xf8\xf8\xe1\x6a\xa7\x6b\x4f\xf2\x06\xf8\xb5\x27\x9f\x1e\xbc\xf6\xd4\x1f\x16\xa6\xd6\x80\x1f\x68\xd3\x05\xd9\x7c\x94\x9b\xef\x5f\x67\x0f\x41\xc3\x75\x3b\xa3\x15\x4e\xfa\xad\x9b\xa4\x69\x2c\x65\xdc\xac\xe8\x02\xc0\x6a\x4c\xe5\x1b\x7d\x23\xcb\xb5\xfc\xd9\x1b\xaf\x0d\xe2\x00\x8a\x91\x44\x0d\x48\x71\x60\x14\x88\x2c\xd9\x8b\xa0\xd9\xce\xf6\xf8\x23\xb6\xfb\x53\x4f\x65\x42\xca\xf5\x6a\x74\x77\x77\x06\x7e\x4e\xca\xf5\x9b\x5e\xe8\xb0\x02\x43\x7c\xb3\xd8\x06\xba\x57\x8b\xec\x9f\x75\x30\xc8\x3d\xe4\x14\x42\xb0\x1d\xc7\x4a\x79\xbf\x33\xef\x6a\x00\xe5\x6d\xb4\x47\xef\xa6\xb4\x1f\x8e\x81\xc8\xd2\x93\x3e\x05\x25\x0b\x90\x50\x16\x15\x9b\xe3\xcf\x3a\x08\xa5\xb3\x8c\xa5\x51\x29\x30\x71\x83\xa2\x6e\xa3\x61\x2a\xc6\xc4\x09\xaa\x70\xb0\x2c\xa5\xaa\xc7\xa2\x2c\x57\x75\x96\xe9\x0d\x26\x2a\x42\x4e\x5c\x8b\xcd\xe9\xd3\xdf\xfc\xce\xf0\x02\x0c\xdc\x3b\x3a\x10\xe4\xe3\xb4\xd8\xe6\x27\xd9\x80\x31\xf7\x84\xef\xb2\xf7\xcd\xef\xa2\x79\x7b\x0c\xa4\xd6\x3b\x0f\x2b\x56\x29\xa0\xf7\xee\x8e\x69\xd0\x69\x6b\x4e\xaa\xb9\xb9\x89\xf6\x04\xab\xbd\xeb\x74\x86\xee\x28\x48\x20\xba\x7f\x32\x0d\x14\x66\x93\x4d\x6d\x65\x9f\x08\x3c\x4c\x07\x0b\x73\x6b\x76\x95\xfd\x30\x0a\xcb\x72\xfa\x94\x41\x63\xe4\x20\x61\xe7\xcf\x3b\xe4\x3c\x36\xdc\x1c\x14\x4a\xbe\xcf\xd0\xcd\x10\x1c\xa5\xe7\x7e\xa8\x9a\x82\x6b\x5d\x70\xca\x13\xa8\xad\x55\x01\x57\x3e\x25\xcf\xdb\x51\x98\x0b\x80\x4d\x86\x05\x35\x5a\xa4\xe3\xb3\xdd\x9d\xe9\x73\xf5\x6c\x57\x52\xd3\xef\xf7\x83\x59\xbd\x99\xb8\xa1\x40\x56\xd0\x81\xcf\x37\xfc\xb7\x6c\xa6\xbf\x3e\x2b\x01\xe5\x07\x9e\xc2\xc5\xf9\x74\x26\x29\x48\x91\x80\xc7\x28\x10\x00\x28\x0e\xb0\xf3\x4a\xa1\x83\xb0\xf5\x48\xf3\x09\x93\xaf\x26\x4a\x04\x2a\x42\x88\xeb\x38\x08\x73\xa9\x6b\xbe\x63\x75\xf2\x20\x3a\x28\xae\x70\x4e\x04\xa9\x14\xdf\x56\x9b\x32\x61\x45\xa1\xb2\xfe\x19\xfa\xa5\x24\xc5\x42\xe0\xe4\xce\x6b\xaf\x3f\xdc\xe2\xcf\xe6\x16\x8f\xf7\x0b\x9a\x4b\x84\xa6\xcd\xfa\x37\xc5\x71\x1d\x6f\x35\x2d\xcc\xa5\xf3\x25\x4f\xd2\x17\xf6\xf5\x69\xc4\xbc\x77\x78\xb4\xee\x5e\xd7\xc2\x62\x9f\xee\x5d\xdd\xcd\xcf\x51\xf0\x66\x61\x14\x3a\xc8\x21\x04\x42\x91\x4d\x80\x21\xd3\x37\xae\x77\x6f\x44\x42\x90\xc1\x8a\xed\x41\xe1\xc7\x3a\xf0\x62\xa1\x6e\x02\xa1\xc7\x1c\x6c\x15\x2f\x45\x20\xec\xd8\x16\xac\x98\x97\xe8\x6e\x38\x2a\xfb\x0d\x00\x09\x1a\xb2\x26\x40\x8c\x05\x27\xc0\x0b\x2f\xd6\x1e\xbe\x38\x84\xb1\x09\xe8\x62\x16\x3d\x2c\xa4\xe3\x40\x91\xc5\xa6\xf6\xd8\x8b\x2a\xb6\x85\x1a\xe6\x97\x09\x00\x88\x62\xdb\x88\x61\x01\x43\x20\x69\x17\x65\x04\x50\x6c\x00\x30\xcc\x6f\xad\xf5\x82\x89\x79\xc1\xc2\x82\x7d\xdd\x06\x12\x83\x01\x85\x01\x6c\xba\xd1\x00\x61\x20\xf8\x2f\x78\x12\x3f\x08\xf6\x6b\x67\xc8\xaf\x88\x0c\x77\x18\xd4\x57\x2c\xcc\x97\x06\xf0\x0a\x92\x45\x40\x88\xaf\x58\x50\x06\x14\x80\xf7\xda\x02\xee\x02\x50\x0c\x42\x7b\xf5\xaf\x18\x00\xcd\xd0\x25\x34\x74\xd1\x40\x26\x35\x12\xd2\x2b\x0e\xce\x2b\x06\xca\x0b\x06\xe3\x15\x05\xe1\x85\x72\x1c\xaa\x7e\x8c\xcc\x06\x80\xc0\x77\x45\x20\x6e\xc1\xa0\xbb\x1c\x86\x05\xec\x66\x14\x6c\x57\x04\xe0\x0c\x04\xae\x2b\x0c\xd5\x05\x80\xe9\x02\xa2\x64\x40\x1c\x65\x21\x2d\xf5\xf9\x6a\xa8\x7b\xd7\x4e\x41\x2b\x0d\x81\x32\x0b\xc2\x98\xb5\x02\x9b\x83\x64\xa6\x58\xb3\x5f\x58\x87\xa0\x98\x41\xcc\x30\x61\xe5\x8f\x53\x98\xda\xb7\xb8\x42\xc7\xe7\x36\x73\xa8\x49\x90\xbe\x2a\x04\xa9\x56\x38\x21\x2f\x5d\x75\x30\x14\x93\x65\xf3\x5d\xd6\xb8\x48\x33\x6d\xa0\xc4\x05\x22\x9f\x05\xa9\x0a\x9c\xa9\x6f\xa5\x15\xbd\x27\x15\x3a\x3e\xcb\xca\x35\x46\x2b\x82\x45\x5d\x8d\x9b\xd2\x40\x4a\xa2\xa2\x08\x8f\x80\xd1\x1d\x30\x12\xae\x8b\x39\xef\x74\x4f\x0d\x44\x8f\x22\xa0\xcf\xb9\x10\xde\xe7\xac\x50\x77\x8f\xba\xe8\x36\xac\xae\x8c\xa3\xa0\x2d\x25\x53\x49\xa5\x4f\x7d\xd4\x4b\x15\x73\x53\x7d\x98\x54\x0a\x88\x57\xbf\x9d\xd5\xf2\x87\x9d\x63\x00\xf7\x16\x51\xe9\xc4\x3c\x46\xe5\xbd\xac\x7a\x65\x52\xe4\xe0\x94\x13\xaf\xad\xda\x5d\x62\xae\x8d\x3b\x41\xc1\xd7\x41\x1f\x70\xd6\x4f\x8b\xfc\x4a\x74\x49\x89\x20\x55\xae\x53\x69\x61\xc1\xf4\x6e\xb2\x10\x43\xb8\x2c\x33\x6f\x71\x23\xd0\xa4\x17\x2c\x25\xd7\xf5\x32\xa3\x7c\xbd\x88\xb6\x9f\xbe\x1f\x78\x59\xc7\x8b\xf4\x7d\xaa\x10\x27\xea\x96\xbd\x75\xb8\xee\x8d\x92\x9e\x31\x0f\x9a\x33\xfa\x27\x87\xa9\x4c\x9e\x8c\x08\xd2\xfc\xc9\xe9\xff\xaf\x80\xb2\x62\x45\xaa\xde\xf8\x58\x94\xee\x3b\x28\xc1\x59\xc6\x8d\x04\xaa\xf5\x68\xca\x1b\x66\xee\xdf\x7a\x92\xa4\x52\xa9\x96\x76\xa7\x51\x05\x56\x64\xd1\x1b\x79\x73\xf5\x9b\x6a\x3f\x16\x32\xcd\x6f\x27\xe9\x4c\x24\x47\x39\xd3\x29\x67\x05\x62\x85\x25\x70\x82\x70\x96\xd9\xef\xb4\x35\x8b\xfc\xbd\xad\x88\x39\x00\xfb\xc0\x31\x3c\x18\xb1\x07\xdb\x3e\x8d\xd8\xd1\x2e\xa6\x45\x93\x0c\x8f\xd5\xcb\x33\x15\x9d\x6c\x2b\x9c\x60\x9b\x65\x15\x3c\xd1\xf6\xe2\x99\xee\xa7\x8a\xc9\xde\x39\x13\xa2\xa2\xcb\x5a\xf8\x77\x1c\x4e\x53\xaa\xcf\xe4\x35\x70\x87\x02\x97\x62\x00\xd1\xac\xed\x91\x12\x4d\x08\x37\x5c\x68\x66\x14\xdf\xc4\x39\x25\x81\x9b\x44\xea\xa1\xcd\xb9\xdb\xe6\x6b\xed\xe5\xae\xee\x75\xfd\xe3\x91\x9f\x68\xca\x92\x5a\x2a\x3b\xed\x7a\xb6\xae\x5b\x1d\x51\x1f\x5e\x19\xef\xce\x03\xc4\x55\xab\x7e\x4e\x95\x21\x53\xf6\x50\x3c\xe0\x2a\x3d\xbb\x1e\x4d\x0c\xe9\x8a\x56\xed\xf3\xae\xd4\x68\xc9\x28\xf0\x48\xbc\x64\xb5\xb0\xa1\xcf\x7e\x41\xb2\xe7\x6b\x38\xf8\x14\xc6\x26\xeb\xe0\x53\xf8\xc3\xf9\x14\xe4\xd3\x5a\x84\xcb\x28\x17\xf2\xb6\xed\x9c\x12\x63\x87\x93\xb3\xb3\x47\xe3\xad\x73\x3e\x35\xff\xec\xe7\x38\x38\xe2\x5f\xe8\xfa\x64\x66\xd7\xb7\xab\xe8\x08\x94\xe6\x78\xeb\x2b\x7a\x4f\x66\x60\x45\x0b\x00\x88\x3b\x1e\x6a\xbd\x20\x99\x14\x3e\x50\xcf\x0d\x53\x32\x00\x3e\x3b\xd2\x30\xa0\xb8\x28\x98\xe6\xe7\xfc\x04\x65\x78\x49\x32\x7e\xa2\x75\x48\xb9\x5f\x5b\xd4\x4a\x48\x01\x21\xd4\x5e\x07\x00\x83\x63\x5c\xa9\x8c\x56\x26\x9a\x50\x11\xc0\xbc\xd9\x40\x9c\x27\x6b\x92\x63\xf5\xcf\x37\x72\xde\x02\xb0\x5e\x6e\xa3\x1c\x49\x11\x44\x10\x9d\x44\x4f\xaa\x9c\x23\xb6\x3a\xe9\x64\x53\xbd\xb8\x7f\x15\xac\x71\xab\x5b\x64\x45\x8e\x95\xed\xec\x84\x29\xb8\xee\x18\x51\xe5\x66\x11\x52\x5b\x90\xfb\x07\xe2\xeb\x6b\x5b\xeb\x85\x52\xc7\x5a\xcf\xec\x17\xae\x34\xb0\x02\xaf\x62\x44\x21\x81\x83\x53\xe4\xe0\x14\x79\x56\x4e\x11\x87\xf1\xab\xd3\x4c\xb9\x2d\xe8\xe2\x38\x4a\x00\x93\xe0\x5a\x08\xad\x3f\xc5\x01\xab\xd5\x62\x9c\x75\x95\x18\x3f\x09\xe4\x3a\xa9\xba\x85\xa0\x8e\xe6\xf3\xa3\x23\xeb\x5f\x31\x9b\xb9\x16\xab\xd9\x0f\x88\x14\x09\x4b\xc3\xe8\xa1\xb2\xdd\xa8\x3e\x56\x5c\x28\xd1\xa0\xd5\xe1\x5d\xd7\x50\x6e\xfb\x0b\x2b\x37\x65\x0b\x4e\xa9\xfe\x85\xb7\x40\x04\xd3\xb2\xf8\x0d\x6f\x26\x5e\xec\xed\x75\x6e\x29\xd9\x01\x83\x80\xb0\x6c\x53\xf7\xba\xa5\xc0\x51\x46\x73\xaa\xb2\x3d\x53\xc5\x53\x09\x17\x1c\x1d\xeb\x1f\xe7\x49\x59\x43\x78\x86\x79\x3a\x27\x39\xab\x36\x27\x0d\x19\xf9\x7a\x87\xae\x79\x22\x0c\x37\xaa\x4d\x42\x06\x00\x30\xdb\x3c\xa2\xdc\xd0\xcc\x1c\x04\x59\x55\xb7\x5e\xf4\x77\xe3\x49\x50\x76\xa7\xe6\x5e\x52\xea\xaf\x89\x86\x87\x41\xd3\xb7\x8e\x1a\xf5\x2e\x29\xee\xd1\x3d\xae\x38\xac\xda\x52\xa4\xa8\x90\xd2\x7b\xca\x19\x68\xbb\x8c\x5a\x72\xe4\xc6\x63\xb5\x28\x6b\x61\xf8\xa0\xd9\x8d\xc0\xc1\x1a\xcc\xaf\x76\x27\xf6\xa4\xa4\x57\xfe\x90\x6b\xdb\x22\x07\x6e\xbf\x36\x65\xa9\x5b\xfe\xda\x9c\xbf\x46\x48\x7a\x84\x55\x8a\x91\x70\x40\xd0\x30\x28\x46\xc0\x81\xba\x86\x9f\xce\xf1\x1b\x24\xa4\x0c\xdd\x17\x14\x98\xb6\x71\x69\x9e\xee\x46\x7f\x0a\x92\x97\xac\xc2\xd5\x06\xa5\xc6\xb6\xb0\x89\x48\xae\x75\xb2\x6b\x77\x46\xdb\x51\xa3\x49\x69\xb5\x4b\xe6\x46\x4e\x52\x5a\x7b\xeb\x52\x77\xe7\xe4\x93\x82\x8f\x33\xb0\x74\x16\xc0\x42\x13\x69\x8a\x8e\xe3\xe4\x2e\x5c\xa5\xaf\x99\xbc\x2d\x74\xd8\x17\x2f\x8c\xaf\x2a\x27\xb8\x68\xa4\x5f\xe5\x99\x64\x29\x39\x0a\x59\x18\x0d\x21\xdd\x27\xc7\xa4\x54\x18\x37\x87\x89\x93\x38\x36\x0f\xbe\x94\x62\xc7\x3b\x75\xeb\x3c\x2a\x9c\x5c\x68\xb1\x10\x38\xfb\x90\xfe\x4e\xde\xca\xeb\x34\x02\xbb\x8d\x09\x9c\x21\x6c\x92\xc2\x57\x28\x63\x09\xce\x9a\xd5\x73\xef\xa3\xb0\x63\xb7\x39\x14\xd6\xd0\x2e\x57\x4f\xf6\x49\xdf\xf1\xca\x80\x93\x71\xed\x23\xa4\x09\x5e\x7a\xad\x35\x3a\x39\x54\xdf\xf9\xcd\x8a\xdd\x28\xa0\xbb\xcf\x34\xaf\x73\x54\x73\xd9\x43\x56\x74\x9f\xf1\x52\x6c\x3a\xf8\x60\x4b\xe0\xab\xb4\x67\x5a\x28\x82\x5d\x55\x48\xe1\xb2\xdb\xf9\xf4\x3b\x0a\x1b\xa5\x55\xe5\xae\x58\x25\x82\xd7\x4a\xa4\x34\xbd\x33\x82\x12\x5b\x29\x0f\x57\x23\x38\xf8\x37\xac\x0a\x0f\x54\xb8\x95\xbd\x73\x50\xd0\xac\x7b\x10\x2c\x72\x63\x16\xec\x2d\xe5\xa8\x2e\x4c\x54\xc5\x16\x9b\x19\xde\xb8\x35\x27\xd5\xec\xb6\xa6\xe9\xde\xb7\x6c\x90\x2b\xaf\x12\x10\x3f\x7e\x73\xde\x65\xc4\x6f\xe8\xb2\x22\xe8\x7c\x8d\x8b\x82\x64\xce\x85\xab\x03\x2e\x46\xfb\x3c\x0c\x3c\x1a\xc0\x1d\x0d\xf9\x92\x77\xc4\x2c\xf9\xe3\xe4\xcf\x7d\x69\x48\xa7\x3f\x14\xcc\x66\x56\x47\x00\x6c\xb6\x96\x9f\x37\xe7\x16\xe6\x3e\xab\x0b\x54\xd4\xf9\x92\x78\xcf\xe0\x97\x86\x82\x7c\x0e\xc9\x81\xbb\xe7\xf0\xe9\x29\xff\xf4\xe9\x7d\x04\x66\xc9\xd0\x9a\x3d\xb0\x2a\x4b\x1f\x68\x6a\xeb\x65\x1d\x4b\x92\x2f\x9f\x0f\x88\xc8\xc3\x03\x4d\xa7\x0e\xd1\x56\xba\x92\x43\x44\x6a\x8c\x4d\x81\x8d\xc0\x2d\x77\xac\x3e\xfb\x12\x5d\x52\x65\xd7\x53\xff\xa5\x0d\x3e\xf9\x92\x16\xd8\xc2\xbb\xb4\x8b\x10\xac\x49\x2c\xcf\x86\x35\x71\x72\x22\x4e\xd0\xb2\x36\x46\x27\x26\xd6\x88\xd3\xbc\xce\x04\x2e\x08\xab\x79\xb6\xf1\x6e\x8f\xa7\x9c\xfe\xf0\x5d\x98\x91\xcf\xfe\x92\x49\xdd\x3b\xb1\x79\xbc\x7b\x37\xde\x92\x82\x54\x34\xb1\x0b\x06\x46\xe5\x56\x11\x68\x9c\xb2\x82\xa4\xa7\xcd\x45\xa9\x2b\x64\xa9\xa8\x45\x92\xa8\x1a\x0b\x29\x2a\xb3\xfa\x96\x8e\x5a\xed\x9f\x34\x46\xb1\x8d\xb2\x82\x54\x72\x74\xa3\x13\x77\xe5\xef\x5f\x37\x10\xa3\x2b\x8e\x3a\xd7\x69\x4a\x4a\x52\xc8\xc3\x5b\x38\xbb\xcf\x2f\x3b\xab\x29\xd8\x79\xb6\x8d\x2f\xe0\xcb\x07\xda\x38\x3c\xf1\xf2\xb3\xa8\xb0\x64\x62\xb9\x94\x18\xad\xb7\x82\xae\x10\x2e\xfc\x4c\xe7\x71\x82\xa8\xbe\x92\xab\xf8\x11\x01\x76\xa2\x63\x18\x83\xc1\xa0\x90\x30\x53\xcd\x2d\xcd\x41\xb0\x01\x9b\xe3\xc1\x97\x00\xe3\x9b\x9b\xcd\xd7\x0b\xd0\x1c\x0f\xc2\xf4\x0f\x7b\x30\x40\x93\x0f\x84\x80\xf5\x46\x73\x80\x15\x40\xcf\x3f\x22\xf3\xb1\xe3\xe2\x56\x19\x4b\xee\x80\x78\x38\x6f\xf4\xb3\x3d\x6d\xde\xfc\xd8\x07\xc4\xf1\xc4\xbb\x8f\x69\xef\xe6\x7c\x39\x17\x95\x0a\xd4\x30\x1f\x90\xc7\xa2\x62\x99\x87\xf9\x68\x18\xd3\x25\x91\x47\xbf\xaa\x0b\x0f\xfe\x06\x48\xce\xc1\x02\xf3\x48\x90\xce\x3e\xc6\x35\x27\x42\x47\x73\x2a\x18\xbf\x9c\x08\xac\x60\x7c\x67\x7f\x0b\xe7\x4d\x98\xd1\x5b\x2a\x2b\x56\x35\x33\x61\xed\xb5\xca\x3b\xc8\x69\x4a\x0c\xfd\x54\xae\x8b\xc2\x21\xde\xf5\xca\x36\x5f\xfd\xf8\x31\x02\xcd\x42\x3e\xdc\x1b\xbb\x59\x50\x65\xd5\x52\x08\xf8\xad\xd6\xe1\x1f\xfb\xca\xd9\x58\x86\xd6\x23\xdb\xb2\x6e\x13\x72\xdd\x80\xf2\x83\x41\xe5\x8f\x7e\x3a\xbf\xec\xbe\xd6\x3d\x1c\x3f\x9d\x5f\x7e\x35\xe5\x75\x6e\x13\xd2\x96\x2d\x48\x29\xbf\x3b\xd4\xd6\x69\xdb\xbf\x48\x6d\x9d\xad\x3d\xf0\xb5\x58\xfc\x0e\x85\x75\xfc\x72\xf0\x33\x29\xac\xf3\xa4\x7b\xfb\xe9\x4c\xb7\x65\x1a\x25\x65\xd8\x7a\x32\xae\x31\xe5\xfa\xa2\xf5\xa4\xd0\x42\x5e\x3c\x73\x05\x1f\x1c\xda\x7c\x1d\xc0\x29\x5b\xf8\x42\xbd\xfd\x94\xd3\xf9\x48\xe8\x77\x51\xfa\x70\xc8\xd9\xd7\xd1\x95\xb7\xd5\xf4\x2f\x31\x61\xbb\x96\x2a\xd0\xfb\x6e\xb2\xc8\x44\xc5\x07\x52\x8e\x42\xfe\xf6\x04\x25\xfd\x70\xcf\xda\x49\x85\xfc\x81\x71\xaa\xa2\x31\xb0\x50\xf0\x2b\xb6\x0e\xad\x67\x23\x68\x5b\xe7\x1c\x5d\x5c\x5e\x7f\xb8\x3c\x3f\xbb\xb9\xbc\x78\x8d\xec\x17\xa8\x2b\x08\xcf\xd1\x0d\x6b\x8d\xa3\x1e\x8d\xa4\x71\xfa\xea\x18\xc1\xb6\x6f\x27\x86\xf5\xe2\xa2\xf5\x50\xeb\x72\xba\x05\xba\x2a\xa8\x68\xa2\xc4\xfc\xa2\x5d\x92\xb1\xc2\x44\x56\x49\xaa\xc6\x36\x7b\x4b\xc5\x89\x16\xe4\x4c\x25\x85\x35\xe9\x7e\xc5\x43\x94\xa0\x6b\x1d\x97\xd2\x74\x7d\x54\xa3\x07\xa9\x3b\x36\xae\x03\x5e\x37\x47\xfb\x4d\xda\x68\x1a\x7d\xef\x34\x41\xa4\x36\x26\x34\x70\x13\xf4\x11\x7e\x90\xbc\x09\x8f\xe6\x47\x56\xf8\xca\x1a\xa4\x26\x1b\xbc\x6c\x3f\xe8\x25\x6b\xc3\x9a\xe5\x8b\xdd\x7d\x36\x47\xe8\x17\xa9\xea\x3f\x50\x4e\x4e\xa4\xf4\x04\x8c\xa2\x76\xba\xa0\x88\xbb\x31\xaf\xbd\x9d\x6c\x7e\xe5\xf5\x12\xda\x59\x53\x6c\x5e\x17\xcb\x0e\xd5\x62\x07\xb2\x4b\xdb\x1d\xf0\x8a\x7e\x68\x47\xf0\xf1\xc3\xdb\xdd\x3b\xa0\x4f\x1d\xf8\xf3\xe7\x2c\xcf\xa9\x40\x6b\xcc\xd7\x0d\xce\x40\x1b\xbf\xd1\x9c\xfa\xdd\xfa\x15\xe6\x8a\xed\xc4\x4d\xe6\x8c\x1a\xde\x00\x58\x0f\xe2\xe8\x27\xfb\x78\x4f\x79\x6c\x7e\x76\xab\x42\x8c\x8e\xbe\xa9\x16\x11\x17\xb8\x36\x06\xf3\xdc\x8c\x61\x3f\x48\xc3\xb6\xa2\x72\x84\x07\xf3\xd2\xbe\xf2\xde\x41\x7e\xb3\x74\xb4\xf0\xa3\x86\x9b\x12\x81\x69\xe6\xb7\xf4\xb5\x73\x29\x58\xc9\x32\x76\x1b\x87\xb2\x3e\x30\x19\xdf\xe8\xa8\xf9\x19\x9e\xc9\x59\xde\x5d\xff\x88\xa9\x10\x61\x93\x00\xe4\x84\xb4\x23\x6b\x64\x70\x15\x77\xbf\x1f\x44\xfe\x47\x1f\xf8\x9e\x85\xba\xfe\x6c\x84\xc4\xdf\x65\x5b\x58\x43\xf1\xe0\x36\x83\xbd\x24\x55\x4e\xb9\x64\x38\x5d\x69\xcf\x4b\x71\x5c\x12\x7c\xbc\x09\xde\x55\x08\x6c\x4e\xe6\xb8\x98\x38\x1e\x08\x1c\x64\x85\x92\x2b\xf9\x12\xd7\xb6\x0b\x19\xaa\xcd\xdd\x61\x84\x65\x45\x66\xe4\x33\xe5\xca\xa6\xa2\xf2\x56\x58\x05\x90\x02\xdc\x2a\x3a\xd6\x70\x66\xcd\x6c\xfa\xed\x6c\xd3\x8b\x13\x73\x64\xa9\x51\xb2\xd6\xa4\xa9\x5c\xf5\x38\xcb\x36\x1a\xbc\x57\xe5\xc4\x6b\x33\x06\xbe\x55\x1d\x67\x95\x71\x29\x94\x15\xbd\xa7\x19\xf1\x95\x6a\x13\x6b\x5a\xdc\xf2\x36\x77\x1f\x67\x19\x7b\x20\x26\x55\x8f\x6c\x8d\x43\x6e\x31\x2e\x20\x91\x8a\xea\x7c\xbc\xff\xe5\x06\x15\x44\x92\x5b\x53\xbe\xb3\xa2\x22\x3b\xe2\x8d\x0d\x9f\xcd\x66\xca\xf6\x73\xfc\x4f\x29\xf3\xa6\xd9\x4b\xf4\x89\x98\xef\x4b\x05\x40\x72\x84\x44\xa0\x87\x35\x53\xda\x7e\xcd\xcd\xd8\xc2\x2b\x9a\xeb\x02\xb3\xb8\x48\xed\xdb\xa7\x92\x82\x14\x36\xf5\x15\xd9\xa1\xa3\x30\x29\x38\x6a\xbd\xa7\x3b\xc9\xc7\x13\x38\xb4\x35\x86\x37\x02\xb2\xb3\x23\xad\xef\x2f\x60\x76\xd1\x7c\x1e\x23\xbe\xc9\x33\x5a\xdc\x9d\x20\x2a\x2c\xcb\x93\x3b\xc4\x84\x95\x16\x77\x76\xff\x56\x04\x8f\x7b\x48\x2c\xc9\xbd\xed\x80\x9d\xb9\xbf\x88\x32\x02\xdf\x6c\x4a\x15\x27\x82\x1a\x36\x61\x42\x68\x5c\x65\xfc\xc5\x0b\x35\xba\x80\x36\xff\x85\x47\x0e\x50\xcd\x77\xe0\xb9\x94\x43\x11\xd3\x8e\xae\x16\xe7\x8b\xab\x5e\x69\x40\xfd\x5b\xc7\x6d\x31\x31\x38\x17\x10\x9d\xeb\x55\x70\xc7\xdc\x16\x63\x97\xa9\x1a\xf8\x7e\xe4\xd5\x64\x8d\xcb\xb3\x5a\xac\x2f\x28\x4f\xd8\x3d\x89\x50\xa2\x2c\xb4\x9e\x71\x1c\x20\x6a\xa7\x53\xd3\x41\xe7\xff\x75\x76\x0d\xaf\x17\x04\x0b\xbc\xb0\xbd\x5d\x10\x1e\xa5\x71\x0d\xf7\xd5\x50\x79\x94\x9e\x1e\x1c\x3f\x7f\x48\xc7\x8f\x3a\x59\x5f\x8b\xb3\x87\x16\x54\x50\x2c\x58\x30\x33\xb4\x6b\x9d\xa8\xb9\x60\xb9\x39\x22\x57\x96\x84\x72\xf9\xab\xcb\xbc\x43\xd5\x7f\xfd\x74\x10\xbd\xa9\xba\xe3\x13\x4e\x1b\x9c\xca\x5e\x10\xec\x09\x2a\xc8\x83\xfe\x6e\xe0\x56\xb3\xef\xff\xa7\x09\x69\x96\xfb\x17\x67\x7f\x7b\xfd\x9f\xe6\xb8\x48\x9d\xf9\x6f\x8d\x65\xcc\xa4\x7d\xfb\x15\x9a\x06\xee\x51\xd5\x25\xd9\xdd\xfc\x82\x10\xfd\x0d\xce\x9f\x8c\x89\x51\xcf\xf9\x7f\xd7\x38\xd3\x73\xf6\x7e\x1f\xf6\xb1\xee\x9c\x83\xbb\x64\xd7\xdf\xce\xf5\xfb\xc6\x0e\x51\x73\xa2\xee\x4f\xfd\x84\xa8\x70\xc1\xe5\x02\xf8\xcf\xa5\x2b\xba\x1c\x19\x97\xdf\x11\x3a\x16\x49\x09\xc0\x3a\xdb\x63\x1a\x83\xee\xb4\x99\xef\xb7\x4d\xfa\x82\xaf\x0f\x7b\xf6\x81\xa9\xbd\x0a\x37\x0f\x75\x3a\x7c\xad\x5e\x46\x6f\x29\x17\x3a\xfe\x55\x53\x53\x25\xf5\x68\x10\x21\x42\xca\x3c\xd7\x0a\xfc\xb6\xfc\x3b\x4e\xd3\xea\xb5\xbe\x0b\x2d\xa4\x4e\xa5\x34\x46\x66\xf0\x72\x71\x01\x02\xde\x3c\x16\x9b\x92\x26\x4a\x3d\xbc\x39\xbf\x56\x54\x38\xfa\xe1\x7b\x8d\xe1\xf1\x97\x3f\x7f\xff\xad\x77\x79\x9f\x36\xb3\x20\xda\x06\xf3\xa4\x7e\xb5\x9d\x45\x8e\xf8\xa8\x54\x25\xf8\x2c\xda\x3a\x8d\xe6\x44\xeb\xbd\x26\x17\xb0\xe1\xf5\xfe\x7d\x05\x15\x9d\x0e\xd1\x96\xcf\x24\xda\xd2\x66\x13\x69\x7e\xb2\x0b\x2f\xd2\x6c\xe8\xba\xc7\x86\x50\x20\x96\x77\x0a\x1b\x72\x58\x8d\x5f\x40\x8b\x67\x43\x7b\xd1\x64\xe9\x6f\x63\x63\x9e\xc9\x1b\x6a\xf4\x6f\xee\x4a\x4c\xd5\x84\x0b\xa8\x0b\xe6\x7d\xaf\x20\x77\x81\xde\x8f\x56\xe3\x36\xfe\x95\x71\x5d\xb8\xef\x77\xd9\x55\xf8\x2e\x56\xa3\x50\x21\x8f\x64\xb9\xb2\x66\x52\xa9\xa7\xbb\x89\x2a\x72\x52\x38\xa9\x14\x88\xe8\x23\x5a\x59\x3c\x03\x46\x5f\xc8\xb1\x20\x47\xae\x67\x23\xe4\x03\x88\x77\x29\x84\x2f\xba\x9d\xf5\x37\xd0\x8c\x86\x2f\xd2\x2a\x26\xf3\xeb\x68\xa1\x9e\xb7\x8e\x2a\x79\x7e\x74\xc4\x52\x25\xf9\x9c\xe4\x70\x84\x73\x08\xb2\x4c\x7f\xd7\x7d\xd1\x9d\xb5\x93\xe9\x6e\x66\xc6\x31\x95\x9f\xb5\x01\x42\x5a\x6a\x3a\xcf\x30\x1d\x05\x01\xe9\x9d\xeb\xa1\x57\xf5\x3f\x17\xda\xc6\xe7\xf2\x3f\xcf\xb1\x72\x12\x73\x30\x1a\xa4\xda\x84\x3f\x60\xa3\x73\x2a\x20\xc9\xf1\xfd\x3d\x71\x4d\xdb\xc9\x98\xd9\xe5\x6d\x7f\xd2\xbf\x24\xb2\x3b\x3b\x31\x4f\x45\x21\x2e\x3a\xef\xdc\xbe\xd2\x4f\x7a\x1c\x99\xae\x90\x80\xbc\x3d\x95\x08\xf3\x06\x97\xb4\x36\xe6\x11\xa7\x76\xc3\x23\x70\xe6\x9d\xe7\x1a\x3d\x1a\xdf\xfe\xb4\xcf\x72\xb4\x17\x36\x6f\x72\x1f\xaa\x47\x98\x55\x34\xbb\x6b\x32\x43\x58\x33\xc1\x8a\x09\x99\x0b\xd7\x03\x2f\x76\xbd\xae\xfa\x89\x73\x9d\x75\x93\xf9\x34\xf7\x86\x88\x0e\x20\x75\x6b\x62\x07\x6b\x5f\xef\x70\x34\xbf\xee\x2c\xde\x3d\x5a\x7f\x61\x11\x28\x69\x44\xae\xcf\xd5\x85\x11\x11\x6d\x3e\x0f\x37\xdb\x05\xb5\xfb\xc5\xd9\x17\xde\x71\x07\xd2\x08\xf6\x73\x25\xa7\xd3\x4b\xcf\xca\x45\x7e\x60\x55\x4c\x76\xff\x75\xe7\x95\x5e\x30\x83\xf9\x5b\x3f\x61\x6e\x5c\x9d\x78\x5e\xa7\x68\xa1\xbc\xb0\xce\x90\x86\xdc\x27\xf6\x6c\xf9\x45\xda\x81\x63\x07\x3a\x5a\x5e\xaa\x03\xc7\x4e\x1f\xad\xfd\x16\x82\x7f\xf2\x6b\x2e\x90\x17\xde\xb5\xc9\x79\x47\xb2\xc7\xfa\xed\x31\x25\x37\x22\xd8\xcb\xaf\xe6\x05\x93\x36\x28\xd7\xab\x65\x34\xb8\x39\x5e\xe1\x18\xaf\x67\x51\xbb\xba\x29\x26\x0b\xe2\x1d\x1a\x4e\x7f\xc5\x2a\x95\xcc\x4d\x75\x01\x9e\x16\xd3\xd5\x64\x77\x9f\x98\x0a\x2b\x39\x2e\x3d\x18\xa4\x92\x75\xb8\x58\xfc\x3b\xb0\x89\x29\xa5\x26\xde\x85\xea\x4b\xb8\x35\x24\x80\xac\xc2\x53\x5f\x62\xab\x62\x84\xff\x0e\x1f\xab\x26\xe1\xab\x18\x11\x52\xfc\xe3\xd0\xb0\x43\x35\x11\x50\x2c\x0e\x76\x8b\x72\xed\x67\x91\xc4\x3b\xdd\xfb\xf5\xeb\x98\x8d\x0b\xde\x34\xb6\x86\x84\x8d\x66\xd5\x87\x47\x4e\xdf\x6e\xfe\x92\xee\x05\xdd\x50\xd5\x6b\x62\x20\x1d\x9a\x93\x8a\x70\xc6\x8a\x5b\x48\x15\x4f\xe6\xc6\x4f\x90\xb4\x09\x4c\xd8\x94\x01\x6b\x38\x1c\xcc\x38\x58\xfb\x7e\x64\x90\x2e\xe6\x45\x5b\xaa\xa6\x2d\x82\x9f\x62\x31\xae\xe7\xb7\xad\xad\x3c\x1c\x7c\x38\x0e\xa0\x19\xb0\x68\x83\xe3\x02\x14\x31\x07\x11\x6d\x94\x6b\x58\x39\x73\x20\xcd\xad\x12\xe2\xe3\x85\xcd\xa1\x14\x43\xe5\xcf\xbb\x25\xce\x81\x54\xf7\x59\x08\xbd\x6d\x11\x25\xd1\x63\xe6\xd3\x60\xd2\x43\x8a\xa3\x43\x3b\xda\x2f\xa1\x8e\xc4\x58\x99\x74\x20\x45\x6f\x31\xf5\xad\x82\xe9\x40\xa2\xf0\xb2\xea\x11\xf8\xdc\x53\x0b\xac\xb7\x2d\xe2\xe8\x46\x17\x5d\x07\x52\x45\xc0\xe2\xec\x6d\x8b\xe3\x4e\xba\x81\x0a\xb6\xb7\x6d\xe7\xd2\xed\x6d\x8b\x44\x3f\xd7\x0d\x56\xb9\x64\xa4\xbf\x9e\x1a\x26\x11\x24\x51\xb7\xde\xc9\x58\x35\x93\x28\x8a\xde\xca\x27\xf1\x27\xd5\x8e\x3d\x5c\x03\x05\x2d\xe3\x68\xc2\xe5\xbf\x28\xb2\x90\xea\x62\x46\x1e\x8c\xa2\x3b\xb1\xda\x58\xbf\xc5\xd5\x4a\x71\x86\x15\x51\x35\xa5\x6d\xb0\xfa\x29\x6d\x83\x97\x97\x8f\x5b\x13\x55\x8a\xbe\xb9\x8e\xc7\x0b\xcd\x47\x51\xed\x14\xa5\x1f\x2d\x39\x1f\x45\x72\xac\x3c\xbd\xbe\xa6\x63\x8a\xcf\x3b\x83\x8f\x67\x4e\xf0\x9a\x07\xba\x85\x4b\xd3\xbb\xcf\x02\x0b\xe0\xa0\xb8\x42\x50\xee\x0b\xfe\x10\xaa\xb6\x41\x62\x74\x74\x8b\x8b\xd4\x01\x8e\xee\x89\xe3\x79\x74\x8b\x8d\xea\x01\x92\x85\xc4\xfe\xe8\x16\xb9\x1f\x21\x65\xf3\xdb\x16\x55\x40\x1f\x2a\x7e\xba\x65\xf6\x61\xa5\xf4\xdb\x06\xb3\xba\x75\x9f\x06\xed\x77\x40\x91\x54\xe7\xe1\xb0\xae\xe9\xd0\xfb\xe3\x6a\x9b\xdb\xe5\x2d\xb7\x6a\x4f\x02\x17\x1d\x7c\xc7\x4c\x17\xaf\x43\x65\x31\xc1\x3c\xbe\x07\x98\x39\x5e\x20\x13\x4c\x11\x5e\x48\xb3\x6d\x53\x44\x76\x78\x71\xcd\xb6\x01\xcb\x6c\xc6\x89\xc1\x6d\x49\xce\xf1\x82\x9b\x51\x14\x87\x8b\x73\x46\x95\xd0\x6a\xdb\x94\xa9\x45\x13\xca\x71\xb6\x0d\x56\x98\x33\x92\x28\x6a\x0b\x79\x8e\x95\xe8\x8c\xa6\x38\xad\xa4\x67\xdb\x26\xa9\x6e\x28\xbe\xcc\xa7\xdb\x63\x58\xc1\xcf\xe8\xa9\xb0\xe1\x27\xd3\x4b\x7f\xb6\x6d\xe2\xb4\xc4\x0a\x8e\x28\xb2\x30\x68\xbf\x83\x11\x92\x21\x3a\xa8\xdc\x07\x95\xfb\xa0\x72\x6f\xb5\xa8\xe2\xa5\xd1\xfa\x31\xa8\x8c\x69\xdc\xc5\xda\x2d\x79\x3a\x5c\xd0\x74\x8a\x1e\x3f\x58\xfc\xb4\x2d\x6d\x1a\xb7\xd1\xf7\x57\x06\xb5\x6d\x51\x05\x51\xdb\x36\x89\x95\xc7\x17\x49\x6d\x1b\xb0\x5c\x6a\xdc\x51\x6c\x4a\xab\x02\x0a\xa7\x46\x51\x76\x8b\xac\xfa\x4a\xa8\xc6\x09\x5e\x03\xe5\x56\x77\x28\xa6\xda\xb6\xa9\x92\xe0\x84\x02\xab\x6d\x83\x95\x5a\x8d\x96\x57\xdc\xd2\xac\xbb\x14\x5d\x6d\xdb\x64\x61\x2e\xaa\x10\xab\xf3\x1a\xb0\x24\x6b\xf4\xd4\x18\xd6\xe1\x29\xce\x1a\x4d\x32\xa2\x98\xab\xf3\xd2\xd4\x09\x8d\x2b\xf0\xda\x36\x40\xa9\xd7\xe8\x91\xc7\x94\x86\x6d\xdb\x93\x4a\xc0\xe0\xc2\xb1\xfd\xfe\x45\x09\xc0\xf1\x66\xdd\xe7\x62\xaa\x8d\x20\xae\x83\xae\xf6\x62\x12\x33\xa5\x3e\x54\x19\x00\xd0\xbe\x7b\x66\xd6\xb0\x27\x8d\xbd\x30\x29\xb8\x52\x55\x00\x52\x85\x05\x5e\xe8\x90\x0a\x20\x49\x70\xe0\x05\xba\x5a\x41\x43\x05\x0e\x81\x17\xbd\xc0\x8b\x85\x29\x60\xe3\xac\x96\x8a\xa7\x88\xe9\x2b\x20\xea\x42\xc7\x53\x00\x89\x42\xa3\x2e\x94\xf7\x0c\x6a\xd0\x3c\x44\x5d\x00\xda\x21\xea\xe2\x60\x02\x8a\x68\x07\x13\xd0\x33\x37\x01\x1d\xa2\x2e\x0e\x51\x17\x87\xa8\x8b\x43\xd4\xc5\x5e\xa3\x2e\x8c\x72\xc0\x2a\x14\xca\x77\x68\x9b\xe4\x19\xcf\x2a\xe2\xc2\x14\xad\x3b\x4b\x12\x56\x17\xe2\x86\xdd\x11\x80\x5b\x15\xa4\x66\x6e\xd1\x05\x0c\xd4\x68\xa5\x8f\xa4\x73\xe2\x3a\xa5\x52\xaf\x9b\xb0\xfe\x67\xe6\x55\xab\x70\xc9\xdb\xab\x48\x49\xda\xd0\x04\xae\xbf\x39\xe9\x42\xce\xc7\x1c\x9d\xa1\x8a\x24\xb4\xa4\x52\x0f\x51\xe9\xf9\xea\x77\xbd\x41\x6c\x5d\x1c\xa8\x56\x23\x38\xc9\x56\xa6\x76\x48\xe1\xd4\xb9\x73\xb4\x24\x73\xa5\xec\xd0\x65\x2d\x76\x30\x5b\xbc\xc2\x16\x02\xac\xc8\x3f\x4d\x46\x11\x94\x19\xeb\xf1\xdf\x38\xbd\xe9\x38\xbd\xd5\x14\xc3\x4a\xf5\x6d\x75\x14\x97\xd4\x60\x75\x3c\x06\x0f\x21\x9f\x4b\x5a\xa9\xcd\xbe\x20\x09\x2b\xfc\x05\xd1\xdb\xd6\xd9\x4c\x97\x7d\x1a\x76\x57\x19\xeb\x3a\x58\xe7\x4e\xeb\xaa\x29\x80\x7e\x8f\x33\x9a\x52\xb1\x69\x02\x1a\x4c\x35\x4a\xac\x4f\x60\xdc\xc2\x9c\xf1\x76\xcd\x11\x2e\xcb\x8a\xe1\x64\x4d\xb8\x33\xfa\x93\x88\xd5\x36\x19\xc3\x4d\x46\x95\xae\x02\xab\x84\x6f\x45\x59\x4a\x65\xd9\x06\x55\x4c\x60\xb0\xdc\x34\x30\x44\x77\x57\xd9\x4f\x46\x58\x6e\xb4\x88\x24\xaa\x8d\x82\xb3\x60\xa6\x3b\xce\x3c\x50\xe7\x20\xc0\x6d\x0d\x2c\x4b\x2d\x5e\xd6\x0f\xdf\xa2\x92\x54\x89\x39\xed\x4a\xcd\xa2\xb9\x72\x1e\x66\x70\x37\xa4\xbc\x6e\x56\x6e\xaf\x3a\x9f\xf8\xf3\x77\x68\xcd\xea\x8a\xcf\x2f\xe2\x4c\xea\x82\xa1\x57\xea\x4d\x6d\x63\xb0\xca\x9b\x40\x19\xc1\x5c\xa0\x57\xdf\xa2\x9c\x16\xb5\x14\x2b\x40\x04\x1d\xd5\xe0\xfb\xef\x22\x8e\x21\x5c\x29\x80\xab\x03\xdb\xa1\x29\xe6\xb4\x95\x1a\xe7\xdf\x68\x05\x80\x62\xcc\x6d\xd3\xb8\x5c\xba\x0e\x48\xcf\x0f\x6c\xae\xae\xf8\xad\x52\x08\xf6\x08\x1c\x0b\x2e\x7f\x03\xa5\x69\xb0\x6c\x01\x7c\x30\x2c\x66\x87\x13\xa4\x8d\x23\x69\xe4\xef\xc1\x8e\xfc\x56\xb3\xe5\x46\xc0\x90\x15\xfe\x5b\x3f\xdb\x85\x54\xb0\x3f\x6e\xc1\xb5\x8d\x8e\x7b\xbb\x4c\x4e\x8b\xd6\x36\xf2\x12\x44\xd6\xb9\xad\x58\xed\xcd\xd2\xec\x8c\x45\x59\x12\xac\x46\x6b\x4d\xd4\x49\x42\x74\x69\xf2\x8b\xb6\xfc\x63\xe1\xf7\x13\xa8\xaf\x06\x97\x78\xdf\x78\x04\x5e\xb4\x34\xbb\x22\x5f\xb0\x08\x4b\x70\x42\x42\xd2\x7c\x45\x6e\x29\x17\x51\xd5\xb3\xf4\x0b\xdd\xcd\xc9\x69\x71\xab\x2b\x96\xe4\x75\x26\x68\x99\x35\xb3\xe3\x1d\x44\x43\xcc\xdc\xb2\xae\xb9\x1d\x3b\xb6\x5c\xac\x81\x40\x34\x56\x64\xd0\xfd\x72\xdc\xf4\x81\x14\x42\x17\xc8\xa8\xe4\x45\x5e\xe2\x0a\x37\xd3\x9f\xb0\x3c\xc7\xfc\xa5\xb6\xea\x23\x9c\x04\x6e\x31\x83\x45\x25\xef\xd5\x0a\x67\xcd\xb4\xb9\xae\xf8\x5d\x37\xa7\x20\x05\x2e\xbc\xfe\xb7\xae\xb9\x49\x3d\x8e\xd8\x43\x61\x91\xc3\x75\x59\xb5\xee\xae\x44\x80\x9c\xc9\x1f\x71\x72\x47\x8a\x54\x55\xd2\xd4\x93\x93\x6e\x0a\x9c\x1b\x60\xdf\xa6\xae\x20\x49\x7b\xb4\x03\x81\xbd\xda\x26\xab\x21\x06\x2c\xc4\x89\x16\xcb\x76\x9d\xa9\x9a\x47\x00\xf4\x7d\xe4\x52\x6e\xf1\xf3\x1f\xae\x83\x47\x2b\x7a\x9f\x10\x88\x2c\x2b\x3b\xb0\xeb\x20\xee\xbd\x48\x3b\x5b\xc3\x30\x28\x3b\xd4\x39\x15\x8a\xbf\x37\x8e\x44\x85\xe7\x89\x33\xc9\x56\xfc\xfa\x9c\x05\xa7\xe8\x6d\x94\xe5\x66\x1f\x15\xf9\x20\x85\xe7\xf4\xd1\x19\x7d\xc0\xcb\x4e\x83\xf7\x6c\xb5\x84\x21\x90\x1c\x7d\xf8\xf1\xa2\xcb\xc3\x3e\xe0\x94\x71\xf4\x63\xc6\x92\x3b\x74\x41\x94\xd0\xff\x25\x4a\xd2\x55\xcb\x74\x3f\xc5\x3d\x0e\x45\x28\xfe\x90\x45\x28\xaa\xa5\x7f\x1a\xfe\x48\x25\x28\x72\x7c\x1b\x53\xf9\x68\x4d\x50\xa5\x0e\xa1\x7a\xd1\x56\x5a\x9d\x78\x74\xbe\x59\xb3\x87\x99\x60\xb3\x9a\x93\x19\xf5\x06\x31\x81\xc6\x72\x47\x36\xf2\xef\xf0\xd1\xfc\xac\x5f\xe8\x28\x82\x82\x29\xe3\xac\xfa\x5d\x4a\x0e\x1f\x7e\xbc\x90\xd7\x13\x0c\xad\x91\x72\x74\x4a\x44\x72\x9a\x90\x72\x7d\x6a\xba\xf3\x6c\xa6\x27\x67\x05\x15\xac\x8a\x28\x7c\x79\x86\x12\x96\x65\x06\x9f\x86\xad\xd0\x39\x29\xd7\x0d\x99\xbd\x95\x76\x9c\x38\xe6\xa7\x2d\x4d\x50\x32\x06\x87\x61\x77\x8e\x89\x7c\xcf\x9c\x12\x67\x93\x54\xcb\x34\x1a\x1d\xf5\x4b\x6c\x99\x3f\x60\xa5\xf3\x47\x99\xa6\xfd\x57\x76\x38\x5a\xd8\x57\x94\x62\xed\x78\xff\xba\xc5\x1a\x0c\x69\xbf\x9e\xe9\xb0\x29\x74\xb5\xd2\xea\x40\x4a\x52\xc4\xee\x49\x55\xd1\x94\x70\xd4\xf0\xa2\x76\x13\x7a\x49\x16\x34\x7b\x8a\xd9\x3d\xd4\x9b\x78\x36\xf5\x26\xa2\x14\x36\x87\xc1\xc9\xf7\xb6\x19\x1c\x4e\x73\x5a\xfc\x01\x58\x1c\xa0\x6a\x84\x94\x73\x46\xff\x6a\x2f\xc3\xa9\xaa\x10\x4f\x70\x46\xae\x7e\x01\xa9\x43\x0b\xfd\x6c\x57\x23\xb2\x3f\x3a\xd8\xc7\x01\x5b\xd7\x18\x2a\xf2\xcf\xcd\x41\x40\x05\x4b\xc7\x2d\xfc\x07\x44\x64\x67\x9f\x6b\x40\xd7\x5d\xaf\xd9\x5b\x2c\xc8\x03\x86\xdf\xb2\x37\x76\x48\xdd\xda\x05\xcd\x66\x38\xbb\xbe\x42\x3f\x69\x9a\xbb\xc3\x31\x57\x4c\x68\x09\xf0\x82\xe5\x98\x46\x94\x4c\x73\x00\xe7\xdd\xce\x5d\x37\x04\x91\xa6\x28\xef\x2f\xff\x9a\x36\x68\x81\xb5\xd4\xfa\x8c\x36\x76\x40\xbe\x75\x86\xba\x7f\x01\xa5\x95\x4f\x1c\xf3\x95\x0d\xed\x6e\x2b\x52\x99\x55\x0d\x9a\xe2\xda\x80\x01\xc4\x49\xc1\xa9\xf2\xb5\x39\x21\x23\xa6\x0c\xb1\xae\x68\xad\xe3\xb2\xb5\x10\xe3\x3f\x99\x6f\xd9\x2d\x2d\xec\xc9\x66\xc6\x99\xbc\xc2\xd4\x8b\x6b\x77\x90\x3a\x9e\x8d\xd4\xc1\x79\x76\x59\xe0\x65\xe6\x77\x4c\x76\x2f\x8b\x0c\x2b\xbf\x3c\x51\xef\x9d\xa6\x94\xcb\xff\x47\x8b\xc5\x5b\xe5\x30\xa8\x0b\x2b\x39\x07\x41\x53\x0d\x8b\x6c\xf2\xce\xf4\xa1\xde\xfd\xac\x69\xfe\x14\x85\x50\x7c\x55\xa4\xb2\xdb\x84\x77\x22\xcb\x0c\x25\x0d\xc2\x0c\xf1\x61\x99\x38\x9c\x25\x41\x37\x6b\x9a\xdc\x5d\x3b\x7e\x01\x56\xc9\xdf\x0a\xe7\xa7\xe6\x22\xf3\x4b\x68\x7c\xeb\xbd\x5d\x19\xaf\x19\xd6\x75\x8c\x4a\x7d\xe3\xdc\x20\x0b\x33\x2d\x92\x00\xc2\x9c\xb3\x84\xb6\x4e\xa3\x60\x29\xf3\xf6\xfa\x49\xd5\xf5\xb3\xfb\x70\x94\x34\x31\xf9\x5e\xb4\x8b\x6c\x6b\xf6\x73\xe7\xae\x0b\x29\xc8\x66\x46\x76\x1e\x82\xde\x5a\x51\xd5\x65\x6e\x3a\xf5\x64\xac\xd7\x46\xfb\x36\x1a\xff\x05\xc0\xb3\x65\x17\xd5\xca\x7f\xa6\xe0\xd7\xf6\xb2\x36\x75\x65\x8c\x9b\xff\xd1\xbd\x20\x46\x2a\x1b\xfd\x7b\x73\xa7\x8e\x3f\xe1\x93\x57\x01\xba\x81\x9c\x6c\x1f\x0a\x4b\x70\x98\xfe\x7c\xc1\x21\x83\x44\xcf\x67\xac\x7f\x33\x9e\x13\xc5\x5b\x4a\x56\xd6\x99\x2f\x3e\x6b\xab\x02\xd0\x0e\x86\x76\xfd\xfd\x5d\x3c\x2c\x53\xe0\xe2\x3d\x99\x30\x5b\xc8\xf1\x21\x77\x88\x45\x95\x87\x21\xc7\x43\x82\xb5\x04\x43\xdf\x7e\xff\xdd\x77\x43\x38\xf3\xe3\x58\xf2\x61\xaf\xcd\x30\xce\xfc\x38\x96\xbc\x97\xa2\x0f\x67\xde\x97\xc5\xe2\x25\xea\xc5\x99\x0f\x66\xad\xec\x17\x4c\x3e\x68\x7c\x8e\x4d\x56\x85\xb0\x4a\x68\x8a\x2a\x3c\x6d\x33\x90\x98\xea\x4b\x39\x0d\x09\x0d\x9d\x74\xd4\xfd\x25\x9a\x46\xa4\x97\xba\x89\xa3\x01\x91\x20\x9c\x54\xba\x9d\x2e\x1a\x54\x59\xc7\x52\x49\x03\x49\xa2\x80\x83\xd5\x24\x90\xee\x07\x90\x7b\x2a\x0c\x77\x6c\xb1\x83\x70\xf2\x27\x30\xa9\x13\x1e\xee\x0f\x4a\xe0\xdc\x39\x6d\x33\x22\x12\x13\x96\xa2\x19\x73\x1d\xb5\xc9\x96\x41\xb2\x68\x2c\x1d\xd3\x9f\x62\x09\xa0\xeb\xec\x71\x48\x62\x25\x80\x62\x74\x11\x13\x00\x4d\x60\x12\x65\xe7\x8a\x81\x4c\x6a\x64\xea\x64\x5c\xc2\x64\x4c\x44\x34\x2c\x1a\x1a\x9e\x12\x69\x82\xb2\x80\x1b\xc0\x9f\x08\xd9\x4d\x6e\x04\x90\x1c\x4b\x7f\x1c\x4d\x69\x04\x76\x33\x2a\xe9\x11\x7c\xb4\x61\x01\xd6\xe1\xb4\x46\x40\xf8\xf5\xde\x22\xaa\x61\xa9\x70\x71\x09\x70\x2d\x9a\xb0\x5f\xe6\x84\xe4\xbd\xc5\xd8\x36\xe3\x4a\xa3\xba\x86\x3a\xa3\xe4\xd8\x9d\xa6\xe3\xc2\x1a\x64\xd3\x90\x2c\x5e\x8f\xf8\xa1\xf7\xa7\xe6\x20\xd8\x36\x0c\xeb\x93\xfa\xab\x0c\x56\x89\xdc\x18\x59\x7e\x59\xf4\xfc\x4d\xcd\xcf\x13\xcb\x06\x1e\xdc\x4c\xa3\xed\x0b\x17\xde\x3c\xf8\x43\x7c\x83\x6d\xfd\x21\xbc\x83\x85\x66\x4d\x24\x5a\x1e\x5b\xb1\x0a\xb1\x25\x04\x91\x5a\x31\xce\xe6\x30\x9d\x5d\x5f\xa1\xa4\x22\x2a\xd5\x11\x67\x7c\x8e\x06\x80\x2e\x52\x80\xb5\x56\x49\x75\xad\x4e\x85\x85\x20\x79\x29\xfc\x9b\xe3\xe0\x0e\x79\x36\xee\x90\x09\x76\xd8\x5f\x9b\x57\x9a\xfa\xf6\x75\x8e\x8b\x99\x3c\x89\xca\x31\xe2\xd8\x9a\xfd\x86\xd8\x1e\x67\x9f\x23\x1b\xd0\xae\x26\x57\x99\x94\x54\x2e\x8c\xae\x85\x09\x81\xeb\xc1\x90\xa2\xeb\xd1\x26\x6a\x45\x6f\xc2\xfc\x68\xa0\xf2\xde\xe9\x4d\x58\x09\x9a\x1d\x73\xdb\x19\x35\xb5\x99\x2b\x7b\x50\x1d\x24\x74\xd7\x76\x10\xe2\x00\x5a\xe4\xb8\x56\x69\x5f\x2d\x85\xae\xd6\xa4\xd5\x26\x9c\x65\xec\x81\x07\xbb\xe9\xde\xae\x72\xdd\xe5\xf8\x4c\x1e\xeb\x92\xa0\x9c\x56\x15\xab\x8c\x49\xdd\x1d\x86\x97\xa6\xe4\x69\x42\x6a\x6d\xa4\xd2\x6a\x48\x65\x3c\xb6\x0b\x22\xdc\xed\x27\x95\xf9\x42\x67\x28\x84\x32\xa3\x6c\x60\x9a\x2e\xce\x60\xbc\x6f\x4b\xb2\xc6\xf7\x94\xd5\x95\xa6\x2c\x18\x7a\x61\xfe\xa4\xae\xba\x0d\xf3\xc3\x94\x5a\x93\xa7\xae\x43\xdf\xcc\x26\x1f\x58\xb3\x66\x37\x04\x2c\xad\x52\xc1\x4c\x99\xb5\xfb\xcc\xc8\x67\xca\xc5\x16\xb9\x66\xb9\x2c\xec\xef\x23\x8b\x71\xf7\xbc\x94\xf7\x69\x44\x15\xe8\x5f\xdd\x37\xba\xe2\xdc\xfd\x42\xfd\xe9\x8f\x5a\x03\xfa\x20\xd0\x81\xfc\xac\x19\x4d\x36\x11\x55\x8f\x5b\xff\xaa\x7c\x11\xfd\x88\x39\x49\xd1\x3b\x5c\xe0\x5b\xad\x7f\x1f\x2f\xae\x7f\x7c\xf7\x52\x2e\x68\x10\x36\xe9\xea\x62\xc8\x41\x6b\xbf\xa0\x3f\xf0\x7e\xf7\x94\xa6\xde\x58\xa3\x2e\xd0\x3d\x8e\x76\x0f\xc9\x59\xf6\xa6\x09\x15\x5f\xd8\xce\x66\xef\xd7\xc1\xef\x1d\xed\xfb\x3c\x7d\xf4\xea\xf6\x6d\xd7\xa7\x31\x37\xef\x9f\xb9\xc0\x7c\xfd\x81\xc8\x85\x26\x0b\xc2\xc7\x0a\x7f\x0c\x4b\xa0\xea\x65\x54\x75\xde\x96\x5a\x05\xc7\x56\xbe\x51\x37\x2f\x1b\xf6\xe5\x4a\x36\x97\x2e\x4d\xc7\xe6\x52\x94\x6d\x45\xd7\x5b\x2a\xd6\xf5\x72\x9e\xb0\xfc\x54\x7d\x84\xa4\xfa\xff\x4f\x97\x19\x5b\x9e\x7e\xfb\x57\xbc\xfa\xf7\xf4\x2f\xaf\xfe\xba\x5c\xfe\xfb\x92\xfc\xf0\xc3\x5f\x5f\xfd\xf0\xfd\x5f\xbf\xff\x77\xbc\x5a\x7e\xfb\xdd\xb7\xdf\xfd\xfb\x7f\xfc\xf0\x2a\xfd\x7e\xf5\xd7\x3f\x7f\x7f\x8a\x4b\xca\xcd\x8b\xf7\xaf\x96\x44\xe0\x57\xa7\xa6\xb7\x7f\xe7\xba\xbb\x7f\x57\xa5\x7c\xe7\xb7\xec\x9b\xb7\x7f\xfe\xf3\x90\x50\x1a\x62\xb0\x3e\xf9\xfd\x79\xca\xed\x7b\x95\xd7\x03\x3b\xdc\xb3\xf7\x46\xff\x64\xa2\x7f\xfb\x93\xda\xab\x3d\xae\x9e\x91\x62\xa1\x94\xe7\xec\x3b\x0a\xe2\x68\x89\xb9\x9c\x51\x2e\xf0\x36\x0c\x8f\x6f\x35\xf1\x2d\x19\xce\x42\xf6\x8e\x11\x57\xb7\x83\x3b\xa3\x97\xf3\x53\xdd\xd6\xb9\x92\x0e\x8c\xa3\x8d\x14\xa2\xda\x28\x88\x0b\x0d\xa9\x92\xb2\xe4\x4e\x4a\x82\x39\xbe\x25\x47\x47\x1c\x9d\xbf\x1b\x2e\x48\x6f\x07\x4c\x87\xe3\xfa\xe6\xe8\x57\x5c\x51\xa5\xa1\x38\x01\x86\xff\x76\xfc\xeb\xd9\x87\xbf\xbf\x3f\x7b\x77\xf9\x72\x90\xa8\x14\xf2\xc8\xe7\x12\x2b\xcc\xa5\xba\xc9\x86\x6b\x10\xe0\x65\x87\x48\x71\x4f\x2b\x56\xe4\xad\x4b\xef\xde\x7c\x69\x90\x64\xa2\xca\x21\x69\x27\x1a\x67\xd9\xbd\xf5\x51\x36\xbd\xb2\x96\x41\x5a\x94\xb5\xb0\xd6\x63\x23\xf4\x0d\x52\xac\x8b\x64\x8d\x8b\x5b\x5b\x61\xc1\x19\x13\xe2\x9b\x42\xe0\xcf\xd6\xc1\x40\x78\x82\x4b\x7b\x2f\x62\x94\xb2\x7a\xac\x93\xff\xf6\x6f\x27\x88\x92\xd7\xe8\xdf\x1c\x62\x73\x74\x69\xde\x77\x26\x50\xfb\x3c\xc9\x3d\xa9\xd4\x07\xcc\x54\x0d\x8b\x29\x15\xb9\xc5\x55\x9a\x99\x00\x62\xd7\xa2\x6b\x27\x0c\x29\x91\x97\x23\x56\xc9\xb5\x9b\xa3\xf3\x66\xae\xea\x32\x1d\x17\x76\x61\x9c\x42\x60\x7e\xc7\x4f\x69\x21\x8f\xd5\x4c\x1e\x87\x19\x2e\xa5\x80\xa4\xb4\x8b\x53\x6d\x1d\x9e\x29\x0c\x80\x22\x9d\x61\xb3\x2d\x67\xcd\x52\x9f\x7e\x53\xd5\x45\x21\x19\x0b\x6e\x9e\xa2\xc5\x0c\xcf\xf8\x9a\x8c\x80\xfd\x5c\x48\xd1\x37\x91\xfd\x7e\xad\xac\x35\x65\xc5\x72\x39\xe8\x9a\xcf\xc9\x67\x25\xf9\x55\x73\x79\x4a\x86\x58\x88\xc7\xd9\x09\xe2\x2c\xc3\x76\x78\x52\xdc\x87\x8f\xe4\x5b\x53\xee\xcd\xd9\xd8\xcd\x0a\x99\xb4\xf8\xc6\x7c\xdd\x4c\xcf\xf0\xca\x6c\x2f\xa0\x33\x29\xa0\xf9\x21\xc5\x7d\xe4\xf4\x74\x31\xaf\x8a\xfb\x5f\x71\xd5\x51\x42\x8a\xc1\x81\x59\x4f\xfb\x08\x37\x57\xbe\xe2\x73\xff\x60\xc3\x1a\x87\xdf\xa4\xd5\xe9\xb8\x7b\x27\x0e\xf5\xd7\xd5\x39\xce\xff\x7e\x75\x71\xf9\xfe\xe6\xea\xcd\xd5\xe5\x87\x71\x79\x10\x20\x72\x29\x73\x1e\xb0\x83\x47\x01\x7e\xda\xe1\x9d\x1e\x49\xb0\xe5\xaa\x65\x45\xa4\x3e\xce\xad\xa7\x66\x64\x03\x06\x23\x0c\x9a\x3d\xa9\xd4\x47\x5c\x34\x58\x22\xc3\x04\x21\x4c\xdb\x10\x9e\xcc\xba\x3d\x44\xe5\xd9\x98\xc2\xc0\x3d\x24\x2d\x6b\x9f\xc2\xc6\xfd\x3d\x6d\x18\x7c\x14\x33\xf7\xd0\x54\x6c\xde\x35\xec\xbf\x78\xe1\xf1\x68\x43\xb7\xf0\x9b\x8a\x79\x02\x64\xbb\xea\x98\x2e\x85\xa1\x8c\x4e\x23\x47\xed\x88\x9b\xc8\x22\xcf\x38\x1c\x46\x67\x84\x90\x06\xeb\x44\xfe\x4e\xf2\x52\x78\x72\x63\x60\x26\xf1\xc4\x96\x5b\xfd\x99\x6c\x82\x65\x84\x7a\xce\x04\x5b\x37\xe8\x8e\x6c\x74\x04\x6d\x53\xbb\xf5\x59\x84\xbe\xe8\xb2\x22\x7b\x8d\x7c\x81\x21\xe3\x3e\x4f\x45\xa4\x6d\x8f\x80\x75\x0b\xc3\xb9\x8d\x98\x69\x38\xbe\x6d\x54\x45\x61\x20\xbc\xed\x14\x68\x5b\x38\xac\xed\xbe\xc2\x2c\x80\x31\x14\xb0\x1a\xae\x63\x45\xc1\x3a\xb1\x9a\xaa\xfe\xaa\xb1\x30\x72\x94\x13\x81\xa5\xcc\x3b\x97\x1b\x2f\xb4\x4b\x3a\x0f\x2b\x4b\xc5\x49\xfb\x9b\x29\xe0\xda\xfe\xe0\x96\x77\x0d\x10\xe6\x25\x49\xe6\x05\xfb\xff\xd9\x7b\xf7\xe6\xc6\x71\x24\x5f\xf4\xab\x20\x3c\x1b\xc7\x55\x11\x96\x5c\x3d\x33\x3b\x3b\xb7\x77\x76\x4e\x78\xaa\xdc\xbd\x8e\xa9\x87\x6f\xd9\xdd\x7d\xf6\xc6\x8d\xe8\x80\x48\x48\xc2\x9a\x22\x38\x04\x68\x97\xe6\xdc\xf3\xdd\x6f\x20\x13\xe0\x43\x12\x89\x04\x2d\x55\x55\x77\x93\xfb\xc7\x4e\xbb\xc4\x24\x1e\x89\x44\x3e\x7e\x99\x99\x82\x03\xff\x02\xff\xb3\x5b\xb1\xd7\xfd\x83\xe1\xa6\xd2\xf3\xb5\xd2\xe6\xe6\x36\x48\x14\x7f\x5c\xa8\xf4\xe6\x36\x80\x86\xa2\x4b\xb3\x98\x6e\xaf\xb4\xfe\xae\x9d\x7e\xad\x04\xbe\x3e\xd4\xd1\x75\x44\x87\xd6\x88\x73\x1c\xd1\x85\x95\xda\x77\x75\xaf\x8f\x2a\x61\xe2\x51\x9d\x56\x8f\x8e\x97\xa2\xf5\x4f\x25\x1e\xe7\xb8\xce\x7f\xc4\x5e\x7f\xbb\xfd\xfb\x02\x6b\x34\xd8\xdd\x6f\xa8\x63\x5f\x80\xae\xfb\xb1\x28\xd6\x62\x23\x4a\x9e\xcd\x9c\x4b\xbc\xdb\xe9\xef\x62\xb7\x75\x5f\xe8\xdc\xb5\x9b\xfd\xed\xd1\x1e\xdb\xf7\x8f\x7e\xee\x23\x7b\xfb\xd1\xba\xf9\x75\xba\xf3\x11\x4e\xc0\xc8\xfe\x7d\x11\x47\x9d\xdc\xa3\x8f\xda\x95\x6f\xa7\xcb\x1e\x61\x92\x07\xfa\xf0\x51\xfb\xea\x45\x4c\x94\xde\x3b\x8f\xd0\x2d\x8f\xdc\xfd\xee\xe8\x52\x89\xd4\xd3\x8e\x28\x94\x10\x41\x74\x0c\x1b\x62\x1f\xc9\x48\x05\x32\x7e\x0e\xb3\xa2\x0b\xb7\x6c\xae\xa4\x65\xa9\x36\x73\x46\x6d\x96\xeb\xc1\xeb\x32\xf5\x94\x1e\xc4\x60\x95\x03\x7c\x26\x43\xe5\xd7\x6d\xa8\xec\x61\x90\x09\xf3\xf9\x95\x58\x29\xe1\x7a\x9b\x83\xa3\x99\x01\xc3\x0f\x38\xb6\x03\xe1\xda\xc3\x8e\xed\xc6\x75\x7c\xe8\xab\x21\x71\xe3\xbd\xcd\x7d\xeb\x47\x11\x57\x7d\xe1\x2e\xff\x3c\x2f\xec\x35\xb8\x6d\xaf\xdf\xbd\x19\x15\xfe\x1a\x24\xda\xe7\xca\xa5\x84\xc1\x06\x09\x77\xbc\xad\x64\x9f\xea\x20\xc9\x43\xa1\xb2\xb0\x57\x75\x90\xe4\x50\xc8\x6c\xd8\xaf\x1a\x38\xa9\xa1\xd0\xd9\x61\xcf\xea\xf0\xb1\x8d\x0a\xa1\xc5\xd6\x51\xfc\xdc\xa1\xb4\xaf\xa7\x08\x63\x4f\xb4\xcc\x3f\x9d\x13\x1d\x11\x34\x1b\xe6\xbb\x3a\xc6\x44\x8d\x7e\xe2\x13\x9b\x1c\x49\x0e\x8c\x05\xae\xa9\x56\x3f\xd3\x60\x80\xac\x79\x87\xaa\xfd\x8d\xd0\x8d\x68\x81\x33\xaa\xe6\x47\x0b\xad\xf9\x27\x42\x17\x09\x84\xda\x0e\x4e\x8d\x12\x72\x23\x4c\xec\x80\x24\x1f\x0a\xbd\x11\x28\xee\x06\xe7\x68\x21\xb8\x18\xc2\x73\xda\xb5\x41\xb2\x3b\x09\x38\x8b\xd6\xe5\x41\xd1\x7d\x8f\x84\xba\xe8\x3e\xc7\x0d\xde\xf9\x27\x32\x88\x47\x62\xa7\xce\x85\x43\x0e\xe6\xf9\x27\xf6\xd0\x0c\x07\xf7\xfc\x13\x1f\xe4\x23\xb1\x23\x14\x18\x78\x5e\xb0\xcf\x3f\x71\x4d\xe4\xa2\x82\x7f\x87\x17\x61\x74\x10\x70\xdc\x88\x59\x6c\x43\xe3\xe7\x06\x07\xfd\x33\xa2\x5d\x28\xbd\x8d\xe6\xde\x40\x8f\xd5\x4a\x93\x7d\xa9\x76\x9a\x2c\xca\x7a\x8f\x20\x4a\xcf\x69\x6a\x9e\x11\x7b\x17\xd7\x5e\x93\x45\x85\x21\x23\x66\xdb\xb8\x02\x46\x75\xda\x64\xd1\xdd\x36\x59\x74\x9b\x5b\x7a\x93\xdb\xc8\xae\xb5\xb4\xb0\xa5\x7f\xe2\xc3\x97\xc4\x15\xec\x06\x39\x49\x61\xcc\x58\xca\xed\x60\x27\x35\x9c\x49\xfc\x46\x37\xe8\x19\x13\xd6\xf4\x4f\xbc\x7c\x8e\x09\x73\xfa\x27\x36\xdc\x19\x71\x86\xa4\x3e\x56\xd8\xd3\x3f\x23\xe4\x49\x44\x18\xd4\x3f\x11\xe1\xd0\x88\xd5\xe8\x96\x1d\x8a\x0a\x8b\xd6\x24\x62\xa7\x1f\x2b\x50\x68\xe1\xd2\xee\x70\xc8\x62\x25\x2e\x7c\xea\x9f\xf8\x30\x2a\xf5\xa2\xc9\xb3\x6d\x44\x38\x95\x48\xb5\x1b\x74\xa5\x86\x55\x89\xc4\x77\x82\xaf\xa1\xf0\x2a\x55\x6a\x8c\x0a\xc2\xfa\x27\x5e\x4a\x45\x06\x65\xfd\x43\x0f\xce\x46\x1c\x4a\x1f\xc6\x1d\x1b\xa4\xf5\xcf\x08\xc1\x44\x0e\xda\xd6\x2f\xd0\x83\xb7\x91\x62\xc9\x85\x79\x9f\x13\xc4\xad\xc9\x8d\x69\xee\x4f\x0d\xea\xfa\xe7\x98\xc1\xdd\xd1\x03\x8f\x95\xad\xa4\xa0\x6f\x77\x34\x64\xd1\x4a\x0f\x02\xfb\x27\x2a\x18\x4c\x5c\xc4\x98\x90\x71\xfd\xce\x17\x30\x42\x7b\x42\xc9\x11\x87\xa6\x15\x74\x1e\x1b\x52\xf6\xcf\x64\xde\x4e\xe6\xed\xe0\x43\x0f\x5e\xc7\xa8\xe6\xbf\x4d\xdb\x96\xfc\x63\x6a\x08\xbe\x37\xf8\x1d\xf9\x45\x5a\x13\xb1\x92\xde\x3c\xf6\x56\x95\x86\xe5\xd5\x66\x21\xca\xc6\x51\xea\xe2\xe2\x4c\xcb\x54\xb0\x84\x0f\xc6\x75\x8e\x5b\xf1\xb6\xd6\x2c\xe8\x31\xf5\xd7\x6a\x53\x54\x46\xb0\x8f\xb5\x8a\x5e\xeb\x78\x8b\x6d\x33\x97\x40\xca\x9a\x7f\x06\x03\xa7\x24\x51\xe6\xeb\xaa\x63\x54\x74\x03\x29\xfe\xb3\x04\x07\x39\xab\xe7\xd7\x0a\x8b\x1e\xa3\x75\x15\xda\x0f\x41\x78\x73\x9a\x4a\x14\x2b\xb7\x11\xd7\x69\x0c\xc0\x70\x27\xa3\x10\x4c\x25\xfc\xe3\xc2\xa9\xa0\x1b\xfe\x49\x6e\xaa\x0d\xe3\xae\xa5\x6a\x58\x07\x75\x6b\xd7\xb2\xc1\xa0\x4c\xcd\x97\xde\x1a\x16\x2b\x27\xac\xf5\xf5\x95\xed\xd0\x47\x6f\xc1\xee\xec\x91\xcc\x5b\x7b\x14\xfc\xbc\x5a\x1e\xd8\x23\x7f\x08\x21\x84\x57\x7f\x47\x6a\xa6\x36\xd2\x84\xea\x2f\x33\x57\x10\x88\x37\xc7\xf6\x82\x49\xd3\xb1\x36\x1c\x77\x01\xf2\x85\x07\x5b\xcd\x31\x8c\x80\xfa\xca\x28\xad\x82\x67\xa0\x1b\x3c\x49\xed\x4a\x0b\x31\xb9\x29\xb0\x02\x28\x70\xc9\x8c\x7a\xe3\xb9\x20\xd1\x2f\x84\x23\x69\x6d\x53\x44\x52\x95\xd2\x6c\xad\x0d\x2d\x3e\xd1\xef\x94\xf3\x3b\xf7\x62\xab\x88\x2e\xb8\x76\x7d\x75\xff\xb2\xc2\xbe\x29\x47\x6d\x9f\x5b\x40\x65\x95\x4b\x3f\x68\x58\x33\xf1\xc9\x5c\x1e\xe1\x1b\x08\x7c\xa9\x1b\x66\xcc\x0a\x95\xb6\xb6\x64\xef\x8b\xc7\x10\xe8\x20\xe2\x6e\x4b\xf9\x28\x33\xb1\x12\xd7\x3a\xe1\x19\xf0\x48\x5c\x69\xbc\xab\x1e\x2a\x70\xac\x4a\x95\x69\x12\xd0\x08\xc6\x63\x47\x0e\xcd\xd2\x13\x9e\xb3\x15\x97\x39\xdb\xd8\xb5\x2b\x3c\x71\xa8\x94\x9c\x83\xc2\x58\xf0\x92\x12\xe7\x77\x04\x5d\xc5\x66\xab\x23\xb2\x14\x9a\x0d\x64\xdb\x66\x7c\x12\x4d\x90\x5c\xfd\x9c\x8b\xa7\x9f\xed\xd7\xc2\xe7\x7c\x99\xf1\x26\xa4\xaf\x85\xef\xdb\xdd\x82\x27\xd4\x9f\xee\x5b\xa0\xe0\x37\xa4\x66\xa6\xac\x04\xe3\xd9\x13\xdf\xc2\x32\xee\x7e\x43\xea\x6f\xd9\x37\x2f\x81\xd7\xb9\x66\xf5\x37\xc2\x92\xe4\xf7\x2f\xd9\x9a\x6b\xf6\xfa\xea\xf6\xe7\xbb\xff\xba\xfb\xf9\xea\xcd\xbb\x9b\xf7\xb4\x63\x4f\xd1\xb3\x13\x5e\xf0\x85\xcc\x24\xe5\x66\xd9\xb3\x8a\xdb\x2f\x83\xb8\x4c\xd3\xcb\xb4\x54\x05\xce\xdf\xc1\xbb\x08\x17\xba\x5b\xa3\x9d\x76\xab\xed\x32\x6d\xb0\x6d\xcb\xce\x07\x83\x74\x57\x25\xcf\x5b\x65\xb5\x9a\xad\x28\xab\x1c\xba\xaf\x07\x28\xc4\xf8\x18\x78\x4a\xb2\x50\x3a\x2b\x78\x95\xa6\x22\x8d\x9b\x12\x09\xe1\x75\xf0\x63\xaf\xfd\x67\xb6\x0d\xda\x8b\xdd\x7e\xb8\xbb\xf9\x5f\xb1\x23\x60\x8e\xbf\x22\xcc\x2c\xb2\xa9\x4b\xb1\x67\xea\xe9\x95\xaa\x88\x5e\xf3\x8f\x62\xa3\x1e\xa7\x55\x3f\xf4\x73\xca\xaa\x93\x15\xdc\xfa\x1e\x08\x1e\x8b\xee\xf6\x54\x79\x5b\x64\xe6\x2d\x3a\x50\xf0\x7e\xce\x6e\x51\x54\x13\xd6\xac\xfb\x76\x23\x64\x10\xc7\xac\x35\x56\xbd\xcd\xb6\xcc\x6a\xa6\x8f\x3c\xa3\xdc\x51\x46\xb1\x52\xa9\xfa\x06\x59\x2b\x6d\x0e\xb5\x88\x3e\x9a\x74\xb6\x17\x13\x54\x1f\x8e\x5a\xc5\xfa\x2d\x96\x8a\x5c\x19\xa7\xc5\x43\xb1\x41\x05\x8d\x9a\x13\x46\xd3\xe4\x5b\xf5\x85\x3b\x12\x54\x3b\x74\x7a\xd3\x92\xd4\xad\xc1\xad\xff\x72\x90\x34\xf6\x37\xa9\xb4\x1b\xdc\x9e\x70\x6e\x74\x7b\xfb\xf5\x52\xf0\x94\x90\xe5\x88\xbd\x08\xb4\xeb\x47\xa2\x1f\x7c\x9f\x16\xa7\x53\x38\x1b\x04\xbf\x58\x0f\xf5\x9e\x72\xaa\x96\x82\x9b\xaa\x14\xa8\x4b\x60\xf9\x44\x6c\x05\x18\x84\x06\x46\x64\x81\x61\xfd\xe9\x8f\x4a\x99\xa6\xc6\x64\xd4\xc6\xff\x54\xbb\xf7\xa4\x6e\x2d\xe9\x9a\x63\xe4\x93\xa7\x33\xd2\x22\x02\x8b\x37\x25\x2c\x3b\xbd\x67\x8f\xcc\xe0\x65\x95\x5f\x61\x3f\x8c\x68\xe5\xe3\xfb\x9b\x37\x70\x1e\xab\x7c\x27\x75\x62\x2f\xb4\x4b\x57\x3d\x7f\xb0\xfc\xb8\xc3\x81\xae\x40\xa6\x30\xd8\xfd\x81\x67\x5a\x85\x7a\xfb\x30\xb0\x96\x20\x0c\x72\xab\xd2\xbb\xae\xdd\x84\xd5\x7b\xdd\x3f\x2f\x94\x59\xb3\x9d\x1f\x84\x95\x8d\x3c\x3d\x40\xf7\xa2\xe9\x7e\xd4\x02\x0c\xc8\x3c\x9a\xbc\xe1\x0f\x42\xb3\xa2\x14\x89\x48\x45\x3e\x5c\x45\x99\x75\x5d\x7e\x7f\xfa\x23\x89\x33\x28\x7d\x45\x80\x33\xde\xab\xdc\x1e\x87\x28\xde\x68\xba\x5a\x82\x23\xa0\x2b\x5d\xc0\x71\x8d\x3a\x38\xc1\xc6\xc9\x55\x3e\x83\xc3\x50\xf9\x2e\xf7\x56\xc9\xc7\x85\xfe\x3b\x56\xa1\x45\xc3\x02\xe2\x38\x43\xfd\xe9\xea\xf9\xaf\x05\x66\xf3\x30\x6e\x6a\x46\x83\xbe\xa2\xda\x8a\x17\x74\x5d\x18\x96\x2a\x81\x28\xd2\xb2\x0a\xdb\x1e\x5c\xb3\x1f\x6e\xde\xb0\x57\xec\x85\x1d\xeb\x4b\x60\x8f\x25\x97\x19\x84\xa8\xa0\x4f\xc9\x8e\x25\x12\xf6\xb1\xb9\x21\xcc\x5d\x13\x31\xcc\x71\x83\xa3\x7f\xc1\x72\xc5\x74\x95\xac\xfd\x9c\x7d\x03\xdc\x20\xcd\x85\x60\x85\x28\x2d\xb3\x80\xab\xae\x39\x4a\x81\xa3\x42\x3d\x69\x87\x8e\x52\xdf\x51\x21\xed\x53\xf8\x28\x45\x1f\x95\x48\xc1\xf8\x43\xa0\x3d\x3e\x3b\x24\x17\x7f\x38\x81\x5c\x6c\xab\x38\xd0\x58\xb9\xb3\x2a\xc8\xd0\x1e\x1d\x17\x66\xae\x6e\xc1\xe1\xdf\x28\x2b\x9c\x46\x6a\x6a\xf1\x56\xe6\xd5\x27\x6c\xde\x15\x6f\xd0\xdf\x5d\xc3\xeb\x2c\xf1\x93\x82\x4d\x81\xb4\x2e\x2c\x1b\x4d\x89\xea\xb7\x92\x97\x76\x7b\x10\x1e\x56\xf5\x48\xe2\x83\x67\x99\xb2\x62\xdd\x6a\x32\x3c\x4f\xd5\x66\x6f\xb0\x00\xc1\xe1\xc9\xba\x3d\x00\xcb\x5c\x04\xd2\x14\xe6\x6b\x33\x57\x90\x24\x91\xf9\x1a\xe6\x0a\xb3\xf6\x31\x99\x2f\xc6\xb5\x91\x89\x47\x41\x8a\x3b\x77\x33\xe1\xec\x5b\x56\x61\xf4\xbb\x04\x64\x18\x00\x6e\x5d\x13\x35\xe0\x2a\x9a\xed\xeb\xbc\x41\xc4\xa0\x9d\x7b\x27\xc6\x08\x2e\x55\x46\xc2\x46\x74\xad\x55\x95\x41\xba\x07\xaf\x27\x69\xc9\x7c\xb5\x73\x34\x81\x2a\xf7\x07\xe7\x68\xad\xa3\xee\x1c\xc1\x8e\xfc\x5a\xe7\x58\x11\x6e\xcc\xbd\x39\xda\x6b\xb6\x3b\x47\xb8\xe3\xbe\xce\x39\x92\x5d\x30\x4f\x32\x4f\xd5\x93\x1e\x7b\x15\xfc\x84\xaf\x7b\xb9\x93\xf8\xb6\x48\xba\x75\x1d\x50\x84\x76\xc7\x6b\x70\xe8\x3e\xf0\x41\xa1\x65\xa9\x36\xa4\xfb\x65\x5f\x8e\xee\x34\x2f\xf9\x75\x99\x57\x31\xb2\x7a\xb5\xd1\xfc\x75\xdd\xd1\xe9\xae\x10\x49\xf4\x61\xf8\xfe\xdd\xdd\x55\x97\x04\x00\xf2\xa1\xaa\xbf\x5d\x01\xfb\xef\xa4\x73\xc0\xd3\x8d\xc4\x92\xf7\x4f\x62\xb1\x56\xea\x81\xbd\x38\x50\xbe\xbe\x09\xaf\xcd\xb4\x5c\xe9\x4b\xc7\xb5\x33\x3b\x13\x1a\x12\x59\xe6\x99\xcc\x5b\x6e\x24\x48\x63\x76\xaa\xae\x1d\x6c\xab\xc5\x15\x6c\x1c\x89\x68\xce\x37\x4d\xe4\x60\x7f\x49\x00\x0e\x07\xc0\x31\x74\x2d\x91\x68\x62\x1a\x00\xb4\xd5\x29\xd6\x7c\x86\x17\xa2\x65\x36\xa9\x11\x55\xbe\x56\xb9\x72\x38\x15\x2d\xca\x47\x51\x12\x05\x8e\x95\x50\xe8\x8d\x82\xe1\xba\x93\x0b\x73\x6f\xfb\xad\x8e\x2e\x6c\xf7\xb9\x8d\x0a\xcd\x0e\x70\x5c\xbb\xb1\x54\x10\x2a\xe5\x9f\x81\x2d\xaf\x5b\x26\xde\x63\xdb\x5a\x91\xd1\x20\x6b\xbf\xa2\xbd\xaa\xed\xc9\x51\x5b\x04\x76\xa5\x7b\xd9\xca\x3c\x7f\x39\x34\x76\x26\x69\xf6\x03\xb6\xe8\xbe\xad\x19\x73\xd9\x86\x6c\xd2\x88\x26\x37\xcd\x43\xb4\x4b\xf1\xb6\x21\x8a\xaa\xe3\x9a\xa6\xec\x74\xe6\x29\x3e\xcd\x79\x39\x78\x16\xcc\xee\x71\x20\x11\x6d\x8e\x4c\xdf\x71\xf8\xd8\x66\x56\x9a\x6c\x3d\xdd\xd9\x39\x1e\x84\x26\xf8\x13\x6b\xe1\x97\x8f\xfd\x28\xdf\x2e\x9a\xe3\xc6\xfd\x9a\x71\xe3\xc2\x29\x1b\x61\x4a\x99\x68\x8f\xab\xb1\x7c\x9b\x94\x50\x28\xa0\x55\x64\xbf\x77\x0e\x5e\x89\x2a\x5d\x8c\x14\x8a\x79\x2c\x2b\x58\xd7\x52\x64\x82\x6b\x31\xb2\xcd\x09\x43\x5d\xba\x57\x81\x89\x83\xb9\x11\xf6\x6e\x07\x78\x08\x1f\x87\xb8\xdf\x83\xd8\xba\xd3\x52\x70\xe9\x19\xd0\x57\x4d\x0a\x43\xfa\x6f\xeb\x02\x53\x75\x07\x15\xf6\x28\x39\xbb\xc3\x7c\x4f\xdf\x76\x05\x67\x3b\xff\x3c\xab\x3e\xc0\x4f\x79\xa8\x71\xe1\x3e\xc8\xdf\xb7\x24\x6a\x4d\x75\xee\xa7\xe7\xdb\xc8\xe8\x61\x8f\x4d\xd3\x95\x0e\xf3\x40\x64\x2b\xb9\xa3\xb3\x26\xbb\x73\xef\xa5\x78\x4c\x4e\x1c\x82\x43\x77\x97\x83\x86\x85\x26\x6d\x72\xa5\x9b\x57\xe7\xf6\xff\xf5\x0d\x9f\x02\x9f\x0e\x79\x03\x07\xd9\x62\x10\x51\x7d\x0a\x24\xf5\x17\x40\x50\x1f\x1c\x07\xa5\xcd\x48\x4d\x6c\x4c\xa7\xab\x61\xcc\xf5\xa9\x45\x1c\x09\x5b\xed\x71\xb9\xbd\xdf\xfd\x8a\x30\xd5\xa4\x02\x83\x43\x18\xea\x13\xaf\x38\x09\x2b\x1d\xb7\xe6\x21\x8c\xf4\x1e\x06\xba\x5f\x60\x06\xb0\xd1\x21\xec\x73\xff\x32\x0d\x60\xa2\xbf\x34\xe6\xf9\x59\x7d\xfe\xc2\xd8\xe6\x91\x98\xe6\x50\x92\xdc\x73\xb0\xcc\x40\xbb\x47\x93\x3c\x2e\x86\x79\xb4\x48\xdd\x59\xd8\x31\x82\x35\x16\xfb\x3c\x12\xf3\xdc\x60\x9a\x7b\xb9\x9f\x8a\x75\x3e\x80\x65\xee\xa5\x49\xc2\x38\x1f\xc2\x30\xf7\x9f\xd1\x38\x6c\xf3\x0e\x76\xb9\x5f\x51\xa5\x63\x9a\xa3\x30\xcb\xe1\x98\x38\x05\xa3\x3c\x0e\x9b\xdc\x76\x4e\xf7\x4e\x3c\x02\x93\xbc\x83\x39\xee\x67\x24\x2a\x16\x99\x54\x73\x76\x18\x7b\x3c\x1e\x73\x1c\x5b\x4d\x92\x88\x76\x0d\xe3\x58\x8f\x58\xbd\x33\x84\x12\x7e\x0e\x3a\xf8\x97\xbf\x3e\x41\x25\x2b\x8c\xe3\x1d\x8b\xdf\x1d\xaa\x82\x13\x8b\xdb\x6d\xe1\x72\x07\xa5\x62\x24\x5e\x37\x2c\x99\x82\xf8\xdc\x51\xb8\x5c\xe7\xae\xee\x9d\xca\x08\x3c\x2e\x3a\x88\x86\xec\xd3\x28\x1c\x6e\x83\xb3\xed\x25\x19\x85\xbf\xed\xf8\xef\x86\x94\xcf\x30\xee\x36\x78\x36\xe2\x70\xb6\x23\xf0\xb5\x7b\xf8\xd9\xd0\xcd\x12\xc4\xd5\x86\x19\x31\x8c\xa3\x3d\x05\x7e\x76\x04\x6e\xd6\x79\xd2\xfb\x3d\x6c\xf1\x78\xd9\x68\xf7\xf9\x91\x5d\xe6\x14\x24\x57\x18\xc1\x45\xc1\xbb\x8e\xc2\xb9\xb6\x70\xac\x43\xe7\x9f\x84\x6f\x3d\x88\x5f\x1d\x3a\xaf\x03\xb8\xd6\x21\xdc\x6a\x2f\xc9\xc3\x78\x56\x0a\x5e\xb5\x97\xe4\x0e\x8e\xf5\xf8\x38\xd5\x11\xac\x4b\xc0\x85\x1d\x85\x75\x89\x82\x65\x08\x87\x7a\x0a\xfc\xe9\x28\xdc\x29\x39\xc6\x47\xdf\xd2\x51\x30\x92\x13\xc1\x47\x3e\xaf\x34\xa2\xe1\x48\x47\xe1\x47\x29\xc8\x28\x3a\x6e\x74\x1f\x17\xda\x4b\x94\x8a\x17\xfd\x15\x9f\x77\x8a\x39\x19\xc4\x7b\x8e\xc3\x79\x86\xe0\x62\x64\xcc\x1c\xc9\xf8\x09\xe1\x39\xc7\xe1\x38\x3f\xef\x1c\x42\x78\xcd\x71\x38\xcd\xcf\x3b\x87\x10\x1e\x73\x1c\x0e\xf3\x73\xce\x21\x68\x22\xd3\x70\x96\xa3\xf0\x95\xbb\xf8\xc9\x28\x79\xb9\x8b\xab\xec\xc3\x4d\x0e\xc5\x71\x29\x78\xca\x2f\xad\x7e\x53\x64\x5a\x1c\x2e\x32\x1a\x0f\xd9\x60\x1d\x07\xd9\xf2\x34\x38\xc8\x58\xfc\x23\x62\x1b\x07\x49\x92\x71\x8f\x07\xb1\x41\x83\xa4\x87\x31\x74\x43\xf8\xb8\x41\xb2\x54\xfc\x0f\x49\x68\xc5\xe3\x1a\x23\xf1\x8c\xed\xed\x19\x9c\x56\x18\xc7\x78\x00\x97\x35\xcc\x2d\x5f\xf9\xda\x93\x71\x8a\x91\xf8\xc4\x96\x1d\x32\x38\x99\x30\x2e\xf1\x30\xe6\x30\x70\x44\x03\xb6\x0a\x51\xed\x1c\xfc\xc8\x91\xa5\x34\x3b\x15\xb6\x30\x16\x53\x48\x85\xd8\x52\xb0\x84\xc7\xe4\xd5\xf1\xe1\xe6\xde\x7f\x2a\xb8\xbd\x70\x77\xb9\x3e\xe4\xf5\xb1\x0c\xb5\xe0\x1a\x24\x0c\x52\x80\x95\x74\xf1\xc4\x4c\x94\x87\xaf\xf9\x5c\x19\xa6\xb7\x79\x02\x8d\x99\xb0\xcf\x91\x66\x1b\x9e\x0a\x64\x70\x89\xaa\xc9\xee\x22\xf5\x7b\x0c\x0a\x95\xde\x8b\x4d\x91\x71\xb3\x77\x6e\x77\x4a\x4c\xd6\xbf\x03\x06\xc8\x9b\x22\xda\x1d\x28\x00\xd8\x67\x85\x4a\x11\x9c\xb7\x37\x7c\xa3\x5c\xfd\xe9\x7a\xfe\x3b\x3f\x19\xd2\x0b\x9a\xb5\x09\x47\xfa\x7f\x52\xe5\x43\xa6\x78\x7b\x41\xcf\xcf\x5b\xbd\xf4\x0f\xe1\x1d\x56\xd2\xcc\x1f\xfe\x0c\xd1\xf6\x44\x6d\x36\x55\x2e\xcd\xf6\x12\xde\x97\x8b\xca\xa8\x52\x5f\xa6\x96\xe3\x2f\x79\x21\x67\x89\xca\x1f\xad\x8c\x57\xb9\x9e\x6f\xd2\xdf\x79\xba\xa3\x22\xe5\x4d\x5f\x8a\x2f\x84\x8a\xb9\x6a\x46\xe0\x36\xb7\xca\xb5\x29\xab\xc4\x9e\xba\xb4\x05\xbf\xdc\xf0\x82\x69\x33\x88\x19\x76\xad\xb2\x9a\xea\xdc\x96\xe1\x37\x7c\xeb\x65\x24\x80\xd0\x8c\x28\x2d\xe7\x18\xa5\x32\x6c\xb0\x67\xfa\x20\x11\xac\x6e\x2c\x6e\x4a\x29\x1e\x05\xe3\xe5\x42\x9a\x92\x97\xdb\xd6\x5e\xde\xaf\xc5\x16\x02\x4d\xf6\x74\xfc\xa3\x12\xe5\x16\xe4\xc9\xd0\xad\xda\x80\x6d\x21\xa4\x57\x3e\x8a\x14\x63\xcc\x1b\x95\xca\xe5\x56\xe6\x2b\x77\xd4\xf5\x1e\xab\x1c\x86\x66\xd8\x8b\x65\xb6\xaa\x64\x2a\x2e\x5b\x1b\x7a\x0a\xd4\x8b\x9f\x37\x01\xee\x62\x78\x9e\xf2\x32\x75\x94\xa6\x03\xd0\xb7\x50\xd3\x01\xf8\x25\x1d\x00\xdd\x63\x09\xee\x30\xbf\x33\xd1\xf1\x5a\x72\x1a\x62\x2a\x34\x42\x61\xc5\x9a\x3f\x4a\x55\xb6\x5a\x16\x1d\x56\x2c\x8e\x7b\x4a\xec\xc8\x67\x3c\x4f\x67\xd8\x21\x68\xd4\x61\x59\x2e\xa5\xfd\x22\x2d\xda\xb4\x64\x3b\xfe\x05\x2c\xdb\xaf\x93\xb5\x48\xab\xcc\x61\x69\xb4\x29\xb9\xcc\x7b\x73\x77\x28\xa6\x7a\xae\x52\x71\x15\x18\xd9\xde\xe8\xde\xd4\x18\x4c\xfb\x7a\x3d\xb3\xf6\xe8\xca\x2a\x13\x3a\xd8\xe6\x63\x70\x07\xe9\x93\xc0\xdf\x89\xa5\x28\x4b\x91\xbe\xa9\xac\xf4\xb8\xab\x87\x72\xb3\x02\xbd\x16\xff\x7c\xfd\x49\x24\x55\x74\x25\xcf\x7b\xd7\x65\x29\xad\xbc\x7a\xe7\x3e\x07\x12\xc0\xfd\x03\x28\x4f\x01\xaa\xa0\x47\xd9\x35\x73\xfa\xa4\xe6\x46\xea\x25\x9a\xff\xf5\x2a\x8a\x4f\xf6\x60\x6b\x90\x69\x34\x83\x87\x79\x27\x82\x57\xf5\x2f\xd8\xa2\x82\x08\xa0\x15\x5f\xc9\x5a\x59\xbd\x8d\xe3\x66\xc1\x77\x1f\xa5\xb2\x0a\x61\x78\xb8\x2a\x17\x4c\x95\x08\xc0\xf3\xfd\x5d\x9b\xe1\x21\x0e\xa2\x21\x2b\x35\xdb\x28\x42\x9f\xd7\x7a\xaf\xbc\x95\x6e\x3f\x03\xe2\xd7\xfe\xc7\x0a\xb2\x19\xb4\x61\xba\xda\x40\x8b\x4c\x21\x57\x6b\x43\x68\x1b\x26\xe7\x62\xde\x84\x19\x9a\x61\x6d\x84\x30\x00\xb1\x6e\x77\xcc\x42\xe6\x08\xd2\x74\x20\x0a\x6c\x1b\xfe\xa2\xbe\x1b\x1c\x1a\xfa\xa2\x06\x11\xef\x72\x5d\x90\xf0\xa1\xed\xbe\x60\xc2\x24\xf3\x97\x17\x75\x41\x67\x0e\x6b\xb0\xd8\x32\x69\x84\x55\xd3\x29\x65\x07\xd6\xa5\xaa\x56\xb8\x92\x22\x73\x03\x57\xcb\x16\x73\x60\x7b\xd8\x34\xb5\xc7\xf4\x0c\x17\x37\xdc\x39\xc6\x59\xe1\x76\x38\x35\x60\x32\xb5\xd7\xaa\x49\xd6\xb5\x37\xac\x2c\x85\x2e\x54\x0e\x94\xe1\x5f\xae\x9b\xb9\xfd\x3b\x61\xe4\x48\xf4\x85\x7e\xd9\x30\xc3\x5a\xae\xd6\x9e\x17\xb8\xf3\x01\x5a\x1e\x6b\x78\x28\x94\x7f\x46\x2c\x26\xd9\xc5\xed\xe5\xd8\x50\xb4\xc5\xa9\x2d\xd9\x66\x44\xb9\xf1\x33\x0f\xd2\xc5\xac\x7c\x77\x23\xe3\xbc\xe4\x06\xd1\xe0\x8e\xb3\xd9\x2b\xf6\x02\x58\x57\x9a\x73\xcd\xc2\x05\x7d\xac\xd0\x9e\xa9\xe2\xe5\x9c\x5d\xb1\xbc\xaa\x65\xd1\xf3\x06\x99\xab\x7a\x8c\x6e\x30\x1a\x3d\x24\xdc\x7f\x8d\x70\xaa\x63\x9a\xc4\x14\x75\x33\xdd\x11\x85\x3e\xaf\x90\xfb\x30\x7d\x4c\x95\x30\xd9\x0b\xc6\xb5\x56\x89\xe4\x94\xf2\xe6\xf8\xd4\x5c\xd6\x65\x5d\xdc\x96\x53\xb5\x67\xdd\x3d\x18\x23\x7b\x8c\x5c\xb1\xcc\x75\x3f\xef\x2e\x45\x5b\x60\x91\x29\xc3\xf5\x61\xe9\x9c\x6b\x9f\x4d\x47\x7e\x37\xa2\x58\xeb\xc1\x69\xf4\x0e\x3f\x82\x24\xe6\x8e\xb7\xf8\xc1\x8a\x7d\xe7\x54\xd4\x68\x01\xe8\x0b\xd2\xd1\x6a\x9e\x07\xb1\xbd\x70\x9d\xb4\x99\xdd\x63\x5e\x13\x2e\x45\xe6\x5c\x42\xd4\x9e\x4b\x35\x45\x20\x88\xe3\xa1\xaf\xf0\x18\x2e\xab\xbf\x18\xf7\xc2\x01\xc5\x07\xe3\x81\xd0\x16\xd8\xb9\xc0\x22\x29\xb2\x66\x5f\x9a\x80\x62\xcc\xec\xd9\xb8\x26\x3e\xf8\xf8\xad\x7b\xd6\x3a\x7c\x6c\x75\xec\xb7\x4b\x71\xae\x91\x09\xec\xf9\x5d\xcb\x98\x8e\xb5\xf8\x18\x05\xdc\x0a\xc7\xd7\x71\x03\xfb\x11\x9a\x53\xf9\xe1\xc6\x9c\x5d\x7c\xec\xed\x78\x93\x5f\xb0\xf7\xca\xd8\xff\x77\x0d\x1d\xc2\x2f\xd8\x1b\x25\xf4\x7b\x65\xe0\x3f\x63\x17\x9d\xb1\xef\x0d\x9e\x81\xb7\xd1\xef\x8e\xde\x30\x5c\x8f\x67\x6d\xd7\x55\x8e\x30\x6c\xbb\xbc\xae\xc7\x7c\xfc\x99\xc3\xe7\x66\xe9\xa2\xbb\x4e\x00\x48\xcd\x6e\x72\xab\x12\xbb\x65\x1e\x73\x1c\x70\x2c\x6e\x88\xbe\xb7\x53\xae\xf2\x19\x36\x31\xa7\x54\xde\xdb\x7d\x76\xc7\x78\x5d\xf7\x87\x6f\xef\x7f\x4c\xa7\xad\x86\xee\xc1\xe1\x1e\x6f\xa8\xdf\x03\x7a\xf0\x6d\x1b\x95\x33\x86\xf9\xeb\xc1\xad\xf9\x23\x28\xce\x32\x5f\x65\xb5\x0a\x1c\x3f\x73\x4c\xf1\xf7\x10\x45\x28\x15\x50\x94\xc2\x88\x14\x30\x9e\xb9\x87\x73\xc5\x73\x14\x04\x64\x70\xbc\x00\xd2\x2e\x32\x9e\x88\x94\xa5\x60\x40\xd8\x81\x9b\x92\x1b\xb1\x92\xb4\xca\x39\xed\x67\x23\xca\x95\x60\x85\xd5\x2f\x62\x87\x15\x7d\x89\xe3\x33\xfa\x90\xc7\xd5\x9e\x6f\x9e\xb8\xfe\x64\xf8\xd0\xbb\x94\xf9\xdf\x7b\xf6\x8c\x78\x29\xb2\x15\x64\xfb\xa5\x98\x35\x00\xe5\x11\x5a\xf3\x7e\x75\x7a\xa3\x6b\xec\x37\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x78\xf0\x99\xf4\x46\xff\x7c\x16\xbd\x31\xf2\x23\xe8\xff\x1c\xe1\x96\xfd\x09\xfd\xd9\x8d\x1f\x16\x3d\xac\xa0\xb4\x82\x4f\x9a\x2c\xf4\xba\x0e\x59\xab\xea\xdd\x39\x5d\xe0\x1e\x5c\xbd\xd8\xf1\x9c\x95\x3c\x5f\x51\x49\x7e\x33\xfb\xe6\xd5\x2b\x1a\x7f\x53\xbb\xea\x36\x0f\xbd\x64\x3c\x8b\xe2\xc6\x59\xcb\x4f\x4e\xf8\x31\xee\x5c\x38\xd2\x42\xe7\x07\x2a\xab\xf5\xc5\xc1\x8e\x10\x7d\x75\x57\x69\x1d\x30\xeb\x84\xe4\x46\x06\x48\x6b\xcc\xc5\x46\x18\xc6\x4d\x27\x70\x22\x37\x82\x76\x3f\x17\x2a\x45\x41\xef\x2a\x6e\xf9\x48\x70\xca\x54\xee\xe2\x65\x39\x64\xe1\xef\xcc\x20\x2e\xe8\xd8\x60\x41\xbb\x33\x48\x04\xc7\xae\xa9\x0b\x00\xba\x86\x03\x8e\x86\x69\xb5\x11\x0c\x93\x03\xdd\xb5\x61\xa7\x20\xfc\xae\xb0\x17\x62\xbe\x9a\xb3\xb4\x72\xcd\x58\x83\x24\xb1\xc4\xd8\x4b\xbc\x81\x31\xfb\x1a\x22\xce\xaa\x84\xff\x67\x97\xc5\x94\x5b\xc0\x0e\x3e\x8a\xdc\x54\x3c\x23\xb4\x43\x12\x8f\x32\x31\x75\x7d\x1f\x48\xa7\x90\x06\x91\x06\xc7\xac\xdd\xbc\x2b\x53\x48\xb7\xd8\x8e\x72\xef\xeb\x47\xf5\xd9\xd4\xc6\xd2\xa5\x96\xfe\x14\xf8\x73\xe0\xcc\x0f\x1f\x69\x55\x53\xc7\x36\xca\x73\x81\x43\x55\xba\x30\xe7\xfe\xb0\x63\xfc\x11\x80\x03\x69\x40\x47\x76\x2a\x1d\x0e\xc6\xa8\x3b\x95\xa4\x9d\xff\xd5\xfb\x37\x22\x45\x4a\xf7\xaa\x50\x99\x5a\x6d\xdb\x7b\x85\xc9\x56\x75\x59\x2c\xaa\xda\xc7\x99\xae\x16\xce\x7a\xb2\xfc\xf5\x7e\x87\x05\xa6\x88\x1f\xed\x99\x3c\x37\x11\x14\x27\xcf\xcd\xe4\xb9\x99\x3c\x37\x83\xcf\xe4\xb9\x99\x3c\x37\x93\xe7\x66\xf2\xdc\x1c\x7c\x7e\xdb\x9e\x9b\x29\xe2\x37\xe9\x8d\x93\xde\x18\xf5\x4c\x7a\x63\xe8\x99\xf4\xc6\x49\x6f\x9c\xf4\xc6\x49\x6f\x9c\xf4\xc6\x9d\xe7\xd7\xa3\x37\x46\x7e\x84\x4e\x9e\xba\xac\xb3\x7d\x07\x3b\x29\xd2\x74\x8c\xc6\x4f\x10\x99\x79\x46\x52\x63\xa1\xd2\x81\x9c\x46\x08\x92\x0c\xce\x25\x51\x33\x57\x24\x0f\xc2\x35\x96\x9c\x8b\x57\x6a\xbe\xc1\x98\xd0\x05\xfb\xa7\xca\x05\xe6\x7b\x59\x31\xa1\x55\xa0\xf3\x16\xf4\x8a\xb0\xa4\x5e\xe8\x97\x83\xb9\x38\x53\xbe\xe4\x94\x2f\x39\xe5\x4b\x7e\xad\xf9\x92\x6b\xae\xb1\xc8\x8a\xeb\x20\xd7\xa4\x4f\x06\x29\x76\x21\x11\x2d\x09\x67\x85\xeb\xbf\x1f\xcc\x9e\x0c\xd2\xfc\x32\xd9\x95\xf6\x10\x38\x26\xb5\x2b\xdd\x62\x34\x5c\x8f\xd4\x01\x49\x44\x7a\xdb\x9d\x25\xe1\x26\x43\x9f\x04\x4c\x86\x43\xf3\x85\x42\x94\x33\x64\x6d\xc5\x96\x32\x4f\x0f\xcc\x91\x40\xd6\xad\x2c\xe1\xa4\x46\xe5\x40\x76\xa7\x37\x22\x90\xdb\x8e\x41\x77\xae\xad\x5f\x52\x46\x24\xf8\x0d\xbc\xaa\x30\xde\xc9\x05\xde\x07\xa8\xa1\xc1\xd4\x23\x34\x98\x71\x76\x73\xdd\xd5\x28\x46\xb7\xf7\xbd\xf4\x12\xae\xf1\xaa\xa2\x2b\xca\xe3\x7c\x30\xe3\xa3\xc4\x6c\x77\x31\x76\x49\xa1\xcf\x2b\x93\x84\xab\xa6\xfb\xa8\xa5\x5b\xd6\x83\x4e\x43\xb8\xce\x22\x29\x76\xee\x87\x26\xd4\x1f\xe7\xc1\x1b\x63\x82\x1c\xe4\x96\x67\x3b\x13\x19\xcd\xa1\x18\x6f\xa5\x86\x9d\x8a\xa3\xcc\xe9\xf1\x8e\x45\xf6\x0c\xe7\x22\x1b\xe7\x60\x64\xbb\xdb\x66\x47\xef\x34\xa0\xda\xd7\x38\x82\x26\x6b\x8a\xb9\x1d\xc1\xdf\xc8\x9e\x67\xdd\x8e\xf7\x3b\xb2\xdd\xe5\xa9\xd9\xa4\x6e\x77\x13\xcf\x24\xcc\x33\xdf\x8e\xe3\xb2\x76\x44\x8e\xa2\xd8\xef\xbc\xb4\x32\x60\x14\xc9\x3d\x07\x26\xf0\xf5\xf3\x7c\x98\xcf\xdc\xc8\x71\xfe\x48\xb6\xbb\x8d\xce\x8b\x86\xe5\xac\x62\xdd\x1e\xcd\xb3\xe7\xd1\xdc\xf5\x50\x8e\xa2\x7a\xc0\xab\xd9\x71\xfb\x8d\x22\x7a\xd0\xb3\x79\x94\xb1\xf6\x78\x37\x47\x39\x63\x59\x9f\x43\xd6\x0d\xf9\x7e\x2d\x47\x9e\xb7\x53\xb8\xf8\xd8\xf3\xdc\x7c\x6c\xbc\xab\x8f\x3d\xf7\x1c\x8d\x75\xf9\xb1\x91\x6e\x3f\x36\xc2\xf5\xc7\xc6\xba\xff\xd8\x58\x17\x20\x1b\xbd\x2e\xa0\x0e\xbe\x1d\x6c\x09\x7e\xf8\x89\x2b\xde\x37\x34\xe4\x11\x9c\xb0\xaf\xd1\xba\xc6\xe2\xa0\x6f\x6d\x78\x61\x25\xdc\xff\xb6\x6a\x12\x1c\xca\xff\x13\xab\xcb\x70\x59\x6a\x6b\x36\x39\xf7\x7f\x8b\x92\xf7\xd6\xb5\x3e\x1a\x49\xdc\x8e\x4e\xea\x9d\x96\x69\x3c\xf7\x0e\x06\x3b\xf2\x5d\x1d\x3d\x56\x47\x7c\x5a\x2b\x8d\xfa\x5c\x5d\xdc\xf7\xec\x41\x6c\xcf\x2e\x9e\x23\x37\x2d\x91\x9b\xfc\x0c\x15\xcf\xbd\x88\x8e\xd7\x6a\x63\x8d\x88\x3c\xdb\xb2\x33\xa0\x74\x76\x00\x1d\x3c\xd2\x08\x78\x86\x1b\x3d\xea\xa5\xba\x97\xfa\x58\xf8\x45\x43\xa0\xf6\x4e\x7a\xf7\x4f\xf3\x4f\x31\xf1\x03\xaf\xfd\xde\xed\xeb\xae\xec\x85\xf7\x28\xf1\x95\xdd\x29\xf3\x32\x5c\x76\xab\x35\xd5\x0e\x26\x1c\x40\x23\x1b\xc1\x73\xcd\xce\xbc\x1f\xfb\xbc\xd5\x5b\x3e\xec\x03\xf3\x4f\xf4\x3d\x32\x4a\x66\xc4\xcb\x46\xe3\xa0\xe5\x7f\x8f\x31\x4d\x76\x3c\x59\xce\xbf\xdf\x14\xe5\xac\x9d\xff\x54\x97\x8b\x7d\x5e\x78\xbf\xcd\x4b\xbb\xfe\xb9\x32\x2d\x32\xec\x05\xcf\x8d\x9c\xd5\xbf\x88\x20\x5b\x7b\x73\xc0\xe5\xd8\x4e\xc3\xea\x72\x50\xac\x5b\xa4\x5d\xa0\xbc\xe1\xe1\x0b\xd7\xa6\x61\xd4\x0a\x48\xcd\x7c\x5f\x6b\xae\xeb\x7e\xb1\x2a\xf7\x6e\x78\x14\x77\xc3\x3d\x7b\xf6\x1f\xe7\x56\x44\x63\x11\x56\x03\xd0\x29\xcd\xbe\x47\x54\x48\xf3\x0f\xd8\x8e\x6a\x09\x75\xbc\x61\x68\x2a\x77\xc7\xd9\xfe\xc5\x7b\xcc\x61\x65\xa3\x56\x00\xf6\x48\xd6\x73\x9f\xb3\x6b\x38\x86\xed\xc1\x4a\xe8\xe6\x16\x41\xd3\xb7\x95\x8f\x3c\x44\x11\x27\x2f\x4e\xdf\x9a\xb5\xa7\x73\x8a\x40\xe6\xe8\xd4\xc5\xa7\x13\xa5\x2e\xee\xb8\x78\x7f\x53\x99\x8b\x91\xce\xfb\x29\x7d\x71\xe8\x99\xd2\x17\x23\xd3\x17\x49\xf3\xc7\x9b\x81\x9c\xc7\x18\xa4\xd9\xe4\x39\x0e\xe6\x31\xb2\x9f\x5c\x77\x77\x82\xf3\xcb\x6e\xf5\xa6\xca\x8c\x2c\x1a\x90\x92\xc6\xa1\x66\xe8\xdc\x58\xba\x10\x79\x47\xf2\x50\x22\x94\x10\xf7\xdd\x39\xa6\xf0\x3d\x00\x31\x69\xb8\xc1\x2e\x30\x4c\xcc\x07\x3a\x57\xd5\x14\x21\x7f\xd1\x7b\x45\x30\x56\x3f\xd8\x1a\x12\x9f\x31\x21\xc4\x37\xa0\x2b\xe8\x26\xc6\x03\xb7\xe7\x0b\xab\x8c\x64\x96\xcd\xac\xb2\xe0\x65\x37\x41\x0c\xee\xeb\xd4\xe8\xfb\x7c\x14\x3e\x90\xbb\x92\x8f\x22\x6f\x94\x9d\x17\xfa\x25\x45\x11\x73\x7e\xe6\x01\x25\xb1\xab\xfa\x91\x22\x91\x43\xca\x21\xdc\x5a\xa3\x14\xb1\x08\x05\xcc\x29\x39\x04\xa2\x3b\x8a\xd7\x5f\x5a\xb7\xff\x5f\x5b\xc1\xef\x5a\xa1\x22\x46\x62\x5b\x2a\x17\x2c\x6c\xad\x74\x35\xac\xd0\x28\x52\x47\x8e\xd9\x8e\x08\x56\x9e\x2e\x50\x39\x32\x48\xf9\xc5\x52\x58\xfb\x03\x93\x4c\xc5\xe0\x43\x43\x41\xc9\xb1\xb9\x0d\x23\x7c\x11\xcf\x4d\x6a\x38\x52\x20\x72\xca\x6a\xe8\xf9\xe2\xb3\xe2\xc4\x87\x02\x8e\xb0\x06\xa3\x82\xaf\xbf\xf8\xe4\x86\x03\x01\x46\x1f\x2c\x8c\x5e\x90\x83\xc1\xc5\xbd\x40\xe1\xe8\x60\xaa\x3e\x9c\xe5\x10\x6c\xd8\x77\xe8\x79\x4e\x50\xf1\x4b\x26\x37\xec\x07\x12\x9b\xa0\xe0\xc8\xe0\xe6\x5e\x60\x6e\x37\x20\x38\xea\x60\x04\xd2\x1c\xa2\x69\x1e\x18\xe3\xe7\x4a\x73\x18\x15\x04\x9c\x30\xfe\x13\xc6\x7f\x74\x6e\x68\x6c\x60\xef\xb9\x41\xbd\x51\xbb\x7c\xc2\x60\xde\xc9\x02\x79\x27\x0e\xe2\xd1\x02\x78\x2c\x4a\x9c\x10\x82\x77\x10\x8e\x8b\x21\x79\xcc\xc0\x5d\xf4\xb9\x88\x7c\x21\x36\x58\x77\xb2\x40\xdd\x69\x82\x74\xa7\x08\xd0\x45\xc9\xfa\xe8\xb3\x1f\x27\xd3\xa2\x03\x72\xf4\x60\x5c\xcb\xcf\x42\x9c\x6b\x30\x10\xd7\x0d\xaf\xc5\x88\xec\x83\x41\xb8\xbd\xd0\x5a\x74\x80\x7a\xdf\xef\x73\xd8\xab\x43\x5d\x80\x01\xdf\xcf\x8e\x67\x27\x3e\xe0\x7a\xc8\xfb\xd3\xf5\xed\x10\x69\x1e\x08\xba\x11\x42\x69\x54\xff\x0a\x04\xdc\xe2\xc2\x68\x51\x67\x24\x26\x9e\x12\x33\xfc\xa3\x87\x48\xc8\x69\x77\xb9\x91\xcf\x4d\xbd\x6b\x9f\xb2\xbd\xfc\xbb\xc1\xd9\x60\x04\x80\x3f\x2a\x99\xb2\xa2\x32\x06\x0f\x1a\x21\x07\x6f\x90\xaa\xcb\xcf\x9b\x72\xf0\xf6\x73\xf0\x3a\x5b\xd5\xca\xcc\x0a\xd2\xec\x09\x0b\xf5\x27\xe2\x85\x47\xd9\x4e\xd4\xa3\x24\xe2\x05\x29\xee\x25\xea\x11\x13\xf1\xc2\x93\xef\x26\xea\x85\x13\xf1\x82\x14\xf7\x12\xf5\x42\x89\x78\x64\xc9\xb4\xcb\x9a\xfd\x7b\x1e\xa6\x19\xcc\xd6\x3b\x98\x8d\x47\x9b\xfc\x50\xb6\xde\x7e\x36\x1e\x6d\xef\xfb\xb3\xf5\x02\xd9\x78\x04\x66\xfd\x6a\x7a\x1d\x4e\xd9\x78\xfe\xd7\x53\x36\x1e\x9b\xb2\xf1\xdc\x33\x65\xe3\x51\x9f\x29\x1b\x6f\xca\xc6\x9b\xb2\xf1\xe0\x99\xb2\xf1\xa6\x6c\xbc\x9e\x67\xca\xc6\x9b\xb2\xf1\xa6\x6c\x3c\xea\x33\x65\xe3\x1d\x78\xa6\x6c\xbc\x29\x1b\x6f\xca\xc6\x9b\xb2\xf1\xa6\x6c\xbc\xe6\x99\xb2\xf1\xa6\x6c\xbc\x29\x1b\xaf\x7e\xa6\x6c\xbc\xdd\x67\xca\xc6\x83\x67\xca\xc6\xdb\xc9\xc6\xeb\x04\xb1\x7e\xb9\x29\x79\xed\x69\x50\xd9\x65\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xfa\x99\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x0b\x3c\x53\x5e\xde\x94\x97\x37\xe5\xe5\x0d\x3f\x53\x5e\xde\x94\x97\x37\xe5\xe5\xb5\x9e\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\xfb\xec\x79\x79\xc1\x9f\xf0\x72\xd5\x2b\x69\x3a\x27\xf9\xfc\xaa\x5c\x55\x78\xc9\x38\xf7\xab\xc8\x4d\xb9\x05\xd7\x3f\x5e\x44\xa9\x4a\x1e\x44\xc9\xe4\x86\xaf\xc4\xf9\x80\xf5\xf9\xfa\xdd\x1b\xbb\x89\x95\xb6\x67\xc1\xa5\xef\xb8\x4d\x2d\x4a\xf5\x28\x53\x91\x5a\x4b\xb3\x94\x7c\x91\xd9\xeb\x6d\x29\x4a\x91\xdb\x1b\xe0\x5f\x5e\xfc\x78\xf5\xf1\xe7\xf7\x57\xef\xae\xfb\xe5\x85\xbd\x00\xc5\xa7\x82\xe7\xa9\x48\x59\xa5\xfd\xa9\x76\x37\xad\x28\xcf\xcf\x35\x13\xf9\xa3\x2c\x55\x6e\x27\x03\xb6\x13\x67\x8f\xee\x6b\xbd\x64\x13\x9e\xbb\xb0\x4c\x29\xb4\xca\x1e\x45\x8a\x2a\x41\x3d\x3a\x2f\x29\x64\x5e\x54\xc6\xc3\x3d\x9f\xe4\x80\x87\x7e\x21\x58\x95\x27\x6b\x9e\xaf\xec\x7c\xed\x02\xb6\xe6\xc7\xf4\x36\x37\xfc\x93\xfd\x2e\x18\x32\x3a\xe1\x85\x8f\x84\xf6\xbb\x8c\x52\x55\xd9\x25\xfb\x97\x7f\xb9\x60\x52\x7c\xcb\xfe\xa5\x45\x70\xce\xae\x1d\x8d\xd6\x82\x62\xb8\x49\x3c\x0e\x84\x1b\x17\xcd\x72\x5e\xb0\x52\xac\x78\x99\x66\x42\x43\x80\xe3\x69\x2d\x20\x29\x12\xd5\x1a\xb7\x5d\xc2\xdb\x74\xbd\x14\x73\x65\xe6\xec\x75\xbd\x9e\x18\xe7\x49\xe7\xec\x9d\x82\x20\xc7\x52\x7d\xcb\xd6\xc6\x14\xfa\xdb\xcb\xcb\x87\x6a\x21\xca\x5c\x18\xa1\xe7\x52\x5d\xa6\x2a\xd1\x97\x86\xeb\x07\x7d\x29\x73\xcb\xd0\xb3\x94\x1b\x3e\x83\x4b\x3c\x01\xbf\xc5\x25\xca\xd5\x59\xa2\x36\x1b\x9e\xa7\x33\xee\x58\x76\x56\x6f\xff\xe5\xef\x9c\xfc\x99\xf1\xfa\x57\x32\x9f\xf1\x99\x5e\x8b\x2c\x3b\xef\x19\x74\xe0\x3e\x26\x48\x97\xd0\x81\x16\xf9\x23\xe9\x14\xbe\x75\xdd\xdc\x5b\x2c\x5c\xaf\x3d\x1c\x4c\x2d\x8c\x67\xc5\x7a\xd2\xfd\x32\x72\x7f\x1b\xc6\xad\x40\x67\x8c\xd7\xf9\xe3\x8f\xbc\xeb\x8f\xca\x0f\x0e\x98\xb9\x1f\x0c\x88\x38\x69\xef\xbb\xd7\xe1\x89\xd0\x9c\x91\xf6\x5a\x1e\x96\xea\x9d\x89\xbc\xe7\x9b\x26\x81\xf4\xc0\xf8\xe7\xec\x1d\x3a\x1a\x02\xd2\x9c\xb3\xd7\x3f\xdf\xbc\xb9\x7e\x7f\x7f\xf3\xdd\xcd\xf5\xc7\xe1\x1b\x8b\x78\x53\xc1\xbd\x1f\x31\x95\xf3\x80\x3c\xed\xc8\xcd\xc0\x74\x1a\xa9\x5a\x94\xe2\x51\xaa\xaa\xd1\x67\x0e\xb3\xa5\xcc\x43\xd7\x5d\x9b\x5b\x9d\x7f\x7b\xcb\xb4\x28\x1f\x65\x72\x78\xe9\x83\x9e\xea\x8e\x58\x27\x8b\xef\x50\x54\x74\x57\xb8\x93\x84\x78\x80\xe8\x41\x11\x4f\x12\xe5\x01\xc2\x07\x05\x3d\x41\xa0\x13\x36\x6b\x5f\xdc\xa3\x58\x7f\x23\x96\xbc\xca\x50\x45\x38\x3b\x9b\xf7\xc9\x53\x47\x28\x82\xd5\xbf\x2b\x55\x20\x29\xb3\xc3\xee\x77\x98\xf0\xbc\x54\x65\xef\xe1\x3d\x77\x31\x98\x10\x23\xb5\x44\xa4\x53\x58\x50\xe7\x76\x1a\x0b\xc1\x1b\x4a\x0f\x94\x24\x2a\x5f\xca\xd5\x3b\x5e\xfc\x5d\x6c\x3f\x8a\x65\x64\xfc\x1d\x8d\x16\xe7\xfd\x07\xf5\xdd\x4a\x4e\x24\x18\x56\x93\xe3\xc2\x39\xe4\x20\xce\x5e\xba\x31\xc2\xfe\x9c\x5d\x70\x02\xed\x9d\x22\xe5\x0f\x0e\xee\xbc\x2d\xee\xdd\xd9\x31\x6d\xb5\x84\x68\x9f\x0c\x28\x2f\x89\xca\x13\x51\x18\x7d\xa9\x1e\xad\x6c\x13\x4f\x97\x4f\xaa\x7c\xb0\xda\x88\x3d\xf5\x33\x54\xd3\xf5\x25\x58\x8f\x97\xbf\x83\xff\x47\xfc\xe8\xfd\x87\x37\x1f\xbe\x65\x57\x69\xea\x0a\x55\x54\x5a\x2c\xab\xcc\xe5\x60\xcf\x19\x2f\xe4\x8f\xa2\xd4\x52\xe5\x17\xec\x41\xe6\x29\xd5\x27\x56\xc9\xf4\x7f\x0e\x1f\x62\xff\x44\xee\x91\x2a\xd0\xdd\x39\x62\x9f\xee\xc0\x16\xdf\x76\xd4\xcf\x9a\xcf\x69\x78\x0d\x06\x1a\x8d\x06\x5e\xf4\xb1\x02\x77\x85\x45\x4c\x76\xa1\x54\x26\x78\xe8\x6e\x8b\xb3\x27\x29\x76\x7b\x84\x1d\x09\xfb\x1f\x2f\x49\xce\x1b\x51\x82\x7e\x50\x77\x2a\x0a\x95\x7e\xcb\x74\x55\x14\xaa\x24\x85\xf0\x37\xc2\x70\xab\xa3\xcf\x2d\x2b\x5f\x74\xff\x13\xdc\x23\xad\xbf\x81\xf3\x82\xe4\xac\xad\x5f\x01\xc9\x8c\x01\xcb\x0b\x70\xd1\xcc\x73\x95\x8a\xf7\xf0\x2d\xf8\x4f\xa7\x41\x5c\x25\x89\xaa\x72\x03\xff\x40\xa0\xaf\x0d\x37\x95\x9e\xaf\x95\x36\x37\xb7\x17\xfe\x3f\x0b\x95\xde\xdc\x06\x6e\x34\x16\x2d\x47\x9b\x83\x39\xe2\x24\xb8\x37\xdb\x05\x40\x36\x1c\xfe\xe7\x77\x76\xd7\x6e\xb9\xa1\x3a\x6c\xa4\x66\x4f\xa5\x34\x46\xe4\xa0\x08\x01\x66\x4c\x2d\x2f\xec\xa1\x68\xee\xf3\xc7\x6f\xce\x4e\x22\xaf\x97\x7e\xb0\x23\x96\xc0\xbe\xe6\xe7\x8f\xac\x5a\xdf\x2d\x34\x95\xce\x3f\x0d\x24\xf2\xea\xf6\x86\x3d\xe2\xca\x7e\x61\xe7\xd2\x92\xbc\x8b\x11\x22\xc1\xe3\x99\xbe\x7b\xb6\x68\xa8\xeb\xca\xb8\xf5\xaf\x35\x78\xca\x3e\x42\x2a\x52\x8d\xad\x62\x99\xdc\x48\x97\x38\xec\xaa\xd4\x68\xf6\x02\xff\x38\x4f\x8a\x8a\x72\x6c\xdd\xaf\x37\x62\xa3\xca\xed\x85\xff\x4f\x51\xac\xc5\x46\x94\x3c\x9b\x69\xa3\x4a\xbe\x12\x17\xf5\x07\xa8\x84\xeb\xdf\x23\xe9\xce\x20\xf7\xe9\x53\x5c\xd9\xd6\xd8\x4a\xaa\xd2\x2a\x18\xd9\xd6\x0b\x54\x91\x1e\x5d\xba\xd4\x3b\xf2\x7e\xa4\x4a\x54\x5b\xde\xa8\x54\xd5\xdc\x0b\x9a\xf5\xa3\xca\xaa\x0d\x1d\x17\xe7\xaf\x7c\x2c\x76\x94\x3f\x5a\x4d\x5c\x9f\x44\xb9\x48\xe5\xa3\xd4\xa3\x80\x80\x77\x75\x8c\x09\xe2\x7d\x95\xb1\xf6\x1e\x22\xf9\xe9\x00\x4b\xfb\x88\x4f\x85\xd2\xe0\x6c\xf3\xe8\xc1\xae\x2c\xfd\x86\x16\x08\x8a\x9c\xb8\xff\xda\x98\xad\xf6\xf5\x6b\xbe\x6d\xce\x75\x2d\x4a\x4f\xb0\x4b\x31\x72\xd0\x0f\xe8\x98\x62\x50\x8b\xa4\x14\xe6\x58\x76\x16\x52\xf3\x8e\x37\x88\xf9\xc5\x44\x46\xbf\x2a\xe3\xac\x0e\xdc\xc0\x94\x9a\xeb\x74\x59\xaa\xcd\x9c\x81\xcb\x8b\x78\x08\x16\x02\x7c\x30\x99\x4c\x3d\xb5\x07\x41\x44\x0e\x4d\x26\x5f\xf0\xf9\x8d\x9b\x7c\x77\xc8\x51\xaa\xb4\x96\x1c\x71\x6e\xbf\x72\x7b\x8f\xf4\xc3\xf0\xe8\x66\x70\x9c\x02\xd1\x0e\x42\xd4\xb1\x3f\xda\x01\x21\xc2\xdb\x2a\xcb\x70\x13\x69\x01\xc8\x9b\x9d\x97\x1c\x86\xb2\x56\x2b\x1c\x62\xbd\xe5\xf6\xec\x9f\x82\x72\x02\x49\x77\x0b\x83\x7a\x79\x6c\x7f\x50\x69\xf4\x1f\x16\x55\xe6\x4a\x1f\x6e\x87\xf0\xf0\x10\xfb\xb3\x23\x74\x81\x4d\x9f\x58\x75\xab\x52\xcb\xbd\x10\x67\xac\x6d\x0c\x70\x3e\x6b\x2f\x63\xfb\xc7\xe9\x5d\xcc\x05\xd7\x96\xa6\x51\x4c\xe6\x56\xb9\x49\x2b\x9e\xc1\xc0\x20\xdc\x5a\x20\xf6\x09\x0d\x61\xef\xf3\xec\x4f\xf2\xc3\xb9\x1d\x23\xd0\xf3\x56\x25\x3c\xfb\x00\x8c\xf0\xb1\x76\xa4\xd7\x98\x26\x91\x43\x35\x47\x2b\x47\xad\xfe\x24\xd5\xd0\xc9\x31\x8a\x65\xc2\xb0\xad\xaa\x18\xc2\x24\xba\xee\xf9\xd4\xf1\x1b\x93\xb9\x96\xa9\xa8\xb7\x2c\x10\xeb\x81\xcd\xfc\xcc\x41\xa3\xe0\x9d\xf2\x79\x6f\x8b\xd8\x5b\x82\x20\xff\x49\x72\xff\x18\x52\x22\x97\xa6\x36\x40\x88\x20\x05\x1f\x1f\xb5\xef\x4a\x9e\xc9\x7f\x02\xe3\x35\x86\x90\x66\x0b\x91\xa9\x7c\x05\x11\xac\xfe\xd4\x41\xa7\xc5\xcd\xd9\x4d\x2e\x4d\xfb\x6d\x0c\x93\x89\xa4\x02\x20\x4f\xce\x54\x99\x8a\x92\x15\xa5\x54\x50\x5b\xb7\xf9\x65\x2f\xe9\x85\xb0\xdf\xd6\x86\x83\xc5\x07\x71\xaa\x7c\x0b\xe3\x6d\x85\xc0\x96\x5c\x66\x2e\x9f\x10\xaa\x17\x6b\xfb\x6f\x96\xf3\x87\x6a\x64\x1a\xc5\xd6\xfc\x51\xc0\xcb\x02\x6b\xa1\x4a\xcd\xd6\x3c\x4f\xe1\x3f\x93\x44\x95\x29\xce\x1b\x9c\x9f\xa5\x80\x41\xdc\xaa\x4c\x26\x03\x5a\x99\x55\x0b\x2d\xa3\x81\x60\xe1\xf9\xee\x48\x21\xf2\x53\x6e\x78\xd6\xfa\xdb\x26\x10\x15\xad\x72\xf9\x8f\x4a\x30\xbe\x51\x56\xae\x66\xad\x57\xf5\xfe\x8a\xfb\x64\x4f\x3b\xb5\x5e\x8a\x6f\xe5\x52\x24\xdb\x24\x13\x8c\x27\xce\x1f\xf8\x51\xf0\x54\xe6\x42\x6b\x7b\xcc\x17\xd6\x00\x53\x25\x7b\x2b\x1f\x45\xeb\x6f\xc3\x65\x13\xbd\xd9\xf1\xb1\x0d\xb0\x04\x54\xd4\xee\x22\x40\xc1\x56\xfe\x00\xde\x33\xa3\x60\xa9\xab\x81\xb0\xb6\x03\x92\xb7\xb2\x84\x17\x5b\xa8\x88\xea\xe3\xaa\xbe\x18\xac\xf3\x32\x5c\x82\x2f\xc3\x6e\x40\x2f\x49\xc8\x1a\x6d\x0c\xb7\x6d\x21\x6a\xc8\x69\xde\x0a\xd8\x6e\xf8\x27\x3b\x03\x90\x4e\xdc\x04\x8a\x38\xb8\xe0\x99\x2b\x58\x8c\xf9\xc7\xdd\x9d\xd6\x73\xf6\xd6\x39\x6e\x4a\xe1\xd0\x94\xe9\xd0\xb9\x92\x3b\x9b\x0b\xe1\x7d\x2d\x37\x32\xe3\x96\xe9\xf5\x5a\xaa\x7c\x9f\x05\x30\x7a\xdb\x4b\xb4\xf1\xa4\x2c\x7c\xa9\x59\x48\x87\xd9\xa8\x47\x7b\xc2\x06\xa1\x26\xbd\x44\x29\x42\xda\xca\xe6\x4c\xf1\x54\x5f\x16\x2a\xd5\x97\x76\x72\x0d\xd2\x44\x5f\x8e\x44\x93\xec\xe4\xa2\x39\x04\x75\x0b\xe5\xd2\x62\x3c\xd8\x45\x7b\x69\x3e\xf1\x41\x18\x85\x51\xac\xac\x72\x88\x2d\xc3\x92\x5b\xd9\xf6\xcc\x6b\x71\x08\x38\x76\x60\x22\x54\xf8\x58\xe0\x3a\xf3\xe0\xb2\x38\x10\x59\xd0\x25\x1a\x84\x44\xf4\x40\xc9\x02\x84\xfb\x81\x66\x61\x44\x42\x68\x21\x7a\xe0\x66\xc3\x88\x84\x90\x53\x64\x00\x74\x36\x88\x48\x08\xd0\x1d\x84\x9e\xf5\x21\x12\x02\x34\x83\x00\xb4\x3e\xa0\x59\x80\xee\x57\x0c\x43\xc3\x87\x04\x0e\x27\xdb\xe6\x34\xa4\xa9\x1b\x63\xcc\x79\xbf\xae\x8f\x37\x52\x9f\xb3\xf7\xca\x34\xba\x93\x17\x45\x21\x8e\xb4\xeb\x71\x10\x5e\xca\xae\xdf\xdf\x7f\xfc\xaf\xdb\x0f\x37\xef\xef\x77\x05\x41\xe8\xe8\x44\x62\x4d\x09\x85\x51\x4f\x80\x38\xc5\x67\x14\xee\x34\x40\x93\x0c\x5c\xda\x11\x04\x41\xb2\x64\xe0\x12\xc5\x46\x6f\x8d\x95\x0a\x5c\xea\x08\x82\xe0\x8e\x05\xc4\xc4\x24\x08\x0e\x2e\x5b\x3f\x4e\x15\x9f\xb1\x68\xd5\xd0\x39\xa8\x21\xa0\xb1\x12\x9d\xb4\x4a\xe3\xf0\xab\x04\xb7\x3d\x10\x20\xa3\x58\xfd\x5b\x74\x67\x3f\xd5\xf1\x3d\x02\xd7\x4a\xf2\x8c\x82\x8b\x9f\x8e\x6e\xc5\x27\xca\x71\x4c\x40\xba\x1e\x98\x22\x05\xef\x4a\x9a\xe0\x01\xc9\x3e\x84\x7a\x25\xd1\x6c\x23\x63\xe9\xd8\xd7\x38\xd2\x44\x7d\x93\x44\x34\x9c\xe4\xd0\xbd\x4e\x48\x44\x63\x12\x1e\xdc\xa5\x42\xa2\x1b\x95\xfc\x40\xa2\x78\x8a\xeb\x07\x9f\xe7\xa0\x67\xf1\x89\x3f\x4a\x61\x24\x2d\x3e\xf1\x78\x5a\x22\x83\x66\x95\x98\x1f\x01\x55\x8b\x4f\x6c\x11\x92\x68\x84\x2d\x3e\x47\xc4\xd9\x8e\x1b\x37\x8b\x2f\x9c\x72\x0c\xe4\x2d\x3e\xa3\xb2\xcb\xe9\x21\xd9\x03\xc3\x1d\x70\xa2\x47\x90\x64\x5f\xc2\xe1\xde\x7d\xe8\xee\xf7\x28\xb2\x54\x57\x7d\xf7\x19\xb5\x8f\x71\x61\x5b\x7c\xe8\x78\xdd\xa8\x59\x63\xac\x77\x74\x14\x17\x9f\xb8\x58\x2e\x3e\xb1\x35\x2d\x62\xea\x59\x44\xa7\xdf\xd3\x31\xbd\xf8\x9c\x04\xd9\x8b\xcf\x69\xf0\xbd\x3b\xb4\x4f\x84\xf2\xc5\xe7\x79\x58\x5f\x7c\xc6\xc8\xf2\x58\xdc\x2f\x3e\x27\x42\xff\xe2\x73\x5c\x0c\x30\x3e\xa3\x24\x4e\x24\x1e\x18\x1f\x2a\x2a\x38\xf2\xfa\xd8\x29\xb1\x1d\x8d\x0d\xc6\x67\xc4\x32\xc4\x8b\x1c\x3a\x5a\xb8\x3d\xa8\x08\xc1\x13\x8f\x1c\xc6\xe7\x24\xf8\x61\x7c\x8e\x8f\x22\xc6\xe7\x64\x58\x62\x7c\x8e\x8f\x28\xc6\x67\x3c\xae\x18\x9f\x31\x92\x6c\x04\xc6\x18\x1f\x3a\xd2\x38\xea\xcc\x7a\x54\xf2\x73\xf0\xc6\xf8\x8c\x2b\xaa\x14\x83\x3d\x76\xaf\x10\x11\xc8\x71\xba\x52\xdd\xf7\x76\x00\x87\x1c\x45\x91\x8a\x59\xc6\x67\xd4\xe2\xc5\xe1\x97\xf1\x39\x36\x8a\x79\xf4\xf0\xe3\x25\x36\x19\xd7\xdc\x1e\x53\x84\xc0\x8e\xc3\x38\xe3\x13\x85\x74\x26\x2f\xe8\x4e\x15\xa4\xaf\xdc\x48\xee\x41\x40\x47\x9d\x96\x16\x5a\xfa\x39\x38\x68\x7c\x26\x03\x7c\x32\xc0\x8f\x6b\x80\x23\x86\x76\xb2\xbe\x23\x65\x6a\x54\x9e\x1d\x6d\xd4\x01\xb4\x75\xe4\x77\xc9\x51\xbc\xc8\x82\x0a\x3e\x92\xe7\x35\x6d\xa3\x58\xa1\x8a\x2a\xe3\xa6\xa7\x3e\x47\x28\x06\xbf\x5b\xa2\xc6\x0b\xdf\x26\xaa\x52\x83\x95\xdc\x3d\xbe\x09\xc7\xa4\xf6\xa3\x51\xec\x2a\xcb\x98\xcc\x51\xf8\x02\x79\x1f\xae\x28\x05\x2a\xc7\x01\x92\x1c\xa3\x7f\x8f\x76\x72\x4f\xae\x41\x44\x2b\x5e\x23\x35\x42\x39\xa1\xa2\x19\x34\x90\xe0\x04\xee\x73\x7e\x7f\x99\x37\x4d\x24\x6a\xf5\xac\x2e\x12\xb9\xdb\x01\x27\xc4\x22\x50\x00\x4e\x1b\xbf\x5c\x30\x4f\xc3\x1f\x20\x5e\x95\x88\x54\xe4\x89\x80\x02\xce\x95\xd0\xc4\x83\xbb\xb0\x96\x09\xbb\xce\x1f\xeb\x30\x4c\x85\xa1\x6d\xbc\x26\x0f\x7e\x21\x40\xf2\x73\x04\x6f\x2d\x6b\xbb\x80\x45\x2b\x86\x0b\x37\xba\xb7\x37\x83\x47\xbd\xae\x7c\x5d\x7b\x2a\x43\x1c\x1d\xa3\xac\xd4\x51\x08\xa2\x62\xb6\xa7\xa5\x34\xf5\x0e\xba\xf9\x59\x27\x88\x98\xc4\xa8\x11\x27\x49\xae\xfa\x42\xe9\x55\x27\x51\x1d\xe2\xd5\x86\x68\x95\x21\x56\x5d\x88\xa8\xad\x41\x90\xc0\xcd\x13\xad\x1e\xc4\xaa\x06\x51\x57\x77\x51\x8a\xa5\xfc\x14\x7d\xd6\xae\x5a\xf9\x45\x32\x15\xb9\xb1\xa6\x39\x20\xfd\x8b\x52\x14\x22\x1f\x04\x3b\xb7\x1f\xc0\x67\x43\xe7\x82\xbc\xbb\xa8\xf3\x96\x89\x70\x52\x1c\x05\x5a\x1e\x63\x05\xce\xdd\xa1\x6c\xd0\x49\xda\x4c\xd2\xe6\xd8\xd2\xc6\x31\xda\x2f\x56\xd4\x1c\x59\x53\x07\xb4\x6b\x0c\xec\xf6\x4d\x0b\x25\x0b\xa7\x29\x3a\xf5\xac\x95\xc1\x80\x09\x8d\x81\x19\xdf\x37\xfd\xe3\xa4\x6e\xc4\xa5\x51\x58\xa2\x17\x93\x59\x4a\x96\x89\x47\x91\x39\xcd\x27\x40\x71\xc3\x73\xbe\xc2\x7a\xee\x46\x79\x7f\xa5\xb5\x3f\xed\xb1\x2b\x65\xda\x51\xc0\x31\xe7\x32\x58\x62\xd0\xe7\x6a\xc0\xab\xa5\xca\x32\x51\x6a\x96\xc9\x07\xc1\xde\x88\x22\x53\x5b\x57\x3e\x3d\x4f\xd9\x9d\xe1\xc6\x1e\xbd\x3b\x61\xf4\x71\x2a\xd8\xd5\xe9\xae\x98\x6b\x15\xb3\x9d\x90\xf4\x0a\xa9\x9e\xac\xc0\x44\x2d\xf6\x21\x07\x39\x77\x95\x3d\xf1\xad\xbe\x60\xef\xc5\xa3\x28\x43\x32\xe1\x66\xf9\x5e\x99\x5b\x54\x85\xbb\x38\x23\x24\xc3\xe4\x92\x7d\x0b\x0d\x84\x0c\x33\x7c\x05\x66\x4d\x9d\xac\x1a\xa0\xad\xca\x0e\x79\x14\x5f\x4f\x52\x8b\xb1\xa9\x37\xf8\x8c\x62\xd5\xdf\xc1\x77\xac\x40\xc6\xff\x3e\xca\xf6\x65\x3e\xb9\x2c\x62\xe3\xae\x30\x0d\xcd\x37\x9b\x13\x6d\x9e\x76\xcd\x0c\xb1\x22\x7a\x48\x9c\x58\xf3\x4a\xe6\x0c\x7b\x08\x62\x73\xc6\x86\xf9\xeb\x91\xa1\x81\xaa\xfd\x8a\x87\xcd\x64\x92\xf5\x45\xbf\xbc\x0b\xa5\xcd\x9d\xb5\x83\x63\xab\x09\xdd\xfa\x17\x21\xc7\x91\x67\x99\x48\x99\xdc\x6c\x44\x6a\xed\xde\x6c\xcb\xf8\xd2\x10\x7a\xa1\x5a\x7b\xad\x63\x93\x27\xa5\xe0\x3e\xbd\x12\x12\xea\x20\x09\xb2\x9d\x57\x49\xa0\xd9\xa1\x68\x44\xb9\x91\x39\x18\xe3\x18\xad\x73\x19\x9c\x4d\x5e\x25\xe5\x1e\xe9\x64\x5e\x36\x27\x1a\x6e\xbf\x16\x87\xec\x06\x44\x09\xa4\x17\x99\x4a\x1e\x34\xab\x72\x23\x33\x9c\xb2\x52\x0f\x2c\x51\x9b\x22\x83\xb3\xf3\x8c\x5b\xa0\xfe\x9f\xb3\x9a\xdf\x66\x96\xba\xbe\xfc\x5d\xf3\x4f\xf0\x87\x63\xd7\x2f\x12\x9f\x44\x32\xa2\x5c\x84\x95\x90\x76\x93\x20\x3a\xac\xf2\x5a\x2d\x5c\x2a\x7b\x21\xd1\x7d\xaf\x4d\xcf\x82\x5a\x18\xce\xd9\xf5\x27\x91\xb4\x7a\x51\x40\x27\xd6\x24\x90\xdd\xde\x7e\x8c\x82\x43\x7d\xaa\xa6\x80\xa4\x4c\x9d\xf6\xd3\x59\xb9\xd7\xf8\xb6\xef\xaf\xe6\x88\xb1\x4c\xe6\x22\x2e\x5c\xe8\xf2\x7c\xda\xf9\xfa\x35\xaf\xa0\x8f\xcb\x69\xce\x31\x4e\x6d\x59\x42\x53\x86\x6d\x8d\x43\xf5\xe3\x83\xbe\x02\x4a\x19\xf6\xe2\xfc\xf2\x3c\xa6\x2d\xfb\xae\x1b\xf2\xdc\x6a\x32\x99\x40\x09\x8d\x3e\x49\xf7\x8d\x18\xa2\x9a\x69\xb9\x29\xb2\x2d\xac\xc2\x79\x7a\xc1\xa4\xf1\xc0\xd6\xb2\xca\xfd\x9a\xc4\x74\xfe\x83\x6c\x90\x0b\xa6\x15\x33\x25\xf7\xad\x82\xf0\xaf\x96\x9c\x29\x2b\xbc\x6f\x22\x48\xbe\x38\xff\xff\xce\x2f\x98\x30\xc9\x4b\xf6\xa4\xf2\x73\x03\x1b\x32\x67\xf7\x58\xf9\x82\xfb\x4f\x6e\x55\x15\x41\x34\x17\x58\xa6\x42\x7c\x2a\x32\x99\x48\x93\x6d\x41\xa8\x33\x55\x19\x4c\xfb\xe4\xc6\xa5\x74\x45\x10\xbd\xfe\x24\x8d\x43\x66\xd9\x93\xfc\x0a\xb8\x13\x05\x3c\xe3\x56\x89\x7b\x14\x97\x6b\xc1\x33\xb3\x8e\xe9\xa1\x63\xf9\x26\x57\xf9\xec\x9f\xa2\x54\x90\x40\x96\x3b\x1a\x27\x6c\x33\x39\x2a\xfe\x13\xdb\x82\x2a\x32\xa4\x61\x2f\x83\xef\xc5\x98\x46\xed\xff\x79\x7f\x7f\xfb\xbd\x30\x3b\xc2\xd0\xd2\xf3\x60\x16\xba\x48\x2c\x44\xb9\x54\xe5\xe6\x54\x52\x71\xad\x34\x71\x86\x6c\x6f\x96\x4a\x1b\x2c\x80\x80\xaa\x57\x2e\x12\xcb\xcb\x0d\x8e\x22\x66\xff\x55\x5d\xd2\xe1\xe6\x76\xce\xfe\x4b\x55\x50\x88\x80\x2f\xb2\x2d\x64\x70\xbb\x94\xa8\x08\x8a\x67\x76\x78\x67\x56\x8e\xd9\x75\xff\x4f\xc1\x53\x4c\xab\xd7\x46\xf0\xe8\x1e\x50\x51\x8c\xd9\xfa\xde\xd8\xcb\xa6\xd2\x46\x6d\xd8\xda\x0d\x3a\x26\x1d\xac\xfd\x38\x5e\x9b\x03\x3f\xa2\xcd\x09\x4d\xfb\x50\x40\x38\xea\x9f\xab\x77\xac\x1d\x03\xae\x8a\xfb\xfb\x02\x1a\x62\x27\x30\xd5\xa8\x70\x2b\x0e\xdc\x35\x63\xc7\x24\x89\x1c\xa7\x88\xb5\x2b\x22\x88\x8d\xed\xd4\x1a\x8b\x20\x60\x87\x3c\x87\x6e\x1e\xe8\x20\x20\x84\x3a\x77\x9f\xe7\x35\xeb\x3c\xee\xf0\x87\xeb\x65\x1c\x75\xfc\xe3\xda\x28\x46\xae\xef\x2c\x7a\x46\x9f\xa9\x89\x62\x11\x85\xfe\xdd\xc7\xfe\x62\x11\x16\x48\xcf\x42\x0d\x0f\x0e\x8e\x16\xe5\x63\x38\xfd\x72\x77\xdc\x51\x5b\x57\x28\x8a\x0d\xec\x1f\x9e\x6f\x3f\x90\x91\x59\xd0\x6e\x0a\x46\x24\x73\x23\x56\x24\xab\xb0\xfb\xde\x73\xfa\x43\xa2\x7b\xbd\x64\x79\xb5\x59\x88\xb2\x49\x1b\x28\x4d\x9c\x61\xd0\xdd\x96\x56\xfc\xff\x3d\x12\x0e\xd5\x0e\xda\x7f\x9c\x0e\x5f\xf2\x7c\x25\xd8\x37\x76\xeb\xff\xf4\xaf\xff\xfa\x87\x7f\x9d\xe3\x90\x3d\x54\x85\x8c\x36\xb1\xcf\xcd\xd5\xfb\xab\x9f\xef\x7e\x7c\x0d\xd9\x83\x74\x7e\xf9\x34\x6b\x2c\xea\x99\xcc\xcd\x4c\x95\x33\x5c\xf3\x6f\x99\x29\xc9\xe7\x0c\x90\xfc\x11\x92\xab\xeb\x53\x87\x97\xdb\x05\xec\x9c\xce\x12\x27\x7e\x9c\xa6\x62\xf5\xa6\xae\xbf\xd0\x1e\xa4\x13\x9e\xa0\x38\xb1\x37\x03\x06\x3c\x85\x56\x6c\x92\xe2\x4e\x25\x0f\xa3\xf4\xe2\xf3\xfb\xd7\xb7\xf8\x72\x4b\x35\xe6\xb9\x73\x13\x30\x99\x3f\xaa\xec\x91\xbe\x1d\x9c\xdd\xbf\xbe\x85\x89\xce\xe1\x7f\x81\xa7\x05\x8c\xc9\xad\xfd\x82\x07\x79\x63\x00\x89\x48\xb3\x2e\x1a\x08\x30\x7c\x9e\x49\x6d\x64\x02\xd4\x1b\x97\xa2\xfd\x0e\x2d\x6e\xf4\x59\xf5\xf1\xf3\x0f\x3e\xe4\x74\x50\x35\x8f\xe2\xf1\x6e\x72\x4b\x4b\x35\xa7\x83\xfa\xa6\x3b\xa2\x75\x47\xb8\xbb\x01\x31\xfc\xd3\x1d\x71\xe8\x39\xca\x1d\xf1\x75\x48\xc9\x88\x1f\x17\xa5\xb8\x33\xaa\x88\x8e\x0e\xe0\x6b\x3d\xb1\x81\x85\x58\xd2\xe0\xc8\xbc\xd7\x95\x9f\x56\xc2\x35\x90\xbe\xba\xbd\x89\xf0\x5a\xa8\x8e\xbb\x1e\xd1\x81\xba\x4a\xd6\xde\x1f\x95\x0b\xad\x2f\xc1\xc9\x5f\x15\x68\xaf\x11\x88\x2e\xb9\xcc\xaa\x52\x5c\xd8\xd5\x12\x1b\x58\x83\x8b\x26\x8d\xc1\x4e\x41\xe4\xf8\x47\x61\x92\xe1\xd2\x85\xcd\xe3\x23\x1f\xce\xff\xe8\x97\x71\x27\xc0\xc0\x92\x92\xeb\xb5\x18\xec\xdb\xd8\x3c\xe2\x93\x34\xda\x37\x9f\xe6\x5a\xe5\xe8\x90\x75\xcb\x0a\x77\x9c\x6e\xd5\xac\xa5\x99\xf3\x6e\xa0\x48\xf6\x56\xa5\xe7\xe7\xba\x43\x72\x55\xf2\x44\xb0\x42\x94\x52\xa5\x0c\x32\x3d\x53\xf5\x44\x39\xb0\x0b\xb1\x92\xb9\x76\xdc\x02\xd3\xf6\x6c\x65\x6f\x38\xec\xc7\xeb\xcb\x52\xcd\xd9\x47\x6a\xfd\x31\xd6\x24\xd9\xa8\xca\x24\xaa\x11\x78\x6e\x26\x17\x3b\x4b\x4c\xac\x37\x01\xcc\x54\xf1\x2c\xdb\x36\x8c\xea\xb1\xb0\xe6\xe0\xd2\x10\x88\xb6\x17\xef\xb3\xc4\x9b\xec\x09\x69\xfe\x6d\xfc\x60\xc1\xb3\x2f\x78\xb2\xa6\x57\x64\x9a\x42\x58\xad\x67\x0a\x61\x4d\x21\xac\x29\x84\x35\x85\xb0\xfa\x9e\x29\x84\x35\x85\xb0\xa6\x10\xd6\x14\xc2\x9a\x42\x58\xcd\x33\x85\xb0\x8e\x33\xfe\x29\x84\x35\x85\xb0\x76\x9f\x29\x84\x75\xe8\xf9\x95\xb9\x27\xa7\x10\xd6\x97\x77\xce\x4e\x21\xac\x29\x84\x45\x25\x32\xdd\x11\x53\x08\x6b\x0a\x61\x0d\xfe\x98\xf8\x43\x1f\xfb\xb9\xb5\xf6\x4d\x4c\x9e\xd7\x2d\x78\xbb\x65\x82\x96\x91\xe5\xbb\x76\x96\x0f\x12\x9d\x37\x25\xe4\x03\x13\x6b\x6a\x5c\xf8\x2c\x15\x17\xf0\x41\xea\x90\x05\x73\xb2\xd6\x28\x7d\xed\x91\x0a\x95\x36\xde\xf7\x96\xdb\x1d\x6d\xc1\x61\x71\x45\x17\xcf\x34\x7f\x7b\x9c\xaf\x9d\x96\xaa\xc5\x30\xb3\x8a\xe2\x67\xa7\x7b\xd0\x63\xfb\x7d\x47\x78\xce\x23\xbc\xe6\xde\x17\x4e\xbd\x9a\x43\x1e\xf3\xc6\x0f\x4e\xa4\x38\xec\x2d\x3f\xe0\x03\xa7\xd2\x3d\xec\x29\x3f\xe8\xff\xa6\x4e\x7e\xdf\x4b\x3e\xe4\xfb\xa6\x2f\x69\xed\x21\x0f\xf9\xbd\xc9\xa1\x21\xef\x1d\xa7\xf8\xbc\x63\x88\xce\x4f\xe0\xef\x7e\xa6\xaf\x3b\xca\x25\x16\xad\x46\xc4\x78\x07\x22\xee\x27\x07\x08\xb8\x5f\x97\x42\xaf\x55\x46\x38\xd7\x9d\x33\xfd\x4e\xe6\x72\x53\x6d\xa0\x75\xa4\x3d\xbe\xd2\xf5\x86\xac\x4a\x51\xb7\x89\x25\x4c\x0f\xef\x0c\x74\xe2\x35\x5d\x28\xeb\x2e\x93\x4b\x23\x4a\xb6\xe6\x8f\x20\x27\xab\x24\x11\x22\xa5\xb5\x80\x68\x9b\x64\x7f\x98\xd7\xa3\xad\xfb\x00\x7c\x13\x26\x82\x75\x31\x41\x53\xfc\xc3\xef\x89\x2b\x4f\xd3\x2a\xc9\x21\x85\xc8\x70\x02\x4d\x8b\x24\x87\x12\xe2\xae\x07\xba\xc9\x72\x92\xf0\x01\x31\x74\xe0\x02\x02\x64\xc1\x38\x3e\x6c\x10\x79\xce\xa3\xc3\x05\xe4\x50\x41\x1d\x00\x20\x4e\xfa\xf9\x61\x82\x28\x79\x48\x0f\x0f\xb8\x41\xd0\x4d\xcf\x67\x86\x06\xc6\x84\x05\x9e\x55\x17\xf3\xb9\xe1\x80\x51\x16\x6a\x74\x18\xe0\xb8\x21\x80\xcf\x52\x0b\x37\x62\x1d\xe3\x5c\xfe\xd1\xee\xfe\x38\x57\x3f\xdd\xcd\x7f\x0a\x17\x7f\xe4\xd6\xd0\xdd\x36\x11\x2e\x9b\x31\xee\x9a\x11\xae\x1a\xba\x2b\xdf\x2d\x2a\x91\x3f\x42\x2e\x9a\x8e\xe3\x85\x48\x73\xc0\x3d\x33\xc6\xe9\x72\x04\x87\x4b\x8c\x43\x9e\xec\x8c\xa7\x83\x3b\x99\xd3\x3e\xc6\x3a\xe2\xa3\xb8\x85\x2e\x7c\x88\x6e\xa5\x08\x11\xe2\xfa\xce\xbf\x11\x19\xdf\xde\x89\x44\xe5\x29\xe1\x66\xda\x29\x64\x56\xf3\xb4\x46\x02\x4e\xc7\x8e\x45\x68\xae\xb9\xf6\x6d\xe6\x3d\xf8\x35\xeb\xb6\x3f\x87\x7e\x01\x38\x62\x82\xf7\x87\x7d\x51\x0f\x10\x3b\xa9\xba\x8f\x60\xd3\x71\x1b\xf6\x9f\xea\x89\xa9\xa5\x11\x39\x7b\x21\x73\xbf\x67\x2f\x5b\x88\xa0\x18\x3b\xab\x3e\x20\xf6\xfd\x6f\x5e\x79\x72\x5f\x9b\x79\x04\x86\x9e\xd6\xc7\xb4\x4c\x1d\xc9\x63\x98\xa6\x8e\xd4\xb2\xca\xba\xe6\x29\x9a\xac\xb1\xb6\xe9\x37\x4d\x89\xc6\x6f\x60\x6c\xf5\x29\xe2\x79\xca\x1c\xc8\x9f\x74\x78\xbe\xaa\x2d\x8c\x08\x0f\x9e\x2a\x34\x18\x15\x16\x6c\x02\x7e\x24\xca\xcf\x0b\x09\x7e\x16\xbb\x3a\x10\x06\xb4\x26\x36\xd9\x40\x7b\x46\x08\xf0\x37\xab\x43\x0e\x85\xfa\x26\x1d\x72\xf7\xf9\x92\x5a\x95\x91\x1b\xa1\x2a\x73\x64\x85\xea\x69\x2d\x93\x75\x13\x16\x23\x2c\xa3\x1d\x87\x66\xaa\xda\xd1\x63\xbf\x71\x84\xf7\x6f\x69\x02\xcd\x6f\xa2\xf3\x5a\x7e\x21\x5a\x15\x71\x7f\xc3\xee\x98\xde\xde\xd5\x4d\x88\xb4\xe9\xd0\xc6\x35\xe3\xec\xcd\xfb\xbb\x9f\xdf\x5e\xfd\xed\xfa\x6d\xe8\x6c\x5c\xf3\x64\xdd\x4e\x0e\xcc\x19\x07\xe1\x09\x67\x6d\xcd\x1f\x05\xe3\xac\xca\xe5\x3f\x2a\xac\xa5\xca\x5e\xd4\x94\x5f\x1e\xb9\xd2\x3d\x51\x96\x41\x7f\xc6\x11\x7d\x1b\xe0\x3d\x17\xe2\x51\xd6\x90\x2b\xd5\x66\x47\x66\x85\x96\xca\xbe\x68\xb5\x28\x8e\x32\x72\x2d\x4a\xc1\x56\xf2\xd1\x39\xb9\x5d\x51\x4b\x9e\xd6\xe1\x2d\xcb\xd0\x96\xb3\xc2\x79\x45\x7c\x01\x81\xa6\xb5\x60\xb9\x30\x96\xbb\x6b\x1b\x53\xe5\xba\x93\xbd\x59\x69\xa1\x2f\xd8\xa2\x0a\x9a\x61\xd6\xc4\x91\x1b\x5e\xca\x6c\xdb\x1e\x08\xcf\xe6\xec\xbd\xf2\x9a\xcb\x76\x67\x3a\x01\xa2\x6f\x3e\x5c\xdf\xb1\xf7\x1f\xee\xa1\x01\x38\x14\xa7\x5d\x73\x83\x6f\xc3\x72\x2e\x84\xa5\xe7\x3a\x6e\xcd\xd9\x55\xbe\xa5\x08\x42\x94\x42\x52\x33\xab\xae\x88\xdc\x92\x70\xd7\x89\x2f\x7c\x7b\xf6\x6a\x0e\xff\x77\x66\x57\xb7\x0c\xdf\x4a\x75\xd8\xb1\x9b\x7b\x08\x77\x07\xdc\x6a\x72\x91\xb5\x38\xc0\xad\xf9\x17\xef\xdc\x50\x83\x1b\x6e\xed\x8a\xb6\xbb\xef\xd7\x6c\x41\xba\x57\xb0\x67\x88\xcc\x57\x59\x04\x77\x47\x76\x6f\x68\x06\x1a\x5d\x4d\xbd\xb9\x8d\xbc\xaa\xe1\x8e\xa4\xdb\x75\x68\x95\x45\xba\xd2\x6f\x6e\x3d\x43\xcc\xb1\x08\xf3\x66\xa7\xd9\x14\x7c\x00\x5d\x64\x34\x4d\xf2\x15\xfb\x0b\xfb\xc4\xfe\x02\x6a\xc7\x9f\x28\x7a\x45\xdc\xdd\x11\x67\xa0\xa0\x5e\x7d\x73\x1b\xbd\xc2\x3f\xd9\x63\x69\xdf\xb5\x2b\x64\x8d\x43\x99\xa7\xae\x19\x9e\x11\xa5\x15\x4d\x74\x30\x91\x3a\x7a\x1d\x7e\x3b\xb0\x93\x30\x0e\xf8\xd7\x68\x8c\xb3\x6c\x55\x77\x66\xe6\x04\xac\x63\x3f\x61\x6d\x9a\xf7\xee\xe0\x76\xea\x49\xc3\x17\x49\x44\x61\x54\x1b\x6e\x92\x75\x57\x3a\x58\x95\x49\x9b\xe6\x20\x6a\x96\x2a\x16\xae\x7b\x8c\x0f\x82\x1d\xd6\x92\x14\x29\x3b\x2d\x83\x53\x43\x51\x1d\x3e\x18\xda\xbd\x1d\xd3\x80\x68\xa6\xa5\x5e\xc7\x69\xa5\x99\x17\x2a\x9d\xa3\x7a\x64\x07\xe9\x18\x22\x58\x65\xdd\x51\x1c\xd2\xa1\x9c\x35\xe3\x11\x3d\xf4\xa3\x68\x4f\x75\xc2\x73\xc4\xb5\x2d\x45\x59\x22\x66\x65\xb1\x65\xae\x01\x34\x69\x43\xa3\xce\x6a\x51\x2a\xa3\x12\x45\xea\x6e\xd0\x0d\xef\xb8\x17\x61\x9a\xe8\xe0\xf0\x3e\xa4\x1f\xde\xdc\x5e\xb0\xfb\xd7\xb7\xb4\x63\xa5\x4a\x76\xf7\xfa\xfe\xb6\x6b\x6f\x9c\xdd\xbf\xbe\x25\xb5\x61\x8e\x98\x2c\xbd\x5d\x59\xe7\xfa\x0b\x19\x6e\xc7\xed\x86\x50\x0a\x9e\xca\xa3\xe3\x2b\x1d\xfb\x34\xd4\x83\xaa\xd0\x9e\x5e\x55\x8a\x8d\x7a\x14\x29\x2a\x55\x9e\x9e\xc8\xd3\x42\x49\xab\xc1\xc8\x50\xc3\x29\x02\x36\x73\x42\x5f\x06\x9f\x09\x7d\xc9\x26\xf4\xe5\x84\xbe\x9c\xd0\x97\xa1\xdf\x4e\xe8\xcb\x09\x7d\xd9\xff\x4c\xe8\xcb\x09\x7d\x39\xf4\x4c\xe8\x4b\xf7\x4c\xe8\xcb\x11\x43\x9e\xd0\x97\x84\x17\x26\xf4\xe5\x57\x1d\x39\x9f\xd0\x97\x13\xfa\xb2\xef\x99\xd0\x97\xf0\x4c\xe8\xcb\x09\x7d\x39\xa1\x2f\x27\xf4\x65\xdf\x6f\x27\xf4\x65\xff\x33\xa1\x2f\x7b\x9f\x5f\x8f\x0e\x39\xa1\x2f\x27\xf4\xe5\x84\xbe\xfc\xd2\xe8\x4b\xdf\x5e\x20\x06\x53\x78\xfe\x5a\x6d\x8a\xca\x08\xf6\xd1\xbf\x5c\xb3\x27\x5b\x6c\x11\x91\x40\x06\x5e\x3d\x3f\xd0\x89\x2d\xe5\xab\x12\x00\x7e\x97\x58\xd5\x7e\x96\xe0\x10\x67\xf5\xfc\x66\xf5\x88\x2e\x8f\x15\xec\xcc\xe4\x46\x86\xc0\x98\xf6\x69\x30\x91\xb7\x51\x17\x5b\x94\x80\xed\xee\xd0\x5b\x18\x5a\xcb\x45\x88\x2d\xc8\x3f\xc1\xf1\xe0\x1b\x55\x91\xee\x71\x88\x92\xe3\x56\xd7\xeb\x88\x8e\xcf\x2f\xbf\x4d\x2c\x4e\x86\x39\x17\xef\xd7\xb9\x5b\x1f\xdd\xe0\x76\xf7\xcb\x89\xb3\xe7\xed\x97\x3f\x9a\x80\xc9\xaa\xbf\x24\x35\x53\x1b\x69\x8c\xa0\xc4\xd5\xad\xda\xcd\xdb\xc1\x64\x69\x3a\x4a\x8f\xe3\x36\xa8\x31\xc5\x0d\x4d\xf0\xb6\x82\x9d\x2d\x34\x93\x32\x6b\x51\x3e\x49\xed\xbb\xb2\xd4\x5a\x27\x70\xcd\x2c\x15\x4b\x99\x93\x86\x0c\x57\xc0\x2f\x8a\x47\x89\x3f\xb4\x16\x5b\x29\xcd\xf6\xb5\xca\x8d\xf8\x14\xd0\x05\xbb\x6c\x76\xe7\x5e\x65\xaa\xc0\x48\xb6\x57\x56\x5d\x93\x88\xb2\xca\x01\x01\x76\xe4\x32\x60\xd8\xe5\xfe\xd2\x0f\x1c\x56\x4f\x7c\x32\x97\x47\xf9\x8a\xe1\xfa\xa1\xd9\x37\x31\xb3\xd7\x71\xb3\x3d\x7b\xdf\x3c\x96\xe8\x07\x21\x78\x5b\xca\x47\x99\x89\x95\xb8\xd6\x09\xcf\x80\x67\x62\x95\xa3\xab\x1e\x3a\x70\xd8\x4a\x95\x69\xf6\xb4\x16\xf6\x4c\x90\xac\xae\xa2\x54\xe0\xcf\x4e\x78\xce\x56\x5c\xe6\x6c\x63\xd7\xb0\xf0\xe4\xed\x86\xdb\x33\x65\x34\x2b\x78\x49\x33\xe5\x1c\x49\x07\x30\x5e\x28\x95\x39\xf4\x48\xb6\x6d\xc6\xe8\x8a\xcb\xe5\xea\xe7\x5c\x3c\xfd\x6c\xbf\x47\x91\x00\xcb\x8c\xaf\x6a\x00\x95\x16\x66\x4f\x8f\x6f\x3e\xde\xb7\x4c\x84\xaf\x00\xf4\xa1\x12\x8c\x67\x4f\x7c\x0b\xcb\xb9\xfb\x15\xa9\xbf\x65\xdf\xbc\x04\xee\xe7\x94\x71\xd7\xe3\x48\xd9\xef\x5f\x82\x9f\xef\xf5\xd5\xed\xcf\x77\xff\x75\xf7\xf3\xd5\x9b\x77\x37\xef\xa9\x22\xc1\xae\xa5\x08\x96\x6b\x4c\x78\xc1\x17\x32\x93\xb4\x5b\x68\x2f\xf2\xd4\x7e\x1d\x44\x6a\x9a\x5e\xa6\xa5\x2a\x70\x1d\xca\x2a\xcf\x69\xc6\x5b\x83\xb4\xed\xea\xde\xed\x34\x05\xd8\xc2\x65\xe7\x93\x04\xca\xab\x92\xe7\xc6\x2b\x8e\xed\x6d\x29\xab\xdc\x2a\xfc\xc7\x8e\xc2\xf3\x74\x0c\x40\xeb\x2a\x4d\x45\x1a\x3b\xb5\xe7\xc4\x79\x5f\xfb\x4f\x6d\x9b\x4c\x08\x76\xfb\xe1\xee\xe6\x7f\xc5\x8f\x82\x39\x9e\x8b\x0a\xd9\x9d\x08\x7f\xc3\x98\x65\xbf\x11\x3b\xf0\xd1\x21\x2c\xa7\x3d\x18\x78\xe1\xe8\x18\xa8\xfa\xee\x88\xf5\x31\x7f\xac\xf2\x6e\x5e\x5d\x43\x89\x6d\x54\x2a\xe6\xec\x16\x85\x3b\x69\xfd\xba\xef\xb7\x60\xff\xbc\x14\xcc\x12\xc9\x8d\x84\x8e\x69\x56\xd7\x7d\xe4\x19\xed\x6e\x33\x0a\x51\x8c\xed\xfc\x89\x8e\x74\x5b\xf2\x4c\x13\x04\x50\x8c\x3c\xb7\x57\xda\x3b\xab\xce\x47\xae\x67\xfd\x1e\x4b\x45\xae\x8c\xb3\x10\xec\x97\x21\x21\xa4\x54\x09\xa3\x5a\x09\xad\x60\x62\x47\xe2\xba\x8e\x7e\x5e\x9c\x4b\xed\xd7\xe2\xd6\x7f\x9b\x40\x1c\xbd\x3a\x95\x16\xfa\xb0\x38\x6f\xec\x06\xfb\xfd\x52\xf0\x54\xe5\x19\x35\xd2\x8f\x3e\xff\x0d\xd7\x0f\x22\xc5\x3f\x38\xbd\xc4\xd9\x38\xda\x75\xf7\x73\xc3\xbd\xa7\x9d\xb7\xa5\xe0\xa6\x2a\x05\xea\x23\x18\xcd\x10\x39\x5f\x90\x62\x15\x51\x00\x7b\x9e\x7e\xc8\xb3\xed\x47\xa5\xcc\x77\x35\xf0\x35\x92\x0d\x7e\x42\x6d\x70\xc7\xc7\x02\x4a\x08\x38\xdd\xd3\x19\x71\x39\x81\xf1\xdb\xf8\xdb\x37\xcd\xb6\x9f\x80\xed\xcb\x2a\xbf\xd2\xdf\x97\xaa\x8a\x6d\x01\x6a\x39\xf2\xfb\x9b\x37\x70\x56\x2b\x3c\xa7\x22\x37\xe5\x16\x80\xf5\xce\x6b\x1c\xa3\xbf\x34\x3a\xe5\x0f\x96\x47\x77\xb8\xd2\x6a\xb2\x55\xae\x05\x09\x0a\xf6\x8e\x6f\x19\xcf\xb4\xf2\xea\xab\xcc\xd9\x2d\x44\x31\xdb\xf6\xd9\x1c\xb3\xad\x04\x31\x77\x66\xa1\xcc\x9a\xed\x90\x00\xa6\xdf\xa7\x7c\x41\x9c\x3a\x3a\x43\x9b\x04\x69\x99\xef\x7d\xc0\xf0\x07\xa1\x59\x51\x8a\x44\xa4\x22\x4f\x08\x7b\xdf\xf2\x5a\xfe\xe9\x8f\x47\x0d\x8c\x01\xa7\xbc\x57\xb9\x3d\x26\x91\xbc\x72\x93\xa7\x32\xe1\x28\x1b\xb9\xd9\x91\x3f\xe0\xbf\x2f\x2b\xca\x26\xc0\x61\xca\x55\x3e\x83\x43\x52\x69\x51\x82\xef\xc4\x9a\x11\x88\xa3\xff\x7b\xb5\x10\x99\x30\x68\xbc\x40\xbe\x1c\x27\xa1\xf3\xed\xbb\x72\xc3\x57\x82\x71\x53\xb3\x9e\x51\x4c\xe4\xba\x82\xd6\xa4\xdc\x80\x6b\x45\x09\x4d\xcc\x66\x43\xa3\x85\xfd\x70\xf3\x86\xbd\x62\x2f\xec\x78\x5f\x02\xbb\x2c\xb9\xcc\x00\xe4\x68\x78\x69\xa2\xb1\x0b\x72\xe9\x87\x01\x13\x87\x13\xc1\x54\x89\x82\xe1\x82\xe5\x0a\x7b\xdd\xba\x99\xd3\xec\x30\x6f\xe8\xb9\xa8\x3c\x38\x10\xc9\x07\x88\x40\xdf\x11\x88\x39\x40\xc4\x1d\x3b\xc9\x01\x8a\x16\x9e\x3f\x68\x51\x8e\x90\x9d\x3f\x9c\x44\x76\xb6\x95\x24\x7b\x3e\x3a\xab\x43\x61\x30\x38\x04\x1b\x61\x78\xca\x0d\x77\x52\xb7\xc9\xdc\xd9\x67\x0c\x8a\x59\x3e\x28\x7b\x0f\x32\x06\x45\x16\xf4\xcb\x5e\x02\x63\x50\x38\xec\x2b\x92\xbd\x5a\xbc\x95\x79\xf5\x09\x03\xe3\x63\xdc\x0d\x77\xd7\x40\x80\x25\xfe\x5c\xc0\x16\xf2\xa2\xc8\x24\xa4\xb8\x10\x4f\x5c\x2b\x92\x7b\xd3\x61\x8d\xdd\x96\xca\x4e\x86\x52\xc5\x0f\xcf\x32\x65\x2f\x08\xab\x2b\xf1\x3c\x55\x9b\xbd\x01\x5b\xa5\x54\xf0\x64\x1d\x73\x2c\xe6\x31\xaa\xc0\xaf\x4f\x92\xc5\xb9\x5f\x32\xf1\x28\x48\xe9\xb4\xbb\x75\x4c\xec\x7b\x56\x39\xf5\x3b\x06\x84\x58\xc6\x17\x22\x8b\xc9\x90\x42\x5e\xac\x7d\x57\xe4\x30\x25\x3e\x91\x66\x79\xa9\xb2\x31\xa0\xcf\x8f\x2a\x03\x80\x12\xaf\x27\x6b\x09\x7d\xe5\x73\x85\x9f\xc7\xcf\xd5\xda\x68\xdd\xb9\x82\x4d\xfb\x75\xcf\xb5\x22\xdd\xc5\x6c\x77\xae\xf6\x0a\xef\xce\x15\xee\xce\xaf\x79\xae\x11\xae\xa2\x27\x99\xa7\xea\x49\x8f\xbf\x3c\x7e\x42\x02\x5e\x3e\x25\x56\x10\x1a\x99\xaf\xb4\xbf\x40\x68\xbe\x0d\x9e\x65\x1d\x9f\xc6\xa1\x1b\xc4\x07\xc0\x96\x25\xa9\xa3\xa9\x6b\xbb\xbf\x2b\x2b\xbd\x4a\x5b\x69\x17\x5d\x6d\x49\x6e\x02\xd5\x08\x33\x8f\x9c\x72\xf1\x45\x65\xfb\x6a\xa3\xf9\xeb\xd2\xd2\x36\x92\x67\x77\xc5\xa8\xc6\xf7\xdf\xbf\xbb\xbb\xea\x12\xb1\x47\xe6\x09\xaa\x4d\xd9\x95\xb0\xff\x4e\x3d\x27\xe9\x46\x6a\x2d\x55\xce\x9e\xc4\x62\xad\xd4\x03\x7b\xe1\x23\x89\x2b\x69\xd6\xd5\x62\x9e\xa8\x4d\x2b\xa8\x38\xd3\x72\xa5\x2f\x1d\x1f\xcf\xec\x6c\xa8\x7d\xd8\x65\x9e\xc9\xbc\xe5\xf2\x82\xb2\x45\x0e\xd2\x66\x07\xcc\x92\x7a\x46\x44\x8a\x76\x23\x5d\xe5\x0d\x17\x19\xd9\x5f\x18\xac\xa3\x21\x45\x46\xee\x92\x0c\xce\x32\x4c\x43\xb2\x72\x28\x2b\xd6\x7c\x86\x17\xa9\x4b\xbb\x86\x24\xfc\xb5\xca\x55\x49\x3a\x6e\xf6\x71\xf5\x37\x20\xab\xce\x1a\xb0\xe8\x3b\x83\x21\xbb\x13\x0d\x2b\xe0\xbc\x6c\x44\xa2\xcb\x8c\xaf\x4e\x22\xba\xf7\x79\xf4\x3d\x39\x21\x2d\xc0\xa7\xb0\x1d\x2e\x83\x3f\x22\x9f\xea\x30\x9b\x20\x03\xa0\x79\x35\x6f\xed\x1b\x95\x21\x83\xbb\xdb\xda\x37\x6a\x4c\x22\xbc\xbb\xa7\xdb\xb7\xda\x06\x1e\xb9\x5d\x60\x0b\xbb\xd7\xad\x6c\xf4\x97\x4d\x63\x1b\x13\x57\x61\xcf\x82\x1e\xb2\x8f\xa9\x2b\x8b\x17\xf9\x9e\x25\x1d\xb0\x93\x89\xd4\x89\xc6\x09\xde\x5f\x64\x81\x77\x6c\xfb\x84\x45\xda\x28\x44\x92\xad\xdb\x2e\x24\xfd\x22\x4a\x4c\xf4\x1c\xa4\xbe\x23\xf2\xb1\xcd\xbc\x54\x09\x78\xda\x13\x75\x74\x58\x12\x26\x62\x44\xd7\xe5\xb9\x6b\xbd\xc7\xe4\xbe\x03\xf7\x56\xa5\x6c\x1d\x84\x65\x34\x29\x27\x50\xee\x11\x92\xc0\xe4\x3f\xbd\x56\xd6\xe8\x7e\xb9\x42\x84\x19\x2d\xcd\x19\x82\x8b\x58\x7a\x25\x65\x55\x6e\x64\xe6\xe3\x2e\x9b\x22\xb3\x0a\x43\xe7\xbb\xe8\x23\x0e\x57\x36\x6b\x95\xf9\xb9\xa8\xa7\xb8\xd7\xb0\xf1\x82\xfd\x77\xa5\x0d\xe3\x1e\x5c\x13\x20\xda\xe9\x3b\xe9\x33\x6d\x90\xe1\x5d\xc9\x2c\xc8\xf2\x36\xca\x7e\xfe\x51\xa6\x82\xa5\x72\xb9\x14\x04\x10\x10\x0e\xb7\xe0\x25\xdf\x08\x03\x21\x57\xdc\x98\x85\x58\xc9\x1c\xab\x55\x2e\x19\xb7\x93\x38\x3f\xd7\x4d\xa6\x47\xe8\xc8\x03\xfe\x44\x1a\xb6\x91\xab\x35\x9e\x68\xc6\x59\xa6\xf2\x15\xf3\x4e\xf1\x4c\xf1\x94\x81\xd8\x53\x25\x7b\xe2\x65\x48\x51\xe7\x2c\xe1\xc9\x1a\x3c\xf4\x3c\x67\x69\x55\x42\x49\x0c\x23\x78\xba\x9d\x69\xc3\x8d\xd5\xfa\x05\x22\xfb\x9a\x95\x09\x7b\xd9\xdb\xc0\x64\x78\x4b\x62\xbe\x8d\x95\x1e\xf5\x21\x75\xf1\x42\xa7\xaa\x05\x28\x76\x58\xbe\x73\xcc\xa7\x12\x4f\xc1\x67\x2a\xf1\xc4\xa6\x12\x4f\x53\x89\xa7\xa9\xc4\x53\xe8\xb7\x53\x89\xa7\xa9\xc4\x53\xff\x33\x95\x78\x9a\x4a\x3c\x0d\x3d\x53\x89\x27\xf7\x4c\x25\x9e\x46\x0c\x79\x2a\xf1\x44\x78\x61\x2a\xf1\xf4\x55\xa7\xe7\x4f\x25\x9e\xa6\x12\x4f\x7d\xcf\x54\xe2\x09\x9e\xa9\xc4\xd3\x54\xe2\x69\x2a\xf1\x34\x95\x78\xea\xfb\xed\x54\xe2\xa9\xff\x99\x4a\x3c\xf5\x3e\xbf\x1e\x1d\x72\x2a\xf1\x34\x95\x78\x9a\x4a\x3c\x7d\xe9\x12\x4f\xda\xa4\x32\x50\x98\x82\x92\x63\xe8\x8a\x84\x34\x18\xfa\x50\xe0\xb4\x5a\x2e\x45\x09\xf7\x39\x8c\x60\x2f\x86\x54\x67\xf8\xfb\xc0\x79\x78\x3b\xed\xcd\xa5\x85\xb9\x80\x54\x47\xed\xba\xed\x1c\x26\xee\x00\xff\x4f\x7c\x1b\x22\x5a\x0a\x0d\xa9\x7f\x39\xbb\xfe\xf0\x5d\x6c\x22\x24\x35\x8f\x07\x46\xf9\x21\x4f\x62\xc0\x11\xcd\x46\x1c\x4a\xa4\x75\xfb\x91\x64\x4a\x87\x4e\x16\xf4\xe7\x84\x65\x4a\xd6\x3c\xcf\x85\xd7\xda\xa4\x01\x1b\x66\x21\x44\xce\x54\x21\x72\x8c\x60\xfb\xe6\x89\xa1\x78\xbb\x31\x3c\x59\xcf\xed\x28\x73\xbf\x09\xae\xd6\x46\xf3\x3d\x6d\x4a\xc1\x37\xb8\x19\xa5\xd8\xf0\x60\x26\x8f\x1d\x06\xe3\x49\xa9\xb4\x66\x9b\x2a\x33\xb2\xc8\x84\xfb\x14\xd3\x02\xd0\x9c\x88\xe9\xad\x17\x34\xcc\x35\x5a\x60\x90\x0d\xf2\xf7\xea\x91\xba\x09\xab\x76\x9e\x3a\xe8\x9a\x17\x61\x8a\x62\x53\x98\x6d\x0d\x09\x11\x6c\x29\x4b\x6d\x58\x92\x49\x91\x1b\x37\x5a\xc4\x67\xc3\xd7\x2e\xac\x1e\x1b\xde\xa2\xdc\xad\x90\x76\x8b\x90\xa7\x70\x47\x16\x46\x23\x0c\xa2\xf9\x1c\x7e\x28\x40\x31\x95\xda\xe9\x39\xfa\x82\x71\xe3\x85\x31\xb0\x8e\x5f\x03\x60\x9e\x14\x3e\xe5\xbe\x1d\x20\xea\x5e\x68\x0d\xa5\x55\x46\xa5\x41\xaf\x34\x47\x7a\x99\xf1\x90\xe6\xe0\x0f\xda\x45\xa7\x63\x69\xe1\xcb\x03\x20\x16\x68\xf7\xc0\x07\x68\x02\xc3\xe5\xe2\xd1\x9e\x17\x91\x08\x6b\xfe\xf0\x9e\xf3\x7d\x94\xe3\x6d\x44\xb9\x91\x39\x80\x4b\xde\x09\xad\xf9\x4a\xdc\x06\xdd\x96\x7d\xaa\x2a\x78\x2e\x9b\x0d\x03\xf6\xca\x40\x6f\x85\xbf\x10\xce\x7a\x13\xa6\x3f\xd7\xed\xa1\xb1\x0d\x8e\xad\x86\x1b\x3d\x95\xd2\x18\x11\x5a\x4c\xa9\xb1\xb6\x00\xc4\x10\x76\x93\x0e\xec\x27\xda\x41\x7e\x37\xfd\xd0\xfe\xe0\x87\x2d\x69\x7b\xd3\xe5\xa9\xeb\xe5\x27\xd8\xa2\x94\x62\xc9\x96\x12\xe2\xf7\x10\xdf\xbe\xc0\x6c\xd3\x20\x08\xcc\x9a\x48\x5a\x5b\xa3\x42\xe5\x3e\x0c\xeb\x67\x3c\x67\x3f\xb9\x29\x9b\xb2\xca\x13\x6e\xa8\x60\x9d\x5c\xa5\x82\xc9\x25\x5b\x41\x6c\xbd\x44\x70\xd1\x1f\x5f\xfd\x5f\x7f\x62\x8b\xad\xd5\x1d\xc0\xf9\x6f\x94\xe1\x59\xbd\xb8\x99\xc8\x57\xc1\x04\x00\x27\xe2\xba\xc9\x0a\xf5\xbe\x40\x65\x41\x5c\x92\x6f\x7e\xff\xb0\x20\x03\x4a\x8d\x62\x97\xa9\x78\xbc\x6c\xed\xf9\x2c\x53\xab\x43\xed\xe4\x86\xd5\x16\xa2\xe2\x7f\x80\xed\xa1\xd8\x57\x04\xe3\xfb\xa4\x6d\xb6\x56\x4f\x58\xd3\xe2\x00\xbf\x92\xe0\x41\x0b\x6b\x5b\x14\x55\x86\x58\xad\xef\xec\x99\x81\xf5\xac\xb4\xd8\x07\xe6\x1f\x3c\xaf\xe1\xd5\xf5\x1f\xd8\x6d\x3f\x8e\x40\x0c\x3f\x5c\xe5\xd0\xb1\xce\x4d\x12\xe4\xdb\xd4\xb3\xeb\x9c\x7d\xc7\xb3\x6c\xc1\x93\x87\x7b\xf5\x56\xad\xf4\x87\xfc\xba\x2c\x55\xd9\x9d\x47\xc6\x75\x48\xf6\x27\xeb\x2a\x7f\xe8\x36\x39\xcc\xd4\xca\xea\xd5\x45\x65\x7c\xb9\xae\x03\x0b\x1d\x20\x0b\x72\x48\x6a\x77\xfd\x71\xd7\x55\xb7\xf9\x86\xf8\x04\x5c\xfb\x24\xad\x00\xcb\x99\xb0\x63\x0f\x19\x4f\xf6\xfc\xb4\xc7\xa6\xdb\xcc\xff\xfb\x57\x7f\xfc\x33\x1e\x34\x6b\x45\xfe\xf9\x15\xc0\xa5\x74\x18\x5b\x28\x93\x35\xc8\x7e\xa9\x99\xde\xf0\x2c\xb3\x06\x63\xdb\x9e\xb0\xcc\x71\xe8\x50\x1c\xe5\x4c\x98\x18\xf6\x3f\x92\xb2\x7d\x7f\xff\x5f\xa0\x69\x4b\xa3\x45\xb6\xbc\x40\xbc\x77\x5d\x15\xe5\x1c\xae\xcc\x73\x27\x61\xad\x1e\x54\x2f\x07\xf1\x6e\x3e\x8e\x12\xfc\xa8\xb2\x6a\x23\xde\x08\x68\xd6\x1a\xb1\x48\x9d\xf7\x3c\x82\x2e\x73\x9d\xed\x17\x99\x4a\x1e\x58\x8a\xff\x18\x3e\xc1\x3e\x1a\xbe\x5b\x6f\xac\x85\xee\x64\x0b\x61\x6a\x6c\xe7\xb1\xbb\x9c\xb7\xe7\xd2\x89\xef\x6f\x78\x51\xd4\x70\xda\x92\x3f\x05\x0d\xc5\xf6\xc4\x7d\xe7\x5e\x7e\x9a\x8e\xe7\xf8\x91\xb0\x4a\x73\x60\xbe\xcd\xab\x7e\xe3\x0a\xf8\xdf\x88\xdc\x23\x17\x21\x68\x97\x21\xa8\xc1\xe1\xf5\xdc\xf1\xd6\xb4\x2b\x08\x72\xe3\xe8\x7d\x80\x47\xf5\x69\xce\x6b\x9f\x12\x76\xb0\xf6\x79\x41\xb8\xc3\x85\x28\x35\x34\xfc\x37\x3f\x02\x47\xbc\xce\xb8\xa4\xe4\x22\x32\xd6\x34\x68\x3e\xee\x34\xe9\x1d\x80\x9b\x3d\x0d\xfe\x94\x80\x3a\x38\x72\x8f\x60\x3c\x60\x50\x00\x2a\x46\xc6\xdc\xaa\xd4\xbd\x0a\x37\x04\x28\xbc\x87\xd4\xdd\x90\x88\x69\xeb\xc2\x91\x17\x4c\xbc\x30\xf9\xb1\x99\x6b\x57\x96\xd8\xbf\xd4\xc2\x04\x7f\x15\x64\x96\xd3\x8a\x10\x18\xd2\x28\x09\x02\xb2\xa3\xd5\x99\xbc\x11\x04\xde\x48\xa2\x79\xe1\xd7\xc2\x6d\xb0\xbf\x5d\xad\xc8\x40\xbb\x66\xce\x30\x02\x65\x77\xcb\x91\x27\xd1\x3c\xff\xf6\xfc\xe8\xb2\x06\x17\xaa\x54\x05\x5f\x11\x4b\xca\xee\xac\xd7\x2e\x01\x96\x0a\x54\xf5\x84\x06\x25\x1b\xfe\x9d\xe6\x78\xe7\x50\x3e\x16\x29\xf9\xee\xd6\xbe\x54\x9e\x0b\xa4\xf8\xad\x08\x7a\x38\xdc\x52\xac\x85\x4b\xc1\x79\xe2\x5b\xc6\x4b\x55\xe5\xa9\xf3\x21\xd5\xce\xbd\x77\x3b\x13\x78\xaf\x72\xda\x15\x21\xb5\xcb\xc5\xee\x66\x7a\xc1\x75\x2e\x73\xf6\xcd\xfc\x9b\x57\x5f\xc7\xd5\x70\x5f\x37\xed\x6f\xae\x86\xf7\xf5\xd5\x80\xe7\xf5\xe8\x23\xf5\x05\xe8\xa2\x47\xfb\xce\x19\xff\x75\x7d\x39\xb0\x20\xc0\x9b\x06\x7f\xb2\xc6\x3c\x6d\x83\x9a\xf2\xde\x2f\x40\xad\xb4\x5a\x7d\x2b\xa3\xf1\x65\x47\x4b\x27\x51\x24\xd6\xaa\x8b\x2b\xb8\xc4\x98\xae\x16\x47\x91\x55\x4e\xe0\xc0\xc1\xa9\xfd\x39\x71\xea\xce\xb9\x1e\x10\x5b\x51\x89\xa6\x46\xb1\xb3\x33\xf6\x02\xa9\x9d\x63\x7e\xc7\xcb\xa3\xb3\x99\x5b\xba\xeb\x4f\x05\xa9\x46\x46\x67\xf9\xae\x3f\x15\x1c\x7c\x41\x45\xff\x3a\x92\xa6\xda\xf8\xce\x48\xeb\x48\xa2\xf9\x37\xb1\xe6\x8f\x02\xf2\x56\x64\xc6\xcb\x6c\x6b\x17\xf4\x0e\x67\xcb\x16\x95\x61\x22\x7f\x94\xa5\xca\x37\x22\x37\xec\x91\x97\x92\x2f\x82\x4e\x74\x7c\x4a\x01\xa9\x78\xd6\xb8\xf9\x97\x17\x3f\x5e\x7d\x84\xa8\xe3\x4b\x97\x7f\xe8\x56\xa4\xd2\x80\x07\x1b\xc1\x3d\xad\x61\x75\xad\xe0\x36\x33\xd0\xc6\x09\x0c\xe3\xe7\x6c\x77\x18\x9c\x00\x7e\x0d\xec\x78\x37\x95\xa9\xb0\x12\xeb\xa7\x24\xab\xb4\x7c\x24\x1d\xce\xdd\xca\x04\x2d\x89\xfd\xaf\x47\x66\x50\xba\x96\x5b\x6b\x2c\x5f\xa1\x92\xeb\xd2\xbc\xde\xc8\xc0\x19\xdb\x49\x41\x6b\x98\x62\x2f\x4f\x0c\x5c\xf6\x70\x05\xd7\xe9\xb2\x31\x9e\x66\x1f\x96\x3a\xd7\x75\x2d\xcd\x76\x79\x94\x0b\x92\xa2\x86\xc9\xa0\x08\x35\xc2\x7a\xfe\xe9\x7e\x60\x0f\x72\xe2\x5b\xba\x75\x80\xe6\xf1\x5c\x3b\x61\xce\x09\x70\x02\x81\x07\x42\xbb\x5f\x87\xa1\xfb\x06\xd1\xad\x5a\x9e\xf8\x3e\x0f\xce\x60\xc6\x8e\x16\x20\xa0\xd0\x46\xf1\xb2\xd0\xf0\x87\xfe\x71\xcb\x9c\x95\x42\x17\x2a\xd7\xa2\xab\xf4\x35\xa0\x1f\xf1\x28\x72\xa3\x23\x2c\x1e\x8a\xe9\x50\x28\x6d\x20\x59\x76\x88\xc7\xbb\x51\x94\x5b\xff\x0a\x44\xb7\x78\x96\x59\x0e\xda\x6c\x44\x2a\xb9\x11\xd9\xd6\xc5\x3d\x39\x11\xe6\x69\x69\x60\x4e\x9d\x0b\x68\x09\xb6\xe6\x79\x9a\x89\xb2\x9d\xbf\xdd\x09\x81\x79\xa7\x6a\xa0\x7c\x0a\x46\xdc\x3c\x78\x94\x27\x89\x2a\x53\x87\xf7\x95\xa6\x0e\xa4\x31\x6c\x9d\x31\x67\x1f\x40\x63\x6e\x76\x6f\x90\xf6\x5e\x59\x0a\x70\x14\xe9\x56\xd0\x0e\x6a\xe1\xd4\x59\xec\x08\x8f\x18\x5e\x88\x98\x0e\x2a\x2e\x98\xd1\xfc\xcf\x06\x3c\x31\x03\x00\xda\x65\x0b\x43\x01\x7f\x18\x8a\x45\x50\x6d\x4c\x4a\x5a\xf2\x69\x92\x92\x8f\x9c\x92\x1c\x63\x54\x47\xa4\x23\x9f\x2a\x19\x39\x22\x15\x99\x2d\x15\x0d\x78\x76\xfc\x44\xe4\x98\x34\x64\x1a\xaa\x88\x45\x25\x21\x77\xd2\x8b\x49\xd4\x03\x29\xc8\xbb\xc9\xc5\x54\x03\x60\x20\x01\xf9\x40\x6a\x31\xcd\xa8\x1b\x4e\x3f\xde\x4d\x2c\x26\xd1\x8c\x4a\x3e\x8e\x48\xb5\x1b\x53\xd4\x90\x94\xa9\x44\xd6\xef\x88\x79\xaf\xf1\x59\xaf\xd4\x9c\xd6\x18\xf9\x42\xc5\xdd\xc6\x65\xb3\x52\x6d\xfb\x88\x5c\x56\x5a\x89\x60\x36\x36\x93\x35\x8a\x6d\x22\xb3\x58\x4f\x94\xc3\xfa\xdc\x0c\xd6\x88\x43\x75\xaa\xec\xd5\xe7\xe5\xae\xc6\x67\xae\xc6\xe5\xad\x1e\x31\x6b\x75\x44\xfe\x67\x64\xc6\xea\x31\xf3\x55\xa3\x47\x1b\x97\xab\x1a\x91\xa9\x1a\x93\xa7\x1a\x99\xa5\x1a\x93\xa3\x4a\xcd\x50\x3d\x7e\x7e\x6a\xd4\x56\x50\xf3\x0a\xc8\x59\x05\xf1\x39\x05\xd1\x19\x05\xa7\xc9\x49\x3d\x7e\x36\xc1\x51\x73\x09\x9e\x9d\x49\x40\xcf\x45\x3d\x49\x26\xea\xf8\x3c\xd4\x93\xf8\xf1\x08\xb9\x12\x74\xef\x1c\x35\xa7\xeb\x34\x19\x5d\xa7\xca\xe7\x7a\x5e\x36\xd7\xc9\x35\xca\x63\xe5\x71\x3d\x23\x8b\xeb\x37\x26\x69\x8f\x95\xb9\xf5\xeb\x96\xb4\x5f\x42\x06\x91\x7e\x56\x94\xe2\xce\x0c\xb7\x59\xdc\xf1\x9b\xe2\x0b\x3d\x5e\x53\x97\xdc\x1e\xe1\x36\x6d\xdc\xa0\x2c\xad\x7c\x33\xe7\xab\xdb\x9b\xda\x5e\x55\x6d\x77\x26\xba\x8f\x07\x69\x3a\x08\x78\x9d\x1a\x7c\xe9\xd2\x82\x5b\xe5\x34\xab\x52\x5c\xd8\x99\x8b\x0d\xcc\xea\xa2\xee\x81\x3d\x48\xd8\xa1\x82\xe1\x05\x61\x12\x74\x0f\x79\x2f\xaf\x2b\x35\xe7\x97\x64\x19\x51\x22\x20\x29\xb9\x5e\x23\x6e\x55\x7c\x92\xc6\x21\xc5\x4b\xc1\xb5\xca\x31\x01\xbb\x05\xbf\x95\x9a\x15\x5c\xeb\x80\x1b\xc7\x49\x2d\x37\x38\x24\xe8\xea\x6e\xb6\x89\xad\x4a\x9e\x08\x97\x70\xcf\x12\x55\xe5\x26\x55\x4f\xc3\xe6\x31\x14\xf3\xd4\x7e\x9f\xb1\x89\x1e\x32\x84\x95\xff\x02\xfc\x64\xbe\x12\xea\x9c\x7d\x14\x2b\x5e\xa6\x59\x48\x06\x38\xa9\xa1\x2a\x93\xa8\x46\x88\xb8\xd1\xef\xba\xce\x21\x58\x04\x6c\x00\xe1\xc3\xe1\x75\xf0\xcc\xd5\x8e\x10\x07\x16\x62\x58\x1a\xec\xfa\xd7\x89\x3e\xf4\x00\x63\xf9\x2a\xb1\x00\x72\xf0\xef\xf5\xee\x14\xe4\xcf\xf0\x64\x1d\x8a\x55\xc5\xb7\x34\x9f\x1c\xf2\x93\x43\x7e\x72\xc8\x4f\x0e\xf9\xc9\x21\x7f\xe8\x99\x1c\xf2\x93\x43\xbe\xf3\x4c\x0e\xf9\xbe\x67\x72\xc8\xf7\x3f\x93\x43\x7e\x72\xc8\xff\xe6\xdc\x44\x93\x43\x7e\x72\xc8\xfb\x67\x72\xc8\x4f\x0e\xf9\xc9\x21\x1f\x7c\x63\x72\xc8\x0f\x3d\xbf\x4e\x87\x7c\xf0\x27\x9d\xf6\x4d\x24\x68\xf7\xf9\x2d\x78\x0d\x65\xe2\x1c\xe0\xdd\x5a\x0f\x8e\xdc\xbc\x81\xfc\xf7\x4e\x60\xaf\xf3\x94\x77\x73\xb7\xfa\x54\x21\x9d\x52\x65\x99\xb5\x81\x36\x7c\x3b\xd8\x29\xce\xe3\xff\xdf\x76\x7a\x52\xc9\x25\xcb\xd5\x4e\x7d\x5c\xf0\x7b\x63\x3f\xaa\x74\xce\xee\xfb\x8d\x50\xb9\xca\x55\x29\x3c\x65\x99\xaf\x2e\xb0\xa8\x53\xdd\x2f\xce\x28\x57\x94\xa2\xfb\xd1\xb3\xff\xfd\x7f\xce\xfa\xd9\x6e\x1f\xac\xfe\x45\x0a\xc5\x51\xa4\x75\xc8\x99\x3a\xca\x91\x1a\x4a\x9e\x38\x96\x13\x95\x7a\x1d\x11\x9d\xa7\xa7\x70\x9c\x46\x3a\x4d\x49\x9a\x17\xd9\x61\xda\x76\x86\x06\xa9\x12\x9c\xa5\x3b\x8e\x50\x82\xb2\x41\x75\x94\xb6\x9c\xa0\x41\xaa\x14\x27\x69\xd7\x01\x1a\x5e\xd1\xb0\x83\x74\xd7\xf9\x19\x9e\xfc\xb0\x73\x94\xee\xf8\x24\xfa\x67\x22\xb4\x00\x9a\xc9\x4b\xba\xa6\x62\x1a\x1d\x45\xb7\x38\x22\x54\xf7\x8c\x6c\x6e\x44\xcb\x6b\x1d\xd3\xd6\x88\x5a\x8b\x93\xa6\xde\x11\x7c\xc7\xa7\xf1\x1b\x53\x45\x2a\x45\xbb\x8f\xf6\x15\x93\xa4\x1f\xdd\x4f\xdc\xf6\xcf\x52\x04\x35\xc5\x47\x4c\x3e\x65\x11\xbe\xe1\x78\xbf\x30\xec\x77\x58\x02\x8d\xf3\x09\x13\xe5\xcd\x29\x7c\xc1\xe3\xfd\xc0\x71\x3e\x60\xba\xff\xf7\x48\xbe\xdf\x48\x13\x2d\xc2\xe7\x7b\x2c\x7f\xef\xc9\xfa\x74\x90\xd6\x88\xea\xdf\x8d\xa9\x3c\x4d\xf4\xeb\x52\x7c\xba\xc7\xf5\xe7\x92\x97\x9a\xe2\x5d\x20\x79\x16\xe2\xbc\x0a\x51\x1e\x85\x68\xbf\x2d\x53\xe1\x00\x1e\xdd\x93\xd0\xf6\x12\x04\xc9\x3e\xcb\x8b\xf0\x2c\x0f\x02\xcd\x4f\x1b\xeb\xa3\x45\xff\x6b\x70\xda\xb1\xfe\x59\xe2\xee\x53\x84\x40\xd0\x1f\x42\x3a\xd0\x91\xad\x79\x46\x34\xe5\x09\xb6\x02\x8f\x6a\xc7\xd3\xb2\xf6\x83\x3a\xc2\x67\x2b\x19\x7f\x5c\x05\x95\xdc\x76\x27\xbe\xe1\x8e\x6b\xa7\x33\xb8\x72\x47\x69\xb5\x73\xdc\x15\x89\x69\xac\x13\xdf\x52\x67\x8c\x29\x14\x68\xa6\x43\xb6\x85\x68\x6d\x74\xba\x8b\x3f\x48\xf3\xf3\x6e\x0c\x29\x92\x33\x2a\x8a\x13\xa8\x9e\x7a\xfc\x08\xce\xf8\xe8\xcd\xc9\xec\x3a\x42\xc4\x86\xde\x6d\x36\x2e\x5a\xf3\x2b\xd6\xa3\x08\x51\x99\xdf\xa0\x1e\xf5\xf9\x34\x0e\x7a\xdb\x9a\x51\x0d\x6b\xb0\x1d\xcd\xe0\x42\x45\xb4\xaa\xe9\x36\xa2\xf9\x75\x6a\x1c\xc1\x5d\xcb\x55\x2a\xee\x44\x06\xae\xf4\xbe\x35\xe0\xa9\x77\x41\xdf\x12\xc4\x21\xe1\xf0\xee\x6c\x7e\x6b\x08\x58\xef\x59\xfb\xff\xc2\xfd\xf7\x47\x66\x90\xcd\xeb\x0b\x5f\x81\x17\x7b\x29\x8d\x35\x31\x39\x4c\x70\xce\xee\x0e\x50\xc4\x52\x8f\xfd\x77\x91\x7d\xf3\xfc\x5c\xb3\x8c\x2f\x44\xa6\x77\x3f\xb0\x10\x60\x9d\xa4\x55\x86\x4d\x4b\xc0\xff\x8d\x1f\x1b\x2c\xdf\x13\x95\x29\x00\x45\xb7\x20\x37\xe1\x92\x6b\x2d\x57\xf9\xcc\xb2\x95\xfd\xca\x65\x1f\x07\x05\x77\xbc\x28\xa5\x2a\x65\x7f\x51\xf4\x3d\xcf\x88\x7f\x01\x0f\xce\x9c\xfd\xc8\x4b\xa9\x2a\xed\x2b\x56\x25\x6a\x53\xa8\x1c\x0a\xf9\x57\x03\xdd\x3b\x4c\x53\x50\x0e\xb6\xc7\x15\xab\xaf\x89\xd7\xc2\xda\x97\x1f\xbd\x75\xff\xd2\x4b\xf1\x2a\xdd\x48\x68\x40\xd3\x8a\x86\x42\x62\x4c\xce\x17\x99\xc0\xe0\x4b\x51\x62\x25\x2c\x3b\xb4\xd2\xf7\x2b\x11\xc6\x0c\x5d\x2c\xcd\x48\x11\x0a\xcf\xeb\xef\x24\xcd\x77\x7c\xe3\x01\xdd\xfa\x79\x3f\x6f\xda\xcf\xfa\xf9\xbc\xce\xb8\xd6\xf6\x2a\x70\xa9\x4d\x72\xe5\x7b\x0a\xc1\xfa\x62\x94\xab\xf9\x6b\xbf\x29\xe1\xe8\xf5\x5d\x1c\x14\x31\x12\x16\x21\xc5\xee\xa8\x49\x6c\x73\xb3\x6c\x95\xad\x63\xd2\xb5\x94\xd0\x7e\x87\xcf\x75\x33\x7a\x76\x86\x7c\x04\x5c\x3d\x4b\x4a\x69\x64\xc2\xb3\xfe\x66\xf8\x56\x77\xf6\xaf\x24\x59\xa5\x8d\x28\x9b\xb7\xc0\xa0\x34\x4f\x0a\xbf\xce\x33\xf6\x20\xb6\x4f\xaa\x4c\x75\xa0\xdc\x9d\x1f\x61\xb3\xf6\xda\xf8\x21\x5a\x25\x16\x3a\x28\x60\xc8\xb6\xdc\x88\x92\x2d\x44\xa8\xf8\xe3\x0e\x91\xed\x9c\x5d\xe5\x5b\x57\x69\x37\x6f\xeb\x01\xa9\x58\x4a\xd7\xe8\x09\x6a\x9b\x0d\x71\x26\xef\x32\x91\x3b\xe5\x7e\x74\x1c\xb5\xc8\x03\x85\x03\x87\xf9\x48\xa5\xcd\x29\xf4\xe8\x03\x8f\x19\x50\x25\xc3\xc0\x1b\x9c\xce\x52\x60\x34\xd3\xff\x73\x1f\xeb\x05\xaf\x80\x52\xf0\x54\x1e\x11\x60\xa1\x45\x09\x95\xe7\x6b\xba\x03\x20\x83\x6e\x8a\x1b\x20\x2d\x36\xea\xd1\x57\x53\xf6\x94\x44\x9e\x16\x4a\x5a\xc9\xd1\x86\x5f\x0c\xc6\xf3\x0e\x96\xdb\x3b\x84\xd4\xa8\x57\xf7\x63\x67\x19\xfa\xb9\x13\xa0\x1a\x76\x6e\xdb\x7e\xac\x46\x0f\x26\x63\x40\xca\xed\x61\x35\x3e\xfa\x2f\xb4\xc0\x1a\x13\x02\xa3\xfd\x4c\x08\x8c\x09\x81\x31\x21\x30\x26\x04\xc6\x84\xc0\xe8\xfb\xd5\x84\xc0\xe8\x1f\xe1\x84\xc0\x98\x10\x18\x7b\xcf\x84\xc0\x98\x10\x18\x87\x7e\x3a\x21\x30\xd8\x84\xc0\xf0\xcf\x84\xc0\x98\x10\x18\x13\x02\x63\x42\x60\x9c\x64\x45\x26\x04\xc6\x84\xc0\xe8\x3e\x13\x02\x63\x42\x60\x4c\x08\x8c\xdd\x67\x42\x60\x4c\x08\x8c\x9d\xc5\x3e\x06\x02\xc3\x57\xc5\xec\xdd\xac\x5d\xef\x7e\x51\x19\xc1\x3e\xfa\xb7\x6a\xde\xf2\x1d\xb4\xed\x25\x9a\xf0\x32\xdc\x35\x96\x22\x59\xa1\xf7\xfb\x20\x1b\xc5\x81\x43\x18\x5d\xfa\x75\xf9\xf3\x2d\x0c\xa4\xe5\xa3\xc1\xf6\x59\x9f\x80\x9f\x38\x76\x07\x86\x90\x20\x2c\xcf\xe0\xf7\xeb\x05\x47\x3f\xd3\x88\x34\xe3\x2e\x32\x03\xcb\x54\xce\xdc\xa7\x67\x35\xf9\x59\xbd\x03\xbd\x60\x0d\x46\x3d\xd6\xce\x7f\xf6\x35\xec\xc4\x47\x37\x94\xdd\xbd\x70\x67\x7b\xec\x5e\x78\x36\x86\xf0\x75\xfd\x0d\xa9\x99\xda\x48\x03\xcd\x6e\x55\xa7\x51\xd8\x70\x41\x0b\x69\x3a\xee\x59\xc7\x3d\x10\xca\xe5\x06\xab\xa7\xd6\x65\xfe\x88\x0d\xf6\x9a\x5e\xa9\x58\x3d\xb7\x56\x7c\x80\x0b\x66\x3e\x8e\xef\x40\x32\x47\x14\x6b\x9f\x9b\xdb\x82\x3f\xf1\xb8\xa7\x72\x24\x1e\xc4\x6b\x4a\x35\xd8\x40\xea\x82\x1b\x4b\xd4\xca\xb0\xfa\x87\xfd\x06\x8b\xff\x7e\x0f\xd4\xa1\x9f\x78\x2f\x49\x1f\x91\x6f\x48\x0f\x2e\xce\xc0\x91\xb1\x96\x10\x20\x34\x54\x6e\xc4\xa7\x5e\xed\xad\x7b\xa6\xee\xba\x2f\x31\x6b\x86\x69\x06\x17\x98\x78\x14\x59\x4d\x94\x71\x63\x4a\xb9\xa8\xcc\xc0\x1d\x6c\x4d\x9b\x44\x6d\x36\x0e\xaf\xe4\x01\x12\x80\x79\xd2\x73\xd6\x68\xbd\xed\x3b\x1a\x00\x00\x73\xc6\xee\xc4\x70\xbb\xc4\xf6\xb8\xe1\x44\xfa\x85\x03\xb6\x87\x58\xa3\xe0\xc9\xda\xc1\xa7\x9e\x13\xdf\x5f\xea\xef\x4b\x55\xd1\x4b\x66\x9f\x5d\xd5\xa0\x1f\x6b\xa2\xb8\xa3\x99\xb1\x95\xa5\x82\xc7\x9e\x17\x45\x26\x03\xda\x8b\x3d\xdb\x59\xd6\xac\x9c\x66\xd0\x82\x1d\x60\x69\x77\x6a\x53\x77\xbe\xb5\x8b\xe1\x2e\x90\x60\xf0\xe7\xef\xd5\x42\x64\x02\x1b\x74\xaf\x41\x67\x85\x3a\xcc\x4f\x96\xfc\x5a\x16\xa8\x25\x73\x53\x93\x06\x73\xd8\xfe\xf3\x70\xac\xd6\xdd\xf7\x85\x4a\xbf\x65\xff\x6f\x6e\x75\xa9\x7b\x24\x6b\x0d\xbc\xef\x6f\xde\xd4\x47\xc0\xfe\xea\xbb\x3b\x58\x4e\xf6\xfb\x61\x2d\xd7\x52\xd0\xc2\xac\x64\xca\x16\x18\x39\xd7\xc2\xb0\x17\xb9\x78\xc2\x90\xbc\xef\xbf\xc8\x3a\x7d\x80\x07\x49\xfa\x51\xc0\x84\xec\xa0\xdd\x50\x5e\xb2\x3f\xe0\x88\x0b\x51\x7a\x80\xdd\xc2\x4a\x69\x5e\x0a\xf6\xe1\xe3\xf9\xf0\xe4\x01\xf3\x54\x3e\xcd\xca\xa7\xd9\x6c\x36\xb3\xf3\xbf\x59\xb2\x2a\x87\x7e\xe5\x76\x60\x7e\xcd\xe1\xeb\x56\x44\x6c\x54\x2a\x97\x81\x3a\xd6\x9d\x5d\xb1\xe7\xa8\x19\x1a\xb0\x36\xcf\xb7\x6e\xc6\xf3\x7e\x80\x5a\x47\x7d\xfc\xd3\x1f\x9f\xed\x05\x28\xab\xfc\x2a\xf2\x2c\xd8\x55\xb5\x0c\x60\x14\x80\x1e\xec\xbc\x44\x6e\xca\x2d\x20\x9a\xf6\x6a\x69\x0f\x5b\xa0\xa5\x4a\xa0\x72\xcd\x0f\xda\x5e\xd2\xd8\x54\xb6\x3e\xf5\xd2\xad\xf9\x9c\xbd\xe3\x5b\xc6\x33\x8d\xb8\xd8\x01\xd8\x11\xc3\xfe\xa5\x3b\x02\x6f\xce\xe0\x8a\xc0\x78\xe1\x42\x99\xf5\xee\x0f\x82\xfd\xec\x6f\xc1\xa7\xd7\x7e\xe5\xa2\x05\x71\xaa\xef\x87\x03\xdf\x1e\x66\x09\xfe\x20\x34\x2b\x4a\x91\x88\x54\xe4\x89\x70\x5e\x2d\x6e\xc2\xea\x35\x3b\x0d\x27\xbc\x57\xf9\x47\xa5\xe8\x2e\xa1\x9b\x16\xf8\xd2\x75\x9d\x6d\xae\x05\x30\x85\x2d\x8b\x70\x1d\x70\x09\xe5\x2a\x9f\x01\x64\xa7\xd2\xee\xde\xc5\x86\xf3\x7b\x67\xed\x91\x67\x32\x75\x50\xca\x61\x2e\xd8\xf0\x95\x60\xdc\xd4\x4c\x65\xaf\xa1\x5c\x57\x50\xf0\xde\x2a\x69\x86\xa5\x4a\x34\xd0\x1d\xae\xd9\x0f\x37\x6f\x06\x49\xbe\x62\x2f\xa0\x25\x36\x9c\xdd\x25\x97\x19\x44\xa1\xa1\x73\xeb\x4e\x63\xd8\xa5\x27\x6f\xa7\x32\x48\x13\xf8\x9b\xa9\x12\x3b\xdb\x5f\xb0\x5c\x61\xef\x03\x37\x4f\x2b\xb5\xbc\x84\x73\xae\xe0\x60\xc1\xf8\xee\x51\x19\x73\x1c\x86\x7d\x6d\x79\xfa\xb9\x8e\xc3\xd0\x44\x69\x0d\xfe\x81\xa7\x7f\xd0\x62\xb0\x6f\xf6\x9e\x70\xfb\xe1\xc8\xc2\xad\xad\x0a\x59\x06\xef\xae\x10\x72\xea\x46\x18\x9e\x72\x33\x7c\x4c\x50\x20\x36\x28\x41\xe2\x5e\x0f\x47\x70\x86\xc5\x62\xdf\x5e\x0f\xd2\x0c\xf3\xc1\x41\xd1\x17\xb8\x3e\xbf\x8c\x58\xd4\xe2\xad\xcc\xab\x4f\xa8\xd8\xd2\x5d\x5e\x96\x8f\xee\xae\xe1\x55\x6c\x3a\xf2\xc9\x38\xd5\x0b\xf5\xc4\x74\x5f\x17\x1c\x3e\xd7\x37\x9d\xbd\xdf\x6d\xa8\xe1\xa5\x1c\x08\x0b\xab\x37\x02\xde\x7c\x98\x9b\x4a\x9e\xa7\x6a\xb3\x37\x4a\x7b\x07\x81\x96\xdd\xf2\x90\xb6\x39\x8d\xc2\x4d\xbf\x54\x89\x13\x79\x01\x53\xa3\x07\x60\x66\x45\x85\x0f\xde\x82\x61\x26\x75\xbd\x3b\x68\xa9\x41\xb2\x10\xdd\xdc\x60\x4d\xec\x80\x34\x1f\x16\x13\x3d\x28\x55\x7f\x5f\xfa\x83\x73\xfa\xa8\x32\x81\x19\x58\x7e\x52\x96\xc4\x57\x35\x27\xf8\x61\xcc\x9c\xee\xad\xd5\xda\x99\x13\xd8\xb1\x5f\xd3\x9c\xaa\xc0\xf5\xb7\x37\x27\x7b\x5f\x76\xe7\x04\x97\xd6\xd7\x33\x27\x92\x4f\xb3\x6d\xa6\x83\x7d\x43\x97\xdd\x57\x2c\x93\x1a\x2e\x7b\x30\xef\x75\x5b\x64\x03\xae\x5f\x96\x90\x7b\xa3\x82\x75\x58\x11\x14\xbe\x23\x4e\x2f\xc0\xe8\x77\xee\xd4\xbd\x35\x0a\x74\x54\x29\x4a\xb9\xe1\xe5\xd6\x1a\x60\xf3\xfd\x4b\x21\x57\x7e\xc8\x5e\x6b\xe4\x69\x1a\xee\x33\x65\x2d\x4f\xd2\x26\x11\x30\x90\xd4\xdb\x97\x7a\xff\xd2\x10\x6b\x7a\xab\x13\x93\xd1\xb7\xf8\x0e\x7f\x0f\xae\x30\xc6\xeb\xfd\xce\xf9\x46\xe8\x82\x27\x22\xf5\x14\x01\x75\x19\x9a\x70\x93\x5b\x78\xab\x52\x97\xcf\x55\xe5\x4d\x2c\xdb\xd3\x7a\xe1\x9c\x2a\x34\xfd\xd1\xdd\xe9\x2f\xd9\x46\xae\xd6\xa6\xb6\x38\x32\x5e\xe5\xc9\xfa\x99\xbb\x74\x60\x31\x5c\xae\x98\x3d\xf7\x0f\xa2\xcc\x45\xc6\x0a\x5e\xf2\x8d\x00\x50\x10\xc9\xf2\xa6\x83\x4d\x69\x40\xd3\x03\x18\xba\x25\xe3\xfe\x33\x5b\x07\x02\x0e\x4b\x21\x7a\xb4\x99\x08\x30\xed\x0c\xec\x47\x50\x41\x4e\x3b\x32\x1a\xb0\x94\x00\x2a\xa5\x00\x4a\xa3\x2a\x21\x0f\x1f\xcb\x27\x99\xa7\xea\x49\x8f\x51\x9e\x7f\xc2\x57\xbd\x6e\x97\xd4\x4e\xe6\x1d\x05\x7a\x70\x2a\x2d\xe5\xfa\xa0\x02\xad\x70\x60\xbe\xb3\x1c\x27\x8b\xe1\x5d\x73\xc6\x8b\x5b\x2b\x2d\xe6\xbf\x10\x65\xf7\x18\x9a\xed\x6a\xa3\xf9\xeb\xd2\xd2\x33\x92\x67\x77\x45\x64\x13\xb8\xef\xdf\xdd\x5d\x75\x5f\xb7\x8a\xc7\x13\xe4\x82\xda\x19\xdb\x7f\x6f\x32\xa4\x83\xe7\xe9\x49\x2c\xd6\x4a\x3d\xb0\x17\x3e\xf0\xb5\x92\x66\x5d\x2d\xe6\x89\xda\xb4\x62\x60\x33\x2d\x57\xfa\xd2\xb1\xe6\xcc\xce\x20\x9c\x5c\x25\xf3\x0c\x64\xa3\x97\xde\x90\xf5\xed\xbc\x01\x30\xc8\xa4\x9e\x05\x6c\x10\x9c\x44\x42\xef\xba\x6d\x4d\xa1\xbb\x0c\x20\xed\xea\x2c\xf1\x3a\xb7\x9d\xd0\xbe\x8b\x67\xc5\x9a\xbb\xc0\x8e\xcb\x59\x83\xbc\xc4\xb5\xca\x95\x8b\xe3\x23\x1c\xdb\xb9\xec\x30\x9f\x3d\x2c\xaa\x9a\x23\x09\xf3\x5d\x0a\x6e\xaa\x52\xb0\x65\xc6\x57\x47\x53\x55\xf7\xb9\x69\x28\x06\xe8\x9f\x00\x47\xc1\x52\xba\x74\xc5\x16\x6c\x28\x38\xe3\x83\xdb\x8a\x1e\x9c\x9d\x3d\x69\xaf\x79\x78\x7f\xc8\x7b\xb2\xbb\xe6\x41\xd2\x27\xd9\x93\xda\x85\x16\xbd\x15\xe0\x4a\x73\x2f\x5a\x59\xe5\x25\xfa\x41\xd7\x5a\x70\x72\x7b\x3d\x3a\x0f\xba\xd7\xec\x4f\xba\x2e\x36\xc2\xd1\xde\x71\xc1\x85\xdc\x6c\x14\x8a\xfb\x22\xfc\x59\xb7\x02\x3b\xed\xcd\xc0\x0e\xdd\x0e\xfd\x3c\x8e\x3c\x4c\x58\x87\x68\x36\xff\xd8\x66\xb6\x2f\xc1\xef\x47\x01\x30\x60\x92\xff\x55\x02\xdd\x78\xc9\x28\x86\xf3\xbb\xbd\xf7\x0e\x88\x2d\xd6\xfd\x55\x7f\x38\x1d\xf3\x23\xea\xb3\x26\x35\x1a\x28\x34\x2c\x92\xe1\xfa\xa1\x81\x86\x08\xa8\x0b\xd3\x20\x40\x9a\xbf\xbb\xa9\xce\x38\x8e\x26\x50\x36\x66\x60\xf5\x8d\xca\x04\x42\x50\x68\x40\xb5\x83\x90\x8f\x73\xdd\xa6\xd3\xc7\x11\x01\xeb\x68\xbf\x40\x8d\x4a\x71\xfd\xee\x6b\xda\x70\x1e\x8c\x81\xf6\xbd\x20\x75\xf0\x5f\x06\x3d\x22\xd6\xc6\xb6\xeb\x67\x90\xf7\xa1\x3c\x90\x53\x28\x4c\x29\x8b\x4c\xb0\xbf\x3c\x88\xed\x05\x56\x69\x11\xcb\xa5\x48\xcc\x5f\x59\xa5\x03\xec\x0a\x30\x35\x93\xac\x65\xbe\x62\x56\x63\xe3\x46\x95\xec\x2f\xfe\x7f\xfd\xb5\xff\x54\xd0\x14\x3c\x1c\x47\x84\x29\x79\x0d\x2f\xec\xd4\x64\xc1\x69\x23\x2d\xbb\x5c\x30\xe2\xd0\x81\xbd\x86\xa2\x11\x1b\xc1\x73\xed\x6b\x29\x65\x59\x87\x94\x76\xa5\x7c\x88\x08\x2b\xe6\x01\x79\x1e\x4d\xc2\x4b\xc1\xde\xab\x3b\x87\xc9\xb9\x60\xb7\xa5\x58\x8a\xb2\xf9\x4b\x30\x2a\xcc\xd8\x7b\x75\x8d\x05\x0f\x86\x67\x43\x14\x3e\x0f\xa2\xb7\x6c\x12\x3e\x9d\xa5\xfe\xbb\xd8\x7a\xf9\x80\xab\xf2\x20\xb6\x4d\x14\xb6\x39\x08\xa1\x45\x41\x5f\x1e\x33\x6a\x3e\xb8\xe6\x0f\x62\x8b\x46\x54\x58\x77\x7a\xc0\x91\x01\xea\xe7\xa2\x61\x4b\x8f\x8c\xbe\xfe\x24\xb5\xd1\xff\x8e\x87\x2a\x51\x9b\x85\x6b\x90\x1d\xa0\x8a\xc3\xf2\xec\x03\x23\xf3\x1b\x99\xa7\xf0\x9f\x30\xc4\x63\x6c\x84\x1f\x72\xc4\x6e\x7c\xf0\xb3\x2c\x45\x51\x0a\x0d\xf6\x01\xb7\x23\x3a\xd7\xac\x14\x19\x8a\xa4\xb5\x2c\x42\xd7\x94\x6a\xee\xf3\x39\xfb\x91\x67\x32\xad\x47\x83\x1c\x8b\xab\x07\x73\xbe\xfe\x47\xc5\xb3\xd0\x39\x6a\x6b\x47\xf8\x82\x27\x61\xb7\xe8\x1f\x95\x7c\xe4\x99\xc0\x2c\xf1\x27\x99\xa5\x09\x2f\x43\x4c\xbf\x54\xa5\x2f\x26\xa5\x5d\x5d\x08\x80\x30\xb1\x84\xe7\xb5\x28\x6c\x38\xc7\xda\x49\x21\x1e\x64\x05\x2f\x8d\x4c\xaa\x8c\x97\xcc\xca\x8d\x95\x2a\x03\xf5\x1f\xa8\xf7\x79\x7d\x0c\x08\x98\xf5\x5d\xe1\xbf\xfb\x6e\x7b\x6f\xcd\xba\x6e\xe5\x1e\x9c\x1e\xe2\x0f\x3a\x87\x92\xbd\xe8\x16\x9f\x53\x4b\x2f\x1f\x6b\x91\x12\x92\x66\x2d\xc4\x68\x47\x51\xc3\x4a\x3d\xe9\xcb\xe6\x56\x6a\x64\x44\x88\x59\xfe\xb6\xf5\xe0\x9b\x76\x69\x13\x80\x3d\xb9\xf1\xba\x43\xe8\x36\x39\x2c\x0b\x50\x78\x2c\x55\x29\x1e\x45\xc9\x5e\xa4\x0a\x28\x8a\x47\x99\x98\x97\x73\xf6\xff\x88\x52\x61\x05\x10\xb1\xe2\x90\xe1\x85\x47\x3a\x40\xb4\x86\x9e\x35\x2d\xaf\x5f\xb1\x17\x40\x94\xc9\xcd\x46\xa4\x92\x1b\x91\x6d\x5f\xd6\xa0\x75\x42\xad\x97\xe3\xfb\xad\x09\xce\xc4\x03\x8e\xc4\x8e\x48\x77\x25\x94\xba\xac\xe3\x54\x87\xa0\x24\xf1\xd2\xba\x91\xc0\x52\xbb\xb3\xdf\xb1\x1a\x7c\x6d\x22\x27\xb0\xc9\x6c\xf7\xdf\x96\x77\x39\x2b\xc5\x0a\xce\x2d\x9e\xc5\x23\x9c\x5a\xb2\x0e\xde\xe7\x7b\x1c\x20\xd0\xfb\x4f\xa5\x28\x32\x99\xf0\xbb\xfd\x74\xb8\x6e\x52\xa2\xca\x57\xea\xcd\xdf\xfc\xcf\x0f\x98\x83\x43\x8a\xd5\x83\xd8\x7e\x27\x0f\x47\x4d\xbb\xa6\xc0\x1b\x2b\x68\xac\x20\x4c\x21\x1c\x07\x2a\xce\x3c\xb1\x64\x97\xa0\x57\xdd\x89\xa4\x14\xe6\x90\xb6\x1d\xd2\xeb\xdc\xf1\x7e\xa7\x52\xa2\x55\xd2\x20\x7a\x37\x2a\x15\x88\xa1\x74\xc6\x85\xca\x6b\xc0\x26\xc2\x37\xc3\x10\xe8\x26\x65\x92\x3b\xf6\x5b\x08\xf3\x24\x44\xce\x5e\x81\x1c\x78\xf5\x6f\xff\xf6\x6f\x5d\x8b\xfe\xd5\x9f\xfe\xf8\xc7\x7e\xa6\x7a\xe3\xaa\x44\xf9\x32\x7a\x0e\x38\x5a\x70\xb3\x86\xdb\xd2\x0a\x1b\x0e\x82\xd5\xa7\xb0\x20\xe8\xd4\x0c\xb2\x2a\x58\xbe\x18\x75\xc1\x7c\x30\x6b\xf1\x64\xd2\x17\xc3\xc3\x3a\x7b\xde\x77\x8c\x17\xa0\x53\x6e\x07\xe4\xa1\x5d\x22\x58\xc3\x0b\x96\xc9\x07\xe1\x21\xc8\x17\x30\x6f\xac\x62\xa2\xab\xcc\xc0\x2d\x6a\x6f\x04\xf8\x88\xfd\x7d\x2f\x45\xd8\x0b\x2d\x4c\x2f\x12\xfa\x38\x45\x1a\x07\x0d\xa6\x5d\xab\xac\xe3\x62\x87\xb8\xe7\x83\xd8\xce\x70\xab\x0b\x2e\x4b\x0f\xed\x7d\x33\x84\x75\xc2\xbb\xcc\x19\xbc\xa0\x95\x8b\x3c\x11\x29\x43\xb6\x6f\x10\x71\xa5\xfa\x6f\xdc\x59\x99\x07\xaa\xe4\x38\xf0\x33\xb7\x4a\x19\x6c\xc4\xd3\x5a\x69\x67\x58\x3b\x89\x6b\xb5\x56\x44\xb7\x83\x7b\xd7\xfd\xb9\x9f\x22\xaa\x68\xfb\x86\x68\x26\xb5\x1d\x92\x55\x46\x7b\x46\xda\x2f\xf9\xd6\x6d\x27\x8e\x65\x62\x8d\xec\x51\xe5\x7b\x54\x5d\x25\x40\xa7\x90\xf4\xf3\xf2\xcd\x12\xf5\x50\x40\x5b\xd7\xb4\xf1\x36\x77\xf7\xbb\xa3\xe1\xb7\x06\x57\xb9\xff\x1e\x68\x90\xd9\x96\xf9\xaa\x02\xc7\x23\xca\x52\x95\x76\xa0\x42\x6b\xa7\x3b\x6c\x78\xf9\x20\x52\x77\x50\x86\x34\xd5\x5b\x3b\xd3\x5a\x17\x42\x75\xf9\x11\x6b\xea\x6d\xf8\x16\xc6\xe8\xbc\x0f\xf0\xf1\xf3\xf9\xfc\x1c\x8f\xf8\x00\x66\x0c\x81\x99\x70\x5e\xed\xef\x8f\xe1\x0d\x78\xc7\x0b\xa8\x1f\x0c\xd7\x17\x9a\x5b\x0a\x74\x57\xb3\x6e\x22\x48\x0e\xc1\xfd\x4c\xc3\x3b\xce\x14\xbc\x77\xec\x6b\x94\xe7\xb4\xa3\x28\xcf\x9b\x81\x4b\xe2\xc0\x28\x02\x57\x85\xd3\x52\xb3\xa0\x62\xbb\x21\xdc\x10\x7b\x99\x39\x21\x6d\xa8\xe1\xd9\xd6\x0d\xb8\x13\xb6\xdb\x15\xfb\x01\x9a\x11\x97\x42\x4b\xf8\x07\x88\xc6\x5d\x0d\xb0\xc6\x01\x8a\x43\x17\x04\x3e\xd4\x84\x54\xba\xea\x1b\x2e\x1e\xb4\xc7\xbf\xf5\xa9\xc7\x83\xbd\x6c\x96\x0d\x4c\xfe\x82\xe8\x77\xb0\x6a\xef\x3b\x27\x33\x30\x0b\x9b\x2f\xb4\xca\x2a\x83\x84\x9b\x7f\x74\x02\x85\xc0\x37\x30\x20\x81\x58\x22\x94\x25\x35\x91\x96\x90\x01\xd9\x4d\xc1\x18\x0c\x49\x23\xf7\x51\xca\xf1\x0c\x43\x02\x66\x76\x41\x06\xfe\xd5\xce\xeb\x74\x4a\x38\xab\xe5\x3e\x49\x75\xb8\x83\x93\xbc\x65\x4f\x6b\x61\x7c\xc5\x6a\x77\xdd\x5b\xc3\xc5\x68\xbc\xfa\x9c\x6c\x18\x52\x33\x65\x7f\x66\x53\x18\x34\xae\xe1\x93\x74\x9f\xfd\xfb\x96\x67\x1e\xdf\xf5\xb7\x68\xa1\xd2\xf3\x73\xdd\x20\x8a\xd8\xc0\xbd\x0f\x21\xc5\xc8\x2c\x61\x6d\x54\xc9\x57\xe2\x12\xa5\x9a\xfe\x9d\xee\x35\x09\x58\x98\xa5\x06\x77\xbb\x0f\xac\x73\x10\x9e\xe3\x0c\xa3\xc3\x61\xb2\x81\x51\xf4\xb1\xf3\x41\x4c\x4b\xc8\x8a\xdb\xbb\x5a\x0f\x56\x91\x58\x42\x71\x43\x9e\x27\xe0\xfd\x64\xa9\x28\x32\xb5\x75\x89\xc0\xde\xce\x4b\xb9\xe1\x0b\xae\xf7\xee\xf3\x21\x91\xd9\x2f\x24\x5d\xb8\xe4\x5e\x6c\x8a\x8c\x9b\xbd\x45\xed\x1e\x88\xee\x6f\x21\xe4\x90\xd7\x67\x8a\x75\xd2\x76\x61\xd0\x8e\xf8\xde\xb2\x43\xd9\x40\xac\xfb\x6a\x55\x5e\x3f\xa3\x08\xb3\xd5\x07\x46\xc3\x76\xeb\x9d\xe1\x79\xca\xcb\xd4\xed\x8d\x3d\x00\xfe\xe5\x83\x0c\xbe\x92\x66\xfe\xf0\x67\xe0\xee\x44\x6d\x36\x55\x2e\xcd\xf6\x12\xea\xe0\xcb\x45\x65\x54\xa9\x2f\x53\xf1\x28\xb2\x4b\x5e\xc8\x59\xa2\xf2\x47\x91\x63\x68\x67\x93\xfe\xce\xd3\x1d\x63\x04\x43\x1d\xed\xe1\x68\xd3\x89\xbb\x52\x5c\x35\x23\x70\x3b\x5b\xb9\xb2\xbf\x55\x89\x6a\xbe\x53\x7e\xec\xcd\x67\x8f\xfa\x40\x20\x1b\xae\x1f\x5e\x27\xbb\xfb\xf8\xd2\xd6\x67\x85\x2c\xb6\x4c\x7c\x32\xa2\xb4\x6c\x63\x94\xca\xb0\x7a\xa6\x19\x6a\x23\x61\xf5\x8e\x52\x98\x52\x0a\xab\x86\x97\x0b\x69\x4a\x5e\x6e\x5b\x7b\x79\xbf\xb6\xd6\x92\x33\xb0\xff\x51\x89\x72\x0b\xa1\xdc\xa1\x88\x49\xe3\x67\x02\x7b\xa3\x7c\x04\x33\x44\xe4\x2e\x77\x12\x22\x58\xc0\x35\x7a\x8f\x55\x0e\x8b\xc2\x4a\x8b\x72\xb6\xaa\x64\x2a\x2e\x5b\x1b\x3a\xb2\x73\xc5\xe0\x3f\xeb\x1e\x5c\xd3\x0e\xf3\x3b\xa4\x1a\x1e\x49\x77\x29\xa4\x42\x63\xf9\x0c\xb1\xe6\x8f\x52\x95\xcd\x65\x01\xa7\xf5\xb0\x22\x70\xdc\x93\x62\x47\x3f\xe3\x79\x3a\xc3\x8a\xcd\x63\x0e\x8c\x6b\x85\x70\x73\x4b\xbb\x15\xeb\x9f\x7b\xdb\xfa\xe6\xd6\x1e\xa8\x12\xca\xf3\x74\xe6\x3f\xc8\x31\x52\xb3\x4a\x57\x3c\xcb\xb6\x0c\xfb\x93\x88\xd4\x25\xad\x64\x5b\xef\xda\xdd\x70\xfb\x25\x30\x08\x78\xee\x3f\x32\x44\xb1\xb1\x81\x37\x3c\x77\xc4\x11\x92\x63\x59\x59\xe6\x60\xae\x2c\x5c\x33\x05\x0d\x6e\x70\x6b\x25\xf4\x3b\x61\x44\x9d\x6f\x53\x03\xc4\xdd\xe4\xfe\xbd\x71\x96\x5e\xb8\xf6\x0b\x0d\x63\xf4\x89\x6b\xff\x80\x69\xb2\xe4\x32\xeb\x00\x31\xac\x05\xe0\x54\x5b\x4c\xf6\xb6\xf6\x41\xa9\xaa\xd5\xda\xf5\x04\x18\x08\x80\x61\x34\xa9\x15\xfc\x3c\x7b\xaf\x72\x71\x76\xe1\xea\xf3\x3b\xb3\xf6\xc5\xd9\xd9\xcb\x0b\x06\x97\x20\x24\x21\xb2\x9b\xfe\x8a\xba\x6e\xb9\xe7\x8e\x92\xb7\x4f\x9a\x25\xb6\xf7\xd2\x5a\xf0\x14\x9c\x02\x6e\xc6\x80\xef\xeb\xd7\xbb\x8b\x52\x7d\x02\x61\xe0\xeb\xaa\xd7\x95\x3b\x3e\xe4\x76\xaf\xea\x70\xa5\x4b\x92\x7f\xed\x79\xad\xdf\xb2\x7a\xaf\x52\x71\xab\x4a\x83\xf6\xd4\x5b\xc5\xd3\xbf\xf1\xcc\xde\xfb\x96\x6f\x30\x5a\x02\xc5\x3b\x5c\x2e\xc7\xb5\x13\x96\xd0\x45\xa5\x97\x68\xac\xba\xe6\x26\x3f\xcb\x85\x71\x25\xee\xfd\xdf\x2e\x7f\xf7\x28\x4b\x53\xf1\x6c\x26\x0b\x8d\x07\xd5\xc1\x2a\xec\x5a\xc8\xfe\x62\x42\xc1\x5b\xc7\x8b\xfd\x9b\x5b\x9a\xff\xae\xf5\x7b\x4c\x00\xf1\xb8\xf8\xe6\xfc\xba\xd2\x7b\xc3\x0d\x4f\x72\x95\x0a\x5d\x17\xde\xc7\x0d\xf2\xa9\x69\x1a\x0b\x75\x15\x86\x99\x92\x2f\x97\x32\x71\x00\x7a\x59\x33\xc8\x1c\x0a\x05\x0c\x34\xfb\xb1\xc3\xf3\x77\x0f\x16\x2c\x01\xdf\xee\xdf\x9b\xe5\xc7\x52\x03\x95\x4b\x64\x29\x85\x2e\x54\xae\xe5\x10\xce\x11\xb2\xde\x72\x5d\x95\xd8\x7a\x85\x37\xc3\xe3\x65\x29\x1f\xed\x89\x31\xae\xdf\x93\xb7\xf7\xa4\x86\x82\xdb\xac\x1f\x98\xe7\x0a\x65\x88\x4f\x7c\x53\x60\xee\x53\x7d\x11\x67\x8a\xa7\xb3\x85\x63\x43\xef\x2f\x70\x73\x2a\xf8\x40\xa5\x2e\x27\x3e\x9a\xc9\x06\xa2\x5b\x01\x07\x17\x41\x73\x09\xd9\x79\x7e\x4e\xf7\xb8\x60\xb7\x2a\x93\x09\xad\xff\xd3\xc1\x37\x59\x2a\x72\x65\xe7\x05\xf5\x74\xa4\xf6\x9a\xb0\xbb\x4a\xfb\x85\xbb\x51\xac\x54\xd6\xd0\x6f\xb4\x1d\xb7\x85\x46\xc1\xc6\xcd\xac\x98\xce\xac\x6c\xf3\xad\x7d\x9e\x64\xda\x6a\xc6\xd2\x7f\xd8\xcf\xde\x2a\x68\x00\xe4\x35\x17\x07\x04\xce\xa4\xc8\x0d\x73\x6a\x97\x3d\x23\x79\xca\xf8\xa3\x92\x29\xb6\x19\x4b\xd4\xc0\xe5\xb6\x56\x05\x30\x5d\x5b\x1c\x01\x01\x2b\xad\xb0\xa4\x9d\x95\x47\x5e\x6e\x5c\xb0\x45\x65\x58\x29\xf5\x43\xff\x02\x14\xca\x20\x56\x35\xdb\x32\xb9\x71\xcc\x95\xd6\xab\xa0\x0b\x6c\x60\xb3\x9a\xb3\x33\x27\x35\xcf\x98\x5a\xe8\xa4\x1a\x5c\xd5\xbe\x89\x5a\x0d\x33\xe1\xae\xcd\x04\xcc\x15\xe6\x04\xe9\x44\x70\xef\x0d\x8a\x07\x9c\x8f\xd3\x09\xd7\xfc\x51\xb0\x95\x52\x29\x53\x8f\xa2\xe4\x99\x3b\x1e\xcd\x80\xc7\x0a\x40\x6c\x25\xf1\x7a\x2d\x92\x07\x7f\x09\x90\x18\xf3\xc0\x7b\xbb\x3d\x04\xe0\x17\x89\xfd\x05\xcc\xe7\x76\xa8\xba\x9e\x4f\x11\xaa\x05\xdc\x7e\x61\xa1\xff\x3c\xf0\xc5\x01\xb4\xb7\x8f\xbb\xf9\x00\xb7\xd7\xa6\x0a\xc9\x16\x3c\x79\x10\x79\xda\x78\xa5\x1a\xf5\xc4\x0f\xb4\x9f\xd1\x7f\xb2\x42\xda\xee\x29\x28\xd7\xcd\x45\xee\xdf\xf4\xc5\xf5\x5a\x51\x0f\x37\x86\xfe\xa1\x02\xf3\xb8\xeb\xdb\x21\xb7\x50\xf1\xf7\xc9\x93\x1a\xab\xd7\xec\x9e\x84\x5e\x8a\xd7\x07\xc5\x46\x9b\x50\xd2\x1f\x6d\x38\x4e\x4c\x2c\x6b\x8d\x95\xaa\x15\xef\xea\x2f\x5e\xae\xdd\xc3\xd7\x3a\xb3\x6f\xff\xc7\xb0\x86\xb8\x12\xa6\x66\x86\x7a\xc7\x6f\x6e\xbb\x58\xe0\x6e\xcf\xb9\x01\xb6\xf2\x88\xda\x54\x14\x22\x4f\xa1\x88\x7b\xdb\x21\x57\xe5\xa9\x28\x33\xd0\xce\x92\x4c\x55\xe9\xcc\xb5\x88\x2a\x7d\xdd\xd6\x7e\xca\x38\x9e\xad\x6b\x6c\xb6\xb3\x7e\xc8\x0e\x1c\xfe\xca\xfc\xa5\x68\x37\xd4\xcd\x2c\x10\xa9\x45\xd5\xd8\xfb\xf2\x65\x4b\xa3\x03\xd9\xd5\x19\xa8\x2f\xfa\xd1\x3f\x50\x9c\x09\xba\x9f\x71\x39\x7a\xdd\xe7\x41\xf9\xd3\x9e\xe6\x1d\x48\xcf\x8f\x56\x69\xa7\x69\x63\xe7\xed\xd8\x22\xd6\x14\xae\x33\x0a\x7d\x75\xa6\x8c\x1b\xcb\xd0\x17\xb0\xc5\xc3\x9c\x52\x0a\x3b\xd0\xa4\x51\x6c\xbc\xe1\x70\x60\x95\x3a\xda\xc9\x30\x59\x08\xd8\x21\xe5\x96\x01\x54\x0f\xdb\x5d\x1d\x37\xb7\xba\x6d\xc7\x04\x49\xd2\x36\xb1\xbd\x59\x21\x9e\x9e\x9f\x45\x61\x9f\xb1\x98\xec\x0c\x8e\x2b\x5a\xf4\xbe\x1f\x60\x0b\xfe\xdc\x1d\xd6\x6c\x29\x4b\xf1\xc4\xb3\xac\x17\x06\x7d\x7a\x5d\x0c\x0e\x21\x8d\xbb\xee\x5d\xac\xda\x6a\x94\xf0\x5a\xa3\x84\xa2\xab\xb0\x0d\x98\x18\x70\x56\xb0\xaf\xc3\x18\x8a\x09\xe4\x3a\xc9\x0b\x17\x9a\x8b\x03\x69\x18\xbe\xbd\x1a\xc0\x46\xcf\xfd\x9c\x07\xf3\x00\x8b\xc1\xbb\x94\x16\xe9\x0d\xa7\xc2\xee\x85\xca\x9a\x74\x00\x40\xf5\xbb\x08\x94\x33\xb7\x82\x7b\x85\x0f\xc6\x3a\xeb\x48\xeb\x9b\xf7\x77\x3f\xbf\xbd\xfa\xdb\xf5\xdb\x39\xbb\xca\x32\xc7\x0f\x75\x4c\xdb\xad\xd7\x5d\x21\x12\x4a\xec\x16\xd4\xb9\x2a\x97\xff\xa8\x70\xac\xfe\xe8\x6f\x78\x51\x27\xe9\x40\xe4\xe4\x3c\x20\x0d\xf0\x91\x39\xbb\x76\x2a\x3a\xec\x58\xed\x25\xf4\xf1\x66\x2b\x25\xea\xde\x7b\xad\xbd\x0d\xd1\xd5\x75\x7b\x4c\x1f\x9e\x26\x2d\x1e\x31\x7a\x9e\x07\x14\x4e\x7c\xf6\xcf\x24\x6c\xa8\x72\x45\x03\xc0\xde\x84\x5b\x18\x0b\x25\x37\x63\x0c\x4f\xce\x9f\x62\xb8\x5c\xed\xa0\xff\xa3\xd6\x2c\x77\xec\x8e\x39\xfb\x01\xfd\x6c\x01\xa2\xb5\x17\xae\x8b\xab\xdc\x6d\xc8\xda\x20\x74\x6a\xd5\x33\x14\x66\xed\xf8\xcd\x30\x01\x0b\xe2\x16\xd6\x2a\xcf\xb4\x88\xf6\x9e\xe1\xd3\xf2\xa1\xf9\xce\x08\x12\x38\x90\x57\x46\xcd\x9a\x32\x39\xb8\xe6\x92\x82\x6d\xf7\x61\x19\xab\xba\xaa\x1d\x03\xd5\xb9\xaa\xac\xda\x44\xaf\xd1\x4a\xab\xd2\x3a\x28\x31\xed\xde\x42\x83\x5b\x3b\x8d\xcf\x1e\xea\x8f\x63\xf1\x9a\xc3\xe1\xb2\xf1\x7c\x12\x7d\xe1\x9c\x62\x2e\x94\x88\xfa\x60\x11\xf5\x23\xc4\xcc\xb5\x80\x4c\xe7\xab\xe5\x52\xe6\x98\xbc\xb7\x94\x2b\xd2\x7d\x7e\xf0\xcd\xe6\x76\x73\xb9\x93\x4d\xcc\xb0\xff\x5e\x83\x2a\xed\x58\x31\x93\x3b\x6a\xcf\x29\xf2\x8d\x1a\x60\xbf\x91\xb4\x37\x13\xff\xc2\xd0\xe0\xed\x20\x5f\xc3\xef\x06\x37\xfe\xe6\x96\x2d\xb8\x65\x2c\xea\x84\xa8\x93\x62\x51\xc5\xf0\xf7\xa6\xd8\x7d\x75\xc7\xb5\xe0\x4b\xe4\x07\xf3\x0a\x98\x5b\x82\x9b\x5b\xef\x2b\xc2\x49\x6a\x23\x93\x87\x2d\x7c\x04\x6b\xa0\xba\x50\x62\xa5\xc3\x39\x9b\x0b\xc1\xfe\xfa\x8a\xfd\x8f\xff\xc1\xfe\xf2\x1f\x7f\xfe\xd3\x1f\x5f\xbd\x7a\xb1\x54\x25\xfb\x86\xa5\x7c\xfb\xd2\x0a\x48\x9f\x7d\xe8\x96\x91\xfd\xc7\x7f\x04\x29\x9e\xf9\x41\x9e\x35\x52\xb8\x29\xd1\xff\xea\xcf\xee\x1b\x7f\x60\x6b\x55\x95\xfa\x65\x48\x71\xa1\x9f\xfa\xd8\x0a\x33\xcf\xcb\xfa\x1c\x2a\x1d\xd5\xbd\xe4\x5d\xa5\x63\x23\xca\x0d\xd4\x14\x58\x63\x91\xdf\xfa\x1a\x69\xae\x6e\x42\x2f\x1a\xa3\x9a\x08\x48\x93\x30\x84\x67\x04\xd3\x85\x9a\x60\xc6\x45\x2b\x58\xd2\x04\x45\x06\x83\xc0\x5d\x2d\xe1\xac\x4d\xed\xac\xa3\xcf\x35\x16\x9f\x20\x85\x4f\xce\xea\xa1\x9c\xd5\x5a\x02\xb4\x46\x74\x9e\x59\xbb\x69\xe0\xc3\x6d\x85\x0e\xa1\xc7\x4e\x63\x99\x0e\xe6\x10\xa8\x96\x5b\xb7\x56\x1f\x71\x49\xea\xa5\x6f\xb9\xcf\x32\x40\x91\x0f\xe1\x49\x5b\xd5\xdd\x77\x5c\x77\x8b\xad\x0b\x25\x42\x93\x21\xdf\xbb\x17\x2b\xfa\x36\x9f\xee\x17\xb7\xc0\x53\xa0\x44\x75\xe2\xa6\x3e\x3a\x97\x2b\xe6\x4c\x22\x86\xff\x10\x56\xaa\x3c\x6c\x50\x74\xe6\x5d\x54\x8b\x4c\xea\x35\xe6\xcb\x40\xea\x02\xa4\x1d\xd5\xbf\x29\xf9\xa0\xd7\xd6\xac\x79\x0e\xe8\x57\x88\xf4\x5b\x6e\x3b\xf3\x3c\x74\xc6\x16\x95\xcc\xd0\x5f\x54\xef\xab\x4f\xcb\xc3\xad\xed\x1f\x6b\xa3\xf0\x3e\x8a\x72\xeb\x22\x2c\xa0\xee\x82\x37\xbf\xe6\xb0\xa4\x61\xf3\xb3\x36\x5b\xf6\xd7\x4a\x6e\x06\x55\x2b\xbe\x00\xf0\x06\xa7\x12\x80\x2e\x0e\x87\x63\xd8\x0b\xd9\x2f\x7a\x1b\x1f\x8c\x8f\x6f\x55\x65\x29\x72\x83\x3e\x8a\x97\x81\xa1\x7f\x16\x0b\xda\x6d\xb4\xcc\x57\xb3\xfa\x77\xb3\xda\x8e\x86\xb0\xe9\xf1\x71\x62\xbd\xff\xa4\xd7\xbc\x4c\xef\x55\xa1\x32\xb5\xda\x0b\x0b\x1d\x4c\xae\x81\x37\xb0\x9d\x1f\xbe\xb5\xbb\x6c\x43\x37\x34\xea\x09\x77\x50\x67\x20\x8c\xd9\x70\x6a\x12\xfe\x9c\xbd\xf0\x00\x97\x97\xd0\x5e\x42\xe5\x02\x6b\xbe\x6e\xec\xc0\xd2\x05\xea\xf4\x07\x57\xae\xbb\x73\x76\xaf\xe6\xfe\xa5\x44\x6d\x2e\x51\x3e\x5c\x26\xaa\x14\x97\x30\x3b\x91\x7a\x77\xd2\x0c\x07\x3c\x73\x95\x11\x0e\xfa\x8e\x82\xf0\x0c\x9c\x33\x38\x18\x89\x7d\x5e\x9a\x17\x76\x91\x65\xe8\x4d\x45\x28\xf9\xa3\x4c\x85\xeb\x56\x3b\x10\xe4\xec\x20\xd1\x64\x86\x55\x34\x3d\xce\x8c\xbd\x90\x73\xe1\x56\x70\x9e\xe4\xcb\x97\x3b\xe6\xe2\x80\xbc\x71\x78\xf1\x0e\x4a\xdb\xca\xae\x03\x5f\x6c\xb2\xd2\x1c\xbc\x3b\x66\xb8\x1d\x14\xf8\x33\x34\x5d\xfe\xa4\xaf\x33\x6e\xb5\xaf\xbf\x65\x2a\x79\xb8\x33\xaa\x1c\x74\xed\xec\x40\xc2\x7e\xba\xdb\x7b\xbb\x93\x4d\x9c\xb3\xab\x9f\xee\xd8\x1b\xa9\x1f\x06\xd5\x9e\x2e\x0e\x6c\xa7\x52\x01\x67\x0f\x58\x4e\xfb\xfc\x5c\x43\x53\x33\xb6\xe1\xc9\x5a\xe6\xc3\x66\xaf\xbb\x4f\xf2\xda\x4e\x6b\x1a\x92\x3d\x1b\xb7\xca\x9f\xb4\xc0\x69\x2f\xec\xb4\x01\x97\x76\x8c\x8e\x6d\x4b\x7d\x1f\x5b\xcc\xf3\xfc\x3b\x99\x09\xf4\x69\xa0\x42\xed\x9c\x0d\xbe\x73\x82\x5d\xcf\xad\xaa\x82\x1a\xaf\xef\xba\x0d\xbd\x6a\xe6\xec\x5e\x16\xdf\xb2\xeb\x56\xed\x71\x8f\x6c\x6f\x7d\x2a\x48\xd3\x1a\xc5\xbb\xde\x7f\xd8\x3f\x4c\xee\x84\x76\xee\xce\x1b\x73\x8d\x70\x03\x42\xc7\xe7\x33\xf1\xc9\xfc\xf1\xec\x82\x9d\x7d\x5a\x6a\xfb\xff\x72\xb3\xd4\x67\x73\x76\xb3\xa9\xbb\xd7\xc8\x7c\x29\xca\x12\x77\x7c\x21\xdc\x0b\xe1\xc1\xee\x16\xd0\x39\x3e\x8b\x04\xc7\x80\xfd\x03\xad\x6e\x9d\x2a\xf6\x04\xa0\xc3\x47\x2b\xce\x21\x4f\xa9\x06\xa7\xb4\xb6\x61\x59\x0e\x08\x39\xff\xd8\x6b\xa1\x54\x1b\xa9\x7d\x20\xcb\x1d\x9f\xe3\xf5\xe4\xe3\xa5\x01\xe0\x69\x1c\xe7\x82\x5b\xc5\xbf\xda\x6d\x9f\x51\xf3\x2d\xf0\x65\x70\x86\x0d\xdf\xde\x2c\x7d\x77\xa4\x0b\x07\x65\x6c\xbb\xd0\xb0\x11\xd3\x62\x4b\x69\xd2\xc1\x9c\x9f\xbb\xc5\x9b\xec\x3b\x55\xfa\x01\x5e\xa6\xe2\xf1\x52\xa7\xfc\x9b\x0b\x18\xa6\x0b\x15\x86\x47\xda\x99\x33\xd7\xec\xec\x9b\xb3\x39\xbb\x93\x1b\x99\xf1\x32\xdb\x5e\xb4\xd7\xa0\xfe\x5d\x90\xaa\xbd\xbb\xfc\x80\x40\x0d\x7f\x75\xc6\x5e\xa8\x12\x46\x96\xf0\x9c\x65\x82\x3f\x62\x4a\xb6\xaf\xf6\x18\x24\x09\xf8\xba\x97\xc1\xbe\x8d\xa7\xb0\x6c\xed\x75\xc0\xd3\x0f\x79\x16\x48\x27\x3b\x8c\x65\xdd\xb2\x33\x53\x56\xe2\xcc\xee\xf7\x52\x95\x08\xd7\xc4\x28\xfb\x5a\xb0\x8f\x8e\x72\x70\xfe\x75\x59\x4c\x99\xb3\x1f\x61\x3f\xde\x59\xe6\x01\x36\xc2\x0f\xec\x31\x5b\x90\x66\x8b\x19\xcf\xa0\x77\xc2\xd9\x67\xbf\x89\x18\xb9\x0d\x01\xab\x33\x50\x6f\xde\xc4\xed\xc3\x0f\x18\x45\xb9\x79\x53\x37\xbb\x14\xa5\x96\x1a\x12\x54\x53\xa9\x1f\xea\xdb\x3e\x2c\x93\x51\x7d\x78\x71\xb5\xe1\xff\x54\x39\xbb\xfe\xdb\x9d\x1b\xd2\xcb\x2f\xb8\x70\x47\x6a\xa6\xed\xd7\xf6\x79\x2e\x1e\xc6\xf8\x3f\xab\x52\x58\x05\x8b\x5e\x2a\xda\xbf\xb1\xab\xa9\xd9\xbf\x43\x92\x33\x28\x6c\x28\x2d\x07\x97\xc4\xf5\xcb\x87\x3b\xdd\x9e\xb2\x85\xcc\x53\x27\x64\x5b\xda\xd6\x11\x14\xa3\x04\x6e\xac\xd5\x50\x05\x80\x83\x53\x3d\x87\x3e\xb6\xaf\xf1\x6d\xcc\x0d\x65\xef\x55\x2e\x2e\x40\x10\x00\xbc\x07\xff\x67\x90\x15\x7f\x2a\xa5\xe9\x07\x55\xf8\x87\x7c\x65\xda\x73\x30\xaa\x38\x61\x3b\x79\x0b\x0a\xff\xc1\x89\x72\x97\xe7\x22\x53\x0b\xe6\x38\xfd\x98\x23\xfd\xe1\xe3\x4d\x7c\x15\xc5\x8f\x37\x9f\x6f\x90\x23\x14\xe7\x5d\xbd\xb9\xd1\x21\x9a\x6a\x0f\x8d\xa6\x15\xbe\xd8\xc1\x99\x4d\xd6\x76\xe7\x5e\x8f\x0d\xeb\xbb\x71\x7a\x2e\x1b\x70\x03\xf9\xa7\xad\xe7\x1e\x6b\x07\x1e\x64\x1e\xa8\xf4\xbc\x7b\x34\xaf\x3f\x15\x58\x5e\xc0\xa1\xfb\xef\xd6\xdc\x0a\x4d\xb6\xa9\x32\x03\xb5\xe5\x2c\xa3\x84\xef\x54\xa9\x1f\xb4\xbd\x61\x3c\x4b\x31\x57\xd7\x8f\xb1\x37\x02\x0b\xba\xa5\xdf\x32\xab\xfa\xc6\x50\x3c\x4c\xf0\x1d\xe2\xb6\xbf\x45\x99\x5b\xc3\xb8\x83\x2d\x70\x6a\xaa\x2f\x20\xe2\x2f\xf3\xfa\x55\xfe\xc8\x65\xc6\x17\x32\x93\x66\x6b\x75\x94\x97\xf3\xa8\x06\xdb\x1a\x96\xec\x68\x42\x69\x94\xda\xd5\xae\x7b\x02\x4a\x0d\x7b\x61\xe9\x5c\x3e\x59\x81\xf9\x72\x4e\xd7\xb8\xa0\x80\x32\x46\xbf\x15\xba\x02\x1a\x75\xcd\x97\x3f\xd9\xd5\xc6\x68\xec\x1b\x56\x75\x68\x57\xb6\x17\xda\xc1\x1f\xfd\xf0\xf1\xe6\x28\xd7\x7a\x5f\xe1\x1d\xff\xec\x5f\xeb\xf6\x8d\x83\xd7\x3a\xfc\xc3\x1d\x01\x81\xe0\x9a\xd5\x7e\xae\x9b\xfd\xb7\xcb\x73\x94\xc4\xed\x83\xb3\x6f\x57\x57\x75\xf9\xdb\xed\xf6\x3f\x1a\x77\x3c\x38\xf7\x3b\x27\xde\x5c\x55\x56\xd4\x2c\xec\x5e\xff\x7d\x20\x03\xbf\x3d\x45\x82\x44\x01\x01\x15\x3d\x41\xb8\x09\x18\xa1\x9c\xee\x51\x15\xf2\x66\x37\x86\x7f\xe6\xa7\xf4\xdc\x13\x9e\x88\x62\xbd\xa4\xf7\x17\x78\x2d\x8a\xf5\x77\x77\xdd\x52\x8d\xf6\x6f\xec\xbb\xbb\xfd\x33\x3b\xb8\x6e\xc0\x2c\x30\x0d\x8d\x45\x10\xcf\x35\xcb\xe4\x52\x18\x39\x38\x29\xea\x89\xde\xa8\x5c\x1a\x55\xc6\x81\x0b\xa0\x87\x36\xec\x11\x7b\xe7\xde\xc7\x6c\xae\x44\x65\x99\xf0\xc1\xc9\x20\x4f\xc3\x82\xf8\x01\x1c\x32\x11\x5d\x5a\x93\xf6\x79\xa9\xce\x1c\xbc\xc4\xcd\xb8\xfc\x78\x7d\xf5\xe6\xdd\xf5\x7c\x93\xfe\x6e\xad\x9e\x66\x46\xcd\x2a\x2d\x66\x32\x80\x4f\x22\x35\x2f\x61\x71\x4d\x3d\x28\x8d\x2a\x18\xa9\x68\x49\x7f\xc1\x9b\x1f\x5c\x68\x02\x5c\x82\x96\x83\x44\xca\x4a\xa5\xcc\x45\x28\xaa\x5a\x0f\x72\xcd\x9d\x47\xb2\xca\x32\x5c\x7b\x53\x0a\x71\xd1\x76\x74\x0c\xb6\xde\x66\x27\xd7\x4e\xce\x0f\x37\x77\x3e\x70\x69\x04\x67\x5b\xdf\x0b\xa7\xb8\x34\x0e\x06\x53\x4f\xc3\xac\xb1\xf7\x53\x48\x09\x61\x03\x6b\x7e\x57\x53\xf0\x59\xd5\x50\x98\xc6\xa8\xc1\x32\x2f\xfe\x81\xbc\xc6\xa5\x2a\xa1\x22\x7f\x97\xab\x84\x49\x60\x19\x20\xa1\x7e\xee\x6e\xc1\xde\x48\x67\xfb\xf9\x7c\x4b\x4c\xb9\x1f\x61\xe0\x1f\xc5\xf2\x79\x0b\xfc\x51\x2c\x31\x67\xd4\x55\x9d\x63\x81\xca\x72\xfe\xe1\x95\x59\x8b\xdc\xf8\xf4\x7f\xb7\x8c\x07\x57\x1c\xdb\xa1\x7f\x3d\x5c\x4c\xef\xdb\x44\xed\xdc\x34\x54\x26\xc7\xad\xac\x89\x76\x3b\xaa\x47\xab\x72\x8b\xa7\x4b\x07\x78\x98\x3d\x49\xb3\x9e\x39\x34\xf8\x25\x00\xcd\x2f\x7f\x07\xff\x8f\x30\x3e\x1f\x20\xba\x4a\x53\x57\x4f\xab\xd2\x62\x59\xb9\xf0\xb7\x9e\x33\x5e\xc8\x1f\x45\xa9\xa5\xca\x2f\xc0\x20\x0f\x7b\x17\xec\x53\xc9\xf4\x7f\x86\x96\x9b\x8d\xb9\xbe\x82\xed\x98\x46\x34\xfa\xeb\xde\x5f\xa5\x17\x2b\x25\x4f\x95\xc6\xe4\x69\xbb\x9a\xe1\x89\xb7\x58\x9b\xa7\x1b\x99\x7f\x6e\xf9\x7b\x24\xa5\xd5\xeb\x3a\xcf\x56\x46\x65\x9e\x46\x74\x1c\x3e\x7f\x0d\xbf\xef\x6a\xa3\x48\xa3\x2e\x5b\xe9\x22\xf8\x83\xab\xc1\xbd\x55\x89\xf9\x0c\x2e\xce\xdf\x8d\xf2\x1f\x3c\x73\xbb\x5b\xb3\xd9\xea\x7f\x64\x33\x1c\xc1\xac\x48\x9b\xbd\xf9\x5a\xc2\xf2\x9f\xd7\xbd\xf8\x0b\x08\xa6\x1f\x65\x07\xd9\xa4\x40\xd6\xcf\xe9\xd7\x98\xae\x33\x3e\x43\xa3\x71\xc0\x4e\xc0\xfd\x38\x85\x04\x65\x97\xf7\x6f\x84\x6f\x1f\xd6\x74\x81\xd4\x75\x29\xb1\x44\xe5\xb9\xeb\xe5\xf1\xa1\x10\xf9\x9d\xe1\xc9\x43\x30\x9e\x33\x69\x19\xbf\x0a\x2d\x63\x5c\x1c\xdb\x5d\x64\x32\xad\x79\x48\x42\x5f\xb5\xe5\xb6\x85\xd2\xa0\xc4\xb0\xf1\xc0\x7d\x15\x52\xf0\xf3\xc6\xa6\x11\xb7\xf8\x8e\x17\x74\x2f\x97\x7f\x63\x47\xb5\xa8\xff\xec\x9c\x57\xaa\x0a\xa4\x60\x16\xaa\xa8\x32\x6c\xf7\x20\x75\x78\xaf\xa8\x07\x9d\x50\x8a\xfe\xe0\xbc\x68\x25\xe9\x83\xcc\xe4\x4b\xd6\x47\x95\xa6\x0f\x52\xdd\x2b\x5d\x1f\x2a\x51\x1f\x96\x85\x43\x25\xec\xfb\x4b\xd5\x07\xe9\x46\x55\x2d\x86\xba\xc4\xe1\x25\x8d\xaa\x5b\x4c\xa8\x4c\x7c\x2a\x50\x14\xc9\xc9\x38\xa2\xb4\x3d\xc1\xcd\xe7\x50\x21\x7d\x25\xee\x9b\x43\xeb\x50\xc9\xe1\xfb\x79\xaf\x0a\x7e\xa0\xda\x3d\x69\x90\x87\xab\xe1\xf7\x56\xbd\x0f\xd2\x0c\x57\xc5\x3f\x58\xfd\x3e\xec\x76\x21\x55\xc7\x6f\x57\xc1\x0f\x92\xa4\x55\xc9\xaf\x37\x8a\x36\xff\xe3\x16\xcc\xf7\xcf\x88\xc2\xf9\x04\x7d\x0f\x0a\xeb\x53\x0b\xe8\xfb\x87\xe8\xb7\x8f\x2e\xa8\x4f\x50\x73\x42\x25\xf7\xeb\x99\x45\x68\xa0\x84\x12\xfc\x07\xa7\x14\x5b\x8a\xdf\x3f\x11\xaa\x1a\x23\x95\xe6\x3f\x38\x3a\x42\x89\x7e\x12\x51\xbc\x3d\x2f\x88\xa5\xfa\x89\x24\x77\xd2\xea\x86\x4b\xf6\x13\x69\x1e\x2e\xec\x3f\x54\xba\x9f\x48\x38\x70\x55\x76\xae\x42\x32\xc9\x63\x5c\x98\xf8\xc4\x5c\x9b\xee\xeb\xe4\xcb\x13\x1f\x4a\xb4\x0c\x9f\xa8\x52\xff\xc4\xb5\x72\x0d\x01\x48\x25\xff\x89\x24\xdf\x1d\x10\x98\xfd\xa5\xff\x89\x44\x0f\x36\x08\x20\xc9\x53\x7c\xa2\xc4\x02\xc5\x20\xc1\x67\xb8\x35\x40\xf3\xab\xc1\x16\x01\xdd\x31\x12\x4c\x47\x7a\x28\x96\x62\xff\x7f\xdd\xb6\x7f\xac\xdd\x4f\xb2\xe9\xc9\xdc\x10\x6a\xbd\x70\x70\x0d\x0f\xb5\x60\x68\xd4\xd1\x56\x17\x86\xe0\xe4\xfd\xb5\x30\xdc\x8d\xa1\x3b\xab\xb0\x43\x8c\x66\x26\x6b\x49\x37\x90\xef\x6e\xd8\x8b\xd7\x75\x43\x71\x0f\xe2\xb9\xc9\x8d\x28\x97\x3c\x11\x2f\x5b\x86\xf3\xb0\xa3\xce\xbd\xe9\x33\xee\xd6\x3c\x4f\x33\xb4\xd6\xda\x49\xc6\xf6\x7b\x69\x29\x21\xd3\xf4\x2a\x2b\xd6\xc3\xba\x8d\xab\x5b\x36\xe8\x0c\x25\x9b\xda\xf0\xd5\x38\x5c\x18\x0e\xf4\x40\x07\xea\xd6\x34\xec\x84\x83\xdc\x80\xab\xa1\xdb\xde\x83\xb9\x65\x2c\xb8\xe9\x40\x34\x6e\x55\x55\xba\xd0\x91\x2b\x95\x19\x24\x9a\xa8\xd2\x9a\xd5\x38\x30\xae\x59\x29\x56\xd6\x06\x28\x5b\x79\xd9\x98\x5f\x7b\x34\x54\xee\x51\x71\xd1\x2d\xd4\xb2\x0b\x18\x84\xe3\x0b\x3e\xa0\xb0\x74\xe6\x08\x64\xe7\x3a\x45\x09\x4b\x78\xd7\x65\x35\x0a\xae\x35\xc1\x05\xe2\x8c\x2e\xae\xb5\x4a\x24\x94\x90\x6c\xed\x2d\x1a\x3f\xa0\x6e\xd5\x15\x13\x48\xa6\xa3\x0f\x07\xb6\x53\x1c\x15\x14\xbe\x0c\x06\xbd\xc9\x9b\x01\xc5\xb5\x30\xcd\xfd\x6e\x94\x97\xfc\xfd\x01\x02\x88\x92\x6a\x47\xfe\x49\xf3\xed\xf3\xac\x33\x2d\x72\x2d\x41\xd1\x69\xd5\x96\xa3\x6c\x8a\xdd\x3e\xbf\x39\xed\xd3\xa6\x20\xff\x30\x13\xd8\x79\x15\xfe\xa9\x35\x8f\x1f\x69\x4e\x54\x5f\x63\xf8\x87\xbc\x68\xbf\xc7\x12\x9e\x65\x7a\xb7\xeb\xbf\xbf\x48\x68\x86\xb8\xef\x3a\x81\xdc\x28\x2d\xa3\xd6\x5d\x71\x74\xab\x92\x3b\xa9\x8b\x34\x3b\xbc\xb0\x9a\x6d\x14\x26\xd2\xe6\x50\xef\x0d\x7f\x74\x01\xfd\x86\xf1\x7f\x13\xf4\x24\xb7\xc3\xae\x2e\x06\x1c\x96\x10\x6b\x4e\xe1\x8b\x5f\x45\xf8\x62\x54\xe0\xf2\xae\xae\xcf\xc4\x81\xc0\x0c\x72\x0f\xf6\x5a\xf0\x90\xa4\x85\xbf\x00\x9f\x17\x01\x8d\xcd\x3b\xbc\x32\xd8\x28\x24\xcc\xbd\x71\x8d\x6f\xba\xe3\x21\x6d\x55\xb7\xe7\xf1\xce\xe8\xb0\x2f\x8d\x76\x12\xcf\x17\xa0\x0e\x55\x9d\x6c\x9f\xce\xa6\x8a\x29\x9e\xeb\x7d\x39\x5a\x2b\x1f\x41\xaa\xa0\x97\xe0\x4b\xe7\x9a\xa5\x2a\xa9\xac\x21\xd8\x6a\xb9\x54\x83\x08\x30\xef\x86\xb6\x6b\x41\x2e\x25\x66\x50\xc0\xb8\x9e\xab\x2f\xa7\xea\x29\x7f\xe2\x65\x7a\x75\x3b\x98\x96\xd6\x55\x0d\x9b\x77\xda\xa1\x25\x4f\x8a\xd9\xbf\xf3\x85\xaa\x86\xeb\xf2\x32\x88\x2c\xa5\xed\x28\xd4\x14\x69\x9a\x22\x4d\x53\xa4\xc9\xbe\xd1\x6d\xbf\xd2\x39\x59\xc4\x58\xb9\x5d\xd1\x13\xb8\xec\x5b\x67\x1f\x65\xf7\x6e\x96\x54\x8c\xaa\x0b\xca\x2e\x9e\xa2\x86\x0b\x5a\x0a\xb4\xcb\x8d\x22\x55\x09\x8e\x75\xef\x03\x4d\x82\xd5\x70\x60\x0d\x5a\x09\x16\x77\x50\x39\x0e\xe3\x6c\x4d\x40\x8f\xe8\x1c\x2c\x54\xfa\x2d\x16\x2e\x6e\xf5\x2f\xbb\x60\x19\x5f\x88\x4c\x5f\x38\xd3\x36\x4f\x9b\x1e\x92\x44\xba\xf6\xf2\xab\xaf\x26\xa2\xc3\x38\x6e\xf1\xe0\x2b\xb5\xee\x47\x7d\x63\xf7\xee\xc7\xb7\xeb\x92\xbe\xc9\x5a\x6c\x38\xfc\xcf\xef\xec\x5a\xde\x52\x7c\x8f\xcd\x23\x35\xb3\xaa\x93\x11\x58\xfe\x44\x94\x1b\xcd\xd4\xb2\xc6\x5d\x63\xb1\x89\xc7\x6f\xce\xa8\xee\xe0\xe8\x90\x0c\xf3\x4c\x75\x4b\xf6\x8c\xb3\xdd\x25\xb9\xed\x38\xc4\x5d\x1d\x2e\xac\x4e\x48\x89\x2e\xb7\xc6\xde\x89\xa5\x82\xd8\xc0\xd5\x3e\xe1\xf4\xe9\xee\x67\x06\x0a\xcc\x32\x6a\x97\x23\xbc\xcc\x6c\x0a\x90\x4d\x01\xb2\xc0\xf3\xd5\x06\xc8\x5a\x97\x0b\x48\x03\xa9\xfd\xc4\x31\x68\x46\xbd\x5b\xec\xbb\x6d\xaf\xad\x6f\xa5\xbd\x10\x75\x57\x15\x54\x43\xe9\xc1\x2c\xcb\xc7\x3e\xb2\xa6\xca\x2e\xb2\xe0\x7c\x3e\x3f\x3f\xf7\x2d\xb6\x29\x85\x86\x6b\x92\x95\x59\xce\xfe\xcc\x44\x9e\xa8\x14\x59\xd1\x8e\xb5\xd4\x06\xd4\x93\xc6\x1f\x12\x3f\xfb\x8d\x9b\x5d\x07\xc9\x00\xe3\xa4\xb1\x48\xa4\x00\xf4\x95\x78\xbe\x7b\x86\x62\xd1\xa8\x13\x75\x15\x3f\xb7\x00\x89\x0f\x53\x50\x6f\x16\xd0\x2b\x3c\x15\xcd\x32\xb9\x91\x90\xc3\x9e\x82\x9c\x16\xda\x68\xf6\x02\xff\x38\x4f\x8a\x8a\xe6\xb8\x61\x8e\xcc\x7c\x23\x36\xaa\xdc\x5e\xd4\xa4\x2c\x89\x0e\x6d\xf7\x8b\x97\x11\x1a\x8b\xab\xa3\x9a\x6d\x3f\x83\xee\x52\xaf\x26\x25\x9f\xba\x79\xf6\x6a\x87\xba\xc8\x11\xf8\xfb\xea\xfb\x8f\xe4\x0a\x6a\x1e\x97\x09\x73\xd1\xaa\xc0\x09\xbd\x08\x1f\xd9\x23\x2f\x7b\x0b\xb5\xee\x3f\x23\xd4\x95\x54\x3e\x4a\xad\xc8\x2c\xd5\xeb\x15\xb3\x0c\xaa\x2a\x53\x54\xc6\xc9\x55\x4a\x7e\x71\x6b\xe4\xeb\xa6\x03\x40\xcd\xb1\x3b\x9a\xdb\x37\xe1\x44\x89\x9a\x5c\xfc\x42\xf8\xaf\x8e\x65\x85\x46\x66\x37\xd5\x37\xbd\xe2\x76\xc2\x1d\x8c\xd5\xb8\xc8\xc5\xc2\x58\xac\xc2\x15\x03\x3d\xf8\x32\xa0\x02\x12\x41\x08\x5c\xbc\x91\x11\xc9\x5b\xd7\xee\x8d\x2e\xc6\xda\x88\x4d\xa1\xa0\x65\x76\xea\x7c\x32\xc3\x78\x87\xfd\x32\x02\xad\x3a\x02\xcf\xae\xcf\x06\xb3\x4a\x65\x79\x8c\xfc\xad\x8d\x48\x65\xb5\x89\xf3\xa2\xfd\x04\x45\x4f\x5d\x41\x55\x1f\x2b\x47\x42\x75\x57\x70\x9e\x0c\x57\xb5\x65\xbe\x22\x70\xbd\xa0\xa8\x2a\xb4\xeb\x00\x9e\xb9\x98\xe5\x46\xf0\xdc\x6b\xed\x24\x9f\x7c\xae\x52\x61\x57\xdc\x13\xc3\xb1\xb5\xdc\x74\x79\xa7\x47\x72\x90\xe6\x0b\x47\xe8\xa5\x55\x93\xde\xc1\x4d\xf8\x59\x36\x91\x45\xe5\x4b\xcb\x7f\x8a\xb7\xf6\x3a\x8f\xac\x34\xaa\x0c\xcf\x18\x77\x65\x32\x96\x0c\x7b\xaa\xfa\x5d\xf5\x72\x20\xec\x9e\xf2\x4d\x7f\xeb\x03\xe4\x03\x23\x76\x57\xed\xd8\x50\xd7\xc0\x82\xf7\x1a\xe3\xc7\x32\xe1\x43\x3d\x7c\xdb\xb4\x51\xff\xa8\x77\xf2\x1e\x4a\xb5\x7e\x92\x9b\x6a\xc3\x2a\x6d\x47\xaa\xf2\xee\x6f\x82\x54\xeb\x81\x3e\xf9\x3e\xf6\x50\xec\x41\xe6\x40\xb4\x6b\xde\x41\x3b\x07\xbf\xbe\xe1\x38\x67\x6d\xa8\x43\x36\x9b\x77\x69\xea\x0a\xd4\x5f\x37\x4a\xa7\xc0\xa9\x25\xe3\x03\xdd\xc8\xfd\x53\x2b\x38\x50\xe9\x96\x63\xa5\xe6\x9d\xf3\x92\xcb\xac\x7d\x60\x08\x27\xc5\xd5\x2e\xae\x37\xa6\xca\x1d\xc2\x27\xbe\x63\xff\x89\xd8\x9a\x24\xe5\x97\x07\x9b\xf9\xfb\xa7\x8b\xe0\x78\xdd\x15\xec\xdf\xc9\x45\x29\xd8\xeb\x35\xcf\x73\x91\x75\x4b\x6d\x0f\xbb\x81\xfb\xca\x70\x77\xf3\x73\xf7\x2a\x6d\x0f\xdf\x1a\x47\xad\x1e\xf5\xcb\xcb\xcc\xfd\x6a\x0a\xff\xd1\x8a\x4d\xd3\xe2\x44\x4d\x31\xea\xd3\x17\x9b\xce\xaa\xc8\x32\xd3\x8d\x77\xec\xbb\xd7\xcc\xf0\x72\x25\x8c\x25\xc2\xf2\x6a\xb3\x10\xc1\x33\xfc\x35\x15\x38\xfe\x5a\x52\x91\x8f\x97\x2d\x8c\xdb\xf1\xd3\x4f\xef\x23\xab\x45\x1d\xda\xd3\x27\x55\x66\x29\x34\x47\x87\xd8\x03\x7b\x61\xc9\xbe\xfc\x7a\x4b\x37\x3d\x3d\xc9\xc8\x0e\x5c\xdd\x69\x3b\x37\x2a\x4c\x9b\xc1\xbc\x5d\x7a\xaa\x14\x83\xf5\x20\xf0\x79\x01\x9f\x7f\xc9\xae\x25\xb8\x23\xe1\xbf\xd0\x41\xb6\x59\xc8\xbc\xe9\x5b\x58\x6f\x50\x90\xa2\xbd\x06\xec\xb9\xf2\xee\x63\x2d\x0c\x36\x4c\x07\x8c\xbb\x32\x6b\xa6\xe5\xa6\xca\x0c\xcf\x85\xaa\x74\xb6\x0d\xb2\xd1\x97\xda\x1a\xda\x7d\x9c\x89\x4f\x78\x28\xe8\xf7\x72\xfd\x4a\xf7\x7e\x5e\x89\x5c\x94\x32\xf1\x1b\x4a\x32\x78\x3d\x6a\x17\x10\x95\x5a\xaa\x5c\xa4\x97\xf5\x65\x5d\x81\xf0\x05\x14\xaf\x48\x5c\x33\xb9\x22\xab\x56\x72\x30\x92\xf2\x45\x70\xb9\x0d\x4a\x90\x62\xf7\xd4\x0a\x38\x2d\x7b\x6a\x2a\x1f\xbc\xa7\x45\xdc\x1f\xc6\xba\xb6\x7a\xa7\x37\x5c\x1a\xb6\x01\x60\x39\x8e\xb6\x0b\x2e\x56\xf3\x75\x81\xbd\x5a\x32\xf7\xfa\x93\x29\xb9\x15\x90\x1b\x2b\xea\x3c\x2a\x44\x2e\x19\xcf\xc3\xc2\xec\xb4\x60\xbf\x5f\xa1\x6a\xf0\x85\x4b\xa3\xc5\x01\xa4\x29\xb0\xeb\x36\x40\x1a\xa5\xb1\x3b\x40\x4d\xab\xe9\x5d\x20\x72\xe4\x28\x65\xd3\x95\xb3\x06\x2c\xf7\x00\x92\x83\x94\x43\x80\x65\xbd\x0f\x57\x0c\xaf\x40\x77\xd6\x53\xf1\x95\x43\xcf\xaf\x0c\xbd\xfc\x39\x71\xa1\xcb\x4c\x25\x0f\x11\x55\xcc\xbe\xc3\xdf\xef\x78\x4b\xdc\x1f\x63\xca\x98\x0d\x78\x47\xdc\xd9\x6e\x5d\xb0\x00\x16\xc2\x8f\x0c\x12\xb5\x47\xb5\x54\x59\xdd\x60\x7c\x21\xac\xf8\x29\xab\x3c\x50\x01\x89\xac\xc7\x71\xc3\xf5\x88\xf2\xd3\xbb\x1d\x28\xb4\x30\x88\x80\x86\x62\xb2\xbe\x1b\x61\x38\xa6\xf2\x57\xa7\x08\xe6\x1d\x4a\x56\xc5\xf3\x5b\xe0\xfd\xec\x10\x49\xd6\x32\x15\x14\x27\x2d\x87\xc5\x2e\x05\xa9\x85\x3b\xb9\x09\x06\x8e\xee\x87\x1f\x22\x6b\x08\xd9\x17\x76\xd6\xca\x31\x04\x78\x22\xa1\x4f\x4e\x63\xb5\x05\xe7\xa6\x96\x2d\x06\x75\xf4\x3e\xa3\x0f\x72\x95\x88\xdb\xba\x95\x4f\x54\xcb\x99\xf3\xef\x5f\x5f\x77\x5f\xed\x1e\xba\xef\x5f\x5f\xb3\x37\xe4\xd6\x40\x51\x4d\x02\x6b\xf7\xe4\x20\xc9\x13\x34\x09\x5c\x25\xa2\x69\x7c\x94\x4a\xfd\xf0\xb5\x94\x22\x9c\x3a\x04\x7e\x15\x1d\x02\xf7\xf8\x23\x38\x80\xa9\x3d\xe0\xd4\x1e\xf0\xeb\x6a\x0f\xf8\x59\x65\x24\x3b\x99\x3b\xbe\x48\xa3\xb5\x20\xdf\xe5\xae\xed\xcc\xba\x7d\xd3\x44\xd7\x64\x6e\x2f\xb5\xb0\xb9\xfd\xc3\xa1\xd2\x82\xbe\x5d\x96\xa5\xf0\xd9\x97\xf8\xc4\xf5\x54\x49\xfe\x05\x82\xe1\x7b\xd8\xff\xb0\xef\xfe\x68\x2f\x60\x90\xec\x67\x5c\xe0\x63\x35\x25\x42\xde\x7d\xb6\x6a\x27\xcd\x47\x51\x0c\xae\xd0\x8e\x42\x87\x2f\xec\x78\xb2\xa5\xb1\x7f\x50\x5a\x1a\x55\x6e\x19\x37\x50\x18\xab\x34\x32\xa9\x32\x1e\x8a\x88\xa1\x1f\x7b\xce\xde\x5c\xdf\x7e\xbc\x7e\x7d\x75\x7f\xfd\xe6\x5b\xe6\xbf\x22\xdb\x4a\xfd\x9c\xdd\xab\xc6\xf1\x3d\x48\x95\x37\xa0\x02\xc4\xd2\x36\x63\xbc\x70\xe2\x9e\xe7\x0d\x4a\x02\x4a\xba\x05\xfc\x52\x37\xb9\x34\x0d\x8a\x12\x1b\xef\x64\x2a\x77\x88\x42\x4b\xd9\xf9\xdf\x57\xd2\x5c\x60\x5c\x3c\xdc\x48\xd1\xbe\xda\x1d\x05\xc8\x13\xc4\x54\xd5\x53\x18\xf4\x98\x90\xcd\x3e\x8f\x45\x8a\xeb\xe8\x87\x31\xb6\xfa\x65\x77\xf7\x79\x30\xb6\x1f\x63\xd8\x82\xd9\xaf\xd1\xc6\xec\xad\x7c\x3e\x3f\xf7\xca\x60\xb6\x93\x28\x10\xa4\xd9\x0c\xca\x17\xe9\xb3\x2f\x77\x79\x71\xce\xd8\x07\xdf\x6e\x3d\xec\x32\x91\xbb\xa5\x02\xeb\x60\x9b\xfd\x40\x1b\x43\xde\xfd\x4a\x98\x70\xee\x50\x32\x8b\xf6\xa0\x5d\xa1\xa5\x95\x7c\x14\x39\x2e\xec\xf1\x44\xb4\x1f\x5a\xd4\x6e\x7f\x6c\xce\xf0\x0f\x1f\xdf\x1e\x6f\x30\x78\x62\xa3\x86\xf2\x5a\x6d\x36\xd2\xb0\x35\xd7\x6b\x5f\x67\xa5\x85\x3d\xaa\xa5\xc6\x71\xc6\x48\x93\xb8\xa4\xfd\xa6\x49\x5d\x2c\xf7\x12\xd1\x05\xea\xfc\x7b\xff\xca\x8e\x01\x5d\xff\xd9\xf7\x82\x0a\xca\x1b\xb0\xb3\xe2\x41\x9c\x7d\x4d\x11\xea\xb9\x1c\xb7\xf6\xbe\xc8\x53\xac\x08\x1e\xd9\x5c\xd2\xbf\xf6\x1e\xeb\x87\x22\x5e\xdb\xfd\x11\x95\x36\x52\x1d\xa0\x54\x18\x2e\x33\xdd\x5a\x5f\xa3\x0a\x95\xa9\xd5\x61\x70\x64\xc4\xe2\xfc\x0e\x33\x5a\x66\x7c\x66\x57\xfd\x78\xb6\x56\x6c\x3f\x28\x9f\xb0\x63\x17\xa8\x99\x65\x6d\x63\x40\x6e\xcc\xf1\xfa\xea\x7c\xb6\x85\x38\x81\x72\x5a\xaf\x4e\x70\x2d\xbc\x95\x0a\xde\x05\xdf\xdf\x02\xe4\x7c\x53\x89\xa3\x10\xe5\x46\x6a\x2b\xbc\x5a\x5a\x2b\xc5\x94\xdd\xd3\x6a\x3f\xd3\xa2\x1f\x4b\x61\xad\x4f\xf4\xb0\x5a\x3b\x0c\xb8\x27\x89\x57\x2b\xe1\x42\x89\xad\xfb\xed\xa2\xe1\x40\x74\x84\x6b\x51\x8a\x99\xf8\x24\x35\x58\x1c\x90\x93\x16\x48\x96\x69\x2e\xf7\x76\x1f\x4d\xef\x90\xf4\xee\x4b\xfc\x55\xb6\x8d\xc1\x4d\x36\xba\x60\xed\x46\x06\xf8\x08\xcf\xb2\x2d\x96\xa9\x87\x1a\x1f\xe8\xfe\xe1\xab\x60\x15\x38\x55\xba\x30\x53\x51\xca\x47\x99\x89\x95\xb5\x46\xd7\x32\x5f\xb5\x6a\x92\xf0\x2c\x53\x4f\xc2\xa5\xf5\x8a\x60\xa4\x6f\xb7\x77\x8b\x36\x6d\x64\x2f\x9c\xa9\xf7\x1f\xee\x59\x2e\xf0\x53\x9a\x20\x5f\xc6\x5b\xbf\x76\x30\xc1\xdc\x8d\xd9\x6c\x06\xbe\xb5\x17\xff\x6d\xf5\xf8\x34\x7b\xc9\x7e\x12\x6e\x7c\xd6\xc0\xb1\xd2\x26\x31\xec\x69\xad\xc0\x5b\x52\x69\x42\x8f\xc5\x86\x03\xe0\xf8\x63\x12\x9b\xa3\x70\x69\xa9\x58\xa5\x19\xaf\x6a\x58\xaf\xb4\x29\x83\x31\x6c\xd0\x68\xd6\x44\xf3\x8f\x62\x0f\x8c\xbc\x31\x7c\x50\xe3\x10\xa7\x93\xd2\x83\xeb\x2a\x1f\x50\x35\x42\x6f\x37\x99\xcc\x1f\x2e\x98\x34\x5e\xec\x5a\xae\x73\xd0\xed\xfc\x81\x5a\xd7\xac\x14\x3c\x6b\xdd\x5a\x47\xe0\x9c\xa3\xdd\x48\x26\xda\x71\x7f\xbf\x2d\x04\x9c\xe7\x5a\x2c\x39\xf8\x58\xdb\xc9\x71\x16\x76\x5c\x7f\x5d\x2b\x41\x74\x6b\x1c\x41\xfe\x4b\x1d\x53\x59\xf3\xfc\xe6\xee\xf5\xdd\xcd\x4e\xf3\x64\xfc\x5b\x27\x34\xf5\x0c\xe0\xfc\xb1\x90\xf3\x31\x97\x3f\x2c\xc2\x71\x75\xf2\x64\xcd\x8b\xab\xca\xac\xdf\x48\x9d\xa8\x47\x11\x69\x5c\xfa\x52\xad\x2e\xf0\xc3\xa4\x5f\x62\xa4\xc5\x5e\xff\xe7\xd5\xed\x4e\x67\xc2\x23\xe9\x27\xcd\xc8\xef\x84\x8e\xb6\x44\x0f\x8f\xdb\x51\x3a\xe9\xa8\xa7\xa0\xdf\xaf\x26\xe8\x07\xa7\xf1\xd7\x1a\xe8\x93\xb9\x34\x92\x1b\x45\xca\x50\xef\x7a\x79\x2a\x6d\xd4\xc6\x1d\xa9\x1b\x4f\x06\xa0\x26\x10\xb4\xeb\x50\x26\x31\x58\xd3\x0f\x43\x82\x8e\x91\x68\x59\xd7\x48\xde\x01\xa2\x5f\xb0\x5c\x3c\x85\x89\xc2\xd8\x64\x4d\xe3\x2f\x2e\xed\xc0\xf2\x31\xcf\xfe\xfa\xed\x5f\xdc\xd1\xca\xf9\x46\xfc\x15\x74\x98\x20\xc9\xa6\xac\x45\xed\xda\x72\x5d\xca\x8e\xe7\xd2\x62\x4c\xfe\x23\x4e\xce\x39\x57\x2f\xce\xf7\xff\xae\x78\x86\xeb\xf8\xfe\x98\x7e\xc9\xee\x7e\x44\x0d\xcf\xf3\x88\xdf\x87\xf7\xde\x97\x63\x15\x73\xb8\xb3\xe1\x17\x61\x6d\xb1\xe4\xb9\xb6\x9b\xd7\x8d\x19\x9d\xbb\x90\xf0\x39\x7b\x61\x92\x82\x58\xd3\xf2\x04\x69\x4b\x38\x4d\xb7\x17\x6f\xeb\x74\xa5\xd0\x78\x4e\x14\x1f\x05\x1e\x8f\x73\xc1\x75\x26\x70\x0b\x04\xd8\x5b\xa9\x0d\x62\xd0\x91\x22\xa5\xb3\x8d\xc0\x04\x15\xab\x8b\xdd\x42\x41\xf7\xe2\x67\x9e\xa6\xe5\xb7\x78\x07\x2f\x9d\x4e\x54\x82\x45\xad\xe8\x6d\xcb\x7d\xe4\xff\x85\xd9\x16\x32\x01\xf3\xf9\xfe\xf5\x2d\x50\xd2\xec\xcf\x7f\xc2\x5a\x47\x7f\xf8\xfd\x9f\x5e\x05\x59\xe0\xcb\x65\x10\x8d\xf2\x71\x45\xe1\xbb\x29\x01\x8d\x50\xfc\xf5\x68\x6a\xd0\x38\x44\x38\x28\x66\x77\x4d\x67\x6b\xe4\x4b\x27\xbc\xed\x26\xd7\x77\x4b\x70\xb2\x51\xea\xdd\x84\x5e\xfe\x15\xa0\x97\x7d\x86\x22\xca\xaf\xe7\xca\x3f\x14\x7d\xb7\x5e\xf4\x39\xd1\x16\x66\x3b\xb2\xe8\xeb\x88\xb6\x20\xdd\xe7\x8b\xbe\xa3\x5a\xfc\xf2\x1f\x43\x47\x6a\x66\x6f\xd0\xc1\x7f\x6f\xef\xd4\x73\x3d\x07\x79\x4c\x48\xee\xfd\x77\x77\x3b\x5e\x03\xfb\x17\x1f\x87\xeb\xc6\xda\x86\x05\x5c\x4f\x1c\xee\xb9\x46\x47\xbe\x1c\x2c\xc9\x74\x62\x4f\xa1\x77\x77\x8b\x4f\x5d\x93\xcf\x2e\x92\x16\xe5\x63\x58\xa9\x79\xb6\x07\x2b\xb0\x00\xec\x0b\x07\x96\xec\x4a\xe0\xea\x50\xe2\x3f\x9f\x35\xa4\x74\x92\x55\xa6\x5d\xf6\x65\x6c\x96\xe9\xf9\x1d\xbc\xe3\x83\x99\xf6\xcc\x21\x3a\xaf\xb4\xf2\xd3\x4a\x4e\xa1\x35\xa5\xca\xd7\x0e\x77\x7e\x3d\xdc\x77\x14\xd7\xe9\xcc\xcd\xeb\xb9\x32\xb2\x01\xbd\xa1\x06\xf8\x3a\xe3\x72\xb0\xc8\xd2\x8e\x6c\x38\xf4\x3a\xfe\xcf\x3b\xf4\xb3\x12\x1b\x19\x75\xbb\x9f\x30\xce\x0e\x52\xae\xa1\x37\xdc\xd9\xe8\x50\x9c\x78\x58\xf2\x8c\xdc\xf7\x66\x61\x66\x9e\x05\x9a\x3f\xe1\x5f\x12\x3b\xa4\xa3\x08\x65\xa0\x14\x8f\x5e\x7d\xed\x5f\xdb\x4d\xca\xee\x59\x3e\x8a\x21\xb0\xbf\xbc\x8c\xeb\xba\x1e\x76\xe5\xdc\x4e\xe4\xec\xed\x2f\xbb\xfe\xec\xe4\x77\xc2\x4f\x91\xa9\xb5\xc1\xe5\x7a\xe3\xf3\xba\x8f\x69\x76\xd1\x44\x4e\xcd\x85\xcf\x16\x2a\x6b\x65\x54\x3e\x32\xcb\xe8\xf6\xc0\xcb\xdd\x48\x3e\xfe\xe2\x35\x66\xd6\x65\x21\xaf\x47\x4d\x08\x01\xd9\x75\x4c\x07\x5a\xd5\xba\x2b\x58\xe5\x3e\xba\xa3\xc3\x51\x61\xe7\x70\x3d\xc2\xb1\xff\xed\x54\x2c\x38\x76\xdd\xa3\x63\x9d\xf9\x22\x8d\xcc\x05\xbc\x79\xe3\x54\x61\x9f\xef\xa7\x1d\x3b\xb2\x86\x1f\x5b\x3c\x17\x9c\x14\x21\x65\xe8\xb8\x6a\x45\x7a\xf3\xe6\xd9\xc7\x5b\x95\xe6\x49\x95\xb1\x95\x53\x6e\x3b\xaf\xed\x80\x73\xdc\xbf\x51\xd0\xc2\xa4\x13\xfc\x85\x4f\xe9\x1d\x44\xfd\x5b\x53\x3c\x10\x62\xa3\xa0\x21\xd0\xfe\x3c\x74\xb4\x07\x8e\x6e\x90\xea\xe0\xd1\xc6\xa3\x7b\xf0\xc8\x12\x0d\x9b\xfa\x48\x9f\xe4\xc8\x8e\xba\xa6\x03\xf5\x34\xe8\x29\x2b\xa3\xea\x69\x1c\xcd\x9e\xc2\xd3\x11\x29\xb2\x7e\x74\x2f\xb9\x54\x65\xbb\x9f\x8d\xf0\xe2\xf5\xb1\x0c\x4e\x9d\x04\xe4\x3f\xaa\xb0\xf2\xd3\x7d\xb6\xc0\xf2\xed\xfe\xc9\xb2\x0a\x5b\xe1\x2c\x55\x09\xc5\x32\x24\xd6\xcf\x68\x6a\x9a\xbb\xea\x19\x17\xae\x13\xdb\x86\x17\x7a\xf8\x4a\xb4\xa2\xaa\xdd\x4b\xe7\x08\x62\x69\x6c\x6b\xa9\x77\xfd\xfd\xa4\xf6\xfb\x45\x85\xb5\x7b\x42\x9b\x89\xfd\xee\x50\x24\xe3\xdd\x77\x8f\x22\x77\x87\x0a\x52\x0d\x76\x98\xd8\xed\x1d\x11\xa4\x38\xd4\x5b\xa2\xaf\x6b\x04\x41\xe8\xb7\xbb\x4a\x7c\x91\x58\xa1\x63\xf4\x28\xc6\xf2\x3d\xa3\x3c\xea\x1c\x0f\x1d\xa1\x71\xc7\x98\x6e\x50\xb7\x35\x75\xdc\x33\x57\x76\xa7\x3e\xe9\x8c\x67\x8a\x54\xcb\xbc\xc5\x04\xad\xa6\x7a\x0e\x60\xb3\x2d\x08\x11\x93\xb8\x26\x00\x89\xef\x6b\x3d\xa2\x4b\x43\xbb\x56\x51\xdd\xe6\xae\xa1\xc8\x48\x25\x3b\xf0\x31\xca\xaf\x15\xe9\x85\xf8\x46\x07\xc4\x4d\xf5\x4f\x57\xfa\x76\x34\x87\x0b\x26\x78\xb2\x66\x0f\x62\x3b\xfb\xff\xd9\x7b\xf7\xe6\x46\x72\x23\x5f\xf4\xab\x20\xe4\x8d\x50\x77\x84\x48\xcd\x78\xbd\x3e\x7b\x67\x1d\x3e\x21\xb7\x34\xb3\x0a\x4f\x77\xeb\xb4\x7a\x66\xee\xde\xb8\x11\x0e\xb0\x0a\x24\xb1\x2a\x02\xe5\x02\x4a\x6a\xfa\xdc\xf3\xdd\x6f\x20\x01\xd4\x83\xa4\x58\x99\x20\xa9\xd6\x8c\x0b\xfb\xc7\x8e\xd5\xac\x2c\x14\x1e\xf9\xce\x5f\x02\x8f\x41\xd3\x64\xac\xe4\x50\x89\x07\xcb\x74\xcd\x6d\xbf\x57\x56\xeb\x71\xc2\xb6\x81\x71\xa3\xed\x4b\x1e\xeb\xd4\xda\x33\xd7\xd4\xfc\x21\x6b\xde\xda\xc1\x4d\x50\xee\xd8\xd3\x52\x9b\xe0\xc8\x09\x4e\x9d\x07\xb1\x06\x76\x92\x69\x85\x32\x29\xda\x11\x08\xc0\xaa\x41\x06\xce\x46\x3d\x9c\xbb\xb1\x22\xc7\x75\x56\x6f\xc7\x9e\xef\x6e\x13\x76\x1c\xf3\x1e\x90\x89\x1b\x2b\xa0\x72\x56\xab\xce\x8c\xfc\x7b\x00\x76\x12\x72\xa7\x8c\x50\xb8\x9c\xe4\x0e\x4d\x58\xbb\x7e\x22\x11\xc0\x4e\x4b\x13\x3a\x59\x03\x55\xca\x8a\xfa\xb3\xd4\x1c\x82\x5e\x5d\xa1\x11\xb6\x2e\x71\x49\x43\xed\x80\x6c\x30\xf7\xe5\xc2\x18\xe6\xc1\xad\x57\xbc\x7a\x10\x79\xd3\x95\x63\x0a\xed\x78\x28\x3b\x14\xc1\x3b\x63\xef\x1a\x6f\x29\xf1\x75\xb7\xc8\x93\xd0\x2d\xce\x8d\xf3\xe9\xd4\x37\xd9\xd9\x55\xfc\x89\xa6\x43\x64\x0a\x9b\x9a\x0b\x2f\x21\xcb\x1c\x94\x4b\xd8\x5a\xf0\x14\xa3\xba\x3a\x74\x47\xe8\x50\xc9\xd1\x2e\xcc\x76\xd0\xf9\xa0\x1f\x0f\x62\xd0\x5e\xd9\x1c\xfd\x74\xae\xc0\x07\x5a\xb6\x4d\x99\x35\x4b\xeb\x4d\xe2\x07\xbe\x9f\xd9\x33\x73\x7f\xa6\xb3\x19\x91\x24\xeb\x76\x42\xdb\xdd\xe3\x8c\x4c\x71\x77\x4f\xb4\x8d\x6e\x67\x64\xaa\xfb\xbb\xa3\xf9\xbe\x67\x64\xa2\x98\x3e\x69\x64\xa2\xc3\x3d\x51\xc9\x24\x11\x5a\x30\x7d\x9a\xc9\xbd\xd6\xda\x41\xef\xba\xd6\x0e\x6a\xff\xb5\x76\xe0\x3b\xb1\xb5\x63\xeb\xde\x37\x5c\xbc\x6c\x4b\x76\xc8\x6b\x18\x9b\xb0\xad\x78\xd9\x28\x15\x56\x4f\xd9\xfb\x20\x15\x12\xb6\x85\xab\xb6\x29\x5b\x28\xd6\xe9\x8b\x98\xa4\x9b\x03\x1f\x29\x0a\xb1\x12\xca\x06\x68\x81\x48\x16\xc4\x0e\x99\x68\x53\x99\x1f\xe4\x06\x4d\x62\x85\x89\xa5\x31\x4f\x5a\x97\x24\x3f\x26\x6e\x6b\x48\xbf\x27\xca\x3f\x62\x3b\xcb\xee\x43\xc3\xc9\x8c\xed\xc0\x66\xc3\xf9\x41\xcb\x89\x23\x7c\xed\x57\xc8\x9e\xf3\x03\x9f\x43\x47\x20\x0a\xd9\x76\xe8\x4c\x3a\x3f\x12\xce\x6e\xd4\x3c\x0f\x6a\xcf\xb6\x6e\x6a\x6d\x7a\x1a\x33\xe1\x6b\x75\xc5\x1c\xbb\x07\x63\x20\x8a\xfa\xd0\xf6\x85\xf8\xf5\x18\xdf\x6a\xff\x09\xf4\xfd\x40\xb6\xb1\xef\x3c\x30\x6c\xd1\x77\x68\x22\x3f\xd4\x59\xfe\xaf\xdc\xa6\xdf\x6e\x2e\xbe\xd5\xd1\x9b\x70\x36\x10\x4d\xc6\x93\xe7\x4d\x6c\x3c\x4e\x92\x25\x7d\xb8\xe9\x3d\x2d\xc8\x49\x54\x69\xed\xca\xdb\x91\x6a\xce\xd0\x5a\x98\xb7\x03\xd9\xcc\x9c\xae\x21\xc6\x34\xda\x7d\x6d\xcd\xc9\x54\xb7\xdb\xa0\x27\x35\x38\x6f\x47\xea\x72\xb3\xc4\xa6\xe7\xed\x18\x6e\x7f\x9e\x40\xd4\x9f\xbb\xa6\x65\xfa\xae\x46\xe8\x49\x54\x0f\x6b\x9e\xde\x99\x5d\xaa\xc9\xcb\xd2\x1a\xaa\xb7\x63\xb0\xb5\x7a\xd2\xba\x34\xed\xd8\xd9\x11\x9a\xac\xb7\xe3\x80\x65\x4a\x51\x70\x59\x42\x0b\xf6\x76\x24\x69\xaf\x6c\x74\x63\x8c\x6e\x0c\xd2\x18\xdd\x18\xdd\x71\xb0\x1b\xe3\x99\xd6\xf2\xe4\x25\xec\xbb\x42\x76\x34\x99\x4f\xb8\x3b\xdb\x4d\xe9\x37\xda\xcd\x93\x69\xee\x6d\x4f\xdf\x34\x9e\x27\x93\x3d\x6e\xa3\xfa\x76\x1c\xa5\x65\x7d\x3b\x92\xc5\x49\x5a\x1b\xfb\x76\x20\x1a\xda\x27\x31\xc1\xb6\x01\xfe\xee\xd6\xf6\x09\x8e\xb3\x67\x5a\xe1\x6f\x34\xb9\x4f\xb8\x1e\xc7\x69\x8a\xdf\x99\xea\x41\xed\xf1\xdb\x71\x88\xe6\x9b\xd8\x32\xbf\x1d\xb8\xe6\xf9\x49\x2a\xd9\xbc\x01\x0b\xdf\xd1\x46\x3f\x89\x22\xad\xf5\x7e\x3b\x0e\x52\x76\xc9\xed\xf8\x3b\x8f\x0e\x35\xe6\x4f\x5d\x57\xdf\xcc\x9f\xed\x6e\xd1\x9f\x44\x34\xb5\xad\x7f\x3b\x0e\x5a\x64\x7a\xab\xff\x76\x0c\x35\xfd\x4f\xb3\xde\x74\x30\x29\x5e\xf8\xbc\xa5\x5b\x0d\x89\x9f\x9b\x68\x34\xa4\xb9\xef\x5f\xa3\x3b\x9e\xf8\x12\x9f\xde\x78\x34\x77\x66\x68\x5e\x36\x66\x27\x6d\x4e\xfb\xf8\xd9\x49\x01\x22\x61\x4c\x4d\xfa\xa7\x4d\x4d\xba\x0f\x4d\xfe\x76\xe6\x25\xf9\x6c\x23\x02\x51\x44\x5e\x12\x98\x0e\x04\x92\x88\xbc\x24\x88\xd1\x92\x2e\xd2\x98\x97\x34\xe6\x25\x51\xe7\x3e\x3a\xf4\x46\x87\xde\xe8\xd0\x43\x8f\x31\x2f\x69\xcc\x4b\xfa\xd5\x1b\x42\x63\x5e\xd2\x98\x97\xd4\xcb\x4b\x0a\x06\x13\x49\x29\x0e\x49\x49\xaf\x37\x27\x29\x34\x1b\xbe\xca\x32\x5d\x2b\xfb\x59\x3f\x08\x64\xd2\x00\xca\x98\xdf\xa2\x8d\xfc\xf0\x97\xc9\x51\xe2\x75\x2e\x9d\xd5\x9c\x78\x46\xae\xc2\xe3\xd1\x40\x75\xd2\x55\xe5\x22\x6f\xe8\x12\xce\x49\xe0\x14\xd6\xad\xd1\x94\x5d\xb1\x4a\x64\xb2\x94\x4e\x7e\x00\x44\x0b\xfc\x9d\x6a\x3d\x35\x1d\x06\xa5\x35\xa2\x98\x87\x7e\x68\xaa\xd3\x7f\xb8\x55\x11\xe9\xc6\x63\xfc\xc8\xde\xd4\xbd\xba\xa4\x63\xe3\x2d\x02\xd5\xd0\xfa\xb9\x12\xff\x1d\x35\xb8\xb0\x16\x9f\xbb\xef\xca\xb1\x18\x57\xed\x08\x36\x7d\xe7\xa3\xc3\x84\x79\x29\xb1\x68\x64\x0d\x2d\x3a\x1f\x12\x5f\x4a\x59\xc1\xc5\xb8\x17\x99\x56\x79\xaa\x27\xe9\x66\x93\x4e\x3c\x75\x21\x6e\x43\xda\xc2\xbc\xf6\xa4\xa0\x04\x93\x17\x32\x97\x76\xdd\xa4\xf8\x84\xee\xe3\xdc\xdf\x5a\xd2\x4a\xfb\xc3\x6b\xda\xed\x63\xbc\x2c\x2b\xcd\xb3\xa5\x30\x9d\x95\xa0\x88\x0b\x50\xf4\x3c\x5a\x43\x53\x2d\x5a\xd4\x0b\xa9\xbc\x31\x02\xd4\x9d\x66\x89\xa8\xc7\x6f\x47\xa5\x6d\x4c\xa5\xdb\xf8\xdc\xee\xa9\x0b\xaf\xa5\xfa\x94\xbc\x67\xc1\x56\x6b\x80\x3f\xd2\xdd\x97\xf9\x35\x41\xe0\x97\xf4\xbf\x3f\x3c\x66\x98\x2e\xf2\x88\xf9\xf8\xef\xdf\xb0\x52\x54\x59\xe0\x10\xb4\xd0\x22\x40\x0c\x5a\xcd\x0a\xa7\x91\xeb\x2a\x22\x4b\xee\x78\x0d\x81\xe8\xef\xff\xc0\x96\xba\xae\xcc\xb4\x8b\x9f\xf0\x2d\xfc\xcd\xfb\x6e\xbc\x04\xa4\xf8\xbd\x2c\x2b\x04\x37\x96\x7d\xfb\x0d\x5b\x49\x55\x3b\xc5\x07\xfd\x78\xc7\x58\xfa\xe3\x1f\x88\x17\x9c\x66\x26\xd1\x0c\xa4\xed\x74\xaf\x70\x8f\x4b\xdf\x85\x28\xd8\x49\x24\xdf\x02\x40\xbb\xc3\xe9\xf5\xdd\xce\xfa\x79\x0e\x51\x88\x12\x6d\xae\x70\x1a\x94\xd5\x27\xe4\x8f\x34\xeb\x82\x60\x27\x90\xb4\x20\xc2\x8f\x71\x46\x04\x0e\xb2\x22\x04\x28\xf7\xfc\x06\x35\xb1\xbf\xd7\x7a\xb6\xb6\x78\x6c\x9d\xff\xe5\x7f\xdf\x07\xd5\x89\x7f\xdc\x02\x31\xdd\xbb\x1e\xdb\xcd\x04\x5b\x0c\xd3\x3d\x0f\x62\x35\xb5\x45\xa5\xeb\xc1\xda\xf7\xde\xb7\x81\xcf\x26\xfa\x08\x82\xb8\xe0\x59\x26\x0c\x70\xa3\xeb\xa6\xf9\xf7\xe0\x91\x50\xda\xbf\x1d\x75\x1c\x4e\x85\x44\xb3\x17\x43\x34\xee\x18\x32\x48\x73\x4a\x1c\x51\xd4\x22\x61\x6c\x98\x4a\x2c\xa4\xb1\xe4\xde\xa5\xfe\xa1\xfe\x81\x36\x52\x2d\xa0\x6f\x1b\x5b\xd5\x85\x95\x25\xa2\x04\x20\xae\x68\x43\x30\xe8\x06\xdd\xc0\x0b\xef\x78\xef\xf9\xf0\x12\xb9\x1b\xe4\xd1\x9b\x21\x80\xf7\x26\xce\x85\x09\x65\x01\xe3\x04\x92\xc4\x45\xc9\x2b\x1e\xb7\x65\x90\x66\xa6\x57\x2b\x6e\xde\x86\x18\x10\x87\xc4\x25\x2f\x42\x9c\x36\x50\xf1\xa2\x59\xc6\x6e\xca\xc9\xb1\x0e\xb2\x15\x8a\xab\xc1\x78\x6f\xdf\x01\x08\x8f\x30\xfd\xa4\x62\x1f\x12\xdf\xf8\x96\x78\x82\x83\xdd\xf1\x17\x9e\x3d\x08\x95\xfb\x3e\xea\x70\x8e\xf3\xb5\xe2\xab\x80\x6b\xdd\x74\x89\x16\x79\xa4\x3f\x48\xb8\x49\xca\xf1\xb0\x34\x1e\x30\x26\x82\x64\x79\x65\xf3\x58\xab\x57\x1b\x22\xc4\xed\x4f\xc6\x69\x62\xfb\xf9\x19\x2a\x12\x61\x44\x25\x1f\x33\x11\xd5\x5c\x37\x91\x63\x7d\xd4\xe3\x20\xb6\xdb\xd6\x67\x05\x5c\x37\xd9\xb9\x4d\x20\x4b\x9a\x40\x36\xa0\x6a\xf3\xc2\xb1\xa8\x61\xc5\x3e\x42\x12\xf5\x0f\x94\xdb\xc1\x23\xf6\x56\xc6\xb6\x0a\xf6\x57\x6f\xef\x8f\x06\x0f\x3c\x4a\xee\x57\x33\x3c\x46\xd5\xf9\xa7\xbf\x5c\xf7\xf9\xe3\x27\x9e\x6b\xc3\xfe\x52\xe8\xec\x81\x5d\x0b\x30\x81\x86\xbb\x96\x6f\x82\x9b\xa3\x1a\x09\xef\xa5\x38\xd4\xcc\xac\x9a\xe5\xc7\x6d\x65\x36\xb6\xd6\xfa\xcd\xb4\xd6\xaa\x66\xc3\x3e\x8f\x5f\x6b\x63\xad\x15\x5f\x50\x7b\x47\x2e\x05\xab\xe0\x52\xc3\xc3\xb1\x5f\x3f\xbe\x6f\x60\xef\xaa\xfd\x6e\xa9\x9f\x26\x56\x4f\x6a\x23\x26\x72\x30\xe9\x0f\xfd\x5d\x0f\x62\xed\x7e\x43\xfb\xb2\xbf\xfa\x87\x7a\x86\xb2\xd5\xe0\x56\x87\xbf\x3b\x2d\xe7\xd3\x5f\xae\x9d\xa8\xc4\x63\x26\x4b\xc3\x2e\x85\xcd\x2e\x33\x51\x2e\x2f\xc3\xb4\x5e\xdd\x72\xad\xb4\x92\x56\x57\xc4\x56\xe8\x57\x2c\xd3\x45\x11\x10\xcf\xf4\x9c\xbd\x13\xe5\xb2\x21\x45\x8a\x41\x9d\x70\x0d\xbe\x5e\x13\xa5\x52\x6b\x5a\x63\x97\xce\xd5\x72\xcf\x86\x9b\xd5\x39\x48\xd5\x2c\x3f\x6a\xcf\xf4\x97\x38\x5a\x27\xe8\x6a\x81\x06\x46\x7d\x0e\xfb\x74\x47\x2f\xa9\x57\x72\x5a\x4f\xdd\xb3\xea\xfc\x3e\x3e\x06\x49\x7d\x9d\xd8\x31\xa9\x05\x55\x7c\x7d\x8f\x25\xb2\xdb\xb9\x37\x8b\x72\x91\x33\xfd\x28\xaa\x4a\xe6\xc2\x44\x56\x4c\xe2\x98\x4a\x16\x2f\xc5\x23\xc7\x6e\x5a\xbf\x89\x6e\x5a\x64\x83\xb7\xc3\x6c\xdd\xb3\xdb\xcc\x96\xe7\x2b\x89\xa8\x5d\x7e\x55\x92\x1c\xd9\x0f\xcb\xe9\x6d\x7b\x7f\x11\x85\xf8\xa1\xa6\xa3\xc9\x78\x21\x6e\x3f\xa2\xcd\xc7\x7b\xff\xfb\xbe\x05\x19\xff\xd8\xe9\x9a\x70\x00\x22\xfb\x5f\x9b\x4b\xc6\x94\xce\xf7\x47\x7a\xc6\x9e\x09\x9b\xa6\x59\xe7\x7e\x78\x48\xf6\x63\xa9\x09\x0b\x6e\xc5\x13\xa7\x69\x09\x9f\xe3\x27\xb6\x1d\x98\x7c\xfe\x4c\x38\x30\x57\x77\xb7\xec\x07\x4f\xf7\x78\xcd\x19\x2a\x6d\xbd\xc6\x7b\xad\x57\x5c\x12\x1b\xe0\x76\xda\xe1\x74\x27\x7a\xd7\x10\x65\x9e\xea\xe0\xb6\x74\xba\xfa\xce\xe5\xa2\x76\x16\x72\xb0\x5a\x47\x4c\xfb\x81\x4f\x3f\x9d\x72\xd5\xea\x56\x1d\xf7\x62\x2c\xf5\x68\xf4\xa5\xc1\x4f\x8f\xa7\x02\xc4\x52\x93\xe6\xc2\x8c\x50\x46\x42\xcc\xb6\x93\x04\x05\x4a\x97\x5d\x22\x02\x4d\x4d\x0d\x87\x57\xd0\x2e\xd8\x8f\x7a\x21\x55\xe4\x0e\x3a\xa4\x39\xcc\xb9\x2c\x86\x96\x71\xd4\x98\x7e\x13\x1a\x93\x31\xc5\x8d\xe2\xb3\x62\x38\x28\xde\x17\x5c\x05\x87\x6c\x13\x01\xcf\x5e\xe6\xd2\xb8\xff\xcf\xee\xef\x7f\x84\x80\x51\xad\xb0\x16\x04\x84\x54\x02\x7b\x6e\xb0\x75\x3c\xd3\x38\xde\x3d\xf6\x3c\x91\xdc\x8f\xe0\x56\xe5\xee\x33\x84\xe9\xe5\x65\x06\x6a\xbe\x05\x03\x36\x9a\x14\xf2\xcd\x66\x82\x7d\x5e\xca\xec\xe1\xae\x13\x37\xd2\x95\xfb\x9b\xea\xfc\xa9\x11\xb0\x98\xeb\xbc\xf9\xec\xb1\x18\x7f\xf8\xcc\x3b\xaa\xfb\xe2\x73\x47\xa2\xdd\x87\xa5\x72\x44\x18\x37\x46\x67\x12\x1f\x78\x04\xe7\x5b\x2b\x12\x73\x10\x89\xc7\xfb\x3c\xd0\x82\x0e\x92\xdb\xf1\x20\x04\x05\x8e\x9b\x8e\x1c\xc6\x84\x17\xc3\x2a\x1d\xed\x93\xfc\x51\x24\xf7\xea\xfb\xdc\xeb\xce\x17\xa3\x7e\x3e\x16\xd6\xc4\xba\x90\x8d\x31\xe2\xc6\x47\x9d\x36\xb4\x66\xdd\xd8\xfa\x6e\x97\xbe\xe1\x9b\x03\x69\x2b\x2f\x1a\x55\x0b\x5a\xe8\xde\xdf\x34\xba\xc1\xfe\x5f\x0d\xe9\xed\x38\xfb\x69\xb0\xe8\x79\x97\x77\x67\x23\x41\xc1\xff\x2d\x84\xd1\x80\x19\x95\xba\xac\x0b\x3e\x10\xb1\xee\x36\x54\x3c\x34\x82\xe2\xe7\x70\x8c\xb0\x5a\x6a\x87\x99\x67\x0a\xeb\x36\x9a\xcd\x0c\xeb\xdd\x9b\xcd\x68\x30\xcd\x66\xb0\x9e\x2f\x98\xd0\x37\x7f\xfc\xc3\x1f\x76\xb5\xa7\xe9\xb5\x9f\x19\xd6\xbb\x90\xed\x69\x36\x0a\xe4\x70\x42\x7b\x6f\x7b\x9a\xcd\xf6\x33\xc3\x4b\x8a\x68\x4f\x43\x2c\x68\x3b\x4d\xff\x19\x54\x24\x81\x50\x95\x1f\x6b\xed\x51\xfc\x75\x5f\x2d\xfe\xb3\x15\xf6\x08\x59\xd4\xab\xc0\xc7\xd4\xd5\x23\x62\x96\x50\x77\x7f\xd4\x6a\x7a\x42\x0d\x7d\xaf\x32\x7e\x90\xf0\xbe\xca\xf9\x67\xeb\xe1\xf1\xb6\x16\xd0\x42\x55\xc1\x0f\xd2\x44\xf7\xe4\x40\x27\x40\xa3\x2a\xde\xfb\x75\xec\x38\xfe\x80\xa9\x1a\x4c\xe9\xaf\xb4\xa7\xa6\xbd\xa9\x53\x47\x18\x53\xd8\x4a\x76\x5a\x9d\x0f\xba\x6a\xfd\x28\xb5\xea\xc4\x04\x68\x7c\x5d\x3a\x45\x68\xa2\xfc\x0e\x7e\xec\xac\x41\x7f\xa6\xa6\x1c\x49\xb2\x5f\x79\x3e\x50\x49\x8e\xa4\x09\xf5\xe6\xa8\xfa\xf1\x28\xfe\x90\x84\x07\x84\x64\x4f\x08\xa2\x49\x1e\x43\x54\xfa\x41\xaf\xf8\xa6\x16\x30\xe0\x8b\x17\x50\x35\xdd\x44\x6c\xc5\xe7\x2b\xb9\xb7\x2b\xb3\x91\x24\xdf\xef\x60\x98\xcf\xd7\x63\x23\x89\x76\xc0\x42\x92\xaa\xb0\x49\x6c\x01\x5f\x13\x81\xab\xb3\x46\x56\x4d\x1c\xbd\x08\x02\x5f\x83\x8b\xaf\xbc\x6d\x40\xfe\x07\x3f\x87\x56\x70\x4b\x75\x41\xd3\xfb\xef\x77\x7d\xa7\xc1\xf4\x8b\xa7\xd3\xa7\x4e\x36\xc0\xe1\xc3\x3b\x05\x9c\xfe\x05\x8c\x3f\x86\x3f\xba\x38\xb3\xd9\xcf\x40\xef\x15\xdc\xfd\xc3\xe0\x9f\xf8\x78\xbf\x11\x7a\x6c\xfe\x1c\x15\xe4\x10\x55\xdc\x1f\x7a\x1c\x23\x8e\xbf\xfd\x2e\xed\x63\x78\x2c\x3d\x3c\x66\x7a\x90\x9c\xd1\x41\xe5\xf5\x4a\x4c\x84\x4c\xcf\x42\x43\x0a\xcf\xb4\x9b\x4b\x7a\x75\x77\xcb\xb2\x4a\x40\x05\x36\x2f\xcc\x94\x25\x20\x14\xc5\x40\x04\x68\xa8\xa6\xb1\x3c\xb9\xb5\x62\x55\xda\xe1\x03\x34\x46\xc7\x7e\x13\xd1\xb1\x44\x97\xfa\xcf\xcd\x63\xd1\xff\xb1\xac\x57\x5c\x4d\xdc\x2d\x87\x38\x59\xf0\xb7\xe3\x7c\xea\x1b\xd2\x67\xca\x62\x3d\x0b\x6c\x0c\xd4\x74\x41\x59\x9d\x6f\xa2\x8e\x32\xce\x01\xcb\xad\x51\x01\x4e\x10\x81\x00\xba\x89\x6b\xe6\xfb\x99\x6c\x70\x87\x4c\x97\xe8\x15\x0b\x52\x3a\x7c\x68\xb3\x7e\x91\x11\x74\x9a\xa6\x74\xbd\x3a\x18\xd2\x5e\x85\xba\x83\xca\xd3\x96\x4a\x0f\xa7\x2c\x00\x8f\xf1\xa2\xd0\x4f\x88\xa2\xc6\xa5\xe8\x69\x06\xee\x5c\xb8\x6f\x0d\xc5\xfc\x33\xc1\x56\xb2\xaa\x74\x15\x22\x27\x08\x37\x61\x7b\x5c\x20\x3b\xc4\xd9\xaf\xa2\xf2\x26\x5a\x15\x92\x05\xee\x85\xed\x2c\x37\x46\x01\xe4\xca\x17\x37\xb9\xff\x8e\x39\x9d\xbe\x1f\x54\xe0\x93\x33\xb1\xe4\x8f\x52\xd7\x15\x50\xc7\x90\x3c\x0b\x8f\x3a\xd1\xcd\xd6\xba\x6e\xfa\xa9\xd7\x50\xe6\xd0\xac\x2e\xba\x31\x7b\x67\x9f\x3f\xb4\x0f\x83\xc9\x9d\xeb\xe8\x89\x9b\x88\x2f\xd2\x58\xfa\x5a\xc6\x2d\x8e\x88\xfc\x2f\xa8\xc6\x3e\x9a\xd2\xc9\xf9\x9f\x07\xcb\xde\xfa\xd7\xa9\xfb\x54\x5f\x9d\x7d\xbc\x87\x7f\x3a\x44\x99\x0d\x58\x15\xc6\x6b\x7a\xa1\x1c\x65\x54\x68\xf7\x8d\x5f\x89\x42\xdb\x84\xfd\x0b\x99\xad\x6f\xaf\x69\xaa\x5d\x13\xee\x77\x0f\xb3\xbf\x70\x23\x72\xf6\x9e\x2b\xbe\xf0\xbe\x90\x37\xf7\x77\x7f\x79\x3f\x8c\xf4\x5f\x56\x1a\xfc\x3a\xb7\xd7\x3b\x02\xc7\x8d\x3c\xf4\x2f\xf9\x70\xbc\x8a\xcb\x8d\x6f\x27\x0b\xfd\x23\x7f\xfd\x11\x6b\x49\xa3\x60\xc6\xf4\x8c\xda\x06\x0c\xf1\x41\xfc\x88\x67\x64\x36\xd9\xc7\xe3\x2a\x7f\x78\xc9\xe0\x7c\xfb\x29\x87\x31\xd6\xc1\x9f\x94\x3a\xff\x2c\x56\x65\xc1\x9f\x07\xbb\xe8\x2f\x56\xfb\x7b\xc8\x79\x50\x6d\xd7\x85\x98\x17\xe2\x53\xec\x9c\x5c\x2e\x75\xfe\xbc\x72\xe0\xf4\x08\x48\xae\x82\xe6\x02\x80\x4e\x36\xe3\xcf\xe6\x43\x61\x78\x6b\xa6\x95\xad\x74\x51\xec\xcf\x8e\xef\x1b\x18\xbf\xe8\xea\xa1\xd0\x3c\xef\x3c\x7c\x7e\x6e\xd8\x4a\x58\xee\x66\x44\xae\xb9\x5d\x48\x1b\x53\xe1\x43\x8a\x98\x5d\x5f\x02\x6d\x39\xab\xad\xae\xcc\x65\x2e\x1e\x45\x71\xc9\x4b\x39\xc9\xb4\x7a\x74\x07\x4e\x2b\x33\x5d\xe5\xbf\x8b\xef\x3c\x46\xea\x40\xa7\xff\xde\xd0\x5d\xe0\x79\x2e\xfd\x0e\xde\x11\xcc\x39\x82\x1d\xb2\x51\x48\xd7\xce\x2c\x1c\xa0\x5a\x19\x5b\xd5\x99\x85\xcc\xde\x07\xb1\x46\x82\xf6\xae\x78\x09\xbc\x2c\x72\xcd\x4e\xa3\x19\xb8\xcc\x2b\xbe\x76\x82\x26\xc0\x0e\x88\x2f\x56\x54\x8a\x0f\xc7\x1e\xad\xd6\x05\xf8\x2c\x80\x76\xe8\xe2\x62\x2b\x29\x1e\x05\xe3\xd5\x4c\xda\x8a\x57\xeb\xce\xf9\xf8\xbc\x44\xb8\x8b\xa3\xd6\xf7\xf7\x5a\x54\x6b\xb0\x8d\x1c\xdd\x36\x5d\x0e\xf4\x96\xea\x11\x82\xae\x42\xb1\x95\xce\xe5\x7c\x8d\xf1\x6b\x07\x23\x76\xcb\x24\xde\x6d\x11\xd7\x46\x54\x93\x45\x2d\x73\x71\xd9\x39\x20\x38\x6f\xe5\xa0\x1d\x89\xfa\x59\x5c\x37\x42\x9a\x8f\xe5\x2a\xe7\x55\x1e\x28\x3f\x77\x39\xc7\x0b\xf8\xfc\x18\x2f\xe0\x78\x01\xe3\x70\xba\x34\xe1\xf2\x79\xcd\x3b\x6b\x80\x0d\xbd\x35\x6c\x9c\x02\x13\xad\xe1\x0a\x03\x3d\x5d\xea\xdd\xd0\x04\x07\xdc\x56\xf7\x25\x13\xae\xf2\x89\xb1\xdc\xd6\x7b\x17\x11\x7d\x69\xe7\x73\xe9\x66\x40\x4d\x7c\xda\x08\xcd\x7b\xcc\x2e\xe3\xcc\xcd\xba\x70\x96\x54\xa6\xdd\x0d\xe3\x72\xb8\x59\x31\xc9\xa3\xaa\x73\x71\x85\x9c\xf1\xd6\xac\xaf\xe1\x7f\xcc\x42\x9c\xa6\xf9\xf2\xce\xac\x51\x6e\xcb\xaa\x2e\x84\x69\x2a\x74\xdc\x2e\x63\xe2\xe3\x44\x50\xd9\x12\x3c\xbf\x95\xc8\xaf\x6b\xc7\xed\xee\x9b\x29\xde\x2e\x94\x6e\xfe\x7c\xf3\x45\x64\xb5\x25\xf4\xe7\xdd\x0a\xbe\x87\x6f\x17\x55\x84\xc1\x74\xaf\x05\x4e\x14\xfe\x01\x49\x18\x8e\x3b\xb0\x30\x88\x81\x85\x74\x54\x6e\xa5\x99\x7b\x43\xbb\x59\x6d\xf1\xc5\x31\x1e\x43\x48\xae\x60\x9d\x04\xad\x98\xeb\x08\x9e\xe7\x0b\x36\xab\x2d\x93\x9e\xed\x66\x4b\xad\x09\x48\xb1\xdc\x1f\x02\x98\xe7\xa3\xd4\x05\x54\x03\x68\xe5\x91\xbe\xdc\xa5\x6d\xfb\x80\xc5\xe9\xe2\xf1\x0b\x21\xf3\xba\x21\x2f\x0d\x5b\x69\x63\xdb\x3d\x8d\xbe\x63\xbd\xd7\xb5\xd2\x1f\x8d\x95\xbc\x00\x47\x95\xb1\xcc\xd4\xd0\x87\xf1\x49\xc8\xc5\xd2\x9a\x0b\x26\xa7\x62\x8a\x0a\xaf\xc4\x01\xe9\x8a\xed\x34\x57\x42\x58\x70\x6f\x76\x9b\x34\x13\xee\x05\x6b\x2d\xbd\x15\x38\xa4\xde\x34\xb2\x31\x60\xcb\x5e\x34\x96\xe0\xe6\xa9\xc6\x6f\xdb\x8e\x63\x74\xc1\x84\xcd\xa6\x6f\x2f\x00\x4e\xa5\xb6\x82\x71\xb7\x36\x68\x92\xb3\x35\x93\x36\x3a\x80\xec\xb2\xd2\xf5\xc2\xaf\x74\xc8\xf4\x08\x75\x87\xe8\x5c\xa8\xd0\xc7\x19\xa4\xad\xd3\x73\xd4\x82\x9d\xf9\x4d\x3a\x6b\xaa\xc5\xea\x55\x00\x4b\x45\xd3\x84\x7d\x5a\x71\x0b\x10\xb8\xbe\x34\xb0\xaa\x84\x29\xb5\x82\x37\xc0\xbf\xdc\xb4\x6b\xf2\x1f\x68\xc2\x36\x9c\xd5\x37\xe6\x6d\x7b\xc8\x96\x72\xb1\x8c\x67\x8c\x57\x22\x20\x83\x12\x50\xa3\x9b\xb3\x8e\xbd\x34\x87\x74\xc7\xba\x52\x4c\xac\x4a\xbb\xee\xdc\xb0\x84\xb3\xcb\xa0\x7d\x78\xb3\xc6\x70\x11\xbc\xa6\xe3\xd7\x45\x06\xc7\x5e\xb8\x71\x04\xba\xdf\xb0\x37\x70\x39\xa5\x3d\x37\xc0\x78\x26\xba\x7c\x3b\x65\x57\x4c\xd5\x0d\xcf\xa5\x75\x83\xec\x08\xda\xde\xa4\x95\x6e\xe6\x0c\xaf\x24\x90\x84\xd0\x86\xd1\xed\xfc\x08\x7b\x9d\xd2\x08\xa8\x6c\x12\x9c\x69\x5d\x41\xfa\x3b\xef\xef\x85\x6f\x29\xe8\x24\xb2\xa8\x56\x17\x1d\xe7\x22\x89\x72\x87\xc9\xf6\x2f\x97\xdf\x70\x5a\xa3\x8c\xf4\xee\xa3\x9b\x57\x99\xde\xbb\x71\x63\x89\x0a\x69\x00\xcb\xb7\xb7\x54\x64\xa2\x1b\xcc\x7d\xb6\x06\x7a\xe7\x86\x15\x7c\x26\x0a\x82\x70\x8c\x83\xdc\x00\x2b\x8e\xbd\x27\xa0\x33\xc9\x04\xd2\x2c\x40\x09\x36\xe7\xc9\x09\xc6\x90\x02\x68\x42\xce\x40\x5a\x23\x50\x48\x36\xf7\xd9\xeb\x3c\x96\xe5\xc6\x17\x40\x06\x24\xa9\xa3\x46\x3b\xba\x2d\xf1\xfc\xfc\x52\xfa\xf1\x1f\xd2\x2b\x97\xa5\xf5\xf4\x8a\x63\x4b\x25\x85\xf3\xe4\x53\x39\x97\x3c\x6d\x13\x59\x58\x98\x66\x1f\x79\x59\x16\x10\x71\x26\x80\x50\x6f\x90\x3b\xa4\x0d\x2b\x83\x24\x46\xbf\xe5\x47\x59\xa7\x4f\xdd\xb0\xdf\x83\x58\x9f\xa7\x1d\x1e\xd6\x94\x09\x68\x65\x96\xb2\xf4\x09\xf7\x46\xd8\x00\xe8\x9f\x78\x9a\xfc\xf8\x99\x17\x32\x6f\x3e\xdb\xa7\x33\xdc\xaa\x0b\xf6\x41\xdb\x5b\x12\x74\x7f\x7f\xdc\x7c\x91\xc6\xa9\xbb\xd7\x5a\x98\x0f\xda\xc2\xff\x9c\xb2\x1f\x6c\x3a\x45\x77\x75\x7e\x24\x37\x91\x8b\xe3\xe0\x83\xe1\xd7\xf9\x28\xc7\xe2\x4a\xf9\x6c\x5a\xb7\x7d\x07\xcc\xa8\x9d\x55\xc0\x1f\x10\x2d\xc3\x22\xa8\xc1\x9b\xe3\x56\x39\xe3\xca\x6f\x7f\x5b\x3b\x64\x48\xad\x94\xb6\x47\x4c\xd0\x55\x5a\x4d\x40\x0b\x8c\x73\x4e\xa6\xd8\xf9\xd6\x70\xda\xdc\xbc\xbb\xe7\x2d\xfd\xac\x6d\x7e\x76\x33\x7d\x3f\xf5\xf4\xb5\xdd\xda\x26\xf6\x03\x24\x3a\xff\x78\xf4\xc9\x2e\x79\x42\xc3\xff\x38\x1a\x40\xed\x60\x5c\x5d\x04\xf8\x69\x54\x8d\xd4\x73\x63\xe6\x7b\xe6\x54\x65\x25\x6c\xc0\xd6\x56\xb1\x76\x21\x7d\x49\x7d\xb6\x0f\x7c\xb7\x34\xac\x12\x65\xc1\x33\x91\xb3\xbc\x3e\xe8\x5e\x41\x7d\x13\xb7\x62\x21\x33\xb6\x12\xd5\x02\xaa\x0a\x32\x74\x59\xc2\xe6\x48\x56\xa2\xfc\x38\x98\x79\xa5\xb4\x43\xeb\x8e\xd4\xbe\xdc\x2c\xa1\x3d\x5c\xfb\x5c\xbc\x26\x09\x0f\x27\xf6\xf5\xee\x3e\x9c\xb2\x56\x60\x14\x7c\x0f\xe9\x96\xaf\xdd\x1e\x08\x49\xa1\xa3\x3d\xb0\x77\x8c\xf6\xc0\x33\x63\xb4\x07\x70\x63\xb4\x07\xfc\x18\xed\x81\xde\x18\xed\x81\xd1\x1e\x18\xed\x81\xd1\x1e\x48\x1b\xa3\x3d\x40\x1d\x5f\xc5\x1e\x48\x7c\xa9\x8f\x63\x1c\x10\x6e\xf9\x05\x08\x6c\x25\x6f\x83\x71\x42\x3f\x31\xdb\x81\x16\xa7\xba\xdf\x07\x1d\xed\xb3\xa8\x56\x54\x56\x15\x2a\xa1\x2b\xae\x16\x82\x7d\x3b\xf9\xf6\x9b\x6f\x68\xf7\x28\xbd\x33\x7e\x5a\x5f\x7c\xfa\x69\x9f\x74\xe2\x66\x84\x87\x88\x21\xcb\x84\xf3\x45\x3d\xca\xcf\x65\x02\x1c\x31\xbf\x25\xc8\xc0\x26\x65\xa0\x67\xaf\xd2\x3b\x16\xf7\x52\x4f\x9a\xec\xba\x95\xb0\x8c\xdb\x5e\x40\x56\xae\x04\xfe\xe0\x86\x1c\xa2\x1e\x48\x51\xcc\xbd\xc9\x99\x8e\x30\x48\xee\x66\xe0\xcf\x32\xee\xcb\xd9\x0c\xcf\x75\x3a\x5f\x9e\x09\x6e\x44\xac\x61\x0b\x5f\xaf\x57\x22\xf4\x0c\x25\x8a\x43\xf7\xe9\x22\xee\x32\x7b\x23\xa6\x8b\x29\xcb\x6b\xe1\x4b\xd3\x58\x5d\xe6\xdc\x8a\xb7\x17\x24\xf5\x2d\xd4\x0c\xad\x9c\xda\x5b\x35\xc0\x47\xb6\x02\x14\x1e\xe8\xda\x53\x43\x8b\x37\xf1\x88\x41\x44\x6b\x17\xc0\xef\xd3\xbc\xd2\x2b\x40\x8f\xa0\xec\x48\x8a\x39\xbd\xc9\x0b\x49\x52\x7d\xc3\x38\xf4\x57\x6d\x7a\x14\xdf\x8f\x75\x73\xf1\x8d\x8d\xe1\x3f\xe1\x26\x7c\xfc\x84\xcf\xf4\x60\x69\x6a\xca\xa6\x97\xa7\x2e\x0a\xb7\xbf\x3e\xf1\xe3\x10\x57\xd6\x33\x09\x14\xd3\x00\x4e\xd3\xde\x1c\x22\x5d\x9f\x45\xe5\xf3\x67\xae\x3e\x5c\x7b\xe4\x21\xc1\x3e\xeb\x52\x17\x7a\xb1\xee\xee\x2d\x75\xc6\xeb\x52\x40\x3a\x4a\xb8\xd1\x9c\x99\x7a\x16\xac\x74\x77\x4e\x3f\x6c\x1c\x9d\x31\x73\x61\xcc\x5c\x18\x3d\x95\xbb\xc7\xe8\xa9\x1c\x1c\xa3\xa7\x72\xf4\x54\xee\x1c\xa3\xa7\x72\xf4\x54\x8e\x9e\xca\xd1\x53\x99\x34\x46\x4f\x65\xca\x73\xbf\x36\x4f\xe5\x98\xb9\xb0\x6f\x8c\xf6\x40\x67\x8c\xf6\xc0\x33\x63\xb4\x07\x70\x63\xb4\x07\x46\x7b\xe0\xd9\x59\x8d\xf6\xc0\x68\x0f\x8c\xf6\xc0\x68\x0f\x0c\x92\x18\xed\x01\xfc\xc3\x2f\x96\xb9\x40\x7f\x1d\x75\x3b\x26\xdb\x01\x37\x52\xe4\x1b\xfd\x49\xa4\x9f\x97\x3a\x3f\x02\xdc\x45\xa9\xf3\x5d\x68\x17\x1e\xc9\x02\xf5\x95\x3e\x30\x9b\xe9\x49\xa1\x33\x6e\x85\x0f\x07\x3b\xb2\x21\xe3\xc2\xf0\x95\x8f\x51\x5f\xb0\x7f\x68\x85\x0c\x7f\x0b\x9b\x4d\x1d\x8b\x83\xe8\xb1\xc7\x15\x2e\x75\xfe\xc6\xbc\x45\xd5\x1e\x8f\x88\x1a\x23\xa2\xc6\x88\xa8\x31\x22\x6a\x1c\x86\xa8\xb1\xe4\xc6\xdf\x33\xaf\xbc\x3d\x0b\xb0\x41\xb9\xb4\x91\x63\x3b\x21\xf2\x1f\x7b\xf1\x35\xf0\xd7\x75\x03\x87\xe3\x65\xf1\x35\xdc\xe5\x0b\x97\x02\x7a\x89\xb6\x07\xda\xaf\x17\x05\x66\xc1\xa7\x10\x8a\xfc\xae\xbf\x4e\xc1\xf7\x06\x1f\xc9\xf3\x9c\x44\xb2\x14\xd5\xc4\x5f\x3a\xcd\xe6\x32\x74\x19\xdc\xe0\x0f\x61\x07\xf0\xdb\x98\x86\x69\xd1\xff\xa8\x03\x12\x5c\xba\x39\x3b\x5d\xf1\x9d\x90\xdb\x72\xb1\x13\x6c\x37\xed\x74\xfb\xf1\xb2\x78\x18\xe0\x45\x8b\x8a\xd9\xe1\x2e\x64\xf0\xc9\x01\x26\x1e\x00\x9e\xa3\x5a\xca\x6d\x8e\xe0\x57\x8a\xdc\xd8\x89\x0a\xdf\x2e\x8d\x65\xdc\x40\x9e\x58\x82\xb7\xe9\x30\xcf\xe5\xe1\xb9\x37\x6c\x73\xb1\x36\x49\xa6\x1a\x76\x86\xf1\xc6\x73\xef\x97\xff\x00\xd7\x3d\xdb\x90\x89\x07\xa7\x69\xc5\xd1\xa6\x69\xa5\x79\xdb\x0f\x31\x5f\x77\x9e\xd1\x03\x17\xa9\xb7\x4c\xfd\x60\xc0\x01\x6e\x94\x1d\x41\x84\x10\x10\x38\xc8\x69\x79\xd4\x40\x02\x3b\x5a\x30\x81\x1d\x21\xa0\xc0\x0e\x0b\x2a\xb0\xcd\xe3\x11\x7a\x96\x1e\xe2\x16\x64\x91\xab\x36\xb1\x89\x5e\x8c\xe1\x20\xba\x87\xc7\x27\xd8\x71\xbc\x39\x87\xc7\x29\xd8\xe6\xd2\x37\x47\xb4\xed\xba\x70\xd8\x5a\xf9\x80\xc7\x66\xe0\xe2\x40\x9a\xfd\xa0\x87\x0f\x5e\x1c\x44\xf2\xe8\x81\x0f\xd6\x04\x3f\xe0\x7e\xf6\xe2\x1f\x5f\xfb\xd0\x1c\x16\xc3\x60\x9b\x47\x26\x38\x9d\x01\x74\xf8\xb0\x7d\xed\x47\x43\x0e\x8e\x69\xb1\xdd\xae\xf6\xdb\xc3\x66\x79\x82\xa8\x08\x7b\x2e\x32\x72\x10\xc5\xcd\xef\xf6\xc7\xf1\xd0\x6f\xef\x45\x56\x3a\x4b\x70\x84\x9d\xef\x47\x57\xc0\xa5\x7f\x04\xaa\x47\x0c\x07\xb0\xe3\x87\x04\xd8\xe1\x61\x01\x76\x2c\xbe\x70\x68\x78\x80\x1d\x18\x22\x60\x07\x84\x09\xd8\xa1\xa1\x02\x76\x68\xb8\x80\x1d\xbc\x7e\x60\x8c\xfc\x08\x09\xfb\x69\xcb\x97\x06\x39\xbf\x7b\x1c\x7c\xa2\xb6\xed\x2c\xff\x69\x20\x28\x12\x27\xb5\xe2\xa5\x93\x0f\xff\xdb\x29\xe3\xc0\x76\xfe\x0f\x2b\xb9\xac\xcc\x94\x5d\x25\x52\x0c\x01\xce\x2e\xc5\xe0\xef\xef\x4c\xf9\x80\xd9\x4a\xc3\xdc\x8d\x78\xe4\x85\x33\x51\x7c\xc9\x57\x70\x11\x26\x52\xd5\xf3\x2d\xab\xf5\x82\x3d\x2d\xb5\x11\x07\x5c\x1d\xef\x7c\x94\x86\x9d\x3d\x88\xf5\xd9\x45\x4f\x76\xa4\xdb\xc4\x67\xb7\xea\xcc\x67\x51\x1d\x49\x54\x36\x76\x19\xf4\x0c\x3c\x03\x8a\x67\xaf\xc5\x3c\x3e\x42\xb0\x31\xe9\xe1\xb6\xdb\xdc\x81\x9e\xa3\x4e\xdb\xba\xa6\x81\x61\xc2\x4a\x78\x37\xb3\xea\xb6\xb1\x13\x7d\x0f\x57\x02\xd1\xd6\xe6\x62\x6f\x1a\xf8\xe2\x85\x3b\x0b\xf6\xed\x7f\x40\xa5\x5c\x02\xd1\xa6\xb6\x0e\x5c\x37\x2b\xc1\x95\x61\x67\x31\xee\x97\x94\xa5\xd5\x7c\xf5\x19\xf9\xe1\x64\x2d\xe0\x20\x4e\x9d\x2e\xb1\x6c\x28\xf2\xfb\x6b\x8a\xe1\xbf\xe1\x7b\x0f\x91\xd6\xb6\x71\x47\x13\x86\x4d\x31\xeb\xde\x44\x4f\xf2\x5b\xb7\xc3\xbe\xc3\x7d\x24\xc7\xde\x70\x65\xe5\xa4\xf9\x45\xca\xf9\x8e\xfe\x65\x08\xaa\x44\x60\x80\xa3\x9c\xf2\x18\x6a\x6e\x22\x97\xed\x2d\x72\x3c\x5e\x54\x29\x0e\x91\xce\xc7\x4b\x13\x9b\xbc\x33\x6e\x58\x55\x2b\x95\x26\xdd\xb5\x8a\xa1\x50\x2f\x78\x80\x11\xc7\x80\x09\x2c\x42\xea\xba\x82\xb7\xa6\x3d\x59\x9d\x68\x55\x52\x76\xa9\x9e\xfb\xf6\x9f\x6e\xaa\x5a\x05\xd6\xe4\xfe\x82\x68\x6e\xb2\x7b\x78\x0f\x92\xc8\xfd\xee\xcb\x66\x15\xa7\xec\xc6\xb1\x92\x94\xfb\xdb\xf9\x5c\x69\xe0\xbc\x42\x03\xd6\x14\x39\x94\xcc\x0b\xd2\xf4\xf6\x49\x77\xf2\x2f\x91\x24\x73\x30\xbc\xc7\xd3\x89\xe1\x3d\x36\xc2\x63\x17\x0c\xd1\xa9\x75\x9b\xe6\x6f\x1b\xdd\xa3\xbf\x44\x84\x27\x47\x88\x8f\x11\xe2\xe3\x57\x07\xf1\x01\xff\xe8\x43\x11\x11\xeb\x83\xb4\xac\x48\xac\x0f\x7c\x02\xcf\xa3\xcc\xec\x33\x58\x1f\xec\x97\xd0\x26\xbc\x12\xee\x68\xa0\x69\xae\xea\xc2\xca\xb2\x4d\x14\x36\xde\x82\x2c\x7c\x3a\xf6\x3c\xa4\x77\xa5\xc5\xe3\xdd\x57\xf2\x6c\xb9\xc9\x36\xe0\xe8\x42\x22\xb1\x01\x79\xec\x53\x99\xf0\x29\x41\x45\x11\xb0\x3d\xa2\xd7\xd1\xe7\x9d\x21\xda\x11\xc7\x71\x48\xba\xc9\x35\x68\x61\xa6\x0d\x65\x80\x36\xf1\xc6\xa9\x7b\x84\xad\x74\x07\xc4\xa9\x5f\xcf\xeb\xa0\x21\xee\x42\xca\x01\x0f\x77\x75\x21\x1f\x85\x6a\x15\xd0\x37\xe6\xed\xdb\x18\x47\xf3\xea\x3a\x81\xe4\x2e\xc5\x7e\xaf\x9a\x4e\xa0\xbd\xa1\xd0\x83\x3c\x0f\xca\x72\x5f\xf5\x25\xd0\xdc\x56\x92\x77\xab\xbc\x04\x92\x5d\xe5\xb8\x55\x75\xff\xd4\xd1\x9f\xfe\x1c\x95\x5d\xd2\xfe\x73\xfb\x8c\x92\x0b\xd7\x3b\x26\xe5\x21\xda\xda\xf7\xa6\xba\xa1\xdc\x9e\x38\xa7\xe8\x80\xf4\x97\xc1\xd4\x17\xe2\xb7\x33\xff\xfd\xc7\x4b\x7b\x79\x35\x50\x33\x9b\xe4\x52\xfd\xb0\xbb\xd3\x5c\xfa\x09\x2b\x09\x64\x37\x7d\x78\x87\x78\xe3\x8e\x55\xac\xfa\xfc\x27\xa6\xe5\xcf\x8c\xd5\xaa\x09\xe3\x58\xd5\xaa\x6d\x52\x49\xb2\x87\xa2\x99\xd0\x76\x42\x49\x74\x50\xa6\x67\xf3\xfc\x46\x8a\x5d\x8f\x99\x40\xf2\x4c\xf2\x48\x72\xf8\x88\xed\x4c\x1c\x69\x93\x3f\xd2\x27\xda\x4b\x1a\xe9\x24\x7e\x24\x53\x3c\x46\xc2\xc8\x6b\x2a\x76\xed\x26\x89\x1c\x98\x2d\xb1\x95\x20\xb2\x99\xe4\x91\x4c\x19\x92\x43\x76\x26\x78\x1c\x70\x32\xba\x99\x0d\xc7\x49\xee\xd8\x9d\xd8\xc1\x0e\xf8\xf0\xe7\x92\x3a\x8e\x54\xed\xdb\x49\xe8\x38\x90\xe2\x76\x32\x47\x37\x21\x23\x7d\xa2\x63\x6d\xe7\x58\xdb\x89\x1b\x07\x25\x69\x1c\x2b\x41\xe3\xa0\xd3\xb2\x37\x31\x83\xad\x78\x99\x16\x67\xd9\x95\x94\xb1\x23\xbd\x22\x3d\x2a\xd6\x9d\xea\x56\x6a\x45\x52\xdc\xa5\x93\x8c\xb1\x33\xad\x22\x29\xf8\x1d\x12\x31\x8e\x9d\x52\xb1\x37\x9d\xa2\xb1\x23\x92\x62\x79\xfb\x52\x29\x48\x6e\xc0\x76\x24\x1a\x6e\xc9\x77\x3a\xf1\xc1\xd4\xd4\x89\xc1\xb4\x09\xef\x84\x49\x4e\xe4\xd8\xe1\xc8\x4b\xb3\x2f\x9e\x4f\x97\x68\x92\x1f\x88\x14\x77\xa7\x4a\xa4\x26\x3e\x24\x49\xcd\x64\xee\x97\xc6\xf5\x93\x13\x1d\x4e\x96\xe4\x70\xc2\x04\x87\x13\x25\x37\x0c\x27\x36\xa4\xaf\xc6\xce\xa4\x86\x4d\x7f\x2d\x91\xe6\x76\x42\xc3\xce\xf4\x84\x14\xdd\x21\xd6\xb9\x3f\x97\x9a\x40\x77\x56\xb6\x7e\x88\x63\xa5\x25\x1c\x2b\x25\x21\xe9\xa6\xa6\xc4\x94\x53\xf6\xe4\xe4\xe1\x61\x32\x0c\x86\xb2\xf2\x58\x50\x18\x5d\x1e\x40\xad\xc9\x07\xcc\x8c\x10\xc5\xe4\x8f\x5a\xe6\xac\xac\x6d\x28\x74\xdf\xc6\xc4\x40\x91\xec\xe0\x66\x8c\x98\x18\x43\x33\x1e\xc0\xc4\xe8\x6e\x2d\x3e\xea\xdb\x71\xfc\x0f\x00\x63\xe0\xa3\xbe\x0d\x80\xc6\x20\x30\x06\x9a\xe6\x0e\x00\x8d\xdd\xc0\x18\x84\x90\xd4\x36\x80\xc6\x6e\x60\x0c\xca\x24\xb7\x00\x34\x76\x02\x63\x90\xc2\xd1\x5b\x00\x1a\xcf\x00\x63\x90\x18\xe9\x5e\x00\x8d\xc3\xcf\xd2\x6e\x14\x8d\x1e\x3a\x06\x21\xd9\xe1\x79\x14\x8d\x2d\x74\x0c\x34\xd5\xe7\x51\x34\x76\xa1\x63\x10\xce\xfe\x33\x28\x1a\x5b\xe8\x18\xa4\x64\x8f\xe7\x50\x34\xb6\xd0\x31\xe8\xc7\x7f\x44\xd1\x18\x51\x34\x9e\x1f\x23\x8a\xc6\x88\xa2\x41\x19\x23\x8a\xc6\x88\xa2\xb1\x67\x8c\x28\x1a\x69\x63\x44\xd1\x20\x8e\x11\x45\x23\x9d\xe6\x88\xa2\x31\xa2\x68\xe0\xc6\x88\xa2\x31\xa2\x68\x8c\x28\x1a\x34\x32\x23\x8a\xc6\x88\xa2\x31\xa2\x68\x8c\x28\x1a\x23\x8a\x06\x69\x8c\x28\x1a\x7e\x8c\x28\x1a\x23\x8a\xc6\xd0\x18\x51\x34\x76\x8e\x11\x45\x63\x44\xd1\x18\x51\x34\xf6\x8c\x11\x45\x63\xff\x18\x51\x34\x3a\xe3\xb7\x85\xa2\xd1\xcb\x8b\x4a\xd2\x76\x9f\xc9\x9e\x79\x1e\x4a\x03\xbf\xd2\x72\x25\x2e\x90\x50\x1a\x68\xa2\x1e\xd7\x61\xf0\xf3\x0f\x46\x12\xd9\x8b\xa7\x81\xcf\x26\xf0\x35\x3d\x38\x3c\x0d\x34\xd5\x88\xbb\x31\x88\xa7\x81\x4f\x81\x69\x70\x37\x86\xf1\x34\x28\x09\x20\x1e\x77\x63\x08\x4f\x83\xb4\xf9\x1b\xb8\x1b\xcf\xe1\x69\xe0\x53\x95\x76\xe1\x6e\x8c\x78\x1a\x7b\x68\x8e\x78\x1a\x23\x9e\xc6\x88\xa7\x31\xe2\x69\xec\x1e\x23\x9e\xc6\x88\xa7\x41\x19\x23\x9e\x06\x6a\x8c\x78\x1a\xdb\x63\xc4\xd3\x18\xf1\x34\xb6\xc7\x88\xa7\x31\xe2\x69\x8c\x78\x1a\xcf\x91\x18\xf1\x34\xf0\x0f\x8f\x78\x1a\x23\x9e\xc6\x88\xa7\x31\xe2\x69\x8c\x78\x1a\xf8\x31\xe2\x69\xa0\xc7\x88\xa7\xd1\x8c\x11\x4f\x83\x8d\x78\x1a\xc8\xf1\xcf\x88\xa7\x81\xfe\x29\xaf\x16\x83\xfc\xb2\xc7\x77\xce\xaf\xaa\x45\xed\x45\x79\x08\xec\x08\x65\xab\x35\x84\x39\xbd\xb8\xcf\x75\xf6\x80\x08\xfe\xcb\x15\x5f\x88\xf3\x73\xc3\xde\xbd\xbf\x76\x87\xa2\x36\x22\xf7\x95\xe9\xd2\xc4\x43\x52\x56\xfa\x51\xe6\x22\x9f\xb2\x9f\x79\x25\xf9\x0c\x81\x22\x01\x85\xcc\x42\x39\xa1\xf7\x2f\x6f\x7e\xbe\xfa\xf4\xb7\x0f\x57\xef\x6f\xde\x82\x47\x45\x7c\x29\xb9\xca\x45\xce\x6a\x13\x79\x50\xd0\x73\x44\x75\x8e\x48\xd4\x13\xea\x51\x56\x5a\xb9\x8f\x07\x1f\x01\x67\x8f\x61\x56\x2c\xe3\x2a\x84\xaa\x2b\x61\x74\xf1\x28\xf2\x0b\x54\x94\xba\x99\x6d\xe4\x68\x52\x95\xb5\x8d\xfe\x08\x08\x81\xcf\x04\xab\x55\xb6\xe4\x6a\xe1\xd6\xe1\x33\x82\x68\xf7\xbb\xcd\x5a\x59\xfe\xc5\xcd\x0f\x0c\x67\x93\xf1\x32\x66\xab\x70\x96\xeb\xda\x4d\xfe\x5f\xfe\x65\x58\x33\x95\xe2\x3b\xf6\x2f\x1d\xc2\x53\x76\x13\x68\x75\x16\xdc\x87\xec\xc5\xa3\xa8\xd8\x6c\x78\x9a\x71\x3b\x2e\x58\x25\x16\xbc\xca\x0b\x61\xa0\x6a\xfe\x69\x29\x00\x14\xc5\x2b\xa5\x61\x81\x05\xae\xec\xc4\x8b\xaf\x29\x7b\xd7\xec\x87\x8f\x7d\xe7\x53\xf6\x5e\x43\xe0\x76\xae\xbf\x63\x4b\x6b\x4b\xf3\xdd\xe5\xe5\x43\x3d\x13\x95\x12\x56\x98\xa9\xd4\x97\xb9\xce\xcc\xa5\xe5\xe6\xc1\x5c\x4a\xe5\x2e\xce\x24\xe7\x96\x4f\x40\x51\xca\xc0\x5f\x78\xe9\xe5\xc2\x24\xd3\xab\x15\x57\xf9\x84\x87\xab\x30\x69\x8e\xd1\xe5\xef\x02\x9f\x9c\xf0\xe6\x57\x52\x4d\xf8\xc4\x2c\x45\x51\x9c\x0f\xcc\x1f\xa9\xbd\x10\xb8\x20\x96\xc1\x08\xf5\x48\xe2\x02\x3f\x86\xa0\x4d\xe7\x4a\x34\x7b\x05\x8c\xc1\x08\x8b\x49\x5a\xea\xdd\xc1\x5d\xdb\x76\x9c\x15\xeb\xcd\xfd\x46\x3d\xfe\xcc\xbb\xfe\x64\x30\xdb\x76\x7c\x08\x82\x25\x07\x12\xee\xf6\x72\xf6\xae\xf9\x90\xc1\x27\x69\x41\x0c\xa7\xdc\xe0\xa4\x57\xef\x43\x3f\xf0\x55\xa3\x73\xec\xfa\x3e\xac\xec\x7d\x1f\xdc\x6e\x9c\xbd\xfb\xdb\xed\xf5\xcd\x87\xcf\xb7\xdf\xdf\xde\x7c\xc2\x3d\x4d\x94\xd8\xa0\x27\x25\x7c\xea\x79\x94\x0f\xcf\xf0\x7f\xe4\x97\x3e\x23\x25\xca\x4a\x3c\x4a\x5d\xb7\x7a\x61\x67\x35\x91\x94\xdb\xcb\x11\x18\x7d\x73\xea\x43\x9c\x6d\xcd\x8c\xa8\x1e\x65\x26\x0e\x21\x8e\x10\x4b\x58\xcd\x64\x29\xc8\xc2\x09\x49\xda\xe9\x08\x58\x11\x85\x24\xd9\x0a\x32\x94\xa0\x42\x52\xed\x89\xb3\x21\x71\x45\x58\xd7\x0d\xa1\xd6\x08\xad\x6b\x31\xe7\x75\xe1\x15\xab\xb3\xb3\xe9\x90\xb4\x08\x04\x13\x2e\xd8\xf7\x95\x46\x42\xae\xf4\x2e\xd9\x3d\xa4\x30\x00\xd8\xd3\x73\x2c\x05\x5d\xee\x00\xf3\xe8\x31\xfc\xa0\xfe\x79\x4b\x29\xe8\x7f\xde\xd1\x8f\x22\x49\x0f\x0b\x67\x5a\xcd\xe5\xe2\x3d\x2f\xff\x2a\xd6\x9f\xc4\x3c\x31\xf3\xca\x1b\xb0\xc6\xc7\x16\xc1\x08\x73\x72\xc0\x13\xc6\x1b\x37\x69\x41\x6d\x72\x28\x7b\x0b\xac\xc8\xdb\x9f\xc1\xda\x7b\x01\x5b\x8c\x22\xcb\x76\x4e\xfa\xbc\x2b\xd4\xc2\x8d\xb6\x5e\xb9\x23\xbb\x10\x06\x54\xc1\x4c\xab\x4c\x94\xd6\x5c\xea\x47\xc7\x99\xc5\xd3\xe5\x93\xae\x1e\x9c\x6e\xe7\x78\xd3\xc4\x1b\x57\xe6\x12\x3c\x0f\x97\xbf\x83\xff\x47\x9c\xc2\xe7\x8f\xd7\x1f\xbf\x63\x57\x79\x1e\x60\x00\x6b\x23\xe6\x75\x11\x10\x9e\xa6\x8c\x97\xf2\x67\x51\x19\xa9\xc9\x08\x02\x0f\x52\xe5\x17\xac\x96\xf9\xff\xc4\x31\x91\x38\x12\xf7\x54\x97\x3e\x08\x71\xc0\xbe\xde\x83\x27\x67\xdd\x53\xfe\x9b\x7b\x44\x75\x61\x54\x90\x81\xea\xce\x76\x8c\x18\x06\xc1\x9d\xb0\x18\x33\xad\x0b\x41\x80\x24\x48\xf1\x36\x50\xa2\x5d\x09\x5e\x06\x38\x4f\xe9\x1c\xee\xbc\x65\x71\x3e\x06\x11\x6e\x5f\xa9\x49\xc1\x3d\x53\x97\xa5\xae\xac\x61\x2b\x61\xb9\xb3\xac\xa6\xee\xca\x5c\xf4\xff\x27\xb8\xf0\x28\xa7\xbd\x79\x1a\x9c\x6a\xa6\x43\x0e\x24\x8b\x4f\xf3\xb8\x00\x47\xe1\x54\xe9\x5c\x38\xf6\x41\xa1\x0f\x0f\x06\xcd\xec\x2a\xcb\x74\xad\x2c\x90\x60\xc6\x72\x5b\x9b\xe9\x52\x1b\x7b\x7b\x47\xa2\xe8\x1f\x2c\x75\x7e\x7b\x87\x94\xf1\x2c\x59\x42\xb4\x2c\xe4\x80\xbb\x19\x28\x74\x01\x1a\x57\x3c\xa1\xf0\xe9\x7b\x77\x7a\xee\xb8\x5d\x3a\xf1\xfe\x54\x49\x6b\x85\x02\xd5\x12\xf2\xa6\xf5\xfc\xc2\x5d\x53\xd0\x80\xe8\x51\x89\xb3\xc7\x6f\xcf\x5e\x44\x7e\xcd\xe3\x47\x1c\xb0\xa0\xb0\x06\x61\x35\xfd\x95\x6a\x64\xf0\xa1\x7e\xf0\xab\xbb\x5b\xf6\xe8\xf7\xeb\x95\xba\x56\x9b\x05\x3c\x25\xcb\x8b\xf9\xb6\xdf\x1f\x8d\xf5\x45\x8a\x71\xdf\x1a\xfb\x8d\x72\x0e\x20\x36\xda\xe4\x02\xb3\x42\xae\x64\x80\xf6\x09\x58\xa5\x86\xbd\xf1\x7f\x9c\x66\x65\x4d\xe1\x2a\xe1\xa9\x95\x58\xe9\x6a\x7d\x11\xff\xa7\x28\x97\x62\x25\x2a\x5e\x4c\x8c\xd5\x15\x5f\x90\x58\x5f\x9c\x12\x4c\xa5\xfd\x5f\xfe\x15\xbd\x49\x6f\xbf\x87\x12\x26\x72\x46\x77\x56\x57\x4e\x91\x2b\xd6\x51\x4c\x88\xfc\xe4\xbc\xb1\xd9\xc1\x0f\x07\xaa\xa4\x8d\xdf\xc7\x2b\xb7\xcd\xad\x20\xde\x65\x67\x57\x3d\xea\xa2\x5e\x09\x73\xd1\xa8\x54\x1e\x5a\x57\x3d\x3a\x0b\xcb\xbc\x88\x32\x97\xcb\x47\x69\x0e\x4a\x9b\xbf\x6f\xa2\xd6\x90\xa3\x50\xdb\xb2\xb6\xa1\xa6\x30\x2d\x18\x25\xbe\x94\xda\x80\x05\xdf\x64\xd1\xe7\xad\xad\x4c\xa4\x79\xf6\x2d\x2d\xa4\x9c\xb8\x8c\x71\xae\x87\x1c\xac\x88\x6d\xfa\x5d\xcb\x7d\x1a\x41\xf1\x02\x67\x21\x85\xbb\x93\x41\x9a\x13\x98\xbb\x11\x59\x25\xec\xb1\xad\x76\x4f\x95\x56\x69\x1b\xd4\xe0\x6e\xbe\xc2\xaf\xc2\xe4\x6f\x82\xbc\xf0\xc9\xe4\x2b\xe4\x4f\x20\xd4\xfa\x4d\xbb\xee\xe1\x47\x48\x7f\xf6\x54\xa9\x16\xab\x40\xfa\x79\xe2\x18\xdd\x0f\xa3\xfb\x21\x8c\x13\xb9\x1f\xee\x53\xce\xf1\xe8\x7b\x48\x7e\x00\x3f\xfb\x09\x5c\x63\x64\x9c\x94\x90\x2f\x31\x1c\x27\x85\xa4\x85\xbb\xba\x28\xfc\xe1\xa0\xa5\x4e\xdc\x6e\x3c\x1c\xaa\x17\x1a\x55\x2f\x54\xc2\x51\x52\x1c\x40\x1d\x08\xc4\xda\x96\x24\xad\x34\x72\x3f\xa8\x11\xd9\x4a\x4e\xcb\x2c\xeb\x22\x34\x45\x68\x04\x04\x7c\x6e\x48\xcd\x88\xe5\xee\x77\x3a\x77\xb7\x65\x98\x5b\xdf\xce\x5b\xbb\x14\xb2\x21\x8c\x68\x26\x1b\x83\x47\x25\x37\x8e\xb6\xd5\x4c\x2a\xa7\x78\xe6\x35\x1f\x2e\xa4\x72\x13\x15\x15\x93\xab\xd2\xe7\xda\x7a\x27\x4f\x8c\x4b\xac\xc2\x37\x9f\x22\x74\xfc\xa3\xce\x78\xf1\x11\x0e\xd4\xa7\x26\x38\xd6\xd4\xdc\x09\xa5\xeb\x05\xc6\xac\x75\xbc\xdf\x69\xc3\x52\x2b\x37\xd9\x42\x58\xb6\xd6\x35\xf3\xe9\x6a\xfd\xd0\x5b\x8e\xbf\x6e\x52\x19\x99\x8b\x1d\x87\xe0\x95\x84\xa3\xf7\xc8\x4e\x2f\x0d\x91\x7c\xe8\xab\xc8\x4c\xbc\xac\xf4\xd2\x0f\x49\x16\x2f\x23\x49\xb2\xf1\x14\x9c\x4f\x49\xdb\x18\xba\xc4\x94\xb1\x98\x2d\xe2\x68\x48\x5e\xc8\x7f\xf8\xa3\xdf\x18\xe0\x86\xcd\x44\xa1\xd5\x02\xf5\x69\x3a\x6a\xdd\x53\x76\xab\xa4\xed\x52\xf1\xe1\x7b\x91\xd5\x50\xa0\xaf\x98\xae\x72\x44\x60\xb6\xac\xa4\x86\x4e\x45\xbd\xf9\x38\x4e\x68\x2c\x07\x4f\x04\x44\xd5\xd5\x1a\xe6\xdf\xfe\x6a\x98\xa9\x72\x59\x98\x16\xd0\x44\x1a\xf7\xac\xbb\xa3\x95\x67\x79\x4b\xfe\x28\xe0\x47\xc2\x77\x76\x41\x40\x0a\x2c\xb9\xca\xe1\xe7\x59\xa6\xab\x08\x67\xe1\x14\x8e\x4a\xc0\x64\xef\x74\x21\xb3\x75\x68\x19\xe4\xae\xdb\x1c\x91\x5a\xcb\xd5\xc6\x97\xf9\x88\x74\xb5\xe2\x45\xe7\x6f\x51\x9d\xa9\x95\xfc\x3b\x02\xa9\x80\xaf\xb4\x93\x25\x45\x87\x84\xd9\xde\xb1\x08\x3f\xe2\x96\x62\x90\xe4\x8f\x72\x2e\xb2\x75\x56\x08\xc6\xb3\xe0\xd7\xff\x24\x78\x2e\x95\x30\xc6\xb1\xb0\x19\x38\x4e\x2a\xf6\xa3\x7c\x14\x9d\xbf\x0d\xb3\x3f\x5f\xa4\xe0\x0d\xd7\x4f\xdd\x62\x05\xc8\xa9\xdd\x5c\x1c\x4c\x05\x83\xe5\x0f\xe0\xdb\xb6\x1a\xb6\xaa\x56\x36\x96\x97\x75\xda\x1b\xcd\xd6\xd0\x85\x25\x64\x99\x0c\xef\x7d\x68\x85\x13\xbc\x6e\x97\xe0\xe3\x6b\x5b\x2f\xb5\x2e\x82\x75\x29\x2e\x50\xc5\xa2\x76\x29\x54\x27\xcd\x65\xc5\xbf\xb8\x2f\x06\x0e\xcd\x6d\xcc\x59\xae\x9a\xb6\x41\x08\xd5\xc4\xf7\xf0\xe9\x9f\x1c\x33\x65\x3f\x06\x47\x67\x25\x42\xdd\x41\x10\xf9\x88\x66\x5b\x9d\xc3\x02\x49\x56\x46\xae\x64\xc1\x2b\x36\xe7\x66\x29\xb5\xda\x3e\x52\x3e\xe7\x65\x98\x6e\xe3\x71\x9c\x85\x46\x3a\x0c\x8a\x8c\x57\xfa\xd1\xdd\x78\x72\x26\x1a\x43\x26\x18\x36\x22\xca\x49\xa6\x42\xf3\xdc\x5c\x96\x3a\x37\x97\x6e\x31\xda\x3c\x42\x73\x79\xa4\x5c\xc1\x0d\x04\x82\x50\x3f\xd5\xc9\x69\xec\x1c\x6c\xd8\xf5\xb5\xae\x11\xf2\xe8\x89\x7b\x1c\xda\xaa\x56\x90\xa9\x03\x5b\xe3\x78\xf2\x91\x55\x0d\x4c\x7a\xf2\x8e\x0f\x1d\x4c\x52\x46\x8a\x67\x9f\xca\x4c\x4b\x55\x46\x92\x1e\x48\x58\xeb\xa5\xa2\x61\x95\x89\x9d\x69\xcd\x7b\xd2\x96\x91\x74\x9f\x49\x6e\x7e\x26\x3f\x0c\xeb\xc4\xdb\x97\xe2\xbc\x23\x3f\x0c\x3f\xd7\xbd\x89\xce\xdb\xf9\x61\x48\xc2\x43\xe9\xce\x3b\xf3\xc3\x90\xb4\xf7\x27\x3d\x6f\x24\x35\x23\x69\xfe\xca\x52\x9f\xfd\x20\x95\x6f\x91\xbd\x45\xb4\x6a\x8b\xf0\x0d\x29\xdc\xe7\xa6\x61\x36\xfe\x6d\x53\xf6\x41\xdb\x56\x33\xf5\x0c\x13\xf9\x95\x9c\xc1\xfa\x75\x4b\x2b\x5a\x7e\x74\xf3\xe1\xf3\xa7\xff\xba\xfb\x78\xfb\xe1\x73\x64\x4b\x48\xaa\x83\x75\x16\xf4\x6c\xc9\x63\x57\x5b\xf8\x41\xab\xb9\xc0\x9e\x9c\x31\xb9\xf5\xc5\x93\x5b\x13\x14\x2a\x3f\x46\xe6\xd5\x79\x00\xcb\xbc\x10\xf5\x1c\x7e\x90\xaa\x3a\xd0\xf1\x39\xbb\x95\xe5\x9e\x7c\x00\x48\xab\x4a\xaa\xf3\x40\xbb\xbd\x9b\x23\x9d\x5a\xed\xe1\x47\x4a\xc0\x8f\x1a\xae\x3a\x49\xfd\x87\x1f\x87\x54\x81\xf8\x91\x14\xde\x21\x54\x84\xf8\x71\x8a\xba\x10\x3f\x90\xd5\x21\x24\x9a\xbb\xaf\xda\xe6\xed\xa1\x4d\xf3\xf9\x7a\x92\x4e\xa5\x08\x89\xe4\x71\x8a\x1d\xbb\x03\x25\x7e\x49\x14\x07\x2d\x08\x37\x6f\x12\xc5\x93\xd8\x11\x7e\xe0\xad\x09\xe2\xaa\x1e\xab\x90\xb2\x3b\x0e\xaa\x4f\xf1\x23\xfd\xea\xe3\x6b\x55\xfc\x40\x56\xac\x90\x16\xa0\xad\x6e\x19\xa8\x5b\x21\x51\xa5\xd7\xb8\xf8\x91\x0a\x80\x98\x5c\xef\xe2\xc7\x09\xaa\x5e\x0e\xfb\x1e\x96\x0e\xe6\x78\xcc\x3a\x18\x3f\x0e\x42\x50\xa2\x27\xa5\xf8\x81\x08\xaf\x25\x50\x25\x7b\x32\x4f\x96\xa0\xe2\xc7\xfe\xd0\x5b\x12\xc9\xad\x70\x5d\x42\xb2\x8a\x1f\x07\xed\x7b\x5a\xe2\x8a\x1f\x43\xe9\x2b\x49\xeb\xd2\xdc\xe1\x63\xe5\xb1\xf8\x91\x96\xcd\xe2\x47\x2a\x8e\x5c\x0a\x86\x5c\x32\x5c\x14\xbd\xc2\xc6\x0f\x4c\x9d\x0d\x79\xbd\x4b\x9d\x7f\x77\xa2\x6a\x1b\x3f\x70\x35\x37\x64\xb2\xfd\x1a\x9d\x67\x2b\x6f\xe8\x74\x7b\x95\x3a\xa9\xf5\x37\x7e\x1c\x22\xab\x52\x6b\x71\xfc\x18\xae\xc8\x49\xba\xf1\xee\xf1\xbd\x75\x39\x49\x54\xbb\xb5\x3c\x69\xd5\x39\x61\x76\x87\x70\xd7\xc4\x4a\x1d\x3f\x06\xeb\x75\x92\xd6\x25\x24\xce\x1e\xaf\x6a\xc7\x8f\x03\x96\x29\x9d\xbd\xd2\xeb\x78\xfc\x48\x66\xb2\xe9\x35\x3d\x7e\x20\x2a\x7b\xc8\x6b\xdf\xaf\x04\xda\x5d\xdf\x43\x67\x14\xcf\xd5\x03\x6d\x54\xf9\x90\x09\x3f\x5b\x15\xd4\xaf\xf5\x21\xd3\x3d\x5d\x6d\x90\x1f\x87\x57\x08\xf9\x71\x08\xf7\x3e\xa0\x5a\xc8\x8f\x93\xd4\x0c\xf9\xb1\xb7\x72\x28\x89\x22\xbd\xda\xc8\x8f\xc3\x80\x64\x53\x2a\x8f\xc2\xa3\x43\xf5\x47\xa9\xeb\xba\xf2\xc8\x7a\xbb\xab\x90\x92\x88\xf6\xe4\x22\xb1\x16\xc9\x8f\x83\x16\x39\xad\x2e\xc9\x8f\xa1\xea\xa4\x34\x0d\x24\xad\xa2\x29\x3c\xfc\x35\x24\x5f\xe2\xe7\x26\x0b\xbe\xb4\x7a\x27\x3f\x70\x55\x4f\xe4\x95\x0f\x1a\x4c\x6a\xed\x93\x1f\xaf\xc5\xf1\xd3\xab\x86\x3a\xec\x0c\x3f\x53\x13\x95\xa8\x2c\x42\x75\x16\xb9\x32\x2a\x4c\x69\x74\x48\x8d\x0e\x29\xea\xc3\xaf\xce\x21\xe5\x2b\x65\x46\x6f\x14\x39\xd4\x42\x44\x4b\xa0\x7d\x15\xb2\xfe\x2a\x71\x3e\xe4\x4c\x87\x44\x38\xb3\x98\xed\x10\xad\x35\xab\x59\xa9\xcb\xba\xe0\xf6\x20\x0c\xbe\x1d\xa9\x0f\x41\xd0\x50\x23\xc4\x4d\x62\x6d\xb0\x4f\x57\xbb\x23\xf0\xec\x0a\xdd\xb6\x5e\x2a\x5f\xa2\x0b\x93\x89\x39\x4e\x95\xf0\xe6\x14\xe3\x3e\x43\xe2\x51\x28\xeb\x2e\x2e\xf6\x6e\xf4\xd1\x0c\xa5\xf1\x65\x13\x80\x15\xfd\xcb\x52\xa8\xa0\x6d\x90\xe2\x8e\x52\xb5\x2d\x40\x9b\x92\xff\xa6\x49\xc1\x66\xdf\x65\xc2\x3c\x0b\x6e\x6c\x5c\x4e\xf8\x7e\xcb\x1f\x20\x82\x9f\x89\x5c\xa8\x4c\x40\x0b\x27\x7c\x7f\x9e\x88\x07\x39\x73\x36\x2f\xbb\x51\x8f\x4d\xa0\xb8\xf6\xc9\x47\x5e\xc1\x70\x6f\xc2\x4e\x72\x73\x3e\x5f\x23\x6d\xc6\x5d\xa8\x10\x3a\xed\x64\xcf\x80\x8e\x44\x53\x7c\x83\x8a\x09\xd7\xac\x89\x2d\x60\x17\x37\x45\x3d\x6c\x62\x9c\x44\x55\x79\x4b\x2f\x6c\x23\x21\x7d\xdd\xee\x05\xe2\xb4\x29\xca\xd7\x29\x14\xaf\xd7\xa3\x74\x9d\xac\x50\x3d\xbd\x54\xfd\x00\x45\x2b\x55\xc9\x3a\x19\x5e\x1e\x3b\x50\xa9\x4a\x55\xa8\x92\x14\x9c\xb2\x12\x73\xf9\x25\xf9\x6e\x5f\x75\xea\xad\x65\x2e\x94\x95\x73\x29\xa0\xfa\xaf\xac\x44\x29\x88\x1d\xf6\x62\x2f\x69\xe8\x05\xa9\xfa\x9b\x30\x8d\x46\x20\x89\xe2\x0b\x67\xd7\x79\x1b\xf3\x50\x66\x79\x1f\x71\x44\x46\x4e\x39\x72\xca\xed\xf1\xfa\x38\x65\x12\xb4\xc7\xaf\x88\x4d\x9e\xd8\xe6\x82\xfa\x93\x94\xc2\x98\xeb\x4e\xfd\x0a\xdc\x5e\x6c\x6d\x52\x73\x77\x3a\x15\x92\x1e\x9c\x02\xb9\x22\xd0\x2e\xa9\x69\xa1\xd6\x88\x00\xab\x7d\x23\x1a\x5f\x5c\x5b\xb1\x42\x3c\xa2\x3b\xf9\x7a\x5d\x93\xad\xb8\xe2\x0b\xdf\xf3\xcd\xea\xe8\xdd\x67\xba\x82\x7e\xe1\x95\xcc\xe9\x69\xbc\x01\x75\x43\x2a\x16\x6b\x44\x81\x44\xa5\x8b\x42\x54\x86\x15\xf2\x41\xb0\x6b\x51\x16\x7a\xbd\x22\xb4\xc3\xe5\x2a\x67\xf7\x96\x5b\xc7\x10\xee\x85\x35\xa7\xc1\x17\x6f\x00\x52\x7c\x25\x7a\xca\x21\x01\x98\x14\x00\xf9\x60\x65\x28\x67\xff\xa8\x80\x4b\x5f\x15\x4f\x7c\x8d\x0e\xbb\x7c\x10\x8f\xa2\xba\x60\xb7\xf3\x0f\xda\xde\x79\x23\xa6\x9f\xc3\xea\xc9\x31\x39\x67\xdf\x41\x53\x6b\xf4\xed\xe2\x0b\x30\x73\x5b\x70\x13\x5d\xf5\x5e\xe3\x99\xef\x93\x1c\x06\x21\x89\x23\xb9\x5f\xc9\xf3\x17\xe3\x77\x40\xc9\x89\x17\xff\xbf\x4f\xb2\xdd\x45\x2c\xc9\x4f\xd8\xe8\x2b\x5f\xc4\xdf\xf6\xbe\xee\xdc\x24\xb3\x36\x56\x60\x55\x88\xd0\x01\x0d\x4c\x67\xa9\x58\x25\x4c\xa9\x95\x11\x3d\x48\x87\x76\xa6\x48\xa2\xe0\x06\x31\xc9\xf6\x37\x5d\xa5\x29\xb5\xb1\xf7\x96\x57\x36\x15\xab\xf4\x2e\x12\x00\xa4\x09\x5e\x14\x22\x67\x72\xb5\x12\xb9\xe4\x56\x14\x14\xef\x23\x9f\x5b\x51\x31\xde\xf7\xea\x64\x95\xe0\x11\x0c\xc3\xed\x96\x87\xa2\xa0\x94\x26\x74\xf0\x30\x7a\x94\xad\xa8\x56\x52\x81\x3b\xc7\x67\x0e\x04\xdc\x0d\xca\x8c\x9f\xc1\xc3\x68\x39\x08\xc8\xfe\xf6\x84\x11\x68\x6f\x02\xbe\xb2\x59\xa1\xb3\x07\xc3\x6a\x65\x65\xe1\x97\x42\xeb\x07\x96\xe9\x55\x59\xc0\xdd\x24\xd0\x4e\xbf\xe4\xcd\x7f\x4e\x9a\x93\x3d\x71\xf3\x30\x97\xbf\x6b\xff\x09\xfe\x70\x6a\x1c\x55\xf1\x45\x64\x07\x40\xaf\x39\xde\xee\xb6\x1d\x72\x67\xb4\x6a\xd4\xf1\xb9\x76\x82\x99\x1e\xc5\x68\xfb\x21\x36\x0c\x7a\xca\x6e\xbe\x88\xac\xed\xa6\x49\x55\xdc\x96\x11\x71\x04\xd0\x04\xf8\x03\xb1\x72\x2a\x3d\xce\x49\xaa\x41\xee\x8e\xde\x0a\xbf\xf3\x54\xe0\xaa\xc1\x41\x86\xff\x99\x10\x39\x29\xa4\x02\xae\x1a\x2a\x99\xbb\x88\x53\xcd\x99\x4b\x49\x8a\x70\x04\x82\x2d\xc4\x72\x59\x41\x43\xc8\x75\x53\xb5\x11\xe6\xcb\x30\xf8\x38\xdb\xa3\xd2\xda\xb2\x37\xe7\x97\xe7\x6f\xb7\x1c\xf3\xe7\x4e\x23\x2c\x84\x97\x35\x29\x71\xbb\xcf\x9d\xd9\x39\x85\x40\xae\xca\x62\x0d\xab\x73\x9e\x5f\x30\x04\xb8\xc9\xf6\x08\x45\x21\x55\xad\xe2\xea\x86\x02\xf0\x0b\x66\x34\xb3\x15\x8f\x0d\x9f\x13\x68\x03\x1d\x47\xd6\x56\x75\x90\xbd\x6f\xce\xff\xbf\xf3\x0b\x26\x6c\xf6\x96\x3d\x69\x75\x9e\x32\x63\xb7\x71\x53\xf6\x19\x30\xd7\xda\xc9\xae\x75\xcd\x94\x10\x89\x99\x92\xe2\x4b\x59\xc8\x4c\xda\x62\x0d\x82\x8c\xe9\xda\x7a\x20\x0f\x6e\x43\x39\x7c\x02\xd1\x9b\x2f\xd2\x86\xec\x5f\xc7\x63\xbe\x81\xfb\xe0\x85\x1a\xe3\x4e\xad\x7e\x14\x97\x4b\xc1\x0b\xbb\x4c\xe9\x3d\xee\xce\x80\xd2\x6a\xf2\x0f\x51\x69\x28\xc6\x57\x81\x16\x7d\xaa\xc9\xad\xdf\x0f\x8a\xfd\xa6\xb6\x30\x4f\x0c\x53\x3a\x71\xf7\x83\x20\x28\x3b\x6c\x93\xad\xfd\xe7\xe7\xcf\x77\x3f\x08\xdb\x69\x92\x0c\xb2\xd8\x5a\xaa\xff\x33\xa4\x2a\x82\x13\x50\x54\x73\x5d\x11\x99\x41\x3a\x7f\x5f\x6a\x43\x5c\x01\xb6\xb5\x0a\xda\x58\x0f\xf5\xe5\xd5\x5d\x95\xd2\xbe\x9e\x31\xab\xfb\x19\xdb\x11\xb4\xec\xf6\x6e\xca\xfe\x0b\x05\x09\xb4\x39\xca\x4a\xcf\xf8\xac\x58\x37\x58\x41\x46\x58\x76\xe6\xa6\x7b\xe6\x38\xb1\xdb\xa7\xff\x14\x3c\x17\x55\x0a\x57\x77\x4c\x4c\xf0\xe4\x8e\xe0\x49\x57\xa4\x33\xe3\x43\x05\x72\x6d\xac\x5e\xb1\xa5\x27\x16\xd6\x26\x69\x15\x82\xe3\x12\xce\xef\x14\x6e\x84\xf7\x67\x38\x05\xb8\x14\x09\xcd\x8f\xdd\x08\xf3\x7a\x41\xc6\xb5\x75\xaf\xfd\x3a\x87\xbf\xcf\x12\xf3\x74\x38\xcb\xba\x0b\xed\xd6\xb9\x29\xd8\xa4\x26\x7e\xf8\x01\x0b\xec\x51\xe5\xd2\x6e\x44\x72\xbe\x1b\x3b\x20\x2b\x8b\xed\xf2\xd9\x87\x35\x01\x97\x58\x22\x4d\x46\x49\x03\xd9\x1c\x07\xc9\x2a\x96\x02\x0c\xd0\x1d\xa7\x59\x0e\x7a\x0d\x70\x3b\x0e\x5c\x8f\xd4\xc4\x24\x46\x4d\xe7\xe9\x3f\x98\xfa\xc5\xc9\xb9\xb0\xec\x00\x4d\x85\xb1\x32\xa9\x1a\x68\xbb\x16\xc8\xc3\x3a\x42\x99\xbd\x4a\xcc\x6d\x03\x56\x62\x44\xf5\x88\x07\x10\x69\xc7\x01\x87\xa5\xd4\x14\x0f\x53\x1c\x5c\xad\x3f\x92\x73\x8f\xa1\x91\x3a\xcc\x54\x2a\x2b\x16\x44\x18\x8b\xee\xf3\xa9\x05\x05\xdb\x68\x28\x15\x53\xf5\x6a\x26\xaa\xd4\xe2\x4a\xbf\x80\x5b\x07\xa0\x93\xed\x95\x40\xf2\x83\x9f\x52\x0c\x2f\x45\xb1\xce\xd5\x42\xb0\x6f\xd3\x2c\xa8\x3f\xfe\xdb\xbf\xfd\xeb\xbf\x4d\xfd\x47\x37\x79\x63\x8a\xdd\x5e\x7d\xb8\xfa\xdb\xfd\xcf\xef\x00\xb3\x82\x3e\xd5\x2f\x93\xd6\x3b\x35\x91\xca\x4e\x74\x35\xf1\x7b\xf3\x1d\xb3\x15\x99\x13\x40\xdd\x62\x02\x0f\xef\xc7\xf7\x80\x48\x00\xfd\x06\xa7\x41\xd0\x82\xd3\x18\x69\xd0\x7d\x9d\x66\xde\x8f\x16\xb8\x0b\xfb\x82\x37\x35\x8d\xa1\x4f\xe0\x78\xbe\x84\xfd\x66\xb3\xf2\x5e\x67\x0f\x07\x59\x70\xe7\x9f\xdf\xdd\x79\x22\x1d\x23\x8e\xab\xe0\x6c\x23\xae\xb5\x54\x8f\xba\x78\x04\x00\x7b\xf6\xf9\xdd\x1d\x2c\xc4\x14\xfe\x0b\xbc\xa0\x0c\x0f\x9d\x18\xc7\xda\xcd\x2b\x16\x9b\x85\xd0\x7a\x03\x3a\x0f\x85\x83\xbc\x90\xc6\xca\x8c\x48\xd7\xcd\xa9\x71\xda\xc2\xec\x68\x11\xf5\xaf\x6a\x6f\x9e\x7f\x8c\x41\xf9\xd6\xf4\x4c\xbb\x66\xe1\x9a\x3e\x67\x7a\x26\x10\x4d\x28\xe8\x1e\x65\x29\x72\xf4\x65\x69\x90\xa1\xbe\x7a\x71\x94\xa5\x5f\x5d\x96\xbe\x6e\x69\x91\xf0\x50\x59\x89\x7b\xab\xcb\xe4\x58\xa8\x7f\xfc\xe0\x48\xe8\x4c\xcc\x75\x25\x36\x43\xa1\x9d\x80\x65\x5e\x0b\xda\xa1\xe2\x0a\xaa\xfd\xa3\xcf\x51\x77\x83\x92\x21\xf7\xde\xd4\x19\xa5\xa8\x3e\xf8\xae\x95\x30\xe6\x12\x82\x9e\x75\xe9\x7d\x14\x10\x70\xad\x2b\x71\xe1\x56\x53\xac\x60\x6d\x68\x0d\x20\x43\xa6\xbc\xfb\x78\xa1\xe0\x71\x26\x6c\xe6\x0b\x1a\x42\xfc\x97\x16\x95\x51\xda\x36\x1b\xb2\x19\x56\xcd\x2a\x6e\x96\x02\x10\x43\xc5\x17\x69\x49\xfe\x27\x8f\xe0\xcf\x8d\x56\x3e\x6c\x14\x36\x48\x6a\xe5\xf6\xab\xe9\x32\x43\xd1\x6f\xda\x4f\xf4\xdf\x7b\xa7\xf3\xf3\x73\xd3\x23\xbd\xa8\x68\x45\x8f\xa5\xa8\xa4\xce\x19\x60\x99\xe4\xfa\x49\xb1\x99\x58\x48\x65\xe2\x29\x73\xaf\x0c\x07\x97\xe2\x48\xd7\xfa\x41\x40\xfc\x29\x02\x0c\x4f\xd9\xa7\x1e\x0e\x5c\xa8\x82\xce\x34\x49\x52\xeb\x5e\x98\x7f\x33\x6c\x0f\xc5\x13\x70\x5c\x6b\x5e\x90\xae\x54\x73\x79\x62\x7d\x8b\xdd\xb9\xb8\x04\x8a\xb0\x0d\x61\x71\xb7\x23\xfd\x5b\xf1\x7b\xca\xf5\xdf\x1f\xe9\x77\x47\x15\xfe\x8d\x78\xae\xb6\xce\x50\x3c\x19\xd2\xb8\x53\x9c\x2d\xf1\xe8\xb8\x6c\x4c\x22\x18\x93\x08\xf6\x8f\x31\x89\x60\x4c\x22\x18\x93\x08\xc6\x24\x02\xe4\x18\x93\x08\xc6\x24\x82\x31\x89\x60\xef\x18\x93\x08\x86\xc7\x98\x44\xf0\xdc\x18\x93\x08\xb6\x67\x34\x26\x11\xf4\xa7\x34\x26\x11\x20\xc6\x98\x44\x30\x26\x11\x10\x9e\x1f\x93\x08\xa8\xe3\x57\x10\xf8\x18\x93\x08\xf6\x8d\xd7\x1d\x16\x1a\x93\x08\xc6\x24\x82\x31\x89\xe0\x9f\x57\x96\x8e\x49\x04\xaf\x4b\x96\xbe\x6e\x69\x91\x88\x69\x81\x7e\x20\xc6\xd0\xef\x9c\x65\x9e\x82\x5b\x70\x07\x31\x3c\x99\x85\xe0\xbb\x9e\xf7\xaa\xcf\x3d\x71\x34\x1e\x40\x3f\xd0\xea\x5b\xad\xf9\xaa\xe8\x18\x38\x6f\x43\xfc\x78\xaa\x07\xa3\x0c\x6c\x34\x2d\x2f\x75\xde\x46\x0e\x3b\x21\x43\xef\xdd\xc0\xb1\x51\xba\x20\xa2\xc5\x0a\x4f\x16\x27\x44\xc4\x08\x89\x1c\x2d\x35\x3e\x98\x26\xcb\x93\xe2\x82\x88\x98\x20\x44\xf8\xa8\xd1\xd1\x81\x78\x60\x82\x68\x38\x45\x2c\xf0\x54\x71\xc0\xa1\x18\x20\x7d\xa6\x27\x89\xff\x1d\x3f\xf6\x37\x18\xf7\xeb\x44\xf1\xa8\x61\xef\xdd\x31\xbf\x6e\x04\x8f\x48\x71\x20\xde\xc7\xe8\xf1\xf0\x23\xc4\xfa\x92\xdc\xe5\xc9\x4a\x5c\x8a\xd7\x2c\x41\xda\x87\xc4\xb5\xcf\xcb\x4a\x98\xa5\x2e\x08\x3c\xaa\xc7\x9f\xde\x4b\x25\x57\xf5\xca\x5d\x52\xe3\x98\x8b\x7c\x6c\x72\xe2\x28\x7b\x1f\xf9\x86\x97\xb8\x3e\x00\xe0\x48\xca\x5c\x54\x22\x07\x8a\xee\x34\xcc\x2d\x49\xa1\x5e\x72\xb0\x33\x4d\x9d\x65\x42\x40\xef\xf5\xae\xa3\xe0\x5f\xa7\x71\xf6\x04\x92\x1e\x1d\x57\x1a\xf6\x2d\xfe\x0c\xf9\x1e\x17\x60\x11\xfc\xeb\xef\x89\x7b\x4a\xb3\x22\xc8\xc1\x5a\x64\xa0\x36\x86\xae\x28\x7e\x87\x84\x20\x6d\x9a\x90\xa5\x1b\xcb\x83\x81\x59\x67\xeb\x12\xef\xfb\x9e\xa0\x6c\x13\x62\xa5\x72\xee\xa1\x80\x6c\x5a\x78\x35\x91\x33\x25\x87\x55\x87\x43\xaa\xf4\x30\xdf\x60\x38\x35\x2d\x38\x9a\xc4\xe9\x07\x83\xa2\x8c\xde\x37\x6e\x4f\x40\xf4\x80\xe0\xe6\x21\x81\xcd\xa3\xf4\xab\xd8\x8c\xe0\x25\x7b\xa5\x0e\xf1\x90\x24\x07\x24\xf7\x7f\xca\x61\x21\xb6\x17\xee\xaf\x93\xb0\xee\x69\x41\xc4\xe4\x00\x62\x5a\xf0\x90\x1e\x38\x1c\x0e\x1a\xc2\x85\xa3\xaa\xf1\x09\x01\xc3\xc4\x83\x40\x77\x6e\x26\x38\x36\x0f\x71\x6a\x1e\xe0\xd0\x1c\x0e\x0c\xd2\x3d\x63\x6c\x9f\x23\xb3\xeb\x96\x24\x52\xdd\xe5\xc4\xdc\x72\x49\xd2\x69\x1e\xe6\xc0\x3c\xa2\xf3\x32\x25\x08\x78\xaa\x00\xe0\x11\x83\x7f\x49\x67\x93\xce\x78\x89\x2e\xdc\x04\xb6\x29\x95\xb4\x92\x17\xd7\xa2\xe0\xeb\x7b\x91\x69\x95\x13\xa4\xfc\x06\x64\x77\x73\xc3\x8c\x27\x14\xe0\x2a\x69\x1e\xa2\xd6\x35\xbb\xe4\xa1\x63\x89\xc8\x63\x21\x4e\xf4\xd6\xd2\x15\x19\x0e\xde\x54\xf7\xad\xaf\xc4\xbb\xca\x5e\xd4\xc4\xf3\x65\x2c\x87\x6d\xf0\x7f\xea\x27\xa6\xe7\x56\x28\xf6\x46\xaa\xb8\xc7\x6f\x3b\x26\x1b\xc5\xce\x8b\x56\x7b\x73\x11\x1d\x9d\x6f\xbf\x89\x64\x7f\x7b\x46\x36\xb8\x13\x8c\x39\x85\xe7\x24\x90\x3e\xa6\xeb\x24\x90\x9c\xd7\x14\x4f\xa4\xbf\xee\xc1\x7d\xe2\x9d\x2f\x7d\x3e\xfb\xad\x6f\xbd\x40\x20\x39\x73\x12\xd1\xcd\xb5\xb9\xf9\x5c\xe5\x2c\x14\x53\x36\x87\x84\xac\x63\xbe\xd6\x43\x92\x90\x76\x71\x9a\x94\x0b\x44\xba\x05\x5b\x93\xb2\x9a\x51\xa9\x16\xee\x0d\x04\x9a\xa9\x69\x16\x5f\xc5\x63\xb4\x2b\xb5\x22\x3d\xab\x7f\x4f\x46\x3f\x2d\x49\x62\xb4\x1f\xb6\xc6\x70\x32\xc4\x68\x3f\xec\x1d\x47\xb3\x1f\x5e\xa3\xc6\x6c\xe5\x4a\xe8\xda\x9e\x48\x59\x7e\x5a\x4a\x12\xc6\x40\x47\x86\xcb\x95\x30\x4c\xd7\x1b\xb6\xcd\xb7\xe1\x05\xa4\xba\xe5\xae\x58\xf5\xc2\xf2\x9f\x4c\x63\x26\x9e\x0b\xbc\x9b\x73\x87\x6f\x62\x13\x6e\xa1\x49\x5a\x60\x1c\xdd\x42\x84\x5d\x7f\xb8\xff\xdb\x8f\x57\x7f\xb9\xf9\x71\xca\x6e\x78\xb6\xec\xc2\x62\x28\xc6\x41\x34\x40\x72\xd3\x92\x3f\x62\xaf\x1f\x67\xb5\x92\x7f\xaf\x7d\x3f\x18\xf6\xa6\x79\xc3\xdb\xe4\xde\x0b\x44\x8e\xec\x6e\x32\xf2\x82\xed\xec\x1f\x0a\xcf\x87\x50\xb5\x36\x02\x9a\x5f\x11\xac\xd1\x0e\x7f\xbe\x71\x04\xbc\x36\x04\x49\x6d\x4b\x51\x09\xb6\x90\x8f\x21\xd8\x45\x6a\x8a\xc1\xf3\x18\xe4\x87\xeb\xe4\xce\xb3\xd4\x8a\xf1\x19\x84\xc4\x97\x82\x29\x61\xdd\xed\x69\xfc\x1c\x5a\xe1\x8f\x41\xbb\xed\xb5\x11\xe6\x82\xcd\x6a\x68\x3a\x51\x56\x72\xc5\x2b\x59\xac\xbb\xaf\xe4\xe8\x3a\xdb\x0f\x3a\xea\x93\xeb\xcd\x45\xb8\xfe\x78\x73\xcf\x3e\x7c\xfc\xcc\xca\x0a\x40\x27\xb0\x4c\x74\xc9\xad\xa7\x02\x9b\x32\x13\x8e\x6e\xe8\xe3\x3f\x65\x57\x6a\xed\xff\x91\xc2\x0d\xa5\x61\x4e\x89\x14\xca\x91\x0a\x22\x36\x36\xfd\x39\xfb\x66\x0a\xff\x77\xe6\x56\xbf\x12\x06\xdf\xee\x34\x24\x69\x64\x5b\x69\x5f\x5e\x96\xcb\x59\x41\x3e\x57\x61\x7f\xbf\x42\x07\xd1\x26\x79\xed\xce\x2d\x6e\xa7\x83\x28\x8f\x93\xc2\xab\xd0\x8e\x82\xef\x81\x2b\xd5\xa2\x48\x48\xeb\x4c\xec\x22\xda\x7e\x40\x72\x67\xbc\x56\xf6\xc6\x0c\xd5\xc0\x20\x88\x59\xe9\x6d\xa3\xfd\xdb\xbb\x78\xb0\xa6\xbe\xa1\xd5\xea\x80\x36\xf3\x30\x29\xef\xae\xbe\x60\xdf\xb0\x3f\xb1\x2f\xec\x4f\xa0\xd2\xfd\x91\x22\xc3\xd3\x24\x65\x9a\xd9\xea\x6d\xa3\xdb\xbb\xe4\x1d\xf9\xc5\xb1\x03\x47\xc3\xad\xa4\xd5\x6c\x26\x55\x0e\xcb\x2b\xbe\x58\x51\x51\xf3\xa1\xc2\xae\x9e\xbc\x47\xa3\x9b\xf0\xab\x39\x88\xde\xab\x7d\x3b\xef\x76\xbf\xb2\xbd\xa3\x48\x22\xe9\xdb\x51\xef\x39\x8a\xee\x55\xce\x8e\xfd\x40\x64\x1c\xcc\xb3\xea\x9d\xb3\x5c\x71\x9b\x2d\xfb\x5c\x8a\x66\x78\xbc\x77\x47\xa8\x85\xd1\x61\xb9\x06\x4f\x85\x4f\x59\x5b\x4a\x52\x5c\xff\x65\x2f\x10\x35\x50\xde\x3b\x47\xcf\xef\x3a\xd1\x42\xef\x1b\x7d\xe0\x6b\x0b\x3a\x60\x0b\x09\x45\xbc\x8a\x79\x50\x48\xdd\x07\xe6\x1d\xb1\x91\xa2\x91\x86\x69\x76\xf5\xd2\x60\xe5\x36\xee\x4c\xb8\x47\x4b\x4e\x33\x79\x33\xae\x7c\x26\xf7\x5c\x54\x95\xcf\x6e\x9c\xad\x21\x1a\x2b\x33\x5a\xdb\xa8\x24\x3e\x52\x56\xda\xea\x4c\x93\xba\x69\xf6\x03\xd0\x81\x00\x2c\x83\x77\xd5\xa5\xb4\xb8\xfd\xe9\xfa\xee\x82\x7d\x7e\x77\x07\x6d\xf3\xee\xdf\x7d\xbe\xeb\x5b\x92\x67\x9f\xdf\xdd\x9d\x9d\x78\x31\xa8\x06\xff\xa4\xaf\x12\x60\xb5\xcf\xd3\x76\xe1\xac\x04\xcf\xe5\xc9\x2a\x16\xc2\xb1\x44\x2f\x68\x98\xcb\x74\x67\xe9\xc2\x4a\x3f\x8a\xdc\x2b\xb0\x34\xba\x42\xe5\xa5\x96\x4e\x77\xdc\x51\xf5\x90\xaa\xd9\x92\x11\xd3\xc6\xaa\x87\x76\x8c\x55\x0f\x63\xd5\xc3\x58\xf5\x30\x56\x3d\x8c\x55\x0f\x98\x67\xc6\xaa\x87\x8d\x31\x56\x3d\x0c\x8d\xb1\xea\x61\xac\x7a\x40\x8e\xb1\xea\x01\xf3\x7d\x63\xd5\xc3\xc6\x18\xab\x1e\x06\xc6\x58\xf5\xb0\xe7\xc1\xb1\xea\x61\x70\xfc\xf3\x64\x2d\x8d\x55\x0f\x63\xd5\x83\x1f\x63\xd5\xc3\xf6\x18\xab\x1e\xfe\x09\x72\xb8\xc6\xaa\x87\xe7\xc6\x58\xf5\x30\x56\x3d\x0c\x8e\xb1\xea\x61\xac\x7a\x18\xab\x1e\xfa\xe3\x9f\xc7\x7e\x18\xab\x1e\xc6\xaa\x87\xde\x23\x63\xd5\xc3\x6f\x5f\x63\x26\x9e\x8b\xd8\x86\x32\x25\x47\xff\xfc\x9d\x5e\x95\xb5\x15\xec\x53\x24\xd2\x1c\x7b\x36\x5b\x43\x0e\x1b\xf2\x43\x3b\x0c\xe5\x70\x18\xcd\x4c\xab\xb9\x5c\xd4\x15\x24\xc8\x5f\xfa\x5e\x85\x93\xcc\x4f\x75\xd2\x7c\xef\xa4\x79\xe7\xe5\xa9\x92\x4a\x0a\xb9\x92\xd8\xe2\x07\xd6\xab\x2a\xb8\x4b\x12\xf3\x49\x62\xa3\xbf\xa3\x3f\xc2\x94\x3b\xae\x7c\x77\x4b\x57\xfc\x0b\xd1\xa0\xe1\x2b\x5d\xfb\xe6\x90\x61\xdd\xdb\x73\xe6\x03\x17\x71\x5b\x49\x8a\xdd\x57\x3e\x00\x2c\x8d\xeb\x86\xb0\xcd\xaf\xeb\x1c\x7c\x0a\x93\xde\x3c\x09\x64\xd3\x76\xdf\x49\x88\xcc\x62\xca\x6e\xe7\x04\x92\xcd\xdc\xa4\x61\x7a\x25\xad\xd3\xcc\x9d\xa1\xc5\xbb\xc9\x3d\xa4\xd6\x7e\x5d\x75\x34\xdc\x00\xc8\x88\xe3\xd6\x77\x7e\x4d\x48\x17\xe9\xe4\xf2\x6a\xbb\x14\xd5\x93\x34\xa0\x33\x73\xd5\xda\x0f\x70\x3e\x27\xb9\x98\x4b\x45\xea\x02\x05\xc2\xed\xb5\xb0\x45\xf6\x02\xe8\xd1\x46\x64\x75\x25\xed\xfa\x9d\x56\x56\x7c\x41\x6a\xef\xfd\x03\x7d\x1f\x48\x30\x5d\xfa\x2c\xa3\x68\x76\xf8\x94\x3b\xec\x5d\xae\x15\x64\x51\x93\x17\xbf\xd4\x85\xcc\xd6\x97\xf1\x43\x60\x95\xc5\x17\x7b\x89\x7c\x2f\xee\x6d\x96\x9b\x87\x76\x9f\xc5\xc4\xa9\x2e\xed\x76\x6e\xbd\xfb\x54\x62\x0f\x18\xfc\x5d\x25\x1f\x65\x21\x16\xe2\xc6\x64\xbc\x80\x33\x97\xaa\x70\x5e\x3d\x43\x0f\xae\x7b\xa5\x0b\x8a\xf3\xe8\x69\x29\xa0\x83\x31\x77\xdf\x05\x26\x4d\xc6\x15\x5b\x70\xa9\xd8\xca\xad\x71\x19\x5f\x43\x21\x6a\x97\xee\x56\x5b\xc3\x4a\x5e\x09\x65\x23\xe9\x50\x46\x34\xd3\xba\x08\x19\x83\x24\x0e\x12\xbf\x2e\x26\xe7\x2a\xfd\x37\x25\x9e\xfe\xe6\x66\x68\xd8\xbc\xe0\x8b\x98\x02\x4c\xe1\x4a\xc2\x6e\xd9\x70\xed\x74\x9f\x5b\x68\x9a\x7b\xca\x99\x49\x8c\x17\x4f\x7c\x6d\xdc\x72\x6f\xbe\x4d\x9a\xef\xd8\xb7\x6f\x09\x24\xdd\x9d\xe3\x86\x35\xf3\xca\xd9\xef\xdf\x82\x87\xfd\xdd\xd5\xdd\xdf\xee\xff\xeb\xfe\x6f\x57\xd7\xef\x6f\x3f\x50\x99\x95\xdb\x15\xc1\xb1\x9f\x96\xf1\x92\xcf\x64\x21\x69\x92\x78\x2b\x7e\xde\x25\x03\xc2\x20\xcf\x2f\xf3\x8a\xd4\x90\x1c\x56\xb4\xaa\x15\x54\x48\xb6\x55\x32\x7d\xcb\x89\x16\xb7\x88\x05\x96\x70\x38\xe6\xfd\x49\x2e\x2a\xae\x6c\x54\xe7\xd3\x82\x21\x55\xad\x9c\x81\x77\xea\xac\x28\x9e\x1f\x92\x76\x7c\x95\xe7\x22\xef\x7d\xfa\x0b\xe7\xd1\xbc\x8b\xaf\x5e\xb7\x35\x9d\xec\xee\xe3\xfd\xed\xff\x4d\xcf\xa5\xe9\x9d\xb2\x75\x99\x96\xc2\xf0\x42\x99\x9c\x8c\xb9\x0b\x70\xc0\xce\x7d\x0a\xf5\x0f\xe3\xde\xb1\x5f\x41\x16\x6e\x23\x5f\x53\xa3\x48\x9f\x6a\xd5\xc7\x45\x68\x29\xb2\x95\xce\x49\x7d\xdf\xef\xbc\xe0\x13\x66\x83\x4e\xa7\xf8\x90\x57\x82\xb9\x9f\x28\x2b\x79\x41\x12\xdf\xce\xb6\x79\xe4\x85\xf0\x29\x8d\x90\xe5\x1f\x24\x6f\x3f\x8a\x4f\xd1\x33\x34\x9b\xf3\xc2\x10\xbe\x31\x45\xd6\x39\x75\xe0\xbd\x33\xda\x12\x77\xa8\x79\x9e\xe5\x42\x69\x1b\x2c\x47\x37\x13\xa6\x29\x66\x9e\xa3\xc3\xbc\xf5\xd8\x49\xa1\xe8\x29\x13\xa0\x62\xa5\x88\x3a\x69\xe2\xfa\xdf\x35\xb3\x05\xff\x25\x40\x2e\x1c\x2a\xea\x5a\x7b\xd2\xcd\xb8\x12\x3c\xd7\x8a\x74\x76\x4a\x6e\x97\x3e\x5e\xb8\xe2\xe6\x41\xe4\xfe\x0f\x41\x9f\x0c\x56\x33\x75\x96\xcd\x87\x7e\x76\x3b\x31\x17\xdc\xd6\x95\xf0\x7a\xa4\x8f\xa1\x0a\xc5\x67\x05\xbe\xca\x2b\xb1\x34\x90\xe7\x1f\x55\xb1\xfe\xa4\xb5\xfd\xbe\x29\x6d\x49\x3c\x68\xbf\x04\x5d\x1e\x6a\x65\xfb\xc9\x17\x94\x04\x54\x37\xa7\x09\x14\x6f\xc1\x25\xed\x54\xdc\x34\x01\x7e\x69\x5e\xe2\xe2\x55\xb5\xba\x32\x3f\x54\xba\x26\x88\xc3\x2d\x15\xf3\x87\xdb\x6b\xe0\x37\xb5\xe7\x35\x42\xd9\x6a\x0d\x45\x7e\x84\x15\xd9\x42\xb3\x69\x2c\x84\x9f\xdc\xed\xd8\x38\xe5\x14\xeb\x60\xce\x6a\x65\x84\x9d\xb2\xf7\x7c\xcd\x78\x61\xe0\xe0\xf9\x84\x68\x76\x07\x59\x1e\x5d\x3b\x7f\xca\x68\x8e\xa1\x40\x68\xa6\xed\x92\x6d\x90\x82\xcb\xb4\xfd\x06\x4a\xd2\xbb\x5b\x12\x1f\x56\x68\xc1\x7d\xa4\xda\x7a\x91\xe5\x0f\x24\x05\xa4\xac\x44\x26\x72\xa1\x32\xc2\xe9\xea\xc4\x12\xfe\xf8\x87\x93\x86\xf5\xe1\x4c\x7e\xd0\xca\x5d\xd8\xc4\x53\x79\xab\x72\x99\x71\x2f\x07\xb8\xed\x9f\x2c\xc2\x3a\x41\x9d\x79\xb0\x05\x39\x54\x39\xc1\x75\xad\x8d\xa8\x00\xc7\xc0\x99\x9d\xd4\x9a\xbe\xbf\xd6\x33\x51\x08\xeb\x0d\x69\x40\x4b\xe0\xd6\x97\x09\xca\x15\x5f\x08\xc6\x6d\x3c\xec\x34\x29\x2d\x94\x71\xcc\xd5\x3b\x10\x2d\xcb\xb5\x30\x4d\xf5\x1c\x37\xec\xa7\xdb\x6b\xf6\x0d\x81\xe2\x1b\xf7\xa5\x6f\xe1\x08\xcf\xb9\x2c\xa0\x88\xc0\xf2\xca\x6e\x5a\xd6\x94\xbb\x12\xa6\x05\x4b\x07\x77\x92\xe9\xca\x33\xb9\x0b\xa6\x34\x33\x75\xb6\x8c\x2b\x42\xf3\x00\xc4\xba\xe4\x90\x59\x05\x8e\xfe\xf1\xb2\x87\x91\x72\xd9\x93\x45\xc9\x4f\x46\x54\x07\x48\x92\x9f\x4e\x2a\x49\xba\xee\x0a\x77\x87\x53\x5c\xeb\x6e\x47\xfc\x45\x5d\x09\xcb\x73\x6e\x79\x90\x30\x4d\xed\x34\x25\x72\x3c\x1e\xd2\x30\x5e\xb7\x44\x32\xe2\x47\xa9\xea\x2f\x3e\x25\xe9\x10\x67\xdc\xfd\x0d\x10\x62\x59\x5c\x26\xd8\x7a\x5e\x96\x85\x24\x45\x63\x42\x0a\x53\x27\x84\x7d\xdb\x3b\x84\x17\xc9\x22\x2f\x2a\x5a\xc0\x52\x79\x51\x68\x27\x46\x19\x67\x15\x57\xb9\x5e\x6d\x7e\x00\x81\xb0\x33\x4b\x44\x0f\x61\x70\xba\xeb\x02\x50\xac\x8b\xdd\x57\x65\xdf\x05\xa0\xf8\xf6\x76\x5f\x95\x5d\x17\x80\x14\x50\xde\x7d\x55\x92\x2e\x40\x9a\xd3\xb2\x10\x8f\x82\x04\x19\xb3\x89\x92\xe8\x9e\x77\xe6\x49\x3c\x0b\x40\x90\x15\x7c\x26\xa8\x85\xf8\xa0\xac\xf8\xd3\x6f\xb6\xcf\x74\x82\x2f\x89\xec\x84\xaa\x74\x71\x48\xb9\xc5\x27\x5d\x40\xc6\x0f\x6f\x16\xc3\x11\xfc\x95\xae\x05\x3c\x96\xbe\x16\x60\xe3\xf7\xd6\x02\xfc\x2f\xbf\xce\xb5\xa8\x49\x7a\x0c\xdb\x5c\x0b\xa7\x06\xf5\xd7\xc2\x11\xfc\x55\xae\x45\x82\xc3\xf5\x49\xaa\x5c\x3f\x99\xc3\xc5\xe5\x2f\x9e\x50\xe4\xb4\x99\x63\xed\x56\xaa\x05\xa9\x94\xc5\x0b\x57\x08\x7d\x15\x45\xcf\x8f\xb7\x21\x33\x89\x5a\x50\x0c\xea\x47\x14\xcf\x1d\xd2\x22\xc1\x84\xa9\x8d\xcf\x4d\x19\xa5\xd8\xfe\xb1\x58\x19\xfe\xae\x72\xef\xb2\x92\x17\xf7\x25\x05\x4a\x89\x6d\x9e\xb5\x1f\xde\xdf\x5f\xf5\x89\xb9\xcb\xfb\xb4\x14\xa4\x64\x31\x16\x0e\x86\xa3\xc6\x78\xbe\x92\xc6\x48\xad\xd8\x93\x98\x2d\xb5\x7e\x60\x6f\x62\x16\xc5\x42\xda\x65\x3d\x9b\x66\x7a\xd5\x49\xa8\x98\x18\xb9\x30\x97\xe1\xe6\x4c\xdc\xd7\x51\xe2\xd5\x0c\x36\xa5\x90\x4a\x98\x86\x41\x00\x40\x6b\x30\x86\x60\x4a\x59\xf3\x85\x44\xca\xee\x88\x04\x1c\x3e\x1f\x93\xdd\xb1\x60\x1f\xe8\xc5\xce\x50\xd2\x1d\x1c\xcc\xbe\xbc\xdb\x71\xcc\xa2\x5c\xf2\x89\x57\x29\xe8\x40\x34\xd2\x78\x48\xac\xa5\x56\x3a\x64\x84\xfa\x2a\xe1\xe0\x08\xf2\xfe\xe6\x84\x3d\x0d\x9c\x08\xd6\xb1\xeb\xc7\x7e\x11\x61\xb4\x7d\xd6\x3f\x90\x81\x02\x06\xce\x3b\x24\xbf\x93\xd1\x99\x20\x45\xa4\x93\xe7\xbf\x71\xcc\xe0\xe0\x50\x49\x82\x69\x3e\x9e\x8a\xe1\xd1\xf8\x5b\x0e\x3c\x0c\xe0\x77\x09\x64\x1c\x67\x8f\x42\xd7\x6a\xe2\x8a\x6c\x7b\x6d\xb6\x7c\x31\x44\x8a\x3b\x3d\x37\x8e\x20\x68\x53\x29\x92\x8b\x79\xe9\xb5\xdf\x83\xe3\xcc\x52\x22\x4d\x84\x17\x87\xe4\xc4\x61\x27\x77\xe4\x30\xb4\x33\x87\x4a\x74\x53\x13\x78\xfe\x2e\x53\x17\x59\xe5\x1e\x44\x6e\xef\x75\x26\x12\xf5\x97\xbf\x7b\x9d\x3f\x75\x2f\x56\xbc\xd7\x54\xd9\xf6\x32\x5c\xe0\xe4\x49\xb0\xbe\x74\x34\x19\x8f\xf4\xbe\xf3\x3c\x93\x5b\x41\x19\xe4\x77\xde\xe9\xdc\x97\xb7\x37\x65\xb6\xd0\x90\x00\x4a\xf1\xe5\x3f\xa2\xbe\x4c\xd5\xe3\x95\xf6\x59\xd2\xa1\x3a\xde\xa7\x5d\x78\xf0\xc6\x9c\xd5\xca\xca\x22\x46\x79\x57\x65\xe1\x54\x34\xac\xb3\xb0\x33\x4b\x1f\x25\x5a\x4a\xd3\x85\x39\xbd\x88\xd6\x02\x28\xfd\x48\xaa\x80\xba\x1a\xea\xfb\x2f\xd8\x7f\xd7\xc6\x32\xde\xa4\x69\xc6\x72\xdf\xbb\xe6\x25\x78\x3f\x34\x5c\xce\x00\x64\x0c\xe8\x47\x56\xbb\xc9\x3e\xca\x5c\xb0\x5c\xce\xe7\x22\xa6\x97\xa2\x93\x3e\x4b\x5e\xf1\x95\xb0\x90\xca\xe2\xe3\x45\x33\xb1\x90\x3e\x7b\x50\xcf\x19\x77\x9f\x7e\x7e\x6e\xda\x7a\x54\xec\x8e\x41\x1e\xa2\xb4\x6c\x25\x17\x4b\x6f\x71\x30\xce\x0a\xad\x16\x50\xcd\xe5\x26\x5e\x68\x9e\x33\xc7\xd2\x91\x14\x75\xc5\x9e\x78\xb5\x62\x9c\x65\x3c\x5b\x42\x2c\x8f\x2b\x96\xd7\x15\x40\xda\x59\xc1\xf3\xf5\xc4\x58\x6e\x9d\xb5\x27\x7c\x16\x3b\x75\x5d\x37\x0b\x8b\xe0\xef\xd2\xd7\x19\x3b\x4e\x48\x64\x30\x21\x63\x22\x2a\xe2\xbd\x0b\xd6\x53\x41\x28\xa5\x2e\x23\x70\xee\x08\x9c\x8b\x1c\x23\x70\xee\x08\x9c\x3b\x02\xe7\x8e\xc0\xb9\x23\x70\xee\x08\x9c\x3b\x02\xe7\x0e\x8f\x11\x38\x77\x04\xce\x1d\x81\x73\x31\x63\x04\xce\x65\x23\x70\xee\x08\x9c\xdb\x1b\x23\x70\x2e\x66\xbc\x0a\xe0\xab\x11\x38\x77\x04\xce\xf5\x63\x04\xce\xdd\x1e\x23\x70\xee\x3f\x01\x0c\xd8\x08\x9c\xfb\xdc\x18\x81\x73\x47\xe0\xdc\xc1\x31\x02\xe7\x8e\xc0\xb9\x23\x70\x6e\x7f\xfc\xf3\xd8\x0f\x23\x70\xee\x08\x9c\xdb\x7b\x64\x04\xce\xfd\xed\x6b\xcc\xe4\x74\xac\x5c\x22\x21\xed\x30\xa8\x15\x21\x81\x21\x56\xf9\x21\xbf\x93\xb3\x59\x3d\x9f\x8b\x0a\xf4\x25\x98\xd1\x56\x2c\x9c\x8a\xbf\x15\x93\xa4\xa4\x97\xf8\x46\xd8\x0b\x80\xc8\x08\xc5\x15\xdd\x97\x20\x29\x66\xfd\x9e\xd5\x01\x1a\xae\x12\x06\xa0\x35\x14\xbb\xf9\xf8\x7d\x73\x7e\xb1\x26\x2c\x09\x90\x83\x5a\x41\x0d\xdf\xf8\x51\x65\x29\x69\x76\xed\xf6\xee\xd8\x03\x1a\xd8\x64\x56\x68\xe3\x73\x2f\xfc\xa2\x67\x4b\xae\x94\x28\x02\xd7\x90\x16\xac\xe5\x99\x10\x8a\xe9\x52\xe0\x11\x44\x67\x6b\xc6\x99\x91\x6a\x51\x08\xc6\xad\xe5\xd9\x72\xea\x66\xad\xe2\xd6\x06\x04\xbf\xe6\xbd\x58\x63\xc7\x56\x82\xaf\xfc\x16\x57\x62\xc5\xa5\x9f\x16\xe3\x59\xa5\x8d\x61\xab\xba\xb0\xb2\x6c\x5e\x89\x25\x2a\xa0\x6e\xc3\xd7\x07\x35\xdb\x02\x69\x19\xc2\x27\x13\x00\xea\x03\x65\x9e\xd2\x84\xe5\x62\xba\x8b\x24\x05\xf6\xc5\x05\xc0\xbd\xae\x4a\xbb\xf6\x49\x87\x58\xf1\xb0\x14\x6c\x2e\x2b\x63\x59\x56\x48\x50\x6f\xe1\x1b\x7d\x8d\x18\xcc\xed\x02\x6c\x18\xbb\x14\xe8\x02\x7e\x58\x41\x13\x96\x50\xe5\xa0\x47\x94\xd6\x40\x42\x5d\x93\x11\x29\xc2\x0b\x91\x44\x73\x69\x82\xe6\x69\x2e\x18\x8f\x88\x47\xfe\x60\xc6\xbd\x87\x43\x97\x13\xd2\x27\xe2\x4c\xc3\x83\x9d\xa9\x75\x20\x1f\xdb\x7c\x49\x2a\x1b\x02\x80\xa2\x78\xdd\x2f\xba\x18\xbf\x31\x23\x1d\x6d\x03\x43\xe2\xc9\x16\x2b\x83\x03\xab\xc4\xa3\xbb\xa5\x22\x13\xce\xb8\x46\xc3\x2c\x74\x39\x57\x33\xc9\x93\xb0\x24\x2b\xaa\x95\x54\x90\xf4\xf8\x5e\x18\xc3\x17\xe2\x0e\x1d\xc0\x78\xce\x24\x81\x18\x46\x7b\x0c\xe0\x10\xa3\x4b\x2f\xac\xee\x3c\xd7\x26\x5e\x9d\x9b\xee\x54\xd9\xca\xcf\x15\x49\x33\xd6\xdd\x3d\x55\xd2\x5a\x01\xc7\x11\xf0\xbf\x20\x9a\xb9\x59\x6e\x79\x7e\x8e\xdd\xf7\x2e\xa2\x53\x58\xbc\xee\x2b\x9c\x8e\xa0\x72\x9f\xe0\x84\xce\xab\x9d\x55\x52\xcc\xd9\x5c\x2a\x5e\x84\xfc\xa5\x0b\x8f\x99\xc2\xbd\xf1\x6d\x8c\x33\x36\xb5\x8a\x29\x2e\x48\xb2\x61\xbd\xa6\xec\x97\xb0\x14\xb6\xaa\x55\xc6\x5b\x04\x4e\xa6\x74\x2e\x98\x9c\xb3\x05\xe4\x3d\xa1\x9d\x0c\x4b\xae\xd8\x1f\xbe\xf9\xbf\xfe\xc8\x66\x6b\xa7\xbb\x41\x50\xd2\x6a\xcb\x8b\xf8\x4a\x56\x08\xb5\x70\xe7\x01\xd8\x35\x56\xfd\xe8\x15\x71\x36\xfb\x07\xb8\xf7\x7e\x41\xbf\xfd\xfd\xc3\x8c\x8c\x75\x67\x35\xbb\xcc\xc5\xe3\x65\xe7\x24\x4d\x0a\xbd\xd8\xd5\x1b\x00\xa7\x46\x12\xcd\xc2\x1d\x97\x0d\xe0\x9b\x13\xae\x5b\x04\x3f\x62\x4b\xfd\xe4\x71\xf0\x92\x6f\x47\x9b\xe2\x5a\xea\xb2\x2e\xbc\x53\xfb\x7b\x59\x04\x7c\x88\xda\x88\x5e\xb9\x21\x92\xaa\x33\x6e\x77\xf2\x16\x70\xf2\x86\x17\x25\x15\x0e\xf9\x6b\xd1\x9c\x2f\x1d\xaa\x67\x82\x9b\xb1\x41\x33\xaa\x2b\xb4\x6a\xfa\x3d\x2f\x8a\x19\xcf\x1e\x3e\xeb\x1f\xf5\xc2\x7c\x54\x37\x55\xa5\xab\xfe\xd7\x17\xdc\x49\xe1\x65\xad\x1e\xf0\xdf\xdf\x4a\x94\x42\x2f\x9c\x35\x55\xd6\x36\x66\xf3\xa7\x6f\x97\xe3\x3a\xad\x3a\x11\xc4\x7f\xe7\x5d\xe2\x0b\xdc\x91\x27\x69\xb1\xca\x10\x57\x4c\xb8\x2f\xf6\xb7\xb7\x3b\x57\xd3\xbd\x72\xbf\xff\xe6\x0f\xff\x8e\x56\x05\xad\xb3\x1f\x2b\xf6\xef\xdf\x40\xa2\xb0\xb9\xf0\x4c\x1d\xa4\xa1\x53\xb2\x56\xbc\x28\x44\x95\x72\x81\xdd\xc1\xdc\x75\x61\x4f\x72\x5f\x6d\xca\xd5\x3c\xb2\x21\xf6\xf9\xf3\x7f\x81\x15\x26\xad\x11\xc5\xfc\xc2\x57\xa1\x35\x58\x8d\xe7\xa0\x6c\x9c\x93\x64\x8c\xd3\x6d\x53\x31\x08\xa9\xfa\xc5\xa3\x2e\xea\x95\xb8\x16\x8f\x32\xad\x15\x4c\xef\xf9\x98\x83\x5e\x48\x03\x65\x87\xb3\x42\x67\xd8\xfb\x98\x07\x12\x9d\x4c\xa6\x20\xf9\x3a\xbe\xb3\x50\xb7\x81\x37\x92\x85\x6d\x6a\x3b\x70\xeb\x47\xca\xef\x7a\x76\x25\xba\x99\x5d\x6c\xc5\xcb\x92\xe2\x96\x84\xf2\x9c\x8a\x3f\xf9\xe5\x0b\x0b\x03\xfc\x42\xaa\xae\x1e\x8c\xe5\x9e\x29\x1e\x70\xff\x52\xbc\xaa\x19\x9f\xea\xac\x47\x4b\x22\x1e\x8b\x12\xfe\x1b\xe2\x4e\x24\x17\xe3\x16\x98\x58\x83\x27\xd8\xac\x0d\xba\x84\xcb\x8f\x99\x80\x5d\x01\xbe\x49\x71\x96\x25\xb9\x99\xa9\x79\x71\xbd\x55\x54\xd1\xaf\xcb\x56\xdc\x06\xad\x3b\x38\xa7\x69\x1e\x79\x56\x8a\xca\x48\xe3\x54\x84\x9f\xe1\xa4\xbe\x2b\xb8\x5c\x45\xaf\x51\xa9\x49\xc8\x57\x29\x00\xb0\x34\xef\xee\xa4\x73\x7e\xd0\x8f\x10\x72\xd6\x12\x8b\x36\xb1\xd9\x66\x9e\x19\x00\xec\x6e\x0a\x57\xbd\xd3\x79\x20\x01\x0c\xd1\x83\x21\xef\x30\x85\x52\x2c\xa1\x44\xd1\x9c\xce\x18\x7f\x6e\xd7\xa2\xcf\x17\xdd\x5f\xc8\x8c\xd1\x53\x7b\x61\x76\x08\x53\x3d\x88\x1b\x02\x1f\x0c\x93\xee\x33\x33\x62\xb1\x74\x6b\x7c\xfb\x03\xd2\x31\x0f\x82\xcd\x3c\x65\xd4\xc8\xbb\xaf\x54\x0a\x53\x62\xe7\xdf\x9d\x9f\x9c\x27\xfa\x05\xad\x74\xc9\x17\xc4\x16\x31\x1b\xeb\xba\x49\x88\xe5\xc2\xab\xee\xc4\xd4\x67\x67\xa6\x01\x2d\x5f\x83\x5c\x06\x8a\x22\x6f\xa1\x85\x96\x9a\xb8\xa8\x3e\xe0\x1b\xb7\x39\x18\x02\xbe\xdc\xf9\x89\xaf\x19\xaf\x74\x4d\x8b\xd5\x30\xef\xaf\x6d\xdc\xf3\xef\x37\x3e\xfe\x83\x56\x64\x00\x11\x8f\x75\xd4\x47\x07\x00\xb5\x49\x2a\xf6\xed\xf4\xdb\x6f\x5e\xb7\x78\x84\x79\x6f\x88\xc7\x0f\x49\xe2\xd1\xf3\x95\x93\x7f\x6d\x04\x42\x4f\xfe\xe2\xf7\xc1\x31\xd6\xa2\x97\xcb\x80\x81\x4c\xfa\x60\x78\xfc\xa9\x92\x56\x74\xda\x94\xbd\x01\x43\xc3\xd9\x85\x1d\x24\x8e\xb7\xb4\x13\xda\x8d\x47\x12\xb1\xd3\xd3\x20\x6f\x19\x33\xf5\xec\xa8\xbc\x39\x30\x56\x77\xf1\x13\x59\x73\xb7\x20\x75\x93\x4d\x93\x48\x36\x2c\xbd\xbb\xac\x67\x67\xec\x8d\xa7\x7a\x6e\xa0\x1a\x96\xb4\x45\x49\xc7\x36\x2c\xf1\xcd\x97\x92\x84\xc8\xd7\x5b\xe6\x9b\x2f\x25\x07\x7f\x6b\xb9\x73\xbd\x49\xeb\x02\x4c\x19\xb1\xde\x64\xab\x20\xae\xf7\x5f\xc4\x92\x3f\x0a\xa8\x02\x96\x05\xaf\x8a\xb5\x5b\xf8\x7b\xbf\x0a\x34\xa2\xb5\x65\x42\x3d\xca\x4a\x2b\xc8\x80\x7a\xe4\x95\x04\xb0\x93\x4a\x00\xac\x83\xb3\x79\xff\xe5\xcd\xcf\x57\x9f\x20\xf7\x82\x86\x37\xe6\xd1\x32\xc2\xaa\xd6\x46\xaa\xc5\xd6\x6a\x74\x5e\x9d\x7e\x8f\x77\x1c\xb8\xb8\x16\xee\x44\xd0\xe6\xac\xf2\xf8\x2c\xcc\x7f\x55\xdb\x9a\x17\x50\x68\x9d\x15\xb5\x91\x8f\x01\xab\x86\x76\x1c\x76\x48\xae\x7f\x3b\xf1\xa5\xa0\x5b\x34\x8d\x16\xf9\x2b\x34\x68\x42\x21\xff\xb5\x44\xde\xff\x0d\x88\x82\xf6\x40\x6e\x21\x02\x10\x40\x99\x40\xf1\x79\x06\x5e\x39\x86\xda\xcf\x0d\xb1\x3f\x45\x17\xf4\x31\xb8\x41\x03\xb8\x89\x4f\x93\xf5\x3d\x15\xf3\xd4\xd4\x07\x40\xb9\x7a\x19\x87\x28\xfe\x44\x22\x4f\x16\xe1\x4c\x61\x4f\x53\x93\x18\x34\x34\xc9\x7e\x97\xb6\x2c\xf6\xee\x0c\x8e\x1f\xdf\xc5\x14\x18\xaa\xb7\x6b\xb1\xfc\x1e\x00\x6b\xa4\x62\x95\x30\xa5\x56\x46\xf4\x95\xf4\x36\xc9\x54\x3c\x0a\x65\x4d\xdc\xb7\x41\xb2\xf8\x7d\xa5\x98\x9f\xa5\x36\x16\xc0\x65\x30\x77\xae\x1f\xed\xbd\x8b\x8f\x42\x6c\x9f\x17\x85\x3b\xc1\xab\x95\xc8\x25\xb7\xa2\x58\x13\x0a\xe5\x79\x3f\xa0\x9f\x79\xdc\x85\x00\xaa\x24\xd8\x92\xab\xbc\x10\x55\x40\x55\xc2\x1d\xea\xcd\x24\x81\x18\x6c\xf1\xf9\x07\x6d\xce\x00\xe3\x59\xa6\xab\x1c\xcb\x93\xad\x86\x66\x9c\xe1\x71\xe6\x5b\xaf\x4e\xd9\x47\xb0\xb8\x3a\x27\xc6\xfb\x13\x51\x24\xdb\x69\x82\x33\xd6\x74\xd2\x1c\x00\x4f\xb4\xc1\xa5\x22\x40\xfd\x90\x3a\xf7\x86\x10\x6b\xfb\x9f\x6d\x6a\xdd\x04\xd2\xb3\x2f\x3b\x19\x76\xf0\x07\x4c\x64\x94\xea\x03\xa1\x80\xfd\x9c\x08\xea\x07\x09\xf4\x43\x4d\x7f\x27\xc2\xfc\xa4\x38\x8f\x12\x20\x7e\x4e\x02\xf0\x83\x81\xf7\x89\xe2\x99\x44\x78\x2f\xb8\x4f\x07\xae\x87\x44\x74\x3f\xb4\x4f\x17\xac\x87\x46\x76\x37\xb0\xcf\x06\x54\x0f\xd1\x77\xb0\x13\xd6\x67\x07\x50\x0f\x89\xec\x26\xa8\xcf\x6e\x98\x1e\x12\xc9\xdd\x90\x3e\x5b\x20\x3d\x24\x9a\xdb\x80\x3e\x3b\x20\x7a\x48\x14\x37\xe1\x7c\x0e\x07\xe8\x49\x00\x6d\x38\x04\xbe\x9f\x54\x93\x4e\xd6\xdb\x89\x08\x2e\xa7\xc2\x6f\xa1\xa3\xb7\xa4\xf0\x4e\x6a\x1d\x0e\x0a\xb7\xa5\x29\xa6\xa1\xb2\xcf\xe7\x50\x5b\xba\x38\x2c\x24\x9a\x47\xc3\x6c\x49\x3a\xae\x89\x78\x2d\x28\xb4\x16\x32\x56\xdc\xd1\xb1\x5a\x12\x2e\x3d\x02\xa7\x25\xe0\xae\x90\xc8\xb2\xe3\xa2\xb4\xa4\x63\xb4\xa4\x21\xb4\x9c\x00\x9f\xe5\x00\x44\x93\x44\x6c\x96\x53\x20\xb3\x24\x7f\x45\x1a\x2a\x4b\x02\x26\x4b\x0a\x22\x4b\x22\x1e\x4b\x0a\x1a\x0b\x15\x8b\xe5\x14\x48\x2c\x74\x1c\x96\xa4\x6d\xa7\xd6\x50\x92\x2b\x28\xd3\xeb\x27\x93\xab\x27\x4f\x81\xbd\x72\x8a\xca\xc9\xe3\xd7\x4d\x1e\x58\x35\x79\xb4\x9a\x49\x3a\xe2\xca\x69\xf0\x56\x8e\x86\xb6\xf2\x22\x7e\x78\xc2\xa1\xa4\x7b\xd5\xa9\x55\xfd\xa7\xa8\xe9\x47\x56\xf4\xb7\x75\xfa\x68\xca\x03\xf5\xfc\xad\x03\x95\xa0\xe1\xe3\xab\xf9\x5f\xdc\x82\x38\x66\x1d\xff\x91\xaa\xf8\x47\xe9\x13\xc6\x29\x2a\xf7\x47\xe9\x83\x97\x3e\xaf\x89\xef\x92\x7e\x5e\x56\xe2\xde\x6a\x54\xaf\xfd\x8d\x98\x8a\x7f\xf0\x99\x88\x8a\x87\xad\x4a\x09\xa9\x74\xc2\x1f\x79\x0d\xfc\x85\x2b\x76\x75\x77\x4b\xf2\xc9\xe8\x5e\x88\x03\xc2\x57\x4d\x61\x5a\x04\xd4\xb9\x0c\x60\x3a\x84\x4e\x12\xa1\x52\xe7\xc2\xad\x9a\x58\xc1\x4a\x5c\xb0\x4a\x18\x5d\x57\x59\x53\x73\x04\x7f\x14\x36\xc3\x9d\xc2\xcf\x9d\xa8\x51\xf0\xbc\xc6\xe5\xdc\x4c\xf4\xce\x2a\x6e\x96\x48\xf3\x58\xfb\xd2\x9a\x50\xe3\x56\x09\x6e\xb4\xf2\x0e\xe9\x4e\x29\x8f\x34\xac\xe4\xc6\x20\x25\x5e\x54\x6b\xfc\x64\x3d\xe1\xd0\x37\xa3\x4b\x74\x51\xf1\x4c\x04\xd8\x2d\x64\x54\xa9\x56\x36\xd7\x4f\xca\x37\xe5\x30\x11\xf2\x0c\x5a\x92\x84\x43\xe6\xe4\xa2\x5b\x12\xdc\xc7\xc7\x9e\x29\x53\xf6\x49\x2c\x78\x95\x17\xc0\xc3\xfc\x72\xea\xda\x66\xba\x65\x8a\xe1\x6b\x52\x42\x75\x10\x2a\x87\xa3\xe5\x53\x36\x9a\x83\x1b\xb2\x79\xd0\x24\x07\x16\x71\x3b\x66\x87\x3b\x01\x9b\xc7\x67\x20\x66\x87\x3d\x56\xed\xf3\xcf\x4d\xd8\x57\x3a\xf3\x6c\x89\x8d\xeb\x13\x11\x36\xc6\x40\x60\x3b\xc6\x40\xe0\x18\x08\x1c\x03\x81\x63\x20\x70\x0c\x04\x8e\x81\xc0\xe7\xc7\x18\x08\x1c\x03\x81\x61\x8c\x81\xc0\xad\x31\x06\x02\xc7\x40\xe0\xe0\x18\x03\x81\x03\x63\x74\xc5\x86\x31\x06\x02\xc7\x40\xa0\x1f\x63\x20\xb0\x79\x60\x0c\x04\x8e\x81\xc0\x9d\x63\x0c\x04\xee\x7d\x72\x0c\x04\x52\x28\xbe\x02\xe9\xf3\x9a\xf8\x2e\xb9\x62\x0d\xf1\xd3\x5e\x63\x77\x52\xd9\xda\xf9\x1d\x44\x07\x64\x16\x60\xbb\xfb\x98\x73\x81\xec\xf0\x8e\xbd\xeb\x07\x60\xba\x5d\xe8\x63\xc8\xac\xd3\xd9\x7e\x0a\xbf\xaf\x74\x51\x88\x6a\xd8\x9e\x5c\xf1\x35\x18\xea\x81\x21\xb1\x1f\x7b\x5d\xec\xe5\x9c\x29\xbd\xd1\x89\x67\x90\xa4\x6f\xb4\xff\x28\xa1\x9d\xea\x67\xcd\xe4\x42\xe9\x4a\xc4\x37\x48\xb5\xb8\xf0\x20\xbe\x4b\x11\x40\xc7\xad\x1e\xa4\xe9\xc1\xf4\xfa\x93\x3b\xfb\xdf\xff\xe7\x6c\x57\x61\x25\xae\x12\xeb\x2b\xc1\x9b\x53\x24\x17\x36\xd8\x42\x0b\xb4\x50\x2a\xe3\x91\x41\x16\x4a\xf0\x84\x2a\xba\x89\x41\x13\x6c\xc0\x04\x73\xe8\xe2\x38\x7e\xb0\x04\x1b\x28\xa1\xb4\x3d\x45\x06\x49\x28\xf8\x30\x88\x00\x09\x3d\xfe\x30\x18\x1c\xe9\x04\x3c\xd0\x44\xf7\x04\x46\x0e\x6d\x64\x8e\x68\x61\x1e\x03\x1d\xf8\xbd\x7a\xbe\x79\xf9\x61\x41\x0e\xa2\xaf\x33\x41\xe3\xa2\xb9\x77\x48\xe2\x3b\xa5\xe1\x38\xba\xd5\x78\xbc\x69\xa8\xcf\x44\x34\x19\xdf\x6e\x1d\x8e\xa2\xbc\xbb\xbd\x38\xb1\x9f\x19\xb5\x33\x06\x4d\x25\x27\xc4\x95\x4e\x11\x53\xa2\xc5\x93\xa8\xe2\x84\x62\x05\x9e\x28\x86\x84\x8c\x1f\x85\x98\x10\xc1\xd6\x3f\x24\x76\x44\xe6\x04\x09\x31\x23\x74\xbc\xa8\x89\x01\xa1\x3f\xfe\x18\xb1\x22\x22\xef\x3c\x49\x8c\xe8\x68\xf1\xa1\xb4\xd8\x10\x3d\x2e\x74\xe4\x98\x50\xa2\x0b\x20\x21\x16\x74\xec\x38\xd0\x8b\x75\x89\x25\xad\x29\x35\xee\x93\xd2\x23\x8b\x18\xef\xa1\xc4\x7a\x90\x71\x1e\x62\xec\x86\xbc\x55\x14\xaf\x19\xc9\x63\x96\xe6\x2d\x4b\xf2\x94\x21\x63\x34\xed\x02\xa3\xcf\xcc\x5e\x0f\xd9\xa6\xd7\x0b\x4d\x75\xa7\x77\xec\x10\x8f\xd7\x51\xbc\x5d\xb4\x38\x0b\x3a\xc6\x42\xb1\x46\x0f\x8f\xaf\x10\x4f\x0f\x85\x49\xa1\x7d\x7b\x24\x46\x93\xd8\xb8\x1a\xdd\xb2\x9a\xd8\xe2\x62\xb8\x59\xf5\x46\x0b\x6a\x14\xd5\xaf\xdd\x74\xef\xb4\x46\x05\xb9\x29\x35\xad\x1d\x35\xcd\xb2\x1b\x6a\x44\xdd\x98\x63\x28\x92\xaf\xc0\x64\x4b\x69\x38\x8d\x6f\x35\x7d\x0c\xd3\xb9\x6d\x32\xdd\x33\x9f\x51\x24\xf7\xb4\x97\xde\x6e\x1a\x8d\xa2\xf8\x7c\x63\xe9\x57\x62\x83\x93\xa2\xc7\x84\xc8\x71\x1b\x11\xc6\xad\x13\x2e\x6a\xec\xa3\xc1\x28\x8a\x88\x88\x31\x3a\x12\xfc\x62\xb6\xff\xb1\xa2\xbf\x47\x88\xfc\x8e\xba\xeb\xf3\x11\xde\x51\x77\xdd\x33\xbe\xbe\x16\x47\x6f\xa6\x4c\x68\xa3\x4c\x95\x4f\x03\x0d\x94\xa3\x50\x40\x91\x7c\x4d\xad\x93\x4f\x29\x96\xd0\xbb\xad\x74\x2e\xee\x45\x01\x21\xae\xa1\x7d\xe6\x79\x0c\x05\xdd\x11\xd8\x39\x81\x89\x6c\x1c\xa2\xce\xd4\xdc\x96\x71\x66\xe2\xff\x0a\xd0\xbf\x98\x24\x0c\xdf\xa0\x51\x34\xd1\x3b\xc7\xc4\xad\x66\x73\x69\x1d\x47\xe1\xb0\x00\x53\x76\xdf\xa3\x3c\x1c\x8a\x6f\xdb\x18\x78\x0a\xe7\xe7\x86\x15\x7c\x26\x0a\xb3\xf9\xa2\x99\x00\x4b\x34\xaf\x0b\x44\xca\x16\xf0\x38\x6e\xc3\xa4\xe8\x95\x87\x00\x80\x0c\x35\x8f\x97\xdc\x18\xb9\x50\x13\x77\x4c\x1d\xb5\xcb\xa1\x13\x89\x3e\x31\x65\x25\x75\x25\x87\xdb\xb9\x6d\x79\xed\xe2\x83\xfe\x12\x4e\xd9\xcf\xbc\x92\xba\x36\x11\x15\x38\xd3\xab\x52\x2b\x54\x5b\x44\xdf\x49\xb0\x69\x83\x01\xdb\x19\x7a\x76\x34\x2f\x69\x84\x4d\xee\x5b\x27\x0f\x12\xbd\x8b\x4f\x5e\xe5\x2b\x09\x2d\x8d\x3b\xd9\x19\xd0\x25\x50\xf1\x59\x21\x7c\x70\xb5\xac\x3c\xea\x30\x66\xaa\x55\xec\x65\x2b\xac\x77\x20\x34\x33\xf7\xd1\x5e\xde\xbc\x2f\x6b\xde\x37\x6c\xa4\x85\xb6\x8f\xa6\xbb\x10\xf0\x9a\xf8\x1d\xef\x0a\x6e\x8c\x13\x69\xfe\x2d\x4b\xb9\x58\x62\xb4\xd9\x98\xea\xe1\xa3\xe5\xfe\xa9\xde\xca\x0e\x09\x42\x0a\x5b\xc3\xb3\xb4\x72\xf3\xab\x48\xc7\xef\x76\xde\x05\x23\x97\xa1\xe1\xa7\x89\x27\xe4\xdc\xa0\xbf\x8e\xb1\x33\x7f\x5e\xe1\x56\x4d\xb2\x4a\x5a\x99\xf1\xe2\x0c\xec\x94\xf8\x4f\x59\x51\x1b\x2b\xaa\xf6\x5f\x07\x89\xf2\x4a\x30\xfb\xa4\xfd\x2c\x79\xc1\x1e\xc4\xfa\x49\x57\xb9\x09\x9c\x2e\xce\xb8\xdd\x13\x04\xe7\x0b\x9f\xe4\x8c\x8a\x27\x69\x43\xf7\x60\x5d\xad\x44\xc5\x66\x22\x36\x20\x08\xc4\x08\xdf\x7f\xa5\xd6\xa1\x33\x8e\xea\xea\x4b\xb9\x98\x4b\xe5\x3b\x01\x02\xee\xb4\xcf\x64\xed\x1d\xc6\x61\xf6\x07\xdc\x27\xce\x96\x7b\xed\x1d\xe0\xab\x77\xc0\xc9\x3b\xfe\x1a\x67\x3d\x48\x39\x66\x63\xc5\xdc\x29\x5d\x31\x1f\xb8\x07\x2e\x51\x09\x9f\x2d\x11\xff\x79\x68\x11\xd0\x22\xad\x12\x3c\x97\x27\x48\x48\x33\xa2\x82\x6e\x7a\x0d\xfd\xb4\xcc\xb4\x95\x7e\x8c\x5d\x93\x22\x45\xa1\xf2\x52\x4b\x65\x0d\x93\xc3\x50\xff\xdb\xe9\x6c\xdb\x19\x5e\x9d\x0c\x37\xb6\x42\xc4\x1d\xba\x19\x6e\x9f\x7a\xcb\x17\x52\xdc\xdc\x37\xaf\x5b\x07\x1e\xc6\xf5\x43\xcd\x71\xf3\x39\x6c\x83\x64\x3f\xc5\x99\x74\x93\xdc\xbe\xa6\x56\x39\x66\xac\x8d\x19\x6b\x63\xc6\xda\x98\xb1\x36\x66\xac\x6d\x8f\x31\x63\xed\x55\x78\xcb\xc7\x8c\xb5\x30\xc6\x8c\xb5\x3d\x63\xcc\x58\x1b\x33\xd6\xc6\x8c\xb5\x03\x67\x3e\x66\xac\xed\x1f\x63\xc6\xda\xbe\xa7\xc6\x8c\xb5\x31\x63\x6d\xcc\x58\x7b\x7e\x8c\x19\x6b\xaf\x25\xd6\x39\x66\xac\x8d\x19\x6b\x63\xc6\xda\x98\xb1\x36\x66\xac\x8d\x19\x6b\x63\xc6\xda\x98\xb1\x36\x66\xac\xfd\x1a\xb5\x38\xf4\x6e\xc7\x8e\x06\x83\x9b\xbc\x19\xad\x2b\x6b\x2b\xd8\xa7\xf8\x74\x73\x66\xd9\x6c\x0d\xb7\xd0\x29\x13\x19\x1f\x66\x35\xed\x75\x3e\x62\x34\xb6\x90\x2b\x69\x51\xc7\x36\x2d\x09\x8f\xd1\xb9\x7b\xff\x7e\xfc\x08\x13\xec\xf8\x1f\x7d\x6b\xf7\x2f\xa0\xdc\xf0\x95\xae\xf1\xc0\xff\x59\xd8\x8a\x66\x23\xbd\x6f\x35\xc2\xc1\x24\x67\xbc\xf9\x16\x04\x93\x40\x7e\xd2\x90\x9f\x34\x3b\x36\x98\x04\xc7\xa8\x6c\x27\xf8\x92\x5f\xf3\xce\x7d\x0a\x53\xdc\xdc\xbb\xa0\x98\x1e\xba\x77\xf1\x1a\x41\x9a\x4e\xf3\x2e\xa4\x75\xa3\x57\xd2\x3a\x15\xcf\xe9\xd8\xbc\x1b\xf7\x96\xb6\xa7\xcb\xf8\xd3\x87\xd3\x01\xe7\x3e\x90\x2a\x4d\x17\x2e\xbd\x93\x3b\x04\xb9\x4b\x4f\xd2\xa0\xa3\xf4\x5c\xb5\x8a\x25\x9c\xb4\x49\xcc\x75\x0a\x89\x8c\xbf\xb2\x53\x8b\xfe\x69\xcc\x5b\xad\x0e\xcc\xb7\x8b\x9a\x68\x93\x84\x25\x4d\xc9\xad\x23\x3e\xf8\x61\xb3\xce\xd6\xb5\xf3\xd9\x93\x12\x36\x48\x71\x7b\x12\xee\x25\x31\xe3\xa8\x7d\x05\x6a\x11\x11\x57\xd2\x59\xbc\x90\x01\xa7\x95\x15\x5f\x06\xb5\xe5\xfe\xdd\xbd\xef\x3f\xcc\x9c\xf9\x6d\x18\x08\x72\xf1\x28\x8a\x86\xf8\xe0\x57\x73\x6b\x2b\x39\xab\x2d\x98\x6b\x39\xa4\x6b\x84\x7c\xd3\x98\x50\x06\xb9\xa9\x66\xca\x1a\x6b\x64\x90\x66\x57\xb7\x81\x84\xa9\x29\x63\xf7\x42\xc0\xd2\x74\xbf\x03\x6e\x77\x58\xe0\x41\xa2\x70\xa5\x20\xe7\x41\xf0\x6c\x19\xd2\x64\x8f\x99\xf7\x34\x37\x3f\x54\xba\xa6\xb7\x94\x3a\xbb\x6a\x92\x33\x9d\x69\x1a\xd8\x41\xc1\x16\x8e\x1a\xbe\x05\x03\x2f\xcb\x02\xa2\xd7\xda\x49\xbd\x76\x07\x8c\x33\x06\xb8\x4f\x57\xbe\xd7\x2b\xc1\x1e\x75\x51\x23\x63\x31\x6e\xc1\x83\x10\x85\x6b\xf0\xd7\x7a\x26\x0a\x01\x16\x4b\xb6\x04\xfc\x42\xe8\x2d\xf4\xe4\x5e\xb3\x94\x25\x96\xd7\x03\x1b\xf5\xd3\x08\x2e\x17\x47\xa2\xd1\x97\x4a\x9d\x7f\xc7\xfe\x5f\xe5\xf4\xd2\xcf\x48\xf5\x58\x3f\x29\xa9\x16\xec\x87\xdb\xeb\xe6\x1a\x3a\x4a\xdf\xdf\xc3\x96\xb0\xdf\xfb\x5c\x22\x23\xec\x42\xe6\x6c\x26\x71\x2b\x2a\x0d\x04\x77\xdf\x28\xf1\xe4\xd3\x92\x7c\xfe\xa9\x8f\x6e\x42\x56\x9f\xff\x84\xf0\x46\xec\x44\xfd\x87\x86\xa9\xbd\x65\xff\xea\xe7\x56\x8a\x2a\x26\x6b\xcf\x9c\x3e\xc4\x2b\xc1\x3e\x7e\x3a\xc7\x25\xbc\x41\x5e\x6b\xf5\x34\xa9\x9e\x26\x93\xc9\xc4\xad\xdd\xed\x9c\xd5\xca\x08\x7b\xd1\xdb\x37\x98\xa9\xd2\xb8\xcf\x5f\xe9\x5c\xce\xd7\xfd\x1d\x86\x3b\xde\x4e\x15\xae\x13\x57\xeb\xb0\x12\x53\x4c\xd8\xbf\xa3\xea\xff\xf1\x0f\x47\xf7\x40\x55\xb5\xba\x4a\xbc\x87\x6e\x17\xdc\x01\xb2\x1a\x12\xc5\xdc\x77\x0b\x65\xab\x35\x64\xad\x06\x83\x1d\xb5\x70\x2d\xf3\x2b\x2b\xed\xec\xfa\x29\xfb\xc9\x38\x85\xa6\x56\xce\x80\x6b\x44\x82\x0c\x7b\x84\x74\xb4\xf3\x35\xe3\x85\xf1\x75\x1f\x3e\xe7\x60\x83\x89\x4f\x19\x88\x47\xf8\x37\x14\xc9\x99\xb6\xcb\x4d\x22\xb0\xc3\x77\xe0\xf3\xee\xfe\xf9\x02\xfd\xf5\xde\xac\x6c\x65\xeb\xf6\x3c\x21\xe9\xd2\xb0\xb2\x12\x99\xc8\x85\xca\x90\x4d\xe8\xc0\x9b\xcb\x2d\xde\x4c\x62\x2f\x73\xda\x3e\x68\xf5\x49\x6b\xba\xcb\xf3\xb6\x53\x2c\xc0\xed\x46\xd7\x32\x70\xbd\x54\x35\x6e\x1f\xb9\x81\x62\x21\x35\x81\x14\xcc\xda\x04\x3d\xc6\x56\xb1\xd8\xa2\x7b\xff\xb1\x9b\x28\xf3\x58\x16\x20\x57\x7c\x21\x18\xb7\xcd\x01\x76\x62\x59\x99\x1a\x9a\xd5\x39\x85\x18\xc7\x4f\x72\x2d\xda\x34\x4c\x6e\xd8\x4f\xb7\xd7\xec\x1b\xf6\xc6\xcd\xf9\x2d\x9c\xba\x39\x97\x05\x64\xd4\x58\x8e\x84\x86\xed\xaf\x99\x9c\x83\x76\xaf\x85\x99\x36\xfc\x8f\xe9\x8a\xcd\x79\x61\xc4\x05\x53\x38\xa5\x1c\xfa\x25\x86\xef\x77\xdc\x38\xca\x93\x10\xb2\x01\x63\xb2\xbd\x8a\x38\x92\x83\xd7\x75\xe7\x55\x44\xc7\x04\x9e\xb9\xae\x3b\xae\x22\x8a\xe4\xd0\x75\xc5\xdc\x3b\x7f\x8f\x66\x5a\x17\x82\x0f\xbf\x15\xee\xd1\x4f\x46\x0c\x16\x0a\xb2\x5d\x4c\xfb\xa7\x13\x31\xed\xae\x1a\xea\x2e\x55\xbb\x92\x38\xf5\x41\x85\x9b\xb3\x12\x96\xe7\xdc\xf2\xc0\xf0\xdb\xcc\xf4\x7f\xf2\x73\xf4\x2a\x59\xba\x11\x3f\x4a\x55\x7f\xf1\xc6\x0a\xdd\xdd\xeb\xce\xe3\xfd\x0d\x90\xf0\x8d\x51\xbf\xd8\xa0\xe2\x7a\xfd\x3c\x47\xfb\x06\x7a\x3a\x7c\x64\x68\x7d\xab\x94\x16\xff\x8f\xdc\x1b\x18\x9a\xd3\xe9\xa1\xee\x8b\xb3\x8a\xab\x5c\xaf\x36\x67\x8d\x96\xc9\x60\x4d\x75\x22\x11\x58\x45\x85\x72\xe2\x29\x8a\x0a\x5a\x70\xbc\x2e\x45\x85\x1a\x15\x04\x33\x3d\x29\x2c\xf8\x23\x18\xf8\xd2\x34\x3b\xee\x2d\x7e\x28\x32\xa6\x75\xfc\xeb\x98\x9c\xfd\x70\xd4\xa9\xa2\x82\x95\x2e\xd2\xb2\x98\x3e\xe9\x42\xf8\x4a\xef\xf8\xd1\x8e\xd4\xaf\xe2\x9b\xe1\x81\x94\x6f\xfe\xbc\x2e\x37\xbe\x19\xfc\x27\xbf\x86\x6f\xae\x91\xaa\x00\xdb\xfc\x66\xa7\x43\xf4\xbf\x19\x04\xf7\xeb\xff\x66\x52\x6c\xa0\xeb\x26\x02\x5b\x97\x2e\xa7\xae\x58\x21\x0d\x28\x48\xe0\x66\x32\x1d\xf1\xe4\xeb\xee\x64\x85\x2c\x7c\x08\xea\x52\x28\xae\xda\x10\x07\x17\xe0\x7c\x0a\xe1\x09\xac\xe8\xdb\x2c\x09\x2b\x2b\xb9\xe2\xd5\xda\x19\xe7\x5e\xd7\xe9\x0a\x42\x14\x45\xa5\xe3\x67\x46\x6d\x9e\xe7\xb9\xff\x58\xae\xd6\xb4\xcd\x25\xe4\xdb\x53\x35\x15\xaa\xae\x42\xcb\x62\x36\x6b\x93\xd9\x82\x7e\x54\xee\xfd\x73\xe0\x22\x66\xbc\x39\x37\x8a\xaf\x84\x29\x79\x26\xf2\x48\x19\x7b\xb5\xf3\x2e\x92\xc5\xd4\xc9\xf0\x50\x47\x5e\xab\x36\x37\x87\x42\xf3\x4d\x70\x1c\xb6\x3a\x7c\xd0\x75\xde\xb2\x95\x5c\x2c\x6d\x63\x59\x16\xbc\x56\xd9\xf2\xc8\xbb\xbc\x63\xb1\x42\xcd\xba\xe3\x43\x0f\xa2\x52\xa2\x60\x25\xaf\xf8\x4a\x58\x74\xc2\x89\x8d\xea\x13\xf6\x0e\x12\xcb\x26\x68\x25\x13\x3b\xb2\xb0\xe7\x8c\xc7\xd7\xae\xa9\xcd\x4e\x13\x72\x69\x88\xa5\x12\xbd\x09\xff\x0c\x8a\xde\xcb\xce\x98\x56\x22\x41\x28\x8f\xa0\x94\x46\x24\xf5\xcd\xc1\x31\x93\x27\xa9\x72\xfd\x64\x0e\x31\x93\x7e\xf1\x24\xa2\x06\x9e\x35\xa1\xa2\x28\x8b\x70\xdf\xb8\x19\xee\xd8\x6d\x2a\xe9\x12\xdf\x73\xdb\xf1\x22\x88\x99\x74\x85\xd0\xa6\x69\x10\x05\x89\xe3\x67\x38\x9d\x60\xbf\x91\xfe\x35\xcc\x99\x53\xd8\x25\x8b\x95\xe1\xef\x2a\x47\xdf\x4a\x5e\xdc\x97\x38\x2c\x00\xb6\x79\x40\x7e\x78\x7f\x7f\xd5\x27\xe3\xd4\xba\x27\x40\xd4\xa0\x34\x13\x76\x74\x3a\x38\x38\x4f\x62\xb6\xd4\xfa\x81\xbd\x89\xe1\xf4\x85\xb4\xcb\x7a\x36\xcd\xf4\xaa\x13\x59\x9f\x18\xb9\x30\x97\xe1\x88\x4f\xdc\x17\xe1\x4b\xba\xa5\x2a\x80\xf3\x47\x79\x24\x94\x35\x31\xdb\x0f\x26\x93\x35\x5f\x85\xa6\xe9\x36\x15\x38\x44\x13\x22\xdb\x5e\x1e\xe0\xca\x3e\xa8\x89\xa6\xfb\xb9\x05\xf8\x71\x3a\x73\x51\x2e\x79\x08\xff\x06\xf8\x01\x40\x63\x58\x6a\xa5\x2b\x42\x57\xc0\xd9\x3a\x14\x36\x05\xc7\xb6\x47\x37\x82\x69\x87\x2b\x0f\xeb\x30\x17\xdc\xd6\x88\x1e\x4d\x71\xcc\x0b\xbe\x38\x99\xc1\xb1\x7d\x6a\x31\x99\x09\x71\x0c\x9c\x5c\xd8\x9a\x00\xe6\x40\x2a\x83\xdb\x7d\x6c\xfc\x71\xf0\x3e\xc9\x69\x67\x0f\xf1\x47\x74\x70\xaf\x3b\x7b\x88\x17\x91\xc3\x7b\x7d\xda\x3d\x6c\x9c\xc8\xc9\x5b\x07\xce\xe4\x40\xc0\xf1\xcf\x28\xa1\xbc\x73\x99\xb0\x12\x3b\x9c\xd0\xfb\x1c\xcc\x78\xca\xde\x38\xeb\x3b\xa3\x77\x3a\x9a\xd1\x24\x9f\x73\x48\x47\x59\xb5\x2d\x92\xf0\xfc\xe5\x84\x12\x8f\x11\xa5\x1e\x9a\x68\x47\x3a\xee\xe7\x8f\xf8\xeb\x66\xf7\x5c\xaf\xee\xb5\x21\x7d\x78\x38\x9b\x9f\xba\x87\xfe\x25\xee\xd9\x49\xd2\xc1\x3c\x44\xd4\x55\x96\xe9\x5a\x59\x72\x4e\xd8\xf9\xfd\xd6\xf3\x5d\x76\x8b\x8d\x02\xf5\xa9\xc4\x8a\xc7\x26\xb0\x24\x8d\x37\x57\xdb\x9c\xbc\x41\x8a\x7b\x72\xf6\x2c\x37\x0f\x6d\xc2\x9e\x00\x34\xc5\x36\x2f\xaf\xfd\x7b\x58\x9a\x09\xf7\xb3\x42\x82\x2d\x22\x76\xd3\xea\x42\xf8\x44\x41\x5a\xba\xf3\xce\x04\xbc\x73\xd3\xa5\x37\x74\xf2\x90\xb6\xf5\x36\xcc\xa3\xce\xfd\x3e\x7c\x6e\xde\x05\xf7\xd2\x5a\x0e\xd9\x76\x28\xf7\x52\x98\x27\xa4\xab\xad\x99\x5b\x6f\xeb\xef\x20\x80\x6e\x06\xc5\xcd\x56\xb2\x2c\x04\xfb\xd3\x83\x58\x5f\x78\xcc\x42\x31\x9f\x8b\xcc\xfe\x19\xf1\x82\xda\x44\x04\x3c\xa0\xe8\xfe\x87\xd3\xa0\xb9\xd5\x15\xfb\x53\xfc\xaf\x3f\x0f\xdf\x4e\x9a\xe2\xed\xe7\x97\xe0\xb0\xb8\x81\x07\x37\x90\x0b\xfd\xb2\x78\x9a\x78\x87\x05\x7c\xef\x94\xdd\x40\x9b\xce\x95\xe0\xca\x44\x24\xd3\xa2\xe8\x91\x44\x63\x5b\xfc\xb2\x14\xaa\x7b\xdc\x42\x3a\x77\xcc\xe5\xe3\x95\x60\x1f\xf4\x7d\xc8\xac\xc4\x0a\x8e\xbb\x4a\xcc\x45\xd5\x3e\x07\x72\xe8\x83\xbe\xf1\x70\x59\xb8\xa9\x11\x99\xe6\x83\x18\x04\x35\xf5\xa3\xb7\x35\x7f\x15\xeb\xc8\xc7\xfc\xea\x3d\x88\x75\x9b\x2b\xd2\x5e\x38\xe4\x77\xb7\x1e\xed\xfd\x7b\xf4\x20\xd6\xe8\x0d\xba\xf5\xba\xcd\x83\x9f\x29\xe4\x6a\x5e\xb4\xc7\x3d\xd6\x0f\xdd\x7c\x91\xc6\x9a\xff\xc0\x9e\x24\x77\xc5\x33\xbd\x9a\x49\xe5\xef\xb8\x9f\x66\x3c\x60\x30\xd3\x78\x00\xd0\x62\xd8\x3d\x84\xff\x30\xe2\xf6\xc6\x0f\x4e\xd8\xe3\x8f\x71\xad\x2a\x51\x56\xc2\x80\xb5\xc8\xdd\x4c\xcf\x0d\xab\x44\xe1\x19\x2a\x36\xb5\xb2\x51\x10\x1b\x1c\xdc\x42\xe6\xcd\xec\xfc\x7d\xf1\x7b\x41\x58\xb9\x9b\xbf\xd7\xbc\xe8\x27\x43\x84\x3f\x05\x52\x6e\xe3\xff\x5e\xcb\x47\x5e\x08\x64\xba\x3f\xcc\xf3\x49\x16\x79\xc6\x2b\xef\x0c\x0e\xc0\xb0\x26\x60\x95\x41\xba\x2a\xcb\xb8\x6a\xd8\x35\x61\x9b\xe1\x14\x9b\xe0\xef\xe3\x95\x95\x59\x5d\xf0\x8a\x39\xee\xb6\xd0\x15\x12\x93\x8c\xaa\x15\x35\x97\x91\x50\x27\xb6\x29\xe2\x36\x69\x74\xcf\x04\xde\xe7\xe1\x4b\xd6\x41\xe9\x81\x5c\xad\x1e\xab\x60\x6f\x5a\x80\x6b\x6c\xd6\x09\xd8\xa1\x9e\x71\xb7\x6c\xb2\x57\xed\xd0\x55\x93\x91\x24\x3d\x56\x66\xfe\xb6\x23\x8f\x1b\x3e\x37\x65\x7f\x69\xf2\xe6\x2f\xb0\xd9\x65\x2c\x82\xfc\x41\xd2\x6b\xf8\xca\xc0\x38\xfc\x1b\x3a\x8c\x74\xae\x2b\xf1\x88\xf6\xc5\xbf\xc9\x35\x50\x16\x8f\x32\xb3\x6f\xa7\xec\xff\x11\x95\xf6\x98\x77\x62\xc1\xa1\xe6\x3c\xb0\x23\x74\x7a\x5d\x00\x0f\x6f\xd0\xf4\xbe\x61\x6f\x80\x38\x93\xab\x95\xc8\x25\xb7\xa2\x58\xbf\x6d\xca\xc7\x3c\x1a\xe2\x2b\x89\x38\x11\x1c\xf1\x3b\x9c\xf0\x3d\x71\x16\x40\x51\x53\x64\x59\xa3\xac\xe9\x69\x94\x41\x8d\xd4\x91\x26\x70\xa6\x4e\xf2\x12\x92\xac\xc7\x18\x75\x9b\x13\x45\x59\x73\xc8\xff\xdb\xdd\x18\xce\x2a\xb1\x00\x6e\xe2\x39\xc3\x09\x78\x09\xd9\xbe\x1a\xf2\xd7\x23\x08\x0e\xfe\xa4\xac\xc4\x5c\x7e\x79\x6e\xd7\xfb\x70\x47\xf0\xd3\x9e\xfd\xe5\x9f\xf6\x66\x18\x5c\xd2\xfc\x59\x2d\x6b\x70\xa9\x2a\x51\x16\x32\xe3\xcf\xf2\xd7\x7e\xd6\x47\xf8\x71\x97\x91\xb6\xd8\x41\x91\x54\x9c\xd8\xb3\x6b\xd8\x04\x28\x3c\x78\xfe\xed\x9c\x65\x75\x55\x09\xe5\xd1\xf4\x01\x57\x25\xd2\x12\xb6\x05\x73\xb7\xfb\xb0\xe1\x9b\x97\x87\x85\xf2\xc5\x72\xdd\x69\x09\x4f\xfe\x59\x8d\x05\x53\x32\x3b\x7c\xb9\x8d\xd5\x15\x5f\x3c\x7b\xa1\xfb\xb1\x4d\xff\x5b\x88\x9d\xc1\x92\xac\xd9\x52\x3f\x45\x12\xcc\x2c\xf9\x70\x48\x04\x63\xd5\xf8\x62\xf8\xf7\xee\xe3\xf7\x31\x9a\xbe\x0f\xe0\xaa\x7d\x28\xba\xda\xfc\xca\xe6\xc2\x40\x31\x6e\xc0\xdf\x5a\xb9\x5f\xec\xb7\x8c\xdb\xca\x8e\xc0\x0f\x96\xfc\x91\x5e\x8c\x17\x96\xe5\xb2\x14\x95\x91\xc6\x0a\x65\x27\x9e\xaa\xf9\x9d\x9f\xca\x04\xa6\x32\xf9\x76\x9f\x49\x8f\x30\x95\x91\xdc\x05\xc3\x2c\x72\x6e\xf9\x3d\x14\x09\xa2\xd7\xbd\xe3\x22\x0b\x21\x4f\xbf\xea\x3f\xc3\xa7\xde\x2b\x5e\x9a\xa5\xb6\xd7\x0d\xe1\xbd\x9f\x02\x1e\xb6\xc6\x89\xb5\x00\x99\x0d\xbe\xc8\x70\xa7\x7c\x85\x99\xbf\x7b\xc5\x7a\xe3\x1d\x7b\x29\x87\x5b\x06\x4e\xb8\x36\xc7\x00\x7c\xa5\xbe\x2a\xb2\x11\x23\x80\xe8\x6d\xa4\x1e\xca\xaa\x74\xca\x69\xa0\xb4\x31\x91\x2e\x59\xa8\x37\x85\x50\xa1\x2f\x1d\xda\xff\xf9\x4c\x89\xa7\x78\xf4\xdc\xa7\x02\xa1\x16\x54\xdd\x9d\xa8\x36\x43\x27\xfe\x6e\xff\x87\x83\x02\x01\xb8\x1f\x72\xb5\xf3\x23\xdb\xb4\xfc\xdd\x5f\xb3\x97\x7a\xef\x4b\xbb\xd5\x50\x01\xab\x3d\xd6\x4b\xf1\xd0\x43\x23\xa0\xda\xee\xa5\xd9\x7e\x6f\xd8\x25\x0e\x40\x30\xd0\x15\x63\xca\x6e\x7d\x8e\xf7\xbc\x76\x47\xe4\x82\x3d\x09\x56\x16\x7c\x30\xb3\x28\x7e\xda\x0a\xf0\xd9\xdb\x49\xc7\x02\xb7\x30\xbd\x99\x58\xf2\x47\xa9\x2b\x8c\xc7\xb0\xbb\x84\x2b\xbe\x0e\xf5\x70\xfb\x14\x02\xac\x43\x87\x97\x12\x55\xc0\xd4\xcf\xe7\xba\xbb\xf5\xa5\x6e\xe1\xa4\xfb\xe2\xc1\x98\x67\x13\x6b\x7f\x07\xb5\x0f\xdf\xbe\x01\x1c\x24\x42\x65\xa1\xf6\xba\x4b\x7b\xbb\x36\x76\x90\x66\xeb\x9c\xff\xab\x54\xf9\x26\x44\x49\xe6\xb6\xe4\xea\xee\xd6\xcf\x78\xca\xbe\xd7\xc3\x5a\x28\x6f\x1a\x45\xd8\xa5\xac\xf2\x89\xb3\xf2\xd6\x7e\x2f\x2f\x7a\xb3\x6d\x4a\xc8\x8f\xe5\x35\x7d\x90\xc3\x98\xee\x7d\x1f\x8e\x6c\x81\xdc\x21\xfd\x12\x24\x7c\x38\x7d\x9b\xab\x7d\xac\x59\x62\x92\x7b\xb6\x53\x7a\x36\x5c\xe6\x27\x9e\x25\x26\x41\x66\x02\xeb\xbd\xf7\x07\x03\xf1\x54\x94\x36\x8d\xc2\xfd\xd8\x84\x3e\x68\x51\x0a\xba\x36\x7a\x03\x7e\xd0\xd0\xfc\xca\xaa\x46\x33\x8f\x7d\x5a\x06\x96\x33\xe1\xb0\x44\x5e\xb8\x99\x17\x02\x3f\x84\xe9\xe1\x78\xe8\x2b\xc6\x0e\x21\x00\xd8\xe0\x30\x43\x5e\x78\x87\x8e\x83\x13\x42\xc2\x08\x89\xf8\x1f\x83\x54\x71\xf8\x20\x1d\xec\x8f\x41\x8a\xc3\xd8\x20\xcf\xe3\x7e\x0c\x12\x7f\x25\xb8\x20\xc8\x13\x89\xfa\x99\x41\xf4\x08\xdc\x4c\x5d\x87\x74\xfe\xbf\xd7\xa2\x5a\x33\xfd\x28\xaa\xc0\x43\x4d\x00\xb7\x03\xf0\x46\xb7\xb3\x7b\xbf\x62\x26\x55\x3e\xe0\xc2\xc1\xf2\x45\xf0\x46\xdd\x7c\x71\x82\xc0\x90\x03\xaa\x9b\x0f\xfb\xf2\x85\x98\x65\xed\x3f\x35\xae\xd1\xe0\xf9\x08\xf7\xc1\x1d\x2c\xe3\x71\x05\xba\x7f\x81\x00\xc0\xd5\x87\xeb\x61\x85\x28\x25\x44\x7b\xb5\x31\xd9\xee\xab\xfb\x5d\x16\x31\x0e\xf5\x4e\x01\x95\x09\xfe\xd5\x0b\x1f\x19\xb9\x00\x7d\x9d\xab\xd6\xe3\x87\x2c\xec\x80\x78\x4a\x60\x3e\x0f\xc2\xb7\x2d\xf1\x94\x8f\x1d\x8d\x4d\x8b\xf7\x3d\xb4\xf1\x3e\xbf\x92\xbd\x78\x1f\x61\xf1\x58\x3f\xda\xf7\xca\x42\x5e\xfa\xe8\x21\x2f\x0e\x69\x46\x7a\x1e\x77\x73\x67\xe0\xeb\x56\x61\x03\xc4\x1f\xb4\xbd\x55\x17\x9d\x48\x19\xbb\xd6\xc2\x7c\xd0\x16\xfe\x72\x92\xe5\xf4\x13\x4f\x58\xcc\x10\x79\x90\x1e\x2c\xb5\xaa\x38\xf4\xa7\xf4\xef\x45\x1f\x6e\x3f\x76\xf8\xd1\x6f\x15\xd3\x55\x5c\x8f\xc6\x99\x6e\x08\xb0\xf9\xac\xb1\xf7\x94\x56\x93\x00\xe6\xf3\xac\xc7\x1e\x1b\x8f\xaa\x7a\x3b\xb2\x3d\xb5\xe6\xa5\xfe\x85\x48\xb2\xe0\xcb\xf2\xcf\x4b\xef\xd2\x85\xea\x96\xbc\xae\x7c\xcb\x41\x63\x2b\x6e\xc5\x42\x66\x6c\x25\x2a\x34\xae\x26\x60\x41\xe1\xa6\x40\x6a\xe5\x91\x56\x48\x88\xdc\x3a\x7c\xf9\xc2\xc4\xdd\x5c\xc4\xaf\xe2\x66\xbf\x7c\x00\x24\xc8\xe7\x1f\xa1\x89\xee\xeb\x52\x8d\x3b\x13\xf3\x12\x72\xc5\x4b\x77\x7f\xff\x77\x93\x78\xf4\x7f\x58\xc9\x25\xa6\x19\xcc\x15\x33\x52\x2d\x0a\xd1\x7b\x36\xf8\x58\xba\xaf\x71\x6f\xa0\x45\xec\xbd\xc2\x2a\x02\xfe\xb1\x9e\x6f\x69\x2c\x17\xec\x69\xa9\x8d\x97\xa9\xb8\x4c\x64\x69\xd8\xd9\x83\x58\x9f\x5d\x6c\xf1\x81\xb3\x5b\x75\x76\xd1\x38\xe4\x48\xec\xa6\xd1\x16\xc0\xcb\x7b\x06\xcf\x9e\x1d\xa2\x04\x1d\x55\xcb\xf5\x26\x3a\xaa\xc9\xec\x06\x7e\x6c\x07\x2e\xf8\xbe\x43\x65\x0b\x66\x34\x2b\xb8\x1c\x08\x13\x1f\xcf\xaf\x90\xb9\x29\xec\x8f\x5d\xa0\x2e\x85\xa7\xf7\x5e\xe7\xf8\x15\x69\x1f\x69\xca\xec\x9e\x40\x49\x0a\xee\xb5\xe0\x50\xe9\xb8\xff\xf6\xdb\x01\xdd\xd5\x6b\x6b\xc5\xbe\x6f\xfa\x10\x3a\x4a\xce\x5c\x93\x22\x67\x4f\x4b\xa1\x06\x01\xb4\xa4\xca\x8a\x3a\xf7\xc9\xc8\x40\x16\x0c\xc1\x90\x4e\x0c\xd7\x7c\x26\x6c\x13\xe7\xd8\xb7\x63\x84\x25\x24\x1d\xaa\x9f\x9b\x47\xa2\xc2\x19\xac\xa1\xd6\xcd\x17\xc2\x0c\x7b\x3f\xf4\xae\x39\x17\x9e\x20\x9b\xf1\xec\xa1\x69\x44\x3d\x78\x1e\x11\x5f\x37\x70\xb7\xf6\x89\xa9\x49\x13\x49\xdd\xf1\x8f\x7b\xe9\xae\xb4\x5a\xe8\x9d\x5c\xbf\x7f\x33\xdf\xc3\xef\xd8\x9b\x4a\xd7\x56\x54\x6f\xdb\x3e\xe3\xc0\x24\xdd\x3f\xe6\xb3\x9d\xb6\xba\xbb\x65\xd3\xf8\x83\x4c\xaf\x9c\x49\x5e\xf3\xe2\x32\xd3\x95\xb8\x34\x4b\x5e\xe5\x22\x6f\x5a\x3d\x83\x99\x3b\xf1\xef\xd8\x69\x98\x0f\x99\x26\xde\xfa\xdf\x1f\xd7\xdb\x40\x34\x6e\x1f\x08\x9a\xa5\x0e\xd8\x8d\x6d\x5f\xf4\xd0\xf9\x76\xa8\x57\x58\xcf\xf5\x00\x28\x7a\x1e\xb4\x91\x5b\x3e\xe3\x46\xb0\x37\x72\x2a\xc2\x5a\x4d\x33\x35\x7f\x3b\xed\x27\x18\x3f\x4b\x37\xe4\x1c\x15\xa2\x57\x88\xc7\xb8\xd9\xf5\xc6\xd6\xf9\x32\x04\x16\xb9\xe3\x61\x4c\xa1\x1f\x2a\xaa\xfd\x64\x6e\x0a\x6e\xac\xcc\xfe\x52\xe8\xec\xc1\xb1\x72\x82\x14\xb8\xfa\xe5\x7e\xeb\xe9\x9e\x01\xa5\xd8\xd5\x2f\xf7\xec\x5a\x9a\x87\x01\x17\x61\x8c\x7c\x05\x28\xdb\x4e\xf6\xb4\xb3\xc2\x3c\x50\xd8\xf9\xb9\x81\xb6\x03\x6c\xc5\xb3\xa5\x54\x03\x61\x4b\x2f\xac\x15\x13\x5f\x4a\x6d\xda\x00\xe5\x46\xb6\x3c\x49\xe2\x34\x91\xf2\x27\x23\xfc\x67\xcf\xdc\x67\x43\x04\xf4\x18\x9e\xec\xb9\xf9\x8c\x80\xd5\xe8\x6f\x41\x47\x22\x44\x51\xd3\xf1\xdf\xc3\x7a\xae\x75\x3d\xa8\xa6\xc4\x5e\x89\xe0\xf5\x9c\xb2\xcf\xb2\xfc\x8e\xdd\x74\xd0\xd4\x3c\xfa\x42\xef\x55\x18\x7d\xaa\x8d\x6a\x07\x81\x06\xfb\xe7\x55\x2b\x68\xf8\x19\x7a\xea\xde\x7c\xe1\xab\xb2\xc0\x28\xb5\x67\xe2\x8b\xfd\xc3\xd9\x05\x3b\xfb\x32\x37\xee\xff\x29\x3b\x37\x67\x53\x76\xbb\x6a\xfc\x9b\x52\xcd\x45\x15\x42\xd2\x33\x11\x1e\x18\x9e\xec\x26\x0a\xd6\xf1\x8f\xc8\xe0\x1c\xa0\xf3\x07\x64\xaf\xe4\x1a\x82\xc8\x15\xc4\x97\x99\xa8\x2a\xed\x11\x53\x37\xb6\x61\x5e\x21\x1a\x22\x3a\x01\x50\xe9\x95\xec\x54\x00\xc0\xf5\x39\x5a\xd1\x06\xa4\xb3\xc2\x71\x24\x9d\x5c\x28\x9e\x88\x8f\x6e\x80\x97\xc6\x73\x0b\xe7\x12\x63\x0b\x84\x73\x7b\x3b\x8f\x3e\xf6\x8b\x90\x66\x13\x40\x2d\x4d\xf3\x23\x77\x12\x91\x60\xb3\xbe\x1d\x7f\x73\x36\xd9\xf7\x3a\x3a\x75\xd9\x65\x2e\x1e\x2f\x4d\xce\xbf\xf5\x2d\x91\x43\xe6\xd1\xf0\x4c\x7b\xdf\xcc\x0d\x3b\xfb\xf6\x6c\xca\xee\xe5\x4a\x16\xbc\x2a\xd6\x17\xdd\x35\x68\x7e\x87\x0a\x17\xc4\x09\x81\xb9\xf2\xcd\x19\x7b\xa3\x2b\x98\x59\xc6\x15\x2b\x04\x7f\x14\x31\xc5\x02\x90\x06\x86\xe3\x05\xab\xd2\xae\xdf\x0e\x22\x11\x53\x3a\x24\xe0\x73\x3a\x2b\xc1\xf3\x8f\xaa\x18\xf4\x56\x6e\xd4\x5b\x85\xec\xaf\x33\x5b\xd5\xe2\xcc\xed\xf7\x5c\x3b\x99\x02\xfd\x89\x42\xc7\xfb\x4f\x81\x32\xd6\xb3\xea\xb8\x49\xd0\x4b\xdf\xbb\xc3\x03\xc7\xc8\xbf\x60\xeb\xb0\x21\xfc\xd2\xcd\x61\x3c\x03\xf4\x47\x7a\xfb\xfc\x43\x25\x11\x23\x81\x20\xfa\xb7\xdc\x5e\xd3\xf6\xe1\x27\x25\xff\x5e\x0b\x76\x7b\xdd\xb4\x93\x69\x14\x72\x96\x4b\xf3\x80\xcf\xfb\x90\x5e\x7d\x78\x73\xb5\xe2\xff\xd0\x8a\xdd\xfc\xe5\x3e\x4c\xe9\xed\x57\x5c\xb8\x23\xe5\x10\xc4\xb5\x3d\xd4\x84\xe7\xff\xa8\x2b\xe1\x14\x2c\x7c\xa4\x2a\x3e\xb1\xa9\xa9\xb9\xbf\xb3\x6b\x6e\x39\x28\x6c\x6c\x38\x00\x1a\x1a\xfe\x80\x4c\x77\xb7\x6c\x06\x99\x34\xb1\x4e\x31\x6a\x5b\x47\x50\x8c\x32\x90\x58\x8b\x21\x83\x7c\xeb\x53\xcf\xa1\xc3\xd4\x3b\xff\x34\x24\x59\x7e\xc7\x3e\x68\x25\x2e\x80\x11\x30\xc7\x09\xfc\x7f\x0e\x1e\xc5\x5f\x2a\x69\xc5\x20\x3b\x44\x8b\x4c\x77\x0f\xc8\x15\xa5\x4e\x60\x76\xfd\x2e\x90\x32\x06\x37\x2a\x08\xcf\x59\xa1\x67\xd1\xa7\x73\xcc\x99\xfe\xf4\xe9\x96\x3c\xd1\x9f\x3e\xdd\xbe\xdc\x24\x13\x14\xe7\x4d\xbd\xb9\xd5\x21\x62\x2b\x3c\xde\xd1\xb4\x50\xbe\x56\x82\xb6\x3b\x8d\x7a\xec\xb0\xbe\x4b\xd3\x73\x31\x45\xf6\x5d\x3d\xf7\x58\x3b\x40\x4e\x41\x3b\xbf\xf9\x52\x8a\xcc\xb6\x65\x93\xf7\x4b\xee\x98\x26\x5b\xd5\x85\x85\x3a\x57\x77\x50\x86\x65\xaa\x34\x0f\xc6\x49\x98\x26\xe1\x3b\xd4\x24\x33\x76\x2d\x7c\xf1\x68\xfe\x5d\x74\x42\xa3\x29\xee\x26\xf8\x1e\x52\x14\xf2\xef\x3c\xcf\x65\x3e\x63\xc1\xe7\xc3\xe2\xa8\xbe\x01\x1f\xb0\x54\xcd\xa3\xfc\x91\xcb\x82\xcf\x64\x21\xed\xda\xe9\x28\x6f\xa7\xf8\x0e\xf8\x56\x33\x03\x4b\x76\x34\xa6\x94\xa4\x76\x75\x2b\xf0\x40\xa9\x61\x6f\x1c\x9d\xcb\x27\xc7\x30\xdf\x4e\xf1\x1a\x17\x80\xe8\x80\x5b\xc3\xab\x6d\x5d\x75\x2d\x82\x30\x6d\x6a\x63\xb8\xe3\x3b\xac\xea\xe0\x44\x76\x64\xda\x83\x3f\xfa\xe9\xd3\xed\x51\xc4\xba\xe3\x51\x34\xb1\xee\x9e\xd8\x29\xd6\xe1\x1f\x02\x96\xc0\xfe\xa8\x94\x4f\x4d\x7b\x29\xc9\xfe\xcf\x7b\xe6\xa0\x55\x4e\x25\xe8\xc0\x12\xdd\x74\x58\x4f\x62\x23\x2f\x05\x76\x7c\xf0\xdb\x63\xdd\x4c\x44\x96\x00\xcd\xc2\xed\xf5\x5f\x07\x23\xa7\xf8\x66\x40\x8e\x41\x91\x3f\x10\x24\x01\x1b\xb8\x69\x84\x79\xe0\x6e\x77\xbb\x1b\xfb\x7f\x16\x3f\xe9\xd0\x1b\x9e\x89\x72\x39\xc7\x27\xf7\xbe\x13\xe5\xf2\xfb\xfb\x7e\x76\x8a\xfb\x1b\xfb\xfe\x7e\xfb\xce\xee\x5d\x37\x38\x2c\xf0\x19\xc6\x97\x34\x9f\x1b\xe8\x17\x6b\xe5\xde\x8f\x42\xa7\x9d\x69\x25\xad\xae\x68\xe9\x66\x90\x8d\x09\x7b\xc4\xde\x87\xe7\x7d\x4c\x2a\xd3\x45\x21\x7c\xb7\x5d\x44\xba\x2c\x2c\x48\x9c\xc0\x2e\x13\x51\x04\x5f\xce\xf4\xe1\xdf\xc1\x48\x0c\xe6\xe0\xa5\xdf\x8c\xcb\x4f\x37\x57\xd7\xef\x6f\xa6\xab\xfc\x77\x4b\xfd\x34\xb1\x7a\x52\x1b\x31\x91\x76\x48\xc2\x22\x33\x24\x08\xf1\x78\x6c\x0e\x41\xc9\xed\x92\xb6\xd0\x6d\xf7\xdd\x9f\x42\x68\x02\x5c\x82\xee\x04\x89\x9c\x55\x5a\xdb\x0b\x56\x71\xbb\xc4\xf4\x55\x5e\xf2\x58\xf7\x52\x14\x7e\xed\x6d\x25\xc4\x45\xd7\xd1\x71\x3c\x68\x98\x34\xa7\x50\xfb\xb9\x03\x42\x63\xf0\x6b\x1b\xb9\x70\x0a\xa1\xb1\x33\x08\x7e\x9a\xc3\x4a\x95\x4f\x43\x4a\x08\xdb\xb3\xe6\xf7\x0d\x85\x18\xd1\x75\x07\xd6\xed\x00\x26\x3d\x07\x12\x9c\xe6\xba\x02\xf4\xb3\xfe\xa9\x12\x36\x83\x65\xb8\x84\xb6\x32\x41\x0a\xbe\xc7\xf8\xd8\x5f\x6e\x89\x71\xcd\xf2\x2a\x61\x3f\x89\xc1\x3e\xd1\xfb\x17\xf8\x93\x98\xfb\xc4\x02\x42\x94\xdc\x0d\x5e\xdb\xa5\x50\xd6\x59\x49\x8e\xc1\x86\x65\xdc\xb9\xe2\xc8\x94\xb5\x17\x3b\xc5\x94\xcc\x57\x2c\xaa\xf0\xf3\x19\x2e\x61\x65\x2d\xd9\xed\xa8\x1f\x9d\xca\x2d\x9e\xa0\x37\xb1\x54\x8b\xc9\x93\xb4\xcb\x89\xd7\x0c\xcc\x25\x80\x55\x5f\xfe\x0e\xfe\x1f\x62\x7e\x31\x40\x74\x95\xe7\xa1\xd0\xac\x36\x62\x5e\x87\xf0\xb7\x99\x32\x5e\xca\x9f\x45\x65\xa4\x56\x17\x60\x90\xe3\x52\x4b\x6b\x99\xff\x4f\x7c\xcb\x4d\x82\xf8\x42\x64\xcb\x61\x20\xf5\xf7\xc8\xaf\x2a\xb2\x95\x8a\xe7\xda\x78\x04\x42\xb7\x9a\xc3\x1f\xde\x39\xda\x3c\x5f\x49\xf5\xd2\xfc\xf7\x48\x4a\x6b\xd4\x75\x0e\x56\x46\xa5\xca\xf7\xef\x44\x7f\x17\xde\xc1\xef\xfb\xda\xa8\xa7\xd1\x56\x00\xfb\x08\xfe\xde\xd5\xe0\xd1\xaa\x14\xb9\x53\x5f\x43\x9c\xbf\x1f\xe5\xdf\x79\xe7\x36\xb7\x66\xb5\x36\x7f\x2f\x26\x7e\x06\x93\x32\x6f\xf7\xe6\xb5\x84\xe5\x5f\xd6\xbd\xf8\x2b\x08\xa6\x1f\x65\x07\xd9\xa8\x40\x36\xe3\xf4\x6b\x8c\xd7\x19\x0f\xd0\x68\x00\x9d\xd6\xc4\xfa\x09\x50\x48\x3c\xef\x8a\xfe\x0d\x4c\x62\x79\xd3\xd7\xc0\xf8\x04\x2c\x5f\x81\xa5\x1c\x15\xab\xd9\xc7\x52\xa8\x7b\xcb\xb3\x87\xa3\x36\xda\x1d\xb5\x8c\xbd\xe3\x6b\x6a\x19\x69\x71\xec\x98\xb1\x9b\x37\x67\x48\x02\xd6\x75\xe8\x3e\x8b\xcc\x21\x91\x2a\x08\xc6\x57\xc1\x05\x5f\x36\x36\xed\xf3\x16\xdf\xf3\xbd\xa0\x11\x3b\x92\x3c\xdf\xf3\x72\x43\xb5\x68\xfe\x1c\x9c\x57\xba\x1e\xc8\xe7\x2f\x75\x59\x17\x1e\x5e\x4d\x9a\xe1\xbd\xc2\x5e\xf4\xa0\x36\xd2\x03\xd1\x2d\x83\x5b\xe9\x5c\xf8\x66\xca\x01\xcb\x57\xab\x88\x48\x32\x78\x98\x7c\xbf\xe7\xb6\x7f\x7b\x57\x9b\xf0\xb8\x65\x33\x61\x9f\x84\x50\xec\x1b\xd0\xad\xbe\xf9\x1f\xff\xe3\x7f\x0c\x4b\x8e\xae\x60\xfb\xe6\x8f\x7f\xf8\xc3\x94\x5d\xcb\x0a\xaa\xfa\xa4\x30\xb1\xef\x44\x63\xbc\x73\x84\x91\xad\xb4\x65\x1c\xb0\xf9\xa2\xb2\xe2\xbb\x56\x3b\xc9\x16\x32\xce\x7d\x0b\x1c\x8f\xb8\xe1\xb6\xb7\x90\x08\x50\x57\xe8\xc7\xe3\x99\x52\x68\x9d\x11\x90\x19\x3d\x0e\x60\xcc\x8e\x83\x35\xbe\x60\x85\x7c\x18\x9e\x6a\xe8\x8f\xde\x56\x77\x54\xc2\x38\xc3\x20\xe3\x0a\x5a\x80\xc3\xcb\xda\x3d\x33\xc2\x7e\xa5\xa4\x28\x94\x93\x71\x13\x14\xb9\xd7\x71\x04\x9a\x60\x3d\x88\xf5\xc4\x1f\x95\x92\xcb\x0a\xd3\x34\xd3\x2d\x0a\x64\x85\xf8\x2c\xeb\xbe\xb0\xca\x44\xde\xb9\xb4\xd8\x9e\xe3\x65\xa5\xff\xdb\x1f\x0e\xa9\x36\x80\x83\x4c\x50\x8c\x43\xf5\x8e\xf2\xd5\x00\xa8\x49\xc6\xea\xd9\xd0\xe0\x22\xda\x86\xa1\x3a\x7d\x0b\x22\x7a\x90\x66\x21\x8d\x9b\xe2\x83\x58\xb7\x1d\xba\x76\xcc\xbc\x45\x92\x71\xf7\xc3\x0c\x8b\x43\x37\xc7\x5a\x6d\x51\x0f\xe8\x44\x81\xed\xc1\x84\x79\xa8\xbe\x1d\x24\xd9\xce\xc1\x63\x4c\x06\x4c\x9c\x40\x2b\xa6\x5e\x34\x1b\x85\xfb\xfe\x88\x01\x22\x6c\x1d\xb6\x16\x12\x51\xdd\xdc\x85\x31\x01\x41\x7e\xc5\xab\x07\x67\xbd\x05\xfe\x36\xcc\x6d\xee\xdc\x22\x35\xa5\x90\xbe\xb4\xf6\xd1\x47\x9e\x56\x7c\x0d\xd3\x0e\x9a\x1e\xcc\xf9\x7c\x3a\x78\xdf\xbc\x1b\x9c\xe9\xca\xf7\x68\xf6\x5c\xc2\x3d\x77\x8a\x7a\xf2\xf7\xbc\x34\xbe\xea\xd2\x69\xe9\x50\x0b\xad\x01\xd2\xd5\x2e\x9b\x16\x3d\x08\x35\x27\xb4\xa6\xc7\xdc\x94\x93\x57\x78\x7f\x0e\x77\xc7\xd7\x4f\xb8\xe3\x7d\x92\x6a\xe2\x15\x42\x68\xee\x98\xdd\x80\xe8\xdc\x8b\x91\xd8\x1f\x8e\xad\x5c\x34\x27\x6f\x8f\xc4\xc4\xf6\x81\x65\x3b\x80\xa7\xe2\xad\xe9\x68\x0a\x68\xb6\xe8\x07\x94\x74\x3c\x2f\x24\x77\x08\x41\x24\xe1\x01\x51\xd9\x13\x85\x68\x92\xc7\x10\x98\x7e\x50\xc4\x66\x78\x3b\x11\x25\x16\x13\x2d\xf3\x63\xeb\x7e\x34\x7c\xca\xb3\x9a\x79\xbb\x80\xc8\xf6\x91\x0c\x6a\x5c\x6d\x73\xd5\x7c\x5b\x93\xc0\xf3\xb9\x62\x7c\x66\x74\x51\x5b\xff\x02\x6c\x6d\xf8\xfb\x1d\x0c\x13\x26\x18\xeb\x62\x81\x0b\xc6\x9f\x21\x89\x76\x98\x28\x88\x37\xcf\xe9\x30\xfc\xd4\x0f\x12\x5b\x38\x7e\x49\xb7\xfb\x7e\x64\x28\xf6\xa8\xe5\xdc\x64\x78\xb3\x57\x67\xfb\x53\xed\x7e\x94\x4d\x8f\x3e\x0d\x51\x83\xa0\xa5\x8a\x84\x9c\xff\xa7\xa5\x08\xc8\x7b\x1d\x2d\xc7\x69\x04\x8e\x05\x39\x15\x6b\xf0\xe3\xa3\x58\xc0\x61\x1e\x61\x1d\x62\x38\x33\xd9\x48\xbc\x81\x7c\x7f\xcb\xde\xbc\x6b\x9a\x36\xc5\x24\x9e\x5b\x65\x45\x35\xe7\x99\x78\xdb\x31\x9c\xf7\x3b\xea\x22\x6c\x6e\xa8\xb8\x5b\x72\x95\x17\xde\x5a\xe3\x8a\x89\x2f\x56\x54\x8a\x17\xf0\xbe\xbc\x92\x8f\xa2\x62\x6f\xae\x8a\x72\xb9\x5f\xb7\x09\xc5\xc3\x7b\x9d\xa1\x68\x53\x1b\xde\x4a\xcb\x0b\xf3\x13\xdd\xee\xb2\xd3\xfd\x0c\x14\x2c\x8f\x5f\x0d\xd3\xf5\x1e\x4c\xdd\xc1\x02\x49\x07\xac\x71\xad\xeb\x2a\x84\x8e\x02\x9e\xe5\x20\xd1\x4c\x57\xce\xac\xf6\x13\x03\x78\xe6\x85\xb3\x01\x2a\x5f\x93\xed\xcb\xbd\xa1\xba\xf6\x68\x59\xb9\x47\xcd\x8b\xee\x64\x2d\x87\x80\xc1\x70\x7c\x21\x06\x14\xe6\xc1\x1c\x81\xea\xdc\xa0\x28\x41\x48\x39\x28\x61\xd2\xb0\x92\x1b\x83\x70\x81\x04\xa3\x8b\x1b\xa3\x33\x09\x30\xae\x9d\xbd\xf5\xc6\x0f\xa8\x5b\xb9\xb0\xa2\x5a\x0d\x55\x89\xb2\xa0\xc3\xc4\x70\x60\xb7\xc4\x51\x03\x5a\xd1\x60\xd0\x1b\x8f\x7f\xa9\x73\x71\x57\xcf\x0a\x69\x96\xf7\x49\x5e\xf2\x0f\x3b\x08\xf8\x2c\xa9\x6e\xe4\x1f\xf5\xbd\xcf\x79\xd6\x99\x11\xca\x48\x50\x74\x9c\x08\x72\x0a\x19\xa6\x00\xcd\x59\x0e\xdc\x34\x6d\xc9\xbb\xb7\x4d\x43\xfd\x61\x21\x42\xa7\x03\xf7\x4f\x9d\xef\xf8\x19\xe7\x44\xf5\xbd\x70\x72\xf1\x93\x2a\xbb\xcf\xb1\x8c\x17\x85\xd9\xec\x88\x16\x05\x09\xce\x10\x07\xa3\x33\x62\xf2\x30\xe9\x0e\x6a\x5c\x1d\xb9\x81\xe4\x87\x82\x95\xdd\xb5\xb0\xc6\x43\xfc\x42\xbe\x94\x56\x71\xf5\xa1\x71\x50\xf8\x6f\x84\x9e\x14\x76\xd8\x23\x85\xf8\xcb\x32\x74\x34\xc7\xf0\xc5\x6f\x22\x7c\x91\x14\xb8\xbc\x0f\x56\xa9\x67\x0f\x3c\x9f\x40\xed\xc1\x06\x92\x00\x06\xf8\xa8\x31\x69\xa7\x07\x46\x40\xa9\x75\x87\x57\xd6\x56\x72\x56\xdb\xe1\xd3\xfb\xb2\xf0\x48\x3f\x6f\xcc\x0e\x54\x29\x61\x02\xc7\x9b\xc4\xbe\x0c\x04\xd7\x4e\xb0\xcc\x9b\x7b\xbd\xcd\x47\x1b\xe5\x63\x90\x2a\xe8\x25\xfe\xa1\x73\xc3\x72\x9d\xd5\x0d\x9e\x27\x28\x2a\x6d\x12\x01\x0e\x87\x0d\x79\x4a\x91\x15\x14\x30\xaf\x43\xf5\xe5\x5c\x3f\xa9\x27\x5e\xe5\x57\x77\x7b\xcb\xd2\xfa\xaa\x61\xfb\x4c\x37\xb4\x14\x49\x01\xd6\x37\x9f\xe9\xda\x0e\x43\xac\x43\xbf\xbf\x26\x0a\x35\x46\x9a\xc6\x48\xd3\x18\x69\x72\x4f\xf4\x21\x62\x7b\x37\x0b\x19\x2b\x77\x2b\x7a\x02\x97\x7d\xe7\xee\x7b\xde\xbd\x59\x25\x45\x51\x75\x41\xd9\xf5\xb7\xa8\x3d\x05\x1d\x05\x3a\xd4\x46\x21\x21\xe7\x68\xee\x7d\xa0\x89\xb0\x1a\x76\xac\x41\xa7\xc0\xe2\x1e\x20\x5b\x7d\x9c\xad\x0d\xe8\x21\x9d\x83\xa5\xce\xbf\xf3\x50\x76\x5c\x29\xed\xe5\x8a\xb9\xf0\xc8\xb0\xe6\x22\x98\xb6\x2a\x87\xff\x30\x25\x47\x14\xf9\xfb\xe1\x84\x5f\x23\x9a\x90\x0e\x63\xda\xe2\x31\xdf\xc4\x22\xe8\x7e\xd8\x27\x36\x65\xbf\x7f\x3a\xaa\xbc\x26\x5b\x8a\x15\x87\xff\xfc\xde\xad\xe5\x1d\xc6\xf7\xd8\x0e\x69\x98\x53\x9d\xac\xf0\xf0\x27\xa2\x5a\x19\xa6\xe7\x17\x3d\xa8\xef\xb3\xc7\x6f\xcf\xf0\xbd\xad\xc9\xf0\x9b\xe1\x50\xdd\xa1\x3d\xe3\x6c\xab\xb5\x56\xcf\x21\x1e\x70\xb8\x3c\x2c\x30\x26\xba\xdc\x99\x7b\x2f\x96\x0a\x6c\xc3\xaf\xf6\x09\x3f\x1f\xef\x7e\x66\xa0\xc0\xcc\x49\xbb\x4c\xf0\x32\xb3\x31\x40\x36\x06\xc8\x06\xc6\xab\x0d\x90\x75\x84\x0b\x70\x03\x69\xe2\x87\xfb\xa0\x19\x56\xb6\xb8\x67\xbb\x5e\xdb\x10\x5f\xeb\xf4\x6c\x0a\x6a\x28\x3e\x98\xe5\xce\x71\x8c\xac\xe9\xaa\x9f\x59\x70\x3e\x9d\x9e\x9f\xfb\x78\x1b\x90\xc5\x93\xac\xed\x7c\xf2\xef\x4c\xa8\x4c\xe7\xfe\x28\xba\xb9\x56\xc6\x82\x7a\xd2\xfa\x43\xe8\x5f\xbf\x0a\x5f\xd7\xcb\x64\x80\x79\xe2\x8e\x08\x91\x01\x46\x24\x9e\xef\x0f\x50\x2c\x5a\x75\xa2\x41\xf1\x0b\x0b\xd0\x74\x6e\xc0\x4a\x16\xd0\x2b\xda\x36\x1a\xbe\xb1\x0b\x70\x9d\xd8\x43\x84\xbd\xf1\x7f\x9c\x66\x65\x8d\x05\x4e\x0f\x4f\xac\xc4\x4a\x57\xeb\x8b\x86\x94\x23\xd1\xa3\x1d\x7e\xf1\x96\xa0\xb1\xb4\x5d\xdf\x4e\xaf\xbb\x34\xab\x89\xa9\xa7\x6e\xc7\x46\xdd\x46\x13\x39\x02\x7f\x5f\x8b\xd6\x8b\x71\x05\xb5\x23\x54\xc2\x5c\x74\x10\x38\x75\xc5\x84\x7a\x64\x8f\xbc\xda\xdb\xd4\xa7\x3f\x12\xd4\x95\x5c\x3e\x4a\x83\x45\xf8\x67\xcf\x7b\xc5\x00\xe2\xb9\xb6\x65\x6d\x03\x5f\xc5\xd4\x17\x77\x66\xbe\x14\x0d\xb2\x64\x73\x62\x37\x34\xb7\x6f\x87\x0b\x25\x1a\x72\xf4\x85\x88\x6f\x4d\x3d\x0a\x2d\xcf\x6e\xd1\x37\xa3\xe2\x76\xc2\x1d\xa4\x6a\x5c\x68\xb0\x30\x46\x55\xb8\x28\xa9\x07\x5f\x27\xa9\x00\x45\x10\x02\x17\xd7\x92\x50\xbc\x75\x13\x9e\xe8\xe7\x58\x5b\xb1\x2a\x75\xc5\xab\x35\xcb\x83\x4f\x66\x7f\xbe\xc3\x36\x8c\x40\x07\x47\xe0\x60\x7c\x36\xf8\xaa\x5c\x56\xc7\xa8\xdf\x5a\x89\x5c\xd6\x2b\x9a\x17\xed\x97\x2e\x76\x77\x8c\x95\x7b\x42\x4d\x3f\x66\x9e\xed\x47\xb5\x65\x11\x11\xb8\x59\x50\xaf\x2a\x74\x71\x00\xcf\x36\x9a\x82\x3b\xe5\x16\xe5\x93\x57\x3a\x17\x6e\xc5\x23\x31\x3f\xb7\x8e\x9b\x4e\x85\x90\x16\xf2\x6e\xbe\x09\x84\xde\x3a\x35\xe9\x3d\x48\xc2\x17\xd9\x44\x46\xaa\x97\x96\xff\x10\xd0\xfb\x8a\x88\x34\xaa\x2d\x2f\x3a\xcd\x8c\x0b\x9d\xf1\xa2\xd9\x55\x14\x1e\x3b\x0b\x30\x9b\xb0\x9f\xcd\x05\x8a\x81\x11\xb7\xab\x6e\x6e\x5e\xd7\x00\x47\x58\x61\x7c\xfc\x58\x66\x7c\x36\xe8\xd5\xf2\xb4\xbd\xfe\xd1\xec\xe4\xe7\x4e\xc7\xb8\xda\xb8\x99\x6a\xd5\xff\xcd\x20\xd5\x66\xa2\x4f\xb1\x83\x78\xb7\xc5\x59\xdf\xbc\x03\x24\xff\xb8\xbe\xc3\x71\xce\xc6\x50\x87\x6a\xb6\xe8\xd2\x34\x35\xa8\xbf\x61\x96\x41\x81\xd3\x73\xc6\x11\x2d\xe8\x1b\x05\x07\x90\x6e\xb9\x47\x6a\xde\xb8\x2f\x4a\x16\xdd\x0b\x83\xb8\x29\x01\xbb\xb8\xd9\x98\x5a\x85\x0c\x9f\xad\xd3\xbd\xfb\x70\xd7\x46\x54\x93\x45\x2d\xf3\x93\x1d\x6b\x14\x97\x9f\x67\x68\xfe\xfe\xfd\xbb\x3e\x63\xff\x5e\xce\x2a\xc1\xde\x2d\xb9\x52\xa2\xe8\x43\x6d\xef\x77\x03\x3f\x07\xc3\xdd\xaf\xcf\xdd\x42\xda\xde\x2f\x35\x8e\x8a\x1e\xf5\xeb\xab\xcc\x7d\x35\xc0\x7f\x38\xb0\x69\x5c\x9c\xa8\x05\xa3\x3e\x3d\xd8\x74\x51\x13\x61\xa6\x5b\xef\xd8\xf7\xef\x98\xe5\xd5\x42\x58\x47\x24\xb4\xdc\xff\x35\x01\x1c\xbf\x96\x52\xe4\xe3\x55\x0b\xfb\xed\xf8\xe5\x97\x0f\x44\xb4\xa8\x5d\x7b\xfa\xa4\xab\x22\x7f\x92\xb9\x4f\xfc\x33\xec\x8d\x23\xfb\xf6\xf5\x42\x37\x3d\x3d\xc9\xfc\x90\xcf\x8e\x8d\xcd\xdd\x67\x33\xf8\xee\x50\x9e\x2a\xc5\x5e\x3c\x08\x3f\xde\xc0\xeb\xdf\xb2\x1b\x09\xee\x48\xf8\x5f\xde\x41\xb6\x9a\x49\xc5\x6d\x0c\x72\x34\x1b\x34\x48\xd1\x89\x01\x77\xaf\xa2\xfb\xd8\x08\x7b\xc1\x66\xb5\x77\x67\xcd\xb4\x5d\x32\x23\x57\x75\x61\xb9\x12\xba\x36\xc5\x7a\xf0\x18\x7d\xad\xad\xc1\xc9\xe3\x42\x7c\xf1\x97\x02\x2f\x97\x9b\x47\xfa\xf2\x79\x21\x94\xa8\x64\x16\x37\x14\x65\xf0\xc6\xac\xdd\xb6\xdf\x7b\x7e\xd9\x08\xeb\x1a\x98\x2f\x64\xf1\x8a\x8c\xcd\xb8\x11\x39\x2b\x8b\x7a\x21\xf7\x46\x52\xbe\x4a\x5e\x6e\x9b\x25\x88\xb1\x7b\x1a\x05\x1c\x57\x3d\x35\xc2\x07\x6f\x69\x11\x9f\x77\xe7\xba\xe6\xa2\x14\xca\x31\x00\xd5\x39\xa5\xc3\x36\x00\x2c\xc7\xd1\x76\x21\xc4\x6a\x5e\x57\xb2\x57\x87\xe7\xde\x7c\xb1\x15\x77\x0c\x72\xe5\x58\x5d\xcc\x0a\x91\x73\xc6\xd5\x30\x33\x3b\x6d\xb2\xdf\x6f\x50\x35\xf8\xca\xd0\x68\xb4\x04\x69\x4c\xda\x75\x37\x41\xda\x73\xe3\x70\x81\x62\x02\xf3\x76\x22\x32\x71\x96\xd2\xb0\x8e\x7e\x1f\xda\x99\xee\x4e\x48\x1e\xa4\x3c\x94\xb0\x6c\xb6\xd3\x15\x87\x57\xa0\xff\xd5\x23\xf8\xca\xae\xf1\x1b\xcb\x5e\x7e\xc9\xbc\xd0\x79\xa1\xb3\x07\x02\x8a\xd9\xf7\xfe\xf7\x1b\xde\x92\xf0\x47\x0a\x8c\xd9\x1e\xef\x48\xb8\xdb\x1d\x01\x0b\xc9\x42\xfe\x25\x7b\x89\xba\xab\x5a\x69\x77\xdf\x00\xb4\x9b\xcd\x04\x74\x42\xac\xd5\x00\x02\x12\x5a\x8f\xe3\x96\x9b\x04\xf8\xe9\xcd\x0e\x14\x46\x58\x9f\x01\x0d\x60\xb2\x2b\x61\x39\x0a\x10\x7f\xf2\xe7\xa0\x08\xaa\x1e\x25\xa7\xe2\xc5\x2d\x88\x7e\x76\xd1\xb4\xcf\x47\x38\x69\x39\x2c\x76\x25\x32\x44\x9a\x2b\xbe\x09\x86\x9f\xdd\x4f\x3f\x11\x31\x84\xdc\x03\x1b\x6b\xd5\x36\xdc\xac\x7d\x9f\x9c\xd6\x6a\x1b\xfc\x36\x3d\xef\x1c\xd0\x40\xef\x05\x7d\x90\x8b\x4c\xb4\xbd\x35\x49\x2d\x67\xce\x7f\x78\x77\xd3\x7f\xb4\x7f\xe9\x7e\x78\x77\xc3\xae\xd1\xad\x81\x48\x4d\x02\x1b\xf7\xe4\x5e\x92\x27\x68\x12\xb8\xc8\x44\xdb\xf8\x28\x97\xe6\xe1\xb5\x40\x11\x8e\x1d\x02\x5f\x45\x87\xc0\xad\xf3\x31\x38\x81\xb1\x3d\xe0\xd8\x1e\xf0\x75\xb5\x07\x7c\x51\x1e\xc9\x4e\xe6\x8e\x2f\x73\xb2\x16\x14\xbb\xdc\x75\x9d\x59\x77\xd7\x6d\x74\x4d\x2a\x27\xd4\x86\xcd\xed\x9f\x76\x41\x0b\xc6\x76\x59\x8e\xc2\x8b\x2f\xf1\x89\xf1\x54\x51\xfe\x05\x84\xe1\xbb\xdb\xff\xb0\xed\xfe\xe8\x2e\xe0\x20\xd9\x17\x5c\xe0\x63\x35\x25\xf2\x67\xf7\x60\xd5\x4e\xda\x4f\xa2\xdc\xbb\x42\x1b\x0a\x9d\x7f\x60\xc3\x93\x2d\xad\xfb\x83\x36\xd2\xea\x6a\xcd\xb8\x05\x60\xac\xca\xca\xac\x2e\xf8\x50\x44\xcc\xfb\xb1\xa7\xec\xfa\xe6\xee\xd3\xcd\xbb\xab\xcf\x37\xd7\xdf\xb1\xf8\x16\xd9\x55\xea\xa7\xec\xb3\x6e\x1d\xdf\x7b\xa9\xf2\x36\xa9\xc0\xe7\xd2\xb6\x73\xbc\x08\xec\x9e\xab\x36\x4b\x02\x20\xdd\x06\xfc\x52\xb7\x4a\xda\x36\x8b\xd2\x37\xde\x29\xb4\x0a\x19\x85\x8e\x72\xf0\xbf\x2f\xa4\xbd\xf0\x71\xf1\xe1\x46\x8a\xee\xd1\xfe\x2c\x80\x9f\xf8\x9c\xaa\xe6\x13\xf6\x7a\x4c\xd0\x66\x5f\xcc\x45\xa2\x75\xf4\xf3\x31\xb6\xe6\xe1\x20\xfb\x62\x32\x76\x9c\xe3\xb0\x05\xb3\x8d\xd1\xc6\x9c\x54\x3e\x9f\x9e\x47\x65\xb0\xd8\x28\x14\x18\xa4\xd9\x4e\x2a\x82\xf4\xb9\x87\xfb\x67\x71\xca\xd8\xc7\xd8\x6e\x7d\xd8\x65\x22\x37\xa1\x02\x9b\x60\x9b\x7b\x41\x37\x87\xbc\xff\x96\x61\xc2\x2a\x64\xc9\xcc\xba\x93\x0e\x40\x4b\x0b\xf9\x28\x94\x5f\xd8\xe3\xb1\xe8\x38\x35\xd2\x6e\x7f\x6a\xef\xf0\x4f\x9f\x7e\x3c\xde\x64\xfc\x8d\x25\x4d\xe5\x9d\x5e\xad\xa4\x65\x4b\x6e\x96\x11\x67\xa5\x93\x7b\xd4\x70\x8d\xe3\xcc\x11\xc7\x71\x51\xfb\x8d\xe3\xba\x1e\xee\x85\xd0\x05\xea\xfc\x87\xf8\xc8\x86\x01\xdd\xfc\x39\xf6\x82\x1a\xe4\x37\x60\x67\xd1\x93\x38\x9f\x6b\x8a\xd0\x7c\xcb\x71\xb1\xf7\x85\xca\x3d\x22\x38\xb1\xb9\x64\x7c\xec\x83\xc7\x0f\xf5\xf9\xda\xe1\x8f\x5e\x69\x43\xe1\x00\xe5\xc2\x72\x59\x98\xce\xfa\x5a\x5d\xea\x42\x2f\x76\x27\x47\x12\x16\xe7\x77\xbe\xa2\x65\xc2\x27\x6e\xd5\x8f\x67\x6b\x51\xfb\x41\xc5\x82\x1d\xb7\x40\xed\x57\x36\x36\x06\xd4\xc6\x1c\xaf\xaf\xce\x8b\x2d\xc4\x09\x94\xd3\x66\x75\x06\xd7\x22\x5a\xa9\xe0\x5d\x88\xfd\x2d\x80\xcf\xb7\x48\x1c\xa5\xa8\x56\xd2\x38\xe6\xd5\xd1\x5a\x31\xa6\xec\x96\x56\xfb\x42\x8b\x7e\x2c\x85\xb5\xb9\xd1\xfb\xd5\xda\xfd\x09\xf7\x28\xf6\xea\x38\xdc\x50\x61\xeb\x76\xbb\x68\xb8\x10\x3d\xe6\x5a\x56\x62\x22\xbe\x48\x03\x16\x07\xd4\xa4\x0d\x14\xcb\xb4\xc2\xbd\xdb\x47\x33\x3a\x24\xa3\xfb\xd2\xff\xaa\x58\x53\xf2\x26\x5b\x5d\xb0\x71\x23\x43\xfa\x08\x2f\x8a\xb5\x87\xa9\x07\x8c\x0f\xef\xfe\xe1\x8b\x41\x14\x38\x5d\x85\x30\x53\x59\xc9\x47\x59\x88\x85\xb3\x46\x97\x52\x2d\x3a\x98\x24\xbc\x28\xf4\x93\x08\x65\xbd\x62\x30\xd2\xb7\xd9\xbb\xc5\xd8\x6e\x66\x2f\xdc\xa9\x0f\x1f\x3f\x33\x25\xfc\xab\x0c\x82\xbf\xa4\x5b\xbf\x6e\x32\x83\xb5\x1b\x93\xc9\x04\x7c\x6b\x6f\xfe\xdb\xe9\xf1\x79\xf1\x96\xfd\x22\xc2\xfc\x9c\x81\xe3\xb8\x4d\x66\xd9\xd3\x52\x83\xb7\xa4\x36\x88\x1e\x8b\xed\x09\x80\xeb\xef\x8b\xd8\x02\x85\x4b\x47\xc5\x29\xcd\x5e\x54\xc3\x7a\xe5\x2d\x0c\xc6\x7e\x83\xc6\xb0\x36\x9a\x7f\x14\x7b\x20\x51\x62\xc4\xa0\xc6\xae\x93\x8e\x2a\x0f\x6e\x50\x3e\x00\x35\xc2\xac\x57\x85\x54\x0f\x17\x4c\xda\xc8\x76\xdd\xa9\x0b\xa9\xdb\xea\x01\x8b\x6b\x56\x09\x5e\x74\xa4\xd6\x11\x4e\xce\xd1\x24\x92\x25\x3b\xee\x3f\xaf\x4b\x01\xf7\xb9\x61\x4b\x21\x7d\xac\xeb\xe4\x38\x1b\x76\x5c\xbf\xae\x95\x40\xba\x35\x8e\xc0\xff\xa5\xa1\x20\x6b\x9e\xdf\xde\xbf\xbb\xbf\xdd\x68\x9e\xec\xff\xd6\x0b\x4d\x1d\x90\x38\x7f\xac\xcc\x79\x8a\xf0\x87\x45\x38\xae\x4e\x9e\x2d\x79\x79\x55\xdb\xe5\xb5\x34\x99\x7e\x14\x44\xe3\x32\x42\xb5\x86\xc0\x0f\x93\x71\x89\x3d\x2d\xf6\xee\x3f\xaf\xee\x36\x3a\x13\x1e\x49\x3f\x69\x67\x7e\x2f\x0c\xd9\x12\xdd\x3d\xef\x40\xe9\xa4\xb3\x1e\x83\x7e\xbf\x99\xa0\x1f\xdc\xc6\xdf\x6a\xa0\x4f\x2a\x69\x25\xb7\x1a\x55\xa1\xde\xf7\xf2\xd4\xc6\xea\x55\xb8\x52\xb7\x91\x0c\xa4\x9a\x40\xd0\xae\x47\x19\x75\xc0\xda\x7e\x18\x12\x74\x8c\xcc\xc8\x06\x23\x79\x23\x11\xfd\x82\x29\xf1\x34\x4c\x14\xe6\x26\x1b\x1a\x7f\x0a\x65\x07\xee\x1c\xf3\xe2\xcf\xdf\xfd\x29\x5c\x2d\xc5\x57\xe2\xcf\xa0\xc3\x0c\x92\x6c\x61\x2d\x1a\xd7\x56\xe8\x52\x76\x3c\x97\x16\x63\xf2\xef\x34\x3e\x17\x5c\xbd\xfe\x7b\xff\x57\xcd\x0b\xbf\x8e\x1f\x8e\xe9\x97\xec\xef\x07\x69\x7a\xf1\x8c\xc4\x7d\xf8\x10\x7d\x39\x4e\x31\x07\x99\x0d\xbf\x18\xd6\x16\x2b\xae\x8c\xdb\xbc\x7e\xcc\xe8\x3c\x84\x84\xcf\xd9\x1b\x9b\x95\x48\x4c\xcb\x13\x94\x2d\xf9\xcf\x0c\x7b\xf1\x63\x53\xae\x34\x34\x9f\x13\xc5\x47\xe1\x8c\xd3\x5c\x70\xbd\x0f\xb8\x03\x02\xec\x47\x69\xac\xcf\x41\xf7\x14\x31\x9d\x6d\x84\x2f\x50\x71\xba\xd8\x1d\x00\xba\x97\x7f\xe3\x79\x5e\x7d\xe7\x65\xf0\x3c\xe8\x44\x15\x58\xd4\x1a\xdf\xb6\x3c\x46\xfe\xdf\xd8\x75\x29\x33\x30\x9f\x3f\xbf\xbb\x03\x4a\x86\xfd\xfb\x1f\x3d\xd6\xd1\xbf\xfe\xfe\x8f\xdf\x0c\x1e\x81\xaf\x57\x41\x94\xe4\xe3\x22\xe5\x77\x63\x02\x1a\x43\xf1\xd7\xa3\xa9\x41\x69\x19\xe1\xa0\x98\xdd\xb7\x9d\xad\xfd\xb9\x0c\xcc\xdb\x6d\x72\x23\x5b\x06\x3f\x96\xa4\xde\x8d\xd9\xcb\xbf\x81\xec\xe5\x58\xa1\xe8\xf9\xd7\xa1\xfc\xcf\xb3\xbe\xbb\xc8\xfa\x02\x6b\x1b\x3e\x76\x68\xd6\xd7\x63\x6d\x83\x74\x0f\x67\x7d\x47\xb5\xf8\xe5\xdf\xf7\x5d\xa9\x89\x93\xa0\x7b\xff\xbd\xbb\x53\x87\x7a\x0e\x14\x25\x24\xf7\xe1\xfb\xfb\x0d\xaf\x81\xfb\x4b\x8c\xc3\xf5\x63\x6d\xfb\x19\xdc\x33\x71\xb8\x43\x8d\x0e\x35\xdf\x0b\xc9\x74\x62\x4f\x61\x74\x77\x8b\x2f\x7d\x93\xcf\x2d\x92\x11\xd5\xe3\xb0\x52\x73\xb0\x07\x6b\x60\x01\xd8\x57\x0e\x2c\xb9\x95\xf0\xab\x83\x89\xff\xbc\x68\x48\xe9\x24\xab\x8c\x13\xf6\x15\xb5\xca\xf4\xfc\x1e\x9e\x89\xc1\x4c\x77\xe7\x7c\x76\x5e\xe5\xf8\xa7\xe3\x9c\xc2\x18\x0c\xca\xd7\xc6\xe9\x7c\x3d\xa7\xef\x28\xae\xd3\x49\xf8\xae\x43\x79\x64\x9b\xf4\xe6\x35\xc0\x77\x05\x97\x7b\x41\x96\x36\x78\xc3\xae\xc7\xfd\x7f\xde\x7b\x3f\x2b\xb2\x91\x51\xbf\xfb\x09\xe3\x6c\x27\xe5\x26\xf5\x86\x07\x1b\x1d\xc0\x89\xf7\x73\x9e\xc4\x7d\x6f\x17\x66\x12\x8f\x40\xfb\x27\xff\x97\xcc\x4d\xe9\x28\x4c\x19\x28\xd1\xb3\x57\xdf\xc5\xc7\x36\x8b\xb2\x9f\x59\x3e\x8c\x21\xb0\xbd\xbc\x8c\x9b\x06\x0f\xbb\x0e\x6e\x27\x74\xf5\xf6\xd7\x5d\x7f\x76\x72\x99\xf0\x0b\xb1\xb4\x76\x70\xb9\xae\x63\x5d\xf7\x31\xcd\x2e\x1c\xcb\x69\x4e\xe1\xc1\x4c\x65\xa9\xad\x56\x89\x55\x46\x77\x3b\x1e\xee\x47\xf2\xfd\x2f\xde\xf9\xca\xba\x62\xc8\xeb\xd1\x10\xf2\x09\xd9\x4d\x4c\x07\x5a\xd5\x06\x11\xac\x55\x8c\xee\x98\xe1\xa8\x70\x70\xb8\x1e\xe1\xda\xff\xf3\x20\x16\x1c\x1b\xf7\xe8\x58\x77\xbe\xcc\x89\xb5\x80\xb7\xd7\x41\x15\x8e\xf5\x7e\x26\x1c\x47\xd6\x9e\xc7\xce\x99\x1b\xfc\x28\x44\xc9\xd0\x71\xd5\x8a\xfc\xf6\xfa\xe0\xeb\xad\x2b\xfb\xa4\x2b\x2a\x72\xca\x5d\xef\xb1\x8d\xe4\x9c\xf0\x6f\x98\x6c\x61\xd4\x0d\xfe\xca\xb7\xf4\x1e\xa2\xfe\x9d\x4f\xdc\x11\x62\xc3\x64\x43\x78\xfb\x73\xd7\xd5\xde\x73\x75\x07\xa9\xee\xbd\xda\xfe\xea\xee\xbc\xb2\x48\xc3\xa6\xb9\xd2\x27\xb9\xb2\x49\x62\x7a\x00\x4f\x03\x5f\xb2\x92\x84\xa7\x71\x34\x7b\xca\xdf\x0e\x22\xcb\xfa\x39\x3c\x14\x4a\x95\xdd\x7e\xb6\xcc\x8b\x37\xd7\x72\xf0\xd3\x51\x89\xfc\x47\x65\x56\xf1\x73\x0f\x66\x58\xb1\xdd\x3f\x9a\x57\xf9\x56\x38\x73\x5d\x01\x58\x86\xf4\xf8\x19\x2d\xa6\x79\x40\xcf\xb8\x08\x9d\xd8\x56\xbc\x34\xfb\x45\xa2\x63\x55\xdd\x5e\x3a\x47\x60\x4b\xa9\xad\xa5\xde\x3f\xdf\x4f\x6a\xbb\x5f\xd4\xb0\x76\x8f\x68\x33\xb1\xdd\x1d\x0a\x65\xbc\xc7\xee\x51\xe8\xee\x50\x83\x54\x07\x3b\x4c\x6c\xf6\x8e\x18\xa4\xb8\xaf\xb7\xc4\x73\x5d\x23\x10\x4c\xbf\xdb\x55\xe2\xab\xc4\x0a\xc3\x41\x27\x1d\xac\xd8\x33\x2a\x66\x9d\xfb\x4b\x87\x68\xdc\x91\xd2\x0d\xea\xae\xa1\xee\xf7\x2c\xc0\xee\x34\x37\x9d\xf1\x42\xa3\xb0\xcc\x3b\x87\xa0\xd3\x54\x2f\x24\xd8\xac\x4b\x44\xc4\x84\xd6\x04\x20\x8b\x7d\xad\x13\xba\x34\x74\xb1\x8a\x9a\x36\x77\x2d\x45\x86\x82\xec\xf0\xc3\xea\xb8\x56\xa8\x07\xe8\x8d\x0e\x90\x9b\x1a\x47\x9f\xfb\xf6\x34\x87\x0b\x26\x78\xb6\x64\x0f\x62\x3d\x01\x1e\x83\xa6\xc9\x58\xc9\xa1\x12\x0f\x96\xe9\x9a\xdb\x7e\xaf\xac\xd6\xe3\x84\x6d\x03\xe3\x46\xdb\x97\x3c\xd6\xa9\xb5\x67\xae\xa9\xf9\x43\xd6\xbc\xb5\x83\x9b\xa0\xdc\xb1\xa7\xa5\x36\xc1\x91\x13\x9c\x3a\x0f\x62\x0d\xec\x24\xd3\x0a\x65\x52\xb4\x23\x10\x80\x55\x83\x0c\x9c\x8d\x7a\x38\x77\x63\x45\x8e\xeb\xac\xde\x8e\x3d\xdf\xdd\x26\xec\x38\xe6\x3d\x20\x13\x37\x56\x40\xe5\xac\x56\x9d\x19\xf9\xf7\x00\xec\x24\xe4\x4e\x19\xa1\x70\x39\xc9\x1d\x9a\xb0\x76\xfd\x44\x22\x80\x9d\x96\x26\x74\xb2\x06\xaa\x94\x15\xf5\x67\xa9\x39\x04\xbd\xba\x42\x23\x6c\x5d\xe2\x92\x86\xda\x01\xd9\x60\xee\xcb\x85\x31\xcc\x83\x5b\xaf\x78\xf5\x20\xf2\xa6\x2b\xc7\x14\xda\xf1\x50\x76\x28\x82\x77\xc6\xde\x35\xde\x52\xe2\xeb\x6e\x91\x27\xa1\x5b\x9c\x1b\xe7\xd3\xa9\x6f\xb2\xb3\xab\xf8\x13\x4d\x87\xc8\x14\x36\x35\x17\x5e\x42\x96\x39\x28\x97\xb0\xb5\xe0\x29\x46\x75\x75\xe8\x8e\xd0\xa1\x92\xa3\x5d\x98\xed\xa0\xf3\x41\x3f\x1e\xc4\xa0\xbd\xb2\x39\xfa\xe9\x5c\x81\x0f\xb4\x6c\x9b\x32\x6b\x96\xd6\x9b\xc4\x0f\x7c\x3f\xb3\x67\xe6\xfe\x4c\x67\x33\x22\x49\xd6\xed\x84\xb6\xbb\xc7\x19\x99\xe2\xee\x9e\x68\x1b\xdd\xce\xc8\x54\xf7\x77\x47\xf3\x7d\xcf\xc8\x44\x31\x7d\xd2\xc8\x44\x87\x7b\xa2\x92\x49\x22\xb4\x60\xfa\x34\x93\x7b\xad\xb5\x83\xde\x75\xad\x1d\xd4\xfe\x6b\xed\xc0\x77\x62\x6b\xc7\xd6\xbd\x6f\xb8\x78\xd9\x96\xec\x90\xd7\x30\x36\x61\x5b\xf1\xb2\x51\x2a\xac\x9e\xb2\xf7\x41\x2a\x24\x6c\x0b\x57\x6d\x53\xb6\x50\xac\xd3\x17\x31\x49\x37\x07\x3e\x52\x14\x62\x25\x94\x0d\xd0\x02\x91\x2c\x88\x1d\x32\xd1\xa6\x32\x3f\xc8\x0d\x9a\xc4\x0a\x13\x4b\x63\x9e\xb4\x2e\x49\x7e\x4c\xdc\xd6\x90\x7e\x4f\x94\x7f\xc4\x76\x96\xdd\x87\x86\x93\x19\xdb\x81\xcd\x86\xf3\x83\x96\x13\x47\xf8\xda\xaf\x90\x3d\xe7\x07\x3e\x87\x8e\x40\x14\xb2\xed\xd0\x99\x74\x7e\x24\x9c\xdd\xa8\x79\x1e\xd4\x9e\x6d\xdd\xd4\xda\xf4\x34\x66\xc2\xd7\xea\x8a\x39\x76\x0f\xc6\x40\x14\xf5\xa1\xed\x0b\xf1\xeb\x31\xbe\xd5\xfe\x13\xe8\xfb\x81\x6c\x63\xdf\x79\x60\xd8\xa2\xef\xd0\x44\x7e\xa8\xb3\xfc\x5f\xb9\x4d\xbf\xdd\x5c\x7c\xab\xa3\x37\xe1\x6c\x20\x9a\x8c\x27\xcf\x9b\xd8\x78\x9c\x24\x4b\xfa\x70\xd3\x7b\x5a\x90\x93\xa8\xd2\xda\x95\xb7\x23\xd5\x9c\xa1\xb5\x30\x6f\x07\xb2\x99\x39\x5d\x43\x8c\x69\xb4\xfb\xda\x9a\x93\xa9\x6e\xb7\x41\xff\xff\xd9\xfb\xf7\xe6\x38\x72\x23\x6f\x14\xfe\x2a\x08\x79\x37\x28\x45\xb0\x9b\x1a\x7b\xd6\xeb\x77\xd6\xef\x3e\x41\x8b\x9c\x59\x86\x47\x12\x57\xe4\xcc\x9c\x3d\x71\x22\x1c\xe8\x2a\x74\x37\xcc\x6a\xa0\x0c\xa0\x48\xb5\x9f\xf3\x7c\xf7\x13\x48\x00\x75\xeb\x4b\x21\xd1\xdd\x14\x35\x53\xd8\x3f\x76\x4c\x75\x65\xa1\x70\xc9\x7b\xfe\x32\xa9\xc1\x79\x33\x52\x97\x9b\x24\x36\x3d\x6f\xc6\x70\xfb\xf3\x04\xa2\xee\xdc\xd5\x2d\xd3\xb7\x35\x42\x4f\xa2\x7a\x58\xf3\xf4\xd6\xec\x52\x4d\x5e\x92\xd6\x50\xbd\x19\x83\xad\xd5\x93\xd6\xa5\x6e\xc7\x4e\x8e\xd0\x64\xbd\x19\x07\x2c\x53\x8a\x82\x4b\x12\x5a\xb0\x37\x23\x49\x7b\x25\xa3\x1b\x63\x74\x63\xa0\xc6\xe8\xc6\x68\x8f\x83\xdd\x18\x3b\x5a\xcb\xa3\x97\xb0\xeb\x0a\xd9\xd2\x64\x3e\xe1\xee\x6c\x36\xa5\xef\xb5\x9b\x47\xd3\xdc\xdb\x9e\xbe\x6e\x3c\x8f\x26\x7b\xdc\x46\xf5\xcd\x38\x4a\xcb\xfa\x66\x24\x8b\x93\xb4\x36\xf6\xcd\x88\x68\x68\x9f\xc4\x04\x9b\x06\xf8\xdb\x5b\xdb\x27\x38\xce\x76\xb4\xc2\xef\x35\xb9\x4f\xb8\x1e\xc7\x69\x8a\xdf\x9a\xea\x41\xed\xf1\x9b\x71\x88\xe6\x9b\xd8\x32\xbf\x19\x71\xcd\xf3\x93\x54\xb2\x79\x0d\x16\xbe\xa5\x8d\x7e\x12\x45\x5c\xeb\xfd\x66\x1c\xa4\xec\xa2\xdb\xf1\xb7\x1e\x1d\x6a\xcc\x9f\xba\xae\xae\x99\x3f\xd9\xde\xa2\x3f\x89\x68\x6a\x5b\xff\x66\x1c\xb4\xc8\xf8\x56\xff\xcd\x18\x6a\xfa\x9f\x66\xbd\x49\x6f\x52\x3c\xf3\x79\x4b\xb7\x1a\x12\x3f\x37\xd1\x68\x48\x73\xdf\xbf\x44\x77\x3c\xf2\x25\x2e\xbd\xf1\x68\xee\x4c\xdf\xbc\x6c\xcc\x4e\xea\x4f\xfb\xf8\xd9\x49\x1e\x22\x61\x4c\x4d\xfa\xcd\xa6\x26\xdd\xf9\x26\x7f\x5b\xf3\x92\x5c\xb6\x11\x82\x68\x44\x5e\x12\x98\x0e\x08\x92\x11\x79\x49\x10\xa3\x45\x5d\xa4\x31\x2f\x69\xcc\x4b\xc2\xce\x7d\x74\xe8\x8d\x0e\xbd\xd1\xa1\x17\x3d\xc6\xbc\xa4\x31\x2f\xe9\xab\x37\x84\xc6\xbc\xa4\x31\x2f\xa9\x93\x97\xe4\x0d\x26\x94\x52\xec\x93\x92\x5e\x6e\x4e\x92\x6f\x36\x7c\x99\x65\xb2\x12\xe6\x5e\x3e\xb0\xc8\xa4\x81\x28\x63\x7e\x83\x76\xe4\x87\x3f\x4f\x8e\x12\xad\x72\x6e\xad\xe6\xc4\x33\x72\xe9\x1f\x0f\x06\xaa\x95\xae\x22\x67\x79\x4d\x17\x71\x4e\x3c\xa7\x30\x76\x8d\xa6\xe4\x92\x28\x96\xf1\x92\x5b\xf9\x01\x10\x2d\xf0\x77\xac\xf5\x54\x77\x18\xe4\x46\xb3\x62\xee\xfb\xa1\x89\x56\xff\xe1\x46\x45\xc4\x1b\x8f\xe1\x23\x3b\x53\x77\xea\x92\x0c\x8d\xb7\x10\x54\x7d\xeb\x67\xc5\xfe\x1e\x34\x38\xbf\x16\xf7\xed\x77\xe5\xb1\x18\x57\xcd\xf0\x36\x7d\xeb\xa3\xfd\x84\x69\xc9\x63\xd1\xc8\x6a\x5a\x78\x3e\xc4\x3e\x97\x5c\xc1\xc5\xb8\x63\x99\x14\x79\xaa\x27\xe9\xba\x4f\x27\x9c\x3a\x1f\xb7\x41\x6d\x61\x5e\x39\x52\x50\x82\x49\x0b\x9e\x73\xb3\xae\x53\x7c\x7c\xf7\x71\xea\x6e\x2d\x6a\xa5\xdd\xe1\xd5\xcd\xf6\x11\x5a\x96\x4a\xd2\x6c\xc9\x74\x6b\x25\x30\xe2\x02\x14\x3d\x87\xd6\x50\x57\x8b\x16\xd5\x82\x0b\x67\x8c\x00\x75\xab\x59\x46\xd4\xe3\x37\x43\x49\x13\x52\xe9\x7a\x9f\xdb\x3e\x75\xfe\xb5\x58\x9f\x92\xf3\x2c\x18\xb5\x06\xf8\x23\xd9\x7e\x99\x5b\x93\x08\xfc\x92\xee\xf7\xfb\xc7\x34\x91\x45\x1e\x30\x1f\xff\xf4\x96\x94\x4c\x65\x9e\x43\xe0\x42\x8b\x00\x31\x68\x24\x29\xac\x46\x2e\x55\x40\x96\xdc\xf2\x1a\x04\xd1\xdf\x7f\x4b\x96\xb2\x52\x7a\xda\xc6\x4f\xf8\x06\xfe\xe6\x7c\x37\x4e\x02\x62\xfc\x5e\x86\x14\x8c\x6a\x43\xbe\x79\x4b\x56\x5c\x54\x56\xf1\x89\x7e\xbc\x65\x2c\xfd\xf1\x5b\xe4\x05\xc7\x99\x49\x38\x03\x69\x33\xdd\xcb\xdf\xe3\xd2\x75\x21\xf2\x76\x12\xca\xb7\x00\xd0\xee\x70\x7a\x5d\xb7\xb3\x6e\x9e\x43\x10\xa2\x48\x9b\xcb\x9f\x06\x61\xe4\x09\xf9\x23\xce\xba\x40\xd8\x09\x28\x2d\x08\xf1\xe3\x38\x23\x22\x0e\xb2\xc2\x07\x28\xf7\xfc\x26\x6a\x62\xff\xa8\xe4\x6c\x6d\xe2\xb1\x75\xfe\xdb\xfd\xbe\x0b\xaa\x13\xfe\xb8\x01\x62\xba\x77\x3d\x36\x9b\x09\x36\x18\xa6\x7b\x1e\x8c\xd5\xd4\x16\x4a\x56\x83\xb5\xef\x9d\x6f\x03\x9f\x4d\xf0\x11\x78\x71\x41\xb3\x8c\x69\xe0\x46\x57\x75\xf3\xef\xc1\x23\x21\xa4\x7b\x7b\xd4\x71\x38\x15\x12\xcd\x5e\x0c\xd1\xb0\x63\x91\x41\x9a\x53\xe2\x88\x46\x2d\x52\x8c\x0d\xa3\xd8\x82\x6b\x83\xee\x5d\xea\x1e\xea\x1e\x68\xcd\xc5\x02\xfa\xb6\x91\x55\x55\x18\x5e\x46\x94\x00\x84\x15\xad\x09\x7a\xdd\xa0\x1d\x78\xa1\x2d\xef\x3d\x1d\x5e\x22\x7b\x83\x1c\x7a\x33\x04\xf0\x5e\x87\xb9\x10\x26\x0c\x60\x9c\x40\x92\x38\x2b\xa9\xa2\x61\x5b\x06\x69\x66\x72\xb5\xa2\xfa\x8d\x8f\x01\x51\x48\x5c\x72\x22\xc4\x6a\x03\x8a\x16\xf5\x32\xb6\x53\x4e\x8e\x75\x90\x0d\x13\x54\x0c\xc6\x7b\xbb\x0e\x40\x78\x84\xc8\x27\x11\xfa\x90\xb8\xc6\xb7\xc8\x13\xec\xed\x8e\xbf\xd0\xec\x81\x89\xdc\xf5\x51\x87\x73\x9c\xaf\x05\x5d\x79\x5c\xeb\xba\x4b\x34\xcb\x03\xfd\x41\xc2\x75\x52\x8e\x83\xa5\x71\x80\x31\x01\x24\xcb\x29\x9b\xc7\x5a\xbd\x4a\x23\x21\x6e\x7f\xd2\x56\x13\xdb\xcf\xcf\xa2\x22\x11\x9a\x29\xfe\x98\xb1\xa0\xe6\xda\x89\x1c\xeb\xa3\x1e\x07\xb1\xdd\x36\x3e\xcb\xe3\xba\xf1\xd6\x6d\x02\x59\x52\x07\xb2\x01\x55\x9b\x16\x96\x45\x0d\x2b\xf6\x01\x92\xa8\x7b\xa0\xec\x0e\x1e\xb1\xb7\x72\x6c\xab\x60\x77\xf5\xf6\xfe\x68\xf0\xc0\x47\xc9\x7d\x35\x8b\xc7\xa8\x3a\xfb\xf4\x97\xab\x2e\x7f\xfc\x44\x73\xa9\xc9\x5f\x0a\x99\x3d\x90\x2b\x06\x26\xd0\x70\xd7\xf2\x3e\xb8\x79\x54\x23\xe1\xbd\x14\x87\x9a\x99\xa9\x59\x7e\xdc\x56\x66\x63\x6b\xad\x5f\x4d\x6b\x2d\x35\x1b\xf6\x79\x7c\xad\x8d\xb5\x56\x74\x81\xed\x1d\xb9\x64\x44\xc1\xa5\x86\x87\x43\xbf\xfe\xf8\xbe\x81\x9d\xab\xf6\xbb\xa5\x7c\x9a\x18\x39\xa9\x34\x9b\xf0\xc1\xa4\xbf\xe8\xef\x7a\x60\x6b\xfb\x1b\xdc\x97\xfd\xd5\x3d\xd4\x31\x94\x8d\x04\xb7\x3a\xfc\xdd\x6a\x39\x9f\xfe\x72\x65\x45\x65\x3c\x66\x32\xd7\xe4\x82\x99\xec\x22\x63\xe5\xf2\xc2\x4f\xeb\xc5\x2d\xd7\x4a\x0a\x6e\xa4\x42\xb6\x42\xbf\x24\x99\x2c\x0a\x8f\x78\x26\xe7\xe4\x1d\x2b\x97\x35\x29\x54\x0c\xea\x84\x6b\xf0\xe5\x9a\x28\x95\x52\xe2\x1a\xbb\xb4\xae\x96\x7d\xd6\xdf\xac\xd6\x41\x52\xb3\xfc\xa8\x3d\xd3\x9f\xe3\x68\x9d\xa0\xab\x45\x34\x30\xea\x2e\xec\xd3\x2d\xbd\xa4\x5e\xc8\x69\x3d\x75\xcf\xaa\xb3\xbb\xf0\x18\x24\xf5\xb5\x62\xc7\xa8\x16\x54\xe1\xf5\x1d\x96\x48\x6e\xe6\xce\x2c\xca\x59\x4e\xe4\x23\x53\x8a\xe7\x4c\x07\x56\x8c\xe2\x98\x82\x17\xcf\xc5\x23\xc7\x6e\x5a\xbf\x8a\x6e\x5a\x68\x83\xb7\xc5\x6c\xed\xb3\x9b\xcc\x96\xe6\x2b\x1e\x51\xbb\xfc\xa2\x24\x79\x64\x3f\x2c\xab\xb7\xed\xfd\x45\x10\xe2\x87\x9a\x8e\x3a\xa3\x05\xbb\xf9\x18\x6d\x3e\xde\xb9\xdf\x77\x2d\xc8\xf0\xc7\x56\xd7\x84\x03\x10\xd9\xff\x5a\x5f\x32\x22\x64\xbe\x3f\xd2\x33\xf6\x4c\xe8\x9b\x66\xad\xfb\xe1\x20\xd9\x8f\xa5\x26\x2c\xa8\x61\x4f\x14\xa7\x25\xdc\x87\x4f\x6c\x3a\x30\xb9\xfc\x19\x7f\x60\x2e\x6f\x6f\xc8\x0f\x8e\xee\xf1\x9a\x33\x28\x69\x9c\xc6\x7b\x25\x57\x94\x23\x1b\xe0\xb6\xda\xe1\xb4\x27\x7a\x5b\x13\x25\x8e\xea\xe0\xb6\xb4\xba\xfa\xce\xf9\xa2\xb2\x16\xb2\xb7\x5a\x47\x4c\xfb\x81\x4f\x3f\x9d\x72\xd5\xe8\x56\x2d\xf7\x62\x28\xf5\xa8\xf5\xa5\xc1\x4f\x0f\xa7\x02\xc4\x52\x9d\xe6\x42\x34\x13\x9a\x43\xcc\xb6\x95\x04\x05\x4a\x97\x59\x46\x04\x9a\xea\x1a\x0e\xa7\xa0\x9d\x93\x1f\xe5\x82\x8b\xc0\x1d\xa4\x4f\x73\x98\x53\x5e\x0c\x2d\xe3\xa8\x31\xfd\x2a\x34\x26\xad\x8b\x6b\x41\x67\xc5\x70\x50\xbc\x2b\xb8\x0a\x0a\xd9\x26\x0c\x9e\xbd\xc8\xb9\xb6\xff\x9f\xdc\xdd\xfd\x08\x01\xa3\x4a\xc4\x5a\x10\x10\x52\xf1\xec\xb9\xc6\xd6\x71\x4c\xe3\x78\xf7\xd8\xf1\x44\x74\x3f\x82\x1b\x91\xdb\xcf\x60\xba\x93\x97\xe9\xa9\xb9\x16\x0c\xb1\xd1\x24\x9f\x6f\x36\x63\xe4\x7e\xc9\xb3\x87\xdb\x56\xdc\x48\x2a\xfb\x37\xd1\xfa\x53\x2d\x60\x63\xae\x73\xff\xd9\x63\x31\x7e\xff\x99\xb7\x58\xf7\xc5\x7d\x4b\xa2\xdd\xf9\xa5\xb2\x44\x08\xd5\x5a\x66\x3c\x3e\xf0\x08\xce\xb7\x46\x24\xe6\x20\x12\x8f\xf7\x79\xa0\x05\x1d\x24\xb7\xc3\x41\xf0\x0a\x1c\xd5\x2d\x39\x1c\x13\x5e\xf4\xab\x74\xb4\x4f\x72\x47\x11\xdd\xab\xef\xbe\xd3\x9d\x2f\x44\xfd\x5c\x2c\xac\x8e\x75\x45\x36\xc6\x08\x1b\x1f\x74\x5a\xdf\x9a\xb5\xb7\xf5\xed\x2e\x7d\xc3\x37\x07\xd2\x56\x9e\x35\xaa\xe6\xb5\xd0\xbd\xbf\xa9\x75\x83\xfd\xbf\x1a\xd2\xdb\xe3\xec\xa7\xc1\xa2\xe7\x6d\xde\x9d\x5e\x82\x82\xfb\x9b\x0f\xa3\x01\x33\x2a\x65\x59\x15\x74\x20\x62\xdd\x6e\xa8\x78\x68\x04\xc5\xcd\xe1\x18\x61\xb5\xd4\x0e\x33\x3b\x0a\xeb\x7a\xcd\x66\x86\xf5\xee\x7e\x33\x9a\x98\x66\x33\xb1\x9e\x2f\x98\xd0\xdb\x3f\x7e\xfb\xed\xb6\xf6\x34\x9d\xf6\x33\xc3\x7a\x57\x64\x7b\x9a\x5e\x81\x5c\x9c\xd0\xde\xdb\x9e\xa6\xdf\x7e\x66\x78\x49\x23\xda\xd3\x20\x0b\xda\x4e\xd3\x7f\x26\x2a\x92\x80\xa8\xca\x0f\xb5\xf6\x51\xfc\x75\x5f\x2d\xfe\xce\x0a\xfb\x08\x59\xd4\xa9\xc0\x8f\xa9\xab\x8f\x88\x59\x42\xdd\xfd\x51\xab\xe9\x11\x35\xf4\x9d\xca\xf8\x41\xc2\xfb\x2a\xe7\x77\xd6\xc3\xc7\xdb\x5a\x40\x2b\xaa\x0a\x7e\x90\x66\x74\x4f\x8e\xe8\x04\xe8\xa8\x8a\xf7\x6e\x1d\x7b\x1c\x7f\x88\xa9\x1a\x4c\xe9\xaf\xb4\xa7\xa6\xbd\xae\x53\x8f\x30\xa6\x62\x2b\xd9\x71\x75\x3e\xd1\x55\xeb\x47\xa9\x55\x47\x26\x40\xc7\xd7\xa5\x63\x84\x66\x94\xdf\xc1\x8d\xad\x35\xe8\x3b\x6a\xca\x23\x49\x76\x2b\xcf\x07\x2a\xc9\x23\x69\x42\xbd\x79\x54\xfd\x78\x10\x7f\x91\x84\x07\x84\x64\x47\x08\x46\x93\x3c\x86\xa8\x74\x03\x5f\xf1\x8d\x2d\x60\x88\x2f\x5e\x88\xaa\xe9\x46\x62\x2b\xee\xae\xe4\xde\xac\xcc\x8e\x24\xf9\x7e\x0b\xc3\xdc\x5d\x8f\x1d\x49\xb4\x05\x16\x92\x54\x85\x8d\x62\x0b\xf1\x35\x11\x71\x75\xd6\x91\x55\x13\x47\x2f\x82\x88\xaf\xc1\x8d\xaf\xbc\xad\x41\xfe\x07\x3f\x07\x57\x70\x8b\x75\x41\xe3\xfb\xef\xb7\x7d\xa7\xde\xf4\x0b\xa7\xd3\xa5\x4e\xd6\xc0\xe1\xc3\x3b\x05\x9c\xfe\x19\x8c\x3f\x12\x7f\x74\xe3\xcc\x66\x37\x03\xb9\x57\x70\x77\x0f\x83\x7b\xe2\xe3\x5d\x2f\xf4\x58\xff\x39\x28\xc8\x3e\xaa\xb8\x3f\xf4\x38\x46\x1c\x7f\xfd\x5d\xda\xc7\xf0\x58\x7a\x78\x4c\x77\x20\x39\x83\x83\xca\xe9\x95\x31\x11\x32\x39\xf3\x0d\x29\x1c\xd3\xae\x2f\xe9\xe5\xed\x0d\xc9\x14\x83\x0a\x6c\x5a\xe8\x29\x49\x40\x28\x0a\x81\x08\xd0\x50\x75\x6d\x79\x52\x63\xd8\xaa\x34\xc3\x07\x68\x8c\x8e\xfd\x2a\xa2\x63\x89\x2e\xf5\x9f\xeb\xc7\x82\xff\x63\x59\xad\xa8\x98\xd8\x5b\x0e\x71\x32\xef\x6f\x8f\xf3\xa9\xf7\xa4\xcf\x94\x84\x7a\x16\xd8\x18\xa8\xe9\x82\xb2\x3a\xd7\x44\x3d\xca\x38\x07\x2c\xb7\x5a\x05\x38\x41\x04\x02\xe8\x26\xae\x99\xeb\x67\xd2\xe3\x0e\x99\x2c\xa3\x57\xcc\x4b\x69\xff\xa1\xf5\xfa\x05\x46\xd0\x6a\x9a\xd2\xf6\xea\xc4\x90\x76\x2a\xd4\x2d\x54\x9e\x36\x54\x3a\x38\x65\x1e\x78\x8c\x16\x85\x7c\x8a\x28\x6a\x5c\xb2\x8e\x66\x60\xcf\x85\xfd\x56\x5f\xcc\x3f\x63\x64\xc5\x95\x92\xca\x47\x4e\x22\xdc\x84\xcd\x71\x81\xec\x10\x6b\xbf\x32\xe5\x4c\x34\xe5\x93\x05\xee\x98\x69\x2d\x77\x8c\x02\x48\x85\x2b\x6e\xb2\xff\x1d\x72\x3a\x5d\x3f\x28\xcf\x27\x67\x6c\x49\x1f\xb9\xac\x14\x50\x8f\x21\xf9\xca\x3f\x6a\x45\x37\x59\xcb\xaa\xee\xa7\x5e\x41\x99\x43\xbd\xba\xd1\x8d\xd9\x5b\xfb\xfc\xa1\x79\x18\x4c\xee\x5c\x06\x4f\xdc\x84\x7d\xe6\xda\xe0\xd7\x32\x6c\x71\x40\xe4\x7f\x46\x35\xf6\x51\x97\x56\xce\xff\x3c\x58\xf6\xd6\xbd\x4e\xed\xa7\xba\xea\xec\xe3\x1d\xfc\xd3\x21\xca\xac\xc7\xaa\xd0\x4e\xd3\xf3\xe5\x28\xa3\x42\xbb\x6f\x7c\x25\x0a\x6d\x1d\xf6\x2f\x78\xb6\xbe\xb9\xc2\xa9\x76\x75\xb8\xdf\x3e\x4c\xfe\x42\x35\xcb\xc9\x7b\x2a\xe8\xc2\xf9\x42\x5e\xdf\xdd\xfe\xe5\xfd\x30\xd2\x7f\xa9\x24\xf8\x75\x6e\xae\xb6\x04\x8e\x6b\x79\xe8\x5e\xf2\xe1\x78\x15\x97\xbd\x6f\x47\x0b\xfd\x23\x7f\xfd\x11\x6b\x49\x83\x60\x8e\xe9\x19\xb5\x09\x18\xe2\x82\xf8\x01\xcf\x48\xf7\xd9\xc7\xe3\x2a\x7f\x78\xce\xe0\x7c\xf3\x29\x87\x31\xd6\xc1\x9f\x94\x32\xbf\x67\xab\xb2\xa0\xbb\xc1\x2e\xba\x8b\xd5\xfc\x1e\x72\x1e\x44\xd3\x75\x21\xe4\x85\xb8\x14\x3b\x2b\x97\x4b\x99\xef\x56\x0e\xac\x1e\x01\xc9\x55\xd0\x5c\x00\xd0\xc9\x66\x74\x67\x3e\x54\x0c\x6f\xcd\xa4\x30\x4a\x16\xc5\xfe\xec\xf8\xae\x81\xf1\x8b\x54\x0f\x85\xa4\x79\xeb\xe1\xb3\x33\x4d\x56\xcc\x50\x3b\x23\x74\xcd\xed\x82\x9b\x90\x0a\xef\x53\xc4\xcc\xfa\x02\x68\xf3\x59\x65\xa4\xd2\x17\x39\x7b\x64\xc5\x05\x2d\xf9\x24\x93\xe2\xd1\x1e\x38\x29\xf4\x74\x95\xff\x2e\xbc\xf3\x18\xa9\x03\xad\xfe\x7b\x43\x77\x81\xe6\x39\x77\x3b\x78\x8b\x30\xe7\x10\x76\x48\xaf\x90\xae\x99\x99\x3f\x40\x95\xd0\x46\x55\x99\x81\xcc\xde\x07\xb6\x8e\x04\xed\x5d\xd1\x12\x78\x59\xe0\x9a\xad\x46\x33\x70\x99\x57\x74\x6d\x05\x8d\x87\x1d\x60\x9f\x0d\x53\x82\x0e\xc7\x1e\x8d\x94\x05\xf8\x2c\x80\xb6\xef\xe2\x62\x14\x67\x8f\x8c\x50\x35\xe3\x46\x51\xb5\x6e\x9d\x8f\xfb\x65\x84\xbb\x38\x68\x7d\xff\xa8\x98\x5a\x83\x6d\x64\xe9\x36\xe9\x72\xa0\xb7\xa8\x47\x08\xba\x32\x41\x56\x32\xe7\xf3\x75\x8c\x5f\xdb\x1b\xb1\x1b\x26\xf1\x76\x8b\xb8\xd2\x4c\x4d\x16\x15\xcf\xd9\x45\xeb\x80\xc4\x79\x2b\x07\xed\xc8\xa8\x9f\x85\x75\x43\xa4\xf9\x18\x2a\x72\xaa\x72\x4f\x79\xd7\xe5\x1c\x2f\xe0\xee\x31\x5e\xc0\xf1\x02\x86\x61\x75\x69\xc4\xe5\x73\x9a\x77\x56\x03\x1b\x3a\x6b\x58\x5b\x05\x26\x58\xc3\x2a\x06\x7a\xba\x94\xdb\xa1\x09\x0e\xb8\xad\xf6\x4b\x26\x54\xe4\x13\x6d\xa8\xa9\xf6\x2e\x62\xf4\xa5\x9d\xcf\xb9\x9d\x01\x36\xf1\xa9\x17\x9a\x77\x98\x5d\xda\x9a\x9b\x55\x61\x2d\xa9\x4c\xda\x1b\x46\xf9\x70\xb3\x62\x94\x47\x55\xe6\xec\x32\x72\xc6\x1b\xb3\xbe\x82\xff\x31\xf3\x71\x9a\xfa\xcb\x5b\xb3\x8e\x72\x5b\xaa\xaa\x60\xba\xae\xd0\xb1\xbb\x1c\x13\x1f\x47\x82\xca\x96\xe0\xf9\x55\x2c\xbf\xaa\x2c\xb7\xbb\xab\xa7\x78\xb3\x10\xb2\xfe\xf3\xf5\x67\x96\x55\x06\xd1\x9f\x77\x23\xf8\xee\xbf\x9d\xa9\x00\x83\x69\x5f\x0b\x9c\xc8\xff\x43\x24\x61\x38\xee\xc0\xc2\x20\x06\xe6\xd3\x51\xa9\xe1\x7a\xee\x0c\xed\x7a\xb5\xd9\x67\xcb\x78\x34\x22\xb9\x82\xb4\x12\xb4\x42\xae\x23\x78\x9e\xcf\xc9\xac\x32\x84\x3b\xb6\x9b\x2d\xa5\x44\x20\xc5\x52\x77\x08\x60\x9e\x8f\x5c\x16\x50\x0d\x20\x85\x43\xfa\xb2\x97\xb6\xe9\x03\x16\xa6\x1b\x8f\x5f\x08\x99\xd7\x35\x79\xae\xc9\x4a\x6a\xd3\xec\x69\xf0\x1d\xcb\xbd\xae\x95\xee\xa8\xad\xe4\x05\x38\xaa\xb4\x21\xba\x82\x3e\x8c\x4f\x8c\x2f\x96\x46\x9f\x13\x3e\x65\xd3\xa8\xf0\x4a\x18\x90\xae\xd8\x4c\x73\xc5\x98\x01\xf7\x66\xbb\x49\x33\xe2\x5e\x90\xc6\xd2\x5b\x81\x43\xea\x75\x2d\x1b\x3d\xb6\xec\x79\x6d\x09\xf6\x4f\x75\xfc\xb6\x6d\x39\x46\xe7\x84\x99\x6c\xfa\xe6\x1c\xe0\x54\x2a\xc3\x08\xb5\x6b\x13\x4d\x72\xb6\x26\xdc\x04\x07\x90\x59\x2a\x59\x2d\xdc\x4a\xfb\x4c\x0f\x5f\x77\x18\x9d\x0b\xe5\xfb\x38\x83\xb4\xb5\x7a\x8e\x58\x90\x57\x6e\x93\x5e\xd5\xd5\x62\xd5\xca\x83\xa5\x46\xd3\x84\x7d\x5a\x51\x03\x10\xb8\xae\x34\x50\x29\xa6\x4b\x29\xe0\x0d\xf0\x2f\xd7\xcd\x9a\xfc\x47\x34\x61\xe3\xcf\xea\x6b\xfd\xa6\x39\x64\x4b\xbe\x58\x86\x33\x46\x15\xf3\xc8\xa0\x08\xd4\xe8\xfa\xac\xc7\x5e\x9a\x43\xba\x63\x5d\x0a\xc2\x56\xa5\x59\xb7\x6e\x58\xc2\xd9\x25\xd0\x3e\xbc\x5e\x63\xb8\x08\x4e\xd3\x71\xeb\xc2\xbd\x63\xcf\xdf\x38\x04\xdd\xb7\xe4\x35\x5c\x4e\x6e\xce\x34\x30\x9e\x89\x2c\xdf\x4c\xc9\x25\x11\x55\xcd\x73\x71\xdd\x20\x5b\x82\xb6\x33\x69\x21\xeb\x39\xc3\x2b\x11\x24\x21\xb4\xa1\x65\x33\x3f\xc4\x5e\xa7\x34\x02\x2a\xeb\x04\x67\x5c\x57\x90\xee\xce\xbb\x7b\xe1\x5a\x0a\x5a\x89\xcc\xd4\xea\xbc\xe5\x5c\x44\x51\x6e\x31\xd9\xee\xe5\x72\x1b\x8e\x6b\x94\x91\xde\x7d\xb4\x7f\x95\xf1\xbd\x1b\x7b\x4b\x54\x70\x0d\x58\xbe\x9d\xa5\x42\x13\xed\x31\xf7\xd9\x1a\xe8\x9d\x69\x52\xd0\x19\x2b\x10\xc2\x31\x0c\x74\x03\xac\x30\xf6\x9e\x80\xd6\x24\x13\x48\x13\x0f\x25\x58\x9f\x27\x2b\x18\x7d\x0a\xa0\xf6\x39\x03\x69\x8d\x40\x21\xd9\xdc\x65\xaf\xd3\x50\x96\x1b\x5e\x00\x19\x90\xa8\x8e\x1a\xcd\x68\xb7\xc4\x73\xf3\x4b\xe9\xc7\x7f\x48\xaf\x5c\x92\xd6\xd3\x2b\x8c\x0d\x95\x14\xce\x93\x4b\xe5\x5c\xd2\xb4\x4d\x24\x7e\x61\xea\x7d\xa4\x65\x59\x40\xc4\x19\x01\x42\xdd\x23\x77\x48\x1b\x56\x02\x49\x8c\x6e\xcb\x8f\xb2\x4e\x9f\xda\x61\xbf\x07\xb6\x3e\x4b\x3b\x3c\xa4\x2e\x13\x90\x42\x2f\x79\xe9\x12\xee\x35\x33\x1e\xd0\x3f\xf1\x34\xb9\xf1\x33\x2d\x78\x5e\x7f\xb6\x4b\x67\xb8\x11\xe7\xe4\x83\x34\x37\x28\xe8\xfe\xee\xb8\xfe\xcc\xb5\x55\x77\xaf\x24\xd3\x1f\xa4\x81\xff\x39\x25\x3f\x98\x74\x8a\xf6\xea\xfc\x88\x6e\x22\x17\xc6\xc1\x07\xc3\xad\xf3\x51\x8e\xc5\xa5\x70\xd9\xb4\x76\xfb\x0e\x98\x51\x33\x2b\x8f\x3f\xc0\x1a\x86\x85\x50\x83\xfb\xe3\x46\x58\xe3\xca\x6d\x7f\x53\x3b\xa4\x51\xad\x94\x36\x47\x48\xd0\x15\x52\x4c\x40\x0b\x0c\x73\x4e\xa6\xd8\xfa\x56\x7f\xda\xec\xbc\xdb\xe7\x2d\xfd\xac\xf5\x3f\xbb\x9e\xbe\x9b\x7a\xfa\xda\x6e\x6c\x13\xf9\x01\x12\x9d\x7f\x3c\xfa\x64\x97\x34\xa1\xe1\x7f\x18\x35\xa0\xb6\x37\xae\xce\x3d\xfc\x74\x54\x8d\xd4\xae\x31\x73\x3d\x73\x54\xa9\x98\xf1\xd8\xda\x22\xd4\x2e\xa4\x2f\xa9\xcb\xf6\x81\xef\xe6\x9a\x28\x56\x16\x34\x63\x39\xc9\xab\x83\xee\x15\xd4\x37\x51\xc3\x16\x3c\x23\x2b\xa6\x16\x50\x55\x90\x45\x97\x25\xf4\x47\xb2\x12\xe5\xc6\xc1\xcc\x2b\xa5\x1d\x5a\x7b\xa4\xf6\xe5\x26\x09\xed\xe1\x9a\xe7\xc2\x35\x49\x78\x38\xb1\xaf\x77\xfb\xe1\x94\xb5\x02\xa3\xe0\x7b\x48\xb7\x7c\xe9\xf6\x80\x4f\x0a\x1d\xed\x81\xbd\x63\xb4\x07\x76\x8c\xd1\x1e\x88\x1b\xa3\x3d\xe0\xc6\x68\x0f\x74\xc6\x68\x0f\x8c\xf6\xc0\x68\x0f\x8c\xf6\x40\xda\x18\xed\x01\xec\xf8\x22\xf6\x40\xe2\x4b\x5d\x1c\xe3\x80\x70\xcb\x2f\x40\x60\x23\x79\x1b\x8c\x13\xfc\x89\xd9\x0c\xb4\x58\xd5\xfd\xce\xeb\x68\xf7\x4c\xad\xb0\xac\xca\x57\x42\x2b\x2a\x16\x8c\x7c\x33\xf9\xe6\xed\x5b\xdc\x3d\x4a\xef\x8c\x9f\xd6\x17\x1f\x7f\xda\x27\xad\xb8\x19\xe2\x21\x64\xc8\x32\xe1\x7c\x61\x8f\xf2\xae\x4c\x80\x23\xe6\xb7\x78\x19\x58\xa7\x0c\x74\xec\x55\x7c\xc7\xe2\x4e\xea\x49\x9d\x5d\xb7\x62\x86\x50\xd3\x09\xc8\xf2\x15\x8b\x3f\xb8\x3e\x87\xa8\x03\x52\x14\x72\x6f\x72\x22\x03\x0c\x92\xbd\x19\xf1\x67\x39\xee\xcb\xc9\x2c\x9e\xeb\xb4\xbe\x3c\x63\x54\xb3\x50\xc3\xe6\xbf\x5e\xae\x98\xef\x19\x8a\x14\x87\xf6\xd3\x59\xd8\x65\xf2\x9a\x4d\x17\x53\x92\x57\xcc\x95\xa6\x91\xaa\xcc\xa9\x61\x6f\xce\x51\xea\x9b\xaf\x19\x5a\x59\xb5\x57\xd5\xc0\x47\x46\x01\x0a\x0f\x74\xed\xa9\xa0\xc5\x1b\x7b\x8c\x41\x44\x6b\x16\xc0\xed\xd3\x5c\xc9\x15\xa0\x47\x60\x76\x24\xc5\x9c\xee\xf3\x42\x94\x54\xef\x19\x87\xee\xaa\x4d\x8f\xe2\xfb\x31\x76\x2e\xae\xb1\x31\xfc\x27\xdc\x84\x8f\x9f\xe2\x33\x3d\x48\x9a\x9a\xd2\xf7\xf2\x54\x45\x61\xf7\xd7\x25\x7e\x1c\xe2\xca\xda\x91\x40\x31\xf5\xe0\x34\xcd\xcd\x41\xd2\x75\x59\x54\x2e\x7f\xe6\xf2\xc3\x95\x43\x1e\x62\xe4\x5e\x96\xb2\x90\x8b\x75\x7b\x6f\xb1\x33\x5e\x97\x0c\xd2\x51\xfc\x8d\xa6\x44\x57\x33\x6f\xa5\xdb\x73\xfa\xa1\x77\x74\xc6\xcc\x85\x31\x73\x61\xf4\x54\x6e\x1f\xa3\xa7\x72\x70\x8c\x9e\xca\xd1\x53\xb9\x75\x8c\x9e\xca\xd1\x53\x39\x7a\x2a\x47\x4f\x65\xd2\x18\x3d\x95\x29\xcf\x7d\x6d\x9e\xca\x31\x73\x61\xdf\x18\xed\x81\xd6\x18\xed\x81\x1d\x63\xb4\x07\xe2\xc6\x68\x0f\x8c\xf6\xc0\xce\x59\x8d\xf6\xc0\x68\x0f\x8c\xf6\xc0\x68\x0f\x0c\x92\x18\xed\x81\xf8\x87\x9f\x2d\x73\x01\xff\x3a\xec\x76\x4c\x36\x03\x6e\xa8\xc8\x77\xf4\x27\xa1\x7e\x5e\xca\xfc\x08\x70\x17\xa5\xcc\xb7\xa1\x5d\x38\x24\x8b\xa8\xaf\x74\x81\xd9\x4c\x4e\x0a\x99\x51\xc3\x5c\x38\xd8\x92\xf5\x19\x17\x9a\xae\x5c\x8c\xfa\x9c\xfc\x53\x8a\xc8\xf0\x37\x33\xd9\xd4\xb2\x38\x88\x1e\x3b\x5c\xe1\x52\xe6\xaf\xf5\x9b\xa8\xda\xe3\x11\x51\x63\x44\xd4\x18\x11\x35\x46\x44\x8d\xc3\x10\x35\x96\x54\xbb\x7b\xe6\x94\xb7\x9d\x00\x1b\x98\x4b\x1b\x38\xb6\x15\x22\xff\xb1\x17\x5f\x23\xfe\xba\xf6\x70\x38\x9e\x17\x5f\xc3\x5e\x3e\x7f\x29\xa0\x97\x68\x73\xa0\xdd\x7a\x61\x60\x16\x5c\x0a\x21\xcb\x6f\xbb\xeb\xe4\x7d\x6f\xf0\x91\x34\xcf\x51\x24\x4b\xa6\x26\xee\xd2\x49\x32\xe7\xbe\xcb\x60\x8f\x3f\xf8\x1d\x88\xdf\xc6\x34\x4c\x8b\xee\x47\x1d\x90\xe0\xd2\xce\xd9\x69\x8b\xef\x84\xdc\x96\xf3\xad\x60\xbb\x69\xa7\xdb\x8d\xe7\xc5\xc3\x00\x2f\x5a\x50\xcc\x0e\x77\x21\x83\x4f\x0e\x30\xf1\x00\xf0\x3c\xaa\xa5\x5c\x7f\x78\xbf\x52\xe0\xc6\x56\x54\xb8\x76\x69\x24\xa3\x1a\xf2\xc4\x12\xbc\x4d\x87\x79\x2e\x0f\xcf\xbd\x21\xfd\xc5\xea\x93\x4c\x35\xec\x34\xa1\xb5\xe7\xde\x2d\xff\x01\xae\x7b\xd2\x93\x89\x07\xa7\x69\x85\xd1\xa4\x69\xa5\x79\xdb\x0f\x31\x5f\xb7\x9e\xd1\x03\x17\xa9\xb3\x4c\xdd\x60\xc0\x01\x6e\x94\x2d\x41\x04\x1f\x10\x38\xc8\x69\x79\xd4\x40\x02\x39\x5a\x30\x81\x1c\x21\xa0\x40\x0e\x0b\x2a\x90\xfe\xf1\xf0\x3d\x4b\x0f\x71\x0b\x92\xc0\x55\xeb\xd8\x44\x27\xc6\x70\x10\xdd\xc3\xe3\x13\xe4\x38\xde\x9c\xc3\xe3\x14\xa4\xbf\xf4\xf5\x11\x6d\xba\x2e\x1c\xb6\x56\x2e\xe0\xd1\x0f\x5c\x1c\x48\xb3\x1b\xf4\x70\xc1\x8b\x83\x48\x1e\x3d\xf0\x41\xea\xe0\x07\xdc\xcf\x4e\xfc\xe3\x4b\x1f\x9a\xc3\x62\x18\xa4\x7f\x64\xbc\xd3\x19\x40\x87\x0f\xdb\xd7\x6e\x34\xe4\xe0\x98\x16\xd9\xee\x6a\xbf\x39\x6c\x96\x27\x88\x8a\x90\x5d\x91\x91\x83\x28\xf6\xbf\xdb\x1d\xc7\x43\xbf\xbd\x13\x59\x69\x2d\xc1\x11\x76\xbe\x1b\x5d\x01\x97\xfe\x11\xa8\x1e\x31\x1c\x40\x8e\x1f\x12\x20\x87\x87\x05\xc8\xb1\xf8\xc2\xa1\xe1\x01\x72\x60\x88\x80\x1c\x10\x26\x20\x87\x86\x0a\xc8\xa1\xe1\x02\x72\xf0\xfa\x81\x31\xf2\x23\x24\xec\xa7\x2d\x5f\x1a\xe4\xfc\xf6\x71\xf0\x89\xda\xb4\xb3\xdc\xa7\x81\xa0\x48\x9c\xd4\x8a\x96\x56\x3e\xfc\x6f\xab\x8c\x03\xdb\xf9\x3f\xa4\xa4\x5c\xe9\x29\xb9\x4c\xa4\xe8\x03\x9c\x6d\x8a\xde\xdf\xdf\x9a\xf2\x01\xb3\xe5\x9a\xd8\x1b\xf1\x48\x0b\x6b\xa2\xb8\x92\x2f\xef\x22\x4c\xa4\x2a\xe7\x1b\x56\xeb\x39\x79\x5a\x4a\xcd\x0e\xb8\x3a\xce\xf9\xc8\x35\x79\xf5\xc0\xd6\xaf\xce\x3b\xb2\x23\xdd\x26\x7e\x75\x23\x5e\xb9\x2c\xaa\x23\x89\xca\xda\x2e\x83\x9e\x81\xaf\x80\xe2\xab\x97\x62\x1e\x1f\x21\xd8\x98\xf4\x70\xd3\x6d\xee\x40\xcf\x51\xab\x6d\x5d\xdd\xc0\x30\x61\x25\x9c\x9b\x59\xb4\xdb\xd8\xb1\xae\x87\x2b\x81\x68\x63\x73\x91\xd7\x35\x7c\xf1\xc2\x9e\x05\xf3\xe6\x3f\xa0\x52\x2e\x81\x68\x5d\x5b\x07\xae\x9b\x15\xa3\x42\x93\x57\x21\xee\x97\x94\xa5\x55\x7f\xf5\x2b\xf4\xc3\xc9\x5a\xc0\x41\x9c\x3a\x5d\x62\x19\x5f\xe4\xf7\xd7\x14\xc3\xbf\xe7\x7b\xf7\x91\xd6\xa6\x71\x47\x1d\x86\x4d\x31\xeb\x5e\x07\x4f\xf2\x1b\xbb\xc3\xae\xc3\x7d\x20\x47\x5e\x53\x61\xf8\xa4\xfe\x45\xca\xf9\x0e\xfe\x65\x08\xaa\x04\x60\x80\xa3\x9c\xf2\x10\x6a\xae\x23\x97\xcd\x2d\xb2\x3c\x9e\xa9\x14\x87\x48\xeb\xe3\xb9\x0e\x4d\xde\x09\xd5\x44\x55\x42\xa4\x49\x77\x29\x42\x28\xd4\x09\x1e\x60\xc4\x21\x60\x02\x8b\x90\xba\xae\xe0\xad\x69\x4e\x56\x2b\x5a\x95\x94\x5d\x2a\xe7\xae\xfd\xa7\x9d\xaa\x14\x9e\x35\xd9\xbf\x44\x34\x37\xd9\x3e\x9c\x07\x89\xe5\x6e\xf7\x79\xbd\x8a\x53\x72\x6d\x59\x49\xca\xfd\x6d\x7d\x2e\xd7\x70\x5e\xa1\x01\x6b\x8a\x1c\x4a\xe6\x05\x69\x7a\xfb\xa4\x3d\xf9\xe7\x48\x92\x39\x18\xde\xe3\xe9\xc4\xf0\x1e\xbd\xf0\xd8\x39\x89\xe8\xd4\xba\x49\xf3\xd7\x8d\xee\xd1\x5d\x22\xc4\x93\x23\xc4\xc7\x08\xf1\xf1\xd5\x41\x7c\xc0\x3f\xba\x50\x44\xc0\xfa\x40\x2d\x6b\x24\xd6\x47\x7c\x02\xcf\x23\xcf\xcc\x0e\xac\x0f\xf2\x8b\x6f\x13\xae\x98\x3d\x1a\xd1\x34\x57\x55\x61\x78\xd9\x24\x0a\x6b\x67\x41\x16\x2e\x1d\x7b\xee\xd3\xbb\xd2\xe2\xf1\xf6\x2b\x69\xb6\xec\xb3\x0d\x38\xba\x90\x48\xac\x41\x1e\xbb\x54\xa6\xf8\x94\xa0\xa2\xf0\xd8\x1e\xc1\xeb\xe8\xf2\xce\x22\xda\x11\x87\x71\x48\xba\xc9\x15\x68\x61\xba\x09\x65\x80\x36\xf1\xda\xaa\x7b\x88\xad\xb4\x07\xc4\xaa\x5f\xbb\x75\x50\x1f\x77\x41\xe5\x80\xfb\xbb\xba\xe0\x8f\x4c\x34\x0a\xe8\x6b\xfd\xe6\x4d\x88\xa3\x39\x75\x1d\x41\x72\x9b\x62\xbf\x57\x4d\x47\xd0\xee\x29\xf4\x20\xcf\xbd\xb2\xdc\x55\x7d\x11\x34\x37\x95\xe4\xed\x2a\x2f\x82\x64\x5b\x39\x6e\x54\xdd\x3f\xb7\xf4\xa7\xff\x0c\xca\x2e\x6a\xff\xa9\xd9\xa1\xe4\xc2\xf5\x0e\x49\x79\x11\x6d\xed\x3b\x53\xed\x29\xb7\x27\xce\x29\x3a\x20\xfd\x65\x30\xf5\x05\xf9\xed\xc4\x7d\xff\xf1\xd2\x5e\x5e\x0c\xd4\x4c\x9f\x5c\xaa\x1f\x76\x7b\x9a\x4b\x37\x61\x25\x81\x6c\xdf\x87\x77\x88\x37\xee\x58\xc5\xaa\xbb\x3f\x31\x2d\x7f\x66\xac\x56\x4d\x18\xc7\xaa\x56\x6d\x92\x4a\x92\x3d\x14\xf5\x84\x36\x13\x4a\x82\x83\x32\x3d\x9b\xe7\x57\x52\xec\x7a\xcc\x04\x92\x1d\xc9\x23\xc9\xe1\x23\xb2\x35\x71\xa4\x49\xfe\x48\x9f\x68\x27\x69\xa4\x95\xf8\x91\x4c\xf1\x18\x09\x23\x2f\xa9\xd8\xb5\x9d\x24\x72\x60\xb6\xc4\x46\x82\x48\x3f\xc9\x23\x99\x32\x24\x87\x6c\x4d\xf0\x38\xe0\x64\xb4\x33\x1b\x8e\x93\xdc\xb1\x3d\xb1\x83\x1c\xf0\xe1\xbb\x92\x3a\x8e\x54\xed\xdb\x4a\xe8\x38\x90\xe2\x66\x32\x47\x3b\x21\x23\x7d\xa2\x63\x6d\xe7\x58\xdb\x19\x37\x0e\x4a\xd2\x38\x56\x82\xc6\x41\xa7\x65\x6f\x62\x06\x59\xd1\x32\x2d\xce\xb2\x2d\x29\x63\x4b\x7a\x45\x7a\x54\xac\x3d\xd5\x8d\xd4\x8a\xa4\xb8\x4b\x2b\x19\x63\x6b\x5a\x45\x52\xf0\xdb\x27\x62\x1c\x3b\xa5\x62\x6f\x3a\x45\x6d\x47\x24\xc5\xf2\xf6\xa5\x52\xa0\xdc\x80\xcd\x48\x34\xdc\x92\xef\x74\xe2\x83\xa9\xa9\x13\x83\x69\x13\xce\x09\x93\x9c\xc8\xb1\xc5\x91\x97\x66\x5f\xec\x4e\x97\xa8\x93\x1f\x90\x14\xb7\xa7\x4a\xa4\x26\x3e\x24\x49\xcd\x64\xee\x97\xc6\xf5\x93\x13\x1d\x4e\x96\xe4\x70\xc2\x04\x87\x13\x25\x37\x0c\x27\x36\xa4\xaf\xc6\xd6\xa4\x86\xbe\xbf\x16\x49\x73\x33\xa1\x61\x6b\x7a\x42\x8a\xee\x10\xea\xdc\x77\xa5\x26\xe0\x9d\x95\x8d\x1f\xe2\x58\x69\x09\xc7\x4a\x49\x48\xba\xa9\x29\x31\xe5\x94\x3d\x39\x79\x78\x18\x0d\x83\x21\x0c\x3f\x16\x14\x46\x9b\x07\x60\x6b\xf2\x01\x33\xc3\x47\x31\xe9\xa3\xe4\x39\x29\x2b\xe3\x0b\xdd\x37\x31\x31\xa2\x48\xb6\x70\x33\x46\x4c\x8c\xa1\x19\x0f\x60\x62\xb4\xb7\x36\x3e\xea\xdb\x72\xfc\x0f\x00\x63\xc4\x47\x7d\x6b\x00\x8d\x41\x60\x8c\x68\x9a\x5b\x00\x34\xb6\x03\x63\x20\x42\x52\x9b\x00\x1a\xdb\x81\x31\x30\x93\xdc\x00\xd0\xd8\x0a\x8c\x81\x0a\x47\x6f\x00\x68\xec\x00\xc6\x40\x31\xd2\xbd\x00\x1a\x87\x9f\xa5\xed\x28\x1a\x1d\x74\x0c\x44\xb2\xc3\x6e\x14\x8d\x0d\x74\x8c\x68\xaa\xbb\x51\x34\xb6\xa1\x63\x20\xce\xfe\x0e\x14\x8d\x0d\x74\x0c\x54\xb2\xc7\x2e\x14\x8d\x0d\x74\x0c\xfc\xf1\x1f\x51\x34\x46\x14\x8d\xdd\x63\x44\xd1\x18\x51\x34\x30\x63\x44\xd1\x18\x51\x34\xf6\x8c\x11\x45\x23\x6d\x8c\x28\x1a\xc8\x31\xa2\x68\xa4\xd3\x1c\x51\x34\x46\x14\x8d\xb8\x31\xa2\x68\x8c\x28\x1a\x23\x8a\x06\x8e\xcc\x88\xa2\x31\xa2\x68\x8c\x28\x1a\x23\x8a\xc6\x88\xa2\x81\x1a\x23\x8a\x86\x1b\x23\x8a\xc6\x88\xa2\x31\x34\x46\x14\x8d\xad\x63\x44\xd1\x18\x51\x34\x46\x14\x8d\x3d\x63\x44\xd1\xd8\x3f\x46\x14\x8d\xd6\xf8\x75\xa1\x68\x74\xf2\xa2\x92\xb4\xdd\x1d\xd9\x33\xbb\xa1\x34\xe2\x57\x9a\xaf\xd8\x79\x24\x94\x46\x34\x51\x87\xeb\x30\xf8\xf9\x07\x23\x89\xec\xc5\xd3\x88\xcf\x26\x70\x35\x3d\x71\x78\x1a\xd1\x54\x03\xee\xc6\x20\x9e\x46\x7c\x0a\x4c\x8d\xbb\x31\x8c\xa7\x81\x49\x00\x71\xb8\x1b\x43\x78\x1a\xa8\xcd\xef\xe1\x6e\xec\xc2\xd3\x88\x4f\x55\xda\x86\xbb\x31\xe2\x69\xec\xa1\x39\xe2\x69\x8c\x78\x1a\x23\x9e\xc6\x88\xa7\xb1\x7d\x8c\x78\x1a\x23\x9e\x06\x66\x8c\x78\x1a\x51\x63\xc4\xd3\xd8\x1c\x23\x9e\xc6\x88\xa7\xb1\x39\x46\x3c\x8d\x11\x4f\x63\xc4\xd3\xd8\x45\x62\xc4\xd3\x88\x7f\x78\xc4\xd3\x18\xf1\x34\x46\x3c\x8d\x11\x4f\x63\xc4\xd3\x88\x1f\x23\x9e\x46\xf4\x18\xf1\x34\xea\x31\xe2\x69\x90\x11\x4f\x23\x72\xfc\x16\xf1\x34\xa2\x7f\x4a\xd5\x62\x90\x5f\x76\xf8\xce\xd9\xa5\x5a\x54\x4e\x94\xfb\xc0\x0e\x13\x46\xad\x21\xcc\xe9\xc4\x7d\x2e\xb3\x87\x88\xe0\x3f\x5f\xd1\x05\x3b\x3b\xd3\xe4\xdd\xfb\x2b\x7b\x28\x2a\xcd\x72\x57\x99\xce\x75\x38\x24\xa5\x92\x8f\x3c\x67\xf9\x94\xfc\x4c\x15\xa7\xb3\x08\x14\x09\x28\x64\x66\xc2\x0a\xbd\x7f\x79\xfd\xf3\xe5\xa7\xbf\x7d\xb8\x7c\x7f\xfd\x06\x3c\x2a\xec\x73\x49\x45\xce\x72\x52\xe9\xc0\x83\xbc\x9e\xc3\xd4\x59\x44\xa2\x1e\x13\x8f\x5c\x49\x61\x3f\x1e\x7c\x04\x94\x3c\xfa\x59\x91\x8c\x0a\x1f\xaa\x56\x4c\xcb\xe2\x91\xe5\xe7\x51\x51\xea\x7a\xb6\x81\xa3\x71\x51\x56\x26\xf8\x23\x20\x04\x3e\x63\xa4\x12\xd9\x92\x8a\x85\x5d\x87\xfb\x08\xa2\xed\xef\xd6\x6b\x61\xe8\x67\x3b\x3f\x30\x9c\x75\x46\xcb\x90\xad\x42\x49\x2e\x2b\x3b\xf9\x7f\xf9\x97\x61\xcd\x94\xb3\xef\xc8\xbf\xb4\x08\x4f\xc9\xb5\xa7\xd5\x5a\x70\x17\xb2\x67\x8f\x4c\x91\xd9\xf0\x34\xc3\x76\x9c\x13\xc5\x16\x54\xe5\x05\xd3\x50\x35\xff\xb4\x64\x00\x8a\xe2\x94\x52\xbf\xc0\x2c\xae\xec\xc4\x89\xaf\x29\x79\x57\xef\x87\x8b\x7d\xe7\x53\xf2\x5e\x42\xe0\x76\x2e\xbf\x23\x4b\x63\x4a\xfd\xdd\xc5\xc5\x43\x35\x63\x4a\x30\xc3\xf4\x94\xcb\x8b\x5c\x66\xfa\xc2\x50\xfd\xa0\x2f\xb8\xb0\x17\x67\x92\x53\x43\x27\xa0\x28\x65\xe0\x2f\xbc\x70\x72\x61\x92\xc9\xd5\x8a\x8a\x7c\x42\xfd\x55\x98\xd4\xc7\xe8\xe2\x77\x9e\x4f\x4e\x68\xfd\x2b\x2e\x26\x74\xa2\x97\xac\x28\xce\x06\xe6\x1f\xa9\xbd\x20\xb8\x60\x2c\x83\x61\xe2\x11\xc5\x05\x7e\xf4\x41\x9b\xd6\x95\xa8\xf7\x0a\x18\x83\x66\x26\x26\x69\xa9\x73\x07\xb7\x6d\xdb\x71\x56\xac\x33\xf7\x6b\xf1\xf8\x33\x6d\xfb\x93\xc1\x6c\xdb\xf2\x21\x11\x2c\xd9\x93\xb0\xb7\x97\x92\x77\xf5\x87\x0c\x3e\x89\x0b\x62\x58\xe5\x26\x4e\x7a\x75\x3e\xf4\x03\x5d\xd5\x3a\xc7\xb6\xef\x8b\x95\xbd\xef\xbd\xdb\x8d\x92\x77\x7f\xbb\xb9\xba\xfe\x70\x7f\xf3\xfd\xcd\xf5\xa7\xb8\xa7\x91\x12\x1b\xf4\xa4\x84\x4f\x3d\x0b\xf2\x61\x07\xff\x8f\xfc\xd2\x1d\x52\xa2\x54\xec\x91\xcb\xaa\xd1\x0b\x5b\xab\x19\x49\xb9\xb9\x1c\x9e\xd1\xd7\xa7\xde\xc7\xd9\xd6\x44\x33\xf5\xc8\x33\x76\x08\xf1\x08\xb1\x14\xab\x99\x2c\x19\x5a\x38\x45\x92\xb6\x3a\x42\xac\x88\x8a\x24\xd9\x08\xb2\x28\x41\x15\x49\xb5\x23\xce\x86\xc4\x15\x62\x5d\x7b\x42\xad\x16\x5a\x57\x6c\x4e\xab\xc2\x29\x56\xaf\x5e\x4d\x87\xa4\x85\x27\x98\x70\xc1\xbe\x57\x32\x12\x72\xa5\x73\xc9\xee\x20\x85\x01\xc0\x9e\x76\xb1\x94\xe8\x72\x07\x98\x47\x87\xe1\x7b\xf5\xcf\x59\x4a\x5e\xff\x73\x8e\xfe\x28\x92\xf8\xb0\x70\x26\xc5\x9c\x2f\xde\xd3\xf2\xaf\x6c\xfd\x89\xcd\x13\x33\xaf\x9c\x01\xab\x5d\x6c\x11\x8c\x30\x2b\x07\x1c\xe1\x78\xe3\x26\x2d\xa8\x8d\x0e\x65\x6f\x80\x15\x39\xfb\xd3\x5b\x7b\xcf\x60\x8b\x61\x64\xd9\xd6\x49\x9f\xb5\x85\x9a\xbf\xd1\xc6\x29\x77\x68\x17\xc2\x80\x2a\x98\x49\x91\xb1\xd2\xe8\x0b\xf9\x68\x39\x33\x7b\xba\x78\x92\xea\xc1\xea\x76\x96\x37\x4d\x9c\x71\xa5\x2f\xc0\xf3\x70\xf1\x3b\xf8\x7f\xc8\x29\xdc\x7f\xbc\xfa\xf8\x1d\xb9\xcc\x73\x0f\x03\x58\x69\x36\xaf\x0a\x8f\xf0\x34\x25\xb4\xe4\x3f\x33\xa5\xb9\x44\x23\x08\x3c\x70\x91\x9f\x93\x8a\xe7\xff\x2b\x8e\x89\x84\x91\xb8\xa7\xb2\x74\x41\x88\x03\xf6\xf5\x0e\x3c\x39\xeb\x8e\xf2\x5f\xdf\x23\xac\x0b\x43\x41\x06\xaa\x3d\xdb\x21\x62\xe8\x05\x77\xc2\x62\xcc\xa4\x2c\x18\x02\x92\x20\xc5\xdb\x80\x89\x76\x25\x78\x19\xe0\x3c\xa5\x73\xb8\xb3\x86\xc5\xb9\x18\x84\xbf\x7d\xa5\x44\x05\xf7\x74\x55\x96\x52\x19\x4d\x56\xcc\x50\x6b\x59\x4d\xed\x95\x39\xef\xfe\x4f\x70\xe1\x61\x4e\x7b\xfd\x34\x38\xd5\x74\x8b\x1c\x48\x16\x97\xe6\x71\x0e\x8e\xc2\xa9\x90\x39\xb3\xec\x03\x43\x1f\x1e\xf4\x9a\xd9\x65\x96\xc9\x4a\x18\x20\x41\xb4\xa1\xa6\xd2\xd3\xa5\xd4\xe6\xe6\x16\x45\xd1\x3d\x58\xca\xfc\xe6\x36\x52\xc6\x93\x64\x09\xd1\xb0\x90\x03\xee\xa6\xa7\xd0\x06\x68\x5c\xd1\x84\xc2\xa7\xef\xed\xe9\xb9\xa5\x66\x69\xc5\xfb\x93\xe2\xc6\x30\x01\xaa\x25\xe4\x4d\xcb\xf9\xb9\xbd\xa6\xa0\x01\xe1\xa3\x12\xaf\x1e\xbf\x79\xf5\x2c\xf2\x6b\x1e\x3e\xe2\x80\x05\x85\x35\xf0\xab\xe9\xae\x54\x2d\x83\x0f\xf5\x83\x5f\xde\xde\x90\x47\xb7\x5f\x2f\xd4\xb5\x5a\x2f\xe0\x29\x59\x5e\xc8\xb7\xfd\xfe\x68\xac\x2f\x50\x0c\xfb\x56\xdb\x6f\x98\x73\x00\xb1\xd1\x3a\x17\x98\x14\x7c\xc5\x3d\xb4\x8f\xc7\x2a\xd5\xe4\xb5\xfb\xe3\x34\x2b\x2b\x0c\x57\xf1\x4f\xad\xd8\x4a\xaa\xf5\x79\xf8\x9f\xac\x5c\xb2\x15\x53\xb4\x98\x68\x23\x15\x5d\xa0\x58\x5f\x98\x12\x4c\xa5\xf9\x5f\xee\x15\x9d\x49\x6f\xbe\x07\x13\x26\xb2\x46\x77\x56\x29\xab\xc8\x15\xeb\x20\x26\x58\x7e\x72\xde\x58\xef\xe0\x87\x03\x55\xd2\xda\xef\xe3\x94\xdb\xfa\x56\x20\xef\xb2\xb5\xab\x1e\x65\x51\xad\x98\x3e\xaf\x55\x2a\x07\xad\x2b\x1e\xad\x85\xa5\x9f\x45\x99\xcb\xf9\x23\xd7\x07\xa5\xcd\xdf\xd5\x51\x6b\xc8\x51\xa8\x4c\x59\x19\x5f\x53\x98\x16\x8c\x62\x9f\x4b\xa9\xc1\x82\xaf\xb3\xe8\xf3\xc6\x56\x46\xd2\x7c\xf5\x0d\x2e\xa4\x9c\xb8\x8c\x61\xae\x87\x1c\xac\x80\x6d\xfa\x5d\xc3\x7d\x6a\x41\xf1\x0c\x67\x21\x85\xbb\xa3\x41\x9a\x13\x98\xbb\x66\x99\x62\xe6\xd8\x56\xbb\xa3\x8a\xab\xb4\xf5\x6a\x70\x3b\x5f\xe1\xab\x30\xf9\xeb\x20\x2f\x7c\x32\xfa\x0a\xb9\x13\x08\xb5\x7e\xd3\xb6\x7b\xf8\x11\xd2\x9f\x1d\x55\xac\xc5\xca\x22\xfd\x3c\x61\x8c\xee\x87\xd1\xfd\xe0\xc7\x89\xdc\x0f\x77\x29\xe7\x78\xf4\x3d\x24\x3f\x10\x3f\xfb\x09\x5c\xe3\xc8\x38\x29\x22\x5f\x62\x38\x4e\x0a\x49\x0b\xb7\x55\x51\xb8\xc3\x81\x4b\x9d\xb8\xe9\x3d\xec\xab\x17\x6a\x55\xcf\x57\xc2\x61\x52\x1c\x40\x1d\xf0\xc4\x9a\x96\x24\x8d\x34\xb2\x3f\xa8\x22\xb2\x95\xac\x96\x59\x56\x85\x6f\x8a\x50\x0b\x08\xf8\x5c\x9f\x9a\x11\xca\xdd\x6f\x65\x6e\x6f\xcb\x30\xb7\xbe\x99\x37\x76\x29\x64\x43\x68\x56\x4f\x36\x04\x8f\x4a\xaa\x2d\x6d\x23\x09\x17\x56\xf1\xcc\x2b\x3a\x5c\x48\x65\x27\xca\x14\xe1\xab\xd2\xe5\xda\x3a\x27\x4f\x88\x4b\xac\xfc\x37\x9f\x22\x74\xfc\xa3\xcc\x68\xf1\x11\x0e\xd4\xa7\x3a\x38\x56\xd7\xdc\x31\x21\xab\x45\x8c\x59\x6b\x79\xbf\xd5\x86\xb9\x14\x76\xb2\x05\x33\x64\x2d\x2b\xe2\xd2\xd5\xba\xa1\xb7\x3c\xfe\xba\x71\xa1\x79\xce\xb6\x1c\x82\x17\x12\x8e\xde\x23\x3b\x9d\x34\x8c\xe4\x43\x5f\x44\x66\xc6\xcb\x4a\x27\xfd\x22\xc9\xc6\xcb\x48\x94\x6c\x3c\x05\xe7\x13\xdc\xd4\x86\x2e\x32\x65\x2c\x64\x8b\x58\x1a\x9c\x16\xfc\x9f\xee\xe8\xd7\x06\xb8\x26\x33\x56\x48\xb1\x88\xfa\x34\x19\xb4\xee\x29\xb9\x11\xdc\xb4\xa9\xb8\xf0\x3d\xcb\x2a\x28\xd0\x17\x44\xaa\x3c\x22\x30\x5b\x2a\x2e\xa1\x53\x51\x67\x3e\x96\x13\x6a\x43\xc1\x13\x01\x51\x75\xb1\x86\xf9\x37\xbf\x1a\x66\xaa\x94\x17\xba\x01\x34\xe1\xda\x3e\x6b\xef\xa8\x72\x2c\x6f\x49\x1f\x19\xfc\x88\xb9\xce\x2e\x11\x90\x02\x4b\x2a\x72\xf8\x79\x96\x49\x15\xe0\x2c\xac\xc2\xa1\x18\x4c\xf6\x56\x16\x3c\x5b\xfb\x96\x41\xf6\xba\xcd\x23\x52\x6b\xa9\xe8\x7d\x99\x8b\x48\xab\x15\x2d\x5a\x7f\x0b\xea\x4c\x25\xf8\x3f\x22\x90\x0a\xe8\x4a\x5a\x59\x52\xb4\x48\xe8\xcd\x1d\x0b\xf0\x23\x76\x29\x06\x49\xfe\xc8\xe7\x2c\x5b\x67\x05\x23\x34\xf3\x7e\xfd\x4f\x8c\xe6\x5c\x30\xad\x2d\x0b\x9b\x81\xe3\x44\x91\x1f\xf9\x23\x6b\xfd\x6d\x98\xfd\xb9\x22\x05\x67\xb8\x7e\x6a\x17\x2b\x40\x4e\x6d\x7f\x71\x62\x2a\x18\x0c\x7d\x00\xdf\xb6\x91\xb0\x55\x95\x30\xa1\xbc\xac\xd5\xde\x68\xb6\x86\x2e\x2c\x3e\xcb\x64\x78\xef\x7d\x2b\x1c\xef\x75\xbb\x00\x1f\x5f\xd3\x7a\xa9\x71\x11\xac\x4b\x76\x1e\x55\x2c\x6a\x96\x4c\xb4\xd2\x5c\x56\xf4\xb3\xfd\x62\xe0\xd0\xd4\x84\x9c\x65\x55\xb7\x0d\x8a\x50\x4d\x5c\x0f\x9f\xee\xc9\xd1\x53\xf2\xa3\x77\x74\x2a\xe6\xeb\x0e\xbc\xc8\x8f\x68\xb6\xd5\x3a\x2c\x90\x64\xa5\xf9\x8a\x17\x54\x91\x39\xd5\x4b\x2e\xc5\xe6\x91\x72\x39\x2f\xc3\x74\x6b\x8f\xe3\xcc\x37\xd2\x21\x50\x64\xbc\x92\x8f\xf6\xc6\xa3\x33\xd1\x48\x64\x82\x61\x2d\xa2\xac\x64\x2a\x24\xcd\xf5\x45\x29\x73\x7d\x61\x17\xa3\xc9\x23\xd4\x17\x47\xca\x15\xec\x21\x10\xf8\xfa\xa9\x56\x4e\x63\xeb\x60\xc3\xae\xaf\x65\x15\x21\x8f\x9e\xa8\xc3\xa1\x55\x95\x80\x4c\x1d\xd8\x1a\xcb\x93\x8f\xac\x6a\xc4\xa4\x27\x6f\xf9\xd0\xc1\x24\xe5\x48\xf1\xec\x52\x99\x71\xa9\xca\x91\xa4\x07\x12\xd6\x3a\xa9\x68\xb1\xca\xc4\xd6\xb4\xe6\x3d\x69\xcb\x91\x74\x77\x24\x37\xef\xc8\x0f\x8b\x75\xe2\xed\x4b\x71\xde\x92\x1f\x16\x3f\xd7\xbd\x89\xce\x9b\xf9\x61\x91\x84\x87\xd2\x9d\xb7\xe6\x87\x45\xd2\xde\x9f\xf4\xdc\x4b\x6a\x8e\xa4\xf9\x95\xa5\x3e\xbb\x81\x2a\xdf\x42\x7b\x8b\x70\xd5\x16\xfe\x1b\x52\xb8\xcf\x75\xcd\x6c\xdc\xdb\xa6\xe4\x83\x34\x8d\x66\xea\x18\x66\xe4\x57\x52\x02\xeb\xd7\x2e\xad\x68\xf8\xd1\xf5\x87\xfb\x4f\xff\x73\xfb\xf1\xe6\xc3\x7d\x60\x4b\x91\x54\x07\xeb\x2c\xf0\xd9\x92\xc7\xae\xb6\x70\x03\x57\x73\x11\x7b\x72\xc6\xe4\xd6\x67\x4f\x6e\x4d\x50\xa8\xdc\x18\x99\x57\xeb\x81\x58\xe6\x15\x51\xcf\xe1\x06\xaa\xaa\x23\x3a\x3e\x67\x36\xb2\xdc\x93\x0f\x00\x6a\x55\x51\x75\x1e\xd1\x6e\xef\xfa\x48\xa7\x56\x7b\xb8\x91\x12\xf0\xc3\x86\xab\x4e\x52\xff\xe1\xc6\x21\x55\x20\x6e\x24\x85\x77\x10\x15\x21\x6e\x9c\xa2\x2e\xc4\x8d\xc8\xea\x10\x14\xcd\xed\x57\xad\x7f\x7b\x70\xd3\xdc\x5d\x4f\xd2\xaa\x14\x41\x91\x3c\x4e\xb1\x63\x7b\x44\x89\x5f\x14\xc5\x41\x0b\xc2\xce\x1b\x45\xf1\x24\x76\x84\x1b\xf1\xd6\x04\x72\x55\x8f\x55\x48\xd9\x1e\x07\xd5\xa7\xb8\x91\x7e\xf5\xe3\x6b\x55\xdc\x88\xac\x58\x41\x2d\x40\x53\xdd\x32\x50\xb7\x82\xa2\x8a\xaf\x71\x71\x23\x15\x00\x31\xb9\xde\xc5\x8d\x13\x54\xbd\x1c\xf6\x3d\x24\x1d\xcc\xf1\x98\x75\x30\x6e\x1c\x84\xa0\x84\x4f\x4a\x71\x23\x22\xbc\x96\x40\x15\xed\xc9\x3c\x59\x82\x8a\x1b\xfb\x43\x6f\x49\x24\x37\xc2\x75\x09\xc9\x2a\x6e\x1c\xb4\xef\x69\x89\x2b\x6e\x0c\xa5\xaf\x24\xad\x4b\x7d\x87\x8f\x95\xc7\xe2\x46\x5a\x36\x8b\x1b\xa9\x38\x72\x29\x18\x72\xc9\x70\x51\xf8\x0a\x1b\x37\x62\xea\x6c\xd0\xeb\x5d\xca\xfc\xbb\x13\x55\xdb\xb8\x11\x57\x73\x83\x26\xdb\xad\xd1\xd9\x59\x79\x83\xa7\xdb\xa9\xd4\x49\xad\xbf\x71\xe3\x10\x59\x95\x5a\x8b\xe3\xc6\x70\x45\x4e\xd2\x8d\xb7\x8f\xef\xad\xcb\x49\xa2\xda\xae\xe5\x49\xab\xce\xf1\xb3\x3b\x84\xbb\x26\x56\xea\xb8\x31\x58\xaf\x93\xb4\x2e\x3e\x71\xf6\x78\x55\x3b\x6e\x1c\xb0\x4c\xe9\xec\x15\x5f\xc7\xe3\x46\x32\x93\x4d\xaf\xe9\x71\x23\xa2\xb2\x07\xbd\xf6\xdd\x4a\xa0\xed\xf5\x3d\x78\x46\xb1\xab\x1e\xa8\x57\xe5\x83\x26\xbc\xb3\x2a\xa8\x5b\xeb\x83\xa6\x7b\xba\xda\x20\x37\x0e\xaf\x10\x72\xe3\x10\xee\x7d\x40\xb5\x90\x1b\x27\xa9\x19\x72\x63\x6f\xe5\x50\x12\x45\x7c\xb5\x91\x1b\x87\x01\xc9\xa6\x54\x1e\xf9\x47\x87\xea\x8f\x52\xd7\x75\xe5\x90\xf5\xb6\x57\x21\x25\x11\xed\xc8\x45\x64\x2d\x92\x1b\x07\x2d\x72\x5a\x5d\x92\x1b\x43\xd5\x49\x69\x1a\x48\x5a\x45\x93\x7f\xf8\x4b\x48\xbe\xc4\xcf\x4d\x16\x7c\x69\xf5\x4e\x6e\xc4\x55\x3d\xa1\x57\xde\x6b\x30\xa9\xb5\x4f\x6e\xbc\x14\xc7\x4f\xa7\x1a\xea\xb0\x33\xbc\xa3\x26\x2a\x51\x59\x84\xea\x2c\x74\x65\x94\x9f\xd2\xe8\x90\x1a\x1d\x52\xd8\x87\x5f\x9c\x43\xca\x55\xca\x8c\xde\x28\x74\xa8\x05\x89\x96\x80\xfb\xaa\xc8\xfa\xab\xc4\xf9\xa0\x33\x1d\x12\xe1\xcc\x42\xb6\x43\xb0\xd6\x8c\x24\xa5\x2c\xab\x82\x9a\x83\x30\xf8\xb6\xa4\x3e\x78\x41\x83\x8d\x10\xd7\x89\xb5\xde\x3e\x5d\x6d\x8f\xc0\x93\xcb\xe8\xb6\xf5\x5c\xb8\x12\x5d\x98\x4c\xc8\x71\x52\xcc\x99\x53\x84\xba\x0c\x89\x47\x26\x8c\xbd\xb8\xb1\x77\xa3\x8b\x66\xc8\xb5\x2b\x9b\x00\xac\xe8\x5f\x96\x4c\x78\x6d\x03\x15\x77\xe4\xa2\x69\x01\x5a\x97\xfc\xd7\x4d\x0a\xfa\x7d\x97\x11\xf3\x2c\xa8\x36\x61\x39\xe1\xfb\x0d\x7d\x80\x08\x7e\xc6\x72\x26\x32\x06\x2d\x9c\xe2\xfb\xf3\x04\x3c\xc8\x99\xb5\x79\xc9\xb5\x78\xac\x03\xc5\x95\x4b\x3e\x72\x0a\x86\x7d\x53\xec\x24\xfb\xf3\xf9\x12\x69\x33\xf6\x42\xf9\xd0\x69\x2b\x7b\x06\x74\x24\x9c\xe2\xeb\x55\x4c\xb8\x66\x75\x6c\x21\x76\x71\x53\xd4\xc3\x3a\xc6\x89\x54\x95\x37\xf4\xc2\x26\x12\xd2\xd5\xed\x9e\x21\x4e\x9b\xa2\x7c\x9d\x42\xf1\x7a\x39\x4a\xd7\xc9\x0a\xd5\xd3\x4b\xd5\x0f\x50\xb4\x52\x95\xac\x93\xe1\xe5\x91\x03\x95\xaa\x54\x85\x2a\x49\xc1\x29\x15\x9b\xf3\xcf\xc9\x77\xfb\xb2\x55\x6f\xcd\x73\x26\x0c\x9f\x73\x06\xd5\x7f\xa5\x62\x25\x43\x76\xd8\x0b\xbd\xa4\xa1\x17\xa4\xe8\x6e\xc2\x34\x18\x81\x28\x8a\xcf\x9c\x5d\xe7\x6c\xcc\x43\x99\xe5\x5d\xc0\x11\x19\x39\xe5\xc8\x29\x37\xc7\xcb\xe3\x94\x49\xd0\x1e\x5f\x11\x9b\x3c\xb1\xcd\x05\xf5\x27\x29\x85\x31\x57\xad\xfa\x15\xb8\xbd\xb1\xb5\x49\xf5\xdd\x69\x55\x48\x3a\x70\x8a\xc8\x15\x81\x76\x49\x75\x0b\xb5\x5a\x04\x18\xe9\x1a\xd1\xb8\xe2\x5a\x45\x0a\xf6\x18\xdd\xc9\xd7\xe9\x9a\x64\x45\x05\x5d\xb8\x9e\x6f\x46\x06\xef\x3e\x91\x0a\xfa\x85\x2b\x9e\xe3\xd3\x78\x3d\xea\x06\x17\x24\xd4\x88\x02\x09\x25\x8b\x82\x29\x4d\x0a\xfe\xc0\xc8\x15\x2b\x0b\xb9\x5e\x21\xda\xe1\x52\x91\x93\x3b\x43\x8d\x65\x08\x77\xcc\xe8\xd3\xe0\x8b\xd7\x00\x29\xae\x12\x3d\xe5\x90\x00\x4c\x0a\x80\x7c\x90\xd2\x97\xb3\x7f\x14\xc0\xa5\x2f\x8b\x27\xba\x8e\x0e\xbb\x7c\x60\x8f\x4c\x9d\x93\x9b\xf9\x07\x69\x6e\x9d\x11\xd3\xcd\x61\x75\xe4\x08\x9f\x93\xef\xa0\xa9\x75\xf4\xed\xa2\x0b\x30\x73\x1b\x70\x13\xa9\x3a\xaf\x71\xcc\xf7\x89\x0f\x83\x90\x84\x91\xdc\xaf\x64\xf7\xc5\xf8\x1d\x50\xb2\xe2\xc5\xfd\xef\x93\x6c\x77\x11\x4a\xf2\x13\x36\xfa\xd2\x15\xf1\x37\xbd\xaf\x5b\x37\x49\xaf\xb5\x61\xb1\x2a\x84\xef\x80\x06\xa6\x33\x17\x44\x31\x5d\x4a\xa1\x59\x07\xd2\xa1\x99\x69\x24\x51\x70\x83\xe8\x64\xfb\x1b\xaf\xd2\x94\x52\x9b\x3b\x43\x95\x49\xc5\x2a\xbd\x0d\x04\x00\x69\x82\x16\x05\xcb\x09\x5f\xad\x58\xce\xa9\x61\x05\xc6\xfb\x48\xe7\x86\x29\x42\xbb\x5e\x9d\x4c\x31\x1a\xc0\x30\xec\x6e\x39\x28\x0a\x4c\x69\x42\x0b\x0f\xa3\x43\xd9\x30\xb5\xe2\x02\xdc\x39\x2e\x73\xc0\xe3\x6e\x60\x66\xbc\x03\x0f\xa3\xe1\x20\x20\xfb\x9b\x13\x86\xa0\xdd\x07\x7c\x25\xb3\x42\x66\x0f\x9a\x54\xc2\xf0\xc2\x2d\x85\x94\x0f\x24\x93\xab\xb2\x80\xbb\x89\xa0\x9d\x7e\xc9\xeb\xff\x9c\xd4\x27\x7b\x62\xe7\xa1\x2f\x7e\xd7\xfc\x13\xfc\xe1\xd4\x38\xaa\xec\x33\xcb\x0e\x80\x5e\xb3\xbc\xdd\x6e\x3b\xe4\xce\x48\x51\xab\xe3\x73\x69\x05\x33\x3e\x8a\xd1\xf4\x43\xac\x19\xf4\x94\x5c\x7f\x66\x59\xd3\x4d\x13\xab\xb8\x2d\x03\xe2\x08\xa0\x09\xd0\x07\x64\xe5\x54\x7a\x9c\x13\x55\x83\xdc\x1e\x9d\x15\x7e\xe7\xa8\xc0\x55\x83\x83\x0c\xff\x33\x21\x72\x52\x70\x01\x5c\xd5\x57\x32\xb7\x11\xa7\xea\x33\x97\x92\x14\x61\x09\x78\x5b\x88\xe4\x5c\x41\x43\xc8\x75\x5d\xb5\xe1\xe7\x4b\x62\xf0\x71\x36\x87\x92\xd2\x90\xd7\x67\x17\x67\x6f\x36\x1c\xf3\x67\x56\x23\x2c\x98\x93\x35\x29\x71\xbb\xfb\xd6\xec\xac\x42\xc0\x57\x65\xb1\x86\xd5\x39\xcb\xcf\x49\x04\xb8\xc9\xe6\xf0\x45\x21\xaa\x12\x61\x75\x7d\x01\xf8\x39\xd1\x92\x18\x45\x43\xc3\xe7\x04\xda\x40\xc7\x92\x35\xaa\xf2\xb2\xf7\xf5\xd9\xff\x7b\x76\x4e\x98\xc9\xde\x90\x27\x29\xce\x52\x66\x6c\x37\x6e\x4a\xee\x01\x73\xad\x99\xec\x5a\x56\x44\x30\x96\x98\x29\xc9\x3e\x97\x05\xcf\xb8\x29\xd6\x20\xc8\x88\xac\x8c\x03\xf2\xa0\xc6\x97\xc3\x27\x10\xbd\xfe\xcc\x8d\xcf\xfe\xb5\x3c\xe6\x2d\xdc\x07\x27\xd4\x08\xb5\x6a\xf5\x23\xbb\x58\x32\x5a\x98\x65\x4a\xef\x71\x7b\x06\x84\x14\x93\x7f\x32\x25\xa1\x18\x5f\x78\x5a\xf8\xa9\x26\xb7\x7e\x3f\x28\xf6\x9b\xda\xc2\x3c\x31\x4c\x69\xc5\xdd\x0f\x0c\xa1\xec\x90\x3e\x5b\xfb\xaf\xfb\xfb\xdb\x1f\x98\x69\x35\x49\x06\x59\x6c\x0c\xd6\xff\xe9\x53\x15\xc1\x09\xc8\xd4\x5c\x2a\x24\x33\x48\xe7\xef\x4b\xa9\x91\x2b\x40\x36\x56\x41\x6a\xe3\xa0\xbe\x9c\xba\x2b\x52\xda\xd7\x13\x62\x64\x37\x63\x3b\x80\x96\xdd\xdc\x4e\xc9\xff\x44\x41\x02\xf5\x47\xa9\xe4\x8c\xce\x8a\x75\x8d\x15\xa4\x99\x21\xaf\xec\x74\x5f\x59\x4e\x6c\xf7\xe9\xbf\x18\xcd\x99\x4a\xe1\xea\x96\x89\x31\x9a\xdc\x11\x3c\xe9\x8a\xb4\x66\x7c\xa8\x40\xae\xb4\x91\x2b\xb2\x74\xc4\xfc\xda\x24\xad\x82\x77\x5c\xc2\xf9\x9d\xc2\x8d\x70\xfe\x0c\xab\x00\x97\x2c\xa1\xf9\xb1\x1d\x7e\x5e\xcf\xc8\xb8\x36\xee\xb5\x5b\x67\xff\xf7\x59\x62\x9e\x0e\x25\x59\x7b\xa1\xed\x3a\xd7\x05\x9b\xd8\xc4\x0f\x37\x60\x81\x1d\xaa\x5c\xda\x8d\x48\xce\x77\x23\x07\x64\x65\x91\x6d\x3e\x7b\xbf\x26\xe0\x12\x4b\xa4\x49\x30\x69\x20\xfd\x71\x90\xac\x22\x29\xc0\x00\xed\x71\x9a\xe5\xc0\xd7\x00\x37\xe3\xc0\xf5\x48\x4d\x4c\x22\xd8\x74\x9e\xee\x83\xa9\x5f\x9c\x9c\x0b\x4b\x0e\xd0\x54\x08\x29\x93\xaa\x81\x36\x6b\x81\x1c\xac\x23\x94\xd9\x8b\xc4\xdc\x36\x60\x25\x9a\xa9\xc7\x78\x00\x91\x66\x1c\x70\x58\x4a\x89\xf1\x30\x85\x41\xc5\xfa\x23\x3a\xf7\x18\x1a\xa9\xc3\x4c\xb9\x30\x6c\x81\x84\xb1\x68\x3f\x9f\x5a\x50\xb0\x89\x86\xa2\x88\xa8\x56\x33\xa6\x52\x8b\x2b\xdd\x02\x6e\x1c\x80\x56\xb6\x57\x02\xc9\x0f\x6e\x4a\x21\xbc\x14\xc4\x3a\x15\x0b\x46\xbe\x49\xb3\xa0\xfe\xf8\x6f\xff\xf6\x87\x7f\x9b\xba\x8f\xae\xf3\xc6\x04\xb9\xb9\xfc\x70\xf9\xb7\xbb\x9f\xdf\x01\x66\x05\x7e\xaa\x9f\x27\x8d\x77\x6a\xc2\x85\x99\x48\x35\x71\x7b\xf3\x1d\x31\x0a\xcd\x09\xa0\x6e\x31\x81\x87\x77\xe3\x7b\x40\xc4\x83\x7e\x83\xd3\xc0\x6b\xc1\x69\x8c\xd4\xeb\xbe\x56\x33\xef\x46\x0b\xec\x85\x7d\xc6\x9b\x9a\xc6\xd0\x27\x70\x3c\x9f\xc3\x7e\x33\x59\x79\x27\xb3\x87\x83\x2c\xb8\xb3\xfb\x77\xb7\x8e\x48\xcb\x88\xa3\xc2\x3b\xdb\x90\x6b\xcd\xc5\xa3\x2c\x1e\x01\xc0\x9e\xdc\xbf\xbb\x85\x85\x98\xc2\x7f\x81\x17\x94\xc4\x43\x27\x86\xb1\xb6\xf3\x0a\xc5\x66\x3e\xb4\x5e\x83\xce\x43\xe1\x20\x2d\xb8\x36\x3c\x43\xd2\xb5\x73\xaa\x9d\xb6\x30\x3b\x5c\x44\xfd\x8b\xda\x9b\x67\x1f\x43\x50\xbe\x31\x3d\xd3\xae\x99\xbf\xa6\xbb\x4c\xcf\x04\xa2\x09\x05\xdd\xa3\x2c\x8d\x1c\x5d\x59\xea\x65\xa8\xab\x5e\x1c\x65\xe9\x17\x97\xa5\x2f\x5b\x5a\x24\x3c\x54\x2a\x76\x67\x64\x99\x1c\x0b\x75\x8f\x1f\x1c\x09\x9d\xb1\xb9\x54\xac\x1f\x0a\x6d\x05\x2c\xf3\x8a\xe1\x0e\x15\x15\x50\xed\x1f\x7c\x8e\xb2\x1d\x94\xf4\xb9\xf7\xba\xca\x30\x45\xf5\xde\x77\x2d\x98\xd6\x17\x10\xf4\xac\x4a\xe7\xa3\x80\x80\x6b\xa5\xd8\xb9\x5d\x4d\xb6\x82\xb5\xc1\x35\x80\xf4\x99\xf2\xf6\xe3\x99\x80\xc7\x09\x33\x99\x2b\x68\xf0\xf1\x5f\x5c\x54\x46\x48\x53\x6f\x48\x3f\xac\x9a\x29\xaa\x97\x0c\x10\x43\xd9\x67\x6e\x50\xfe\x27\x87\xe0\x4f\xb5\x14\x2e\x6c\xe4\x37\x88\x4b\x61\xf7\xab\xee\x32\x83\xd1\x6f\x9a\x4f\x74\xdf\x7b\x2b\xf3\xb3\x33\xdd\x21\xbd\x50\xb8\xa2\xc7\x92\x29\x2e\x73\x02\x58\x26\xb9\x7c\x12\x64\xc6\x16\x5c\xe8\x70\xca\xec\x2b\xfd\xc1\xc5\x38\xd2\xa5\x7c\x60\x10\x7f\x0a\x00\xc3\x53\xf2\xa9\x83\x03\xe7\xab\xa0\x33\x89\x92\xd4\xb2\x13\xe6\xef\x87\xed\xa1\x78\x02\x8e\x6b\x45\x0b\xd4\x95\xaa\x2f\x4f\xa8\x6f\x31\x5b\x17\x17\x41\x11\xb6\xc1\x2f\xee\x66\xa4\x7f\x23\x7e\x8f\xb9\xfe\xfb\x23\xfd\xf6\xa8\xc2\xbf\x21\xcf\xd5\xc6\x19\x0a\x27\x83\x6b\x7b\x8a\xb3\x65\x3c\x3a\x2e\x19\x93\x08\xc6\x24\x82\xfd\x63\x4c\x22\x18\x93\x08\xc6\x24\x82\x31\x89\x20\x72\x8c\x49\x04\x63\x12\xc1\x98\x44\xb0\x77\x8c\x49\x04\xc3\x63\x4c\x22\xd8\x35\xc6\x24\x82\xcd\x19\x8d\x49\x04\xdd\x29\x8d\x49\x04\x11\x63\x4c\x22\x18\x93\x08\x10\xcf\x8f\x49\x04\xd8\xf1\x15\x04\x3e\xc6\x24\x82\x7d\xe3\x65\x87\x85\xc6\x24\x82\x31\x89\x60\x4c\x22\xf8\xed\xca\xd2\x31\x89\xe0\x65\xc9\xd2\x97\x2d\x2d\x12\x31\x2d\xa2\x1f\x08\x31\xf4\x5b\x6b\x99\xa7\xe0\x16\xdc\x42\x0c\x8f\x67\x3e\xf8\x2e\xe7\x9d\xea\x73\x47\x3c\x1a\x0f\xa0\x1b\x68\x75\xad\xd6\x5c\x55\x74\x08\x9c\x37\x21\xfe\x78\xaa\x07\xa3\x0c\xf4\x9a\x96\x97\x32\x6f\x22\x87\xad\x90\xa1\xf3\x6e\xc4\xb1\x51\xbc\x20\xc2\xc5\x0a\x4f\x16\x27\x8c\x88\x11\x22\x39\x5a\x6a\x7c\x30\x4d\x96\x27\xc5\x05\x23\x62\x82\x10\xe1\xc3\x46\x47\x07\xe2\x81\x09\xa2\xe1\x14\xb1\xc0\x53\xc5\x01\x87\x62\x80\xf8\x99\x9e\x24\xfe\x77\xfc\xd8\xdf\x60\xdc\xaf\x15\xc5\xc3\x86\xbd\xb7\xc7\xfc\xda\x11\x3c\x24\xc5\x81\x78\x1f\xc1\xc7\xc3\x8f\x10\xeb\x4b\x72\x97\x27\x2b\x71\x29\x5e\xb3\x04\x69\xef\x13\xd7\xee\x97\x8a\xe9\xa5\x2c\x10\x3c\xaa\xc3\x9f\xde\x73\xc1\x57\xd5\xca\x5e\x52\x6d\x99\x0b\x7f\xac\x73\xe2\x30\x7b\x1f\xf8\x86\x93\xb8\x2e\x00\x60\x49\xf2\x9c\x29\x96\x03\x45\x7b\x1a\xe6\x06\xa5\x50\x2f\x29\xd8\x99\xba\xca\x32\xc6\xa0\xf7\x7a\xdb\x51\xf0\x87\x69\x98\x3d\x82\xa4\x43\xc7\xe5\x9a\x7c\x13\x7f\x86\x5c\x8f\x0b\xb0\x08\xfe\xf0\x7b\xe4\x9e\xe2\xac\x08\x74\xb0\x36\x32\x50\x1b\x42\x57\x18\xbf\x43\x42\x90\x36\x4d\xc8\xe2\x8d\xe5\xc1\xc0\xac\xb5\x75\x91\xf7\x7d\x4f\x50\xb6\x0e\xb1\x62\x39\xf7\x50\x40\x36\x2d\xbc\x9a\xc8\x99\x92\xc3\xaa\xc3\x21\x55\x7c\x98\x6f\x30\x9c\x9a\x16\x1c\x4d\xe2\xf4\x83\x41\x51\x82\xef\x1b\xb7\x27\x20\x7a\x40\x70\xf3\x90\xc0\xe6\x51\xfa\x55\xf4\x23\x78\xc9\x5e\xa9\x43\x3c\x24\xc9\x01\xc9\xfd\x9f\x72\x58\x88\xed\x99\xfb\xeb\x24\xac\x7b\x5a\x10\x31\x39\x80\x98\x16\x3c\xc4\x07\x0e\x87\x83\x86\x70\xe1\xb0\x6a\x7c\x42\xc0\x30\xf1\x20\xe0\x9d\x9b\x09\x8e\xcd\x43\x9c\x9a\x07\x38\x34\x87\x03\x83\x78\xcf\x18\xd9\xe7\xc8\x6c\xbb\x25\x91\x54\xb7\x39\x31\x37\x5c\x92\x78\x9a\x87\x39\x30\x8f\xe8\xbc\x4c\x09\x02\x9e\x2a\x00\x78\xc4\xe0\x5f\xd2\xd9\xc4\x33\x5e\xa4\x0b\x37\x81\x6d\x72\xc1\x0d\xa7\xc5\x15\x2b\xe8\xfa\x8e\x65\x52\xe4\x08\x29\xdf\x83\xec\xae\x6f\x98\x76\x84\x3c\x5c\x25\xce\x43\xd4\xb8\x66\x97\xd4\x77\x2c\x61\x79\x28\xc4\x09\xde\x5a\xbc\x22\x43\xc1\x9b\x6a\xbf\xf5\x85\x78\x57\xc9\xb3\x9a\x78\xae\x8c\xe5\xb0\x0d\xfe\x2f\xf9\x44\xe4\xdc\x30\x41\x5e\x73\x11\xf6\xf8\x4d\xcb\x64\xc3\xd8\x79\xc1\x6a\xaf\x2f\xa2\xa5\xf3\xcd\xdb\x40\xf6\xd7\x67\x64\x83\x3b\x41\xeb\x53\x78\x4e\x3c\xe9\x63\xba\x4e\x3c\xc9\x79\x85\xf1\x44\xba\xeb\xee\xdd\x27\xce\xf9\xd2\xe5\xb3\xdf\xb8\xd6\x0b\x08\x92\x33\x2b\x11\xed\x5c\xeb\x9b\x4f\x45\x4e\x7c\x31\x65\x7d\x48\xd0\x3a\xe6\x4b\x3d\x24\x09\x69\x17\xa7\x49\xb9\x88\x48\xb7\x20\x6b\x54\x56\x73\x54\xaa\x85\x7d\x03\x82\x66\x6a\x9a\xc5\x17\xf1\x18\x6d\x4b\xad\x48\xcf\xea\xdf\x93\xd1\x8f\x4b\x92\x18\xed\x87\x8d\x31\x9c\x0c\x31\xda\x0f\x7b\xc7\xd1\xec\x87\x97\xa8\x31\x1b\xbe\x62\xb2\x32\x27\x52\x96\x9f\x96\x1c\x85\x31\xd0\x92\xe1\x7c\xc5\x34\x91\x55\xcf\xb6\xf9\xc6\xbf\x00\x55\xb7\xdc\x16\xab\x4e\x58\xfe\xc6\x34\x66\xe4\xb9\x88\x77\x73\x6e\xf1\x4d\xf4\xe1\x16\xea\xa4\x05\x42\xa3\x5b\x88\x90\xab\x0f\x77\x7f\xfb\xf1\xf2\x2f\xd7\x3f\x4e\xc9\x35\xcd\x96\x6d\x58\x0c\x41\x28\x88\x06\x48\x6e\x5a\xd2\xc7\xd8\xeb\x47\x49\x25\xf8\x3f\x2a\xd7\x0f\x86\xbc\xae\xdf\xf0\x26\xb9\xf7\x02\x92\x23\xdb\x9b\x1c\x79\xc1\xb6\xf6\x0f\x85\xe7\x7d\xa8\x5a\x6a\x06\xcd\xaf\x10\xd6\x68\x8b\x3f\x5f\x5b\x02\x4e\x1b\x82\xa4\xb6\x25\x53\x8c\x2c\xf8\xa3\x0f\x76\xa1\x9a\x62\xd0\x3c\x04\xf9\xe1\x3a\xd9\xf3\xcc\xa5\x20\x74\x06\x21\xf1\x25\x23\x82\x19\x7b\x7b\x6a\x3f\x87\x14\xf1\xc7\xa0\xd9\xf6\x4a\x33\x7d\x4e\x66\x15\x34\x9d\x28\x15\x5f\x51\xc5\x8b\x75\xfb\x95\x34\xba\xce\xf6\x83\x0c\xfa\xe4\xba\xbf\x08\x57\x1f\xaf\xef\xc8\x87\x8f\xf7\xa4\x54\x00\x3a\x11\xcb\x44\x97\xd4\x38\x2a\xb0\x29\x33\x66\xe9\xfa\x3e\xfe\x53\x72\x29\xd6\xee\x1f\x31\xdc\x90\x6b\x62\x95\x48\x26\x2c\x29\x2f\x62\x43\xd3\x9f\x57\x6f\xa7\xf0\x7f\xaf\xec\xea\x2b\xa6\xe3\xdb\x9d\xfa\x24\x8d\x6c\x23\xed\xcb\xc9\x72\x3e\x2b\xd0\xe7\xca\xef\xef\x17\xe8\x20\x5a\x27\xaf\xdd\xda\xc5\x6d\x75\x10\xa5\x61\x52\xf1\x2a\xb4\xa5\xe0\x7a\xe0\x72\xb1\x28\x12\xd2\x3a\x13\xbb\x88\x36\x1f\x90\xdc\x19\xaf\x91\xbd\x21\x43\xd5\x33\x08\x64\x56\x7a\xd3\x68\xff\xe6\x36\x1c\xac\xa9\x6b\x68\xb5\x3a\xa0\xcd\x3c\x4c\xca\xb9\xab\xcf\xc9\x5b\xf2\x67\xf2\x99\xfc\x19\x54\xba\x3f\x62\x64\x78\x9a\xa4\x4c\x33\x5b\x9d\x6d\x74\x73\x9b\xbc\x23\xbf\x58\x76\x60\x69\xd8\x95\x34\x92\xcc\xb8\xc8\x61\x79\xd9\x67\xc3\x14\x36\x1f\xca\xef\xea\xc9\x7b\x34\xda\x09\xbf\x98\x83\xe8\xbc\xda\x37\xf3\x76\xf7\x2b\xd3\x39\x8a\x28\x92\xae\x1d\xf5\x9e\xa3\x68\x5f\x65\xed\xd8\x0f\x48\xc6\x41\x1c\xab\xde\x3a\xcb\x15\x35\xd9\xb2\xcb\xa5\x70\x86\xc7\x7b\x7b\x84\x1a\x18\x1d\x92\x4b\xf0\x54\xb8\x94\xb5\x25\x47\xc5\xf5\x9f\xf7\x02\x61\x03\xe5\x9d\x73\xb4\x7b\xd7\x91\x16\x7a\xd7\xe8\x03\x5f\x9b\xd7\x01\x1b\x48\x28\xe4\x55\xcc\xbd\x42\x6a\x3f\x30\x6f\x89\x8d\x14\x8d\xd4\x4f\xb3\xad\x97\x7a\x2b\xb7\x76\x67\xc2\x3d\x5a\x52\x9c\xc9\x9b\x51\xe1\x32\xb9\xe7\x4c\x29\x97\xdd\x38\x5b\x43\x34\x96\x67\xb8\xb6\x51\x49\x7c\xa4\x54\xd2\xc8\x4c\xa2\xba\x69\x76\x03\xd0\x9e\x00\x2c\x83\x73\xd5\xa5\xb4\xb8\xfd\xe9\xea\xf6\x9c\xdc\xbf\xbb\x85\xb6\x79\x77\xef\xee\x6f\xbb\x96\xe4\xab\xfb\x77\xb7\xaf\x4e\xbc\x18\x58\x83\x7f\xd2\x55\x09\x62\xb5\xcf\xd3\x76\xe1\x54\x8c\xe6\xfc\x64\x15\x0b\xfe\x58\x46\x2f\xa8\x9f\xcb\x74\x6b\xe9\xc2\x4a\x3e\xb2\xdc\x29\xb0\x38\xba\x4c\xe4\xa5\xe4\x56\x77\xdc\x52\xf5\x90\xaa\xd9\xa2\x11\xd3\xc6\xaa\x87\x66\x8c\x55\x0f\x63\xd5\xc3\x58\xf5\x30\x56\x3d\x8c\x55\x0f\x31\xcf\x8c\x55\x0f\xbd\x31\x56\x3d\x0c\x8d\xb1\xea\x61\xac\x7a\x88\x1c\x63\xd5\x43\xcc\xf7\x8d\x55\x0f\xbd\x31\x56\x3d\x0c\x8c\xb1\xea\x61\xcf\x83\x63\xd5\xc3\xe0\xf8\xed\x64\x2d\x8d\x55\x0f\x63\xd5\x83\x1b\x63\xd5\xc3\xe6\x18\xab\x1e\x7e\x03\x39\x5c\x63\xd5\xc3\xae\x31\x56\x3d\x8c\x55\x0f\x83\x63\xac\x7a\x18\xab\x1e\xc6\xaa\x87\xee\xf8\xed\xd8\x0f\x63\xd5\xc3\x58\xf5\xd0\x79\x64\xac\x7a\xf8\xf5\x6b\xcc\xc8\x73\x11\xda\x50\xa6\xe4\xe8\x9f\xbd\x93\xab\xb2\x32\x8c\x7c\x0a\x44\xea\x63\x4f\x66\x6b\xc8\x61\x8b\xfc\xd0\x16\x43\x39\x1c\x46\x33\x93\x62\xce\x17\x95\x82\x04\xf9\x0b\xd7\xab\x70\x92\xb9\xa9\x4e\xea\xef\x9d\xd4\xef\xbc\x38\x55\x52\x49\xc1\x57\x3c\xb6\xf8\x81\x74\xaa\x0a\x6e\x93\xc4\x7c\x92\xd8\xe8\xee\xe8\x8f\x30\xe5\x96\x2b\xdf\xde\xd2\x15\xfd\x8c\x34\x68\xe8\x4a\x56\xae\x39\xa4\x5f\xf7\xe6\x9c\xb9\xc0\x45\xd8\x56\x94\x62\xf7\x85\x0f\x00\x49\xe3\xba\x3e\x6c\xf3\x75\x9d\x83\x4f\x7e\xd2\xfd\x93\x80\x36\x6d\xf7\x9d\x84\xc0\x2c\xa6\xe4\x66\x8e\x20\x59\xcf\x8d\x6b\x22\x57\xdc\x58\xcd\xdc\x1a\x5a\xb4\x9d\xdc\x83\x6a\xed\xd7\x56\x47\xfd\x0d\x80\x8c\x38\x6a\x5c\xe7\xd7\x84\x74\x91\x56\x2e\xaf\x34\x4b\xa6\x9e\xb8\x06\x9d\x99\x8a\xc6\x7e\x80\xf3\x39\xc9\xd9\x9c\x0b\x54\x17\x28\x10\x6e\x2f\x85\x2d\x92\x67\x40\x8f\xd6\x2c\xab\x14\x37\xeb\x77\x52\x18\xf6\x39\x52\x7b\xef\x1e\xe8\x3b\x4f\x82\xc8\xd2\x65\x19\x05\xb3\xc3\xa5\xdc\xc5\xde\xe5\x4a\x40\x16\x35\x7a\xf1\x4b\x59\xf0\x6c\x7d\x11\x3e\x04\x56\x99\x7d\x36\x17\x91\xef\x8d\x7b\x9b\xa1\xfa\xa1\xd9\x67\x36\xb1\xaa\x4b\xb3\x9d\x1b\xef\x3e\x95\xd8\x03\x06\x7f\xab\xf8\x23\x2f\xd8\x82\x5d\xeb\x8c\x16\x70\xe6\x52\x15\xce\xcb\x1d\xf4\xe0\xba\x2b\x59\x60\x9c\x47\x4f\x4b\x06\x1d\x8c\xa9\xfd\x2e\x30\x69\x32\x2a\xc8\x82\x72\x41\x56\x76\x8d\xcb\xf0\x1a\x0c\x51\xb3\xb4\xb7\xda\x68\x52\x52\xc5\x84\x09\xa4\x7d\x19\xd1\x4c\xca\xc2\x67\x0c\xa2\x38\x48\xf8\xba\x90\x9c\x2b\xe4\xdf\x04\x7b\xfa\x9b\x9d\xa1\x26\xf3\x82\x2e\x42\x0a\x30\x86\x2b\x31\xb3\x61\xc3\x35\xd3\xdd\xb5\xd0\x38\xf7\x94\x35\x93\x08\x2d\x9e\xe8\x5a\xdb\xe5\xee\xbf\x8d\xeb\xef\xc8\x37\x6f\x10\x24\xed\x9d\xa3\x9a\xd4\xf3\xca\xc9\xef\xdf\x80\x87\xfd\xdd\xe5\xed\xdf\xee\xfe\xe7\xee\x6f\x97\x57\xef\x6f\x3e\x60\x99\x95\xdd\x15\x46\x63\x3f\x2d\xa3\x25\x9d\xf1\x82\xe3\x24\xf1\x46\xfc\xbc\x4d\x06\x84\x41\x9e\x5f\xe4\x0a\xd5\x90\x1c\x56\x54\x55\x02\x2a\x24\x9b\x2a\x99\xae\xe5\x84\x8b\x5b\x84\x02\x4b\x38\x1c\xf3\xee\x24\x17\x8a\x0a\x13\xd4\xf9\xb4\x60\x88\xaa\x84\x35\xf0\x4e\x9d\x15\x45\xf3\x43\xd2\x8e\x2f\xf3\x9c\xe5\x9d\x4f\x7f\xe6\x3c\x9a\x77\xe1\xd5\xeb\xa6\xa6\x93\xdc\x7e\xbc\xbb\xf9\xbf\xf0\xb9\x34\x9d\x53\xb6\x2e\xd3\x52\x18\x9e\x29\x93\x93\x10\x7b\x01\x0e\xd8\xb9\x4f\xbe\xfe\x61\xdc\x3b\xf2\x15\x64\xe1\xd6\xf2\x35\x35\x8a\xf4\xa9\x12\x5d\x5c\x84\x86\x22\x59\xc9\x1c\xd5\xf7\xfd\xd6\x09\x3e\xa6\x7b\x74\x5a\xc5\x87\x54\x31\x62\x7f\x22\x0c\xa7\x05\x4a\x7c\x5b\xdb\xe6\x91\x16\xcc\xa5\x34\x42\x96\xbf\x97\xbc\xdd\x28\x3e\x46\xcf\x90\x64\x4e\x0b\x8d\xf8\xc6\x14\x59\x67\xd5\x81\xf7\xd6\x68\x4b\xdc\xa1\xfa\x79\x92\x33\x21\x8d\xb7\x1c\xed\x4c\x88\xc4\x98\x79\x96\x0e\x71\xd6\x63\x2b\x85\xa2\xa3\x4c\x80\x8a\x95\x22\xea\xb8\x0e\xeb\x7f\x5b\xcf\x16\xfc\x97\x00\xb9\x70\xa8\xa8\x6b\xec\x49\x3b\x63\xc5\x68\x2e\x05\xea\xec\x94\xd4\x2c\x5d\xbc\x70\x45\xf5\x03\xcb\xdd\x1f\xbc\x3e\xe9\xad\x66\xec\x2c\xeb\x0f\xbd\xb7\x3b\x31\x67\xd4\x54\x8a\x39\x3d\xd2\xc5\x50\x99\xa0\xb3\x22\xbe\xca\x2b\xb1\x34\x90\xe6\x1f\x45\xb1\xfe\x24\xa5\xf9\xbe\x2e\x6d\x49\x3c\x68\xbf\x78\x5d\x1e\x6a\x65\xbb\xc9\x17\x98\x04\x54\x3b\xa7\x09\x14\x6f\xc1\x25\x6d\x55\xdc\xd4\x01\x7e\xae\x9f\xe3\xe2\xa9\x4a\x5c\xea\x1f\x94\xac\x10\xe2\x70\x43\xc5\xfc\xe1\xe6\x0a\xf8\x4d\xe5\x78\x0d\x13\x46\xad\xa1\xc8\x0f\xb1\x22\x1b\x68\x36\xb5\x85\xf0\x93\xbd\x1d\xbd\x53\x8e\xb1\x0e\xe6\xa4\x12\x9a\x99\x29\x79\x4f\xd7\x84\x16\x1a\x0e\x9e\x4b\x88\x26\xb7\x90\xe5\xd1\xb6\xf3\xa7\x04\xe7\x18\xf2\x84\x66\xd2\x2c\x49\x8f\x14\x5c\xa6\xcd\x37\x60\x92\xde\xed\x92\xb8\xb0\x42\x03\xee\xc3\xc5\xc6\x8b\x0c\x7d\x40\x29\x20\xa5\x62\x19\xcb\x99\xc8\x10\xa7\xab\x15\x4b\xf8\xe3\xb7\x27\x0d\xeb\xc3\x99\xfc\x20\x85\xbd\xb0\x89\xa7\xf2\x46\xe4\x3c\xa3\x4e\x0e\x50\xd3\x3d\x59\x88\x75\x82\x3a\x73\x6f\x0b\x52\xa8\x72\x82\xeb\x5a\x69\xa6\x00\xc7\xc0\x9a\x9d\xd8\x9a\xbe\xbf\x56\x33\x56\x30\xe3\x0c\x69\x40\x4b\xa0\xc6\x95\x09\xf2\x15\x5d\x30\x42\x4d\x38\xec\x38\x29\xcd\x84\xb6\xcc\xd5\x39\x10\x0d\xc9\x25\xd3\x75\xf5\x1c\xd5\xe4\xa7\x9b\x2b\xf2\x16\x41\xf1\xb5\xfd\xd2\x37\x70\x84\xe7\x94\x17\x50\x44\x60\xa8\x32\x7d\xcb\x1a\x73\x57\xfc\xb4\x60\xe9\xe0\x4e\x12\xa9\x1c\x93\x3b\x27\x42\x12\x5d\x65\xcb\xb0\x22\x38\x0f\x40\xa8\x4b\xf6\x99\x55\xe0\xe8\x1f\x2f\xbb\x1f\x29\x97\x3d\x59\x94\xfc\xa4\x99\x3a\x40\x92\xfc\x74\x52\x49\xd2\x76\x57\xd8\x3b\x9c\xe2\x5a\xb7\x3b\xe2\x2e\xea\x8a\x19\x9a\x53\x43\xbd\x84\xa9\x6b\xa7\x31\x91\xe3\xf1\x90\xfa\xf1\xb2\x25\x92\x66\x3f\x72\x51\x7d\x76\x29\x49\x87\x38\xe3\xee\xae\x81\x10\xc9\xc2\x32\xc1\xd6\xd3\xb2\x2c\x38\x2a\x1a\xe3\x53\x98\x5a\x21\xec\x9b\xce\x21\x3c\x4f\x16\x79\x41\xd1\x02\x96\x4a\x8b\x42\x5a\x31\x4a\x28\x51\x54\xe4\x72\xd5\xff\x00\x04\x61\x6b\x96\xb0\x0e\xc2\xe0\x74\xdb\x05\xc0\x58\x17\xdb\xaf\xca\xbe\x0b\x80\xf1\xed\x6d\xbf\x2a\xdb\x2e\x00\x2a\xa0\xbc\xfd\xaa\x24\x5d\x80\x34\xa7\x65\xc1\x1e\x19\x0a\x32\xa6\x8f\x92\x68\x9f\xb7\xe6\x49\x38\x0b\x40\x90\x14\x74\xc6\xb0\x85\xf8\xa0\xac\xb8\xd3\xaf\x37\xcf\x74\x82\x2f\x09\xed\x84\x52\xb2\x38\xa4\xdc\xe2\x93\x2c\x20\xe3\x87\xd6\x8b\x61\x09\x7e\xa5\x6b\x01\x8f\xa5\xaf\x05\xd8\xf8\x9d\xb5\x00\xff\xcb\xd7\xb9\x16\x15\x4a\x8f\x21\xfd\xb5\xb0\x6a\x50\x77\x2d\x2c\xc1\xaf\x72\x2d\x12\x1c\xae\x4f\x5c\xe4\xf2\x49\x1f\x2e\x2e\x7f\x71\x84\x02\xa7\xcd\x2c\x6b\x37\x5c\x2c\x50\xa5\x2c\x4e\xb8\x42\xe8\xab\x28\x3a\x7e\xbc\x9e\xcc\x44\x6a\x41\x21\xa8\x1f\x50\x3c\xb7\x48\x8b\x04\x13\xa6\xd2\x2e\x37\x65\x94\x62\xfb\xc7\x62\xa5\xe9\x3b\x65\xdf\x65\x38\x2d\xee\x4a\x0c\x94\x12\xe9\x9f\xb5\x1f\xde\xdf\x5d\x76\x89\xd9\xcb\xfb\xb4\x64\xa8\x64\x31\xe2\x0f\x86\xa5\x46\x68\xbe\xe2\x5a\x73\x29\xc8\x13\x9b\x2d\xa5\x7c\x20\xaf\x43\x16\xc5\x82\x9b\x65\x35\x9b\x66\x72\xd5\x4a\xa8\x98\x68\xbe\xd0\x17\xfe\xe6\x4c\xec\xd7\x61\xe2\xd5\x04\x36\xa5\xe0\x82\xe9\x9a\x41\x00\x40\xab\x37\x86\x60\x4a\x59\xfd\x85\x48\xca\xf6\x88\x78\x1c\x3e\x17\x93\xdd\xb2\x60\x1f\xf0\xc5\xce\x50\xd2\xed\x1d\xcc\xae\xbc\xdb\x72\xcc\xa2\x5c\xd2\x89\x53\x29\xf0\x40\x34\x5c\x3b\x48\xac\xa5\x14\xd2\x67\x84\xba\x2a\x61\xef\x08\x72\xfe\xe6\x84\x3d\xf5\x9c\x08\xd6\xb1\xed\xc7\x7e\x16\x61\xb4\x79\xd6\x3f\xa0\x81\x02\x06\xce\x3b\x24\xbf\xa3\xd1\x99\x20\x45\xa4\x95\xe7\xdf\x3b\x66\x70\x70\xb0\x24\xc1\x34\x1f\x4f\xc5\xf0\xa8\xfd\x2d\x07\x1e\x06\xf0\xbb\x78\x32\x96\xb3\x07\xa1\x6b\x24\x72\x45\x36\xbd\x36\x1b\xbe\x18\x24\xc5\xad\x9e\x1b\x4b\x10\xb4\xa9\x14\xc9\x45\x9c\xf4\xda\xef\xc1\xb1\x66\x29\x92\x66\x84\x17\x07\xe5\xc4\x21\x27\x77\xe4\x90\x68\x67\x0e\x96\x68\x5f\x13\xd8\x7d\x97\xb1\x8b\x2c\x72\x07\x22\xb7\xf7\x3a\x23\x89\xba\xcb\xdf\xbe\xce\x9f\xda\x17\x2b\xdc\x6b\xac\x6c\x7b\x1e\x2e\x70\xf2\x24\x58\x57\x3a\x9a\x8c\x47\x7a\xd7\x7a\x9e\xf0\x8d\xa0\x4c\xe4\x77\xde\xca\xdc\x95\xb7\xd7\x65\xb6\xd0\x90\x00\x4a\xf1\xf9\x3f\x83\xbe\x8c\xd5\xe3\x85\x74\x59\xd2\xbe\x3a\xde\xa5\x5d\x38\xf0\xc6\x9c\x54\xc2\xf0\x22\x44\x79\x57\x65\x61\x55\xb4\x58\x67\x61\x6b\x96\x2e\x4a\xb4\xe4\xba\x0d\x73\x7a\x1e\xac\x05\x50\xfa\x23\xa9\x02\xea\xaa\xaf\xef\x3f\x27\x7f\xaf\xb4\x21\xb4\x4e\xd3\x0c\xe5\xbe\xb7\xf5\x4b\xe2\xfd\xd0\x70\x39\x3d\x90\x31\xa0\x1f\x19\x69\x27\xfb\xc8\x73\x46\x72\x3e\x9f\xb3\x90\x5e\x1a\x9d\xf4\x59\x52\x45\x57\xcc\x40\x2a\x8b\x8b\x17\xcd\xd8\x82\xbb\xec\x41\x39\x27\xd4\x7e\xfa\xd9\x99\x6e\xea\x51\x63\x77\x0c\xf2\x10\xb9\x21\x2b\xbe\x58\x3a\x8b\x83\x50\x52\x48\xb1\x80\x6a\x2e\x3b\xf1\x42\xd2\x9c\x58\x96\x1e\x49\x51\x2a\xf2\x44\xd5\x8a\x50\x92\xd1\x6c\x09\xb1\x3c\x2a\x48\x5e\x29\x80\xb4\x33\x8c\xe6\xeb\x89\x36\xd4\x58\x6b\x8f\xb9\x2c\x76\xec\xba\xf6\x0b\x8b\xe0\xef\xdc\xd5\x19\x5b\x4e\x88\x64\x30\x3e\x63\x22\x28\xe2\x9d\x0b\xd6\x51\x41\x30\xa5\x2e\x23\x70\xee\x08\x9c\x1b\x39\x46\xe0\xdc\x11\x38\x77\x04\xce\x1d\x81\x73\x47\xe0\xdc\x11\x38\x77\x04\xce\x1d\x1e\x23\x70\xee\x08\x9c\x3b\x02\xe7\xc6\x8c\x11\x38\x97\x8c\xc0\xb9\x23\x70\x6e\x67\x8c\xc0\xb9\x31\xe3\x45\x00\x5f\x8d\xc0\xb9\x23\x70\xae\x1b\x23\x70\xee\xe6\x18\x81\x73\x7f\x03\x30\x60\x23\x70\xee\xae\x31\x02\xe7\x8e\xc0\xb9\x83\x63\x04\xce\x1d\x81\x73\x47\xe0\xdc\xee\xf8\xed\xd8\x0f\x23\x70\xee\x08\x9c\xdb\x79\x64\x04\xce\xfd\xf5\x6b\xcc\xe8\x74\xac\x9c\x47\x42\xda\xc5\xa0\x56\xf8\x04\x86\x50\xe5\x17\xf9\x9d\x94\xcc\xaa\xf9\x9c\x29\xd0\x97\x60\x46\x1b\xb1\x70\x2c\xfe\x56\x48\x92\xe2\x4e\xe2\x6b\x66\xce\x01\x22\xc3\x17\x57\xb4\x5f\x12\x49\x31\xeb\xf6\xac\xf6\xd0\x70\x8a\x69\x80\xd6\x10\xe4\xfa\xe3\xf7\xf5\xf9\x8d\x35\x61\x51\x80\x1c\xd8\x0a\x6a\xf8\xc6\x8f\x22\x4b\x49\xb3\x6b\xb6\x77\xcb\x1e\xe0\xc0\x26\xb3\x42\x6a\x97\x7b\xe1\x16\x3d\x5b\x52\x21\x58\xe1\xb9\x06\x37\x60\x2d\xcf\x18\x13\x44\x96\x2c\x1e\x41\x74\xb6\x26\x94\x68\x2e\x16\x05\x23\xd4\x18\x9a\x2d\xa7\x76\xd6\x22\x6c\xad\x47\xf0\xab\xdf\x1b\x6b\xec\x18\xc5\xe8\xca\x6d\xb1\x62\x2b\xca\xdd\xb4\x08\xcd\x94\xd4\x9a\xac\xaa\xc2\xf0\xb2\x7e\x65\x2c\x51\x06\x75\x1b\xae\x3e\xa8\xde\x16\x48\xcb\x60\x2e\x99\x00\x50\x1f\x30\xf3\xe4\xda\x2f\x17\x91\x6d\x24\x29\xb0\x2f\xce\x01\xee\x75\x55\x9a\xb5\x4b\x3a\x8c\x15\x0f\x4b\x46\xe6\x5c\x69\x43\xb2\x82\x83\x7a\x0b\xdf\xe8\x6a\xc4\x60\x6e\xe7\x60\xc3\x98\x25\x8b\x2e\xe0\x87\x15\xd4\x7e\x09\x45\x0e\x7a\x44\x69\x34\x24\xd4\xd5\x19\x91\xcc\xbf\x30\x92\x68\xce\xb5\xd7\x3c\xf5\x39\xa1\x01\xf1\xc8\x1d\xcc\xb0\xf7\x70\xe8\x72\x44\xfa\x44\x98\xa9\x7f\xb0\x35\xb5\x16\xe4\x63\x93\x2f\x89\x65\x43\x00\x50\x14\xae\xfb\x79\x1b\xe3\x37\x64\xa4\x47\xdb\xc0\x90\x78\xb2\xc1\xca\xe0\xc0\x0a\xf6\x68\x6f\x29\xcb\x98\x35\xae\xa3\x61\x16\xda\x9c\xab\x9e\xe4\x49\x58\x92\x61\x6a\xc5\x05\x24\x3d\xbe\x67\x5a\xd3\x05\xbb\x8d\x0e\x60\xec\x32\x49\x20\x86\xd1\x1c\x03\x38\xc4\xd1\xa5\x17\x46\xb6\x9e\x6b\x12\xaf\xce\x74\x7b\xaa\x64\xe5\xe6\x1a\x49\x33\xd4\xdd\x3d\x29\x6e\x0c\x83\xe3\x08\xf8\x5f\x10\xcd\xec\x97\x5b\x9e\x9d\xc5\xee\x7b\x1b\xd1\xc9\x2f\x5e\xfb\x15\x56\x47\x10\xb9\x4b\x70\x8a\xce\xab\x9d\x29\xce\xe6\x64\xce\x05\x2d\x7c\xfe\xd2\xb9\xc3\x4c\xa1\xce\xf8\xd6\xda\x1a\x9b\x52\x84\x14\x97\x48\xb2\x7e\xbd\xa6\xe4\x17\xbf\x14\x46\x55\x22\xa3\x0d\x02\x27\x11\x32\x67\x84\xcf\xc9\x02\xf2\x9e\xa2\x9d\x0c\x4b\x2a\xc8\xb7\x6f\xff\x7f\x7f\x24\xb3\xb5\xd5\xdd\x20\x28\x69\xa4\xa1\x45\x78\x25\x29\x98\x58\xd8\xf3\x00\xec\x3a\x56\xfd\xe8\x14\x71\xd6\xfb\x07\xb8\xf7\x6e\x41\xbf\xf9\xfd\xc3\x0c\x8d\x75\x67\x24\xb9\xc8\xd9\xe3\x45\xeb\x24\x4d\x0a\xb9\xd8\xd6\x1b\x20\x4e\x8d\x44\x9a\x85\x5b\x2e\x1b\xc0\x37\x27\x5c\xb7\x00\x7e\x44\x96\xf2\xc9\xe1\xe0\x25\xdf\x8e\x26\xc5\xb5\x94\x65\x55\x38\xa7\xf6\xf7\xbc\xf0\xf8\x10\x95\x66\x9d\x72\xc3\x48\xaa\xd6\xb8\xdd\xca\x5b\xc0\xc9\xeb\x5f\x94\x54\x38\xe4\xae\x45\x7d\xbe\xa4\xaf\x9e\xf1\x6e\xc6\x1a\xcd\xa8\x52\xd1\xaa\xe9\xf7\xb4\x28\x66\x34\x7b\xb8\x97\x3f\xca\x85\xfe\x28\xae\x95\x92\xaa\xfb\xf5\x05\xb5\x52\x78\x59\x89\x87\xf8\xef\x6f\x24\x4a\x21\x17\xd6\x9a\x2a\x2b\x13\xb2\xf9\xd3\xb7\xcb\x72\x9d\x46\x9d\xf0\xe2\xbf\xf5\x2e\xf6\x19\xee\xc8\x13\x37\xb1\xca\x10\x15\x84\xd9\x2f\x76\xb7\xb7\x3d\x57\xdd\xbe\x72\xbf\x7f\xfb\xed\x9f\xa2\x55\x41\x63\xed\x47\x45\xfe\xf4\x16\x12\x85\xf5\xb9\x63\xea\x20\x0d\xad\x92\xb5\xa2\x45\xc1\x54\xca\x05\xb6\x07\x73\xdb\x85\x3d\xc9\x7d\x35\x29\x57\xf3\xc8\x86\xd8\xfd\xfd\xff\x80\x15\xc6\x8d\x66\xc5\xfc\xdc\x55\xa1\xd5\x58\x8d\x67\xa0\x6c\x9c\xa1\x64\x8c\xd5\x6d\x53\x31\x08\xb1\xfa\xc5\xa3\x2c\xaa\x15\xbb\x62\x8f\x3c\xad\x15\x4c\xe7\xf9\x90\x83\x5e\x70\x0d\x65\x87\xb3\x42\x66\xb1\xf7\x31\xf7\x24\x5a\x99\x4c\x5e\xf2\xb5\x7c\x67\xbe\x6e\x23\xde\x48\x66\xa6\xae\xed\x88\x5b\x3f\x54\x7e\xd7\xce\x95\x68\x67\x76\x91\x15\x2d\x4b\x8c\x5b\x12\xca\x73\x14\x7d\x72\xcb\xe7\x17\x06\xf8\x05\x17\x6d\x3d\x38\x96\x7b\xa6\x78\xc0\xdd\x4b\xe3\x55\xcd\xf0\x54\x6b\x3d\x1a\x12\xe1\x58\x94\xf0\xdf\x10\x77\x42\xb9\x18\x37\xc0\xc4\x6a\x3c\xc1\x7a\x6d\xa2\x4b\xb8\xdc\x98\x31\xd8\x15\xe0\x9b\x18\x67\x59\x92\x9b\x19\x9b\x17\xd7\x59\x45\x11\xfc\xba\x64\x45\x8d\xd7\xba\xbd\x73\x1a\xe7\x91\x27\x25\x53\x9a\x6b\xab\x22\xfc\x0c\x27\xf5\x5d\x41\xf9\x2a\x78\x8d\x4a\x89\x42\xbe\x4a\x01\x80\xc5\x79\x77\x27\xad\xf3\x13\xfd\x08\x22\x67\x2d\xb1\x68\x33\x36\xdb\xcc\x31\x03\x80\xdd\x4d\xe1\xaa\xb7\x32\xf7\x24\x80\x21\x3a\x30\xe4\x2d\xa6\x50\x8a\x25\x94\x28\x9a\xd3\x19\xe3\xcf\xcd\x5a\x74\xf9\xa2\xfd\x0b\x9a\x31\x3a\x6a\xcf\xcc\x0e\x61\xaa\x07\x71\x43\xe0\x83\x7e\xd2\x5d\x66\x86\x2c\x96\x6e\x8c\x6f\x77\x40\x5a\xe6\x81\xb7\x99\xa7\x04\x1b\x79\x77\x95\x4a\x7e\x4a\xe4\xec\xbb\xb3\x93\xf3\x44\xb7\xa0\x4a\x96\x74\x81\x6c\x11\xd3\x5b\xd7\x3e\x21\x92\x33\xa7\xba\x23\x53\x9f\xad\x99\x06\xb4\x5c\x0d\x72\xe9\x29\xb2\xbc\x81\x16\x5a\x4a\xe4\xa2\xba\x80\x6f\xd8\x66\x6f\x08\xb8\x72\xe7\x27\xba\x26\x54\xc9\x0a\x17\xab\x21\xce\x5f\x5b\xbb\xe7\xdf\xf7\x3e\xfe\x83\x14\x68\x00\x11\x87\x75\xd4\x45\x07\x00\xb5\x89\x0b\xf2\xcd\xf4\x9b\xb7\x2f\x5b\x3c\xc2\xbc\x7b\xe2\xf1\x43\x92\x78\x74\x7c\xe5\xe4\x5f\x1b\x80\xd0\x93\xbf\xf8\xbd\x77\x8c\x35\xe8\xe5\xdc\x63\x20\xa3\x3e\x18\x1e\x7f\x52\xdc\xb0\x56\x9b\xb2\xd7\x60\x68\x58\xbb\xb0\x85\xc4\xf1\x06\x77\x42\xdb\xf1\x48\x24\x76\x7a\x1a\xe4\x2d\x21\xba\x9a\x1d\x95\x37\x7b\xc6\x6a\x2f\x7e\x22\x6b\x6e\x17\xa4\xf6\xd9\x34\x8a\x64\xcd\xd2\xdb\xcb\xfa\xea\x15\x79\xed\xa8\x9e\x69\xa8\x86\x45\x6d\x51\xd2\xb1\xf5\x4b\x7c\xfd\xb9\x44\x21\xf2\x75\x96\xf9\xfa\x73\x49\xc1\xdf\x5a\x6e\x5d\x6f\xd4\xba\x00\x53\x8e\x58\x6f\xb4\x55\x10\xd6\xfb\x2f\x6c\x49\x1f\x19\x54\x01\xf3\x82\xaa\x62\x6d\x17\xfe\xce\xad\x02\x8e\x68\x65\x08\x13\x8f\x5c\x49\x01\x19\x50\x8f\x54\x71\x00\x3b\x51\x0c\x60\x1d\xac\xcd\xfb\x2f\xaf\x7f\xbe\xfc\x04\xb9\x17\x38\xbc\x31\x87\x96\xe1\x57\xb5\xd2\x5c\x2c\x36\x56\xa3\xf5\xea\xf4\x7b\xbc\xe5\xc0\x85\xb5\xb0\x27\x02\x37\x67\x91\x87\x67\x61\xfe\xab\xca\x54\xb4\x80\x42\xeb\xac\xa8\x34\x7f\xf4\x58\x35\xb8\xe3\xb0\x45\x72\xfd\xdb\x89\x2f\x05\xde\xa2\xa9\xb5\xc8\xaf\xd0\xa0\xf1\x85\xfc\x57\x3c\xf2\xfe\xf7\x20\x0a\x9a\x03\xb9\x81\x08\x80\x00\x65\x02\xc5\x67\x07\xbc\x72\x08\xb5\x9f\x69\x64\x7f\x8a\x36\xe8\xa3\x77\x83\x7a\x70\x13\x97\x26\xeb\x7a\x2a\xe6\xa9\xa9\x0f\x80\x72\xf5\x3c\x0e\xd1\xf8\x13\x19\x79\xb2\x10\x67\x2a\xf6\x34\xd5\x89\x41\x43\x93\xec\x76\x69\xcb\x42\xef\x4e\xef\xf8\x71\x5d\x4c\x81\xa1\x3a\xbb\x36\x96\xdf\x03\x60\x0d\x17\x44\x31\x5d\x4a\xa1\x59\x57\x49\x6f\x92\x4c\xd9\x23\x13\x46\x87\x7d\x1b\x24\x1b\xbf\xaf\x18\xf3\xb3\x94\xda\x00\xb8\x4c\xcc\x9d\xeb\x46\x7b\x6f\xc3\xa3\x10\xdb\xa7\x45\x61\x4f\xf0\x6a\xc5\x72\x4e\x0d\x2b\xd6\x88\x42\x79\xda\x0d\xe8\x67\x0e\x77\xc1\x83\x2a\x31\xb2\xa4\x22\x2f\x98\xf2\xa8\x4a\x71\x87\xba\x9f\x24\x10\x82\x2d\x2e\xff\xa0\xc9\x19\x20\x34\xcb\xa4\xca\x63\x79\xb2\x91\xd0\x8c\xd3\x3f\x4e\x5c\xeb\xd5\x29\xf9\x08\x16\x57\xeb\xc4\x38\x7f\x62\x14\xc9\x66\x9a\xe0\x8c\xd5\xad\x34\x07\xc0\x13\xad\x71\xa9\x10\x50\x3f\xa8\xce\xbd\x3e\xc4\xda\xfc\x67\x93\x5a\x37\x81\xf4\xec\x8b\x56\x86\x1d\xfc\x21\x26\x32\x8a\xf5\x81\x60\xc0\x7e\x4e\x04\xf5\x13\x09\xf4\x83\x4d\x7f\x47\xc2\xfc\xa4\x38\x8f\x12\x20\x7e\x4e\x02\xf0\x13\x03\xef\x13\xc4\x33\x8a\xf0\x5e\x70\x9f\x16\x5c\x0f\x8a\xe8\x7e\x68\x9f\x36\x58\x0f\x8e\xec\x76\x60\x9f\x1e\x54\x0f\xd2\x77\xb0\x15\xd6\x67\x0b\x50\x0f\x8a\x6c\x1f\xd4\x67\x3b\x4c\x0f\x8a\xe4\x76\x48\x9f\x0d\x90\x1e\x14\xcd\x4d\x40\x9f\x2d\x10\x3d\x28\x8a\x7d\x38\x9f\xc3\x01\x7a\x12\x40\x1b\x0e\x81\xef\x47\xd5\xa4\xa3\xf5\x76\x24\x82\xcb\xa9\xf0\x5b\xf0\xe8\x2d\x29\xbc\x13\x5b\x87\x13\x85\xdb\x52\x17\xd3\x60\xd9\xe7\x2e\xd4\x96\x36\x0e\x0b\x8a\xe6\xd1\x30\x5b\x92\x8e\x6b\x22\x5e\x4b\x14\x5a\x0b\x1a\x2b\xee\xe8\x58\x2d\x09\x97\x3e\x02\xa7\xc5\xe3\xae\xa0\xc8\x92\xe3\xa2\xb4\xa4\x63\xb4\xa4\x21\xb4\x9c\x00\x9f\xe5\x00\x44\x93\x44\x6c\x96\x53\x20\xb3\x24\x7f\x45\x1a\x2a\x4b\x02\x26\x4b\x0a\x22\x4b\x22\x1e\x4b\x0a\x1a\x0b\x16\x8b\xe5\x14\x48\x2c\x78\x1c\x96\xa4\x6d\xc7\xd6\x50\xa2\x2b\x28\xd3\xeb\x27\x93\xab\x27\x4f\x81\xbd\x72\x8a\xca\xc9\xe3\xd7\x4d\x1e\x58\x35\x79\xb4\x9a\x49\x3c\xe2\xca\x69\xf0\x56\x8e\x86\xb6\xf2\x2c\x7e\x78\xc4\xa1\xc4\x7b\xd5\xb1\x55\xfd\xa7\xa8\xe9\x8f\xac\xe8\x6f\xea\xf4\xa3\x29\x0f\xd4\xf3\x37\x0e\x54\x84\x86\x1f\x5f\xcd\xff\xec\x16\xc4\x31\xeb\xf8\x8f\x54\xc5\x3f\x4a\x1f\x3f\x4e\x51\xb9\x3f\x4a\x9f\x78\xe9\xf3\x92\xf8\x2e\xea\xe7\xa5\x62\x77\x46\x46\xf5\xda\xef\xc5\x54\xdc\x83\x3b\x22\x2a\x0e\xb6\x2a\x25\xa4\xd2\x0a\x7f\xe4\x15\xf0\x17\x2a\xc8\xe5\xed\x0d\xca\x27\x23\x3b\x21\x0e\x08\x5f\xd5\x85\x69\x01\x50\xe7\xc2\x83\xe9\x20\x3a\x49\xf8\x4a\x9d\x73\xbb\x6a\x6c\x05\x2b\x71\x4e\x14\xd3\xb2\x52\x59\x5d\x73\x04\x7f\x64\x26\x8b\x3b\x85\xf7\xad\xa8\x91\xf7\xbc\x86\xe5\xec\x27\x7a\x67\x8a\xea\x65\xa4\x79\x2c\x5d\x69\x8d\xaf\x71\x53\x8c\x6a\x29\x9c\x43\xba\x55\xca\xc3\x35\x29\xa9\xd6\x91\x12\x2f\xa8\x35\x6e\xb2\x8e\xb0\xef\x9b\xd1\x26\xba\x50\x34\x63\x1e\x76\x2b\x32\xaa\x54\x09\x93\xcb\x27\xe1\x9a\x72\xe8\x00\x79\x06\x2d\x49\xfc\x21\xb3\x72\xd1\x2e\x49\xdc\xc7\x87\x9e\x29\x53\xf2\x89\x2d\xa8\xca\x0b\xe0\x61\x6e\x39\x65\x65\x32\xd9\x30\x45\xff\x35\x29\xa1\x3a\x08\x95\xc3\xd1\x72\x29\x1b\xf5\xc1\xf5\xd9\x3c\xd1\x24\x07\x16\x71\x33\x66\x17\x77\x02\xfa\xc7\x67\x20\x66\x17\x7b\xac\x9a\xe7\x77\x4d\xd8\x55\x3a\xd3\x6c\x19\x1b\xd7\x47\x22\x6c\x8c\x81\xc0\x66\x8c\x81\xc0\x31\x10\x38\x06\x02\xc7\x40\xe0\x18\x08\x1c\x03\x81\xbb\xc7\x18\x08\x1c\x03\x81\x7e\x8c\x81\xc0\x8d\x31\x06\x02\xc7\x40\xe0\xe0\x18\x03\x81\x03\x63\x74\xc5\xfa\x31\x06\x02\xc7\x40\xa0\x1b\x63\x20\xb0\x7e\x60\x0c\x04\x8e\x81\xc0\xad\x63\x0c\x04\xee\x7d\x72\x0c\x04\x62\x28\xbe\x00\xe9\xf3\x92\xf8\x2e\xba\x62\x2d\xe2\xa7\x9d\xc6\xee\xa8\xb2\xb5\xb3\x5b\x88\x0e\xf0\xcc\xc3\x76\x77\x31\xe7\x3c\xd9\xe1\x1d\x7b\xd7\x0d\xc0\xb4\xbb\xd0\x87\x90\x59\xab\xb3\xfd\x14\x7e\xaf\x64\x51\x30\x35\x6c\x4f\xae\xe8\x1a\x0c\x75\xcf\x90\xc8\x8f\x9d\x2e\xf6\x7c\x4e\x84\xec\x75\xe2\x19\x24\xe9\x1a\xed\x3f\x72\x68\xa7\x7a\x2f\x09\x5f\x08\xa9\x58\x78\x03\x17\x8b\x73\x07\xe2\xbb\x64\x1e\x74\xdc\xc8\x41\x9a\x0e\x4c\xaf\x3b\xb9\x57\xff\xfb\xff\xbc\xda\x56\x58\x19\x57\x89\xf5\x85\xe0\xcd\x31\x92\x2b\x36\xd8\x82\x0b\xb4\x60\x2a\xe3\x23\x83\x2c\x98\xe0\x09\x56\x74\x23\x83\x26\xb1\x01\x93\x98\x43\x17\xc6\xf1\x83\x25\xb1\x81\x12\x4c\xdb\xd3\xc8\x20\x09\x06\x1f\x26\x22\x40\x82\x8f\x3f\x0c\x06\x47\x5a\x01\x8f\x68\xa2\x7b\x02\x23\x87\x36\x32\x8f\x68\x61\x1e\x02\x1d\xf1\x7b\xb5\xbb\x79\xf9\x61\x41\x0e\xa4\xaf\x33\x41\xe3\xc2\xb9\x77\x50\xe2\x3b\xa5\xe1\x78\x74\xab\xf1\x70\xd3\xa2\x3e\x33\xa2\xc9\xf8\x66\xeb\xf0\x28\xca\xdb\xdb\x8b\x23\xfb\x99\x61\x3b\x63\xe0\x54\x72\x44\x5c\xe9\x14\x31\x25\x5c\x3c\x09\x2b\x4e\x30\x56\xe0\x89\x62\x48\x91\xf1\x23\x1f\x13\x42\xd8\xfa\x87\xc4\x8e\xd0\x9c\x20\x21\x66\x14\x1d\x2f\xaa\x63\x40\xd1\x1f\x7f\x8c\x58\x11\x92\x77\x9e\x24\x46\x74\xb4\xf8\x50\x5a\x6c\x08\x1f\x17\x3a\x72\x4c\x28\xd1\x05\x90\x10\x0b\x3a\x76\x1c\xe8\xd9\xba\xc4\xa2\xd6\x14\x1b\xf7\x49\xe9\x91\x85\x8c\xf7\x60\x62\x3d\x91\x71\x1e\x64\xec\x06\xbd\x55\x18\xaf\x19\xca\x63\x96\xe6\x2d\x4b\xf2\x94\x45\xc6\x68\x9a\x05\x8e\x3e\x33\x7b\x3d\x64\x7d\xaf\x57\x34\xd5\xad\xde\xb1\x43\x3c\x5e\x47\xf1\x76\xe1\xe2\x2c\xd1\x31\x16\x8c\x35\x7a\x78\x7c\x05\x79\x7a\x30\x4c\x2a\xda\xb7\x87\x62\x34\x89\x8d\xab\xa3\x5b\x56\x23\x5b\x5c\x0c\x37\xab\xee\xb5\xa0\x8e\xa2\xfa\xa5\x9b\xee\x9d\xd6\xa8\x40\x37\xa5\xc6\xb5\xa3\xc6\x59\x76\x43\x8d\xa8\x6b\x73\x2c\x8a\xe4\x0b\x30\xd9\x52\x1a\x4e\xc7\xb7\x9a\x3e\x86\xe9\xdc\x34\x99\xee\x98\xcf\x51\x24\xf7\xb4\x97\xde\x6c\x1a\x1d\x45\x71\x77\x63\xe9\x17\x62\x83\xa3\xa2\xc7\x88\xc8\x71\x13\x11\x8e\x5b\xa7\xb8\xa8\xb1\x8b\x06\x47\x51\x8c\x88\x18\x47\x47\x82\x9f\xcd\xf6\x3f\x56\xf4\xf7\x08\x91\xdf\x51\x77\xdd\x1d\xe1\x1d\x75\xd7\x3d\xe3\xcb\x6b\x71\xf8\x66\xca\x88\x36\xca\x58\xf9\x34\xd0\x40\x39\x08\x85\x28\x92\x2f\xa9\x75\xf2\x29\xc5\x52\xf4\x6e\x0b\x99\xb3\x3b\x56\x40\x88\x6b\x68\x9f\x69\x1e\x42\x41\xb7\x08\x76\x8e\x60\x22\xbd\x43\xd4\x9a\x9a\xdd\x32\x4a\x74\xf8\x5f\x1e\xfa\x37\x26\x09\xc3\x35\x68\x64\x75\xf4\xce\x32\x71\x23\xc9\x9c\x1b\xcb\x51\x28\x2c\xc0\x94\xdc\x75\x28\x0f\x87\xe2\x9b\x36\x06\x8e\xc2\xd9\x99\x26\x05\x9d\xb1\x42\xf7\x5f\x34\x63\x60\x89\xe6\x55\x11\x91\xb2\x05\x3c\x8e\x1a\x3f\x29\x7c\xe5\x21\x00\x20\x43\xcd\xe3\x05\xd5\x9a\x2f\xc4\xc4\x1e\x53\x4b\xed\x62\xe8\x44\x46\x9f\x98\x52\x71\xa9\xf8\x70\x3b\xb7\x0d\xaf\x5d\x78\xd0\x5d\xc2\x29\xf9\x99\x2a\x2e\x2b\x1d\x50\x81\x33\xb9\x2a\xa5\x88\x6a\x8b\xe8\x3a\x09\xd6\x6d\x30\x60\x3b\x7d\xcf\x8e\xfa\x25\xb5\xb0\xc9\x5d\xeb\xe4\x41\xa2\xb7\xe1\xc9\xcb\x7c\xc5\xa1\xa5\x71\x2b\x3b\x03\xba\x04\x0a\x3a\x2b\x98\x0b\xae\x96\xca\xa1\x0e\xc7\x4c\x55\x85\x5e\xb6\xcc\x38\x07\x42\x3d\x73\x17\xed\xa5\xf5\xfb\xb2\xfa\x7d\xc3\x46\x9a\x6f\xfb\xa8\xdb\x0b\x01\xaf\x09\xdf\xf1\xae\xa0\x5a\x5b\x91\xe6\xde\xb2\xe4\x8b\x65\x8c\x36\x1b\x52\x3d\x5c\xb4\xdc\x3d\xd5\x59\xd9\x21\x41\x88\x61\x6b\xf1\x2c\xad\xec\x7f\x15\xea\xf8\xdd\xcc\xdb\x60\xe4\xdc\x37\xfc\xd4\xe1\x84\x9c\xe9\xe8\xaf\x23\xe4\x95\x3b\xaf\x70\xab\x26\x99\xe2\x86\x67\xb4\x78\x05\x76\x4a\xf8\xa7\xac\xa8\xb4\x61\xaa\xf9\xd7\x41\xa2\x54\x31\x62\x9e\xa4\x9b\x25\x2d\xc8\x03\x5b\x3f\x49\x95\x6b\xcf\xe9\xc2\x8c\x9b\x3d\x89\xe0\x7c\xfe\x93\xac\x51\xf1\xc4\x8d\xef\x1e\x2c\xd5\x8a\x29\x32\x63\xa1\x01\x81\x27\x86\xf8\xfe\x4b\xb1\xf6\x9d\x71\x44\x5b\x5f\xca\xd9\x9c\x0b\xd7\x09\x10\x70\xa7\x5d\x26\x6b\xe7\x30\x0e\xb3\x3f\xe0\x3e\x61\xb6\xd4\x69\xef\x00\x5f\xbd\x05\x4e\xde\xf2\xd7\x30\xeb\x41\xca\x21\x1b\x2b\xe4\x4e\x49\x45\x5c\xe0\x1e\xb8\x84\x62\x2e\x5b\x22\xfc\xf3\xd0\x22\x44\x8b\x34\xc5\x68\xce\x4f\x90\x90\xa6\x99\x82\x6e\x7a\x35\xfd\xb4\xcc\xb4\x95\x7c\x0c\x5d\x93\x02\x45\x26\xf2\x52\x72\x61\x34\xe1\xc3\x50\xff\x9b\xe9\x6c\x9b\x19\x5e\xad\x0c\x37\xb2\x8a\x88\x3b\xb4\x33\xdc\x3e\x75\x96\xcf\xa7\xb8\xd9\x6f\x5e\x37\x0e\xbc\x18\xd7\x0f\x36\xc7\xcd\xe5\xb0\x0d\x92\xfd\x14\x66\xd2\x4e\x72\xfb\x92\x5a\xe5\x98\xb1\x36\x66\xac\x8d\x19\x6b\x63\xc6\xda\x98\xb1\xb6\x39\xc6\x8c\xb5\x17\xe1\x2d\x1f\x33\xd6\xfc\x18\x33\xd6\xf6\x8c\x31\x63\x6d\xcc\x58\x1b\x33\xd6\x0e\x9c\xf9\x98\xb1\xb6\x7f\x8c\x19\x6b\xfb\x9e\x1a\x33\xd6\xc6\x8c\xb5\x31\x63\x6d\xf7\x18\x33\xd6\x5e\x4a\xac\x73\xcc\x58\x1b\x33\xd6\xc6\x8c\xb5\x31\x63\x6d\xcc\x58\x1b\x33\xd6\xc6\x8c\xb5\x31\x63\x6d\xcc\x58\xfb\x1a\xb5\xb8\xe8\xdd\x0e\x1d\x0d\x06\x37\xb9\x1f\xad\x2b\x2b\xc3\xc8\xa7\xf0\x74\x7d\x66\xc9\x6c\x0d\xb7\xd0\x2a\x13\x19\x1d\x66\x35\xcd\x75\x3e\x62\x34\xb6\xe0\x2b\x6e\xa2\x8e\x6d\x5a\x12\x1e\xc1\x73\xf7\xee\xfd\xf8\x11\x26\xd8\xf2\x3f\xba\xd6\xee\x9f\x41\xb9\xa1\x2b\x59\xc5\x03\xff\x67\x7e\x2b\xea\x8d\x74\xbe\xd5\x00\x07\x93\x9c\xf1\xe6\x5a\x10\x4c\x3c\xf9\x49\x4d\x7e\x52\xef\xd8\x60\x12\x1c\xc1\xb2\x1d\xef\x4b\x7e\xc9\x3b\xf7\xc9\x4f\xb1\xbf\x77\x5e\x31\x3d\x74\xef\xc2\x35\x82\x34\x9d\xfa\x5d\x91\xd6\x8d\x5c\x71\x63\x55\x3c\xab\x63\xd3\x76\xdc\x9b\x9b\x8e\x2e\xe3\x4e\x5f\x9c\x0e\x38\x77\x81\x54\xae\xdb\x70\xe9\xad\xdc\x21\xc8\x5d\x7a\xe2\x3a\x3a\x4a\x4f\x45\xa3\x58\xc2\x49\x9b\x84\x5c\x27\x9f\xc8\xf8\x95\x9d\xda\xe8\x9f\x86\xbc\x55\x75\x60\xbe\x5d\xd0\x44\xeb\x24\x2c\xae\x4b\x6a\x2c\xf1\xc1\x0f\x9b\xb5\xb6\xae\x99\xcf\x9e\x94\xb0\x41\x8a\x9b\x93\xb0\x2f\x09\x19\x47\xcd\x2b\xa2\x16\x31\xe2\x4a\x5a\x8b\x17\x32\xe0\xa4\x30\xec\xf3\xa0\xb6\xdc\xbd\xbb\x77\xdd\x87\x89\x35\xbf\x35\x01\x41\xce\x1e\x59\x51\x13\x1f\xfc\x6a\x6a\x8c\xe2\xb3\xca\x80\xb9\x96\x43\xba\x86\xcf\x37\x0d\x09\x65\x90\x9b\xaa\xa7\xa4\xb6\x46\x06\x69\xb6\x75\x1b\x48\x98\x9a\x12\x72\xc7\x18\x2c\x4d\xfb\x3b\xe0\x76\xfb\x05\x1e\x24\x0a\x57\x0a\x72\x1e\x18\xcd\x96\x3e\x4d\xf6\x98\x79\x4f\x73\xfd\x83\x92\x15\xbe\xa5\xd4\xab\xcb\x3a\x39\xd3\x9a\xa6\x9e\x1d\x14\x64\x61\xa9\xc5\xb7\x60\xa0\x65\x59\x40\xf4\x5a\x5a\xa9\xd7\xec\x80\xb6\xc6\x00\x75\xe9\xca\x77\x72\xc5\xc8\xa3\x2c\xaa\xc8\x58\x8c\x5d\x70\x2f\x44\xe1\x1a\xfc\xb5\x9a\xb1\x82\x81\xc5\x92\x2d\x01\xbf\x10\x7a\x0b\x3d\xd9\xd7\x2c\x79\x19\xcb\xeb\x81\x8d\xba\x69\x78\x97\x8b\x25\x51\xeb\x4b\xa5\xcc\xbf\x23\xff\x8f\xb0\x7a\xe9\x7d\xa4\x7a\x2c\x9f\x04\x17\x0b\xf2\xc3\xcd\x55\x7d\x0d\x2d\xa5\xef\xef\x60\x4b\xc8\xef\x5d\x2e\x91\x66\x66\xc1\x73\x32\xe3\x71\x2b\xca\x35\x04\x77\x5f\x0b\xf6\xe4\xd2\x92\x5c\xfe\xa9\x8b\x6e\x42\x56\x9f\xfb\x04\xff\xc6\xd8\x89\xba\x0f\xf5\x53\x7b\x43\xfe\xe0\xe6\x56\x32\x15\x92\xb5\x67\x56\x1f\xa2\x8a\x91\x8f\x9f\xce\xe2\x12\xde\x20\xaf\x55\x3d\x4d\xd4\xd3\x64\x32\x99\xd8\xb5\xbb\x99\x93\x4a\x68\x66\xce\x3b\xfb\x06\x33\x15\x32\xee\xf3\x57\x32\xe7\xf3\x75\x77\x87\xe1\x8e\x37\x53\x85\xeb\x44\xc5\xda\xaf\xc4\x34\x26\xec\xdf\x52\xf5\xff\xf8\xed\xd1\x3d\x50\xaa\x12\x97\x89\xf7\xd0\xee\x82\x3d\x40\x46\x42\xa2\x98\xfd\x6e\x26\x8c\x5a\x43\xd6\xaa\x37\xd8\xa3\x16\xae\x61\x7e\xa5\x92\xd6\xae\x9f\x92\x9f\xb4\x55\x68\x2a\x61\x0d\xb8\x5a\x24\x70\xbf\x47\x91\x8e\x76\xba\x26\xb4\xd0\xae\xee\xc3\xe5\x1c\xf4\x98\xf8\x94\x80\x78\x84\x7f\x8b\x22\x39\x93\x66\xd9\x27\x02\x3b\x7c\x0b\x3e\xef\xf6\x9f\xcf\xa3\xbf\xde\x99\x95\x8d\x6c\xdd\x9c\x27\x24\x5d\x6a\x52\x2a\x96\xb1\x9c\x89\x2c\xb2\x09\x1d\x78\x73\xa9\x89\x37\x93\xc8\xf3\x9c\xb6\x0f\x52\x7c\x92\x12\xef\xf2\xbc\x69\x15\x0b\x50\xd3\xeb\x5a\x06\xae\x17\x55\xc5\xed\x23\xd5\x50\x2c\x24\x26\x90\x82\x59\x69\xaf\xc7\x18\x15\x8a\x2d\xda\xf7\x3f\x76\x13\x79\x1e\xca\x02\xf8\x8a\x2e\x18\xa1\xa6\x3e\xc0\x56\x2c\x0b\x5d\x41\xb3\x3a\xab\x10\xc7\xf1\x93\x5c\xb2\x26\x0d\x93\x6a\xf2\xd3\xcd\x15\x79\x4b\x5e\xdb\x39\xbf\x81\x53\x37\xa7\xbc\x80\x8c\x1a\x43\x23\xa1\x61\xbb\x6b\xc6\xe7\xa0\xdd\x4b\xa6\xa7\x35\xff\x23\x52\x91\x39\x2d\x34\x3b\x27\x22\x4e\x29\x87\x7e\x89\xfe\xfb\x2d\x37\x0e\xf2\xc4\x87\x6c\xc0\x98\x6c\xae\x62\x1c\xc9\xc1\xeb\xba\xf5\x2a\x46\xc7\x04\x76\x5c\xd7\x2d\x57\x31\x8a\xe4\xd0\x75\x8d\xb9\x77\xee\x1e\xcd\xa4\x2c\x18\x1d\x7e\x2b\xdc\xa3\x9f\x34\x1b\x2c\x14\x24\xdb\x98\xf6\x4f\x27\x62\xda\x6d\x35\xd4\x5e\xaa\x66\x25\xe3\xd4\x07\xe1\x6f\xce\x8a\x19\x9a\x53\x43\x3d\xc3\x6f\x32\xd3\x7f\xe3\xe7\xe8\x45\xb2\x74\xcd\x7e\xe4\xa2\xfa\xec\x8c\x15\xbc\xbb\xd7\x9e\xc7\xbb\x6b\x20\xe1\x1a\xa3\x7e\x36\x5e\xc5\x75\xfa\x79\x1e\xed\x1b\xe8\xe8\xf0\x81\xa1\x75\xad\x52\x5c\xfc\x3f\x70\x6f\x60\x68\x56\xa7\x87\xba\x2f\x4a\x14\x15\xb9\x5c\xf5\x67\x1d\x2d\x93\xc1\x9a\x6a\x45\x22\x62\x15\x15\xcc\x89\xc7\x28\x2a\xd1\x82\xe3\x65\x29\x2a\xd8\xa8\x20\x98\xe9\x49\x61\xc1\x1f\xc1\xc0\xe7\xba\xde\x71\x67\xf1\x43\x91\x31\xae\xe3\x5f\xcb\xe4\xec\x86\xa3\x4e\x15\x15\x54\xb2\x48\xcb\x62\xfa\x24\x0b\xe6\x2a\xbd\xc3\x47\x5b\x52\x5f\xc5\x37\xc3\x03\x29\xdf\x7c\xbf\x2e\x7b\xdf\x0c\xfe\x93\xaf\xe1\x9b\xab\x48\x55\x80\xf4\xbf\xd9\xea\x10\xdd\x6f\x06\xc1\xfd\xf2\xbf\x19\x15\x1b\x68\xbb\x89\xc0\xd6\xc5\xcb\xa9\x4b\x52\x70\x0d\x0a\x12\xb8\x99\x74\x4b\x3c\xb9\xba\x3b\xae\x22\x0b\x1f\xbc\xba\xe4\x8b\xab\x7a\xe2\xe0\x1c\x9c\x4f\x3e\x3c\x11\x2b\xfa\xfa\x25\x61\xa5\xe2\x2b\xaa\xd6\xd6\x38\x77\xba\x4e\x5b\x10\x46\x51\x14\x32\x7c\x66\xd0\xe6\x69\x9e\xbb\x8f\xa5\x62\x8d\xdb\x5c\x44\xbe\x3d\x56\x53\xc1\xea\x2a\xb8\x2c\x66\xbd\xd6\x99\x29\xf0\x47\xe5\xce\x3d\x07\x2e\x62\x42\xeb\x73\x23\xe8\x8a\xe9\x92\x66\x2c\x0f\x94\x63\xaf\x76\xde\x46\xb2\x98\x5a\x19\xee\xeb\xc8\x2b\xd1\xe4\xe6\x60\x68\xbe\xf6\x8e\xc3\x46\x87\xf7\xba\xce\x1b\xb2\xe2\x8b\xa5\xa9\x2d\xcb\x82\x56\x22\x5b\x1e\x79\x97\xb7\x2c\x96\xaf\x59\xb7\x7c\xe8\x81\x29\xc1\x0a\x52\x52\x45\x57\xcc\x44\x27\x9c\x98\xa0\x3e\xc5\xde\x41\x64\xd9\x04\xae\x64\x62\x4b\x16\xf6\x9c\xd0\xf0\xda\x35\xb6\xd9\x69\x42\x2e\x0d\xb2\x54\xa2\x33\xe1\x9f\x41\xd1\x7b\xde\x19\xe3\x4a\x24\x10\xe5\x11\x98\xd2\x88\xa4\xbe\x39\x71\xcc\xe4\x89\x8b\x5c\x3e\xe9\x43\xcc\xa4\x5f\x1c\x89\xa0\x81\x67\x75\xa8\x28\xc8\xa2\xb8\x6f\xec\x87\x3b\xb6\x9b\x4a\xb2\x8c\xef\xb9\x6d\x79\x11\xc4\x4c\xda\x42\xa8\x6f\x1a\x04\x41\x62\xf9\x59\x9c\x4e\xb0\xdf\x48\xff\x12\xe6\xcc\x29\xec\x92\xc5\x4a\xd3\x77\xca\xd2\x37\x9c\x16\x77\x65\x1c\x16\x00\xe9\x1f\x90\x1f\xde\xdf\x5d\x76\xc9\x58\xb5\xee\x09\x10\x35\x30\xcd\x84\x2d\x9d\x16\x0e\xce\x13\x9b\x2d\xa5\x7c\x20\xaf\x43\x38\x7d\xc1\xcd\xb2\x9a\x4d\x33\xb9\x6a\x45\xd6\x27\x9a\x2f\xf4\x85\x3f\xe2\x13\xfb\x45\xf1\x25\xdd\x5c\x14\xc0\xf9\x83\x3c\x62\xc2\xe8\x90\xed\x07\x93\xc9\xea\xaf\x8a\xa6\x69\x37\x15\x38\x44\x1d\x22\xdb\x5c\x1e\xe0\xca\x2e\xa8\x19\x4d\xf7\xbe\x01\xf8\xb1\x3a\x73\x51\x2e\xa9\x0f\xff\x7a\xf8\x01\x40\x63\x58\x4a\x21\x15\xa2\x2b\xe0\x6c\xed\x0b\x9b\xbc\x63\xdb\xa1\x1b\xc1\xb4\xfd\x95\x87\x75\x98\x33\x6a\xaa\x88\x1e\x4d\x61\xcc\x0b\xba\x38\x99\xc1\xb1\x79\x6a\x63\x32\x13\xc2\x18\x38\xb9\xb0\x35\x1e\xcc\x01\x55\x06\xb7\xfd\xd8\xb8\xe3\xe0\x7c\x92\xd3\xd6\x1e\xc6\x1f\xd1\xc1\xbd\x6e\xed\x61\xbc\x88\x1c\xde\xeb\xd3\xee\x61\xed\x44\x4e\xde\x3a\x70\x26\x7b\x02\x96\x7f\x06\x09\xe5\x9c\xcb\x88\x95\xd8\xe2\x84\xde\xe7\x60\x8e\xa7\xec\x8c\xb3\xae\x33\x7a\xab\xa3\x39\x9a\xe4\x2e\x87\x74\x90\x55\x9b\x22\x29\x9e\xbf\x9c\x50\xe2\x11\xa4\xd4\x8b\x26\xda\x92\x8e\xfb\xf9\x63\xfc\x75\x33\x7b\xae\x57\xfb\xda\xa0\x3e\xdc\x9f\xcd\x4f\xed\x43\xff\x1c\xf7\xec\x24\xe9\x60\x0e\x22\xea\x32\xcb\x64\x25\x0c\x3a\x27\xec\xec\x6e\xe3\xf9\x36\xbb\x8d\x8d\x02\x75\xa9\x84\x8a\xc7\x3a\xb0\xc4\xb5\x33\x57\x9b\x9c\xbc\x41\x8a\x7b\x72\xf6\x0c\xd5\x0f\x4d\xc2\x1e\x03\x34\xc5\x26\x2f\xaf\xf9\xbb\x5f\x9a\x09\x75\xb3\x8a\x04\x5b\x8c\xd8\x4d\x23\x0b\xe6\x12\x05\x71\xe9\xce\x5b\x13\xf0\xce\x74\x9b\xde\xd0\xc9\x8b\xb4\xad\x37\x61\x1e\x65\xee\xf6\xe1\xbe\x7e\x17\xdc\x4b\x63\x28\x64\xdb\x45\xb9\x97\xfc\x3c\x21\x5d\x6d\x4d\xec\x7a\x1b\x77\x07\x01\x74\xd3\x2b\x6e\x46\xf1\xb2\x60\xe4\xcf\x0f\x6c\x7d\xee\x30\x0b\xd9\x7c\xce\x32\xf3\x9f\x11\x2f\xa8\x74\x40\xc0\x03\x8a\xf6\x7f\x58\x0d\x9a\x1a\xa9\xc8\x9f\xc3\x7f\xfd\xe7\xf0\xed\xc4\x29\xde\x6e\x7e\x09\x0e\x8b\x6b\x78\xb0\x87\x5c\xe8\x96\xc5\xd1\x8c\x77\x58\xc0\xf7\x4e\xc9\x35\xb4\xe9\x5c\x31\x2a\x74\x40\x32\x2d\x8a\x0e\xc9\x68\x6c\x8b\x5f\x96\x4c\xb4\x8f\x9b\x4f\xe7\x0e\xb9\x7c\x54\x31\xf2\x41\xde\xf9\xcc\xca\x58\xc1\x71\xab\xd8\x9c\xa9\xe6\x39\x90\x43\x1f\xe4\xb5\x83\xcb\x8a\x9b\x1a\x92\x69\x3e\xb0\x41\x50\x53\x37\x3a\x5b\xf3\x57\xb6\x0e\x7c\xcc\xad\xde\x03\x5b\x37\xb9\x22\xcd\x85\x8b\xfc\xee\xc6\xa3\xbd\x7f\x8f\x1e\xd8\x3a\x7a\x83\x6e\x9c\x6e\xf3\xe0\x66\x0a\xb9\x9a\xe7\xcd\x71\x0f\xf5\x43\xd7\x9f\xb9\x36\xfa\x3f\x62\x4f\x92\xbd\xe2\x99\x5c\xcd\xb8\x70\x77\xdc\x4d\x33\x1c\x30\x98\x69\x38\x00\xd1\x62\xd8\x3e\x14\xff\x61\xc8\xed\x0d\x1f\x9c\xb0\xc7\x1f\xc3\x5a\x29\x56\x2a\xa6\xc1\x5a\xa4\x76\xa6\x67\x9a\x28\x56\x38\x86\x1a\x9b\x5a\x59\x2b\x88\x35\x0e\x6e\xc1\xf3\x7a\x76\xee\xbe\xb8\xbd\x40\xac\xdc\xf5\x3f\x2a\x5a\x74\x93\x21\xfc\x9f\x3c\x29\xbb\xf1\xff\xa8\xf8\x23\x2d\x58\x64\xba\x3f\xcc\xf3\x89\x17\x79\x46\x95\x73\x06\x7b\x60\x58\xed\xb1\xca\x20\x5d\x95\x64\x54\xd4\xec\x1a\xb1\xcd\x70\x8a\xb5\xf7\xf7\x51\x65\x78\x56\x15\x54\x11\xcb\xdd\x16\x52\x45\x62\x92\x61\xb5\xa2\xfa\x32\x22\xea\xc4\xfa\x22\xae\x4f\xa3\x7d\x26\xe2\x7d\x1e\xae\x64\x1d\x94\x1e\xc8\xd5\xea\xb0\x0a\xf2\xba\x01\xb8\x8e\xcd\x3a\x01\x3b\xd4\x31\xee\x86\x4d\x76\xaa\x1d\xda\x6a\x72\x24\x49\x87\x95\x99\xbf\x69\xc9\xe3\x9a\xcf\x4d\xc9\x5f\xea\xbc\xf9\xf3\xd8\xec\x32\x12\x40\xfe\x20\xe9\xd5\x7f\xa5\x67\x1c\xee\x0d\x2d\x46\x3a\x97\x8a\x3d\x46\xfb\xe2\x5f\xe7\x12\x28\xb3\x47\x9e\x99\x37\x53\xf2\x7f\x33\x25\x1d\xe6\x1d\x5b\x50\xa8\x39\xf7\xec\x28\x3a\xbd\xce\x83\x87\xd7\x68\x7a\x6f\xc9\x6b\x20\x4e\xf8\x6a\xc5\x72\x4e\x0d\x2b\xd6\x6f\xea\xf2\x31\x87\x86\xf8\x42\x22\x4e\x08\x47\xfc\x16\x27\x7c\x47\x9c\x79\x50\xd4\x14\x59\x56\x2b\x6b\x72\x1a\x64\x50\x2d\x75\xb8\xf6\x9c\xa9\x95\xbc\x14\x49\xd6\x61\x8c\xda\xcd\x09\xa2\xac\x3e\xe4\x7f\xb7\x37\x86\x12\xc5\x16\xc0\x4d\x1c\x67\x38\x01\x2f\x41\xdb\x57\x43\xfe\xfa\x08\x82\x83\x3f\x29\x15\x9b\xf3\xcf\xbb\x76\xbd\x0b\x77\x04\x3f\xed\xd8\x5f\xee\x69\x67\x86\xc1\x25\xcd\x77\x6a\x59\x83\x4b\xa5\x58\x59\xf0\x8c\xee\xe4\xaf\xdd\xac\x0f\xff\xe3\x36\x23\x6d\xb0\x83\x02\xa9\x30\xb1\x9d\x6b\x58\x07\x28\x1c\x78\xfe\xcd\x9c\x64\x95\x52\x4c\x38\x34\x7d\xc0\x55\x09\xb4\x98\x69\xc0\xdc\xcd\x3e\x6c\xf8\xfa\xe5\x7e\xa1\x5c\xb1\x5c\x7b\x5a\xcc\x91\xdf\xa9\xb1\xc4\x94\xcc\x0e\x5f\x6e\x6d\x2c\x6b\x5c\xec\x54\x4f\x37\x8c\xb0\x9c\x95\x85\x5c\x03\x14\x42\x78\xb6\x6d\x2a\xb3\xb2\xa0\x19\x23\xcc\x5e\xc0\x7d\xc7\xbd\xac\x83\xbe\x82\x3d\x11\x29\x76\x7f\x67\x8c\x1d\xa4\x64\x51\x70\xb1\xf8\x09\xa0\xa1\xf7\x31\xa7\x5e\x01\xa3\x7b\xcc\x43\x4a\x13\x67\x75\xbb\x50\xad\x9e\xda\x93\x6c\x8f\x0c\x78\x6e\xf6\xde\x44\x3e\x27\x57\xf5\xaa\xdc\xf9\x45\x81\xec\x9b\xff\x3f\xf9\xd4\x9e\xd9\x94\x4c\x26\x13\x87\x3a\x41\xdc\x5f\xf6\x9b\xe8\xf6\xb6\x18\xe9\x31\x90\x89\xac\x00\x7b\xe9\x91\x89\xba\xf6\x49\x0a\xf6\x71\x6e\xa5\x1d\x35\x56\x9e\x91\x27\xbb\x3f\x19\xcf\xf7\xd3\xe5\x3e\x25\x71\x6f\xf5\x53\xac\xf9\xb9\xa2\x9f\xef\x2a\xb5\x18\x14\x09\x51\x20\x0d\x38\x70\x06\x14\x28\x43\x0f\x6d\xa4\x55\x63\xdc\x70\x04\x38\x94\x2e\x75\x8f\x8a\x18\xf5\xa8\xee\xbf\x41\xe8\x4c\x3e\x3a\x59\x96\x33\x0d\xc5\xdf\x5d\xb2\x53\x27\x00\x07\x29\xba\x17\x03\xf2\xc9\x4c\xcb\xa2\x32\x2c\x10\x7a\xcd\x3e\x7f\x47\xfe\xed\x0d\x81\x82\xd6\x92\xa9\x8c\x09\x43\x23\xd0\x1d\xe4\xbc\x9e\x12\x7c\x1f\xd0\xf9\xe6\xed\xbf\xbe\xf1\xfe\x4d\xfb\x46\x0f\xad\xfe\xd6\x1e\xe5\xf7\xf4\xf3\x4f\x82\x3e\x52\x5e\x44\xf9\x24\xb9\x26\x6f\xa7\xe4\xb2\x37\x59\xa0\x5b\x64\xd0\x48\xc2\xe3\xc0\x23\xa6\x3c\x5b\x13\x25\x2b\x91\xbb\xbb\xd9\xb5\x3d\x7e\xff\x6f\xff\x6a\x2d\x0f\xba\x2a\x0b\xf6\x1d\x79\x5a\x32\xb1\x9f\x79\xb7\xe6\xa9\x5d\xe5\xda\x1f\xde\xfe\xab\xd3\x0c\x2c\xe7\xf1\x22\xe2\x8e\x85\x3d\x27\x3a\xa3\x76\x43\xab\x61\x93\xab\xa5\xac\x85\x89\xb0\xc0\x8a\x02\x4f\x81\x5a\x06\x7d\xee\xaa\x0a\xa2\x12\xd0\x9c\x3e\x64\x68\xd1\x3a\x41\x90\x79\x03\x0a\xe7\x93\xdb\xc4\xa0\x91\x7e\xce\x58\x44\x64\xee\x9b\x3f\xbc\xfd\xd7\xfe\x39\x98\x92\x8f\x22\x63\x40\x19\x28\x2e\xe9\x23\x23\x33\xc6\x04\x79\xe0\x45\x11\x93\x58\x35\xb0\x7c\x64\x5e\x29\xab\x3d\x9d\xbb\x5a\x91\x28\xdd\x07\x7c\x1b\xbd\x6f\x87\xd9\xa9\x4a\x40\x81\x9f\xb5\x0d\xc5\xda\x59\x36\x79\x2c\xd1\xd0\x33\xc0\x39\x0b\xc9\x4a\x6a\xb3\x7d\x49\x86\x9c\xab\x07\xe1\x99\xac\x3a\xf7\xea\x37\xc9\x2e\xab\xe6\xfb\xfd\xee\xb5\x76\xc7\x73\xc8\x2d\x1c\x70\xf8\x24\xee\xe5\x90\x5b\x39\xe0\xf0\x9d\x01\x0e\x79\x3a\xbe\x96\xcb\x27\xb1\x9b\x03\x83\x48\x8d\xb1\xa6\xdf\x46\x71\xc7\x1e\xf7\x8b\xba\x33\x96\x33\xec\xbc\xde\x76\xf6\x96\xda\xbf\x77\x6e\xd1\xb0\x4f\xdb\x2e\x7f\x3c\xdb\x74\x3c\x2a\x8a\x11\x01\x65\xaa\x5c\xe3\x12\x6b\xb8\x0d\xcd\x7e\x90\x6a\xcd\xbe\x9c\xfa\xe5\xa3\x76\x19\xf5\xd3\xdc\x22\x41\x86\xd7\x35\x70\xc2\xb6\x17\x77\x0b\xb7\x6b\x6e\x49\x84\xbc\x00\x97\x17\xe0\x02\x6d\x5c\x29\xcf\xf0\x0a\x46\xb5\x49\xd9\xaa\x53\x32\xc4\x28\x3b\x77\x28\xf7\x7d\x33\xdf\x1d\xbe\x30\xe8\xe2\xd0\x36\xc6\xee\xfb\xab\x4f\xcc\x95\x6e\xbf\xb2\xcc\xe1\x55\x47\x29\x7f\xb5\xdf\x88\x0f\x90\x8b\x5c\xf7\x74\xf9\xc1\x6f\xdb\xcb\x67\x07\x3e\x7f\x5f\xfa\xe0\xa4\x36\x11\xb7\xfc\xe3\x5e\xba\x7a\x49\xd5\x56\x92\xbd\x70\xaa\xfd\x59\xd3\x35\xcd\xae\xe9\x4a\x8a\x85\xcc\x67\x5b\x11\x49\x72\x99\xe9\x69\xf8\x41\x26\x57\x17\x2b\x2a\x2a\x5a\x5c\x64\x52\xb1\x0b\x78\x25\xcb\xeb\xc6\x55\xf0\xbf\xf5\xd6\x30\xe6\x90\xc5\xe1\xcc\xb3\x3b\x00\x31\x89\x32\x57\xdf\xb5\x1e\x80\xab\x20\x7c\x1a\x20\x2d\x9a\xfe\x6e\xbe\x83\xcf\x10\xe6\x79\x07\x5a\x05\xd0\x00\x1c\xf8\x04\x35\x74\x46\x35\x23\xaf\xf9\x94\xf9\x55\x9a\x66\x62\xfe\x66\xda\x0d\x94\xee\x3e\xe1\xce\x77\x5a\xb0\x4e\x42\x21\xa1\x7a\xdb\x1b\x1b\x6f\xd4\x10\xe8\xc5\x96\x87\x63\x12\x16\x63\x8c\x3e\xfa\xa4\xaf\x0b\xaa\x0d\xcf\xfe\x52\xc8\xec\xe1\xce\x48\x85\x30\xb9\x2f\x7f\xb9\xdb\x78\xba\x13\xfb\x10\xe4\xf2\x97\x3b\x72\xc5\xf5\xc3\xde\x6b\x19\xd0\x6c\x6a\x48\x9e\x56\x14\x98\x50\xf2\xe0\x0a\x9e\xcf\xce\x34\xc0\x27\x92\x15\xcd\x96\x5c\xec\x17\x25\xd4\x35\xfa\x13\x84\x7d\x2e\xa5\x6e\x4a\x21\x7a\x51\xff\x28\x24\x1e\x6d\xa4\xa2\x0b\x76\xe1\x70\x11\xf4\xef\xe8\x93\x66\xee\xb3\x67\xf6\xb3\xed\x3f\xb3\x63\x58\xdf\x73\x7d\x1f\x51\x1e\xd4\xdd\x82\xef\xeb\x0e\x3b\xae\x20\xc8\xe7\x27\x05\x3c\x0e\xbb\x9e\x6b\x59\x0d\x0a\x88\xd0\xf3\x01\x1c\x57\x53\x72\xcf\xcb\xef\xc8\x75\xab\x2a\xdc\x55\x91\x74\x5e\x15\x65\xa4\xd5\x15\x00\xde\xfd\x0d\xfb\xe7\x9c\xbb\xd0\xb8\xc4\xf7\x06\xf2\x4a\x4e\x44\xa0\xe5\x15\xfb\x6c\xbe\x7d\x75\x4e\x5e\x7d\x9e\x6b\xfb\xff\x84\x99\xeb\x57\x53\x72\xb3\xaa\x31\x9c\xb8\x98\x33\xa5\x58\xe8\xaa\xe9\x1e\x18\x9e\x6c\xbf\x9a\xf7\xf8\x47\x64\x70\x0e\xce\x97\xb4\x94\x4f\xd6\x22\x7c\x62\xa1\x7b\x24\x61\x4a\x49\x87\xfc\xd2\xdb\x06\xab\xb2\x0e\x3b\x21\xe4\xaa\x54\x72\xc5\x5b\x99\x0c\x70\x7d\x8e\x96\x7c\x02\x61\x39\x38\x8e\x68\x33\xa4\x7e\xb4\x07\xc2\x12\xce\x2d\x9c\xcb\x61\x05\xb7\x3e\xb7\x37\xf3\x80\x15\x76\xee\xdd\x37\xb5\xbc\x0f\x3f\xb2\x27\x31\x12\x34\xc7\xb5\x15\xac\xcf\x26\xf9\x5e\xaa\x30\xc1\x8b\x9c\x3d\x5e\xe8\x9c\x7e\xe3\x5a\x3b\xb9\x83\x33\x9c\x68\x6f\x3a\xdf\x4c\x35\x79\xf5\xcd\xab\x29\xb9\xe3\x2b\x5e\x50\x55\xac\xcf\xdb\x6b\x50\xff\x6e\x58\xb9\x95\xaa\x9e\x90\xfd\xd4\x57\x6f\x5f\x91\xd7\x52\xc1\xcc\xac\xae\x5c\x30\xea\xdd\x59\xa1\x62\x62\x58\xb7\x5d\x95\x66\xfd\x66\x50\x65\x3c\x4d\x13\x4f\xab\xf5\x7f\x14\x05\xae\x75\xec\xd9\x9d\xdb\x03\xf2\xca\xea\xaa\xaf\x9c\xab\xd5\xca\x14\xc0\x59\xf6\x9d\xfb\x3e\x79\xca\xc3\x0a\x73\x28\x2d\xe1\x82\xfc\x0c\xfb\xf1\xde\x1e\x1e\x38\x46\xee\x05\x1b\x87\x6d\x90\x66\xeb\x30\xbe\x02\x14\x0b\x7c\x1b\xc0\x43\x25\x11\x41\x81\x39\xb8\xb7\xdc\x5c\xe1\xf6\xe1\x27\xc1\xff\x51\x31\x72\x73\x55\xc3\xe2\x32\xa5\xb9\x36\x96\x93\xe5\x5c\x3f\xd4\xd2\x7e\x98\x27\x3b\xf5\xe1\xf5\xe5\x8a\xfe\x53\x0a\x72\xfd\x97\x3b\x3f\xa5\x37\x5f\x70\xe1\x06\x19\x62\x4c\xb1\xd0\xa4\x5e\xdb\x43\x8d\x2a\xfa\xcf\x4a\x31\xab\x60\x45\x6b\x6d\x97\xe1\x89\xbe\xa6\x66\xff\x4e\xae\xa8\xa1\xa0\xb0\x91\x61\xc0\x47\x0f\x5c\x0c\x32\xdd\xde\xb2\x19\x17\xb9\x67\xb2\x2d\x6d\xeb\x08\x8a\x51\x06\x12\x6b\xf1\x5e\xe6\x48\xed\x08\x90\xb2\xdf\xb9\xa7\xc9\xca\x3e\x4e\x3e\x48\xc1\xce\x81\x11\x10\xcb\x09\xdc\x7f\x0e\x1e\xc5\x5f\x14\x37\xfb\x43\x2c\x04\x23\x32\xed\x3d\x40\x67\xc6\x5a\x81\xf9\xa1\x05\x37\x0d\xc9\xe1\x70\xa3\xbc\xf0\x9c\x15\x72\x46\xfc\x49\x3f\xe6\x4c\x7f\xfa\x74\x83\x9e\xe8\x4f\x9f\x6e\x9e\x6f\x92\x09\x8a\x73\x5f\x6f\x6e\x74\x88\x00\xe9\x4f\x5b\x9a\x56\x54\xa0\x1f\xa1\xed\x4e\x83\x1e\x3b\xac\xef\xe2\xf4\xdc\x98\x62\x81\xb6\x9e\x7b\xac\x1d\x78\xe0\xc3\xed\x51\xbb\x57\xf3\xfa\x73\xc9\x32\xd3\xa4\x7f\xde\x2d\xa9\x65\x9a\x64\x55\x15\x06\xf2\x75\xed\x41\x19\x96\xa9\x5c\x3f\x68\x2b\x61\xc2\x91\x22\x3e\xb7\x9a\x90\x2b\xe6\x92\x60\xf3\xef\x88\x55\x7d\x31\x14\xb7\x13\x7c\x0f\x10\xac\xf9\x77\x8e\xe7\x12\x87\xc8\x9a\xc3\x09\x8f\xa3\xfa\x1a\xca\x06\xb8\xa8\x1f\xf5\xae\x41\x5e\x70\xb3\xb6\x3a\xca\x9b\x69\x7c\x27\x3f\x23\xc1\x03\xc4\xf2\xa3\x31\xa5\x24\xb5\xab\xed\xaf\x06\xa5\x86\xbc\xb6\x74\x2e\x9e\x2c\xc3\x7c\x33\x8d\xd7\xb8\xa0\x18\x10\xdc\x1a\x4e\x6d\x6b\xab\x6b\x75\x4f\xfc\x9e\x36\x16\x77\x7c\x87\x55\x9d\x38\x91\x1d\x98\xf6\xe0\x8f\x7e\xfa\x74\x73\x14\xb1\x6e\x79\x14\x4e\xac\xdb\x27\xb6\x8a\x75\xf8\x07\x5f\x13\xb1\x3f\xb0\xe5\x32\x57\x9e\x4b\xb2\xff\x76\xcf\x1c\x40\xfe\x2a\x86\x2f\x90\x69\x57\xc2\x38\x12\x1d\x80\x22\xed\x76\x7c\xf0\xdb\xef\x3c\x7b\x0b\x15\x32\xa0\x59\xd8\xbd\xfe\x2b\x1b\x5a\xb8\x78\x50\x63\xcb\xa0\xd0\x1f\x08\x92\x80\x0c\xdc\x34\xc4\x3c\xe2\x6e\x77\xb3\x1b\xfb\x7f\x16\x3e\xe9\xd0\x1b\x9e\xb1\x72\x39\xdf\x7b\x3b\xba\xee\x6f\x56\x2e\xbf\xbf\xeb\x26\x96\xdb\xbf\x91\xef\xef\x36\xef\xec\xde\x75\xf3\xfd\xa3\xa9\x02\x44\x0b\x57\xef\x53\xf0\x39\x33\x7c\xef\x47\x45\xa7\x10\x49\xc1\x8d\x1c\x6e\xc8\xba\x89\x3e\x0f\x7b\x44\xde\xfb\xe7\x1d\xf0\x4f\x26\x8b\x82\xb9\xae\x41\x72\x58\xb3\x81\x05\x09\x13\xd8\x66\x22\x32\xef\xcb\x99\x3e\xfc\x09\x8c\x44\x6f\x0e\x5e\xb8\xcd\xb8\xf8\x74\x7d\x79\xf5\xfe\x7a\xba\xca\x7f\xb7\x94\x4f\x13\x23\x27\x95\x66\x13\x6e\x86\x24\x6c\x64\x09\x14\x22\x60\x1f\x0b\xde\x10\xd3\xc7\x72\x57\x17\xa1\x9f\x7c\x68\x02\x5c\x82\xf6\x04\xb1\x1c\xba\xbe\x9f\x13\x45\xcd\x32\xa6\x3f\xd4\x92\x7a\x8f\x64\x55\x14\x6e\xed\x8d\x62\xec\xbc\xed\xe8\x38\x5e\x89\x5b\x9a\x53\xa8\xf9\xdc\x01\xa1\x31\xf8\xb5\xb5\x5c\x38\x85\xd0\xd8\xda\x79\xef\x34\x87\x15\x2b\x9f\x86\x94\x10\xb2\x67\xcd\xef\x6a\x0a\x21\x33\xb6\xf4\xfd\x53\x1f\x06\x85\x0c\x21\x10\xff\x9e\x4b\x05\x55\xdc\xdd\x53\xc5\x4c\x06\xcb\x70\x01\xf0\xb8\x5e\x0a\xbe\x8f\xf1\xb1\x3f\xdf\x12\xc7\x81\xfe\x2b\x66\x3e\xb1\xc1\xdc\xa0\xfd\x0b\xfc\x89\xcd\xed\xaa\x40\x25\x1c\x40\x71\x3a\x1d\x6d\x70\x2d\x68\x65\x96\x4c\x18\x6b\x25\x59\x06\xeb\x97\x71\xeb\x8a\x3b\xe0\xfe\x97\x73\x8a\x31\xf5\x94\xb1\xe8\x48\xbd\x4e\x4f\x2d\x4f\x8b\x5f\x59\x83\x76\x3b\xca\x47\xab\x72\xb3\x27\xe8\xb1\xc4\xc5\x62\xf2\xc4\xcd\x72\xe2\x34\x03\x7d\x01\xa0\x5b\x17\xbf\x83\xff\x17\x31\xbf\x10\x20\xba\xcc\x73\x17\x3c\x26\x95\x66\xf3\xca\x87\xbf\xf5\x94\xd0\x92\xff\xcc\x94\xe6\x52\x9c\x83\x41\x1e\x57\x43\x59\xf1\xfc\x7f\xc5\xb7\x0e\x41\x88\xaf\x88\xb2\x87\x18\x68\xc0\x3d\xf2\x4b\x05\xb6\xa2\x68\x2e\xb5\x43\x52\xb0\xab\x39\xfc\xe1\xad\xa3\x4d\xf3\x15\x17\xcf\xcd\x7f\x8f\xa4\xb4\x06\x5d\xe7\x60\x65\x94\x8b\x7c\xff\x4e\x74\x77\xe1\x1d\xfc\xbe\xab\x8d\x3a\x1a\x21\x7a\x15\x22\xf8\x7b\x57\x83\x06\xab\x92\xe5\x56\x7d\xf5\x71\xfe\x6e\x94\x7f\xeb\x9d\xeb\x6f\xcd\x6a\xad\xff\x51\x4c\xdc\x0c\x26\x65\xde\xec\xcd\x4b\x09\xcb\x3f\xaf\x7b\xf1\x2b\x08\xa6\x1f\x65\x07\xc9\xa8\x40\xd6\xe3\xf4\x6b\x1c\xaf\x33\x1e\xa0\xd1\x00\xca\x8e\xeb\x7b\x13\x14\x12\xc7\xbb\x82\x7f\x23\x26\x4b\xbc\xc6\x67\xd4\x2e\x01\xab\x69\x93\x6a\xff\xf3\x63\xc9\xc4\x9d\xa1\xd9\xc3\x51\x1b\x06\x8d\x5a\xc6\xde\xf1\x25\xb5\x8c\xb4\x38\xb6\x17\x64\x3c\xaf\xcf\x10\x07\xcc\x2e\xdf\x45\x27\x32\x87\x84\x0b\x2f\x18\x5f\x04\x17\x7c\xde\xd8\xb4\xcb\x5b\x7c\x4f\xf7\x76\xef\xd9\x92\xe4\xf9\x9e\x96\x3d\xd5\xa2\xfe\xb3\x77\x5e\xc9\x6a\x00\x21\xad\x94\x25\xa4\xf5\xbb\x94\xcc\xc1\xbd\x8a\xbd\xe8\x5e\x6d\xc4\x07\xa2\x1b\x06\xb7\x92\x39\x73\x4d\xa1\x7c\xa1\xa5\x14\xa1\x13\xd5\xe0\x61\x72\x7d\xab\x9a\x3e\x74\x6d\x6d\xc2\xd5\x5f\xcf\x98\x79\x62\x4c\x90\xb7\xa0\x5b\xbd\xfd\xf7\x7f\xff\xf7\x61\xc9\xd1\x16\x6c\x6f\xff\xf8\xed\xb7\x53\x72\xc5\x15\xcb\x8c\x54\x9c\xe9\x80\x9f\x59\x1b\xef\x34\xc2\xc8\x16\xd2\x10\x0a\x18\x03\x41\x59\x71\x25\x0b\x56\xb2\xf9\x32\x09\x07\xe5\xeb\x9a\x1b\xdb\xed\x2d\x78\x04\x38\x0d\x94\x98\x3a\xa6\xe4\x21\x40\x3d\xc2\x84\xc3\x33\x08\xd9\x71\xb0\xc6\xe7\xa4\xe0\x0f\xc3\x53\xf5\x7d\xde\xce\x43\xc2\x28\x51\x4c\x5b\xc3\xc0\xd7\x18\xb8\x97\x35\x7b\xa6\x99\xf9\x42\x49\x51\x51\x4e\xc6\x3e\xb8\x53\x07\x39\x15\xc0\xbc\x1f\xd8\x7a\xe2\x8e\x4a\x49\xb9\x8a\x69\xfe\x61\x17\x05\xb2\x42\x5c\x96\x75\x57\x58\x65\x2c\x6f\x5d\xda\xd8\xde\x69\xa5\x92\x7f\x77\x87\x83\x8b\x00\x72\xe2\xcd\x06\xed\x15\x63\xf2\xb4\x94\xda\x07\x3a\x22\x2a\x67\x02\x6e\x8d\xeb\x5a\x08\x40\x9d\xc1\x36\xf4\xf0\x29\x1b\x50\x57\x83\x34\x0b\xae\xed\x14\x1f\xd8\xba\x41\x1a\xdf\x32\xf3\x06\xae\xce\xde\x0f\x3d\x2c\x0e\xed\x1c\x2b\xb1\x41\xdd\x17\x0d\x79\xb6\x07\x13\xa6\x1e\x8b\x67\x90\x64\x33\x07\x87\x95\xe1\xd1\x33\x3c\xad\x90\x7a\x51\x6f\x54\xdc\xf7\xfb\x2d\xd1\xcc\x54\x7e\x6b\x21\x11\xd5\xce\x9d\x69\xed\x91\xf0\x56\x54\x3d\x58\xeb\xcd\xf3\xb7\x61\x6e\x73\x6b\x17\xa9\x06\x13\x72\xa8\x38\x8f\x2e\xf2\xb4\xa2\x6b\x98\xb6\xd7\xf4\x60\xce\x67\xd3\x88\xb6\xf4\xc0\x98\xa4\x72\x85\x46\x8e\x4b\xd8\xe7\x4e\x01\x5d\xf6\x9e\x96\xf6\x88\x3a\x49\xeb\x30\x9c\x24\x40\xd3\x98\x65\x0d\x35\x1c\xa1\xe6\xf8\x16\x7b\x31\x37\x05\x81\x1b\x96\x86\x4c\x75\xef\xef\x8e\xab\x9f\xb0\xc7\xfb\x24\xa8\x3a\xab\x08\xa1\xb9\x65\x76\x03\xa2\x33\xaa\x5c\xd8\x0d\xcb\x56\xce\x9b\x36\xf8\xbb\x25\x66\x6c\x3f\x1b\xb2\xad\xb9\xac\xbf\x35\x2d\x4d\x01\xd5\x52\xd2\x61\xea\xef\x11\x92\x5b\x84\x60\x24\xe1\x01\x51\xd9\x11\x85\xd1\x24\x8f\x21\x30\xdd\xc0\x76\x8d\xc7\xa3\xdd\xc4\x44\xcb\xdc\xd8\xb8\x1f\x35\x9f\x72\xac\x66\xde\x2c\x60\x64\x1b\x0c\x42\x56\xb4\xac\xc5\x94\x91\x0e\x9e\xd5\xf3\xfc\x36\x40\x80\x7d\x41\x2c\x60\xdb\xfb\x2d\x0c\x13\x26\xc8\x5c\x43\x11\xc7\x05\xc3\xcf\x22\x89\xb6\x98\x28\x88\x37\xc7\xe9\x62\xf8\xa9\x1b\x28\xb6\x10\x8f\xac\x3f\x89\x8a\x19\x4d\xe0\xfb\x23\x43\xb1\x47\xc4\xe5\x89\xb3\xff\x5f\xb6\xed\x8f\xb5\xfb\xa3\x6c\xfa\xe8\xd3\x20\x23\x1b\x4a\x77\x53\x45\x7c\xce\xff\xd3\x92\xc1\x94\x3b\x5a\x8e\xd5\x08\x2c\x0b\xb2\x2a\xd6\xe0\xc7\x07\xb1\xe0\x7b\xb6\x1f\xc9\x21\x16\x67\x26\x6b\x1e\x6f\x20\xdf\xdd\x90\xd7\xef\x6a\xf0\xe9\x90\xc4\x73\x23\x0c\x53\x73\x9a\xb1\x37\x2d\xc3\x79\xbf\xa3\xce\x3f\x19\x2a\xee\x96\x54\xe4\x85\xb3\xd6\xa8\x20\xec\xb3\x61\x4a\xd0\x02\xde\x97\x2b\xfe\xc8\x14\x79\x7d\x59\x94\xcb\xfd\xba\x8d\x47\x2c\xde\xeb\x0c\x8d\x36\xb5\xe1\xad\xb8\xbc\x30\x37\xd1\x4d\xb4\xe0\xf6\x67\x44\xc1\x76\xb8\xd5\xd0\x6d\xef\xc1\xd4\x1e\x2c\x90\x74\xc0\x1a\xd7\xb2\x52\x3e\x74\xe4\xfb\xdf\x0c\x12\xcd\xa4\xb2\x66\xb5\x9b\x18\xc0\x4c\x2d\xac\x0d\xa0\x9a\x16\xd4\xbe\xae\xf6\x68\x59\xb9\x47\xcd\x8b\x6e\x65\x2d\xfb\x80\xc1\x70\x7c\x21\x04\x14\xe6\xde\x1c\x81\xea\x5c\xaf\x28\x41\x48\xd9\x2b\x61\x5c\x93\x92\x6a\x1d\xe1\x02\xf1\x46\x17\xd5\x5a\x66\x1c\x70\x1b\x5a\x7b\xeb\x8c\x1f\x50\xb7\x72\x66\x98\x5a\x0d\x55\x89\x12\xaf\xc3\x84\x70\x60\xbb\xc4\x51\x02\xc6\xea\x60\xd0\x3b\x7a\x33\x84\xcc\xd9\x6d\x35\x2b\xb8\x5e\xde\x25\x79\xc9\x3f\x6c\x21\xe0\xb2\xa4\xda\x91\xff\xa8\xef\xdd\xe5\x59\x27\x9a\x09\xcd\x41\xd1\xb1\x22\xc8\x2a\x64\x31\x05\x68\xd6\x72\xa0\xba\x6e\xaf\xd6\xbe\x6d\x12\xea\x0f\x0b\xe6\x11\x1b\xed\x3f\xb5\xbe\xe3\xe7\x38\x27\xaa\xc3\xf4\xcd\xd9\x4f\xa2\x6c\x3f\x47\x32\x5a\x14\xba\x8f\xec\x1e\x04\x49\x9c\x21\x0e\x46\x67\x80\x08\x24\xdc\x1e\xd4\xb0\x3a\x90\x52\xe1\xd4\x93\x80\x4b\x38\x6c\x88\x6f\x5b\x58\x4d\x56\xd2\x15\xd2\x0a\x22\x45\x58\x7d\x00\x40\xf6\xff\x1d\xa1\x27\xf9\x1d\x76\xb8\x18\xee\xb2\x0c\x1d\xcd\x31\x7c\xf1\xab\x08\x5f\x24\x05\x2e\xef\xbc\x55\xea\xd8\x03\xcd\x27\x50\x7b\xd0\x43\x12\x90\x31\x49\x7e\xac\x16\x80\x87\x45\x40\xb1\x75\x87\x97\xc6\x28\x3e\xab\xcc\xf0\xe9\x0d\x2d\x09\x69\x71\x8b\x38\xf1\xa9\xf8\x49\x3f\xf7\x66\x07\xaa\x14\xd3\x9e\xe3\x4d\x02\xbe\x24\xc2\xb5\xe3\x2d\xf3\xfa\x5e\x6f\xf2\xd1\x5a\xf9\x18\xa4\x0a\x7a\x89\x7b\xe8\x4c\x93\x5c\x66\x15\x74\x96\xac\x41\x06\x9b\x24\x02\x57\x77\x13\xb7\x6b\x83\xa7\x34\xb2\x82\x02\xe6\x75\xa8\xbe\x9c\xcb\x27\xf1\x44\x55\x7e\x79\xbb\xb7\x2c\xad\xab\x1a\x36\xcf\xb4\x43\x4b\x81\x14\xb1\x7f\xa7\x33\x59\x99\x41\x2e\xef\xfa\x16\xd4\x51\xa8\x31\xd2\x34\x46\x9a\xc6\x48\x93\x7d\xc2\xa9\xa2\xa1\xa1\x68\xe7\x66\x45\xc6\xca\xed\x8a\x9e\xc0\x65\xdf\xba\xfb\x8e\x77\xf7\xab\xa4\x30\xaa\x2e\x28\xbb\xee\x16\x35\xa7\xa0\xa5\x40\xfb\xda\xa8\xc8\x26\x5e\x38\xf7\x3e\xd0\x8c\xb0\x1a\xb6\xac\x41\xab\xc0\xe2\x8e\x15\x56\xb1\x22\xdd\x80\x5e\xa4\x73\xb0\x94\xf9\x77\xae\xfb\x11\x15\x42\x3a\xb9\xa2\xcf\x5d\x4b\x66\x7d\xee\x4d\x5b\x91\x37\xfd\x64\x23\xe9\x5a\xe1\x57\x8b\xa6\x48\x87\x31\xbe\x4f\x6a\xa3\xfb\xa5\x36\x1f\x75\x4f\x07\x95\x57\x67\x4b\xb6\xa2\xf0\x9f\xdf\xdb\xb5\xbc\x8d\xf1\x3d\x36\x83\x6b\x62\x55\x27\xc3\x1c\xfc\x09\x53\x2b\x4d\xe4\xbc\xce\xbb\x76\x60\x13\x8f\xdf\x0c\x60\x9a\xb5\x47\x42\x2f\xd6\x79\x98\x78\xe2\x92\xdc\x76\x1c\xe2\x1e\x87\x4b\xc3\x19\x8b\x89\x2e\xb7\xe6\xde\x89\xa5\x02\xdb\x70\xab\x7d\xc2\xcf\xc7\x36\x76\x9d\xa3\x76\x19\xd9\xb1\x75\x0c\x90\xc5\xd1\x1c\x03\x64\x2f\x2c\x40\xd6\x12\x2e\xc0\x0d\xb8\x0e\x1f\xee\x82\x66\xb1\xb2\xc5\x3e\xdb\xf6\xda\xfa\xf8\x9a\x5d\x35\xaf\xb7\x7a\x35\x34\x3e\x98\x65\xcf\x71\x88\xac\x49\xd5\xcd\x2c\x38\x9b\x4e\xcf\xce\x5c\xbc\x0d\xc8\xc6\x93\xac\xcc\x7c\xf2\x27\xc2\x44\x26\x73\x77\x14\x7d\x8b\x7d\x50\x4f\x1a\x7f\x08\xfe\xeb\x57\xfe\xeb\x3a\x99\x0c\x30\xcf\xb8\x23\x82\x64\x80\x01\x89\xe7\xfb\x03\x14\x8b\x46\x9d\xa8\x51\xfc\xfa\x3d\x32\x63\x25\x0b\xe8\x15\x81\x8a\x26\x05\x5f\x71\xd7\xdc\x08\xf8\x34\xd3\x46\x93\xd7\xee\x8f\xd3\xac\xac\x62\x3b\x84\xf9\x27\x56\x6c\x25\xd5\xfa\xbc\x26\x65\x49\x74\x68\xfb\x5f\xc4\x36\x07\xb6\x1a\x8b\xef\x1c\x51\xac\x9f\x41\x77\xa9\x57\x13\xd3\x10\x75\xa3\x6e\xa3\x8e\x1c\x81\xbf\xaf\x96\x7f\x51\xae\xa0\x66\xf8\x4a\x98\xf3\x16\x02\xa7\x54\x84\x89\x47\xf2\x48\x95\x8e\x5b\x01\x92\xa6\xae\xe4\xfc\x91\xeb\xd8\xe6\x5c\x64\xb7\x57\x0c\x40\x91\x2b\x53\x56\xc6\xf3\xd5\x98\xfa\xe2\xd6\xcc\x97\xac\x46\x96\xac\x4f\x6c\x4f\x73\xfb\x66\xb8\x50\xa2\x26\x87\x5f\x88\xf0\xd6\xd4\xa3\xd0\xf0\xec\x06\x7d\x33\x28\x6e\x27\xdc\x41\xac\xc6\x15\x0d\x16\x46\xb0\x0a\x17\x26\xf5\xe0\xcb\x24\x15\x44\x11\x84\xc0\xc5\x15\x47\x14\x6f\x5d\xfb\x27\xba\x39\xd6\x86\xad\x4a\xa9\xa8\x5a\x93\xdc\xfb\x64\xf6\xe7\x3b\x6c\xc2\x08\xb4\x70\x04\x0e\xc6\x67\x83\xaf\xca\xb9\x3a\x4a\x53\x13\x96\xf3\x6a\x85\xf3\xa2\xfd\x02\xa0\xa7\x1e\x50\x35\xc4\xca\x1d\xa1\xba\xaf\x14\xcd\xf6\xa3\xda\x92\x80\x08\x5c\x2f\xe8\xd4\x37\xdd\x69\x70\x00\x5f\xf5\x9a\x9b\x59\xe5\x36\xca\x27\x2f\x64\xce\xec\x8a\x07\x62\x6e\x6e\x2d\x37\x9d\xf0\x21\xad\xc8\xbb\xf9\xda\x13\x02\xc0\xfd\xf7\x20\x09\x9f\x65\x13\x09\xaa\x5e\x9a\xff\x93\xfd\x68\xc5\x39\x12\x69\x14\x60\xd9\x9b\xa6\x4c\x85\xcc\x68\x51\xef\x6a\xe0\x03\xc3\xee\x29\x88\xf3\x73\x4d\xea\x0b\x14\x02\x23\x76\x57\xed\xdc\x9c\xae\xe1\xda\x4b\x6b\x17\x3f\xe6\x59\x54\xe3\x15\x4b\xdb\xe9\x1f\xf5\x4e\xb6\xdb\x34\x54\x1a\x5a\x1f\x88\xee\x6f\x06\xa9\xd6\x13\x7d\x0a\x9d\xd0\x00\xec\x81\x0b\x20\xda\x35\xef\xec\xbf\xdc\x85\xf5\x1d\x8e\x73\xd6\x86\x3a\x54\xb3\x05\x97\xa6\xae\x40\xfd\xf5\xb3\xf4\x0a\x9c\x9c\x13\x1a\xd1\x4a\xaf\x56\x70\x00\xe9\x96\x3a\xa4\xe6\xde\x7d\x11\xbc\x68\x5f\x98\x88\x9b\xe2\xb1\x8b\xeb\x8d\xa9\x84\xcf\xf0\xd9\x38\xdd\xdb\x0f\x77\xa5\x99\x9a\x2c\x2a\x9e\x9f\xec\x58\x47\x71\xf9\x79\x16\xcd\xdf\xbf\x7f\xd7\x65\xec\xdf\xf3\x99\x62\xe4\xdd\x92\x0a\xc1\x8a\x2e\xd4\xf6\x7e\x37\xf0\x2e\x18\xee\x6e\x7d\xee\x06\xd2\xf6\x7e\xa9\x71\x54\xf4\xa8\xaf\xaf\x32\xf7\xc5\x00\xff\xc5\x81\x4d\xc7\xc5\x89\x1a\x30\xea\xd3\x83\x4d\x17\x15\x12\x66\xba\xf1\x8e\x7d\xff\x8e\x18\xaa\x16\xcc\x58\x22\xbe\x4b\xc7\xd7\x04\x70\xfc\x52\x4a\x91\x8f\x57\x2d\xec\xb6\xe3\x97\x5f\x3e\x20\xd1\xa2\xb6\xed\xe9\x93\x54\x45\xfe\xc4\x73\x97\xf8\xa7\xc9\x6b\x4b\xf6\xcd\xcb\x85\x6e\x7a\x7a\xe2\xc3\x8d\x85\xf7\x7c\xb6\x77\xa3\xc2\x67\x13\xf8\x6e\x5f\x9e\xca\xd9\x5e\x3c\x08\x37\x5e\xc3\xeb\xdf\x90\x6b\x0e\xee\x48\xf8\x5f\xce\x41\xd6\x74\xea\x96\xf3\xd6\x06\x0d\x52\xb4\x62\xc0\xde\xab\xe0\x3e\x86\xce\xbd\xb3\xca\xb9\xb3\x66\xd2\x2c\x89\xe6\xab\xaa\x30\x54\x30\x59\xe9\x62\x3d\x78\x8c\xbe\xd4\xd6\xc4\xc9\xe3\x82\x7d\x76\x97\x22\x5e\x2e\xd7\x8f\x74\xe5\xf3\x82\x09\xa6\x78\x16\x36\x34\xca\xe0\x0d\x59\xbb\x90\x51\xa9\xb9\x14\x2c\xbf\xa8\x85\x75\x05\xcc\x17\xb2\x78\x59\x46\x66\x54\xb3\x9c\x94\x45\xb5\xe0\x7b\x23\x29\x5f\x24\x2f\xb7\xc9\x12\x8c\xb1\x7b\x6a\x05\x3c\xae\x7a\x6a\x84\x0f\xde\xd0\x22\xee\xb7\xe7\xba\xe6\xac\x64\xc2\x32\x00\xd1\x3a\xa5\xc3\x36\x00\x2c\xc7\xd1\x76\xc1\xc7\x6a\x5e\x56\xb2\x57\x8b\xe7\x5e\x7f\x36\x8a\x5a\x06\xb9\xb2\xac\x2e\x64\x85\xf0\x39\xa1\x62\x98\x99\x9d\x36\xd9\xef\x57\xa8\x1a\x7c\x61\x68\x34\x5c\x82\x74\x4c\xda\x75\x3b\x41\xda\x71\x63\x7f\x81\x42\x02\xf3\x66\x22\x32\x72\x96\x5c\x93\x96\x7e\xef\x1b\xa9\x6f\x4f\x48\x1e\xa4\x3c\x94\xb0\xac\x37\xd3\x15\x87\x57\xa0\xfb\xd5\x23\xf8\xca\xb6\xf1\x2b\xcb\x5e\x7e\xce\xbc\xd0\x79\x21\xb3\x07\x04\x8a\xd9\xf7\xee\xf7\x3d\x6f\x89\xff\x23\x06\xc6\x6c\x8f\x77\xc4\xdf\xed\x96\x80\x85\x64\x21\xf7\x92\xbd\x44\xed\x55\x55\xd2\xde\x37\x00\xed\x26\x33\x66\xd9\x8f\x6f\x9d\x7b\x0c\x3d\x8e\x1a\xaa\x13\xe0\xa7\xfb\x1d\x28\x34\x33\x2e\x03\x1a\xc0\x64\x57\xcc\xd0\x28\x40\xfc\xc9\x7f\x7a\x45\x50\x74\x28\x59\x15\x2f\x6c\x41\xf0\xb3\x43\x24\x59\xf3\x9c\xc5\x38\x69\x29\x2c\xb6\x62\x59\x44\x9a\x6b\x7c\x13\x0c\x37\xbb\x9f\x7e\x42\x62\x08\xd9\x07\x7a\x6b\xe5\x0f\x04\x78\x22\xa1\x4f\x4e\x63\xb5\x0d\x7e\x9b\x9c\xb7\x0e\xa8\xa7\xf7\x8c\x3e\xc8\x45\xc6\x6e\xeb\x56\x3e\xa8\x96\x33\x67\x3f\xbc\xbb\xee\x3e\xda\xbd\x74\x3f\xbc\xbb\x26\x57\xd1\xad\x81\x50\x4d\x02\x6b\xf7\xe4\x5e\x92\x27\x68\x12\xb8\xc8\x58\xd3\xf8\x28\xe7\xfa\xe1\xa5\x40\x11\x8e\x1d\x02\x5f\x44\x87\xc0\x8d\xf3\x31\x38\x81\xb1\x3d\xe0\xd8\x1e\xf0\x65\xb5\x07\x7c\x56\x1e\x49\x4e\xe6\x8e\x2f\x73\xb4\x16\x14\xba\xdc\xb5\x9d\x59\xb7\x57\x4d\x74\x8d\x0b\x2b\xd4\x86\xcd\xed\x9f\xb6\x41\x0b\x86\x76\x59\x96\xc2\xb3\x2f\xf1\x89\xf1\x54\xa3\xfc\x0b\x11\x86\xef\x76\xff\xc3\xa6\xfb\xa3\xbd\x80\x83\x64\x9f\x71\x81\x8f\xd5\x94\xc8\x9d\xdd\x83\x55\x3b\x6e\x3e\xb1\x72\xef\x0a\xf5\x14\x3a\xf7\x40\xcf\x93\xcd\x8d\xfd\x83\xd4\xdc\x48\xb5\x26\xd4\x00\x30\x96\x32\x3c\xab\x0a\x3a\x14\x11\x73\x7e\xec\x29\xb9\xba\xbe\xfd\x74\xfd\xee\xf2\xfe\xfa\xea\x3b\x12\xde\xc2\xdb\x4a\xfd\x94\xdc\xcb\xc6\xf1\xbd\x97\x2a\x6d\x92\x0a\x5c\x2e\x6d\x33\xc7\x73\xcf\xee\xa9\x68\xb2\x24\x00\xd2\x6d\xc0\x2f\x75\x23\xb8\x69\xb2\x28\x5d\xe3\x9d\x42\x0a\x9f\x51\x68\x29\x7b\xff\xfb\x82\x9b\x73\x17\x17\x1f\x6e\xa4\x68\x1f\xed\xce\x02\xf8\x89\xcb\xa9\xaa\x3f\x61\xaf\xc7\x24\xda\xec\x0b\xb9\x48\xb8\x8e\x7e\x2e\xc6\x56\x3f\xec\x65\x5f\x48\xc6\x0e\x73\x1c\xb6\x60\x36\x31\xda\x88\x95\xca\x67\xd3\xb3\xa0\x0c\x16\xbd\x42\x81\x41\x9a\xcd\xa4\x02\x48\x9f\x7d\xb8\x7b\x16\xa7\x84\x7c\x0c\xed\xd6\x87\x5d\x26\xbc\x0f\x15\x58\x07\xdb\xec\x0b\xda\x39\xe4\xdd\xb7\x0c\x13\x16\x3e\x4b\x66\xd6\x9e\xb4\x07\x5a\x5a\xf0\x47\x26\xdc\xc2\x1e\x8f\x45\x87\xa9\xa1\x76\xfb\x53\x73\x87\x7f\xfa\xf4\xe3\xf1\x26\xe3\x6e\x2c\x6a\x2a\xef\xe4\x6a\xc5\x0d\x59\x52\xbd\x0c\x38\x2b\xad\xdc\xa3\x9a\x6b\x1c\x67\x8e\x71\x1c\x37\x6a\xbf\xe3\xb8\xae\x83\x7b\x41\x74\x81\x3a\xfb\x21\x3c\xd2\x33\xa0\xeb\x3f\x87\x5e\x50\x83\xfc\x06\xec\x2c\x7c\x12\xe7\xae\xa6\x08\xf5\xb7\x1c\x17\x7b\x9f\x89\xdc\x21\x82\x23\x9b\x4b\x86\xc7\x3e\x38\xfc\x50\x97\xaf\xed\xff\xe8\x94\xb6\x28\x1c\xa0\x9c\x19\xca\x0b\xdd\x5a\x5f\x23\x4b\x59\xc8\xc5\xf6\xe4\x48\xc4\xe2\xfc\xce\x55\xb4\x4c\xe8\xc4\xae\xfa\xf1\x6c\x2d\x6c\x3f\xa8\x50\xb0\x63\x17\xa8\xf9\xca\xda\xc6\x80\xda\x98\xe3\xf5\xd5\x79\xb6\x85\x38\x81\x72\x5a\xaf\xce\xe0\x5a\x04\x2b\x15\xbc\x0b\xa1\xbf\x05\xf0\xf9\x06\x89\xa3\x64\x6a\xc5\xb5\x65\x5e\x2d\xad\x35\xc6\x94\xdd\xd0\x6a\x9f\x69\xd1\x8f\xa5\xb0\xd6\x37\x7a\xbf\x5a\xbb\x3f\xe1\x3e\x8a\xbd\x5a\x0e\x37\x54\xd8\xba\xd9\x2e\x1a\x2e\x44\x87\xb9\x96\x8a\x4d\xd8\x67\xae\xc1\xe2\x80\x9a\xb4\x81\x62\x99\x46\xb8\xb7\xfb\x68\x06\x87\x64\x70\x5f\xba\x5f\x15\x6b\x4c\xde\x64\xa3\x0b\xd6\x6e\x64\x48\x1f\xa1\x45\xb1\x76\x30\xf5\x80\xf1\xe1\xdc\x3f\x74\x31\x88\x02\x27\x95\x0f\x33\x95\x8a\x3f\xf2\x82\x2d\xac\x35\xba\xe4\x62\xd1\xc2\x24\xa1\x45\x21\x9f\x98\x2f\xeb\x65\x83\x91\xbe\x7e\xef\x16\x6d\xda\x99\xbd\x70\xa7\x3e\x7c\xbc\x27\x82\xb9\x57\xe9\x08\xfe\x92\x6e\xfd\xda\xc9\x0c\xd6\x6e\x4c\x26\x13\xf0\xad\xbd\xfe\xbb\xd5\xe3\xf3\xe2\x0d\xf9\x85\xf9\xf9\x59\x03\xc7\x72\x9b\xcc\x90\xa7\xa5\x04\x6f\x49\xa5\x23\x7a\x2c\x36\x27\x00\xae\xbf\x2b\x62\xf3\x14\x2e\x2c\x15\xab\x34\x3b\x51\x0d\xeb\x95\x37\x30\x18\xfb\x0d\x1a\x4d\x9a\x68\xfe\x51\xec\x81\x44\x89\x11\x82\x1a\xdb\x4e\x7a\x54\x79\x70\x8d\xf2\x01\xa8\x11\x7a\xbd\x2a\xb8\x78\x38\x27\xdc\x04\xb6\x6b\x4f\x9d\x4f\xdd\x16\x0f\xb1\xb8\x66\x8a\xd1\xa2\x25\xb5\x8e\x70\x72\x8e\x26\x91\x0c\xda\x71\x7f\xbf\x2e\x19\xdc\xe7\x9a\x2d\xf9\xf4\xb1\xb6\x93\xe3\xd5\xb0\xe3\xfa\x65\xad\x44\xa4\x5b\xe3\x08\xfc\x9f\x6b\x0c\xb2\xe6\xd9\xcd\xdd\xbb\xbb\x9b\x5e\xf3\x64\xf7\xb7\x4e\x68\xea\x80\xc4\xf9\x63\x65\xce\x63\x84\x3f\x2c\xc2\x71\x75\xf2\x6c\x49\xcb\xcb\xca\x2c\xaf\xb8\xce\xe4\x23\x43\x1a\x97\x01\xaa\xd5\x07\x7e\x08\x0f\x4b\xec\x68\x91\x77\xff\x75\x79\xdb\xeb\x4c\x78\x24\xfd\xa4\x99\xf9\x1d\xd3\x68\x4b\x74\xfb\xbc\x3d\xa5\x93\xce\x7a\x0c\xfa\xfd\x6a\x82\x7e\x70\x1b\x7f\xad\x81\x3e\x2e\xb8\xe1\xd4\xc8\xa8\x0a\xf5\xae\x97\xa7\xd2\x46\xae\xfc\x95\xba\x09\x64\x20\xd5\x04\x82\x76\x1d\xca\x51\x07\xac\xe9\x87\xc1\x41\xc7\xc8\x34\xaf\x31\x92\x7b\x89\xe8\xe7\x44\xb0\xa7\x61\xa2\x30\x37\x5e\xd3\xf8\xb3\x2f\x3b\xb0\xe7\x98\x16\xff\xf9\xdd\x9f\xfd\xd5\x12\x74\xc5\xfe\x13\x74\x98\x41\x92\x0d\xac\x45\xed\xda\xf2\x5d\xca\x8e\xe7\xd2\x22\x84\xff\x03\xc7\xe7\xbc\xab\xd7\x7d\xef\x7f\x57\xb4\x70\xeb\xf8\xe1\x98\x7e\xc9\xee\x7e\xa0\xa6\x17\xce\x48\xd8\x87\x0f\xc1\x97\x63\x15\x73\x90\xd9\xf0\x8b\x61\x6d\x51\x51\xa1\xed\xe6\x75\x63\x46\x67\x3e\x24\x7c\x46\x5e\x9b\xac\x8c\xc4\xb4\x3c\x41\xd9\x92\xfb\x4c\xbf\x17\x3f\xd6\xe5\x4a\x43\xf3\x39\x51\x7c\x14\xce\x38\xce\x05\xd7\xf9\x80\x5b\x20\x40\x7e\xe4\xda\xb8\x1c\x74\x47\x31\xa6\xb3\x0d\x73\x05\x2a\x56\x17\xbb\x05\x40\xf7\xf2\x6f\x34\xcf\xd5\x77\x4e\x06\xcf\xbd\x4e\xa4\xc0\xa2\x96\xf1\x6d\xcb\x43\xe4\xff\xb5\x59\x97\x3c\x03\xf3\xf9\xfe\xdd\x2d\x50\xd2\xe4\x4f\x7f\x74\x58\x47\x7f\xf8\xfd\x1f\xdf\x0e\x1e\x81\x2f\x57\x41\x94\xe4\xe3\x42\xe5\x77\xc7\x04\x34\x86\xe2\xaf\x47\x53\x83\xd2\x32\xc2\x41\x31\xbb\x6b\x3a\x5b\xbb\x73\xe9\x99\xb7\xdd\xe4\x5a\xb6\x0c\x7e\x2c\x4a\xbd\x1b\xb3\x97\x7f\x05\xd9\xcb\xa1\x42\xd1\xf1\xaf\x43\xf9\x9f\x63\x7d\xb7\x81\xf5\x79\xd6\x36\x7c\xec\xa2\x59\x5f\x87\xb5\x0d\xd2\x3d\x9c\xf5\x1d\xd5\xe2\xe7\xff\xd8\x77\xa5\x26\x56\x82\xee\xfd\xf7\xf6\x4e\x1d\xea\x39\x10\x98\x90\xdc\x87\xef\xef\x7a\x5e\x03\xfb\x97\x10\x87\xeb\xc6\xda\xf6\x33\xb8\x1d\x71\xb8\x43\x8d\x0e\x31\xdf\x0b\xc9\x74\x62\x4f\x61\x70\x77\xb3\xcf\x5d\x93\xcf\x2e\x92\x66\xea\x71\x58\xa9\x39\xd8\x83\x35\xb0\x00\xe4\x0b\x07\x96\xec\x4a\xb8\xd5\x89\x89\xff\x3c\x6b\x48\xe9\x24\xab\x1c\x27\xec\x15\xb6\xca\xf4\xec\x0e\x9e\x09\xc1\x4c\x7b\xe7\x5c\x76\x9e\xb2\xfc\xd3\x72\x4e\xa6\x75\x0c\xca\x57\xef\x74\xbe\x9c\xd3\x77\x14\xd7\xe9\xc4\x7f\xd7\xa1\x3c\xb2\x49\x7a\x73\x1a\xe0\xbb\x82\xf2\xbd\x20\x4b\x3d\xde\xb0\xed\x71\xf7\x9f\x77\xce\xcf\x1a\xd9\xc8\xa8\xdb\xfd\x84\x50\xb2\x95\x72\x9d\x7a\x43\xbd\x8d\x0e\xe0\xc4\xfb\x39\x4f\xe2\xbe\x37\x0b\x33\x09\x47\xa0\xf9\x93\xfb\x4b\x66\xa7\x74\x14\xa6\x0c\x94\xf0\xd9\xab\xef\xc2\x63\xfd\xa2\xec\x1d\xcb\x17\x63\x08\x6c\x2e\x2f\xa1\xba\xc6\xc3\xae\xbc\xdb\x29\xba\x7a\xfb\xcb\xae\x3f\x39\xb9\x4c\xf8\x05\x59\x5a\x3b\xb8\x5c\x57\xa1\xae\xfb\x98\x66\x57\x1c\xcb\xa9\x4f\xe1\xc1\x4c\x65\x29\x8d\x14\x89\x55\x46\xb7\x5b\x1e\xee\x46\xf2\xdd\x2f\xde\xb9\xca\xba\x62\xc8\xeb\x51\x13\x72\x09\xd9\x75\x4c\x07\x5a\xd5\x7a\x11\x2c\x45\x88\xee\xe8\xe1\xa8\xb0\x77\xb8\x1e\xe1\xda\xff\x76\x10\x0b\x8e\x8d\x7b\x74\xac\x3b\x5f\xe6\xc8\x5a\xc0\x9b\x2b\xaf\x0a\x87\x7a\x3f\xed\x8f\x23\x69\xce\x63\xeb\xcc\x0d\x7e\x54\x44\xc9\xd0\x71\xd5\x8a\xfc\xe6\xea\xe0\xeb\x2d\x95\x79\x92\x0a\x8b\x9c\x72\xdb\x79\xac\x97\x9c\xe3\xff\x2d\x26\x5b\x38\xea\x06\x7f\xe1\x5b\x7a\x07\x51\xff\xd6\x27\x6e\x09\xb1\xc5\x64\x43\x38\xfb\x73\xdb\xd5\xde\x73\x75\x07\xa9\xee\xbd\xda\xee\xea\x6e\xbd\xb2\x91\x86\x4d\x7d\xa5\x4f\x72\x65\x93\xc4\xf4\x00\x9e\x46\x7c\xc9\x4a\x12\x9e\xc6\xd1\xec\x29\x77\x3b\x90\x2c\xeb\x67\xff\x90\x2f\x55\xb6\xfb\xd9\x30\x2f\x5a\x5f\xcb\xc1\x4f\x8f\x4a\xe4\x3f\x2a\xb3\x0a\x9f\x7b\x30\xc3\x0a\xed\xfe\xa3\x79\x95\x6b\x85\x33\x97\x0a\xc0\x32\xb8\xc3\xcf\x68\x30\xcd\x3d\x7a\xc6\xb9\xef\xc4\xb6\xa2\xa5\xde\x2f\x12\x2d\xab\x6a\xf7\xd2\x39\x02\x5b\x4a\x6d\x2d\xf5\x7e\x77\x3f\xa9\xcd\x7e\x51\xc3\xda\x7d\x44\x9b\x89\xcd\xee\x50\x51\xc6\x7b\xe8\x1e\x15\xdd\x1d\x6a\x90\xea\x60\x87\x89\x7e\xef\x88\x41\x8a\xfb\x7a\x4b\xec\xea\x1a\x11\xc1\xf4\xdb\x5d\x25\xbe\x48\xac\xd0\x1f\x74\xd4\xc1\x0a\x3d\xa3\x42\xd6\xb9\xbb\x74\x11\x8d\x3b\x52\xba\x41\xdd\xd6\xd4\xdd\x9e\x79\xd8\x9d\xfa\xa6\x13\x5a\xc8\x28\x2c\xf3\xd6\x21\x68\x35\xd5\xf3\x09\x36\xeb\x32\x22\x62\x82\x6b\x02\x90\x85\xbe\xd6\x09\x5d\x1a\xda\x58\x45\x75\x9b\xbb\x86\x22\x89\x82\xec\x70\xc3\xc8\xb0\x56\x51\x0f\xe0\x1b\x1d\x44\x6e\x6a\x18\x5d\xee\xdb\xd1\x1c\xce\x09\xa3\xd9\x92\x3c\xb0\xf5\x04\x78\x4c\x34\x4d\x42\x4a\x0a\x95\x78\xb0\x4c\x57\xd4\x74\x7b\x65\x35\x1e\xa7\xd8\x36\x30\x76\x34\x7d\xc9\x43\x9d\x5a\x73\xe6\xea\x9a\xbf\xc8\x9a\xb7\x66\x50\xed\x95\x3b\xf2\xb4\x94\xda\x3b\x72\xbc\x53\xe7\x81\xad\x81\x9d\x64\x52\x44\x99\x14\xcd\xf0\x04\x60\xd5\x20\x03\xa7\x57\x0f\x67\x6f\x2c\xcb\xe3\x3a\xab\x37\x63\xcf\x77\x37\x09\x3b\x96\x79\x0f\xc8\xc4\xde\x0a\x88\x9c\x54\xa2\x35\x23\xf7\x1e\x80\x9d\x84\xdc\x29\xcd\x44\x5c\x4e\x72\x8b\x26\xac\x5d\x37\x91\x08\x60\xa7\xb9\xf6\x9d\xac\x81\x2a\x66\x45\xdd\x59\xaa\x0f\x41\xa7\xae\x50\x33\x53\x95\x71\x49\x43\xcd\x80\x6c\x30\xfb\xe5\x4c\x6b\xe2\xc0\xad\x57\x54\x3d\xb0\xbc\xee\xca\x31\x85\x76\x3c\x98\x1d\x0a\xe0\x9d\xa1\x77\x8d\xb3\x94\xe8\xba\x5d\xe4\x89\xe8\x16\x67\xc7\xd9\x74\xea\x9a\xec\x6c\x2b\xfe\x8c\xa6\x83\x64\x0a\x7d\xcd\x85\x96\x90\x65\x0e\xca\x25\x6c\x2d\x78\x8a\xa3\xba\x3a\xb4\x87\xef\x50\x49\xa3\x5d\x98\xcd\xc0\xf3\x41\x37\x1e\xd8\xa0\xbd\xd2\x1f\xdd\x74\x2e\xcf\x07\x1a\xb6\x8d\x99\x35\x49\xeb\x4d\xe2\x46\x7c\x3f\xb3\x1d\x73\xdf\xd1\xd9\x0c\x49\x92\xb4\x3b\xa1\x6d\xef\x71\x86\xa6\xb8\xbd\x27\x5a\xaf\xdb\x19\x9a\xea\xfe\xee\x68\xae\xef\x19\x9a\x68\x4c\x9f\x34\x34\xd1\xe1\x9e\xa8\x68\x92\x11\x5a\x30\x7e\x9a\xc9\xbd\xd6\x9a\x81\xef\xba\xd6\x0c\x6c\xff\xb5\x66\xc4\x77\x62\x6b\xc6\xc6\xbd\xaf\xb9\x78\xd9\x94\xec\xa0\xd7\x30\x34\x61\x5b\xd1\xb2\x56\x2a\x8c\x9c\x92\xf7\x5e\x2a\x24\x6c\x0b\x15\x4d\x53\x36\x5f\xac\xd3\x15\x31\x49\x37\x07\x3e\x92\x15\x6c\xc5\x84\xf1\xd0\x02\x81\x2c\x88\x1d\x34\xd1\xba\x32\xdf\xcb\x0d\x9c\xc4\xf2\x13\x4b\x63\x9e\xb8\x2e\x49\x6e\x4c\xec\xd6\xa0\x7e\x8f\x94\x7f\xc8\x76\x96\xed\x87\x86\x93\x19\x9b\x11\x9b\x0d\xe7\x06\x2e\x27\x0e\xf1\xb5\x5f\x20\x7b\xce\x8d\xf8\x1c\x3a\x04\x51\xc8\xb6\x8b\xce\xa4\x73\x23\xe1\xec\x06\xcd\xf3\xa0\xf6\x6c\xeb\xba\xd6\xa6\xa3\x31\x23\xbe\x56\x2a\x62\xd9\x3d\x18\x03\x41\xd4\xfb\xb6\x2f\xc8\xaf\x8f\xf1\xad\x76\x9f\x88\xbe\x1f\x91\x6d\xec\x5b\x0f\x0c\x5b\xf4\x2d\x9a\x91\x1f\x6a\x2d\xff\x17\x6e\xd3\x6f\x36\x17\xdf\xe8\xe8\x8d\x38\x1b\x11\x4d\xc6\x93\xe7\x8d\x6c\x3c\x8e\x92\x25\x5d\xb8\xe9\x3d\x2d\xc8\x51\x54\x71\xed\xca\x9b\x91\x6a\xce\xe0\x5a\x98\x37\x23\xb2\x99\x39\x5e\x43\x0c\x69\xb4\xfb\xda\x9a\xa3\xa9\x6e\xb6\x41\x4f\x6a\x70\xde\x8c\xd4\xe5\x26\x89\x4d\xcf\x9b\x31\xdc\xfe\x3c\x81\xa8\x3b\x77\x75\xcb\xf4\x6d\x8d\xd0\x93\xa8\x1e\xd6\x3c\xbd\x35\xbb\x54\x93\x97\xa4\x35\x54\x6f\xc6\x60\x6b\xf5\xa4\x75\xa9\xdb\xb1\x93\x23\x34\x59\x6f\xc6\x01\xcb\x94\xa2\xe0\x92\x84\x16\xec\xcd\x48\xd2\x5e\xc9\xe8\xc6\x18\xdd\x18\xa8\x31\xba\x31\xda\xe3\x60\x37\xc6\x8e\xd6\xf2\xe8\x25\xec\xba\x42\xb6\x34\x99\x4f\xb8\x3b\x9b\x4d\xe9\x7b\xed\xe6\xd1\x34\xf7\xb6\xa7\xaf\x1b\xcf\xa3\xc9\x1e\xb7\x51\x7d\x33\x8e\xd2\xb2\xbe\x19\xc9\xe2\x24\xad\x8d\x7d\x33\x22\x1a\xda\x27\x31\xc1\xa6\x01\xfe\xf6\xd6\xf6\x09\x8e\xb3\x1d\xad\xf0\x7b\x4d\xee\x13\xae\xc7\x71\x9a\xe2\xb7\xa6\x7a\x50\x7b\xfc\x66\x1c\xa2\xf9\x26\xb6\xcc\x6f\x46\x5c\xf3\xfc\x24\x95\x6c\x5e\x83\x85\x6f\x69\xa3\x9f\x44\x11\xd7\x7a\xbf\x19\x07\x29\xbb\xe8\x76\xfc\xad\x47\x87\x1a\xf3\xa7\xae\xab\x6b\xe6\x4f\xb6\xb7\xe8\x4f\x22\x9a\xda\xd6\xbf\x19\x07\x2d\x32\xbe\xd5\x7f\x33\x86\x9a\xfe\xa7\x59\x6f\xd2\x9b\x14\xcf\x7c\xde\xd2\xad\x86\xc4\xcf\x4d\x34\x1a\xd2\xdc\xf7\x2f\xd1\x1d\x8f\x7c\x89\x4b\x6f\x3c\x9a\x3b\xd3\x37\x2f\x1b\xb3\x93\xfa\xd3\x3e\x7e\x76\x92\x87\x48\x18\x53\x93\x7e\xb3\xa9\x49\x77\xbe\xc9\xdf\xd6\xbc\x24\x97\x6d\x84\x20\x1a\x91\x97\x04\xa6\x03\x82\x64\x44\x5e\x12\xc4\x68\x51\x17\x69\xcc\x4b\x1a\xf3\x92\xb0\x73\x1f\x1d\x7a\xa3\x43\x6f\x74\xe8\x45\x8f\x31\x2f\x69\xcc\x4b\xfa\xea\x0d\xa1\x31\x2f\x69\xcc\x4b\xea\xe4\x25\x79\x83\x09\xa5\x14\xfb\xa4\xa4\x97\x9b\x93\xe4\x9b\x0d\x5f\x66\x99\xac\x84\xb9\x97\x0f\x2c\x32\x69\x20\xca\x98\xdf\xa0\x1d\xf9\xe1\xcf\x93\xa3\x44\xab\x9c\x5b\xab\x39\xf1\x8c\x5c\xfa\xc7\x83\x81\x6a\xa5\xab\xc8\x59\x5e\xd3\x45\x9c\x13\xcf\x29\x8c\x5d\xa3\x29\xb9\x24\x8a\x65\xbc\xe4\x56\x7e\x00\x44\x0b\xfc\x1d\x6b\x3d\xd5\x1d\x06\xb9\xd1\xac\x98\xfb\x7e\x68\xa2\xd5\x7f\xb8\x51\x11\xf1\xc6\x63\xf8\xc8\xce\xd4\x9d\xba\x24\x43\xe3\x2d\x04\x55\xdf\xfa\x59\xb1\xbf\x07\x0d\xce\xaf\xc5\x7d\xfb\x5d\x79\x2c\xc6\x55\x33\xbc\x4d\xdf\xfa\x68\x3f\x61\x5a\xf2\x58\x34\xb2\x9a\x16\x9e\x0f\xb1\xcf\x25\x57\x70\x31\xee\x58\x26\x45\x9e\xea\x49\xba\xee\xd3\x09\xa7\xce\xc7\x6d\x50\x5b\x98\x57\x8e\x14\x94\x60\xd2\x82\xe7\xdc\xac\xeb\x14\x1f\xdf\x7d\x9c\xba\x5b\x8b\x5a\x69\x77\x78\x75\xb3\x7d\x84\x96\xa5\x92\x34\x5b\x32\xdd\x5a\x09\x8c\xb8\x00\x45\xcf\xa1\x35\xd4\xd5\xa2\x45\xb5\xe0\xc2\x19\x23\x40\xdd\x6a\x96\x11\xf5\xf8\xcd\x50\xd2\x84\x54\xba\xde\xe7\xb6\x4f\x9d\x7f\x2d\xd6\xa7\xe4\x3c\x0b\x46\xad\x01\xfe\x48\xb6\x5f\xe6\xd6\x24\x02\xbf\xa4\xfb\xfd\xfe\x31\x4d\x64\x91\x07\xcc\xc7\x3f\xbd\x25\x25\x53\x99\xe7\x10\xb8\xd0\x22\x40\x0c\x1a\x49\x0a\xab\x91\x4b\x15\x90\x25\xb7\xbc\x06\x41\xf4\xf7\xdf\x92\xa5\xac\x94\x9e\xb6\xf1\x13\xbe\x81\xbf\x39\xdf\x8d\x93\x80\x18\xbf\x97\x21\x05\xa3\xda\x90\x6f\xde\x92\x15\x17\x95\x55\x7c\xa2\x1f\x6f\x19\x4b\x7f\xfc\x16\x79\xc1\x71\x66\x12\xce\x40\xda\x4c\xf7\xf2\xf7\xb8\x74\x5d\x88\xbc\x9d\x84\xf2\x2d\x00\xb4\x3b\x9c\x5e\xd7\xed\xac\x9b\xe7\x10\x84\x28\xd2\xe6\xf2\xa7\x41\x18\x79\x42\xfe\x88\xb3\x2e\x10\x76\x02\x4a\x0b\x42\xfc\x38\xce\x88\x88\x83\xac\xf0\x01\xca\x3d\xbf\x89\x9a\xd8\x3f\x2a\x39\x5b\x9b\x78\x6c\x9d\xff\x76\xbf\xef\x82\xea\x84\x3f\x6e\x80\x98\xee\x5d\x8f\xcd\x66\x82\x0d\x86\xe9\x9e\x07\x63\x35\xb5\x85\x92\xd5\x60\xed\x7b\xe7\xdb\xc0\x67\x13\x7c\x04\x5e\x5c\xd0\x2c\x63\x1a\xb8\xd1\x55\xdd\xfc\x7b\xf0\x48\x08\xe9\xde\x1e\x75\x1c\x4e\x85\x44\xb3\x17\x43\x34\xec\x58\x64\x90\xe6\xff\x63\xef\x5f\x7b\xe3\xc8\x91\xbc\x51\xfc\xfd\xf3\x29\x08\xcf\x00\xb2\x01\x55\xa9\x7b\x76\x76\xf0\xfc\x7b\x07\xfb\x87\xda\x76\xf7\x0a\xe3\x8b\x60\xb9\xbb\xcf\x1e\x1c\x60\xc0\xca\x64\x55\xf1\x51\x26\x99\x43\x32\x25\xd7\xee\xd9\xef\x7e\xc0\x20\x99\xb7\xba\x24\x83\x55\x25\xcb\x3d\xc9\x7d\xb1\xd3\x72\x65\x24\x93\x97\x60\x30\x7e\x11\xbf\x38\x27\x8f\x68\xd4\x20\xc5\xdc\x61\x14\x5b\x71\x6d\xd0\xb5\x4b\xdd\x43\xfd\x05\xad\xb9\x58\x41\xdd\x36\x52\xd6\x85\xe1\x55\x44\x0a\x40\x18\xd1\x46\xa0\xb7\x0d\xba\xc0\x0b\xed\x78\xef\xe9\xf8\x10\xd9\x1d\xe4\xd8\x9b\x01\xc0\x7b\x19\xfa\x42\x98\x30\xc0\x71\x02\x41\xe2\xac\xa2\x8a\x86\x69\x19\x95\x99\xc9\xb2\xa4\xfa\x95\xc7\x80\x28\x04\x2e\xb9\x23\xc4\x5a\x03\x8a\x16\xcd\x30\x76\x43\x4e\x4e\xb5\x90\x0d\x13\x54\x8c\xe2\xbd\x7d\x07\x20\x3c\x42\xe4\xa3\x08\x75\x48\x5c\xe1\x5b\xe4\x0a\xf6\xf7\x8e\x1f\x69\x76\xcf\x44\xee\xea\xa8\xc3\x3a\xce\x37\x82\x96\x9e\xd7\xba\xa9\x12\xcd\xf2\x20\x7f\x54\x70\x13\x94\xe3\x68\x69\x1c\x61\x4c\x20\xc9\x72\xc6\xe6\xa9\x46\xaf\xd6\x48\x8a\xdb\x5f\xb4\xb5\xc4\x0e\xeb\xb3\x28\x24\x42\x33\xc5\x1f\x32\x16\xcc\x5c\xdb\x91\x53\x7d\xd4\xc3\x28\xb7\xdb\xd6\x67\x79\x5e\x37\xde\xd9\x4d\x70\x96\x34\x40\x36\xb0\x6a\xd3\xc2\xaa\xa8\x71\xc3\x3e\x50\x12\xf5\x17\x94\x9d\xc1\x13\xd6\x56\x8e\x2d\x15\xec\xb6\xde\xc1\x1f\x8d\x2e\xf8\xa8\x73\x5f\x2d\xe2\x39\xaa\x2e\x3e\xfd\xf8\xa6\xaf\x1f\x3f\xd1\x5c\x6a\xf2\x63\x21\xb3\x7b\xf2\x86\xc1\x15\x68\xbc\x6a\xf9\x90\xdc\x3c\xaa\x90\xf0\x41\x89\x63\xc5\xcc\xd4\x22\x3f\x6d\x29\xb3\xa9\xb4\xd6\xef\xa6\xb4\x96\x5a\x8c\xfb\x3c\xbe\xd5\xc2\x5a\x25\x5d\x61\x6b\x47\xae\x19\x51\xb0\xa9\xe1\xe1\x50\xaf\x3f\xbe\x6e\x60\x6f\xab\xfd\x61\x2d\x1f\x67\x46\xce\x6a\xcd\x66\x7c\x34\xe8\x2f\xfa\xbb\xee\xd9\xc6\xfe\x06\xf7\x65\x7f\x73\x0f\xf5\x2e\xca\x46\x82\x5b\x1d\xfe\x6e\xad\x9c\x4f\x3f\xbe\xb1\x47\x65\x3c\x67\x32\xd7\xe4\x8a\x99\xec\x2a\x63\xd5\xfa\xca\x77\xeb\xd9\x0d\x57\x29\x05\x37\x52\x21\x4b\xa1\x5f\x93\x4c\x16\x85\x67\x3c\x93\x4b\xf2\x9a\x55\xeb\x46\x14\x0a\x83\x3a\xe3\x18\x7c\xbd\x22\x4a\x95\x94\xb8\xc2\x2e\x9d\xad\x65\x9f\xf5\x3b\xab\xb3\x90\xd4\x22\x3f\x69\xcd\xf4\xa7\x58\x5a\x67\xa8\x6a\x11\x4d\x8c\xba\x8f\xfb\x74\x47\x2d\xa9\x67\xb2\x5a\xcf\x5d\xb3\xea\xe2\x2e\x3c\x06\x41\x7d\x1d\xec\x18\x55\x82\x2a\xbc\xbe\xa7\x12\xc9\xcd\xd2\x5d\x8b\x72\x96\x13\xf9\xc0\x94\xe2\x39\xd3\x41\x15\xa3\x34\xa6\xe0\xc5\x53\xe9\xc8\xa9\x9a\xd6\xef\xa2\x9a\x16\xfa\xc2\xdb\x51\xb6\xf6\xd9\x6d\x65\x4b\xf3\x92\x47\xe4\x2e\x3f\xab\x93\x3c\xb2\x1e\x96\xb5\xdb\x0e\xfe\x22\x1c\xe2\xc7\x5e\x1d\x75\x46\x0b\x76\xf3\x31\xfa\xfa\x78\xe7\x7e\xdf\xbf\x41\x86\x3f\x76\xaa\x26\x1c\xc1\xc8\xfe\xb7\x66\x93\x11\x21\xf3\xc3\x48\xcf\x54\x33\x61\x78\x35\xeb\xec\x0f\x47\xc9\x7e\x2a\x33\x61\x45\x0d\x7b\xa4\x38\x2b\xe1\x73\xf8\xc4\xb6\x02\x93\x8b\x9f\xf1\x0b\xe6\xfa\xf6\x86\xfc\xec\xe4\x9e\xae\x38\x83\x92\xc6\x59\xbc\x6f\x64\x49\x39\xb2\x00\x6e\xa7\x1c\x4e\xb7\xa3\xb7\x8d\x50\xe2\xa4\x8e\x4e\x4b\xa7\xaa\xef\x92\xaf\x6a\x7b\x43\xf6\xb7\xd6\x89\xd3\x7e\xe4\xd3\xcf\x67\x5c\xb5\xb6\x55\xc7\xbd\x18\x52\x3d\x1a\x7b\x69\xf4\xd3\xc3\xaa\x80\x63\xa9\x09\x73\x21\x9a\x09\xcd\x01\xb3\xed\x04\x41\x81\xd1\x65\xd6\x11\x40\x53\x93\xc3\xe1\x0c\xb4\x4b\xf2\x4e\xae\xb8\x08\xda\x41\xfa\x30\x87\x25\xe5\xc5\xd8\x30\x4e\x16\xd3\xef\xc2\x62\xd2\xba\x78\x2b\xe8\xa2\x18\x07\xc5\xfb\x07\x57\x41\x21\xda\x84\xc1\xb3\x57\x39\xd7\xf6\xff\x93\xbb\xbb\x77\x00\x18\xd5\x22\xf6\x06\x01\x90\x8a\x57\xcf\x0d\xb7\x8e\x53\x1a\xa7\xdb\xc7\x4e\x27\xa2\xeb\x11\xdc\x88\xdc\x7e\x06\xd3\xbd\xb8\x4c\x2f\xcd\x95\x60\x88\x45\x93\x7c\xbc\xd9\x82\x91\xcf\x6b\x9e\xdd\xdf\x76\x70\x23\xa9\xec\xdf\x44\xe7\x4f\xcd\x01\x1b\xb3\x9d\x87\xcf\x9e\x4a\xf1\xfb\xcf\xbc\xc5\xba\x2f\x3e\x77\x4e\xb4\x3b\x3f\x54\x56\x08\xa1\x5a\xcb\x8c\xc7\x03\x8f\xe0\x7c\x6b\x8f\xc4\x1c\x8e\xc4\xd3\x7d\x1e\x58\x41\x47\x9d\xdb\x61\x21\x78\x03\x8e\xea\xce\x39\x1c\x03\x2f\xfa\x51\x3a\xd9\x27\xb9\xa5\x88\xae\xd5\xf7\xb9\x57\x9d\x2f\xa0\x7e\x0e\x0b\x6b\xb0\xae\xc8\xc2\x18\x61\xe2\x83\x4d\xeb\x4b\xb3\x0e\xa6\xbe\x5b\xa5\x6f\x7c\xe7\x40\xd8\xca\x93\xa2\x6a\xde\x0a\x3d\xf8\x9b\xc6\x36\x38\xfc\xab\x31\xbb\x3d\xee\xfe\x34\x9a\xf4\xbc\xcb\xbb\x33\x08\x50\x70\x7f\xf3\x30\x1a\x28\xa3\x4a\x56\x75\x41\x47\x10\xeb\x6e\x41\xc5\x63\x11\x14\xd7\x87\x53\xc0\x6a\xa9\x15\x66\xf6\x24\xd6\x0d\x8a\xcd\x8c\xdb\xdd\xc3\x62\x34\x31\xc5\x66\x62\x3d\x5f\xd0\xa1\xef\xfe\xf2\xe7\x3f\xef\x2a\x4f\xd3\x2b\x3f\x33\x6e\x77\x45\x96\xa7\x19\x24\xc8\xc5\x1d\xda\x07\xcb\xd3\x0c\xcb\xcf\x8c\x0f\x69\x44\x79\x1a\x64\x42\xdb\x79\xea\xcf\x44\x21\x09\x88\xac\xfc\x90\x6b\x1f\xa5\x5f\x0f\xe5\xe2\xef\xcd\xb0\x8f\x38\x8b\x7a\x19\xf8\x31\x79\xf5\x11\x98\x25\xe4\xdd\x9f\x34\x9b\x1e\x91\x43\xdf\xcb\x8c\x1f\x15\x7c\x28\x73\x7e\x6f\x3e\x7c\xfc\x5d\x0b\x64\x45\x65\xc1\x8f\xca\x8c\xae\xc9\x11\x1d\x00\x1d\x95\xf1\xde\xcf\x63\x8f\xd3\x0f\x31\x59\x83\x29\xf5\x95\x0e\xe4\xb4\x37\x79\xea\x11\x97\xa9\xd8\x4c\x76\x5c\x9e\x4f\x74\xd6\xfa\x49\x72\xd5\x91\x01\xd0\xf1\x79\xe9\x98\x43\x33\xca\xef\xe0\xda\xce\x1c\xf4\x3d\x39\xe5\x91\x22\xfb\x99\xe7\x23\x99\xe4\x91\x32\x21\xdf\x3c\x2a\x7f\x3c\x1c\x7f\x91\x82\x47\x0e\xc9\xde\x21\x18\x2d\xf2\x14\x47\xa5\x6b\xf8\x8c\x6f\x6c\x02\x43\x7c\xf2\x42\x54\x4e\x37\x92\x5b\x71\x7f\x26\xf7\x76\x66\x76\xa4\xc8\xf7\x3b\x14\xe6\xfe\x7c\xec\x48\xa1\x1d\xb2\x90\xa4\x2c\x6c\x94\x5a\x88\xcf\x89\x88\xcb\xb3\x8e\xcc\x9a\x38\x79\x12\x44\x7c\x0e\x6e\x7c\xe6\x6d\x43\xf2\x3f\xfa\x39\xb8\x84\x5b\xac\x0b\x1a\x5f\x7f\xbf\xeb\x3b\xf5\x57\xbf\xb0\x3a\x5d\xe8\x64\x43\x1c\x3e\x3e\x53\xa0\xe9\x9f\xe0\xf2\x47\xe2\x97\x6e\xdc\xb5\xd9\xf5\x40\x1e\x3c\xb8\xfb\x8b\xc1\x3d\xf1\xf1\x6e\x00\x3d\x36\x7f\x0e\x06\xb2\x47\x15\x0f\x43\x8f\x13\xe2\xf8\xfb\xaf\xd2\x3e\xc1\x63\xe9\xf0\x98\xee\x51\x72\x06\x07\x95\xb3\x2b\x63\x10\x32\xb9\xf0\x05\x29\x9c\xd2\x6e\x36\xe9\xf5\xed\x0d\xc9\x14\x83\x0c\x6c\x5a\xe8\x39\x49\x60\x28\x0a\x40\x04\x58\xa8\xba\xb9\x79\x52\x63\x58\x59\x99\xf1\x05\x34\xa1\x63\xbf\x0b\x74\x2c\xd1\xa5\xfe\x6b\xf3\x58\xf0\x7f\xac\xeb\x92\x8a\x99\xdd\xe5\x80\x93\x79\x7f\x7b\x9c\x4f\x7d\x70\xfa\xcc\x49\xc8\x67\x81\x89\x81\x9c\x2e\x48\xab\x73\x45\xd4\xa3\x2e\xe7\xc0\xe5\xd6\x98\x00\x67\x40\x20\x40\x6e\xe2\x98\xb9\x7a\x26\x03\xed\x90\xc9\x2a\x7a\xc4\xfc\x29\xed\x3f\xb4\x19\xbf\xa0\x08\x3a\x45\x53\xba\x5e\x9d\x18\xd1\xce\x84\xba\x85\xcc\xd3\x56\x4a\x8f\xa7\xcc\x13\x8f\xd1\xa2\x90\x8f\x11\x49\x8d\x6b\xd6\xb3\x0c\xec\xba\xb0\xdf\xea\x93\xf9\x17\x8c\x94\x5c\x29\xa9\x3c\x72\x12\xe1\x26\x6c\x97\x0b\x44\x87\xd8\xfb\x2b\x53\xee\x8a\xa6\x7c\xb0\xc0\x1d\x33\x9d\xe1\x8e\x31\x00\xa9\x70\xc9\x4d\xf6\x7f\x87\x98\x4e\x57\x0f\xca\xeb\xc9\x05\x5b\xd3\x07\x2e\x6b\x05\xd2\x63\x44\xbe\xf0\x8f\xda\xa3\x9b\x6c\x64\xdd\xd4\x53\xaf\x21\xcd\xa1\x19\xdd\xe8\xc2\xec\x9d\x79\xfe\xd0\x3e\x0c\x57\xee\x5c\x06\x4f\xdc\x8c\x7d\xe1\xda\xe0\xc7\x32\x4c\x71\x60\xe4\x7f\x42\x33\xf6\x41\x57\xf6\x9c\xff\x75\x34\xed\xad\xbf\x9d\xba\x4f\xf5\xcd\xd9\x87\x3b\xf8\xa7\x63\x8c\x59\xcf\x55\xa1\x9d\xa5\xe7\xd3\x51\x26\x83\xf6\x50\xfb\x46\x0c\xda\x06\xf6\x2f\x78\xb6\xb9\x79\x83\x33\xed\x1a\xb8\xdf\x3e\x4c\x7e\xa4\x9a\xe5\xe4\x3d\x15\x74\xe5\x7c\x21\x2f\xef\x6e\x7f\x7c\x3f\xce\xf4\x5f\x29\x09\x7e\x9d\x9b\x37\x3b\x80\xe3\xe6\x3c\x74\x2f\xf9\x70\xba\x8c\xcb\xc1\xb7\xa3\x0f\xfd\x13\x7f\xfd\x09\x73\x49\xc3\xc1\x1c\x53\x33\x6a\x9b\x30\xc4\x81\xf8\x81\xcf\x48\x0f\xd5\xc7\x43\x99\xdf\x3f\x25\x38\xdf\x7e\xca\x71\x8a\x75\xf4\x27\x95\xcc\x3f\xb3\xb2\x2a\xe8\x7e\xb2\x8b\xfe\x60\xb5\xbf\x87\x98\x07\xd1\x56\x5d\x08\x71\x21\x2e\xc4\xce\x9e\xcb\x95\xcc\xf7\x1b\x07\xd6\x8e\x80\xe0\x2a\x28\x2e\x00\xec\x64\x0b\xba\x37\x1e\x2a\x46\xb7\x66\x52\x18\x25\x8b\xe2\x70\x74\x7c\xff\x82\xf1\x9b\x54\xf7\x85\xa4\x79\xe7\xe1\x8b\x0b\x4d\x4a\x66\xa8\xed\x11\x3a\xe7\x76\xc5\x4d\x08\x85\xf7\x21\x62\x66\x73\x05\xb2\xf9\xa2\x36\x52\xe9\xab\x9c\x3d\xb0\xe2\x8a\x56\x7c\x96\x49\xf1\x60\x17\x9c\x14\x7a\x5e\xe6\x7f\x08\xef\x3c\x45\xe8\x40\xa7\xfe\xde\xd8\x5e\xa0\x79\xce\xdd\x0c\xde\x22\xae\x73\x88\x7b\xc8\x20\x91\xae\xed\x99\x5f\x40\xb5\xd0\x46\xd5\x99\x81\xc8\xde\x7b\xb6\x89\x24\xed\x2d\x69\x05\xba\x2c\x68\xcd\x4e\xa1\x19\xd8\xcc\x25\xdd\xd8\x83\xc6\xd3\x0e\xb0\x2f\x86\x29\x41\xc7\xb1\x47\x23\x65\x01\x3e\x0b\x90\xed\xab\xb8\x18\xc5\xd9\x03\x23\x54\x2d\xb8\x51\x54\x6d\x3a\xeb\xe3\xf3\x3a\xc2\x5d\x1c\xac\xbe\x7f\xd4\x4c\x6d\xe0\x6e\x64\xe5\xb6\xe1\x72\x60\xb7\xa8\x07\x00\x5d\x99\x20\xa5\xcc\xf9\x72\x13\xe3\xd7\xf6\x97\xd8\xad\x2b\xf1\xee\x1b\x71\xad\x99\x9a\xad\x6a\x9e\xb3\xab\xce\x02\x89\xf3\x56\x8e\xde\x23\xa3\x7e\x16\xc6\x0d\x11\xe6\x63\xa8\xc8\xa9\xca\xbd\xe4\x7d\x9b\x73\xda\x80\xfb\xdb\xb4\x01\xa7\x0d\x18\x9a\xb5\xa5\x11\x9b\xcf\x59\xde\x59\x43\x6c\xe8\x6e\xc3\xda\x1a\x30\xe1\x36\xac\x62\xa8\xa7\x2b\xb9\x9b\x9a\xe0\x88\xdd\x6a\xbf\x64\x46\x45\x3e\xd3\x86\x9a\xfa\xe0\x20\x46\x6f\xda\xe5\x92\xdb\x1e\x60\x03\x9f\x06\xd0\xbc\xe3\xec\xd2\xf6\xba\x59\x17\xf6\x26\x95\x49\xbb\xc3\x28\x1f\x2f\x56\x8c\xf2\xa8\xca\x9c\x5d\x47\xf6\x78\xab\xd7\x6f\xe0\x3f\x16\x1e\xa7\x69\xbe\xbc\xd3\xeb\x28\xb7\xa5\xaa\x0b\xa6\x9b\x0c\x1d\x3b\xcb\x31\xf8\x38\x92\x54\xb6\x02\xcf\xaf\x62\xf9\x9b\xda\x6a\xbb\xbb\xa6\x8b\x37\x2b\x21\x9b\x3f\xbf\xfd\xc2\xb2\xda\x20\xea\xf3\x6e\x81\xef\xfe\xdb\x99\x0a\x34\x98\xf6\xb5\xa0\x89\xfc\x3f\x44\x0a\x86\xe5\x0e\x2a\x0c\x30\x30\x1f\x8e\x4a\x0d\xd7\x4b\x77\xd1\x6e\x46\x9b\x7d\xb1\x8a\x47\x23\x82\x2b\x48\x27\x40\x2b\xc4\x3a\x82\xe7\xf9\x92\x2c\x6a\x43\xb8\x53\xbb\xd9\x5a\x4a\x04\x53\x2c\x75\x8b\x00\xfa\xf9\xc0\x65\x01\xd9\x00\x52\x38\xa6\x2f\xbb\x69\xdb\x3a\x60\xa1\xbb\xf1\xfc\x85\x10\x79\xdd\x88\xe7\x9a\x94\x52\x9b\x76\x4e\x83\xef\x58\x1e\x74\xad\xf4\x5b\x73\x4b\x5e\x81\xa3\x4a\x1b\xa2\x6b\xa8\xc3\xf8\xc8\xf8\x6a\x6d\xf4\x25\xe1\x73\x36\x8f\x82\x57\x42\x83\x70\xc5\xb6\x9b\x25\x63\x06\xdc\x9b\xdd\x22\xcd\x88\x7d\x41\xda\x9b\x5e\x09\x0e\xa9\x97\xcd\xd9\xe8\xb9\x65\x2f\x9b\x9b\xe0\x70\x55\xc7\x4f\xdb\x8e\x65\x74\x49\x98\xc9\xe6\xaf\x2e\x81\x4e\xa5\x36\x8c\x50\x3b\x36\xd1\x22\x17\x1b\xc2\x4d\x70\x00\x99\xb5\x92\xf5\xca\x8d\xb4\x8f\xf4\xf0\x79\x87\xd1\xb1\x50\xbe\x8e\x33\x9c\xb6\xd6\xce\x11\x2b\xf2\xc2\x4d\xd2\x8b\x26\x5b\xac\x2e\x3d\x59\x6a\xb4\x4c\x98\xa7\x92\x1a\xa0\xc0\x75\xa9\x81\x4a\x31\x5d\x49\x01\x6f\x80\x7f\x79\xdb\x8e\xc9\xbf\x45\x0b\x36\x7e\xad\xbe\xd4\xaf\xda\x45\xb6\xe6\xab\x75\x58\x63\x54\x31\xcf\x0c\x8a\x60\x8d\x6e\xd6\x7a\xec\xa6\x39\xa6\x3a\xd6\xb5\x20\xac\xac\xcc\xa6\xb3\xc3\x12\xd6\x2e\x81\xf2\xe1\xcd\x18\xc3\x46\x70\x96\x8e\x1b\x17\xee\x1d\x7b\x7e\xc7\x21\xe4\x7e\x47\x5e\xc2\xe6\xe4\xe6\x42\x83\xe2\x99\xc9\xea\xd5\x9c\x5c\x13\x51\x37\x3a\x17\x57\x0d\xb2\x73\xd0\xf6\x3a\x2d\x64\xd3\x67\x78\x25\x42\x24\x40\x1b\x5a\xb6\xfd\x43\xcc\x75\x4a\x21\xa0\xaa\x09\x70\xc6\x55\x05\xe9\xcf\xbc\xdb\x17\xae\xa4\xa0\x3d\x91\x99\x2a\x2f\x3b\xce\x45\x94\xe4\x8e\x92\xed\x6f\x2e\x37\xe1\xb8\x42\x19\xe9\xd5\x47\x87\x5b\x19\x5f\xbb\x71\x30\x44\x05\xd7\xc0\xe5\xdb\x1b\x2a\xb4\xd0\x81\x72\x5f\x6c\x40\xde\x85\x26\x05\x5d\xb0\x02\x71\x38\x86\x86\x2e\x80\x15\xda\xc1\x15\xd0\xe9\x64\x82\x68\xe2\xa9\x04\x9b\xf5\x64\x0f\x46\x1f\x02\xa8\x7d\xcc\x40\x5a\x21\x50\x08\x36\x77\xd1\xeb\x34\xa4\xe5\x86\x17\x40\x04\x24\xaa\xa2\x46\xdb\xba\x25\xf1\x5c\xff\x52\xea\xf1\x1f\x53\x2b\x97\xa4\xd5\xf4\x0a\x6d\xcb\x24\x85\xf5\xe4\x42\x39\xd7\x34\x6d\x12\x89\x1f\x98\x66\x1e\x69\x55\x15\x80\x38\x23\x48\xa8\x07\xe2\x8e\x29\xc3\x4a\x20\x88\xd1\x4d\xf9\x49\xc6\xe9\x53\x17\xf6\xbb\x67\x9b\x8b\xb4\xc5\x43\x9a\x34\x01\x29\xf4\x9a\x57\x2e\xe0\x5e\x33\xe3\x09\xfd\x13\x57\x93\x6b\xbf\xd2\x82\xe7\xcd\x67\xbb\x70\x86\x1b\x71\x49\x3e\x48\x73\x83\xa2\xee\xef\xb7\xb7\x5f\xb8\xb6\xe6\xee\x1b\xc9\xf4\x07\x69\xe0\x3f\xe7\xe4\x67\x93\x2e\xd1\x6e\x9d\x77\xe8\x22\x72\xa1\x1d\xbd\x30\xdc\x38\x9f\x64\x59\x5c\x0b\x17\x4d\x6b\xa7\xef\x88\x1e\xb5\xbd\xf2\xfc\x03\xac\x55\x58\x08\x33\x78\xd8\x6e\x84\xbd\x5c\xb9\xe9\x6f\x73\x87\x34\xaa\x94\xd2\x76\x0b\x01\xba\x42\x8a\x19\x58\x81\xa1\xcf\xc9\x12\x3b\xdf\xea\x57\x9b\xed\x77\x77\xbd\xa5\xaf\xb5\xe1\x67\x37\xdd\x77\x5d\x4f\x1f\xdb\xad\x69\x22\x3f\x43\xa0\xf3\xbb\x93\x77\x76\x4d\x13\x0a\xfe\x87\xd6\x10\x6a\xfb\xcb\xd5\xa5\xa7\x9f\x8e\xca\x91\xda\xd7\x16\xae\x66\x8e\xaa\x14\x33\x9e\x5b\x5b\x84\xdc\x85\xf4\x21\x75\xd1\x3e\xf0\xdd\x5c\x13\xc5\xaa\x82\x66\x2c\x27\x79\x7d\xd4\xbe\x82\xfc\x26\x6a\xd8\x8a\x67\xa4\x64\x6a\x05\x59\x05\x59\x74\x5a\xc2\xb0\x25\x1b\x51\xae\x1d\xad\xbc\x52\xca\xa1\x75\x5b\x6a\x5d\x6e\x92\x50\x1e\xae\x7d\x2e\x6c\x93\x84\x87\x13\xeb\x7a\x77\x1f\x4e\x19\x2b\xb8\x14\xfc\x04\xe1\x96\xcf\xfd\x3e\xe0\x83\x42\xa7\xfb\xc0\xc1\x36\xdd\x07\xf6\xb4\xe9\x3e\x10\xd7\xa6\xfb\x80\x6b\xd3\x7d\xa0\xd7\xa6\xfb\xc0\x74\x1f\x98\xee\x03\xd3\x7d\x20\xad\x4d\xf7\x01\x6c\xfb\x2a\xf7\x81\xc4\x97\x3a\x1c\xe3\x08\xb8\xe5\x37\x10\xb0\x15\xbc\x0d\x97\x13\xfc\x8a\xd9\x06\x5a\xac\xe9\x7e\xe7\x6d\xb4\xcf\x4c\x95\x58\x55\xe5\x33\xa1\x15\x15\x2b\x46\xbe\x9f\x7d\xff\xdd\x77\xb8\x7d\x94\x5e\x19\x3f\xad\x2e\x3e\x7e\xb5\xcf\x3a\xb8\x19\xe2\x21\x24\x64\x99\xb0\xbe\xb0\x4b\x79\x5f\x24\xc0\x09\xe3\x5b\xfc\x19\xd8\x84\x0c\xf4\xee\xab\xf8\x8a\xc5\xbd\xd0\x93\x26\xba\xae\x64\x86\x50\xd3\x03\x64\x79\xc9\xe2\x17\xae\x8f\x21\xea\x91\x14\x85\xd8\x9b\x9c\xc8\x40\x83\x64\x77\x46\xfc\x5a\x8e\xfb\x72\xb2\x88\xd7\x3a\x9d\x2f\xcf\x18\xd5\x2c\xe4\xb0\xf9\xaf\x97\x25\xf3\x35\x43\x91\xc7\xa1\xfd\x74\x16\x66\x99\xbc\x64\xf3\xd5\x9c\xe4\x35\x73\xa9\x69\xa4\xae\x72\x6a\xd8\xab\x4b\x94\xf9\xe6\x73\x86\x4a\x6b\xf6\xaa\x86\xf8\xc8\x28\x60\xe1\x81\xaa\x3d\x35\x94\x78\x63\x0f\x31\x8c\x68\xed\x00\xb8\x79\x5a\x2a\x59\x02\x7b\x04\x66\x46\x52\xae\xd3\x43\x5d\x88\x3a\xd5\x07\x97\x43\xb7\xd5\xe6\x27\xf1\xfd\x18\xdb\x17\x57\xd8\x18\xfe\x27\xec\x84\x8f\x9f\xe2\x23\x3d\x48\x9a\x99\x32\xf4\xf2\xd4\x45\x61\xe7\xd7\x05\x7e\x1c\xe3\xca\xda\x13\x40\x31\xf7\xe4\x34\xed\xce\x41\xca\x75\x51\x54\x2e\x7e\xe6\xfa\xc3\x1b\xc7\x3c\xc4\xc8\x67\x59\xc9\x42\xae\x36\xdd\xb9\xc5\xf6\x78\x53\x31\x08\x47\xf1\x3b\x9a\x12\x5d\x2f\xfc\x2d\xdd\xae\xd3\x0f\x83\xa5\x33\x45\x2e\x4c\x91\x0b\x93\xa7\x72\x77\x9b\x3c\x95\xa3\x6d\xf2\x54\x4e\x9e\xca\x9d\x6d\xf2\x54\x4e\x9e\xca\xc9\x53\x39\x79\x2a\x93\xda\xe4\xa9\x4c\x79\xee\x5b\xf3\x54\x4e\x91\x0b\x87\xda\x74\x1f\xe8\xb4\xe9\x3e\xb0\xa7\x4d\xf7\x81\xb8\x36\xdd\x07\xa6\xfb\xc0\xde\x5e\x4d\xf7\x81\xe9\x3e\x30\xdd\x07\xa6\xfb\xc0\xa8\x88\xe9\x3e\x10\xff\xf0\x93\x45\x2e\xe0\x5f\x87\x9d\x8e\xd9\x36\xe0\x86\x42\xbe\xa3\x3f\x09\xf5\xf3\x4a\xe6\x27\xa0\xbb\xa8\x64\xbe\x8b\xed\xc2\x31\x59\x44\x7d\xa5\x03\x66\x33\x39\x2b\x64\x46\x0d\x73\x70\xb0\x15\xeb\x23\x2e\x34\x2d\x1d\x46\x7d\x49\xfe\x4b\x8a\x48\xf8\x9b\x99\x6c\x6e\x55\x1c\xa0\xc7\x8e\x57\xb8\x92\xf9\x4b\xfd\x2a\x2a\xf7\x78\x62\xd4\x98\x18\x35\x26\x46\x8d\x89\x51\xe3\x38\x46\x8d\x35\xd5\x6e\x9f\x39\xe3\x6d\x2f\xc1\x06\x66\xd3\x06\x8d\x6d\x0f\x91\x7f\x3b\xc8\xaf\x11\xbf\x5d\x07\x3c\x1c\x4f\xcb\xaf\x61\x37\x9f\xdf\x14\x50\x4b\xb4\x5d\xd0\x6e\xbc\x30\x34\x0b\x2e\x84\x90\xe5\xb7\xfd\x71\xf2\xbe\x37\xf8\x48\x9a\xe7\x28\x91\x15\x53\x33\xb7\xe9\x24\x59\x72\x5f\x65\x70\xa0\x1f\xfc\x0c\xc4\x4f\x63\x1a\xa7\x45\xff\xa3\x8e\x08\x70\xe9\xc6\xec\x74\x8f\xef\x84\xd8\x96\xcb\x9d\x64\xbb\x69\xab\xdb\xb5\xa7\xe5\xc3\x00\x2f\x5a\x30\xcc\x8e\x77\x21\x83\x4f\x0e\x38\xf1\x80\xf0\x3c\xaa\xa4\xdc\xb0\x79\xbf\x52\xd0\xc6\xf6\xa8\x70\xe5\xd2\x48\x46\x35\xc4\x89\x25\x78\x9b\x8e\xf3\x5c\x1e\x1f\x7b\x43\x86\x83\x35\x14\x99\x7a\xb1\xd3\x84\x36\x9e\x7b\x37\xfc\x47\xb8\xee\xc9\xe0\x4c\x3c\x3a\x4c\x2b\xb4\x36\x4c\x2b\xcd\xdb\x7e\xcc\xf5\x75\xe7\x1a\x3d\x72\x90\x7a\xc3\xd4\x07\x03\x8e\x70\xa3\xec\x00\x11\x3c\x20\x70\x94\xd3\xf2\xa4\x40\x02\x39\x19\x98\x40\x4e\x00\x28\x90\xe3\x40\x05\x32\x5c\x1e\xbe\x66\xe9\x31\x6e\x41\x12\xb4\x6a\x83\x4d\xf4\x30\x86\xa3\xe4\x1e\x8f\x4f\x90\xd3\x78\x73\x8e\xc7\x29\xc8\x70\xe8\x9b\x25\xda\x56\x5d\x38\x6e\xac\x1c\xe0\x31\x04\x2e\x8e\x94\xd9\x07\x3d\x1c\x78\x71\x94\xc8\x93\x03\x1f\xa4\x01\x3f\x60\x7f\xf6\xf0\x8f\xaf\xbd\x68\x8e\xc3\x30\xc8\x70\xc9\x78\xa7\x33\x90\x0e\x1f\x37\xaf\x7d\x34\xe4\x68\x4c\x8b\xec\x76\xb5\xdf\x1c\xd7\xcb\x33\xa0\x22\x64\x1f\x32\x72\x94\xc4\xe1\x77\xbb\xe5\x78\xec\xb7\xf7\x90\x95\xce\x10\x9c\x60\xe6\xfb\xe8\x0a\xb8\xf4\x4f\x20\xf5\x84\x70\x00\x39\x3d\x24\x40\x8e\x87\x05\xc8\xa9\xf4\xc2\xb1\xf0\x00\x39\x12\x22\x20\x47\xc0\x04\xe4\x58\xa8\x80\x1c\x0b\x17\x90\xa3\xc7\x0f\x2e\x23\xef\x20\x60\x3f\x6d\xf8\xd2\x28\xe7\x77\xb7\xa3\x57\xd4\xf6\x3d\xcb\x7d\x1a\x1c\x14\x89\x9d\x2a\x69\x65\xcf\x87\xff\xb6\xc6\x38\xa8\x9d\xff\x21\x15\xe5\x4a\xcf\xc9\x75\xa2\x44\x0f\x70\x76\x25\x7a\x7f\x7f\xa7\xcb\x47\xf4\x96\x6b\x62\x77\xc4\x03\x2d\xec\x15\xc5\xa5\x7c\x79\x17\x61\xa2\x54\xb9\xdc\xba\xb5\x5e\x92\xc7\xb5\xd4\xec\x88\xad\xe3\x9c\x8f\x5c\x93\x17\xf7\x6c\xf3\xe2\xb2\x77\x76\xa4\xdf\x89\x5f\xdc\x88\x17\x2e\x8a\xea\x44\x47\x65\x73\x2f\x83\x9a\x81\x2f\x40\xe2\x8b\xe7\x72\x3d\x3e\x01\xd8\x98\xf4\x70\x5b\x6d\xee\x48\xcf\x51\xa7\x6c\x5d\x53\xc0\x30\x61\x24\x9c\x9b\x59\x74\xcb\xd8\xb1\xbe\x87\x2b\x41\x68\x7b\xe7\x22\x2f\x1b\xfa\xe2\x95\x5d\x0b\xe6\xd5\xbf\x41\xa6\x5c\x82\xd0\x26\xb7\x0e\x5c\x37\x25\xa3\x42\x93\x17\x01\xf7\x4b\x8a\xd2\x6a\xbe\xfa\x05\xfa\xe1\x64\x2b\xe0\x28\x4d\x9d\x7e\x62\x19\x9f\xe4\xf7\xb7\x94\x8b\xff\xc0\xf7\xee\x91\xd6\xb6\x70\x47\x03\xc3\xa6\x5c\xeb\x5e\x06\x4f\xf2\x2b\x3b\xc3\xae\xc2\x7d\x10\x47\x5e\x52\x61\xf8\xac\xf9\x45\xca\xfa\x0e\xfe\x65\x00\x55\x02\x31\xc0\x49\x56\x79\x80\x9a\x1b\xe4\xb2\xdd\x45\x56\xc7\x33\x95\xe2\x10\xe9\x7c\x3c\xd7\xa1\xc8\x3b\xa1\x9a\xa8\x5a\x88\xb4\xd3\x5d\x8a\x00\x85\xba\x83\x07\x14\x71\x00\x4c\x60\x10\x52\xc7\x15\xbc\x35\xed\xca\xea\xa0\x55\x49\xd1\xa5\x72\xe9\xca\x7f\xda\xae\x4a\xe1\x55\x93\xfd\x4b\x44\x71\x93\xdd\xcd\x79\x90\x58\xee\x66\x9f\x37\xa3\x38\x27\x6f\xad\x2a\x49\xd9\xbf\x9d\xcf\xe5\x1a\xd6\x2b\x14\x60\x4d\x39\x87\x92\x75\x41\x9a\xdd\x3e\xeb\x76\xfe\x29\x82\x64\x8e\xa6\xf7\x78\x3c\x33\xbd\xc7\x00\x1e\xbb\x24\x11\x95\x5a\xb7\x65\xfe\xbe\xd9\x3d\xfa\x43\x84\x78\x72\xa2\xf8\x98\x28\x3e\xbe\x39\x8a\x0f\xf8\x47\x07\x45\x04\xae\x0f\xd4\xb0\x46\x72\x7d\xc4\x07\xf0\x3c\xf0\xcc\xec\xe1\xfa\x20\xbf\xf9\x32\xe1\x8a\xd9\xa5\x11\x2d\xb3\xac\x0b\xc3\xab\x36\x50\x58\xbb\x1b\x64\xe1\xc2\xb1\x97\x3e\xbc\x2b\x0d\x8f\xb7\x5f\x49\xb3\xf5\x50\x6d\xc0\xd2\x85\x40\x62\x0d\xe7\xb1\x0b\x65\x8a\x0f\x09\x2a\x0a\xcf\xed\x11\xbc\x8e\x2e\xee\x2c\xa2\x1c\x71\x68\xc7\x84\x9b\xbc\x01\x2b\x4c\xb7\x50\x06\x58\x13\x2f\xad\xb9\x87\x98\x4a\xbb\x40\xac\xf9\xb5\xdf\x06\xf5\xb8\x0b\x2a\x06\xdc\xef\xd5\x15\x7f\x60\xa2\x35\x40\x5f\xea\x57\xaf\x02\x8e\xe6\xcc\x75\x84\xc8\x5d\x86\xfd\x41\x33\x1d\x21\x7b\x60\xd0\xc3\x79\xee\x8d\xe5\xbe\xe9\x8b\x90\xb9\x6d\x24\xef\x36\x79\x11\x22\xbb\xc6\x71\x6b\xea\xfe\xb5\x63\x3f\xfd\x7b\x30\x76\x51\xf3\x4f\xcd\x1e\x23\x17\xb6\x77\x08\xca\x8b\x28\x6b\xdf\xeb\xea\xc0\xb8\x3d\x73\x4c\xd1\x11\xe1\x2f\xa3\xa1\x2f\xc8\x6f\x27\xee\xfb\x4f\x17\xf6\xf2\x6c\xa8\x66\x86\xe2\x52\xfd\xb0\xbb\xc3\x5c\xfa\x01\x2b\x09\x62\x87\x3e\xbc\x63\xbc\x71\xa7\x4a\x56\xdd\xff\x89\x69\xf1\x33\x53\xb6\x6a\x42\x3b\x55\xb6\x6a\x1b\x54\x92\xec\xa1\x68\x3a\xb4\x1d\x50\x12\x1c\x94\xe9\xd1\x3c\xbf\x93\x64\xd7\x53\x06\x90\xec\x09\x1e\x49\x86\x8f\xc8\xce\xc0\x91\x36\xf8\x23\xbd\xa3\xbd\xa0\x91\x4e\xe0\x47\xb2\xc4\x53\x04\x8c\x3c\xa7\x64\xd7\x6e\x90\xc8\x91\xd1\x12\x5b\x01\x22\xc3\x20\x8f\x64\xc9\x10\x1c\xb2\x33\xc0\xe3\x88\x95\xd1\x8d\x6c\x38\x4d\x70\xc7\xee\xc0\x0e\x72\xc4\x87\xef\x0b\xea\x38\x51\xb6\x6f\x27\xa0\xe3\x48\x89\xdb\xc1\x1c\xdd\x80\x8c\xf4\x8e\x4e\xb9\x9d\x53\x6e\x67\x5c\x3b\x2a\x48\xe3\x54\x01\x1a\x47\xad\x96\x83\x81\x19\xa4\xa4\x55\x1a\xce\xb2\x2b\x28\x63\x47\x78\x45\x3a\x2a\xd6\xed\xea\x56\x68\x45\x12\xee\xd2\x09\xc6\xd8\x19\x56\x91\x04\x7e\xfb\x40\x8c\x53\x87\x54\x1c\x0c\xa7\x68\xee\x11\x49\x58\xde\xa1\x50\x0a\x94\x1b\xb0\x6d\x89\x17\xb7\xe4\x3d\x9d\xf8\x60\x6a\xe8\xc4\x68\xd8\x84\x73\xc2\x24\x07\x72\xec\x70\xe4\xa5\xdd\x2f\xf6\x87\x4b\x34\xc1\x0f\x48\x89\xbb\x43\x25\x52\x03\x1f\x92\x4e\xcd\x64\xed\x97\xa6\xf5\x93\x03\x1d\xce\x16\xe4\x70\xc6\x00\x87\x33\x05\x37\x8c\x07\x36\xa4\x8f\xc6\xce\xa0\x86\xa1\xbf\x16\x29\x73\x3b\xa0\x61\x67\x78\x42\x8a\xed\x10\xf2\xdc\xf7\x85\x26\xe0\x9d\x95\xad\x1f\xe2\x54\x61\x09\xa7\x0a\x49\x48\xda\xa9\x29\x98\x72\xca\x9c\x9c\x1d\x1e\x46\xd3\x60\x08\xc3\x4f\x45\x85\xd1\xd5\x01\xd8\x9c\x7c\xe0\xcc\xf0\x28\x26\x7d\x90\x3c\x27\x55\x6d\x7c\xa2\xfb\x36\x27\x46\x94\xc8\x0e\x6f\xc6\xc4\x89\x31\xd6\xe3\x11\x4e\x8c\xee\xd4\xc6\xa3\xbe\x1d\xc7\xff\x08\x31\x46\x3c\xea\xdb\x10\x68\x8c\x12\x63\x44\xcb\xdc\x41\xa0\xb1\x9b\x18\x03\x01\x49\x6d\x13\x68\xec\x26\xc6\xc0\x74\x72\x8b\x40\x63\x27\x31\x06\x0a\x8e\xde\x22\xd0\xd8\x43\x8c\x81\x52\xa4\x07\x09\x34\x8e\x5f\x4b\xbb\x59\x34\x7a\xec\x18\x88\x60\x87\xfd\x2c\x1a\x5b\xec\x18\xd1\x52\xf7\xb3\x68\xec\x62\xc7\x40\xac\xfd\x3d\x2c\x1a\x5b\xec\x18\xa8\x60\x8f\x7d\x2c\x1a\x5b\xec\x18\xf8\xe5\x3f\xb1\x68\x4c\x2c\x1a\xfb\xdb\xc4\xa2\x31\xb1\x68\x60\xda\xc4\xa2\x31\xb1\x68\x1c\x68\x13\x8b\x46\x5a\x9b\x58\x34\x90\x6d\x62\xd1\x48\x97\x39\xb1\x68\x4c\x2c\x1a\x71\x6d\x62\xd1\x98\x58\x34\x26\x16\x0d\x9c\x98\x89\x45\x63\x62\xd1\x98\x58\x34\x26\x16\x8d\x89\x45\x03\xd5\x26\x16\x0d\xd7\x26\x16\x8d\x89\x45\x63\xac\x4d\x2c\x1a\x3b\xdb\xc4\xa2\x31\xb1\x68\x4c\x2c\x1a\x07\xda\xc4\xa2\x71\xb8\x4d\x2c\x1a\x9d\xf6\xfb\x62\xd1\xe8\xc5\x45\x25\x59\xbb\x7b\xa2\x67\xf6\x53\x69\xc4\x8f\x34\x2f\xd9\x65\x24\x95\x46\xb4\x50\xc7\xeb\x30\xfa\xf9\x47\x33\x89\x1c\xe4\xd3\x88\x8f\x26\x70\x39\x3d\x71\x7c\x1a\xd1\x52\x03\xef\xc6\x28\x9f\x46\x7c\x08\x4c\xc3\xbb\x31\xce\xa7\x81\x09\x00\x71\xbc\x1b\x63\x7c\x1a\xa8\xc9\x1f\xf0\x6e\xec\xe3\xd3\x88\x0f\x55\xda\xc5\xbb\x31\xf1\x69\x1c\x90\x39\xf1\x69\x4c\x7c\x1a\x13\x9f\xc6\xc4\xa7\xb1\xbb\x4d\x7c\x1a\x13\x9f\x06\xa6\x4d\x7c\x1a\x51\x6d\xe2\xd3\xd8\x6e\x13\x9f\xc6\xc4\xa7\xb1\xdd\x26\x3e\x8d\x89\x4f\x63\xe2\xd3\xd8\x27\x62\xe2\xd3\x88\x7f\x78\xe2\xd3\x98\xf8\x34\x26\x3e\x8d\x89\x4f\x63\xe2\xd3\x88\x6f\x13\x9f\x46\x74\x9b\xf8\x34\x9a\x36\xf1\x69\x90\x89\x4f\x23\xb2\xfd\x33\xf2\x69\x44\xff\x94\xaa\xd5\xa8\xbe\xec\xe9\x9d\x8b\x6b\xb5\xaa\xdd\x51\xee\x81\x1d\x26\x8c\xda\x00\xcc\xe9\x8e\xfb\x5c\x66\xf7\x11\xe0\x3f\x2f\xe9\x8a\x5d\x5c\x68\xf2\xfa\xfd\x1b\xbb\x28\x6a\xcd\x72\x97\x99\xce\x75\x58\x24\x95\x92\x0f\x3c\x67\xf9\x9c\xfc\x4a\x15\xa7\x8b\x08\x16\x09\x48\x64\x66\xc2\x1e\x7a\x7f\x7c\xf9\xeb\xf5\xa7\xbf\x7f\xb8\x7e\xff\xf6\x15\x78\x54\xd8\x97\x8a\x8a\x9c\xe5\xa4\xd6\x41\x07\x79\x3b\x87\xa9\x8b\x88\x40\x3d\x26\x1e\xb8\x92\xc2\x7e\x3c\xf8\x08\x28\x79\xf0\xbd\x22\x19\x15\x1e\xaa\x56\x4c\xcb\xe2\x81\xe5\x97\x51\x28\x75\xd3\xdb\xa0\xd1\xb8\xa8\x6a\x13\xfc\x11\x00\x81\x2f\x18\xa9\x45\xb6\xa6\x62\x65\xc7\xe1\x73\x84\xd0\xee\x77\xeb\x8d\x30\xf4\x8b\xed\x1f\x5c\x9c\x75\x46\xab\x10\xad\x42\x49\x2e\x6b\xdb\xf9\x3f\xfe\x71\xdc\x32\xe5\xec\x07\xf2\xc7\x8e\xe0\x39\x79\xeb\x65\x75\x06\xdc\x41\xf6\xec\x81\x29\xb2\x18\xef\x66\x98\x8e\x4b\xa2\xd8\x8a\xaa\xbc\x60\x1a\xb2\xe6\x1f\xd7\x0c\x48\x51\x9c\x51\xea\x07\x98\xc5\xa5\x9d\xb8\xe3\x6b\x4e\x5e\x37\xf3\xe1\xb0\xef\x7c\x4e\xde\x4b\x00\x6e\x97\xf2\x07\xb2\x36\xa6\xd2\x3f\x5c\x5d\xdd\xd7\x0b\xa6\x04\x33\x4c\xcf\xb9\xbc\xca\x65\xa6\xaf\x0c\xd5\xf7\xfa\x8a\x0b\xbb\x71\x66\x39\x35\x74\x06\x86\x52\x06\xfe\xc2\x2b\x77\x2e\xcc\x32\x59\x96\x54\xe4\x33\xea\xb7\xc2\xac\x59\x46\x57\x7f\xf0\x7a\x72\x46\x9b\x5f\x71\x31\xa3\x33\xbd\x66\x45\x71\x31\xd2\xff\x48\xeb\x05\xa1\x05\x63\x15\x0c\x13\x0f\x28\x2d\xf0\xce\x83\x36\x9d\x2d\xd1\xcc\x15\x28\x06\xcd\x4c\x4c\xd0\x52\x6f\x0f\xee\x9a\xb6\xd3\x8c\x58\xaf\xef\x6f\xc5\xc3\xaf\xb4\xeb\x4f\x86\x6b\xdb\x8e\x0f\x89\x50\xc9\x5e\x84\xdd\xbd\x94\xbc\x6e\x3e\x64\xf4\x49\x1c\x88\x61\x8d\x9b\xb8\xd3\xab\xf7\xa1\x1f\x68\xd9\xd8\x1c\xbb\xbe\x2f\xf6\xec\x7d\xef\xdd\x6e\x94\xbc\xfe\xfb\xcd\x9b\xb7\x1f\x3e\xdf\xfc\x74\xf3\xf6\x53\xdc\xd3\xc8\x13\x1b\xec\xa4\x84\x4f\xbd\x08\xe7\xc3\x1e\xfd\x1f\xf9\xa5\x7b\x4e\x89\x4a\xb1\x07\x2e\xeb\xd6\x2e\xec\x8c\x66\xa4\xe4\x76\x73\x78\x45\xdf\xac\x7a\x8f\xb3\x6d\x88\x66\xea\x81\x67\xec\x18\xe1\x11\xc7\x52\xac\x65\xb2\x66\xe8\xc3\x29\x52\xb4\xb5\x11\x62\x8f\xa8\x48\x91\xed\x41\x16\x75\x50\x45\x4a\xed\x1d\x67\x63\xc7\x15\x62\x5c\x07\x87\x5a\x73\x68\xbd\x61\x4b\x5a\x17\xce\xb0\x7a\xf1\x62\x3e\x76\x5a\x78\x81\x09\x1b\xec\x27\x25\x23\x29\x57\x7a\x9b\xec\x0e\x42\x18\x80\xec\x69\x9f\x4a\x89\x4e\x77\x80\x7e\xf4\x14\xbe\x37\xff\xdc\x4d\xc9\xdb\x7f\xce\xd1\x1f\x25\x12\x0f\x0b\x67\x52\x2c\xf9\xea\x3d\xad\xfe\xc6\x36\x9f\xd8\x32\x31\xf2\xca\x5d\x60\xb5\xc3\x16\xe1\x12\x66\xcf\x01\x27\x38\xfe\x72\x93\x06\x6a\xa3\xa1\xec\x2d\xb2\x22\x77\xff\xf4\xb7\xbd\x27\xb8\x8b\x61\xce\xb2\x9d\x9d\xbe\xe8\x1e\x6a\x7e\x47\x1b\x67\xdc\xa1\x5d\x08\x23\xa6\x60\x26\x45\xc6\x2a\xa3\xaf\xe4\x83\xd5\xcc\xec\xf1\xea\x51\xaa\x7b\x6b\xdb\x59\xdd\x34\x73\x97\x2b\x7d\x05\x9e\x87\xab\x3f\xc0\xff\x43\x76\xe1\xf3\xc7\x37\x1f\x7f\x20\xd7\x79\xee\x69\x00\x6b\xcd\x96\x75\xe1\x19\x9e\xe6\x84\x56\xfc\x57\xa6\x34\x97\x68\x06\x81\x7b\x2e\xf2\x4b\x52\xf3\xfc\xff\x1f\xa7\x44\x42\x4b\x9c\x53\x59\x39\x10\xe2\x88\x79\xbd\x03\x4f\xce\xa6\x67\xfc\x37\xfb\x08\xeb\xc2\x50\x10\x81\x6a\xd7\x76\x40\x0c\xfd\xc1\x9d\x30\x18\x0b\x29\x0b\x86\xa0\x24\x48\xf1\x36\x60\xd0\xae\x04\x2f\x03\xac\xa7\x74\x0d\x77\xd1\xaa\x38\x87\x41\xf8\xdd\x57\x49\x14\xb8\xa7\xeb\xaa\x92\xca\x68\x52\x32\x43\xed\xcd\x6a\x6e\xb7\xcc\x65\xff\x3f\xc1\x85\x87\x59\xed\xcd\xd3\xe0\x54\xd3\x1d\x71\x70\xb2\xb8\x30\x8f\x4b\x70\x14\xce\x85\xcc\x99\x55\x1f\x18\xf9\xf0\xa0\xb7\xcc\xae\xb3\x4c\xd6\xc2\x80\x08\xa2\x0d\x35\xb5\x9e\xaf\xa5\x36\x37\xb7\x28\x89\xee\xc1\x4a\xe6\x37\xb7\x91\x67\x3c\x49\x3e\x21\x5a\x15\x72\xc4\xde\xf4\x12\xba\x04\x8d\x25\x4d\x48\x7c\xfa\xc9\xae\x9e\x5b\x6a\xd6\xf6\x78\x7f\x54\xdc\x18\x26\xc0\xb4\x84\xb8\x69\xb9\xbc\xb4\xdb\x14\x2c\x20\x3c\x2a\xf1\xe2\xe1\xfb\x17\x4f\x72\x7e\x2d\xc3\x47\x1c\x31\xa0\x30\x06\x7e\x34\xdd\x96\x6a\xce\xe0\x63\xfd\xe0\xd7\xb7\x37\xe4\xc1\xcd\xd7\x33\x75\xad\x36\x03\x78\x4e\x95\x17\xe2\x6d\x7f\x3a\x99\xea\x0b\x12\xc3\xbc\x35\xf7\x37\xcc\x3a\x00\x6c\xb4\x89\x05\x26\x05\x2f\xb9\xa7\xf6\xf1\x5c\xa5\x9a\xbc\x74\x7f\x9c\x67\x55\x8d\xd1\x2a\xfe\xa9\x92\x95\x52\x6d\x2e\xc3\x7f\xb2\x6a\xcd\x4a\xa6\x68\x31\xd3\x46\x2a\xba\x42\xa9\xbe\xd0\x25\xe8\x4a\xfb\x5f\xee\x15\xbd\x4e\x6f\xbf\x07\x03\x13\xd9\x4b\x77\x56\x2b\x6b\xc8\x15\x9b\x70\x4c\xb0\xfc\xec\xba\xb1\x99\xc1\x0f\x47\x9a\xa4\x8d\xdf\xc7\x19\xb7\xcd\xae\x40\xee\x65\x7b\xaf\x7a\x90\x45\x5d\x32\x7d\xd9\x98\x54\x8e\x5a\x57\x3c\xd8\x1b\x96\x7e\x12\x63\x2e\xe7\x0f\x5c\x1f\x15\x36\x7f\xd7\xa0\xd6\x10\xa3\x50\x9b\xaa\x36\x3e\xa7\x30\x0d\x8c\x62\x5f\x2a\xa9\xe1\x06\xdf\x44\xd1\xe7\xed\x5d\x19\x29\xf3\xc5\xf7\x38\x48\x39\x71\x18\x43\x5f\x8f\x59\x58\x81\xdb\xf4\x87\x56\xfb\x34\x07\xc5\x13\xac\x85\x14\xed\x8e\x26\x69\x4e\x50\xee\x9a\x65\x8a\x99\x53\xdf\xda\x9d\x54\x5c\xa6\xad\x37\x83\xbb\xf1\x0a\xdf\xc4\x95\xbf\x01\x79\xe1\x93\xd1\x5b\xc8\xad\x40\xc8\xf5\x9b\x77\xdd\xc3\x0f\x10\xfe\xec\xa4\x62\x6f\xac\x2c\xd2\xcf\x13\xda\xe4\x7e\x98\xdc\x0f\xbe\x9d\xc9\xfd\x70\x97\xb2\x8e\x27\xdf\x43\xf2\x03\xf1\xbd\x9f\xc1\x36\x8e\xc4\x49\x11\xf1\x12\xe3\x38\x29\x04\x2d\xdc\xd6\x45\xe1\x16\x07\x2e\x74\xe2\x66\xf0\xb0\xcf\x5e\x68\x4c\x3d\x9f\x09\x87\x09\x71\x00\x73\xc0\x0b\x6b\x4b\x92\xb4\xa7\x91\xfd\x41\x1d\x11\xad\x64\xad\xcc\xaa\x2e\x7c\x51\x84\xe6\x80\x80\xcf\xf5\xa1\x19\x21\xdd\xfd\x56\xe6\x76\xb7\x8c\x6b\xeb\x9b\x65\x7b\x2f\x85\x68\x08\xcd\x9a\xce\x06\xf0\xa8\xa2\xda\xca\x36\x92\x70\x61\x0d\xcf\xbc\xa6\xe3\x89\x54\xb6\xa3\x4c\x11\x5e\x56\x2e\xd6\xd6\x39\x79\x02\x2e\x51\xfa\x6f\x3e\x07\x74\xfc\x4e\x66\xb4\xf8\x08\x0b\xea\x53\x03\x8e\x35\x39\x77\x4c\xc8\x7a\x15\x73\xad\xb5\xba\xdf\x5a\xc3\x5c\x0a\xdb\xd9\x82\x19\xb2\x91\x35\x71\xe1\x6a\x7d\xe8\x2d\x8f\xdf\x6e\x5c\x68\x9e\xb3\x1d\x8b\xe0\x99\xc0\xd1\x07\xce\x4e\x77\x1a\x46\xea\xa1\xaf\x72\x66\xc6\x9f\x95\xee\xf4\x8b\x14\x1b\x7f\x46\xa2\xce\xc6\x73\x68\x3e\xc1\x4d\x73\xd1\x45\x86\x8c\x85\x68\x11\x2b\x83\xd3\x82\xff\x97\x5b\xfa\xcd\x05\x5c\x93\x05\x2b\xa4\x58\x45\x7d\x9a\x0c\x56\xf7\x9c\xdc\x08\x6e\xba\x52\x1c\x7c\xcf\xb2\x1a\x12\xf4\x05\x91\x2a\x8f\x00\x66\x2b\xc5\x25\x54\x2a\xea\xf5\xc7\x6a\x42\x6d\x28\x78\x22\x00\x55\x17\x1b\xe8\x7f\xfb\xab\x71\xa5\x4a\x79\xa1\x5b\x42\x13\xae\xed\xb3\x76\x8f\x2a\xa7\xf2\xd6\xf4\x81\xc1\x8f\x98\xab\xec\x12\x41\x29\xb0\xa6\x22\x87\x9f\x67\x99\x54\x81\xce\xc2\x1a\x1c\x8a\x41\x67\x6f\x65\xc1\xb3\x8d\x2f\x19\x64\xb7\xdb\x32\x22\xb4\x96\x8a\xc1\x97\x39\x44\x5a\x95\xb4\xe8\xfc\x2d\x98\x33\xb5\xe0\xff\x88\x60\x2a\xa0\xa5\xb4\x67\x49\xd1\x11\xa1\xb7\x67\x2c\xd0\x8f\xd8\xa1\x18\x15\xf9\x8e\x2f\x59\xb6\xc9\x0a\x46\x68\xe6\xfd\xfa\x9f\x18\xcd\xb9\x60\x5a\x5b\x15\xb6\x00\xc7\x89\x22\xef\xf8\x03\xeb\xfc\x6d\x5c\xfd\xb9\x24\x05\x77\x71\xfd\xd4\x4d\x56\x80\x98\xda\xe1\xe0\xc4\x64\x30\x18\x7a\x0f\xbe\x6d\x23\x61\xaa\x6a\x61\x42\x7a\x59\xa7\xbc\xd1\x62\x03\x55\x58\x7c\x94\xc9\xf8\xdc\xfb\x52\x38\xde\xeb\x76\x05\x3e\xbe\xb6\xf4\x52\xeb\x22\xd8\x54\xec\x32\x2a\x59\xd4\xac\x99\xe8\x84\xb9\x94\xf4\x8b\xfd\x62\xd0\xd0\xd4\x84\x98\x65\xd5\x94\x0d\x8a\x30\x4d\x5c\x0d\x9f\xfe\xca\xd1\x73\xf2\xce\x3b\x3a\x15\xf3\x79\x07\xfe\xc8\x8f\x28\xb6\xd5\x59\x2c\x10\x64\xa5\x79\xc9\x0b\xaa\xc8\x92\xea\x35\x97\x62\x7b\x49\xb9\x98\x97\x71\xb9\x8d\xc7\x71\xe1\x0b\xe9\x10\x48\x32\x2e\xe5\x83\xdd\xf1\xe8\x48\x34\x12\x19\x60\xd8\x1c\x51\xf6\x64\x2a\x24\xcd\xf5\x55\x25\x73\x7d\x65\x07\xa3\x8d\x23\xd4\x57\x27\x8a\x15\x1c\x30\x10\xf8\xfc\xa9\x4e\x4c\x63\x67\x61\xc3\xac\x6f\x64\x1d\x71\x1e\x3d\x52\xc7\x43\xab\x6a\x01\x91\x3a\x30\x35\x56\x27\x9f\xd8\xd4\x88\x09\x4f\xde\xf1\xa1\xa3\x41\xca\x91\xc7\xb3\x0b\x65\xc6\x85\x2a\x47\x8a\x1e\x09\x58\xeb\x85\xa2\xc5\x1a\x13\x3b\xc3\x9a\x0f\x84\x2d\x47\xca\xdd\x13\xdc\xbc\x27\x3e\x2c\xd6\x89\x77\x28\xc4\x79\x47\x7c\x58\x7c\x5f\x0f\x06\x3a\x6f\xc7\x87\x45\x0a\x1e\x0b\x77\xde\x19\x1f\x16\x29\xfb\x70\xd0\xf3\x20\xa8\x39\x52\xe6\x37\x16\xfa\xec\x1a\x2a\x7d\x0b\xed\x2d\xc2\x65\x5b\xf8\x6f\x48\xd1\x3e\x6f\x1b\x65\xe3\xde\x36\x27\x1f\xa4\x69\x2d\x53\xa7\x30\x23\xbf\x92\x12\x18\xbf\x6e\x6a\x45\xab\x8f\xde\x7e\xf8\xfc\xe9\x3f\x6f\x3f\xde\x7c\xf8\x1c\xd4\x52\xa4\xd4\xd1\x3c\x0b\x7c\xb4\xe4\xa9\xb3\x2d\x5c\xc3\xe5\x5c\xc4\xae\x9c\x29\xb8\xf5\xc9\x83\x5b\x13\x0c\x2a\xd7\x26\xe5\xd5\x79\x20\x56\x79\x45\xe4\x73\xb8\x86\xca\xea\x88\xc6\xe7\xcc\x56\x94\x7b\xf2\x02\x40\x8d\x2a\x2a\xcf\x23\xda\xed\xdd\x2c\xe9\xd4\x6c\x0f\xd7\x52\x00\x3f\x2c\x5c\x75\x96\xfc\x0f\xd7\x8e\xc9\x02\x71\x2d\x09\xde\x41\x64\x84\xb8\x76\x8e\xbc\x10\xd7\x22\xb3\x43\x50\x32\x77\x6f\xb5\xe1\xee\xc1\x75\x73\x7f\x3e\x49\x27\x53\x04\x25\xf2\x34\xc9\x8e\xdd\x16\x75\xfc\xa2\x24\x8e\xde\x20\x6c\xbf\x51\x12\xcf\x72\x8f\x70\x2d\xfe\x36\x81\x1c\xd5\x53\x25\x52\x76\xdb\x51\xf9\x29\xae\xa5\x6f\xfd\xf8\x5c\x15\xd7\x22\x33\x56\x50\x03\xd0\x66\xb7\x8c\xe4\xad\xa0\xa4\xe2\x73\x5c\x5c\x4b\x25\x40\x4c\xce\x77\x71\xed\x0c\x59\x2f\xc7\x7d\x0f\x49\x27\x73\x3c\x65\x1e\x8c\x6b\x47\x31\x28\xe1\x83\x52\x5c\x8b\x80\xd7\x12\xa4\xa2\x3d\x99\x67\x0b\x50\x71\xed\x30\xf4\x96\x24\x72\x0b\xae\x4b\x08\x56\x71\xed\xa8\x79\x4f\x0b\x5c\x71\x6d\x2c\x7c\x25\x69\x5c\x9a\x3d\x7c\xaa\x38\x16\xd7\xd2\xa2\x59\x5c\x4b\xe5\x91\x4b\xe1\x90\x4b\xa6\x8b\xc2\x67\xd8\xb8\x16\x93\x67\x83\x1e\xef\x4a\xe6\x3f\x9c\x29\xdb\xc6\xb5\xb8\x9c\x1b\xb4\xd8\x7e\x8e\xce\xde\xcc\x1b\xbc\xdc\x5e\xa6\x4e\x6a\xfe\x8d\x6b\xc7\x9c\x55\xa9\xb9\x38\xae\x8d\x67\xe4\x24\xed\x78\xfb\xf8\xc1\xbc\x9c\x24\xa9\xdd\x5c\x9e\xb4\xec\x1c\xdf\xbb\x63\xb4\x6b\x62\xa6\x8e\x6b\xa3\xf9\x3a\x49\xe3\xe2\x03\x67\x4f\x97\xb5\xe3\xda\x11\xc3\x94\xae\x5e\xf1\x79\x3c\xae\x25\x2b\xd9\xf4\x9c\x1e\xd7\x22\x32\x7b\xd0\x63\xdf\xcf\x04\xda\x9d\xdf\x83\x57\x14\xfb\xf2\x81\x06\x59\x3e\x68\xc1\x7b\xb3\x82\xfa\xb9\x3e\x68\xb9\xe7\xcb\x0d\x72\xed\xf8\x0c\x21\xd7\x8e\xd1\xde\x47\x64\x0b\xb9\x76\x96\x9c\x21\xd7\x0e\x66\x0e\x25\x49\xc4\x67\x1b\xb9\x76\x1c\x91\x6c\x4a\xe6\x91\x7f\x74\x2c\xff\x28\x75\x5c\x4b\xc7\xac\xb7\x3b\x0b\x29\x49\x68\xef\x5c\x44\xe6\x22\xb9\x76\xd4\x20\xa7\xe5\x25\xb9\x36\x96\x9d\x94\x66\x81\xa4\x65\x34\xf9\x87\xbf\xc6\xc9\x97\xf8\xb9\xc9\x07\x5f\x5a\xbe\x93\x6b\x71\x59\x4f\xe8\x91\xf7\x16\x4c\x6a\xee\x93\x6b\xcf\xc5\xf1\xd3\xcb\x86\x3a\x6e\x0d\xef\xc9\x89\x4a\x34\x16\x21\x3b\x0b\x9d\x19\xe5\xbb\x34\x39\xa4\x26\x87\x14\xf6\xe1\x67\xe7\x90\x72\x99\x32\x93\x37\x0a\x0d\xb5\x20\xd9\x12\x70\x5f\x15\x99\x7f\x95\xd8\x1f\x74\xa4\x43\x22\x9d\x59\x88\x76\x08\xb7\x35\x23\x49\x25\xab\xba\xa0\xe6\x28\x0e\xbe\x1d\xa1\x0f\xfe\xa0\xc1\x22\xc4\x4d\x60\xad\xbf\x9f\x96\xbb\x11\x78\x72\x1d\x5d\xb6\x9e\x0b\x97\xa2\x0b\x9d\x09\x31\x4e\x8a\xb9\xeb\x14\xa1\x2e\x42\xe2\x81\x09\x63\x37\x6e\xec\xde\xe8\xb3\x19\x72\xed\xd2\x26\x80\x2b\xfa\xb7\x35\x13\xde\xda\x40\xe1\x8e\x5c\xb4\x25\x40\x9b\x94\xff\xa6\x48\xc1\xb0\xee\x32\xa2\x9f\x05\xd5\x26\x0c\x27\x7c\xbf\xa1\xf7\x80\xe0\x67\x2c\x67\x22\x63\x50\xc2\x29\xbe\x3e\x4f\xe0\x83\x5c\xd8\x3b\x2f\x79\x2b\x1e\x1a\xa0\xb8\x76\xc1\x47\xce\xc0\xb0\x6f\x8a\xed\xe4\xb0\x3f\x5f\x23\x6c\xc6\x6e\x28\x0f\x9d\x76\xa2\x67\xc0\x46\xc2\x19\xbe\xde\xc4\x84\x6d\xd6\x60\x0b\xb1\x83\x9b\x62\x1e\x36\x18\x27\xd2\x54\xde\xb2\x0b\x5b\x24\xa4\x6f\xdb\x3d\x01\x4e\x9b\x62\x7c\x9d\xc3\xf0\x7a\x3e\x46\xd7\xd9\x12\xd5\xd3\x53\xd5\x8f\x30\xb4\x52\x8d\xac\xb3\xf1\xe5\x91\x23\x8d\xaa\x54\x83\x2a\xc9\xc0\xa9\x14\x5b\xf2\x2f\xc9\x7b\xfb\xba\x93\x6f\xcd\x73\x26\x0c\x5f\x72\x06\xd9\x7f\x95\x62\x15\x43\x56\xd8\x0b\xb5\xa4\xa1\x16\xa4\xe8\x4f\xc2\x3c\x5c\x02\x51\x12\x9f\x38\xba\xce\xdd\x31\x8f\x55\x96\x77\x81\x47\x64\xd2\x94\x93\xa6\xdc\x6e\xcf\x4f\x53\x26\x51\x7b\x7c\x43\x6a\xf2\xcc\x77\x2e\xc8\x3f\x49\x49\x8c\x79\xd3\xc9\x5f\x81\xdd\x1b\x9b\x9b\xd4\xec\x9d\x4e\x86\xa4\x23\xa7\x88\x1c\x11\x28\x97\xd4\x94\x50\x6b\x8e\x00\x23\x5d\x21\x1a\x97\x5c\xab\x48\xc1\x1e\xa2\x2b\xf9\x3a\x5b\x93\x94\x54\xd0\x95\xab\xf9\x66\x64\xf0\xee\x13\xa9\xa0\x5e\xb8\xe2\x39\x3e\x8c\xd7\xb3\x6e\x70\x41\x42\x8e\x28\x88\x50\xb2\x28\x98\xd2\xa4\xe0\xf7\x8c\xbc\x61\x55\x21\x37\x25\xa2\x1c\x2e\x15\x39\xb9\x33\xd4\x58\x85\x70\xc7\x8c\x3e\x0f\xbf\x78\x43\x90\xe2\x32\xd1\x53\x16\x09\xd0\xa4\x00\xc9\x07\xa9\x7c\x3a\xfb\x47\x01\x5a\xfa\xba\x78\xa4\x9b\x68\xd8\xe5\x03\x7b\x60\xea\x92\xdc\x2c\x3f\x48\x73\xeb\x2e\x31\xfd\x18\x56\x27\x8e\xf0\x25\xf9\x01\x8a\x5a\x47\xef\x2e\xba\x82\x6b\x6e\x4b\x6e\x22\x55\xef\x35\x4e\xf9\x3e\xf2\x71\x12\x92\xd0\x92\xeb\x95\xec\xdf\x18\x7f\x00\x49\xf6\x78\x71\xff\x7d\x96\xe9\x2e\x42\x4a\x7e\xc2\x44\x5f\xbb\x24\xfe\xb6\xf6\x75\x67\x27\xe9\x8d\x36\x2c\xd6\x84\xf0\x15\xd0\xe0\xea\xcc\x05\x51\x4c\x57\x52\x68\xd6\xa3\x74\x68\x7b\x1a\x29\x14\xdc\x20\x3a\xf9\xfe\x8d\x37\x69\x2a\xa9\xcd\x9d\xa1\xca\xa4\x72\x95\xde\x06\x01\xc0\x34\x41\x8b\x82\xe5\x84\x97\x25\xcb\x39\x35\xac\xc0\x78\x1f\xe9\xd2\x30\x45\x68\xdf\xab\x93\x29\x46\x03\x19\x86\x9d\x2d\x47\x45\x81\x49\x4d\xe8\xf0\x61\xf4\x24\x1b\xa6\x4a\x2e\xc0\x9d\xe3\x22\x07\x3c\xef\x06\xa6\xc7\x7b\xf8\x30\x5a\x0d\x02\x67\x7f\xbb\xc2\x10\xb2\x87\x84\xaf\x64\x51\xc8\xec\x5e\x93\x5a\x18\x5e\xb8\xa1\x90\xf2\x9e\x64\xb2\xac\x0a\xd8\x9b\x08\xd9\xe9\x9b\xbc\xf9\x9f\xb3\x66\x65\xcf\x6c\x3f\xf4\xd5\x1f\xda\x7f\x82\x3f\x9c\x9b\x47\x95\x7d\x61\xd9\x11\xd4\x6b\x56\xb7\xdb\x69\x87\xd8\x19\x29\x1a\x73\x7c\x29\xed\xc1\x8c\x47\x31\xda\x7a\x88\x8d\x82\x9e\x93\xb7\x5f\x58\xd6\x56\xd3\xc4\x1a\x6e\xeb\xc0\x38\x02\x6c\x02\xf4\x1e\x99\x39\x95\x8e\x73\xa2\x72\x90\xbb\xad\x37\xc2\xaf\x9d\x14\xd8\x6a\xb0\x90\xe1\x3f\x13\x90\x93\x82\x0b\xd0\xaa\x3e\x93\xb9\xcb\x38\xd5\xac\xb9\x94\xa0\x08\x2b\xc0\xdf\x85\x48\xce\x15\x14\x84\xdc\x34\x59\x1b\xbe\xbf\x24\x86\x1f\x67\xbb\x29\x29\x0d\x79\x79\x71\x75\xf1\x6a\xcb\x31\x7f\x61\x2d\xc2\x82\xb9\xb3\x26\x05\xb7\xfb\xdc\xe9\x9d\x35\x08\x78\x59\x15\x1b\x18\x9d\x8b\xfc\x92\x44\x90\x9b\x6c\x37\x9f\x14\xa2\x6a\x11\x46\xd7\x27\x80\x5f\x12\x2d\x89\x51\x34\x14\x7c\x4e\x90\x0d\x72\xac\x58\xa3\x6a\x7f\xf6\xbe\xbc\xf8\x7f\x2f\x2e\x09\x33\xd9\x2b\xf2\x28\xc5\x45\x4a\x8f\xed\xc4\xcd\xc9\x67\xe0\x5c\x6b\x3b\xbb\x91\x35\x11\x8c\x25\x46\x4a\xb2\x2f\x55\xc1\x33\x6e\x8a\x0d\x1c\x64\x44\xd6\xc6\x11\x79\x50\xe3\xd3\xe1\x13\x84\xbe\xfd\xc2\x8d\x8f\xfe\xb5\x3a\xe6\x3b\xd8\x0f\xee\x50\x23\xd4\x9a\xd5\x0f\xec\x6a\xcd\x68\x61\xd6\x29\xb5\xc7\xed\x1a\x10\x52\xcc\xfe\x8b\x29\x09\xc9\xf8\xc2\xcb\xc2\x77\x35\xb9\xf4\xfb\x51\xd8\x6f\x6a\x09\xf3\x44\x98\xd2\x1e\x77\x3f\x33\x84\xb1\x43\x86\x6a\xed\x3f\x3e\x7f\xbe\xfd\x99\x99\x4e\x91\x64\x38\x8b\x8d\xc1\xfa\x3f\x7d\xa8\x22\x38\x01\x99\x5a\x4a\x85\x54\x06\xe9\xfa\x7d\x2d\x35\x72\x04\xc8\xd6\x28\x48\x6d\x1c\xd5\x97\x33\x77\x45\x4a\xf9\x7a\x42\x8c\xec\x47\x6c\x07\xd2\xb2\x9b\xdb\x39\xf9\xcf\x28\x4a\xa0\x61\xab\x94\x5c\xd0\x45\xb1\x69\xb8\x82\x34\x33\xe4\x85\xed\xee\x0b\xab\x89\xed\x3c\xfd\x07\xa3\x39\x53\x29\x5a\xdd\x2a\x31\x46\x93\x2b\x82\x27\x6d\x91\x4e\x8f\x8f\x3d\x90\x6b\x6d\x64\x49\xd6\x4e\x98\x1f\x9b\xa4\x51\xf0\x8e\x4b\x58\xbf\x73\xd8\x11\xce\x9f\x61\x0d\xe0\x8a\x25\x14\x3f\xb6\xcd\xf7\xeb\x09\x15\xd7\xd6\xbe\x76\xe3\xec\xff\xbe\x48\x8c\xd3\xa1\x24\xeb\x0e\xb4\x1d\xe7\x26\x61\x13\x1b\xf8\xe1\x1a\x0c\xb0\x63\x95\x4b\xdb\x11\xc9\xf1\x6e\xe4\x88\xa8\x2c\xb2\xcb\x67\xef\xc7\x04\x5c\x62\x89\x32\x09\x26\x0c\x64\xd8\x8e\x3a\xab\x48\x0a\x31\x40\xb7\x9d\x67\x38\xf0\x39\xc0\x6d\x3b\x72\x3c\x52\x03\x93\x08\x36\x9c\xa7\xff\x60\xea\x17\x27\xc7\xc2\x92\x23\x2c\x15\x42\xaa\xa4\x6c\xa0\xed\x5c\x20\x47\xeb\x08\x69\xf6\x22\x31\xb6\x0d\x54\x89\x66\xea\x21\x9e\x40\xa4\x6d\x47\x2c\x96\x4a\x62\x3c\x4c\xa1\x51\xb1\xf9\x88\x8e\x3d\x86\x42\xea\xd0\x53\x2e\x0c\x5b\x21\x69\x2c\xba\xcf\xa7\x26\x14\x6c\xb3\xa1\x28\x22\xea\x72\xc1\x54\x6a\x72\xa5\x1b\xc0\xad\x05\xd0\x89\xf6\x4a\x10\xf9\xc1\x75\x29\xc0\x4b\xe1\x58\xa7\x62\xc5\xc8\xf7\x69\x37\xa8\xbf\xfc\xeb\xbf\xfe\xcb\xbf\xce\xdd\x47\x37\x71\x63\x82\xdc\x5c\x7f\xb8\xfe\xfb\xdd\xaf\xaf\x81\xb3\x02\xdf\xd5\x2f\xb3\xd6\x3b\x35\xe3\xc2\xcc\xa4\x9a\xb9\xb9\xf9\x81\x18\x85\xd6\x04\x90\xb7\x98\xa0\xc3\xfb\xf8\x1e\x08\xf1\xa4\xdf\xe0\x34\xf0\x56\x70\x9a\x22\xf5\xb6\xaf\xb5\xcc\xfb\x68\x81\xdd\xb0\x4f\xb8\x53\xd3\x14\xfa\x0c\x96\xe7\x53\xdc\xdf\x4c\x56\xdd\xc9\xec\xfe\xa8\x1b\xdc\xc5\xe7\xd7\xb7\x4e\x48\xe7\x12\x47\x85\x77\xb6\x21\xc7\x9a\x8b\x07\x59\x3c\x00\x81\x3d\xf9\xfc\xfa\x16\x06\x62\x0e\xff\x0b\xbc\xa0\x24\x9e\x3a\x31\xb4\x8d\xed\x57\x48\x36\xf3\xd0\x7a\x43\x3a\x0f\x89\x83\xb4\xe0\xda\xf0\x0c\x29\xd7\xf6\xa9\x71\xda\x42\xef\x70\x88\xfa\x57\xbd\x6f\x5e\x7c\x0c\xa0\x7c\x7b\xf5\x4c\xdb\x66\x7e\x9b\xee\xbb\x7a\x26\x08\x4d\x48\xe8\x9e\xce\xd2\xc8\xd6\x3f\x4b\xfd\x19\xea\xb2\x17\xa7\xb3\xf4\xab\x9f\xa5\xcf\xfb\xb4\x48\x78\xa8\x52\xec\xce\xc8\x2a\x19\x0b\x75\x8f\x1f\x8d\x84\x2e\xd8\x52\x2a\x36\x84\x42\x3b\x80\x65\x5e\x33\xdc\xa2\xa2\x02\xb2\xfd\x83\xcf\x51\x76\x41\x49\x1f\x7b\xaf\xeb\x0c\x93\x54\xef\x7d\xd7\x82\x69\x7d\x05\xa0\x67\x5d\x39\x1f\x05\x00\xae\xb5\x62\x97\x76\x34\x59\x09\x63\x83\x2b\x00\xe9\x23\xe5\xed\xc7\x33\x01\x8f\x13\x66\x32\x97\xd0\xe0\xf1\x5f\x1c\x2a\x23\xa4\x69\x26\x64\x08\xab\x66\x8a\xea\x35\x03\xc6\x50\xf6\x85\x1b\x94\xff\xc9\x31\xf8\x53\x2d\x85\x83\x8d\xfc\x04\x71\x29\xec\x7c\x35\x55\x66\x30\xf6\x4d\xfb\x89\xee\x7b\x6f\x65\x7e\x71\xa1\x7b\xa2\x57\x0a\x97\xf4\x58\x31\xc5\x65\x4e\x80\xcb\x24\x97\x8f\x82\x2c\xd8\x8a\x0b\x1d\x56\x99\x7d\xa5\x5f\xb8\x18\x47\xba\x94\xf7\x0c\xf0\xa7\x40\x30\x3c\x27\x9f\x7a\x3c\x70\x3e\x0b\x3a\x93\xa8\x93\x5a\xf6\x60\xfe\x21\x6c\x0f\xc9\x13\xb0\x5c\x6b\x5a\xa0\xb6\x54\xb3\x79\x42\x7e\x8b\xd9\x39\xb8\x08\x89\x30\x0d\x7e\x70\xb7\x91\xfe\x2d\xfc\x1e\xb3\xfd\x0f\x23\xfd\x76\xa9\xc2\xbf\x21\xd7\xd5\xd6\x1a\x0a\x2b\x83\x6b\xbb\x8a\xb3\x75\x3c\x3b\x2e\x99\x82\x08\xa6\x20\x82\xc3\x6d\x0a\x22\x98\x82\x08\xa6\x20\x82\x29\x88\x20\xb2\x4d\x41\x04\x53\x10\xc1\x14\x44\x70\xb0\x4d\x41\x04\xe3\x6d\x0a\x22\xd8\xd7\xa6\x20\x82\xed\x1e\x4d\x41\x04\xfd\x2e\x4d\x41\x04\x11\x6d\x0a\x22\x98\x82\x08\x10\xcf\x4f\x41\x04\xd8\xf6\x0d\x00\x1f\x53\x10\xc1\xa1\xf6\xbc\x61\xa1\x29\x88\x60\x0a\x22\x98\x82\x08\xfe\x79\xcf\xd2\x29\x88\xe0\x79\x9d\xa5\xcf\xfb\xb4\x48\xe4\xb4\x88\x7e\x20\x60\xe8\xb7\xf6\x66\x9e\xc2\x5b\x70\x0b\x18\x1e\xcf\x3c\xf8\x2e\x97\xbd\xec\x73\x27\x3c\x9a\x0f\xa0\x0f\xb4\xba\x52\x6b\x2e\x2b\x3a\x00\xe7\x2d\xc4\x1f\x2f\xf5\x68\x96\x81\x41\xd1\xf2\x4a\xe6\x2d\x72\xd8\x81\x0c\x9d\x77\x23\x4e\x8d\xe2\x0f\x22\x1c\x56\x78\x36\x9c\x30\x02\x23\x44\x6a\xb4\x54\x7c\x30\xed\x2c\x4f\xc2\x05\x23\x30\x41\x40\xf8\xb0\xe8\xe8\x08\x1e\x98\x70\x34\x9c\x03\x0b\x3c\x17\x0e\x38\x86\x01\xe2\x7b\x7a\x16\xfc\xef\xf4\xd8\xdf\x28\xee\xd7\x41\xf1\xb0\xb0\xf7\x6e\xcc\xaf\x8b\xe0\x21\x25\x8e\xe0\x7d\x04\x8f\x87\x9f\x00\xeb\x4b\x72\x97\x27\x1b\x71\x29\x5e\xb3\x84\xd3\xde\x07\xae\x7d\x5e\x2b\xa6\xd7\xb2\x40\xe8\xa8\x9e\x7e\x7a\xcf\x05\x2f\xeb\xd2\x6e\x52\x6d\x95\x0b\x7f\x68\x62\xe2\x30\x73\x1f\xf4\x86\x3b\x71\x1d\x00\x60\x45\xf2\x9c\x29\x96\x83\x44\xbb\x1a\x96\x06\x65\x50\xaf\x29\xdc\x33\x75\x9d\x65\x8c\x41\xed\xf5\xae\xa3\xe0\x5f\xe6\xa1\xf7\x08\x91\x8e\x1d\x97\x6b\xf2\x7d\xfc\x1a\x72\x35\x2e\xe0\x46\xf0\x2f\x7f\x42\xce\x29\xee\x16\x81\x06\x6b\x23\x81\xda\x00\x5d\x61\xfc\x0e\x09\x20\x6d\xda\x21\x8b\xbf\x2c\x8f\x02\xb3\xf6\xae\x8b\xdc\xef\x07\x40\xd9\x06\x62\xc5\x6a\xee\x31\x40\x36\x0d\x5e\x4d\xd4\x4c\xc9\xb0\xea\x38\xa4\x8a\x87\xf9\x46\xe1\xd4\x34\x70\x34\x49\xd3\x8f\x82\xa2\x04\x5f\x37\xee\x00\x20\x7a\x04\xb8\x79\x0c\xb0\x79\x92\x7a\x15\x43\x04\x2f\xd9\x2b\x75\x8c\x87\x24\x19\x90\x3c\xfc\x29\xc7\x41\x6c\x4f\x5c\x5f\x27\x61\xdc\xd3\x40\xc4\x64\x00\x31\x0d\x3c\xc4\x03\x87\xe3\xa0\x21\x6c\x38\xac\x19\x9f\x00\x18\x26\x2e\x04\xbc\x73\x33\xc1\xb1\x79\x8c\x53\xf3\x08\x87\xe6\x38\x30\x88\xf7\x8c\x91\x43\x8e\xcc\xae\x5b\x12\x29\x75\x97\x13\x73\xcb\x25\x89\x97\x79\x9c\x03\xf3\x84\xce\xcb\x14\x10\xf0\x5c\x00\xe0\x09\xc1\xbf\xa4\xb5\x89\x57\xbc\x48\x17\x6e\x82\xda\xe4\x82\x1b\x4e\x8b\x37\xac\xa0\x9b\x3b\x96\x49\x91\x23\x4e\xf9\x01\x65\x77\xb3\xc3\xb4\x13\xe4\xe9\x2a\x71\x1e\xa2\xd6\x35\xbb\xa6\xbe\x62\x09\xcb\x43\x22\x4e\xf0\xd6\xe2\x0d\x19\x0a\xde\x54\xfb\xad\xcf\xc4\xbb\x4a\x9e\xf4\x8a\xe7\xd2\x58\x8e\x9b\xe0\xff\x90\x8f\x44\x2e\x0d\x13\xe4\x25\x17\x61\x8e\x5f\x75\xae\x6c\x98\x7b\x5e\xb8\xb5\x37\x1b\xd1\xca\xf9\xfe\xbb\x20\xf6\xf7\x77\xc9\x06\x77\x82\xd6\xe7\xf0\x9c\x78\xd1\xa7\x74\x9d\x78\x91\xcb\x1a\xe3\x89\x74\xdb\xdd\xbb\x4f\x9c\xf3\xa5\xaf\x67\xbf\x77\xa5\x17\x10\x22\x17\xf6\x44\xb4\x7d\x6d\x76\x3e\x15\x39\xf1\xc9\x94\xcd\x22\x41\xdb\x98\xcf\x75\x91\x24\x84\x5d\x9c\x27\xe4\x22\x22\xdc\x82\x6c\x50\x51\xcd\x51\xa1\x16\xf6\x0d\x08\x99\xa9\x61\x16\x5f\xc5\x63\xb4\x2b\xb4\x22\x3d\xaa\xff\x40\x44\x3f\x2e\x48\x62\xba\x3f\x6c\xb5\xf1\x60\x88\xe9\xfe\x70\xb0\x9d\xec\xfe\xf0\x1c\x2d\x66\xc3\x4b\x26\x6b\x73\x26\x63\xf9\x71\xcd\x51\x1c\x03\x9d\x33\x9c\x97\x4c\x13\x59\x0f\xee\x36\xdf\xfb\x17\xa0\xf2\x96\xbb\xc7\xaa\x3b\x2c\xff\xc9\x2c\x66\xe4\xba\x88\x77\x73\xee\xf0\x4d\x0c\xe9\x16\x9a\xa0\x05\x42\xa3\x4b\x88\x90\x37\x1f\xee\xfe\xfe\xee\xfa\xc7\xb7\xef\xe6\xe4\x2d\xcd\xd6\x5d\x5a\x0c\x41\x28\x1c\x0d\x10\xdc\xb4\xa6\x0f\xb1\xdb\x8f\x92\x5a\xf0\x7f\xd4\xae\x1e\x0c\x79\xd9\xbc\xe1\x55\x72\xed\x05\xa4\x46\xb6\x3b\x39\x72\x83\xed\xac\x1f\x0a\xcf\x7b\xa8\x5a\x6a\x06\xc5\xaf\x10\xb7\xd1\x8e\x7e\x7e\x6b\x05\x38\x6b\x08\x82\xda\xd6\x4c\x31\xb2\xe2\x0f\x1e\xec\x42\x15\xc5\xa0\x79\x00\xf9\x61\x3b\xd9\xf5\xcc\xa5\x20\x74\x01\x90\xf8\x9a\x11\xc1\x8c\xdd\x3d\x8d\x9f\x43\x8a\xf8\x65\xd0\x4e\x7b\xad\x99\xbe\x24\x8b\x1a\x8a\x4e\x54\x8a\x97\x54\xf1\x62\xd3\x7d\x25\x8d\xce\xb3\xfd\x20\x83\x3d\xb9\x19\x0e\xc2\x9b\x8f\x6f\xef\xc8\x87\x8f\x9f\x49\xa5\x80\x74\x22\x56\x89\xae\xa9\x71\x52\x60\x52\x16\xcc\xca\xf5\x75\xfc\xe7\xe4\x5a\x6c\xdc\x3f\x62\xb4\x21\xd7\xc4\x1a\x91\x4c\x58\x51\xfe\x88\x0d\x45\x7f\x5e\x7c\x37\x87\xff\x7b\x61\x47\x5f\x31\x1d\x5f\xee\xd4\x07\x69\x64\x5b\x61\x5f\xee\x2c\xe7\x8b\x02\xbd\xae\xfc\xfc\x7e\x85\x0a\xa2\x4d\xf0\xda\xad\x1d\xdc\x4e\x05\x51\x1a\x3a\x15\x6f\x42\x5b\x09\xae\x06\x2e\x17\xab\x22\x21\xac\x33\xb1\x8a\x68\xfb\x01\xc9\x95\xf1\xda\xb3\x37\x44\xa8\x7a\x05\x81\x8c\x4a\x6f\x0b\xed\xdf\xdc\x86\x85\x35\x77\x05\xad\xca\x23\xca\xcc\x43\xa7\x9c\xbb\xfa\x92\x7c\x47\xfe\x4a\xbe\x90\xbf\x82\x49\xf7\x17\xcc\x19\x9e\x76\x52\xa6\x5d\x5b\xdd\xdd\xe8\xe6\x36\x79\x46\x7e\xb3\xea\xc0\xca\xb0\x23\x69\x24\x59\x70\x91\xc3\xf0\xb2\x2f\x86\x29\x6c\x3c\x94\x9f\xd5\xb3\xd7\x68\xb4\x1d\x7e\x36\x0b\xd1\x79\xb5\x6f\x96\xdd\xea\x57\xa6\xb7\x14\x51\x22\x5d\x39\xea\x03\x4b\xd1\xbe\xca\xde\x63\x3f\x20\x15\x07\x71\xaa\x7a\x67\x2f\x4b\x6a\xb2\x75\x5f\x4b\xe1\x2e\x1e\xef\xed\x12\x6a\x69\x74\x48\x2e\xc1\x53\xe1\x42\xd6\xd6\x1c\x85\xeb\x3f\xed\x06\xc2\x02\xe5\xbd\x75\xb4\x7f\xd6\x91\x37\xf4\xfe\xa5\x0f\x7c\x6d\xde\x06\x6c\x29\xa1\x90\x5b\x31\xf7\x06\xa9\xfd\xc0\xbc\x73\x6c\xa4\x58\xa4\xbe\x9b\x5d\xbb\xd4\xdf\x72\x1b\x77\x26\xec\xa3\x35\xc5\x5d\x79\x33\x2a\x5c\x24\xf7\x92\x29\xe5\xa2\x1b\x17\x1b\x40\x63\x79\x86\x2b\x1b\x95\xa4\x47\x2a\x25\x8d\xcc\x24\xaa\x9a\x66\x1f\x80\xf6\x02\x60\x18\x9c\xab\x2e\xa5\xc4\xed\x2f\x6f\x6e\x2f\xc9\xe7\xd7\xb7\x50\x36\xef\xee\xf5\xe7\xdb\xfe\x4d\xf2\xc5\xe7\xd7\xb7\x2f\xce\x3c\x18\xd8\x0b\xff\xac\x6f\x12\xc4\x5a\x9f\xe7\xad\xc2\xa9\x18\xcd\xf9\xd9\x32\x16\xfc\xb2\x8c\x1e\x50\xdf\x97\xf9\xce\xd4\x85\x52\x3e\xb0\xdc\x19\xb0\x38\xb9\x4c\xe4\x95\xe4\xd6\x76\xdc\x91\xf5\x90\x6a\xd9\xa2\x19\xd3\xa6\xac\x87\xb6\x4d\x59\x0f\x53\xd6\xc3\x94\xf5\x30\x65\x3d\x4c\x59\x0f\x31\xcf\x4c\x59\x0f\x83\x36\x65\x3d\x8c\xb5\x29\xeb\x61\xca\x7a\x88\x6c\x53\xd6\x43\xcc\xf7\x4d\x59\x0f\x83\x36\x65\x3d\x8c\xb4\x29\xeb\xe1\xc0\x83\x53\xd6\xc3\x68\xfb\xe7\x89\x5a\x9a\xb2\x1e\xa6\xac\x07\xd7\xa6\xac\x87\xed\x36\x65\x3d\xfc\x13\xc4\x70\x4d\x59\x0f\xfb\xda\x94\xf5\x30\x65\x3d\x8c\xb6\x29\xeb\x61\xca\x7a\x98\xb2\x1e\xfa\xed\x9f\xe7\xfe\x30\x65\x3d\x4c\x59\x0f\xbd\x47\xa6\xac\x87\xdf\xbf\xc5\x8c\x5c\x17\xa1\x0c\x65\x4a\x8c\xfe\xc5\x6b\x59\x56\xb5\x61\xe4\x53\x10\xd2\x2c\x7b\xb2\xd8\x40\x0c\x5b\xe4\x87\x76\x14\xca\xf1\x34\x9a\x99\x14\x4b\xbe\xaa\x15\x04\xc8\x5f\xb9\x5a\x85\xb3\xcc\x75\x75\xd6\x7c\xef\xac\x79\xe7\xd5\xb9\x82\x4a\x0a\x5e\xf2\xd8\xe4\x07\xd2\xcb\x2a\xb8\x4d\x3a\xe6\x93\x8e\x8d\xfe\x8c\xbe\x83\x2e\x77\x5c\xf9\x76\x97\x96\xf4\x0b\xf2\x42\x43\x4b\x59\xbb\xe2\x90\x7e\xdc\xdb\x75\xe6\x80\x8b\x30\xad\x28\xc3\xee\x2b\x2f\x00\x92\xa6\x75\x3d\x6c\xf3\x6d\xad\x83\x4f\xbe\xd3\xc3\x95\x80\xbe\xda\x1e\x5a\x09\x41\x59\xcc\xc9\xcd\x12\x21\xb2\xe9\x1b\xd7\x44\x96\xdc\x58\xcb\xdc\x5e\xb4\x68\x37\xb8\x07\x55\xda\xaf\x6b\x8e\xfa\x1d\x00\x11\x71\xd4\xb8\xca\xaf\x09\xe1\x22\x9d\x58\x5e\x69\xd6\x4c\x3d\x72\x0d\x36\x33\x15\xed\xfd\x01\xd6\xe7\x2c\x67\x4b\x2e\x50\x55\xa0\xe0\x70\x7b\x2e\x6a\x91\x3c\x01\x7b\xb4\x66\x59\xad\xb8\xd9\xbc\x96\xc2\xb0\x2f\x91\xd6\x7b\x7f\x41\xdf\x79\x11\x44\x56\x2e\xca\x28\x5c\x3b\x5c\xc8\x5d\xec\x5e\xae\x05\x44\x51\xa3\x07\xbf\x92\x05\xcf\x36\x57\xe1\x43\x60\x94\xd9\x17\x73\x15\xf9\xde\xb8\xb7\x19\xaa\xef\xdb\x79\x66\x33\x6b\xba\xb4\xd3\xb9\xf5\xee\x73\x1d\x7b\xa0\xe0\x6f\x15\x7f\xe0\x05\x5b\xb1\xb7\x3a\xa3\x05\xac\xb9\x54\x83\xf3\x7a\x8f\x3c\xd8\xee\x4a\x16\x18\xe7\xd1\xe3\x9a\x41\x05\x63\x6a\xbf\x0b\xae\x34\x19\x15\x64\x45\xb9\x20\xa5\x1d\xe3\x2a\xbc\x06\x23\xd4\xac\xed\xae\x36\x9a\x54\x54\x31\x61\x82\x68\x9f\x46\xb4\x90\xb2\xf0\x11\x83\x28\x0d\x12\xbe\x2e\x04\xe7\x0a\xf9\x77\xc1\x1e\xff\x6e\x7b\xa8\xc9\xb2\xa0\xab\x10\x02\x8c\xd1\x4a\xcc\x6c\xdd\xe1\xda\xee\xee\x1b\x68\x9c\x7b\xca\x5e\x93\x08\x2d\x1e\xe9\x46\xdb\xe1\x1e\xbe\x8d\xeb\x1f\xc8\xf7\xaf\x10\x22\xed\x9e\xa3\x9a\x34\xfd\xca\xc9\x9f\x5e\x81\x87\xfd\xf5\xf5\xed\xdf\xef\xfe\xf3\xee\xef\xd7\x6f\xde\xdf\x7c\xc0\x2a\x2b\x3b\x2b\x8c\xc6\x7e\x5a\x46\x2b\xba\xe0\x05\xc7\x9d\xc4\x5b\xf8\x79\x57\x0c\x1c\x06\x79\x7e\x95\x2b\x54\x41\x72\x18\x51\x55\x0b\xc8\x90\x6c\xb3\x64\xfa\x37\x27\x1c\x6e\x11\x12\x2c\x61\x71\x2c\xfb\x9d\x5c\x29\x2a\x4c\x30\xe7\xd3\xc0\x10\x55\x0b\x7b\xc1\x3b\x77\x54\x14\xcd\x8f\x09\x3b\xbe\xce\x73\x96\xf7\x3e\xfd\x89\xe3\x68\x5e\x87\x57\x6f\xda\x9c\x4e\x72\xfb\xf1\xee\xe6\xff\xc2\xc7\xd2\xf4\x56\xd9\xa6\x4a\x0b\x61\x78\xa2\x48\x4e\x42\xec\x06\x38\x62\xe6\x3e\xf9\xfc\x87\x69\xee\xc8\x37\x10\x85\xdb\x9c\xaf\xa9\x28\xd2\xa7\x5a\xf4\x79\x11\x5a\x89\xa4\x94\x39\xaa\xee\xfb\xad\x3b\xf8\x98\x1e\xc8\xe9\x24\x1f\x52\xc5\x88\xfd\x89\x30\x9c\x16\xa8\xe3\xdb\xde\x6d\x1e\x68\xc1\x5c\x48\x23\x44\xf9\xfb\x93\xb7\x8f\xe2\x63\xec\x0c\x49\x96\xb4\xd0\x88\x6f\x4c\x39\xeb\xac\x39\xf0\xde\x5e\xda\x12\x67\xa8\x79\x9e\xe4\x4c\x48\xe3\x6f\x8e\xb6\x27\x44\x62\xae\x79\x56\x0e\x71\xb7\xc7\x4e\x08\x45\xcf\x98\x00\x13\x2b\xe5\xa8\xe3\x3a\x8c\xff\x6d\xd3\x5b\xf0\x5f\x02\xe5\xc2\xb1\x47\x5d\x7b\x9f\xb4\x3d\x56\x8c\xe6\x52\xa0\xd6\x4e\x45\xcd\xda\xe1\x85\x25\xd5\xf7\x2c\x77\x7f\xf0\xf6\xa4\xbf\x35\x63\x7b\xd9\x7c\xe8\x67\x3b\x13\x4b\x46\x4d\xad\x98\xb3\x23\x1d\x86\xca\x04\x5d\x14\xf1\x59\x5e\x89\xa9\x81\x34\xff\x28\x8a\xcd\x27\x29\xcd\x4f\x4d\x6a\x4b\xe2\x42\xfb\xcd\xdb\xf2\x90\x2b\xdb\x0f\xbe\xc0\x04\xa0\xda\x3e\xcd\x20\x79\x0b\x36\x69\x27\xe3\xa6\x01\xf8\xb9\x7e\x8a\x8d\xa7\x6a\x71\xad\x7f\x56\xb2\x46\x1c\x87\x5b\x26\xe6\xcf\x37\x6f\x40\xdf\xd4\x4e\xd7\x30\x61\xd4\x06\x92\xfc\x10\x23\xb2\xc5\x66\xd3\xdc\x10\x7e\xb1\xbb\x63\xb0\xca\x31\xb7\x83\x25\xa9\x85\x66\x66\x4e\xde\xd3\x0d\xa1\x85\x86\x85\xe7\x02\xa2\xc9\x2d\x44\x79\x74\xef\xf9\x73\x82\x73\x0c\x79\x41\x0b\x69\xd6\x64\x20\x0a\x36\xd3\xf6\x1b\x30\x41\xef\x76\x48\x1c\xac\xd0\x92\xfb\x70\xb1\xf5\x22\x43\xef\x51\x06\x48\xa5\x58\xc6\x72\x26\x32\xc4\xea\xea\x60\x09\x7f\xf9\xf3\x59\x61\x7d\x58\x93\x1f\xa4\xb0\x1b\x36\x71\x55\xde\x88\x9c\x67\xd4\x9d\x03\xd4\xf4\x57\x16\x62\x9c\x20\xcf\xdc\xdf\x05\x29\x64\x39\xc1\x76\xad\x35\x53\xc0\x63\x60\xaf\x9d\xd8\x9c\xbe\xbf\xd5\x0b\x56\x30\xe3\x2e\xd2\xc0\x96\x40\x8d\x4b\x13\xe4\x25\x5d\x31\x42\x4d\x58\xec\xb8\x53\x9a\x09\x6d\x95\xab\x73\x20\x1a\x92\x4b\xa6\x9b\xec\x39\xaa\xc9\x2f\x37\x6f\xc8\x77\x08\x89\x2f\xed\x97\xbe\x82\x25\xbc\xa4\xbc\x80\x24\x02\x43\x95\x19\xde\xac\x31\x7b\xc5\x77\x0b\x86\x0e\xf6\x24\x91\xca\x29\xb9\x4b\x22\x24\xd1\x75\xb6\x0e\x23\x82\xf3\x00\x84\xbc\x64\x1f\x59\x05\x8e\xfe\x69\xb3\xfb\x96\xb2\xd9\x93\x8f\x92\x5f\x34\x53\x47\x9c\x24\xbf\x9c\xf5\x24\xe9\xba\x2b\xec\x1e\x4e\x71\xad\xdb\x19\x71\x1b\xb5\x64\x86\xe6\xd4\x50\x7f\xc2\x34\xb9\xd3\x18\xe4\x78\x5a\xa4\xbe\x3d\xef\x13\x49\xb3\x77\x5c\xd4\x5f\x5c\x48\xd2\x31\xce\xb8\xbb\xb7\x20\x88\x64\x61\x98\x60\xea\x69\x55\x15\x1c\x85\xc6\xf8\x10\xa6\x0e\x84\x7d\xd3\x5b\x84\x97\xc9\x47\x5e\x30\xb4\x40\xa5\xd2\xa2\x90\xf6\x18\x25\x94\x28\x2a\x72\x59\x0e\x3f\x00\x21\xd8\x5e\x4b\x58\x8f\x61\x70\xbe\x6b\x03\x60\x6e\x17\xbb\xb7\xca\xa1\x0d\x80\xf1\xed\xed\xde\x2a\xbb\x36\x00\x0a\x50\xde\xbd\x55\x92\x36\x40\x9a\xd3\xb2\x60\x0f\x0c\x45\x19\x33\x64\x49\xb4\xcf\xdb\xeb\x49\x58\x0b\x20\x90\x14\x74\xc1\xb0\x89\xf8\x60\xac\xb8\xd5\xaf\xb7\xd7\x74\x82\x2f\x09\xed\x84\x52\xb2\x38\x26\xdd\xe2\x93\x2c\x20\xe2\x87\x36\x83\x61\x05\x7e\xa3\x63\x01\x8f\xa5\x8f\x05\xdc\xf1\x7b\x63\x01\xfe\x97\x6f\x73\x2c\x6a\x94\x1d\x43\x86\x63\x61\xcd\xa0\xfe\x58\x58\x81\xdf\xe4\x58\x24\x38\x5c\x1f\xb9\xc8\xe5\xa3\x3e\xfe\xb8\xfc\xcd\x09\x0a\x9a\x36\xb3\xaa\xdd\x70\xb1\x42\xa5\xb2\xb8\xc3\x15\xa0\xaf\xa2\xe8\xf9\xf1\x06\x67\x26\xd2\x0a\x0a\xa0\x7e\x60\xf1\xdc\x71\x5a\x24\x5c\x61\x6a\xed\x62\x53\xa6\x53\xec\x70\x5b\x95\x9a\xbe\x56\xf6\x5d\x86\xd3\xe2\xae\xc2\x50\x29\x91\xe1\x5a\xfb\xf9\xfd\xdd\x75\x5f\x98\xdd\xbc\x8f\x6b\x86\x0a\x16\x23\x7e\x61\x58\x69\x84\xe6\x25\xd7\x9a\x4b\x41\x1e\xd9\x62\x2d\xe5\x3d\x79\x19\xa2\x28\x56\xdc\xac\xeb\xc5\x3c\x93\x65\x27\xa0\x62\xa6\xf9\x4a\x5f\xf9\x9d\x33\xb3\x5f\x87\xc1\xab\x09\x4c\x4a\xc1\x05\xd3\x8d\x82\x00\x82\x56\x7f\x19\x82\x2e\x65\xcd\x17\x22\x25\xdb\x25\xe2\x79\xf8\x1c\x26\xbb\x63\xc0\x3e\xe0\x93\x9d\x21\xa5\xdb\x3b\x98\x5d\x7a\xb7\xd5\x98\x45\xb5\xa6\x33\x67\x52\xe0\x89\x68\xb8\x76\x94\x58\x6b\x29\xa4\x8f\x08\x75\x59\xc2\xde\x11\xe4\xfc\xcd\x09\x73\xea\x35\x11\x8c\x63\xd7\x8f\xfd\x24\x87\xd1\xf6\x5a\xff\x80\x26\x0a\x18\x59\xef\x10\xfc\x8e\x66\x67\x82\x10\x91\x4e\x9c\xff\x60\x99\xc1\xc2\xc1\x8a\x84\xab\xf9\xb4\x2a\xc6\x5b\xe3\x6f\x39\x72\x31\x80\xdf\xc5\x8b\xb1\x9a\x3d\x1c\xba\x46\x22\x47\x64\xdb\x6b\xb3\xe5\x8b\x41\x4a\xdc\xe9\xb9\xb1\x02\xc1\x9a\x4a\x39\xb9\x88\x3b\xbd\x0e\x7b\x70\xec\xb5\x14\x29\x33\xc2\x8b\x83\x72\xe2\x90\xb3\x3b\x72\x48\xb4\x33\x07\x2b\x74\x68\x09\xec\xdf\xcb\xd8\x41\x16\xb9\x23\x91\x3b\xb8\x9d\x91\x42\xdd\xe6\xef\x6e\xe7\x4f\xdd\x8d\x15\xf6\x35\xf6\x6c\x7b\x1a\x2d\x70\xf6\x20\x58\x97\x3a\x9a\xcc\x47\x7a\xd7\x79\x9e\xf0\x2d\x50\x26\xf2\x3b\x6f\x65\xee\xd2\xdb\x9b\x34\x5b\x28\x48\x00\xa9\xf8\xfc\xbf\x82\xbd\x8c\xb5\xe3\x85\x74\x51\xd2\x3e\x3b\xde\x85\x5d\x38\xf2\xc6\x9c\xd4\xc2\xf0\x22\xa0\xbc\x65\x55\x58\x13\x2d\xd6\x59\xd8\xe9\xa5\x43\x89\xd6\x5c\x77\x69\x4e\x2f\xc3\x6d\x01\x8c\xfe\x48\xa9\xc0\xba\xea\xf3\xfb\x2f\xc9\xff\xa9\xb5\x21\xb4\x09\xd3\x0c\xe9\xbe\xb7\xcd\x4b\xe2\xfd\xd0\xb0\x39\x3d\x91\x31\xb0\x1f\x19\x69\x3b\xfb\xc0\x73\x46\x72\xbe\x5c\xb2\x10\x5e\x1a\x1d\xf4\x59\x51\x45\x4b\x66\x20\x94\xc5\xe1\x45\x0b\xb6\xe2\x2e\x7a\x50\x2e\x09\xb5\x9f\x7e\x71\xa1\xdb\x7c\xd4\xd8\x19\x83\x38\x44\x6e\x48\xc9\x57\x6b\x77\xe3\x20\x94\x14\x52\xac\x20\x9b\xcb\x76\xbc\x90\x34\x27\x56\xa5\x47\x4a\x94\x8a\x3c\x52\x55\x12\x4a\x32\x9a\xad\x01\xcb\xa3\x82\xe4\xb5\x02\x4a\x3b\xc3\x68\xbe\x99\x69\x43\x8d\xbd\xed\x31\x17\xc5\x8e\x1d\xd7\x61\x62\x11\xfc\x9d\xbb\x3c\x63\xab\x09\x91\x0a\xc6\x47\x4c\x04\x43\xbc\xb7\xc1\x7a\x26\x08\x26\xd5\x65\x22\xce\x9d\x88\x73\x23\xdb\x44\x9c\x3b\x11\xe7\x4e\xc4\xb9\x13\x71\xee\x44\x9c\x3b\x11\xe7\x4e\xc4\xb9\xe3\x6d\x22\xce\x9d\x88\x73\x27\xe2\xdc\x98\x36\x11\xe7\x92\x89\x38\x77\x22\xce\xed\xb5\x89\x38\x37\xa6\x3d\x0b\xe2\xab\x89\x38\x77\x22\xce\x75\x6d\x22\xce\xdd\x6e\x13\x71\xee\x3f\x01\x0d\xd8\x44\x9c\xbb\xaf\x4d\xc4\xb9\x13\x71\xee\x68\x9b\x88\x73\x27\xe2\xdc\x89\x38\xb7\xdf\xfe\x79\xee\x0f\x13\x71\xee\x44\x9c\xdb\x7b\x64\x22\xce\xfd\xfd\x5b\xcc\xe8\x70\xac\x9c\x47\x52\xda\xc5\xb0\x56\xf8\x00\x86\x90\xe5\x17\xf9\x9d\x94\x2c\xea\xe5\x92\x29\xb0\x97\xa0\x47\x5b\x58\x38\x96\x7f\x2b\x04\x49\x71\x77\xe2\x6b\x66\x2e\x81\x22\xc3\x27\x57\x74\x5f\x12\x29\x31\xeb\xd7\xac\xf6\xd4\x70\x8a\x69\xa0\xd6\x10\xe4\xed\xc7\x9f\x9a\xf5\x1b\x7b\x85\x45\x11\x72\x60\x33\xa8\xe1\x1b\x3f\x8a\x2c\x25\xcc\xae\x9d\xde\x1d\x73\x80\x23\x9b\xcc\x0a\xa9\x5d\xec\x85\x1b\xf4\x6c\x4d\x85\x60\x85\xd7\x1a\xdc\xc0\x6d\x79\xc1\x98\x20\xb2\x62\xf1\x0c\xa2\x8b\x0d\xa1\x44\x73\xb1\x2a\x18\xa1\xc6\xd0\x6c\x3d\xb7\xbd\x16\x61\x6a\x3d\x83\x5f\xf3\xde\xd8\xcb\x8e\x51\x8c\x96\x6e\x8a\x15\x2b\x29\x77\xdd\x22\x34\x53\x52\x6b\x52\xd6\x85\xe1\x55\xf3\xca\x58\xa1\x0c\xf2\x36\x5c\x7e\x50\x33\x2d\x10\x96\xc1\x5c\x30\x01\xb0\x3e\x60\xfa\xc9\xb5\x1f\x2e\x22\xbb\x4c\x52\x70\xbf\xb8\x04\xba\xd7\xb2\x32\x1b\x17\x74\x18\x7b\x3c\xac\x19\x59\x72\xa5\x0d\xc9\x0a\x0e\xe6\x2d\x7c\xa3\xcb\x11\x83\xbe\x5d\xc2\x1d\xc6\xac\x59\x74\x02\x3f\x8c\xa0\xf6\x43\x28\x72\xb0\x23\x2a\xa3\x21\xa0\xae\x89\x88\x64\xfe\x85\x91\x42\x73\xae\xbd\xe5\xa9\x2f\x09\x0d\x8c\x47\x6e\x61\x86\xb9\x87\x45\x97\x23\xc2\x27\x42\x4f\xfd\x83\x9d\xae\x75\x28\x1f\xdb\x78\x49\xac\x1a\x02\x82\xa2\xb0\xdd\x2f\xbb\x1c\xbf\x21\x22\x3d\xfa\x0e\x0c\x81\x27\x5b\xaa\x0c\x16\xac\x60\x0f\x76\x97\xb2\x8c\xd9\xcb\x75\x34\xcd\x42\x57\x73\x35\x9d\x3c\x8b\x4a\x32\x4c\x95\x5c\x40\xd0\xe3\x7b\xa6\x35\x5d\xb1\xdb\x68\x00\x63\xdf\x95\x04\x30\x8c\x76\x19\xc0\x22\x8e\x4e\xbd\x30\xb2\xf3\x5c\x1b\x78\x75\xa1\xbb\x5d\x25\xa5\xeb\x6b\xa4\xcc\x90\x77\xf7\xa8\xb8\x31\x0c\x96\x23\xf0\x7f\x01\x9a\x39\x4c\xb7\xbc\xb8\x88\x9d\xf7\x2e\xa3\x93\x1f\xbc\xee\x2b\xac\x8d\x20\x72\x17\xe0\x14\x1d\x57\xbb\x50\x9c\x2d\xc9\x92\x0b\x5a\xf8\xf8\xa5\x4b\xc7\x99\x42\xdd\xe5\x5b\x6b\x7b\xd9\x94\x22\x84\xb8\x44\x8a\xf5\xe3\x35\x27\xbf\xf9\xa1\x30\xaa\x16\x19\x6d\x19\x38\x89\x90\x39\x23\x7c\x49\x56\x10\xf7\x14\xed\x64\x58\x53\x41\xfe\xfc\xdd\xff\xef\x2f\x64\xb1\xb1\xb6\x1b\x80\x92\x46\x1a\x5a\x84\x57\x92\x82\x89\x95\x5d\x0f\xa0\xae\x63\xcd\x8f\x5e\x12\x67\x33\x7f\xc0\x7b\xef\x06\xf4\xfb\x3f\xdd\x2f\xd0\x5c\x77\x46\x92\xab\x9c\x3d\x5c\x75\x56\xd2\xac\x90\xab\x5d\xb5\x01\xe2\xcc\x48\xe4\xb5\x70\xc7\x66\x03\xfa\xe6\x84\xed\x16\xc8\x8f\xc8\x5a\x3e\x3a\x1e\xbc\xe4\xdd\xd1\x86\xb8\x56\xb2\xaa\x0b\xe7\xd4\xfe\x89\x17\x9e\x1f\xa2\xd6\xac\x97\x6e\x18\x29\xd5\x5e\x6e\x77\xea\x16\x70\xf2\xfa\x17\x25\x25\x0e\xb9\x6d\xd1\xac\x2f\xe9\xb3\x67\xbc\x9b\xb1\x61\x33\xaa\x55\xb4\x69\xfa\x13\x2d\x8a\x05\xcd\xee\x3f\xcb\x77\x72\xa5\x3f\x8a\xb7\x4a\x49\xd5\xff\xfa\x82\xda\x53\x78\x5d\x8b\xfb\xf8\xef\x6f\x4f\x94\x42\xae\xec\x6d\xaa\xaa\x4d\x88\xe6\x4f\x9f\x2e\xab\x75\x5a\x73\xc2\x1f\xff\x9d\x77\xb1\x2f\xb0\x47\x1e\xb9\x89\x35\x86\xa8\x20\xcc\x7e\xb1\xdb\xbd\xdd\xbe\xea\xee\x96\xfb\xd3\x77\x7f\xfe\xdf\xd1\xa6\xa0\xb1\xf7\x47\x45\xfe\xf7\x77\x10\x28\xac\x2f\x9d\x52\x87\xd3\xd0\x1a\x59\x25\x2d\x0a\xa6\x52\x36\xb0\x5d\x98\xbb\x36\xec\x59\xf6\xab\x49\xd9\x9a\x27\xbe\x88\x7d\xfe\xfc\x9f\x70\x0b\xe3\x46\xb3\x62\x79\xe9\xb2\xd0\x1a\xae\xc6\x0b\x30\x36\x2e\x50\x67\x8c\xb5\x6d\x53\x39\x08\xb1\xf6\xc5\x83\x2c\xea\x92\xbd\x61\x0f\x3c\xad\x14\x4c\xef\xf9\x10\x83\x5e\x70\x0d\x69\x87\x8b\x42\x66\xb1\xfb\x31\xf7\x22\x3a\x91\x4c\xfe\xe4\xeb\xf8\xce\x7c\xde\x46\xfc\x25\x99\x99\x26\xb7\x23\x6e\xfc\x50\xf1\x5d\x7b\x47\xa2\x1b\xd9\x45\x4a\x5a\x55\x18\xb7\x24\xa4\xe7\x28\xfa\xe8\x86\xcf\x0f\x0c\xe8\x0b\x2e\xba\x76\x70\xac\xf6\x4c\xf1\x80\xbb\x97\xc6\x9b\x9a\xe1\xa9\xce\x78\xb4\x22\xc2\xb2\xa8\xe0\x7f\x03\xee\x84\x72\x31\x6e\x91\x89\x35\x7c\x82\xcd\xd8\x44\xa7\x70\xb9\xb6\x60\x30\x2b\xa0\x37\x31\xce\xb2\x24\x37\x33\x36\x2e\xae\x37\x8a\x22\xf8\x75\x49\x49\x8d\xb7\xba\xbd\x73\x1a\xe7\x91\x27\x15\x53\x9a\x6b\x6b\x22\xfc\x0a\x2b\xf5\x75\x41\x79\x19\xbc\x46\x95\x44\x31\x5f\xa5\x10\xc0\xe2\xbc\xbb\xb3\xce\xfa\x89\x7e\x04\x11\xb3\x96\x98\xb4\x19\x1b\x6d\xe6\x94\x01\xd0\xee\xa6\x68\xd5\x5b\x99\x7b\x11\xa0\x10\x1d\x19\xf2\x8e\xab\x50\xca\x4d\x28\xf1\x68\x4e\x57\x8c\xbf\xb6\x63\xd1\xd7\x8b\xf6\x2f\x68\xc5\xe8\xa4\x3d\xb1\x3a\x84\xae\x1e\xa5\x0d\x41\x0f\xfa\x4e\xf7\x95\x19\x32\x59\xba\xbd\x7c\xbb\x05\xd2\xb9\x1e\xf8\x3b\xf3\x9c\x60\x91\x77\x97\xa9\xe4\xbb\x44\x2e\x7e\xb8\x38\xbb\x4e\x74\x03\xaa\x64\x45\x57\xc8\x12\x31\x83\x71\x1d\x0a\x22\x39\x73\xa6\x3b\x32\xf4\xd9\x5e\xd3\x40\x96\xcb\x41\xae\xbc\x44\x96\xb7\xd4\x42\x6b\x89\x1c\x54\x07\xf8\x86\x69\xf6\x17\x01\x97\xee\xfc\x48\x37\x84\x2a\x59\xe3\xb0\x1a\xe2\xfc\xb5\x8d\x7b\xfe\xfd\xe0\xe3\x3f\x48\x81\x26\x10\x71\x5c\x47\x7d\x76\x00\x30\x9b\xb8\x20\xdf\xcf\xbf\xff\xee\x79\x1f\x8f\xd0\xef\xc1\xf1\xf8\x21\xe9\x78\x74\x7a\xe5\xec\x5f\x1b\x88\xd0\x93\xbf\xf8\xbd\x77\x8c\xb5\xec\xe5\xdc\x73\x20\xa3\x3e\x18\x1e\x7f\x54\xdc\xb0\x4e\x99\xb2\x97\x70\xd1\xb0\xf7\xc2\x0e\x13\xc7\x2b\xdc\x0a\xed\xe2\x91\x48\xee\xf4\x34\xca\x5b\x42\x74\xbd\x38\xa9\x6e\xf6\x8a\xd5\x6e\xfc\x44\xd5\xdc\x4d\x48\x1d\xaa\x69\x94\xc8\x46\xa5\x77\x87\xf5\xc5\x0b\xf2\xd2\x49\xbd\xd0\x90\x0d\x8b\x9a\xa2\xa4\x65\xeb\x87\xf8\xed\x97\x0a\xc5\xc8\xd7\x1b\xe6\xb7\x5f\x2a\x0a\xfe\xd6\x6a\xe7\x78\xa3\xc6\x05\x94\x72\xc4\x78\xa3\x6f\x05\x61\xbc\x7f\x64\x6b\xfa\xc0\x20\x0b\x98\x17\x54\x15\x1b\x3b\xf0\x77\x6e\x14\x70\x42\x6b\x43\x98\x78\xe0\x4a\x0a\x88\x80\x7a\xa0\x8a\x03\xd9\x89\x62\x40\xeb\x60\xef\xbc\x7f\x7c\xf9\xeb\xf5\x27\x88\xbd\xc0\xf1\x8d\x39\xb6\x0c\x3f\xaa\xb5\xe6\x62\xb5\x35\x1a\x9d\x57\xa7\xef\xe3\x1d\x0b\x2e\x8c\x85\x5d\x11\xb8\x3e\x8b\x3c\x3c\x0b\xfd\x2f\x6b\x53\xd3\x02\x12\xad\xb3\xa2\xd6\xfc\xc1\x73\xd5\xe0\x96\xc3\x8e\x93\xeb\x5f\xcf\xbc\x29\xf0\x37\x9a\xc6\x8a\xfc\x06\x2f\x34\x3e\x91\xff\x0d\x8f\xdc\xff\x03\x8a\x82\x76\x41\x6e\x31\x02\x20\x48\x99\xc0\xf0\xd9\x43\xaf\x1c\xa0\xf6\x0b\x8d\xac\x4f\xd1\x25\x7d\xf4\x6e\x50\x4f\x6e\xe2\xc2\x64\x5d\x4d\xc5\x3c\x35\xf4\x01\x58\xae\x9e\xc6\x21\x1a\xbf\x22\x23\x57\x16\x62\x4d\xc5\xae\xa6\x26\x30\x68\xac\x93\xfd\x2a\x6d\x59\xa8\xdd\xe9\x1d\x3f\xae\x8a\x29\x28\x54\x77\xaf\x8d\xd5\xf7\x40\x58\xc3\x05\x51\x4c\x57\x52\x68\xd6\x37\xd2\xdb\x20\x53\xf6\xc0\x84\xd1\x61\xde\x46\xc5\xc6\xcf\x2b\xe6\xfa\x59\x49\x6d\x80\x5c\x26\x66\xcf\xf5\xd1\xde\xdb\xf0\x28\x60\xfb\xb4\x28\xec\x0a\x2e\x4b\x96\x73\x6a\x58\xb1\x41\x24\xca\xd3\x3e\xa0\x9f\x39\xde\x05\x4f\xaa\xc4\xc8\x9a\x8a\xbc\x60\xca\xb3\x2a\xc5\x2d\xea\x61\x90\x40\x00\x5b\x5c\xfc\x41\x1b\x33\x40\x68\x96\x49\x95\xc7\xea\x64\x23\xa1\x18\xa7\x7f\x9c\xb8\xd2\xab\x73\xf2\x11\x6e\x5c\x9d\x15\xe3\xfc\x89\x51\x22\xdb\x6e\x82\x33\x56\x77\xc2\x1c\x80\x4f\xb4\xe1\xa5\x42\x50\xfd\xa0\x2a\xf7\x7a\x88\xb5\xfd\x9f\x6d\x68\xdd\x0c\xc2\xb3\xaf\x3a\x11\x76\xf0\x87\x18\x64\x14\xeb\x03\xc1\x90\xfd\x9c\x89\xea\x27\x92\xe8\x07\x1b\xfe\x8e\xa4\xf9\x49\x71\x1e\x25\x50\xfc\x9c\x85\xe0\x27\x86\xde\x27\x1c\xcf\x28\xc1\x07\xc9\x7d\x3a\x74\x3d\x28\xa1\x87\xa9\x7d\xba\x64\x3d\x38\xb1\xbb\x89\x7d\x06\x54\x3d\x48\xdf\xc1\x4e\x5a\x9f\x1d\x44\x3d\x28\xb1\x43\x52\x9f\xdd\x34\x3d\x28\x91\xbb\x29\x7d\xb6\x48\x7a\x50\x32\xb7\x09\x7d\x76\x50\xf4\xa0\x24\x0e\xe9\x7c\x8e\x27\xe8\x49\x20\x6d\x38\x86\xbe\x1f\x95\x93\x8e\xb6\xdb\x91\x0c\x2e\xe7\xe2\x6f\xc1\xb3\xb7\xa4\xe8\x4e\x6c\x1e\x4e\x14\x6f\x4b\x93\x4c\x83\x55\x9f\xfb\x58\x5b\xba\x3c\x2c\x28\x99\x27\xe3\x6c\x49\x5a\xae\x89\x7c\x2d\x51\x6c\x2d\x68\xae\xb8\x93\x73\xb5\x24\x6c\xfa\x08\x9e\x16\xcf\xbb\x82\x12\x4b\x4e\xcb\xd2\x92\xce\xd1\x92\xc6\xd0\x72\x06\x7e\x96\x23\x18\x4d\x12\xb9\x59\xce\xc1\xcc\x92\xfc\x15\x69\xac\x2c\x09\x9c\x2c\x29\x8c\x2c\x89\x7c\x2c\x29\x6c\x2c\x58\x2e\x96\x73\x30\xb1\xe0\x79\x58\x92\xa6\x1d\x9b\x43\x89\xce\xa0\x4c\xcf\x9f\x4c\xce\x9e\x3c\x07\xf7\xca\x39\x32\x27\x4f\x9f\x37\x79\x64\xd6\xe4\xc9\x72\x26\xf1\x8c\x2b\xe7\xe1\x5b\x39\x19\xdb\xca\x93\xf8\xe1\x11\x8b\x12\xef\x55\xc7\x66\xf5\x9f\x23\xa7\x3f\x32\xa3\xbf\xcd\xd3\x8f\x96\x3c\x92\xcf\xdf\x3a\x50\x11\x16\x7e\x7c\x36\xff\x93\xdf\x20\x4e\x99\xc7\x7f\xa2\x2c\xfe\xe9\xf4\xf1\xed\x1c\x99\xfb\xd3\xe9\x13\x7f\xfa\x3c\x27\xbd\x8b\xfa\x79\xa5\xd8\x9d\x91\x51\xb5\xf6\x07\x98\x8a\x7b\x70\x0f\xa2\xe2\x68\xab\x52\x20\x95\x0e\xfc\x91\xd7\xa0\x5f\xa8\x20\xd7\xb7\x37\x28\x9f\x8c\xec\x41\x1c\x00\x5f\x35\x89\x69\x81\x50\xe7\xca\x93\xe9\x20\x2a\x49\xf8\x4c\x9d\x4b\x3b\x6a\xac\x84\x91\xb8\x24\x8a\x69\x59\xab\xac\xc9\x39\x82\x3f\x32\x93\xc5\xad\xc2\xcf\x1d\xd4\xc8\x7b\x5e\xc3\x70\x0e\x03\xbd\x33\x45\xf5\x3a\xf2\x7a\x2c\x5d\x6a\x8d\xcf\x71\x53\x8c\x6a\x29\x9c\x43\xba\x93\xca\xc3\x35\xa9\xa8\xd6\x91\x27\x5e\x30\x6b\x5c\x67\x9d\x60\x5f\x37\xa3\x2b\x74\xa5\x68\xc6\x3c\xed\x56\x24\xaa\x54\x0b\x93\xcb\x47\xe1\x8a\x72\xe8\x40\x79\x06\x25\x49\xfc\x22\xb3\xe7\xa2\x1d\x92\xb8\x8f\x0f\x35\x53\xe6\xe4\x13\x5b\x51\x95\x17\xa0\xc3\xdc\x70\xca\xda\x64\xb2\x55\x8a\xfe\x6b\x52\xa0\x3a\x80\xca\x61\x69\xb9\x90\x8d\x66\xe1\xfa\x68\x9e\x68\x91\x23\x83\xb8\x8d\xd9\xc5\xad\x80\xe1\xf2\x19\xc1\xec\x62\x97\x55\xfb\xfc\xbe\x0e\xbb\x4c\x67\x9a\xad\x63\x71\x7d\x24\xc3\xc6\x04\x04\xb6\x6d\x02\x02\x27\x20\x70\x02\x02\x27\x20\x70\x02\x02\x27\x20\x70\x7f\x9b\x80\xc0\x09\x08\xf4\x6d\x02\x02\xb7\xda\x04\x04\x4e\x40\xe0\x68\x9b\x80\xc0\x91\x36\xb9\x62\x7d\x9b\x80\xc0\x09\x08\x74\x6d\x02\x02\x9b\x07\x26\x20\x70\x02\x02\x77\xb6\x09\x08\x3c\xf8\xe4\x04\x04\x62\x24\x3e\x83\xd3\xe7\x39\xe9\x5d\x74\xc6\x5a\xc4\x4f\x7b\x85\xdd\x51\x69\x6b\x17\xb7\x80\x0e\xf0\xcc\xd3\x76\xf7\x39\xe7\xbc\xd8\xf1\x19\x7b\xdd\x07\x60\xba\x55\xe8\x03\x64\xd6\xa9\x6c\x3f\x87\xdf\x2b\x59\x14\x4c\x8d\xdf\x27\x4b\xba\x81\x8b\xba\x57\x48\xe4\x5d\xaf\x8a\x3d\x5f\x12\x21\x07\x95\x78\x46\x45\xba\x42\xfb\x0f\x1c\xca\xa9\x7e\x96\x84\xaf\x84\x54\x2c\xbc\x81\x8b\xd5\xa5\x23\xf1\x5d\x33\x4f\x3a\x6e\xe4\xa8\x4c\x47\xa6\xd7\xef\xdc\x8b\xff\xfe\x9f\x17\xbb\x12\x2b\xe3\x32\xb1\xbe\x12\xbd\x39\xe6\xe4\x8a\x05\x5b\x70\x40\x0b\x26\x33\x3e\x12\x64\xc1\x80\x27\xd8\xa3\x1b\x09\x9a\xc4\x02\x26\x31\x8b\x2e\xb4\xd3\x83\x25\xb1\x40\x09\xa6\xec\x69\x24\x48\x82\xe1\x87\x89\x00\x48\xf0\xf8\xc3\x28\x38\xd2\x01\x3c\xa2\x85\x1e\x00\x46\x8e\x2d\x64\x1e\x51\xc2\x3c\x00\x1d\xf1\x73\xb5\xbf\x78\xf9\x71\x20\x07\xd2\xd7\x99\x60\x71\xe1\xdc\x3b\xa8\xe3\x3b\xa5\xe0\x78\x74\xa9\xf1\xb0\xd3\xa2\x3e\x33\xa2\xc8\xf8\x76\xe9\xf0\x28\xc9\xbb\xcb\x8b\x23\xeb\x99\x61\x2b\x63\xe0\x4c\x72\x04\xae\x74\x0e\x4c\x09\x87\x27\x61\x8f\x13\xcc\x2d\xf0\x4c\x18\x52\x24\x7e\xe4\x31\x21\xc4\x5d\xff\x18\xec\x08\xad\x09\x12\x30\xa3\x68\xbc\xa8\xc1\x80\xa2\x3f\xfe\x14\x58\x11\x52\x77\x9e\x05\x23\x3a\x19\x3e\x94\x86\x0d\xe1\x71\xa1\x13\x63\x42\x89\x2e\x80\x04\x2c\xe8\xd4\x38\xd0\x93\x55\x89\x45\x8d\x29\x16\xf7\x49\xa9\x91\x85\xc4\x7b\x30\x58\x4f\x24\xce\x83\xc4\x6e\xd0\x53\x85\xf1\x9a\xa1\x3c\x66\x69\xde\xb2\x24\x4f\x59\x24\x46\xd3\x0e\x70\xf4\x9a\x39\xe8\x21\x1b\x7a\xbd\xa2\xa5\xee\xf4\x8e\x1d\xe3\xf1\x3a\x89\xb7\x0b\x87\xb3\x44\x63\x2c\x98\xdb\xe8\xf1\xf8\x0a\x72\xf5\x60\x94\x54\xb4\x6f\x0f\xa5\x68\x12\x0b\x57\x47\x97\xac\x46\x96\xb8\x18\x2f\x56\x3d\x28\x41\x1d\x25\xf5\x6b\x17\xdd\x3b\xef\xa5\x02\x5d\x94\x1a\x57\x8e\x1a\x77\xb3\x1b\x2b\x44\xdd\x5c\xc7\xa2\x44\x3e\x83\x2b\x5b\x4a\xc1\xe9\xf8\x52\xd3\xa7\xb8\x3a\xb7\x45\xa6\x7b\xd7\xe7\x28\x91\x07\xca\x4b\x6f\x17\x8d\x8e\x92\xb8\xbf\xb0\xf4\x33\xb9\x83\xa3\xd0\x63\x04\x72\xdc\x22\xc2\x71\xe3\x14\x87\x1a\x3b\x34\x38\x4a\x62\x04\x62\x1c\x8d\x04\x3f\xd9\xdd\xff\x54\xe8\xef\x09\x90\xdf\xc9\x76\xdd\x8f\xf0\x4e\xb6\xeb\x81\xf6\xf5\xad\x38\x7c\x31\x65\x44\x19\x65\xec\xf9\x34\x52\x40\x39\x1c\x0a\x51\x22\x9f\x53\xe9\xe4\x73\x1e\x4b\xd1\xb3\x2d\x64\xce\xee\x58\x01\x10\xd7\xd8\x3c\xd3\x3c\x40\x41\xb7\x08\x75\x8e\x50\x22\x83\x45\xd4\xe9\x9a\x9d\x32\x4a\x74\xf8\x2f\x4f\xfd\x1b\x13\x84\xe1\x0a\x34\xb2\x06\xbd\xb3\x4a\xdc\x48\xb2\xe4\xc6\x6a\x14\x0a\x03\x30\x27\x77\x3d\xc9\xe3\x50\x7c\x5b\xc6\xc0\x49\xb8\xb8\xd0\xa4\xa0\x0b\x56\xe8\xe1\x8b\x16\x0c\x6e\xa2\x79\x5d\x44\x84\x6c\x81\x8e\xa3\xc6\x77\x0a\x9f\x79\x08\x04\xc8\x90\xf3\x78\x45\xb5\xe6\x2b\x31\xb3\xcb\xd4\x4a\xbb\x1a\x5b\x91\xd1\x2b\xa6\x52\x5c\x2a\x3e\x5e\xce\x6d\xcb\x6b\x17\x1e\x74\x9b\x70\x4e\x7e\xa5\x8a\xcb\x5a\x07\x56\xe0\x4c\x96\x95\x14\x51\x65\x11\x5d\x25\xc1\xa6\x0c\x06\x4c\xa7\xaf\xd9\xd1\xbc\xa4\x39\x6c\x72\x57\x3a\x79\x54\xe8\x6d\x78\xf2\x3a\x2f\x39\x94\x34\xee\x44\x67\x40\x95\x40\x41\x17\x05\x73\xe0\x6a\xa5\x1c\xeb\x70\x4c\x57\x55\xa8\x65\xcb\x8c\x73\x20\x34\x3d\x77\x68\x2f\x6d\xde\x97\x35\xef\x1b\xbf\xa4\xf9\xb2\x8f\xba\x3b\x10\xf0\x9a\xf0\x1d\xaf\x0b\xaa\xb5\x3d\xd2\xdc\x5b\xd6\x7c\xb5\x8e\xb1\x66\x43\xa8\x87\x43\xcb\xdd\x53\xbd\x91\x1d\x3b\x08\x31\x6a\x2d\x5e\xa5\x55\xc3\xaf\x42\x2d\xbf\x9b\x65\x97\x8c\x9c\xfb\x82\x9f\x3a\xac\x90\x0b\x1d\xfd\x75\x84\xbc\x70\xeb\x15\x76\xd5\x2c\x53\xdc\xf0\x8c\x16\x2f\xe0\x9e\x12\xfe\x29\x2b\x6a\x6d\x98\x6a\xff\x75\x54\x28\x55\x8c\x98\x47\xe9\x7a\x49\x0b\x72\xcf\x36\x8f\x52\xe5\xda\x6b\xba\xd0\xe3\x76\x4e\x22\x34\x9f\xff\x24\x7b\xa9\x78\xe4\xc6\x57\x0f\x96\xaa\x64\x8a\x2c\x58\x28\x40\xe0\x85\x21\xbe\xff\x5a\x6c\x7c\x65\x1c\xd1\xb5\x97\x72\xb6\xe4\xc2\x55\x02\x04\xde\x69\x17\xc9\xda\x5b\x8c\xe3\xea\x0f\xb4\x4f\xe8\x2d\x75\xd6\x3b\xd0\x57\xef\xa0\x93\xb7\xfa\x35\xf4\x7a\x54\x72\x88\xc6\x0a\xb1\x53\x52\x11\x07\xdc\x83\x96\x50\xcc\x45\x4b\x84\x7f\x1e\x1b\x84\xe8\x23\x4d\x31\x9a\xf3\x33\x04\xa4\x69\xa6\xa0\x9a\x5e\x23\x3f\x2d\x32\xad\x94\x0f\xa1\x6a\x52\x90\xc8\x44\x5e\x49\x2e\x8c\x26\x7c\x9c\xea\x7f\x3b\x9c\x6d\x3b\xc2\xab\x13\xe1\x46\xca\x08\xdc\xa1\x1b\xe1\xf6\xa9\x37\x7c\x3e\xc4\xcd\x7e\xf3\xa6\x75\xe0\xc5\xb8\x7e\xb0\x31\x6e\x2e\x86\x6d\x54\xec\xa7\xd0\x93\x6e\x90\xdb\xd7\xb4\x2a\xa7\x88\xb5\x29\x62\x6d\x8a\x58\x9b\x22\xd6\xa6\x88\xb5\xed\x36\x45\xac\x3d\x0b\x6f\xf9\x14\xb1\xe6\xdb\x14\xb1\x76\xa0\x4d\x11\x6b\x53\xc4\xda\x14\xb1\x76\x64\xcf\xa7\x88\xb5\xc3\x6d\x8a\x58\x3b\xf4\xd4\x14\xb1\x36\x45\xac\x4d\x11\x6b\xfb\xdb\x14\xb1\xf6\x5c\xb0\xce\x29\x62\x6d\x8a\x58\x9b\x22\xd6\xa6\x88\xb5\x29\x62\x6d\x8a\x58\x9b\x22\xd6\xa6\x88\xb5\x29\x62\xed\x5b\xb4\xe2\xa2\x67\x3b\x54\x34\x18\x9d\xe4\x21\x5a\x57\xd5\x86\x91\x4f\xe1\xe9\x66\xcd\x92\xc5\x06\x76\xa1\x35\x26\x32\x3a\xae\x6a\xda\xed\x7c\x42\x34\xb6\xe0\x25\x37\x51\xcb\x36\x2d\x08\x8f\xe0\xb5\x7b\x7f\x7f\xbc\x83\x0e\x76\xfc\x8f\xae\xb4\xfb\x17\x30\x6e\x68\x29\xeb\x78\xe2\xff\xcc\x4f\x45\x33\x91\xce\xb7\x1a\xe8\x60\x92\x23\xde\x5c\x09\x82\x99\x17\x3f\x6b\xc4\xcf\x9a\x19\x1b\x0d\x82\x23\x58\xb5\xe3\x7d\xc9\xcf\x79\xe6\x3e\xf9\x2e\x0e\xe7\xce\x1b\xa6\xc7\xce\x5d\xd8\x46\x10\xa6\xd3\xbc\x2b\xf2\x76\x23\x4b\x6e\xac\x89\x67\x6d\x6c\xda\xc5\xbd\xb9\xe9\xd9\x32\x6e\xf5\xc5\xd9\x80\x4b\x07\xa4\x72\xdd\xa5\x4b\xef\xc4\x0e\x41\xec\xd2\x23\xd7\xd1\x28\x3d\x15\xad\x61\x09\x2b\x6d\x16\x62\x9d\x7c\x20\xe3\x37\xb6\x6a\xa3\x7f\x1a\xe2\x56\xd5\x91\xf1\x76\xc1\x12\x6d\x82\xb0\xb8\xae\xa8\xb1\xc2\x47\x3f\x6c\xd1\x99\xba\xb6\x3f\x07\x42\xc2\x46\x25\x6e\x77\xc2\xbe\x24\x44\x1c\xb5\xaf\x88\x1a\xc4\x88\x2d\x69\x6f\xbc\x10\x01\x27\x85\x61\x5f\x46\xad\xe5\xfe\xde\xbd\xeb\x3f\x4c\xec\xf5\x5b\x13\x38\xc8\xd9\x03\x2b\x1a\xe1\xa3\x5f\x4d\x8d\x51\x7c\x51\x1b\xb8\xae\xe5\x10\xae\xe1\xe3\x4d\x43\x40\x19\xc4\xa6\xea\x39\x69\x6e\x23\xa3\x32\xbb\xb6\x0d\x04\x4c\xcd\x09\xb9\x63\x0c\x86\xa6\xfb\x1d\xb0\xbb\xfd\x00\x8f\x0a\x85\x2d\x05\x31\x0f\x8c\x66\x6b\x1f\x26\x7b\xca\xb8\xa7\xa5\xfe\x59\xc9\x1a\x5f\x52\xea\xc5\x75\x13\x9c\x69\xaf\xa6\x5e\x1d\x14\x64\x65\xa5\xc5\x97\x60\xa0\x55\x55\x00\x7a\x2d\xed\xa9\xd7\xce\x80\xb6\x97\x01\xea\xc2\x95\xef\x64\xc9\xc8\x83\x2c\xea\x48\x2c\xc6\x0e\xb8\x3f\x44\x61\x1b\xfc\xad\x5e\xb0\x82\xc1\x8d\x25\x5b\x03\x7f\x21\xd4\x16\x7a\xb4\xaf\x59\xf3\x2a\x56\xd7\x83\x1a\x75\xdd\xf0\x2e\x17\x2b\xa2\xb1\x97\x2a\x99\xff\x40\xfe\x1f\x61\xed\xd2\xcf\x91\xe6\xb1\x7c\x14\x5c\xac\xc8\xcf\x37\x6f\x9a\x6d\x68\x25\xfd\x74\x07\x53\x42\xfe\xe4\x62\x89\x34\x33\x2b\x9e\x93\x05\x8f\x1b\x51\xae\x01\xdc\x7d\x29\xd8\xa3\x0b\x4b\x72\xf1\xa7\x0e\xdd\x84\xa8\x3e\xf7\x09\xfe\x8d\xb1\x1d\x75\x1f\xea\xbb\xf6\x8a\xfc\x8b\xeb\x5b\xc5\x54\x08\xd6\x5e\x58\x7b\x88\x2a\x46\x3e\x7e\xba\x88\x0b\x78\x83\xb8\x56\xf5\x38\x53\x8f\xb3\xd9\x6c\x66\xc7\xee\x66\x49\x6a\xa1\x99\xb9\xec\xcd\x1b\xf4\x54\xc8\xb8\xcf\x2f\x65\xce\x97\x9b\xfe\x0c\xc3\x1e\x6f\xbb\x0a\xdb\x89\x8a\x8d\x1f\x89\x79\x0c\xec\xdf\x31\xf5\xff\xf2\xe7\x93\x7b\xa0\x54\x2d\xae\x13\xf7\xa1\x9d\x05\xbb\x80\x8c\x84\x40\x31\xfb\xdd\x4c\x18\xb5\x81\xa8\x55\x7f\x61\x8f\x1a\xb8\x56\xf9\x55\x4a\xda\x7b\xfd\x9c\xfc\xa2\xad\x41\x53\x0b\x7b\x81\x6b\x8e\x04\xee\xe7\x28\xd2\xd1\x4e\x37\x84\x16\xda\xe5\x7d\xb8\x98\x83\x81\x12\x9f\x13\x38\x1e\xe1\xdf\xa2\x44\x2e\xa4\x59\x0f\x85\xc0\x0c\xdf\x82\xcf\xbb\xfb\xe7\xcb\xe8\xaf\x77\xd7\xca\xf6\x6c\xdd\xee\x27\x04\x5d\x6a\x52\x29\x96\xb1\x9c\x89\x2c\xb2\x08\x1d\x78\x73\xa9\x89\xbf\x26\x91\xa7\x59\x6d\x1f\xa4\xf8\x24\x25\xde\xe5\x79\xd3\x49\x16\xa0\x66\x50\xb5\x0c\x5c\x2f\xaa\x8e\x9b\x47\xaa\x21\x59\x48\xcc\x20\x04\xb3\xd6\xde\x8e\x31\x2a\x24\x5b\x74\xf7\x7f\xec\x24\xf2\x3c\xa4\x05\xf0\x92\xae\x18\xa1\xa6\x59\xc0\xf6\x58\x16\xba\x86\x62\x75\xd6\x20\x8e\xd3\x27\xb9\x64\x6d\x18\x26\xd5\xe4\x97\x9b\x37\xe4\x3b\xf2\xd2\xf6\xf9\x15\xac\xba\x25\xe5\x05\x44\xd4\x18\x1a\x49\x0d\xdb\x1f\x33\xbe\x04\xeb\x5e\x32\x3d\x6f\xf4\x1f\x91\x8a\x2c\x69\xa1\xd9\x25\x11\x71\x46\x39\xd4\x4b\xf4\xdf\x6f\xb5\x71\x38\x4f\x3c\x64\x03\x97\xc9\x76\x2b\xc6\x89\x1c\xdd\xae\x3b\xb7\x62\x34\x26\xb0\x67\xbb\xee\xd8\x8a\x51\x22\xc7\xb6\x6b\xcc\xbe\x73\xfb\x68\x21\x65\xc1\xe8\xf8\x5b\x61\x1f\xfd\xa2\xd9\x68\xa2\x20\xd9\xa5\xb4\x7f\x39\x93\xd2\xee\x9a\xa1\x76\x53\xb5\x23\x19\x67\x3e\x08\xbf\x73\x4a\x66\x68\x4e\x0d\xf5\x0a\xbf\x8d\x4c\xff\x27\x5f\x47\xcf\x52\xa5\x6b\xf6\x8e\x8b\xfa\x8b\xbb\xac\xe0\xdd\xbd\x76\x3d\xde\xbd\x05\x11\xae\x30\xea\x17\xe3\x4d\x5c\x67\x9f\xe7\xd1\xbe\x81\x9e\x0d\x1f\x14\x5a\xff\x56\x8a\xc3\xff\x83\xf6\x06\x85\x66\x6d\x7a\xc8\xfb\xa2\x44\x51\x91\xcb\x72\xd8\xeb\xe8\x33\x19\x6e\x53\x1d\x24\x22\xd6\x50\xc1\xac\x78\x8c\xa1\x12\x7d\x70\x3c\x2f\x43\x05\x8b\x0a\xc2\x35\x3d\x09\x16\x7c\x07\x17\x7c\xae\x9b\x19\x77\x37\x7e\x48\x32\xc6\x55\xfc\xeb\x5c\x39\xfb\x70\xd4\xb9\x50\x41\x25\x8b\xb4\x28\xa6\x4f\xb2\x60\x2e\xd3\x3b\x7c\xb4\x15\xf5\x4d\x7c\x33\x3c\x90\xf2\xcd\x9f\x37\xd5\xe0\x9b\xc1\x7f\xf2\x2d\x7c\x73\x1d\x69\x0a\x90\xe1\x37\x5b\x1b\xa2\xff\xcd\x70\x70\x3f\xff\x6f\x46\x61\x03\x5d\x37\x11\xdc\x75\xf1\xe7\xd4\x35\x29\xb8\x06\x03\x09\xdc\x4c\xba\x73\x3c\xb9\xbc\x3b\xae\x22\x13\x1f\xbc\xb9\xe4\x93\xab\x06\xc7\xc1\x25\x38\x9f\x3c\x3c\x11\x7b\xf4\x0d\x53\xc2\x2a\xc5\x4b\xaa\x36\xf6\x72\xee\x6c\x9d\xee\x41\x18\x25\x51\xc8\xf0\x99\xc1\x9a\xa7\x79\xee\x3e\x96\x8a\x0d\x6e\x72\x11\xf1\xf6\x58\x4b\x05\x6b\xab\xe0\xa2\x98\xf5\x46\x67\xa6\xc0\x2f\x95\x3b\xf7\x1c\xb8\x88\x09\x6d\xd6\x8d\xa0\x25\xd3\x15\xcd\x58\x1e\x24\xc7\x6e\xed\xbc\xcb\x64\x31\xb7\x67\xb8\xcf\x23\xaf\x45\x1b\x9b\x83\x91\xf9\xd2\x3b\x0e\x5b\x1b\xde\xdb\x3a\xaf\x48\xc9\x57\x6b\xd3\xdc\x2c\x0b\x5a\x8b\x6c\x7d\xe2\x59\xde\x31\x58\x3e\x67\xdd\xea\xa1\x7b\xa6\x04\x2b\x48\x45\x15\x2d\x99\x89\x0e\x38\x31\xc1\x7c\x8a\xdd\x83\xc8\xb4\x09\x5c\xca\xc4\x8e\x28\xec\x25\xa1\xe1\xb5\x1b\x6c\xb1\xd3\x84\x58\x1a\x64\xaa\x44\xaf\xc3\xbf\x82\xa1\xf7\xb4\x3d\xc6\xa5\x48\x20\xd2\x23\x30\xa9\x11\x49\x75\x73\xe2\x94\xc9\x23\x17\xb9\x7c\xd4\xc7\x5c\x93\x7e\x73\x22\x82\x05\x9e\x35\x50\x51\x38\x8b\xe2\xbe\x71\x08\x77\xec\xbe\x2a\xc9\x2a\xbe\xe6\xb6\xd5\x45\x80\x99\x74\x0f\xa1\xe1\xd5\x20\x1c\x24\x56\x9f\xc5\xd9\x04\x87\x2f\xe9\x5f\xe3\x3a\x73\x8e\x7b\xc9\xaa\xd4\xf4\xb5\xb2\xf2\x0d\xa7\xc5\x5d\x15\xc7\x05\x40\x86\x0b\xe4\xe7\xf7\x77\xd7\x7d\x31\xd6\xac\x7b\x04\x46\x0d\x4c\x31\x61\x2b\xa7\xc3\x83\xf3\xc8\x16\x6b\x29\xef\xc9\xcb\x00\xa7\xaf\xb8\x59\xd7\x8b\x79\x26\xcb\x0e\xb2\x3e\xd3\x7c\xa5\xaf\xfc\x12\x9f\xd9\x2f\x8a\x4f\xe9\xe6\xa2\x00\xcd\x1f\xce\x23\x26\x8c\x0e\xd1\x7e\xd0\x99\xac\xf9\xaa\x68\x99\x76\x52\x41\x43\x34\x10\xd9\xf6\xf0\x80\x56\x76\xa0\x66\xb4\xdc\xcf\x2d\xc1\x8f\xb5\x99\x8b\x6a\x4d\x3d\xfc\xeb\xe9\x07\x80\x8d\x61\x2d\x85\x54\x88\xaa\x80\x8b\x8d\x4f\x6c\xf2\x8e\x6d\xc7\x6e\x04\xdd\xf6\x5b\x1e\xc6\x61\xc9\xa8\xa9\x23\x6a\x34\x85\xb6\x2c\xe8\xea\x6c\x17\x8e\xed\x55\x1b\x13\x99\x10\xda\xc8\xca\x85\xa9\xf1\x64\x0e\xa8\x34\xb8\xdd\xcb\xc6\x2d\x07\xe7\x93\x9c\x77\xe6\x30\x7e\x89\x8e\xce\x75\x67\x0e\xe3\x8f\xc8\xf1\xb9\x3e\xef\x1c\x36\x4e\xe4\xe4\xa9\x03\x67\xb2\x17\x60\xf5\x67\x38\xa1\x9c\x73\x19\x31\x12\x3b\x9c\xd0\x87\x1c\xcc\xf1\x92\xdd\xe5\xac\xef\x8c\xde\xe9\x68\x8e\x16\xb9\xcf\x21\x1d\xce\xaa\xed\x23\x29\x5e\xbf\x9c\xf1\xc4\x23\xc8\x53\x2f\x5a\x68\xe7\x74\x3c\xac\x1f\xe3\xb7\x9b\x39\xb0\xbd\xba\xdb\x06\xf5\xe1\x7e\x6d\x7e\xea\x2e\xfa\xa7\xd8\x67\x67\x09\x07\x73\x14\x51\xd7\x59\x26\x6b\x61\xd0\x31\x61\x17\x77\x5b\xcf\x77\xd5\x6d\x2c\x0a\xd4\x97\x12\x32\x1e\x1b\x60\x89\x6b\x77\x5d\x6d\x63\xf2\x46\x25\x1e\x88\xd9\x33\x54\xdf\xb7\x01\x7b\x0c\xd8\x14\xdb\xb8\xbc\xf6\xef\x7e\x68\x66\xd4\xf5\x2a\x92\x6c\x31\x62\x36\x8d\x2c\x98\x0b\x14\xc4\x85\x3b\xef\x0c\xc0\xbb\xd0\x5d\x79\x63\x2b\x2f\xf2\x6e\xbd\x4d\xf3\x28\x73\x37\x0f\x9f\x9b\x77\xc1\xbe\x34\x86\x42\xb4\x5d\x94\x7b\xc9\xf7\x13\xc2\xd5\x36\xc4\x8e\xb7\x71\x7b\x10\x48\x37\xbd\xe1\x66\x14\xaf\x0a\x46\xfe\x7a\xcf\x36\x97\x8e\xb3\x90\x2d\x97\x2c\x33\xff\x1e\xf1\x82\x5a\x07\x06\x3c\x90\x68\xff\xc3\x5a\xd0\xd4\x48\x45\xfe\x1a\xfe\xd7\xbf\x8f\xef\x4e\x9c\xe1\xed\xfa\x97\xe0\xb0\x78\x0b\x0f\x0e\x98\x0b\xdd\xb0\x38\x99\xf1\x0e\x0b\xf8\xde\x39\x79\x0b\x65\x3a\x4b\x46\x85\x0e\x4c\xa6\x45\xd1\x13\x19\xcd\x6d\xf1\xdb\x9a\x89\xee\x72\xf3\xe1\xdc\x21\x96\x8f\x2a\x46\x3e\xc8\x3b\x1f\x59\x19\x7b\x70\xdc\x2a\xb6\x64\xaa\x7d\x0e\xce\xa1\x0f\xf2\xad\xa3\xcb\x8a\xeb\x1a\x52\x69\xde\xb3\x51\x52\x53\xd7\x7a\x53\xf3\x37\xb6\x09\x7a\xcc\x8d\xde\x3d\xdb\xb4\xb1\x22\xed\x86\x8b\xfc\xee\xd6\xa3\x7d\x78\x8e\xee\xd9\x26\x7a\x82\x6e\x9c\x6d\x73\xef\x7a\x0a\xb1\x9a\x97\xed\x72\x0f\xf9\x43\x6f\xbf\x70\x6d\xf4\xbf\xc5\xae\x24\xbb\xc5\x33\x59\x2e\xb8\x70\x7b\xdc\x75\x33\x2c\x30\xe8\x69\x58\x00\xd1\xc7\xb0\x7d\x28\xfe\xc3\x90\xd3\x1b\x3e\x38\x61\x8e\x3f\x86\xb1\x52\xac\x52\x4c\xc3\x6d\x91\xda\x9e\x5e\x68\xa2\x58\xe1\x14\x6a\x6c\x68\x65\x63\x20\x36\x3c\xb8\x05\xcf\x9b\xde\xb9\xfd\xe2\xe6\x02\x31\x72\x6f\xff\x51\xd3\xa2\x1f\x0c\xe1\xff\xe4\x45\xd9\x89\xff\x47\xcd\x1f\x68\xc1\x22\xc3\xfd\xa1\x9f\x8f\xbc\xc8\x33\xaa\x9c\x33\xd8\x13\xc3\x6a\xcf\x55\x06\xe1\xaa\x24\xa3\xa2\x51\xd7\x88\x69\x86\x55\xac\xbd\xbf\x8f\x2a\xc3\xb3\xba\xa0\x8a\x58\xed\xb6\x92\x2a\x92\x93\x0c\x6b\x15\x35\x9b\x11\x91\x27\x36\x3c\xe2\x86\x32\xba\x6b\x22\xde\xe7\xe1\x52\xd6\xc1\xe8\x81\x58\xad\x9e\xaa\x20\x2f\x5b\x82\xeb\xd8\xa8\x13\xb8\x87\x3a\xc5\xdd\xaa\xc9\x5e\xb6\x43\xd7\x4c\x8e\x14\xe9\xb8\x32\xf3\x57\x9d\xf3\xb8\xd1\x73\x73\xf2\x63\x13\x37\x7f\x19\x1b\x5d\x46\x02\xc9\x1f\x04\xbd\xfa\xaf\xf4\x8a\xc3\xbd\xa1\xa3\x48\x97\x52\xb1\x87\x68\x5f\xfc\xcb\x5c\x82\x64\xf6\xc0\x33\xf3\x6a\x4e\xfe\x6f\xa6\xa4\xe3\xbc\x63\x2b\x0a\x39\xe7\x5e\x1d\x45\x87\xd7\x79\xf2\xf0\x86\x4d\xef\x3b\xf2\x12\x84\x13\x5e\x96\x2c\xe7\xd4\xb0\x62\xf3\xaa\x49\x1f\x73\x6c\x88\xcf\x04\x71\x42\x38\xe2\x77\x38\xe1\x7b\xc7\x99\x27\x45\x4d\x39\xcb\x1a\x63\x4d\xce\xc3\x19\xd4\x9c\x3a\x5c\x7b\xcd\xd4\x09\x5e\x8a\x14\xeb\x38\x46\xed\xe4\x84\xa3\xac\x59\xe4\xff\xc7\xee\x18\x4a\x14\x5b\x81\x36\x71\x9a\xe1\x0c\xba\x04\x7d\xbf\x1a\xf3\xd7\x47\x08\x1c\xfd\x49\xa5\xd8\x92\x7f\xd9\x37\xeb\x7d\xba\x23\xf8\x69\xef\xfe\xe5\x9e\x76\xd7\x30\xd8\xa4\xf9\x5e\x2b\x6b\x74\xa8\x14\xab\x0a\x9e\xd1\xbd\xfa\xb5\x1f\xf5\xe1\x7f\xdc\x55\xa4\x2d\x77\x50\x10\x15\x3a\xb6\x77\x0c\x1b\x80\xc2\x91\xe7\xdf\x2c\x49\x56\x2b\xc5\x84\x63\xd3\x07\x5e\x95\x20\x8b\x99\x96\xcc\xdd\x1c\xe2\x86\x6f\x5e\xee\x07\xca\x25\xcb\x75\xbb\xc5\x9c\xf8\xbd\x16\x4b\x4c\xca\xec\xf8\xe6\xd6\x6b\xaa\xf6\x9f\x56\x83\x6b\x36\xfc\x76\xf7\x60\x3a\x39\x70\x96\xc3\xff\x84\x57\xef\xfd\x7a\xb9\x74\x43\xb7\x23\xbf\xcd\xde\x8e\xe7\xa5\x14\x2b\x99\x3b\xb7\x7c\x49\x45\x4d\x8b\xab\x4c\x2a\x76\x05\xa2\x59\xde\xd0\xa0\xbb\xb7\xee\xbd\x14\x9f\x68\x88\x8c\x54\x74\xb5\x57\xe7\xf5\xe1\x5f\xf7\x5b\x80\x17\x61\xd5\x6c\xc8\x5a\x3e\x06\x11\x76\x68\xc6\x51\xa3\x98\x8b\x9f\xe3\x0b\x78\x6f\xd7\xc7\x21\x5d\xdc\x9f\xbf\xeb\xf6\xa1\xe0\x8d\x74\x8b\x2f\x67\x1a\xf2\x95\x3d\x45\x59\x69\x7f\x71\xd8\x79\xd0\x26\xbf\x78\x95\xb9\xa6\x0f\xf8\x7c\x45\x3f\x2c\x57\x15\x53\x9a\x6b\xc3\x84\x99\x39\xa9\xfa\x0f\xae\x2b\x33\xe8\xca\xec\xfb\x43\x5e\x8f\x08\x6f\x42\xa4\x02\x8e\xd1\xa7\x39\x35\xf4\x0e\xf2\x28\xa3\xc7\xbd\xe3\x45\xf4\xa8\xb0\x1b\xf5\x5f\xe1\x53\xef\x04\xad\xf4\x5a\x9a\x37\x8d\xe0\x83\x9f\x02\x4e\xc8\xc6\xcf\xb7\x02\xb3\x06\xdc\xb5\x5e\xed\xb8\x24\x3c\xa7\x9e\x8a\xcd\xe0\x1d\x07\x25\x7b\x45\x04\x7e\xca\x36\x0c\x03\xdc\xc9\x2e\x71\xb4\x39\x69\x81\xf4\x5c\x73\x39\x16\x78\x6a\xed\x77\x2f\x69\xd0\x91\xae\x58\x48\xc9\x05\x34\xd5\x65\x57\x1d\xfe\x7c\x22\xd8\x63\x58\x7a\xf6\x53\x41\x50\xcb\x3b\x6f\x57\x54\x1b\xc4\x14\x7e\x77\xf8\xc3\xc1\xc6\x02\x6a\x14\x5e\xee\xfc\xc8\x36\x73\x61\xf7\xd7\x1c\x94\xde\xfb\xd2\x6e\xc2\x98\xa7\xb3\x0f\x29\x65\xd4\x97\x19\xf1\xc4\xbf\x07\x65\xb6\xdf\xeb\x67\x89\x02\x57\x0e\x14\x0e\x99\x93\x1b\x17\x06\xbf\xac\xed\x12\xb9\x24\x8f\x8c\x54\x05\x1d\x0d\xbe\x0a\x9f\x56\x02\x85\x7d\xdb\xe9\x90\x03\xe8\xbb\xb7\x60\x6b\xfa\xc0\xa5\x8a\x71\xaa\x76\x87\xb0\xa4\x1b\x9f\x32\x78\xc8\x66\x8a\xf5\x79\xd1\x8a\x47\xe5\x78\xf5\x43\xde\x6e\x6f\x5c\x36\xa0\x5f\xe9\x2e\xbf\x32\x84\x22\x85\xf4\xe8\x51\x03\xcd\x55\xb8\x00\x1f\x12\x13\x99\x4f\x4f\xef\xca\xde\x4e\x1f\x1e\x95\xd9\xe2\x17\x7f\xe3\x22\x1f\xb2\xb8\xd8\xa3\xcf\xbe\xc1\xf5\x78\x4e\x7e\x92\xe3\x86\x3a\x6d\x6a\x69\x98\x35\x57\xf9\xcc\x5e\x84\x37\x6e\x2e\x2f\x7b\xbd\x6d\xb2\xec\x4f\xe5\x58\xbe\xe7\xe3\xb4\xf7\x7d\x37\x17\x6f\xb9\xee\x21\x42\x15\x8c\x20\xbf\xfa\x86\xa3\x7d\xaa\x5e\xc6\xc4\x3f\x6d\x47\x3d\x0d\x50\x85\x33\xf7\x32\x26\x86\x68\x06\xe3\x7d\xf0\x07\x23\x90\x73\xd4\x85\x23\x8a\x1a\x65\xc8\x0e\xd1\x12\x39\x74\xdd\x18\x0d\x3f\x44\x23\xf3\x2b\x9b\x1a\x4d\x3f\x0e\x59\x19\xb1\x9a\x29\x8e\x6e\xe5\x89\xeb\x9d\x45\x50\xac\x10\x39\x0e\x19\x3f\x63\x7a\x15\x04\xc7\x4f\x1c\xad\xca\x13\xcf\xd0\x69\xa8\x54\x50\x34\x2a\x81\x22\x65\x54\x6a\x1c\x85\x4a\x87\x1e\x65\x54\xe2\x38\x7d\xca\x7e\x6a\x94\x51\xe1\xcf\x84\x3a\x25\x72\x45\x46\xfd\x4c\x47\x94\x51\x1c\x46\xf7\x43\xc6\xc3\x3f\x6a\xa6\x36\x44\x3e\x30\xe5\x75\xa8\xf6\xfc\x7f\xc0\x6f\x69\x67\xf6\xe0\x57\x2c\xb8\xc8\x47\xbc\x5c\xb1\x7a\x11\x1c\x76\x6f\xbf\xd8\x83\x40\xa3\x31\xe7\xe1\xc3\x2e\xc3\x23\x04\xa2\xbb\x4f\x0d\x63\x34\xba\x3e\xfc\x7e\xb0\x0b\x4b\x3b\xea\x85\xee\x5f\x00\x23\xb9\xfe\xf0\x66\xdc\x20\x4a\x41\xb1\xaf\x07\x9d\xed\xbe\xba\x5f\x88\x32\x06\x73\xe8\xe4\x98\x69\xef\x82\xbe\x74\xe0\xd1\x25\xd8\xeb\x54\xb4\x4e\xd1\xc8\xdc\x17\x80\x9c\xbc\xf2\xb9\x67\xae\xb2\x8b\x93\x7c\x6a\xc0\x3a\x0d\x12\xbd\x6f\x21\x51\x37\x92\x3d\x48\x14\x31\x78\xa4\x0f\x88\x3e\x33\x54\x50\x9e\x1c\x15\xa4\x10\x89\x25\x97\x61\x36\x77\x62\x83\x37\x22\x16\x43\xff\x20\xcd\x8d\xb8\xec\x80\x89\xe4\x8d\x64\xfa\x83\x34\xf0\x97\xb3\x0c\xa7\xeb\x78\xc2\x60\x7a\x70\x86\x3b\x3e\x59\xa5\x28\x94\xf0\x74\xef\x8d\x5e\xdc\xae\xed\x80\x1a\x6e\x04\x91\x2a\x8c\x47\x83\x37\x68\x44\x65\x01\xd2\xdc\xf7\x84\x14\x33\xcf\x77\xb4\x17\xd4\x88\x85\xec\x54\x6f\x46\xb6\xbb\xd6\xbc\xd4\xbd\x30\x52\x2c\xf8\xb2\xdc\xf3\xdc\x79\xbd\x21\x01\x28\xaf\x95\xab\xca\xa8\x8d\xa2\x86\xad\x78\x46\x4a\xa6\xa2\xa9\x47\x81\x2e\x2b\xae\x0b\xa8\x6a\x27\x69\xb9\x96\x91\x53\x17\x9f\xe1\x31\xb3\x3b\x37\xe2\x57\x61\xb2\x9f\x1e\x23\xf2\xe7\xf3\x3b\xa8\x33\xfc\xbc\x4c\xe3\x4e\xc7\xdc\x09\x59\xd2\xca\xee\xdf\xff\x6e\x62\xb3\xfe\x87\x54\x94\xc7\xd4\xcb\xb9\x26\x9a\x8b\x55\xc1\x7a\xcf\x7a\x1f\x4b\xf7\x35\xf6\x0d\xb8\xa0\x06\x67\xb0\x32\x4f\x11\x2d\x97\x5b\x16\xcb\x25\x79\x5c\x4b\xed\xce\xd4\xb8\x60\x6d\xae\xc9\x8b\x7b\xb6\x79\x71\xb9\xa5\x07\x5e\xdc\x88\x17\x97\x8d\x43\x0e\xa5\x6e\x1a\x6b\x01\xbc\xbc\x2f\xe0\xd9\x17\xc7\x18\x41\x27\xb5\x72\xdd\x15\x3d\xaa\x0e\xef\x80\x62\xb7\xc3\xa8\x7c\xd7\x91\xb2\xc5\xc4\x9a\x15\x94\x8f\x20\xe9\xa7\xf3\x2b\x64\xb6\x0b\x87\xb1\x8b\xa8\x4d\xe1\xe4\xbd\x97\x79\xfc\x88\xb4\x8f\x34\x99\x88\x8f\x60\x24\x79\xf7\x9a\x77\xa8\x74\xdc\x7f\x87\xef\x01\xdd\xd1\x6b\xd3\xe9\x7e\x6a\x4a\x35\x5a\x49\xf6\xba\xc6\x59\x4e\x1e\xd7\x4c\x8c\x72\x8c\x71\x91\x15\x75\xee\xe2\xb5\x41\x2c\x5c\x04\x7d\xc4\x35\x6c\xf3\x05\x33\x0d\xce\x71\x68\xc6\x10\x43\x88\x5a\x54\xbf\x36\x8f\x04\x83\xd3\xdf\x86\x5a\x37\x9f\x87\x19\x0e\x7e\xe8\x6d\xb3\x2e\x9c\x40\xb2\xa0\xd9\x7d\x53\xab\x7b\x74\x3d\x46\x7c\xdd\xc8\xde\x3a\x74\x4c\xcd\x1a\xb0\x79\xe7\x3f\x3a\x74\x75\xc7\x3f\x1d\x78\xe5\xbe\xd7\xcd\x88\xbb\x61\xdf\x41\xd8\xfb\xd6\x3f\x02\xe0\x3b\x7c\x95\xef\xc1\xff\x8a\x7c\xb9\xd6\xc5\xae\x4d\x32\xc0\xb0\xef\xde\xc1\xb6\x58\x4a\xe5\x92\x12\xb4\xa1\x22\xa7\x85\xf4\xf5\x67\x3d\xb2\xac\xe7\xe4\x65\x13\x81\x94\x73\x0d\xd8\xda\x7c\x3b\x0b\xec\x8e\x31\x87\x98\xf8\xfc\xc2\x71\x1c\xbb\x59\x3d\x57\x95\x92\x2b\x45\xcb\x2b\xf7\xa3\xab\x3f\x64\x65\xee\xa4\xcc\xdc\x5f\x66\x5a\x17\xa5\xcc\xd9\x50\x81\xec\x5d\x13\x7b\x80\xea\x9d\x00\x75\xc8\x21\x42\xa3\xd4\x87\x6e\x79\x23\xa8\xf4\x11\x68\xf4\xde\x7d\xf6\xb5\x51\xe8\x03\xf6\xe8\xc8\xde\x3d\x64\x99\x1d\x46\x99\x8f\x42\x97\x1d\x82\xbc\xb3\xc3\x89\xa8\xb2\xd7\x8f\x3b\x45\xe2\xd0\xe4\x03\x88\xf1\x4e\xe9\x07\x50\xe4\x48\xa4\x78\xf7\xc4\x0d\xd0\xe3\x04\x84\x78\xa7\xdc\x43\x18\xf8\x38\x32\xbc\x7b\xca\x1c\x5a\x7c\x52\x44\x38\x0d\x09\x1e\x8d\x0a\x38\x8c\x00\x8f\x39\x8f\xc6\x10\xdf\x04\xa4\x77\x1b\xc9\xdd\x7b\x10\x8f\x22\xbc\xfb\x11\xdc\xbd\x32\xf7\x20\xbb\x71\xc8\xed\x5e\xa9\x11\x88\xee\xa8\x4d\x71\x08\xc1\x3d\x39\x72\x3b\xda\x9b\x43\x48\xed\xc9\x11\xda\x91\xde\x1c\x36\xa6\xf6\x20\xb1\x7b\x11\xd8\x83\x96\xdb\x41\xc4\x35\x15\x69\xed\xe8\xb5\xdd\x5b\xff\x2b\x20\xac\x63\x3b\xff\x30\xa2\x8a\x73\x46\x44\x98\xd3\x29\xc8\x69\x40\xdd\xf6\xbe\xf7\x19\x21\xa6\xa3\x57\xf1\x31\x84\xf4\xcc\x23\x1e\x85\x84\xe2\xc6\x7c\x0c\x01\xdd\x42\x38\xf7\x6b\xd7\x11\xe4\x73\x0c\xd9\xdc\x3f\x4c\x07\x10\xcf\xaf\x8d\x68\x8e\xac\x98\x83\xff\x7c\x08\xb9\x4c\x44\x2c\x0f\xa1\x92\x63\xba\x24\x16\x85\x4c\x46\x1f\xfb\xe8\xe2\xde\xe9\xc6\x3b\xdc\x46\xfc\xde\x89\x28\xe3\x18\x2c\x88\x41\x17\xbb\xd8\xe1\x01\x91\xb1\xa8\x62\x1c\x9a\x38\x8a\x22\x26\xa0\x87\x01\x17\x1c\x73\x7d\x8e\xa0\x86\x91\x0e\xef\x38\x94\xf0\x1c\xe8\x20\x02\x15\xec\xe3\x7d\x63\xf8\x00\x0a\x0d\x8c\x1c\xa6\x18\xf4\x0f\x8d\xfa\xf9\x9b\xdc\xc8\xf7\x44\xa3\x7d\x3b\x70\xbc\x11\xd1\x7b\x51\xbe\x43\xf8\xdd\xd8\xf0\xef\x40\xf7\xc6\x70\xbb\x11\x91\x03\x54\x2f\x06\xaf\x8b\xc2\xe9\xe2\xc9\x0a\x22\x50\xac\x71\x3c\xee\x30\x0e\x17\x81\xbf\x45\xa7\x52\xed\xef\x69\x04\xce\x76\x5e\x03\x2b\x1e\x4f\x6b\xf0\xb2\xbd\xef\xc6\xe2\x68\x7d\x9c\x6c\xaf\xd8\x18\xfc\x6c\x0f\x3e\x76\xe8\x5e\xbc\x1f\x37\x8b\xc5\xc5\xf6\x4a\x1f\x3d\xbe\x8f\xb2\xa1\x22\x70\xb1\xa3\xf0\x30\xb0\x2c\x77\x76\xfc\xdc\x38\xd8\xc1\xc5\x7b\x18\xf7\x3a\x07\xde\x95\x84\x73\x35\x58\xd6\x9e\x11\x4c\xc4\xb7\x22\x86\x26\x6a\x31\xc4\xe3\x58\x5b\x58\xd5\xee\x31\x8a\xc2\xaf\x0e\xf4\x7e\x3f\x7e\xe3\x96\xd0\xe7\x1d\x7c\xd7\xbb\x20\x0c\xa0\xb7\xce\xa8\x80\x92\x6b\xb5\x02\xde\xb1\x80\xd9\xbc\xb2\xe7\x27\xab\xd6\xac\x64\x6a\x8b\x67\x6f\x6f\xdf\x0c\x53\xa5\xe7\x9c\xb8\x95\x05\xcf\xb6\x4c\xcb\xbe\xe3\x7d\xf8\x6b\xd0\x22\x4a\x16\x01\xc5\x28\x98\x09\x8a\xa9\xa9\x55\x46\x0d\x5d\xd0\xad\x7b\xe0\xde\x1e\xd5\x55\x4e\x0d\xbb\x73\xc7\xef\xe1\xee\xf4\x7f\x3a\xe0\x73\xb9\x33\xd4\xb0\x65\x5d\xdc\x31\xf3\x4b\xef\x77\x5b\x53\x07\xd6\x70\xf0\x26\xb3\xb2\x2a\xe4\xc6\xe5\x53\x39\xf9\x8e\xac\xd7\xeb\xfa\x8e\x54\xb7\x1b\x28\x51\xcc\xf9\x80\xb7\xe4\x72\x7b\x1c\xe4\xb0\xd4\x3e\x5b\xb1\x74\x9b\x69\xe5\x90\xc5\xaf\x64\x51\x70\xb1\x72\x9d\x1f\x5d\xf3\x9f\xba\xbf\xb6\xaf\x06\xd2\x61\xb8\x47\x96\x65\x2d\x60\x60\x5a\x46\x5e\xa0\x95\xdc\xed\xa7\x0d\x14\xea\x3d\x81\x9d\xcf\x0e\xc3\x68\x7f\x97\x72\x1f\x05\x7a\x0a\xe8\x73\xcc\xd1\x7d\x1b\x7e\x3d\x98\x5d\xa9\x72\x2e\x68\x41\xec\xcc\x85\xa2\xc2\xdd\xc9\xd9\x7b\x6c\xb5\xe9\xee\x4d\x47\x3a\x05\xeb\xdb\x02\xc1\xdf\x9d\x33\x07\xf9\xe0\xd9\xb7\x8f\xfc\x7e\x07\xd1\x7d\x9f\xc0\xc8\x2b\xfe\x83\x8b\x7f\xf7\x57\x85\xaf\x1f\x4e\xfb\xa9\xd4\xdc\x83\xd5\xb2\xdb\x33\xde\x57\xda\xee\x37\xf6\x0b\xde\x4b\xb1\x92\x6f\x7e\xf4\x78\x5c\xce\xdc\x8e\x1c\x76\x66\x4f\x47\x76\xd9\xc4\xb3\xd0\x83\xff\x35\xd2\x59\x6d\xa8\xa9\x7b\x0b\x77\xdf\x72\x96\x0b\x60\xb3\xcb\x7f\x66\xc2\x6b\xbb\x83\x5f\xb7\xfd\xf3\x70\x34\x95\x52\x1b\xa2\x58\x66\x6d\xc5\x55\xfb\xaf\xe1\x81\xad\x19\x70\x90\x0e\x1c\xeb\x0d\xaa\x68\x48\x26\x95\x62\xba\x02\x0a\x15\x7f\xb4\x85\x7f\xbf\xd0\x1d\xb9\x9e\x26\x64\x97\xae\x72\xda\x2e\x27\x52\x90\xb2\x76\xee\xb8\x60\x1d\x5c\xdf\xde\x10\x17\xc5\x30\x9c\x84\x43\xe4\x1b\xfb\x77\x41\xb5\xa6\x7a\x6b\x8d\xef\x5d\x58\x8a\x51\xbd\x3d\xbc\x7b\x7e\xbe\x63\x5a\x07\x7f\x0a\x8b\x91\x3c\x7c\x0f\xb8\xf0\xf7\xed\xdf\x60\x8e\x1d\x76\xd1\xfb\x67\x47\xd7\xc7\xf2\x4e\x09\xf7\x10\x78\xe0\xfe\xf2\xff\x05\x00\x00\xff\xff\x42\xec\x50\x63\xa5\xd4\x13\x00") func kubedbCom_mongodbsYamlBytes() ([]byte, error) { return bindataRead( @@ -624,12 +602,12 @@ func kubedbCom_mongodbsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_mongodbs.yaml", size: 498404, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_mongodbs.yaml", size: 1299621, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_mysqlsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x5d\x8f\xdc\xb8\xf2\x1f\x7c\xbf\x9f\x42\x17\xcf\xc5\x93\x00\xb3\xc9\x79\xc1\x41\xe2\x9b\xc0\xc7\xf6\xee\xdf\x59\x7b\x3d\xf1\xd8\xbb\x01\x0e\xfe\x01\x38\x12\xa7\x9b\x19\xb5\xa8\x25\xa9\x79\xd9\x20\xdf\x3d\x68\x69\xd4\x2f\x33\x2d\xd6\xaf\x28\xaa\x5b\x6d\xb3\xae\xec\x69\x89\xa4\x8a\xc5\xaa\x62\xb1\xf8\x2b\x51\xab\xdf\xa4\xb1\x4a\x57\xaf\x32\x51\x2b\xf9\xe0\x64\xb5\xfe\x9f\xfd\xf1\xf6\xbf\xd8\x1f\x95\xfe\x4f\x77\x7f\xb9\x96\x4e\xfc\xe5\x87\x5b\x55\x15\xaf\xb2\x37\x8d\x75\x7a\xf5\x59\x5a\xdd\x98\x5c\xbe\x95\x37\xaa\x52\x4e\xe9\xea\x87\x95\x74\xa2\x10\x4e\xbc\xfa\x21\xcb\x72\x23\xc5\xfa\x8f\x5f\xd4\x4a\x5a\x27\x56\xf5\xab\xac\x6a\xca\xf2\x87\x2c\x2b\xc5\xb5\x2c\xed\xfa\x99\x2c\x13\x75\xfd\x2a\xbb\x6d\xae\x65\x71\xfd\x43\x96\x55\x62\x25\x5f\x65\xab\x47\xfb\x47\x69\x7f\xec\xfe\xfa\x63\xae\x57\x3f\xd8\x5a\xe6\xeb\xe7\x45\x51\xb4\x1d\x89\xf2\xd2\xa8\xca\x49\xf3\x46\x97\xcd\xaa\x6a\xdb\xba\xc8\xfe\xfb\xd5\xa7\x5f\x2f\x85\x5b\xbe\xca\x7e\x5c\xbf\xf0\xe3\x5d\xf7\x49\x6d\x3f\x5d\xcb\xbf\xed\xfc\xc5\x3d\xd6\xf2\x55\x66\x9d\x51\xd5\xe2\xc5\xeb\x4e\xb8\xc6\xfe\x58\x2f\x85\x95\x3b\xaf\x5f\xb5\x7f\x26\xdf\xee\xb9\xf0\xe3\x0b\x16\xec\xb4\xf5\x7a\x21\x77\x1a\x2a\x84\x5b\xff\x77\x61\x74\xb3\xe1\x47\xfb\xe5\xdd\xe3\x4f\xcc\xca\x85\x93\x0b\x6d\x54\xff\xff\x8b\xf5\x7b\xc2\x3a\x6d\xe4\xd3\xff\x37\x9c\x5c\xff\x47\xd4\xb5\xcd\x75\xd1\xff\x26\x5a\xe6\x67\x59\x37\x87\x1f\x1f\xaf\xfe\xc7\x87\xf6\xff\xa5\xb2\xee\x97\xed\xdf\x3e\x28\xeb\xda\xbf\xd7\x65\x63\x44\xd9\x4f\x47\xfb\x27\xbb\xd4\xc6\xfd\xba\x1d\xd0\x45\xb6\x7a\xec\x7e\x50\xd5\xa2\x29\x85\x79\x7a\xfa\x87\x2c\xab\x8d\xb4\xd2\xdc\xc9\xaf\xd5\x6d\xa5\xef\xab\x9f\x94\x2c\x0b\xfb\x2a\xbb\x11\x65\xcb\x52\x9b\xeb\xf5\x77\xb7\x6d\xd5\x22\x97\xc5\xfa\x6f\xcd\xb5\x79\x92\xa9\xa7\xf6\xbb\x79\x78\x95\xfd\x9f\xff\xfb\x43\x96\xdd\x89\x52\x15\x2d\x3f\xbb\x1f\x75\x2d\xab\xd7\x97\xef\x7f\xfb\xdb\x55\xbe\x94\x2b\xd1\xfd\x71\xdd\xb1\xae\xa5\x71\x1b\x26\x75\x52\xb6\x91\xef\xcd\xdf\x5e\xcc\x61\x47\x2d\x77\xa8\x87\x76\xe5\xbc\xa7\x43\xfd\x6e\xa6\x7b\xef\x2f\x59\xb6\x12\x0f\x1f\x64\xb5\x58\x4b\xcb\x3f\xfe\xf6\xec\xb7\x5a\x38\x27\x4d\xf5\x2a\xfb\x5f\xff\x12\x17\x7f\xfe\xfb\xff\xff\xaf\x0b\x71\xf1\xe7\x7f\xbe\xf8\xaf\xff\xfe\x1f\xff\xf5\xf4\x8f\xff\xf0\xdf\xfe\xbf\x67\xef\x1c\x1c\x64\xff\x67\x7d\xfd\xbf\x65\xee\x36\x7f\xee\xd7\x12\x35\xee\x6b\x91\xdf\x36\xf5\x9a\xb7\x45\x53\xbe\xf8\x82\xa1\xb7\x5a\x6e\xff\xd9\x98\x17\x2f\x50\x2f\xad\x29\xd7\x95\x13\xaa\x92\xe6\xf0\xcf\x83\xdf\xb9\xa5\x95\x78\x78\xa3\xab\x4a\xe6\x6b\x31\x19\xe8\x25\xcb\x6e\xb4\x59\x09\xf7\x2a\x53\x95\xfb\xc7\xdf\xbd\x5d\xad\x95\xcc\x42\x9a\x83\xcf\xd4\x46\xde\xa8\x87\xc0\xa1\x1e\x9c\x9a\x9e\xae\xff\x1a\xc2\xbd\xeb\x26\xbf\x95\xee\x3b\x67\x5d\x6e\x74\xf5\xee\x61\xad\x7c\x9e\xaf\x76\xa8\xf5\x45\x7e\xf0\xcb\x13\xeb\x77\x7f\x1e\x60\x7d\xa9\x73\x51\x86\x70\x4f\xdc\xdb\x77\xa5\xb0\x4e\xe5\xff\x2c\x75\x7e\x7b\xb5\xb6\x67\x43\x03\xa4\xda\x5a\xd3\x8d\xfd\xb2\x1e\xe7\xe0\xef\xc0\x8c\xb4\x5d\x09\xe3\x94\x1b\x90\xa2\x4d\x5f\xdb\x49\xf9\xdb\x5f\xc9\x1e\x7d\x13\xb3\x26\x23\x45\xf1\xa9\x2a\x1f\xe9\xb1\x5f\x6b\x5d\x4a\x51\x0d\x3e\x77\xb7\x76\x8c\xe4\xfb\xb7\x23\xb9\x60\xe4\x1f\x8d\x32\xb2\x18\x6a\xe6\x62\xd3\x91\x57\xa0\x06\x24\x26\xeb\x8d\xc5\x5b\x65\x6f\xc7\xcc\x78\x2e\xf2\xa5\xaa\x16\x1f\x75\x31\x7e\xda\x0b\x65\x6f\x7f\x3d\x60\xb3\x83\x1a\xfa\xfa\xf9\xfd\xe8\x76\x22\x89\xf3\x73\xc7\x26\xa8\x91\x58\x02\x4a\xcb\x55\x3f\x0d\xde\x07\xbe\x7e\x7e\x3f\x4a\xee\x7e\x52\x2f\x3d\x9b\x9e\x10\xb9\x8b\xb7\x5e\xad\xcc\x8d\x74\x51\xe4\xce\x2e\x85\x91\x11\x5a\xa2\xe7\x68\x3b\xe8\xe1\x47\xfa\xc1\x84\xce\x53\x2e\xeb\xe5\xcd\xe0\x14\x20\x93\xb4\xd2\x95\x72\xda\x78\x9e\xc8\x32\xe5\xe4\xca\xfb\x00\xc8\xfb\xfe\x31\x61\x8c\x78\xf4\x58\x16\xb7\x9c\xcd\x52\xec\x65\xcf\xb7\x16\xe0\x41\x75\x4d\x7d\x96\x37\xbe\x96\x90\x49\xcb\x06\x76\x4e\x41\xa3\x02\xc4\x6c\x4d\x8d\x1d\xde\x79\x80\x7d\xd1\x6b\xa6\x97\xc6\xe0\xf5\xa0\xaa\x62\x78\x98\x47\x74\x8f\x62\xcb\xdf\x99\x0a\xcd\xd9\x38\x5a\xb9\xae\x6e\xd4\xe2\xa3\xa8\xc7\xc8\x4e\x21\x6f\x44\x53\x3a\xca\xd1\x8a\xeb\x15\x93\xca\x19\xd0\xde\xa8\xf8\x64\xd9\xad\xf4\x8a\xf4\xee\xc0\x49\x09\xca\x5a\xf3\xe3\xe7\x55\x47\x28\xc7\x76\xbb\xa7\xf8\xd6\x11\x65\x6c\x76\x5b\x04\x3e\x88\x12\xd4\x8e\x2e\xd6\x6c\x24\x9e\x58\x0f\x0c\xb0\xb8\xc4\xfa\xc3\x2c\x2e\xa5\x15\xa0\xcf\xd7\x75\x17\x7b\x1e\xab\xf1\xe8\xa5\x6a\xd5\xa8\x45\x6a\xd4\xdd\x68\x4b\x16\xcd\x4e\x54\xba\x90\x97\xcd\x75\xa9\xec\xf2\xea\x9c\x15\x7d\xec\xbd\xf9\x6b\xe7\x8c\xba\x6e\x9c\xff\x3b\x77\x4f\x3c\x30\xbe\xc4\xfb\x66\x60\x93\xd6\x4a\x5a\xa8\x98\x17\xfa\xbe\xba\x17\xa6\x78\x7d\x39\xb8\x49\x4e\x36\xa9\x1b\xbb\x92\x65\x41\xac\x1b\x6e\x9b\xd9\xe0\xb9\xc8\x30\x31\xcc\xde\x66\xd8\x97\x90\xfd\x61\xb7\x8e\xd9\xa1\xac\x15\xd3\xcd\x38\x40\x33\x48\x9a\x9c\xec\xdb\xb3\xeb\x6b\x8e\x76\x67\x6f\x3f\x4d\x24\x6c\x9b\xd3\x1d\x2a\x36\x11\x34\xfa\xac\x8d\xb8\xdd\x29\xab\xbd\x96\x2f\xb8\xed\x9e\x3b\x27\x16\xe5\x7e\x18\xf1\x24\x19\x75\xe8\x8e\xe7\xae\x91\x0d\xc9\x55\xed\x1e\xdf\xaa\x51\xbb\xe0\x95\x2c\x54\xb3\x1a\x1f\xf0\x50\x7f\xca\x0f\x6a\xa5\x06\x0f\x7f\xc0\x96\xc8\x6f\xbe\xc9\x67\xb0\xe7\x2f\x9b\xb3\x3c\x0c\x71\xc2\x2c\xa4\xfb\xfd\xf7\x5f\x67\x14\x03\xbc\xbf\x57\xc5\x6c\x86\x43\x4b\x5f\x29\x1f\x7e\x6b\xdd\xd6\x6f\x67\x63\xd2\x6d\xe7\x66\xeb\x7d\xa7\x08\x5b\x4b\x53\x6f\x42\x6e\x4a\x9d\xdf\x8e\x0b\xa8\xb6\x49\x58\x91\x0e\x6f\x9e\xda\xfa\xfa\x75\x74\x44\x91\xfc\xf2\x45\x2e\x2f\xd7\xce\xbf\x75\xb2\x72\x63\x4f\x60\xcf\xf7\xcc\xbd\x2e\xa2\x4c\xdc\xf1\x4e\x46\xbb\x01\x07\xcf\xba\x72\x9f\x65\xad\x47\xc9\xbb\x32\x32\x77\xda\x00\xdf\x4a\x32\xad\xd6\x56\x45\x6a\xea\x4e\x51\x1b\xd9\x28\x71\xf8\xed\x98\x83\xa7\xa0\x6c\xac\x93\x66\xdc\xa9\xa6\xac\x8a\x5a\xab\xca\x79\x95\x35\xb8\xe6\x66\x74\x1a\x49\xf3\x7f\xf3\xe1\xc3\x0b\x64\x78\xa7\x42\xce\xcd\x52\x5b\xe7\x8b\x58\x20\x53\x13\x85\xa1\x6e\xbc\x3a\x05\x54\xc9\x08\x4e\x29\x3b\x32\x4c\x9d\x2f\x45\xfd\xba\x71\xcb\xb7\xca\xe6\xfa\x4e\x22\x3a\x80\xf2\x73\xfa\x26\xaf\x86\xd3\xff\x78\x0d\x46\x32\x6b\x6d\x7e\xbc\x70\x9a\x0c\x7d\x60\xad\xfd\x31\x56\xcb\x3d\xcd\xde\xfb\x6a\xad\x86\x84\x3f\xa8\x31\xbf\x8d\x61\xad\x8d\x13\xe5\x6c\x36\x4f\xc9\x51\xef\x1f\x6a\xb7\xd9\x97\xed\xec\x4c\xae\xba\xd4\x1f\x43\x5c\xbc\x58\x4b\xe3\xe0\x6f\xbb\x83\x0c\x55\x7d\x2b\xdd\x54\x5e\x2b\x41\x7e\x61\x35\xce\xf8\xcf\xca\x64\xaf\xa5\xd6\x8c\xdf\xd7\x8f\xb2\x56\x17\x4f\x63\x08\x9d\xd1\x7a\xb3\x11\xea\xa2\x1c\x6f\x4a\xa1\x06\x83\x83\x90\x71\x5b\x37\x70\x66\x1b\x8b\xcd\x98\x83\xb9\xb8\xd4\x4e\x57\xf3\xdb\x54\x16\x47\x48\xcf\x59\x77\x12\xcc\x37\x6d\xdc\xbd\x36\x11\x22\x6c\xb3\xcb\xed\x3a\x9b\xf4\xa8\xda\xe8\xf5\x6f\xc3\x5d\xcc\xf6\x28\x7a\xef\xc6\xdc\x61\x8a\x7a\x18\x4d\x26\x92\x85\x34\x0a\x8e\x32\xe0\x51\xee\x28\x3a\x82\xb2\xc0\xb6\xc4\x3c\x4c\xec\x08\x3b\x41\xde\x12\xef\x2c\xf9\xf9\xe0\xb0\x53\xe5\x2d\x61\xe7\xcb\xcf\x7b\x61\xb1\x00\x3f\xf8\xec\x88\xce\x2a\xdb\x7d\x96\x3c\xb0\xdc\x12\xe3\xd8\x7f\xf7\x05\xff\xae\x60\x4b\x88\x23\xbe\xdb\x2e\xcc\x44\x24\x23\xed\x79\xe3\x94\xc6\xde\x7f\x1a\xe2\x09\x90\xc8\xb3\xa5\xf3\xd5\x09\x78\x16\xce\xb8\x7e\xb2\x80\xcc\x9c\x2d\x05\xa9\xa2\x8c\x9f\xad\x33\xba\x47\xee\xea\xcf\x98\xb9\x3c\xcf\x07\xc8\x58\xde\x59\xd2\xce\x59\x50\x46\xd0\xce\x00\x03\x05\x3f\x20\x4b\x68\x4b\xc1\xb2\xcf\xca\x1c\x8a\xd0\x1f\x2f\x9b\x68\x74\x87\x61\x4b\x0d\xce\x35\x7a\x3e\x3e\xd6\x4a\xe3\x3b\x01\x73\x31\xec\x8c\xc6\xbb\xb8\xde\xb7\x6c\x1c\x93\xc3\x9c\x1c\x66\xf2\x85\xe4\x30\x77\x64\xa5\xb9\x53\xb9\x7c\x9d\xe7\xba\xa9\xdc\x17\x7d\x2b\x01\x37\x8f\x99\xda\xdd\x14\x4a\x56\x93\xe4\xab\x66\x99\x7c\xa8\x95\x69\xa1\x78\xae\x64\xae\x2b\x7f\x22\xdb\x96\x10\x04\x8b\x43\xe3\xc2\x57\x22\xbe\x06\x27\xcb\xd0\x85\x56\x11\x2c\x2b\xd1\x92\x6a\x81\xdb\xdc\x5d\x1c\x29\x34\x80\xf6\x47\xa3\xaf\x1f\xdd\xa8\xe8\x65\x07\x7f\x35\x9f\xe0\xa5\x91\x0b\x65\x5d\x84\xe4\x14\x27\x2b\x51\x8d\x4d\x11\x8e\x72\x41\xb9\x8f\xc8\x1e\x21\x4d\xa6\xe3\x1d\x11\xb0\x0d\x95\x36\x73\x3d\x2a\x50\x1b\xeb\x5c\x7f\x25\x16\x11\x90\x39\xe4\xe3\xfa\xf7\xd1\xed\xcc\x10\xe8\x40\xeb\xb1\x27\xc1\xe9\x74\xfd\x89\x8e\x82\x4e\xd0\x0a\xf4\xe0\xaf\x63\xb1\x0b\x6c\x2e\x4a\xf9\xfe\xd3\x0c\x16\xee\x42\x38\x79\x2f\xc6\x2b\xf6\xda\x68\xd7\xc1\x76\xbd\xd5\x2b\xa1\xc6\xe7\xe5\x24\x61\xef\x06\x6f\xcb\x77\x95\xb8\x2e\xfd\x2e\x17\xc8\x08\xa7\x8d\x58\xc8\x28\xe0\x50\x4f\x6d\x5d\xc6\xd0\x6b\xf6\xd1\x3a\x39\xfe\x06\x52\x67\x47\x8f\x82\xf7\xf3\xb4\x6a\x86\x3d\xc8\x5e\xe4\x86\x9f\x68\xbf\x39\x58\x7f\x78\xa3\x28\xb3\x3d\xa0\x4d\xf8\x15\x87\xbb\x4f\xf8\x15\x3b\x8f\xf9\x1d\xa9\x58\xd0\x13\x11\x81\xc6\xe8\xd5\xda\xe9\x4a\x3d\x2a\xd3\x6d\x76\x09\x2d\x67\x6d\x56\xa3\xd9\x8a\xdd\xa6\x5a\xfc\xe6\xc9\x85\xa9\xb9\x1e\x95\x70\x79\x67\xeb\xa5\x34\x72\x36\x19\x56\x1b\x47\xa2\x54\xf9\xe3\xe8\xf4\xa8\x67\xed\x45\x9c\x60\xea\x3c\x38\x62\xee\x96\xe7\x50\x97\x10\x0f\xef\xcf\xb5\x2e\xbe\xc8\x55\x5d\x8a\xc3\xb1\x29\x04\x93\xda\xe8\xb2\x1c\x77\x45\x50\x54\x95\x76\x62\xd6\xf7\x4d\xe9\xac\xe7\x03\xa0\xe7\xbb\xf4\xbd\xf0\xe1\x39\x80\xfa\x2e\x41\x3c\xb8\x69\xeb\x25\x78\x6d\x11\x6c\x40\x74\x21\x5f\x03\xed\x71\xda\xcc\x9e\x50\xa2\xa5\x31\xb2\x78\xdb\xac\x39\xfa\x84\x02\xaf\xaa\xc5\xfb\x45\xa5\x37\x7f\x7e\xf7\x20\xf3\x86\xba\xad\xd9\x13\xe3\x04\x92\x7f\xfe\xd8\x8d\x17\x3f\xef\x08\xeb\x25\x6b\xb1\xba\x5d\xbe\xdc\x22\x8c\x33\xb3\x1b\x58\xc7\xb0\xe3\x06\xda\x11\xf3\x58\xb6\xa7\xe0\xc4\x86\xac\x2b\xcc\x60\x84\xe3\x67\x53\x8c\xee\xf8\x4e\x94\x4d\x08\x93\x02\xe7\xa5\xa3\x51\x23\xe6\x1e\x8c\xee\x52\x48\x52\x47\xc6\x3c\x14\xde\xbe\xd3\x4f\x2a\xf3\xc5\xa0\xd4\xab\x2c\x98\x2f\xed\xea\x7c\xaa\x35\x92\x16\xe6\x73\x4a\x0b\x93\xfd\x7a\x5a\x98\x87\x5f\xe4\xf1\x25\xa0\xb3\x7b\xa9\x16\x4b\x20\x63\xaa\xa7\xb0\x5c\x1f\x7e\xa6\x0f\x6f\x72\x2f\x76\x3c\x13\xf0\x85\xee\xc3\xa1\x87\x99\x6c\xe5\xcc\x5c\xff\x99\xf1\xfc\x3f\xae\xb2\x5c\xbb\xb6\x57\xb2\x6c\x91\x26\xbe\x48\x83\x6b\x01\xa6\xca\x48\x6e\xe0\x30\x25\x6b\x03\x53\xb2\x36\x3e\x4a\x6e\xe0\x00\xa5\x85\x09\x51\x5a\x98\xd4\x3b\xe7\xb0\x30\x03\x3a\xe3\x75\xc3\x61\xf9\xc5\x4b\x0f\x03\xf6\xa1\xa0\x4f\x80\x1f\xad\x75\x91\x62\x78\x7b\x6c\x58\xcf\xc6\xd4\x1e\x5c\x5b\x85\xb6\x9f\x7e\xde\x1a\x0d\x57\xf8\xe3\xdc\xc6\x6c\x8c\x26\x1c\x63\xa5\xb2\x70\x4b\x95\x8d\x57\xc1\xe3\x2c\x56\x94\x01\x84\x5b\xae\x6c\x9c\xf5\xca\x62\x8c\x7e\x8c\x15\xcb\x46\x58\xb2\x2c\xd0\x9a\x65\x63\x2c\x5a\x36\xc6\xaa\x65\xa3\x78\xd5\xae\xee\x0f\x3b\xd5\xad\x39\xc4\x3f\xf3\x3a\x4c\xa3\xa4\x65\xa4\x3b\xc0\x7e\xb1\xea\xf3\x07\x8e\xe1\xa7\x07\x73\x26\x4c\x22\x9c\xae\x75\xa9\x17\x8f\xbf\x70\x15\x67\xe0\x5d\x5d\xee\x1a\xbd\xd8\x1d\x61\x0a\xe5\x51\x74\xf1\xdc\x41\xf9\xce\xe3\x79\x93\xfa\x82\x81\xce\x59\x8a\xe5\x0d\x53\x0a\x19\xc0\x94\x42\x06\x3e\x3a\x45\x2c\x2f\xc4\xa9\x8a\xe1\x50\x8d\x74\x19\x98\x4c\x0a\x78\x29\xc4\x81\x62\xaf\x8c\x20\x2e\xf0\x67\x3b\xc8\x61\x62\x8f\x8d\x6b\xf5\xb9\x4e\xd2\x64\x46\x9c\x15\x4f\xaa\x9c\x4a\x31\xa5\x14\x53\xc2\x28\xc5\x94\x4e\x31\x80\x14\x53\x4a\x31\x25\x9a\x52\x4c\x29\xc5\x94\x76\xde\x4a\x31\xa5\x8e\x52\x4c\x29\xc5\x94\x52\x4c\x29\xc2\x40\x3b\x4a\x31\x25\x88\x52\x4c\x89\x7a\x27\xc5\x94\xc0\x21\xa7\x98\x52\x8a\x29\x9d\x4d\x4c\x09\x7a\x4c\x98\xc5\x8c\xa0\xa7\x64\x75\x37\x72\x30\xb8\x3d\xc5\xe0\x2a\x19\x52\xd5\x5a\xa8\xf8\x2d\xfe\x64\x34\x10\x02\x63\x57\x75\xef\xaa\x41\xfc\x22\x1f\x61\x88\x68\xbe\xab\xc2\x72\x50\x02\x74\x0b\x8e\x38\x1a\xd8\x01\x0f\x79\x34\x83\xf1\x28\x76\x89\xab\x86\x50\x03\xcf\x54\x3f\x3c\x9c\x7c\xbe\x2c\x84\x60\xe3\x07\xcc\x58\x00\x1e\xfe\xe4\x86\x83\x87\x7e\xcf\x9c\xb7\x30\xb8\x77\xfe\xfc\x05\x42\xbc\x07\x4c\x21\x1b\xd6\x3d\xa0\x0f\x3e\x94\xfb\xe4\x52\xc2\x02\x6e\x67\x0a\x49\x87\x7f\x93\x94\xbd\x97\xbe\x1b\x65\x0f\x3f\x8c\xc2\x6e\x55\xc3\xe5\xe7\x58\x3d\x22\x2e\x62\x0b\x76\x79\xd9\x94\xe5\x55\x2b\xd3\xc7\x83\x68\x8b\xec\x2f\xc6\x64\x49\xa5\xdc\x9b\x5e\x3d\x1f\x8f\x21\xd4\xd6\x01\xee\xb2\x23\xd6\x8a\xc5\x37\x4b\xb9\x5e\xad\x44\x05\x2c\xb8\x53\x0f\x94\xd8\xfb\x30\x07\xc9\xbe\xb8\xcb\xd0\xae\x6c\xdd\x0a\xee\x8c\xc6\xb4\x8e\xed\x92\x3a\x0a\x89\xb9\x06\xed\x98\xc2\xbb\xcb\xc2\xc2\xbb\xc1\x51\x2a\x9e\x71\x1d\xd9\x19\xdf\xd0\xee\x76\xc8\x31\xb7\x1d\x85\x15\xd2\xe1\x05\x52\x83\xc2\x7c\xa9\x36\x59\xd4\x1e\x67\x5e\x9b\x2c\x15\xe6\x9a\xaa\xbf\x54\x98\x6b\x87\xf8\x7b\xbd\x8e\x92\x99\x7a\x46\xc9\x4c\x85\xbc\xc2\xbc\xcd\x4d\xed\x1c\x03\xc6\xc0\x72\xb9\x31\xbf\x71\x32\xb7\x7b\xe3\x56\x32\x16\x6b\xc8\x42\xe5\x2e\x9c\xa0\x45\x13\xb2\x60\x42\x16\x0b\x5b\x88\x6b\x23\x6f\xd4\xc3\x64\x1b\x10\x08\x5d\x7a\x7f\x3c\x69\x06\xf9\x47\xa3\xd1\x97\x3f\x59\x08\x68\xb7\x41\x88\x93\x9b\xe0\x54\x07\xe9\x1c\xb5\xed\x52\xdd\xc8\xfc\x31\x2f\x81\x11\xf3\xe4\xab\xd6\xd6\x5d\x39\x61\xc0\xc4\x3c\xbe\xf0\xca\x87\x61\xec\xdd\x18\xed\x67\x9c\x30\xcf\x2e\xcd\x3f\x79\x34\xc0\x5e\x2f\x9d\xab\x7f\x46\xca\x96\xf6\x14\xc6\xf0\xa5\xb6\x8c\x3e\xb2\x70\xc6\xad\xbf\xe7\xdf\xa4\x28\x88\xd0\xe6\x4b\x3a\x7a\x3e\x5e\x88\x77\x9a\x45\xc9\x8b\x3b\x72\xaf\xe1\xd9\x69\xa0\xbf\xb7\xff\x52\xfb\x89\x41\xab\xf4\x68\xb9\x69\xdc\x32\xb2\xc1\xec\xaf\x35\xaa\xa7\x7b\x12\xd5\xe3\x27\xd6\x46\xb0\xcd\x75\x62\xe7\x50\x3f\x7f\x37\x40\xb0\x1e\x2e\x6e\x9b\x6b\x69\x2a\xe9\xa4\xbd\x50\x95\xbb\xd0\xe6\xa2\x6b\xe6\x55\xe6\x0c\x4b\x04\x6c\xbe\x94\xdc\xc5\x78\xb4\x6c\xfb\xf5\x1c\x4e\x69\x01\x5c\x5e\x5f\xe9\xfc\xf6\x1b\xb2\x01\x49\xea\x01\x9a\x9f\x28\x32\x5f\xa8\x8d\xbc\x72\xda\x5b\x4b\x76\xf7\xe1\xe4\x86\x26\x37\x34\xb9\xa1\x2f\x29\xb9\xa1\x04\x25\x37\xf4\x79\x3f\xc9\x20\xef\x50\x72\x43\x07\x47\x95\xdc\xd0\x24\xf5\x14\xcd\x4f\x14\xa7\x49\x8e\xcc\xb2\x52\xdd\xc9\x4a\x5a\x7b\x69\xf4\x75\xf4\xa8\x2c\xee\xad\x86\xe4\x72\x33\xbd\xd4\x79\x5e\x14\xe3\xde\x70\x10\xaa\x6c\x8c\xfc\xb2\x34\xd2\x2e\x75\x09\x7e\x3e\xff\x0e\x3a\x77\xf9\xb2\x3c\x65\xfe\x64\xf3\xb4\x63\xc0\xc4\x05\x79\xc6\x6c\x89\x0a\xf5\x88\x8f\x9a\x32\x10\xe4\x05\x1f\x35\x0b\x85\xe9\xf9\xf2\xbd\xde\x11\xf7\x5d\x39\xde\x2e\xcf\xd3\x0d\x60\x31\xcf\xd6\x33\xed\x7c\xa8\x8d\x0f\xb4\xef\x91\x6c\x3b\xd7\x9b\x9d\xfc\xca\x0c\xec\x36\x30\x85\x52\x55\xca\x29\x51\xbe\x95\xa5\x78\xbc\x92\xb9\xae\xd0\x8a\x24\xd3\x1b\x8b\x5a\x1a\xa5\x8b\x99\x0d\xca\x36\x79\x2e\xad\x9d\x9d\x65\x65\xee\x40\x66\x68\x5b\x93\x16\x7a\x46\x73\x51\x11\x4e\xad\xa4\x6e\xdc\xac\x16\x22\xe3\x13\xa2\x5f\x7e\x5f\xf3\x39\xe6\x6d\xa0\x80\x44\xba\x2e\xd1\xf9\x92\xb1\x62\x42\xf0\xa5\xf8\x4b\x66\xad\x24\xde\x5f\x4e\x96\x7d\xb6\x6e\x7e\x7e\x1f\x3d\xe9\x7d\xa2\xda\x68\xa7\x73\x0d\xa7\xa9\x31\x3b\xe0\xa5\xb0\xee\x49\x1e\xa2\x39\xa6\x49\x66\x33\x52\x14\x2a\x45\x23\x0e\x52\x8a\x46\xa4\x68\x84\x97\x52\x34\x62\x6c\x6f\x29\x1a\x91\xf6\x01\x20\xa5\x68\x44\x8a\x46\xa4\x68\x04\x49\x33\xb4\xad\x49\x0b\x3d\xa3\xb9\xa8\x88\x33\x8f\x46\xf4\x57\x63\xa1\x5a\x16\x9c\x55\x51\xaa\x95\x42\xc2\x12\xd9\x48\x94\x50\xb6\x04\x06\x5c\xaa\x94\xf6\xfc\xbf\x84\xf1\xb0\x95\x79\x63\x94\x7b\x7c\xa3\x2b\x27\x1f\x00\xb5\xc3\x93\x0c\x51\x96\xfa\xfe\xd2\xa8\x3b\x55\xca\x85\x7c\x67\x73\x51\x0a\x14\xf0\x9a\x7f\xe7\x2d\x17\xb5\xb8\x56\xa5\xc2\x67\x22\x00\x60\xaf\x38\xfb\x2d\x74\x96\x15\x06\xcd\xff\xcd\x66\xfb\x15\xec\xac\xe7\x27\x21\x04\xa7\x8f\x2b\x7b\xb5\xd1\xf9\x47\xdd\x54\xa0\xe5\x66\xc7\xca\x44\xf1\xa9\x2a\x1f\x3f\x6b\xed\x7e\x52\xa5\xb4\x8f\xd6\x49\x10\x89\x87\xfb\x25\xa6\xa9\x5e\xdb\x9f\x8d\x6e\x40\x11\xd9\xb1\x70\xff\xf8\xfb\x24\x2e\x5d\x3b\xa2\x5f\x75\xb5\xfe\xfa\x09\xbf\xf9\xab\x95\x20\x98\xc6\xf4\x9f\x6c\xe5\x07\x55\x35\x0f\x9f\xda\x9b\xc2\xd3\xc1\xfe\xcb\x3b\xc9\x06\xe2\xe3\x21\x40\x6a\xe4\x26\xed\x88\x0e\xda\x57\xa6\xec\xa0\x81\xa5\x22\xa8\x03\xa6\x1a\xbb\x57\x55\xa1\xef\xed\xc4\x72\xb1\x58\x59\xf1\xc6\xc8\x42\x56\xeb\x2d\xf1\x55\xcd\xb9\xd1\x11\xc0\xe2\x97\xdd\x4d\x8e\x7e\xba\x59\xf0\x13\xf7\x34\x99\xdf\xe6\x84\x71\x4d\x9d\x4e\x21\x5e\xd0\x1c\x9d\x8f\x74\x0a\x01\x50\x3a\x85\x48\xa7\x10\x7b\x2f\xa4\x53\x08\x84\xbe\x83\xf8\x5f\x3a\x85\xa0\x29\x9d\x42\xcc\xca\xb2\xa6\x53\x08\x2f\x9d\xa3\x16\x9a\x8b\x8a\x38\xf3\x53\x08\xeb\x0a\x05\xc4\x7f\x39\x11\x9c\xb6\xc9\x4f\x15\x82\x4c\xca\x69\xd6\x49\xb3\x52\x55\x1b\xaf\xfe\x28\xad\x15\x0b\x89\xa1\xec\x32\x44\xf4\x40\x17\xf1\x21\xcd\x1c\x5d\xe7\x9c\xc7\x98\x3b\x5d\x36\x2b\xf9\x56\xde\x29\xe8\x30\x69\xb2\x6c\xd4\xa2\x1d\x01\x07\xfa\x98\xad\x3d\x26\x4c\xb0\xe4\xe5\x3f\x6e\xbf\x15\x7a\xfc\xb4\x88\x9f\x9d\x80\xb4\xe1\xf0\x53\xca\xc7\x6a\x3d\x80\x49\xc5\xa3\xeb\xc1\xe8\x5a\x2c\x18\xe7\x5a\xf3\x92\xc3\xed\xe9\x02\xaf\x03\x0e\x16\xa5\x6d\xae\x27\x9d\x87\xa7\xf6\xdf\x3d\xd4\x70\xac\x76\xd2\xd5\xba\x91\xbc\x33\x58\xac\xf7\xda\xdc\xaa\x6a\xf1\x56\x01\xac\x83\x99\x36\xc7\x9a\x36\x10\xb4\x27\xaa\x63\x60\x38\x4f\x8e\xd2\x42\x23\xaf\xfc\x6b\x1b\xac\xa8\x2b\x33\x42\x16\x7a\x6a\x03\x47\x5d\x58\x82\xcf\x88\x69\x72\xd9\xc8\xd9\x73\xf1\x2f\x98\xf0\x63\x99\xcc\x79\x0a\x8b\x63\xf2\xa3\x98\x81\x51\xc5\x80\x08\x66\x50\x4f\x21\xc8\x19\xac\xd8\x25\x37\x72\x19\x10\xb7\xe4\x46\x2d\x39\x31\x4b\xfe\x3d\x21\x46\xa4\x80\x15\x27\x08\x8b\x12\x04\xc5\x08\xa2\x44\x08\x78\x51\xca\x49\x1d\x10\x30\xf8\xc0\x73\x29\x38\x31\xad\x59\xe9\xd6\x24\xa1\x2d\x9d\x5a\x84\xe0\x47\x41\x88\xca\xe4\x5a\x0d\xbe\x92\x5c\xab\xdd\xc6\x93\x6b\x95\x5c\xab\xe4\x5a\xed\xd2\x79\x19\xae\xe4\x5a\xed\xd2\xac\x74\x6b\x92\xd0\x96\x4e\x2d\x42\xac\x30\x19\xf1\x18\x0c\xb8\x88\x0a\x22\xe2\x7b\x71\x84\x9a\xe1\x73\x31\xec\x38\x53\x70\x70\x3b\x01\x4f\x23\x37\x4d\x90\x73\xaa\x8b\x2f\x26\xd0\xcb\xe3\x4c\x18\xaa\x81\x58\x53\xc0\xf4\xea\x18\x92\xc0\xf7\xe6\x26\xaf\x9a\xcf\xf4\xe0\x26\xcf\x7f\x82\xbd\x36\x8e\xc7\xc6\x4d\x84\x60\x78\x6a\xa8\x97\xc6\x62\x1c\x6a\xfb\x60\xbb\xc7\xb7\x79\x6c\x7b\x37\xda\xd6\xe1\x9e\x18\x63\x64\xa8\xf8\x41\xa6\x13\x16\xa3\x80\x64\xbb\x69\x54\x2e\x2b\xb5\x6e\x9a\x21\x70\x13\xe9\xa6\x19\x05\xec\x07\x9f\xdc\xfa\x7c\x87\x6b\xff\x34\x8b\x94\x97\xee\x36\x85\x58\x42\x43\xad\x74\x21\xaf\x64\x29\x73\xe7\xaf\xc8\xcd\xbf\x35\x0e\x4e\x32\x34\xca\xda\x28\x6d\x94\x3f\x1f\x0c\x65\x21\xc6\xbe\xbe\xc7\x37\xa5\xb0\x96\xba\x6c\x05\x7d\x2a\x0e\xc1\x96\xf6\x27\x69\x7f\x92\xf6\x27\x59\xda\x9f\x78\x1f\x4d\xfb\x93\x6f\xc8\x47\x49\xfb\x93\xb4\x3f\x99\x70\x14\x69\x7f\x32\xe3\xb5\x9f\xf6\x27\x9e\xa1\x42\xe0\x5f\xa8\xd4\x62\x80\x5f\x61\x00\x59\x9c\x8b\x2d\xe8\x1c\xa1\xc0\x5e\x73\x19\x31\xf4\xd8\xda\xd0\x15\x4d\x49\x43\x58\x40\xe3\x63\x00\x81\xa1\x52\x72\x83\xa1\x08\x71\xc0\x74\x70\x15\x84\xa3\x18\x4d\xd8\x3f\x88\x59\x84\xdf\xa7\x80\x71\x8a\xa6\xf9\x28\x1e\x2a\x11\xc7\x06\xc2\x48\x44\x2c\x93\x82\xa2\x0f\xb1\x1a\x6d\x1f\x8e\xdd\x28\x8a\x32\x34\x85\x76\xb4\x4d\x5d\x97\x72\x25\x2b\x27\xca\x76\xc5\x90\xf3\x05\xee\x55\x79\x30\x59\x1c\xf7\x02\xdd\x5a\xd9\x47\x9b\xbb\x32\xd6\xf7\xf0\xf6\xdd\xf8\x9e\x9b\xe9\x26\x31\xf6\xda\xbc\xd5\x02\xef\xb1\xc1\xfd\x35\xba\xb7\x66\xe7\x39\xd0\x13\xcf\xc3\xc9\xe2\x4c\x6c\x18\x36\x16\x6b\x22\xc2\xf1\xb0\x78\xf3\xcd\xc5\xc0\x3a\x95\xa3\x23\xcd\x9d\xca\xe5\xeb\x3c\xd7\x4d\xe5\xa2\x78\x3b\x4e\x97\xd2\x08\x52\x36\x00\xbd\x80\x8b\x8e\xbc\xb9\x91\x39\xb0\x27\x63\x70\xf9\x56\xc6\xbd\x29\xbe\xfe\x14\x41\x1c\x60\xb0\x1b\xdd\xf2\x1a\x86\x2c\x98\xce\x70\x80\xba\x13\xfe\xbc\x68\xd7\x13\x89\x86\xbc\x3f\xd7\xba\xf8\xad\xbd\x71\xfd\xa6\x14\x6a\x35\xa4\x92\x28\x49\x15\x6d\x80\xe5\xa3\x2e\x86\x45\x99\x58\x0f\x00\xd7\x28\x46\x14\xc2\x89\xab\x76\xa3\x3a\xd4\x0d\xb2\xe0\x44\xad\x48\xd7\x1f\x9a\xe2\x5b\xe5\x3f\xc6\x81\x1a\xa1\x1c\x01\xa0\x11\xca\x34\x5f\xb4\x23\x1d\xfc\xd1\x63\xad\x49\x01\x26\x03\x07\xc8\x84\xd0\x01\x83\xd3\x9e\x8b\x22\x01\x82\x53\x8e\x90\x7c\xc4\x12\x47\xcf\xc8\x24\xad\x84\xcb\xdb\x2b\xf4\xd2\xda\xa3\x5a\xc6\xb3\x30\x63\xad\xe5\x88\x89\x66\xc1\xdf\x74\x02\x7e\x2f\x7a\xef\xfe\x56\xfa\xdb\xb9\xd8\x30\xf1\x38\xe6\xef\x49\xfa\x3e\x88\x6b\xe9\xdf\xae\xcd\x7b\x15\x3a\x6d\xc4\x42\x92\xb9\x0e\xe4\x90\x7a\x00\x95\x62\x6c\x13\x23\x46\xe1\xfd\x5a\x23\x0f\x9f\x59\x50\x8b\xbe\x31\x83\x51\x9e\x31\xc3\xb1\x7f\x0b\x19\xcc\x75\xe3\x3b\xca\x21\x39\x2c\xab\xa2\xd6\x6a\x18\xf1\x9d\x6c\xa0\x36\xf2\x46\x3d\x04\xbf\x6e\xe4\xc2\x03\x39\x33\x8a\x9d\x9d\x1c\x5f\xc9\xdc\xc8\xc1\x0d\x97\xb7\x83\xa7\x16\xbe\x0c\xc4\xca\xfc\xef\xde\xab\x9b\x20\xe1\xda\xd4\x88\x3c\xcd\x8c\x78\x58\x3a\xf8\x53\xae\xab\x1b\xb5\x38\xec\xf1\xfa\x3e\x57\xdc\xdb\x77\xa5\xb0\x4e\xe5\xff\x2c\x75\x7e\x7b\xe5\xb4\x39\xc8\x68\x8a\x65\x37\x76\x68\x8a\x80\x0f\xce\xb2\x5a\x18\xa7\x7c\xc0\x47\xc8\x79\x17\xbd\x7f\xa3\x00\x8a\xe8\x00\x7a\xa7\x0d\xdf\xbf\x0d\xfc\x52\x9f\x59\xbd\xd8\x34\xce\x5d\x66\xe2\xcf\xc6\xc8\xb7\xca\xde\x06\x09\xbb\xc8\x97\xaa\x5a\x8c\xb2\x11\x85\xb2\xb7\xa3\xec\xd4\xba\x81\xaf\x9f\xdf\x07\xbf\x3f\x52\xfc\x7c\xdb\x33\x40\x7d\x8e\x13\x2a\xbf\x4c\xf4\xac\x1d\xfc\xf1\xeb\xe7\xf7\x41\xf2\xf2\x93\x3a\x7c\xa6\x41\xc9\xcb\xf8\x35\x64\xbd\xe6\x20\x43\x78\x6e\x97\xc2\x8c\xf1\x49\xfc\x3c\xdf\x0e\xf0\xf0\xcf\x7d\xe7\x5c\xbe\xe7\xb2\x5e\xde\x1c\x64\x2b\xc5\xf4\x95\xae\x94\xd3\xc3\x09\x80\xd3\x07\x54\x7c\x89\x65\x93\x2f\x91\x5e\x66\x86\x64\x16\x1a\x44\xd7\xc4\x67\x39\x98\xa5\x82\x6c\x34\x23\xc4\x60\x48\xef\xdf\x77\x86\x37\x4a\xae\x7b\x29\x62\xcb\xad\xaa\x8a\xc3\x43\x9a\xd8\x2d\x88\x25\x37\x67\x30\xe9\xb3\x74\x2c\x3a\xaf\xf2\xa3\x38\x18\x00\xa5\x38\x57\xc8\x1b\xd1\x94\xce\xe7\x58\xc4\xf1\xea\xbc\xca\x8f\xd0\x8c\x58\x70\x89\x0c\x2c\x81\xb1\x81\x95\x87\x17\x1d\xe1\x79\x5d\xe8\x69\x05\x9d\x11\x0c\x0d\x9e\x0e\x08\xf9\x83\x41\x17\xed\x40\x08\x0b\x05\x44\x4d\x86\x2d\x94\x6f\x95\x92\x9f\xa8\xeb\x2e\x18\x14\xaa\x69\xfc\xcb\xc8\xaa\xa0\x05\x64\xd4\xdd\x88\x3d\xe8\x48\xdd\x5b\xe9\x42\x5e\x36\xd7\xa5\xb2\xcb\xab\x73\x51\xa2\xb1\xf6\x77\xaf\x9d\x33\xea\xba\x71\xc3\xdf\xc3\x0b\x1f\x8e\xff\x36\x62\x93\xd0\x4a\x0a\x57\x2c\x0b\x7d\x5f\xdd\x0b\x53\xbc\xbe\x3c\xb8\xf1\xfa\x8e\xf4\xfb\x8d\x92\x65\xe1\x91\x6f\x4e\x5b\x59\x77\x6e\xf8\x9b\x34\x16\x02\x72\x66\x84\xef\xdb\x61\x46\xc6\x8e\x47\x03\xfd\x9b\xbe\x01\x53\x42\xc6\xf1\xcf\xd8\x0e\x6e\x0f\x32\x7f\x8a\x2c\x34\x9b\xa8\x23\x96\x46\xc3\x90\x9b\x42\xdd\x29\x1b\xf9\x18\xab\xe7\xc2\x09\x44\xb1\xef\x7a\xbc\x24\x22\x4e\xcd\xb4\x6e\x8b\xb7\x01\xb9\xaa\xdd\xe3\x00\x9e\x36\x19\x31\x90\x85\x6a\x06\x2b\xbb\xd2\x9b\x65\xf5\xa7\xfc\xa0\x56\x2a\xf4\x50\xc2\xfb\x5d\x37\x41\x79\x25\x23\xfd\x99\xb2\x99\x7d\x70\xd9\x09\xb3\x90\xee\xf7\xdf\x7f\x3d\x61\x9c\xe7\xfe\x5e\x0d\x67\x56\x4d\xdd\xbd\x5f\x6a\x4a\xf9\xd0\xa5\x27\x9d\x9f\x33\xad\xfd\xf9\xa3\xc7\xf6\x26\xbf\xa3\xc8\xca\x14\x8e\xf3\x4d\xa9\xf3\xdb\xb0\x80\x58\x21\x9c\xb0\x23\x83\xdf\x4f\x6d\x7c\xfd\x1a\x1c\x2d\xf2\x7e\xdd\x22\x97\x97\x6b\xe7\xd5\x3a\x59\xb9\xd0\x53\xa5\xf3\x38\x0f\xac\x8b\x51\x13\x31\xed\xc9\x4f\x37\x38\xf6\xec\x29\xf7\x59\xd6\x3a\x48\x36\x95\x69\x73\xbf\x88\xef\xf1\x32\xa4\xd6\x56\x8d\x6c\xe2\x4e\xf9\x36\x4e\xa3\xe2\xa0\xdb\xf1\xb1\xd9\x5a\x36\xd6\x49\x13\x76\x7a\xd3\x27\x78\x0c\x2a\x42\x60\x3d\x9c\xf0\xf4\xc5\xcf\xd3\xcd\xc7\x1d\x16\xe2\xc3\xde\xb3\x97\xd7\x4b\x6d\x07\xab\x2d\x51\xac\x1e\xc5\x28\x17\xae\xb2\x88\xa5\x1c\xc0\x05\x65\x03\xc3\x86\xf9\x52\xd4\xaf\x1b\xb7\x7c\xab\x6c\xae\xef\x24\xb5\x16\x7d\x36\xbe\x6f\xea\xaa\xcb\xe4\x0c\x6f\x68\xa4\x39\xe8\x00\x0c\x9c\xf6\x6e\x8d\xe9\x56\xfe\x08\xd5\x2a\x4f\xb3\xf1\xbe\x5a\xab\x00\x31\xbc\xe9\x3d\xfd\x26\xa4\xd6\xc6\x89\xe1\xcc\xc7\xe9\xf7\x0f\xdf\x8d\x63\xd9\x6f\xd7\x2e\x5b\x8e\x4f\xa2\x36\xd4\x1f\x87\x38\x74\xb1\x96\xa2\x83\x7f\xdf\x1d\x10\x57\xdd\x54\x61\xa6\xed\xe4\x69\x01\x26\x7c\x57\x17\xa4\xb3\x2f\x9e\xfa\xe4\xf2\xb7\xde\xb8\xd4\x3b\x57\x6c\x82\xd4\xfb\xfa\xc5\x19\xbb\xad\x9b\xf1\xb1\x39\xb4\xd4\x4e\x57\xa7\xdf\x7a\x14\x13\x1d\xc2\xaf\x1b\x66\xf3\x44\x1b\x77\xaf\xcd\x88\xb8\xc7\xc9\x33\x30\x66\x99\xd8\x50\x1b\xbd\xfe\xfb\xe1\x66\x67\x73\xf0\x45\x5c\x98\x8a\x72\xf4\xe5\x4d\xf1\xe0\x36\x06\x8c\x8a\xf9\x18\x1f\xa4\x0e\xba\x04\xd4\x11\xe3\xb8\xa3\x23\xfa\xdc\x6a\x4b\xfc\x52\xd9\xf8\x59\xd6\x96\x26\xac\x1a\xc2\x2b\x45\x40\x5d\x04\xea\x9f\xf3\x1e\xa7\x3c\x1f\x6b\xf4\x1a\xa5\x18\x96\x02\x83\x51\x54\xde\xc8\xf3\x46\x11\x70\x16\xf0\xdb\x89\xe3\xfb\x2d\x9d\xcf\xda\xc5\xce\xe1\xc3\xdb\xcf\x98\x67\xf3\x5b\x62\xab\x8a\x8c\x77\x5e\x3f\xaa\x27\x6e\xb9\x24\xf4\x34\xff\xf9\xa0\x18\xf5\x8f\xbe\x2b\x4d\xc9\xcd\x09\xd8\x19\x54\x80\x00\x33\xf3\x04\xb6\x14\x24\xc3\x70\xee\xc0\xc8\x7e\xf0\x7c\x82\x51\x1d\xf1\x97\x0a\x94\x6d\xf0\x7c\x4c\xf0\x4a\x61\xd6\xfb\x39\xa1\xf1\x04\x1b\xed\xa2\x37\xdf\x8a\x41\x4a\xce\xa4\xbf\xf5\xe4\x4c\x7e\x23\xce\xe4\x3e\x36\xd2\x17\x7d\x2b\x09\xf7\x88\x91\x0c\xd9\x14\x4a\x56\x51\x33\xc5\xb2\x4c\x3e\xd4\x6a\x36\x60\x40\xd8\xba\x89\x9e\x07\x47\x4a\x3f\x34\xf7\xa3\x53\xd8\x88\xbb\x74\x5d\x0c\x83\x1b\xa0\xf9\xa3\xd1\xd7\x8f\x2e\x28\xe2\xb5\xf0\x21\xf6\x1c\x21\xe0\x65\xe4\x42\x59\x37\xe2\x08\xdc\xc9\x4a\x8c\x40\x03\x18\x71\x7d\xac\x8f\xd6\x4d\x74\xf8\xde\xf1\xc5\x13\xc8\xe3\x4a\x89\xb9\x0e\x0a\xe0\x8d\x3d\x8d\x5c\x89\xc5\x88\xbb\xc6\xf2\xb1\x45\xa2\x0e\x7d\x7f\x06\x57\x41\xb5\x0e\x3d\xef\xfa\xae\xce\x07\x27\xbb\xc7\xd9\x0a\xe0\xc1\x5f\x42\x6f\x78\xda\x5c\x94\xf2\xfd\xa7\x13\x2c\xa6\x85\x70\xf2\x5e\x84\x2b\xcb\xda\x68\x27\xf3\xb5\x23\xf0\x56\xaf\x84\x0a\x3f\xe1\xff\x8e\x04\xd3\xda\xf2\x5d\x25\xae\xcb\x61\x17\x03\xf8\xd8\x0e\x98\x65\x14\x6c\xc4\x53\x1b\x97\x63\xf4\x89\x7d\xb4\x4e\x86\xe7\xb9\x8f\x46\x37\xf2\xaf\xd4\x27\xe9\x3e\xec\x19\xf5\xe2\x72\xf8\xd7\xf6\xbb\xd8\xeb\x78\x70\xf7\x3d\x9b\x43\xad\x74\x5b\x37\xdd\xd6\x8d\x70\xe1\x36\x02\x8c\x88\x7f\x25\x75\xba\x49\x07\x65\xc5\x9c\xfc\xd0\xfd\x6c\x4c\xd1\x68\xfd\xbb\xdb\x84\xad\xc3\x73\xf3\xbc\x23\xbd\xb3\xf5\x52\x1a\x79\xb2\x2c\x8c\x8d\xa1\x2c\x55\xfe\x18\x9c\x4a\xf1\xac\x9d\x08\x4c\xf7\x9d\x6d\x45\xc8\xeb\x18\x38\xa0\xf2\x4c\xd5\xe0\x4f\x85\x70\xe2\x5a\xd8\x27\x28\xba\xe7\x9d\xfa\xa6\x8f\x30\x8c\x94\x09\xf0\x2b\xfe\x41\x7b\xe7\x31\x84\xf4\xd2\xf5\x1a\x40\x60\xd5\xfa\x0d\x1f\x66\xf4\x10\x83\xe7\x37\x76\x80\x9a\xf4\x19\xb9\x61\x03\xe7\x31\x6e\x84\xbe\xf2\x19\x35\x9f\x41\xf3\x2b\x6c\xbf\x21\xf3\xb0\x61\x70\xb4\x4b\x51\x1e\xc8\x6d\x1a\x1e\x85\xaa\x5e\x5e\xf4\xf4\x89\x59\xad\xad\x5b\x18\x69\x7f\x7f\xfd\x21\x44\x1b\xb6\xf8\x63\x63\x2c\x13\x09\xd0\x98\xa1\x8e\xd2\x4a\x3c\xbc\xd1\x55\xd5\xed\x20\xfd\x18\x01\x60\xf8\x18\xf3\xf4\xfc\x00\x91\xe0\xf0\x49\xeb\x7a\xfd\xd7\x31\x5c\xf6\xc3\x9a\x82\x63\xfc\xe6\x59\x2c\xf2\xdb\xa6\x1e\x65\x4b\x17\xf9\x28\x4c\xf4\x34\x4d\xc0\x34\x95\x3a\x1f\xde\x6b\x40\xa5\x00\x40\xa0\x54\x4e\x9b\x19\xe9\x19\xf6\x04\x9f\x1d\x91\x17\x27\x37\xfd\x4e\x52\xd7\x92\xda\xb9\xec\xb7\x88\x9c\x5f\x52\xe9\xc3\xfb\x2d\x02\xe0\x1d\xf4\xd9\x9a\x37\xad\x78\xbf\x3f\xe2\x6c\xcd\x0b\xcc\xda\x13\x2a\x29\x00\x50\xeb\xfe\xe0\x00\x71\xa1\x80\x5b\x83\x1a\xf4\x00\xb9\xb2\xdb\x8b\xbc\x3c\xa8\x3a\x1c\xac\xc6\x62\x0b\x3b\x26\x9b\x1e\x40\xd8\xfd\x87\x0e\x03\xc3\xee\x0f\x0a\x91\x5f\x1f\xe8\x66\xc6\x90\xdf\xf8\xba\x81\x8e\x00\xed\xb7\x09\xcc\x29\x09\x2c\xcb\x6c\x11\x9b\x53\x2f\xe0\xec\xce\x63\x1e\xe0\xd9\xfd\x71\x11\xf3\x3a\x0c\x44\xdb\x13\x3a\xa9\xd4\x69\x64\x4f\x60\x86\x16\x23\x03\x04\xcd\xd3\x41\x92\x33\x4e\xb6\xe4\x11\x60\x5b\xf6\x20\xc9\xe0\x5f\x4f\x9c\x6c\x38\xb4\x0a\x21\x7b\x06\x81\xb4\x2c\xa4\xa8\x65\xd4\xf5\xe8\x39\x46\x65\x0d\x7e\x18\x38\xb7\xa7\x13\xb9\x89\x53\xc9\xf1\x37\x24\x74\x67\xed\x78\x42\xb7\xba\xd0\x99\x00\x8e\x06\x7b\x9a\x66\x57\x01\x19\x8f\x49\x6a\xaf\xc2\xf9\xbf\xcc\x74\x58\x3c\xf7\x97\x9f\xf9\xcb\xcd\xfb\xc5\xb3\x7e\x59\x1f\xc9\xa9\x02\x8b\xe4\xfb\x82\xd9\xbe\x8c\x5c\x5f\xd4\x83\x40\xb4\x10\xcc\x1a\x34\xc7\x17\xd5\xbc\x98\x3a\x38\x8c\x24\xd2\x13\xac\x08\xbc\x18\x6a\xfb\x23\x3a\xfe\xde\x8e\x03\x58\xdc\xd3\xb9\x18\xa3\xa9\xe2\x2a\x34\xd0\x71\x4f\xfc\x7a\x69\xd9\x24\xbc\x00\x37\xc9\x43\xb8\x6e\xac\xde\xc0\x1b\x96\xc9\x8e\x92\xc4\xbb\xd8\xc9\xbf\x15\x17\x72\xa9\x93\x69\xb2\xb3\xb0\x0b\x9d\xec\x5e\x78\x37\xd4\xb8\x57\x39\x19\xe6\x31\xfb\x3e\xfc\x94\xd0\xcb\x9b\x7c\x21\x0d\xbc\xb8\x19\x20\xa7\xec\x4b\x9b\x01\x7d\xf0\x2f\x6c\x4e\xbe\x14\x58\x57\x35\x59\x2b\x81\xe3\xcc\x9e\xc6\x4d\x85\x1a\xf4\x01\x4a\xf7\x04\x47\xfe\xbc\x00\xd3\xfb\xc3\x42\x82\x56\x14\xe0\x34\xb3\x45\x88\x1f\x87\x81\xa8\x7b\x3a\x51\x6c\xc6\x83\x11\xb7\xe9\xf1\x4c\x0e\xef\x68\x40\xeb\x9e\x4e\x17\x1f\xf6\x02\x5e\x9f\x7a\x78\x98\x14\x7b\x81\xb1\x7b\xfa\x36\x36\x79\x04\x90\x76\x4f\x73\xd9\xad\xa4\x48\xeb\xac\x36\x74\x1e\xe0\xee\x9e\xe0\x65\x42\x03\x79\xef\x0f\x0d\x39\x3c\xa7\x81\xbd\x99\x6d\x42\x5c\x81\x00\xbf\x7b\xfa\x3e\xf3\x5a\xfc\x40\xe1\xfb\xed\xcd\x36\x73\x60\x10\x50\x7c\xbf\x3b\x4a\x5a\x86\x01\xc6\x7b\x82\xd7\x10\x05\x38\xbe\x3f\x30\x88\xb1\x14\x00\x79\x40\x93\x7e\x40\x72\x66\x83\xd8\x54\x79\x81\xca\xf7\x7b\xa4\xa6\xcb\x07\x5c\xde\x13\x3a\x61\x24\x90\xf9\xfe\xd0\xa0\x75\x3d\xe3\xd3\x79\x6c\xae\x7c\x00\xe8\xdb\xa7\x88\x5d\x21\x34\x97\x3e\x60\xf4\x9e\xd0\xa9\x8c\xca\x78\x17\x4f\xd5\x83\xaa\x2c\x02\x37\x07\x01\xd6\x7b\x82\x13\xf3\x50\xc0\xf5\xfd\xe1\x21\xbe\x1e\x08\xc0\xce\x6f\x38\xb2\x79\x86\x00\xda\xf9\xad\x0e\x03\xb6\xf3\xdb\x82\x00\xdc\xd9\xcd\x9e\x6c\xb3\x4e\x00\xbd\xf7\x74\xba\x7d\x75\xda\xf8\x90\x7b\x43\x04\x40\x9e\xd9\x3f\xa6\x3e\x0f\x03\xcb\x6f\x7f\x3f\x0c\x30\xbf\xfd\x9d\x00\x9a\xdf\x1f\x33\xc1\x88\x95\x6e\x2a\xd2\xaa\x41\x5f\x3f\x00\x61\xdf\xd3\x49\x2c\xe3\x14\xab\xc0\x07\x79\xcf\x1c\x60\x14\x6b\xeb\x81\xc4\xdf\x1f\x0e\x21\x09\x30\x44\xfe\xe6\x05\xd4\x40\x53\x90\xf9\xfb\xc3\x9c\xad\xa7\xe9\x83\xd6\xdf\xef\x91\xe2\x34\x08\xb5\xbf\x79\xfe\x44\x9b\x7e\x0f\x14\x3f\xb3\x31\x74\x87\x3c\x3e\xf5\x8e\x86\xec\xdf\x3c\xf9\xad\xe4\x7e\x9e\x75\xaa\xa4\xb7\x14\xc0\xce\x43\xe7\x91\xe2\x41\x94\x0c\xe8\x69\x92\x24\x0f\xb0\x94\x40\x58\xe3\x8c\x51\x07\x3e\x1e\x86\xc6\x9c\xf1\x50\x62\x7b\x0a\x38\x70\xef\x88\x83\x1a\xdb\x53\x08\x7a\xec\xfe\x40\x39\x28\xb2\x3d\x71\xd0\x64\xf7\x7b\x63\xb3\x85\x8b\xea\x9c\x31\x50\x66\xb7\xcf\x83\x68\xb3\x3d\x31\x53\x6d\x76\x5f\x42\xd0\x67\x7b\x42\x37\x30\xbb\xed\xb3\x18\x8c\xa3\xd2\xee\x77\x82\x58\x8e\xfd\x37\x60\x5e\xc1\xa5\x0f\x7a\xfa\x76\x74\x0d\xb7\x44\xc2\xd8\xfe\xb2\xe0\x92\x09\x3d\x05\xab\xba\x2c\xb4\x84\x42\x84\x9e\x43\x34\x4a\x16\x54\x5a\xa1\xa7\x20\x75\x91\x25\x8b\x30\x44\xa1\x25\x19\x36\x83\x1d\xb1\x60\x82\x4b\x34\xf4\x34\x6a\xcd\x04\x94\x6c\x88\xd2\x6f\x48\x09\x87\x08\x1d\x87\x2f\x55\x66\x69\x87\x9e\x02\x57\x6a\x98\x93\x32\x47\xa7\x83\xd9\x09\x52\x12\xa2\xa7\x6f\xc7\x50\xa7\x4d\xc1\x21\x4a\x9b\x82\xb4\x29\x98\x68\x53\xc0\x2e\x61\xd1\x53\xc0\x75\x13\xb8\xa4\x45\x4f\x01\x2c\x0e\x28\x71\xd1\x13\xaf\xd4\xc5\xfe\x18\x79\xab\x9a\xb7\x9e\x27\xbf\x01\x00\xaf\x46\x96\x6c\x45\x4f\xd6\x07\x51\x41\x06\x4b\x67\xb0\x06\xe6\x29\xa5\xd1\x13\xba\x02\xbc\xa5\x35\xf6\x07\x75\x92\x40\x34\x55\x7a\x83\x3d\x44\x7f\x29\x0e\x76\x73\x11\x81\x2c\xa8\x52\x1d\xcc\xe6\xd0\xb4\xb4\xc1\x12\x1e\xdb\x87\x06\x4b\x79\xec\x0f\x89\x90\xda\x81\xd2\x1e\x3d\x9d\xe8\xec\xc4\x5b\xfa\x83\xdd\x1a\x51\x0a\x84\xdd\xde\x19\x80\xf1\x78\xa0\xfe\xd9\xdd\xa6\x0c\x93\xf9\x21\xe7\x0c\x95\x26\xd9\x3e\x11\x0b\x5b\xc7\x53\xb2\xa4\xa7\x13\x29\x09\xa2\xa4\x09\xbb\x3d\xb4\xc4\x09\xbb\xe1\xb4\x80\xc8\x05\x44\x97\x4a\xd9\x6f\x12\x62\x12\x5d\x3a\x65\xbf\x51\xe4\xfa\x24\x5d\x4a\x85\xdf\xa6\xb7\xb4\x0a\xbb\x39\x1a\xea\x9f\xd9\x24\xa6\x91\x86\x4b\xb0\x6c\x9f\xf1\x95\x62\xd9\x79\x6a\xa8\x24\xcb\xfe\xb8\x29\xbd\x45\x46\xc3\xce\x26\xd9\x20\xe1\x32\x9d\x21\xde\xc1\xb7\x83\xcb\x14\x1b\x4a\x69\x02\x40\x51\x4c\x23\xf8\x4a\xcd\xf4\xf4\xcd\x24\x8b\x7d\x73\x2e\x42\x74\xbb\x06\x97\xb4\x61\xb6\x8b\x09\x63\x73\x1d\x25\x19\x9b\x2c\x99\xd3\xd3\x89\x04\x1b\x2c\xa9\x33\xae\xdd\x09\x84\x02\xc9\x85\x98\x20\xcf\x92\x48\x68\x00\x44\x8b\x7c\xa4\x56\x6e\x70\xaf\x8a\x08\x49\x77\x29\xe1\x7d\x95\x97\x8d\x55\x77\x40\xe5\x2a\x4a\x5b\x75\x0d\x7e\x51\xa3\xab\x60\xed\x36\x55\xaa\x2a\x56\x73\xff\xd3\x2f\xb6\x40\x4b\xe4\x9c\x18\x69\x07\x5d\x55\x64\x4e\x1a\xe3\xb5\xce\x31\x86\x68\xff\x36\x66\x80\x91\x8a\x67\xf4\x77\x40\x47\x37\x14\xa5\x1a\x46\x17\x08\xf7\x67\x6b\x45\x61\x7d\xa7\xeb\xae\xc6\x16\xe2\xcb\x32\x7b\xaf\x6e\x46\x09\x5a\xbc\x8a\x40\xc7\xa8\x47\xe2\xfd\xd9\xe6\x46\xd5\xee\x6a\x30\x95\x86\xac\xae\xc4\xa8\x54\x82\xb0\x96\x36\xbc\x18\x5f\x11\x04\x07\x74\x57\x85\xed\xa5\x10\xe7\x15\x33\x05\xc8\x0d\x07\x80\x0b\x94\xc5\x25\x6f\x35\x90\x4b\x92\xac\x38\x02\x2d\x26\xac\xd2\x08\x34\xed\x48\x85\x11\xb8\x21\xa2\xb2\x08\xd4\x4e\x24\x71\xa6\x2a\x89\x80\x6a\x3a\x8e\x80\xd2\x72\x45\x54\x0d\xa1\x2a\x86\x60\x72\xe7\xab\x62\x80\xc8\x5d\xbc\xf5\x8a\x6d\xe4\xa1\x39\x82\x2a\x82\x44\x59\xfb\x64\x15\x10\xba\x02\x08\x39\x4f\xfe\xca\x1f\xc8\x24\x21\x87\x8c\x40\xcc\x8f\xb5\x67\xf5\xc7\x82\xa8\x40\xd9\x51\x97\x22\x5a\xd1\x03\x93\x3d\x24\x56\x82\x6e\xa0\x23\xc2\x98\x43\x91\x04\xea\xec\x31\xca\x9a\x21\x4e\x13\xe9\xf5\xe0\xad\xd0\x71\x44\xf7\x28\xb6\xfc\x9d\xa9\xd0\x9c\x8d\xa3\x45\x5e\x76\x44\x38\x0c\x9e\xe0\xc4\xf5\x8a\x49\xe5\x0c\x68\x6f\x3c\x36\x0b\x9d\xd4\x30\xc2\xb2\xd8\x09\x0d\xef\x74\x86\x73\x32\x83\x9d\xca\x30\xe2\xeb\xc8\x69\x0c\x7d\x12\x03\x9c\xc2\x80\x01\x6d\xc4\xe2\x46\xa8\x0c\x8f\x1d\xdf\x20\x1a\x8f\x5e\xaa\xc3\x30\x4f\xd0\x22\x25\x01\x51\x8f\xb9\xef\xe0\x56\xb9\x98\xab\xa2\x8f\xbd\x37\xc7\x2a\x59\xf0\x71\x61\xe3\x7d\x33\xb0\x49\xf3\x81\x9c\x92\x3d\x00\x97\x62\x93\x4d\xea\xc6\x0e\x5f\x09\xe4\x65\x25\x70\xef\xc9\x32\x93\x13\x98\x77\x61\x27\xcb\x0a\xc0\x6f\xb8\x32\x0e\xfd\xbf\x31\xbb\x1e\x72\xff\x94\x8d\xb6\xc1\xbd\x63\xca\x94\x37\xd6\x3d\x52\x66\xdb\xbc\xbb\xa2\x93\x89\x32\x7c\x03\x14\x96\x64\xd4\xa1\x3b\x9e\xbb\x46\x36\x44\x55\x85\x80\xa2\x42\x64\x35\x08\x2c\xe0\x81\x54\x81\x88\x71\x74\x35\x5c\xf9\xe1\x88\x7b\x7e\x02\x3c\x72\xae\x87\x21\x58\x55\x87\xe3\xc6\x00\xc9\x2a\x0e\xc7\x1c\x0e\x2d\x7d\x64\xc5\x86\xf3\xdb\x98\x00\x95\x19\x4e\xe9\x7d\xa7\x08\x5b\x4b\x53\x6f\x42\x88\x0a\x0b\x90\x58\x63\x95\x15\xb0\x43\x43\xac\xa2\x42\x0c\x8b\x02\x57\x51\xf8\xb6\xcf\xdc\xe9\x4a\x09\x33\x3b\x19\xf5\x56\x45\xa0\x67\xdd\x5f\x0d\x01\x92\x77\xa4\x0a\x02\xc8\x34\xa4\xfa\x01\xd8\x14\x5d\xf5\x20\x4a\x1c\x9e\xac\x74\x40\x4f\x01\x55\xe1\x00\x99\x04\xa8\xb2\x01\xb8\xe6\x66\x74\x1a\x49\xf3\x9f\xaa\x5e\xe0\xdd\xa9\x90\x73\x43\x55\x2c\x40\xa6\x26\x0a\x43\xdd\x78\x75\x0a\xa8\x92\x11\x9c\xf2\x56\x23\x80\x92\x76\x38\x55\x08\x30\x3f\x87\x51\x7d\x00\x6b\x30\x92\x59\x83\xab\x0d\x60\xad\xf9\xab\x0c\x60\x6d\xc0\xd5\x05\xe6\xb7\x31\x04\x2a\x09\x1c\x77\x2f\x97\x1c\xf5\xee\x21\xb0\x3a\x40\x14\xd5\x35\x5c\x11\xc0\x57\x0d\x00\xaa\x04\x40\x7e\xac\x07\xb7\xff\x68\xf6\x21\xa6\xcc\x51\xf8\xfc\x53\xdb\x1a\x02\x8f\x9f\x9c\x0f\x16\x0e\x3f\x64\x9a\x10\xfc\xfd\x99\xf9\x45\x14\xd6\x3e\xcd\x45\x06\xc6\xfe\x31\xb7\x84\x04\xa6\x7e\x1c\xe1\x1c\xc6\xd1\xa7\xf9\x06\xe1\xe7\x9f\x65\x66\xd6\xd9\x24\x37\x91\x98\xf8\xb3\x3d\x48\x06\xf0\xef\xa3\x1e\x25\x33\x30\xef\x79\xc7\x7b\x0c\x9c\x4a\x16\xa4\x65\x08\x9c\x25\x13\xca\x92\x79\x14\xd8\x11\x17\xc2\x32\x14\xbe\x92\x73\x26\xbc\x25\x2e\x6c\x65\x00\x0b\xb8\x70\x95\x1c\xa8\x4a\x16\x4c\x25\xe3\xd0\x7e\xf7\x05\x14\x9e\x12\x87\xa6\x64\x32\x91\x07\x49\x89\x69\xec\xfd\xa7\x21\x9e\xb0\xb0\xe9\xcf\x57\x27\x84\xe0\xd0\x87\x42\xe9\x86\xe3\xcf\x07\xa9\xa2\x6c\x0c\xee\x7c\x60\x8f\x61\x60\xb5\x21\x58\xf3\xec\xe5\x9d\x25\xed\x9c\x8d\xc4\x93\x0f\x15\xfc\x51\x38\xf2\xc1\xb2\x1f\x88\x1f\x1f\xdc\x5f\x28\x6e\xfc\x51\x97\x5a\x00\x56\x7c\xc0\x4a\xe3\x3b\x01\x73\x31\xec\x8c\xc6\x51\x3c\xf8\xf3\x35\x8e\xc9\x61\x4e\x0e\x33\xf9\x42\x72\x98\x3b\x0a\xc2\x6d\x67\x26\x66\xb3\xf0\xda\x99\x6c\x0c\xc4\x69\xe7\x63\xb4\x73\x57\xe2\x0c\x00\xe4\xe2\x42\xc3\x45\x4b\x89\x05\xee\x62\x7b\xb1\xd7\xc9\x81\x10\x98\xeb\x88\xf4\x92\x58\xeb\x47\x0e\x5e\x22\xd8\xea\xd8\x51\x3c\x89\xa9\x0e\x35\x13\xe1\x7a\x31\x82\xa1\x1e\x29\xc9\xc5\x8b\x9b\x4e\x60\xa6\x93\xd2\xe6\xc1\x4a\x3f\x62\x9c\x9c\xc4\x46\x87\x5a\x01\x30\xd1\xa1\x76\x66\x08\x53\x40\x60\xf3\x1e\xfd\x9c\xf2\x8c\xcf\xc6\x8f\x82\x2d\xe0\xc3\x32\x1f\x8f\x3c\x40\xe0\x97\x1f\x71\xe1\x02\x78\xe5\xd8\xd1\x22\x03\xa7\x3c\x09\xfb\xce\x63\x14\x24\x27\x84\x41\x0e\x32\x02\xc3\x1e\xc7\x2e\xeb\x60\x98\xe3\x58\x5b\x24\xd6\x38\xc3\x9e\x1f\x05\xad\xc7\x8f\x2b\x4e\x63\x8a\x13\x78\xe2\x80\xfe\x30\xaa\xf6\x26\x57\x92\x9f\xe9\x0f\xc4\xcc\xf6\x8c\x37\x01\x58\x1c\xee\x3e\x01\x58\xec\x3c\xe6\xf7\xc5\x62\x61\x4f\x44\x44\x1a\xa3\x17\x3c\x05\x13\x7e\x96\x39\x31\x67\x6d\x99\xa3\x99\x1b\x16\xe4\x77\x0c\x61\x82\xe0\xb9\x8f\x28\x50\x0c\x38\x6e\x7e\x7b\x11\x27\x28\x02\x36\x3a\x9a\xbe\xe5\x39\xd7\x25\xa6\xd7\xfb\xb3\xad\x44\x6d\x97\x7a\x0c\xc0\xac\x59\x0c\x0a\x04\x61\x7a\x61\xd1\x1d\x56\xdf\xbe\x35\x4e\x36\x5f\x51\xeb\x8b\x68\xc1\x37\x77\x17\x6d\xeb\x83\x3f\xb4\xdd\xb2\x27\xcb\x09\xbb\xfc\x2c\xd7\xd2\x2c\x3d\xb7\x30\xa8\x19\x1b\xc1\x33\xcf\xf0\x06\x7f\x7a\xda\x1a\x3f\xef\xd1\x37\x4a\xb1\x90\x87\x63\x82\xde\xe1\x0d\x49\xa2\x47\x0a\xa1\xcf\x3d\x2c\x7d\xb2\xba\x63\x76\x46\x2b\x50\xbf\xc5\x02\x96\xcb\x9d\x28\x9b\x08\x2d\xfc\x64\xb4\x67\xf7\x85\xd9\xdf\x4d\x2e\xe4\x2f\xf2\x91\x4c\x90\x38\x9d\x03\x8e\x9d\xa7\x31\x1a\xc4\xcf\xd1\xf0\x33\xb4\x58\x6e\x35\xe8\x33\x63\xd9\x5c\xf8\x9c\x71\x32\xb6\x18\x9c\x66\x64\x65\x45\xdf\xc0\x60\xb9\x56\x20\xbf\x79\xc9\x44\xac\x74\x64\x4e\xc2\x10\x83\xf5\x70\x52\x10\xa3\x4d\x3c\xf1\x27\xfa\x6c\x42\xe9\x3c\xe0\x64\x76\x5b\x98\xa4\xf4\xbc\x8d\xce\x4e\xe9\xd1\xa7\x6a\xde\xd1\x0c\x7a\x7b\xa0\x77\x7e\xd8\xc5\xa8\x8d\x5e\x49\xb7\x94\xcd\x41\x01\xa1\xc4\x47\x3e\xd4\xda\xb8\x71\xe8\x1b\x3e\xe7\x3e\x3b\xfa\x99\xd9\x80\xcb\xc5\x18\x0c\xbe\xe4\xa2\x2f\x11\xc2\x35\x0b\x6d\xd1\xef\xaa\xf5\xc4\x06\x93\xc3\x5d\xb7\xb0\x2e\x32\x6e\x5e\x5c\x40\x4a\x18\x9e\x2a\x15\xd8\x01\x2f\x65\x2a\x63\xa7\x4d\x65\xec\xbc\x36\x3c\xab\x8d\x99\xa6\xc6\x4b\xf0\xe7\xcb\x42\x48\x52\x7f\xc0\x8c\x05\x24\xf2\xb3\x7b\xe1\xce\x18\x2f\x6d\x9f\x39\x6f\x61\x79\xea\xfc\xf9\x0b\xcc\x4d\x0f\x98\x42\x76\x3e\x7a\x50\x32\x29\x37\x07\x7d\x72\x29\x61\x65\x9c\x33\x85\x04\x77\x59\x7b\x4a\xca\x1e\xee\xe4\xec\x94\x3d\xfc\x30\xea\xa0\x0f\xba\xc6\xcc\x1e\xb1\xb4\x2a\xe3\x4d\x26\x8c\x8d\xa2\x09\xdc\x30\x46\xd7\x4a\xa9\x56\xca\x8f\x38\x95\x05\xa1\x26\x66\x3c\x79\x67\x4d\xbf\xb4\xe7\x33\x62\x2c\xbb\x46\xe6\x8d\x51\xee\xf1\x8d\xae\x9c\x7c\x88\x52\x98\x5d\x94\xa5\xbe\xbf\x34\xea\x4e\x95\x72\x21\xdf\xd9\x5c\x94\x82\x42\xe1\xcb\x58\xea\x23\x17\xb5\xb8\x56\xa5\x42\x38\xcb\xd1\xdc\xa2\x80\x34\x11\xe3\x02\x0d\x53\xef\x72\xae\x46\x14\x46\x03\xd7\xee\xe7\x31\x5a\x78\x8d\xd5\xbd\xd8\x90\x13\x81\x4b\x4b\x6d\x74\xfe\x51\x37\xfe\xa4\xeb\x8c\x17\x66\xeb\xce\xff\x3f\x6b\xdd\x56\xba\xa2\xd3\xb7\x78\x23\x36\x4d\xf5\xda\xfe\x4c\x65\xc0\x67\xcc\x6b\x14\x78\x9a\x4c\xdb\xff\xaf\xba\x5a\x7f\x5f\xe4\xaf\xfa\x4a\xa4\xae\x66\x93\x7d\x94\x95\x1f\x54\xd5\x3c\x7c\xa2\x81\x7a\x33\xa6\xda\x28\xe5\x9d\x84\xdc\x24\xd6\xfa\x32\xda\x5f\x42\x2d\xa8\x51\x47\x64\x2b\x04\x35\x4a\xa5\x23\x07\x34\x0a\x2b\x8c\x7b\x55\x15\xfa\xde\x4e\x30\xab\x8b\x95\x15\x6f\x8c\x2c\x64\xe5\x94\x28\xaf\x6a\x39\x88\x99\xfe\x72\xe0\x20\xe3\x5e\x76\x81\xee\x26\x79\x92\xd4\x2f\xbc\x09\x5a\x8f\xe7\x8b\x90\x8f\xac\x17\xb9\xb9\x1b\xde\x90\x90\xa3\x2e\xc5\xb5\x1c\x46\xfa\xe3\xb9\x6d\x31\xb2\x90\xc6\xa6\x63\xf8\xbd\x7f\xc4\xf3\xa7\xb4\xa7\xf7\x13\xbc\x9b\x01\x6a\xa5\xf9\x9d\xff\xe3\xcf\x05\xe5\xdc\x1f\x7b\x44\xfe\xbc\x18\xda\x69\x27\xb3\x98\x98\x4e\x3a\x6d\xe6\x11\xa7\x1c\x3a\x82\xf1\x3b\xe1\xc7\x3d\x81\xa1\x9c\xec\x59\xd5\x55\xa0\x9d\x67\x7a\x16\x49\x67\x99\xfc\x1c\x9e\x73\x4c\x8f\x88\x76\x86\x11\x7f\x91\xf6\x13\x11\xa7\x17\x1c\xad\xcf\xc9\x8d\x33\x58\xcc\x99\x45\x96\x1b\xe9\xbc\x62\x19\xd1\x84\xb3\x0a\x35\x42\x39\xa7\x50\x23\x11\xee\xc6\x91\x0b\x0d\x73\x3a\xa1\x6b\xce\x2c\x27\x13\x62\x00\xdf\xa9\xc4\x66\x18\x75\x22\x27\xb5\x7d\x83\x3f\xd5\xa2\xb1\x2f\xf5\xde\xf0\x7a\xad\x75\xf1\x45\xae\xea\x52\xbc\xbc\xa6\xee\x9b\xb7\x5c\x57\xce\xe8\xb2\x3c\x2c\x63\xa4\xd1\xad\x2a\xed\x84\x57\x68\x66\xe5\x67\xac\xa4\x13\x85\x70\xe2\x7b\xf8\x56\x3b\xb0\xf6\xc8\xef\xbc\xb9\x51\x95\x72\x83\x87\x3d\x88\x16\xa8\x74\x21\x5f\x13\xed\xa0\x6d\x75\xcf\xc9\x1b\x69\x8c\x2c\xde\x36\x6b\x6e\x5d\xe5\x4b\x59\x34\xa5\xaa\x16\xef\x17\x95\xde\xfc\xf9\xdd\x83\xcc\x1b\x24\x30\x0b\x46\x10\x79\x67\x64\xdd\x18\x71\x58\x12\xfe\x09\xdc\x4a\xb8\x7c\xf9\xee\xa1\x36\x5d\xe6\x38\x03\xc0\x88\x85\x90\x14\x36\xb8\x8e\x98\x48\x49\x59\xd8\x49\x5e\x47\xeb\x11\x8a\x03\x79\xe9\x93\x75\xd8\xa6\xeb\x30\x19\x12\xc0\xfb\x8e\x82\x47\xc9\x0b\xba\x6f\x29\x0c\x47\x0d\xc7\x60\xea\x9e\xef\x27\x8d\xf1\x12\xf3\x2c\x7c\xf7\x25\x0e\x0f\xda\xd5\xd5\x66\x59\xa4\x85\x95\x16\x96\xe7\xd5\xb4\xb0\x38\x3c\x60\x76\x72\x2f\xd5\x62\x09\x80\x09\x66\x41\x10\x78\xf8\xe1\x4a\xc6\x45\xc6\xda\x58\x7f\xe0\xe1\xee\x23\xc9\x07\x19\xac\x43\x67\xa5\xff\xa4\x38\x7e\x14\x47\x99\xad\x5d\xc2\x2b\x59\xb6\xa5\xd1\xbe\x48\x83\xad\x5c\xc6\x12\x4f\xee\x54\x47\x49\xeb\x1f\xa4\xa4\xf5\x7b\x4a\xee\x54\x5a\x58\x87\x28\x2d\xac\xdd\xe7\xe7\xba\xb0\x98\x9d\xe0\xcd\xa3\x6c\xbd\x78\x69\xc9\x21\xdf\x24\x4e\x76\x5f\xad\x8b\xef\x2e\xae\xb4\xfd\xe4\x35\xb7\xa7\xf2\x86\xda\x5c\x82\x7e\x5a\xf1\xb5\x15\xa6\x80\xc3\x5d\xaf\x2c\x54\x53\x85\x5a\x8a\x2c\xcc\x5a\x64\xe3\x54\x63\xb8\xd5\x18\xdd\x71\x98\xf5\xc8\xc2\x2d\x48\x36\x76\xc4\xa1\x96\x24\x0b\xb4\x26\x59\x80\x45\xc9\x42\xad\x4a\x16\x6a\x59\xb2\x60\xbe\xb4\xab\xf3\x83\x37\xb7\xe8\x30\x85\x25\x8a\x1f\x1a\x72\x80\x24\x8c\x30\xbf\xac\x97\x36\x49\x4e\x53\xfa\xb5\x41\x5c\xe0\xcf\xb6\xd3\xb5\x2e\xf5\xe2\xf1\x97\x49\xef\xf6\x70\x2f\xc5\xec\x8c\x2a\x85\x98\x7a\xba\x78\xee\x08\x7c\x47\x71\xa6\x49\xfc\xaa\x00\x87\x27\xc5\x98\x3a\x4a\x5b\xe1\x83\x94\xb6\xc2\x3d\x1d\x33\xc6\xc4\x75\x54\xc6\x3a\x29\x23\x4c\x33\xbb\xa6\x0c\xfc\x02\xd7\x29\x61\x49\x38\xfb\x8b\x79\x33\xc9\x76\x42\x78\x77\x05\x18\x16\x96\xe3\x78\x44\x37\x9a\x70\xfc\xa3\x72\x2a\xc5\x40\x00\x4a\x31\x90\x38\x03\xed\x28\xc5\x40\x20\x4a\x31\x10\xea\x9d\x14\x03\x01\x87\x9c\x62\x20\x29\x06\x92\x62\x20\xbb\x94\x62\x20\x29\x06\x12\x79\x70\x1d\xa5\x18\xc8\x0b\x4a\x31\x90\xdd\xe7\x53\x0c\xe4\xc0\x30\x53\x0c\x84\x7c\x21\xc5\x40\xf6\x1e\x8d\x10\x03\x21\x1f\x39\x6d\x39\x0b\x0f\xc2\x2d\xd1\x39\x66\xbb\x68\x94\x3c\x50\x32\x00\x34\x5b\x4e\x4b\x34\x8a\x2d\x0b\xf5\x9c\x87\x5e\xcb\x33\xfb\xb0\xb1\x67\xae\xf9\xb3\x2c\xec\xcd\x51\x0d\x88\xd1\x64\xa8\x04\x1c\x91\x96\x59\x1d\x9c\x89\x44\xcb\x9c\x0d\x26\x02\xed\x64\x8a\x1a\x47\x9d\x65\xcc\x09\x1f\x6d\x96\x0d\x4c\xcd\x45\x99\x65\x4e\x0f\x0b\x5d\x96\xd9\x36\x0f\x55\x76\xb2\x99\x87\x91\x64\x19\x13\xcf\x43\x90\x4d\x0a\xf7\x45\xe3\xb3\x57\xb8\xd0\x83\xf4\xe8\x08\x34\x58\xd8\x83\x1b\x76\xa1\xda\x3a\xcd\x97\x4d\x59\x5e\xb5\x32\x19\xea\xcc\x1d\xd5\x9f\x8a\xf1\xd9\x95\x72\x6f\x7a\xf5\x38\xed\x47\x53\x45\x21\xc0\xbd\x11\xbc\xaa\x30\xe7\x3f\xd7\xab\x95\xa8\x88\x85\x71\x8a\x81\x11\x55\x2b\xc0\x41\xb1\x2e\xcb\x4d\x81\x9a\x07\xd6\xaf\x08\x69\x15\xab\x61\xc1\x8f\xcf\x05\xd5\xb1\x08\x0b\x03\x32\x43\x80\x41\x11\x10\x1e\xc4\x79\x60\x27\x7c\x98\x73\xae\x09\xeb\x88\x1b\x78\xe3\x04\xdd\xd8\xa1\x22\x5e\x75\x8b\x30\x09\x09\xa9\x70\x11\x38\x87\x01\x55\x2e\x82\x7a\xe2\xcf\x21\xaf\xd6\x45\xc0\x4c\x86\xd5\xbb\x08\x9b\xd1\xc0\x9a\x17\x81\x93\xca\xae\x7b\x11\xd8\x0f\xbf\xf6\xc5\x91\x64\x87\x55\x01\x23\x40\x74\xf8\x55\x30\x92\xa9\xf8\xde\x4c\x05\x2b\x16\x02\xdf\x88\xa4\xea\x63\xb0\xb7\x69\x80\x4b\x4a\xfb\x5c\xd1\xdd\xd2\x8d\x3b\x06\x2e\x30\xee\xe2\xe2\x08\x3d\x5b\xe0\xb9\xc2\xce\x15\x74\x96\x20\xd6\x46\xde\xa8\x87\xe8\xce\x38\x54\x7d\x7f\x3b\x86\x34\x3b\xa3\x1e\xc5\x96\x6a\x1b\xce\x88\x72\xd0\xb2\x09\x8c\x74\x65\xf0\xa3\xb4\x59\xaa\x1b\x99\x3f\xe6\x14\x32\x3f\x2e\x2b\xb5\xb6\xee\xca\x09\x7f\x11\x1f\x6e\xa3\x59\x5b\x0d\x13\x03\xac\x0f\x2b\x7e\x06\x84\x1e\x76\x69\x9e\xc9\x6c\x4c\x5b\xb8\x74\xae\xfe\x59\x82\x59\x60\x7c\xa6\x2e\xb5\x05\xdb\xce\xc2\x18\xb4\x1e\xff\xbf\x49\x51\x78\xc2\x65\x2f\xe9\x68\x39\x45\x5c\x0f\x2e\x1b\x9d\xe3\x73\xa4\xde\xc2\x32\x6e\x00\x1f\x69\xff\x85\xf6\x93\xd8\x2b\x6c\xf2\x7c\x9b\x7a\xda\xda\x93\x74\x01\xb4\x7d\x12\xd5\xe3\x27\x78\xb3\xd3\xe6\x77\xb0\x72\x33\x9f\xbf\xc7\x14\x96\x87\x8b\xdb\xe6\x5a\x9a\x4a\x3a\x69\x2f\x54\xe5\x2e\xb4\xb9\xe8\x9a\x78\x95\x39\x03\x4f\xaf\xcd\x97\x72\xd2\xe2\x80\xdc\xec\xdc\xf5\x1c\x4d\xa1\x91\x5d\x5e\x5f\xe9\xfc\xf6\x8c\x75\x72\x92\xde\x67\x34\x0f\xd1\x62\x3c\x5c\x1b\x79\xe5\x90\x4a\x6c\xc9\x7d\x83\x5e\x4a\xee\xdb\x50\x07\xc9\x7d\xeb\x29\xb9\x6f\xc9\x7d\x43\xe8\x1c\x0d\x60\x72\xdf\x86\x68\x86\x3a\x39\x49\xef\x33\x9a\x87\x68\xc5\x4d\xf2\xca\xb2\x52\xdd\xc9\x4a\x5a\x7b\x69\xf4\x75\xb4\xc8\x1f\xe6\xe1\x71\xf3\x45\x19\x9e\xdd\x7c\x2e\x74\x70\xb2\xa0\x85\x2a\x1b\x23\xbf\x2c\x8d\xb4\x4b\x5d\x02\x9f\xca\xbb\x8f\xc9\x59\x72\xb0\x47\xc9\x9b\x44\x5c\x6b\x31\x27\x85\xed\x41\xb2\x24\x24\xc4\x73\x3c\xca\xb1\x2d\xdb\x5b\x3c\xca\xe9\x3e\xc3\x43\xe4\x79\x87\x81\xf7\xc6\x50\xaf\x10\xf7\x08\x99\x6c\xc4\x6d\x29\xc3\x8e\x86\xd8\xd0\x00\xfb\x19\xc1\x76\x72\xbc\xbe\xc9\x52\xe5\x21\x73\xcc\x10\x30\x55\x29\xa7\x44\xf9\x56\x96\xe2\xf1\x4a\xe6\xba\x42\xd0\xcd\xa7\x53\xd8\xb5\x34\x4a\x17\x33\x18\x88\x6d\xf2\x5c\x5a\x3b\x0b\x2b\xc6\xf0\xc2\x67\x62\xc7\xbe\x6b\x4d\x71\xca\xe5\xec\xd4\x4a\xea\xc6\x9d\x7c\x01\x81\x43\x8e\x76\xf9\x73\xcd\xc7\x18\x37\x00\x98\xc9\x43\x5d\xb2\xe5\x25\x28\xed\x5c\xdc\x11\x9e\xb8\xaf\x17\xf3\xfb\xcb\xe8\x19\x38\xeb\x66\xe7\xf1\x81\x93\xdc\x21\xa8\x8d\x76\x3a\xd7\x50\x9a\x0e\xa3\x61\x3c\xd5\x6e\x4f\x8a\xa8\xd5\x1d\x37\x91\xc7\x48\x51\xa8\xb4\x6b\x4e\xbb\xe6\x67\x94\x76\xcd\xbb\x94\x76\xcd\x69\xd7\x7c\xa0\xdd\xe4\x0b\xa7\x5d\x73\xda\x35\x3f\xa3\xb4\x6b\x3e\x30\xdc\xa4\x29\xd2\xae\x39\xea\xae\xb9\xbf\x76\x46\xe2\x60\xa3\x52\x5d\xaa\x95\xa2\xb6\xcf\xd9\x08\x94\x35\x96\x34\x31\x2f\x34\x49\x7b\x7e\x23\x07\x1f\xb4\x32\x6f\x8c\x72\x8f\x6f\x74\xe5\xe4\x03\xa1\x1a\xf0\xd9\x16\x65\xa9\xef\x2f\x8d\xba\x53\xa5\x5c\xc8\x77\x36\x17\xa5\x40\x00\x3b\x79\x77\x54\x72\x51\x8b\x6b\x55\x2a\x8c\xd3\x4c\x40\xa4\xe2\xec\xb6\x82\x59\x56\x18\x24\x07\x31\x9b\xd5\xa8\x59\x59\x96\x4f\x02\x05\x4c\x0d\x47\x8e\x6a\xa3\xf3\x8f\xba\xa9\x00\xcb\xc8\x8a\xcf\x88\xe2\x53\x55\x3e\x7e\xd6\xda\xfd\xa4\x4a\x69\x1f\xad\x93\x00\xe2\x03\x67\xe4\xa6\xa9\x5e\xdb\x9f\x8d\x6e\x80\x69\xdf\xb1\x28\xff\xf8\x7b\x54\x37\xa8\x1d\xc5\xaf\xba\x5a\x7f\xe9\x04\xdf\xf7\xd5\x4a\xe0\x02\xf8\x74\x9f\x67\xe5\x07\x55\x35\x0f\x9f\xda\xdb\x76\xf1\xe1\x84\xe5\x9d\x64\x81\x26\xe1\xc8\x5b\x9a\xba\xa1\x16\xd8\x70\xfb\xf8\x14\x0d\x37\xd0\x4c\xb3\x1b\x66\xa8\x98\x7b\x55\x15\xfa\xde\x4e\x34\xd7\x8b\x95\x15\x6f\x8c\x2c\x64\xb5\xde\xda\x5d\xd5\x68\x76\x37\x93\x8d\x2f\xbb\x99\x0c\x39\x6e\xb3\x40\x27\xea\x21\xba\xbf\xe3\x84\x71\x4d\x9d\xa2\xd1\x27\x37\xe6\x29\x1a\xfd\x62\xb0\x29\x1a\xed\xa7\x14\x8d\x46\x5e\x48\xd1\xe8\xe7\xef\xa4\x68\xb4\xaf\xf7\x14\x8d\x1e\x31\x90\x14\x8d\x3e\x30\xdc\xa4\x29\x52\x34\x3a\x6a\x34\xda\xba\x42\x11\xb1\x43\x34\xaa\xd0\x36\xf5\xa9\xa2\x90\xde\xd0\xe6\x9c\x34\x2b\x55\xb5\xb1\xcd\x8f\xd2\x5a\xb1\x90\x34\x02\x21\x28\x6a\x07\x9a\x8e\x07\x61\xe3\xfc\x75\x30\x71\x06\xdc\xe9\xb2\x59\xc9\xb7\xf2\x4e\x91\x87\x05\xd1\xb3\xe3\x8a\xb6\x57\x14\xf2\x91\xb5\xc2\x27\x48\x04\xc3\xf3\xb5\xb6\xdf\x45\x3e\x7a\x7c\x14\xb5\x6e\xc2\xdb\x70\xe9\xb1\xe7\x7b\xb5\xee\x74\x92\xe9\xee\x5a\x36\xba\x16\x0b\xf0\x9c\xe2\xf4\xf2\xb4\x8d\x30\xe3\x0d\xa3\xd8\x5f\xb6\xb9\x9e\x84\xcf\x4f\xed\xbe\x7b\xa8\xa1\x38\xdf\x24\xab\x6b\x23\x45\x33\x5c\x5c\xf7\xda\xdc\xaa\x6a\xf1\x56\x11\xec\x81\x18\x33\x07\x5c\x7a\x12\x2a\x0d\x59\xff\x10\x3c\x1a\xaa\x48\x90\x68\x1d\x2f\x45\x1b\x8e\xd4\x31\xa2\x30\x21\x11\x79\x68\xe7\x0f\x0b\x2c\x18\x13\xe3\xb0\x0a\xdd\x47\xf0\x92\xc7\x79\xb1\x30\xc6\x1c\xf0\xe3\x60\xbc\x28\x58\x40\x74\x8a\x19\x01\x63\xf7\xc0\xbd\xb9\x0d\xc7\xbe\x38\x91\x2f\x66\xdc\x8b\x13\xf5\x42\x63\x5e\xbc\xfc\x7e\x70\x17\x0b\xef\x61\xf9\x3b\x58\xf6\xfe\x75\xf4\xee\x15\x8f\x72\x4d\x62\xc4\x81\x0d\x31\x6e\x9a\xd1\xb8\xc9\xc9\x75\xdd\x77\x28\x69\xa7\x10\x09\xe8\x31\x00\xf2\x2b\xb9\x24\xc9\x25\x49\x2e\xc9\xc8\x1e\x92\x4b\xb2\xdb\x66\x32\x14\xc3\x94\x5c\x12\x3f\x25\x97\xe4\x89\xbe\x4d\x97\x84\x7c\x04\x02\xb0\x42\x04\x8a\xf2\x57\x50\xa1\x04\xfd\x14\xd0\x3e\x32\x84\x00\xd3\xcf\xd0\xd4\x70\xd2\x98\xd0\x53\x34\x6c\x01\x00\xde\x10\x3a\x11\x88\x66\x80\xd9\xcb\xf0\x7e\xc0\x99\xe5\x79\x3d\x93\x55\x38\x65\x78\x3a\x93\xe5\x75\x40\xde\x0d\xea\xd9\x70\x0e\x8c\x41\x8f\x06\xf1\x66\x60\xe6\x20\xb6\x05\xb2\x2b\x3c\x9b\xc2\xb2\x27\xa3\x6c\x09\xe6\xb1\x80\xa3\x41\xc4\x88\x34\x49\x90\x48\x30\x93\x81\xe2\xaa\x3d\x38\xf5\x27\x6e\xb7\x9c\x44\x9f\xb8\x3d\x43\xbe\xe0\x49\x34\xfd\x37\xbe\x3e\x8f\xb7\xa0\xf0\x74\x9c\x98\xa2\x45\x0e\xad\xd2\x85\xbc\x92\xa5\xcc\xdd\x70\x05\x46\xde\xad\x47\x60\xe2\xc8\x51\xd5\x46\x69\xa3\x86\xf3\x57\x10\x16\xd1\xec\xe9\x7b\x79\x53\x0a\x6b\x7d\x97\x1b\xc8\x4f\xc2\x20\x70\x92\xdf\xfd\xec\xa9\xe4\x77\xef\x0e\x2a\xf9\xdd\xc9\xef\xf6\x3d\x97\xfc\xee\xe4\x77\x3f\xa7\xe4\x77\x8f\xea\x39\xf9\xdd\x03\x4f\x27\xbf\x9b\xea\x76\xa4\xdf\x4d\x82\xaf\x20\x52\x47\x03\xae\xf0\x01\x4b\xd0\xe4\x72\x84\xf7\x08\xb0\xca\x29\x47\x48\x3e\xb2\x36\x22\x45\x53\xfa\xaf\x3e\x93\xe3\x01\x01\x58\x90\x19\xbf\xa1\x91\x20\x50\x90\x04\x4c\x2d\x60\xe8\x13\x13\xf4\x09\x60\x4d\x60\xf9\xce\x10\xbe\x44\xdc\x0f\xc0\xd1\x24\x50\xdb\x02\x21\x48\xc0\xaa\x1b\x41\x8d\x80\x1b\x6b\x1f\x8c\xd5\x18\x82\x0e\x11\x53\x43\xd9\xa6\xae\x4b\xb9\x92\x95\x13\x65\x2b\xe5\xde\x79\x00\xf6\x54\x38\x44\x09\x6a\x96\x91\xed\x81\x7d\xb4\xb9\x2b\xc7\x8e\x1d\xdf\x0b\x62\xfb\x40\x86\x2b\x01\xee\xff\x70\x09\x87\xf6\x7d\xc0\x9e\x0f\xd9\xef\xb1\xce\x77\xfd\x13\x89\x63\x93\xa0\x93\xc5\xc7\x23\x81\x99\x1c\x86\x41\x82\xcf\x21\x07\x77\xe4\x98\x4e\x81\x34\x77\x2a\x97\xaf\xf3\x5c\x37\x95\x1b\xe5\x19\x38\x5d\x4a\x23\xbc\x73\x4d\xac\x5b\x4c\x0c\xe4\xcd\x8d\xcc\x89\xfd\x04\xc8\xc1\x5b\x19\xe7\x76\xe2\x7a\xd8\xc2\x13\x74\x66\x35\xb6\xe5\x23\x74\xdd\x35\xbe\x92\x06\xf4\x17\xf4\x29\xa3\xaf\xe3\x78\x1a\x18\xfc\xc9\xc8\xba\x54\xb9\x78\xc1\x34\xdf\x86\x68\x98\x31\x4f\xcb\xe3\x8b\x5c\xd5\xa5\x70\x2f\x98\xe2\x13\xd8\x95\x74\xa2\x10\x4e\x1c\x62\x24\x25\xe8\xa2\xaa\xb4\xf3\x2f\xa5\x63\x9f\x63\x78\x7f\xb6\x03\x9a\x98\xfa\xce\xbc\x6c\xac\x93\x66\xb8\x44\x03\x39\x6e\xf9\xe0\xa4\xa9\x44\xf9\xfe\x32\x54\xe9\xc0\xac\x19\x36\x76\xfd\x20\xbe\x18\x71\x73\xa3\x72\xff\xb5\x67\xb2\xbf\xa5\x14\xa5\x5b\xbe\x59\xca\xfc\xf6\x57\x5d\x48\x5f\xa1\x89\x38\x47\x47\xa5\x16\xc5\x3f\x45\x29\xaa\x7c\xd4\x54\xec\x36\x73\xd5\xc6\x03\x3e\x8b\x6a\x31\x2c\x95\xd3\xcf\x8b\xb7\x02\x4a\x14\x5b\x14\xad\x58\x4b\x45\xcc\x74\x47\x38\xac\x01\xaa\xeb\xe9\xd0\x5c\xec\x3e\x91\x5b\x9e\xde\x58\xd9\x68\xb3\xb2\x56\xeb\xd6\x2a\x5d\xbd\xbe\xb9\x51\x55\x17\xcb\xb8\x51\x8b\x31\xa1\x8c\xbc\x54\xb2\x22\x4a\xcd\xa0\x4e\x2e\x0f\xeb\x82\x83\x74\xc1\xdb\xa5\x8d\x73\x2c\x7d\x3b\x69\x62\x4d\x84\x98\x7d\xeb\xb4\x11\x0b\x96\x81\x16\x6d\xa0\xfe\xa3\x2e\x0e\x4f\x88\x47\x3f\x40\xe3\x3f\x2c\x7d\x6b\x8f\xa0\x53\x8e\x41\x7e\x41\xad\xbc\xe1\x2b\x52\xd9\xdc\xaa\xe1\x63\x74\xf2\x65\x9f\xb2\x23\x5e\xf6\x2d\xfa\x8b\x76\x54\x07\x7f\x18\xd8\xd1\x7a\x85\xcf\x1b\x8c\xa6\x18\xec\x0f\x42\x1f\x3f\x77\x84\x0a\x3a\xcf\xcb\x0b\xf4\xa4\xde\x50\x8c\x5f\x09\x97\xb7\x30\x0b\x9d\x66\x9e\xd6\x6a\xcf\x72\xdb\xd7\xee\xba\x62\x20\x94\xf0\x82\x9d\x44\x0c\x07\xb1\xd6\xb7\x72\xf8\xfd\x8b\x0d\x93\xa6\xb4\xe7\xad\xf4\x7c\x10\xd7\x72\x38\x6c\x38\xaf\x95\xd2\x59\x2b\x6f\xae\x96\x77\x08\x3d\xa8\x4d\x11\xfa\x6a\x40\xaf\x94\xed\xfd\x72\xc0\xe2\x0f\x36\xb7\x03\x16\x75\x78\xbb\x34\xfc\xa6\xae\x75\xa9\x17\x2f\x5e\xf0\x2d\xfd\xc5\x90\xd1\xa4\xf4\xc5\xb5\xb0\xf2\x4a\x9a\x3b\x69\xde\xbf\x05\x36\x61\x83\x01\x18\xda\xf3\x5a\x0d\xcc\x65\x36\xb1\x65\xf6\xca\xe9\xd0\xa0\x42\xa4\xa4\xa9\x0b\xe1\xe4\x95\x33\xc2\x49\xde\xec\x19\x5d\x96\xaa\x5a\x7c\x6d\x1b\x08\x99\xc5\x5a\x18\xa7\x7c\x30\x49\x31\xf6\xd1\x5e\x46\x0e\x79\xc3\x21\x8c\xbc\x93\xc6\x1e\xf8\x96\x81\xa6\x0e\x29\xf0\x8b\xbe\x8d\x1f\x88\xee\xac\x13\xae\xd9\x63\xea\x10\xab\xf5\xb5\x5d\x2f\x93\xe2\x67\x59\x3d\x05\x2f\x3d\x01\xb8\x17\xcb\x64\x98\xb7\xf5\x52\x58\x5c\xab\x18\x29\x2c\xcc\x99\x03\x5f\xfc\xec\x4f\x3d\xa7\xb3\xbb\xbf\x88\xb2\x5e\x8a\xbf\x6c\xff\xd6\x7e\x7e\xe7\xa0\xee\xfd\xdc\x85\x0c\x65\xb1\x93\x34\xd2\x6f\x4d\xba\xbf\xfc\xbf\x00\x00\x00\xff\xff\x2a\xda\x6c\x98\x53\x74\x03\x00") +var _kubedbCom_mysqlsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdc\x36\x96\x37\xfa\xff\x7c\x0a\x94\xb3\x55\xb2\x6f\xa9\xa5\x78\x26\x9b\xcd\xba\xb6\xe6\x29\x45\x92\xb3\xba\x13\x3b\x1a\xb7\x1c\x3f\x55\x5b\xcf\x9d\x42\x93\x68\x35\x46\x6c\x82\x21\x40\xc9\x9d\x5b\xf7\xbb\xdf\xc2\x2b\x41\x36\x09\x1c\xb0\x5b\xb2\xe2\x69\xfc\x31\xe3\xb4\xc8\x43\xbc\x9e\x73\x70\xde\x7e\xb8\xa2\xbf\x92\x9a\x53\x56\xbe\x41\xb8\xa2\xe4\xb3\x20\xa5\xfc\x2f\x7e\x72\xf7\x03\x3f\xa1\xec\xf4\xfe\xf5\x82\x08\xfc\xfa\x4f\x77\xb4\xcc\xdf\xa0\xf3\x86\x0b\xb6\xfe\x40\x38\x6b\xea\x8c\x5c\x90\x25\x2d\xa9\xa0\xac\xfc\xd3\x9a\x08\x9c\x63\x81\xdf\xfc\x09\xa1\xac\x26\x58\xfe\x78\x43\xd7\x84\x0b\xbc\xae\xde\xa0\xb2\x29\x8a\x3f\x21\x54\xe0\x05\x29\xb8\x7c\x06\x21\x5c\x55\x6f\xd0\x5d\xb3\x20\xf9\xe2\x4f\x08\x95\x78\x4d\xde\xa0\xf5\x86\xff\x56\xf0\x13\xfd\xeb\x49\xc6\xd6\x7f\xe2\x15\xc9\xe4\xf3\x38\xcf\xd5\x87\x70\x71\x5d\xd3\x52\x90\xfa\x9c\x15\xcd\xba\x54\xb4\x66\xe8\xff\x9e\xff\xf2\xfe\x1a\x8b\xd5\x1b\x74\x22\x5f\x38\xb9\xd7\x43\x52\xdf\xd1\x94\x7f\xf5\x7e\x11\x9b\x8a\xbc\x41\x5c\xd4\xb4\xbc\xdd\x7a\x5d\x60\xd1\xf0\x93\x6a\x85\x39\xf1\x5e\x9f\xab\x9f\xa3\x6f\xdb\x59\x38\xd9\x9a\x02\x8f\xd6\xd9\x2d\xf1\x08\xe5\x58\xc8\xff\xbc\xad\x59\xe3\xe6\x43\x8d\x5c\x3f\x6e\x26\x2b\xc3\x82\xdc\xb2\x9a\xda\xff\x9e\xc9\xf7\x30\x17\xac\x26\xe6\xbf\xdd\x4c\xca\xff\xc0\x55\xc5\x33\x96\xdb\xbf\x61\x35\xf9\x08\xe9\x35\x7c\xb7\x99\xff\xfd\x67\xf5\xdf\x05\xe5\xe2\x6f\xed\x6f\x3f\x53\x2e\xd4\xef\x55\xd1\xd4\xb8\xb0\xcb\xa1\x7e\xe2\x2b\x56\x8b\xf7\x6d\x87\x66\x68\xbd\xd1\x7f\xa0\xe5\x6d\x53\xe0\xda\x3c\xfd\x27\x84\xaa\x9a\x70\x52\xdf\x93\x8f\xe5\x5d\xc9\x1e\xca\xb7\x94\x14\x39\x7f\x83\x96\xb8\x50\x53\xca\x33\x26\xc7\xad\x68\x55\x38\x23\xb9\xfc\xad\x59\xd4\x66\x4f\x19\xfa\x7a\x1d\xde\xa0\xff\xf7\xff\xfb\x13\x42\xf7\xb8\xa0\xb9\x9a\x4f\xfd\x47\x56\x91\xf2\xec\xfa\xea\xd7\xbf\xcc\xb3\x15\x59\x63\xfd\xa3\xfc\x30\xab\x48\x2d\xdc\x24\xe9\x5d\xe6\xf6\xb7\xfb\x0d\xa1\x9c\xf0\xac\xa6\x95\xa2\x88\x8e\x24\x29\xfd\x0c\xca\xe5\x8e\x26\x1c\x89\x15\x41\x66\x13\x91\x1c\x71\xf5\x19\xc4\x96\x48\xac\x28\x47\x35\x51\x43\x2c\x85\xea\x92\x47\x16\xc9\x47\x70\x89\xd8\xe2\x9f\x24\x13\x27\x68\x2e\xa7\xa1\xe6\x72\xf2\x9a\x22\x47\x19\x2b\xef\x49\x2d\x50\x4d\x32\x76\x5b\xd2\xdf\x1d\x65\x8e\x04\x53\x9f\x2c\xb0\x20\x66\x0d\x6c\x53\x9b\xbd\xc4\x85\x9c\x84\x86\x1c\x23\x5c\xe6\x68\x8d\x37\xa8\x26\xf2\x1b\xa8\x29\x3d\x6a\xea\x11\x7e\x82\xde\xb1\x9a\x20\x5a\x2e\xd9\x1b\xb4\x12\xa2\xe2\x6f\x4e\x4f\x6f\xa9\xb0\x27\x3a\x63\xeb\x75\x53\x52\xb1\x39\xcd\x58\x29\x6a\xba\x68\x04\xab\xf9\x69\x4e\xee\x49\x71\xca\xe9\xed\x0c\xd7\xd9\x8a\x0a\x92\x89\xa6\x26\xa7\xb8\xa2\x33\xd5\xf1\x52\x28\xb6\xb0\xce\xbf\x71\x4b\x75\xe4\xf5\xb4\x77\x2c\x74\x53\x1b\x6e\x74\xde\xe5\xd6\x43\x94\x23\x6c\x5e\xd3\xfd\x6f\xa7\x57\xfe\x24\x67\xe5\xc3\xe5\xfc\x06\xd9\x8f\xaa\x25\xe8\xce\xb9\x9a\xed\xf6\x35\xde\x4e\xbc\x9c\x28\x5a\x2e\x49\xad\x17\x6e\x59\xb3\xb5\xa2\x48\xca\xbc\x62\xb4\x14\xea\x3f\xb2\x82\x92\xb2\x3b\xe9\xbc\x59\xac\xa9\x90\x2b\xfd\x5b\x43\xb8\x90\xeb\x73\x82\xce\x71\x59\x32\x81\x16\x04\x35\x95\x3c\xb5\xf9\x09\xba\x2a\xd1\x39\x5e\x93\xe2\x1c\x73\xf2\xe8\xd3\x2e\x67\x98\xcf\xe4\x94\xc6\x27\xde\x67\xc7\xb6\x0d\x1d\x0f\xc7\x95\x3a\xbf\x20\xb4\xc6\x9f\x7f\x26\xe5\xad\x64\x6a\xdf\xff\xa5\xf7\xb7\x0a\x0b\xb9\x25\xdf\xa0\xff\xe7\x7f\xf0\xec\xf7\xff\xf3\xf2\x7f\x66\x78\xf6\xfb\xb7\xb3\xff\xfc\x3f\xff\xd7\xff\x98\x7f\xbc\xfa\x5f\xff\xd6\x7b\x67\xb0\x93\xf6\x67\xbd\x80\xee\x67\xcb\xf2\x63\xfd\xce\x58\xb9\xa4\xb7\x73\xb5\x2b\xfa\xfd\xef\x6c\xb4\x73\xef\x41\xb5\xdf\x4a\xc4\x2a\x2d\x4c\xd0\x52\x72\x27\x79\xfc\xaa\x9a\xdd\xd3\x9c\xa0\x4c\x49\x38\x43\xbc\xa9\xb7\x8f\xb8\x6c\x4b\x5a\x10\xb4\x64\xb5\xe2\xc2\x0b\xcc\x09\x7a\x49\x4f\xec\xbb\x33\xc5\x08\x4f\xb2\x72\xf9\xea\x04\x5d\x2d\xd5\x78\xe8\x92\x92\xfc\xd8\xec\x42\x5a\x90\x2d\x8a\x0f\xb4\x28\xd4\xd6\xe2\x24\x47\x98\x77\xbf\xaf\xbf\xc7\xc4\x8a\xd4\x0f\x94\x13\xc9\xa5\x70\x53\x08\x48\x27\x7d\xba\x27\xfd\x85\x1c\x99\x58\xd9\xf0\x03\xbf\x2c\x30\x17\x34\xfb\xb1\x60\xd9\xdd\x5c\x4a\x9a\xed\xa7\xb6\x38\xe9\xa7\xf9\xd6\x5b\xde\xc1\x94\x33\x7f\xf6\x69\x8e\x2e\x28\xbf\x73\x07\x7a\x80\x28\x42\x62\x85\x85\x5a\x2a\x21\x70\xb6\x22\x6a\x85\xb0\x92\x71\x05\x11\x47\x47\x1c\xad\x18\x17\x68\x8d\xb3\x15\x2d\x89\xe2\x89\x62\x45\x4a\x44\x3e\x57\x8c\x2b\x89\x32\x40\x52\xb3\xd8\x8a\xe5\x83\x27\x55\xd2\xae\x4b\x22\x88\x3a\xac\x39\xcb\xb8\x3c\xa7\x19\xa9\x04\x3f\x95\x72\x16\xdf\x92\xd3\x7b\xa9\x73\x10\xfe\x0d\x7e\xe0\x44\x0f\x73\x21\x87\xa9\xc4\xf0\xd1\xc0\x47\x43\x13\xac\x56\x88\xdf\xc8\x03\x30\xf8\xb7\xfe\xd4\xbe\xa5\x05\xe1\x1b\x2e\xc8\x5a\x9d\x1a\x2d\x8c\x08\xd2\x5d\xd2\xf3\xb5\x61\x0d\x7a\xc0\x92\xab\xb1\x11\x92\x08\xad\x59\x53\x8a\x13\x74\x43\xab\x37\xe8\xb2\xe4\x4d\x6d\xde\x95\xb4\x96\xbd\x4f\x50\x8e\x78\x53\x55\xac\x16\x24\x47\x8b\xcd\x28\x4d\xf9\xae\x5a\x0f\x39\x5a\xac\xd8\xb6\x26\x73\x82\x2e\x3f\xe3\x75\x55\x10\xfe\x06\xbd\x20\x9f\xc5\x77\x2f\x8e\xd1\x8b\xcf\x4b\x2e\xff\xaf\x14\x4b\xfe\xa2\xbf\x23\xdb\x76\xb5\xae\x0a\x9a\x51\x51\x18\x06\x5e\xeb\x3d\xb0\x20\x86\x10\xa2\x4b\xd4\x94\xee\x68\xf9\x4b\x3a\x4a\x73\x5f\x4b\x3d\xfa\x81\x9b\x5f\x2e\x7e\x79\x83\x56\xec\x01\xe5\x0c\x3d\x10\xa9\x09\x49\x06\x8e\x48\x5d\xb3\x9a\x23\x5a\xf6\xa7\x59\x09\xa4\x8c\xad\xab\x9a\xad\x29\xef\xf2\xc6\xed\x39\x36\xdb\x7d\x68\xa7\xa1\x71\x1e\xdb\xb6\x0a\xd7\x82\x8a\x9e\x2a\xe4\xb7\xee\x8e\xbb\x91\xa7\xc5\xbe\x62\x3b\x3f\xb2\xdf\xcc\xbe\x1a\x5f\xce\x25\x62\x6b\x2a\x84\x66\x82\x2d\x07\xa3\xdc\xbd\x8c\x16\x1b\x4b\x5d\x4a\x24\x6f\xef\x8c\x52\x7d\xcb\x6a\xfb\x8a\x94\xa3\xa7\x3c\xc7\xaf\x8f\x55\xb7\xf4\xc6\xd8\xe8\x13\xef\xc6\x80\x39\x7a\xf1\xfa\xc5\x09\x9a\xd3\x35\x2d\x70\x5d\x6c\x8e\x83\xf3\x6d\x48\xb7\xef\x4b\x8e\x6f\x3f\x24\xbb\xfe\xe2\xdb\x17\xe8\x25\xab\xd5\x17\x33\x5c\xa2\x82\xe0\xfb\xf1\xdd\xa1\xfa\xa2\x39\xc2\x06\x91\x75\x25\x36\xaf\x4e\xc6\xd6\x72\xc9\xea\x35\x16\x6f\xa4\xf6\xf7\x97\x3f\x07\xd7\x5b\xea\x87\xb7\xa4\x1e\x7c\xa6\x26\x38\xff\xa5\x2c\x36\xb0\xf5\x9e\x9b\x39\x7b\x21\xea\x86\xbc\x90\xeb\xb2\x64\x52\x62\x4a\xee\xca\x89\x66\x11\x1f\x0c\x45\x37\x90\xd1\xd1\xd2\x12\xfd\xaa\xe6\xef\x9d\x5c\x5c\xb5\xcc\x9a\xf0\x49\x68\x33\xbc\x50\xb7\x84\x00\x5f\x78\x22\xce\xdd\xce\xef\x82\xb1\x82\xe0\x6d\xe9\x2a\x9b\xa6\x7a\x75\x01\x9b\xdf\x8f\x25\xfd\xad\x21\xe8\xea\xc2\xf2\xee\x4a\x5e\x30\xb8\x90\x1c\x22\xf7\x25\xa2\x9c\xbb\xb3\x4f\xf3\xd1\x39\x78\x79\xb6\xc6\xbf\xb3\x12\x5d\xfe\x38\x37\x5d\x78\xf5\x64\x22\x0d\xc5\x19\x8d\x54\x9a\x69\x4d\xf2\xa1\x59\x99\xb9\x39\x1b\xf8\xe3\xa0\x36\x68\x1b\xfe\xbd\xa9\x89\x54\x1c\xa2\x5a\xc8\x99\x7d\xb2\xaf\x79\xc8\xdf\xd1\x05\x16\x58\x2b\x20\x9a\xeb\x30\xc5\xd7\x06\x47\xaa\x64\x9a\xdc\xfd\x0b\x79\x51\xd1\x8f\x7b\x5a\xc4\x04\x81\x9f\x29\x0e\x7e\xfb\x8e\xe5\x40\xa9\xff\xdf\xb2\x0b\xe7\xfa\x2d\xb4\x96\xaf\xa1\xf7\xac\x24\xc7\xea\x20\x22\x79\x12\xcd\x3f\x3f\xd5\x54\x90\x51\x76\x12\x15\x0d\x72\xff\xbd\x1f\xb8\x07\x0c\xf6\x4a\x0a\x06\xf9\xb0\xdd\xc7\x52\x09\xd6\x3b\xd8\x08\x89\x45\xc1\x16\xc8\xec\xb0\x5d\x7a\xf4\xf1\xc3\x15\xb8\x43\x1f\x3f\x5c\x3d\x5e\x67\x12\x14\xb5\xbe\x9e\xe6\x64\x23\x7a\xd7\x70\x75\x7b\xc4\x9e\x06\x30\x2e\x2c\xe4\xbb\xbe\xf6\x15\xd6\xb2\x4e\x7a\xfa\xd5\x28\x5d\xa3\x77\x25\xeb\x57\x53\x67\xae\x6f\x01\x18\x9d\xb7\xa3\xcb\xcf\x15\xc9\x84\xb3\x62\xa0\xf9\x0a\x4b\x26\x82\xd6\x4d\x21\x68\x55\x98\x85\x94\x2b\xcb\x25\xe7\x1c\x1d\xa1\x59\x6a\x84\xb3\x4c\x9d\x58\x74\x41\x72\x9a\xc9\xfb\xfa\x1b\x65\xac\xf2\x29\x49\x42\xdb\x2f\xbc\xc3\x25\xbe\x1d\xe6\x5f\xba\x29\x5e\x84\xd6\xfa\x31\x6f\xc7\xbd\x64\xa5\x9a\x4f\xf7\x27\x7c\x8f\x69\x81\x17\xb4\xa0\x62\x23\x65\xe8\xab\x71\xc1\x66\x84\xa0\x12\x94\x5c\x0d\x7d\xf2\x61\x4e\x12\xfb\x17\xde\x77\x95\xf0\x45\x2f\xe5\xfb\xa7\x0f\x92\xa1\xbc\x3a\x69\x25\xfe\x8a\xd4\xfa\x3a\x39\x3a\x04\xad\x2e\x74\xd4\x04\x4e\x84\xda\xa9\x3d\x6d\x20\xbc\x9d\xc6\x45\x6e\x58\xb4\x58\x26\x36\xfa\xc7\x8f\x1f\xae\x26\x89\x1d\x79\xa6\x61\x62\x47\x3e\x39\x28\x76\xd4\x1f\xe6\xa4\xbe\xa7\x19\x71\x92\x67\xe4\xea\x4b\x1e\x41\xf2\x7c\xbd\x7b\x02\x21\x4e\xb2\x9a\x08\xb0\xf8\x92\x9d\x29\x8d\xf8\xd2\xaf\xea\xeb\x4c\xc6\x4a\x81\x69\xc9\xcd\x8a\xcd\x83\x22\x03\xa1\x33\xc3\x2e\x94\x24\x94\x6b\xf5\x37\x32\xa6\x0d\x47\x4f\xac\x3a\xf0\xe0\x01\x28\xce\x88\x46\x76\x3a\xe0\x7b\xe1\x53\xd4\xce\xe6\xf0\x9f\x6d\x57\x53\x4f\x52\x46\xaa\xd5\x72\x70\x77\x76\x8d\x75\xa4\x5a\xbd\x9d\x77\xce\x90\xfa\x0d\xbd\x9d\x77\x34\x36\x7d\x46\xe4\xc2\x8d\xcf\xa8\x7c\xb7\x62\xf9\x11\x47\x05\x5d\x12\x41\x07\x3b\x1d\x3b\x39\x6b\x56\x52\xc1\xea\xd1\x6b\x68\x57\x8a\x7d\xb0\x73\x8b\xde\x99\xf7\xb4\x85\x3b\x63\x45\x41\x32\x75\x8b\x64\x4b\x3d\x20\x4b\x38\xe5\xae\x43\xcc\x9d\xd8\x79\xe7\xb4\xfa\x7e\xaa\x27\xf7\xf4\xc3\xe5\xd9\xc5\xbb\xcb\x93\x75\xfe\xcd\x8a\x3d\xcc\x04\x9b\x35\x9c\xcc\xa8\x18\x93\x24\x54\x90\x75\xe0\x7a\x1d\xdd\xb6\xf6\x11\x5c\xd7\x78\x78\xef\x57\x58\xac\x60\x13\xf7\x8b\xb1\xc8\xbe\x41\x1f\x8d\x09\x54\x99\x3c\xe4\x8a\x93\x1c\xd5\x8c\x89\x63\x54\x63\xb1\x52\xb6\xfc\x11\x46\x80\x0c\xfb\x5c\x36\x45\xa1\xe7\x58\xd4\x84\x1c\xfb\x17\xcc\xd3\xa7\x91\xaa\xde\x70\xa0\xcc\x74\xdc\x6c\x65\x99\x6c\x0a\x33\x55\x9b\x27\x70\x39\x7f\xbc\x4d\x05\xe5\xd7\x63\x42\x35\x34\x97\x73\xf7\xa6\xb2\x1c\x29\xe3\x8e\x58\xc9\x99\xbd\x23\x1b\xa4\x7c\x48\x4b\x36\xae\x1a\x7e\xe4\xa4\xee\xee\x06\x22\x32\x35\xcc\xd3\x86\x93\xfa\xc4\x48\x83\x47\x3f\x77\x71\x79\xa0\x3a\xf2\x81\x2c\xa7\x4d\xd0\x07\xb2\x44\xca\x4f\xb9\x24\x35\x29\x33\x62\x75\x07\xdc\x88\x15\x29\x85\xd4\x86\x87\x1c\x06\xdd\xaf\x2b\x6b\xd7\xd6\x8c\x29\xbb\xd5\xa0\xb5\x61\xbf\x53\x14\xe3\xca\x68\xc4\x71\x35\x3e\x49\xfe\x8d\xd5\xcc\x8c\x48\x36\x9b\xb0\x7b\xa9\xc2\x91\x87\xd3\x07\x56\xdf\xd1\xf2\x76\xf6\x40\xc5\x6a\xa6\x25\x1e\x3f\x55\x0e\xfb\xd3\x6f\xd4\xff\x05\xfa\x65\x0d\xc5\x67\x79\xae\x9d\x3a\xa8\xe1\x64\xd9\x18\x67\x14\x3f\xf1\x9c\xd6\xc7\xea\x02\x75\x8c\x1a\x9a\xff\xaf\xb1\xa9\x42\x29\xac\x7a\x44\x38\xcb\x26\x8f\xc0\x04\x5e\x5d\xdb\xa3\x58\xe3\x9c\x71\x45\x45\xad\x8c\xdb\x36\xe3\x5c\x88\x23\x9c\xaf\x69\xf9\xc5\x0f\x5c\x58\x21\x0a\xc8\xe9\xb0\xc2\x43\xcb\x7c\x78\x46\xbb\xb3\x79\xae\x9e\xeb\x6a\x3c\xfa\x5d\x6b\x81\x76\x5e\x30\x6c\x6f\x03\x23\x3e\x2e\x56\x5a\x1f\x59\xd7\x43\x06\x3a\xb0\xca\x6d\x39\xd3\x5f\x9e\x55\x79\x3b\xc7\x4f\xed\xda\x7a\x1a\x93\x49\xcf\x31\x35\x6e\x31\xe9\x38\xac\xf6\x65\x38\x01\x69\x77\x49\x2b\x82\x0e\x4a\xcc\x1e\xe6\x2e\xae\xb7\x4c\x90\xca\x2a\xd6\x84\x6b\x1f\xb6\x11\xae\x26\x68\xc5\xdc\x39\x43\x9e\xbf\x0a\xd7\x78\x4d\x04\xa9\xb9\x0e\x0e\x10\x4c\xbe\x55\xca\xb7\x05\x43\xbf\x54\xa4\x9c\x0b\x9c\xdd\x8d\xda\x7e\x0f\x92\xf4\xc9\x25\x69\x9a\x5f\xc8\x30\x79\x9a\xbb\xf5\xa5\xb9\xd4\xd2\x8c\xfb\xd2\xfe\xb9\x34\x42\xe1\x59\x71\x94\xc7\xf1\xf5\xe8\xb8\x96\x77\xb8\x8a\x5b\x0b\xec\x93\x3d\xf1\xe9\x7e\x56\x96\x1d\x13\x7f\x57\xb1\xaa\x29\x74\xb8\xe5\x40\x87\x56\x94\x9b\x0e\x4f\x10\x77\x46\xd5\x81\x3b\x76\x5a\xe6\xb0\x66\x39\x41\x0b\xaa\xf9\x43\xc3\x89\x14\xe2\x2a\x7c\x94\xe4\x5a\xea\x85\x42\x2f\xcc\x77\x7d\x49\xa9\x83\xe8\x16\x44\x3c\x10\x52\xa2\x6f\x95\xce\xf0\xed\x7f\xfc\xc7\x7f\x9c\x74\x98\xf8\xb7\xdf\x7f\xf7\xdd\xf8\x4e\xba\xa0\x35\xc9\x84\x8a\x37\x45\xf2\x5c\x1a\x57\x8a\xba\x6c\xe1\x9a\xa0\x92\x09\x84\x97\x4b\x6d\xaf\x57\x82\x96\x72\xcb\xc5\xc7\xa9\xde\xc8\xa7\xd6\xf4\x76\xa5\x7a\x2a\x37\x34\x2b\x97\x05\xcd\x84\xfa\x86\x39\xc0\x3a\x32\x8b\xeb\x85\xd3\xdf\x18\x75\xd0\x21\x1b\xe5\x24\xe7\xf0\x18\x15\xf4\x8e\xa0\x25\xff\xa9\x66\x4d\x75\x6c\x83\x82\x50\x4d\xb8\x8a\x95\xc2\xa5\xfc\xaa\xfe\xc8\xda\xc6\xc6\x0e\x35\xb5\x16\x9c\x88\x47\x76\xce\x07\x8d\x2f\x9d\xcd\x72\xd5\xd1\x28\x8e\x11\xc1\xd9\x4a\x5e\x78\x67\x7a\xa9\x2b\x4c\x6b\xeb\xec\xba\xc0\x02\x07\xa6\x8a\x14\x79\x8f\x71\x67\x24\xf7\x0e\x91\x8d\x16\xab\x6a\xf6\x4f\xbd\xb8\xb4\xd4\x77\xc7\x51\xa2\x56\x45\xe5\x46\x49\x43\x0f\x2b\xc6\x8d\x81\xd5\x5c\x0c\xe4\xdd\x5c\xae\x86\x14\x76\xa4\x14\xe6\xe7\x71\x8a\x72\x54\xdb\x91\x73\x44\x85\x2b\x93\x5c\x92\xe3\x23\x3d\x0d\x5a\x85\x1c\x35\xb5\x8f\xb9\xde\x21\x4d\xb9\x45\xd5\x04\x79\x1a\x76\x12\x8c\x69\xc1\x6a\x6c\x72\xef\x3b\xda\x0f\x2b\x9a\xad\xe4\x4f\x92\x8c\xa1\x61\x57\xc7\x4d\x34\x28\xee\x84\x13\xd1\x98\x25\x51\x01\x44\xb2\xaf\x84\x73\x44\xd5\x0c\xae\x71\x7d\x47\x72\x17\xc8\x38\xde\xcd\x6b\x39\x58\xb4\x36\xfc\xa1\x26\x05\x16\xf4\x9e\xb8\x38\x62\xd9\x4d\xa3\x85\xa8\x8f\x1f\x9d\x9c\x1c\xe9\x83\x1e\x30\xa4\x70\x81\x6b\x73\x6a\xe5\xf3\x63\x1f\x8f\xd8\x17\x3b\x9b\xfc\x1d\xae\xbc\x48\x60\x39\xad\x4a\x5d\x52\x3d\x31\x2c\x08\x9b\x99\x19\x1f\x2b\x44\xd7\x41\x92\x78\xe8\xcf\x03\xce\x65\xd3\x1d\xb3\xd9\xc6\xbf\x8f\x60\x0a\x04\x52\x66\xe5\x71\x51\x31\xd0\x8b\x88\xc0\x70\x81\xa5\xe3\x3b\xcb\x7c\x16\x20\x27\xae\x96\x6a\x57\xb4\xa7\x2f\x42\xd3\xdb\xb3\x9e\x1c\xec\x86\x9e\x6e\x31\xff\x08\xcd\x04\xd1\xe0\x89\x80\x08\xd1\x34\x01\xa1\xe6\x38\x42\x31\x24\x26\x74\x83\x08\x0b\xdd\xe2\x22\x43\xb7\x90\x4d\x5d\xb7\xad\xfd\xeb\x4e\xbd\x3e\xd8\xcb\x76\xda\xe4\x5d\x5b\xa9\x49\xe3\xfc\x58\x37\x7d\x04\x4e\xd0\x3b\xc3\x33\xe4\x1e\x2a\x11\x5e\x70\x56\x34\x42\x13\x6e\xff\x68\x18\x0a\x60\xdf\xa8\x0e\x91\x82\xac\x25\x9b\x54\xbc\xc4\x11\xf1\x98\x8c\x62\xdf\xb1\x13\x25\x5b\x88\x1b\x99\x8f\x42\x8e\x67\x48\xad\xd5\x6d\x26\x27\x24\xf0\x57\x39\xae\x88\x63\x25\x70\x81\x88\x3b\x56\x42\x37\xb6\xe7\x79\x5b\xdb\xeb\x4d\x2d\xba\x8a\x56\x2e\xc2\x1c\xaa\x26\xf2\xf1\x61\x45\x8c\x83\xc9\x93\xd5\x88\xd5\x48\x32\x5b\xa5\x20\x48\xf6\x39\xae\x38\x12\x93\x3f\x34\x6c\x9c\x8b\x9b\x18\xc2\x97\x22\x4e\xe3\xd7\xa1\xf9\x15\x7a\x79\xae\x0f\x1f\xa9\xad\x0b\x1b\x5d\x95\x82\xd4\x4b\x9c\x91\x57\xfe\x35\x29\x14\x13\x65\xe3\xef\x57\xb8\xcc\x0b\xad\xe3\xe3\x12\x91\xcf\x26\x17\x49\x7e\x27\xaf\xe9\x3d\xa9\xd1\xcb\xb3\xa2\x5a\x61\xb4\x24\x58\x34\x35\x19\x0c\x70\x89\x5e\x9e\x14\x25\x58\x64\x82\xfe\xa8\x51\x2c\x4b\x6f\x6b\x7b\x5d\x52\x9d\xd7\x3d\x1f\xdf\x8e\xde\x7d\xef\x44\x2e\xb6\x92\x01\x8a\xd9\x6c\x58\x53\x1b\xc3\xf4\x92\xe9\xcd\x90\xb1\x5a\x5e\x88\xd4\x07\x47\x29\x62\x8e\x6a\x72\x2b\xb5\xc9\x5a\xa9\xa3\x26\xb9\xa8\x91\x3f\x4c\x8e\x9f\xda\x4b\xe4\xd9\x76\x7c\x58\x3c\xfe\x7e\x69\x14\x58\x95\x15\x63\x14\x70\xe5\xfc\x31\x8a\x03\xe5\xa8\xc2\xdc\x18\x2c\x94\x73\x89\x73\x96\x51\x3c\x66\x9a\x96\xcd\x5b\x23\xad\x26\x2b\x15\x21\x27\x82\xd4\x6b\x5a\x92\x4e\x30\xb0\x9f\x8c\x30\xae\xd7\xe3\xaa\x2a\x36\x93\x27\xb7\x64\x39\xb9\x6e\x16\x05\xe5\xab\x79\x92\x6d\xef\xfd\xc0\x8b\xda\xcf\xbf\xe5\x73\xd3\xf6\xbe\xd1\x01\x6c\xd9\x01\x11\x27\x25\xa7\x4a\x58\x4b\xf6\x2c\x95\x07\x2a\x15\x3c\xa6\xa6\xdb\x52\x3d\x9f\x0f\x45\x32\x99\x9e\x9a\x53\xc0\x54\x66\x41\x41\x04\x71\x07\xc4\xeb\xf7\xaf\xe6\xde\x56\xe6\xea\xd7\x8f\x65\xe5\xff\x3e\x4a\x3c\xc3\x45\xc1\x8d\x36\xa7\xef\x93\x94\x3b\x66\xab\x75\x2a\x75\xad\x58\xd8\xdd\x42\xe5\x46\x8a\xcd\x02\xe5\x4e\xe4\x2a\xf5\xb3\x9d\xb8\xde\x04\x71\xb4\x66\x3a\x65\xa5\x44\xac\xb4\x0f\x8d\xeb\x7d\xb8\x28\x2c\x21\xb7\x32\x5c\x99\x30\xf4\xe6\x1d\xdb\x3a\x07\xa3\xe9\x93\x1b\x4d\x93\x5c\x13\x73\x73\x37\xd1\x47\x0e\xe7\x33\x15\x79\xd9\x4b\x9a\x33\xcc\x3b\x76\x69\x8c\xf8\x36\x26\xbb\x0b\xf4\x77\xcf\x84\xce\xf5\x1c\xdf\x49\x7e\x6a\x7b\x7c\xd7\x01\xa6\xba\x33\x53\xbf\xf6\x7a\xa1\xc4\x3e\xe1\x86\x4b\xcc\xcc\x25\x2f\xf3\x76\x7c\x40\x64\xca\x7b\x97\x3b\x3b\x1e\x2f\x32\xd4\x5a\x41\xaa\x64\xa8\xfe\xf1\x88\xa3\x9c\x65\xcd\x7a\x30\x5f\xda\x6f\x72\xbd\x5a\xf7\x9d\xc9\x65\x9e\xb6\x9b\x22\x71\xa2\xaa\x5f\xa9\xfa\x57\xce\x1e\xca\x07\x5c\xe7\x67\xd7\x83\x41\xe9\x5d\x35\xa5\x7d\xd6\xd7\xb8\x2c\x09\x24\x7f\xc7\x0b\xd6\x08\x1b\xd2\x19\x0a\x64\xeb\xd8\xae\x0f\x76\x6a\xbf\x1d\xec\xd4\xcf\xca\x4e\x2d\x9f\xd4\x6a\x50\x41\xb9\x90\xd2\xae\xb3\xe3\x8d\x8d\x68\x30\xff\x19\xf0\xad\xf1\x33\xa6\x79\x5c\x3f\xf6\xda\x53\x9f\x42\xa2\x8b\x99\x5d\xdc\xda\x44\x3c\x65\xcc\x1e\x4f\x25\x1a\x77\x34\x3b\x2a\x1a\x01\x0d\x73\x60\x8c\x5e\x38\xe9\x9c\x14\x52\xc8\x2b\x2b\xbb\x67\xc6\xaf\x58\xfe\x06\xb1\x90\xe7\x5d\x37\x55\xbb\x40\xcd\x05\x3f\x36\x65\x58\x8e\xf5\xfd\x49\xee\xbf\xd2\x16\xe3\x50\xa7\xc6\x31\xe1\x88\x69\x0b\x36\x6c\x34\x5a\x85\x03\x30\x01\xb6\x2e\x87\x19\xad\x29\xc4\x21\xff\xa9\xca\x8a\x5c\xcb\x83\x4e\x63\x46\x3a\xd9\xa4\x30\x17\x44\xa7\xb1\x92\x7a\xcd\x11\x5b\x1e\x77\x72\x2e\x5e\xdc\xbf\x0e\x5c\x87\x6c\x03\x1a\x77\x91\x5d\xee\xeb\xa8\xad\x6e\x6b\xc8\xd7\x1d\x13\x9d\xa9\x4e\xc0\xd5\xea\xdb\x4b\xa5\xb3\xcc\x02\x06\xae\x0e\x9e\x9e\xc5\x3d\x0e\x2f\x6e\x20\x43\x4a\xd4\xba\x49\x00\xd8\xe4\x82\xf6\x30\x74\x30\x99\x1f\x4c\xe6\x5b\xed\x91\x4c\xe6\x1e\xdb\x35\x1c\x06\x99\x61\xfb\x66\xf4\xa0\x31\x48\xb7\x9e\xa5\x7d\x41\xac\xc6\x64\x14\x21\x6b\x48\xb7\x56\x74\x56\x27\x98\xce\x8f\x8e\x4e\x4e\x8e\x8e\xac\xe5\xdd\x6c\xd2\x46\x2c\x67\x3f\x20\x52\x66\x2c\xd7\x5b\x48\x7e\xbd\xe6\x42\x89\x56\x58\x6f\xbb\xa3\x5c\xdb\x7e\xfa\x3e\x3f\xf5\xe5\xf0\x22\x02\x59\x89\xcd\x79\x7e\x3b\x41\x38\xb6\x22\xd1\x65\x4e\x9b\x21\x64\xd6\x04\x0a\x92\x8d\xae\x9e\x11\x2a\xa8\x2a\xfb\x23\xb7\xb9\x2b\xfd\xf3\x52\xff\x78\x92\x55\xcd\xb1\x79\xe0\x64\x4d\xd6\xac\x0e\x54\x0f\xb0\x74\x35\x09\xf9\x6a\x87\xa6\x79\xff\x95\x92\xb6\x59\x53\xd7\xa4\x14\xc5\xe6\x11\xe4\xae\x9b\x87\x50\x6e\x51\xdb\x7a\x71\xa9\xce\x8e\xac\xeb\x96\x59\x9e\xaf\x2e\x6a\x26\x1e\x37\x36\x05\xc8\x33\xc5\xab\xf7\x48\x79\x8f\xee\x71\xcd\xc3\x23\x44\x69\xa2\x36\xa7\xf7\x94\xb3\x51\x0b\xf2\xc8\x00\x5b\x1b\x82\xdc\x32\xac\x11\x55\x23\x0c\xef\xb1\xfb\x28\x54\x4f\xa6\xdb\xdc\x1e\xea\x69\x15\xaf\x5f\xec\x73\xa0\xf6\x2b\xa9\x4b\xd9\xf2\xb3\xb6\x8c\x96\x55\x2a\xf6\xb8\x12\x50\xad\x20\x58\xfa\xa7\xfb\xd5\x88\x52\x00\x71\xd4\x3d\xae\x2b\x2e\x48\x40\x99\x40\x2f\x28\x20\x08\xfc\xd2\x3c\xd9\x8d\x63\x13\x64\x5d\xb1\x1a\xd7\x1b\x94\x9b\x9b\xee\xc6\x46\xb4\xe1\x7a\xc4\x52\xa3\x53\xde\xbc\x9c\xb7\x9d\x6b\x43\xa8\x51\xe4\xb4\x9e\x12\x07\xbe\x26\x39\x6d\xd6\x30\x5b\xc3\x27\x55\x88\xc8\x14\x37\xb2\x59\xd9\x9a\x80\x35\x83\x2c\x70\x76\xa7\x35\x37\x37\x21\xa1\x7b\x7c\xb7\xb6\xc8\x0b\xe3\x75\x58\x13\x5c\x3a\x4d\x50\xf9\x91\x58\x4e\xe4\x8c\xd9\x87\xf5\x37\x03\x81\x96\x56\x23\x2c\x8d\x91\xdb\x44\xad\xbc\x34\x04\x5e\x49\x41\xfe\x4e\xf1\xf8\x47\x9d\x7c\x04\xca\x25\xa2\xbf\x93\x9f\xa5\xd8\x02\x56\xfd\x61\x02\x17\x08\x9b\x54\xcb\x25\x2a\x58\x86\x0b\xb7\x1a\x1d\x19\xb0\x55\x89\xcf\x6f\x6e\x43\x5b\x1f\x9b\x5c\x0d\xd9\x17\x2d\x43\x95\x99\xa0\xe0\x4c\x79\x70\x68\x86\x17\xa6\xa0\x9a\x96\x8c\xa3\x54\xcd\xca\x28\x62\x6b\xfc\x99\xae\x9b\x35\x6a\xb8\xec\x19\x2b\xcd\xbb\x76\xc7\xb8\x0e\x3c\xc8\x9d\x33\x6e\x45\xd1\x5b\x60\x4d\x4b\x45\xac\xab\xe2\xcb\xbf\xcc\xed\xfc\x79\x41\x5e\x2b\x12\x88\x4b\xb7\x4a\x32\x6f\xd6\x72\x02\x4d\xaf\x8c\x6a\xc1\x96\xca\x27\xe1\x04\xb3\xaa\x0a\x85\x75\x55\xb2\x9b\x80\xf9\xc8\xdb\xc7\x25\x2d\xba\x1b\xd9\xd6\xef\x72\x13\xdb\x94\xc6\x0f\x0d\x8e\xa0\x1f\xde\x94\x0d\x27\xf5\xec\xb6\xa1\xf9\xde\xb6\x63\x90\x5b\x2e\xb3\x28\x9f\x7c\x7b\xde\x65\x90\x6f\xe9\xa2\x26\xe8\x7c\x85\xcb\x92\x14\x7e\x8d\xc8\x6e\xf9\xb8\xc1\xce\x76\x4a\xca\x45\x2a\xca\xed\x98\x7d\xff\xfc\xb3\x61\x1e\xbd\x80\x88\x76\x3a\x8d\x92\x7d\xb6\x45\xd3\x8a\x06\x58\x2e\xad\xb5\x36\xbc\x3d\x47\x02\xd7\xb7\x44\xc8\x97\x51\xd9\xac\x17\x64\xf4\xbc\x7c\x89\x42\x5f\x5f\x3a\xad\x67\x7a\x06\x8e\x9e\xd6\x4f\x9f\xde\x03\xb3\xf1\x87\xd6\xe4\x81\xd5\x45\xfe\x40\x73\x1d\x3e\xc2\xd1\x4b\x49\xee\xd5\x97\x4b\x91\x7f\x78\xa0\xf9\x94\xe1\x18\xf3\x91\x1a\x0e\x52\xe3\x31\x69\x23\x54\x4a\x95\x97\x8a\xec\xab\x71\xf1\x4c\x95\xd1\x46\x3d\xa5\xcd\x0e\xeb\x05\x2d\xb1\x2d\x50\xd0\x4e\xb4\x62\x85\x72\x1f\x1b\x33\xd8\x28\x45\x4e\xc4\x31\x5a\x34\xc6\xa8\xc1\xc4\x0a\x71\xba\x6e\x0a\x81\x4b\xc2\x1a\x5e\x6c\x46\x97\xfd\xb1\xa7\x38\x2c\x73\x0a\xf2\x59\x6f\xce\xb8\xec\x71\x8f\x76\x65\xd0\x2d\x29\x49\x4d\x33\xbb\x20\x1d\x21\x34\xec\x51\xe1\x3a\xae\x46\x57\x97\x3e\x75\xd9\x9d\x8d\x64\x66\x3a\xce\x8a\x64\x68\x81\xa5\xdc\xa9\x8a\xe6\x96\x0e\x5a\x6e\x9f\x24\xaa\xaa\x8d\x25\x91\xba\x72\x54\xe9\x0b\xbb\xda\xff\x05\xcb\x6c\xdd\x0c\x47\x34\xe5\xa4\x22\xa5\x3c\x78\xa5\xbf\xab\xf4\xf0\x26\xcf\x9e\xb1\xf5\x7e\x99\x30\x03\x8f\x37\x5d\x7e\x16\x35\x96\x0c\x65\x2d\x59\x87\xb5\x40\xd3\x25\xc2\xe5\x38\x13\xd8\x6f\x78\xc8\x1f\x58\xc4\x3d\x52\xe9\x87\xc7\x09\x43\xd3\xdc\x69\x5c\x24\xa8\x8e\xda\x70\xb1\xd1\xb0\x30\xfb\x75\x3f\x8f\x26\x18\x99\x98\x1a\x1e\xe6\x85\x81\x8d\xf3\xae\xed\xc0\x16\x3d\x3a\x37\x8a\x43\x82\xed\x33\x89\x15\x7b\x8c\xe8\x9e\x65\xc1\xb2\x3b\x40\xb5\x86\xb7\xfa\xb9\xde\x2d\xd4\xfc\xd8\x2f\xd7\xd0\xbd\x61\x0e\x0e\xb6\x5b\xa5\x41\x9d\x13\x4f\x38\x28\x47\xb7\x21\xae\x50\x03\x98\xdc\xc7\xba\x88\xdc\x82\x8c\x26\xf9\x37\xe5\x48\x46\x79\x54\x67\xc0\x02\xf3\x84\x52\x6a\xfd\x2a\xa0\x9c\x08\x1d\x5f\xa6\x0a\x38\x59\x10\x02\x34\xfb\x6b\xd8\x59\x66\x46\x6a\x29\x48\x35\xc3\x8e\xda\xda\xfd\x94\x4f\x87\xd3\x9c\x18\xda\xb9\x9c\xff\x2c\x10\x6d\x1c\x2f\x30\xaa\xbf\xf6\xf1\x23\x30\x4f\x5b\x3e\xd8\x1b\xab\x59\x30\x65\x71\x51\xb5\x7d\x5b\x0d\x7c\x7c\xac\x4b\x6f\xc3\x18\x3a\x8f\x60\x4b\xb9\xcd\xc8\xb5\x2b\x2f\x0c\x2a\x9b\x7b\xf4\xd3\xf9\x65\xf7\x95\xee\x26\xff\xe9\xfc\xb2\x5b\xb8\x3f\xa8\xe0\x4e\x2b\xdc\x8f\x02\xc9\xa6\xfb\x28\xdc\x7f\x9b\x91\xb6\xe8\x72\x4e\xf9\xdd\xa1\x6a\xff\x57\x59\xb5\x7f\x6b\x9d\xc7\x7d\x04\x87\x92\xfd\x23\xed\x50\xb2\x7f\xb8\x64\xff\x93\xf0\x20\xb4\x37\xd3\x60\x95\x83\xa5\xb9\xad\x50\xef\x1b\x00\xae\x2f\x3a\x65\xe9\x7f\x3a\xbf\x3c\xd1\x05\x1a\x03\xdc\xaa\x53\xbe\xc4\x96\xe2\x56\x6f\x3e\xd5\xd4\xed\xb9\x0e\xd2\x76\xbd\xdb\xc0\x5d\x30\xe0\x6d\xe9\x55\x37\xda\xba\x9a\x3e\xf5\x04\x4d\x2d\xb4\xac\xf7\x54\xb2\x4a\x42\xc5\x07\x52\x0d\x72\xfa\x9e\x22\xa2\x1f\xec\x59\xd9\xa8\x82\xf8\x62\x9c\x2a\x2f\x38\x16\xaa\x38\x40\x2d\x68\xd6\x14\x78\xcc\x2a\xae\x6d\x6c\x27\xe8\xe2\xf2\xfa\xc3\xe5\xf9\xd9\xcd\xe5\xc5\x1b\x64\xa9\x53\x5f\x89\x3c\x41\x37\xac\x35\xca\xe9\x0a\x32\xda\x41\x37\x6c\xb3\xa5\x62\xe5\xf5\xe9\xd8\xb0\x43\x5c\xb6\x5e\x47\x55\x38\x03\x97\xe8\xaa\xa4\xa2\x8d\xa4\x19\x55\x99\xb2\x82\x59\xdc\x39\x49\xd1\xd8\x02\x6f\xa9\x38\xd6\x0a\x92\xa9\x01\xbd\x22\xbd\x2f\xa8\x33\xaa\xfc\xfd\xc3\x64\xed\x97\x07\x6f\xaf\xd1\xeb\x80\xf5\xb1\xc3\xaa\xf0\x6b\xfb\x7a\x1b\xa9\xa0\x65\x82\x0b\x74\xb3\x55\x26\x58\xad\x63\xc9\x46\x0f\x4a\x5b\x57\x42\x49\xa1\xa3\x93\x23\xab\xd4\x14\xae\x16\x88\x0d\x9e\x74\x1f\x0b\x56\xa1\x36\x4e\xde\xee\x1e\x3a\x41\xe8\x17\x0b\xa9\x75\x2c\x35\x93\x5e\xb9\x91\xd1\x24\x0b\xdb\xcb\xd6\x8f\x3b\x40\xdd\xc5\xea\x36\x0b\xbf\x93\x3a\x99\x7d\x94\xe8\x2d\xbd\x27\xa5\x9e\xb8\xe9\xac\xcd\x76\x01\xb4\x6a\x1f\xda\x1e\x7f\xfc\xf0\xf3\xf4\x8f\xea\x93\x03\xfa\xe4\x39\x5b\xaf\xa9\x40\x2b\xcc\x57\x2e\x49\xab\xf5\xad\xbb\x53\x3b\xad\x2f\x61\xce\xd5\x4e\x4e\x32\xf7\xd2\x89\xbc\x80\x0a\xd6\x47\x3f\xd9\x47\x7b\x17\x28\xf7\xf3\x56\x1d\xeb\x61\x67\x57\x1b\xe8\x03\x0c\xea\x19\x2b\x9a\xe9\xfa\xbe\x5b\x4d\x47\x8b\x9a\x08\xf4\x56\x5d\xda\xc7\xdf\x7b\xb5\x80\x1c\xf2\xa2\x52\x32\xd4\x10\x73\x22\x30\x2d\xc6\xad\x50\xed\xbc\x09\x56\xb1\x82\xdd\xa6\xd5\x9f\x1d\x18\xfc\x37\x3a\x0a\x77\x86\x67\x72\x56\xa7\xeb\xe6\xd0\xda\xd6\x36\x88\x58\x4e\x40\x3b\x1a\xa7\xab\xaa\xf8\x5d\xf8\x45\xe8\xc9\x07\xba\x47\x65\xa9\x3f\xfa\x71\xcd\x5b\xdd\x1a\x6d\xf9\x6f\xc5\x37\xdb\x3c\xcf\x8a\xd4\x6b\xca\x35\x4c\xf1\x80\x16\x35\x4a\xf4\xc9\x76\xcd\x54\xc5\xca\x9d\xb0\x61\xb5\x6b\x38\x90\x31\xc8\xb6\x24\x77\x19\x4b\x42\xd9\x86\x1a\x52\x1b\xb5\xc3\xb4\xaa\x9a\xcc\xc8\x67\xca\x95\x7d\x40\xc3\x50\xd6\xad\xd4\x1d\xf6\x43\x79\xf5\xf9\xad\xa1\xc7\x06\xe4\xe8\x37\x8b\x4d\x3f\xae\xa6\xd5\x53\x06\x49\x5a\x33\x9b\x72\xb5\xe2\xa2\xd8\xe8\x52\x89\x2a\x63\x54\x5f\xcb\xf1\xad\xea\x30\xab\x8d\x99\xba\xaa\xe9\x3d\x2d\xc8\xad\xfc\xc4\x8a\x96\xb7\xc3\xec\xc5\x65\xb4\xe2\xa2\x60\x0f\xc4\xa4\xda\x90\xad\xfe\xcb\xf3\xc9\x85\x1f\xb5\x35\xaa\x6e\xbc\xff\xe5\x06\x95\x44\x7f\x76\x18\x8a\x37\x45\xa1\x97\x9d\x18\x8d\x5f\x9d\xcd\x66\xca\x7e\xf1\xf2\x9f\x52\x77\xcc\x8b\x57\xe8\x13\x31\xdf\x96\xca\xb3\x3c\xd1\x99\x40\x0f\x2b\xa6\x6e\xba\x0d\x37\x63\x0a\xaf\xde\x5a\xc3\xb5\xe1\x32\xb7\x6f\x9e\xca\xb7\xa5\x02\xa7\xc5\x56\x87\x86\xca\xc0\xe6\xa8\xf5\xa8\x4d\xd2\x33\x13\x39\xa9\x35\xc2\x3a\xb5\xca\xdb\x71\xae\x7c\x40\x30\xea\x57\x83\x0e\x6f\xd6\x05\x2d\xef\x8e\x11\x15\x96\x4d\xc9\x5d\x60\x42\xe9\xca\x3b\xbb\x37\x6b\x82\x0b\x8f\x4b\x07\xee\x77\xbb\xae\xf2\x64\x0e\x2d\xc0\x06\xc9\x9b\x4d\xa5\xfd\xf8\xee\xb8\x1b\xe7\xb3\xcf\x46\x5f\xbc\x78\x2c\xc3\xdc\x8e\x23\x8d\x5c\x4b\x27\xf0\x47\xca\x21\x75\x75\x8e\xae\xe6\xe7\xf3\xab\x1e\xb0\x8f\xfe\x6d\xdb\x24\x9e\x16\x78\x98\x12\x79\x38\xbe\xff\x60\x42\x4d\x0d\x76\x37\x1d\x30\x5b\xe1\xea\xac\x11\xab\x0b\xca\x33\x76\x4f\x80\x97\x0c\x5b\x58\xc9\x18\xa6\x11\xb5\x53\xa7\x69\xa0\xf3\xff\x3e\xbb\x86\xa1\x13\xc4\x1d\xe8\xb6\x87\x73\xc2\xc1\x37\x92\xe1\xfe\x19\x0a\x7b\xed\xdd\xc1\x79\xf0\xec\x9d\x07\xea\x94\xfc\x51\x1d\x06\xb4\xa4\x82\x62\xc1\x82\x19\x5f\xdd\xdb\xb8\x06\x3c\xd7\x5b\xfe\xca\xbe\xae\x5c\xbb\x4a\x98\x76\x28\x86\x92\xad\xbd\x1a\xa8\x54\xdd\x77\x32\x4e\x5d\xe5\xb1\x5e\x30\xe0\x31\x2a\xc9\x83\xf9\x26\xb5\xcf\x8c\x52\xfe\x2f\x13\xba\x29\xf7\x25\x2e\xfe\xfa\xe6\xbf\x3c\xa7\xc3\x5f\x5d\xd2\xac\x2b\x46\xe1\x8a\x76\xa9\x2a\xe9\xd3\x4d\x09\x08\xd1\xdf\x60\xfc\xc3\x98\xbe\xf4\x78\xfe\xde\xe0\x42\xcf\xc3\xfb\x5d\xec\x38\xdd\xf9\x03\x75\xc3\xae\xa1\x9d\xf3\xf7\xee\x8e\xdd\x70\xa2\x64\x96\x7e\x42\xd4\xb8\xe4\x72\x32\x61\x45\x71\x8e\x8c\xeb\xe7\x08\xbd\x14\x59\x15\xa9\x88\xb3\x87\x50\x6a\xdd\x49\x33\xa7\x3f\xbb\x10\xea\xb1\xef\xee\xc9\x4f\xa2\xf6\x16\xcc\xb4\xd1\xe9\xe0\xb5\x7a\x11\xfd\x4c\xb9\xd0\xf1\x7e\x9a\x92\x02\xcb\x51\x41\xb6\xa3\x73\x2c\x75\x88\x6b\x55\x5e\xb0\xfa\x07\xce\xf3\xfa\x8d\x96\x3d\xb6\xb0\x43\xad\x34\x09\xe6\x20\xaf\x9c\x07\xee\xa5\xd8\x54\x34\x93\xd7\xa0\x71\x2e\x75\x7e\xad\x28\x70\xf4\xc3\xf7\x3a\x4f\xfd\x2f\x7f\xfe\xfe\xdb\xd1\xa5\x7b\xfc\x28\xe7\x24\x1b\x42\x92\xbf\x25\x94\x18\x1f\xf3\xb7\x4c\x16\xe3\x69\x51\x7a\x4a\x81\x98\xb7\xa8\x4a\xe6\x14\xea\xfd\x23\x17\xc7\xf1\x58\x98\x9a\x71\x88\x38\x7b\xf2\xea\x64\x7a\xb1\xf4\x59\x9f\xca\x23\x34\x7b\xb8\xee\xb1\x07\xcd\x06\x46\xbb\xff\x1c\xd8\xc3\x4e\xb7\x32\xfa\xdb\xd0\x36\x9e\x49\x69\x30\xf8\xbb\x3f\xd3\xa9\xb7\xb9\x12\x62\x9e\x7f\xdf\x83\x97\x2c\xd1\xfb\x51\x6c\xc9\xa4\x44\xdb\x5d\x8d\x3d\xe5\x72\x30\x2d\x7e\xcf\xd6\x13\x7b\x45\x95\xf7\x4b\x3f\xe8\x5d\x4e\x02\x27\xb5\x2a\xe3\xf6\x48\x76\x8e\x91\x01\xa2\x27\x36\x42\xcb\x91\xea\xd1\xeb\xfb\x45\xf8\xe6\x94\x6c\x7e\xfe\x62\xb3\x17\x16\x58\x35\x34\x1b\xe4\x68\xae\x9e\xb5\x0e\x0b\x79\x16\x74\x44\x48\x2d\xd5\x15\xc9\x89\x08\xe7\x56\x58\xbc\x7f\x3b\x1f\xbf\x10\x78\xbb\xe9\x8b\xec\x9a\x49\xe6\xa2\x99\xe9\x77\x2a\xef\x69\x03\x2f\xb4\xd6\x71\x5e\x60\x3a\x98\xf8\xde\x3b\x93\x43\xaf\xe9\x7f\xce\xb5\x4d\xa9\x63\x8f\x77\x81\xfd\xe3\x96\xa5\x41\x8a\xce\x1d\x8d\xcd\xbd\x49\x95\xfb\x9a\xbc\x36\xed\x60\x67\x76\x99\xda\x9f\xf4\x2f\x99\xfc\xec\x24\x86\xa6\xde\x84\x47\x2d\x9d\xdb\xc7\xfb\x09\x4c\x23\x53\x11\x38\x9a\x03\x53\x64\x91\x68\x2b\x66\x13\xb4\x3a\x95\xa3\xf7\x6c\x83\xd8\x69\x5e\xd1\xde\xf9\xe8\xa7\xc4\xb4\x97\xd8\x75\x72\x37\xb5\x3b\x7c\x9c\xdd\xae\x49\x3e\xb8\x2b\x26\x58\x99\x18\x2d\x7d\x3d\xf0\x52\xf7\xa4\xea\x27\xce\x75\xd4\x7e\x31\x76\xeb\x74\x04\x74\xa0\xdc\x10\xd2\xe3\x28\xaa\xe3\x84\xa3\xf5\xf5\x65\xd8\xed\x09\x8f\x31\xee\xed\xcf\x81\x79\x02\x57\x17\x46\xc5\xb2\xb9\x00\xdc\x6c\x05\xd4\xee\x05\x6f\xdd\x47\x07\x18\x08\x5b\xde\x4d\xec\xe5\xe9\x80\x6c\x72\xf1\x1e\x58\x0d\xcd\x94\xbd\xee\x3c\xde\x73\x28\x9b\xbf\xf5\x93\x65\x86\x55\xec\x2f\x7f\x0a\xe6\xca\x63\xe6\x0d\x61\xc8\x6c\x6e\xcf\xc6\xe8\x62\x0e\x1d\x19\xd0\xd1\x18\x57\xae\xc6\x8e\x4c\xfc\x48\x8c\x0b\xc0\xfd\x1c\x95\x24\x11\x03\xcd\xcf\x6c\x35\xf9\xd1\xee\xef\x2e\xa8\xa0\x45\xbd\x81\xac\xe0\x57\xf3\xb0\x49\x0f\x92\xeb\xd1\x32\x05\xec\x8e\x49\x38\x16\xe6\x8b\x20\x30\x3a\x58\xb5\xe8\x59\xd7\x45\x7f\x97\xac\x56\x49\x96\x54\xe7\x5d\xb6\x15\xf5\x4c\xd6\xe5\xb1\xa9\xcd\xbe\xc6\xd5\x48\xcd\x38\x79\xd4\xfd\x6a\xc1\x13\x8e\x75\x6a\x71\xeb\x77\x80\x8a\xd6\xdd\xca\xd5\xa3\x5b\x2f\x56\xd1\x7a\xbc\x4e\xf5\xb8\x75\x38\x56\xbf\x7a\xbc\x4e\xf5\x28\xcd\xa4\xca\xa0\xdd\xda\x9f\x01\x2b\x36\xa0\x26\xa8\xaa\xfa\xf9\xa8\xf6\x7b\xb3\xe1\x40\x0b\x6f\xab\x53\xdb\x08\x3c\xbd\xd9\xe5\x74\x4c\xb3\x8f\x77\x85\x9f\xa3\xa6\xe7\xd6\xa4\x3d\xb7\x40\x85\xb8\x60\xe5\xad\xb7\x14\x01\xcb\xa5\x57\x0e\xdf\x38\x7d\x37\x55\xc0\x7a\x0a\x2b\x0c\x19\x44\x57\x1d\x19\x94\x9f\x03\xde\x16\xae\x6f\x61\x56\x55\x9a\x67\x8b\x90\x17\x24\x0c\x2f\x5f\x19\x99\xf6\xc1\x9e\xc2\xc0\x32\xa3\x34\xb5\x37\xf6\x42\x0e\x0b\x06\x9b\x09\xa0\x38\x08\xac\x19\x02\xd0\x04\xd0\x0c\x42\x6c\x0e\x42\x69\x02\x87\x1e\x07\xdb\x4c\x2e\x45\x9d\x04\xbb\x89\xae\x96\x00\x92\xfb\x07\xe0\xec\xce\x42\x02\x14\x27\x80\xa2\x03\xeb\x4c\x00\xe5\x04\x76\xd4\x87\xed\x84\xc2\x73\xb6\x0d\x78\xd0\x92\x21\x3b\x01\x14\x11\x00\xd6\xb3\x6d\x70\xde\xa1\x5b\x14\xea\xb3\x6d\x3b\x81\x7e\xb6\x2d\xa1\x9a\xab\x6e\xf1\xaa\xe6\x23\x7d\x0c\xd7\x37\x07\x52\x44\x5e\x1d\x74\x48\xa5\x73\x30\xd9\xad\x8a\xe8\xa1\x9a\xe7\x60\xaa\xa3\xb5\xd1\x87\xaa\x9f\x83\xa9\xee\x4d\x17\xea\x37\xb8\x6e\x14\xaf\xc2\xab\x1b\xbc\x36\x7a\xdb\xa0\x55\xd2\xdb\x16\xaf\x97\xde\xb6\x24\xb0\x51\xf0\xcc\x19\x50\x52\x10\xec\x28\x98\xe8\xbb\x01\xbc\xe3\x61\x00\x52\x30\xc9\x51\xa0\x52\x20\xe7\xd5\x2d\x91\x69\xc0\xea\x2c\xeb\x16\x06\x2a\xf5\x9f\x0b\xde\x46\xfa\x7d\x8d\x82\x35\xf8\x0f\x8f\x87\x85\xb4\x2d\x16\xaf\xa0\xdb\xf3\x8d\x5a\xd0\x2d\x35\x76\x01\x40\x32\x16\xdd\xa0\x5b\xc2\x0e\x8a\x41\xa3\xb6\x2d\x19\x24\x15\x30\x1c\x07\xa3\x1a\x87\x4b\xed\x8f\x2e\x64\x97\xe9\x3e\x19\xdd\x9d\x11\x30\x2f\xef\xc1\xf8\x2d\xc8\xa3\x65\xef\x41\x91\x01\x3d\x83\x5b\xd2\x36\x54\xd3\x16\x9e\x12\x60\x31\x03\x50\x4e\xc9\xfd\x7b\x1c\x78\xa7\xb6\xed\x03\xe8\xa9\x6d\xa9\x8a\x28\x0c\xfc\xa9\x6d\x69\x30\x50\x60\x71\xe5\xe0\xa2\xa0\x80\x50\x70\x55\x27\x01\x38\xca\xeb\x4f\xe2\x34\xa2\x44\x30\xa9\xb6\xa5\xc2\x4a\x25\x90\x56\xb7\xf0\x3d\x01\x4c\xb5\x2d\xf9\x22\x81\xd2\x40\xa7\xda\x06\x85\x9f\x4a\x9b\x92\x1e\x54\x55\x1a\x10\x55\xdb\x26\x4c\x43\x8a\x7a\x84\x12\x60\xaa\xfa\x9d\x02\xea\x40\xe8\x70\xc9\x3b\x5c\xf2\xbe\xa6\x4b\x5e\x0c\x1e\x0b\x2e\x8d\x2c\x8c\x56\x0c\x28\x2b\xe9\x3a\x36\x0c\xa8\x85\xfa\x90\x59\xf0\x5b\x23\x04\x5a\x2b\x55\x10\xef\x07\x64\xab\x6d\xc9\x6c\x32\x0d\x78\xab\x6d\xe9\x10\x5c\xf0\x13\x2a\xf5\x12\x38\x18\x17\x98\x6e\x17\xb4\x2b\x0e\xcb\x95\xa4\xf3\xa4\xc3\x77\xb5\x6d\x8a\xf6\x93\x08\xe9\xd5\x36\x38\xb8\x57\x92\x9c\xb7\x40\x60\x53\x61\xbe\xda\x36\x49\xe1\x01\x43\x7f\x79\xaf\x00\x41\xc0\x92\xa6\xa1\x0b\x18\x36\x02\x07\x96\x44\x11\x02\x1d\xd6\xb6\x49\x93\x07\x87\x13\x6b\xdb\x3e\x81\xc5\x76\xea\x7e\xba\x96\x07\x82\x1d\xeb\xf7\x09\xac\xe4\xa5\x19\xe5\xbe\xa4\xb1\x0d\x48\x54\x87\x6e\xec\x6c\x1e\x31\x85\xba\xff\x15\x3d\xc4\x26\xe5\xcb\xb8\x4f\x61\x56\x85\x04\xf7\x30\x0c\xf9\xf8\xe0\x1e\x06\xbb\x87\xf5\x7a\x1d\x7c\xc3\x9d\x76\xf0\x0d\x1f\x7c\xc3\x07\xb3\xc1\xc1\x6c\x60\xdb\xc1\x37\x0c\x25\x79\xf0\x0d\x03\x1e\x3e\xf8\x86\xbf\x52\xdf\xb0\x51\x7e\xb5\x63\x18\xb8\xd1\xbe\xb8\x5f\xd8\x80\xab\x9c\x65\x19\x6b\x4a\x71\xc3\xee\x48\xc4\xc9\x04\xba\x00\x6d\xd1\x8c\x0c\xec\x71\xee\x4a\xb8\xc9\xa9\xbc\x97\x24\xae\xed\x99\x79\xcd\x5e\x1a\xa4\xac\x28\x73\x92\x3b\x7a\x88\x41\x54\x71\xf9\xaa\x90\x63\x3f\x41\x67\xa8\x26\x19\xad\x28\xd1\x08\xc3\x58\xff\xae\x17\xdf\xd6\x8e\x07\x50\xa4\x82\x93\x62\x69\x6a\x71\x97\x1e\xf6\x8a\xa7\xed\x1b\x46\x6e\xbb\x0a\xd1\xc3\x97\x6d\x57\xf5\x65\x84\xd9\x22\xd1\x16\x8c\xa6\x26\xff\xb4\x5a\x80\x1e\x11\xe4\xf0\x7b\xbd\xe8\xb8\x05\xd5\x94\xb6\x5d\x37\x9f\xc7\x15\x35\xd9\xd3\xfb\x3c\xdd\xe4\x73\x45\x6b\xb5\x3d\xe7\x24\x63\xe5\x38\xec\x64\xdb\x3a\x5b\xe1\xb2\xff\xbe\xdd\x13\xc6\x82\x4a\x72\x94\x37\x35\xd4\x25\xcf\x96\x52\x95\xa4\x39\x15\x1b\xe7\x88\x35\xd8\x46\x58\x9f\x15\xb7\x61\x38\xd0\xb6\xae\x37\x12\xae\xaa\x9a\xe1\x6c\x45\xb8\x37\x62\xad\x63\x9a\x0c\xb2\x58\xf5\xd9\xb6\x19\x0c\x30\x75\xbd\x53\x54\xa5\xf6\x52\x6c\x50\xcd\x84\x0d\x25\xe8\x75\x1a\xda\x4d\xed\x41\xb0\x1d\x52\x1f\xd0\xca\x82\xa8\x37\x2a\x22\x81\x79\x1f\x01\x8f\x9d\x7a\xdb\x57\xd5\x07\x29\x72\x5b\x1f\xe4\x87\x6f\x51\x45\xea\xcc\x9c\x3a\x58\xb4\x8e\x2a\x6b\x21\x18\x2a\xa4\xce\x26\x59\xf9\x38\xf9\x3f\x7f\x87\x56\xac\xa9\xf9\x89\xcd\xe8\x02\xf5\x19\xbd\x56\x6f\xe9\xdb\xad\xbd\x62\x08\x54\x10\xcc\x05\x7a\xfd\x2d\x5a\xd3\xb2\x91\xa2\x39\x4a\xcc\x53\x7e\xbf\xff\x0e\x78\x68\x60\x6a\x2f\x4c\xe1\xdd\x76\xa2\x9b\xb3\x51\xe9\x9a\xba\x46\xef\x35\x27\x3e\x9c\x2d\xe8\x7d\x5b\xd5\xca\xee\x79\xc7\x8c\x58\xf0\x57\xa2\x14\x6c\x8f\x9c\x02\xa6\x43\x02\xb4\x42\x90\xd4\x05\x3c\x14\x56\x15\xc3\x29\x70\xc6\x10\x3f\xf0\xb7\xe0\x87\x7f\x6b\xd8\x62\x23\xe2\xb9\xae\x7f\xd7\xcf\x75\x93\x5c\xed\x8f\xc3\x45\x65\x06\x07\xd9\x29\xf4\xde\xd6\x94\x19\x78\x36\x26\xf1\x6f\xe5\x3d\x14\x94\x07\xa5\x6e\xac\x2a\x79\x15\x57\xce\xd0\x98\x65\x44\x03\x3c\x5e\x78\x90\xf3\x4c\x53\x0d\x2e\xcf\xbe\x32\x42\x83\xb5\x5b\xec\xcc\xda\x7c\xa8\xf1\x5b\xe3\xbe\xcb\x87\xc7\x75\xcd\x9a\xdc\x52\x2e\xc0\xb8\x0b\xfa\xe1\xee\xc6\xe1\xb4\xbc\xd5\x35\xb6\xd7\x4d\x21\x68\x55\xb8\x11\x8f\x8e\xd3\x11\x32\x72\xc8\x37\x76\x62\xcf\x06\x87\x75\xda\xb4\xae\x22\x55\x61\x3a\xce\xf6\x5e\xba\x6f\x93\x52\xe8\x12\xcf\xb5\x14\x73\x15\xae\xb1\x9b\x4e\x85\xef\xca\x5f\x19\x7b\x2a\x56\x4e\xe0\x71\x96\xaf\x3c\xc2\x92\x1a\x2e\xdc\x34\x29\x47\xa1\x71\x1f\x4e\xdd\x58\x82\x94\xb8\x1c\xf5\x51\x74\xcd\x0f\xea\x51\xc4\x1e\x5c\xbc\x9f\x06\xdb\xe8\xed\x28\xa3\x31\xfe\x88\xb3\x3b\x52\x8e\xdf\x40\x14\x06\x92\x9a\x88\x7c\x53\xe2\xb5\xae\xb7\xe5\xc3\x3a\xf7\xe8\xf2\x63\x63\x37\x0b\x15\xd0\x24\xc2\x26\x81\x07\x81\x55\xa3\xb3\xd2\x70\x60\xa9\x9f\x8f\x5c\x83\x3b\x87\xce\x3f\xd7\x1e\xbd\x9a\xde\x67\x24\xa6\xe2\xc8\x0f\x4f\xed\xf4\xfd\x68\x6d\x81\xad\x6e\x9b\xba\x02\xd4\xdb\xdd\xca\x3c\xe7\x5c\x2f\xaa\xaa\x17\x2e\xe4\x91\xdf\xd8\x48\x92\xd1\x4e\xf7\x36\xc0\x62\xb3\x0b\xfe\x4a\x0c\x7e\x44\x6f\xfd\xc1\x3f\x8e\xea\xa4\x41\x39\x55\x2f\xe2\x39\xda\x47\x1f\x7e\xbc\xe8\xf2\x99\x0f\x38\x67\x1c\xfd\x58\xb0\xec\x0e\x5d\x10\xa5\xbe\x3e\x35\x28\x49\xbd\xc8\x77\x2b\x45\x7d\x28\xa5\x3c\x4a\xf3\xb9\x94\x52\xae\x17\xb9\x36\x7b\x8d\x53\x7d\xb6\x85\x94\xd7\xf8\x16\x5a\x53\x5f\xde\x80\xd5\x81\x52\x2f\x59\xdc\xab\x89\x47\xe1\x9b\x15\x7b\x98\x09\x36\x6b\x38\x99\xd1\xd1\x20\x8a\x68\xff\xef\xc8\x46\xfe\x0d\x36\x82\xbf\xe9\x87\x3b\x57\x16\xc1\x94\x81\x5d\xfd\x2e\x25\xf5\x87\x1f\x2f\xa4\xb8\x70\x1a\xd3\xe8\xec\x53\x8e\x4e\x89\xc8\x4e\x33\x52\xad\x4e\x4d\x37\xbe\xf8\x74\xac\x59\x49\x05\xab\x81\xd0\x45\x67\x28\x63\x45\x61\xb2\xf8\xd9\x12\x9d\x93\x6a\xe5\x48\x3c\xf6\x58\x1e\xbf\x18\x6f\xc5\x18\xac\x88\xa9\xb7\xb5\xe5\x3b\x66\x67\x7b\x17\x83\x7a\x91\xc6\x3c\x9e\x72\xc9\xff\x40\x18\x8f\x7b\x9f\x96\xfd\xd5\x2e\x3e\x9a\xdb\xc7\xd5\x45\xd0\xf3\xaa\x74\x4b\x15\x1b\xb2\xa3\x33\xd3\x61\x21\x57\x4b\xad\x2a\xe7\x24\x47\xec\x9e\xd4\x35\xcd\x09\x47\x8e\x57\xf8\x37\x4f\x5a\xec\x05\xcf\x69\xc2\x4c\x1e\xaa\x2c\x3f\x79\x95\x65\xf0\xc5\xc5\x63\x4c\xf2\x9d\x6d\xc6\x84\xf3\x35\x2d\x9f\x29\x6b\x8a\xd4\x4b\x96\x3a\xc4\xe0\x5f\xac\x00\x4a\xbd\x22\xf0\x0c\x17\xe4\x6a\x50\x09\xeb\x7a\xf1\xf4\x73\xdd\x9b\x82\xfd\xd1\xab\x54\x38\xa1\x72\xdb\xdf\xdc\x86\x46\x25\xcb\x87\xed\xb9\xff\x7a\xb5\x0b\xbd\xfd\xaa\x4b\xb7\x4d\x15\x75\xb7\x58\x90\x07\x0c\x84\x69\xb5\x43\xe8\x55\xf2\xb5\x0b\x7d\x76\x7d\x85\x7e\xd2\xf4\xa6\x17\x4b\xac\x99\xd0\xda\xd3\x05\x5b\x63\x0a\x04\xd1\x58\x75\xa1\xa7\x6d\x87\xae\x1d\x31\xa4\xa9\x59\x84\x8f\xd1\xf9\xd5\x75\x89\x1a\x79\xeb\x31\x37\x92\x43\x2d\xbb\x81\x96\xa6\x08\xb4\x7a\x80\x67\x66\xb1\x61\x9e\x2d\xb6\x81\x59\xb5\xa0\x89\xa8\x75\xab\x22\x4e\x4a\x4e\x95\x67\xc4\x73\x9e\x1b\x10\x37\x8d\xf9\xa7\xe3\x34\xb5\xb2\x30\x7e\xa4\x7e\x66\xb7\xb4\xb4\xa7\x92\x19\x87\xdd\x12\x8f\x6b\x0f\x07\xe9\xfe\xe4\xd2\x9d\xf3\xe2\xb2\xc4\x8b\x62\xdc\xb1\xd4\x65\xe2\x05\x56\x5e\x50\xa2\xde\x39\xcd\x29\x97\xff\x8f\xe6\xf3\x9f\x95\xf1\xb9\x29\xad\xe6\xa9\xcc\xb0\x86\x65\x8d\xef\x90\xdc\x2f\x41\x3c\xfd\xcc\x68\x7e\x02\xae\x31\x78\x55\xe6\xb2\x9b\x84\x77\x62\x63\x0c\x15\x5d\x36\xd1\x05\x12\xab\xe8\x82\x90\x3f\xe3\x66\x45\xb3\xbb\x6b\xcf\xc6\xcc\x6a\xf9\x5b\xe9\xfd\xd4\x11\x2a\xfd\xbf\x4d\x65\x82\xa6\xbb\xd7\xd0\x6b\xe3\x8d\xc7\xbd\xe7\x66\xa8\xf2\x65\x84\x39\x67\x19\x6d\x9d\x08\xca\xd8\xe0\xd8\xfb\xf8\xd2\x29\xb6\x3f\xbd\xfb\x4a\x42\x4f\x92\x41\x76\xa1\x2c\xca\x28\xf7\x65\x4b\x20\x86\xd9\x8c\x7e\x72\x97\xf5\x96\x00\xd7\x40\xbf\xe9\x54\x3d\xb7\xfa\x59\xd7\xfe\xed\x82\xdc\x23\x0c\xda\xea\x4d\x16\xc9\x70\x6b\xc9\x5c\xf5\x73\xe3\x5a\x7d\x14\x4b\xb9\xd1\x68\x06\xff\xe6\xe4\xd6\xf0\x5f\xc7\x74\xba\xb0\x8e\x3c\x9a\xec\x32\x74\x1b\xee\x39\xed\xf4\x6f\xc6\x34\xae\x42\x84\x2a\x56\x35\x85\x8e\xdd\x18\x71\xf8\x6c\x17\x90\x9f\x64\x61\xd5\xdf\x9e\x04\xee\x9f\x58\x2d\x35\x1c\x52\xbe\x55\x38\x35\xc6\x87\x7d\x55\x3c\x50\x38\xd5\xd3\xa8\xbe\xfd\xfe\xbb\xef\x02\x15\xe6\xc7\x4b\xac\xc6\x4b\xa9\x8e\x52\x85\x84\x92\x8f\x85\x88\x8f\xeb\x76\x23\xa1\xe3\xd1\x90\xf0\x71\xd9\x10\x0b\x15\xdf\x4f\x8d\xd5\xa0\x65\x72\x42\x8e\x95\xcb\xa0\x0a\x4c\x15\x24\xb3\x6a\x20\xf3\x68\x94\x62\x38\x9f\x2a\x90\x2d\x35\x4e\x71\x20\x8b\x0a\x98\x23\x15\xf4\x60\xb4\x6e\xfc\xa4\xcc\xa8\x71\xa7\xd0\x72\xdf\xf9\x50\x89\x59\x50\x6d\x8e\xd3\x28\x45\x78\xee\xd3\x56\x66\xd3\xb8\x40\x83\x65\x3c\xa5\xd4\xf8\x8d\x67\x37\x01\x32\x97\x60\x91\xbb\xd1\x2c\xa5\x9d\x72\x93\x80\x21\x61\xf1\x3c\xa4\x14\x51\xd1\x66\x15\x05\x49\x22\x48\xce\xd1\x76\x2e\x51\x84\x66\x20\xd3\x68\x3c\x83\x28\x42\x33\x41\x28\x78\xcc\x3f\x42\x34\x4d\x34\xa8\x39\x8e\x50\x8c\xe7\x12\xc1\x33\x88\xa0\x01\x94\xf1\xe0\xc9\xa4\x1c\x21\x9b\xfb\x13\x19\x29\x24\x33\xa8\x9f\xf1\x03\xd8\x37\xc3\xf9\x40\xe3\x79\x3e\x11\x92\xf1\x2c\x20\xd0\xf1\x8c\x47\x6b\x86\xf3\x7c\x22\x71\x9c\x3b\x87\x67\xc6\xb3\x4a\xd2\x73\x49\x9c\x8c\x08\xa9\x99\x81\x14\x12\xa8\x71\x0c\x8e\x42\xe5\x5b\x7f\xcc\x85\xc0\xaa\xa0\x3a\x48\xa6\x45\x94\x0a\xc8\xfd\x66\xc4\x41\xb8\x9f\x2b\x01\x8a\x6f\xa9\xf0\x25\x49\x7f\x89\xc5\x41\x16\xcd\xad\xff\x97\x79\xcf\x99\xe0\x7e\xee\xf9\x10\x24\x7f\x1b\xec\xf0\xc1\x87\x30\xd2\x9e\x1a\xff\xe8\x60\x08\xdf\x36\x84\xf3\x4e\xf1\x18\x6b\x06\xd0\x7a\xce\x92\xd5\x88\x2d\x4c\x79\xc9\xa0\x06\xdd\x1e\x8a\xb3\xeb\x2b\x79\x8f\x56\xd9\x40\xb8\xe0\x27\x43\x99\xd2\x79\x24\xfa\x46\x69\x4a\xed\x7d\x03\x0b\x41\xd6\x95\x18\x5f\xf8\x83\x1d\xfc\xc9\xed\xe0\x89\xc6\xbd\x5f\xdd\xe3\x0e\x92\xb3\x59\xe3\x72\x26\x4f\x94\xb2\x88\x77\x9c\x66\x76\x33\x45\x2e\xc0\x27\x16\x1c\x5b\xcb\x25\x65\x22\x51\xc1\xf1\x1a\xaa\xa8\xbd\xc5\xb4\x58\x91\xbb\xdb\x32\x15\x9d\xc4\x31\x6b\x91\xd9\x3b\x69\x19\xeb\xc7\x70\x8e\x0e\xd7\x0c\xc4\xcd\x8b\x3d\x54\x9e\x3c\xee\xdc\x87\xc5\x8a\x68\xb1\x7d\xcd\xf2\xa3\xf1\xcd\xd5\xbe\xdd\xbd\x39\xe8\xab\x03\x2e\x0a\xf6\xa0\xfb\xea\x4b\x2d\xb9\x4e\xb2\xef\x41\x8e\xa0\x78\xf7\x9a\xca\x4b\xb4\xb1\xb9\xfa\xdd\xd7\xbe\x4f\x79\x33\x21\xb5\x56\xbf\x6b\xe3\x32\x9b\x07\x82\x6f\xbc\x2d\x24\x2f\xaa\xa5\x0e\x71\x96\xff\xb6\xd1\x37\xba\x92\xb1\x71\x1d\x2c\xc8\x0a\xdf\x53\xd6\x04\xb2\x0f\xe7\x9a\xd3\xbd\x30\xaf\x28\x31\xb3\x61\x8d\x33\xb5\x69\xa8\x4c\x37\x4b\x7c\x7b\x1d\x46\x49\xbf\x6f\x5f\x52\x97\xa7\x9c\x59\xdb\xc4\x8c\x7c\xa6\x5c\x6c\xcf\x49\xac\xc0\x8e\xad\x25\xf8\x08\x2a\xd1\x3d\xaf\xa4\x0c\x03\x02\xe3\xfd\xea\x3f\xdd\x55\x8d\xee\xe7\xea\x4f\x7f\x14\x58\xbc\x83\x72\xe4\x37\xe7\x20\x2b\x68\xb6\x01\x82\xc3\xb5\x8e\x31\xf9\x12\xfa\x11\x73\x92\xa3\x77\xb8\xc4\xb7\xfa\x7e\xf9\x72\x7e\xfd\xe3\xbb\x57\x72\xd1\x82\x55\xb6\xaf\x2e\x06\xbd\x6a\x73\xbf\x47\xef\xa7\xe7\x33\xf4\xc6\x06\x16\x5a\x7b\x1a\xdd\x0e\x99\x18\x56\xf0\x84\xaa\x21\x6f\x27\x6d\xf6\xa1\x3b\x7b\xc7\xf2\x7e\x9d\x3f\x0a\x28\x67\xdb\xd5\x34\x06\x34\xfa\xa7\x1c\x0b\xbc\xc0\x9c\xcc\x07\xfd\x5a\x5d\x65\xdd\x3c\x0a\x0a\xe8\x0c\xf1\x90\x88\x47\x69\x17\x6f\x92\xf3\x1a\x0d\x4e\xfe\x24\x4f\x92\xef\x31\x1a\xa4\x9a\xec\x45\xea\x9a\x0d\x87\x3d\x28\x49\x1e\xa4\xbe\xa7\x68\x84\x6b\xa7\x98\x08\x47\x8d\x80\x31\xd3\x5f\xd8\xe0\x37\x6a\x3c\xdf\xc5\x2b\x14\x28\xc6\x3f\xc1\x23\xd4\x7a\x7e\x86\x65\x6a\x9a\x37\x08\x5e\x3b\x6f\x4a\xb5\x3c\xcf\xe3\x33\x48\x13\x54\x1f\x6f\xd4\xdb\x33\xbc\x33\x43\x1e\x20\x80\xa7\x67\xc4\x61\x38\xe4\xfd\xd9\xb5\xc2\xdd\x94\x9a\x76\x01\xef\xce\x7e\x3d\x3b\xf1\xfb\x74\xd0\xa3\x33\xd9\x9b\x03\xb8\x98\x86\xbd\x38\xd3\x3c\x38\x6a\x15\x03\xf7\xe5\x54\xef\x0d\xe4\x4a\x87\x12\x3c\x37\x5d\x76\x1b\x20\x39\x0d\x15\x75\xf4\x84\xea\xb6\x6b\x7d\x37\x98\x3f\x06\xe2\x8b\x09\xfb\x61\x26\xf9\x60\x22\x35\x9d\x52\xfd\x2f\x4e\xd0\x06\x68\x26\xf8\x5e\x22\xde\x15\x80\xbd\x33\xe4\x55\x19\xf7\xa8\x04\xbc\x29\x11\xc3\x50\xc8\x8b\x12\xf2\xa0\xec\xe0\x3d\x09\x78\x49\xc2\x56\xd3\xb0\x77\x64\x07\xcf\x88\xf2\x80\x0c\x2b\x79\x8f\xe5\x15\x09\x6c\x85\xd1\x15\x5b\xe1\x62\x00\x1c\x7b\x24\xf2\xd3\xa5\x08\x5b\xa5\x5c\x0a\x45\x4d\x41\xb1\x42\x5c\x14\x88\x2d\x97\x7c\xc5\xd8\xf6\xbe\xf0\xec\x47\x6d\x69\x7c\xf2\x59\x0e\x12\x5d\xff\x7a\xae\x2d\x77\xb9\xbc\xff\x6f\xdf\x5f\xc7\xd7\x90\x96\x34\x7c\x29\xb8\x2a\xb5\xec\x96\x5c\x55\x2e\x8b\x7c\x81\xe2\x82\xfe\xde\x8e\x22\xe1\x66\x50\x31\x2e\x6e\x6b\xc2\x3f\x9d\xfd\x3c\xb4\x5f\x62\x32\x13\xff\xde\xd4\xa3\x92\x0b\x62\xc0\x06\x81\x11\x80\x9c\xad\x6b\xfc\xf9\x9c\x95\xa5\x81\x8b\x0e\x91\x83\x16\x24\x82\x79\xd2\xab\x9a\x2c\xe9\xe7\x1d\xbb\x1f\xb5\x4c\x2f\xfe\xbc\xcb\x2c\x2f\x9a\xec\x2e\x5c\x30\xfc\x30\xc5\x68\x81\xb3\xbb\xa6\x0a\xd9\x51\xe2\xd9\x3e\xd9\xe8\xac\x1c\x96\x69\x4f\xcb\x54\xb0\x6c\x3c\x5e\x01\x32\xcb\xf8\x81\x5f\x16\x98\x0b\x9a\xa9\x2a\x1b\x73\xc1\xc6\x59\x18\xda\x4e\x40\xff\x34\xdf\x7a\xbb\x63\x2f\x2e\xd1\xd9\xa7\x39\xba\xa0\x7c\xcc\x1c\xa5\x5b\x8b\xca\x60\xc3\xb9\xad\xc3\x5d\x5d\x6b\x8c\xe5\x58\x0a\xe1\x88\xed\xd8\x1b\x58\x69\x9c\x24\x16\xeb\xc2\x5c\x5e\x2b\x96\xef\x1c\xba\x80\x1f\x38\xd1\xc3\x5e\xc8\x61\xcb\x3f\x8f\x56\x70\x80\x2e\x04\x8a\x5a\xb6\x87\x97\x00\x56\x32\x24\x42\x12\xd9\x92\x22\x29\xa5\x43\xa2\x34\x7b\xa5\x45\x40\x25\x44\xa2\x44\x87\x4b\x8c\x44\x4d\xe8\xf1\xce\x8e\x96\x1a\xd9\xdb\x16\x89\xf6\x41\xbb\x81\x13\x6b\x8d\x44\xa9\xfa\xb5\x48\x20\x35\x47\x6c\x03\xd7\xe1\xab\x70\x2d\xa8\x00\x00\x1d\x6e\xe7\x46\xbb\x57\xed\xe0\x86\x4a\xdd\x44\x47\xd8\xee\xdb\xab\x25\x62\x6b\x2a\x84\xbd\xa2\xe7\x6d\x96\x91\x7d\x48\xee\x44\x60\x5d\x4d\x9d\xae\xdd\x96\xb7\x79\xeb\x2a\x81\xa1\xd3\x9c\xdc\x9f\xf2\x1c\xbf\x3e\x56\xdd\xd4\x1b\x27\x5e\x0e\x56\x74\xc6\x8c\x39\x7a\xf1\xfa\xc5\x09\x9a\xd3\x35\x2d\x70\x5d\x6c\x3a\x16\x2c\xf7\x5c\x94\xea\x92\xd5\xae\x43\x2a\x4b\xf7\xdb\x17\xe8\x25\xab\x55\xcf\xe4\x85\xbe\x20\xf8\x9e\xd8\x2c\x26\xc9\x89\xe2\x1d\x25\xeb\x4a\x6c\x5e\x45\x6b\xba\xa7\xd4\x72\x87\x17\xb3\x8c\x05\xf1\xd8\xd6\xcb\x79\x31\x77\xca\x17\xa2\x6e\xc8\x0b\x15\xd3\xa3\x82\x72\xa4\x24\xe0\x44\x74\x82\x73\xa2\xe3\xb7\x13\xd5\x8f\xde\x51\xde\x64\xf5\x81\xad\xcd\x16\xa5\xe9\x6d\xc6\x17\x2a\xdc\xe8\xc5\x93\x4b\x22\x94\x54\x8d\x5a\x7f\x65\xdc\x51\xd8\x0e\xcc\x5f\x87\x8f\x3a\x34\xe3\xea\xc2\xca\x22\x2f\x27\x3f\xa7\xfc\x0e\x0e\x70\x44\xb5\xfa\xf0\xf2\x6c\x8d\x7f\x67\x25\xba\xfc\xd1\x06\xe4\xbd\xfa\x82\x13\x17\x65\x88\x90\xb2\xa4\x33\x37\xb7\x51\x05\x31\x52\x96\x54\x5d\x3a\xa5\x82\x05\xd6\xda\xce\xec\x1b\x7d\x4d\x4d\xfe\xae\x3d\x1a\xea\xaf\xf1\xe2\xaf\x7e\xc5\x50\x79\xca\x16\xd4\x7a\xfc\x7d\x6d\x6b\x0f\x8a\x51\xa6\x24\xd6\x6d\x28\x09\x6c\x70\xa8\x47\xff\x2d\xbb\x76\xae\xdf\xd6\x86\x65\xf4\x9e\x95\xe4\x58\x31\x02\x24\x39\x81\xfe\x67\x74\x2b\x7e\xaa\xa9\x20\x51\x76\x08\x16\x99\xf2\x1c\x40\x90\xf1\xb6\x2c\x9e\xbe\x95\x4a\xd5\x5f\x57\x27\xca\x08\xcf\x45\xc1\x16\xd6\x11\xbe\xcf\x9e\x7e\xfc\x10\x81\x1f\x1f\xe8\xe8\xc7\x0f\x57\x4f\xd7\xc9\x09\x8a\xf3\x9e\x42\x43\xfc\xae\x4e\x09\x11\x89\xeb\xbb\x69\x7a\x2e\xa2\xf1\x2a\xf7\x80\x50\x12\x7f\x58\xa0\x15\xb8\xa3\x65\x14\xcb\xa3\x7b\x34\x2f\x3f\x57\xda\xaf\x68\x42\x41\xe7\x2b\xac\x10\xfa\x5c\x55\x57\xb9\x51\xe2\x32\x95\xf2\x3b\x2e\x25\x8c\xcb\x81\xb6\x45\xd9\xd1\x05\xd1\x96\xcd\xfc\x8d\xad\x57\x0b\xa6\x38\x4c\x50\xc7\x85\xe4\x6f\x34\xcf\x45\x6b\xfd\x9f\x6a\x87\xc3\xa8\xbe\x54\xa1\x8b\xb4\x74\xaf\xe2\x7b\x4c\x0b\xbc\xa0\x05\x15\x2a\x5e\xf8\xd5\x89\x2b\xba\x0f\x51\x7a\x55\x81\xcb\xc1\xa2\x94\x9d\x07\xe1\xf5\xb4\x27\xa8\x5d\xd0\x18\xea\xe8\x78\x20\x05\xcd\xa0\xb1\xd4\xdd\xa1\xc7\x55\x1d\x98\xc8\xb6\x4c\x3b\xfa\xd0\xc7\x0f\x57\x7b\x11\xeb\x92\x47\xa5\x89\x75\xf9\xc6\xa0\x58\x57\x7f\x98\xeb\xd2\xcb\xc1\x49\xdb\xae\x05\xfe\xa8\x92\xfd\x5f\x77\xcf\x41\x72\x77\x06\x47\x2f\xbc\x2a\x0a\x7e\x4e\xbf\xf1\x1e\x70\xbd\xe2\xd1\xb1\xdb\xd0\x37\x03\xf8\xa2\x35\x0b\xb9\xd6\x7f\x8b\x62\xe0\x80\x39\x8a\x62\x50\xc9\x03\x54\x92\x00\x45\x4e\x5a\x42\x3f\x60\xa7\xbb\x5d\x8d\xf0\x63\x76\x48\xbb\x9e\xf0\x8c\x54\xab\x65\xf0\x74\x74\x26\xe5\x9c\x54\xab\xb7\xbd\x3c\x25\x55\xef\xf3\xed\x1c\x58\x13\xd9\xf5\x6e\xab\x36\x72\xb0\x8e\xbf\x6d\xd0\x13\x1d\x2b\x61\x3a\x38\x3a\x0f\xa1\xf7\x9d\x79\x5f\xd7\xcd\xee\x14\x38\x8d\xee\xe9\x4e\x01\xd4\x94\xba\x8b\x7a\x31\x52\x0b\xe8\xd9\x06\xc4\x9e\x4c\x80\xc0\x81\x82\x8e\x41\x40\x3f\xc6\x22\x66\x54\x6d\x78\xcc\x5b\xa0\x0f\x92\xa3\x9a\x31\x71\x8c\x6a\x0c\xc2\x1e\x54\x78\x2a\xca\x22\xd9\x14\x85\x9e\x7b\x51\x13\x72\xec\x1b\x3a\x4e\xbf\xac\x76\xe2\x0d\x37\x22\x34\xa2\xa3\x4d\xaa\xbc\x9a\x2a\x34\x92\x8a\x84\xee\xb6\x59\x53\xe5\x53\x4c\x09\x41\x81\x39\x9f\x3b\x0a\x03\x35\x9b\xa3\x53\xe2\x6a\x3a\x7f\xe4\xa4\xee\xee\x2a\x57\xb8\xb9\xe1\xa4\x3e\x31\x52\xf0\x1d\xc4\xc6\xfe\x74\x53\x0c\x91\x8f\xb1\x8c\x3e\xdb\xc2\x13\x6c\xaa\xde\xba\x30\x53\x14\x29\x2e\x62\xdb\x60\x24\xf5\xf0\x8c\x2b\x7b\xf0\x33\xda\xc5\x29\x28\xba\x30\x5c\xc6\xe7\x9c\x1f\x68\xdb\x23\x60\x33\x42\xd1\x19\x27\x88\x2f\x00\xc0\x66\xa8\x92\xae\x6d\x01\xf9\x55\x3b\x64\xb7\x6e\x8d\xdd\xf8\xc0\xf3\x5e\x0d\xde\xa7\xe6\xbf\x7b\x52\x5a\x03\xb5\x76\xbb\xdf\x8b\x29\xa3\xb4\xcc\xc3\x2b\xd1\x5d\x85\x73\xf5\x7c\x57\x1b\xd5\x34\x40\x99\x61\xb6\x41\x32\xc4\x40\x95\xc8\xd7\x1b\xfe\x5b\x31\xd3\x3d\x98\x55\x11\xc4\x0e\xdb\x9e\xd2\x2d\xff\xb4\xe6\xc5\x3f\x80\x33\x7d\x2f\x2b\x88\x0e\x0a\xa4\x6b\x8f\x3f\xc7\x70\x9d\x71\x07\x8d\x46\x41\x09\x72\x1d\xf7\x63\x14\x12\xcd\xbb\xac\x7d\x03\x82\x2f\x5d\xe1\x1a\xaf\x89\x20\x75\x1b\x19\x9a\xe9\x20\x30\xf9\xcf\x5f\x2a\x52\xce\x05\xce\xee\xa2\xfe\x9c\x83\x96\xf1\x55\x68\x19\xd3\xfc\xd8\x16\x69\x2d\x6f\xa3\x8b\x0d\xea\x2f\x2c\xfb\x43\x37\x5a\x1a\xc1\xf8\x2c\xb8\xe0\xd3\xfa\xa6\x75\x11\xda\x77\x78\x14\xe6\x11\x6d\x59\xb9\xec\x1b\x3d\xd5\xc2\xfd\xec\x55\x2f\x0d\x1b\x46\xfc\xca\xa6\xf1\xb5\x82\x1e\x74\x40\x35\xd2\xc1\x71\xc1\xf2\x48\xa3\x9b\x69\x2b\xcf\x14\x92\x53\x1a\xa5\x1a\xcc\x39\x1d\xca\x2f\x8d\xf3\x42\x78\xfe\xa9\x9f\xfc\x14\xa5\xbb\xa7\x5c\xd4\xce\x94\xee\x27\x2f\xb5\x43\xf2\x51\x82\xa2\x40\x46\xc6\x09\x79\xac\x00\x33\x9f\x9f\xe7\x3a\x90\xd3\xda\x1e\xda\x58\x85\x0b\xdb\x42\x69\xaf\x83\x29\xae\xa0\x4e\x26\xa4\xc0\x82\xcc\x23\x13\xd3\x61\xe3\x66\x17\x50\x81\x54\x3f\x35\x36\x4a\x12\x56\x28\xd5\x2d\x14\x6c\xfc\xfb\xad\x99\x6a\xdb\x84\xda\xa9\x00\x7d\x0f\x9c\x61\xeb\x37\xa0\xdd\x3e\x39\xf3\x16\xa0\xe6\xc4\xaa\xae\xba\x91\x25\x68\xa0\x80\x2a\xac\x83\x43\x4a\xad\xc6\x6a\x5b\x82\xaa\x86\x40\xd5\x59\x07\x7b\x07\xc8\xf1\x05\x11\x45\x5e\x26\x70\x3c\xdf\x17\x48\x72\x34\x2b\x78\x28\xf7\x17\x48\x13\x92\x21\xdc\x15\x82\x40\xc2\x7b\xca\x16\xee\x92\xdc\x87\xc0\xd4\x2d\x45\x6c\x9a\xaf\x27\xc0\xe3\x23\x30\x44\x3e\x4a\xcd\x34\x06\xce\x95\x97\x8f\x1c\xcd\x3a\x06\x92\x1c\xcb\x4d\x1e\xce\x40\x06\x12\x9d\x92\xa7\xec\xb7\x24\xb6\x00\xc3\xf0\x47\xd1\xea\xb0\xed\x53\x51\xb4\x7f\x94\x72\x75\x84\xbb\x62\x21\xf7\xff\xe7\x7d\xf7\xdf\x7b\x15\x42\x94\xb2\x1b\x62\xd5\x77\x07\xe7\x70\x28\x8f\xbc\x55\x47\xbd\x54\xf2\xe8\xe0\xe3\xa9\xe6\xdb\xa3\x8a\x1b\xc4\x60\xd7\x64\x4e\xe1\x17\xe4\xf9\x15\x7a\x79\x6e\xf3\x84\x5d\x10\xcf\x55\x29\x48\xbd\xc4\x19\x79\xe5\x5d\x9c\xc3\x86\x3a\xf3\xa6\xcd\xb8\x5b\xe1\x32\x2f\xf4\x6d\x0d\x97\x88\x7c\x16\xa4\x2e\x71\xa1\xbe\x97\xd7\xf4\x9e\xd4\xe8\xe5\x59\x51\xad\xc2\xba\xcd\x92\x60\xd1\xd4\x61\x63\x28\xf8\xaa\xad\xbe\x9a\x16\x17\xa6\x3b\x6a\xf4\x7e\xbf\xde\xa4\x37\x0c\x39\xe0\xe8\x6e\xd0\xb3\xc1\x7d\xeb\xc1\x89\xdc\x58\x4a\xd2\x29\xd6\xb8\x61\x4d\x6d\x5c\x47\x31\x9c\x37\xdb\x32\x56\xcb\x6b\xb5\xee\x18\xe6\x06\x66\x9d\xd4\x2d\xe8\x4d\x56\x34\xf2\x87\xbd\x45\xe5\xee\x35\x2e\x3a\xa1\xb0\x9d\x6d\xce\xa1\xb0\xec\xe2\xa3\xa9\xc1\x2a\x97\xb2\x51\xc2\x28\x47\x15\xe6\x1c\x60\x02\x31\x97\x2e\xaf\x98\x9c\xb7\xb6\xfa\xf2\xa3\xd4\xad\x9c\x08\x52\xaf\x63\x59\xa2\xc8\xe8\x30\x0e\x75\xcb\x1b\x3d\x43\xb8\xaa\x8a\xa8\xd3\x1b\xbc\x18\x25\xcb\xc9\x75\xb3\x28\x28\x5f\xcd\x27\x59\xc9\xdf\x0f\x10\xd0\x51\x52\xbe\xe7\x1f\x34\xde\x31\xcb\xfa\x30\xd0\x1d\x64\x51\xe4\xf2\xd9\xc5\xf1\x4f\x1b\x53\xf9\x87\x05\x11\xc4\xfd\xc9\x1b\xc7\xaf\x30\x23\xaa\xd4\xcc\xe5\x5b\x1f\xcb\xca\x7f\x0f\x65\xb8\x28\xb8\xd1\x95\xb5\x75\x82\x72\x27\x48\x60\x17\x71\x75\xe9\x5c\xd8\xdd\x48\x55\xcd\x55\x5b\xfe\x83\x3b\xf5\xc4\x40\xfd\xc5\x7b\x3a\x38\xb1\x1c\xad\x99\x4e\xa4\x2d\x11\x2b\xed\xec\x1f\xab\x8a\x1a\x11\x3c\x62\xdb\x3c\x30\x43\x5c\x13\x73\x58\x62\x5b\xf3\xe0\xbe\xf8\x2a\xdc\x17\x93\x1c\x97\x73\x57\x8a\x18\x2b\x02\x33\x95\x7b\x60\x61\xe1\x74\xc0\xcf\x32\x00\x47\xe3\x7a\xe9\xae\xb4\x03\x28\xe1\x49\x1e\xd0\xd4\xbc\xc3\x33\x21\x6a\xba\x68\x44\x7c\xf7\xe2\x3c\xa7\xfa\xcc\x5f\x27\xec\xf8\x84\xa5\x1a\x28\xfa\xdc\xf6\x4e\xa9\x52\x84\x1b\x8e\x37\x33\xe6\x80\x2c\xc1\xb4\x63\x6e\xe6\xee\x5c\x6f\xf3\x51\xa7\x7c\x44\xa9\x2a\xbd\x44\xbf\x74\xc4\x51\xce\xb2\x46\x5e\x04\xdd\x7a\x7b\x41\x04\x3a\xef\x06\xb6\x6a\xd1\x5d\x0a\xcc\xa0\x50\xfd\xda\x55\x5f\xce\xd9\x43\xf9\x80\xeb\xfc\xec\x3a\x98\x96\xd6\x55\x0d\xdb\x77\x7c\xd7\x92\x25\xa5\x6a\xda\xe3\x05\x6b\xc2\x90\x68\x48\x79\x96\xf2\x71\x0c\xbd\x83\xa7\x29\xd8\x0e\x9e\xa6\xaf\xd4\xd3\x24\xdf\xd0\xaa\x68\x41\xb9\x90\x1a\x41\xe7\x64\x01\x7d\xe5\xc1\x1a\xcb\x09\x7d\x1b\x3f\xfb\x9a\x77\xf7\xb3\xa4\x52\x54\x5d\xa5\xec\xea\x53\xd4\xee\x02\x4f\x81\x36\xb9\x51\x81\xa2\xb0\x7e\x4b\x33\xef\x2b\x9a\x80\x5b\xc3\xc0\x1c\x78\x09\x16\x73\x52\x48\xc5\x0a\x75\x1d\x7a\x40\xe3\x60\xc5\xf2\x37\x1a\x81\x01\x97\x25\xd3\x72\x85\x1f\xa3\x02\x2f\x48\xc1\x8f\xcd\xd5\xb6\xcc\xdb\x62\x79\x40\xba\x52\xf8\x39\xd1\x04\x34\x18\xa7\x4d\x9e\xfa\x8a\xd3\xfd\xa0\x6f\xf4\x65\xbf\x7e\xdb\xd5\x09\xcc\x56\x64\x8d\xd5\x3f\xdf\xca\xb9\x1c\xa9\x8c\x3d\xd6\x28\x47\x52\x75\x12\x44\x97\x3f\x21\xf5\x9a\x23\xb6\x74\x71\xd7\xba\xd8\xc4\xfd\xeb\x51\xc0\xfd\xed\x96\xe8\x92\x41\x76\x53\x85\xaa\x8f\x6f\xb7\xed\x7a\xe4\xce\x20\x2e\x37\x94\x90\x37\x28\xb9\xc7\x20\xde\x65\xaf\xef\x1d\x5f\xaa\x62\x1b\x7a\xb6\x1f\x71\xf8\x70\xf3\x33\x52\x0a\xcc\x32\x69\x95\x13\xac\xcc\xe8\xe0\x20\x3b\x38\xc8\x22\xed\xd9\x3a\xc8\x3c\xe1\xa2\xb8\x01\xe5\x76\xe0\xda\x69\x06\x95\x2d\xf2\x5d\xdf\x6a\x6b\x2b\xf9\x2e\x88\xc3\x46\xd1\x6a\x28\xdc\x99\x25\xf7\xb1\xf5\xac\xb1\xba\x1b\x59\x70\x74\x72\x72\x74\x64\xab\xfc\x86\xeb\x43\xf7\x48\x36\x62\x39\xfb\x01\x91\x32\x63\xb9\xde\x8a\xb2\xaf\x35\x17\x4a\x3d\x69\xed\x21\xe9\xa3\x5f\x9b\xd1\x75\x22\x19\x54\x3f\x61\x5b\x24\x91\x01\xda\x4a\x3c\x6f\x77\x50\x2c\x5a\x75\xc2\x55\xf1\x33\x13\x00\x2a\x67\xea\x37\xa5\x57\xb4\xe5\x63\x0b\xba\xa6\x2a\x87\x3d\x57\x7c\x9a\x70\xc1\xd1\x4b\xfd\xe3\x49\x56\x35\x30\xc3\x0d\x32\x64\x4e\xd6\x64\xcd\xea\xcd\xb1\x23\x25\x49\x74\x68\x9b\x27\x5e\x25\x68\x2c\x59\x53\xd7\xa4\x14\xc5\xe6\x09\x74\x17\x37\x9b\x90\x7c\xea\xb6\xf5\xf2\x36\x9c\xe7\x48\xd9\xfb\x9c\xfc\x03\x99\x82\xda\x66\x32\x61\x8e\x9d\xad\x55\x99\x16\x48\x79\x8f\xee\x71\xcd\x61\x33\x80\xa6\xa9\x2b\x39\xbd\xa7\x9c\x81\xb7\xd4\xa8\x55\x4c\x6e\x50\xd6\x88\xaa\x11\x86\xaf\x42\xf2\x8b\xbd\x9e\xaf\x88\xab\x2c\xe9\x76\x6c\x4f\x73\x7b\x1d\x4f\x94\x70\xe4\xd2\x27\xc2\x7e\x75\xea\x56\x68\x79\x76\x5b\x7d\xd3\x2a\x6e\x8f\xb8\x82\xa9\x1a\x17\xb8\x58\x18\x4a\x55\xb8\x52\x42\x0f\xbe\x4c\x50\x01\x88\xa0\x72\x5c\x5c\xd0\x84\xe4\xad\x4b\xf3\x46\x37\xc6\x5a\x90\x75\xc5\x6a\x5c\x6f\x50\x6e\x6c\x32\xe1\x78\x87\xed\x32\x02\x5e\x1d\x81\x9d\xeb\xb3\xa9\x51\xe5\xb4\xde\x47\xfe\xd6\x9a\xe4\xb4\x59\xa7\x59\xd1\x3e\xa9\xa2\xa7\xa6\xa0\xaa\xf5\x95\x6b\x42\xd6\xf0\xb7\xc0\x59\xb8\xaa\xad\x9e\x25\xca\xdb\x09\xd5\xaa\x82\x5f\x07\xf0\x85\xf1\x59\xae\x09\x2e\xad\xd6\x0e\xb2\xc9\x97\x2c\x27\x72\xc6\x2d\x31\xdd\x37\xcf\x4c\x57\x1a\x97\x16\xf0\x6c\xbe\x34\x84\x5e\x49\x35\xe9\x9d\x92\x84\x4f\xb2\x88\x28\x29\x5f\x9a\xfe\x4e\x7e\x96\xe2\x3c\xb1\xd2\x28\x13\xb8\x40\xd8\x94\xc9\x58\xea\xaa\xc9\x6e\x55\x2d\x1f\x88\x9b\xa7\x94\x9f\x9f\x72\xe4\x0e\x90\x75\x8c\xc8\x55\x95\x7d\xd3\xba\x86\x32\x84\x15\x5c\xfb\x8f\x69\x86\x17\x51\xab\x96\xa6\xad\xf5\x0f\xb7\x92\x37\xaa\x54\xeb\x67\xba\x6e\xd6\xa8\xe1\xb2\xa7\xac\xec\x3e\x13\xa5\xea\x3a\xfa\xa0\x77\xac\x36\x59\xad\x69\xa9\x88\x76\xaf\x77\x0a\x82\xc1\xce\x6f\xdc\xcf\xe9\x2e\xea\x2a\x9b\xcd\x9a\x34\x79\xa3\xd4\x5f\xd3\x4b\xa3\xc0\xb1\x25\xc2\x01\xe8\x5c\xdb\x9c\x82\xa3\x2a\xdd\x62\x5d\xa9\xb9\x77\x5e\x4a\x5a\xf8\x07\x06\x70\x52\x4c\xed\x62\xb7\x30\x4d\x69\x22\x7c\xb6\x76\xf7\xf0\xe6\x6e\x38\xa9\x67\xb7\x0d\xcd\x1f\x6d\x5b\x83\xb8\xfc\x32\x03\xf3\xf7\xb7\xe7\x5d\xc6\xfe\x96\x2e\x6a\x82\xce\x57\xb8\x2c\x49\xd1\x2d\xb5\x1d\x36\x03\x8f\x95\xe1\xee\xe6\xe7\x6e\x55\xda\x0e\x4b\x8d\xbd\x56\x8f\xfa\xe3\x65\xe6\x3e\x9b\xc2\x7f\xb0\x62\xd3\x30\x3f\x51\x5b\x8c\xfa\xf1\x8b\x4d\x17\x4d\x62\x99\xe9\xd6\x3a\xf6\xf6\x1c\x09\x5c\xdf\x12\x21\x89\xa0\xb2\x59\x2f\x48\xf4\x0c\x3f\xa7\x02\xc7\xcf\x25\x15\x79\x7f\xd9\xc2\x7a\x39\x3e\x7d\x7a\x9f\x58\x2d\x6a\x68\x4d\x1f\x58\x5d\xe4\x0f\x34\xb7\x50\xd1\x2f\x25\xd9\x57\xcf\xb7\x74\xd3\xc3\x03\xcd\x77\x19\xb6\x31\xa3\xaa\x61\x23\x35\x6e\x87\x07\x1a\xac\x07\xa1\xdb\x4b\xf5\xf9\x57\xe8\x92\x2a\x73\xa4\xfa\x2f\x6d\x20\x5b\x2f\x68\x89\x85\x75\x72\xb8\x05\x8a\x52\x94\x62\x40\x9e\x2b\x6b\x3e\xe6\x44\x1c\xa3\x45\xa3\xcd\x59\x0b\x26\x56\x88\xd3\x75\x53\x08\x5c\x12\xd6\xf0\x62\x13\xdd\x46\x5f\x6a\x69\x60\xf2\xb8\x20\x9f\xc7\xd1\x94\x6d\xeb\xca\x65\xf7\x4a\x57\x3e\xdf\x92\x92\xd4\x34\xb3\x0b\x0a\xba\xf0\xda\xa8\x5d\x15\x51\xc9\x29\x2b\x49\x7e\xea\x84\xb5\x06\xb5\x56\x51\xbc\x24\x43\x0b\x85\x69\x5b\x15\xcd\x2d\x0d\x7a\x52\xbe\x48\x5c\x6e\x1b\x25\x08\xb9\xf7\x38\x05\x1c\x96\x3d\x75\x28\x1f\xbc\xa5\x45\xdc\x0c\xc7\xba\xe6\xa4\x22\xa5\x64\x00\xa5\xb7\x4b\xe3\x77\x00\x35\x1d\x7b\x5b\x05\xe3\xab\x79\x5e\xc1\x5e\x1e\xcf\xbd\xfc\x2c\x6a\x2c\x19\xe4\x5a\xb2\x3a\x1b\x15\x42\x97\x08\x97\x71\x66\xf6\xb8\xc1\x7e\x5f\xa1\x6a\xf0\x85\x4b\xa3\xa5\x05\x48\x43\xc2\xae\xfd\x00\x69\xcd\x8d\xcd\x01\xb2\x01\xcc\xdb\x81\xc8\x89\xbd\xf4\x21\x74\x6d\xc0\xf2\x48\x40\x72\x94\x72\x2c\x60\x99\x6f\x87\x2b\xc6\x67\xa0\x3b\xea\x43\xf1\x95\xa1\xf6\x95\x45\x2f\x3f\x65\x5c\xe8\xb2\x60\xd9\x5d\x42\x15\xb3\xb7\xfa\xf9\x9e\xb5\xc4\xfc\x98\x52\xc6\x2c\x60\x1d\x31\x67\xdb\x13\xb0\x2a\x58\x48\x7f\x24\x48\x54\x1e\xd5\x9a\xc9\xf3\xa6\x8a\x76\xa3\x05\x91\xec\xa7\x6e\xca\x48\x05\x24\xb0\x1e\x87\x05\xe6\x13\xca\x4f\xf7\x11\x28\x38\x11\x3a\x02\x5a\x15\x93\x5d\x13\x81\x41\x05\xf1\x67\x7f\x35\x8a\x60\xd9\xa1\x24\x55\x3c\xbb\x04\xd6\xce\xae\x3c\xc9\x9c\xe6\x04\x62\xa4\xc5\x6a\xb2\x6b\x92\x01\xc2\x5c\xe1\x20\x18\xba\x77\x1f\x3f\x26\xd6\x10\x92\x2f\xf4\xe6\xca\x6c\x08\x65\x89\x54\x38\x39\xed\xad\x2d\x3a\x36\xb6\xf4\x36\xa8\xa1\xf7\x84\x36\xc8\xdb\x8c\x5c\x3b\x28\x9f\x24\xc8\x99\xa3\x9f\xce\x2f\xbb\xaf\x76\x0f\xdd\x4f\xe7\x97\xe8\x02\x0c\x0d\x94\x04\x12\xe8\xcc\x93\x41\x92\x8f\x00\x12\x78\x9b\x91\x16\xf8\x28\xa7\xfc\xee\xb9\x94\x22\x3c\x20\x04\x3e\x0b\x84\xc0\xad\xfd\x11\xed\xc0\x01\x1e\xf0\x00\x0f\xf8\xbc\xe0\x01\x9f\x94\x47\xa2\x47\x33\xc7\x57\x79\xb2\x16\x64\x51\xee\x7c\x63\xd6\xf5\x45\xeb\x5d\xa3\xa5\x14\x6a\xf1\xeb\xf6\xc7\xa1\xd2\x82\x16\x2e\x4b\x52\x78\xf2\x29\x7e\xe4\x7a\xaa\x20\xfb\x02\xe0\xe2\x3b\x6c\x7f\xd8\x36\x7f\xf8\x13\x18\x25\xfb\x84\x13\xbc\x2f\x50\x22\xbd\x77\x77\x56\xed\xa8\xf8\x40\xaa\xe0\x0c\xf5\x14\x3a\xfd\x42\xcf\x92\x4d\x85\xfc\x81\x71\x2a\x58\xbd\x41\x58\xa8\xc2\x58\xb5\xa0\x59\x53\xe0\x98\x47\x4c\xdb\xb1\x4f\xd0\xc5\xe5\xf5\x87\xcb\xf3\xb3\x9b\xcb\x8b\x37\xc8\x7e\x85\xfa\x4a\xfd\x09\xba\x61\xad\xe1\x3b\x48\x15\xb7\x41\x05\x3a\x96\xb6\xed\xe3\xb1\x61\xf7\xb8\x6c\xa3\x24\x54\x49\xb7\x88\x5d\xea\xaa\xa4\xa2\x8d\xa2\xd4\xc0\x3b\x05\x2b\x4d\x44\xa1\xa4\x6c\xec\xef\xb7\x54\x1c\x6b\xbf\x78\x1c\x48\x51\xbe\xda\xed\x85\xe2\x27\x3a\xa6\xca\x0d\x21\x68\x31\x01\x5f\xfb\x6c\x2c\x52\x1a\xa2\x9f\xf6\xb1\xb9\x97\x8d\xec\xb3\xc1\xd8\xb6\x8f\xf1\x1b\xcc\x76\x8d\x36\x24\xa5\xf2\xd1\xc9\x91\x55\x06\x8b\x5e\xa2\x40\x94\x66\xdb\x29\x5b\xa4\x4f\xbe\xdc\xdd\x8b\x27\x08\xfd\x22\x56\xa4\x7e\xa0\x1c\x50\x1c\x9e\xf6\x4b\x05\x3a\x67\x9b\xfc\x80\x1f\x43\xde\xfd\x4a\x9c\x70\x69\xa2\x64\x16\x7e\xa7\x4d\xa1\xa5\x5b\x7a\x4f\x4a\x3d\xb1\xfb\x63\xd1\xb6\x6b\x49\xab\xfd\xa1\x3d\xc3\x1f\x3f\xfc\xbc\xbf\xce\xe8\x13\x9b\xd4\x95\x73\xb6\x5e\x53\x81\x56\x98\xaf\x6c\x9d\x15\x2f\xf6\xc8\x71\x8d\xfd\xf4\x11\xc6\x71\x41\xeb\x0d\xe3\xba\xba\xdc\x4b\x02\x0a\xd4\xd1\x4f\xf6\x95\xde\x05\xda\xfd\x6c\xb1\xa0\xa2\xfc\x46\xdd\xb3\xd2\x83\x38\xc7\x40\x11\xdc\x58\xf6\x5b\x7b\x9f\x94\xb9\xae\x08\x9e\x08\x2e\x69\x5f\x7b\xaf\xeb\x87\xea\x78\x6d\xf3\xa3\x56\xda\x40\x75\x80\x72\x22\x30\x2d\xb8\x37\xbf\x82\x55\xac\x60\xb7\xc3\xc1\x91\x09\x93\xf3\x8d\xce\x68\x99\xe1\x99\x9c\xf5\xfd\xdd\xb5\x52\xf1\xa0\x6c\xc2\x8e\x9c\xa0\x76\x94\xee\x8e\xa1\x72\x63\xf6\x87\xab\xf3\x64\x13\xf1\x08\xca\xa9\x9b\x9d\xe8\x5c\xd8\x5b\xaa\xb2\x2e\x58\x7c\x0b\xc5\xe7\xdb\x4a\x1c\x15\xa9\xd7\x94\x4b\xe6\xe5\x69\xad\x90\xab\xec\x96\x56\xfb\x44\x93\xbe\x2f\x85\xd5\x9d\xe8\xb0\x5a\x1b\x0e\xb8\x07\xb1\x57\xc9\xe1\x62\x89\xad\xdb\x70\xd1\xea\x40\x74\x98\x6b\x55\x93\x19\xf9\x4c\xb9\xba\x71\xa8\x9c\xb4\x48\xb2\x4c\x2b\xdc\x7d\x1c\x4d\x6b\x90\xb4\xe6\x4b\xfd\x54\xb1\x49\x89\x9b\x6c\x75\x41\x67\x46\x56\xe1\x23\xb8\x28\x36\xba\x4c\xbd\xaa\xf1\xa1\xcd\x3f\xf8\x36\x5a\x05\x8e\xd5\xc6\xcd\x54\xd5\xf4\x9e\x16\xe4\x56\xde\x46\x57\xb4\xbc\xf5\x6a\x92\xe0\xa2\x60\x0f\xc4\xa4\xf5\x92\xa8\xa7\xaf\x8f\xdd\xc2\x85\x1f\xd9\xab\xce\xd4\xfb\x5f\x6e\x50\x49\xf4\xa7\x38\x80\xbf\x4c\xbf\xfd\xca\xce\x44\x73\x37\x66\xb3\x99\xb2\xad\xbd\xfc\xa7\xd4\xe3\xf3\xe2\x15\xfa\x44\x4c\xff\xe4\x05\x47\x72\x9b\x4c\xa0\x87\x15\x53\xd6\x92\x86\x03\x30\x16\xdb\x1d\xa0\x8e\xbf\x4e\x62\x33\x14\x4e\x25\x15\xa9\x34\x6b\x51\xad\xe6\x2b\x6f\xcb\x60\x84\x2f\x34\x1c\xb5\xde\xfc\xbd\xdc\x07\x26\x4a\x0c\xeb\xd4\x18\xda\xe9\xa0\xf4\x60\x57\xe5\x43\x55\x8d\xe0\x9b\x75\x41\xcb\xbb\x63\x44\x85\x65\xbb\x72\xd7\x99\xd0\xed\xf2\x0e\x5a\xd7\xac\x26\xb8\xf0\xa4\xd6\x1e\x76\xce\xde\x24\x92\x48\x36\xdc\xdf\x6c\x2a\xa2\xce\xb3\x63\x4b\x26\x7c\xcc\x37\x72\xbc\x88\x1b\xae\x9f\xd7\x4c\x00\xcd\x1a\x7b\xe0\xff\x94\xa7\x54\xd6\x3c\xba\x9a\x9f\xcf\xaf\x7a\xe0\xc9\xfa\xb7\x8e\x6b\x6a\x87\xc0\xf9\x7d\x45\xce\xa7\x08\x7f\x35\x09\xfb\xd5\xc9\xb3\x15\xae\xce\x1a\xb1\xba\xa0\x3c\x63\xf7\x24\xf1\x72\x69\x4b\xb5\x1a\xc7\x0f\xa2\x76\x8a\x35\x2d\x74\xfe\xdf\x67\xd7\x3d\x64\xc2\x3d\xe9\x27\x6d\xcf\xe7\x84\x27\xdf\x44\x87\xfb\x6d\x28\x3d\x6a\xaf\x0f\x4e\xbf\xaf\xc6\xe9\xa7\x4e\xe3\xd7\xea\xe8\xa3\x25\x15\x14\x0b\x06\xca\x50\xef\x5a\x79\x1a\x2e\xd8\xda\x1c\xa9\x2b\x4b\x46\x85\x9a\x28\xa7\x5d\x87\x32\x68\x83\xb5\x78\x18\x54\xe9\x18\x19\xa7\xae\x46\x72\x2f\x10\xfd\x18\x95\xe4\x21\x4e\x54\xf5\x8d\x3a\x1a\xff\x65\xd2\x0e\xe4\x3e\xc6\xc5\x5f\xdf\xfc\x97\x39\x5a\x25\x5e\x93\xbf\x2a\x1d\x26\x4a\xb2\x2d\x6b\xe1\x4c\x5b\x06\xa5\x6c\x7f\x26\x2d\x84\xe8\x6f\x69\x7c\xce\x98\x7a\xf5\x78\xff\xde\xe0\x42\xcf\xe3\xfb\x7d\xda\x25\xbb\xeb\x91\xd4\x3d\xbb\x47\xec\x3a\xbc\xb7\xb6\x1c\xa9\x98\x2b\x99\xad\x9e\x88\x6b\x8b\x35\x2e\xb9\x5c\xbc\xae\xcf\xe8\xc8\xb8\x84\x8f\xd0\x4b\x91\x55\xc0\x9a\x96\x8f\x90\xb6\xa4\x87\x69\xd6\xe2\x67\x97\xae\x14\xeb\xcf\x23\xf9\x47\xd5\x1e\x4f\x33\xc1\x75\x06\x70\xad\x08\xa0\x9f\x29\x17\x3a\x06\x5d\x53\x84\x20\xdb\x10\x9d\xa0\x22\x75\xb1\x6b\x55\xd0\xbd\xfa\x07\xce\xf3\xfa\x8d\x96\xc1\x4b\xa3\x13\xd5\xea\x46\xcd\xe0\xb0\xe5\xd6\xf3\xff\x52\x6c\x2a\x9a\xa9\xeb\xf3\xcd\xf9\xb5\xa2\xc4\xd1\x0f\xdf\xeb\x5a\x47\x7f\xf9\xf3\xf7\xdf\x46\xb7\xc0\x97\xcb\x20\x9a\x64\xe3\x4a\x8a\xef\x86\x38\x34\x62\xfe\xd7\xbd\xa9\x41\xd3\x22\xc2\x95\x62\x36\x6f\x91\xad\xf5\xbe\x34\xcc\x5b\x2e\xb2\x93\x2d\xd1\xc1\x26\xa9\x77\x87\xe8\xe5\xaf\x20\x7a\xd9\x66\x28\x6a\xfe\xb5\x2b\xff\xd3\xac\xef\xda\xb2\x3e\xc3\xda\xe2\xdb\x0e\xcc\xfa\x3a\xac\x2d\x4a\x77\x77\xd6\xb7\xd7\x1b\x3f\xfd\x2d\x74\xa4\x66\x52\x82\x06\xff\xee\xaf\xd4\xae\x96\x03\x75\xdd\x89\x99\x8e\x41\xa3\x2f\x53\x9c\x7b\xef\xdf\xce\x7b\xf6\x07\xf9\x8b\xf5\xe8\x75\xbd\x76\x61\x56\x39\xe2\xd1\xdb\xf5\xfa\x52\x2e\x83\xc5\x9d\x1e\xd9\xe6\x68\x0d\xe7\xe4\x73\xf7\xf2\x28\x27\x89\x93\xfa\x3e\xae\x1e\xed\x6c\x0b\x8b\x4c\x00\xfa\xc2\x2e\x2a\x39\x13\x7a\x76\x20\x9e\xa4\x27\x75\x4e\x3d\xca\x2c\xc3\xd4\x86\x3a\x35\x5f\xf5\x68\xae\xde\xb1\x6e\x51\x79\xe6\x74\x9c\x5f\x2d\x39\xb1\xe4\xc1\x84\x73\x48\xbd\xb0\xde\xee\x7c\x3e\xbb\x6f\x2f\x46\xd8\x99\x19\xd7\xae\xdc\xb6\x0d\x9f\xd3\xba\xe4\x79\x81\x69\xb0\x5c\x53\x8f\x37\x0c\xbd\xae\xff\x39\xd7\x16\x5b\x20\x24\x52\x17\x47\x05\x61\x34\x48\xd9\x05\xf1\x60\x73\xdb\x57\x65\x8e\xc3\x9c\x67\xe2\xba\xb7\x13\x33\xb3\x5b\xa0\xfd\x49\xff\x92\xc9\x2e\xed\x85\x29\x2b\x4a\xe9\x71\xb0\xe7\xf6\xb5\x7e\x7a\xf7\xc8\xf4\x41\xae\x14\xdb\xd3\x8b\x30\x77\x95\xb5\x1b\x63\xc0\x02\xe7\x81\x7f\xd9\xf9\x47\x8f\x2e\x13\x3e\x25\x26\xe9\x46\xa7\xeb\xc2\x66\x88\xef\xf3\x02\x07\x63\x39\x6e\x17\xee\xcc\x54\x56\x4c\xb0\x72\x62\xbe\xd2\xf5\xc0\xcb\xdd\x98\x00\xfd\xc4\xb9\xce\xd1\x2b\x62\xf6\x13\x47\x48\x87\x76\x3b\xef\x90\x02\xbd\x35\x22\x98\x95\xd6\x4f\xc4\xe3\xfe\x65\x63\xba\xdd\xc3\xb1\xff\xd7\xa9\x7d\xb0\xef\x0a\x4a\xfb\x3a\xf3\x55\x9e\x98\x55\x78\x75\x61\x54\x61\x9b\x39\xc8\xcd\x76\x44\xed\x7e\xf4\xf6\x5c\x74\x50\x80\xe4\xa3\xfd\xaa\x15\xf9\xd5\xc5\xce\xc7\x9b\xd5\xe2\x81\xd5\xa9\x35\x58\xae\x3b\xaf\xf5\xc2\x7c\xcc\xdf\x20\x71\xc7\xa0\x13\xfc\x85\x4f\xe9\x5c\xc5\x0f\x78\x43\x1c\x70\xd6\x41\xe2\x2a\xf4\xfd\x73\xe8\x68\x07\x8e\x6e\x94\x6a\xf0\x68\xeb\xa3\x3b\x78\x64\x81\x17\x1b\x77\xa4\x1f\xe5\xc8\x4e\x12\xd3\x91\xca\x1c\xf0\xe4\x97\x49\x95\x39\xf6\x76\x9f\xd2\xa7\x23\x91\x65\xfd\x6a\x5e\x32\x49\xcf\x72\x3d\x5b\xe6\x85\xdd\xb1\x8c\x0e\x1d\x94\x12\xb0\x57\x66\x65\x87\xbb\x33\xc3\xd2\xc8\xea\xe1\xcf\x0d\x80\xea\x2c\x59\xad\xca\x6e\x50\x5d\x89\xa3\xad\x8e\x6e\xea\x70\x1c\x1b\x4c\xb7\x35\xae\x78\x58\x24\x4a\x56\xe5\xa3\xf2\xec\x81\x2d\x4d\x05\xa9\x7a\x37\x8e\x4c\xb5\x8d\x3c\x15\xd7\xee\x01\x80\x15\xdb\x38\x53\xa0\xcb\xbb\xc5\xa1\x02\xe3\x4c\x45\xa9\x46\xb1\x2a\xfa\x28\x14\x51\x8a\x21\x94\x8a\x31\xfc\x09\x00\xd3\xf7\xf1\x29\xbe\x88\xd7\xd1\x6c\xf4\xa4\x8d\x65\xd1\xa7\x6c\xfc\xba\x3e\x74\x00\x08\x90\x29\xb8\x52\xd7\x8e\xba\x5e\x33\x53\xc0\xc7\x9d\x74\x84\x0b\x06\xaa\x8a\xee\x6d\x02\x0f\x9e\xcf\x84\xea\x6c\x2a\x80\xef\x25\x0d\x4e\x20\xb3\x08\xd9\x13\xf0\x1e\xfc\xaa\x47\x0e\x30\xaf\xa5\x88\x40\xc5\x3f\x74\x13\xcc\xce\x15\xe8\x85\x74\xc8\x04\xe0\xa2\xda\xd6\xe5\xbe\x1d\xcd\xe1\x18\x11\x9c\xad\xd0\x1d\xd9\xcc\x14\x8f\x01\xd3\x44\xa8\xc2\x2a\xa7\x4f\x4d\xd3\x05\x16\x5d\xd4\xad\xd6\xe2\x04\x05\x94\x91\xad\x45\x38\xb7\x19\x6f\xed\x9e\x73\xd9\x83\xc0\xec\xb9\xb6\x61\x6e\x94\x3b\xf4\xb0\x62\xdc\x18\x72\x8c\x51\xe7\x8e\x6c\x14\x3b\xc9\x58\x09\xba\x52\xb4\xcd\x10\x50\xb3\xa6\x62\x79\x7a\x99\x75\xf2\xc4\x92\x1c\x86\xd1\xde\xb6\xc0\xb8\xdb\xd0\x1f\xc9\xbc\x23\x32\xb1\x37\x03\x65\x8e\x9a\xd2\xeb\x91\xfe\x8e\x2a\x60\xa9\xa2\xb0\x38\x29\x61\xd1\xcd\x1e\x4d\x35\x77\xdd\x90\x24\x55\xc0\x9a\x72\x83\x89\xad\xa8\xa6\xcc\xa8\xde\x4b\x6e\x13\x74\x32\x14\x39\x11\x4d\x05\x0b\x3f\x6a\x9b\x8a\x2b\x93\x23\x27\x9c\x23\x5d\x26\x7b\x8d\xeb\x3b\x92\x3b\x7c\x8f\x13\x05\xec\x93\xb2\x42\xb6\x0c\xa8\x45\xc1\xd1\x37\x25\xbc\xf1\xd3\x45\x13\x70\xe7\x64\x3b\x3a\x39\xd1\x70\x3d\x43\x69\xa4\x60\x3a\x89\x4c\xa1\xaf\xb9\xe0\x4a\xc5\xab\x2b\xe5\x52\x2d\xad\xb2\x14\x83\xf0\x21\xfc\x66\xb0\x2e\x31\xd8\x84\xd9\xb6\x74\x3e\xa8\xdb\x1d\x89\xde\x57\xfa\xad\x1b\x18\x66\xf8\x40\xcb\xb6\x53\x7a\x8d\xa6\xa1\x9c\xe8\x06\x47\x46\x1b\xe9\xfb\x08\x46\x5a\x22\x49\xe4\x63\xaa\x0d\xa3\xa5\x25\x53\x1c\x46\x57\xeb\xe1\xa6\x25\x53\x0d\xe3\xac\x69\x04\xb5\x64\xa2\x10\xc4\xb5\x64\xa2\x71\x74\xd5\x64\x92\x00\x2d\x38\xbd\x9b\x93\x51\xdb\xda\x96\x8e\xdf\xd6\xb6\x54\x24\xb7\xb6\xc1\x31\xdd\xda\xb6\x75\xee\x1d\x17\xaf\xda\xe4\x9f\xe4\x39\xb4\x70\x6e\x6b\x5c\x39\xa5\x42\xb0\x13\xf4\xce\x48\x85\x09\xcb\x82\xcb\x16\xde\xcd\xa4\xfd\x74\x45\xcc\xa4\x93\xa3\x06\x49\x0a\xb2\x26\xa5\x30\x45\x0a\x2c\x59\x25\x76\x92\x89\xba\x1c\x7f\x23\x37\xd2\x24\x96\xe9\xd8\x34\xe6\x99\x86\xb7\xa4\xdb\x4c\x2e\x4d\xd2\xf3\x89\xf2\x2f\x11\x18\xd3\x7f\x29\x1e\x16\xd9\x36\x68\x5c\x9d\x6e\x69\xd1\x75\x09\xa3\xfd\x02\x71\x78\xba\xc1\xa3\xf1\x12\x88\xaa\xb8\x3d\x70\x4c\x9e\x6e\x13\xf6\xae\xd5\x3c\x77\x02\x7a\xdb\xb8\xac\x9d\x8e\xc6\x9c\x30\x5a\x56\x23\xc9\xee\xd5\x65\xc0\x8a\x7a\x03\x20\x93\x38\x7a\x88\x6d\xb5\xfb\x06\xf8\x7c\x00\x01\xf1\xbd\x17\xe2\x37\x7a\x8f\x26\x70\xa0\xf2\xe6\xff\xcc\xef\xf4\xdb\x30\xe5\x5b\xd8\xe0\x09\x7b\x03\x00\x57\x3e\xb9\xdf\x89\x10\xe6\x49\xb2\xa4\x5b\xb8\x3a\x00\x66\x9e\x44\x35\x0d\xf8\xbc\x6d\x53\xaf\x33\x69\x60\xe8\x6d\x03\xc2\xa2\xa7\x6b\x88\x36\x20\x37\x04\x90\x9e\x4c\x75\x1b\x50\x7d\x12\x54\x7a\xdb\xa6\x4e\x37\x9a\x08\x9f\xde\xb6\x38\x90\xfa\x04\xa2\x7a\xdf\x39\xf0\xf5\x21\x48\xf5\x49\x54\x77\x83\x61\xf7\x7a\x37\xf5\xca\x8b\xa6\x41\xb3\xb7\x2d\x0a\xd2\x3e\x69\x5e\x1c\xb0\x3b\xda\x03\x5c\x7b\xdb\x76\x98\xa6\x29\x0a\x2e\x9a\x00\xe6\xde\xb6\x49\xda\x2b\x3a\x98\x31\x0e\x66\x8c\xa4\x76\x30\x63\xf8\x6d\x67\x33\xc6\x08\x48\x7d\xf2\x14\x76\x4d\x21\x03\x70\xf5\x13\xce\xce\x36\xbc\x7d\x0f\xb8\x3e\x99\x66\x10\xe8\xde\x41\xd8\x27\x93\xdd\x2f\xe4\x7d\xdb\xf6\x02\x7e\xdf\xb6\xc9\xe2\x64\x1a\x20\x7e\xdb\x00\xd0\xf8\x93\x98\x60\x0b\xa5\x3f\x0c\x92\x3f\xc1\x70\x36\x02\xaa\xdf\x83\xcb\x9f\x70\x3c\xf6\x03\xaf\xef\x75\x75\x27\xa0\xfd\xb6\xed\xa2\xf9\x4e\x04\xdf\x6f\x1b\x0c\x86\x7f\x92\x4a\xb6\x74\x65\xc7\x07\x00\xf9\x27\x51\x4c\x03\xf1\x6f\xdb\x4e\xca\x6e\x32\xb0\xbf\xf7\x6a\x0c\xe2\x7f\xea\xbc\xae\xb1\xb0\xac\x6d\x1b\xec\x7f\x12\xd1\xce\x9d\xe2\x75\xbc\xfe\xc8\x76\xdb\x69\x92\x6d\xef\x77\xdf\xc2\xad\x34\x4d\x42\xe8\xef\x37\x55\x54\x4e\x72\xc9\x27\xde\x6f\xd3\x6f\x0d\x13\x87\x3b\xf1\xd2\x30\xcd\x7c\xff\x1c\xcd\xf1\x89\x1f\xd1\xe1\x8d\x7b\x33\x67\x1a\x18\xb4\x43\x74\x52\xbf\xdb\xfb\x8f\x4e\x32\xc5\x16\x0e\xa1\x49\xff\xb2\xa1\x49\x73\x03\x17\x38\x18\x97\xa4\xa3\x8d\x12\x88\x02\xe2\x92\xd4\xd5\x21\x81\x24\x20\x2e\x49\xf9\x68\x93\x0e\xd2\x21\x2e\xe9\x10\x97\x94\xda\xf7\x83\x41\xef\x60\xd0\x3b\x18\xf4\xc0\xed\x10\x97\x74\x88\x4b\xfa\xc3\x5f\x84\x0e\x71\x49\x87\xb8\xa4\x4e\x5c\x92\xb9\x30\x25\x29\xc5\x26\x28\xe9\xf9\xc6\x24\x19\xd8\xe2\xb3\x2c\x63\x4d\x29\x6e\xd8\x1d\x01\x06\x0d\x80\x2e\xf3\x5b\xb4\x81\x03\x7f\x9a\x18\x25\xdc\xe4\x54\xde\x9a\x27\xee\x91\x33\xf3\xba\xbd\xa0\x4a\xe9\x5a\xe6\x24\x77\x74\x13\xf6\x89\xe1\x14\x42\xce\xd1\x09\x3a\x43\x35\xc9\x68\x45\xa5\xfc\x50\x25\x5a\xd4\xef\xa9\xb7\x27\x87\x55\x48\x05\x27\xc5\xd2\x20\xab\x95\x1e\x92\x71\xab\x22\xa6\x5f\x1e\xed\x20\x3b\x5d\xd7\xea\x12\xb3\x10\x5e\x09\x54\x0d\x88\x74\x4d\xfe\x69\x35\x38\x33\x17\x37\xfe\xb7\x72\x68\x8d\xab\xb6\x99\x3b\xbd\x37\x68\xd3\x61\x5c\x51\x68\x35\x32\x47\x2b\x9d\x0f\x91\xcf\x15\xad\xd5\xc1\x98\x93\x8c\x95\xf9\x54\x4b\xd2\x65\x9f\x8e\xdd\x75\xc6\x6f\x93\xb4\x84\x79\xa3\x49\xa9\x14\x4c\x5c\xd0\x9c\x8a\x8d\x0b\xf1\x31\x38\xe6\x58\x9f\xda\xa4\x99\xd6\x9b\x97\xb7\xcb\x87\x70\x55\xd5\x0c\x67\x2b\xc2\xbd\x99\x48\x11\x17\x4a\xd1\xd3\xd5\x1a\x5c\xb6\x68\xd1\xdc\xd2\x52\x5f\x46\x14\x75\xa9\x59\x02\xf2\xf1\xdb\x56\x33\x61\x43\xe9\x7a\xc3\xf5\x77\x9d\xf9\x6c\xaa\x4d\x49\x5b\x16\x44\xbd\x51\xe5\x8f\x98\xff\x31\x3d\x27\x80\xfa\x25\xdd\xf1\x9b\xd7\x38\x62\x45\x6e\xab\x47\xfe\xf0\x2d\xaa\x48\x9d\x19\x0e\x91\xe6\x5a\x54\x25\x06\x05\x43\x85\xd4\xc8\x59\x6d\x6b\x54\x0e\x7c\x26\x81\xe8\x9f\xbf\x43\x2b\xd6\xd4\xfc\xc4\xaf\x9f\xf0\x5a\xfd\xa6\x6d\x37\x5a\x02\xa6\xd8\xbd\x04\x2a\x08\xe6\x02\xbd\xfe\x16\xad\x69\xd9\x48\xc5\x07\xfc\xba\x77\x59\xfa\xfe\xbb\xc4\x03\x9e\x76\x4d\x4a\xbb\x20\x6d\x87\x7b\x99\x73\x5c\x69\x3c\x23\x73\x4f\x4a\xb2\x2d\xa8\x22\xf1\x6a\xf7\x6a\xdc\xb4\x6e\x9c\x83\x15\xa2\x89\x77\x2e\xb3\x1b\x4a\xc1\x1e\x91\x3f\xa6\xdd\x2e\x12\xee\x09\x49\x5a\x50\xc2\xc3\xb0\x4b\x04\xac\x64\x85\x71\x50\x06\x9e\x01\x75\xec\xb7\x86\x2d\x36\x02\x5e\x5b\xe7\xef\xfa\xf9\x6e\x51\x1d\xfb\xe3\x56\x11\xd3\xe0\x7c\x6c\xc3\x12\xb6\x35\x4c\x03\x2f\x42\x35\xb5\xdb\x9a\x35\xd1\xdc\xf7\xce\xd8\x94\xcd\xc6\xda\x08\x8c\xb8\xc0\x59\x46\xb8\xe2\x46\x17\x0e\x46\x3c\xba\x25\x4a\xa6\xbf\x0e\xda\x0e\x8f\x55\x89\x26\x58\x43\xd4\xae\x18\xd0\x49\xf3\x98\x75\x44\x41\x93\x04\xb9\xc3\xd4\xe4\x96\x72\x91\x8c\x82\xaa\x5f\xea\x6e\x68\x4e\xcb\x5b\x85\x00\x87\xd6\x4d\x21\x68\x05\x48\x01\xb0\x33\xea\x08\x1a\xdd\xc0\x77\xbc\x60\xcf\x7a\x8f\xe3\x53\x24\x4f\x90\xae\x03\xad\x1c\x78\x2f\x6d\x5f\x10\x29\x85\xaa\x71\xa2\x82\xc4\x49\x85\x6b\x6c\x97\x25\x4a\x33\x63\xeb\x35\xe6\xaf\x8c\x0f\x08\xab\xc0\x25\x2d\x42\xa4\x36\x50\xe3\xc2\x4d\xa3\x1f\x72\xb2\xaf\x8d\x2c\x48\x89\xcb\xa8\xbf\xb7\x6b\x00\x54\xaf\x20\xf6\x50\x5a\x44\x13\x0d\xa1\x9b\xb8\x83\xcd\xbd\xe3\x47\x9c\xdd\x91\x32\xd7\x88\xec\x6a\x1f\xe7\x9b\x12\xaf\x4d\x85\x6c\x87\x37\x4d\x72\x4b\x3f\x4a\xd8\x05\xe5\xe8\xb2\x34\xba\x60\x8c\x2d\x92\xa5\x95\xcd\x7d\xcd\x5e\xc3\x13\x4b\xdc\x7e\xe4\x52\x13\x0b\xf3\x33\x90\x27\x82\x93\x9a\xde\x67\xc4\xaa\xb9\xb2\x23\xfb\x1a\xd4\x7d\xb4\xb6\xdb\xd6\xb0\x4c\x5d\x37\xea\x9d\x26\x25\x4b\x9c\x23\x5b\x55\xd5\xc6\x85\x64\x51\x71\xc5\xde\x96\x24\xea\x6e\x28\xb9\x82\x7b\x44\x69\x86\x82\x0e\xeb\xa3\x17\x7c\x28\xba\xe1\x41\x72\xbf\x5e\xc0\x6b\x54\x1d\x7d\xf8\xf1\xa2\xcb\x1f\x3f\xe0\x9c\x71\xf4\x63\xc1\xb2\x3b\x74\x41\xd4\x15\x28\x8e\x7f\xde\x2f\x6e\x0e\x82\x24\x0e\x52\x8c\xc1\xa2\xd5\x8b\x7c\xbf\xa0\x68\x07\x90\xae\xaf\x06\xa4\xab\x5e\xc4\x6d\x1e\x7f\x54\x88\xae\x35\xbe\x4d\x45\xa1\x5c\x11\x54\xab\x43\xad\x5e\xb6\xc8\xff\x70\x04\xc2\xce\x51\xfb\x66\xc5\x1e\x66\x82\xcd\x1a\x4e\x66\x34\x1a\xf4\x07\x1e\xd7\x1d\xd9\xc8\x67\xd2\x46\xf6\x37\xfd\x52\xe7\xa2\x2c\x98\x32\xab\xab\xdf\xa5\x96\xf3\xe1\xc7\x0b\x29\x2a\xe1\x35\x93\x29\x47\xa7\x44\x64\xa7\x19\xa9\x56\xa7\xa6\x5b\xcf\x6e\xba\xd6\xac\xa4\x82\xd5\x89\xa0\xea\x67\x28\x63\x45\x61\x2a\x9e\xb1\x25\x3a\x27\xd5\xca\x91\x4a\xf2\x41\x3d\xe2\x1c\x7c\x39\x38\xa6\x8a\xb1\x34\x88\x18\xef\x68\xc9\x77\xcd\xc9\xf2\x36\x52\xbd\xc8\xf7\x8a\xbe\xfe\x14\x5b\xeb\x11\x50\x2d\xc0\x85\x51\xc7\x6a\x9f\x0e\xa0\x52\x3d\x93\xdd\xfa\xd8\xe8\x57\x47\x73\xfb\x9a\x0a\xea\xf3\x7c\xc7\x49\x60\x56\xf6\xf3\x1d\x96\x88\xae\x96\xfa\x5a\x94\x93\x1c\xb1\x7b\x52\xd7\x34\x27\xdc\xb2\xe2\x24\x8e\x59\xd2\xe2\xa9\x78\xe4\x01\x97\xeb\xab\xc0\xe5\x4a\xbe\xf0\x7a\xcc\x56\xbe\xbb\xcd\x6c\x71\xbe\xa6\x80\xdc\xe5\x67\x25\xc9\x81\xc8\x5a\x52\x6f\x0b\x3e\x61\x85\xf8\xae\x57\x47\x9e\xe1\x82\x5c\xfd\x02\xbe\x3e\xce\xf5\xf3\xdd\x1b\xa4\xfd\xd1\x43\x4d\xd8\xa1\x22\xfb\xdf\xdc\x21\x43\x25\xcb\xc3\x9e\x9e\x03\x66\x42\xff\x6a\xe6\x9d\x0f\x5d\x92\x7d\x5f\x6a\xc2\x2d\x16\xe4\x01\xa7\x69\x09\x37\x76\x88\x2d\x02\x93\x8e\x9f\x31\x1b\xe6\xec\xfa\x0a\xfd\xa4\xe9\xee\x0f\x9c\xa1\x66\x42\x6b\xbc\x17\x6c\x8d\x69\x22\x94\xae\x07\x87\xe3\x77\xf4\xda\x11\x45\x9a\x6a\x74\x59\x3c\x7c\xe0\x25\xbd\x6d\xe4\x0d\xd9\xdc\x5a\x0f\x35\xed\x23\x43\x7f\x3c\xe5\xaa\xd5\xad\x3c\xf3\xa2\x4d\xf5\x70\xfa\x52\x74\xe8\x76\x57\x28\xb1\xe4\xc2\x5c\x10\x27\x25\xa7\xca\x67\xeb\x05\x41\x29\xa5\x4b\xac\x00\x8e\x26\x97\xc3\xa1\x15\xb4\x63\xf4\x33\xbb\xa5\xa5\xe5\x0e\xcc\x84\x39\x2c\x31\x2d\x62\xd3\x78\xd0\x98\xbe\x0a\x8d\x89\xf3\xe2\xb2\xc4\x8b\x22\xee\x14\xef\x0a\xae\x02\xab\x68\x13\xa2\xde\x3d\xcd\x29\x97\xff\x8f\xe6\xf3\x9f\x95\xc3\xa8\x29\xa1\x37\x08\xe5\x52\x31\xec\xd9\xd5\xd6\xd1\x4c\x63\x7f\xe7\x58\xf3\xc4\x64\x3c\x82\xab\x32\x97\xc3\x20\xbc\x13\x97\x69\xa8\x69\x08\x06\xa8\x37\xc9\xc4\x9b\x2d\x08\xba\x59\xd1\xec\xee\xda\xf3\x1b\xb1\x5a\xfe\x56\x7a\x3f\x39\x01\x0b\x39\xce\xfd\x77\xf7\xc5\xf8\xcd\x30\xaf\x53\xcd\x17\x37\x9e\x44\x9b\x9b\xa9\x92\x44\x10\xe6\x9c\x65\x14\xee\x78\x54\xc6\xb7\x56\x24\xe6\x4a\x24\xee\x6f\x78\x4a\x0b\xda\x49\x6e\xdb\x8d\x60\x14\x38\xcc\x3d\x39\x0c\x71\x2f\x9a\x59\xda\xdb\x90\xf4\x56\x4c\xc6\xea\xbb\xe9\xa0\xf3\x59\xaf\x9f\xf6\x85\x39\x5f\x17\x10\x18\xc3\x2e\xbc\xd5\x69\x0d\x34\x6b\x6f\xe9\x7d\x94\xbe\xf8\xc9\x51\x61\x2b\x4f\xea\x55\x33\x5a\x68\xf0\x19\xa7\x1b\x84\x9f\x8a\xe9\xed\xb0\xfb\x53\x34\xe9\x79\xc8\xba\xd3\x0b\x50\xd0\xbf\x19\x37\x9a\x62\x46\x15\xab\x9a\x02\x47\x3c\xd6\x3e\xa0\xe2\xae\x1e\x14\xdd\x87\x7d\xb8\xd5\xa6\x22\xcc\x8c\x24\xd6\xf5\xc0\x66\xe2\x7a\x77\x1f\x8c\x06\x02\x36\x03\xb5\x7c\xa9\x0e\x7d\xfb\xfd\x77\xdf\x0d\xc1\xd3\x74\xe0\x67\xe2\x7a\x17\x10\x9e\xa6\x97\x20\x07\x13\xda\x41\x78\x9a\x3e\xfc\x4c\x7c\x4a\x01\xf0\x34\x89\x09\x6d\x8f\x83\x3f\x03\xf2\x24\x24\x64\xe5\xdb\x5c\x7b\x10\x7f\x0d\xe5\xe2\x8f\x66\xd8\x03\x64\x51\x27\x03\x1f\x92\x57\x0f\xf0\x59\xaa\xbc\xfb\xbd\x66\xd3\x27\xe4\xd0\x77\x32\xe3\xa3\x84\x43\x99\xf3\xa3\xf9\xf0\xf0\xbb\x96\xa2\x05\xca\x82\x8f\xd2\x04\x63\x72\x80\x03\xa0\x41\x19\xef\xdd\x3c\x76\x18\x7f\x80\x64\x0d\x4e\xc1\x57\x0a\xe4\xb4\xbb\x3c\x75\xc0\x65\x0a\x9a\xc9\x9e\x96\xe7\x03\xce\x5a\xdf\x4b\xae\x7a\x62\x00\x34\x3c\x2f\x3d\x45\x68\x82\xec\x0e\xba\x0d\xe6\xa0\x8f\xe4\x94\x03\x49\x76\x33\xcf\x23\x99\xe4\x40\x9a\x2a\xdf\x1c\x94\x3f\x6e\xc5\x1f\x90\x70\x44\x48\x76\x84\x20\x98\xe4\x3e\x44\xa5\x6e\xe9\x19\xdf\xa9\x09\x0c\xf0\xe4\x05\x50\x4e\x77\x62\x6d\xc5\xf1\x4c\xee\xed\xcc\x6c\x20\xc9\x77\x03\x0c\x73\x3c\x1f\x1b\x48\xd4\x2b\x16\x32\x29\x0b\x3b\x89\x2d\xc0\x73\x22\x60\x79\xd6\xc0\xac\x89\xbd\x27\x41\xc0\x73\x70\xe1\x99\xb7\xae\xc8\x7f\x74\x38\x69\x09\xb7\xa9\x26\xe8\x74\xfc\x7d\xdf\x76\x6a\xae\x7e\x76\x77\xea\xd0\x49\x57\x38\x3c\xbe\x52\x8a\xd3\x3f\xc1\xe5\x0f\xc1\xb7\x2e\xec\xda\xac\x7b\xc0\x82\x82\xbb\xbb\x19\xf4\x1b\xbf\xcc\x7b\xae\x47\xf7\xb3\x55\x90\x8d\x57\x31\xec\x7a\x3c\x78\x1c\xbf\x7e\x94\xf6\x83\x7b\x6c\xba\x7b\x8c\x77\x4a\x72\x5a\x03\x95\xd6\x2b\x21\x1e\x32\xb6\x30\x80\x14\x9a\x69\xbb\x43\x7a\x76\x7d\x85\xb2\x9a\xa8\x0c\x6c\x5c\xf0\x13\x34\xa1\x42\x91\x75\x44\x28\x0d\x95\xbb\x9b\x27\x16\x82\xac\x2b\x11\xdf\x40\x07\xef\xd8\x57\xe1\x1d\x9b\x68\x52\xff\xd5\xbd\x66\xed\x1f\xab\x66\x8d\xcb\x99\x3c\xe5\xca\x4f\x66\xec\xed\x30\x9b\x7a\x4f\xfa\x9c\x20\x9b\xcf\xa2\x16\x46\xe5\x74\xa9\xb4\x3a\x0d\xa2\x0e\xba\x9c\xab\x5a\x6e\x4e\x05\x78\x04\x0f\x84\xa2\x3b\x71\xce\x34\x9e\x49\x8f\x3b\x64\xac\x02\xcf\x98\x91\xd2\x66\xa0\x6e\xfe\x2c\x23\xf0\x40\x53\x7c\xab\x0e\x84\xb4\x56\xa1\xae\x55\xe6\x69\x4b\xa5\x53\xa7\xcc\x14\x1e\xc3\x45\xc1\x1e\x00\x49\x8d\x2b\xd2\xd1\x0c\xe4\xbe\x90\x63\x35\xc9\xfc\x0b\x82\xd6\xb4\xae\x59\x6d\x3c\x27\x00\x33\x61\xbb\x5d\x54\x74\x88\xbc\xbf\x92\x5a\x5f\xd1\x6a\x13\x2c\x30\x27\xc2\x9b\x6e\x88\x02\x88\x4b\x9d\xdc\x24\xff\x6d\x63\x3a\x35\x1e\x94\xe1\x93\x0b\xb2\xc2\xf7\x94\x35\xb5\xa2\x0e\x21\xf9\xc2\xbc\x2a\x45\x37\xda\xb0\xc6\xe1\xa9\x37\x2a\xcd\xc1\xcd\x2e\x18\x98\xdd\x5b\xe7\xf7\xed\xcb\xea\xca\x9d\x33\x6b\x89\x9b\x91\xcf\x94\x8b\xf4\xb9\xb4\x4b\x6c\x2b\xf2\x3f\xa5\x1a\xdb\x2c\x62\x60\x2f\xa0\xcf\xdd\xf3\x4a\xea\x0b\xbf\x46\xd3\xe7\xba\xc7\xd2\x7f\xab\xab\x16\xdf\xcf\xd5\x9f\x76\x51\x8a\x4d\xcd\x0b\xae\x35\x46\x93\xd6\x72\x50\x8c\x43\xed\x0f\xa2\x18\xbb\xf0\x81\x82\x66\x9b\xab\x8b\x34\x15\xd1\x85\x0d\xc8\x97\xd1\x8f\x98\x93\x1c\xbd\xc3\x25\xbe\xd5\x36\x95\x97\xf3\xeb\x1f\xdf\xc5\x11\x03\xaa\x9a\x29\xfb\xd0\xd5\xc5\x80\x03\xda\xc9\x55\xfd\x91\xf7\xfb\xcb\xdc\xec\x8d\x3d\x59\x79\xd8\xf3\xe8\xf7\x98\x93\x6a\x05\x3c\x04\x7b\x6a\xbb\xf0\x88\x0e\x06\xb0\x75\x91\x78\x9f\x7d\xdc\xaf\xf3\xbb\xfd\x74\x13\xe6\xe4\x6f\x87\xb2\x1b\x83\x8e\x3e\x52\x51\x31\x1a\x93\x0e\xe1\x67\x02\xd7\xb7\x44\x5c\x95\x59\xd1\x70\x7a\x0f\xe7\xdc\x37\xdd\xf7\x3c\x85\xca\xd9\xba\x18\xa2\xf2\xcf\x79\x58\x07\x60\xe5\x2d\x53\xfa\x48\x8d\x4b\x8e\x75\x34\x0e\x2d\x4d\x56\xbd\xee\x9d\xae\x04\x13\xda\x66\xb0\x6b\xa5\xa6\x76\x43\x13\x04\xd4\x8d\x7b\xa5\xa7\x32\xaa\xb2\x43\x5c\xe0\x75\x85\x74\x91\x8e\xb8\xd7\xae\x26\x99\xd4\x6e\x36\xae\xd8\x53\x46\xc2\x2c\x11\xb4\x23\xdb\x41\x15\xb4\x9c\x32\x30\xf9\x9a\x37\x38\xd3\x4b\x7d\xb7\x97\xca\x59\x70\x4c\x15\xae\x05\xcd\x9a\x02\xd7\x6a\x46\x24\x2d\x5d\x6f\x2a\x6f\x83\xb8\x05\xb3\x44\x11\x2e\x98\xbe\x50\x87\x39\x9c\xd2\x05\x6d\xd7\xd4\xc9\x7e\xc0\xdc\xe2\xb1\xc8\x0d\xa6\x35\xe5\x05\xe6\xf2\x7f\xb2\xbb\xa6\x92\x0f\x04\x69\x0a\x7c\x47\x82\xf1\x5d\x09\x93\xfd\xbf\xc3\x12\x67\x60\x9e\xff\xf7\xd5\x45\x7f\xff\x78\xdb\xfd\xea\x42\xef\xa1\xe0\x00\x74\x85\x8c\xc7\xd8\x43\x51\x1e\x53\x13\x3e\x1a\x1f\x04\xe1\x31\x4d\x1d\xb4\x9a\xef\xa3\x8b\xfc\x2f\xbb\x74\x70\xd1\x64\x77\xe1\x10\x28\xd0\xee\x20\x65\xae\x38\xd5\xce\x84\xaa\x9a\x2c\xe9\xe7\x9d\xc9\xd4\xe4\x36\x02\x9b\xb9\x97\xa9\xd7\x1a\xc5\x3c\xea\x4b\x88\x7e\x8c\x3f\xd0\xe5\x4e\x1b\xad\x45\xac\x7a\x16\x2b\x10\x99\xba\xe0\x9f\x35\x0b\x99\x8f\x02\xe7\xc4\xa6\x03\x3f\xf0\xcb\x02\x73\x41\x33\x55\x16\x43\xaa\x7d\xa3\x0b\xd3\xcb\xb8\xfe\x34\xdf\x7a\xb3\x73\x35\x2b\xd1\xd9\xa7\x39\xba\xa0\xfc\x2e\x8e\x4b\xe3\x62\x34\x6d\xa6\x94\x8a\xa6\x30\x17\xb3\xa3\xa3\xee\xd5\xcc\x46\x67\x95\x16\xf8\x68\x9c\x2c\xb3\xde\xa6\x9d\x3d\x47\xf8\x81\x13\x3d\xdc\x85\x1c\xae\xfc\xf3\x68\xe9\x03\xc8\x1e\x8c\x5f\x0e\xa7\xd4\xe3\x50\xf5\x36\xc2\x02\x2e\xa9\x16\x47\xa7\xd6\x46\x90\x2e\xb0\x0e\x47\xaf\xce\x46\x90\x64\xc2\xed\x12\x7e\x7b\x7c\x84\x6d\x10\xfc\xde\xfe\x8b\x71\x4c\x29\xc4\x01\x63\x66\x52\x49\x13\x11\x51\xb0\x9d\xb8\xea\x5e\xb3\x83\xd9\x61\x4f\x5e\x2d\x11\x5b\x53\x21\x6c\x14\x4d\x57\x3d\xd4\x85\xfa\x16\x1b\x48\xd4\xb6\xce\xa1\x6d\xf7\xdd\x5b\x57\x16\x0c\x9d\xe6\xe4\xfe\x94\xe7\xf8\xf5\xb1\xea\x1e\x37\xce\xf7\x98\xba\xd9\x8e\x13\x73\xf4\xe2\xf5\x8b\x13\x34\xa7\x6b\x5a\xe0\xba\xd8\x74\x42\x7e\xda\xe7\x62\xfe\x23\xdb\x11\x95\xc2\xf8\xed\x0b\xf4\x92\xd5\xaa\x47\x19\x2e\x51\x41\xf0\x3d\xb1\xe9\x07\x92\x9b\x6c\x10\x59\x57\x62\xf3\x2a\x18\x46\x03\x0d\x9e\x81\x85\xcc\x40\xfc\x8a\xbd\xa0\x6f\x33\x97\x2f\x44\xdd\x90\x17\xca\xb5\xa8\x7c\x82\x92\x63\x73\x22\xe0\x25\x13\xdc\xa0\x7b\x8e\x43\x65\xb4\x55\xc4\x47\x37\x4b\x90\xae\x9c\x69\xe5\xed\x7c\xf1\xa4\x12\x01\x81\x2f\x9f\x9a\x7a\xc2\xcd\xe1\xe8\xa3\xf2\xb8\xc8\xdb\x81\x85\x79\x6f\x93\x93\x73\x90\xf4\x45\x3a\x15\x44\x8a\xeb\x97\x67\x6b\xfc\x3b\x2b\xd1\xe5\x8f\xd6\xd3\xf3\xea\x0b\x4d\x54\x90\x59\xc5\xac\x2b\x33\x37\x8f\x53\xd5\x55\xfc\x7b\x53\x13\xa9\xbc\x80\xb4\xa1\x33\xfb\x74\x5f\x03\x92\xbf\xeb\x80\x69\xf5\x57\x5b\x6a\x34\xa0\x08\xd9\x3c\xe2\x32\x47\x0b\x6a\x0d\xd5\xbe\x26\xb3\x8b\xe2\xab\x24\xc5\x6d\x2c\x63\xa1\xbb\xbf\xfe\x5b\x76\xe7\x5c\xbf\xa9\xa3\x37\xd1\x7b\x56\x92\x63\x75\x90\x91\x3c\xc9\xe6\x9f\x9f\x6a\x2a\x48\x90\x3d\x81\xc4\x90\xdc\xb3\x31\x7b\xe5\x56\x60\x9e\xef\x88\x56\x85\xf4\xd5\xce\x37\x02\x69\x51\xb0\x85\xbd\x7f\xec\xa3\x77\x1f\x3f\x5c\x25\x75\xee\xe3\x87\xab\xc7\xef\x58\xa2\x42\xb9\x47\x4f\xc3\xa3\x78\x19\xd2\x3d\x0c\x50\x1d\x10\x34\x9b\x77\xb4\x4c\xa8\x34\x78\xf9\xb9\xd2\xa9\x00\x26\x52\x63\xbe\xc2\x0a\x7e\xd4\x95\x3e\x55\x0b\x2d\x57\x3e\x6c\x7d\xaa\x48\xed\x12\xfa\x6c\xd5\x4a\x74\x41\x74\x02\x68\xfe\xc6\x16\x78\x75\xd4\xfc\x17\xc2\x1e\x2f\x4b\x4c\x9b\xf0\xf3\x37\x9a\xbf\xa1\xb5\xfe\x4f\x6f\x67\xbe\x54\x5e\x7c\x5a\xda\x3f\x85\xc9\xde\x63\x5a\xe0\x05\x2d\xa8\x50\xa1\x3e\xaf\x4e\x3a\x20\xb2\xaa\x52\x62\xb0\x82\x21\xd0\x3e\x91\xa8\x86\x40\x43\x9b\x54\xe8\x52\xd8\x9a\xb6\xbf\xb0\x26\x88\xf8\x8f\x8b\x35\xcb\x1c\x83\x0f\x7c\xfc\x70\xb5\x93\xd8\x93\xbc\x01\x2e\xf6\xe4\xd3\x83\x62\x4f\xfd\x61\x6e\xb0\x06\xc2\x85\x36\xfd\x22\x9b\x8f\x22\xf9\xfe\x75\xf6\x10\x34\x5c\xb7\x33\x5a\xe1\xa5\xdf\xfa\x49\x9a\xc6\x52\xc6\xcd\x8a\xce\x01\xac\xc6\x20\xdf\x68\x89\x2c\xd7\xf2\x6f\xc1\x78\x6d\x10\x07\x50\x8c\x24\x69\x40\x8a\x03\xa3\x48\x64\xc9\x5e\x14\xcd\x76\xb6\xc7\x1f\xb1\xdd\x9f\x7a\x2a\x33\x52\xad\x96\xa3\xbb\xbb\x33\xf0\x73\x52\xad\xde\xf6\x42\x87\x55\x31\xc4\xb7\xf3\xed\x42\xf7\x6a\x91\xc3\xb3\x0e\x2e\x72\x0f\x39\x85\x90\xda\x8e\x63\x50\xde\xef\xcc\xbb\xba\x80\xf2\x76\xb5\xc7\xe0\xa6\xb4\x1f\x4e\x29\x91\xa5\x27\x7d\x4a\x95\x2c\x40\x42\x59\x52\x6c\x4e\x38\xeb\x20\x96\xce\x32\x96\x46\xa5\x8a\x89\x9b\x2a\xea\x36\x1a\xa6\x66\x4c\x1c\xa3\x1a\x47\x61\x29\x15\x1e\x8b\xb2\x5c\x35\x45\xa1\x37\x98\xa8\x09\x39\xf6\x2d\x36\xa7\x4f\x2f\xf9\xbd\xe1\x45\x18\x78\x70\x74\xa0\x92\x8f\xd3\x62\x9b\x9f\x64\x03\xa6\xc8\x89\x90\xb0\x0f\xcd\xef\xdc\xbd\x3d\x56\xa4\x36\x38\x0f\x4b\x56\xab\x42\xef\xdd\x1d\xe3\xaa\xd3\x36\x9c\xd4\x27\x46\x12\xed\xa9\xac\xf6\xae\xd3\x19\x93\x51\x90\x40\xf4\xf0\x64\x9a\x52\x98\x2e\x9b\xda\xea\x3e\x09\xf5\x30\xbd\x5a\x98\x5b\xb3\xab\xec\x87\x49\xb5\x2c\xa7\x4f\x19\x34\x46\x0e\x12\x76\xfe\xbc\x43\xce\x53\xc3\xcd\x41\xa1\xe4\xfb\x0c\xdd\x8c\x95\xa3\x0c\xc8\x87\xda\x01\xae\x75\x8b\x53\x1e\x43\x6d\xad\xaa\x70\xe5\x53\xf2\xbc\x1d\x95\xb9\x48\xb1\xc9\xb8\xa2\x46\xcb\x7c\x7c\xb6\xbb\x33\x7d\xae\x9e\xed\x6a\x6a\xfa\xfd\x7e\x30\x6b\x30\x13\x37\x16\xc8\x0a\x3a\xf0\xeb\x0d\xff\xad\x98\xe9\xaf\xcf\x2a\x00\xfc\xc0\x53\xb8\x38\x9f\xce\x24\x05\x01\x09\x78\x0c\x80\x00\x00\x38\xc0\xce\x2b\x85\x0e\xca\xd6\x23\xcd\x27\x4c\xbf\x9a\xa8\x11\xa8\x08\x21\xae\xe3\x20\x8c\x50\xd7\x7c\xc7\xde\xc9\xa3\xd5\x41\x71\x8d\xd7\x44\x90\x5a\xf1\x6d\xb5\x29\x33\x56\x96\x2a\xeb\x9f\xa1\x5f\x2a\x52\xce\x05\xce\xee\x82\xf6\xfa\x83\x14\x7f\x36\x52\x3c\xdd\x2f\x68\x84\x08\xcd\xdd\xfa\x3b\x70\x5c\xcf\x5b\x4d\x4b\x23\x74\xbe\xe4\x49\xfa\xc2\xbe\x3e\x5d\x31\xef\x1d\x1e\xc5\xdd\xeb\x5a\x58\xec\xd3\x3d\xd1\xed\x7e\x4e\x2a\x6f\x16\xaf\x42\x07\x39\x84\xc0\x52\x64\x13\xca\x90\x69\x89\x1b\xdc\x1b\x89\x25\xc8\x60\x60\x7b\xd0\xf2\x63\x9d\xf2\x62\xb1\x6e\x02\x4b\x8f\x79\xb5\x55\x82\x14\x81\x65\xc7\xb6\xca\x8a\x05\x89\xee\x56\x47\x65\xbf\x01\x20\x51\x43\xd6\x84\x12\x63\xd1\x09\x08\x96\x17\x6b\x0f\x5f\x5a\x85\xb1\x09\xd5\xc5\x6c\xf5\xb0\xd8\x1d\x07\x5a\x59\x6c\x6a\x8f\x83\x55\xc5\xb6\xaa\x86\x85\x75\x02\x40\x45\xb1\xed\x8a\x61\x11\x43\x20\x69\x17\x65\xa4\xa0\xd8\x40\xc1\xb0\xb0\xb5\x36\x58\x4c\x2c\x58\x2c\x2c\xda\xd7\xed\x42\x62\xb0\x42\x61\x00\x9b\x6e\x72\x81\x30\x50\xf9\x2f\x78\x12\x3f\xa8\xec\xd7\xce\x25\xbf\x12\x32\xdc\x61\xa5\xbe\x52\xcb\x7c\xe9\x02\x5e\x51\xb2\x08\x58\xe2\x2b\xb5\x28\x03\x8a\x94\xf7\xda\x2a\xdc\x05\xa0\x18\x2d\xed\xd5\x17\x31\x00\x9a\x31\x21\x34\x24\x68\x20\x93\x9a\x58\xd2\x2b\xad\x9c\x57\x4a\x29\x2f\x58\x19\xaf\xa4\x12\x5e\x68\x8d\x63\xe8\xc7\xc8\x6c\x00\x48\xf9\xae\x84\x8a\x5b\xb0\xd2\x5d\x1e\xc3\x02\x76\x33\xa9\x6c\x57\x42\xc1\x19\x48\xb9\xae\x78\xa9\x2e\x40\x99\x2e\x60\x95\x0c\x88\xa3\x2c\x76\x4b\x7d\xbe\x37\xd4\xbd\xdf\x4e\x41\x2b\x0d\x29\x65\x16\x2d\x63\xd6\x2a\x6c\x5e\x25\x33\xc5\x9a\xc3\xca\x3a\xa4\x8a\x19\xc4\x0c\x13\xbf\xfc\x71\x0a\xbb\xf6\xcd\xaf\xd0\xcb\x73\x9b\x39\xe4\x12\xa4\xaf\x4a\x41\xea\x25\xce\xc8\x2b\xff\x3a\x18\x8b\xc9\xb2\xf9\x2e\x2b\x5c\xe6\x85\x36\x50\xe2\x12\x91\xcf\x82\xd4\x25\x2e\xd4\xb7\xf2\x9a\xde\x93\x1a\xbd\x3c\x2b\xaa\x15\x46\x4b\x82\x45\x53\x8f\x9b\xd2\x40\x97\x44\x45\x11\x1e\x01\xa3\x3b\x60\x34\x5c\xbf\xe6\xbc\xd7\x3d\x35\x10\x3d\x8a\xc8\x7d\xce\x2f\xe1\x7d\xce\x4a\x25\x7b\x94\xa0\xdb\xb0\xa6\x36\x8e\x82\x16\x4a\xa6\x96\x97\x3e\xf5\xd1\x20\x55\xcc\x0d\xfa\x30\xa9\x55\x21\x5e\xfd\x76\xd1\xc8\x1f\x76\x8e\x01\xdc\x5b\x44\xa5\x17\xf3\x98\x94\xf7\xb2\xec\xc1\xa4\xc8\xc1\x29\x27\x5e\x8b\xda\x5d\x61\xae\x8d\x3b\x51\xc5\xd7\xab\x3e\xe0\xad\x9f\x56\xf9\x95\xea\x92\x13\x41\xea\xb5\x4e\xa5\x85\x05\xd3\xfb\xc9\x42\x0c\xe1\xaa\x2a\x82\xe0\x46\xa0\x49\x2f\x59\x4e\xae\x9b\x45\x41\xf9\x6a\x9e\x6c\x3f\x7d\x3f\xf0\xb2\x8e\x17\xe9\xfb\x54\x21\x4e\xd4\x2d\x7b\xeb\x30\xee\x8d\xd2\x9e\x31\x8f\x9a\x33\xfa\x27\x87\xa9\x4c\x9e\x82\x08\xe2\xfe\xe4\xf5\xff\x57\x00\xac\x58\x99\xab\x37\x3e\x96\x95\xff\x0e\xca\x70\x51\x70\xa3\x81\xea\x7b\x34\xe5\x8e\x99\x87\xb7\x9e\x24\xa9\xae\x54\x0b\xbb\xd3\xa8\x2a\x56\x64\xab\x37\x72\x27\xfa\x0d\xda\x8f\x2d\x99\x16\xb6\x93\x74\x26\x92\xa3\x35\xd3\x29\x67\x25\x62\xa5\x25\x70\x8c\x70\x51\xd8\xef\xb4\x98\x45\xe1\xde\xd6\xc4\x1c\x80\x7d\xd4\x31\x3c\x18\xb1\x07\xdb\x3e\x8d\xd8\xc9\x2e\xa6\xb9\x4b\x86\xc7\xea\xe5\x99\x8a\x4e\xb6\x08\x27\xd8\x66\x59\x45\x4f\xb4\x15\x3c\xd3\xfd\x54\x29\xd9\x3b\x67\x42\xd4\x74\xd1\x88\xf0\x8e\xc3\x79\x4e\xf5\x99\xbc\x06\xee\x50\xe0\x52\x0c\x54\x34\x6b\x7b\xa4\x54\x13\xc2\x0d\x17\x9a\x99\x8b\x6f\xe6\x9d\x92\x88\x24\x91\xf7\x50\x77\xee\xb6\xf9\x5a\x2b\xdc\x95\x5c\xd7\x3f\x1e\x85\x89\xe6\x2c\x6b\xe4\x65\xa7\x5d\xcf\xd6\x75\xab\x23\xea\xe3\x2b\x13\xdc\x79\x80\xb8\x6a\xd5\xcf\xa9\x3a\x64\xce\x1e\xca\x07\x5c\xe7\x67\xd7\xa3\x89\x21\x5d\xd5\xaa\x7d\xde\xd7\x1a\x2d\x19\x55\x3c\x12\x2f\x58\x23\x6c\xe8\x73\x58\x91\xec\xf9\x1a\x0e\x3e\x85\xb1\xc9\x3a\xf8\x14\xfe\x70\x3e\x05\xf9\xb4\x56\xe1\x0a\xca\x85\x94\xb6\x9d\x53\x62\xec\x70\x72\x76\xf6\x68\xbc\xf5\xce\xa7\xe6\x9f\xfd\x1c\x07\x4f\xfd\x8b\x89\x4f\x66\x76\x7d\xbb\x8a\x9e\x42\x69\x8e\xb7\x16\xd1\x7b\x32\x03\x2b\x5a\x80\x82\xb8\xe3\xa1\xd6\x73\x52\x48\xe5\x03\xf5\xdc\x30\x15\x03\xd4\x67\x47\xba\x0c\x28\x2e\x4b\xa6\xf9\x39\x3f\x46\x05\x5e\x90\x82\x1f\xeb\x3b\xa4\xdc\xaf\x6d\xd5\x4a\x08\x80\x10\x6a\xc5\x01\xc0\xe0\x98\x06\x95\xd1\xea\x44\x13\x10\x01\xcc\x9b\xae\xc4\x79\xb6\x22\x6b\xac\xfe\xf9\x56\xce\x5b\xa4\xac\x97\xdf\x28\x47\x52\x05\x11\x44\x27\xd1\x93\x7a\xcd\x11\x5b\x1e\x77\xb2\xa9\x5e\xdc\xbf\x8e\x62\xdc\xea\x96\x88\xc8\xb1\xb4\x9d\x9d\x30\x05\xd7\x1d\x23\xaa\xdc\x2c\x42\xde\x16\xe4\xfe\x81\xf8\xfa\xda\xd6\x7a\xa1\xd4\xb1\xd6\x33\xfb\x85\x91\x06\x96\xe0\x55\x4c\x00\x12\x38\x38\x45\x0e\x4e\x91\x67\xe5\x14\xf1\x18\xbf\x3a\xcd\x94\x5b\x40\x17\xcf\x51\x02\x98\x04\xdf\x42\x68\xfd\x29\x5e\xb1\x5a\xad\xc6\x59\x57\x89\xf1\x93\x40\xc4\x49\xdd\x05\x82\x3a\x3a\x39\x39\x3a\xb2\xfe\x15\xb3\x99\x1b\xb1\x9c\xfd\x80\x48\x99\xb1\x3c\x5e\x3d\x54\xb6\x1b\xd5\xc7\x9a\x0b\xa5\x1a\xb4\x77\x78\xdf\x35\xb4\xb6\xfd\x85\xc1\x4d\x59\xc0\x29\xd5\xbf\xf8\x16\x48\x60\x5a\xb6\x7e\xc3\xdb\x89\x82\xbd\x15\xe7\x96\x92\x1d\x30\xa8\x10\x96\x6d\x4a\xae\x5b\x0a\x1c\x15\x74\x4d\x55\xb6\x67\xae\x78\x2a\xe1\x82\xa3\x97\xfa\xc7\x93\xac\x6a\x20\x3c\xc3\x3c\xbd\x26\x6b\x56\x6f\x8e\x1d\x19\xf9\x7a\x87\xae\x79\x22\x5e\x6e\x54\x9b\x84\x4c\x01\xc0\x62\xf3\x88\x7a\x83\x9b\x39\x48\x65\x55\xdd\x7a\xd1\xdf\xce\x93\xa0\xec\x4e\x4e\x2e\xa9\xeb\xaf\x89\x86\x87\x95\xa6\x6f\x1d\x35\xea\x5d\x52\xde\xa3\x7b\x5c\x73\x18\xda\x52\xa2\xaa\x90\xd3\x7b\xca\x19\x68\xbb\x8c\x5a\x72\xe4\xc6\x63\x8d\xa8\x1a\x61\xf8\xa0\xd9\x8d\xc0\xc1\x9a\x9a\x5f\xed\x4e\xec\x69\x49\xaf\xc3\x21\xd7\xb6\x25\x0e\xdc\x7e\x6d\xca\x52\xb7\xfc\xd5\x9d\x3f\xa7\x24\x3d\xc2\x2a\xa5\x68\x38\xa0\xd2\x30\x28\x45\xc1\x81\xba\x86\x9f\xce\xf1\x1b\x25\xa4\x0c\xdd\x17\x14\x98\xb6\x71\x69\x9e\xee\x46\x7f\x0a\xb2\xae\x58\x8d\xeb\x0d\xca\x8d\x6d\x61\x93\x90\x5c\xeb\x65\xd7\xee\x5c\x6d\x47\x8d\x26\xa7\xf5\x2e\x99\x1b\x6b\x92\xd3\x26\x88\x4b\xdd\x9d\x93\x4f\xaa\x7c\x9c\x29\x4b\x67\x0b\x58\x68\x22\x0e\x74\x1c\x67\x77\x71\x94\x3e\x37\x79\x5b\xd5\x61\x5f\xbc\x30\xbe\xaa\x35\xc1\xa5\xd3\x7e\x95\x67\x92\xe5\xe4\x28\x66\x61\x34\x84\x74\x9f\x3c\x93\x52\x69\xdc\x1c\x26\x4e\xe2\xa5\x79\xf0\x95\x54\x3b\xde\x29\xa9\xf3\xa8\xe5\xe4\x62\x8b\x85\xc0\xd9\x87\xf4\x77\xf2\xb3\x14\xa7\x09\xb5\xdb\x98\xc0\x05\xc2\x26\x29\x7c\x89\x0a\x96\xe1\xc2\xad\x9e\x2f\x8f\xe2\x8e\x5d\x77\x28\xac\xa1\x5d\xae\x9e\xec\x93\x96\xf1\xca\x80\x53\x70\xed\x23\xa4\x19\x5e\x04\xad\x35\x3a\x39\x54\xcb\x7c\xb7\x62\x37\xaa\xd0\xdd\x67\xba\x6e\xd6\xa8\xe1\xb2\x87\xac\xec\x3e\x13\xa4\xe8\x3a\xf8\x60\x21\xf0\x55\xda\x33\x2d\x15\xc1\xee\x55\x48\xd5\x65\xb7\xf3\x19\x76\x14\xba\x4b\xab\xca\x5d\xb1\x97\x08\xde\x28\x95\xd2\xf4\xce\x28\x4a\x6c\xa9\x3c\x5c\x4e\x71\x08\x6f\x58\x15\x1e\xa8\xea\x56\xf6\xce\x41\x49\x8b\xee\x41\xb0\x95\x1b\x8b\x68\x6f\x29\x47\x4d\x69\xa2\x2a\xb6\xd8\xcc\xf0\xc6\x6d\x38\xa9\x67\xb7\x0d\xcd\xf7\xbe\x65\xa3\x5c\x79\x99\x81\xf8\xf1\xdb\xf3\x2e\x23\x7e\x4b\x17\x35\x41\xe7\x2b\x5c\x96\xa4\xf0\x04\xae\x0e\xb8\x18\xed\xf3\x70\xe1\xd1\x48\xdd\xd1\x98\x2f\x79\xc7\x9a\x25\x7f\x9c\xfc\xb9\x2f\x5d\xd2\xe9\x0f\x55\x66\xb3\x68\x12\x0a\x6c\xb6\x96\x9f\xb7\xe7\xb6\xcc\x7d\xd1\x94\xa8\x6c\xd6\x0b\x12\x3c\x83\x5f\xba\x14\xe4\x73\x48\x0e\xdc\x3d\x87\x4f\x4f\xf9\xa7\x4f\xef\x13\x6a\x96\x0c\xad\xd9\x03\xab\x8b\xfc\x81\xe6\x16\x2f\xeb\xa5\x24\xf9\xea\xf9\x14\x11\x79\x78\xa0\xf9\xd4\x21\x5a\xa4\x2b\x39\x44\xa4\xc6\xe8\x00\x36\x22\x52\xee\xa5\xfa\xec\x2b\x74\x49\x95\x5d\x4f\xfd\x97\x36\xf8\xac\x17\xb4\xc4\xb6\xbc\x4b\xbb\x08\x51\x4c\x62\x79\x36\xac\x89\x93\x13\x71\x8c\x16\x8d\x31\x3a\x31\xb1\x42\x9c\xae\x9b\x42\xe0\x92\xb0\x86\x17\x9b\xe0\xf6\x78\xca\xe9\x8f\xcb\xc2\x82\x7c\x0e\x43\x26\x75\x65\xa2\x7b\xbc\x2b\x1b\x6f\x49\x49\x6a\x9a\xd9\x05\x03\x57\xe5\x56\x11\x68\x9c\xb2\x92\xe4\xa7\x4e\x50\x6a\x84\x2c\x15\xb5\x48\x32\x85\xb1\x90\xa3\xaa\x68\x6e\xe9\xa8\xd5\xfe\x49\x63\x14\xdb\x28\x2b\x08\x92\xa3\x1f\x9d\xb8\x2b\x7f\xff\xba\x0b\x31\xfa\xea\xa8\x27\x4e\x73\x52\x91\x52\x1e\xde\xd2\xdb\x7d\x61\xdd\x59\x4d\xc1\xce\xb3\x6d\x7c\x01\x5f\x3e\xd0\xc6\xe3\x89\x97\x9f\x45\x8d\x25\x13\x5b\x4b\x8d\xd1\x7a\x2b\xe8\x12\xe1\x32\xcc\x74\x1e\x27\x88\xea\x2b\x11\xc5\x8f\x58\x60\x27\x39\x86\x31\x1a\x0c\x0a\x09\x33\xd5\xdc\xd2\x1c\x04\x1b\xb0\x39\x1e\x7c\x09\x30\xbe\xf9\xd9\x7c\xbd\x00\xcd\xf1\x20\xcc\xf0\xb0\x07\x03\x34\xf9\x40\x08\x58\x6f\x34\x87\xb2\x02\xe8\xf9\x47\x64\x3e\x76\x5c\xdc\xb2\x60\xd9\x1d\xb0\x1e\xce\x5b\xfd\x6c\xef\x36\x6f\x7e\xec\x17\xc4\x09\xc4\xbb\x8f\xdd\xde\xcd\xf9\xf2\x04\x95\x0a\xd4\x30\x1f\x90\xc7\xa2\x66\x45\x80\xf9\xe8\x32\xa6\x0b\x22\x8f\x7e\xdd\x94\x81\xfa\x1b\x20\x3d\x07\x0b\xcc\x13\x8b\x74\xf6\x6b\x5c\x73\x22\x74\x34\xa7\x2a\xe3\xb7\x26\x02\xab\x32\xbe\xb3\xbf\xc6\xf3\x26\xcc\xe8\x2d\x95\x25\xab\xdd\x4c\x58\x7b\xad\xf2\x0e\x72\x9a\x13\x43\x3f\x97\xeb\xa2\xea\x10\xef\x2a\xb2\xcd\x57\x3f\x7e\x4c\xa8\x66\x21\x1f\xee\x8d\xdd\x2c\xa8\xb2\x6a\xa9\x0a\xf8\xed\xad\x23\x3c\xf6\xa5\xb7\xb1\x0c\xad\x47\xb6\x65\xdd\x66\xe4\xda\x15\xe5\x07\x17\x95\x3f\xfa\xe9\xfc\xb2\xfb\x5a\xf7\x70\xfc\x74\x7e\xf9\xd5\xc0\xeb\xdc\x66\xa4\x85\x2d\xc8\x29\xbf\x3b\x60\xeb\xb4\xed\x5f\x04\x5b\x67\x6b\x0f\x7c\x2d\x16\xbf\x03\xb0\x4e\x58\x0f\x7e\x26\xc0\x3a\x4f\xba\xb7\x9f\xce\x74\x5b\xe5\x49\x5a\x86\xc5\x93\xf1\x8d\x29\xd7\x17\xad\x27\x85\x96\x52\xf0\x9c\xa8\xf2\xc1\xb1\xcd\xd7\x29\x38\x65\x81\x2f\xd4\xdb\x4f\x39\x9d\x8f\x54\xfd\x2e\xe9\x3e\x1c\x73\xf6\x75\xee\xca\xdb\xd7\xf4\x2f\x31\x61\xbb\x42\x15\xe8\x7d\x37\x59\x65\xa2\xe2\x03\xa9\x46\x4b\xfe\xf6\x14\x25\xfd\x70\xcf\xda\x49\x85\xfc\x81\x71\xaa\xa2\x31\xb0\x50\xe5\x57\x2c\x0e\x6d\x60\x23\x68\x5b\xe7\x09\xba\xb8\xbc\xfe\x70\x79\x7e\x76\x73\x79\xf1\x06\xd9\x2f\x50\x5f\x11\x3e\x41\x37\xac\x35\x8e\x06\x6e\x24\xce\xe9\xab\x63\x04\xdb\xbe\x1d\x1b\xd6\x8b\xcb\xd6\x43\xad\xe1\x74\x4b\x74\x55\x52\xe1\xa2\xc4\xc2\xaa\x5d\x56\xb0\xd2\x44\x56\x49\xaa\xc6\x36\x7b\x4b\xc5\xb1\x56\xe4\x0c\x92\xc2\x8a\x74\xbf\x12\x20\x4a\xd0\xb5\x8e\x4b\x71\x5d\x1f\xbd\xd1\x83\xae\x3b\x36\xae\x03\x8e\x9b\xa3\xfd\x26\x6d\x34\x8d\x96\x3b\x2e\x88\xd4\xc6\x84\x46\x24\x41\xbf\xc2\x0f\x92\x92\xf0\xe8\xe4\xc8\x2a\x5f\x85\xab\xd4\x64\x83\x97\xed\x07\x83\x64\x6d\x58\xb3\x7c\xb1\xbb\xcf\x4e\x10\xfa\x45\x5e\xf5\x1f\x28\x27\xc7\x52\x7b\x02\x46\x51\x7b\x5d\x50\xc4\xfd\x98\xd7\xde\x4e\x36\xbf\xf2\x66\x01\xed\xac\x01\x9b\xd7\x60\xd9\x31\x2c\x76\x20\xbb\xb4\xdd\x01\xaf\xe8\x87\x76\x04\x1f\x3f\xfc\xbc\x7b\x07\xf4\xa9\x03\x7f\xfe\x9c\xad\xd7\x54\xa0\x15\xe6\x2b\x57\x67\xa0\x8d\xdf\x70\xa7\x7e\xb7\x7e\xc5\xb9\x62\x3b\x71\x93\x39\xa3\x2e\x6f\x00\xc4\x83\x38\xfa\xc9\x3e\xde\xbb\x3c\xba\x9f\x7d\x54\x88\xd1\xd1\x3b\xb4\x88\xb4\xc0\xb5\xb1\x32\xcf\x6e\x0c\xfb\xa9\x34\x6c\x11\x95\x13\x3c\x98\x97\xf6\x95\xf7\x5e\xe5\x37\x4b\x47\x2b\x3f\x6a\xb8\x39\x11\x98\x16\x61\x4b\x5f\x3b\x97\x82\x55\xac\x60\xb7\x69\x55\xd6\x07\x26\xe3\x1b\x1d\x35\x3f\xc3\x33\x39\xcb\xbb\xdf\x3f\x52\x10\x22\x6c\x12\x80\x9c\x90\x76\x64\x4e\x07\x57\x71\xf7\xfb\xa9\xc8\xff\xe8\x03\xdf\xb3\x52\xd7\x9f\x8d\x98\xfa\xbb\x68\x81\x35\x14\x0f\x6e\x33\xd8\x2b\x52\xaf\x29\x97\x0c\xa7\xab\xed\x05\x29\x8e\x6b\x82\x8f\x37\xc1\xbb\x2a\x81\xee\x64\x8e\xab\x89\xe3\x81\xc0\x51\x56\x28\xb9\x52\x28\x71\x6d\x1b\xc8\x50\x6d\xee\x0e\x23\xac\x6a\x32\x23\x9f\x29\x57\x36\x15\x95\xb7\xc2\x6a\x80\x16\xe0\xa3\xe8\x58\xc3\x99\x35\xb3\xe9\xb7\x8b\x4d\x2f\x4e\xcc\xd3\xa5\x46\xc9\x5a\x93\xa6\x72\xd5\xe3\xa2\xd8\xe8\xe2\xbd\x2a\x27\x5e\x9b\x31\xf0\xad\xea\x38\xab\x8d\x4b\xa1\xaa\xe9\x3d\x2d\x48\x08\xaa\x4d\xac\x68\x79\xcb\xdb\xdc\x7d\x5c\x14\xec\x81\x98\x54\x3d\xb2\x35\x0e\xb9\xc5\xb8\x80\x44\x2a\xaa\xf3\xf1\xfe\x97\x1b\x54\x12\x49\x6e\x45\xf9\xce\x17\x15\xd9\x91\x60\x6c\xf8\x6c\x36\x53\xb6\x9f\x97\xff\x94\x3a\x6f\x5e\xbc\x42\x9f\x88\xf9\xbe\xbc\x00\x48\x8e\x90\x09\xf4\xb0\x62\xea\xb6\xdf\x70\x33\xb6\xf8\x8a\xae\x35\xc0\x2c\x2e\x73\xfb\xf6\xa9\xa4\x20\x95\x4d\x2d\x22\x3b\x74\x54\x4d\x0a\x8e\x5a\xef\xe9\x4e\xfa\xf1\x04\x0e\x6d\x8d\xe1\x4e\x41\xf6\x76\xa4\xf5\xfd\x45\xcc\x2e\x9a\xcf\x63\xc4\x37\xeb\x82\x96\x77\xc7\x88\x0a\xcb\xf2\xe4\x0e\x31\x61\xa5\xe5\x9d\xdd\xbf\x35\xc1\xe3\x1e\x12\x4b\x72\x6f\x3b\x60\x67\xee\x2f\x92\x8c\xc0\x37\x9b\x4a\xc5\x89\x20\xc7\x26\x4c\x08\x8d\x7f\x19\x7f\xf1\x42\x8d\x2e\x72\x9b\xff\xc2\x23\x07\x5c\xcd\x77\xe0\xb9\x94\x43\x2b\xa6\x1d\x5d\xcd\xcf\xe7\x57\x3d\x68\x40\xfd\x5b\xc7\x6d\x31\x31\x38\x17\x10\x9d\x1b\xbc\xe0\x8e\xb9\x2d\xc6\x84\xa9\x1a\xf8\x7e\xf4\xd5\x6c\x85\xab\xb3\x46\xac\x2e\x28\xcf\xd8\x3d\x49\xb8\x44\xd9\xd2\x7a\xc6\x71\x80\xa8\x9d\x4e\x4d\x07\x9d\xff\xf7\xd9\x35\x1c\x2f\x08\x16\x78\x61\x7b\x3b\x27\x3c\xe9\xc6\x35\xdc\x57\x43\xe5\x51\x7a\x7a\x70\xfc\xfc\x21\x1d\x3f\xea\x64\x7d\x2d\xce\x1e\x5a\x52\x41\xb1\x60\xd1\xcc\xd0\xae\x75\xa2\xe1\x82\xad\xcd\x11\xb9\xb2\x24\x94\xcb\x5f\x09\xf3\x0e\xd5\xb0\xf8\xe9\x54\xf4\xa6\x4a\xc6\x67\x9c\xba\x3a\x95\xbd\x20\xd8\x63\x54\x92\x07\xfd\xdd\x88\x54\xb3\xef\xff\x97\x09\x69\x96\xfb\x17\x17\x7f\x7d\xf3\x5f\xe6\xb8\xc8\x3b\xf3\x5f\x9d\x65\xcc\xa4\x7d\x87\x2f\x34\xae\xdc\xa3\xc2\x25\xd9\xdd\xfc\x82\x10\xfd\x0d\xce\x9f\x8c\x89\x51\xcf\xf9\xdf\x1b\x5c\xe8\x39\x7b\xbf\x0f\xfb\x58\x77\xce\xc1\x5d\xb2\xeb\x6f\xe7\xfa\xbd\xb3\x43\x34\x9c\x28\xf9\xa9\x9f\x10\x35\x2e\xb9\x5c\x80\xf0\xb9\xf4\x55\x97\x23\xe3\xf2\x3b\x42\x2f\x45\x56\x01\x6a\x9d\xed\x31\x8d\x41\x77\xda\xcc\xf7\xcf\x2e\x7d\x21\xd4\x87\x3d\xfb\xc0\xd4\x5e\x85\x9b\x87\x3a\x1d\xbe\x56\x2f\xa3\x9f\x29\x17\x3a\xfe\x55\x53\x53\x90\x7a\x34\x5a\x21\x42\xea\x3c\xd7\xaa\xf8\x6d\xf5\x0f\x9c\xe7\xf5\x1b\x2d\x0b\x6d\x49\x9d\x5a\xdd\x18\x99\xa9\x97\x8b\x4b\x50\xe1\xcd\x97\x62\x53\xd1\x4c\x5d\x0f\x6f\xce\xaf\x15\x15\x8e\x7e\xf8\x5e\xd7\xf0\xf8\xcb\x9f\xbf\xff\x36\xb8\xbc\x4f\x9b\x59\x90\x6c\x83\x79\x52\xbf\xda\xce\x2a\x47\x7a\x54\xaa\x52\x7c\xe6\x2d\x4e\xa3\x39\xd1\x7a\xaf\xc9\x05\x74\xbc\x3e\xbc\xaf\xa0\xaa\xd3\x21\xda\xf2\x99\x44\x5b\xda\x6c\x22\xcd\x4f\x76\xe1\x45\x9a\x0d\x5d\xf7\xd8\x10\x8a\xc4\xf2\x4e\x61\x43\x1e\xab\x09\x2b\x68\xe9\x6c\x68\x2f\x37\x59\xfa\xdb\xd8\x98\x67\x52\x42\x8d\xfe\xcd\x5f\x89\xa9\x37\xe1\x12\xea\x82\x79\xdf\x03\xe4\x2e\xd1\xfb\x51\x34\x6e\xe3\x5f\x19\xbf\x0b\xf7\xfd\x2e\xbb\x2a\xdf\xe5\x72\xb4\x54\xc8\x23\x59\xae\xac\x99\x54\xde\xd3\xfd\x44\x15\x39\x29\x9c\xd4\xaa\x88\xe8\x23\x5a\x59\x02\x03\x46\x5f\xc8\xb1\x20\x47\xae\x67\x23\xe6\x03\x48\x77\x29\xc4\x05\xdd\xce\xf7\x37\xd0\x8c\xc6\x05\x69\x9d\x92\xf9\x75\x34\x57\xcf\x5b\x47\x95\x3c\x3f\x3a\x62\xa9\x96\x7c\x4e\x72\x38\xc2\x39\xa4\xb2\x4c\x7f\xd7\x7d\xd1\x9d\xb5\x93\xe9\x6e\x66\xc6\x31\x95\x9f\xb5\x01\x42\x5a\x6b\x3a\x2f\x30\x1d\x2d\x02\xd2\x3b\xd7\x43\xaf\xea\x7f\xce\xb5\x8d\xcf\xe7\x7f\x81\x63\xe5\x25\xe6\x60\x34\x48\xd5\x85\x3f\x60\x73\xe7\x54\x85\x24\xc7\xf7\xf7\xc4\x35\x6d\x27\x63\x66\x97\xb7\xfd\x49\xff\x92\xc9\xee\xec\xc4\x3c\x15\x85\xb4\xe8\xbc\x73\xfb\x4a\x3f\xe9\x71\x64\xba\x62\x0a\xf2\xf6\x54\x22\xcc\x5d\x5d\xd2\xc6\x98\x47\x3c\xec\x86\x47\xe0\xcc\x3b\xcf\x35\x7a\x34\xbe\xfd\x69\x9f\x70\xb4\x17\x36\x6f\x72\x1f\x57\x8f\x38\xab\x70\xbb\x6b\x32\x43\x58\x31\xc1\xca\x09\x99\x0b\xd7\x03\x2f\x76\xbd\xae\xfa\x89\x73\x9d\x75\x53\x84\x6e\xee\x8e\x88\x0e\x20\xf5\x31\xb1\xa3\xd8\xd7\x3b\x1c\xcd\xaf\x3b\x8b\x77\x8f\xd6\x5f\x58\x04\x4a\x9e\x90\xeb\x73\x75\x61\x54\x44\x9b\xcf\xc3\xcd\x76\x41\xed\x7e\xf1\xf6\x45\x70\xdc\x91\x34\x82\xfd\x88\xe4\x7c\x3a\xf4\xac\x5c\xe4\x07\x56\xa7\x64\xf7\x5f\x77\x5e\xe9\x05\x33\x98\xbf\xf5\x13\xe6\xc6\xaf\x13\xcf\xeb\x14\xcd\x95\x17\xd6\x1b\xd2\x90\xfb\xc4\x9e\xad\xb0\x4a\x3b\x70\xec\x40\x47\x2b\x48\x75\xe0\xd8\xe9\xa3\xb5\x5f\x20\xf8\x27\x17\x73\x91\xbc\xf0\xae\x4d\x2e\x38\x92\x3d\xe2\xb7\xa7\x40\x6e\x24\xb0\x97\x5f\xcd\x0b\x26\x6d\x50\xae\x57\xcb\x68\xb0\x3b\x5e\xf1\x18\xaf\x67\x81\x5d\xed\xc0\x64\x41\xbc\x43\x97\xd3\x5f\xb2\x5a\x25\x73\x53\x0d\xc0\xd3\xd6\x74\x35\xd9\xdd\xc7\x06\x61\x65\x8d\xab\x40\x0d\x52\xc9\x3a\xfc\x5a\xfc\x3b\xb0\x89\x29\x50\x13\xef\x62\xf8\x12\x3e\x86\x04\x90\x55\x04\xf0\x25\xb6\x10\x23\xc2\x32\x7c\x0c\x4d\x22\x84\x18\x11\xbb\xf8\xa7\x55\xc3\x8e\x61\x22\xa0\xd4\x3a\xd8\x6d\x95\xeb\x30\x8b\x24\xc1\xe9\xde\xaf\x5f\xc7\x6c\x5c\xf0\xa6\xb1\x18\x12\x36\x9a\x55\x1f\x1e\x39\x7d\xbb\xf9\x4b\xba\x02\xda\x51\xd5\x6b\x62\x4a\x3a\xb8\x93\x8a\x70\xc1\xca\x5b\x08\x8a\x27\xf3\xe3\x27\x48\xee\x02\x13\x36\x55\xc4\x1a\x0e\x2f\x66\x1c\xc5\xbe\x1f\x19\xa4\x5f\xf3\xa2\x85\xaa\x69\x41\xf0\x73\x2c\xc6\xef\xf9\x6d\x6b\x91\x87\xa3\x0f\xa7\x15\x68\x06\x2c\xda\xe0\xb8\x00\x20\xe6\x20\xa2\xee\x72\x0d\x83\x33\x07\xd2\xdc\x82\x10\x1f\x07\x36\x87\x52\x8c\xc1\x9f\x77\x21\xce\x81\x54\xf7\x09\x84\xde\xb6\x04\x48\xf4\x94\xf9\x34\x35\xe9\x21\xe0\xe8\xd0\x8e\xf6\x21\xd4\x91\x18\x83\x49\x07\x52\x0c\x82\xa9\x6f\x01\xa6\x03\x89\xc2\x61\xd5\x13\xea\x73\x4f\x05\x58\x6f\x5b\xc2\xd1\x4d\x06\x5d\x07\x52\x45\x40\x70\xf6\xb6\xa5\x71\x27\xdd\x40\x80\xed\x6d\xdb\x19\xba\xbd\x6d\x89\xd5\xcf\x75\x83\x21\x97\x8c\xf4\x37\x80\x61\x92\x40\x12\x75\xf1\x4e\xc6\xd0\x4c\x92\x28\x06\x91\x4f\xd2\x4f\xaa\x1d\x7b\x1c\x03\x05\x2d\xd2\x68\xc2\xf5\xbf\x24\xb2\x10\x74\x31\xa3\x0f\x26\xd1\x9d\x88\x36\xd6\x6f\x69\x58\x29\xde\xb0\x12\x50\x53\xda\x06\xc3\x4f\x69\x1b\x1c\x5e\x3e\x6d\x4d\x14\x14\xbd\x13\xc7\xe3\x40\xf3\x49\x54\x3b\xa0\xf4\xa3\x90\xf3\x49\x24\xc7\xe0\xe9\xb5\x98\x4e\x01\x9f\xf7\x06\x9f\xce\x9c\xe0\x98\x07\xba\xc5\xa1\xe9\xfd\x67\x81\x00\x38\x28\x0d\x08\xca\x7f\x21\x1c\x42\xd5\x36\x48\x8c\x8e\x6e\x69\x91\x3a\xc0\xd1\x3d\x71\x3c\x8f\x6e\xa9\x51\x3d\x40\xb2\x90\xd8\x1f\xdd\x12\xf7\x23\x04\x36\xbf\x6d\x49\x00\xfa\x50\xf5\xd3\x87\xd9\x87\x41\xe9\xb7\x0d\x66\x75\xeb\x3e\x0d\xda\xef\x00\x90\x54\xef\xe1\xf8\x5d\xd3\xa3\xf7\xc7\xbd\x6d\x6e\xc3\x5b\x6e\x61\x4f\x02\x17\x1d\x2c\x63\xa6\xab\xd7\x31\x58\x4c\x30\x8f\xef\x15\xcc\x1c\x07\xc8\x04\x53\x84\x03\x69\xb6\x6d\x8a\xca\x0e\x07\xd7\x6c\x1b\x10\x66\x33\x4d\x0d\x6e\x21\x39\xc7\x01\x37\x93\x28\x0e\x83\x73\x26\x41\x68\xb5\x6d\xca\xd4\xa2\x09\x70\x9c\x6d\x83\x01\x73\x26\x12\x45\x2d\x90\xe7\x18\x44\x67\x32\xc5\x69\x90\x9e\x6d\x9b\x74\x75\x43\xe9\x30\x9f\x7e\x8f\x61\x80\x9f\xc9\x53\x61\xc3\x4f\xa6\x43\x7f\xb6\x6d\xe2\xb4\xa4\x2a\x8e\x28\x11\x18\xb4\xdf\xc1\x04\xcd\x10\x1d\xae\xdc\x87\x2b\xf7\xe1\xca\xbd\xd5\x92\xc0\x4b\x93\xef\xc7\x20\x18\xd3\x34\xc1\xda\x85\x3c\x1d\x06\x34\x9d\x72\x8f\x1f\x04\x3f\x6d\xa1\x4d\xd3\x36\xfa\xfe\x60\x50\xdb\x96\x04\x88\xda\xb6\x49\xac\x3c\x1d\x24\xb5\x6d\x40\xb8\xd4\xb4\xa3\xe8\xa0\x55\x01\xc0\xa9\x49\x94\x7d\x90\xd5\x10\x84\x6a\x9a\xe2\x35\x00\xb7\xba\x03\x98\x6a\xdb\xa6\x6a\x82\x13\x00\x56\xdb\x06\x83\x5a\x4d\xd6\x57\x7c\x68\xd6\x5d\x40\x57\xdb\x36\x59\x99\x4b\x02\x62\xf5\x5e\x03\x42\xb2\x26\x4f\x8d\x61\x1d\x01\x70\xd6\x64\x92\x09\x60\xae\xde\x4b\x53\x27\x34\x0d\xe0\xb5\x6d\x00\xa8\xd7\xe4\x91\xa7\x40\xc3\xb6\xed\x49\x35\x60\x30\x70\x6c\xbf\x7f\x49\x0a\x70\xba\x59\xf7\xb9\x98\x6a\x13\x88\xeb\xa0\xab\xbd\x98\xc4\x0c\xd4\x87\x82\x01\x00\xed\xbb\x67\x66\x0d\x7b\xd2\xd8\x0b\x93\x82\x2b\xaf\x0a\x40\xaa\xb0\xc0\x0b\x1d\x52\x01\x24\x09\x0e\xbc\x40\x57\x4b\x68\xa8\xc0\x21\xf0\xa2\x17\x78\x31\x37\x00\x36\xde\x6a\xa9\x78\x8a\x94\xbe\x02\xa2\x2e\x74\x3c\x05\x90\x28\x34\xea\x42\x79\xcf\xa0\x06\xcd\x43\xd4\x05\xa0\x1d\xa2\x2e\x0e\x26\xa0\x84\x76\x30\x01\x3d\x73\x13\xd0\x21\xea\xe2\x10\x75\x71\x88\xba\x38\x44\x5d\xec\x35\xea\xc2\x5c\x0e\x58\x8d\x62\xf9\x0e\x6d\x93\x3c\xe3\x59\x45\x5c\x18\xd0\xba\xb3\x2c\x63\x4d\x29\x6e\xd8\x1d\x01\xb8\x55\x41\xd7\xcc\x2d\xba\x80\x81\x9a\x5b\xe9\x23\xdd\x39\x71\x93\x53\x79\xaf\x9b\xb0\xfe\x67\xe6\x55\x7b\xe1\x92\xd2\xab\xcc\x49\xee\x68\x02\xd7\xdf\x9c\x74\x21\xe7\xe3\x04\x9d\xa1\x9a\x64\xb4\xa2\xf2\x1e\xa2\xd2\xf3\xd5\xef\x7a\x83\x58\x5c\x1c\xe8\xad\x46\x70\x52\x2c\x0d\x76\x48\xe9\xe1\xdc\x79\xb7\x24\x23\x52\x76\xe8\xb2\x56\x3b\x98\x05\xaf\xb0\x40\x80\x35\xf9\xa7\xc9\x28\x82\x32\x63\x3d\xfe\x1b\xaf\x37\x1d\xa7\xb7\x9a\x62\x18\x54\xdf\x56\x47\x71\x45\x4d\xad\x8e\xc7\xe0\x21\xe4\x73\x45\x6b\xb5\xd9\xe7\x24\x63\x65\x18\x10\xbd\x6d\x9d\xcd\x74\xd9\xa7\x61\x77\x95\xb1\xae\x83\xef\xdc\x79\x53\x3b\x00\xf4\x7b\x5c\xd0\x9c\x8a\x8d\x0b\x68\x30\x68\x94\x58\x9f\xc0\xb4\x85\x39\xe3\xed\x9a\x23\x5c\x55\x35\xc3\xd9\x8a\x70\x6f\xf4\xc7\x09\xab\x6d\x32\x86\x5d\x46\x95\x46\x81\x55\xca\xb7\xa2\x2c\xb5\xb2\x62\x83\x6a\x26\x30\x58\x6f\x1a\x18\xa2\xbf\xab\xec\x27\x13\x2c\x37\x5a\x45\x12\xf5\x46\x95\xb3\x60\xa6\x3b\xde\x3c\x50\xef\x20\xc0\x6d\x0d\xac\xc8\x6d\xbd\xac\x1f\xbe\x45\x15\xa9\x33\x73\xda\xd5\x35\x8b\xae\x95\xf3\xb0\x80\xbb\x21\xa5\xb8\x59\xfa\xbd\xea\x7c\xe2\xcf\xdf\xa1\x15\x6b\x6a\x7e\x72\x91\x66\x52\x17\x0c\xbd\x56\x6f\x6a\x1b\x83\xbd\xbc\x09\x54\x10\xcc\x05\x7a\xfd\x2d\x5a\xd3\xb2\x91\x6a\x05\x88\xa0\x77\x35\xf8\xfe\xbb\x84\x63\x08\xbf\x14\xc0\xaf\x03\xdb\xa1\x29\xe6\xb4\x55\xba\xce\xbf\xb9\x15\x00\xc0\x98\xdb\xa6\xeb\x72\x69\x1c\x90\x9e\x1f\xd8\x88\xae\xf4\xad\x52\x0a\xf6\x08\x1c\x0b\xae\x7f\x03\xb5\x69\xb0\x6e\x01\x7c\x30\xae\x66\xc7\x13\xa4\x8d\x23\x69\xe4\xef\xd1\x8e\xfc\xd6\xb0\xc5\x46\xc0\x2a\x2b\xfc\x5d\x3f\xdb\x2d\xa9\x60\x7f\xdc\x2a\xd7\x36\x3a\xee\x6d\x98\x9c\xb6\x5a\xdb\xc8\x4b\x10\x5d\xe7\xb6\x66\x4d\x30\x4b\xb3\x33\x16\x65\x49\xb0\x37\x5a\x6b\xa2\xce\x32\xa2\xa1\xc9\x2f\x5a\xf8\xc7\x32\xec\x27\x50\x5f\x8d\x2e\xf1\xbe\xeb\x11\x04\xab\xa5\xd9\x15\xf9\x82\x20\x2c\xd1\x09\x89\x69\xf3\x35\xb9\xa5\x5c\x24\xa1\x67\xe9\x17\xba\x9b\x93\xd3\xf2\x56\x23\x96\xac\x9b\x42\xd0\xaa\x70\xb3\x13\x1c\x84\x23\x66\xa4\xac\x6f\x6e\xc7\x9e\x2d\x17\xeb\x42\x20\xba\x56\x64\xd4\xfd\xf2\xd2\xf5\x81\x94\x42\x03\x64\xd4\x52\x90\x57\xb8\xc6\x6e\xfa\x33\xb6\x5e\x63\xfe\x4a\x5b\xf5\x11\xce\x22\x52\xcc\xd4\xa2\x92\x72\xb5\xc6\x85\x9b\x36\xdf\x15\xbf\xeb\xe6\x14\xa4\xc4\x65\xd0\xff\xd6\x35\x37\xa9\xc7\x11\x7b\x28\x6d\xe5\x70\x0d\xab\xd6\xdd\x95\x08\x90\x33\xf9\x23\xce\xee\x48\x99\x2b\x24\x4d\x3d\x39\xf9\xa6\xc4\x6b\x53\xd8\xd7\xe1\x0a\x92\xbc\x47\x3b\x12\xd8\xab\x6d\xb2\xba\xc4\x80\x2d\x71\xa2\xd5\xb2\x5d\x67\xaa\xe1\x09\x05\xfa\x3e\x72\xa9\xb7\x84\xf9\x0f\xd7\xc1\xa3\x35\xbd\xcf\x08\x44\x97\x95\x1d\xd8\x75\x10\xf7\xc1\x4a\x3b\x5b\xc3\x30\x55\x76\xa8\x77\x2a\x14\x7f\x77\x8e\x44\x55\xcf\x13\x17\x92\xad\x84\xef\x73\xb6\x38\x45\x6f\xa3\x2c\x36\xfb\x40\xe4\x83\x00\xcf\xe9\xa3\x33\xfa\x40\x90\x9d\x46\xe5\x6c\xbd\x80\x55\x20\x39\xfa\xf0\xe3\x45\x97\x87\x7d\xc0\x39\xe3\xe8\xc7\x82\x65\x77\xe8\x82\x28\xa5\xff\x4b\x40\xd2\xd5\x8b\x7c\x3f\xe0\x1e\x07\x10\x8a\x3f\x24\x08\x45\xbd\x08\x4f\xc3\x1f\x09\x82\x62\x8d\x6f\x53\x90\x8f\x56\x04\xd5\xea\x10\xaa\x17\x2d\xd2\xea\xc4\xa3\xf3\xcd\x8a\x3d\xcc\x04\x9b\x35\x9c\xcc\x68\x30\x88\x09\x34\x96\x3b\xb2\x91\x7f\x87\x8f\xe6\x6f\xfa\x85\xce\x45\x50\x30\x65\x9c\x55\xbf\x4b\xcd\xe1\xc3\x8f\x17\x52\x3c\xc1\xaa\x35\x52\x8e\x4e\x89\xc8\x4e\x33\x52\xad\x4e\x4d\x77\x9e\xcd\xf4\xac\x59\x49\x05\xab\x13\x80\x2f\xcf\x50\xc6\x8a\xc2\xd4\xa7\x61\x4b\x74\x4e\xaa\x95\x23\xb3\x37\x68\xc7\x89\x63\x7e\x5a\x68\x82\x8a\x31\x78\x19\x76\xef\x98\xc8\xf7\xcc\x29\xf1\x36\x49\xbd\xc8\x93\xab\xa3\x7e\x89\x2d\xf3\x07\x44\x3a\x7f\x94\x69\xda\x3f\xb2\xc3\xd1\xdc\xbe\xa2\x2e\xd6\x9e\xf7\xaf\x0b\xd6\x60\x48\x87\xef\x99\x1e\x9b\x42\x57\x4b\x7d\x1d\xc8\x49\x8e\xd8\x3d\xa9\x6b\x9a\x13\x8e\x1c\x2f\x6a\x37\x61\x90\x64\x49\x8b\xa7\x98\xdd\x03\xde\xc4\xb3\xc1\x9b\x48\xba\xb0\x79\x0c\x4e\xbe\xb7\xcd\xe0\x70\xbe\xa6\xe5\x1f\x80\xc5\x01\x50\x23\xa4\x9e\x33\xfa\x57\x2b\x0c\xa7\x5e\x85\x78\x86\x0b\x72\xf5\x0b\xe8\x3a\x34\xd7\xcf\x76\x6f\x44\xf6\x47\xaf\xf6\x71\xc4\xd6\x35\x56\x15\xf9\x6f\xee\x20\xa0\x92\xe5\xe3\x16\xfe\x43\x45\x64\x6f\x9f\xeb\x82\xae\xbb\x8a\xd9\x5b\x2c\xc8\x03\x86\x4b\xd9\x1b\x3b\xa4\x2e\x76\x81\xdb\x0c\x67\xd7\x57\xe8\x27\x4d\x73\xf7\x72\xcc\x35\x13\x5a\x03\xbc\x60\x6b\x4c\x13\x20\xd3\xbc\x82\xf3\x7e\xe7\xae\x1d\x41\xa4\x29\x4a\xf9\x15\x5e\x53\x57\x2d\xb0\x91\xb7\x3e\x73\x1b\x3b\x54\xbe\xf5\x86\xba\x7f\x05\xa5\xd5\x4f\x3c\xf3\x95\x0d\xed\x6e\x11\xa9\xcc\xaa\x46\x4d\x71\x6d\xc0\x00\xe2\xa4\xe4\x54\xf9\xda\xbc\x90\x11\x03\x43\xac\x11\xad\x75\x5c\xb6\x56\x62\xc2\x27\xf3\x67\x76\x4b\x4b\x7b\xb2\x99\x71\x26\x2f\x31\x0d\xd6\xb5\x3b\x68\x1d\xcf\x46\xeb\xe0\xbc\xb8\x2c\xf1\xa2\x08\x3b\x26\xbb\xc2\xa2\xc0\xca\x2f\x4f\xd4\x7b\xa7\x39\xe5\xf2\xff\xd1\x7c\xfe\xb3\x72\x18\x34\xa5\xd5\x9c\xa3\x45\x53\x0d\x8b\x74\x79\x67\xfa\x50\xef\x7e\xd6\x34\x7f\x4a\xaa\x50\x7c\x55\xe6\xb2\xdb\x84\x77\x22\xcb\x0c\x25\x5d\x84\x19\xe2\xc3\x32\x71\x38\x0b\x82\x6e\x56\x34\xbb\xbb\xf6\xfc\x02\xac\x96\xbf\x95\xde\x4f\x4e\x90\x85\x35\x34\xbe\xf5\xde\xae\x8c\xd7\x0c\xeb\x3a\xe5\x4a\x7d\xe3\x49\x90\xb9\x99\x16\x49\x00\x61\xce\x59\x46\x5b\xa7\x51\x14\xca\xbc\x15\x3f\xb9\x12\x3f\xbb\x0f\x47\x69\x13\x93\xe5\xa2\x5d\x64\x8b\xd9\xcf\x3d\x59\x17\xbb\x20\x9b\x19\xd9\x79\x08\x7a\x6b\x25\xa1\xcb\xdc\x74\xf0\x64\xac\xd7\x46\xfb\x36\x9c\xff\x02\xe0\xd9\xb2\x8b\x6a\xf5\x3f\x03\xf8\xb5\xbd\xac\x0e\x57\xc6\xb8\xf9\x1f\xdd\x0b\x62\xb4\xb2\xd1\xbf\x3b\x99\x3a\xfe\x44\x48\x5f\x05\xdc\x0d\xe4\x64\x87\xaa\xb0\x44\x87\x19\xce\x17\x1c\x32\x48\xf4\x7c\xc6\xfa\x37\xe3\x39\x51\xbc\xa5\x62\x55\x53\x84\xe2\xb3\xb6\x10\x80\x76\x30\xb4\xeb\xef\xef\xe2\x61\x99\x52\x2e\x3e\x90\x09\xb3\x55\x39\x3e\xe6\x0e\xb1\x55\xe5\x61\x95\xe3\x21\xc1\x5a\x82\xa1\x6f\xbf\xff\xee\xbb\xa1\x3a\xf3\xe3\xb5\xe4\xe3\x5e\x9b\xe1\x3a\xf3\xe3\xb5\xe4\x83\x14\x43\x75\xe6\x43\x59\x2c\x41\xa2\xc1\x3a\xf3\xd1\xac\x95\xfd\x16\x93\x8f\x1a\x9f\x53\x93\x55\x21\xac\x12\x9a\xa2\x0a\x4f\xdb\x8c\x24\xa6\x86\x52\x4e\x63\x4a\x43\x27\x1d\x75\x7f\x89\xa6\x09\xe9\xa5\x7e\xe2\x68\x44\x25\x88\x27\x95\x6e\xa7\x8b\x46\xaf\xac\x63\xa9\xa4\x91\x24\x51\xc0\xc1\x72\x09\xa4\xfb\x29\xc8\x3d\xb5\x0c\x77\x2a\xd8\x41\x3c\xf9\x13\x98\xd4\x09\x0f\xf7\x07\x25\x70\xee\x9c\xb6\x99\x10\x89\x09\x4b\xd1\x4c\x11\x47\x6d\xb2\x65\x94\x2c\x1a\x4b\xc7\x0c\xa7\x58\x02\xe8\x7a\x7b\x1c\x92\x58\x09\xa0\x98\x0c\x62\x02\xa0\x09\x4c\xa2\xec\x88\x18\xc8\xa4\x26\xa6\x4e\xa6\x25\x4c\xa6\x44\x44\xc3\xa2\xa1\xe1\x29\x91\x26\x28\x0b\xb8\x01\xc2\x89\x90\xdd\xe4\x46\x00\xc9\xb1\xf4\xc7\xd1\x94\x46\x60\x37\x93\x92\x1e\xc1\x47\x1b\x16\x60\x1d\x4f\x6b\x04\x84\x5f\xef\x2d\xa2\x1a\x96\x0a\x97\x96\x00\xd7\x56\x13\x0e\xeb\x9c\x90\xbc\xb7\x14\xdb\x66\x1a\x34\xaa\x6f\xa8\x33\x97\x1c\xbb\xd3\x74\x5c\x98\xab\x6c\x1a\xd3\xc5\x9b\x11\x3f\xf4\xfe\xae\x39\x08\xb6\x0d\xe3\xf7\x49\xfd\x55\x06\x43\x22\x37\x46\x96\x5f\xe6\x3d\x7f\x93\xfb\x79\x22\x6c\xe0\xc1\xcd\x34\xda\xbe\x30\xf0\xe6\xc1\x1f\x12\x1a\x6c\xeb\x0f\xe1\x9d\x5a\x68\xd6\x44\xa2\xf5\xb1\x25\xab\x11\x5b\x40\x2a\x52\x2b\xc6\xe9\x0e\xd3\xd9\xf5\x15\xca\x6a\xa2\x52\x1d\x71\xc1\x4f\xd0\x40\xa1\x8b\x1c\x60\xad\x55\x5a\x5d\x7b\xa7\xc2\x42\x90\x75\x25\xc2\x9b\xe3\xe0\x0e\x79\x36\xee\x90\x09\x76\xd8\x5f\xdd\x2b\x0e\xdf\xbe\x59\xe3\x72\x26\x4f\xa2\x72\x8c\x78\xb6\xe6\xb0\x21\xb6\xc7\xd9\x4f\x90\x0d\x68\x57\x93\xab\x4c\x4a\x2a\x17\x46\x63\x61\x42\xca\xf5\x60\x08\xe8\x7a\xb2\x89\x5a\xd1\x9b\x30\x3f\xba\x50\x79\xef\xf4\x66\xac\x02\xcd\x8e\x91\x76\xe6\x9a\xea\xe6\xca\x1e\x54\xaf\x12\xba\x6f\x3b\x88\x71\x00\xad\x72\x5c\xab\xb4\xaf\x96\x42\xf7\xd6\xa4\xaf\x4d\xb8\x28\xd8\x03\x8f\x76\xd3\x97\xae\x72\xdd\xe5\xf8\x4c\x1e\xeb\x82\xa0\x35\xad\x6b\x56\x1b\x93\xba\x3f\x8c\x20\x4d\xc9\xd3\x84\xbc\xb5\x91\x5a\x5f\x43\x6a\xe3\xb1\x9d\x13\xe1\x6f\x3f\x79\x99\x2f\x75\x86\x42\x2c\x33\xca\x06\xa6\x69\x70\x06\xe3\x7d\x5b\x90\x15\xbe\xa7\xac\xa9\x35\x65\xc1\xd0\x0b\xf3\x27\x25\xea\x36\x2c\x5c\xa6\xd4\x9a\x3c\x35\x0e\xbd\x9b\x4d\x3e\xb0\x66\x6e\x37\x44\x2c\xad\xf2\x82\x99\x33\x6b\xf7\x99\x91\xcf\x94\x8b\x2d\x72\x6e\xb9\x6c\xd9\xdf\x47\x56\xe3\xee\x79\x25\xe5\x69\x02\x0a\xf4\xaf\xfe\x1b\x5d\x75\xee\x7e\xae\xfe\xf4\x47\xc5\x80\x3e\x28\x74\x20\x3f\x6b\x41\xb3\x4d\x02\xea\x71\xeb\x5f\x95\x2f\xa2\x1f\x31\x27\x39\x7a\x87\x4b\x7c\xab\xef\xdf\x2f\xe7\xd7\x3f\xbe\x7b\x25\x17\x34\x5a\x36\xe9\xea\x62\xc8\x41\x6b\xbf\xa0\x3f\xf0\x7e\xf7\x94\xa6\xde\x58\x93\x04\xe8\x1e\x47\xbb\x87\xe4\x2c\x2b\x69\x62\xe0\x0b\xdb\xd9\xec\x7d\x1c\xfc\xde\xd1\xbe\x5f\xe7\x8f\x8e\x6e\xdf\x76\x7d\x1a\x73\x0b\xfe\x99\x0b\xcc\x57\x1f\x88\x5c\x68\x32\x27\x7c\x0c\xf8\x63\x58\x03\x55\x2f\xa3\xba\xf3\xb6\xbc\x55\x70\x6c\xf5\x1b\x25\x79\xd9\xb0\x2f\x57\xb2\xb9\x7c\x61\x3a\x76\x22\x55\xd9\x56\x75\xbd\xa5\x62\xd5\x2c\x4e\x32\xb6\x3e\x55\x1f\x21\xb9\xfe\xff\xd3\x45\xc1\x16\xa7\xdf\xfe\x27\x5e\xfe\x7b\xfe\x97\xd7\xff\xb9\x58\xfc\xfb\x82\xfc\xf0\xc3\x7f\xbe\xfe\xe1\xfb\xff\xfc\xfe\xdf\xf1\x72\xf1\xed\x77\xdf\x7e\xf7\xef\xff\xf1\xc3\xeb\xfc\xfb\xe5\x7f\xfe\xf9\xfb\x53\x5c\x51\x6e\x5e\xbc\x7f\xbd\x20\x02\xbf\x3e\x35\xbd\xfd\x07\xd7\xdd\xfd\x87\x82\xf2\x3d\xb9\x65\xdf\xfc\xfc\xe7\x3f\x0f\x29\xa5\x31\x06\x1b\xd2\xdf\x9f\xa7\xde\xbe\x57\x7d\x3d\xb2\xc3\x03\x7b\x6f\xf4\x4f\x26\xfa\xb7\x3f\xa9\x3d\xec\x71\xf5\x8c\x54\x0b\xa5\x3e\x67\xdf\x51\x25\x8e\x16\x98\xcb\x19\xe5\x02\x6f\x97\xe1\x09\xad\x26\xbe\x25\xc3\x59\xc8\xc1\x31\xe2\xfa\x76\x70\x67\xf4\x72\x7e\xea\xdb\x66\xad\xb4\x03\xe3\x68\x23\xa5\xa8\x37\xaa\xc4\x85\x2e\xa9\x92\xb3\xec\x4e\x6a\x82\x6b\x7c\x4b\x8e\x8e\x38\x3a\x7f\x37\x0c\x48\x6f\x07\x4c\x87\xe3\xfa\x4e\xd0\xaf\xb8\xa6\xea\x86\xe2\x05\x18\xfe\xdb\xcb\x5f\xcf\x3e\xfc\xe3\xfd\xd9\xbb\xcb\x57\x83\x44\xa5\x92\x47\x3e\x57\x58\xd5\x5c\x6a\x5c\x36\x9c\xab\x00\x2f\x3b\x44\xca\x7b\x5a\xb3\x72\xdd\xba\xf4\xee\xcd\x97\x06\x49\x66\x0a\x0e\x49\x3b\xd1\x38\x2b\xee\xad\x8f\xd2\xf5\xca\x5a\x06\x69\x59\x35\xc2\x5a\x8f\x8d\xd2\x37\x48\xb1\x29\xb3\x15\x2e\x6f\x2d\xc2\x82\x37\x26\xc4\x37\xa5\xc0\x9f\xad\x83\x81\xf0\x0c\x57\x56\x2e\x62\x94\xb3\x66\xac\x93\xff\xf6\x6f\xc7\x88\x92\x37\xe8\xdf\x3c\x62\x27\xe8\xd2\xbc\xef\x4d\xa0\xf6\x79\x92\x7b\x52\xab\x0f\x98\xa9\x1a\x56\x53\x6a\x72\x8b\xeb\xbc\x30\x01\xc4\xbe\x45\xd7\x4e\x18\x52\x2a\x2f\x47\xac\x96\x6b\x77\x82\xce\xdd\x5c\x35\x55\x3e\xae\xec\xc2\x38\x85\xc0\xfc\x8e\x9f\xd2\x52\x1e\xab\x99\x3c\x0e\x33\x5c\x49\x05\x49\xdd\x2e\x4e\xb5\x75\x78\xa6\x6a\x00\x94\xf9\x0c\x9b\x6d\x39\x73\x4b\x7d\xfa\x4d\xdd\x94\xa5\x64\x2c\xd8\x3d\x45\xcb\x19\x9e\xf1\x15\x19\x29\xf6\x73\x21\x55\xdf\x4c\xf6\xfb\x8d\xb2\xd6\x54\x35\x5b\xcb\x41\x37\xfc\x84\x7c\x56\x9a\x5f\x7d\x22\x4f\xc9\x10\x0b\x09\x38\x3b\x41\x9c\x65\xd8\x0e\x4f\xca\xfb\xf8\x91\xfc\xd9\xc0\xbd\x79\x1b\xdb\xad\x90\x49\x8b\x77\xe6\x6b\x37\x3d\xc3\x2b\xb3\xbd\x80\xde\xa4\x80\xe6\x87\x94\xf7\x89\xd3\xd3\xad\x79\x55\xde\xff\x8a\xeb\xce\x25\xa4\x1c\x1c\x98\xf5\xb4\x8f\x70\x73\xe5\x2b\x3e\x0f\x0f\x36\x7e\xe3\x08\x9b\xb4\x3a\x1d\xf7\x65\xe2\x50\x7f\xfd\x3b\xc7\xf9\x3f\xae\x2e\x2e\xdf\xdf\x5c\xbd\xbd\xba\xfc\x30\xae\x0f\x02\x54\x2e\x65\xce\x03\x76\xf0\x28\xc2\x4f\x3b\xbc\x33\xa0\x09\xb6\x5c\xb5\xaa\x89\xbc\x8f\x73\xeb\xa9\x19\xd9\x80\xd1\x08\x03\xb7\x27\xd5\xf5\x11\x97\xae\x96\xc8\x30\x41\x08\xd3\x36\x84\x27\xb3\xee\x00\x51\x79\x36\xa6\x30\xf0\x00\x49\xcb\xda\xa7\xb0\xf1\x70\x4f\x1d\x83\x4f\x62\xe6\x01\x9a\x8a\xcd\xfb\x86\xfd\x17\x2f\x02\x1e\x6d\xe8\x16\x7e\x5b\xb3\x40\x80\x6c\xf7\x3a\xa6\xa1\x30\x94\xd1\x69\xe4\xa8\x1d\x71\x13\x59\x14\x18\x87\xc7\xe8\x8c\x12\xe2\x6a\x9d\xc8\xdf\xc9\xba\x12\x81\xdc\x18\x98\x49\x3c\xb3\x70\xab\x7f\x23\x9b\x28\x8c\x50\xcf\x99\x60\x71\x83\xee\xc8\x46\x47\xd0\x3a\xec\xd6\x67\x11\xfa\xa2\x61\x45\xf6\x1a\xf9\x02\xab\x8c\xfb\x3c\x2f\x22\x6d\x7b\x84\x5a\xb7\xb0\x3a\xb7\x09\x33\x0d\xaf\x6f\x9b\x84\x28\x0c\x2c\x6f\x3b\xa5\xb4\x2d\xbc\xac\xed\xbe\xc2\x2c\x80\x31\x14\x30\x0c\xd7\x31\x50\xb0\x4e\xac\xa6\xc2\x5f\x35\x16\x46\x8e\xd6\x44\x60\xa9\xf3\x9e\xc8\x8d\x17\xdb\x25\x9d\x87\x95\xa5\xe2\xb8\xfd\xcd\x00\xb8\xb6\x3f\xf8\xf0\xae\x11\xc2\xbc\x22\xd9\x49\xc9\x72\x65\xc0\x3f\xd6\xff\xd9\xad\xd8\x6b\xfe\x20\xb0\x68\xf8\xc9\x8a\x71\x71\x75\x1d\x25\xaa\x1f\xae\x58\x7e\x75\x1d\x89\x86\x82\x73\xb3\x14\xb4\x57\x18\xbe\x6b\x07\xaf\x15\xb0\xaf\x87\x10\x5d\x27\x20\xb4\x26\x9c\xe3\x04\x14\x56\x28\xee\xea\x16\x8e\x2a\x60\xe0\x49\x48\xab\x7b\x8f\x97\x82\xe1\xa7\x02\x8f\x73\x1a\xf2\x1f\x10\xeb\xaf\x8f\xdf\x17\x99\xa3\x20\xba\x5f\x08\xb1\x2f\x42\xd7\x3c\x4c\xaa\x15\x59\x93\x1a\x17\x33\x63\x12\xef\x22\xfd\x1d\xf7\xa1\xfb\x62\xe7\xce\x07\xfb\xdb\xa2\x3d\x15\xf7\x0f\x7e\xee\x13\xb1\xfd\x60\x68\x7e\x1d\x74\x3e\xc0\x09\x98\x88\xdf\x97\x70\xd4\xc1\x18\x7d\x50\x54\xbe\x1e\xca\x1e\x60\x90\x03\x38\x7c\x50\x5c\xbd\x84\x81\xc2\xb1\xf3\x00\x68\x79\x60\xf4\xbb\xbd\x73\x25\x10\xa6\x1d\x90\x29\xe9\x08\xa2\x7d\xdc\x21\xb6\x23\x19\xa1\x81\x8c\x4f\x71\xad\xe8\x86\x5b\xb6\x22\x69\x59\xb3\xf5\x09\x82\x82\xe5\xda\xe0\x75\x9a\x5b\x4a\x77\x24\x58\xe5\x40\xb7\xc3\x45\xe5\xeb\xbe\xa8\x6c\xc5\x20\x03\xc6\xf3\x95\xdc\x52\xe2\xf5\x36\x83\xbd\x99\xa9\x0d\x1f\x30\x6c\x47\xdc\xb5\xc3\x86\xed\xd6\x74\x3c\xf4\xd5\x18\xbb\xb1\xd6\xe6\xb1\xf9\x83\xb0\xab\x31\x77\x97\x6d\xbb\xb9\xbd\x82\xcb\x76\xfe\xee\x62\x92\xfb\x2b\x48\x74\xcc\x94\x0b\x71\x83\x05\x09\x77\xac\xad\x60\x9b\x6a\x90\xe4\x90\xab\x2c\x6e\x55\x0d\x92\x0c\xb9\xcc\xc2\x76\xd5\xc8\x49\x8d\xb9\xce\x86\x2d\xab\xe1\x63\x9b\xe4\x42\x4b\xad\xa3\xf8\xd4\xae\xb4\xe7\x53\x84\x71\xc4\x5b\x66\x5b\xe7\x44\x27\x38\xcd\xc2\xfb\xce\xf9\x98\xa0\xde\x4f\xdd\x52\x93\x23\xc1\x8e\xb1\x88\x98\xf2\xf0\x4c\xa3\x0e\xb2\xf6\x1d\xa8\xf6\x37\x41\x37\x82\x39\xce\xa0\x9a\x1f\xcc\xb5\x66\x5b\x82\x2e\x12\x71\xb5\x0d\x0e\x0d\xe2\x72\x03\x0c\x6c\x80\x93\x87\x5c\x6f\x00\x8a\x7d\xe7\x1c\xcc\x05\x97\x42\xf8\x04\x26\x36\x40\xf7\x4e\x40\x9c\x85\x27\x3c\x20\xba\xef\x9e\xa2\x2e\xba\x6d\xbf\xce\x3b\xdb\x12\x9d\x78\xa0\xed\xd4\x11\x38\x60\x67\x9e\x6d\xa9\x87\x26\xec\xdc\xb3\x2d\xdd\xc9\x07\xda\x8e\xaa\xc0\xc0\x6e\xce\x3e\xdb\xd2\x40\xe4\x92\x9c\x7f\xc3\x93\x30\xd9\x09\x38\xad\xc7\x28\x15\xd0\x78\x57\xe7\xa0\x6d\x13\xe0\x42\xe1\x30\x9a\x5b\x1d\xdd\x17\x94\x26\xfa\x52\x70\x9a\x28\xe9\xf6\x9e\x40\x14\x9e\xd3\xd4\xb6\x09\x6b\x97\x06\xaf\x89\x92\xdc\x90\x09\xa3\x6d\x4d\x01\x93\x90\x36\x51\x32\xda\x26\x4a\x86\xb9\x85\x83\xdc\x26\xa2\xd6\xc2\xdc\x96\xb6\xa5\xbb\x2f\x81\x33\xd8\x75\x72\x82\xdc\x98\xa9\x94\x7d\x67\x27\xd4\x9d\x09\xfc\x46\xd7\xe9\x99\xe2\xd6\xb4\x2d\x9d\x3f\xa7\xb8\x39\x6d\x4b\x75\x77\x26\x9c\x21\xca\xf7\xe5\xf6\xb4\x6d\x02\x3f\x49\x70\x83\xda\x96\xe0\x0e\x4d\x98\x8d\x6e\xd9\xa1\x24\xb7\xa8\x23\x91\x3a\xfc\x54\x86\x02\x73\x97\x76\xbb\x03\x66\x2b\x69\xee\x53\xdb\xd2\xdd\xa8\x50\x41\x53\x16\x9b\x04\x77\x2a\x90\x6a\xd7\xe9\x0a\x75\xab\x02\x89\xf7\x9c\xaf\x31\xf7\x2a\x94\x6b\xfc\xff\xec\xbd\x5b\x93\x1b\x39\x92\x2e\xf8\xbe\xbf\x02\x96\x3d\x76\x52\x32\x4b\x32\x4b\xdd\x3d\xbd\x7d\x6a\x7a\x66\x2d\x5b\x52\xd5\xa4\xb5\x2e\xb9\x4a\x55\xd5\xe9\xb5\x63\x5b\x06\x46\x80\x24\x4e\x06\x81\x68\x00\xc1\x14\x67\x76\xcc\xce\xe3\x3e\xef\xf3\xee\x9f\x9b\x5f\xb2\x06\x77\x20\x2e\x24\x23\x00\x44\x92\x92\xaa\x3a\x62\x1e\xa6\x4b\xc9\xf0\xc0\xc5\xe1\xf0\xcb\xe7\xee\xa3\x82\xb0\xfe\x49\x97\x52\x89\x41\x59\xff\xc4\x07\x67\x13\x0e\xa5\x0f\xe3\x8e\x0d\xd2\xfa\x67\x84\x60\x8a\x0e\xda\xd6\x2f\xc4\x07\x6f\x13\xc5\x92\x0b\xf3\x3e\x25\x88\x5b\x93\x1b\xd3\xdc\x3f\x36\xa8\xeb\x9f\x53\x06\x77\x47\x0f\x3c\x55\xb6\x46\x05\x7d\xbb\xa3\x89\x16\xad\xf1\x41\x60\xff\x24\x05\x83\x23\x17\x31\x25\x64\x5c\xbf\xf3\x05\x8c\xd0\x9e\x50\x72\xc2\xa1\x69\x05\x9d\xc7\x86\x94\xfd\x33\x99\xb7\x93\x79\x3b\xf8\xc4\x07\xaf\x53\x54\xf3\xbf\x4f\xdb\x36\xfa\xc7\xb1\x21\xf8\xde\xe0\x77\xe2\x17\xe3\x9a\x88\xa9\xf8\xe6\xb1\x77\x52\x19\x22\xaa\xcd\x82\xa9\xc6\x51\xea\xe2\xe2\x44\xf3\x9c\x91\x8c\x0e\xc6\x75\x4e\x5b\xf1\xb6\xd6\x2c\xe2\x63\xea\x2f\xe5\xa6\xac\x0c\x23\x1f\x6a\x15\xbd\xd6\xf1\x16\xbb\x66\x2e\x81\x94\x35\xff\x0c\x06\x4e\xa3\x44\x99\xaf\xab\x8e\x51\xd1\x0d\xa4\xf8\xcf\x32\x1c\xe4\xac\x9e\x5f\x2b\x2c\x7a\x8a\xd6\x55\x68\x3f\x04\xe1\xcd\x79\xce\x51\xac\xdc\x25\x5c\xa7\x29\x00\xc3\xbd\x8c\x42\x30\x95\xf0\x1f\x17\x4e\x05\xdd\xd0\x4f\x7c\x53\x6d\x08\x75\x2d\x55\xc3\x3a\xa8\x5b\xbb\x96\x0d\x06\x65\x6a\xbe\xf4\xd6\x90\x54\x39\x61\xad\xaf\xaf\x6c\x87\x3e\x78\x0b\x76\x6f\x8f\xb8\x68\xed\x51\xf0\xf3\x72\x79\x64\x8f\xfc\x21\x84\x10\x5e\xfd\x1d\xae\x89\xdc\x70\x13\xaa\xbf\x4c\x5c\x41\x20\xda\x1c\xdb\x2b\xc2\x4d\xc7\xda\x70\xdc\x05\xc8\x17\x1a\x6c\x35\x47\x30\x02\xea\x2b\xa3\xb4\x0a\x9e\x81\x6e\xf0\xc8\xb5\x2b\x2d\x44\xf8\xa6\xc4\x0a\xa0\xc0\x25\xb3\xd8\x1b\xcf\x05\x89\x7e\x21\x1c\x19\xd7\x36\x85\x65\x95\xe2\x66\x67\x6d\x68\xf6\x29\xfe\x4e\xb9\xbc\x77\x2f\xb6\x8a\xe8\x82\x6b\xd7\x57\xf7\x57\x15\xf6\x4d\x39\x69\xfb\xdc\x12\x2a\xab\x5c\xfb\x41\xc3\x9a\xb1\x4f\xe6\xfa\x04\xdf\x40\xe0\x4b\xdd\x30\x63\x56\xca\xbc\xb5\x25\x07\x5f\x3c\x85\x40\x07\x11\x77\xa7\xf8\x96\x17\x6c\xc5\x5e\xeb\x8c\x16\xc0\x23\x69\xa5\xf1\x6e\x7a\xa8\xc0\xb1\x52\xb2\xd0\x51\x40\x23\x18\x8f\x1d\x39\x34\x4b\xcf\xa8\x20\x2b\xca\x05\xd9\xd8\xb5\x2b\x3d\x71\xa8\x94\x2c\x40\x61\x2c\xa9\x8a\x89\xf3\x3b\x82\xae\x62\xb3\xd5\x11\x49\x0e\xcd\x06\x8a\x5d\x33\x3e\x8e\x26\x88\x90\x3f\x0b\xf6\xf8\xb3\xfd\x5a\xf8\x9c\x2f\x0b\xda\x84\xf4\x35\xf3\x7d\xbb\x5b\xf0\x84\xfa\xd3\x7d\x0b\x14\xfc\x06\xd7\xc4\xa8\x8a\x11\x5a\x3c\xd2\x1d\x2c\xe3\xfe\x37\xb8\xfe\x96\xbc\x78\x0e\xbc\x4e\x35\xa9\xbf\x11\x96\x24\xbf\x7d\x4e\xd6\x54\x93\x97\x37\x77\x3f\xdf\xff\xf5\xfe\xe7\x9b\x57\x6f\x6f\xdf\xc5\x1d\xfb\x18\x3d\x3b\xa3\x25\x5d\xf0\x82\xc7\xdc\x2c\x07\x56\x71\xfb\x65\x10\x97\x79\x7e\x9d\x2b\x59\xe2\xfc\x1d\xbc\x2b\xe2\x42\x77\x6b\xb4\xd7\x6e\xb5\x5d\xa6\x0d\xb6\x6d\xd9\xf9\x60\x90\xee\x4a\x51\xd1\x2a\xab\xd5\x6c\x85\xaa\x04\x74\x5f\x0f\x50\x48\xf1\x31\xd0\x3c\xca\x42\xe9\xac\xe0\x4d\x9e\xb3\x3c\x6d\x4a\x51\x08\xaf\xa3\x1f\x7b\xe9\x3f\xb3\x6b\xd0\x5e\xe4\xee\xfd\xfd\xed\x7f\x4b\x1d\x01\x71\xfc\x95\x60\x66\x45\x9b\xba\x31\xf6\x4c\x3d\x3d\x25\xcb\xe4\x35\xff\xc0\x36\x72\x3b\xad\xfa\xb1\x9f\xc7\xac\x7a\xb4\x82\x5b\xdf\x03\xc1\x63\xd1\xdd\x9e\x4a\xb4\x45\xa6\x68\xd1\x81\x82\xf7\x73\x72\x87\xa2\x3a\x62\xcd\xba\x6f\x37\x42\x06\x71\xcc\x5a\x63\xd5\xdb\x62\x47\xac\x66\xba\xa5\x45\xcc\x1d\x65\x24\x51\x52\xd6\x37\xc8\x5a\x6a\x73\xac\x45\xf4\xc9\xa4\xb3\xbd\x98\xa0\xfa\x70\xd2\x2a\xd6\x6f\x91\x9c\x09\x69\x9c\x16\x0f\xc5\x06\x25\x34\x6a\xce\x48\x9c\x26\xdf\xaa\x2f\xdc\x91\xa0\xda\xa1\xd3\x9b\x96\xa4\x6e\x0d\xee\xfc\x97\x83\xa4\xb1\xbf\x49\xa5\xdd\xe0\x0e\x84\x73\xa3\xdb\xdb\xaf\x2b\x46\xf3\x88\x2c\x47\xec\x45\xa0\x5d\x3f\x12\xfd\xe0\xfb\xb4\x38\x9d\xc2\xd9\x20\xf8\xc5\x7a\xa8\x1f\x63\x4e\xd5\x92\x51\x53\x29\x86\xba\x04\x96\x4f\xc4\x56\x80\x41\x68\x60\x42\x16\x18\xd6\x9f\xfe\x20\xa5\x69\x6a\x4c\x26\x6d\xfc\x4f\xb5\x7b\x8f\xeb\xd6\x92\xae\x29\x46\x3e\x69\x3e\x8b\x5a\x44\x60\xf1\xa6\x84\x65\xa7\xf7\xec\x89\x19\x5c\x55\xe2\x06\xfb\x61\x24\x2b\x1f\xdf\xdf\xbe\x82\xf3\x58\x89\xbd\xd4\x89\x83\xd0\x6e\xbc\xea\xf9\x83\xe5\xc7\x3d\x0e\x74\x05\x32\x99\xc1\xee\x0f\xb4\xd0\x32\xd4\xdb\x87\x80\xb5\x04\x61\x90\x3b\x99\xdf\x77\xed\x26\xac\xde\xeb\xfe\xbc\x90\x66\x4d\xf6\x7e\x10\x56\x36\x44\x7e\x84\xee\x55\xd3\xfd\xa8\x05\x18\xe0\x22\x99\xbc\xa1\x0f\x4c\x93\x52\xb1\x8c\xe5\x4c\x0c\x57\x51\x26\x5d\x97\xdf\x1f\x7e\x1f\xc5\x19\x31\x7d\x45\x80\x33\xde\x49\x61\x8f\x43\x12\x6f\x34\x5d\x2d\xc1\x11\xd0\x95\x2e\xe0\xb8\x46\x1d\x3c\xc2\xc6\x11\x52\xcc\xe0\x30\x54\xbe\xcb\xbd\x55\xf2\x71\xa1\xff\x82\x55\x68\xd1\xb0\x80\x38\xce\x50\x7f\xba\x7a\xfe\x6b\x86\xd9\x3c\x84\x9a\x9a\xd1\xa0\xaf\xa8\xb6\xe2\x05\x5d\x17\x86\xe4\x92\x21\x8a\x54\x55\x61\xdb\x83\x6a\xf2\xc3\xed\x2b\xf2\x0d\x79\x66\xc7\xfa\x1c\xd8\x63\x49\x79\x01\x21\x2a\xe8\x53\xb2\x67\x89\x84\x7d\x6c\x6e\x08\x73\xd7\x44\x0c\x73\xdc\xe0\xe8\x5f\x11\x21\x89\xae\xb2\xb5\x9f\xb3\x6f\x80\x1b\xa4\xb9\x60\xa4\x64\xca\x32\x0b\xb8\xea\x9a\xa3\x14\x38\x2a\xb1\x27\xed\xd8\x51\xea\x3b\x2a\x51\xfb\x14\x3e\x4a\xc9\x47\x25\x51\x30\xfe\x10\x68\x8f\x4f\x8e\xc9\xc5\x1f\xce\x20\x17\xdb\x2a\x0e\x34\x56\xee\xac\x0a\x32\xb4\x47\xc7\x85\x99\xab\x5b\x70\xf8\xef\x94\x15\xce\x23\x35\x35\x7b\xc3\x45\xf5\x09\x9b\x77\xa5\x1b\xf4\xf7\xaf\xe1\x75\x92\xf9\x49\xc1\xa6\x40\x5a\x17\x96\x8d\x8e\x89\xea\xb7\x92\x97\xf6\x7b\x10\x1e\x57\xf5\xa2\xc4\x07\x2d\x0a\x69\xc5\xba\xd5\x64\xa8\xc8\xe5\xe6\x60\xb0\x00\xc1\xa1\xd9\xba\x3d\x00\xcb\x5c\x11\xa4\x63\x98\xaf\xcd\x5c\x41\x92\x91\xcc\xd7\x30\x57\x98\xb5\x4f\xc9\x7c\x29\xae\x8d\x82\x6d\x59\x54\xdc\xb9\x9b\x09\x67\xdf\xb2\x0a\xa3\xdf\x25\x20\x43\x00\x70\xeb\x9a\xa8\x01\x57\xc5\xd9\xbe\xce\x1b\x14\x19\xb4\x73\xef\xa4\x18\xc1\x4a\x16\x51\xd8\x88\xae\xb5\x2a\x0b\x48\xf7\xa0\xf5\x24\x2d\x99\xaf\x76\x8e\x26\x50\xe5\xfe\xe8\x1c\xad\x75\xd4\x9d\x23\xd8\x91\x5f\xeb\x1c\xab\x88\x1b\xf3\x60\x8e\xf6\x9a\xed\xce\x11\xee\xb8\xaf\x73\x8e\xd1\x2e\x98\x47\x2e\x72\xf9\xa8\xc7\x5e\x05\x3f\xe1\xeb\x5e\xee\x64\xbe\x2d\x92\x6e\x5d\x07\x31\x42\xbb\xe3\x35\x38\x76\x1f\xf8\xa0\xd0\x52\xc9\x4d\xd4\xfd\x72\x28\x47\xf7\x9a\x97\xfc\xba\xcc\xab\x14\x59\xbd\xda\x68\xfa\xb2\xee\xe8\x74\x5f\xb2\x2c\xf9\x30\x7c\xff\xf6\xfe\xa6\x4b\x02\x00\xf9\x50\xd5\xdf\xae\x80\xfd\x7b\xd4\x39\xa0\xf9\x86\x63\xc9\xfb\x47\xb6\x58\x4b\xf9\x40\x9e\x1d\x29\x5f\xdf\x84\xd7\x66\x9a\xaf\xf4\xb5\xe3\xda\x99\x9d\x49\x1c\x12\x99\x8b\x82\x8b\x96\x1b\x09\xd2\x98\x9d\xaa\x6b\x07\xdb\x6a\x71\x05\x1b\x17\x45\x54\xd0\x4d\x13\x39\x38\x5c\x12\x80\xc3\x01\x70\x0c\x5d\x4b\x51\x34\x31\x0d\x00\xda\xea\x94\x6b\x3a\xc3\x0b\xd1\x32\x1b\xd7\x88\x2a\x5f\x4b\x21\x1d\x4e\x45\x33\xb5\x65\x2a\x52\xe0\x58\x09\x85\xde\x28\x18\xae\x3b\xb9\x30\xf7\xb6\xdf\xea\xe4\xc2\xf6\x90\xdb\x62\xa1\xd9\x01\x8e\x6b\x37\x96\x0a\x42\xa5\xfc\x33\xb0\xe5\x75\xcb\xc4\x8f\xd8\xb6\x96\x15\x71\x90\xb5\x5f\xd1\x5e\xd5\xf6\xe4\xa8\x2d\x02\xbb\xd2\xbd\x6c\x65\x9e\xbf\x1c\x1a\x3b\x33\x6a\xf6\x03\xb6\xe8\xa1\xad\x99\x72\xd9\x86\x6c\xd2\x84\x26\x37\xcd\x13\x69\x97\xe2\x6d\x13\x29\xaa\x4e\x6b\x9a\x92\xf3\x99\xa7\xf8\x34\xe7\xe5\xe8\x59\x30\xfb\xc7\x21\x8a\x68\x73\x64\xfa\x8e\xc3\x87\x36\xb3\xc6\xc9\xd6\xf3\x9d\x9d\xd3\x41\x68\x82\x3f\xb1\x16\xbe\xda\xf6\xa3\x7c\xbb\x68\x8e\x5b\xf7\x6b\x42\x8d\x0b\xa7\x6c\x98\x51\x3c\xd3\x1e\x57\x63\xf9\x36\x53\x50\x28\xa0\x55\x64\xbf\x77\x0e\x5e\x89\x52\x2e\x46\x0a\xc5\x3c\x96\x15\xac\xab\x62\x05\xa3\x9a\x8d\x6c\x73\x42\x50\x97\xee\x55\x60\xd2\x60\x6e\x11\x7b\xb7\x07\x3c\x84\x8f\x43\xdc\xef\x81\xed\xdc\x69\x29\x29\xf7\x0c\xe8\xab\x26\x85\x21\xfd\x77\x75\x81\xa9\xba\x83\x0a\xd9\x72\x4a\xee\x31\xdf\xd3\xb7\x5d\xc1\xd9\xce\x3f\xcf\xaa\x0f\xf0\x93\x08\x35\x2e\x3c\x04\xf9\xfb\x96\x44\xad\xa9\xce\xfd\xf4\x7c\x1b\x19\x3d\xec\xb1\x69\xba\xd2\x61\x1e\x08\x6f\x25\x77\x74\xd6\x64\x7f\xee\xbd\x14\x4f\xc9\x89\x43\x70\xe8\xee\x72\xc4\x61\xa1\xa3\x36\xb9\xd2\xcd\xab\x73\xfb\xff\xfa\x86\x1f\x03\x9f\x0e\x79\x03\x07\xd9\x62\x10\x51\x7d\x0e\x24\xf5\x17\x40\x50\x1f\x1d\x47\x4c\x9b\x91\x9a\xd8\x98\x4e\x57\xc3\x98\xeb\x73\x8b\xb8\x28\x6c\xb5\xc7\xe5\xf6\x7e\xf7\x2b\xc2\x54\x47\x15\x18\x1c\xc2\x50\x9f\x79\xc5\xa3\xb0\xd2\x69\x6b\x1e\xc2\x48\x1f\x60\xa0\xfb\x05\x66\x00\x1b\x1d\xc2\x3e\xf7\x2f\xd3\x00\x26\xfa\x4b\x63\x9e\x9f\xd4\xe7\x2f\x8c\x6d\x1e\x89\x69\x0e\x25\xc9\x3d\x05\xcb\x0c\xb4\x7b\x34\xc9\xd3\x62\x98\x47\x8b\xd4\xbd\x85\x1d\x23\x58\x53\xb1\xcf\x23\x31\xcf\x0d\xa6\xb9\x97\xfb\x63\xb1\xce\x47\xb0\xcc\xbd\x34\xa3\x30\xce\xc7\x30\xcc\xfd\x67\x34\x0d\xdb\xbc\x87\x5d\xee\x57\x54\xe3\x31\xcd\x49\x98\xe5\x70\x4c\x3c\x06\xa3\x3c\x0e\x9b\xdc\x76\x4e\xf7\x4e\x3c\x01\x93\xbc\x87\x39\xee\x67\xa4\x58\x2c\x72\x54\xcd\xd9\x61\xec\xf1\x78\xcc\x71\x6a\x35\xc9\x48\xb4\x6b\x18\xc7\x7a\xc2\xea\x9d\x21\x94\xf0\x53\xd0\xc1\xbf\xfc\xf5\x09\x2a\x59\x61\x1c\xef\x58\xfc\xee\x50\x15\x9c\x54\xdc\x6e\x0b\x97\x3b\x28\x15\x13\xf1\xba\x61\xc9\x14\xc4\xe7\x8e\xc2\xe5\x3a\x77\x75\xef\x54\x46\xe0\x71\xd1\x41\x34\x64\x9f\x26\xe1\x70\x1b\x9c\x6d\x2f\xc9\x24\xfc\x6d\xc7\x7f\x37\xa4\x7c\x86\x71\xb7\xc1\xb3\x91\x86\xb3\x1d\x81\xaf\x3d\xc0\xcf\x86\x6e\x96\x20\xae\x36\xcc\x88\x61\x1c\xed\x39\xf0\xb3\x23\x70\xb3\xce\x93\xde\xef\x61\x4b\xc7\xcb\x26\xbb\xcf\x4f\xec\x32\x8f\x41\x72\x85\x11\x5c\x31\x78\xd7\x51\x38\xd7\x16\x8e\x75\xe8\xfc\x47\xe1\x5b\x8f\xe2\x57\x87\xce\xeb\x00\xae\x75\x08\xb7\xda\x4b\xf2\x38\x9e\x35\x06\xaf\xda\x4b\x72\x0f\xc7\x7a\x7a\x9c\xea\x08\xd6\x8d\xc0\x85\x9d\x84\x75\x23\x05\xcb\x10\x0e\xf5\x1c\xf8\xd3\x51\xb8\xd3\xe8\x18\x5f\xfc\x96\x8e\x82\x91\x9c\x09\x3e\xf2\x79\xa5\x51\x1c\x8e\x74\x14\x7e\x34\x06\x19\x15\x8f\x1b\x3d\xc4\x85\xf6\x12\x8d\xc5\x8b\xfe\x8a\xcf\x7b\x8c\x39\x19\xc4\x7b\x8e\xc3\x79\x86\xe0\x62\xd1\x98\xb9\x28\xe3\x27\x84\xe7\x1c\x87\xe3\xfc\xbc\x73\x08\xe1\x35\xc7\xe1\x34\x3f\xef\x1c\x42\x78\xcc\x71\x38\xcc\xcf\x39\x87\xa0\x89\x1c\x87\xb3\x1c\x85\xaf\xdc\xc7\x4f\x26\xc9\xcb\x7d\x5c\x65\x1f\x6e\x72\x28\x8e\x1b\x83\xa7\xfc\xd2\xea\x77\x8c\x4c\x4b\xc3\x45\x26\xe3\x21\x1b\xac\xe3\x20\x5b\x9e\x07\x07\x99\x8a\x7f\x44\x6c\xe3\x20\xc9\x68\xdc\xe3\x51\x6c\xd0\x20\xe9\x61\x0c\xdd\x10\x3e\x6e\x90\x6c\x2c\xfe\x27\x4a\x68\xa5\xe3\x1a\x13\xf1\x8c\xed\xed\x19\x9c\x56\x18\xc7\x78\x04\x97\x35\xcc\x2d\x5f\xf9\xda\x47\xe3\x14\x13\xf1\x89\x2d\x3b\x64\x70\x32\x61\x5c\xe2\x71\xcc\x61\xe0\x88\x06\x6c\x95\x48\xb5\x73\xf0\x23\x27\x96\xd2\xe4\x5c\xd8\xc2\x54\x4c\x61\x2c\xc4\x36\x06\x4b\x78\x4a\x5e\x1d\x1f\x6e\xee\xfd\x53\x49\xed\x85\xbb\xcf\xf5\x21\xaf\x8f\x65\xa8\x05\xd5\x20\x61\x90\x02\xac\xa4\x8b\x27\x16\x4c\x1d\xbf\xe6\x85\x34\x44\xef\x44\x06\x8d\x99\xb0\xcf\x91\x26\x1b\x9a\x33\x64\x70\x8e\xaa\xc9\xfe\x22\xf5\x7b\x0c\x4a\x99\x7f\x64\x9b\xb2\xa0\xe6\xe0\xdc\xee\x95\x98\xac\x7f\x07\x0c\x20\x9a\x22\xda\x1d\x28\x00\xd8\x67\xa5\xcc\x11\x9c\x77\x30\x7c\x23\x5d\xfd\xe9\x7a\xfe\x7b\x3f\x19\xd2\x0b\x9a\xb5\x09\x47\xfa\x7f\x92\xea\xa1\x90\xb4\xbd\xa0\x97\x97\xad\x5e\xfa\xc7\xf0\x0e\x2b\x6e\xe6\x0f\x7f\x84\x68\x7b\x26\x37\x9b\x4a\x70\xb3\xbb\x86\xf7\xf9\xa2\x32\x52\xe9\xeb\xdc\x72\xfc\x35\x2d\xf9\x2c\x93\x62\x6b\x65\xbc\x14\x7a\xbe\xc9\x7f\xe3\xe9\x8e\x8a\x94\x37\x7d\x29\xbe\x10\x2a\xe6\xa6\x19\x81\xdb\xdc\x4a\x68\xa3\xaa\xcc\x9e\xba\xbc\x05\xbf\xdc\xd0\x92\x68\x33\x88\x19\x76\xad\xb2\x9a\xea\xdc\x96\xe1\x37\x74\xe7\x65\x24\x80\xd0\x0c\x53\x96\x73\x8c\x94\x05\x36\xd8\x33\x7d\x90\x08\x52\x37\x16\x37\x8a\xb3\x2d\x23\x54\x2d\xb8\x51\x54\xed\x5a\x7b\xf9\x71\xcd\x76\x10\x68\xb2\xa7\xe3\x6f\x15\x53\x3b\x90\x27\x43\xb7\x6a\x03\xb6\x85\x90\x9e\xda\xb2\x1c\x63\xcc\x1b\x99\xf3\xe5\x8e\x8b\x95\x3b\xea\xfa\x80\x55\x8e\x43\x33\xec\xc5\x32\x5b\x55\x3c\x67\xd7\xad\x0d\x3d\x07\xea\xc5\xcf\x3b\x02\xee\x62\xa8\xc8\xa9\xca\x1d\xa5\xe9\x00\xf4\x2d\xd4\x74\x00\x7e\x49\x07\x40\xf7\x58\x82\x7b\xcc\xef\x4c\x74\xbc\x96\x9c\x86\x98\x33\x8d\x50\x58\xb6\xa6\x5b\x2e\x55\xab\x65\xd1\x71\xc5\xe2\xb4\xa7\xc4\x8e\x7c\x46\x45\x3e\xc3\x0e\x41\xa3\x0e\xcb\x72\xc9\xed\x17\xe3\xa2\x4d\x4b\xb2\xe7\x5f\xc0\xb2\xfd\x3a\x5b\xb3\xbc\x2a\x1c\x96\x46\x1b\x45\xb9\xe8\xcd\xdd\x89\x31\xd5\x85\xcc\xd9\x4d\x60\x64\x07\xa3\x7b\x55\x63\x30\xed\xeb\xf5\xcc\xda\xa3\x53\x55\xc1\x74\xb0\xcd\xc7\xe0\x0e\xc6\x4f\x02\x7f\xc7\x96\x4c\x29\x96\xbf\xaa\xac\xf4\xb8\xaf\x87\x72\xbb\x02\xbd\x16\xff\xf9\xf5\x27\x96\x55\xc9\x95\x3c\x3f\xba\x2e\x4b\x79\xe5\xd5\x3b\xf7\x39\x90\x00\xee\x0f\xa0\x3c\x05\xa8\x82\x1e\x65\xd7\xcc\xe9\x93\x9a\x1a\xae\x97\x68\xfe\xd7\xab\xc8\x3e\xd9\x83\xad\x41\xa6\xc5\x19\x3c\xc4\x3b\x11\xbc\xaa\x7f\x45\x16\x15\x44\x00\xad\xf8\xca\xd6\xd2\xea\x6d\x14\x37\x0b\xbe\xbb\xe5\xd2\x2a\x84\xe1\xe1\x4a\xc1\x88\x54\x08\xc0\xf3\xfd\x5d\x9b\xe1\x21\x0e\xa2\x21\xcb\x35\xd9\xc8\x88\x3e\xaf\xf5\x5e\x79\x2b\xdd\x7e\x06\xc4\xaf\xfd\x8f\x15\x64\x33\x68\x43\x74\xb5\x81\x16\x99\x8c\xaf\xd6\x26\xa2\x6d\x18\x9f\xb3\x79\x13\x66\x68\x86\xb5\x61\xcc\x00\xc4\xba\xdd\x31\x0b\x99\x23\x48\xd3\x81\x28\xb0\x6d\xf8\xb3\xfa\x6e\x70\x68\xe8\xab\x1a\x44\xbc\xcf\x75\x41\xc2\xc7\xb6\xfb\x8a\x30\x93\xcd\x9f\x5f\xd5\x05\x9d\x29\xac\xc1\x62\x47\xb8\x61\x56\x4d\x8f\x29\x3b\xb0\x56\xb2\x5a\xe1\x4a\xb2\xc2\x0d\x5c\x2e\x5b\xcc\x81\xed\x61\xf3\xdc\x1e\xd3\x0b\x5c\xdc\x70\xe7\x18\x67\x85\xdb\xe1\xd4\x80\xc9\xdc\x5e\xab\x26\x5b\xd7\xde\x30\xa5\x98\x2e\xa5\x00\xca\xf0\x97\xd7\xcd\xdc\xfe\x29\x62\xe4\x48\xf4\x99\x7e\xde\x30\xc3\x9a\xaf\xd6\x9e\x17\xa8\xf3\x01\x5a\x1e\x6b\x78\x28\x94\x7f\x16\x59\x4c\xb2\x8b\xdb\x13\xd8\x50\xb4\xc5\xa9\x2d\xd9\x66\x98\xda\xf8\x99\x07\xe9\x62\x56\xbe\xbb\x91\x71\x5e\x7c\x83\x68\x70\xc7\xd9\xe4\x1b\xf2\x0c\x58\x97\x9b\x4b\x4d\xc2\x05\x7d\xac\xd0\x9e\xc9\xf2\xf9\x9c\xdc\x10\x51\xd5\xb2\xe8\x69\x83\x14\xb2\x1e\xa3\x1b\x8c\x46\x0f\x09\xf5\x5f\x8b\x38\xd5\x29\x4d\x62\xca\xba\x99\xee\x88\x42\x9f\x37\xc8\x7d\x98\x3e\x26\x15\x4c\xf6\x8a\x50\xad\x65\xc6\x69\x4c\x79\x73\x7c\x6a\x2e\xeb\xb2\x2e\x6e\xcb\xb9\xda\xb3\xee\x1f\x8c\x91\x3d\x46\x6e\x48\xe1\xba\x9f\x77\x97\xa2\x2d\xb0\xa2\x29\xc3\xf5\x61\xe9\x5c\x6a\x9f\x4d\x17\xfd\x6e\x42\xb1\xd6\xa3\xd3\xe8\x1d\x7e\x02\x49\xcc\x1d\x6f\xf1\x83\x15\xfb\xce\xa9\xa8\xd1\x02\xd0\x57\x51\x47\xab\x79\x1e\xd8\xee\xca\x75\xd2\x26\x76\x8f\x69\x4d\x58\xb1\xc2\xb9\x84\x62\x7b\x2e\xd5\x14\x81\x20\x8e\x27\x7e\x85\xc7\x70\x59\xfd\xc5\xb4\x17\x8e\x28\x3e\x18\x0f\x84\xb6\xc0\xce\x05\x96\x48\x91\x34\xfb\xd2\x04\x14\x53\x66\x4f\xc6\x35\xf1\xc1\xc7\x6f\xdd\x93\xd6\xe1\x43\xab\x63\xbf\x5d\x8a\x4b\x8d\x4c\x60\xcf\xef\x9a\xa7\x74\xac\xc5\xc7\x48\xe0\x56\x38\xbe\x8e\x1b\xc8\x8f\xd0\x9c\xca\x0f\x37\xe5\xec\xe2\x63\x6f\xc7\x5b\x71\x45\xde\x49\x63\xff\xdf\x6b\xe8\x10\x7e\x45\x5e\x49\xa6\xdf\x49\x03\xff\x99\xba\xe8\x84\x7c\x6f\xf0\x0c\xbc\x49\x7e\x77\xf4\x86\xe1\x7a\x3c\x69\xbb\x6e\x04\xc2\xb0\xed\xf2\xba\x1e\xf3\xe9\x67\x0e\x9f\xdb\xa5\x8b\xee\x3a\x01\xc0\x35\xb9\x15\x56\x25\x76\xcb\x3c\xe6\x38\xe0\x58\xdc\x10\x7d\x6f\x27\x21\xc5\x0c\x9b\x98\xc7\x54\xde\xdb\x7f\xf6\xc7\xf8\xba\xee\x0f\xdf\xde\xff\x94\x4e\x5b\x0d\xdd\xa3\xc3\x3d\xdd\x50\xbf\x07\xf4\xe0\x9b\x36\x2a\x67\x0c\xf3\xd7\x83\x5b\xd3\x2d\x28\xce\x5c\xac\x8a\x5a\x05\x4e\x9f\x39\xa6\xf8\x7b\x88\x22\x94\x0a\x28\x15\x33\x2c\x07\x8c\xa7\xf0\x70\xae\x74\x8e\x82\x80\x0c\x8e\x17\x40\xda\x65\x41\x33\x96\x93\x1c\x0c\x08\x3b\x70\xa3\xa8\x61\x2b\x1e\x57\x39\xa7\xfd\x6c\x98\x5a\x31\x52\x5a\xfd\x22\x75\x58\xc9\x97\x38\x3e\xa3\x0f\x79\x5a\xed\xf9\xe6\x49\xeb\x4f\x86\x4f\x7c\x97\x32\xff\x7b\xcf\x9e\x09\x2f\x25\xb6\x82\x6c\xbf\x94\xb2\x06\xa0\x3c\x42\x6b\xde\xaf\x4e\x6f\x74\x8d\xfd\x26\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x8f\x3e\x93\xde\xe8\x9f\xcf\xa2\x37\x26\x7e\x04\xfd\x9f\x23\xdc\xb2\x3f\xa1\x3f\xbb\xf1\xc3\xa2\x87\x15\x94\x56\xf0\x49\x47\x0b\xbd\xae\x43\xd6\xaa\x7a\xf7\x4e\x17\xf8\x08\xae\x5e\xec\x78\x4e\x14\x15\xab\x58\x92\x2f\x66\x2f\xbe\xf9\x26\x8e\xbf\x63\xbb\xea\x36\x4f\x7c\xc9\x78\x92\xc4\x8d\xb3\x96\x9f\x3c\xe2\xc7\xb8\x73\xe1\x48\x4b\x3c\x3f\xc4\xb2\x5a\x5f\x1c\xec\x04\xd1\x57\x77\x95\xd6\x01\xb3\x4e\x48\x6e\x64\x80\xb4\xc6\x5c\x6c\x98\x21\xd4\x74\x02\x27\x7c\xc3\xe2\xee\xe7\x52\xe6\x28\xe8\x5d\xc5\x2d\x1f\x09\xce\x89\x14\x2e\x5e\x26\x20\x0b\x7f\x6f\x06\x69\x41\xc7\x06\x0b\xda\x9d\x41\xc6\x28\x76\x4d\x5d\x00\xd0\x35\x1c\x70\x34\x44\xcb\x0d\x23\x98\x1c\xe8\xae\x0d\x3b\x05\xe6\x77\x85\x3c\x63\xf3\xd5\x9c\xe4\x95\x6b\xc6\x1a\x24\x89\x25\xc6\x9e\xe3\x0d\x8c\xd9\xd7\x10\x71\x96\x0a\xfe\x9f\x5d\x16\xa3\x76\x80\x1d\xdc\x32\x61\x2a\x5a\x44\xb4\x43\x62\x5b\x9e\x99\xba\xbe\x0f\xa4\x53\x70\x83\x48\x83\x53\xd6\x6e\xde\x97\x29\x51\xb7\xd8\x9e\x72\xef\xeb\x47\xf5\xd9\xd4\xc6\xd2\x8d\x2d\xfd\xc9\xf0\xe7\xc0\x99\xef\x3f\xc4\x55\x4d\x1d\xdb\x28\xcf\x05\x0e\xa5\x72\x61\xce\xc3\x61\xa7\xf8\x23\x00\x07\xd2\x80\x8e\xec\x54\x3a\x1c\x8c\x51\xf7\x58\x92\x76\xfe\x37\xef\x5e\xb1\x1c\x29\x7d\x94\xa5\x2c\xe4\x6a\xd7\xde\x2b\x4c\xb6\xaa\xcb\x62\xc5\xaa\x7d\x94\xe8\x6a\xe1\xac\x27\xcb\x5f\xef\xf6\x58\x60\x8a\xf8\xc5\x3d\x93\xe7\x26\x81\xe2\xe4\xb9\x99\x3c\x37\x93\xe7\x66\xf0\x99\x3c\x37\x93\xe7\x66\xf2\xdc\x4c\x9e\x9b\xa3\xcf\xdf\xb7\xe7\x66\x8a\xf8\x4d\x7a\xe3\xa4\x37\x26\x3d\x93\xde\x18\x7a\x26\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x27\xbd\x71\xef\xf9\xf5\xe8\x8d\x89\x1f\x89\x27\x1f\xbb\xac\xb3\x43\x07\x7b\x54\xa4\xe9\x14\x8d\x9f\x20\x32\xf3\x84\xa4\xc6\x52\xe6\x03\x39\x8d\x10\x24\x19\x9c\x4b\x26\x67\xae\x48\x1e\x84\x6b\x2c\x39\x17\xaf\xd4\x74\x83\x31\xa1\x2b\xf2\x6f\x52\x30\xcc\xf7\xb2\x62\x42\xcb\x40\xe7\x2d\xe8\x15\x61\x49\x3d\xd3\xcf\x07\x73\x71\xa6\x7c\xc9\x29\x5f\x72\xca\x97\xfc\x5a\xf3\x25\xd7\x54\x63\x91\x15\xd7\x41\xae\x49\x9f\x0c\x52\xec\x42\x22\x5a\x12\xce\x0a\xd7\x7f\x3a\x9a\x3d\x19\xa4\xf9\x65\xb2\x2b\xed\x21\x70\x4c\x6a\x57\xba\xc5\x68\xb8\x1e\xb9\x03\x92\xb0\xfc\xae\x3b\xcb\x88\x9b\x0c\x7d\x12\x30\x19\x0a\xcd\x17\x4a\xa6\x66\xc8\xda\x92\x2c\xb9\xc8\x8f\xcc\x31\x82\xac\x5b\xd9\x88\x93\x9a\x94\x03\xd9\x9d\xde\x88\x40\x6e\x3b\x06\xdd\xb9\xb6\x7e\x49\x19\x91\xe0\x37\xf0\xaa\xc2\x78\x27\x17\x78\x1f\xa0\x86\x06\x91\x5b\x68\x30\xe3\xec\xe6\xba\xab\x51\x8a\x6e\xef\x7b\xe9\x65\x54\xe3\x55\x15\xaf\x28\x8f\xf3\xc1\x8c\x8f\x12\x93\xfd\xc5\xd8\x27\x85\x3e\xaf\x82\x47\x5c\x35\xdd\x47\x2e\xdd\xb2\x1e\x75\x1a\xc2\x75\x96\x48\xb1\x73\x3f\x34\xa1\xfe\x34\x0f\xde\x18\x13\xe4\x28\xb7\x3c\xd9\x99\x48\xe2\x1c\x8a\xe9\x56\x6a\xd8\xa9\x38\xca\x9c\x1e\xef\x58\x24\x4f\x70\x2e\x92\x71\x0e\x46\xb2\xbf\x6d\x76\xf4\x4e\x03\xaa\x7d\x8d\x23\x68\x92\xa6\x98\xdb\x09\xfc\x8d\xe4\x69\xd6\xed\x78\xbf\x23\xd9\x5f\x9e\x9a\x4d\xea\x76\x37\xe9\x4c\x42\x3c\xf3\xed\x39\x2e\x6b\x47\xe4\x28\x8a\xfd\xce\x4b\x2b\x03\x46\x91\x3c\x70\x60\x02\x5f\x3f\xcd\x87\xf9\xc4\x8d\x1c\xe7\x8f\x24\xfb\xdb\xe8\xbc\x68\x58\xce\x2a\xd5\xed\xd1\x3c\x07\x1e\xcd\x7d\x0f\xe5\x28\xaa\x47\xbc\x9a\x1d\xb7\xdf\x28\xa2\x47\x3d\x9b\x27\x19\x6b\x8f\x77\x73\x94\x33\x96\xf4\x39\x64\xdd\x90\x3f\xae\xf9\xc8\xf3\x76\x0e\x17\x1f\x79\x9a\x9b\x8f\x8c\x77\xf5\x91\xa7\x9e\xa3\xb1\x2e\x3f\x32\xd2\xed\x47\x46\xb8\xfe\xc8\x58\xf7\x1f\x19\xeb\x02\x24\xa3\xd7\x05\xd4\xc1\x37\x83\x2d\xc1\x8f\x3f\x69\xc5\xfb\x86\x86\x3c\x82\x13\x0e\x35\x5a\xd7\x58\x1c\xf4\xad\x0d\x2d\xad\x84\xfb\x77\xab\x26\xc1\xa1\xfc\x8f\x54\x5d\x86\x72\xa5\xad\xd9\xe4\xdc\xff\x2d\x4a\xde\x5b\xd7\xfa\x68\x22\x71\x3b\x3a\xae\xf7\x5a\xa6\x51\xe1\x1d\x0c\x76\xe4\xfb\x3a\x7a\xaa\x8e\xf8\xb8\x96\x1a\xf5\xb9\xba\xb8\xef\xc5\x03\xdb\x5d\x5c\x3d\x45\x6e\x5a\x22\xb7\xe2\x02\x15\xcf\x83\x88\x8e\xd7\x6a\x53\x8d\x08\x51\xec\xc8\x05\x50\xba\x38\x82\x0e\x1e\x69\x04\x3c\xc1\x8d\x9e\xf4\x52\xdd\x4b\x7d\x2c\xfc\xa2\x21\x50\x7b\x27\xbd\xfb\xa7\xf9\x53\x4a\xfc\xc0\x6b\xbf\xf7\x87\xba\x2b\x79\xe6\x3d\x4a\x74\x65\x77\xca\x3c\x0f\x97\xdd\x6a\x4d\xb5\x83\x09\x07\xd0\xc8\x86\x51\xa1\xc9\x85\xf7\x63\x5f\xb6\x7a\xcb\x87\x7d\x60\xfe\x49\xbe\x47\x46\xc9\x8c\x74\xd9\x68\x1c\xb4\xfc\x2f\x29\xa6\xc9\x9e\x27\xcb\xf9\xf7\x9b\xa2\x9c\xb5\xf3\x3f\xd6\xe5\x62\x9f\x67\xde\x6f\xf3\xdc\xae\xbf\x90\xa6\x45\x86\x3c\xa3\xc2\xf0\x59\xfd\x8b\x04\xb2\xb5\x37\x07\x5c\x8e\xed\x34\xac\x2e\x07\xa5\xba\x45\xda\x05\xca\x1b\x1e\xbe\x72\x6d\x1a\x46\xad\x00\xd7\xc4\xf7\xb5\xa6\xba\xee\x17\x2b\x85\x77\xc3\xa3\xb8\x1b\xee\xd9\x73\xf8\x38\xb7\x22\x1a\x8b\xb0\x1a\x80\x4e\x69\xf6\x3d\xa1\x42\x9a\x7f\xc0\x76\x94\x4b\xa8\xe3\x0d\x43\x93\xc2\x1d\x67\xfb\x2f\xde\x63\x0e\x2b\x9b\xb4\x02\xb0\x47\xbc\x9e\xfb\x9c\xbc\x86\x63\xd8\x1e\x2c\x87\x6e\x6e\x09\x34\x7d\x5b\xf9\xc4\x43\x94\x70\xf2\xd2\xf4\xad\x59\x7b\x3a\xe7\x08\x64\x8e\x4e\x5d\x7c\x3c\x53\xea\xe2\x9e\x8b\xf7\xef\x2a\x73\x31\xd1\x79\x3f\xa5\x2f\x0e\x3d\x53\xfa\x62\x62\xfa\x62\xd4\xfc\xf1\x66\x88\xce\x63\x0c\xd2\x6c\xf2\x1c\x07\xf3\x18\xc9\x4f\xae\xbb\x7b\x84\xf3\xcb\x6e\xf5\xa6\x2a\x0c\x2f\x1b\x90\x92\xc6\xa1\x16\xe8\xdc\x58\xba\x10\x79\x47\xf2\xc4\x44\x28\x21\xee\xbb\x77\x4c\xe1\x7b\x00\x62\xd2\x70\x83\x5d\x61\x98\x98\x0e\x74\xae\xaa\x29\x42\xfe\xa2\xf7\x8a\x60\xac\x7e\xb0\x35\x24\x3e\x63\x42\x88\xaf\x40\x57\xd0\x4d\x8c\x07\x6e\xcf\x67\x56\x19\x29\x2c\x9b\x59\x65\xc1\xcb\xee\x08\x31\x78\xa8\x53\xa3\xef\x73\xcb\x7c\x20\x77\xc5\xb7\x4c\x34\xca\xce\x33\xfd\x3c\x46\x11\x73\x7e\xe6\x01\x25\xb1\xab\xfa\x45\x45\x22\x87\x94\x43\xb8\xb5\x46\x29\x62\x09\x0a\x98\x53\x72\x22\x88\xee\x29\x5e\x7f\x6a\xdd\xfe\xff\xd2\x0a\x7e\xd7\x0a\x55\x64\x24\xb6\xa5\x72\xc1\xc2\xd6\x4a\x57\xc3\x0a\x8d\x22\x75\xe2\x98\xed\x88\x60\xe5\xf9\x02\x95\x23\x83\x94\x5f\x2c\x85\xb5\x3f\x30\x49\x64\x0a\x3e\x34\x14\x94\x1c\x9b\xdb\x30\xc2\x17\xf1\xd4\xa4\x86\x13\x05\x22\xa7\xac\x86\x9e\x2f\x3e\x29\x4e\x7c\x2c\xe0\x08\x6b\x30\x2a\xf8\xfa\x8b\x4f\x6e\x38\x12\x60\xf4\xc1\xc2\xe4\x05\x39\x1a\x5c\x3c\x08\x14\x8e\x0e\xa6\xea\xe3\x59\x0e\xc1\x86\x7d\xc7\x9e\xa7\x04\x15\xbf\x64\x72\xc3\x61\x20\xb1\x09\x0a\x8e\x0c\x6e\x1e\x04\xe6\xf6\x03\x82\xa3\x0e\x46\x20\xcd\x21\x99\xe6\x91\x31\x7e\xae\x34\x87\x51\x41\xc0\x09\xe3\x3f\x61\xfc\x47\xe7\x86\xa6\x06\xf6\x9e\x1a\xd4\x1b\xb5\xcb\x67\x0c\xe6\x9d\x2d\x90\x77\xe6\x20\x5e\x5c\x00\x8f\x24\x89\x93\x88\xe0\x1d\x84\xe3\x52\x48\x9e\x32\x70\x97\x7c\x2e\x12\x5f\x48\x0d\xd6\x9d\x2d\x50\x77\x9e\x20\xdd\x39\x02\x74\x49\xb2\x3e\xf9\xec\xa7\xc9\xb4\xe4\x80\x5c\x7c\x30\xae\xe5\x67\x89\x9c\x6b\x30\x10\xd7\x0d\xaf\xa5\x88\xec\xa3\x41\xb8\x83\xd0\x5a\x72\x80\xfa\xd0\xef\x73\xdc\xab\x13\xbb\x00\x03\xbe\x9f\x3d\xcf\x4e\x7a\xc0\xf5\x98\xf7\xa7\xeb\xdb\x89\xa4\x79\x24\xe8\x16\x11\x4a\x8b\xf5\xaf\x40\xc0\x2d\x2d\x8c\x96\x74\x46\x52\xe2\x29\x29\xc3\x3f\x79\x88\x24\x3a\xed\x4e\x18\xfe\xd4\xd4\xbb\xf6\x29\x3b\xc8\xbf\x1b\x9c\x0d\x46\x00\xe8\x56\xf2\x9c\x94\x95\x31\x78\xd0\x22\x72\xf0\x06\xa9\xba\xfc\xbc\x29\x07\xef\x30\x07\xaf\xb3\x55\xad\xcc\xac\x20\xcd\x9e\xb0\x50\x7f\x22\x5e\x78\x94\xed\x44\xbd\x98\x44\xbc\x20\xc5\x83\x44\xbd\xc8\x44\xbc\xf0\xe4\xbb\x89\x7a\xe1\x44\xbc\x20\xc5\x83\x44\xbd\x50\x22\x5e\xb4\x64\xda\x67\xcd\xfe\x3d\x0f\xd3\x0c\x66\xeb\x1d\xcd\xc6\x8b\x9b\xfc\x50\xb6\xde\x61\x36\x5e\xdc\xde\xf7\x67\xeb\x05\xb2\xf1\x22\x98\xf5\xab\xe9\x75\x38\x65\xe3\xf9\x5f\x4f\xd9\x78\x64\xca\xc6\x73\xcf\x94\x8d\x17\xfb\x4c\xd9\x78\x53\x36\xde\x94\x8d\x07\xcf\x94\x8d\x37\x65\xe3\xf5\x3c\x53\x36\xde\x94\x8d\x37\x65\xe3\xc5\x3e\x53\x36\xde\x91\x67\xca\xc6\x9b\xb2\xf1\xa6\x6c\xbc\x29\x1b\x6f\xca\xc6\x6b\x9e\x29\x1b\x6f\xca\xc6\x9b\xb2\xf1\xea\x67\xca\xc6\xdb\x7f\xa6\x6c\x3c\x78\xa6\x6c\xbc\xbd\x6c\xbc\x4e\x10\xeb\x97\x9b\x92\xd7\x9e\x46\x2c\xbb\x4c\x79\x79\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x53\x5e\xde\x94\x97\x57\x3f\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x81\x67\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xe1\x67\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xd6\x33\xe5\xe5\x4d\x79\x79\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x9f\x3d\x2f\x2f\xf8\x13\xaa\x56\xbd\x92\xa6\x73\x92\x2f\x6f\xd4\xaa\xc2\x4b\xc6\xb9\x5f\x99\x30\x6a\x07\xae\x7f\xbc\x88\x72\x99\x3d\x30\x45\xf8\x86\xae\xd8\xe5\x80\xf5\xf9\xf2\xed\x2b\xbb\x89\x95\xb6\x67\xc1\xa5\xef\xb8\x4d\x2d\x95\xdc\xf2\x9c\xe5\xd6\xd2\x54\x9c\x2e\x0a\x7b\xbd\x2d\x99\x62\xc2\xde\x00\xff\xf0\xec\xc7\x9b\x0f\x3f\xbf\xbb\x79\xfb\xba\x5f\x5e\xd8\x0b\x90\x7d\x2a\xa9\xc8\x59\x4e\x2a\xed\x4f\xb5\xbb\x69\x99\xba\xbc\xd4\x84\x89\x2d\x57\x52\xd8\xc9\x80\xed\x44\xc9\xd6\x7d\xad\x97\x6c\x46\x85\x0b\xcb\x28\xa6\x65\xb1\x65\x39\xaa\x04\xf5\xe8\xbc\xa4\xe0\xa2\xac\x8c\x87\x7b\x3e\xf2\x01\x0f\xfd\x82\x91\x4a\x64\x6b\x2a\x56\x76\xbe\x76\x01\x5b\xf3\x23\x7a\x27\x0c\xfd\x64\xbf\x0b\x86\x8c\xce\x68\xe9\x23\xa1\xfd\x2e\xa3\x5c\x56\x76\xc9\xfe\xe1\x1f\xae\x08\x67\xdf\x92\x7f\x68\x11\x9c\x93\xd7\x8e\x46\x6b\x41\x31\xdc\xc4\xb6\x03\xe1\xc6\x45\xb3\x9c\x57\x44\xb1\x15\x55\x79\xc1\x34\x04\x38\x1e\xd7\x0c\x92\x22\x51\xad\x71\xdb\xc5\xbc\x4d\xd7\x4b\x51\x48\x33\x27\x2f\xeb\xf5\xc4\x38\x4f\x3e\x27\x6f\x25\x04\x39\x96\xf2\x5b\xb2\x36\xa6\xd4\xdf\x5e\x5f\x3f\x54\x0b\xa6\x04\x33\x4c\xcf\xb9\xbc\xce\x65\xa6\xaf\x0d\xd5\x0f\xfa\x9a\x0b\xcb\xd0\xb3\x9c\x1a\x3a\x83\x4b\x3c\x03\xbf\xc5\x35\xca\xd5\x59\x26\x37\x1b\x2a\xf2\x19\x75\x2c\x3b\xab\xb7\xff\xfa\x37\x4e\xfe\xcc\x68\xfd\x2b\x2e\x66\x74\xa6\xd7\xac\x28\x2e\x7b\x06\x1d\xb8\x8f\x23\xa4\x4b\xe8\x40\x33\xb1\x8d\x3a\x85\x6f\x5c\x37\xf7\x16\x0b\xd7\x6b\x0f\x07\x53\x33\xe3\x59\xb1\x9e\x74\xbf\x8c\x3c\xdc\x86\x71\x2b\xd0\x19\xe3\x6b\xb1\xfd\x91\x76\xfd\x51\xe2\xe8\x80\x89\xfb\xc1\x80\x88\xe3\xf6\xbe\x7b\x19\x9e\x48\x9c\x33\xd2\x5e\xcb\xc3\x52\xbd\x33\x91\x77\x74\xd3\x24\x90\x1e\x19\xff\x9c\xbc\x45\x47\x43\x40\x9a\x53\xf2\xf2\xe7\xdb\x57\xaf\xdf\x7d\xbc\xfd\xee\xf6\xf5\x87\xe1\x1b\x2b\xf2\xa6\x82\x7b\x3f\x61\x2a\x97\x01\x79\xda\x91\x9b\x81\xe9\x34\x52\xb5\x54\x6c\xcb\x65\xd5\xe8\x33\xc7\xd9\x92\x8b\xd0\x75\xd7\xe6\x56\xe7\xdf\xde\x11\xcd\xd4\x96\x67\xc7\x97\x3e\xe8\xa9\xee\x88\xf5\x68\xf1\x1d\x8a\x8a\xee\x0b\xf7\x28\x21\x1e\x20\x7a\x54\xc4\x47\x89\xf2\x00\xe1\xa3\x82\x3e\x42\xa0\x47\x6c\xd6\xa1\xb8\x47\xb1\xfe\x8a\x2d\x69\x55\xa0\x8a\x70\x71\x31\xef\x93\xa7\x8e\x50\x02\xab\x7f\xa7\x64\x20\x29\xb3\xc3\xee\xf7\x98\xf0\xbc\x94\xaa\xf7\xf0\x5e\xba\x18\x4c\x88\x91\x5a\x22\xd2\x29\x2c\xa8\x73\x3b\x8d\x25\xc2\x1b\x1a\x1f\x28\xc9\xa4\x58\xf2\xd5\x5b\x5a\xfe\x85\xed\x3e\xb0\x65\x62\xfc\x1d\x8d\x16\xe7\xfd\x07\xf5\xdd\x4a\x4e\x24\x18\x56\x93\xd3\xc2\x39\xd1\x41\x9c\x83\x74\x63\x84\xfd\x39\xbb\xe0\x0c\xda\x7b\x8c\x94\x3f\x3a\xb8\xcb\xb6\xb8\x77\x67\xc7\xb4\xd5\x92\x48\xfb\x64\x40\x79\xc9\xa4\xc8\x58\x69\xf4\xb5\xdc\x5a\xd9\xc6\x1e\xaf\x1f\xa5\x7a\xb0\xda\x88\x3d\xf5\x33\x54\xd3\xf5\x35\x58\x8f\xd7\xbf\x81\xff\x17\xf9\xd1\x8f\xef\x5f\xbd\xff\x96\xdc\xe4\xb9\x2b\x54\x51\x69\xb6\xac\x0a\x97\x83\x3d\x27\xb4\xe4\x3f\x32\xa5\xb9\x14\x57\xe4\x81\x8b\x3c\xd6\x27\x56\xf1\xfc\x7f\x1b\x3e\xc4\xfe\x49\xdc\x23\x59\xa2\xbb\x73\xc4\x3e\xdd\x83\x2d\xbe\xeb\xa8\x9f\x35\x9f\xc7\xe1\x35\x08\x68\x34\x1a\x78\xd1\xc7\x0a\xdc\x15\x96\x30\xd9\x85\x94\x05\xa3\xa1\xbb\x2d\xcd\x9e\x8c\xb1\xdb\x13\xec\x48\xd8\xff\x74\x49\x72\xd9\x88\x12\xf4\x83\xba\x53\x51\xca\xfc\x5b\xa2\xab\xb2\x94\x2a\x2a\x84\xbf\x61\x86\x5a\x1d\x7d\x6e\x59\xf9\xaa\xfb\x9f\xe0\x1e\x69\xfd\x1b\x38\x2f\xa2\x9c\xb5\xf5\x2b\x20\x99\x31\x60\x79\x05\x2e\x9a\xb9\x90\x39\x7b\x07\xdf\x82\xff\x74\x1a\xc4\x4d\x96\xc9\x4a\x18\xf8\x43\x04\x7d\x6d\xa8\xa9\xf4\x7c\x2d\xb5\xb9\xbd\xbb\xf2\xff\x59\xca\xfc\xf6\x2e\x70\xa3\x91\x64\x39\xda\x1c\xcc\x11\x27\xc1\xbd\xd9\x2e\x00\xb2\xa1\xf0\x3f\xbf\xb3\xbb\x76\x47\x4d\xac\xc3\x86\x6b\xf2\xa8\xb8\x31\x4c\x80\x22\x04\x98\x31\xb9\xbc\xb2\x87\xa2\xb9\xcf\xb7\x2f\x2e\xce\x22\xaf\x97\x7e\xb0\x23\x96\xc0\xbe\xe6\xe7\x8f\xac\x5a\xdf\x2d\x71\x2a\x9d\x7f\x1a\x48\xe4\xcd\xdd\x2d\xd9\xe2\xca\x7e\x61\xe7\xd2\x32\x7a\x17\x13\x44\x82\xc7\x33\x7d\xf7\x64\xd1\x50\xd7\x95\x71\xeb\x5f\x6b\xf0\x31\xfb\x08\xa9\x48\x35\xb6\x8a\x14\x7c\xc3\x5d\xe2\xb0\xab\x52\xa3\xc9\x33\xfc\xc7\x79\x56\x56\x31\xc7\xd6\xfd\x7a\xc3\x36\x52\xed\xae\xfc\x7f\xb2\x72\xcd\x36\x4c\xd1\x62\xa6\x8d\x54\x74\xc5\xae\xea\x0f\xc4\x12\xae\x7f\x8f\xa4\x3b\x83\x3c\xa4\x1f\xe3\xca\xb6\xc6\x56\x56\x29\xab\x60\x14\x3b\x2f\x50\x59\x7e\x72\xe9\x52\xef\xc8\xbb\x91\x2a\x51\x6d\x79\xa3\x52\x55\x73\x2f\x68\xd6\x5b\x59\x54\x9b\x78\x5c\x9c\xbf\xf2\xb1\xd8\x91\xd8\x5a\x4d\x5c\x9f\x45\xb9\xc8\xf9\x96\xeb\x51\x40\xc0\xfb\x3a\xc6\x04\xf1\xbe\xca\x58\x7b\x0f\x91\xfc\xf1\x00\x4b\xfb\xb0\x4f\xa5\xd4\xe0\x6c\xf3\xe8\xc1\xae\x2c\x7d\x11\x17\x08\x4a\x9c\xb8\xff\xda\x98\xad\xf6\xf5\x6b\xbe\x6d\xce\x75\x2d\x4a\xcf\xb0\x4b\x29\x72\xd0\x0f\xe8\x94\x62\x50\xb3\x4c\x31\x73\x2a\x3b\x0b\xa9\x79\xc7\x1b\xc4\xfc\x52\x22\xa3\x5f\x95\x71\x56\x07\x6e\x60\x4a\xcd\x75\xba\x54\x72\x33\x27\xe0\xf2\x8a\x3c\x04\x0b\x06\x3e\x98\x82\xe7\x9e\xda\x03\x8b\x44\x0e\x4d\x26\x5f\xf0\xf9\x3b\x37\xf9\xee\x91\xa3\xa4\xb2\x96\x5c\xe4\xdc\x7e\xe5\xf6\x5e\xd4\x0f\xc3\xa3\x9b\xc1\x71\x0a\x44\x3b\x22\xa2\x8e\xfd\xd1\x0e\x08\x11\xde\x55\x45\x81\x9b\x18\x17\x80\xbc\xdd\x7b\xc9\x61\x28\x6b\xb5\xc2\x21\xd6\x5b\x6e\xcf\xfe\x29\x48\x27\x90\x74\xb7\x30\xa8\x97\xc7\xf6\x07\x95\x46\xff\x61\x59\x15\xae\xf4\xe1\x6e\x08\x0f\x0f\xb1\x3f\x3b\x42\x17\xd8\xf4\x89\x55\x77\x32\xb7\xdc\x0b\x71\xc6\xda\xc6\x00\xe7\xb3\xf6\x32\xb6\x7f\x9c\xde\xc5\x5c\x52\x6d\x69\x1a\x49\xb8\xb0\xca\x4d\x5e\xd1\x02\x06\x06\xe1\xd6\x12\xb1\x4f\x68\x08\x7b\x9f\x67\x7f\x92\x1f\xce\xed\x14\x81\x9e\x37\x32\xa3\xc5\x7b\x60\x84\x0f\xb5\x23\xbd\xc6\x34\x31\x01\xd5\x1c\xad\x1c\xb5\xfa\x13\x97\x43\x27\xc7\x48\x52\x30\x43\x76\xb2\x22\x08\x93\xe8\xba\xe7\x73\xc7\x6f\x84\x0b\xcd\x73\x56\x6f\x59\x20\xd6\x03\x9b\xf9\x99\x83\x46\xc1\x3b\xe5\xf3\xde\x16\xa9\xb7\x44\x84\xfc\x8f\x92\xfb\xa7\x90\x12\x82\x9b\xda\x00\x89\x04\x29\xf8\xf8\xa8\x7d\x97\xd3\x82\xff\x1b\x30\x5e\x63\x08\x69\xb2\x60\x85\x14\x2b\x88\x60\xf5\xa7\x0e\x3a\x2d\x6e\x4e\x6e\x05\x37\xed\xb7\x31\x4c\xc6\xb2\x0a\x80\x3c\x82\x48\x95\x33\x45\x4a\xc5\x25\xd4\xd6\x6d\x7e\xd9\x4b\x7a\xc1\xec\xb7\xb5\xa1\x60\xf1\x41\x9c\x4a\xec\x60\xbc\xad\x10\xd8\x92\xf2\xc2\xe5\x13\x42\xf5\x62\x6d\xff\x66\x39\x7f\xa8\x46\xa6\x91\x64\x4d\xb7\x0c\x5e\x66\x58\x0b\x95\x6b\xb2\xa6\x22\x87\xff\xcc\x32\xa9\x72\x9c\x37\x38\x3f\x15\x83\x41\xdc\xc9\x82\x67\x03\x5a\x99\x55\x0b\x2d\xa3\x81\x60\xa1\x62\x7f\xa4\x10\xf9\x51\x1b\x5a\xb4\xfe\x6d\x13\x88\x8a\x56\x82\xff\xad\x62\x84\x6e\xa4\x95\xab\x45\xeb\x55\x7d\xb8\xe2\x3e\xd9\xd3\x4e\xad\x97\xe2\x1b\xbe\x64\xd9\x2e\x2b\x18\xa1\x99\xf3\x07\x7e\x60\x34\xe7\x82\x69\x6d\x8f\xf9\xc2\x1a\x60\x52\x91\x37\x7c\xcb\x5a\xff\x36\x5c\x36\xd1\x9b\x1d\x1f\xda\x00\x4b\x40\x45\xed\x2f\x02\x14\x6c\xa5\x0f\xe0\x3d\x33\x12\x96\xba\x1a\x08\x6b\x3b\x20\x79\x2b\x4b\x78\xb1\x83\x8a\xa8\x3e\xae\xea\x8b\xc1\x3a\x2f\xc3\x35\xf8\x32\xec\x06\xf4\x92\x84\xac\xd1\xc6\x70\xdb\x95\xac\x86\x9c\x8a\x56\xc0\x76\x43\x3f\xd9\x19\x80\x74\xa2\x26\x50\xc4\xc1\x05\xcf\x5c\xc1\x62\xcc\x3f\xee\xee\xb4\x9e\x93\x37\xce\x71\xa3\x98\x43\x53\xe6\x43\xe7\x8a\xef\x6d\x2e\x84\xf7\x35\xdf\xf0\x82\x5a\xa6\xd7\x6b\x2e\xc5\x21\x0b\x60\xf4\xb6\x97\x68\xe3\x49\x59\xf8\x52\xb3\x90\x0e\xb3\x91\x5b\x7b\xc2\x06\xa1\x26\xbd\x44\x63\x84\xb4\x95\xcd\x85\xa4\xb9\xbe\x2e\x65\xae\xaf\xed\xe4\x1a\xa4\x89\xbe\x1e\x89\x26\xd9\xcb\x45\x73\x08\xea\x16\xca\xa5\xc5\x78\xb0\x8b\xf6\xd2\x7c\xa4\x83\x30\x0a\x23\x89\xaa\x04\xc4\x96\x61\xc9\xad\x6c\x7b\xe2\xb5\x38\x04\x1c\x3b\x32\x91\x58\xf8\x58\xe0\x3a\xf3\xe0\xb2\x34\x10\x59\xd0\x25\x1a\x84\x44\xf4\x40\xc9\x02\x84\xfb\x81\x66\x61\x44\x42\x68\x21\x7a\xe0\x66\xc3\x88\x84\x90\x53\x64\x00\x74\x36\x88\x48\x08\xd0\x1d\x84\x9e\xf5\x21\x12\x02\x34\x83\x00\xb4\x3e\xa0\x59\x80\xee\x57\x0c\x43\xc3\x27\x0a\x1c\x1e\x6d\x9b\xc7\x21\x4d\xdd\x18\x53\xce\xfb\xeb\xfa\x78\x23\xf5\x39\x79\x27\x4d\xa3\x3b\x79\x51\x14\xe2\x48\xbb\x1e\x47\xe1\xa5\xe4\xf5\xbb\x8f\x1f\xfe\x7a\xf7\xfe\xf6\xdd\xc7\x7d\x41\x10\x3a\x3a\x89\x58\xd3\x88\xc2\xa8\x67\x40\x9c\xe2\x33\x0a\x77\x1a\xa0\x19\x0d\x5c\xda\x13\x04\x41\xb2\xd1\xc0\xa5\x18\x1b\xbd\x35\xd6\x58\xe0\x52\x47\x10\x04\x77\x2c\x20\x26\x26\x41\x70\x74\xd9\xfa\x71\xaa\xf8\x8c\x45\xab\x86\xce\x41\x0d\x01\x4d\x95\xe8\x51\xab\x34\x0e\xbf\x1a\xe1\xb6\x07\x02\xd1\x28\x56\xff\x56\xbc\xb3\x3f\xd6\xf1\x3d\x02\xd7\x1a\xe5\x19\x05\x17\x7f\x3c\xba\x15\x9f\x24\xc7\x71\x04\xd2\xf5\xc8\x14\x63\xf0\xae\x51\x13\x3c\x22\xd9\x87\x50\xaf\x51\x34\xdb\xc8\xd8\x78\xec\x6b\x1a\xe9\x48\x7d\x33\x8a\x68\x38\xc9\xa1\x7b\x9d\x44\x11\x4d\x49\x78\x70\x97\x4a\x14\xdd\xa4\xe4\x87\x28\x8a\xe7\xb8\x7e\xf0\x79\x0a\x7a\x16\x9f\xf4\xa3\x14\x46\xd2\xe2\x93\x8e\xa7\x8d\x64\xd0\xa2\x62\xf3\x13\xa0\x6a\xf1\x49\x2d\x42\x92\x8c\xb0\xc5\xe7\x84\x38\xdb\x71\xe3\x26\xe9\x85\x53\x4e\x81\xbc\xc5\x67\x54\x76\x79\x7c\x48\xf6\xc8\x70\x07\x9c\xe8\x09\x24\xc9\x97\x70\xb8\x77\x9f\x78\xf7\x7b\x12\xd9\x58\x57\x7d\xf7\x19\xb5\x8f\x69\x61\x5b\x7c\xe2\xf1\xba\x49\xb3\xc6\x58\xef\xe8\x28\x2e\x3e\x69\xb1\x5c\x7c\x52\x6b\x5a\xa4\xd4\xb3\x48\x4e\xbf\x8f\xc7\xf4\xe2\x73\x16\x64\x2f\x3e\xe7\xc1\xf7\xee\xd1\x3e\x13\xca\x17\x9f\xa7\x61\x7d\xf1\x19\x23\xcb\x53\x71\xbf\xf8\x9c\x09\xfd\x8b\xcf\x69\x31\xc0\xf8\x8c\x92\x38\x89\x78\x60\x7c\x62\x51\xc1\x89\xd7\xc7\x5e\x89\xed\x64\x6c\x30\x3e\x23\x96\x21\x5d\xe4\xc4\xa3\x85\xdb\x83\x4a\x10\x3c\xe9\xc8\x61\x7c\xce\x82\x1f\xc6\xe7\xf4\x28\x62\x7c\xce\x86\x25\xc6\xe7\xf4\x88\x62\x7c\xc6\xe3\x8a\xf1\x19\x23\xc9\x46\x60\x8c\xf1\x89\x47\x1a\x27\x9d\x59\x8f\x4a\x7e\x0a\xde\x18\x9f\x71\x45\x95\x52\xb0\xc7\xee\x95\x48\x04\x72\x9a\xae\x54\xf7\xbd\x1d\xc0\x21\x27\x51\x8c\xc5\x2c\xe3\x33\x6a\xf1\xd2\xf0\xcb\xf8\x9c\x1a\xc5\x3c\x7a\xf8\xe9\x12\x3b\x1a\xd7\xdc\x1e\x53\x82\xc0\x4e\xc3\x38\xe3\x93\x84\x74\x8e\x5e\xd0\xbd\x2a\x48\x5f\xb9\x91\xdc\x83\x80\x4e\x3a\x2d\x2d\xb4\xf4\x53\x70\xd0\xf8\x4c\x06\xf8\x64\x80\x9f\xd6\x00\x47\x0c\xed\x64\x7d\x27\xca\xd4\xa4\x3c\xbb\xb8\x51\x07\xd0\xd6\x89\xdf\x8d\x8e\xe2\x25\x16\x54\xf0\x91\x3c\xaf\x69\x1b\x49\x4a\x59\x56\x05\x35\x3d\xf5\x39\x42\x31\xf8\xfd\x12\x35\x5e\xf8\x36\x51\x95\x1a\xac\xe4\xee\xf1\x4d\x38\x26\x75\x18\x8d\x22\x37\x45\x41\xb8\x40\xe1\x0b\xe4\x7d\xb8\x42\x31\x54\x8e\x03\x24\x29\x46\xff\xb6\x76\x72\x8f\xae\x41\x44\x2b\x5e\xc3\x35\x42\x39\xa1\xa2\x19\x34\x90\xa0\x11\xdc\xe7\xfc\xfe\x5c\x34\x4d\x24\x6a\xf5\xac\x2e\x12\xb9\xdf\x01\x27\xc4\x22\x50\x00\x4e\x1b\xbf\x5c\x30\x4f\x43\x1f\x20\x5e\x95\xb1\x9c\x89\x8c\x41\x01\xe7\x8a\xe9\xc8\x83\xbb\xb0\x96\x09\x79\x2d\xb6\x75\x18\xa6\xc2\xd0\x36\x5e\x93\x47\xbf\x10\x20\xf9\x39\x82\xb7\x96\xb5\x5d\xc0\xa2\x15\xc3\x85\x1b\xdd\xdb\x9b\xc1\xa3\x5e\x57\xbe\xae\x3d\x95\x21\x8e\x4e\x51\x56\xea\x28\x44\xa4\x62\x76\xa0\xa5\x34\xf5\x0e\xba\xf9\x59\x67\x88\x98\xa4\xa8\x11\x67\x49\xae\xfa\x42\xe9\x55\x67\x51\x1d\xd2\xd5\x86\x64\x95\x21\x55\x5d\x48\xa8\xad\x11\x21\x81\x9b\x27\x59\x3d\x48\x55\x0d\x92\xae\xee\x52\xb1\x25\xff\x94\x7c\xd6\x6e\x5a\xf9\x45\x3c\x67\xc2\x58\xd3\x1c\x90\xfe\xa5\x62\x25\x13\x83\x60\xe7\xf6\x03\xf8\x6c\xe8\x5c\x20\xba\x8b\x3a\x6f\x99\x08\x67\xc5\x51\xa0\xe5\x31\x56\xe0\xdc\x1f\xcb\x06\x9d\xa4\xcd\x24\x6d\x4e\x2d\x6d\x1c\xa3\xfd\x62\x45\xcd\x89\x35\x75\x40\xbb\xa6\xc0\x6e\x5f\xb5\x50\xb2\x70\x9a\x92\x53\xcf\x5a\x19\x0c\x98\xd0\x18\x98\xf1\xc7\xa6\x7f\x1c\xd7\x8d\xb8\x34\x12\x4b\xf4\x62\x32\x8b\x22\x05\xdb\xb2\xc2\x69\x3e\x01\x8a\x1b\x2a\xe8\x0a\xeb\xb9\x1b\xe9\xfd\x95\xd6\xfe\xb4\xc7\x4e\xf1\xbc\xa3\x80\x63\xce\x65\xb0\xc4\xa0\xcf\xd5\x80\x57\x95\x2c\x0a\xa6\x34\x29\xf8\x03\x23\xaf\x58\x59\xc8\x9d\x2b\x9f\x2e\x72\x72\x6f\xa8\xb1\x47\xef\x9e\x19\x7d\x9a\x0a\x76\x75\xba\x2b\xe6\x5a\xa5\x6c\x27\x24\xbd\x42\xaa\x27\x29\x31\x51\x8b\xbc\x17\x20\xe7\x6e\x8a\x47\xba\xd3\x57\xe4\x1d\xdb\x32\x15\x92\x09\xb7\xcb\x77\xd2\xdc\xa1\x2a\xdc\xc5\x19\x21\x19\xc2\x97\xe4\x5b\x68\x20\x64\x88\xa1\x2b\x30\x6b\xea\x64\xd5\x00\x6d\xa9\x3a\xe4\x51\x7c\x3d\x72\xcd\xc6\xa6\xde\xe0\x33\x8a\x55\x7f\x03\xdf\xb1\x02\x19\xff\xfb\x24\xdb\x57\xf8\xe4\xb2\x84\x8d\xbb\xc1\x34\x34\xdf\x6c\x8e\xb5\x79\xda\x35\x33\xc4\x8a\xe8\x21\x71\x62\xcd\x2b\x2e\x08\xf6\x10\xc4\xe6\x8c\x0d\xf3\xd7\x23\x43\x03\x55\xfb\x15\x0f\x9b\xc9\x51\xd6\x57\xfc\xe5\x5d\x4a\x6d\xee\xad\x1d\x9c\x5a\x4d\xe8\xce\xbf\x08\x39\x8e\xb4\x28\x58\x4e\xf8\x66\xc3\x72\x6b\xf7\x16\x3b\x42\x97\x26\xa2\x17\xaa\xb5\xd7\x3a\x36\x79\xa6\x18\xf5\xe9\x95\x90\x50\x07\x49\x90\xed\xbc\xca\x08\x9a\x1d\x8a\x86\xa9\x0d\x17\x60\x8c\x63\xb4\xce\x65\x70\x36\x79\x95\x31\xf7\x48\x27\xf3\xb2\x39\xd1\x70\xfb\xb5\x38\x64\x3f\x20\x1a\x41\x7a\x51\xc8\xec\x41\x93\x4a\x18\x5e\xe0\x94\xa5\x7c\x20\x99\xdc\x94\x05\x9c\x9d\x27\xdc\x02\xf5\xff\x9c\xd5\xfc\x36\xb3\xd4\xf5\xf5\x6f\x9a\x3f\xc1\x3f\x9c\xba\x7e\x11\xfb\xc4\xb2\x11\xe5\x22\xac\x84\xb4\x9b\x04\xd1\x61\x29\x6a\xb5\x70\x29\xed\x85\x14\xef\x7b\x6d\x7a\x16\xd4\xc2\x70\x4e\x5e\x7f\x62\x59\xab\x17\x05\x74\x62\xcd\x02\xd9\xed\xed\xc7\x48\x38\xd4\xe7\x6a\x0a\x18\x95\xa9\xd3\x7e\x3a\x2b\xf7\x12\xdf\xf6\xfd\xd5\x1c\x31\x52\x70\xc1\xd2\xc2\x85\x2e\xcf\xa7\x9d\xaf\x5f\xf3\x0a\xfa\xb8\x9c\xe6\x9c\xe2\xd4\xe6\x0a\x9a\x32\xec\x6a\x1c\xaa\x1f\x1f\xf4\x15\x90\xd2\x90\x67\x97\xd7\x97\x29\x6d\xd9\xf7\xdd\x90\x97\x56\x93\x29\x18\x4a\x68\xf4\x49\xba\x6f\xa4\x10\xd5\x44\xf3\x4d\x59\xec\x60\x15\x2e\xf3\x2b\xc2\x8d\x07\xb6\xaa\x4a\xf8\x35\x49\xe9\xfc\x07\xd9\x20\x57\x44\x4b\x62\x14\xf5\xad\x82\xf0\x5f\x2d\x39\xa3\x2a\xbc\x6f\x12\x48\x3e\xbb\xfc\xbf\x2e\xaf\x08\x33\xd9\x73\xf2\x28\xc5\xa5\x81\x0d\x99\x93\x8f\x58\xf9\x82\xfa\x4f\xee\x64\x95\x40\x54\x30\x2c\x53\xc1\x3e\x95\x05\xcf\xb8\x29\x76\x20\xd4\x89\xac\x0c\xa6\x7d\x52\xe3\x52\xba\x12\x88\xbe\xfe\xc4\x8d\x43\x66\xd9\x93\xfc\x0d\x70\x27\x0a\x78\x42\xad\x12\xb7\x65\xd7\x6b\x46\x0b\xb3\x4e\xe9\xa1\x63\xf9\x46\x48\x31\xfb\x37\xa6\x24\x24\x90\x09\x47\xe3\x8c\x6d\x26\x47\xc5\x7f\x52\x5b\x50\x25\x86\x34\xec\x65\xf0\x3d\x1b\xd3\xa8\xfd\x5f\x3f\x7e\xbc\xfb\x9e\x99\x3d\x61\x68\xe9\x79\x30\x4b\xbc\x48\x2c\x99\x5a\x4a\xb5\x39\x97\x54\x5c\x4b\x1d\x39\x43\x72\x30\x4b\xa9\x0d\x16\x40\x40\xd5\x4b\xb0\xcc\xf2\x72\x83\xa3\x48\xd9\x7f\x59\x97\x74\xb8\xbd\x9b\x93\xbf\xca\x0a\x0a\x11\xd0\x45\xb1\x83\x0c\x6e\x97\x12\x95\x40\xf1\xc2\x0e\xef\xc2\xca\x31\xbb\xee\xff\xca\x68\x8e\x69\xf5\xda\x30\x9a\xdc\x03\x2a\x89\x31\x5b\xdf\x1b\x7b\xd9\x54\xda\xc8\x0d\x59\xbb\x41\xa7\xa4\x83\xb5\x1f\xc7\x6b\x73\xe0\x47\xb4\x39\xa1\x69\x1f\x0a\x08\x47\xfd\x73\xf5\x8e\xb5\x63\xc0\x55\x71\xff\xbe\x80\x86\xd8\x19\x4c\x35\x29\xdc\x8a\x03\x77\xcd\xd8\x31\x49\x42\xe0\x14\xb1\x76\x45\x02\xb1\xb1\x9d\x5a\x53\x11\x04\xe4\x98\xe7\xd0\xcd\x03\x1d\x04\x11\xa1\xce\xfd\xe7\x69\xcd\x3a\x4f\x3b\xfc\xe1\x7a\x19\x27\x1d\xff\xb8\x36\x8a\x89\xeb\x3b\x4b\x9e\xd1\x67\x6a\xa2\x58\x26\xa1\x7f\x0f\xb1\xbf\x58\x84\x05\xd2\xb3\x50\xc3\x83\x83\xa3\x99\xda\x86\xd3\x2f\xf7\xc7\x9d\xb4\x75\xa5\x8c\xb1\x81\xfd\x43\xc5\xee\x7d\x34\x32\x0b\xda\x4d\xc1\x88\xb8\x30\x6c\x15\x65\x15\x76\xdf\x7b\x4a\x7f\x48\x74\xaf\x2b\x22\xaa\xcd\x82\xa9\x26\x6d\x40\x99\x34\xc3\xa0\xbb\x2d\xad\xf8\xff\x3b\x24\x1c\xaa\x1d\x74\xf8\x38\x1d\x5e\x51\xb1\x62\xe4\x85\xdd\xfa\x3f\xfc\xe3\x3f\xfe\xee\x1f\xe7\x38\x64\x0f\x55\x89\x46\x9b\xd8\xe7\xf6\xe6\xdd\xcd\xcf\xf7\x3f\xbe\x84\xec\xc1\x78\x7e\xf9\x34\x6b\x2c\xea\x19\x17\x66\x26\xd5\x0c\xd7\xfc\x5b\x62\x54\xf4\x39\x03\x24\x7f\x82\xe4\xea\xfa\xd4\xe1\xe5\x76\x01\x3b\xa7\xb3\xa4\x89\x1f\xa7\xa9\x58\xbd\xa9\xeb\x2f\xb4\x07\xe9\x8c\x27\x28\x4d\xec\xcd\x80\x01\xcf\xa1\x15\x9b\xac\xbc\x97\xd9\xc3\x28\xbd\xf8\xf2\xe3\xcb\x3b\x7c\xb9\xa5\x1a\x53\xe1\xdc\x04\x84\x8b\xad\x2c\xb6\xf1\xdb\x41\xc9\xc7\x97\x77\x30\xd1\x39\xfc\x2f\xf0\xb4\x80\x31\xb9\xb3\x5f\xf0\x20\x6f\x0c\x20\x45\xd2\xac\x8b\x06\x02\x0c\x9f\x16\x5c\x1b\x9e\x01\xf5\xc6\xa5\x68\xbf\x13\x17\x37\xfa\xac\xfa\xf8\xe5\x7b\x1f\x72\x3a\xaa\x9a\x27\xf1\x78\x37\xb9\xa5\xa5\x9a\xc7\x83\xfa\xa6\x3b\xa2\x75\x47\xb8\xbb\x01\x31\xfc\xd3\x1d\x71\xec\x39\xc9\x1d\xf1\x75\x48\xc9\x84\x1f\x97\x8a\xdd\x1b\x59\x26\x47\x07\xf0\xb5\x9e\xd8\xc0\x82\x2d\xe3\xe0\xc8\xb4\xd7\x95\x9f\x57\xcc\x35\x90\xbe\xb9\xbb\x4d\xf0\x5a\xc8\x8e\xbb\x1e\xd1\x81\xba\xca\xd6\xde\x1f\x25\x98\xd6\xd7\xe0\xe4\xaf\x4a\xb4\xd7\x22\x88\x2e\x29\x2f\x2a\xc5\xae\xec\x6a\xb1\x0d\xac\xc1\x55\x93\xc6\x60\xa7\xc0\x04\xfe\x23\x33\xd9\x70\xe9\xc2\xe6\xf1\x91\x0f\xe7\x7f\xf4\xcb\xb8\x17\x60\x20\x99\xa2\x7a\xcd\x06\xfb\x36\x36\x0f\xfb\xc4\x8d\xf6\xcd\xa7\xa9\x96\x02\x1d\xb2\x6e\x59\xe1\x8e\xd3\xad\x9a\xb5\x71\xe6\xbc\x1b\x28\x92\xbd\x93\xf9\xe5\xa5\xee\x90\x5c\x29\x9a\x31\x52\x32\xc5\x65\x4e\x20\xd3\x33\x97\x8f\x31\x07\x76\xc1\x56\x5c\x68\xc7\x2d\x30\x6d\xcf\x56\xf6\x86\xc3\x7e\xbc\xbe\x2c\xd5\x9c\x7c\x88\xad\x3f\x46\x9a\x24\x1b\x59\x99\x4c\x36\x02\xcf\xcd\xe4\x6a\x6f\x89\x23\xeb\x4d\x00\x33\x55\xb4\x28\x76\x0d\xa3\x7a\x2c\xac\x39\xba\x34\x11\x44\xdb\x8b\xf7\x59\xe2\x4d\xf6\x84\x34\x7f\x1b\x3f\x58\xf0\xec\x33\x9a\xad\xe3\x2b\x32\x4d\x21\xac\xd6\x33\x85\xb0\xa6\x10\xd6\x14\xc2\x9a\x42\x58\x7d\xcf\x14\xc2\x9a\x42\x58\x53\x08\x6b\x0a\x61\x4d\x21\xac\xe6\x99\x42\x58\xa7\x19\xff\x14\xc2\x9a\x42\x58\xfb\xcf\x14\xc2\x3a\xf6\xfc\xca\xdc\x93\x53\x08\xeb\xcb\x3b\x67\xa7\x10\xd6\x14\xc2\x8a\x25\x32\xdd\x11\x53\x08\x6b\x0a\x61\x0d\xfe\x38\xf2\x87\x3e\xf6\x73\x67\xed\x9b\x94\x3c\xaf\x3b\xf0\x76\xf3\x0c\x2d\x23\xcb\x77\xed\x2c\x1f\x24\x3a\x6f\x4a\xc8\x07\x26\xd6\xd4\xb8\xf0\x59\x2a\x2e\xe0\x83\xd4\x21\x0b\xe6\x6c\xad\x51\xfa\xda\x23\x95\x32\x6f\xbc\xef\x2d\xb7\x3b\xda\x82\xc3\xe2\x2a\x5e\x3c\xc7\xf9\xdb\xd3\x7c\xed\x71\xa9\x5a\x04\x33\xab\x62\xfc\xec\xf1\x1e\xf4\xd4\x7e\xdf\x09\x9e\xf3\x04\xaf\xb9\xf7\x85\xc7\x5e\xcd\x21\x8f\x79\xe3\x07\x8f\xa4\x38\xec\x2d\x3f\xe2\x03\x8f\xa5\x7b\xdc\x53\x7e\xd4\xff\x1d\x3b\xf9\x43\x2f\xf9\x90\xef\x3b\x7e\x49\x6b\x0f\x79\xc8\xef\x1d\x1d\x1a\xf2\xde\xf1\x18\x9f\x77\x0a\xd1\xf9\x19\xfc\xdd\x4f\xf4\x75\x27\xb9\xc4\x92\xd5\x88\x14\xef\x40\xc2\xfd\xe4\x00\x01\x1f\xd7\x8a\xe9\xb5\x2c\x22\xce\x75\xe7\x4c\xbf\xe5\x82\x6f\xaa\x0d\xb4\x8e\xb4\xc7\x97\xbb\xde\x90\x95\x62\x75\x9b\xd8\x88\xe9\xe1\x9d\x81\x4e\xbc\xa6\x0b\x65\xdd\x65\x72\x69\x98\x22\x6b\xba\x05\x39\x59\x65\x19\x63\x79\x5c\x0b\x88\xb6\x49\xf6\xbb\x79\x3d\xda\xba\x0f\xc0\x8b\x30\x11\xac\x8b\x09\x9a\xe2\xef\x7e\x1b\xb9\xf2\x71\x5a\x65\x74\x48\x21\x31\x9c\x10\xa7\x45\x46\x87\x12\xd2\xae\x87\x78\x93\xe5\x2c\xe1\x83\xc8\xd0\x81\x0b\x08\x44\x0b\xc6\xf1\x61\x83\xc4\x73\x9e\x1c\x2e\x88\x0e\x15\xd4\x01\x80\xc8\x49\x3f\x3d\x4c\x90\x24\x0f\xe3\xc3\x03\x6e\x10\xf1\xa6\xe7\x13\x43\x03\x63\xc2\x02\x4f\xaa\x8b\xf9\xd4\x70\xc0\x28\x0b\x35\x39\x0c\x70\xda\x10\xc0\x67\xa9\x85\x9b\xb0\x8e\x69\x2e\xff\x64\x77\x7f\x9a\xab\x3f\xde\xcd\x7f\x0e\x17\x7f\xe2\xd6\xc4\xbb\x6d\x12\x5c\x36\x63\xdc\x35\x23\x5c\x35\xf1\xae\x7c\xb7\xa8\x91\xfc\x11\x72\xd1\x74\x1c\x2f\x91\x34\x07\xdc\x33\x63\x9c\x2e\x27\x70\xb8\xa4\x38\xe4\xa3\x9d\xf1\xf1\xe0\x4e\xe2\xb4\x8f\xb1\x8e\xf8\x24\x6e\x89\x17\x3e\x91\x6e\xa5\x04\x11\xe2\xfa\xce\xbf\x62\x05\xdd\xdd\xb3\x4c\x8a\x3c\xe2\x66\xda\x2b\x64\x56\xf3\xb4\x46\x02\x4e\xc7\x4e\x45\x68\xae\xa9\xf6\x6d\xe6\x3d\xf8\xb5\xe8\xb6\x3f\x87\x7e\x01\x38\xe2\x08\xef\x0f\xf9\xa2\x1e\x20\x72\x56\x75\x1f\xc1\xa6\xe3\x36\xec\x5f\xe5\x23\x91\x4b\xc3\x04\x79\xc6\x85\xdf\xb3\xe7\x2d\x44\x50\x8a\x9d\x55\x1f\x10\xfb\xfe\x8b\x6f\x3c\xb9\xaf\xcd\x3c\x02\x43\x4f\xeb\x53\x5a\xa6\x8e\xe4\x29\x4c\x53\x47\x6a\x59\x15\x5d\xf3\x14\x4d\xd6\x54\xdb\xf4\x45\x53\xa2\xf1\x05\x8c\xad\x3e\x45\x54\xe4\xc4\x81\xfc\xa3\x0e\xcf\x57\xb5\x85\x09\xe1\xc1\x73\x85\x06\x93\xc2\x82\x4d\xc0\x2f\x8a\xf2\xd3\x42\x82\x9f\xc5\xae\x0e\x84\x01\xad\x89\x1d\x6d\xa0\x3d\x21\x04\xf8\x77\xab\x43\x0e\x85\xfa\x26\x1d\x72\xff\xf9\x92\x5a\x95\xe1\x1b\x26\x2b\x73\x62\x85\xea\x71\xcd\xb3\x75\x13\x16\x8b\x58\x46\x3b\x0e\x4d\x64\xb5\xa7\xc7\xbe\x70\x84\x0f\x6f\xe9\x08\x9a\x2f\x92\xf3\x5a\x7e\x21\x5a\x55\xe4\xfe\x86\xdd\x31\xbd\xbd\xab\x9b\x10\x69\xd3\xa1\x8d\x6a\x42\xc9\xab\x77\xf7\x3f\xbf\xb9\xf9\xf3\xeb\x37\xa1\xb3\xf1\x9a\x66\xeb\x76\x72\xa0\x20\x14\x84\x27\x9c\xb5\x35\xdd\x32\x42\x49\x25\xf8\xdf\x2a\xac\xa5\x4a\x9e\xd5\x94\x9f\x9f\xb8\xd2\x7d\xa4\x2c\x83\xfe\x8c\x23\xfa\x36\xc0\x7b\x2e\xc4\x23\xad\x21\xa7\xe4\x66\x4f\x66\x85\x96\xca\xbe\x68\xb5\x28\x8a\x32\x72\xcd\x14\x23\x2b\xbe\x75\x4e\x6e\x57\xd4\x92\xe6\x75\x78\xcb\x32\xb4\xe5\xac\x70\x5e\x11\x5d\x40\xa0\x69\xcd\x88\x60\xc6\x72\x77\x6d\x63\x4a\xa1\x3b\xd9\x9b\x95\x66\xfa\x8a\x2c\xaa\xa0\x19\x66\x4d\x1c\xbe\xa1\x8a\x17\xbb\xf6\x40\x68\x31\x27\xef\xa4\xd7\x5c\x76\x7b\xd3\x09\x10\x7d\xf5\xfe\xf5\x3d\x79\xf7\xfe\x23\x34\x00\x87\xe2\xb4\x6b\x6a\xf0\x6d\x58\xce\x05\xb3\xf4\x5c\xc7\xad\x39\xb9\x11\xbb\x18\x41\x88\x52\x88\x6b\x62\xd5\x15\x26\x2c\x09\x77\x9d\xf8\xc2\xb7\x17\xdf\xcc\xe1\xff\x2e\xec\xea\xaa\xf0\xad\x54\x87\x1d\xbb\xb9\x87\x70\x77\xc0\xad\xc6\x17\x45\x8b\x03\xdc\x9a\x7f\xf1\xce\x0d\x35\xb8\xe1\xce\xae\x68\xbb\xfb\x7e\xcd\x16\x51\xf7\x0a\xf6\x0c\xe1\x62\x55\x24\x70\x77\x62\xf7\x86\x66\xa0\xc9\xd5\xd4\x9b\xdb\xc8\xab\x1a\xee\x48\xba\x5d\x87\x56\x59\x51\x57\xfa\xed\x9d\x67\x88\x39\x16\x61\xde\xec\x35\x9b\x82\x0f\xa0\x8b\x2c\x4e\x93\xfc\x86\xfc\x89\x7c\x22\x7f\x02\xb5\xe3\x0f\x31\x7a\x45\xda\xdd\x91\x66\xa0\xa0\x5e\x7d\x7b\x97\xbc\xc2\x3f\xd9\x63\x69\xdf\xb5\x2b\x64\x8d\x43\x2e\x72\xd7\x0c\xcf\x30\x65\x45\x53\x3c\x98\x48\x9e\xbc\x0e\xbf\x1d\xd8\x59\x18\x07\xfc\x6b\x71\x8c\xb3\x6c\x55\x77\x26\xe6\x0c\xac\x63\x3f\x61\x6d\x9a\x77\xee\xe0\x76\xea\x49\xc3\x17\xa3\x88\xc2\xa8\x36\xd4\x64\xeb\xae\x74\xb0\x2a\x93\x36\xcd\x41\xd4\x24\x97\x24\x5c\xf7\x18\x1f\x04\x3b\xac\x79\x54\xa4\xec\xbc\x0c\x1e\x1b\x8a\xea\xf0\xc1\xd0\xee\xed\x99\x06\x91\x66\x5a\xee\x75\x9c\x56\x9a\x79\x29\xf3\x39\xaa\x47\x76\x90\x8e\x21\x82\x55\xd6\x1d\xc5\x21\x1d\xca\x59\x33\x1e\xd1\x13\x7f\x14\xed\xa9\xce\xa8\x40\x5c\xdb\x92\x29\x85\x98\x95\xc5\x8e\xb8\x06\xd0\x51\x1b\x9a\x74\x56\x4b\x25\x8d\xcc\x64\x54\x77\x83\x6e\x78\xc7\xbd\x08\xd3\x44\x07\x87\xf7\x21\xfd\xf0\xea\xee\x8a\x7c\x7c\x79\x17\x77\xac\xa4\x22\xf7\x2f\x3f\xde\x75\xed\x8d\x8b\x8f\x2f\xef\xa2\xda\x30\x27\x4c\x36\xbe\x5d\x59\xe7\xfa\x0b\x19\x6e\xa7\xed\x86\xa0\x18\xcd\xf9\xc9\xf1\x95\x8e\x7d\x1a\xea\x41\x55\xe8\x40\xaf\x52\x6c\x23\xb7\x2c\x47\xa5\xca\xd3\x63\x22\x2f\x25\xb7\x1a\x0c\x0f\x35\x9c\x8a\xc0\x66\x4e\xe8\xcb\xe0\x33\xa1\x2f\xc9\x84\xbe\x9c\xd0\x97\x13\xfa\x32\xf4\xdb\x09\x7d\x39\xa1\x2f\xfb\x9f\x09\x7d\x39\xa1\x2f\x87\x9e\x09\x7d\xe9\x9e\x09\x7d\x39\x62\xc8\x13\xfa\x32\xe2\x85\x09\x7d\xf9\x55\x47\xce\x27\xf4\xe5\x84\xbe\xec\x7b\x26\xf4\x25\x3c\x13\xfa\x72\x42\x5f\x4e\xe8\xcb\x09\x7d\xd9\xf7\xdb\x09\x7d\xd9\xff\x4c\xe8\xcb\xde\xe7\xd7\xa3\x43\x4e\xe8\xcb\x09\x7d\x39\xa1\x2f\xbf\x34\xfa\xd2\xb7\x17\x48\xc1\x14\x5e\xbe\x94\x9b\xb2\x32\x8c\x7c\xf0\x2f\xd7\xec\x49\x16\x3b\x44\x24\x44\x03\xaf\x9e\x1e\xe8\xc4\x96\xf2\x95\x02\x80\xdf\x35\x56\xb5\x9f\x65\x38\xc4\x59\x3d\xbf\x59\x3d\xa2\xeb\x53\x05\x3b\x0b\xbe\xe1\x21\x30\xa6\x7d\x1a\x4c\xe4\x5d\xd2\xc5\x96\x24\x60\xbb\x3b\xf4\x06\x86\xd6\x72\x11\x62\x0b\xf2\x4f\x70\x3c\xe8\x46\x56\x51\xf7\x38\x44\xc9\x71\xab\xeb\x75\x44\xc7\xe7\x97\xdf\x26\x92\x26\xc3\x9c\x8b\xf7\xeb\xdc\xad\x0f\x6e\x70\xfb\xfb\xe5\xc4\xd9\xd3\xf6\xcb\x1f\x4d\xc0\x64\xd5\x5f\xe2\x9a\xc8\x0d\x37\x86\xc5\xc4\xd5\xad\xda\x4d\xdb\xc1\x64\x6e\x3a\x4a\x8f\xe3\x36\xa8\x31\x45\x4d\x9c\xe0\x6d\x05\x3b\x5b\x68\x26\x69\xd6\x4c\x3d\x72\xed\xbb\xb2\xd4\x5a\x27\x70\xcd\x2c\x67\x4b\x2e\xa2\x86\x0c\x57\xc0\x2f\x8a\x47\x23\x7f\x68\x2d\x36\xc5\xcd\xee\xa5\x14\x86\x7d\x0a\xe8\x82\x5d\x36\xbb\x77\xaf\x12\x59\x62\x24\xdb\x2b\xab\xae\x49\x84\xaa\x04\x20\xc0\x4e\x5c\x06\x0c\xbb\xdc\x5f\xfb\x81\xc3\xea\xb1\x4f\xe6\xfa\x24\x5f\x31\x54\x3f\x34\xfb\xc6\x66\xf6\x3a\x6e\xb6\xe7\xe0\x9b\xa7\x12\xfd\x20\x04\xef\x14\xdf\xf2\x82\xad\xd8\x6b\x9d\xd1\x02\x78\x26\x55\x39\xba\xe9\xa1\x03\x87\x4d\xc9\x42\x93\xc7\x35\xb3\x67\x22\xca\xea\x2a\x95\x04\x7f\x76\x46\x05\x59\x51\x2e\xc8\xc6\xae\x61\xe9\xc9\xdb\x0d\xb7\x67\xca\x68\x52\x52\x15\x67\xca\x39\x92\x0e\x60\xbc\x90\xb2\x70\xe8\x91\x62\xd7\x8c\xd1\x15\x97\x13\xf2\x67\xc1\x1e\x7f\xb6\xdf\x8b\x91\x00\xcb\x82\xae\x6a\x00\x95\x66\xe6\x40\x8f\x6f\x3e\xde\xb7\x4c\x11\x5f\x01\xe8\x43\xc5\x08\x2d\x1e\xe9\x0e\x96\x73\xff\x2b\x5c\x7f\x4b\x5e\x3c\x07\xee\xa7\x31\xe3\xae\xc7\x91\x93\xdf\x3e\x07\x3f\xdf\xcb\x9b\xbb\x9f\xef\xff\x7a\xff\xf3\xcd\xab\xb7\xb7\xef\x62\x45\x82\x5d\x4b\x16\x2c\xd7\x98\xd1\x92\x2e\x78\xc1\xe3\x6e\xa1\x83\xc8\x53\xfb\x75\x10\xa9\x79\x7e\x9d\x2b\x59\xe2\x3a\xa8\x4a\x88\x38\xe3\xad\x41\xda\x76\x75\xef\x76\x9a\x02\x6c\xe1\xb2\xf3\xc9\x08\xca\x2b\x45\x85\xf1\x8a\x63\x7b\x5b\x54\x25\xac\xc2\x7f\xea\x28\x3c\xcd\xc7\x00\xb4\x6e\xf2\x9c\xe5\xa9\x53\x7b\x4a\x9c\xf7\xa5\xff\xd4\xae\xc9\x84\x20\x77\xef\xef\x6f\xff\x5b\xfa\x28\x88\xe3\xb9\xa4\x90\xdd\x99\xf0\x37\x84\x58\xf6\x1b\xb1\x03\x1f\x1c\xc2\x72\xda\x83\x81\x17\x4e\x8e\x81\xaa\xef\x8e\x54\x1f\xf3\x87\x4a\x74\xf3\xea\x1a\x4a\x64\x23\x73\x36\x27\x77\x28\xdc\xa3\xd6\xaf\xfb\x7e\x0b\xf6\x4f\x15\x23\x96\x88\x30\x1c\x3a\xa6\x59\x5d\x77\x4b\x8b\xb8\xbb\xcd\x48\x44\x31\xb6\xf3\x27\x3a\xd2\x6d\x49\x0b\x1d\x21\x80\x52\xe4\xb9\xbd\xd2\xde\x5a\x75\x3e\x71\x3d\xeb\xf7\x48\xce\x84\x34\xce\x42\xb0\x5f\x86\x84\x10\x25\x33\x12\x6b\x25\xb4\x82\x89\x1d\x89\xeb\x3a\xfa\x79\x71\xce\xb5\x5f\x8b\x3b\xff\xed\x08\xe2\xe8\xd5\xa9\x34\xd3\xc7\xc5\x79\x63\x37\xd8\xef\x2b\x46\x73\x29\x8a\xd8\x48\x3f\xfa\xfc\x37\x54\x3f\xb0\x1c\xff\xc1\xe9\x25\xce\xc6\xd1\xae\xbb\x9f\x1b\xee\xc7\xb8\xf3\xb6\x64\xd4\x54\x8a\xa1\x3e\x82\xd1\x0c\x26\xe8\x22\x2a\x56\x91\x04\xb0\xa7\xf9\x7b\x51\xec\x3e\x48\x69\xbe\xab\x81\xaf\x89\x6c\xf0\x13\x6a\x83\x7b\x3e\x16\x50\x42\xc0\xe9\x9e\xcf\x22\x97\x13\x18\xbf\x8d\xbf\x7d\xd5\x6c\xfb\x19\xd8\x5e\x55\xe2\x46\x7f\xaf\x64\x95\xda\x02\xd4\x72\xe4\xf7\xb7\xaf\xe0\xac\x56\x78\x4e\x99\x30\x6a\x07\xc0\x7a\xe7\x35\x4e\xd1\x5f\x1a\x9d\xf2\x07\xcb\xa3\x7b\x5c\x69\x35\xd9\x4a\x68\x16\x05\x05\x7b\x4b\x77\x84\x16\x5a\x7a\xf5\x95\x0b\x72\x07\x51\xcc\xb6\x7d\x36\xc7\x6c\x2b\x16\x99\x3b\xb3\x90\x66\x4d\xf6\x48\x00\xd3\x1f\x52\xbe\x8a\x9c\x3a\x3a\x43\x9b\x04\x69\x2e\x0e\x3e\x60\xe8\x03\xd3\xa4\x54\x2c\x63\x39\x13\x59\xc4\xde\xb7\xbc\x96\x7f\xf8\xfd\x49\x03\x63\xc0\x29\xef\xa4\xb0\xc7\x24\x91\x57\x6e\x45\xce\x33\x8a\xb2\x91\x9a\x3d\xf9\x03\xfe\x7b\x55\xc5\x6c\x02\x1c\x26\x21\xc5\x0c\x0e\x49\xa5\x99\x02\xdf\x89\x35\x23\x10\x47\xff\x97\x6a\xc1\x0a\x66\xd0\x78\x81\x7c\x39\x1a\x85\xce\xb7\xef\xf2\x0d\x5d\x31\x42\x4d\xcd\x7a\x46\x12\x26\x74\x05\xad\x49\xa9\x01\xd7\x8a\x64\x3a\x32\x9b\x0d\x8d\x16\xf2\xc3\xed\x2b\xf2\x0d\x79\x66\xc7\xfb\x1c\xd8\x65\x49\x79\x01\x20\x47\x43\x95\x49\xc6\x2e\xf0\xa5\x1f\x06\x4c\x1c\x4e\x04\x91\x0a\x05\xc3\x15\x11\x12\x7b\xdd\xba\x99\xc7\xd9\x61\xde\xd0\x73\x51\x79\x70\x20\x46\x1f\xa0\x08\xfa\x8e\x40\xca\x01\x8a\xdc\xb1\xb3\x1c\xa0\x64\xe1\xf9\x83\x66\x6a\x84\xec\xfc\xe1\x2c\xb2\xb3\xad\x24\xd9\xf3\xd1\x59\x9d\x18\x06\x83\x43\xb0\x61\x86\xe6\xd4\x50\x27\x75\x9b\xcc\x9d\x43\xc6\x88\x31\xcb\x07\x65\xef\x51\xc6\x88\x91\x05\xfd\xb2\x37\x82\x31\x62\x38\xec\x2b\x92\xbd\x9a\xbd\xe1\xa2\xfa\x84\x81\xf1\x31\xee\x86\xfb\xd7\x40\x80\x64\xfe\x5c\xc0\x16\xd2\xb2\x2c\x38\xa4\xb8\x44\x9e\xb8\x56\x24\xf7\xb6\xc3\x1a\xfb\x2d\x95\x9d\x0c\x8d\x15\x3f\xb4\x28\xa4\xbd\x20\xac\xae\x44\x45\x2e\x37\x07\x03\xb6\x4a\x29\xa3\xd9\x3a\xe5\x58\xcc\x53\x54\x81\x5f\x9f\x24\x4b\x73\xbf\x14\x6c\xcb\xa2\xd2\x69\xf7\xeb\x98\xd8\xf7\xac\x72\xea\x77\x0c\x08\x91\x82\x2e\x58\x91\x92\x21\x85\xbc\x58\xfb\xae\xa2\xc3\x94\xf8\x24\x9a\xe5\x4a\x16\x63\x40\x9f\x1f\x64\x01\x00\x25\x5a\x4f\xd6\x12\xfa\xca\xe7\x0a\x3f\x4f\x9f\xab\xb5\xd1\xba\x73\x05\x9b\xf6\xeb\x9e\x6b\x15\x75\x17\x93\xfd\xb9\xda\x2b\xbc\x3b\x57\xb8\x3b\xbf\xe6\xb9\x26\xb8\x8a\x1e\xb9\xc8\xe5\xa3\x1e\x7f\x79\xfc\x84\x04\xbc\x7c\xca\xac\x20\x34\x5c\xac\xb4\xbf\x40\xe2\x7c\x1b\xb4\x28\x3a\x3e\x8d\x63\x37\x88\x0f\x80\x2d\x55\x54\x47\x53\xd7\x76\x7f\x5f\x56\x7a\x95\xb6\xd2\x2e\xba\xda\x92\xdc\x11\x54\x13\xcc\xbc\xe8\x94\x8b\x2f\x2a\xdb\x57\x1b\x4d\x5f\x2a\x4b\xdb\x70\x5a\xdc\x97\xa3\x1a\xdf\x7f\xff\xf6\xfe\xa6\x4b\xc4\x1e\x99\x47\xa8\x36\x65\x57\xc2\xfe\x3d\xf6\x9c\xe4\x1b\xae\x35\x97\x82\x3c\xb2\xc5\x5a\xca\x07\xf2\xcc\x47\x12\x57\xdc\xac\xab\xc5\x3c\x93\x9b\x56\x50\x71\xa6\xf9\x4a\x5f\x3b\x3e\x9e\xd9\xd9\xc4\xf6\x61\xe7\xa2\xe0\xa2\xe5\xf2\x82\xb2\x45\x0e\xd2\x66\x07\x4c\xb2\x7a\x46\x91\x14\xed\x46\xba\xca\x1b\x2e\x32\x72\xb8\x30\x58\x47\x83\xb3\x22\xba\x4b\x32\x38\xcb\x30\x0d\xc9\xca\xa1\xa2\x5c\xd3\x19\x5e\xa4\x2e\xed\x1a\x92\xf0\xd7\x52\x48\x15\x75\xdc\xec\xe3\xea\x6f\x40\x56\x9d\x35\x60\xd1\x77\x06\x43\x76\x27\x1a\x56\xc0\x79\xd9\x22\x89\x2e\x0b\xba\x3a\x8b\xe8\x3e\xe4\xd1\x77\xd1\x09\x69\x01\x3e\x85\xed\x70\x19\xfc\x09\xf9\x54\xc7\xd9\x04\x19\x00\xcd\xab\x79\x6b\xdf\x62\x19\x32\xb8\xbb\xad\x7d\x8b\x8d\x49\x84\x77\xf7\x7c\xfb\x56\xdb\xc0\x23\xb7\x0b\x6c\x61\xf7\xba\x95\x8d\xfe\xb2\x69\x6c\xe3\xc8\x55\x38\xb0\xa0\x87\xec\xe3\xd8\x95\xc5\x8b\xfc\xc0\x92\x0e\xd8\xc9\x91\xd4\x23\x8d\x13\xbc\xbf\xa2\x05\xde\xa9\xed\x13\x92\x68\xa3\x44\x92\x6c\xdd\x76\x21\xe9\x97\x50\x62\xa2\xe7\x20\xf5\x1d\x91\x0f\x6d\xe6\x8d\x95\x80\xe7\x3d\x51\x27\x87\x25\x61\x22\x46\x72\x5d\x9e\xfb\xd6\x7b\x84\x1f\x3a\x70\xef\x64\x4e\xd6\x41\x58\x46\x93\x72\x02\xe5\x1e\x21\x09\x8c\xff\x9b\xd7\xca\x1a\xdd\x4f\x48\x44\x98\xc5\xa5\x39\x43\x70\x11\x4b\xaf\xe4\xa4\x12\x86\x17\x3e\xee\xb2\x29\x0b\xab\x30\x74\xbe\x8b\x3e\xe2\x70\x65\xb3\x56\x99\x9f\xab\x7a\x8a\x07\x0d\x1b\xaf\xc8\xff\xa8\xb4\x21\xd4\x83\x6b\x02\x44\x3b\x7d\x27\x7d\xa6\x0d\x32\xbc\x2b\x99\x05\x59\xde\x46\xda\xcf\x6f\x79\xce\x48\xce\x97\x4b\x16\x01\x02\xc2\xe1\x96\x54\xd1\x0d\x33\x10\x72\xc5\x8d\x59\xb0\x15\x17\x58\xad\x72\x49\xa8\x9d\xc4\xe5\xa5\x6e\x32\x3d\x42\x47\x1e\xf0\x27\xdc\x90\x0d\x5f\xad\xf1\x44\x13\x4a\x0a\x29\x56\xc4\x3b\xc5\x0b\x49\x73\x02\x62\x4f\x2a\xf2\x48\x55\x48\x51\xa7\x24\xa3\xd9\x1a\x3c\xf4\x54\x90\xbc\x52\x50\x12\xc3\x30\x9a\xef\x66\xda\x50\x63\xb5\x7e\x86\xc8\xbe\x66\x65\xc2\x5e\xf6\x36\x30\x19\xde\xe2\x98\x6f\x63\xa5\x47\x7d\x48\x5d\xbc\xd0\xa9\x6a\x01\x8a\x1d\x96\xef\x1c\xf3\xa9\xc4\x53\xf0\x99\x4a\x3c\x91\xa9\xc4\xd3\x54\xe2\x69\x2a\xf1\x14\xfa\xed\x54\xe2\x69\x2a\xf1\xd4\xff\x4c\x25\x9e\xa6\x12\x4f\x43\xcf\x54\xe2\xc9\x3d\x53\x89\xa7\x11\x43\x9e\x4a\x3c\x45\xbc\x30\x95\x78\xfa\xaa\xd3\xf3\xa7\x12\x4f\x53\x89\xa7\xbe\x67\x2a\xf1\x04\xcf\x54\xe2\x69\x2a\xf1\x34\x95\x78\x9a\x4a\x3c\xf5\xfd\x76\x2a\xf1\xd4\xff\x4c\x25\x9e\x7a\x9f\x5f\x8f\x0e\x39\x95\x78\x9a\x4a\x3c\x4d\x25\x9e\xbe\x74\x89\x27\x6d\x72\x1e\x28\x4c\x11\x93\x63\xe8\x8a\x84\x34\x18\xfa\x50\xe0\xb4\x5a\x2e\x99\x82\xfb\x1c\x46\x70\x10\x43\xaa\x33\xfc\x7d\xe0\x3c\xbc\x9d\xf6\xe6\xd2\xcc\x5c\x41\xaa\xa3\x76\xdd\x76\x8e\x13\x77\x80\xff\x47\xba\x0b\x11\x55\x4c\x43\xea\x9f\x20\xaf\xdf\x7f\x97\x9a\x08\x19\x9b\xc7\x03\xa3\x7c\x2f\xb2\x14\x70\x44\xb3\x11\xc7\x12\x69\xdd\x7e\x64\x85\xd4\xa1\x93\x05\xfd\x39\x61\x99\xb2\x35\x15\x82\x79\xad\x8d\x1b\xb0\x61\x16\x8c\x09\x22\x4b\x26\x30\x82\xed\x9b\x27\x86\xe2\xed\xc6\xd0\x6c\x3d\xb7\xa3\x14\x7e\x13\x5c\xad\x8d\xe6\x7b\xda\x28\x46\x37\xb8\x19\x8a\x6d\x68\x30\x93\xc7\x0e\x83\xd0\x4c\x49\xad\xc9\xa6\x2a\x0c\x2f\x0b\xe6\x3e\x45\x34\x03\x34\x27\x62\x7a\xeb\x05\x0d\x73\x8d\x66\x18\x64\x83\xfc\xbd\x7a\xa4\x6e\xc2\xb2\x9d\xa7\x0e\xba\xe6\x55\x98\x22\xdb\x94\x66\x57\x43\x42\x18\x59\x72\xa5\x0d\xc9\x0a\xce\x84\x71\xa3\x45\x7c\x36\x7c\xed\xca\xea\xb1\xe1\x2d\x12\x6e\x85\xb4\x5b\x04\x91\xc3\x1d\x59\x1a\x8d\x30\x88\xe6\x73\xf8\xa1\x00\xc5\x9c\x6b\xa7\xe7\xe8\x2b\x42\x8d\x17\xc6\xc0\x3a\x7e\x0d\x80\x79\x72\xf8\x94\xfb\x76\x80\xa8\x7b\xa1\x35\x94\x56\x19\x95\x06\xbd\xd2\x1c\xe9\x65\x41\x43\x9a\x83\x3f\x68\x57\x9d\x8e\xa5\xa5\x2f\x0f\x80\x58\xa0\xfd\x03\x1f\xa0\x09\x0c\x27\xd8\xd6\x9e\x17\x96\x31\x6b\xfe\xd0\x9e\xf3\x7d\x92\xe3\x6d\x98\xda\x70\x01\xe0\x92\xb7\x4c\x6b\xba\x62\x77\x41\xb7\x65\x9f\xaa\x0a\x9e\xcb\x66\xc3\x80\xbd\x0a\xd0\x5b\xe1\x5f\x22\xce\x7a\x13\xa6\xbf\xd4\xed\xa1\x91\x0d\x8e\xad\x86\x1b\x3d\x2a\x6e\x0c\x0b\x2d\x26\xd7\x58\x5b\x00\x62\x08\xfb\x49\x07\xf6\x13\xed\x20\xbf\x9b\x7e\x68\x7f\xf0\xc3\x96\xb4\xbd\xe9\x44\xee\x7a\xf9\x31\xb2\x50\x9c\x2d\xc9\x92\x43\xfc\x1e\xe2\xdb\x57\x98\x6d\x1a\x04\x81\x59\x13\x49\x6b\x6b\x54\x48\xe1\xc3\xb0\x7e\xc6\x73\xf2\x93\x9b\xb2\x51\x95\xc8\xa8\x89\x05\xeb\x08\x99\x33\xc2\x97\x64\x05\xb1\x75\x85\xe0\xa2\xdf\x7f\xf3\x5f\xff\x40\x16\x3b\xab\x3b\x80\xf3\xdf\x48\x43\x8b\x7a\x71\x0b\x26\x56\xc1\x04\x00\x27\xe2\xba\xc9\x0a\xf5\xbe\x40\x65\x41\x5c\x92\x17\xbf\x7d\x58\x44\x03\x4a\x8d\x24\xd7\x39\xdb\x5e\xb7\xf6\x7c\x56\xc8\xd5\xb1\x76\x72\xc3\x6a\x4b\xa4\xe2\x7f\x84\xed\xa1\xd8\x57\x02\xe3\xfb\xa4\x6d\xb2\x96\x8f\x58\xd3\xe2\x08\xbf\x46\xc1\x83\x16\xd6\xb6\x28\xab\x02\xb1\x5a\xdf\xd9\x33\x03\xeb\x59\x69\x76\x08\xcc\x3f\x7a\x5e\xc3\xab\xeb\x3f\xb0\xdf\x7e\x1c\x81\x18\x7e\xb8\xd2\xa1\x63\x9d\x9b\x24\xc8\xb7\xb9\x67\xd7\x39\xf9\x8e\x16\xc5\x82\x66\x0f\x1f\xe5\x1b\xb9\xd2\xef\xc5\x6b\xa5\xa4\xea\xce\xa3\xa0\x3a\x24\xfb\xb3\x75\x25\x1e\xba\x4d\x0e\x0b\xb9\xb2\x7a\x75\x59\x19\x5f\xae\xeb\xc8\x42\x07\xc8\x82\x1c\xe2\xda\x5d\x7f\xd4\x75\xd5\x6d\xbe\xc1\x3e\x01\xd7\x3e\x72\x2b\xc0\x04\x61\x76\xec\x21\xe3\xc9\x9e\x9f\xf6\xd8\x74\x9b\xf9\x7f\xfb\xcd\xef\xff\x88\x07\xcd\x5a\x91\x7f\xfc\x06\xe0\x52\x3a\x8c\x2d\xe4\xd9\x1a\x64\x3f\xd7\x44\x6f\x68\x51\x58\x83\xb1\x6d\x4f\x58\xe6\x38\x76\x28\x4e\x72\x26\x4c\x0a\xfb\x9f\x48\xd9\xfe\xf8\xf1\xaf\xa0\x69\x73\xa3\x59\xb1\xbc\x42\xbc\x77\x5d\x15\xe5\x12\xae\xcc\x4b\x27\x61\xad\x1e\x54\x2f\x47\xe4\xdd\x7c\x1a\x25\x78\x2b\x8b\x6a\xc3\x5e\x31\x68\xd6\x9a\xb0\x48\x9d\xf7\x3c\x82\xae\x70\x9d\xed\x17\x85\xcc\x1e\x48\x8e\x7f\x0c\x9f\x60\x1f\x0d\xdf\xaf\x37\xd6\x42\x77\x92\x05\x33\x35\xb6\xf3\xd4\x5d\xce\xdb\x73\xe9\xc4\xf7\x37\xb4\x2c\x6b\x38\xad\xa2\x8f\x41\x43\xb1\x3d\x71\xdf\xb9\x97\x9e\xa7\xe3\x39\x7e\x24\xac\xd2\x1c\x99\x6f\xf3\xaa\xdf\xb8\x12\xfe\x37\x22\xf7\xa2\x8b\x10\xb4\xcb\x10\xd4\xe0\xf0\x7a\xee\x78\x6b\xda\x15\x04\xb9\x71\xf2\x3e\xc0\xa3\xfa\x34\x8b\xda\xa7\x84\x1d\xac\x7d\x5e\x10\xee\x70\xc9\x94\x86\x86\xff\xe6\x47\xe0\x88\x97\x05\xe5\x31\xb9\x88\x84\x34\x0d\x9a\x4f\x3b\xcd\xf8\x0e\xc0\xcd\x9e\x06\x7f\x1a\x81\x3a\x38\x71\x8f\x60\x3c\x60\x50\x00\x2a\x45\xc6\xdc\xc9\xdc\xbd\x0a\x37\x04\x28\xbc\xc7\xd4\xdd\x90\x88\x69\xeb\xc2\x89\x17\x4c\xba\x30\xf9\xb1\x99\x6b\x57\x96\xd8\x7f\xa9\x85\x09\xfe\x2a\xc8\x2c\xe7\x15\x21\x30\xa4\x51\x12\x04\x64\x47\xab\x33\x79\x23\x08\xbc\x91\x14\xe7\x85\x5f\x33\xb7\xc1\xfe\x76\xb5\x22\x03\xed\x9a\x39\xc1\x08\x94\xdd\x2d\x47\x3e\x8a\xe6\xe5\xb7\x97\x27\x97\x35\xb8\x50\x4a\x96\x74\x15\x59\x52\x76\x6f\xbd\xf6\x09\x90\x9c\xa1\xaa\xc7\x34\x28\xd9\xf0\xf7\x38\xc7\x3b\x85\xf2\xb1\x48\xc9\x77\xb7\xf6\xa5\xf2\x5c\x20\xc5\x6f\x45\xd0\xc3\xe1\x96\x62\xcd\x5c\x0a\xce\x23\xdd\x11\xaa\x64\x25\x72\xe7\x43\xaa\x9d\x7b\x6f\xf7\x26\xf0\x4e\x8a\xb8\x2b\x82\x6b\x97\x8b\xdd\xcd\xf4\x82\xeb\x9c\x0b\xf2\x62\xfe\xe2\x9b\xaf\xe3\x6a\xf8\x58\x37\xed\x6f\xae\x86\x77\xf5\xd5\x80\xe7\xf5\xe4\x23\xf5\x05\xe8\x92\x47\xfb\xd6\x19\xff\x75\x7d\x39\xb0\x20\xc0\x9b\x06\xff\x64\x8d\xf9\xb8\x0d\x6a\xca\x7b\x3f\x03\xb5\xd2\x6a\xf5\xad\x8c\xc6\xe7\x1d\x2d\x3d\x8a\x62\x64\xad\xba\xb4\x82\x4b\x84\xe8\x6a\x71\x12\x59\xe5\x04\x0e\x1c\x9c\xda\x9f\x93\xa6\xee\x5c\xea\x01\xb1\x95\x94\x68\x6a\x24\xb9\xb8\x20\xcf\x90\xda\x25\xe6\x77\x3c\x3f\x39\x9b\xb9\xa5\x7b\xfd\xa9\x8c\xaa\x91\xd1\x59\xbe\xd7\x9f\x4a\x0a\xbe\xa0\xb2\x7f\x1d\xa3\xa6\xda\xf8\xce\xa2\xd6\x31\x8a\xe6\x9f\xd9\x9a\x6e\x19\xe4\xad\xf0\x82\xaa\x62\x67\x17\xf4\x1e\x67\x4b\x16\x95\x21\x4c\x6c\xb9\x92\x62\xc3\x84\x21\x5b\xaa\x38\x5d\x04\x9d\xe8\xf8\x28\x06\xa9\x78\xd6\xb8\xf9\x87\x67\x3f\xde\x7c\x80\xa8\xe3\x73\x97\x7f\xe8\x56\xa4\xd2\x80\x07\x1b\xc1\x3d\xad\x61\x75\xad\xe0\x36\x33\xc4\x8d\x13\x18\xc6\xcf\xd9\xee\x30\x38\x01\xfc\x1a\xd8\xf1\x6e\x2a\x53\x61\x25\xd6\x4f\x59\x51\x69\xbe\x8d\x3a\x9c\xfb\x95\x09\x5a\x12\xfb\x1f\x4f\xcc\xa0\xf1\x5a\x6e\xad\xb1\x7c\x85\x4a\xae\x4b\xf3\x7a\xc5\x03\x67\x6c\x2f\x05\xad\x61\x8a\x83\x3c\x31\x70\xd9\xc3\x15\x5c\xa7\xcb\xa6\x78\x9a\x7d\x58\xea\x52\xd7\xb5\x34\xdb\xe5\x51\xae\xa2\x14\x35\x4c\x06\x45\xa8\x11\xd6\xf3\xcf\x0f\x03\x7b\x90\x13\xdf\xd2\xad\x03\x34\x4f\xe7\xda\x09\x73\x4e\x80\x13\x22\x78\x20\xb4\xfb\x75\x18\xba\x6f\x10\xdd\xaa\xe5\x99\xef\xf3\xe0\x0c\x66\xec\x68\x01\x02\x0a\x6d\x14\x2f\x0b\x0d\x7d\xe8\x1f\x37\x17\x44\x31\x5d\x4a\xa1\x59\x57\xe9\x6b\x40\x3f\x6c\xcb\x84\xd1\x09\x16\x4f\x8c\xe9\x50\x4a\x6d\x20\x59\x76\x88\xc7\xbb\x51\x94\x3b\xff\x0a\x44\xb7\x68\x51\x58\x0e\xda\x6c\x58\xce\xa9\x61\xc5\xce\xc5\x3d\x69\x24\xcc\xd3\xd2\xc0\x9c\x3a\x17\xd0\x62\x64\x4d\x45\x5e\x30\xd5\xce\xdf\xee\x84\xc0\xbc\x53\x35\x50\x3e\x05\x23\x6e\x1e\x3c\x4a\xb3\x4c\xaa\xdc\xe1\x7d\xb9\xa9\x03\x69\x04\x5b\x67\xcc\xc9\x7b\xd0\x98\x9b\xdd\x1b\xa4\x7d\x50\x96\x02\x1c\x45\xba\x15\xb4\x83\x5a\x38\x75\x16\x3b\xc2\x23\x86\x17\x22\xa5\x83\x8a\x0b\x66\x34\xff\xb3\x01\x4f\xcc\x00\x80\x76\xdd\xc2\x50\xc0\x3f\x0c\xc5\x22\x62\x6d\xcc\x98\xb4\xe4\xf3\x24\x25\x9f\x38\x25\x39\xc5\xa8\x4e\x48\x47\x3e\x57\x32\x72\x42\x2a\x32\x59\xca\x38\xe0\xd9\xe9\x13\x91\x53\xd2\x90\xe3\x50\x45\x24\x29\x09\xb9\x93\x5e\x1c\x45\x3d\x90\x82\xbc\x9f\x5c\x1c\x6b\x00\x0c\x24\x20\x1f\x49\x2d\x8e\x33\xea\x86\xd3\x8f\xf7\x13\x8b\xa3\x68\x26\x25\x1f\x27\xa4\xda\x8d\x29\x6a\x18\x95\xa9\x14\xad\xdf\x45\xe6\xbd\xa6\x67\xbd\xc6\xe6\xb4\xa6\xc8\x97\x58\xdc\x6d\x5a\x36\x6b\xac\x6d\x9f\x90\xcb\x1a\x57\x22\x98\x8c\xcd\x64\x4d\x62\x9b\xc4\x2c\xd6\x33\xe5\xb0\x3e\x35\x83\x35\xe1\x50\x9d\x2b\x7b\xf5\x69\xb9\xab\xe9\x99\xab\x69\x79\xab\x27\xcc\x5a\x1d\x91\xff\x99\x98\xb1\x7a\xca\x7c\xd5\xe4\xd1\xa6\xe5\xaa\x26\x64\xaa\xa6\xe4\xa9\x26\x66\xa9\xa6\xe4\xa8\xc6\x66\xa8\x9e\x3e\x3f\x35\x69\x2b\x62\xf3\x0a\xa2\xb3\x0a\xd2\x73\x0a\x92\x33\x0a\xce\x93\x93\x7a\xfa\x6c\x82\x93\xe6\x12\x3c\x39\x93\x20\x3e\x17\xf5\x2c\x99\xa8\xe3\xf3\x50\xcf\xe2\xc7\x8b\xc8\x95\x88\xf7\xce\xc5\xe6\x74\x9d\x27\xa3\xeb\x5c\xf9\x5c\x4f\xcb\xe6\x3a\xbb\x46\x79\xaa\x3c\xae\x27\x64\x71\xfd\x9d\x49\xda\x53\x65\x6e\xfd\xba\x25\xed\x97\x90\x41\x51\x3f\x2b\x15\xbb\x37\xc3\x6d\x16\xf7\xfc\xa6\xf8\x42\x8f\xd7\xd4\x25\xb7\x27\xb8\x4d\x1b\x37\x28\xc9\x2b\xdf\xcc\xf9\xe6\xee\xb6\xb6\x57\x65\xdb\x9d\x89\xee\xe3\x41\x9a\x0e\x02\x5e\xa7\x06\x5f\xbb\xb4\xe0\x56\x39\xcd\x4a\xb1\x2b\x3b\x73\xb6\x81\x59\x5d\xd5\x3d\xb0\x07\x09\x3b\x54\x30\xbc\xc0\x4c\x86\xee\x21\xef\xe5\x75\xa5\xe6\xfc\x92\x2c\x13\x4a\x04\x64\x8a\xea\x35\xe2\x56\xd9\x27\x6e\x1c\x52\x5c\x31\xaa\xa5\xc0\x04\xec\x16\xfc\x96\x6b\x52\x52\xad\x03\x6e\x1c\x27\xb5\xdc\xe0\x90\xa0\xab\xbb\xd9\x26\xb6\x52\x34\x63\x2e\xe1\x9e\x64\xb2\x12\x26\x97\x8f\xc3\xe6\x31\x14\xf3\xd4\x7e\x9f\xb1\x89\x1e\x32\x84\x95\xff\x0c\xfc\x64\xbe\x12\xea\x9c\x7c\x60\x2b\xaa\xf2\x22\x24\x03\x9c\xd4\x90\x95\xc9\x64\x23\x44\xdc\xe8\xf7\x5d\xe7\x10\x2c\x02\x36\x80\xf0\xe1\xf0\x3a\x78\xe6\x6a\x47\x88\x03\x0b\x31\x2c\x0d\xf6\xfd\xeb\x91\x3e\xf4\x00\x63\xf9\x2a\xb1\x00\x72\xf0\xef\xf5\xee\x14\xe4\xcf\xd0\x6c\x1d\x8a\x55\xa5\xb7\x34\x9f\x1c\xf2\x93\x43\x7e\x72\xc8\x4f\x0e\xf9\xc9\x21\x7f\xec\x99\x1c\xf2\x93\x43\xbe\xf3\x4c\x0e\xf9\xbe\x67\x72\xc8\xf7\x3f\x93\x43\x7e\x72\xc8\xff\xdd\xb9\x89\x26\x87\xfc\xe4\x90\xf7\xcf\xe4\x90\x9f\x1c\xf2\x93\x43\x3e\xf8\xc6\xe4\x90\x1f\x7a\x7e\x9d\x0e\xf9\xe0\x4f\x3a\xed\x9b\xa2\xa0\xdd\x97\x77\xe0\x35\xe4\x99\x73\x80\x77\x6b\x3d\x38\x72\xf3\x06\xf2\xdf\x3b\x81\x83\xce\x53\xde\xcd\xdd\xea\x53\x85\x74\x94\x2c\x0a\x6b\x03\x6d\xe8\x6e\xb0\x53\x9c\xc7\xff\xbf\xe9\xf4\xa4\xe2\x4b\x22\xe4\x5e\x7d\x5c\xf0\x7b\x63\x3f\xaa\x7c\x4e\x3e\xf6\x1b\xa1\x7c\x25\xa4\x62\x9e\x32\x17\xab\x2b\x2c\xea\x54\xf7\x8b\x33\xd2\x15\xa5\xe8\x7e\xf4\xe2\xdf\xff\xe3\xa2\x9f\xed\x0e\xc1\xea\x5f\xa4\x50\x5c\x8c\xb4\x0e\x39\x53\x47\x39\x52\x43\xc9\x13\xa7\x72\xa2\xc6\x5e\x47\x91\xce\xd3\x73\x38\x4e\x13\x9d\xa6\x51\x9a\x57\xb4\xc3\xb4\xed\x0c\x0d\x52\x8d\x70\x96\xee\x39\x42\x23\x94\x8d\x58\x47\x69\xcb\x09\x1a\xa4\x1a\xe3\x24\xed\x3a\x40\xc3\x2b\x1a\x76\x90\xee\x3b\x3f\xc3\x93\x1f\x76\x8e\xc6\x3b\x3e\x23\xfd\x33\x09\x5a\x40\x9c\xc9\x1b\x75\x4d\xa5\x34\x3a\x4a\x6e\x71\x14\x51\xdd\x33\xb1\xb9\x51\x5c\x5e\xeb\x98\xb6\x46\xb1\xb5\x38\xe3\xd4\xbb\x08\xdf\xf1\x79\xfc\xc6\xb1\x22\x35\x46\xbb\x4f\xf6\x15\x47\x49\xbf\x78\x3f\x71\xdb\x3f\x1b\x23\xa8\x63\x7c\xc4\xd1\xa7\x2c\xc1\x37\x9c\xee\x17\x86\xfd\x0e\x4b\xa0\x71\x3e\xe1\x48\x79\x73\x0e\x5f\xf0\x78\x3f\x70\x9a\x0f\x38\xde\xff\x7b\x22\xdf\x6f\xa2\x89\x96\xe0\xf3\x3d\x95\xbf\xf7\x6c\x7d\x3a\xa2\xd6\x28\xd6\xbf\x9b\x52\x79\x3a\xd2\xaf\x1b\xe3\xd3\x3d\xad\x3f\x37\x7a\xa9\x63\xbc\x0b\x51\x9e\x85\x34\xaf\x42\x92\x47\x21\xd9\x6f\x4b\x64\x38\x80\x17\xef\x49\x68\x7b\x09\x82\x64\x9f\xe4\x45\x78\x92\x07\x21\xce\x4f\x9b\xea\xa3\x45\xff\x6b\x70\xda\xa9\xfe\xd9\xc8\xdd\x8f\x11\x02\x41\x7f\x48\xd4\x81\x4e\x6c\xcd\x33\xa2\x29\x4f\xb0\x15\x78\x52\x3b\x9e\x96\xb5\x1f\xd4\x11\x3e\x5b\xc9\xf8\xd3\x2a\xa8\xd1\x6d\x77\xd2\x1b\xee\xb8\x76\x3a\x83\x2b\x77\x92\x56\x3b\xa7\x5d\x91\x94\xc6\x3a\xe9\x2d\x75\xc6\x98\x42\x81\x66\x3a\xd1\xb6\x50\x5c\x1b\x9d\xee\xe2\x0f\xd2\xfc\xbc\x1b\x13\x15\xc9\x19\x15\xc5\x09\x54\x4f\x3d\x7d\x04\x67\x7c\xf4\xe6\x6c\x76\x5d\x44\xc4\x26\xbe\xdb\x6c\x5a\xb4\xe6\x57\xac\x47\x45\x44\x65\xfe\x0e\xf5\xa8\xcf\xa7\x71\xc4\xb7\xad\x19\xd5\xb0\x06\xdb\xd1\x0c\x2e\x54\x42\xab\x9a\x6e\x23\x9a\x5f\xa7\xc6\x11\xdc\x35\x21\x73\x76\xcf\x0a\x70\xa5\xf7\xad\x01\xcd\xbd\x0b\xfa\x2e\x42\x1c\x46\x1c\xde\xbd\xcd\x6f\x0d\x01\xeb\x3d\x6b\xff\x5f\xb8\xff\xfe\xc8\x0c\xb2\x79\x7d\xe1\x4b\xf0\x62\x2f\xb9\xb1\x26\x26\x85\x09\xce\xc9\xfd\x11\x8a\x58\xea\xb1\xff\x2e\xb2\x6f\x5e\x5e\x6a\x52\xd0\x05\x2b\xf4\xfe\x07\x16\x0c\xac\x93\xbc\x2a\xb0\x69\x09\xf8\xbf\xf1\x63\x83\xe5\x7b\x92\x32\x05\xa0\xe8\x16\xe4\x26\x5c\x53\xad\xf9\x4a\xcc\x2c\x5b\xd9\xaf\x5c\xf7\x71\x50\x70\xc7\x4b\xc5\xa5\xe2\xfd\x45\xd1\x0f\x3c\x23\xfe\x05\x3c\x38\x73\xf2\x23\x55\x5c\x56\xda\x57\xac\xca\xe4\xa6\x94\x02\x0a\xf9\x57\x03\xdd\x3b\x4c\x53\x50\x0e\xb6\xc7\x15\xab\xaf\x89\xd7\xc2\xda\x97\x1f\xbd\x73\x7f\xe9\xa5\x78\x93\x6f\x38\x34\xa0\x69\x45\x43\x21\x31\x46\xd0\x45\xc1\x30\xf8\x52\x2a\xac\x84\x65\x87\xa6\x7c\xbf\x12\x66\xcc\xd0\xc5\xd2\x8c\x14\xa1\xf0\xb4\xfe\x4e\xd6\x7c\xc7\x37\x1e\xd0\xad\x9f\xf7\xf3\xa6\xfd\xac\x9f\xcf\xcb\x82\x6a\x6d\xaf\x02\x97\xda\xc4\x57\xbe\xa7\x10\xac\x2f\x46\xb9\x9a\x7f\xed\x37\x25\x1c\xbd\xbe\x8b\x23\x46\x8c\x84\x45\x48\xb9\x3f\xea\x28\xb6\xb9\x5d\xb6\xca\xd6\x11\xee\x5a\x4a\x68\xbf\xc3\x97\xba\x19\x3d\xb9\x40\x3e\x02\xae\x9e\x65\x8a\x1b\x9e\xd1\xa2\xbf\x19\xbe\xd5\x9d\xfd\x2b\x59\x51\x69\xc3\x54\xf3\x16\x18\x94\xe6\x51\xe2\xd7\x69\x41\x1e\xd8\xee\x51\xaa\x5c\x07\xca\xdd\xf9\x11\x36\x6b\xaf\x8d\x1f\xa2\x55\x62\xa1\x83\x02\x86\x6c\xd5\x86\x29\xb2\x60\xa1\xe2\x8f\x7b\x44\x76\x73\x72\x23\x76\xae\xd2\xae\x68\xeb\x01\x39\x5b\x72\xd7\xe8\x09\x6a\x9b\x0d\x71\x26\xed\x32\x91\x3b\xe5\x7e\x74\x14\xb5\xc8\x23\x85\x03\x87\xf9\x48\xe6\xcd\x29\xf4\xe8\x03\x8f\x19\x90\x8a\x60\xe0\x0d\x4e\xa7\x62\x18\xcd\xf4\x7f\xee\x63\xbd\xe0\x15\xa0\x18\xcd\xf9\x09\x01\x16\x9a\x29\xa8\x3c\x5f\xd3\x1d\x00\x19\x74\x53\xdc\x00\x69\xb1\x91\x5b\x5f\x4d\xd9\x53\x62\x22\x2f\x25\xb7\x92\xa3\x0d\xbf\x18\x8c\xe7\x1d\x2d\xb7\x77\x0c\xa9\x51\xaf\xee\x87\xce\x32\xf4\x73\x27\x40\x35\xec\xdc\x76\xfd\x58\x8d\x1e\x4c\xc6\x80\x94\x3b\xc0\x6a\x7c\xf0\x5f\x68\x81\x35\x26\x04\x46\xfb\x99\x10\x18\x13\x02\x63\x42\x60\x4c\x08\x8c\x09\x81\xd1\xf7\xab\x09\x81\xd1\x3f\xc2\x09\x81\x31\x21\x30\x0e\x9e\x09\x81\x31\x21\x30\x8e\xfd\x74\x42\x60\x90\x09\x81\xe1\x9f\x09\x81\x31\x21\x30\x26\x04\xc6\x84\xc0\x38\xcb\x8a\x4c\x08\x8c\x09\x81\xd1\x7d\x26\x04\xc6\x84\xc0\x98\x10\x18\xfb\xcf\x84\xc0\x98\x10\x18\x7b\x8b\x7d\x0a\x04\x86\xaf\x8a\xd9\xbb\x59\xfb\xde\xfd\xb2\x32\x8c\x7c\xf0\x6f\xd5\xbc\xe5\x3b\x68\xdb\x4b\x34\xa3\x2a\xdc\x35\x36\x46\xb2\x42\xef\xf7\x41\x36\x4a\x03\x87\x90\x78\xe9\xd7\xe5\xcf\x37\x30\x90\x96\x8f\x06\xdb\x67\x7d\x02\x7e\xa2\xd8\x1d\x18\x42\x82\xb0\x3c\x83\xdf\xaf\x17\x1c\xfd\x4c\x23\xd2\x8c\xbb\xc8\x0c\x2c\x53\x39\x73\x9f\x9e\xd5\xe4\x67\xf5\x0e\xf4\x82\x35\x48\xec\xb1\x76\xfe\xb3\xaf\x61\x27\x3e\xb8\xa1\xec\xef\x85\x3b\xdb\x63\xf7\xc2\xb3\x31\x84\xaf\xeb\x6f\x70\x4d\xe4\x86\x1b\x68\x76\x2b\x3b\x8d\xc2\x86\x0b\x5a\x70\xd3\x71\xcf\x3a\xee\x81\x50\x2e\x35\x58\x3d\xb5\x2e\xf3\x17\xd9\x60\xaf\xe9\x95\x8a\xd5\x73\x6b\xc5\x07\xb8\x60\xe6\xe3\xf8\x0e\x24\x73\x42\xb1\xf6\xb9\xb9\x2d\xf8\x13\x8f\x7b\x52\x23\xf1\x20\x5e\x53\xaa\xc1\x06\x5c\x97\xd4\x58\xa2\x56\x86\xd5\x3f\xec\x37\x58\xfc\xf7\x7b\xa0\x0e\xfd\xc4\x7b\x49\xfa\x88\x7c\x43\x7a\x70\x71\x06\x8e\x8c\xb5\x84\x00\xa1\x21\x85\x61\x9f\x7a\xb5\xb7\xee\x99\xba\xef\xbe\x44\xac\x19\xa6\x09\x5c\x60\x6c\xcb\x8a\x9a\x28\xa1\xc6\x28\xbe\xa8\xcc\xc0\x1d\x6c\x4d\x9b\x4c\x6e\x36\x0e\xaf\xe4\x01\x12\x80\x79\xd2\x73\xd2\x68\xbd\xed\x3b\x1a\x00\x00\x73\x42\xee\xd9\x70\xbb\xc4\xf6\xb8\xe1\x44\xfa\x85\x03\xb6\x87\x58\x23\xa3\xd9\xda\xc1\xa7\x9e\x12\xdf\x5f\xea\xef\x95\xac\xe2\x4b\x66\x5f\xdc\xd4\xa0\x1f\x6b\xa2\xb8\xa3\x59\x90\x95\xa5\x82\xc7\x9e\x96\x65\xc1\x03\xda\x8b\x3d\xdb\x45\xd1\xac\x9c\x26\xd0\x82\x1d\x60\x69\xf7\x72\x53\x77\xbe\xb5\x8b\xe1\x2e\x90\x60\xf0\xe7\x2f\xd5\x82\x15\x0c\x1b\x74\xaf\x41\x67\x85\x3a\xcc\x8f\x96\xfc\x9a\x97\xa8\x25\x53\x53\x93\x06\x73\xd8\xfe\x79\x38\x56\xeb\xee\xfb\x52\xe6\xdf\x92\xff\x2e\xac\x2e\xf5\x11\xc9\x5a\x03\xef\xfb\xdb\x57\xf5\x11\xb0\xbf\xfa\xee\x1e\x96\x93\xfc\x76\x58\xcb\xb5\x14\x34\x33\x2b\x9e\x93\x05\x46\xce\x35\x33\xe4\x99\x60\x8f\x18\x92\xf7\xfd\x17\x49\xa7\x0f\xf0\x20\x49\x3f\x0a\x98\x90\x1d\xb4\x1b\xca\x73\xf2\x3b\x1c\x71\xc9\x94\x07\xd8\x2d\xac\x94\xa6\x8a\x91\xf7\x1f\x2e\x87\x27\x0f\x98\x27\xf5\x38\x53\x8f\xb3\xd9\x6c\x66\xe7\x7f\xbb\x24\x95\x80\x7e\xe5\x76\x60\x7e\xcd\xe1\xeb\x56\x44\x6c\x64\xce\x97\x81\x3a\xd6\x9d\x5d\xb1\xe7\xa8\x19\x1a\xb0\x36\x15\x3b\x37\xe3\x79\x3f\x40\xad\xa3\x3e\xfe\xe1\xf7\x4f\xf6\x02\xa8\x4a\xdc\x24\x9e\x05\xbb\xaa\x96\x01\x8c\x04\xd0\x83\x9d\x17\x13\x46\xed\x00\xd1\x74\x50\x4b\x7b\xd8\x02\x55\x32\x83\xca\x35\x3f\x68\x7b\x49\x63\x53\xd9\xfa\xd4\x73\xb7\xe6\x73\xf2\x96\xee\x08\x2d\x34\xe2\x62\x07\x60\x47\x04\xfb\x97\xee\x09\xbc\x39\x81\x2b\x02\xe3\x85\x0b\x69\xd6\xfb\x3f\x08\xf6\xb3\xbf\x03\x9f\x5e\xfb\x95\xab\x16\xc4\xa9\xbe\x1f\x8e\x7c\x7b\x98\x25\xe8\x03\xd3\xa4\x54\x2c\x63\x39\x13\x19\x73\x5e\x2d\x6a\xc2\xea\x35\x39\x0f\x27\xbc\x93\xe2\x83\x94\xf1\x2e\xa1\xdb\x16\xf8\xd2\x75\x9d\x6d\xae\x05\x30\x85\x2d\x8b\x50\x1d\x70\x09\x09\x29\x66\x00\xd9\xa9\xb4\xbb\x77\xb1\xe1\xfc\xc1\x59\xdb\xd2\x82\xe7\x0e\x4a\x39\xcc\x05\x1b\xba\x62\x84\x9a\x9a\xa9\xec\x35\x24\x74\x05\x05\xef\xad\x92\x66\x48\x2e\x59\x03\xdd\xa1\x9a\xfc\x70\xfb\x6a\x90\xe4\x37\xe4\x19\xb4\xc4\x86\xb3\xbb\xa4\xbc\x80\x28\x34\x74\x6e\xdd\x6b\x0c\xbb\xf4\xe4\xed\x54\x06\x69\x02\x7f\x13\xa9\xb0\xb3\xfd\x15\x11\x12\x7b\x1f\xb8\x79\x5a\xa9\xe5\x25\x9c\x73\x05\x07\x0b\xc6\x77\x8f\xca\x98\xe3\x30\xec\x6b\x13\xf9\xe7\x3a\x0e\x43\x13\x8d\x6b\xf0\x0f\x3c\xfd\x83\x66\x83\x7d\xb3\x0f\x84\xdb\x0f\x27\x16\x6e\x6d\x55\xc8\x32\x78\x77\x85\x90\x53\x37\xcc\xd0\x9c\x9a\xe1\x63\x82\x02\xb1\x41\x09\x46\xee\xf5\x70\x04\x67\x58\x2c\xf6\xed\xf5\x20\xcd\x30\x1f\x1c\x15\x7d\x81\xeb\xf3\xcb\x88\x45\xcd\xde\x70\x51\x7d\x42\xc5\x36\xde\xe5\x65\xf9\xe8\xfe\x35\xbc\x8a\x4d\x47\x3e\x19\xa7\x7a\xa1\x9e\x98\x1f\xea\x82\xc3\xe7\xfa\xb6\xb3\xf7\xfb\x0d\x35\xbc\x94\x03\x61\x61\xf5\x46\xc0\x9b\x0f\x73\x93\xa2\x22\x97\x9b\x83\x51\xda\x3b\x08\xb4\xec\x96\x87\xb4\xcd\x69\x31\xdc\xf4\x4b\x95\x38\x89\x17\x70\x6c\xf4\x00\xcc\xac\xa4\xf0\xc1\x1b\x30\xcc\xb8\xae\x77\x07\x2d\x35\x48\x16\x8a\x37\x37\x48\x13\x3b\x88\x9a\x0f\x49\x89\x1e\x28\xd9\xdf\x97\xfe\xe8\x9c\x3e\xc8\x82\x61\x06\x96\x9f\x94\x25\xf1\x55\xcd\x09\x7e\x98\x32\xa7\x8f\xd6\x6a\xed\xcc\x09\xec\xd8\xaf\x69\x4e\x55\xe0\xfa\x3b\x98\x93\xbd\x2f\xbb\x73\x82\x4b\xeb\xeb\x99\x53\x94\x4f\xb3\x6d\xa6\x83\x7d\x13\x2f\xbb\x6f\x48\xc1\x35\x5c\xf6\x60\xde\xeb\xb6\xc8\x06\x5c\x3f\x57\x90\x7b\x23\x83\x75\x58\x11\x14\xbe\x27\x4e\xaf\xc0\xe8\x77\xee\xd4\x83\x35\x0a\x74\x54\x29\x15\xdf\x50\xb5\xb3\x06\xd8\xfc\xf0\x52\x10\xd2\x0f\xd9\x6b\x8d\x34\xcf\xc3\x7d\xa6\xac\xe5\x19\xb5\x49\x11\x18\xc8\xd8\xdb\x37\xf6\xfe\x8d\x43\xac\xe9\x9d\xce\x4c\x11\xbf\xc5\xf7\xf8\x7b\x70\x85\x11\x5a\xef\xb7\xa0\x1b\xa6\x4b\x9a\xb1\xdc\x53\x04\xd4\x65\x68\xc2\x4d\x6e\xe1\x9d\xcc\x5d\x3e\x57\x25\x9a\x58\xb6\xa7\xf5\xcc\x39\x55\xe2\xf4\x47\x77\xa7\x3f\x27\x1b\xbe\x5a\x9b\xda\xe2\x28\x68\x25\xb2\xf5\x13\x77\xe9\xc8\x62\xb8\x5c\x31\x7b\xee\x1f\x98\x12\xac\x20\x25\x55\x74\xc3\x00\x14\x14\x65\x79\xc7\x83\x4d\xe3\x80\xa6\x47\x30\x74\x4b\x42\xfd\x67\x76\x0e\x04\x1c\x96\x42\xf1\xd1\xe6\x48\x80\x69\x67\x60\x3f\x82\x0a\x72\xde\x91\xc5\x01\x4b\x23\x40\xa5\x31\x80\xd2\xa4\x4a\xc8\xc3\xc7\xf2\x91\x8b\x5c\x3e\xea\x31\xca\xf3\x4f\xf8\xaa\xd7\xed\xb2\xda\xc9\xbc\xa7\x40\x0f\x4e\xa5\xa5\x5c\x1f\x55\xa0\x25\x0e\xcc\x77\x96\xa3\xd1\x62\x78\xdf\x9c\xf1\xe2\xd6\x4a\x8b\xf9\x2f\x44\xd9\x3d\x85\x66\xbb\xda\x68\xfa\x52\x59\x7a\x86\xd3\xe2\xbe\x4c\x6c\x02\xf7\xfd\xdb\xfb\x9b\xee\xeb\x56\xf1\x78\x84\x5c\x50\x3b\x63\xfb\xf7\x26\x43\x3a\x78\x9e\x1e\xd9\x62\x2d\xe5\x03\x79\xe6\x03\x5f\x2b\x6e\xd6\xd5\x62\x9e\xc9\x4d\x2b\x06\x36\xd3\x7c\xa5\xaf\x1d\x6b\xce\xec\x0c\xc2\xc9\x55\x5c\x14\x20\x1b\xbd\xf4\x86\xac\x6f\xe7\x0d\x80\x41\x66\xf5\x2c\x60\x83\xe0\x24\x46\xf4\xae\xdb\xd5\x14\xba\xcb\x00\xd2\xae\xce\x12\xaf\x73\xdb\x23\xda\x77\xd1\xa2\x5c\x53\x17\xd8\x71\x39\x6b\x90\x97\xb8\x96\x42\xba\x38\x3e\xc2\xb1\x9d\xcb\x0e\xf3\xd9\xc3\xa2\xaa\x39\x92\x30\xdf\x25\xa3\xa6\x52\x8c\x2c\x0b\xba\x3a\x99\xaa\x7a\xc8\x4d\x43\x31\x40\xff\x04\x38\x0a\x96\xd2\xa5\x2b\xb6\x60\x43\xc1\x19\x1f\xdd\x56\xf4\xe0\xec\xed\x49\x7b\xcd\xc3\xfb\x13\xbd\x27\xfb\x6b\x1e\x24\x7d\x96\x3d\xa9\x5d\x68\xc9\x5b\x01\xae\x34\xf7\xa2\x95\x55\x5e\xa2\x1f\x75\xad\x05\x27\x77\xd0\xa3\xf3\xa8\x7b\xcd\xfe\xa4\xeb\x62\x8b\x38\xda\x7b\x2e\xb8\x90\x9b\x2d\x86\xe2\xa1\x08\x7f\xd2\xad\x40\xce\x7b\x33\x90\x63\xb7\x43\x3f\x8f\x23\x0f\x47\xac\x43\x32\x9b\x7f\x68\x33\xdb\x97\xe0\xf7\x93\x00\x18\x30\xc9\xff\x26\x83\x6e\xbc\xd1\x28\x86\xcb\xfb\x83\xf7\x8e\x88\x2d\xd2\xfd\x55\x7f\x38\x1d\xf3\x23\xea\xb3\xc6\x35\x1a\x28\x71\x58\x24\x43\xf5\x43\x03\x0d\x61\x50\x17\xa6\x41\x80\x34\xff\xee\xa6\x3a\xa3\x38\x9a\x40\xd9\x98\x81\xd5\x37\xb2\x60\x08\x41\x89\x03\xaa\x1d\x85\x7c\x5c\xea\x36\x9d\x3e\x8e\x08\x58\x47\x87\x05\x6a\x64\x8e\xeb\xf7\xb1\xa6\x0d\xe7\xc1\x18\x68\xdf\x0b\x52\x07\xff\x32\xe8\x11\xb1\x36\xb6\x5d\x3f\x83\xbc\x0f\xe5\x81\x9c\x42\x61\x14\x2f\x0b\x46\xfe\xf4\xc0\x76\x57\x58\xa5\x85\x2d\x97\x2c\x33\xff\x42\x2a\x1d\x60\x57\x80\xa9\x99\x6c\xcd\xc5\x8a\x58\x8d\x8d\x1a\xa9\xc8\x9f\xfc\xff\xfa\x97\xfe\x53\x11\xa7\xe0\xe1\x38\x12\x4c\xc9\xd7\xf0\xc2\x5e\x4d\x16\x9c\x36\xd2\xb2\xcb\x05\x23\x0e\x1d\xd8\xd7\x50\x34\x62\xc3\xa8\xd0\xbe\x96\x52\x51\x74\x48\x69\x57\xca\x27\x12\x61\x45\x3c\x20\xcf\xa3\x49\xa8\x62\xe4\x9d\xbc\x77\x98\x9c\x2b\x72\xa7\xd8\x92\xa9\xe6\x5f\x82\x51\x61\x42\xde\xc9\xd7\x58\xf0\x60\x78\x36\x91\xc2\xe7\x81\xf5\x96\x4d\xc2\xa7\xb3\xd4\x7f\x61\x3b\x2f\x1f\x70\x55\x1e\xd8\xae\x89\xc2\x36\x07\x21\xb4\x28\xe8\xcb\x23\x46\xce\x07\xd7\xfc\x81\xed\xd0\x88\x0a\xeb\x4e\x0f\x38\x32\x40\xfd\x5c\x35\x6c\xe9\x91\xd1\xaf\x3f\x71\x6d\xf4\x3f\xe1\xa1\xca\xe4\x66\xe1\x1a\x64\x07\xa8\xe2\xb0\x3c\xfb\xc0\xc8\xfc\x46\x8a\x1c\xfe\x13\x86\x78\x8a\x8d\xf0\x43\x4e\xd8\x8d\xf7\x7e\x96\x8a\x95\x8a\x69\xb0\x0f\xa8\x1d\xd1\xa5\x26\x8a\x15\x28\x92\xd6\xbc\x0c\x5d\x53\xb2\xb9\xcf\xe7\xe4\x47\x5a\xf0\xbc\x1e\x0d\x72\x2c\xae\x1e\xcc\xf9\xf5\xdf\x2a\x5a\x84\xce\x51\x5b\x3b\xc2\x17\x3c\x09\xbb\x45\x7f\xab\xf8\x96\x16\x0c\xb3\xc4\x1f\x79\x91\x67\x54\x85\x98\x7e\x29\x95\x2f\x26\xa5\x5d\x5d\x08\x80\x30\x91\x8c\x8a\x5a\x14\x36\x9c\x63\xed\xa4\x10\x0f\x92\x92\x2a\xc3\xb3\xaa\xa0\x8a\x58\xb9\xb1\x92\x2a\x50\xff\x21\xf6\x3e\xaf\x8f\x41\x04\x66\x7d\x5f\xf8\xef\xbf\xdb\xde\x5b\xb3\xae\x5b\xb9\x07\xa7\x87\xf8\x83\xce\xa1\x24\xcf\xba\xc5\xe7\xe4\xd2\xcb\xc7\x5a\xa4\x84\xa4\x59\x0b\x31\xda\x51\xd4\xb0\x52\x4f\xfe\xbc\xb9\x95\x1a\x19\x11\x62\x96\x3f\xef\x3c\xf8\xa6\x5d\xda\x04\x60\x4f\x6e\xbc\xee\x10\xba\x4d\x0e\xcb\x02\x14\x1e\x4b\xa9\xd8\x96\x29\xf2\x2c\x97\x40\x91\x6d\x79\x66\x9e\xcf\xc9\xff\xc1\x94\xc4\x0a\x20\x6c\x45\x21\xc3\x0b\x8f\x74\x80\x68\x0d\x3d\x6b\x5a\x5e\x7f\x43\x9e\x01\x51\xc2\x37\x1b\x96\x73\x6a\x58\xb1\x7b\x5e\x83\xd6\x23\x6a\xbd\x9c\xde\x6f\x1d\xe1\x4c\x3c\xe2\x48\xec\x88\x74\x57\x42\xa9\xcb\x3a\x4e\x75\x08\x4a\x12\x2f\xad\x1b\x09\xcc\xb5\x3b\xfb\x1d\xab\xc1\xd7\x26\x72\x02\x3b\x9a\xed\xfe\x87\xe5\x5d\x4a\x14\x5b\xc1\xb9\xc5\xb3\x78\x82\x53\x1b\xad\x83\xf7\xf9\x1e\x07\x08\xf4\xfe\x49\xb1\xb2\xe0\x19\x3d\x90\x0f\x7d\x79\x2c\x5c\x68\x43\x45\x06\x17\x27\xc9\x59\x59\xc8\x9d\xc3\x90\xbf\xdd\xdd\xff\xef\x6f\x88\x35\x24\x17\x54\xb3\x39\xb9\x3d\xbc\xd8\x32\xaa\xe1\xc8\xe3\x4f\x11\x43\xea\x06\x60\x3f\x74\x45\x36\xf4\x53\x57\x5b\xb1\x5b\xf7\x5f\xc9\x33\x8f\x8c\xfb\xdd\xf3\xc3\x75\x7e\xa6\x19\x23\x8a\x2d\x1b\xc5\x3e\x67\xdb\xf9\x66\xa7\xff\x56\x80\x03\x2c\x97\xd9\xb5\x62\xcb\x0d\x15\xd7\xff\x38\xff\x5f\xaf\x99\xb8\x86\x0f\xcf\x5a\x1f\x9e\x2d\x21\x13\x40\x98\x62\x37\xa3\xfa\x81\xe5\x33\x00\xca\x83\x36\xbd\x36\x9b\xe2\xf9\xbe\x7e\x3f\x94\xca\xd2\x7f\x4c\x9c\xd5\xf0\x91\x6d\xca\x82\x9a\x83\x23\xd2\x8d\x4d\x74\x7f\x0b\x9a\xb7\x70\x7e\x5b\x0a\xe8\x89\x06\xbd\x0e\x1b\xe0\x88\x1f\x2c\x0f\x54\xcf\xc0\xf2\x47\x52\xb3\x7a\x7f\xf6\x7e\x37\xa4\x16\x7b\xff\xc0\xb1\x23\xbd\x67\xc9\x19\x2a\x72\xaa\x72\xc7\x68\x97\x97\xba\x7e\xf9\xa8\x05\xb6\xe2\x66\xfe\xf0\x47\x30\xbf\x32\xb9\xd9\x54\x82\x9b\xdd\x35\x94\x83\xe4\x8b\xca\xde\xfc\x76\x2b\x59\x71\x4d\x4b\x6e\xcd\xb0\x2d\x13\xb8\x27\x9b\xfc\x37\x9e\xee\x31\xcb\x2b\xa4\xe3\x43\x39\xb9\x61\xa3\xeb\xcc\xc5\x59\x6f\x9a\x11\xb8\x9d\xad\x5c\xf5\xab\x4a\xb1\x1c\x14\x49\x64\xff\x0d\x2d\x89\x36\xf6\x5e\x1b\x88\x35\x98\x35\x88\x23\x4c\x59\xf0\x66\xd6\xce\x83\xa3\x16\x3b\xc2\x3e\x19\xa6\x2c\xdb\x18\x29\x0b\x2c\x22\x63\x86\xaa\xa9\xda\x9b\x49\x31\xa3\x38\xdb\x32\x42\xd5\x82\x1b\x45\xd5\xae\xb5\x97\x1f\xd7\x6c\x07\x5a\x99\xbd\xd4\xfe\x56\x31\xb5\x03\x8f\xc6\x90\xe1\xd0\x88\x5b\xd0\x25\xd4\x96\xe5\xe4\xd1\x9a\x31\x08\x21\x06\x43\x0e\xb8\x46\x1f\xb0\xca\x71\x5b\xbd\xd2\x4c\xcd\x56\x15\xcf\xd9\x75\x6b\x43\x47\x16\x70\x1d\xfc\xb3\xee\x71\xef\xef\x31\xbf\x0b\xd8\xe0\x91\x74\x5e\x8b\x9c\x69\xcc\x22\x63\x6b\xba\xe5\xb2\xae\x81\xe1\x4e\xeb\xf1\x5b\xe3\xb4\x27\xc5\x8e\x7e\x46\x45\x3e\xc3\xc2\x65\x63\x0e\x8c\xab\x08\x7a\x7b\x17\xe7\xd0\xa9\x7f\xee\x2f\xf5\xdb\x3b\x7b\xa0\x14\x64\xa9\x76\xe6\x3f\xc8\x31\x5c\x93\x4a\x57\xb4\x28\x76\x04\xcb\xf4\xb2\xdc\x61\xb7\x8a\x9d\xd7\x70\x36\xd4\x7e\x09\x6e\x7c\x2a\xfc\x47\x86\x28\x36\xbe\xc2\x0d\x15\x8e\x38\x7a\xa6\x2d\x2b\x73\x01\xde\xa3\x85\xab\x29\xaa\x41\x1b\xb4\x5a\x57\x2f\xc9\x05\xab\x61\x67\x35\x4e\xc2\x4d\xee\x9f\x1a\x9d\xe1\xca\x55\x21\x6d\x18\xa3\x4f\x5c\xfb\x07\x54\xbd\x25\xe5\x45\xc7\x1f\x69\x2d\x0d\x57\x0a\x13\x73\x1e\x72\x62\xd6\x4a\x56\xab\xb5\x2b\x8d\x39\x60\x07\xa2\x51\xd5\xf2\x01\x5c\xbc\x93\x82\x5d\x5c\xb9\x32\x95\x28\xbd\xc8\xb3\x8b\x8b\xe7\x57\x04\x2e\x74\xc0\xe2\x92\xdb\xfe\xc2\x52\x6e\xb9\xe7\x8e\x12\x8c\x6e\xd1\x76\xc7\xda\x7b\x69\xcd\x68\x5e\xd8\x9d\x77\x33\x86\x30\x57\xbf\xcd\x5b\x2a\xf9\x09\x84\x81\x2f\x2f\x58\x27\xb0\xbd\x17\x76\xaf\x6a\xab\xdd\xe5\x8a\xbc\xf4\xbc\xd6\xaf\xbf\xbd\x93\x39\xbb\x93\xca\x5c\xc1\x4e\xbf\x91\x34\xff\x33\x2d\xac\x0e\x63\xf9\x06\x8d\x06\xc8\x61\x73\x90\xa6\xd7\x4e\x58\x42\x31\xe1\x5e\xa2\x89\xb9\x8d\x7e\xf2\x33\xc1\x8c\xab\xf4\xe8\xff\xed\xfa\x37\x5b\xae\x4c\x45\x8b\x19\x2f\x35\x1e\x54\xe7\x5d\xb4\x6b\xc1\xfb\x73\x6a\x83\xb7\x8e\x17\xfb\xb7\x77\x71\xce\xc5\xd6\xef\x11\x07\xe5\xe1\x21\xcd\xf9\x75\x15\x28\x86\xeb\xfe\x0a\x99\x33\x5d\xd7\x9f\xc4\x0d\xf2\x08\x4d\x8d\xf9\xea\xa5\x21\x46\xd1\xe5\x92\x67\x0e\x47\xc2\x6b\x06\x99\x43\xbe\xcc\x40\xcd\x6b\x3b\x3c\x7f\xf7\x60\xde\x1e\xb8\xd8\xff\xd2\x2c\x3f\x66\xdc\x54\x0e\xcf\xa5\x98\x2e\xa5\xd0\x7c\x28\xdc\x07\xe0\x4f\xa1\x2b\x85\x15\x88\x69\x33\x3c\xaa\x14\xdf\xda\x13\x63\x5c\xd9\x73\x5f\x18\x98\x6b\xa8\x3b\x47\xfa\xe3\x53\x2e\x5f\x8c\x7d\xa2\x9b\x12\x21\x80\xf5\x45\x5c\x48\x9a\xcf\x16\x8e\x0d\x5d\x58\xc0\xcf\xa9\xa4\x03\x09\xeb\x4e\x7c\x34\x93\x0d\x18\x79\x01\xaf\x6f\x84\xe6\x12\xc2\x3b\xf8\x39\x7d\xc4\x05\xbb\x93\x05\xcf\xe2\xca\xa0\x1f\x7d\x93\xe4\x4c\x48\x3b\x2f\x48\x2b\xe5\xda\x6b\xc2\xee\x2a\xed\x17\xee\x46\x12\x25\x2b\xc3\x5a\xda\x8e\xdb\x42\x23\x61\xe3\x66\x56\x4c\x17\x56\xb6\xf9\x0a\xd7\x8f\x3c\x6f\xd5\x24\xee\x3f\xec\x17\x6f\x24\xd4\xc1\xf6\x9a\x8b\x8b\x87\x17\x9c\x09\x43\x9c\xda\x65\xcf\x88\xc8\x09\xdd\x4a\x9e\x63\xb5\xfd\x4c\x0e\x5c\x6e\x6b\x59\x02\xd3\xb5\xc5\x11\x10\xb0\xd2\x0a\x2b\x3b\x58\x79\xe4\xe5\xc6\x15\x59\x54\x86\x28\xae\x1f\xfa\x17\xa0\x94\x06\x43\xb6\xc5\x8e\xf0\x8d\x63\xae\xbc\x5e\x05\x5d\x62\x1d\xe7\xd5\x9c\x5c\x38\xa9\x79\x41\xe4\x42\x67\xd5\xe0\xaa\xf6\x4d\xd4\x6a\x98\x19\x75\xd5\x56\x61\xae\x30\x27\x40\xd5\xc1\xbd\x37\x28\x1e\x70\x3e\x4e\x27\x5c\xd3\x2d\x23\x2b\x29\x73\x22\xb7\x4c\xd1\xc2\x1d\x8f\x66\xc0\x63\x05\x20\x56\x54\x7d\xb9\x66\xd9\x83\xbf\x04\xa2\x18\xf3\xc8\x7b\xfb\xa5\x34\xe1\x17\x99\xfd\x05\xcc\xe7\x6e\xa8\xc8\x84\x47\xca\xd5\x02\xee\x30\xbf\xf6\x5f\x8f\x7c\x71\x00\xf4\xe0\xf3\x05\xbd\x9f\xc7\x6b\x53\x25\x27\x0b\x9a\x3d\x30\x91\x37\xc5\xd5\x1b\xf5\xc4\x0f\xb4\x9f\xd1\x7f\xb2\x42\xda\xee\x29\x28\xd7\xcd\x45\xee\xdf\xf4\x46\x79\x2b\x0a\xe5\xc6\xd0\x3f\x54\x60\x1e\x77\x7d\xbb\x00\x06\x2a\xfe\x1e\x43\xac\x31\x89\x73\xff\x24\xf4\x52\x7c\x7d\x54\x6c\xb4\x09\x65\xfd\xee\xe1\xd3\xd4\xef\x2f\x5a\x63\x8d\xd5\x8a\xf7\xf5\x17\x2f\xd7\x3e\xc2\xd7\x3a\xb3\x6f\xff\xc7\xb0\x86\xb8\x62\xa6\x66\x86\x7a\xc7\x6f\xef\xba\x21\xf1\x6e\xeb\x85\x01\xb6\xf2\x81\xe5\x9c\x95\x4c\xe4\x50\xcb\xf0\x71\xcd\x8c\xef\xa4\x50\x89\x9c\xa9\x02\xb4\xb3\xac\x90\x55\x3e\x73\x95\xd2\x95\x2f\x5f\xd4\x4f\x19\xc7\xb3\x73\xf5\xfd\xf7\xd6\x0f\xd9\x81\xc2\xbf\x12\x7f\x29\xda\x0d\x75\x33\xeb\xe7\xd7\x96\x6a\xec\x7d\xa3\xbc\xa5\xd1\x81\xec\xea\x0c\xd4\xe7\xbe\xf5\x0f\x14\x67\x82\x78\x67\x5c\x8e\xde\x84\xeb\xa0\xfc\x69\x4f\xf3\x1e\xa4\xe7\x07\xab\xb4\xc7\x69\x63\x97\xed\x58\x2f\x96\xd6\xaa\x81\xb5\x3e\x49\xb9\xa0\xc6\x32\xf4\x15\x6c\xf1\x30\xa7\x28\x66\x07\x9a\x35\x8a\x8d\x37\x1c\x8e\xac\x52\x47\x3b\x19\x26\x0b\x95\xfe\x91\x72\xcb\x00\xaa\x87\xed\xae\x8e\xdb\x3b\xdd\xb6\x63\x82\x24\xe3\x36\xb1\xbd\x59\x21\x9e\x9e\x5f\x24\x41\x00\xb0\xa6\xd2\x0c\x8e\xab\xf3\x11\x3a\xa5\xa1\x85\x02\xe8\x0e\x6b\xb6\xe4\x8a\x3d\xd2\xa2\xe8\x45\x03\x9c\x5f\x17\x83\x43\x18\xc7\x5d\x56\x43\xf6\xfa\x3d\xbc\xd6\x28\xa1\xe8\x2a\x74\x5c\xd6\x52\xcc\xbf\x66\x63\x28\x05\xdd\xe0\x24\x2f\x5c\x68\x0e\xdd\xa1\x61\xf8\xf6\x6a\x00\x1b\x5d\xf8\x39\x0f\xc2\x61\xcb\xc1\xbb\x34\x0e\x69\x10\x46\x84\x1f\x00\x33\x1a\x54\x0c\x80\x5b\x94\xf1\x30\xde\xa0\x63\xa9\x79\xe0\x2c\xd6\x25\xbb\xc8\xab\x77\xf7\x3f\xbf\xb9\xf9\xf3\xeb\x37\x73\x72\x53\x14\x8e\x1f\x6a\x70\xb0\x5b\xaf\xfb\x92\x65\xa1\x58\xb5\xa5\x08\xea\x5c\x25\xf8\xdf\x2a\x1c\xab\x3f\xfa\x1b\x5a\xd6\x58\xb5\x4b\x6b\x5d\x5f\x06\xa4\x01\x3e\x5c\x90\xd7\x4e\x45\x87\x1d\xab\xbd\x84\xbe\xe6\x86\x95\x12\x75\x0b\x8a\xd6\xde\x86\xe8\xea\xba\x4b\x8c\x14\x91\x8c\x4e\xe2\x23\xb0\x22\xa0\x70\xe2\x73\x78\x26\x61\x43\xa5\xcb\x9d\x01\x7b\x13\x6e\x61\xac\x17\xd6\x8c\x31\x3c\x39\x7f\x8a\xe1\x72\xb5\x83\xfe\xe7\x5a\xb3\xdc\xb3\x3b\xe6\xe4\x07\xf4\xb3\x85\xc2\xd5\xde\x0b\xd7\x0d\x2f\xee\xf7\x25\x6a\x50\xe1\xb5\xea\x19\x17\xfd\xf7\x6a\x2c\xe0\x10\x21\x6e\x61\xad\xf2\x42\xb3\x64\xef\x19\x3e\x2d\x1f\x9a\x2f\x10\xca\x81\x03\x69\x65\xe4\xac\xc9\x16\xc5\x35\xe7\x31\x10\x0f\x1f\x96\xb1\xaa\xab\xdc\x33\x50\x9d\xab\xca\xaa\x4d\xf1\xa5\x8a\xe2\x8a\x15\x0d\x4a\x4c\xbb\xb7\xd0\xe7\xc9\x4e\x63\xb8\x48\x62\x6c\x09\xb6\xf8\x60\x6f\xb8\x96\xe2\x11\x60\x99\x72\x60\x30\xcf\x27\xc9\x17\xce\x39\xe6\x12\xce\x35\x09\xd4\x12\x7c\x72\xfc\x96\x10\xcd\x00\xf0\x7f\xb3\x5c\x72\x81\x18\xd6\x25\x5f\x45\xdd\xe7\x47\xdf\x6c\x6e\x37\x07\x21\x6e\x62\x86\xfd\xf7\x1a\x14\x2b\xc4\xc2\x31\xd4\x51\x7b\x4a\xad\x3b\xd4\x00\xfb\x8d\xa4\x83\x99\xf8\x17\x86\x06\x6f\x07\xf9\x12\x7e\x37\xb8\xf1\xb7\x77\x64\x41\x2d\x63\xc5\x4e\x28\x76\x52\x24\xa9\x26\xe4\xc1\x14\xbb\xaf\xee\xb9\x16\x7c\xa5\xc8\x20\xbc\x86\xb8\x25\xb8\xbd\xf3\xbe\x22\x9c\xa4\x36\x3c\x7b\xd8\xc1\x47\xb0\x14\x90\x0b\x25\x56\x3a\x0c\x5d\x5e\x30\xf2\x2f\xdf\x90\xff\xf2\x5f\xc8\x9f\xfe\xf9\x8f\x7f\xf8\xfd\x37\xdf\x3c\x5b\x4a\x45\x5e\x90\x9c\xee\x9e\x5b\x01\xe9\x41\xb8\x6e\x19\xc9\x3f\xff\x73\x90\xe2\x85\x1f\xe4\x45\x23\x85\x9b\x4a\x95\xdf\xfc\xd1\x7d\xe3\x77\x64\x2d\x2b\xa5\x8f\xc4\xf7\xbb\x4f\xfc\xa9\x4f\x4d\xb4\x7c\x1a\xf8\x79\x28\x83\xba\x7b\xc9\xbb\x82\x5f\x86\xa9\x0d\xa4\xd6\xac\xb1\xd6\x55\x7d\x8d\x34\x57\x77\x44\x49\x66\x23\x9b\x08\x48\x83\x9b\xc3\x33\x82\xa8\xb9\x26\x98\x71\xd5\x0a\x96\x34\x41\x91\xc1\x20\x70\x57\x4b\xb8\x68\x53\xbb\xe8\xe8\x73\x8d\xc5\xc7\xa2\xc2\x27\x17\xf5\x50\x2e\x6a\x2d\x01\x3a\x84\x38\xcf\xac\xdd\x34\xf0\xe1\xb6\x42\x87\x50\x6a\xba\xb1\x4c\x07\xa1\x34\xb2\xe5\xd6\xad\xd5\x47\x5c\x92\x7a\xe9\x5b\xee\x33\xd7\xc6\x74\xa0\x14\x47\xab\xc8\xe1\x9e\xeb\x6e\xb1\x73\xa1\x44\xa8\xb5\xed\x5b\x58\x61\x61\xab\xe6\xd3\xfd\xe2\x16\x78\x0a\x94\xa8\x4e\xdc\xd4\x47\xe7\x84\x24\xce\x24\x22\xf8\x87\xb0\x52\x45\x5d\x17\x50\xd6\x99\x77\x59\x2d\x0a\xae\xd7\x08\x1b\xa3\xe0\x2c\x93\xcb\xd6\x6f\x14\x1d\xf4\xda\x9a\x35\xb5\xb6\x80\x36\x10\xe9\xb7\xdc\x76\xe1\x79\xe8\x82\x2c\x2a\x5e\xa0\xbf\xa8\xde\x57\x8f\x4e\xc5\xad\xed\x1f\x6b\xa3\xf0\x6e\x99\xda\xb9\x08\x0b\xa8\xbb\xe0\xcd\xaf\x39\x2c\x6b\xd8\xfc\xa2\xcd\x96\xfd\x25\xc3\x9a\x41\xd5\x8a\x2f\x54\xf1\x03\xa7\x12\x80\x2e\x8e\x87\x63\xc8\x33\xde\x2f\x7a\x1b\x1f\x8c\x8f\x6f\x55\x4a\x31\x61\xd0\x47\xf1\x3c\x30\xf4\xcf\x62\x41\xbb\x8d\xe6\x62\x35\xab\x7f\x37\xab\xed\x68\x08\x9b\x8e\xf4\x68\x8d\x01\x98\x69\x23\x15\x5d\x05\xc0\x4e\xf8\x9b\x3a\xd5\xcc\x79\x0b\x41\x34\x6a\xff\xb7\x35\x6d\xa5\x9a\xee\x51\x1b\xba\xb3\xd1\x95\xf3\x56\xe6\xc7\x2f\xf4\x3d\x60\x4e\xf3\xe3\xae\xfe\xe1\x81\x1c\xae\xd8\xf6\x06\x7e\xd1\x67\x2f\xb8\x92\x83\xad\xf0\x46\x72\x31\x5c\x37\xed\xeb\x92\x29\xcd\xb5\x61\xc2\xcc\x90\xaa\xfe\x8d\xf3\x4d\xc1\x10\x66\x2f\x8e\x6d\xe5\x80\x33\x24\x6a\x87\x8f\x2b\xa8\x39\x35\x14\xbd\x98\xc1\x75\x6c\xf9\x65\x6b\xab\xc8\xae\xe2\x8f\x30\x85\x7b\x41\x4b\xbd\x96\xe6\x55\x4d\x10\xb3\xac\x8e\x0e\xd8\xfb\xa4\x57\x80\xbb\x85\x5c\x34\xd7\x8a\x18\x4f\x33\x1e\xbf\x62\xb7\x47\xdb\x41\x4f\x8e\x92\x04\x67\x41\x73\x90\x21\xf7\x0d\x83\x5b\x35\x74\x14\x9c\x7a\x56\x9b\x62\x0a\x60\x0d\xde\xd3\xd8\xfd\xc8\x51\xea\x2d\x72\x8d\x31\x8c\x42\x87\x50\x22\xd8\xa3\x67\x0f\x3b\x7c\xf8\x71\xdb\x91\xda\x0b\xf5\xf2\x08\x79\xf7\x2e\x7a\xa8\x35\x54\xd7\xe7\x9b\xe3\x03\xdf\xf7\x93\x1e\xa5\xbb\xb7\x6c\x9d\xd1\xbb\x8f\xd5\xd5\x1e\x17\xac\x0e\x36\xb8\x3b\xe6\xf8\x96\x61\xdf\xbe\xd6\xbc\xdc\x4a\x53\x94\xba\x5b\x08\x08\xdd\xa2\xfc\x5c\x56\x76\x7b\xaf\xc8\x23\xb8\xb3\x05\x31\xf2\xb8\x65\xe4\x36\x60\x03\xdd\x58\x9b\x41\xfa\x92\xa1\xee\xca\xdb\xc7\x59\xb5\x96\xe3\x28\x59\x88\x62\x02\x92\xe6\x98\x6c\x0e\x02\x09\x4b\x3e\x58\x42\xb2\x5b\x5d\xe5\xee\x16\x8b\x85\x3a\x50\x14\xc2\x5f\x7d\x6c\xb0\x86\xef\x61\x13\x64\x48\xc9\x61\x22\x1b\x0a\x7e\xdc\x2e\x3b\x34\x8f\x54\xec\x6d\xb4\xb2\xbf\x70\x91\xb7\x0a\xfd\x0f\x87\x7b\xed\x12\xdf\xdc\xdd\xe2\x08\xe7\xe4\x3b\xa9\x20\x8b\x4b\xba\x40\x10\x57\xf9\xac\xa4\x50\xee\xc1\xae\xfd\x55\x3d\x8a\x7e\xe5\xa9\x55\x88\x7a\x6c\x2c\xe5\x81\xf7\x77\x6c\xed\xe6\x07\xf1\xa6\x4d\xab\x71\x7e\x9a\xde\xd5\x1d\x3b\x9a\x21\xb7\xed\x61\xf9\x8e\xbd\x74\xc6\x13\x8f\x66\xc8\x71\x31\x83\x75\x3b\xfa\x87\x9e\x9a\x19\x83\x96\xce\x60\x55\xfd\xfd\x82\xe6\x4d\x0d\xf2\x4e\xf6\x88\x2f\x69\xde\x14\x29\x0f\x94\xbc\x3d\xd3\x35\x5a\x7f\x7f\x0c\x22\x72\xb8\x82\xff\x99\xd1\xc3\x27\xaa\xda\xff\x15\x55\xec\x8f\x68\xe7\x30\x5c\xa9\xff\xcc\x2b\x7e\xb2\xea\xfc\xe7\xa8\xcc\x3f\xae\x2a\x7f\x03\x4e\x1d\xb2\xa2\x13\x2a\xf2\x7f\x55\x1c\x33\x8c\xe7\x76\xf6\x7e\x50\x88\xdd\xb8\xe2\x6f\x80\x70\x07\x70\x92\x93\x53\xda\xb5\x34\x82\xd6\x5a\xb0\x53\x0b\x2e\xfa\xa0\x4a\x21\x59\x02\x79\x4d\xaf\x3f\x59\x21\xa9\xa3\x13\xc1\xf7\x5f\xea\x02\x36\x71\xd8\xb5\x5f\xc3\xf1\x9a\xdd\xc4\x01\x94\xdb\xc7\x35\xeb\xfc\x12\xbc\x06\x37\xef\x5e\xf5\x5f\xda\x29\x41\xd7\x9b\x81\x41\xe1\xe0\xeb\xbf\x58\xbe\x1d\x70\xd7\xd5\x76\x19\x62\x99\xaf\x30\xdf\x14\xd1\xbd\x90\x23\xe3\xb2\xbe\x80\xfd\x21\x07\x75\xc0\x54\xc3\xe7\x81\x21\x0c\x1c\x29\x3e\x35\xa6\x9b\x96\xcf\xfc\xd0\xe4\x33\xe3\x0a\x75\xf2\x99\xeb\x45\x89\xab\x3d\x68\xe4\x97\x4a\x04\x96\x27\x4b\x04\xae\x7d\x53\x6e\x37\x8e\xa6\x03\xdf\x8a\x2b\xf2\x4e\x1a\xfb\xff\x30\xb5\x2f\x14\xbb\x14\x39\x79\x25\x99\x7e\x27\x0d\xfc\xfe\x24\xcb\x84\x03\x4c\x58\x24\x87\xbe\xc7\x94\x1f\xb0\xb2\x21\xdc\x82\xd0\x7b\x3f\xdd\xa8\x5c\xf3\x76\x6e\xe3\xad\x20\x52\xf9\xd5\xa8\x13\x1c\xb5\xfb\x80\xd7\xfa\x85\x14\x33\x6c\x48\x11\x20\xdd\x9b\x3d\x69\xbf\xd2\x5e\xc3\xf6\xc7\x42\xcb\xdf\x19\x8a\xeb\x8b\x01\x5e\x02\xfc\x0b\x58\x08\x65\x01\x15\x08\x73\x44\x61\x0f\x17\xf1\x25\x76\xd5\xa8\x61\x2b\x9e\x91\x0d\x53\x2b\x46\xca\x70\x75\x85\xa8\x56\xd6\x69\x45\x53\x03\x85\xe0\x62\x82\x8a\x0f\xac\xff\xfd\x59\xbd\x0d\xe7\x0c\x3b\xc2\x65\xf2\xc6\x0a\x9f\x2f\xa4\x60\xb5\x06\x80\x77\xc1\x86\x42\x03\x8f\x7f\xaf\x4b\x83\xfc\x07\x29\x29\x57\x7a\x4e\x6e\x88\xe6\x62\x35\x00\xe5\x6f\xbf\xe3\x7c\xb4\x6d\xf2\x96\xf2\x41\x05\x00\x2a\x08\x0b\xf4\x5b\x94\xcb\x83\x3b\xf7\x8a\x3c\xae\xa5\x66\x20\xb0\xeb\x34\xf4\x8b\x07\xb6\xbb\xb8\xea\x9c\xa0\x21\xbb\xf8\xe2\x56\x5c\x5c\xd5\xee\x8b\xce\xc1\xad\xef\x39\xf0\x57\x5d\xc0\xdf\x2e\xe6\x07\xd7\x74\xbf\x6b\x3d\x74\x7d\x3f\x49\x87\x42\xc3\xea\x65\x41\xb5\xee\x2b\xf5\xb3\x97\x43\xdc\x2e\xe6\xd3\x7a\xfb\xa0\xd5\x5a\x56\x50\xbe\x41\xcd\xf2\xe8\xc0\x4f\x62\xfd\x65\xf6\xd3\xc7\xbd\xa7\x83\xcc\x8b\xef\xbf\x95\x79\x78\xc6\xcd\x4f\xeb\x12\xa3\x8f\x70\xad\x3b\xa7\x84\xf3\xae\xb5\x9c\x23\x47\xa7\xdb\x5d\x95\xba\xea\xe6\x77\xbc\x60\x08\xc0\x81\xe2\x07\x1b\xac\x0d\x09\x60\x1f\xcc\x64\xcb\x8a\xaa\xaf\x04\x2e\x17\x48\x0e\xcc\x01\x27\x87\xe1\xd8\x2d\x98\xa1\x35\x62\x72\xdc\xd2\x44\x31\xc3\x8f\xf5\x4f\xbd\xea\xe3\xf4\xe7\xc6\x19\xe2\x1d\x9e\x77\xf5\xde\xfd\xd8\xef\x22\x58\xd0\xec\x01\xb1\xc5\x5c\xbb\x95\x4a\x1b\x7d\x28\x7c\xf1\xf1\x48\x78\xf7\x58\x08\x03\x80\x41\x2e\x0f\x2e\xaf\x14\xc4\xca\x7c\xf6\xfa\x73\x80\x33\x95\x6b\xb6\x61\x8a\xee\x67\x14\xf6\x8e\x0d\x83\x95\xa0\x3e\x1d\x4f\xad\xe9\x3a\xde\xf7\x7f\x0d\x52\x44\x41\xd6\x2f\x44\x31\x0a\x66\xbc\x60\xaa\x9b\x4d\x1d\x4f\x09\xef\x1f\x91\x2c\x65\x21\x57\xc3\x03\xc1\x14\x7f\x9f\xfc\xe5\x5f\x49\x08\xdb\xac\xfa\x1c\xab\xdd\xb2\x87\xfb\x35\x04\x40\x3a\xc0\xb4\x60\x04\x23\xcc\x31\xbb\x14\xf7\x50\xae\xed\xf6\x55\x94\x29\x76\xf1\x5e\x40\xfe\x75\x33\x06\xcc\x4a\x05\xa9\x0e\x30\xbe\xf6\xdf\x74\x41\xb7\x03\x35\x4e\xec\x2e\x61\xb0\x8e\xa9\x59\x1d\xcc\xaf\x35\xa7\xc6\xa3\x6b\x24\x61\x10\x8c\xe5\x7a\x4d\xa8\xc3\x5b\x0e\xe8\x21\xcd\x08\x6e\x5f\x75\x5b\xbd\x2e\x95\xdc\x60\xbf\xd7\xdf\xfe\x9f\xbf\xfb\x2d\xf9\xcf\xff\xfb\xff\x21\x2f\xe6\xe4\x3f\xff\xe7\xff\xfb\x03\xd0\xfc\xcf\xff\xf9\xff\xf5\x0f\xd7\xd5\x45\x81\xaa\x76\x76\xa6\xb7\xaf\xea\xa1\xe6\x7c\x09\x47\xd9\xe0\x07\x30\xbc\x8b\x3e\x64\x18\x41\x2f\x4d\x97\x81\xdb\xb8\x9c\x8f\x2c\xad\x54\xb8\x90\xf3\xb4\xca\x0f\x6e\x5d\x51\x6e\xce\xb6\x54\x71\x7b\x42\xb1\xc8\xc3\x6f\xf4\x4e\x6f\xa9\xfa\x19\x7f\xf3\x33\xef\x8f\xaf\xff\x77\x41\xee\xe5\x15\xf9\x73\x8b\x51\xc0\x01\xcf\x58\x8e\x1b\x93\xd1\x22\xab\x0a\x0c\xf8\x38\x20\x6c\x98\x6a\xdd\x7f\x62\xc3\x36\x0b\xa6\x7a\x7b\x61\xc5\x14\x6c\x09\x23\x5f\x36\x3d\x37\x18\x39\x04\xa5\x42\x43\xea\x8b\xb7\x55\x61\xf8\xec\x0e\xcb\xb0\x5f\xc0\x64\xb5\x8b\xc7\xd5\x1e\xa2\x01\x4c\x02\x1e\xd4\x0f\xad\x9d\xf4\x52\x12\x6a\x88\x60\x3c\x9d\x71\xd8\xef\x8b\x7b\xd0\xf0\xea\x8f\xf5\xeb\x64\xea\x60\x5c\x76\x5e\xa3\xf3\x35\xa2\xbd\xfa\x97\x38\x1d\xe1\x2e\x30\x4a\xb6\xf6\x96\x92\x82\xfc\x9e\xfc\xf0\xc3\xed\xab\xa7\x96\x23\x71\x08\x9e\x0e\x5b\xc2\xaf\x7e\x6e\xfd\xca\xfd\x8b\x1d\xc3\xe9\xc3\xf9\xfd\x0c\x72\x50\x8e\x10\x93\xae\x66\xe4\x02\xd6\xa4\xb5\xc3\x17\x57\xb8\xeb\xbe\xbc\xf1\xa0\x96\x63\x65\x25\xde\x19\xbe\x54\x26\x44\x0f\xb1\xcd\xd4\x9e\x78\x5d\xf5\x04\x9b\xc6\xdc\xef\x98\x36\x7f\x8f\xb6\xe4\xf0\x95\xd6\xfd\xe9\x5e\xad\xbf\x7b\x43\x0d\x5b\x56\xc5\x3d\x33\x3f\x74\x7e\x77\x30\xce\x2e\xf2\x75\xe3\xb8\xdf\x48\x47\x1f\x4b\xe9\x3b\x01\xdd\xa2\xea\x93\xa4\x14\xc3\x80\xe6\x01\x5d\x40\xd8\xe7\xa0\x37\xf9\xaa\x31\x29\x30\x09\x25\x8b\x82\x8b\x15\x0e\x3e\xb8\xf1\x1f\xda\xbf\xc6\x4a\x0d\x4e\xf4\x61\x75\x0a\x00\x56\xd7\x75\xf4\x07\x72\xfe\x7d\x12\x60\x87\x60\x6b\xda\x7e\x19\xed\xef\xc6\x38\x57\xa1\xc0\x1a\x8c\x39\xe6\x5c\xdf\xf9\x5f\xef\xed\xae\x54\x39\x17\xb4\x20\x76\xe7\xea\xd6\xdd\xad\x51\xf6\x4a\xa8\x56\xd5\x13\x4f\xba\x85\xeb\x6b\x80\x90\xdf\x9c\x33\x5f\x71\xf0\x9c\xf7\x01\x17\x8f\xb4\x7b\xe9\x16\xb7\xac\x21\xf0\x03\xcc\x7f\x7c\x56\x2d\x30\x7e\x67\xdb\x4f\xa5\xb3\x3b\x61\x3c\x78\x98\x7f\x74\x02\xbb\xae\x46\x85\x57\x99\xbf\x8d\xf6\x87\xd2\x33\x8c\x63\xee\x9d\x99\xff\xfe\xff\x12\x18\x2a\xd6\x63\x69\xbf\xda\xc7\xcc\x72\x81\x05\x73\xbe\x67\xc2\x29\xee\x83\x73\x3b\xfc\xb9\xb7\xb2\x36\x52\x1b\xa2\x58\x66\xb5\xb2\x55\xf3\x57\xff\xc2\xc1\xfa\xd7\xb5\x19\x7c\x68\x66\x4e\x6e\x0d\xc9\xa4\xc2\x9a\x0a\x79\x0d\x71\xf3\x7f\xbf\xd4\x2d\xba\x57\x3d\x75\x22\xac\xb8\x80\x0d\x87\xcc\x9b\x4d\x85\x91\x25\x6f\xe8\xde\xdc\xdd\x12\x54\xab\xf6\x37\x61\x48\xf3\xe9\x3f\x03\xe5\x9a\xea\x03\x0e\xef\x65\x2b\xc5\xa8\x3e\x5c\xde\x9e\x9f\x1f\xd9\xd6\xbd\x7f\xf2\xac\x48\xb6\x2f\x00\xe2\xf4\xa2\xf9\x37\xd8\x63\x0c\xc3\x77\xfe\x8c\x75\xc2\x58\xfe\x2d\xf4\x82\xc4\x7f\x70\x18\x3a\xfc\x97\xff\x3f\x00\x00\xff\xff\xa5\x62\xa4\x48\x7e\xd7\x06\x00") func kubedbCom_mysqlsYamlBytes() ([]byte, error) { return bindataRead( @@ -644,12 +622,12 @@ func kubedbCom_mysqlsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_mysqls.yaml", size: 226387, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_mysqls.yaml", size: 448382, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_perconaxtradbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xdd\x72\xdc\x38\x92\xee\xbd\x9f\x82\x17\xe7\xe2\x9c\x13\x21\xef\xf6\xf4\xc4\xc4\xae\x6f\x36\x3c\xb6\xbb\xd7\x3b\x6e\x5b\x61\xd9\x3d\x13\x31\x31\x1b\x81\x22\xa1\x2a\xac\x58\x04\x1b\x04\x4b\x52\x6f\xec\xbb\x6f\x14\x29\xd6\x8f\x44\x22\xbf\x04\xc1\xfa\x91\x80\x2b\x5b\x45\x26\xc0\x44\x22\x33\x91\x48\x7c\x29\x4a\xf5\xab\x34\x95\xd2\xc5\x9b\x44\x94\x4a\xde\x59\x59\xac\xff\x57\xbd\xbe\xf9\x97\xea\xb5\xd2\xff\xb4\xfa\x61\x26\xad\xf8\xe1\xd5\x8d\x2a\xb2\x37\xc9\xbb\xba\xb2\x7a\xf9\x55\x56\xba\x36\xa9\x7c\x2f\xaf\x55\xa1\xac\xd2\xc5\xab\xa5\xb4\x22\x13\x56\xbc\x79\x95\x24\xa9\x91\x62\xfd\xc7\x6f\x6a\x29\x2b\x2b\x96\xe5\x9b\xa4\xa8\xf3\xfc\x55\x92\xe4\x62\x26\xf3\x6a\xfd\x4c\x92\x88\xb2\x7c\x93\xdc\xd4\x33\x99\xcd\x5e\x25\x49\x21\x96\xf2\x4d\x52\x4a\x93\xea\x42\xdc\x59\x23\xb2\x59\xf5\xba\xfd\xf5\x75\xaa\x97\xaf\xaa\x52\xa6\xeb\xf7\x44\x96\x35\x1d\x8a\xfc\xd2\xa8\xc2\x4a\xf3\x4e\xe7\xf5\xb2\x68\x68\x5e\x24\xff\x71\xf5\xe5\xf3\xa5\xb0\x8b\x37\xc9\xeb\xf5\x0b\xaf\x57\xed\xa7\x35\xfd\xb5\x3d\xfc\xba\xf3\x17\x7b\x5f\xca\x37\x49\x65\x8d\x2a\xe6\x4f\x5e\xb7\xc2\xd6\xd5\xeb\x72\x21\x2a\xb9\xf3\xfa\x55\xf3\x67\xf2\xed\x8e\x1b\xaf\x9f\xb0\x62\x87\xd6\xdb\xb9\xdc\x21\x94\x09\xbb\xfe\xef\xdc\xe8\x7a\xc3\x97\xe6\xcb\xdb\xc7\x1f\x98\x96\x0a\x2b\xe7\xda\xa8\xee\xff\x17\xeb\xf7\x44\x65\xb5\x91\x0f\xff\xdf\x70\x74\xfd\x1f\x51\x96\x55\xaa\xb3\xee\x37\xd1\x4c\x42\x92\xb4\x73\x79\xd9\x32\xfb\x6f\xd6\x88\xf7\x7f\x6e\xfe\x9e\xab\xca\xfe\xe5\xe9\x6f\x9f\x54\x65\x9b\xdf\xcb\xbc\x36\x22\x7f\x3c\x4d\xcd\x4f\xd5\x42\x1b\xfb\x79\x3b\xd0\x8b\xa4\xbc\x6b\x7f\x50\xc5\xbc\xce\x85\x79\xf4\xd6\xab\x24\x29\x8d\xac\xa4\x59\xc9\xef\xc5\x4d\xa1\x6f\x8b\x9f\x94\xcc\xb3\xea\x4d\x72\x2d\xf2\x86\xe5\x55\xaa\xd7\x7c\x69\x68\x96\x22\x95\xd9\xfa\x6f\xf5\xcc\x3c\xc8\xde\x43\x3f\xed\x3c\xbd\x49\xfe\xfb\x7f\x5e\x25\xc9\x4a\xe4\x2a\x6b\xf8\xdd\xfe\xa8\x4b\x59\xbc\xbd\xfc\xf8\xeb\x8f\x57\xe9\x42\x2e\x45\xfb\xc7\x75\xc7\xba\x94\xc6\x6e\x98\xd8\x4a\xe3\x66\x1d\x6c\xfe\xf6\x64\x8e\xdb\xd6\x70\x8f\x7a\x68\x77\x3d\x74\xad\xaf\xdf\x8d\x38\xec\xfd\x25\x49\x96\xe2\xee\x93\x2c\xe6\x6b\x69\xfa\xd3\x8f\x8f\x7e\x2b\x85\xb5\xd2\x14\x6f\x92\xff\xfc\xbb\xb8\xf8\xfd\x1f\xff\xf7\xef\x17\xe2\xe2\xf7\x7f\xbe\xf8\xd7\x7f\xfc\xff\xbf\x3f\xfc\xe3\xff\xfd\xdb\xff\x79\xf4\x4e\xef\x20\xbb\x3f\xeb\xd9\x7f\xc9\xd4\x6e\xfe\xdc\xad\x35\x6a\xdc\xa9\x2e\xae\xd5\xfc\xaa\x99\x8e\xc7\xe3\x1f\x7a\xa7\xe1\xf5\x6d\xf5\x21\x17\x95\x55\xe9\x9f\x73\x9d\xde\x5c\xad\xa5\xf7\xe9\x53\x6e\x1a\xeb\x76\x5d\x7d\x5b\x0f\xbf\xf7\xb7\xc1\x2f\xde\x21\x2f\x8c\x55\xf6\xd1\x8c\xef\xd1\xd7\x66\x29\xec\x9b\x44\x15\xf6\xc7\x3f\x38\x7b\x59\x6b\xa2\xb9\x34\xbd\xcf\x18\x29\xb2\x2f\x45\x7e\xef\x1e\xe7\x4c\xeb\x5c\x8a\xa2\xf7\x99\xd5\x5a\xc5\xc9\x8f\xef\x3d\xbf\xd4\xc8\xdf\x6a\x65\x64\xd6\xf7\xfa\xc5\x86\x78\xcf\x8f\xbd\xc2\xd1\x35\xf1\x7b\x6d\xe4\x7b\x55\xdd\xf8\xcc\x5c\x2a\xd2\x85\x2a\xe6\xbf\xe8\xcc\x7f\xfa\x32\x55\xdd\x7c\xee\x59\x39\x2c\x02\xdf\xbf\x7e\xf4\x7e\x7f\xa4\xf8\x3d\x56\x23\xac\x97\xc7\x0a\x95\x5b\x26\x3a\xd6\x0e\xfe\xf8\xfd\xeb\x47\x2f\x79\xf9\x49\xe5\x5e\x2b\x7d\xfc\x1a\xaa\x64\x6a\xa4\x1d\x25\x2f\xd5\x42\x18\x39\x82\x82\x9b\xe7\xdb\x01\xf6\xff\xdc\x75\xce\xe5\x7b\x2a\xcb\xc5\x75\x2f\x5b\x29\xa6\x2f\x75\xa1\xac\x36\x03\xbf\x26\x89\xb2\x72\x39\xf8\x23\xc0\xcf\xee\x11\x61\x8c\xb8\x1f\xd0\xd0\x76\x71\xb4\x25\xd2\xc9\xcc\x90\xcc\x42\x83\x68\x49\x7c\x95\xd7\x43\x14\xa8\x49\x48\x06\xfc\x03\xd6\x28\x08\x11\x59\xb7\xba\x92\x66\x12\xb9\xee\xa4\x88\x2d\xb7\xaa\xc8\xfa\x87\x34\xb1\x5b\x10\x4a\x6e\xce\x60\xd2\x4f\xd2\xb1\x68\xbd\xca\x5f\x44\xe9\x33\xf7\x99\xbc\x16\x75\x6e\x5d\x8e\x45\x18\xaf\xce\xa9\xfc\x08\xcd\x88\x4c\x7f\x92\xdc\xc8\x41\x11\xdc\x1d\xa4\x53\x02\x92\x46\x8d\x0f\xf3\xa2\x6d\x08\x47\x76\xbb\x74\xf1\xa5\x6d\x2e\xc5\xcd\x18\xbc\x4b\xc0\xda\x76\xb1\x66\x93\xe3\xd7\xf5\x40\x08\x0b\xe5\x58\x1f\xb4\x85\x72\xad\x52\xf2\x13\x75\xd9\x46\x32\x7c\x35\x8d\x7b\x19\x55\xca\x6b\x01\x19\xb5\xf2\xb6\x04\xa3\x75\x6f\xa1\x33\x79\x59\xcf\x72\x55\x2d\xae\xce\x45\x89\x86\xda\xdf\xbd\xb5\xd6\xa8\x59\x6d\x87\xbf\x67\x37\xf6\x45\x7f\xfb\xf8\x6f\x23\x36\x09\x8d\xa4\x70\xc5\x32\xd3\xb7\xc5\xad\x30\xd9\xdb\xcb\xde\x8d\xd7\x0b\xd2\xef\xd7\x4a\xe6\x99\x43\xbe\x39\xb4\x92\xc1\x08\x56\x7f\x03\x4d\xc7\x66\x98\x97\xa4\x3e\x67\x51\xa5\xf5\x7a\xd2\x88\xd8\xa6\x6f\xc0\x94\x38\xd5\x78\x72\xde\x76\x70\xcd\xb1\x36\xea\xf9\x53\x60\xa1\x49\x75\x61\x85\x2a\xa4\x71\xed\x6b\xd9\xa3\x4d\x9a\xe8\xca\x4a\x55\x7a\xd0\x92\x78\xd1\xec\xb8\x70\x04\x51\xec\xba\x1e\x2f\x89\x88\x53\x33\xad\xdb\xe2\x24\x20\x97\xa5\xbd\x7f\xaf\xbc\x76\x5e\x4b\x99\xa9\x7a\xe9\xbf\x59\x56\xbf\xcb\x4f\x6a\xa9\xac\x27\x05\xe7\x77\x5d\xa7\x47\xd8\x4b\xe6\xf5\xc9\x07\x97\xad\x30\x73\x69\xff\xfa\xd7\xcf\x47\x8c\xf3\xdc\xde\xaa\xec\x68\xdd\xbb\xa5\x26\x97\x77\xbf\x36\xee\xd9\xf9\x39\xd3\xed\xf6\xe2\x64\xbc\xc9\x17\x14\x59\x99\xc2\x71\xbe\xce\x75\x7a\xe3\x17\x10\x6b\x8e\x88\x47\x06\xbf\x1f\x68\x7c\xff\xee\x1d\x2d\x72\x7e\xdd\x3c\x95\x97\x6b\xe7\xb5\xb2\xb2\xb0\xbe\xa7\x4a\xe7\x71\x1e\x58\x66\xa3\x26\x62\xda\x93\x9f\x76\x70\xec\xd9\x53\xf6\xab\x2c\xb5\x97\x6c\x2a\x23\x53\xab\x0d\xf1\x3d\x4e\x86\x94\xba\x52\x23\x49\xac\x94\x6b\xe3\x34\x2a\x0e\xba\x1d\x1f\x9b\xad\x79\x5d\x59\x69\xfc\x4e\x6f\x64\x91\x95\x5a\x15\x76\x50\x11\x02\xeb\xe1\x88\xa7\x2f\x6e\x9e\x6e\x3e\xae\x5f\x88\xfb\xbd\x67\x27\xaf\x17\xba\xb2\x43\xbb\x5c\x8a\xd5\xa3\x18\x65\xfd\x55\x16\xb1\x94\x3d\xb8\xa0\x2a\xcf\xb0\x61\xba\x10\xe5\xdb\xda\x2e\xde\xab\x2a\xd5\x2b\x49\xad\x45\x97\x8d\xef\x48\x5d\xc9\x8a\x5e\x93\x2e\x42\x23\xcd\x41\x93\xd9\x26\xac\x76\x6e\x8d\x69\x2a\xbf\xf9\x6a\x95\x87\xd9\xf8\x58\xac\x55\x80\x18\xde\xf4\x1e\x7f\x13\x52\x6a\x63\x45\x7e\xc4\xfd\xc3\x8b\x71\x2c\xbb\xed\xda\x65\xc3\xf1\x49\xd4\x86\xfa\xad\x8f\x43\x17\x6b\x29\xea\xfd\xfb\xee\x80\xb8\xea\xa6\xf0\x33\x6d\x47\x4f\x0b\x30\xfe\xbb\x3a\x2f\x9d\x7d\xf1\xd0\x27\x97\xbf\xe5\xc6\xa5\x6e\xf7\xb0\xef\x72\xa1\x7a\xc3\x33\xa4\x7a\x5f\xbf\x78\xc2\x6e\xeb\x66\x7c\x6c\x0e\x2d\xb4\xd5\xc5\xf1\xb7\x1e\xd9\x44\x87\xf0\x6b\xc2\x6c\x9e\x68\x63\x6f\xb5\x19\x11\xf7\x38\x7a\x06\xc6\x49\x26\x36\x94\x46\xaf\xff\xde\x4f\xf6\x64\x0e\xbe\xf6\xb2\xab\x9f\xb6\x20\x47\x5f\xce\x14\x0f\x2e\x31\x60\x54\xcc\xc7\x38\x3d\xb7\x8d\xcc\xd5\xd8\x36\xc6\x71\x47\xdb\xe8\x73\xab\x6d\xc3\x4f\xb0\x1e\x0f\x88\x3e\xcb\xda\x36\xfa\x54\xeb\x31\x75\xf8\x73\xb1\xe3\x98\xb6\xb9\x73\x3f\x76\x9f\x73\x1e\xa7\x3c\x1e\x2b\x79\x90\xb8\xfb\xf0\xb0\x4f\xba\x6d\x94\x5b\xb8\x4b\x0f\x62\x14\x95\x37\xf2\x98\xa8\x4b\x53\xee\x3f\x49\x7e\x3b\x71\x7c\xbf\x6d\xe7\xb3\x76\xb1\x73\x78\x7f\xfa\x09\xf3\x6c\x7e\xdb\xd8\xaa\x22\xe1\x9d\xd7\x8f\xea\x89\xb3\x52\x13\xc6\x69\xfe\xe3\x41\x81\xcb\x31\x79\x69\x9a\x92\x9b\x13\xb0\x33\x28\x0f\x01\x66\xe6\x09\x6c\x9b\x97\x0c\xc3\xb9\x03\x23\xfb\xc1\xf3\x09\x46\x75\xc4\x5f\x2a\x50\xb6\xc1\xe3\x31\xc1\x2b\x85\x67\x64\x8f\x69\x3c\x41\xa2\x6d\xf4\xe6\xb9\x18\xa4\xe8\x4c\xba\xa9\x47\x67\xf2\x99\x38\x93\x95\x34\x2b\x95\xca\xb7\x69\xaa\xeb\xc2\x7e\xd3\x37\x92\x70\x8f\x18\xc9\x90\x75\xa6\x64\x11\x34\x53\x2c\x49\xe4\x5d\xa9\x4c\x73\xbd\xf8\x4a\xa6\xba\x18\x4e\x59\xd9\xb6\x9d\x35\xf4\xa7\x3f\x82\x63\xc1\x56\x0f\xb6\x6e\x82\xe7\xc1\x91\xd2\x0f\xcd\xfd\xe8\x14\x36\xe2\x2e\x5d\x1b\xc3\xe0\x06\x68\x7e\xab\xf5\xec\xde\x7a\x45\xbc\xda\x6b\xfb\xc7\x0b\x78\x19\x39\x57\x95\x1d\x71\x04\x6e\x65\x21\x0a\xdf\xc4\xbb\x51\xd7\xc7\xba\x68\xdd\x44\x87\xef\x2d\x5f\x1c\x81\x3c\xae\x94\x98\x99\x57\x00\x6f\xec\x69\xe4\x52\xcc\x47\xdc\x35\x96\xf7\xeb\xdf\xbc\xdf\x3f\x81\xab\xa0\x5a\xfb\x9e\x77\xbd\xa8\xf3\xc1\xc9\xee\x71\x36\x02\xd8\xfb\x8b\xef\x0d\xcf\x2a\x15\xb9\xfc\xf8\xe5\x08\x8b\x69\x2e\xac\xbc\x15\xfe\xca\xb2\x34\xda\xca\x74\xed\x08\xbc\xd7\x4b\xa1\xfc\x4f\xf8\x5f\x90\x60\x56\x55\xfe\xa1\x10\xb3\x7c\xd8\xc5\x00\x3e\xd6\x6a\x23\xe6\x72\x14\x6c\xc4\x03\x8d\xcb\x31\xfa\xa4\xba\xaf\xac\xf4\xcf\x73\x6f\xed\xce\x64\x48\x02\x0f\xd2\xdd\xef\x19\x75\xe2\xd2\xff\x6b\xf3\x5d\xec\x75\x3c\xb8\xfb\x3e\x99\x43\xad\x78\x5b\x37\xde\xd6\x0d\x70\xe1\x36\x00\x8c\x88\x7b\x25\xb5\xba\x49\x7b\x65\xc5\x1c\xfd\xd0\xfd\x6c\x4c\xd1\x68\xfd\xbb\x4b\xa2\xc1\x26\x9b\x42\x18\x56\x55\xb9\x90\x46\x1e\x2d\x0b\x63\x63\x28\x73\x95\xde\x7b\xa7\x52\x3c\xa2\x13\x80\xe9\xae\xb3\xad\x00\x79\x1d\x03\x07\x54\x8e\xa9\x1a\xfc\x29\x13\x56\xcc\x44\x25\xaf\x7a\x0d\xa4\x6b\xfa\x08\xc3\x48\x99\x00\xb7\xe2\x1f\xb4\x77\x0e\x43\x48\x2f\x5d\xa7\x01\x04\x56\xad\xdb\xf0\x61\x46\x0f\x31\x78\x6e\x63\x07\xa8\x49\x97\x91\x1b\x36\x70\x0e\xe3\x46\xe8\x2b\x97\x51\x73\x19\x34\xb7\xc2\x76\x1b\x32\x07\x1b\x06\x47\xbb\x10\x79\x4f\x6e\xd3\xf0\x28\x54\xf1\xf4\xa2\xa7\x4b\xcc\x4a\x5d\xd9\xb9\x91\xd5\x5f\xdf\x7e\xf2\xd1\x86\x0d\xfe\xd8\x18\xcb\xb4\x39\x02\x1d\x69\x9e\x1a\x6c\xc7\x77\xba\x28\xda\x1d\xa4\x1b\x23\x00\x0c\x1f\x63\x9e\x5e\x69\xe4\xb5\xba\x9b\xda\xba\xce\xfe\x30\x86\xcb\xb3\x3a\xbd\x71\x1f\xe5\x45\x16\x27\x33\x91\xde\xd4\xe5\x28\x5b\x3a\x4f\x07\xb9\x12\xa7\x29\xd0\x34\xe5\x3a\x1d\xde\x6b\x20\x5c\x46\x81\x52\x39\x34\x13\xd2\x33\xec\x1a\x7c\x76\x44\x5e\x9c\xdc\xf4\xcb\x38\x51\xc6\xcf\xc2\xa8\x9d\xcb\x3e\x45\xe4\xfc\x92\x4a\x1f\xde\xa7\x08\x80\x77\xd0\x67\x6b\xce\xb4\xe2\xfd\xfe\x88\xb3\x35\x27\x30\x6b\xd7\x50\x49\x01\x80\x5a\xf7\x07\x07\x88\x0b\x05\xdc\xea\x45\xd0\x01\xe4\xca\xa6\x17\x78\x79\xb8\x80\x5e\xd9\xc4\x42\x0b\x3b\x26\x9b\x0e\x40\xd8\xfd\x87\xfa\x81\x61\xf7\x07\x85\xc8\xaf\x0b\x74\x33\x61\xc8\x6f\x78\xdd\x40\x47\x80\xf6\x69\x02\x73\x4a\x02\xcb\x32\x29\x62\x73\xea\x04\x9c\xdd\x79\xcc\x01\x3c\xbb\x3f\x2e\x62\x5e\x87\x81\x68\xbb\x86\x4e\x2a\x75\x1a\xd9\x35\x30\x43\x8b\x91\x01\x82\xe6\xe9\x20\xc9\x19\x47\x5b\xf2\x08\xb0\x2d\x7b\x90\x64\xf0\xaf\x6b\x9c\x6c\x38\x2c\xd9\xc9\x63\x06\x81\xb4\x2c\xd7\x41\x2a\xb3\x5f\x6c\x3d\x3a\x8e\x51\x59\x83\x1f\x06\xce\xed\xda\x91\xdc\xc4\xa9\xe4\xf8\x19\x09\xdd\x59\x3b\x9e\xd0\xad\x2e\x74\x26\x80\xa3\xc1\xae\x4d\xb3\xab\x80\x8c\x07\x68\x61\x78\x19\xc0\x70\xfe\x2f\x33\x1d\x16\xcf\xfd\xe5\x67\xfe\x72\xf3\x7e\xf1\xac\x5f\xd6\x47\xe2\x19\xbf\x58\xbe\x2f\x98\xed\xcb\xc8\xf5\x45\x3d\x08\x44\x0b\xc1\xac\x41\x73\x7c\x51\xcd\x8b\xa9\x83\x7e\x24\x91\xae\xc1\x8a\xc0\x89\xa1\xb6\x3f\xa2\xc3\xef\xed\x38\x80\xc5\x5d\x3b\x17\x63\x34\x55\x5c\x85\x06\x3a\xee\x1a\x0f\xa2\x6e\x7f\x3c\x21\x79\x01\x6e\x92\x87\x70\xdd\x58\xbd\x81\x37\x2c\xa3\x1d\x25\x1b\xef\x62\x27\xff\x56\x9c\xcf\xa5\x4e\xa6\xc9\x4e\xfc\x2e\x74\xb2\x7b\xe1\xdd\x50\xe3\x5e\xe5\x64\x98\xc7\xe4\x65\xf8\x29\xbe\x97\x37\xf9\x42\xea\x79\x71\xd3\x43\x4e\xd9\x97\x36\x3d\xfa\xe0\x5f\xd8\x9c\x7c\x29\xb0\xae\x6a\xb2\x56\x02\xc7\x99\x3d\x8e\x9b\x0a\x11\x74\x01\x4a\x77\x0d\x8e\xfc\x39\x01\xa6\xf7\x87\x85\x04\xad\x28\xc0\x69\x26\x45\x88\x1f\xfd\x40\xd4\x5d\x3b\x52\x6c\xc6\x81\x11\xb7\xe9\xf1\x4c\x0e\xef\x68\x40\xeb\xae\x1d\x2f\x3e\xec\x04\xbc\x3e\xf6\xf0\x30\x29\x76\x02\x63\x77\xed\x79\x6c\xf2\x08\x20\xed\xae\x9d\xca\x6e\x25\x46\x5a\x4f\x6a\x43\xe7\x00\xee\xee\x1a\xbc\x4c\x68\x20\xef\xfd\xa1\x21\x87\xe7\x34\xb0\x37\x93\x26\xc4\x15\x08\xf0\xbb\x6b\x2f\x33\xaf\xc5\x0d\x14\xbe\x4f\xef\x64\x33\x07\x06\x01\xc5\xf7\xbb\xa3\xa4\x65\x18\x60\xbc\x6b\xf0\x1a\xa2\x00\xc7\xf7\x07\x06\x31\x96\x02\x20\xf7\x20\xe9\x06\x24\x67\x12\xc4\xa6\xca\x09\x54\xbe\xdf\x23\x35\x5d\x2e\xe0\xf2\xae\xa1\x13\x46\x02\x99\xef\x0f\x0d\x5a\xd7\x27\x7c\x3a\x8f\xcd\x95\x0b\x00\x7d\xfb\x14\xb1\x2b\x84\xe6\xd2\x05\x8c\xde\x35\x74\x2a\x83\x32\xde\x86\x53\xf5\xa0\x2a\x0b\xc0\xcd\x41\x80\xf5\xae\xc1\x89\x79\x28\xe0\xfa\xfe\xf0\x10\x5f\x0f\x04\x60\xe7\x13\x0e\x6c\x9e\x21\x80\x76\x3e\xd5\x61\xc0\x76\x3e\x2d\x08\xc0\x9d\x4d\xf6\x68\x9b\x75\x02\xe8\xbd\x6b\xc7\xdb\x57\xc7\x8d\x0f\xb9\x37\x44\x00\xe4\x99\xfd\x63\xea\xb3\x1f\x58\x7e\xfb\x7b\x3f\xc0\xfc\xf6\x77\x02\x68\x7e\x7f\xcc\x04\x23\x96\xba\x2e\x48\xab\x06\x7d\xfd\x00\x84\x7d\xd7\x8e\x62\x19\xa7\x58\x05\x2e\xc8\x7b\xe6\x00\x83\x58\x5b\x07\x24\xfe\xfe\x70\x08\x49\x80\x21\xf2\x37\x2f\xa0\x06\x9a\x82\xcc\xdf\x1f\xe6\xc9\x7a\x9a\x2e\x68\xfd\xfd\x1e\x29\x4e\x83\x50\xfb\x9b\xe7\x8f\xb4\xe9\x77\x40\xf1\x33\x89\xa1\x3b\xe4\xf1\xa9\x77\x34\x64\xff\xe6\xc9\xe7\x92\xfb\x79\xd6\xa9\x92\xce\x52\x00\x3b\x0f\x9d\x47\x8a\x07\x51\x32\xa0\x6b\x93\x24\x79\x80\xa5\x04\xfc\x88\x33\x46\xed\xf9\xb8\x1f\x1a\x73\xc2\x43\x89\xed\x9a\xc7\x81\x7b\xdb\x38\xa8\xb1\x5d\xf3\x41\x8f\xdd\x1f\x28\x07\x45\xb6\x6b\x1c\x34\xd9\xfd\xde\xd8\x6c\xe1\xa2\x3a\x27\x0c\x94\xd9\xed\xf3\x20\xda\x6c\xd7\x98\xa9\x36\xbb\x2f\x21\xe8\xb3\x5d\x43\x37\x30\xbb\xf4\x59\x0c\xc6\x51\x69\xf7\x3b\x41\x2c\xc7\xfe\x1b\x30\xaf\xe0\xd2\x07\x5d\x7b\x3e\xba\x86\x5b\x22\x61\x6c\x7f\x89\x77\xc9\x84\xae\x79\xab\xba\xc4\xb7\x84\x42\x80\x9e\x7d\x34\x4a\xe2\x55\x5a\xa1\x6b\x5e\xea\x22\x89\x16\x61\xa8\xf9\x96\x64\xd8\x0c\x76\xc4\x82\xf1\x2e\xd1\xd0\xb5\x51\x6b\xc6\xa3\x64\x43\x90\x7e\x7d\x4a\x38\x04\xe8\xd8\x7f\xa9\x32\x4b\x3b\x74\xcd\x73\xa5\xfa\x39\x29\xa7\xe8\x74\x30\x3b\x41\x4a\x42\x74\xed\xf9\x18\xea\xb8\x29\xe8\x6b\x71\x53\x10\x37\x05\x13\x6d\x0a\xd8\x25\x2c\xba\xe6\x71\xdd\x04\x2e\x69\xd1\x35\x0f\x16\x7b\x94\xb8\xe8\x1a\xaf\xd4\xc5\xfe\x18\x79\xab\x9a\xb7\x9e\x27\xbf\x01\x00\xaf\x46\x96\x6c\x05\x4f\xd6\x07\x51\x41\x06\x4b\x67\xb0\x06\xe6\x28\xa5\xd1\x35\x74\x05\x38\x4b\x6b\xec\x0f\xea\x28\x81\x68\xaa\xf4\x06\x7b\x88\xee\x52\x1c\x6c\x72\x01\x81\x2c\xa8\x52\x1d\x4c\x72\x68\x5a\xda\x60\x09\x8f\xed\x43\x83\xa5\x3c\xf6\x87\x44\x48\xed\x40\x69\x8f\xae\x1d\xe9\xec\xc4\x59\xfa\x83\x4d\x8d\x28\x05\xc2\xa6\x77\x06\x60\x3c\x0e\xa8\x7f\x76\xb7\x31\xc3\xe4\xf4\x90\x73\x86\x4a\x93\x6c\x9f\x08\x85\xad\xe3\x28\x59\xd2\xb5\x23\x29\x09\xa2\xa4\x09\x9b\x1e\x5a\xe2\x84\x4d\x38\x2e\x20\x72\x01\xd1\xa5\x52\xf6\x49\x42\x4c\xa2\x4b\xa7\xec\x13\x45\xae\x4f\xd2\xa5\x54\xf8\x34\x9d\xa5\x55\xd8\xe4\x68\xa8\x7f\x26\x49\x4c\x23\x0d\x97\x60\xd9\x3e\xe3\x2a\xc5\xb2\xf3\xd4\x50\x49\x96\xfd\x71\x53\x7a\x8b\x8c\x86\x9d\x4d\xb2\x41\xc4\x65\x3a\x43\xbc\x83\xe7\x83\xcb\x14\x1a\x4a\x69\x02\x40\x51\x4c\x23\xb8\x4a\xcd\x74\xed\xd9\x24\x8b\x3d\x3b\x17\x21\xb8\x5d\x83\x4b\xda\x30\xe9\x62\xc2\x58\xcf\x82\x24\x63\x93\x25\x73\xba\x76\x24\xc1\x06\x4b\xea\x8c\xa3\x3b\x81\x50\x20\xb9\x10\x13\xe4\x59\x12\x09\x0d\x80\x68\x91\x8f\x94\xca\x0e\xee\x55\x11\x21\x69\x2f\x25\x7c\x2c\xd2\xbc\xae\xd4\x0a\xa8\x5c\x45\x69\xab\x96\xe0\x37\x35\xba\x0a\xd6\x2e\xa9\x5c\x15\xa1\xc8\xfd\xcd\x2d\xb6\x00\x25\x72\x4e\x8c\xac\x06\x5d\x55\x64\x4e\x6a\xe3\xb4\xce\x21\x86\x58\xfd\x38\x66\x80\x81\x8a\x67\x74\x77\x40\x47\x13\x0a\x52\x0d\xa3\x0d\x84\xbb\xb3\xb5\x82\xb0\xbe\xd5\x75\x57\x63\x0b\xf1\x25\x49\x75\xab\xae\x47\x09\x5a\xb8\x8a\x40\x87\xa8\x47\xe2\xfc\xb9\x4a\x8d\x2a\xed\xd5\x60\x2a\x0d\x59\x5d\x89\x51\xa9\x04\x61\x2d\x6d\x78\x31\xbe\x22\x08\x0e\xe8\xae\x0a\xdb\x4b\x21\xce\x2b\x66\x0a\x90\x1b\x0e\x00\x17\x28\x8b\x4b\xde\x6a\x20\x97\x24\x59\x71\x04\x5a\x4c\x58\xa5\x11\x68\xda\x91\x0a\x23\x30\x21\xa2\xb2\x08\x44\x27\x90\x38\x53\x95\x44\x40\x35\x1d\x46\x40\x69\xb9\x22\xaa\x86\x50\x15\x43\x30\xb9\x73\x55\x31\x40\xe4\x2e\xdc\x7a\xc5\x36\xf2\xd0\x1c\x41\x15\x41\x82\xac\x7d\xb2\x0a\x08\x5d\x01\x84\x9c\x27\x77\xe5\x0f\x64\x92\x90\x43\x46\x20\xe6\xc7\xda\xb3\xba\x63\x41\x54\xa0\xec\xa0\x4b\x11\xad\xe8\x81\xc9\x1e\x12\x2b\x41\x37\xd0\x01\x61\xcc\xa1\x48\x02\x75\xf6\x18\x64\xcd\x10\xa7\x89\xf4\x7a\x70\x56\xe8\x38\xa0\x7b\x14\x5a\xfe\xce\x54\x68\xce\xc6\xd1\x22\x2f\x3b\x22\x1c\x06\x4f\x70\xc2\x7a\xc5\xa4\x72\x06\xb4\x37\x1e\x9b\x85\x4e\x6a\x18\x61\x59\xec\x84\x86\x77\x3a\xc3\x39\x99\xc1\x4e\x65\x18\xf1\x75\xe4\x34\x86\x3e\x89\x01\x4e\x61\xc0\x80\x36\x62\x71\x03\x54\x86\xc7\x8e\x6f\x10\x8d\x47\x2f\xd5\x61\x98\x27\x68\x91\x92\x80\xa8\x87\xdc\x77\x70\xab\x5c\x9c\xaa\xa2\x0f\xbd\x37\xc7\x2a\x59\xf0\x71\x61\xc3\x7d\x33\xb0\x49\x73\x81\x9c\x92\x3d\x00\x97\x62\xa3\x4d\x6a\xc7\x0e\x5f\x09\xe4\x65\x25\x70\xef\xc9\x32\x93\x13\x98\x77\x61\x27\xcb\x0a\xc0\x6f\xb8\x32\x0e\xfd\x9f\x99\x5d\xf7\xb9\x7f\xca\x46\xdb\xe0\xde\x31\x65\xca\x1b\xeb\x1e\x29\x93\x36\xef\xae\xe8\x64\xa2\x0c\xdf\x00\x85\x25\x19\x75\xe8\x0e\xe7\xae\x91\x84\xa8\xaa\x10\x50\x54\x88\xac\x06\x81\x05\x3c\x90\x2a\x10\x21\x8e\xae\x86\x2b\x3f\x1c\x70\xcf\x4f\x80\x47\x9e\xea\x61\x08\x56\xd5\xe1\xb0\x31\x40\xb2\x8a\xc3\x21\x87\x43\x4b\x1f\x59\xb1\xe1\xfc\x36\x26\x40\x65\x86\x63\x7a\xdf\x31\xc2\xd6\xb4\xa9\x37\x21\x44\x85\x05\x48\xac\xb1\xca\x0a\xd8\xa1\x21\x56\x51\x21\x84\x45\x81\xab\x28\x3c\xef\x33\x77\xba\x52\xc2\x89\x9d\x8c\x3a\xab\x22\xd0\xb3\xee\xae\x86\x00\xc9\x3b\x52\x05\x01\x64\x1a\x52\xfd\x00\x24\x45\x57\x3d\x08\x12\x87\x27\x2b\x1d\xd0\x53\x40\x55\x38\x40\x26\x01\xaa\x6c\x00\xae\xb9\x13\x3a\x8d\xa4\xf9\x4f\x55\x2f\x70\xee\x54\xc8\xb9\xa1\x2a\x16\x20\x53\x13\x84\xa1\x76\xbc\x3a\x05\x54\xc9\x08\x4e\x39\xab\x11\x40\x49\x3b\x9c\x2a\x04\x98\x9f\xc3\xa8\x3e\x80\x11\x0c\x64\xd6\xe0\x6a\x03\x18\x35\x77\x95\x01\x8c\x06\x5c\x5d\xe0\xf4\x36\x86\x40\x25\x81\xc3\xee\xe5\xa2\xa3\xde\x3e\x04\x56\x07\x08\xa2\xba\x86\x2b\x02\xb8\xaa\x01\x40\x95\x00\xc8\x8f\x75\xe0\xf6\x1f\xcc\x3e\x84\x94\x39\x0a\x9f\x7f\x6a\x5b\x43\xe0\xf1\x93\xf3\xc1\xc2\xe1\x87\x4c\x13\x82\xbf\x7f\x62\x7e\x11\x85\xb5\x4f\x73\x91\x81\xb1\x7f\xc8\x2d\x21\x81\xa9\x1f\x46\x38\x87\x71\xf4\x69\xbe\x41\xf8\xf9\x67\x99\x99\x75\x36\xc9\x4d\x24\x26\xfe\xc9\x1e\x24\x03\xf8\xf7\x41\x8f\x92\x19\x98\xf7\xbc\xe3\x3d\x06\x4e\x25\x0b\xd2\xd2\x07\xce\x92\x09\x65\xc9\x3c\x0a\x6c\x1b\x17\xc2\xd2\x17\xbe\x92\x73\x26\xbc\x6d\x5c\xd8\x4a\x0f\x16\x70\xe1\x2a\x39\x50\x95\x2c\x98\x4a\xc6\xa1\xfd\xee\x0b\x28\x3c\x25\x0e\x4d\xc9\x64\x22\x0f\x92\x12\xd3\xd8\xfb\x4f\x43\x3c\x61\x61\xd3\x9f\xaf\x4e\xf0\xc1\xa1\xf7\x85\xd2\xf5\xc7\x9f\xf7\x52\x45\xc9\x18\xdc\x79\xcf\x1e\xfd\xc0\x6a\x7d\xb0\xe6\xd9\xcb\x3b\x89\xda\x39\x19\x89\x27\xef\x2b\xf8\xa3\x70\xe4\xbd\x65\xdf\x13\x3f\xde\xbb\x3f\x5f\xdc\xf8\x83\x2e\x35\x0f\xac\x78\x8f\x95\xc6\x77\x02\x4e\xc5\xb0\x33\x88\xa3\x78\xf0\xe7\x6b\x1c\xa3\xc3\x1c\x1d\x66\xf2\x85\xe8\x30\xb7\xcd\x0b\xb7\x9d\x99\x98\xcd\xc2\x6b\x67\xb2\xd1\x13\xa7\x9d\x8f\xd1\xce\x5d\x89\x27\x00\x20\x17\x16\x1a\x2e\x58\x4a\x2c\x70\x17\xdb\x89\xbd\x4e\x0e\x84\xc0\x5c\x47\xa4\x97\xc4\x5a\x3f\x70\xf0\x12\xc1\x56\xc7\x8e\xe2\x49\x4c\x75\x88\x4c\x80\xeb\xc5\x08\x86\x7a\xa0\x24\x17\x27\x6e\x3a\x81\x99\x4e\x4a\x9b\x03\x2b\xfd\x80\x71\x72\x12\x1b\x1d\xa2\x02\x60\xa2\x43\x74\x4e\x10\xa6\x80\xc0\xe6\x3d\xf8\x39\xe5\x19\x9f\x8d\x1f\x04\x5b\xc0\x85\x65\x3e\x1e\x79\x80\xc0\x2f\x3f\xe0\xc2\x05\xf0\xca\xb1\xa3\x45\x06\x4e\x79\x14\xf6\x9d\xc7\x28\x48\x4e\x08\x83\x1c\x64\x04\x86\x3d\x8e\x5d\xd6\xc1\x30\xc7\x31\x5a\x24\xd6\x38\xc3\x9e\x1f\x04\xad\xc7\x8d\x2b\x4e\x63\x8a\x13\x78\xe2\x80\xfe\x30\xaa\x74\x26\x57\x92\x9f\xe9\x0e\xc4\x9c\xec\x19\x6f\x04\xb0\xe8\xef\x3e\x02\x58\xec\x3c\xe6\xf6\xc5\x42\x61\x4f\x04\x44\x1a\xa3\x17\x3c\x05\x13\x7e\x96\x39\x31\x67\x6d\x99\x83\x99\x1b\x16\xe4\x77\x08\x61\x82\xe0\xb9\x0f\x28\x50\x0c\x38\x6e\x3e\xbd\x80\x13\x14\x00\x1b\x1d\x4d\xdf\x72\x9c\xeb\x12\xd3\xeb\xfc\xb9\x2a\x44\x59\x2d\xf4\x18\x80\x59\x33\x1f\x14\x08\xc2\xf4\xc2\xa2\x3b\xac\xbe\x5d\x6b\x9c\x24\x5f\x50\xeb\x8b\xa0\xe0\x9a\xbb\x8b\x86\xfa\xe0\x0f\x4d\xb7\xec\xc9\xb2\xa2\x5a\x7c\x95\x6b\x69\x96\x8e\x5b\x18\xd4\x8c\x8d\xe0\x99\x63\x78\x83\x3f\x3d\x6c\x8d\x1f\xf7\xe8\x1a\xa5\x98\xcb\xfe\x98\xa0\x73\x78\x43\x92\xe8\x90\x42\xe8\x73\xfb\xa5\x4f\x16\x2b\x66\x67\xb4\x02\x75\x5b\x2c\x60\xb9\xac\x44\x5e\x07\xa0\xf0\x93\xd1\x8e\xdd\x17\x66\x7f\x37\xb9\x90\x7f\x91\xf7\x64\x82\xc4\xf1\x1c\x70\xec\x3c\x8d\x41\x10\x3f\x47\xc3\xcf\xd0\x42\xb9\xd5\xa0\xcf\x8c\x65\x73\xe1\x73\xc6\xc9\xd8\x62\x70\x9a\x91\x95\x15\x7c\x03\x83\xe5\x5a\x81\xfc\xe6\x25\x13\xb1\xd2\x91\x39\x09\x43\x0c\xd6\xc3\x49\x41\x0c\x9a\x78\xe2\x4f\xf0\xd9\x84\xd2\x79\xc0\xc9\x6c\xb7\x30\x51\xe9\x39\x89\x9e\x9c\xd2\xa3\x4f\xd5\x9c\xa3\x19\xf4\xf6\x40\xef\xbc\xdf\xc5\x28\x8d\x5e\x4a\xbb\x90\x75\xaf\x80\x50\xe2\x23\xef\x4a\x6d\xec\x38\xf4\x0d\x97\x73\x9f\x1c\xfc\xcc\x6c\xc0\xe5\x62\x0c\x06\x5f\x72\xc1\x97\x08\xe1\x9a\xf9\x52\x74\xbb\x6a\x5d\x63\x83\xc9\xe1\xae\x9b\x5f\x17\x09\x37\x2f\xce\x23\x25\x0c\x4f\x95\xf2\xec\x80\x97\x32\x95\xb0\xd3\xa6\x12\x76\x5e\x1b\x9e\xd5\xc6\x4c\x53\xe3\x25\xf8\xf3\x65\xc1\x27\xa9\xdf\x63\xc6\x3c\x12\xf9\xd9\xbd\x70\x67\x8c\x97\xb6\xcf\x9c\x37\xbf\x3c\x75\xfe\xfc\x79\xe6\xa6\x7b\x4c\x21\x3b\x1f\xdd\x2b\x99\x94\x9b\x83\x3e\xb9\x94\xb0\x32\xce\x99\x42\x82\xbb\xac\x5d\x8b\xca\x1e\xee\xe4\xec\x94\x3d\xfc\x30\xea\xa0\x0f\xba\xc6\xcc\x1e\xb1\xb4\x2a\xe3\x4c\x26\x0c\x8d\xa2\x09\xdc\x30\x46\xd7\x4a\xae\x96\xca\x8d\x38\x95\x78\xa1\x26\x26\x3c\x79\x67\x4d\xbf\xac\xce\x67\xc4\x58\x76\x8d\x4c\x6b\xa3\xec\xfd\x3b\x5d\x58\x79\x17\xa4\x30\xbb\xc8\x73\x7d\x7b\x69\xd4\x4a\xe5\x72\x2e\x3f\x54\xa9\xc8\x05\x85\xc2\x97\xb0\xd4\x47\x2a\x4a\x31\x53\xb9\x42\x38\xcb\xd1\xdc\x22\x83\x34\x11\xe3\x02\x0d\x53\xef\x72\xae\x46\x64\x46\x03\xd7\xee\x4f\x63\xb4\xf0\x1a\x2b\x3b\xb1\x21\x27\x02\x97\x96\xd2\xe8\xf4\x17\x5d\xbb\x93\xae\x13\x5e\x98\xad\x3d\xff\xff\xaa\x75\x53\xe9\x8a\x4e\xdf\xe2\x8d\xd8\xd4\xc5\xdb\xea\x67\x2a\x03\x3e\x61\x5e\xa3\xc0\xd3\x64\x9a\xfe\x3f\xeb\x62\xfd\x7d\x81\xbf\xea\x3b\x91\xba\x9a\x4c\xf6\x51\x95\xfc\xa4\x8a\xfa\xee\x0b\x0d\xd4\x9b\x30\xd5\x46\x2e\x57\x12\x72\x93\x58\xeb\xcb\x68\x77\x09\x35\x2f\xa2\x96\xc8\x56\xf0\x22\x4a\xa5\x23\x7b\x10\x85\x15\xc6\xad\x2a\x32\x7d\x5b\x4d\x30\xab\xf3\x65\x25\xde\x19\x99\xc9\xc2\x2a\x91\x5f\x95\x72\x10\x33\xfd\xe9\xc0\x41\xc6\x3d\xed\x02\xdd\x4d\xf2\x24\xa9\x5b\x78\x13\x50\x0f\xe7\x8b\x90\x8f\xac\x17\xb9\x59\x0d\x6f\x48\xc8\x51\xe7\x62\x26\x87\x91\xfe\x78\x6e\x5b\x88\x2c\xa4\xb1\xe9\x18\x6e\xef\x1f\xf1\xfc\x29\xed\xe9\xfc\x04\xe7\x66\x80\x5a\x69\x6e\xe7\xff\xf0\x73\x41\x39\xf7\x87\x1e\x91\x3b\x2f\x86\x76\xda\xc9\x2c\x26\xa6\x93\x4e\x9b\x79\xc4\x29\x87\x8e\x60\xdc\x4e\xf8\x61\x4f\x60\x28\x27\xfb\xa4\xea\x2a\xd0\xce\x33\x3d\x8b\xa4\xb3\x4c\x7e\x0e\xcf\x39\xa6\x47\x44\x3b\xc3\x88\xbf\x48\xfb\x89\x88\xd3\x0b\x8e\xd6\xe5\xe4\x86\x19\x2c\xe6\xcc\x22\xcb\x8d\x74\x5e\xb1\x8c\x68\xc2\x59\x85\x88\x50\xce\x29\x44\x24\xc0\xdd\x38\x72\xa1\x61\x4e\x27\x74\xcd\x99\xe5\x64\x42\x0c\xe0\x3b\x95\xd8\x0c\xa3\x4e\xe4\xa4\xb6\x6f\xf0\xa7\x52\xd4\xd5\x53\xbd\x37\xbc\x5e\x4b\x9d\x7d\x93\xcb\x32\x17\x4f\xaf\xa9\xbb\xe6\x2d\xd5\x85\x35\x3a\xcf\xfb\x65\x8c\x34\xba\x45\xa1\xad\x70\x0a\xcd\x49\xf9\x19\x4b\x69\x45\x26\xac\x78\x09\xdf\x5a\x0d\xac\x3d\xf2\x3b\xaf\xaf\x55\xa1\xec\xe0\x61\x0f\xa2\x05\x0a\x9d\xc9\xb7\x04\x1d\x94\x56\xfb\x9c\xbc\x96\xc6\xc8\xec\x7d\xbd\xe6\xd6\x55\xba\x90\x59\x9d\xab\x62\xfe\x71\x5e\xe8\xcd\x9f\x3f\xdc\xc9\xb4\x46\x02\xb3\x60\x04\x91\x77\x46\xd6\x8e\x11\x87\x25\xe1\x9f\xc0\x2d\x85\x4d\x17\x1f\xee\x4a\xd3\x66\x8e\x33\x00\x8c\x58\x08\x49\x7e\x83\x6b\x1b\x13\x29\x29\xf1\x3b\xc9\x6b\xdb\x7a\x84\xa2\x27\x2f\x7d\xb2\x0e\x9b\x74\x1d\x26\x43\x3c\x78\xdf\x36\xef\x51\xf2\x82\xee\xdb\xe6\x87\xa3\x86\x63\x30\xb5\xcf\x77\x93\xc6\x78\x89\x79\x16\xbe\xfb\x12\x87\x07\xcd\xea\x6a\xb2\x2c\xe2\xc2\x8a\x0b\xcb\xf1\x6a\x5c\x58\x1c\x1e\x30\x3b\xb9\x95\x6a\xbe\x00\xc0\x04\x13\x2f\x08\x3c\xfc\x70\x25\xe1\x22\x63\x6d\xac\x3f\xf0\x70\xfb\x91\xe4\x83\x0c\xd6\xa1\xb3\xd2\x7d\x52\x18\x3f\x8a\xa3\xcc\xd6\x2e\xe1\x95\xcc\x9b\xd2\x68\xdf\xa4\xc1\x56\x2e\x63\x89\x47\x77\xaa\x6d\x51\xeb\xf7\xb6\xa8\xf5\xbb\x16\xdd\xa9\xb8\xb0\xfa\x5a\x5c\x58\xbb\xcf\x9f\xea\xc2\x62\x76\x82\x93\x47\xd9\x7a\xf1\xd4\x92\x43\xbe\x49\x98\xec\xbe\x52\x67\x2f\x2e\xae\xb4\xfd\xe4\x35\xb7\xa7\xf2\x86\x9a\x5c\x82\x6e\x5a\xf1\xb5\xe5\xa7\x80\xfd\x5d\xaf\xc4\x57\x53\xf9\x5a\x8a\xc4\xcf\x5a\x24\xe3\x54\xa3\xbf\xd5\x18\xdd\xb1\x9f\xf5\x48\xfc\x2d\x48\x32\x76\xc4\xbe\x96\x24\xf1\xb4\x26\x89\x87\x45\x49\x7c\xad\x4a\xe2\x6b\x59\x12\x6f\xbe\x34\xab\xf3\x93\x33\xb7\xa8\xbf\xf9\x25\x8a\xf7\x0d\xd9\x43\x12\x46\x98\x5f\xd6\x4b\x9b\x24\xa7\x29\xfd\x5a\x2f\x2e\xf0\x67\xdb\xea\x52\xe7\x7a\x7e\xff\x97\x49\xef\xf6\x70\x2f\xc5\xec\x8c\x2a\x86\x98\xba\x76\xf1\xd8\x11\x78\x41\x71\xa6\x49\xfc\x2a\x0f\x87\x27\xc6\x98\xda\x16\xb7\xc2\xbd\x2d\x6e\x85\xbb\x76\xc8\x18\x13\xd7\x51\x19\xeb\xa4\x8c\x30\xcd\xec\x9a\x32\xf0\x0b\x5c\xa7\x84\x25\xe1\xec\x2f\xe6\xcd\x24\xdb\x09\xe1\xdd\x15\x60\x58\x58\x8e\xe3\x11\xdc\x68\xc2\xf1\x8f\xc2\xaa\x18\x03\x01\x5a\x8c\x81\x84\x19\x68\xdb\x62\x0c\x04\x6a\x31\x06\x42\xbd\x13\x63\x20\xe0\x90\x63\x0c\x24\xc6\x40\x62\x0c\x64\xb7\xc5\x18\x48\x8c\x81\x04\x1e\x5c\xdb\x62\x0c\xe4\x49\x8b\x31\x90\xdd\xe7\x63\x0c\xa4\x67\x98\x31\x06\x42\xbe\x10\x63\x20\x7b\x8f\x06\x88\x81\x90\x8f\x1c\xb7\x9c\x85\x03\xe1\x96\xe8\x1c\xb3\x5d\x34\x4a\x1e\x28\x19\x00\x9a\x2d\x87\x12\x8d\x62\xcb\x42\x3d\xe7\xa1\xd7\xf2\xcc\x3e\x6c\xec\x99\x6b\xfe\x2c\x0b\x7b\x73\x54\x03\x62\x34\x19\x2a\x01\x47\xa4\x65\x56\x07\x67\x22\xd1\x32\x67\x83\x89\x40\x3b\x99\xa2\xc6\x51\x67\x19\x73\xc2\x47\x9b\x65\x03\x53\x73\x51\x66\x99\xd3\xc3\x42\x97\x65\xd2\xe6\xa1\xca\x4e\x36\xf3\x30\x92\x2c\x63\xe2\x79\x08\xb2\x51\xe1\x3e\x21\x7e\xf2\x0a\x17\x7a\x90\x1e\x1d\x81\x06\x0b\x7b\x70\xc3\x2e\x54\x53\xa7\xf9\xb2\xce\xf3\xab\x46\x26\x7d\x9d\xb9\x83\xfa\x53\x21\x3e\xbb\x50\xf6\x5d\xa7\x1e\xa7\xfd\x68\xaa\x28\x04\xb8\x37\x82\x57\x15\xe6\xfc\xa7\x7a\xb9\x14\x05\xb1\x30\x8e\x31\x30\xa2\x6a\x05\x38\x28\xd6\x65\xb9\x29\x50\xf3\xc0\xfa\x15\x3e\x54\xb1\x1a\x16\xfc\xf8\x9c\x57\x1d\x0b\xbf\x30\x20\x33\x04\xe8\x15\x01\xe1\x41\x9c\x7b\x76\xc2\x87\x39\xe7\x9a\xb0\xb6\x71\x03\x6f\x9c\xa0\x1b\x3b\x54\xc4\xab\x6e\xe1\x27\x21\x3e\x15\x2e\x3c\xe7\xd0\xa3\xca\x85\x57\x4f\xfc\x39\xe4\xd5\xba\xf0\x98\x49\xbf\x7a\x17\x7e\x33\xea\x59\xf3\xc2\x73\x52\xd9\x75\x2f\x3c\xfb\xe1\xd7\xbe\x38\x90\xec\xb0\x2a\x60\x78\x88\x0e\xbf\x0a\x46\x34\x15\x2f\xcd\x54\xb0\x62\x21\xf0\x8d\x48\xaa\x3e\x06\x7b\x9b\x06\xb8\xa4\xb4\xcf\x15\xdc\x2d\xdd\xb8\x63\xe0\x02\xe3\x2e\x2e\x8e\xd0\xb3\x05\x9e\x2b\xec\x5c\x41\x67\x09\x62\x69\xe4\xb5\xba\x0b\xee\x8c\x43\xd5\xf7\xb7\x63\x88\xb3\x33\xea\x51\x6c\xa9\x36\xe1\x8c\x20\x07\x2d\x9b\xc0\x48\x5b\x06\x3f\x08\xcd\x5c\x5d\xcb\xf4\x3e\xa5\x90\xf9\x71\x59\x29\x75\x65\xaf\xac\x70\x17\xf1\xe1\x12\x4d\x9a\x6a\x98\x18\x60\xbd\x5f\xf1\x33\x20\xf4\xb0\xdb\x4e\x33\x99\x8d\x69\x0b\x17\xd6\x96\x3f\x4b\x30\x0b\x8c\xcf\xd4\x85\xae\x40\xda\x89\x1f\x83\xd6\xe3\xff\x77\x29\x32\x47\xb8\xec\x69\x3b\x58\x4e\x11\xd7\x83\x4b\x46\xe7\xf8\x1c\xa8\x37\xbf\x8c\x1b\xc0\x47\xda\x7f\xa1\xf9\x24\xf6\x0a\x9b\x3c\xdf\xa6\x9c\xb6\xf6\x24\x5d\x00\x6d\xbf\x89\xe2\xfe\x0b\xbc\xd9\x69\xf2\x3b\x58\xb9\x99\x8f\xdf\x63\x0a\xcb\xdd\xc5\x4d\x3d\x93\xa6\x90\x56\x56\x17\xaa\xb0\x17\xda\x5c\xb4\x24\xde\x24\xd6\xc0\xd3\x5b\xa5\x0b\x39\x69\x71\x40\x6e\x76\xee\x7a\x8e\xa6\xd0\xc8\x36\x2d\xaf\x74\x7a\x73\xc6\x3a\x39\x4a\xef\xa3\x76\x1a\xa2\xc5\x78\xb8\x34\xf2\xca\x22\x95\xd8\xa2\xfb\x06\xbd\x14\xdd\xb7\xa1\x0e\xa2\xfb\xd6\xb5\xe8\xbe\x45\xf7\x0d\x69\xe7\x68\x00\xa3\xfb\x36\xd4\x4e\x50\x27\x47\xe9\x7d\xd4\x4e\x43\xb4\xc2\x26\x79\x25\x49\xae\x56\xb2\x90\x55\x75\x69\xf4\x2c\x58\xe4\x0f\xf3\xf0\xb8\xf9\xa2\x0c\xcf\xee\x74\x2e\x74\x70\xb2\xa0\x85\xca\x6b\x23\xbf\x2d\x8c\xac\x16\x3a\x07\x3e\x95\x77\x1f\x93\xb3\xe4\x60\x8f\x92\x37\x89\xb8\xd6\x62\x4e\x0a\xdb\x83\x64\x49\x88\x8f\xe7\x78\x90\x63\x5b\xb6\xb7\x78\x90\xd3\x7d\x86\x87\xc8\xf3\x0e\x3d\xef\x8d\xa1\x5e\x21\xee\x11\x32\xd9\x88\xdb\x52\x86\x1d\xf5\xb1\xa1\x1e\xf6\x33\x80\xed\xe4\x78\x7d\x93\xa5\xca\x43\xe6\x98\x21\x60\xaa\x50\x56\x89\xfc\xbd\xcc\xc5\xfd\x95\x4c\x75\x81\xa0\x9b\x4f\xa7\xb0\x4b\x69\x94\xce\x4e\x60\x20\x55\x9d\xa6\xb2\xaa\x4e\xc2\x8a\x31\xbc\xf0\x13\xb1\x63\x2f\x5a\x53\x1c\x73\x39\x5b\xb5\x94\xba\xb6\x47\x5f\x40\xe0\x90\x83\x5d\xfe\x5c\xf3\x31\xc4\x0d\x00\x66\xf2\x50\x9b\x6c\x79\x09\x4a\x3b\x17\x77\x84\x27\xee\xeb\xc5\xfc\xf1\x32\x78\x06\xce\x9a\xec\x69\x7c\xe0\x24\x77\x08\x4a\xa3\xad\x4e\x35\x94\xa6\xc3\x20\x8c\xa7\xda\xed\x49\x11\xb5\xba\xc3\x26\xf2\x18\x29\x32\x15\x77\xcd\x71\xd7\xfc\xa8\xc5\x5d\xf3\x6e\x8b\xbb\xe6\xb8\x6b\xee\xa1\x1b\x7d\xe1\xb8\x6b\x8e\xbb\xe6\x47\x2d\xee\x9a\x7b\x86\x1b\x35\x45\xdc\x35\x07\xdd\x35\x77\xd7\xce\x48\x1c\x6c\x54\xaa\x73\xb5\x54\xd4\xf6\x39\x19\x81\xb2\xc6\x92\x26\xe6\x85\x26\x59\x9d\xdf\xc8\xc1\x07\x2b\x99\xd6\x46\xd9\xfb\x77\xba\xb0\xf2\x8e\x50\x0d\xf8\x6c\x8b\x3c\xd7\xb7\x97\x46\xad\x54\x2e\xe7\xf2\x43\x95\x8a\x5c\x20\x80\x9d\xbc\x3b\x2a\xa9\x28\xc5\x4c\xe5\x0a\xe3\x34\x13\x10\x29\x3b\xbb\xad\x60\x92\x64\x06\xc9\x41\x4c\x4e\x6a\xd4\xac\x2c\xcb\x07\x81\x02\xa6\x86\x23\x47\xa5\xd1\xe9\x2f\xba\x2e\x00\xcb\xc8\x8a\xcf\x88\xec\x4b\x91\xdf\x7f\xd5\xda\xfe\xa4\x72\x59\xdd\x57\x56\x02\x88\x0f\x9c\x91\x9b\xba\x78\x5b\xfd\x6c\x74\x0d\x4c\xfb\x8e\x45\xf9\xd3\x1f\x83\xba\x41\xcd\x28\x3e\xeb\x62\xfd\xa5\x13\x7c\xdf\xf7\x4a\x02\x17\xc0\xa7\xfb\xbc\x4a\x7e\x52\x45\x7d\xf7\xa5\xb9\x6d\x17\x1e\x4e\x58\xae\x24\x0b\x34\x09\x47\xde\xd2\xd4\x0d\x35\x4f\xc2\xcd\xe3\x53\x10\xae\xa1\x99\x66\x13\x66\xa8\x98\x5b\x55\x64\xfa\xb6\x9a\x68\xae\xe7\xcb\x4a\xbc\x33\x32\x93\xc5\x7a\x6b\x77\x55\xa2\xd9\xdd\x4c\x36\x3e\xed\x66\x32\xe4\xb8\xcd\x02\x9d\xa8\x87\xe0\xfe\x8e\x15\xc6\xd6\x65\x8c\x46\x1f\xdd\x98\xc7\x68\xf4\x93\xc1\xc6\x68\xb4\xbb\xc5\x68\x34\xf2\x42\x8c\x46\x3f\x7e\x27\x46\xa3\x5d\xbd\xc7\x68\xf4\x88\x81\xc4\x68\x74\xcf\x70\xa3\xa6\x88\xd1\xe8\xa0\xd1\xe8\xca\x66\x8a\x88\x1d\xa2\x51\x85\x86\xd4\x97\x82\x42\x7a\x43\xc9\x59\x69\x96\xaa\x68\x62\x9b\xbf\xc8\xaa\x12\x73\x49\x23\x10\x82\xa2\xd6\x43\x3a\x1c\x84\x8d\x75\xd7\xc1\xc4\x19\xb0\xd2\x79\xbd\x94\xef\xe5\x4a\x91\x87\x05\xc1\xb3\xe3\xb2\xa6\x57\x14\xf2\x91\xb5\xc2\x27\x48\x04\xc3\xf3\xb5\xb6\xdf\x45\x3e\x7a\x78\x14\xb5\x76\xc2\x9b\x70\xe9\xa1\xe7\x7b\xb9\xee\x74\x92\xe9\x6e\x29\x1b\x5d\x8a\x39\x78\x4e\x71\x7c\x79\xda\x46\x98\x71\xc2\x28\xf6\x57\x55\xcf\x26\xe1\xf3\x03\xdd\x0f\x77\x25\x14\xe7\x9b\x64\x75\x6d\xa4\xe8\x04\x17\xd7\xad\x36\x37\xaa\x98\xbf\x57\x04\x7b\x20\xc6\x9c\x02\x2e\x3d\x09\x95\x86\xac\x7f\x08\x1e\x0d\x55\x24\x48\xb4\x8e\x97\xa2\x0d\x47\xea\x18\x51\x18\x9f\x88\x3c\xb4\xf3\x87\x05\x16\x8c\x89\x71\x58\x85\xee\x23\x78\xc9\xe3\xbc\x58\x18\x63\x0e\xf8\x71\x30\x5e\x14\xcc\x23\x3a\xc5\x8c\x80\xb1\x7b\xe0\xde\xdc\x86\x63\x5f\x9c\xc8\x17\x33\xee\xc5\x89\x7a\xa1\x31\x2f\x5e\x7e\x3f\xb8\x8b\x85\xf7\xb0\xfc\x1d\x2c\x7b\xff\x3a\x7a\xf7\x8a\x47\xb9\x26\x31\xe2\xc0\x86\x18\x37\xcd\x68\xdc\xe4\xe8\xba\xee\x05\x4a\xda\x31\x44\x02\x7a\x0c\x80\xfc\x8a\x2e\x49\x74\x49\xa2\x4b\x32\xb2\x87\xe8\x92\xec\xd2\x8c\x86\x62\xb8\x45\x97\xc4\xdd\xa2\x4b\xf2\xd0\x9e\xa7\x4b\x42\x3e\x02\x01\x58\x21\x02\x45\xf9\x2b\xa8\x50\x82\x7e\x0a\x68\x1f\x19\x42\x80\xe9\x67\x68\x6a\x38\x69\x4c\xe8\x29\x1a\xb6\x00\x00\x6f\x08\x9d\x08\x44\x33\xc0\xec\x65\x78\x3f\xe0\xcc\xf2\xbc\x9e\xc9\x2a\x9c\x32\x3c\x9d\xc9\xf2\x3a\x20\xef\x06\xf5\x6c\x38\x07\xc6\xa0\x47\x83\x78\x33\x30\x73\x10\xdb\x02\xd9\x15\x9e\x4d\x61\xd9\x93\x51\xb6\x04\xf3\x58\xc0\xd1\x20\x62\x44\x9a\x24\x48\x24\x98\xc9\x40\x61\xd5\x1e\x9c\xfa\x13\xb6\x5b\x4e\xa2\x4f\xd8\x9e\x21\x5f\xf0\x28\x9a\xfe\x99\xaf\xcf\xc3\x2d\x28\x3c\x1d\x27\xa4\x68\x91\x43\x2b\x74\x26\xaf\x64\x2e\x53\x3b\x5c\x81\x91\x77\xeb\x11\x98\x38\x72\x54\xa5\x51\xda\xa8\xe1\xfc\x15\x84\x45\x34\x7b\xba\x5e\xde\xe5\xa2\xaa\x5c\x97\x1b\xc8\x4f\xc2\x20\x70\xa2\xdf\xfd\xe8\xa9\xe8\x77\xef\x0e\x2a\xfa\xdd\xd1\xef\x76\x3d\x17\xfd\xee\xe8\x77\x3f\x6e\xd1\xef\x1e\xd5\x73\xf4\xbb\x07\x9e\x8e\x7e\x37\xd5\xed\x48\xbf\x9b\x04\x5f\x41\xa4\x8e\x06\x5c\xe1\x03\x96\xa0\xc9\xe5\x08\xef\x11\x60\x95\x63\x8e\x90\x7c\x64\x6d\x44\xb2\x3a\x77\x5f\x7d\x26\xc7\x03\x02\xb0\x20\x33\x7e\x4d\x23\x41\xa0\x20\x09\x98\x5a\xc0\xd0\x27\x26\xe8\x13\xc0\x9a\xc0\xf2\x9d\x21\x7c\x89\xb0\x1f\x80\xa3\x49\xa0\xb6\x05\x42\x90\x80\x55\x37\x82\x1a\x01\x13\x6b\x1e\x0c\x45\x0c\x41\x87\x08\xa9\xa1\xaa\xba\x2c\x73\xb9\x94\x85\x15\x79\x23\xe5\xce\x79\x00\xf6\x54\x38\x44\x09\x6a\x96\x91\xed\x41\x75\x5f\xa5\x36\x1f\x3b\x76\x7c\x2f\x88\xed\x03\x19\xae\x04\xb8\xff\xc3\x25\x1c\xda\xf7\x01\x7b\x3e\x64\xbf\xc7\x3a\xdf\x75\x4f\x24\x8e\x4d\x82\x4e\x16\x1f\x8f\x04\x66\xb2\x1f\x06\x09\x3e\x87\x1c\xdc\x91\x43\x3a\x05\xd2\xac\x54\x2a\xdf\xa6\xa9\xae\x0b\x3b\xca\x33\xb0\x3a\x97\x46\x38\xe7\x9a\x58\xb7\x98\x18\xc8\xeb\x6b\x99\x12\xfb\x09\x90\x83\x37\x32\xcc\xed\xc4\xf5\xb0\x85\x23\xe8\xcc\x22\xb6\xe5\x23\x74\xdd\x35\xbc\x92\x06\xf4\x17\xf4\x29\xa3\xaf\xe3\x38\x08\x0c\xfe\x64\x64\x99\xab\x54\x3c\x61\x9a\x6b\x43\x34\xcc\x98\x87\xe5\xf1\x4d\x2e\xcb\x5c\xd8\x27\x4c\x71\x09\xec\x52\x5a\x91\x09\x2b\xfa\x18\x49\x09\xba\x28\x0a\x6d\xdd\x4b\xe9\xd0\xe7\x18\xce\x9f\xab\x01\x4d\x4c\x7d\x67\x9a\xd7\x95\x95\x66\xb8\x44\x03\x39\x6e\x79\x67\xa5\x29\x44\xfe\xf1\xd2\x57\xe9\xc0\xac\x19\x36\x76\xdd\x20\xbe\x19\x71\x7d\xad\x52\xf7\xb5\x67\xb2\xbf\x85\x14\xb9\x5d\xbc\x5b\xc8\xf4\xe6\xb3\xce\xa4\xab\xd0\x44\x98\xa3\xa3\x5c\x8b\xec\xcf\x22\x17\x45\x3a\x6a\x2a\x76\xc9\x5c\x35\xf1\x80\xaf\xa2\x98\x0f\x4b\xe5\xf4\xf3\xe2\xac\x80\x12\xc4\x16\x05\x2b\xd6\x52\x10\x33\xdd\x36\x1c\xd6\x00\xd5\xf5\x74\x68\x2e\x74\x9f\xc8\x2d\x4f\x67\xac\x6c\xb4\x59\x59\xab\xf5\xaa\x52\xba\x78\x7b\x7d\xad\x8a\x36\x96\x71\xad\xe6\x63\x42\x19\x69\xae\x64\x41\x94\x9a\x41\x9d\x5c\x1e\xd6\x05\x07\xe9\x82\xb7\x4b\x1b\xe7\x58\xba\x76\xd2\xc4\x9a\xf0\x31\xfb\x95\xd5\x46\xcc\x59\x06\x5a\x34\x81\xfa\x5f\x74\xd6\x3f\x21\x0e\xfd\x00\x8d\xbf\x5f\xfa\xd6\x1e\x41\xab\x1c\xbd\xfc\x82\x52\x39\xc3\x57\xa4\xb2\xb9\x51\xc3\xc7\xe8\xe4\xcb\x2e\x65\x47\xbc\xec\x5a\xf4\x17\xcd\xa8\x7a\x7f\x18\xd8\xd1\x3a\x85\xcf\x19\x8c\xa6\x18\xec\x0e\x42\x1f\x3e\x77\x84\x0a\x3a\x9f\x96\x17\xe8\x48\xbd\xa1\x18\xbf\x14\x36\x6d\x60\x16\x5a\xcd\x3c\xad\xd5\x3e\xc9\x6d\x5f\xb3\xeb\x0a\x81\x50\xc2\x0b\x76\x12\x31\x1c\xc4\x5a\xdf\xc8\xe1\xf7\x2f\x36\x4c\x9a\xd2\x9e\x37\xd2\xf3\x49\xcc\xe4\x70\xd8\xf0\xb4\x56\x4a\x6b\xad\x9c\xb9\x5a\xce\x21\x74\xa0\x36\x99\xef\xab\x1e\xbd\x52\xb6\xf7\x5b\x8f\xc5\x1f\x24\xb7\x03\x16\xd5\xbf\x5d\x1a\x7c\xb3\x2e\x33\x61\xe5\x95\x35\xc2\xca\xf9\x93\xd7\x5c\x0a\xc0\xe8\x3c\x57\xc5\xfc\x7b\x43\xc0\x47\x49\x95\xc2\x58\xe5\x82\xdb\x09\xb1\x1f\x73\x0a\xce\x90\x57\xe5\x33\x6d\x2b\x69\xaa\x9e\x6f\x19\x20\xd5\xa7\x08\x2e\x3a\x1a\xaf\x88\xee\x2a\x2b\x6c\xbd\xc7\xd4\x21\x56\xeb\x59\x25\xcd\x4a\x66\x3f\xcb\xe2\x21\x08\xe6\x08\xe4\x3c\x89\x77\x0d\xf3\xb6\x5c\x88\x0a\x97\x4e\x23\x45\x05\x73\xa6\xe7\x8b\x1f\xfd\xa9\xe3\x74\xb2\xfa\x41\xe4\xe5\x42\xfc\xb0\xfd\x5b\xf3\xf9\xad\xa3\xb3\xf7\x73\x1b\x7a\x92\xd9\x4e\xf2\x41\xe7\xe2\xb6\x7f\xf9\xdf\x00\x00\x00\xff\xff\x8f\x61\x5b\x09\x79\x26\x02\x00") +var _kubedbCom_perconaxtradbsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7d\x73\xdc\x36\x96\x37\xfa\xff\x7c\x0a\x94\xb3\x55\xb2\x6f\xe9\x25\x9e\xc9\x66\xb3\xae\xad\x79\x4a\x91\xe4\xac\xee\xc4\x8e\xc6\x2d\xc7\x4f\xd5\xd6\x73\xa7\xd0\x24\x5a\x8d\x11\x49\x30\x04\x28\x59\xb9\x75\xbf\xfb\x2d\xbc\x12\x64\x93\xc0\x01\xbb\x25\x2b\x9e\xc6\x1f\x33\x4e\x8b\x3c\xc4\xeb\x39\x07\xe7\xed\x87\x6b\xfa\x2b\x69\x38\x65\xd5\x1b\x84\x6b\x4a\x3e\x0b\x52\xc9\xff\xe2\xc7\xb7\x3f\xf0\x63\xca\x4e\xee\x5e\x2f\x89\xc0\xaf\xff\x74\x4b\xab\xfc\x0d\x3a\x6b\xb9\x60\xe5\x07\xc2\x59\xdb\x64\xe4\x9c\xac\x68\x45\x05\x65\xd5\x9f\x4a\x22\x70\x8e\x05\x7e\xf3\x27\x84\xb2\x86\x60\xf9\xe3\x35\x2d\x09\x17\xb8\xac\xdf\xa0\xaa\x2d\x8a\x3f\x21\x54\xe0\x25\x29\xb8\x7c\x06\x21\x5c\xd7\x6f\xd0\x6d\xbb\x24\xf9\xf2\x4f\x08\x55\xb8\x24\x6f\x50\x4d\x9a\x8c\x55\xf8\xb3\x68\x70\xbe\xe4\xc7\xfa\xaf\xc7\x19\x2b\xff\xc4\x6b\x92\xc9\xf7\x70\x9e\xab\x0f\xe2\xe2\xaa\xa1\x95\x20\xcd\x19\x2b\xda\xb2\x52\x34\x8f\xd0\xff\xbd\xf8\xe5\xfd\x15\x16\xeb\x37\xe8\x58\xbe\x70\x7c\xa7\x87\xa6\xbe\xa7\xbf\xf0\xab\xf7\x8b\x78\xa8\xc9\x1b\xc4\x45\x43\xab\x9b\x8d\xd7\x05\x16\x2d\x3f\xae\xd7\x98\x13\xef\xf5\x85\xfa\x39\xfa\xb6\x9d\x8d\xe3\x8d\xa9\xf0\x68\x9d\xde\x10\x8f\x50\x8e\x85\xfc\xcf\x9b\x86\xb5\x6e\x5e\xd4\xc8\xf5\xe3\x66\xd2\x32\x2c\xc8\x0d\x6b\xa8\xfd\xef\x23\xf9\x1e\xe6\x82\x35\xc4\xfc\xb7\x9b\x51\xf9\x1f\xb8\xae\x79\xc6\x72\xfb\x37\xac\x16\x01\x21\xbd\x96\x57\x7a\xb2\xff\xb7\x68\xf0\xf9\x8f\xea\xf7\x82\x72\xf1\xb7\xcd\xbf\xfd\x4c\xb9\x50\x7f\xaf\x8b\xb6\xc1\xc5\x70\x99\xd4\x9f\xf8\x9a\x35\xe2\x7d\xd7\xd1\x23\x54\x7f\xd6\x7f\xa0\xd5\x4d\x5b\xe0\x66\xf0\xd6\x9f\x10\xaa\x1b\xc2\x49\x73\x47\x3e\x56\xb7\x15\xbb\xaf\xde\x52\x52\xe4\xfc\x0d\x5a\xe1\x42\x4d\x39\xcf\x98\x9c\x17\x45\xb3\xc6\x19\xc9\xe5\x6f\xed\xb2\x31\x7b\xcf\x7c\x47\xaf\xd3\x1b\xf4\xff\xfe\x7f\x7f\x42\xe8\x0e\x17\x34\x57\xf3\xad\xff\xc8\x6a\x52\x9d\x5e\x5d\xfe\xfa\x97\x45\xb6\x26\x25\xd6\x3f\xca\x0f\xb3\x9a\x34\xc2\x4d\xa2\xde\x8d\xee\x1c\xb8\xdf\x10\xca\x09\xcf\x1a\x5a\x2b\x8a\xe8\x40\x92\xd2\xcf\xa0\x5c\xee\x7c\xc2\x91\x58\x13\x64\x36\x19\xc9\x11\x57\x9f\x41\x6c\x85\xc4\x9a\x72\xd4\x10\x35\xc4\x4a\xa8\x2e\x79\x64\x91\x7c\x04\x57\x88\x2d\xff\x49\x32\x71\x8c\x16\x72\x1a\x1a\x2e\x27\xb1\x2d\x72\x94\xb1\xea\x8e\x34\x02\x35\x24\x63\x37\x15\xfd\xdd\x51\xe6\x48\x30\xf5\xc9\x02\x0b\x62\xd6\xc4\x36\x75\x18\x2a\x5c\xc8\x49\x68\xc9\x21\xc2\x55\x8e\x4a\xfc\x80\x1a\x22\xbf\x81\xda\xca\xa3\xa6\x1e\xe1\xc7\xe8\x1d\x6b\x08\xa2\xd5\x8a\xbd\x41\x6b\x21\x6a\xfe\xe6\xe4\xe4\x86\x0a\x7b\xf2\x33\x56\x96\x6d\x45\xc5\xc3\x49\xc6\x2a\xd1\xd0\x65\x2b\x58\xc3\x4f\x72\x72\x47\x8a\x13\x4e\x6f\x8e\x70\x93\xad\xa9\x20\x99\x68\x1b\x72\x82\x6b\x7a\xa4\x3a\x5e\x09\xc5\x3e\xca\xfc\x1b\xb7\x54\x07\x5e\x4f\x07\xc7\x46\x37\xb5\x21\x27\xe7\x5d\x6e\x49\x44\x39\xc2\xe6\x35\xdd\xff\x6e\x7a\xe5\x4f\x72\x56\x3e\x5c\x2c\xae\x91\xfd\xa8\x5a\x82\xfe\x9c\xab\xd9\xee\x5e\xe3\xdd\xc4\xcb\x89\xa2\xd5\x8a\x34\x7a\xe1\x56\x0d\x2b\x15\x45\x52\xe5\x35\xa3\x95\x50\xff\x91\x15\x94\x54\xfd\x49\xe7\xed\xb2\xa4\x42\xae\xf4\x6f\x2d\xe1\x42\xae\xcf\x31\x3a\xc3\x55\xc5\x04\x5a\x12\xd4\xd6\xf2\x54\xe7\xc7\xe8\xb2\x42\x67\xb8\x24\xc5\x19\xe6\xe4\xd1\xa7\x5d\xce\x30\x3f\x92\x53\x1a\x9f\x78\x9f\x6d\xdb\x36\x76\x3c\x1c\xd7\xea\xfd\x82\x50\x89\x3f\xff\x4c\xaa\x1b\xc9\xf4\xbe\xff\xcb\xe0\x6f\x35\x16\x72\x4b\xbe\x41\xff\xcf\xff\xe0\xa3\xdf\xff\xcf\xcb\xff\x39\xc2\x47\xbf\x7f\x7b\xf4\x9f\xff\xe7\xff\xfa\x1f\xf3\x8f\x57\xff\xeb\xdf\x06\xef\x8c\x76\xd2\xfe\xac\x17\xd0\xfd\x6c\x45\x42\xac\xdf\x19\xab\x56\xf4\x66\xa1\x76\xc5\xb0\xff\xbd\x8d\x76\xe6\x3d\xa8\xf6\x5b\x85\x58\xad\x85\x0d\x5a\x49\xee\x24\x8f\x5f\xdd\xb0\x3b\x9a\x13\x94\x29\x49\x68\x88\xb7\xcd\xe6\x11\x97\x6d\x45\x0b\x82\x56\xac\x51\x5c\x7a\x89\x39\x41\x2f\xe9\xb1\x7d\xf7\xa8\x7c\xe0\xbf\x15\xc7\x59\xb5\x7a\x75\x8c\x2e\x57\x6a\x3c\x74\x45\x49\x7e\x68\x76\x21\x2d\xc8\x06\xc5\x7b\x5a\x14\x6a\x6b\x71\x92\x23\xcc\xfb\xdf\xd7\xdf\x63\x62\x4d\x9a\x7b\xca\x89\xe4\x52\xb8\x2d\x04\xa4\x93\x3e\xdd\xe3\xe1\x42\x4e\x4c\xac\x6c\xf8\x9e\x5f\x14\x98\x0b\x9a\xfd\x58\xb0\xec\x76\x21\x25\xd1\xe6\x53\x1b\x9c\xf4\xd3\x62\xe3\x2d\xef\x60\xca\x99\x3f\xfd\xb4\x40\xe7\x94\xdf\xba\x03\x3d\x42\x14\x21\xb1\xc6\x42\x2d\x95\x10\x38\x5b\x13\xb5\x42\x58\xc9\xc0\x82\x88\x83\x03\x8e\xd6\x8c\x0b\x54\xe2\x6c\x4d\x2b\xa2\x78\xa2\x58\x93\x0a\x91\xcf\x35\xe3\x4a\xa2\x8c\x90\xd4\x2c\xb6\x66\xf9\xe8\x49\x95\xb4\x9b\x8a\x08\xa2\x0e\x6b\xce\x32\x2e\xcf\x69\x46\x6a\xc1\x4f\xa4\x1c\xc6\x37\xe4\xe4\x4e\xea\x24\x84\x7f\x83\xef\x39\xd1\xc3\x5c\xca\x61\x2a\x31\x7d\x30\xf2\xd1\xd0\x04\xab\x15\xe2\xd7\xf2\x00\x8c\xfe\x6d\x38\xb5\x6f\x69\x41\xf8\x03\x17\xa4\x54\xa7\x46\x0b\x23\x82\x74\x97\xf4\x7c\x3d\xb0\x16\xdd\x63\xc9\xd5\xd8\x04\x49\x84\x4a\xd6\x56\xe2\x18\x5d\xd3\xfa\x0d\xba\xa8\x78\xdb\x98\x77\x25\xad\xd5\xe0\x13\x94\x23\xde\xd6\x35\x6b\x04\xc9\xd1\xf2\x61\x92\xa6\x7c\x57\xad\x87\x1c\x2d\x56\x6c\x5b\x93\x39\x46\x17\x9f\x71\x59\x17\x84\xbf\x41\x2f\xc8\x67\xf1\xdd\x8b\x43\xf4\xe2\xf3\x8a\xcb\xff\xab\xc4\x8a\xbf\x18\xee\xc8\xae\x5d\x96\x75\x41\x33\x2a\x0a\xc3\xc0\x1b\xbd\x07\x96\xc4\x10\x42\x74\x85\xda\xca\x1d\x2d\x7f\x49\x27\x69\xee\x6a\xa9\x27\x3f\x70\xfd\xcb\xf9\x2f\x6f\xd0\x9a\xdd\xa3\x9c\xa1\x7b\x22\x35\x21\xc9\xc0\x11\x69\x1a\xd6\x70\x44\xab\xe1\x34\x2b\x81\x94\xb1\xb2\x6e\x58\x49\x79\x9f\x37\x6e\xce\xb1\xd9\xee\x63\x3b\x0d\x4d\xf3\xd8\xae\xd5\xb8\x11\x54\x0c\x54\x21\xbf\xf5\x77\xdc\xb5\x3c\x2d\xf6\x15\xdb\xf9\x89\xfd\x66\xf6\xd5\xf4\x72\xae\x10\x2b\xa9\x10\x9a\x09\x76\x1c\x8c\x72\xf7\x32\x5a\x3e\x58\xea\x52\x22\x79\x7b\x67\x92\xea\x5b\xd6\xd8\x57\xa4\x1c\x3d\xe1\x39\x7e\x7d\xa8\xba\xa5\x37\xc6\x83\x3e\xf1\x6e\x0c\x98\xa3\x17\xaf\x5f\x1c\xa3\x05\x2d\x69\x81\x9b\xe2\xe1\x30\x38\xdf\x86\x74\xf7\xbe\xe4\xf8\xf6\x43\xb2\xeb\x2f\xbe\x7d\x81\x5e\xb2\x46\x7d\x31\xc3\x15\x2a\x08\xbe\x9b\xde\x1d\xaa\x2f\x9a\x23\x3c\x20\x52\xd6\xe2\xe1\xd5\xf1\xd4\x5a\xae\x58\x53\x62\xf1\x46\x6a\x7f\x7f\xf9\x73\x70\xbd\xa5\x7e\x78\x43\x9a\xd1\x67\x1a\x82\xf3\x5f\xaa\xe2\x01\xb6\xde\x0b\x33\x67\x2f\x44\xd3\x92\x17\x72\x5d\x56\x4c\x4a\x4c\xc9\x5d\x39\xd1\x2c\xe2\x83\xa1\xe8\x06\x32\x39\x5a\x5a\xa1\x5f\xd5\xfc\xbd\x93\x8b\xab\x96\x59\x13\x3e\x0e\x6d\x86\x17\xea\x96\x10\xe0\x0b\x4f\xc4\xb9\xbb\xf9\x5d\x32\x56\x10\xbc\x29\x5d\x65\xd3\x54\x2f\xcf\x61\xf3\xfb\xb1\xa2\xbf\xb5\x04\x5d\x9e\x5b\xde\x5d\xcb\x0b\x06\x17\x92\x43\xe4\xbe\x44\x94\x73\x77\xfa\x69\x31\x39\x07\x2f\x4f\x4b\xfc\x3b\xab\xd0\xc5\x8f\x0b\xd3\x85\x57\x4f\x26\xd2\x50\x9c\xd1\x48\xa5\x99\x36\x24\x1f\x9b\x95\x23\x37\x67\x23\x7f\x1c\xd5\x06\x6d\xc3\xbf\xb7\x0d\x91\x8a\x43\x54\x0b\x39\xb5\x4f\x0e\x35\x0f\xf9\x3b\x3a\xc7\x02\x6b\x05\x44\x73\x1d\xa6\xf8\xda\xe8\x48\x95\x4c\x93\xbb\x7f\x29\x2f\x2a\xfa\x71\x4f\x8b\x98\x21\xf0\x33\xc5\xc1\x6f\xde\xb1\x1c\x28\xf5\xff\x5b\x76\xe1\x4c\xbf\x85\x4a\xf9\x1a\x7a\xcf\x2a\x72\xa8\x0e\x22\x92\x27\xd1\xfc\xf3\x53\x43\x05\x99\x64\x27\x51\xd1\x20\xf7\xdf\xfb\x91\x7b\xc0\x68\xaf\xa4\x60\x90\x0f\xdb\x7d\x2c\x95\x60\xbd\x83\x8d\x90\x58\x16\x6c\x89\xcc\x0e\xdb\xa6\x47\x1f\x3f\x5c\x82\x3b\xf4\xf1\xc3\xe5\xe3\x75\x26\x41\x51\x1b\xea\x69\x4e\x36\xa2\x77\x2d\x57\xb7\x47\xec\x69\x00\xd3\xc2\x42\xbe\xeb\x6b\x5f\x61\x2d\xeb\x78\xa0\x5f\x4d\xd2\x35\x7a\x57\xb2\x7e\x35\x77\xe6\x86\x16\x80\xc9\x79\x3b\xb8\xf8\x5c\x93\x4c\x38\x2b\x06\x5a\xac\xb1\x64\x22\xa8\x6c\x0b\x41\xeb\xc2\x2c\xa4\x5c\x59\x2e\x39\xe7\xe4\x08\xcd\x52\x23\x9c\x65\xea\xc4\xa2\x73\x92\xd3\x4c\xde\xd7\xdf\x28\xa3\x95\x4f\x49\x12\xda\x7c\xe1\x1d\xae\xf0\xcd\x38\xff\xd2\x4d\xf1\x22\x54\xea\xc7\xbc\x1d\xf7\x92\x55\x6a\x3e\xdd\x9f\xf0\x1d\xa6\x05\x5e\xd2\x82\x8a\x07\x29\x43\x5f\x4d\x0b\x36\x23\x04\x95\xa0\xe4\x6a\xe8\xb3\x0f\x73\x92\xd8\x3f\xf7\xbe\xab\x84\x2f\x7a\x29\xdf\x3f\xb9\x97\x0c\xe5\xd5\x71\x27\xf1\xd7\xa4\xd1\xd7\xc9\xc9\x21\x68\x75\xa1\xa7\x26\x70\x22\xd4\x4e\x1d\x68\x03\xe1\xed\x34\x2d\x72\xc3\xa2\xc5\x32\xb1\xc9\x3f\x7e\xfc\x70\x39\x4b\xec\xc8\x33\x0d\x13\x3b\xf2\xc9\x51\xb1\xa3\xfe\xb0\x20\xcd\x1d\xcd\x88\x93\x3c\x13\x57\x5f\xf2\x08\x92\xe7\xeb\xdd\x13\x08\x71\x92\x35\x44\x80\xc5\x97\xec\x4c\x65\xc4\x97\x7e\x55\x5f\x67\x32\x56\x09\x4c\x2b\x6e\x56\x6c\x11\x14\x19\x08\x9d\x1a\x76\xa1\x24\xa1\x5c\xab\xbf\x91\x29\x6d\x38\x7a\x62\xd5\x81\x07\x0f\x40\x71\x46\x34\xb1\xd3\x01\xdf\x0b\x9f\xa2\x6e\x36\xc7\xff\x6c\xbb\x9a\x7a\x92\x32\x52\xaf\x57\xa3\xbb\xb3\x6f\xac\x23\xf5\xfa\xed\xa2\x77\x86\xd4\x6f\xe8\xed\xa2\xa7\xb1\xe9\x33\x22\x17\x6e\x7a\x46\xe5\xbb\x35\xcb\x0f\x38\x2a\xe8\x8a\x08\x3a\xda\xe9\xd8\xc9\x29\x59\x45\x05\x6b\x26\xaf\xa1\x7d\x29\xf6\xc1\xce\x2d\x7a\x67\xde\xd3\x16\xee\x8c\x15\x05\xc9\xd4\x2d\x92\xad\xf4\x80\x2c\xe1\x94\xbb\x0e\x31\x77\x62\xe7\xc5\xd3\xea\xfb\x89\x9e\xdc\x93\x0f\x17\xa7\xe7\xef\x2e\x8e\xcb\xfc\x9b\x35\xbb\x3f\x12\xec\xa8\xe5\xe4\x88\x8a\x29\x49\x42\x05\x29\x03\xd7\xeb\xe8\xb6\xb5\x8f\xe0\xa6\xc1\xe3\x7b\xbf\xc6\x62\x0d\x9b\xb8\x5f\x8c\x45\xf6\x0d\xfa\x68\x4c\xa0\xca\xe4\x21\x57\x9c\xe4\xa8\x61\x4c\x1c\xa2\x06\x8b\xb5\xb2\xe5\x4f\x30\x02\x64\xd8\xe7\xaa\x2d\x0a\x3d\xc7\xa2\x21\xe4\xd0\xbf\x60\x9e\x3c\x8d\x54\xf5\x86\x03\x65\xa6\xd3\x66\x2b\xcb\x64\x53\x98\xa9\xda\x3c\x81\xcb\xf9\xe3\x6d\x2a\x28\xbf\x9e\x12\xaa\xa1\xb9\x5c\xb8\x37\x95\xe5\x48\x19\x77\xc4\x5a\xce\xec\x2d\x79\x40\xca\x87\xb4\x62\xd3\xaa\xe1\x47\x4e\x9a\xfe\x6e\x20\x22\x53\xc3\x3c\x69\x39\x69\x8e\x8d\x34\x78\xf4\x73\x17\x97\x07\xaa\x23\x1f\xc8\x6a\xde\x04\x7d\x20\x2b\xa4\xfc\x94\x2b\xd2\x90\x2a\x23\x56\x77\xc0\xad\x58\x93\x4a\x48\x6d\x78\xcc\x61\xd0\xff\xba\xb2\x76\x6d\xcc\x98\xb2\x5b\x8d\x5a\x1b\x76\x3b\x45\x31\xae\x8c\x26\x1c\x57\xd3\x93\xe4\xdf\x58\xcd\xcc\x88\x64\xb3\x09\xbb\x93\x2a\x1c\xb9\x3f\xb9\x67\xcd\x2d\xad\x6e\x8e\xee\xa9\x58\x1f\x69\x89\xc7\x4f\x94\x43\xff\xe4\x1b\xf5\x7f\x81\x7e\x59\x43\xf1\x69\x9e\x6b\xa7\x0e\x6a\x39\x59\xb5\xc6\x19\xc5\x8f\x3d\xa7\xf5\xa1\xba\x40\x1d\xa2\x96\xe6\xff\x6b\x6a\xaa\x50\x0a\xab\x9e\x10\xce\xb2\xc9\x23\x30\x83\x57\x37\xf6\x28\x36\x38\x67\x5c\x51\x51\x2b\xe3\xb6\xcd\x34\x17\xe2\x08\xe7\x25\xad\xbe\xf8\x81\x0b\x2b\x44\x01\x39\x1d\x56\x78\x68\x95\x8f\xcf\x68\x7f\x36\xcf\xd4\x73\x7d\x8d\x47\xbf\x6b\x2d\xd0\xce\x0b\x86\xed\x6d\x60\xc2\xc7\xc5\x2a\xeb\x23\xeb\x7b\xc8\x40\x07\x56\xb9\x2d\x8f\xf4\x97\x8f\xea\xbc\x9b\xe3\xa7\x76\x6d\x3d\x8d\xc9\x64\xe0\x98\x9a\xb6\x98\xf4\x1c\x56\xbb\x32\x9c\x80\xb4\xbb\xa4\x15\x41\x7b\x25\x66\x07\x73\x17\xd7\x5b\x66\x48\x65\x15\x6b\xc2\xb5\x0f\xdb\x08\x57\x13\xb4\x62\xee\x9c\x21\xcf\x5f\x8d\x1b\x5c\x12\x41\x1a\xae\x83\x03\x04\x93\x6f\x55\xf2\x6d\xc1\xd0\x2f\x35\xa9\x16\x02\x67\xb7\x93\xb6\xdf\xbd\x24\x7d\x72\x49\x9a\xe6\x17\x32\x4c\x9e\xe6\x6e\x7d\x69\x2e\xb5\x34\xe3\xbe\xb4\x7f\xae\x8c\x50\x78\x56\x1c\xe5\x71\x7c\x3d\x3a\xae\xe5\x1d\xae\xe3\xd6\x02\xfb\xe4\x40\x7c\xba\x9f\x95\x65\xc7\xc4\xdf\xd5\xac\x6e\x0b\x1d\x8e\x39\xd2\xa1\x35\xe5\xa6\xc3\x33\xc4\x9d\x51\x75\xe0\x8e\x9d\x8e\x39\x94\x2c\x27\x68\x49\x35\x7f\x68\x39\x91\x42\x5c\x85\x97\x92\x5c\x4b\xbd\x50\xe8\x85\xf9\xae\x2f\x29\x75\x10\xdd\x92\x88\x7b\x42\x2a\xf4\xad\xd2\x19\xbe\xfd\x8f\xff\xf8\x8f\xe3\x1e\x13\xff\xf6\xfb\xef\xbe\x9b\xde\x49\xe7\xb4\x21\x99\x50\xf1\xa8\x48\x9e\x4b\xe3\x4a\x51\x97\x2d\xdc\x10\x54\x31\x81\xf0\x6a\xa5\xed\xf5\x4a\xd0\x52\x6e\xb9\xf8\x34\xd5\x6b\xf9\x54\x49\x6f\xd6\xaa\xa7\x72\x43\xb3\x6a\x55\xd0\x4c\xa8\x6f\x98\x03\xac\x23\xb3\xb8\x5e\x38\xfd\x8d\x49\x07\x1d\xb2\x51\x4e\x72\x0e\x0f\x51\x41\x6f\x09\x5a\xf1\x9f\x1a\xd6\xd6\x87\x36\x28\x08\x35\x84\xab\x58\x29\x5c\xc9\xaf\xea\x8f\x94\x36\x76\x76\xac\xa9\xb5\xe0\x44\x3c\xb2\x73\x3e\x68\x7c\xe9\x6d\x96\xcb\x9e\x46\x71\x88\x08\xce\xd6\xf2\xc2\x7b\xa4\x97\xba\xc6\xb4\xb1\xce\xae\x73\x2c\x70\x60\xaa\x48\x91\x0f\x18\x77\x46\x72\xef\x10\xd9\x68\xb1\xba\x61\xff\xd4\x8b\x4b\x2b\x7d\x77\x9c\x24\x6a\x55\x54\x6e\x94\x34\x74\xbf\x66\xdc\x18\x58\xcd\xc5\x40\xde\xcd\xe5\x6a\x48\x61\x47\x2a\x61\x7e\x9e\xa6\x28\x47\xb5\x19\x39\x47\x54\x18\x33\xc9\x25\x39\x3e\xd1\xd3\xa0\x55\xc8\x51\x53\xfb\x98\xeb\x1d\xd2\x56\x1b\x54\x4d\x90\xa7\x61\x27\xc1\x98\x16\xac\xc6\x26\xf7\xbe\xa3\x7d\xbf\xa6\xd9\x5a\xfe\x24\xc9\x18\x1a\x76\x75\xdc\x44\x83\xe2\x4e\x38\x11\xad\x59\x12\x15\x40\x24\xfb\x4a\x38\x47\x54\xcd\x60\x89\x9b\x5b\x92\xbb\x40\xc6\xe9\x6e\x5e\xc9\xc1\xa2\xd2\xf0\x87\x86\x14\x58\xd0\x3b\xe2\xe2\x88\x65\x37\x8d\x16\xa2\x3e\x7e\x70\x7c\x7c\xa0\x0f\x7a\xc0\x90\xc2\x05\x6e\xcc\xa9\x95\xcf\x4f\x7d\x3c\x62\x5f\xec\x6d\xf2\x77\xb8\xf6\x22\x81\xe5\xb4\x2a\x75\x49\xf5\xc4\xb0\x20\x6c\x66\x66\x7a\xac\x10\x5d\x07\x49\xe2\xa1\x3f\x8f\x38\x97\x4d\x77\xcc\x66\x9b\xfe\x3e\x82\x29\x10\x48\x99\x95\xa7\x45\xc5\x48\x2f\x22\x02\xc3\x05\x96\x4e\xef\x2c\xf3\x59\x80\x9c\xb8\x5c\xa9\x5d\xd1\x9d\xbe\x08\x4d\x6f\xcf\x7a\x72\xb0\x1f\x7a\xba\xc1\xfc\x23\x34\x13\x44\x83\x27\x02\x22\x44\xd3\x04\x84\x9a\xe3\x08\xc5\x90\x98\xd0\x0d\x22\x2c\x74\x8b\x8b\x0c\xdd\x42\x36\x75\xdd\x36\xf6\xaf\x3b\xf5\xfa\x60\xaf\xba\x69\x93\x77\x6d\xa5\x26\x4d\xf3\x63\xdd\xf4\x11\x38\x46\xef\x0c\xcf\x90\x7b\xa8\x42\x78\xc9\x59\xd1\x0a\x4d\xb8\xfb\xa3\x61\x28\x80\x7d\xa3\x3a\x44\x0a\x52\x4a\x36\xa9\x78\x89\x23\xe2\x31\x19\xc5\xbe\x63\x27\x4a\xb6\x10\x37\x32\x1f\x85\x1c\xcf\x90\x5a\xab\xdb\x91\x9c\x90\xc0\x5f\xe5\xb8\x22\x8e\x95\xc0\x05\x22\xee\x58\x09\xdd\xd8\x9e\xe7\x6d\x6d\xa7\x37\xb5\xe8\x2a\x5a\xb9\x08\x73\xa8\x9a\xc8\xc7\xfb\x35\x31\x0e\x26\x4f\x56\x23\xd6\x20\xc9\x6c\x95\x82\x20\xd9\xe7\xb4\xe2\x48\x4c\xfe\xd0\xb8\x71\x2e\x6e\x62\x08\x5f\x8a\x38\x8d\x5f\x87\x16\x97\xe8\xe5\x99\x3e\x7c\xa4\xb1\x2e\x6c\x74\x59\x09\xd2\xac\x70\x46\x5e\xf9\xd7\xa4\x50\x4c\x94\x8d\xbf\x5f\xe3\x2a\x2f\xb4\x8e\x8f\x2b\x44\x3e\x9b\x5c\x24\xf9\x9d\xbc\xa1\x77\xa4\x41\x2f\x4f\x8b\x7a\x8d\xd1\x8a\x60\xd1\x36\x64\x34\xc0\x25\x7a\x79\x52\x94\x60\x91\x09\xfa\xa3\x46\xb1\xac\xbc\xad\xed\x75\x49\x75\x5e\xf7\x7c\x7a\x3b\x7a\xf7\xbd\x63\xb9\xd8\x4a\x06\x28\x66\xf3\xc0\xda\xc6\x18\xa6\x57\x4c\x6f\x86\x8c\x35\xf2\x42\xa4\x3e\x38\x49\x11\x73\xd4\x90\x1b\xa9\x4d\x36\x4a\x1d\x35\xc9\x45\xad\xfc\x61\x76\xfc\xd4\x4e\x22\xcf\x36\xe3\xc3\xe2\xf1\xf7\x2b\xa3\xc0\xaa\xac\x18\xa3\x80\x2b\xe7\x8f\x51\x1c\x28\x47\x35\xe6\xc6\x60\xa1\x9c\x4b\x9c\xb3\x8c\xe2\x29\xd3\xb4\x6c\xde\x1a\x69\x35\x59\xa9\x08\x39\x11\xa4\x29\x69\x45\x7a\xc1\xc0\x7e\x32\xc2\xb4\x5e\x8f\xeb\xba\x78\x98\x3d\xb9\x15\xcb\xc9\x55\xbb\x2c\x28\x5f\x2f\x92\x6c\x7b\xef\x47\x5e\xd4\x7e\xfe\x0d\x9f\x9b\xb6\xf7\x4d\x0e\x60\xc3\x0e\x88\x38\xa9\x38\x55\xc2\x5a\xb2\x67\xa9\x3c\x50\xa9\xe0\x31\x35\xdd\x96\xea\xd9\x62\x2c\x92\xc9\xf4\xd4\x9c\x02\xa6\x32\x0b\x0a\x22\x88\x3b\x20\x5e\xbf\x7f\x35\xf7\xb6\x2a\x57\xbf\x7e\xac\x6a\xff\xf7\x49\xe2\x19\x2e\x0a\x6e\xb4\x39\x7d\x9f\xa4\xdc\x31\x5b\xad\x53\xa9\x6b\xc5\xd2\xee\x16\x2a\x37\x52\x6c\x16\x28\x77\x22\x57\xa9\x9f\xdd\xc4\x0d\x26\x88\xa3\x92\xe9\x94\x95\x0a\xb1\xca\x3e\x34\xad\xf7\xe1\xa2\xb0\x84\xdc\xca\x70\x65\xc2\xd0\x9b\x77\x6a\xeb\xec\x8d\xa6\x4f\x6e\x34\x4d\x72\x4d\x2c\xcc\xdd\x44\x1f\x39\x9c\x1f\xa9\xc8\xcb\x41\xd2\x9c\x61\xde\xb1\x4b\x63\xc4\xb7\x31\xdb\x5d\xa0\xbf\x7b\x2a\x74\xae\xe7\xf4\x4e\xf2\x53\xdf\xe3\xbb\x0e\x30\xd5\xbd\x99\xfa\x75\xd0\x0b\x25\xf6\x09\x37\x5c\xe2\xc8\x5c\xf2\x32\x6f\xc7\x07\x44\xa6\xbc\x77\xb9\xb3\xe3\xf1\x22\x43\xad\x13\xa4\x4a\x86\xea\x1f\x0f\x38\xca\x59\xd6\x96\xa3\xf9\xd2\x7e\x93\xeb\xd5\xb9\xef\x4c\x2e\xf3\xbc\xdd\x14\x89\x13\x55\xfd\x4a\xd5\xbf\x72\x76\x5f\xdd\xe3\x26\x3f\xbd\x1a\x0d\x4a\xef\xab\x29\xdd\xb3\xbe\xc6\x65\x49\x20\xf9\x3b\x5e\xb2\x56\xd8\x90\xce\x50\x20\x5b\xcf\x76\xbd\xb7\x53\xfb\x6d\x6f\xa7\x7e\x56\x76\x6a\xf9\xa4\x56\x83\x0a\xca\x85\x94\x76\xbd\x1d\x6f\x6c\x44\xa3\xf9\xcf\x80\x6f\x4d\x9f\x31\xcd\xe3\x86\xb1\xd7\x9e\xfa\x14\x12\x5d\xcc\xec\xe2\xce\x26\xe2\x29\x63\xf6\x78\x2a\xd1\xb8\xa5\xd9\x51\xd1\x08\x68\x98\x23\x63\xf4\xc2\x49\x17\xa4\x90\x42\x5e\x59\xd9\x3d\x33\x7e\xcd\xf2\x37\x88\x85\x3c\xef\xba\xa9\xda\x05\x6a\x2e\xf8\xa1\x29\xd7\x72\xa8\xef\x4f\x72\xff\x55\xb6\x18\x87\x3a\x35\x8e\x09\x47\x4c\x5b\xb0\x61\xa3\xc9\x2a\x1c\x80\x09\xb0\x75\x39\xcc\x68\x4d\x21\x0e\xf9\x4f\x55\x56\xe4\x4a\x1e\x74\x1a\x33\xd2\xc9\x26\x85\xb9\x20\x3a\x8d\x95\x34\x25\x47\x6c\x75\xd8\xcb\xb9\x78\x71\xf7\x3a\x70\x1d\xb2\x0d\x68\xdc\x45\x76\xb9\xaf\xa2\xb6\xba\x8d\x21\x5f\xf5\x4c\x74\xa6\x3a\x01\x57\xab\x6f\x2f\x95\xce\x32\x0b\x18\xb8\x3a\x78\x7a\x16\x77\x38\xbc\xb8\x81\x0c\x29\x51\xeb\x26\x01\x60\x93\x0b\xda\xc3\xd0\xde\x64\xbe\x37\x99\x6f\xb4\x47\x32\x99\x7b\x6c\xd7\x70\x18\x64\x86\xed\x9b\xd1\x83\xc6\x20\xdd\x06\x96\xf6\x25\xb1\x1a\x93\x51\x84\xac\x21\xdd\x5a\xd1\x59\x93\x60\x3a\x3f\x38\x38\x3e\x3e\x38\xb0\x96\x77\xb3\x49\x5b\xb1\x3a\xfa\x01\x91\x2a\x63\xb9\xde\x42\xf2\xeb\x0d\x17\x4a\xb4\xc2\x7a\xdb\x1f\x65\x69\xfb\xe9\xfb\xfc\xd4\x97\xc3\x8b\x08\x64\x25\x36\xe7\xf9\xed\x0c\xe1\xd8\x89\x44\x97\x39\x6d\x86\x90\x59\x13\x28\x48\x36\xba\x7a\x46\xa8\xa0\xaa\xec\x8f\xdc\xe6\xae\xf4\xcf\x4b\xfd\xe3\x71\x56\xb7\x87\xe6\x81\xe3\x92\x94\xac\x09\x54\x0f\xb0\x74\x35\x09\xf9\x6a\x8f\xa6\x79\xff\x95\x92\xb6\x59\xdb\x34\xa4\x12\xc5\xc3\x23\xc8\x5d\x37\x0f\xa1\xdc\xa2\xae\x0d\xe2\x52\x9d\x1d\x59\xd7\x35\xb3\x3c\x5f\x5d\xd4\x4c\x3c\x6e\x6c\x0a\x90\x67\x8a\x57\xef\x91\xea\x0e\xdd\xe1\x86\x87\x47\x88\xd2\x44\x6d\x4e\xef\x28\x67\x93\x16\xe4\x89\x01\x76\x36\x04\xb9\x65\x58\x2b\xea\x56\x18\xde\x63\xf7\x51\xa8\x9e\x4c\xbf\xb9\x3d\x34\xd0\x2a\x5e\xbf\xd8\xe5\x40\xed\x57\x52\x97\xb2\xe3\x67\x5d\x19\x2d\xab\x54\xec\x70\x25\xa0\x5a\x41\xb0\xf4\x4f\xff\xab\x11\xa5\x00\xe2\xa8\x7b\x5c\x57\x5c\x90\x80\x32\x81\x9e\x53\x40\x10\xf8\x85\x79\xb2\x1f\xc7\x26\x48\x59\xb3\x06\x37\x0f\x28\x37\x37\xdd\x07\x1b\xd1\x86\x9b\x09\x4b\x8d\x4e\x79\xf3\x72\xde\xb6\xae\x0d\xa1\x46\x91\xd3\x66\x4e\x1c\x78\x49\x72\xda\x96\x30\x5b\xc3\x27\x55\x88\xc8\x14\x37\xb2\x59\xd9\x9a\x80\x35\x83\x2c\x71\x76\xab\x35\x37\x37\x21\xa1\x7b\x7c\xbf\xb6\xc8\x0b\xe3\x75\x28\x09\xae\x9c\x26\xa8\xfc\x48\x2c\x27\x72\xc6\xec\xc3\xfa\x9b\x81\x40\x4b\xab\x11\x56\xc6\xc8\x6d\xa2\x56\x5e\x1a\x02\xaf\xa4\x20\x7f\xa7\x78\xfc\xa3\x4e\x3e\x02\xe5\x12\xd1\xdf\xc9\xcf\x52\x6c\x01\xab\xfe\x30\x81\x0b\x84\x4d\xaa\xe5\x0a\x15\x2c\xc3\x85\x5b\x8d\x9e\x0c\xd8\xa8\xc4\xe7\x37\xb7\xa1\xad\x8f\x4d\xae\x86\xec\x8b\x96\xa1\xca\x4c\x50\x70\xa6\x3c\x38\x34\xc3\x4b\x53\x50\x4d\x4b\xc6\x49\xaa\x66\x65\x14\xb1\x12\x7f\xa6\x65\x5b\xa2\x96\xcb\x9e\xb1\xca\xbc\x6b\x77\x8c\xeb\xc0\xbd\xdc\x39\xd3\x56\x14\xbd\x05\x4a\x5a\x29\x62\x7d\x15\x5f\xfe\x65\x61\xe7\xcf\x0b\xf2\x5a\x93\x40\x5c\xba\x55\x92\x79\x5b\xca\x09\x34\xbd\x32\xaa\x05\x5b\x29\x9f\x84\x13\xcc\xaa\x2a\x14\xd6\x55\xc9\xae\x03\xe6\x23\x6f\x1f\x57\xb4\xe8\x6f\x64\x5b\xbf\xcb\x4d\x6c\x5b\x19\x3f\x34\x38\x82\x7e\x7c\x53\xb6\x9c\x34\x47\x37\x2d\xcd\x77\xb6\x1d\x83\xdc\x72\x95\x45\xf9\xe4\xdb\xb3\x3e\x83\x7c\x4b\x97\x0d\x41\x67\x6b\x5c\x55\xa4\xf0\x6b\x44\xf6\xcb\xc7\x8d\x76\xb6\x57\x52\x2e\x52\x51\x6e\xcb\xec\xfb\xe7\x9f\x0d\xf3\xe8\x05\x44\xb4\xd3\x69\x92\xec\xb3\x2d\x9a\x56\xb4\xc0\x72\x69\x9d\xb5\xe1\xed\x19\x12\xb8\xb9\x21\x42\xbe\x8c\xaa\xb6\x5c\x92\xc9\xf3\xf2\x25\x0a\x7d\x7d\xe9\xb4\x9e\xf9\x19\x38\x7a\x5a\x3f\x7d\x7a\x0f\xcc\xc6\x1f\x5b\x93\x7b\xd6\x14\xf9\x3d\xcd\x75\xf8\x08\x47\x2f\x25\xb9\x57\x5f\x2e\x45\xfe\xfe\x9e\xe6\x73\x86\x63\xcc\x47\x6a\x38\x48\x8d\xc7\xa4\x8d\x50\x29\x55\x5e\x2a\xb2\xaf\xa6\xc5\x33\x55\x46\x1b\xf5\x94\x36\x3b\x94\x4b\x5a\x61\x5b\xa0\xa0\x9b\x68\xc5\x0a\xe5\x3e\x36\x66\xb0\x49\x8a\x9c\x88\x43\xb4\x6c\x8d\x51\x83\x89\x35\xe2\xb4\x6c\x0b\x81\x2b\xc2\x5a\x5e\x3c\x4c\x2e\xfb\x63\x4f\x71\x58\xe6\x14\xe4\xb3\xde\x9c\x71\xd9\xe3\x1e\xed\xcb\xa0\x1b\x52\x91\x86\x66\x76\x41\x7a\x42\x68\xdc\xa3\xc2\x75\x5c\x8d\xae\x2e\x7d\xe2\xb2\x3b\x5b\xc9\xcc\x74\x9c\x15\xc9\xd0\x12\x4b\xb9\x53\x17\xed\x0d\x1d\xb5\xdc\x3e\x49\x54\x55\x17\x4b\x22\x75\xe5\xa8\xd2\x17\x76\xb5\xff\x0b\x96\xd9\xba\x1e\x8f\x68\xca\x49\x4d\x2a\x79\xf0\x2a\x7f\x57\xe9\xe1\xcd\x9e\x3d\x63\xeb\xfd\x32\x61\x06\x1e\x6f\xba\xf8\x2c\x1a\x2c\x19\x4a\x29\x59\x87\xb5\x40\xd3\x15\xc2\xd5\x34\x13\xd8\x6d\x78\xc8\x1f\x58\xc4\x3d\x52\xe9\x87\xc7\x09\x43\xd3\xdc\x69\x5a\x24\xa8\x8e\xda\x70\xb1\xc9\xb0\x30\xfb\x75\x3f\x8f\x26\x18\x99\x98\x1a\x1e\xe6\x85\x81\x4d\xf3\xae\xcd\xc0\x16\x3d\x3a\x37\x8a\x7d\x82\xed\x33\x89\x15\x7b\x8c\xe8\x9e\x55\xc1\xb2\x5b\x40\xb5\x86\xb7\xfa\xb9\xc1\x2d\xd4\xfc\x38\x2c\xd7\xd0\xbf\x61\x8e\x0e\xb6\x5f\xa5\x41\x9d\x13\x4f\x38\x28\x47\xb7\x21\xae\x50\x03\x98\xdc\xc7\xba\x88\xdc\x92\x4c\x26\xf9\xb7\xd5\x44\x46\x79\x54\x67\xc0\x02\xf3\x84\x52\x6a\xc3\x2a\xa0\x9c\x08\x1d\x5f\xa6\x0a\x38\x59\x10\x02\x74\xf4\xd7\xb0\xb3\xcc\x8c\xd4\x52\x90\x6a\x86\x1d\xb5\xb5\xfb\x29\x9f\x0e\xa7\x39\x31\xb4\x73\x39\xff\x59\x20\xda\x38\x5e\x60\x54\x7f\xed\xe3\x47\x60\x9e\xb6\x7c\x70\x30\x56\xb3\x60\xca\xe2\xa2\x6a\xfb\x76\x1a\xf8\xf4\x58\x57\xde\x86\x31\x74\x1e\xc1\x96\x72\x93\x91\x2b\x57\x5e\x18\x54\x36\xf7\xe0\xa7\xb3\x8b\xfe\x2b\xfd\x4d\xfe\xd3\xd9\x45\xbf\x70\x7f\x50\xc1\x9d\x57\xb8\x1f\x05\x92\x4d\x77\x51\xb8\xff\x26\x23\x5d\xd1\xe5\x9c\xf2\xdb\x7d\xd5\xfe\xaf\xb2\x6a\xff\xc6\x3a\x4f\xfb\x08\xf6\x25\xfb\x27\xda\xbe\x64\xff\x78\xc9\xfe\x27\xe1\x41\x68\x67\xa6\xc1\x3a\x07\x4b\x73\x5b\xa1\xde\x37\x00\x5c\x9d\xf7\xca\xd2\xff\x74\x76\x71\xac\x0b\x34\x06\xb8\x55\xaf\x7c\x89\x2d\xc5\xad\xde\x7c\xaa\xa9\xdb\x71\x1d\xa4\xcd\x7a\xb7\x81\xbb\x60\xc0\xdb\x32\xa8\x6e\xb4\x71\x35\x7d\xea\x09\x9a\x5b\x68\x59\xef\xa9\x64\x95\x84\x8a\x0f\xa4\x1e\xe5\xf4\x03\x45\x44\x3f\x38\xb0\xb2\x51\x05\xf1\xc5\x38\x55\x5e\x70\x2c\x54\x71\x80\x46\xd0\xac\x2d\xf0\x94\x55\x5c\xdb\xd8\x8e\xd1\xf9\xc5\xd5\x87\x8b\xb3\xd3\xeb\x8b\xf3\x37\xc8\x52\xa7\xbe\x12\x79\x8c\xae\x59\x67\x94\xd3\x15\x64\xb4\x83\x6e\xdc\x66\x4b\xc5\xda\xeb\xd3\xa1\x61\x87\xb8\xea\xbc\x8e\xaa\x70\x06\xae\xd0\x65\x45\x45\x17\x49\x33\xa9\x32\x65\x05\xb3\xb8\x73\x92\xa2\xb1\x05\xde\x50\x71\xa8\x15\x24\x53\x03\x7a\x4d\x06\x5f\x50\x67\x54\xf9\xfb\xc7\xc9\xda\x2f\x8f\xde\x5e\xa3\xd7\x01\xeb\x63\x87\x55\xe1\xd7\xf6\xf5\x2e\x52\x41\xcb\x04\x17\xe8\x66\xab\x4c\xb0\x46\xc7\x92\x4d\x1e\x94\xae\xae\x84\x92\x42\x07\xc7\x07\x56\xa9\x29\x5c\x2d\x10\x1b\x3c\xe9\x3e\x16\xac\x42\x6d\x9c\xbc\xfd\x3d\x74\x8c\xd0\x2f\x16\x52\xeb\x50\x6a\x26\x83\x72\x23\x93\x49\x16\xb6\x97\x9d\x1f\x77\x84\xba\x8b\xd5\x6d\x97\x7e\x27\x75\x32\xfb\x24\xd1\x1b\x7a\x47\x2a\x3d\x71\xf3\x59\x9b\xed\x02\x68\xd5\x3e\x74\x3d\xfe\xf8\xe1\xe7\xf9\x1f\xd5\x27\x07\xf4\xc9\x33\x56\x96\x54\xa0\x35\xe6\x6b\x97\xa4\xd5\xf9\xd6\xdd\xa9\x9d\xd7\x97\x30\xe7\xea\x26\x27\x99\x7b\xe9\x44\x5e\x40\x05\xeb\x83\x9f\xec\xa3\x83\x0b\x94\xfb\x79\xa3\x8e\xf5\xb8\xb3\xab\x0b\xf4\x01\x06\xf5\x4c\x15\xcd\x74\x7d\xdf\xae\xa6\xa3\x45\x4d\x04\x7a\xab\x2e\xec\xe3\xef\xbd\x5a\x40\x0e\x79\x51\x29\x19\x6a\x88\x39\x11\x98\x16\xd3\x56\xa8\x6e\xde\x04\xab\x59\xc1\x6e\xd2\xea\xcf\x8e\x0c\xfe\x1b\x1d\x85\x7b\x84\x8f\xe4\xac\xce\xd7\xcd\xa1\xb5\xad\x6d\x10\xb1\x9c\x80\x6e\x34\x4e\x57\x55\xf1\xbb\xf0\x8b\xd0\x93\x0f\x74\x87\xca\xd2\x70\xf4\xd3\x9a\xb7\xba\x35\xda\xf2\xdf\x8a\x6f\x76\x79\x9e\x35\x69\x4a\xca\x35\x9c\xf1\x88\x16\x35\x49\xf4\xc9\x76\xcd\x5c\xc5\xca\x9d\xb0\x71\xb5\x6b\x3c\x90\x31\xc8\xb6\x24\x77\x99\x4a\x42\xd9\x84\x1a\x52\x1b\xb5\xc7\xb4\xea\x86\x1c\x91\xcf\x94\x2b\xfb\x80\x86\xa1\x6c\x3a\xa9\x3b\xee\x87\xf2\xea\xf3\x5b\x43\x8f\x0d\xc8\xd1\x6f\x16\x0f\xc3\xb8\x9a\x4e\x4f\x19\x25\x69\xcd\x6c\xca\xd5\x8a\x8b\xe2\x41\x97\x4a\x54\x19\xa3\xfa\x5a\x8e\x6f\x54\x87\x59\x63\xcc\xd4\x75\x43\xef\x68\x41\x6e\xe4\x27\xd6\xb4\xba\x19\x67\x2f\x2e\xa3\x15\x17\x05\xbb\x27\x26\xd5\x86\x6c\xf4\x5f\x9e\x4f\x2e\xfc\xa8\xad\x49\x75\xe3\xfd\x2f\xd7\xa8\x22\xfa\xb3\xe3\x50\xbc\x29\x0a\xbd\xec\xc4\x64\xfc\xea\xd1\xd1\x91\xb2\x5f\xbc\xfc\xa7\xd4\x1d\xf3\xe2\x15\xfa\x44\xcc\xb7\xa5\xf2\x2c\x4f\x74\x26\xd0\xfd\x9a\xa9\x9b\x6e\xcb\xcd\x98\xc2\xab\x57\x6a\xb8\x36\x5c\xe5\xf6\xcd\x13\xf9\xb6\x54\xe0\xb4\xd8\xea\xd1\x50\x19\xd8\x1c\x75\x1e\xb5\x59\x7a\x66\x22\x27\xb5\x46\x58\xa7\x56\x79\x3b\xce\x95\x0f\x08\x46\xfd\x6a\xd0\xe1\x87\xb2\xa0\xd5\xed\x21\xa2\xc2\xb2\x29\xb9\x0b\x4c\x28\x5d\x75\x6b\xf7\x66\x43\x70\xe1\x71\xe9\xc0\xfd\x6e\xdb\x55\x9e\xcd\xa1\x05\xd8\x20\x79\xfd\x50\x6b\x3f\xbe\x3b\xee\xc6\xf9\xec\xb3\xd1\x17\x2f\x1e\xcb\x30\xb7\xe5\x48\x23\xd7\xd2\x19\xfc\x91\x72\x48\x5d\x9d\x83\xcb\xc5\xd9\xe2\x72\x00\xec\xa3\x7f\xdb\x34\x89\xa7\x05\x1e\xa6\x44\x1e\x4e\xef\x3f\x98\x50\x53\x83\xdd\x4e\x07\xcc\xd6\xb8\x3e\x6d\xc5\xfa\x9c\xf2\x8c\xdd\x11\xe0\x25\xc3\x16\x56\x32\x86\x69\x44\xed\xd4\x69\x1a\xe8\xec\xbf\x4f\xaf\x60\xe8\x04\x71\x07\xba\xed\xe1\x82\x70\xf0\x8d\x64\xbc\x7f\x86\xc2\x4e\x7b\xb7\x77\x1e\x3c\x7b\xe7\x81\x3a\x25\x7f\x54\x87\x01\xad\xa8\xa0\x58\xb0\x60\xc6\x57\xff\x36\xae\x01\xcf\xf5\x96\xbf\xb4\xaf\x2b\xd7\xae\x12\xa6\x3d\x8a\xa1\x64\x6b\xaf\x06\x2a\x55\xf7\x9d\x8c\x53\x57\x79\x6c\x10\x0c\x78\x88\x2a\x72\x6f\xbe\x49\xed\x33\x93\x94\xff\xcb\x84\x6e\xca\x7d\x89\x8b\xbf\xbe\xf9\x2f\xcf\xe9\xf0\x57\x97\x34\xeb\x8a\x51\xb8\xa2\x5d\xaa\x4a\xfa\x7c\x53\x02\x42\xf4\x37\x18\xff\x30\xa6\x2f\x3d\x9e\xbf\xb7\xb8\xd0\xf3\xf0\x7e\x1b\x3b\x4e\x7f\xfe\x40\xdd\xb0\x6b\x68\xe7\xfc\xbd\xbb\x63\xb7\x9c\x28\x99\xa5\x9f\x10\x0d\xae\xb8\x9c\x4c\x58\x51\x9c\x03\xe3\xfa\x39\x40\x2f\x45\x56\x47\x2a\xe2\xec\x20\x94\x5a\x77\xd2\xcc\xe9\xcf\x2e\x84\x7a\xea\xbb\x3b\xf2\x93\xa8\xbd\x05\x33\x6d\xf4\x3a\x78\xa5\x5e\x44\x3f\x53\x2e\x74\xbc\x9f\xa6\xa4\xc0\x72\x54\x90\xed\xe4\x1c\x4b\x1d\xe2\x4a\x95\x17\xac\xff\x81\xf3\xbc\x79\xa3\x65\x8f\x2d\xec\xd0\x28\x4d\x82\x39\xc8\x2b\xe7\x81\x7b\x29\x1e\x6a\x9a\xc9\x6b\xd0\x34\x97\x3a\xbb\x52\x14\x38\xfa\xe1\x7b\x9d\xa7\xfe\x97\x3f\x7f\xff\xed\xe4\xd2\x3d\x7e\x94\x73\x92\x0d\x21\xc9\xdf\x12\x4a\x8c\x8f\xf9\x5b\x66\x8b\xf1\xb4\x28\x3d\xa5\x40\x2c\x3a\x54\x25\x73\x0a\xf5\xfe\x91\x8b\xe3\x78\x2c\x4c\xcd\xd8\x47\x9c\x3d\x79\x75\x32\xbd\x58\xfa\xac\xcf\xe5\x11\x9a\x3d\x5c\x0d\xd8\x83\x66\x03\x93\xdd\x7f\x0e\xec\x61\xab\x5b\x19\xfd\x6d\x6c\x1b\x1f\x49\x69\x30\xfa\xbb\x3f\xd3\xa9\xb7\xb9\x0a\x62\x9e\x7f\x3f\x80\x97\xac\xd0\xfb\x49\x6c\xc9\xa4\x44\xdb\x6d\x8d\x3d\xd5\x6a\x34\x2d\x7e\xc7\xd6\x13\x7b\x45\x95\xf7\x4b\x3f\xe8\x5d\x4e\x02\x27\x8d\x2a\xe3\xf6\x48\x76\x8e\x89\x01\xa2\x27\x36\x42\xcb\x91\xea\xd1\xeb\xfb\x45\xf8\xe6\x94\x6c\x7e\xfe\x62\xb3\x17\x16\x58\x0d\x34\x1b\xe4\x60\xa1\x9e\xb5\x0e\x0b\x79\x16\x74\x44\x48\x23\xd5\x15\xc9\x89\x08\xe7\x56\x58\xbc\x7f\xbb\x98\xbe\x10\x78\xbb\xe9\x8b\xec\x9a\x59\xe6\xa2\x23\xd3\xef\x54\xde\xd3\x05\x5e\x68\xad\xe3\xac\xc0\x74\x34\xf1\x7d\x70\x26\xc7\x5e\xd3\xff\x5c\x68\x9b\x52\xcf\x1e\xef\x02\xfb\xa7\x2d\x4b\xa3\x14\x9d\x3b\x1a\x9b\x7b\x93\x2a\xf7\x35\x7b\x6d\xba\xc1\x1e\xd9\x65\xea\x7e\xd2\xbf\x64\xf2\xb3\xb3\x18\x9a\x7a\x13\x1e\xb5\x74\x66\x1f\x1f\x26\x30\x4d\x4c\x45\xe0\x68\x8e\x4c\x91\x45\xa2\xad\x99\x4d\xd0\xea\x55\x8e\xde\xb1\x0d\x62\xab\x79\x45\x3b\xe7\xa3\x9f\x12\xd3\x5e\x62\xd7\xc9\xed\xd4\xee\xf0\x71\x76\xbb\x26\xf9\xe0\xae\x99\x60\x55\x62\xb4\xf4\xd5\xc8\x4b\xfd\x93\xaa\x9f\x38\xd3\x51\xfb\xc5\xd4\xad\xd3\x11\xd0\x81\x72\x63\x48\x8f\x93\xa8\x8e\x33\x8e\xd6\xd7\x97\x61\xb7\x23\x3c\xc6\xb8\xb7\x3f\x07\xe6\x09\x5c\x9e\x1b\x15\xcb\xe6\x02\x70\xb3\x15\x50\xb7\x17\xbc\x75\x9f\x1c\x60\x20\x6c\x79\x3b\xb1\x97\xa7\x03\xb2\xc9\xc5\xbb\x67\x0d\x34\x53\xf6\xaa\xf7\xf8\xc0\xa1\x6c\xfe\x36\x4c\x96\x19\x57\xb1\xbf\xfc\x29\x58\x28\x8f\x99\x37\x84\x31\xb3\xb9\x3d\x1b\x93\x8b\x39\x76\x64\x40\x47\x63\x5a\xb9\x9a\x3a\x32\xf1\x23\x31\x2d\x00\x77\x73\x54\x92\x44\x0c\x34\x3f\xb3\xd3\xe4\x27\xbb\xbf\xbd\xa0\x82\x16\xf5\x06\xb2\x82\x5f\xcd\xc3\x26\x3d\x48\xae\x47\xc7\x14\xb0\x3b\x26\xe1\x58\x98\x2f\x82\xc0\xe8\x60\xd5\xa2\x67\x5d\x17\xfd\x5d\xb1\x46\x25\x59\x52\x9d\x77\xd9\x55\xd4\x33\x59\x97\x87\xa6\x36\x7b\x89\xeb\x89\x9a\x71\xf2\xa8\xfb\xd5\x82\x67\x1c\xeb\xd4\xe2\xd6\xef\x00\x15\xad\xfb\x95\xab\x27\xb7\x5e\xac\xa2\xf5\x74\x9d\xea\x69\xeb\x70\xac\x7e\xf5\x74\x9d\xea\x49\x9a\x49\x95\x41\xfb\xb5\x3f\x03\x56\x6c\x40\x4d\x50\x55\xf5\xf3\x51\xed\xf7\x66\xc3\x81\x16\xde\x56\xa7\xb6\x11\x78\x7a\xb3\xcb\xe9\x98\x67\x1f\xef\x0b\x3f\x47\x4d\xcf\xad\x49\x7b\xee\x80\x0a\x71\xc1\xaa\x1b\x6f\x29\x02\x96\x4b\xaf\x1c\xbe\x71\xfa\x3e\xd4\x01\xeb\x29\xac\x30\x64\x10\x5d\x75\x62\x50\x7e\x0e\x78\x57\xb8\xbe\x83\x59\x55\x69\x9e\x1d\x42\x5e\x90\x30\xbc\x7c\x65\x64\xda\x47\x7b\x0a\x03\xcb\x8c\xd2\xd4\xde\xd8\x73\x39\x2c\x18\x6c\x26\x80\xe2\x28\xb0\x66\x08\x40\x13\x40\x33\x08\xb1\x39\x0a\xa5\x09\x1c\x7a\x1c\x6c\x33\xb9\x14\x75\x12\xec\x26\xba\x5c\x01\x48\xee\x1e\x80\xb3\x3f\x0b\x09\x50\x9c\x00\x8a\x0e\xac\x33\x01\x94\x13\xd8\x51\x1f\xb6\x13\x0a\xcf\xd9\x35\xe0\x41\x4b\x86\xec\x04\x50\x44\x00\x58\xcf\xae\xc1\x79\x87\x6e\x51\xa8\xcf\xae\x6d\x05\xfa\xd9\xb5\x84\x6a\xae\xba\xc5\xab\x9a\x4f\xf4\x31\x5c\xdf\x1c\x48\x11\x79\x75\xd0\x21\x95\xce\xc1\x64\x37\x2a\xa2\x87\x6a\x9e\x83\xa9\x4e\xd6\x46\x1f\xab\x7e\x0e\xa6\xba\x33\x5d\x68\xd8\xe0\xba\x51\xbc\x0a\xaf\x6e\xf0\xda\xe8\x5d\x83\x56\x49\xef\x5a\xbc\x5e\x7a\xd7\x92\xc0\x46\xc1\x33\x67\x40\x49\x41\xb0\xa3\x60\xa2\xef\x46\xf0\x8e\xc7\x01\x48\xc1\x24\x27\x81\x4a\x81\x9c\x57\xb7\x44\xa6\x01\xab\xb3\xac\x5b\x18\xa8\xd4\x7f\x2e\x78\x1b\x19\xf6\x35\x0a\xd6\xe0\x3f\x3c\x1d\x16\xd2\xb5\x58\xbc\x82\x6e\xcf\x37\x6a\x41\xb7\xd4\xd8\x05\x00\xc9\x58\x74\x83\x6e\x09\x3b\x28\x06\x8d\xda\xb5\x64\x90\x54\xc0\x70\x1c\x8c\x6a\x1c\x2e\x75\x38\xba\x90\x5d\xa6\xff\x64\x74\x77\x46\xc0\xbc\xbc\x07\xe3\xb7\x20\x8f\x96\xbd\x07\x45\x06\xf4\x0c\x6e\x49\x9b\x50\x4d\x1b\x78\x4a\x80\xc5\x0c\x40\x39\x25\xf7\xef\x71\xe0\x9d\xba\xb6\x0b\xa0\xa7\xae\xa5\x2a\xa2\x30\xf0\xa7\xae\xa5\xc1\x40\x81\xc5\x95\x83\x8b\x82\x02\x42\xc1\x55\x9d\x04\xe0\x28\xaf\x3f\x89\xd3\x88\x12\xc1\xa4\xba\x96\x0a\x2b\x95\x40\x5a\xdd\xc2\x77\x04\x30\xd5\xb5\xe4\x8b\x04\x4a\x03\x9d\xea\x1a\x14\x7e\x2a\x6d\x4a\x06\x50\x55\x69\x40\x54\x5d\x9b\x31\x0d\x29\xea\x11\x4a\x80\xa9\x1a\x76\x0a\xa8\x03\xa1\xfd\x25\x6f\x7f\xc9\xfb\x9a\x2e\x79\x31\x78\x2c\xb8\x34\xb2\x30\x5a\x31\xa0\xac\xa4\xeb\xd8\x38\xa0\x16\x1a\x42\x66\xc1\x6f\x8d\x10\x68\xad\x54\x41\xbc\x1b\x90\xad\xae\x25\xb3\xc9\x34\xe0\xad\xae\xa5\x43\x70\xc1\x4f\xa8\xd4\x4b\xe0\x60\x5c\x60\xba\x7d\xd0\xae\x38\x2c\x57\x92\xce\x93\x0e\xdf\xd5\xb5\x39\xda\x4f\x22\xa4\x57\xd7\xe0\xe0\x5e\x49\x72\xde\x02\x81\xcd\x85\xf9\xea\xda\x2c\x85\x07\x0c\xfd\xe5\xbd\x02\x04\x01\x4b\x9a\x86\x3e\x60\xd8\x04\x1c\x58\x12\x45\x08\x74\x58\xd7\x66\x4d\x1e\x1c\x4e\xac\x6b\xbb\x04\x16\xdb\xaa\xfb\xe9\x5a\x1e\x08\x76\x6c\xd8\x27\xb0\x92\x97\x66\x94\xfb\x92\xc6\x36\x20\x51\x1d\xba\xb1\xb5\x79\xc4\x14\xea\xfe\x57\xf4\x10\x9b\x94\x2f\xe3\x3e\x85\x59\x15\x12\xdc\xc3\x30\xe4\xe3\xbd\x7b\x18\xec\x1e\xd6\xeb\xb5\xf7\x0d\xf7\xda\xde\x37\xbc\xf7\x0d\xef\xcd\x06\x7b\xb3\x81\x6d\x7b\xdf\x30\x94\xe4\xde\x37\x0c\x78\x78\xef\x1b\xfe\x4a\x7d\xc3\x46\xf9\xd5\x8e\x61\xe0\x46\xfb\xe2\x7e\x61\x03\xae\x72\x9a\x65\xac\xad\xc4\x35\xbb\x25\x11\x27\x13\xe8\x02\xb4\x41\x33\x32\xb0\xc7\xb9\x2b\xe1\x36\xa7\xf2\x5e\x92\xb8\xb6\xa7\xe6\x35\x7b\x69\x90\xb2\xa2\xca\x49\xee\xe8\x21\x06\x51\xc5\xe5\xab\x42\x8e\xfd\x18\x9d\xa2\x86\x64\xb4\xa6\x44\x23\x0c\x63\xfd\xbb\x5e\x7c\x5b\x3b\x1e\x40\x91\x0a\x4e\x8a\x95\xa9\xc5\x5d\x79\xd8\x2b\x9e\xb6\x6f\x18\xb9\xed\x2a\x44\x0f\x5f\x75\x5d\xd5\x97\x11\x66\x8b\x44\x5b\x30\x9a\x86\xfc\xd3\x6a\x01\x7a\x44\x90\xc3\xef\xf5\xa2\xe7\x16\x54\x53\xda\x75\xdd\x7c\x1e\xd7\xd4\x64\x4f\xef\xf2\x74\x93\xcf\x35\x6d\xd4\xf6\x5c\x90\x8c\x55\xd3\xb0\x93\x5d\xeb\x6d\x85\x8b\xe1\xfb\x76\x4f\x18\x0b\x2a\xc9\x51\xde\x36\x50\x97\x3c\x5b\x49\x55\x92\xe6\x54\x3c\x38\x47\xac\xc1\x36\xc2\xfa\xac\xb8\x0d\xc3\x81\xb6\x75\xbd\x91\x70\x5d\x37\x0c\x67\x6b\xc2\xbd\x11\x6b\x1d\xd3\x64\x90\xc5\xaa\xcf\x76\xcd\x60\x80\xa9\xeb\x9d\xa2\x2a\xb5\x97\xe2\x01\x35\x4c\xd8\x50\x82\x41\xa7\xa1\xdd\xd4\x1e\x04\xdb\x21\xf5\x01\xad\x2c\x88\xe6\x41\x45\x24\x30\xef\x23\xe0\xb1\x53\x6f\xfb\xaa\xfa\x20\x45\x6e\xeb\x83\xfc\xf0\x2d\xaa\x49\x93\x99\x53\x07\x8b\xd6\x51\x65\x2d\x04\x43\x85\xd4\xd9\x24\x2b\x9f\x26\xff\xe7\xef\xd0\x9a\xb5\x0d\x3f\xb6\x19\x5d\xa0\x3e\xa3\xd7\xea\x2d\x7d\xbb\xb5\x57\x0c\x81\x0a\x82\xb9\x40\xaf\xbf\x45\x25\xad\x5a\x29\x9a\xa3\xc4\x3c\xe5\xf7\xfb\xef\x80\x87\x06\xa6\xf6\xc2\x14\xde\x4d\x27\xba\x39\x1b\xb5\xae\xa9\x6b\xf4\x5e\x73\xe2\xc3\xd9\x82\xde\xb7\x55\xad\xec\x81\x77\xcc\x88\x05\x7f\x25\x2a\xc1\x76\xc8\x29\x60\x3a\x24\x40\x2b\x04\x49\x5d\xc0\x43\x61\x55\x31\x9c\x02\x67\x0c\xf1\x23\x7f\x0b\x7e\xf8\xb7\x96\x2d\x1f\x44\x3c\xd7\xf5\xef\xfa\xb9\x7e\x92\xab\xfd\x71\xbc\xa8\xcc\xe8\x20\x7b\x85\xde\xbb\x9a\x32\x23\xcf\xc6\x24\xfe\x8d\xbc\x87\x82\xf2\xa0\xd4\x8d\x55\x25\xaf\xe2\xda\x19\x1a\xb3\x8c\x68\x80\xc7\x73\x0f\x72\x9e\x69\xaa\xc1\xe5\xd9\x55\x46\x68\xb0\x76\x8b\x9d\x59\x9b\x0f\x35\x7d\x6b\xdc\x75\xf9\xf0\xb8\xae\xd9\x90\x1b\xca\x05\x18\x77\x41\x3f\xdc\xdf\x38\x9c\x56\x37\xba\xc6\x76\xd9\x16\x82\xd6\x85\x1b\xf1\xe4\x38\x1d\x21\x23\x87\x7c\x63\x27\xf6\x6c\x70\x58\xa7\x4d\xeb\x2a\x52\x35\xa6\xd3\x6c\xef\xa5\xfb\x36\xa9\x84\x2e\xf1\xdc\x48\x31\x57\xe3\x06\xbb\xe9\x54\xf8\xae\xfc\x95\xb1\xa7\x62\xe5\x04\x9e\x66\xf9\xca\x23\x2c\xa9\xe1\xc2\x4d\x93\x72\x14\x1a\xf7\xe1\xdc\x8d\x25\x48\x85\xab\x49\x1f\x45\xdf\xfc\xa0\x1e\x45\xec\xde\xc5\xfb\x69\xb0\x8d\xc1\x8e\x32\x1a\xe3\x8f\x38\xbb\x25\xd5\xf4\x0d\x44\x61\x20\xa9\x89\xc8\x1f\x2a\x5c\xea\x7a\x5b\x3e\xac\xf3\x80\x2e\x3f\x34\x76\xb3\x50\x01\x4d\x22\x6c\x12\x78\x10\x58\x35\x3a\x2b\x2d\x07\x96\xfa\xf9\xc8\x35\xb8\x73\xe8\xfc\x73\xed\xd1\x6b\xe8\x5d\x46\x62\x2a\x8e\xfc\xf0\xdc\x4e\xdf\x4d\xd6\x16\xd8\xe8\xb6\xa9\x2b\x40\xbd\xdd\xad\xcc\x73\xce\xf5\xa2\xaa\x7a\xe1\x42\x1e\xf9\x07\x1b\x49\x32\xd9\xe9\xc1\x06\x58\x3e\x6c\x83\xbf\x12\x83\x1f\xd1\x5b\x7f\xf4\x8f\x93\x3a\x69\x50\x4e\x35\xcb\x78\x8e\xf6\xc1\x87\x1f\xcf\xfb\x7c\xe6\x03\xce\x19\x47\x3f\x16\x2c\xbb\x45\xe7\x44\xa9\xaf\x4f\x0d\x4a\xd2\x2c\xf3\xed\x4a\x51\xef\x4b\x29\x4f\xd2\x7c\x2e\xa5\x94\x9b\x65\xae\xcd\x5e\xd3\x54\x9f\x6d\x21\xe5\x12\xdf\x40\x6b\xea\xcb\x1b\xb0\x3a\x50\xea\x25\x8b\x7b\x35\xf3\x28\x7c\xb3\x66\xf7\x47\x82\x1d\xb5\x9c\x1c\xd1\xc9\x20\x8a\x68\xff\x6f\xc9\x83\xfc\x1b\x6c\x04\x7f\xd3\x0f\xf7\xae\x2c\x82\x29\x03\xbb\xfa\x5d\x4a\xea\x0f\x3f\x9e\x4b\x71\xe1\x34\xa6\xc9\xd9\xa7\x1c\x9d\x10\x91\x9d\x64\xa4\x5e\x9f\x98\x6e\x7c\xf1\xe9\x28\x59\x45\x05\x6b\x80\xd0\x45\xa7\x28\x63\x45\x61\xb2\xf8\xd9\x0a\x9d\x91\x7a\xed\x48\x3c\xf6\x58\x1e\xbf\x18\x6f\xcd\x18\xac\x88\xa9\xb7\xb5\xe5\x3b\x66\x67\x7b\x17\x83\x66\x99\xc6\x3c\x9e\x72\xc9\xff\x40\x18\x8f\x3b\x9f\x96\xdd\xd5\x2e\x3e\x58\xd8\xc7\xd5\x45\xd0\xf3\xaa\xf4\x4b\x15\x1b\xb2\x93\x33\xd3\x63\x21\x97\x2b\xad\x2a\xe7\x24\x47\xec\x8e\x34\x0d\xcd\x09\x47\x8e\x57\xf8\x37\x4f\x5a\xec\x04\xcf\x69\xc6\x4c\xee\xab\x2c\x3f\x79\x95\x65\xf0\xc5\xc5\x63\x4c\xf2\x9d\x4d\xc6\x84\xf3\x92\x56\xcf\x94\x35\x45\xea\x25\x4b\x1d\x62\xf4\x2f\x56\x00\xa5\x5e\x11\x78\x86\x0b\x72\x39\xaa\x84\xf5\xbd\x78\xfa\xb9\xfe\x4d\xc1\xfe\xe8\x55\x2a\x9c\x51\xb9\xed\x6f\x6e\x43\xa3\x8a\xe5\xe3\xf6\xdc\x7f\xbd\xda\x85\xde\x7e\xd5\xa5\xdb\xe6\x8a\xba\x1b\x2c\xc8\x3d\x06\xc2\xb4\xda\x21\x0c\x2a\xf9\xda\x85\x3e\xbd\xba\x44\x3f\x69\x7a\xf3\x8b\x25\x36\x4c\x68\xed\xe9\x9c\x95\x98\x02\x41\x34\xd6\x7d\xe8\x69\xdb\xa1\x2b\x47\x0c\x69\x6a\x16\xe1\x63\x72\x7e\x75\x5d\xa2\x56\xde\x7a\xcc\x8d\x64\x5f\xcb\x6e\xa4\xa5\x29\x02\x9d\x1e\xe0\x99\x59\x6c\x98\x67\x87\x6d\x60\x56\x2d\x68\x22\xea\xdc\xaa\x88\x93\x8a\x53\xe5\x19\xf1\x9c\xe7\x06\xc4\x4d\x63\xfe\xe9\x38\x4d\xad\x2c\x4c\x1f\xa9\x9f\xd9\x0d\xad\xec\xa9\x64\xc6\x61\xb7\xc2\xd3\xda\xc3\x5e\xba\x3f\xb9\x74\xe7\xbc\xb8\xa8\xf0\xb2\x98\x76\x2c\xf5\x99\x78\x81\x95\x17\x94\xa8\x77\x4e\x72\xca\xe5\xff\xa3\xc5\xe2\x67\x65\x7c\x6e\x2b\xab\x79\x2a\x33\xac\x61\x59\xd3\x3b\x24\xf7\x4b\x10\xcf\x3f\x33\x9a\x9f\x80\x6b\x0c\x5e\x56\xb9\xec\x26\xe1\xbd\xd8\x18\x43\x45\x97\x4d\x74\x81\xc4\x2a\xba\x20\xe4\xcf\xb8\x5e\xd3\xec\xf6\xca\xb3\x31\xb3\x46\xfe\x56\x79\x3f\xf5\x84\xca\xf0\x6f\x73\x99\xa0\xe9\xee\x15\xf4\xda\x78\xed\x71\xef\x85\x19\xaa\x7c\x19\x61\xce\x59\x46\x3b\x27\x82\x32\x36\x38\xf6\x3e\xbd\x74\x8a\xed\xcf\xef\xbe\x92\xd0\xb3\x64\x90\x5d\x28\x8b\x32\xca\x7d\xd9\x12\x88\x61\x36\xa3\x9f\xdd\x65\xbd\x25\xc0\x35\xd0\xaf\x7b\x55\xcf\xad\x7e\xd6\xb7\x7f\xbb\x20\xf7\x08\x83\xb6\x7a\x93\x45\x32\xdc\x58\x32\x57\xfd\xdc\xb8\x56\x1f\xc5\x52\x6e\x34\x9a\xd1\xbf\x39\xb9\x35\xfe\xd7\x29\x9d\x2e\xac\x23\x4f\x26\xbb\x8c\xdd\x86\x07\x4e\x3b\xfd\x9b\x31\x8d\xab\x10\xa1\x9a\xd5\x6d\xa1\x63\x37\x26\x1c\x3e\x9b\x05\xe4\x67\x59\x58\xf5\xb7\x67\x81\xfb\x27\x56\x4b\x0d\x87\x94\x6f\x14\x4e\x8d\xf1\x61\x5f\x15\x0f\x14\x4e\xf5\x34\xaa\x6f\xbf\xff\xee\xbb\x40\x85\xf9\xe9\x12\xab\xf1\x52\xaa\x93\x54\x21\xa1\xe4\x53\x21\xe2\xd3\xba\xdd\x44\xe8\x78\x34\x24\x7c\x5a\x36\xc4\x42\xc5\x77\x53\x63\x35\x68\x99\x9c\x91\x63\xe5\x32\xa8\x02\x53\x05\xc9\xac\x1a\xc9\x3c\x9a\xa4\x18\xce\xa7\x0a\x64\x4b\x4d\x53\x1c\xc9\xa2\x02\xe6\x48\x05\x3d\x18\x9d\x1b\x3f\x29\x33\x6a\xda\x29\xb4\xda\x75\x3e\x54\x62\x16\x54\x97\xe3\x34\x49\x11\x9e\xfb\xb4\x91\xd9\x34\x2d\xd0\x60\x19\x4f\x29\x35\x7e\xe3\xd9\x4d\x80\xcc\x25\x58\xe4\x6e\x34\x4b\x69\xab\xdc\x24\x60\x48\x58\x3c\x0f\x29\x45\x54\x74\x59\x45\x41\x92\x08\x92\x73\xb4\x99\x4b\x14\xa1\x19\xc8\x34\x9a\xce\x20\x8a\xd0\x4c\x10\x0a\x1e\xf3\x8f\x10\x4d\x13\x0d\x6a\x8e\x23\x14\xe3\xb9\x44\xf0\x0c\x22\x68\x00\x65\x3c\x78\x32\x29\x47\xc8\xe6\xfe\x44\x46\x0a\xc9\x0c\x1a\x66\xfc\x00\xf6\xcd\x78\x3e\xd0\x74\x9e\x4f\x84\x64\x3c\x0b\x08\x74\x3c\xe3\xd1\x9a\xe1\x3c\x9f\x48\x1c\xe7\xd6\xe1\x99\xf1\xac\x92\xf4\x5c\x12\x27\x23\x42\x6a\x66\x20\x85\x04\x6a\x1c\x83\xa3\x50\xf9\xd6\x1f\x73\x21\xb0\x2a\xa8\x0e\x92\xe9\x10\xa5\x02\x72\xbf\x9d\x70\x10\xee\xe6\x4a\x80\xe2\x5b\x2a\x7c\x49\xd2\x5f\x62\x71\x90\x45\x73\xeb\xff\x65\x31\x70\x26\xb8\x9f\x07\x3e\x04\xc9\xdf\x46\x3b\xbc\xf7\x21\x4c\xb4\xa7\xc6\x3f\xda\x1b\xc2\x37\x0d\xe1\xbc\x57\x3c\xc6\x9a\x01\xb4\x9e\xb3\x62\x0d\x62\x4b\x53\x5e\x32\xa8\x41\x77\x87\xe2\xf4\xea\x52\xde\xa3\x55\x36\x10\x2e\xf8\xf1\x58\xa6\x74\x1e\x89\xbe\x51\x9a\x52\x77\xdf\xc0\x42\x90\xb2\x16\xd3\x0b\xbf\xb7\x83\x3f\xb9\x1d\x3c\xd1\xb8\xf7\xab\x7b\xdc\x41\x72\xb6\x25\xae\x8e\xe4\x89\x52\x16\xf1\x9e\xd3\xcc\x6e\xa6\xc8\x05\xf8\xd8\x82\x63\x6b\xb9\xa4\x4c\x24\x2a\x38\x5e\x43\x15\x75\xb7\x98\x0e\x2b\x72\x7b\x5b\xa6\xa2\x93\x38\x66\x2d\x32\x07\x27\x2d\x63\xc3\x18\xce\xc9\xe1\x9a\x81\xb8\x79\xb1\x87\xca\x93\xc7\xbd\xfb\xb0\x58\x13\x2d\xb6\xaf\x58\x7e\x30\xbd\xb9\xba\xb7\xfb\x37\x07\x7d\x75\xc0\x45\xc1\xee\x75\x5f\x7d\xa9\x25\xd7\x49\xf6\x3d\xc8\x11\x14\xef\x2e\xa9\xbc\x44\x1b\x9b\xab\xdf\x7d\xed\xfb\x94\x37\x13\xd2\x68\xf5\xbb\x31\x2e\xb3\x45\x20\xf8\xc6\xdb\x42\xf2\xa2\x5a\xe9\x10\x67\xf9\x6f\x1b\x7d\xa3\x2b\x19\x1b\xd7\xc1\x92\xac\xf1\x1d\x65\x6d\x20\xfb\x70\xa1\x39\xdd\x0b\xf3\x8a\x12\x33\x0f\xac\x75\xa6\x36\x0d\x95\xe9\x66\x89\x6f\xae\xc3\x24\xe9\xf7\xdd\x4b\xea\xf2\x94\x33\x6b\x9b\x38\x22\x9f\x29\x17\x9b\x73\x12\x2b\xb0\x63\x6b\x09\x3e\x82\x4a\x74\xc7\x6b\x29\xc3\x80\xc0\x78\xbf\xfa\x4f\xf7\x55\xa3\xbb\x85\xfa\xd3\x1f\x05\x16\x6f\xaf\x1c\xf9\xcd\x39\xc8\x0a\x9a\x3d\x00\xc1\xe1\x3a\xc7\x98\x7c\x09\xfd\x88\x39\xc9\xd1\x3b\x5c\xe1\x1b\x7d\xbf\x7c\xb9\xb8\xfa\xf1\xdd\x2b\xb9\x68\xc1\x2a\xdb\x97\xe7\xa3\x5e\xb5\x85\xdf\xa3\xf7\xf3\xf3\x19\x06\x63\x03\x0b\xad\x1d\x8d\x6e\x8b\x4c\x0c\x2b\x78\x42\xd5\x90\x37\x93\x36\x87\xd0\x9d\x83\x63\x79\x57\xe6\x8f\x02\xca\xd9\x75\x35\x8d\x01\x4d\xfe\x29\xc7\x02\x2f\x31\x27\x8b\x51\xbf\x56\x5f\x59\x37\x8f\x82\x02\x3a\x43\x3c\x24\xe2\x51\xda\xc6\x9b\xe4\xbc\x46\xa3\x93\x3f\xcb\x93\xe4\x7b\x8c\x46\xa9\x26\x7b\x91\xfa\x66\xc3\x71\x0f\x4a\x92\x07\x69\xe8\x29\x9a\xe0\xda\x29\x26\xc2\x49\x23\x60\xcc\xf4\x17\x36\xf8\x4d\x1a\xcf\xb7\xf1\x0a\x05\x8a\xf1\xcf\xf0\x08\x75\x9e\x9f\x71\x99\x9a\xe6\x0d\x82\xd7\xce\x9b\x53\x2d\xcf\xf3\xf8\x8c\xd2\x04\xd5\xc7\x9b\xf4\xf6\x8c\xef\xcc\x90\x07\x08\xe0\xe9\x99\x70\x18\x8e\x79\x7f\xb6\xad\x70\x37\xa7\xa6\x5d\xc0\xbb\xb3\x5b\xcf\x4e\xfc\x3e\x1d\xf4\xe8\xcc\xf6\xe6\x00\x2e\xa6\x61\x2f\xce\x3c\x0f\x8e\x5a\xc5\xc0\x7d\x39\xd5\x7b\x03\xb9\xd2\xa1\x04\xcf\x4d\x9f\xdd\x06\x48\xce\x43\x45\x9d\x3c\xa1\xba\x6d\x5b\xdf\x0d\xe6\x8f\x81\xf8\x62\xc2\x7e\x98\x59\x3e\x98\x48\x4d\xa7\x54\xff\x8b\x13\xb4\x01\x9a\x09\xbe\x97\x88\x77\x05\x60\xef\x0c\x79\x55\xa6\x3d\x2a\x01\x6f\x4a\xc4\x30\x14\xf2\xa2\x84\x3c\x28\x5b\x78\x4f\x02\x5e\x92\xb0\xd5\x34\xec\x1d\xd9\xc2\x33\xa2\x3c\x20\xe3\x4a\xde\x63\x79\x45\x02\x5b\x61\x72\xc5\xd6\xb8\x18\x01\xc7\x9e\x88\xfc\x74\x29\xc2\x56\x29\x97\x42\x51\x53\x50\xac\x10\x17\x05\x62\xab\x15\x5f\x33\xb6\xb9\x2f\x3c\xfb\x51\x57\x1a\x9f\x7c\x96\x83\x44\x57\xbf\x9e\x69\xcb\x5d\x2e\xef\xff\x9b\xf7\xd7\xe9\x35\xa4\x15\x0d\x5f\x0a\x2e\x2b\x2d\xbb\x25\x57\x95\xcb\x22\x5f\xa0\xb8\xa0\xbf\x77\xa3\x48\xb8\x19\xd4\x8c\x8b\x9b\x86\xf0\x4f\xa7\x3f\x8f\xed\x97\x98\xcc\xc4\xbf\xb7\xcd\xa4\xe4\x82\x18\xb0\x41\x60\x04\x20\x67\x6b\x89\x3f\x9f\xb1\xaa\x32\x70\xd1\x21\x72\xd0\x82\x44\x30\x4f\x7a\xdd\x90\x15\xfd\xbc\x65\xf7\xa3\x96\xe9\xe5\x9f\xb7\x99\xe5\x65\x9b\xdd\x86\x0b\x86\xef\xa7\x18\x2d\x71\x76\xdb\xd6\x21\x3b\x4a\x3c\xdb\x27\x9b\x9c\x95\xfd\x32\xed\x68\x99\x0a\x96\x4d\xc7\x2b\x40\x66\x19\xdf\xf3\x8b\x02\x73\x41\x33\x55\x65\x63\x21\xd8\x34\x0b\x43\x9b\x09\xe8\x9f\x16\x1b\x6f\xf7\xec\xc5\x15\x3a\xfd\xb4\x40\xe7\x94\x4f\x99\xa3\x74\xeb\x50\x19\x6c\x38\xb7\x75\xb8\xab\x6b\x8d\xb1\x1c\x4b\x21\x1c\xb1\x1d\x7b\x03\xab\x8c\x93\xc4\x62\x5d\x98\xcb\x6b\xcd\xf2\xad\x43\x17\xf0\x3d\x27\x7a\xd8\x4b\x39\x6c\xf9\xe7\xc9\x0a\x0e\xd0\x85\x40\x51\xcb\xf6\xf8\x12\xc0\x4a\x86\x44\x48\x22\x5b\x52\x24\xa5\x74\x48\x94\xe6\xa0\xb4\x08\xa8\x84\x48\x94\xe8\x78\x89\x91\xa8\x09\x3d\xde\xd9\xc9\x52\x23\x3b\xdb\x22\xd1\x3e\x68\x37\x70\x62\xad\x91\x28\x55\xbf\x16\x09\xa4\xe6\x88\x6d\xe0\x3a\x7c\x35\x6e\x04\x15\x00\xa0\xc3\xcd\xdc\x68\xf7\xaa\x1d\xdc\x58\xa9\x9b\xe8\x08\xbb\x7d\x7b\xb9\x42\xac\xa4\x42\xd8\x2b\x7a\xde\x65\x19\xd9\x87\xe4\x4e\x04\xd6\xd5\xd4\xe9\xda\x5d\x79\x9b\xb7\xae\x12\x18\x3a\xc9\xc9\xdd\x09\xcf\xf1\xeb\x43\xd5\x4d\xbd\x71\xe2\xe5\x60\x45\x6f\xcc\x98\xa3\x17\xaf\x5f\x1c\xa3\x05\x2d\x69\x81\x9b\xe2\xa1\x67\xc1\x72\xcf\x45\xa9\xae\x58\xe3\x3a\xa4\xb2\x74\xbf\x7d\x81\x5e\xb2\x46\xf5\x4c\x5e\xe8\x0b\x82\xef\x88\xcd\x62\x92\x9c\x28\xde\x51\x52\xd6\xe2\xe1\x55\xb4\xa6\x7b\x4a\x2d\x77\x78\x31\xcb\x58\x10\x8f\x6d\x83\x9c\x17\x73\xa7\x7c\x21\x9a\x96\xbc\x50\x31\x3d\x2a\x28\x47\x4a\x02\x4e\x44\x2f\x38\x27\x3a\x7e\x3b\x51\xc3\xe8\x1d\xe5\x4d\x56\x1f\xd8\xd8\x6c\x51\x9a\xde\x66\x7c\xa1\xc2\x8d\x5e\x3c\xb9\x24\x42\x49\xd5\xa8\xf5\x57\xa6\x1d\x85\xdd\xc0\xfc\x75\xf8\xa8\x43\x33\x2e\xcf\xad\x2c\xf2\x72\xf2\x73\xca\x6f\xe1\x00\x47\x54\xab\x0f\x2f\x4f\x4b\xfc\x3b\xab\xd0\xc5\x8f\x36\x20\xef\xd5\x17\x9c\xb8\x28\x43\x84\x94\x25\x3d\x72\x73\x1b\x55\x10\x23\x65\x49\xd5\xa5\x53\x2a\x58\x60\xad\xed\xd4\xbe\x31\xd4\xd4\xe4\xef\xda\xa3\xa1\xfe\x1a\x2f\xfe\xea\x57\x0c\x95\xa7\x6c\x49\xad\xc7\xdf\xd7\xb6\x76\xa0\x18\x65\x4a\x62\xdd\x84\x92\xc0\x46\x87\x7a\xf0\xdf\xb2\x6b\x67\xfa\x6d\x6d\x58\x46\xef\x59\x45\x0e\x15\x23\x40\x92\x13\xe8\x7f\x46\xb7\xe2\xa7\x86\x0a\x12\x65\x87\x60\x91\x29\xcf\x01\x04\x19\x6f\xc3\xe2\xe9\x5b\xa9\x54\xfd\x75\x75\xa2\x8c\xf0\x5c\x16\x6c\x69\x1d\xe1\xbb\xec\xe9\xc7\x0f\x11\xf8\xf1\x91\x8e\x7e\xfc\x70\xf9\x74\x9d\x9c\xa1\x38\xef\x28\x34\xc4\xef\xea\x9c\x10\x91\xb8\xbe\x9b\xa6\xe7\x22\x1a\xaf\x72\x0f\x08\x25\xf1\x87\x05\x5a\x81\x5b\x5a\x45\xb1\x3c\xfa\x47\xf3\xe2\x73\xad\xfd\x8a\x26\x14\x74\xb1\xc6\x0a\xa1\xcf\x55\x75\x95\x1b\x25\x2e\x53\x29\xbf\xe5\x52\xc2\xb8\x1c\x68\x5b\x94\x1d\x9d\x13\x6d\xd9\xcc\xdf\xd8\x7a\xb5\x60\x8a\xe3\x04\x75\x5c\x48\xfe\x46\xf3\x5c\x54\xea\xff\x54\x3b\x1c\x46\xf5\xa5\x0a\x5d\xa4\x95\x7b\x15\xdf\x61\x5a\xe0\x25\x2d\xa8\x50\xf1\xc2\xaf\x8e\x5d\xd1\x7d\x88\xd2\xab\x0a\x5c\x8e\x16\xa5\xec\x3d\x08\xaf\xa7\x3d\x43\xed\x82\xc6\x50\x47\xc7\x03\x29\x68\x06\x8d\xa5\xee\x0f\x3d\xae\xea\xc0\x44\xb6\x65\xda\xd1\x87\x3e\x7e\xb8\xdc\x89\x58\x97\x3c\x2a\x4d\xac\xcb\x37\x46\xc5\xba\xfa\xc3\x42\x97\x5e\x0e\x4e\xda\x66\x2d\xf0\x47\x95\xec\xff\xba\x7b\x0e\x92\xbb\x33\x3a\x7a\xe1\x55\x51\xf0\x73\xfa\x8d\xf7\x80\xeb\x15\x8f\x8e\xdd\x86\xbe\x19\xc0\x17\xad\x59\xc8\xb5\xfe\x5b\x14\x03\x07\xcc\x51\x14\x83\x4a\x1e\xa0\x92\x04\x28\x72\xd2\x12\xfa\x01\x3b\xdd\xdd\x6a\x84\x1f\xb3\x43\xda\xf6\x84\x67\xa4\x5e\xaf\x82\xa7\xa3\x37\x29\x67\xa4\x5e\xbf\x1d\xe4\x29\xa9\x7a\x9f\x6f\x17\xc0\x9a\xc8\xae\x77\x1b\xb5\x91\x83\x75\xfc\x6d\x83\x9e\xe8\x58\x09\xd3\xd1\xd1\x79\x08\xbd\xef\xcc\xfb\xba\x6e\x76\xaf\xc0\x69\x74\x4f\xf7\x0a\xa0\xa6\xd4\x5d\xd4\x8b\x91\x5a\x40\xcf\x36\x20\xf6\x64\x02\x04\x0e\x14\x74\x0c\x02\xfa\x31\x15\x31\xa3\x6a\xc3\x63\xde\x01\x7d\x90\x1c\x35\x8c\x89\x43\xd4\x60\x10\xf6\xa0\xc2\x53\x51\x16\xc9\xb6\x28\xf4\xdc\x8b\x86\x90\x43\xdf\xd0\x71\xf2\x65\xb5\x13\x6f\xb8\x11\xa1\x11\x1d\x6d\x52\xe5\xd5\x54\xa1\x91\x54\x24\x74\xbb\xcd\x9a\x2a\x9f\x62\x4a\x08\x0a\xcc\xf9\xc2\x51\x18\xa9\xd9\x1c\x9d\x12\x57\xd3\xf9\x23\x27\x4d\x7f\x57\xb9\xc2\xcd\x2d\x27\xcd\xb1\x91\x82\xef\x20\x36\xf6\xa7\x9b\x62\x88\x7c\x8c\x65\xf4\xd9\x16\x9e\x60\x53\xf5\xd6\x85\x99\xa2\x48\x71\x11\xdb\x46\x23\xa9\xc7\x67\x5c\xd9\x83\x9f\xd1\x2e\x4e\x41\xd1\x85\xe1\x32\x3e\xe7\xfc\x40\xdb\x1e\x01\x9b\x11\x8a\xce\x38\x43\x7c\x01\x00\x36\x43\x95\x74\x6d\x0b\xc8\xaf\xc6\x21\xbb\xf5\x6b\xec\xc6\x07\x9e\x0f\x6a\xf0\x3e\x35\xff\xdd\x91\xd2\x1a\xa8\xb5\xdb\xff\x5e\x4c\x19\xa5\x55\x1e\x5e\x89\xfe\x2a\x9c\xa9\xe7\xfb\xda\xa8\xa6\x01\xca\x0c\xb3\x0d\x92\x21\x06\xaa\x44\x5e\x3e\xf0\xdf\x8a\x23\xdd\x83\xa3\x3a\x82\xd8\x61\xdb\x53\xba\xe5\x9f\xd6\xbc\xf8\x07\x70\xa6\xef\x64\x05\xd1\x5e\x81\x74\xed\xf1\xe7\x18\xae\x33\x6e\xa1\xd1\x28\x28\x41\xae\xe3\x7e\x8c\x42\xa2\x79\x97\xb5\x6f\x40\xf0\xa5\x6b\xdc\xe0\x92\x08\xd2\x74\x91\xa1\x99\x0e\x02\x93\xff\xfc\xa5\x26\xd5\x42\xe0\xec\x36\xea\xcf\xd9\x6b\x19\x5f\x85\x96\x31\xcf\x8f\x6d\x91\xd6\xf2\x2e\xba\xd8\xa0\xfe\xc2\xb2\x3f\x74\xa3\x95\x11\x8c\xcf\x82\x0b\x3e\xad\x6f\x5a\x17\xa1\x7d\x87\x27\x61\x1e\xd1\x86\x95\xcb\xbe\x31\x50\x2d\xdc\xcf\x5e\xf5\xd2\xb0\x61\xc4\xaf\x6c\x1a\x5f\x2b\xe8\x41\x07\x54\x23\x1d\x1d\x17\x2c\x8f\x34\xba\x99\x36\xf2\x4c\x21\x39\xa5\x51\xaa\xc1\x9c\xd3\xb1\xfc\xd2\x38\x2f\x84\xe7\x9f\xfa\xc9\x4f\x51\xba\x3b\xca\x45\xed\x4d\xe9\x6e\xf2\x52\x7b\x24\x1f\x25\x28\x0a\x64\x64\x9c\x91\xc7\x0a\x30\xf3\xf9\x79\xae\x23\x39\xad\xdd\xa1\x8d\x55\xb8\xb0\x2d\x94\xf6\x3a\x9a\xe2\x0a\xea\x64\x42\x0a\x2c\xc8\x3c\x32\x33\x1d\x36\x6e\x76\x01\x15\x48\xf5\x53\x63\xa3\x24\x61\x85\x52\xdd\x42\xc1\xc6\xbf\xdb\x9a\xa9\xb6\xcd\xa8\x9d\x0a\xd0\xf7\xc0\x19\xb6\x7e\x03\xda\xed\x93\x33\x6f\x01\x6a\x4e\xac\xea\xaa\x1b\x59\x82\x06\x0a\xa8\xc2\x3a\x3a\xa4\xd4\x6a\xac\xb6\x25\xa8\x6a\x08\x54\x9d\x75\xb4\x77\x80\x1c\x5f\x10\x51\xe4\x65\x02\xc7\xf3\x7d\x81\x24\x27\xb3\x82\xc7\x72\x7f\x81\x34\x21\x19\xc2\x7d\x21\x08\x24\xbc\xa3\x6c\xe1\x3e\xc9\x5d\x08\x4c\xdd\x52\xc4\xa6\xf9\x7a\x02\x3c\x3e\x02\x43\xe4\xa3\xd4\x4c\x63\xe0\x5c\x79\xf9\xc8\xd1\xac\x63\x20\xc9\xa9\xdc\xe4\xf1\x0c\x64\x20\xd1\x39\x79\xca\x7e\x4b\x62\x0b\x30\x0c\x7f\x14\xad\x0e\xdb\x3d\x15\x45\xfb\x47\x29\x57\x47\xb8\x2b\x16\x72\xff\x7f\xde\x77\xff\x9d\x57\x21\x44\x29\xbb\x21\x56\x7d\x77\x74\x0e\xc7\xf2\xc8\x3b\x75\xd4\x4b\x25\x8f\x0e\x3e\x9e\x6a\xbe\x39\xaa\xb8\x41\x0c\x76\x4d\xe6\x14\x7e\x41\x5e\x5c\xa2\x97\x67\x36\x4f\xd8\x05\xf1\x5c\x56\x82\x34\x2b\x9c\x91\x57\xde\xc5\x39\x6c\xa8\x33\x6f\xda\x8c\xbb\x35\xae\xf2\x42\xdf\xd6\x70\x85\xc8\x67\x41\x9a\x0a\x17\xea\x7b\x79\x43\xef\x48\x83\x5e\x9e\x16\xf5\x3a\xac\xdb\xac\x08\x16\x6d\x13\x36\x86\x82\xaf\xda\xea\xab\x69\x71\x61\xba\xa3\x46\xef\xf7\xeb\x4d\x7a\xc3\x90\x03\x8e\xee\x06\x3d\x1b\xdc\xb7\x1e\x1c\xcb\x8d\xa5\x24\x9d\x62\x8d\x0f\xac\x6d\x8c\xeb\x28\x86\xf3\x66\x5b\xc6\x1a\x79\xad\xd6\x1d\xc3\xdc\xc0\xac\x93\xa6\x03\xbd\xc9\x8a\x56\xfe\xb0\xb3\xa8\xdc\x9d\xc6\x45\x27\x14\xb6\xb3\xcd\x39\x14\x56\x7d\x7c\x34\x35\x58\xe5\x52\x36\x4a\x18\xe5\xa8\xc6\x9c\x03\x4c\x20\xe6\xd2\xe5\x15\x93\xf3\xd6\x56\x5f\x7e\x94\xba\x95\x13\x41\x9a\x32\x96\x25\x8a\x8c\x0e\xe3\x50\xb7\xbc\xd1\x33\x84\xeb\xba\x88\x3a\xbd\xc1\x8b\x51\xb1\x9c\x5c\xb5\xcb\x82\xf2\xf5\x62\x96\x95\xfc\xfd\x08\x01\x1d\x25\xe5\x7b\xfe\x41\xe3\x9d\xb2\xac\x8f\x03\xdd\x41\x16\x45\x2e\x9f\x5d\x1c\xff\xb4\x31\x95\x7f\x58\x10\x41\xdc\x9f\xbc\x71\xfc\x0a\x33\xa2\x4a\xcd\x5c\xbe\xf5\xb1\xaa\xfd\xf7\x50\x86\x8b\x82\x1b\x5d\x59\x5b\x27\x28\x77\x82\x04\x76\x11\x57\x97\xce\xa5\xdd\x8d\x54\xd5\x5c\xb5\xe5\x3f\xb8\x53\x4f\x0c\xd4\x5f\xbc\xa7\xa3\x13\xcb\x51\xc9\x74\x22\x6d\x85\x58\x65\x67\xff\x50\x55\xd4\x88\xe0\x11\xdb\xe6\x81\x19\xe2\x86\x98\xc3\x12\xdb\x9a\x7b\xf7\xc5\x57\xe1\xbe\x98\xe5\xb8\x5c\xb8\x52\xc4\x58\x11\x38\x52\xb9\x07\x16\x16\x4e\x07\xfc\xac\x02\x70\x34\xae\x97\xee\x4a\x3b\x82\x12\x9e\xe4\x01\x4d\xcd\x3b\x3c\x15\xa2\xa1\xcb\x56\xc4\x77\x2f\xce\x73\xaa\xcf\xfc\x55\xc2\x8e\x4f\x58\xaa\x91\xa2\xcf\x5d\xef\x94\x2a\x45\xb8\xe1\x78\x47\xc6\x1c\x90\x25\x98\x76\xcc\xcd\xdc\x9d\xeb\x4d\x3e\xea\x94\x8f\x28\x55\xa5\x97\xe8\x97\x0e\x38\xca\x59\xd6\xca\x8b\xa0\x5b\x6f\x2f\x88\x40\xe7\xdd\xc0\x56\x2d\xba\x4b\x81\x19\x14\xaa\x5f\xdb\xea\xcb\x39\xbb\xaf\xee\x71\x93\x9f\x5e\x05\xd3\xd2\xfa\xaa\x61\xf7\x8e\xef\x5a\xb2\xa4\x54\x4d\x7b\xbc\x64\x6d\x18\x12\x0d\x29\xcf\x52\x3e\x8d\xa1\xb7\xf7\x34\x05\xdb\xde\xd3\xf4\x95\x7a\x9a\xe4\x1b\x5a\x15\x2d\x28\x17\x52\x23\xe8\x9d\x2c\xa0\xaf\x3c\x58\x63\x39\xa1\x6f\xd3\x67\x5f\xf3\xee\x61\x96\x54\x8a\xaa\xab\x94\x5d\x7d\x8a\xba\x5d\xe0\x29\xd0\x26\x37\x2a\x50\x14\xd6\x6f\x69\xe6\x7d\x45\x13\x70\x6b\x18\x99\x03\x2f\xc1\x62\x41\x0a\xa9\x58\xa1\xbe\x43\x0f\x68\x1c\xac\x59\xfe\x46\x23\x30\xe0\xaa\x62\x5a\xae\xf0\x43\x54\xe0\x25\x29\xf8\xa1\xb9\xda\x56\x79\x57\x2c\x0f\x48\x57\x0a\x3f\x27\x9a\x80\x06\xe3\xb4\xc9\x53\x5f\x71\xba\x1f\xf4\x8d\xa1\xec\xd7\x6f\xbb\x3a\x81\xd9\x9a\x94\x58\xfd\xf3\xad\x9c\xcb\x89\xca\xd8\x53\x8d\x72\x24\x55\x27\x41\x74\xf9\x13\xd2\x94\x1c\xb1\x95\x8b\xbb\xd6\xc5\x26\xee\x5e\x4f\x02\xee\x6f\xb6\x44\x97\x0c\xb2\x9b\x2a\x54\x7d\x7c\xb3\x6d\xd6\x23\x77\x06\x71\xb9\xa1\x84\xbc\x41\xc9\x3d\x06\xf1\x2e\x7b\x7d\xef\xf9\x52\x15\xdb\xd0\xb3\xfd\x88\xc3\x87\x9b\x9f\x91\x52\x60\x56\x49\xab\x9c\x60\x65\x46\x7b\x07\xd9\xde\x41\x16\x69\xcf\xd6\x41\xe6\x09\x17\xc5\x0d\x28\xb7\x03\xd7\x4e\x33\xa8\x6c\x91\xef\xfa\x56\x5b\x5b\xc9\x77\x49\x1c\x36\x8a\x56\x43\xe1\xce\x2c\xb9\x8f\xad\x67\x8d\x35\xfd\xc8\x82\x83\xe3\xe3\x83\x03\x5b\xe5\x37\x5c\x1f\x7a\x40\xb2\x15\xab\xa3\x1f\x10\xa9\x32\x96\xeb\xad\x28\xfb\xda\x70\xa1\xd4\x93\xce\x1e\x92\x3e\xfa\xd2\x8c\xae\x17\xc9\xa0\xfa\x09\xdb\x22\x89\x0c\xd0\x56\xe2\x79\xbb\x85\x62\xd1\xa9\x13\xae\x8a\x9f\x99\x00\x50\x39\x53\xbf\x29\xbd\xa2\x2b\x1f\x5b\xd0\x92\xaa\x1c\xf6\x5c\xf1\x69\xc2\x05\x47\x2f\xf5\x8f\xc7\x59\xdd\xc2\x0c\x37\xc8\x90\x39\x2e\x49\xc9\x9a\x87\x43\x47\x4a\x92\xe8\xd1\x36\x4f\xbc\x4a\xd0\x58\xb2\xb6\x69\x48\x25\x8a\x87\x27\xd0\x5d\xdc\x6c\x42\xf2\xa9\xbb\x36\xc8\xdb\x70\x9e\x23\x65\xef\x73\xf2\x0f\x64\x0a\xea\x9a\xc9\x84\x39\x74\xb6\x56\x65\x5a\x20\xd5\x1d\xba\xc3\x0d\x87\xcd\x00\x9a\xa7\xae\xe4\xf4\x8e\x72\x06\xde\x52\x93\x56\x31\xb9\x41\x59\x2b\xea\x56\x18\xbe\x0a\xc9\x2f\xf6\x7a\xbe\x26\xae\xb2\xa4\xdb\xb1\x03\xcd\xed\x75\x3c\x51\xc2\x91\x4b\x9f\x08\xfb\xd5\xb9\x5b\xa1\xe3\xd9\x5d\xf5\x4d\xab\xb8\x3d\xe2\x0a\xa6\x6a\x5c\xe0\x62\x61\x28\x55\xe1\x4a\x09\x3d\xf8\x32\x41\x05\x20\x82\xca\x71\x71\x4e\x13\x92\xb7\x2e\xcc\x1b\xfd\x18\x6b\x41\xca\x9a\x35\xb8\x79\x40\xb9\xb1\xc9\x84\xe3\x1d\x36\xcb\x08\x78\x75\x04\xb6\xae\xcf\xa6\x46\x95\xd3\x66\x17\xf9\x5b\x25\xc9\x69\x5b\xa6\x59\xd1\x3e\xa9\xa2\xa7\xa6\xa0\xaa\xf5\x95\x6b\x42\xd6\xf0\xb7\xc4\x59\xb8\xaa\xad\x9e\x25\xca\xbb\x09\xd5\xaa\x82\x5f\x07\xf0\x85\xf1\x59\x96\x04\x57\x56\x6b\x07\xd9\xe4\x2b\x96\x13\x39\xe3\x96\x98\xee\x9b\x67\xa6\xab\x8c\x4b\x0b\x78\x36\x5f\x1a\x42\xaf\xa4\x9a\xf4\x4e\x49\xc2\x27\x59\x44\x94\x94\x2f\x4d\x7f\x27\x3f\x4b\x71\x9e\x58\x69\x94\x09\x5c\x20\x6c\xca\x64\xac\x74\xd5\x64\xb7\xaa\x96\x0f\xc4\xcd\x53\xca\xcf\x4f\x39\x72\x07\xc8\x3a\x46\xe4\xaa\xca\xbe\x69\x5d\x43\x19\xc2\x0a\xae\xfd\xc7\x34\xc3\xcb\xa8\x55\x4b\xd3\xd6\xfa\x87\x5b\xc9\x6b\x55\xaa\xf5\x33\x2d\xdb\x12\xb5\x5c\xf6\x94\x55\xfd\x67\xa2\x54\x5d\x47\xef\xf5\x8e\xd5\x26\xab\x92\x56\x8a\x68\xff\x7a\xa7\x20\x18\xec\xfc\xc6\xfd\x9c\xee\xa2\xae\xb2\xd9\xac\x49\x93\xb7\x4a\xfd\x35\xbd\x34\x0a\x1c\x5b\x21\x1c\x80\xce\xb5\xcd\x29\x38\xaa\xd2\x2d\xd6\x95\x9a\x07\xe7\xa5\xa2\x85\x7f\x60\x00\x27\xc5\xd4\x2e\x76\x0b\xd3\x56\x26\xc2\x67\x63\x77\x8f\x6f\xee\x96\x93\xe6\xe8\xa6\xa5\xf9\xa3\x6d\x6b\x10\x97\x5f\x65\x60\xfe\xfe\xf6\xac\xcf\xd8\xdf\xd2\x65\x43\xd0\xd9\x1a\x57\x15\x29\xfa\xa5\xb6\xc3\x66\xe0\xa9\x32\xdc\xfd\xfc\xdc\x8d\x4a\xdb\x61\xa9\xb1\xd3\xea\x51\x7f\xbc\xcc\xdc\x67\x53\xf8\x0f\x56\x6c\x1a\xe6\x27\xea\x8a\x51\x3f\x7e\xb1\xe9\xa2\x4d\x2c\x33\xdd\x59\xc7\xde\x9e\x21\x81\x9b\x1b\x22\x24\x11\x54\xb5\xe5\x92\x44\xcf\xf0\x73\x2a\x70\xfc\x5c\x52\x91\x77\x97\x2d\xac\x97\xe3\xd3\xa7\xf7\x89\xd5\xa2\xc6\xd6\xf4\x9e\x35\x45\x7e\x4f\x73\x0b\x15\xfd\x52\x92\x7d\xf5\x7c\x4b\x37\xdd\xdf\xd3\x7c\x9b\x61\x1b\x33\xaa\x1a\x36\x52\xe3\x76\x78\xa0\xc1\x7a\x10\xba\xbd\x54\x9f\x7f\x85\x2e\xa8\x32\x47\xaa\xff\xd2\x06\xb2\x72\x49\x2b\x2c\xac\x93\xc3\x2d\x50\x94\xa2\x14\x03\xf2\x5c\x59\xf3\x31\x27\xe2\x10\x2d\x5b\x6d\xce\x5a\x32\xb1\x46\x9c\x96\x6d\x21\x70\x45\x58\xcb\x8b\x87\xe8\x36\xfa\x52\x4b\x03\x93\xc7\x05\xf9\x3c\x8d\xa6\x6c\x5b\x5f\x2e\xbb\x57\xfa\xf2\xf9\x86\x54\xa4\xa1\x99\x5d\x50\xd0\x85\xd7\x46\xed\xaa\x88\x4a\x4e\x59\x45\xf2\x13\x27\xac\x35\xa8\xb5\x8a\xe2\x25\x19\x5a\x2a\x4c\xdb\xba\x68\x6f\x68\xd0\x93\xf2\x45\xe2\x72\xbb\x28\x41\xc8\xbd\xc7\x29\xe0\xb0\xec\xa9\x7d\xf9\xe0\x0d\x2d\xe2\x7a\x3c\xd6\x35\x27\x35\xa9\x24\x03\xa8\xbc\x5d\x1a\xbf\x03\xa8\xe9\xd8\xd9\x2a\x18\x5f\xcd\xf3\x0a\xf6\xf2\x78\xee\xc5\x67\xd1\x60\xc9\x20\x4b\xc9\xea\x6c\x54\x08\x5d\x21\x5c\xc5\x99\xd9\xe3\x06\xfb\x7d\x85\xaa\xc1\x17\x2e\x8d\x96\x16\x20\x0d\x09\xbb\xf6\x03\xa4\x35\x37\x36\x07\xc8\x06\x30\x6f\x06\x22\x27\xf6\xd2\x87\xd0\xb5\x01\xcb\x13\x01\xc9\x51\xca\xb1\x80\x65\xbe\x19\xae\x18\x9f\x81\xfe\xa8\xf7\xc5\x57\xc6\xda\x57\x16\xbd\xfc\x94\x71\xa1\xab\x82\x65\xb7\x09\x55\xcc\xde\xea\xe7\x07\xd6\x12\xf3\x63\x4a\x19\xb3\x80\x75\xc4\x9c\x6d\x4f\xc0\xaa\x60\x21\xfd\x91\x20\x51\x79\x54\x1b\x26\xcf\x9b\x2a\xda\x8d\x96\x44\xb2\x9f\xa6\xad\x22\x15\x90\xc0\x7a\x1c\x16\x98\xcf\x28\x3f\x3d\x44\xa0\xe0\x44\xe8\x08\x68\x55\x4c\xb6\x24\x02\x83\x0a\xe2\x1f\xfd\xd5\x28\x82\x55\x8f\x92\x54\xf1\xec\x12\x58\x3b\xbb\xf2\x24\x73\x9a\x13\x88\x91\x16\xab\xc9\x6e\x48\x06\x08\x73\x85\x83\x60\xe8\xde\x7d\xfc\x98\x58\x43\x48\xbe\x30\x98\x2b\xb3\x21\x94\x25\x52\xe1\xe4\x74\xb7\xb6\xe8\xd8\xd8\xca\xdb\xa0\x86\xde\x13\xda\x20\x6f\x32\x72\xe5\xa0\x7c\x92\x20\x67\x0e\x7e\x3a\xbb\xe8\xbf\xda\x3f\x74\x3f\x9d\x5d\xa0\x73\x30\x34\x50\x12\x48\xa0\x33\x4f\x06\x49\x3e\x02\x48\xe0\x4d\x46\x3a\xe0\xa3\x9c\xf2\xdb\xe7\x52\x8a\x70\x8f\x10\xf8\x2c\x10\x02\x37\xf6\x47\xb4\x03\x7b\x78\xc0\x3d\x3c\xe0\xf3\x82\x07\x7c\x52\x1e\x89\x1e\xcd\x1c\x5f\xe7\xc9\x5a\x90\x45\xb9\xf3\x8d\x59\x57\xe7\x9d\x77\x8d\x56\x52\xa8\xc5\xaf\xdb\x1f\xc7\x4a\x0b\x5a\xb8\x2c\x49\xe1\xc9\xa7\xf8\x91\xeb\xa9\x82\xec\x0b\x80\x8b\xef\xb8\xfd\x61\xd3\xfc\xe1\x4f\x60\x94\xec\x13\x4e\xf0\xae\x40\x89\xf4\xde\xdd\x5a\xb5\xa3\xe2\x03\xa9\x83\x33\x34\x50\xe8\xf4\x0b\x03\x4b\x36\x15\xf2\x07\xc6\xa9\x60\xcd\x03\xc2\x42\x15\xc6\x6a\x04\xcd\xda\x02\xc7\x3c\x62\xda\x8e\x7d\x8c\xce\x2f\xae\x3e\x5c\x9c\x9d\x5e\x5f\x9c\xbf\x41\xf6\x2b\xd4\x57\xea\x8f\xd1\x35\xeb\x0c\xdf\x41\xaa\xb8\x0b\x2a\xd0\xb1\xb4\x5d\x1f\x0f\x0d\xbb\xc7\x55\x17\x25\xa1\x4a\xba\x45\xec\x52\x97\x15\x15\x5d\x14\xa5\x06\xde\x29\x58\x65\x22\x0a\x25\x65\x63\x7f\xbf\xa1\xe2\x50\xfb\xc5\xe3\x40\x8a\xf2\xd5\x7e\x2f\x14\x3f\xd1\x31\x55\x6e\x08\x41\x8b\x09\xf8\xda\x67\x63\x91\xd2\x10\xfd\xb4\x8f\xcd\xbd\x6c\x64\x9f\x0d\xc6\xb6\x7d\x8c\xdf\x60\x36\x6b\xb4\x21\x29\x95\x0f\x8e\x0f\xac\x32\x58\x0c\x12\x05\xa2\x34\xbb\x4e\xd9\x22\x7d\xf2\xe5\xfe\x5e\x3c\x46\xe8\x17\xb1\x26\xcd\x3d\xe5\x80\xe2\xf0\x74\x58\x2a\xd0\x39\xdb\xe4\x07\xfc\x18\xf2\xfe\x57\xe2\x84\x2b\x13\x25\xb3\xf4\x3b\x6d\x0a\x2d\xdd\xd0\x3b\x52\xe9\x89\xdd\x1d\x8b\xb6\x5d\x4b\x5a\xed\x0f\xdd\x19\xfe\xf8\xe1\xe7\xdd\x75\x46\x9f\xd8\xa4\xae\x9c\xb1\xb2\xa4\x02\xad\x31\x5f\xdb\x3a\x2b\x5e\xec\x91\xe3\x1a\xbb\xe9\x23\x8c\xe3\x82\xd6\x1b\xc6\x75\x75\xb9\x97\x04\x14\xa8\x83\x9f\xec\x2b\x83\x0b\xb4\xfb\xd9\x62\x41\x45\xf9\x8d\xba\x67\xa5\x07\x71\x4e\x81\x22\xb8\xb1\xec\xb6\xf6\x3e\xa9\x72\x5d\x11\x3c\x11\x5c\xd2\xbe\xf6\x5e\xd7\x0f\xd5\xf1\xda\xe6\x47\xad\xb4\x81\xea\x00\xe5\x44\x60\x5a\x70\x6f\x7e\x05\xab\x59\xc1\x6e\xc6\x83\x23\x13\x26\xe7\x1b\x9d\xd1\x72\x84\x8f\xe4\xac\xef\xee\xae\x95\x8a\x07\x65\x13\x76\xe4\x04\x75\xa3\x74\x77\x0c\x95\x1b\xb3\x3b\x5c\x9d\x27\x9b\x88\x47\x50\x4e\xdd\xec\x44\xe7\xc2\xde\x52\x95\x75\xc1\xe2\x5b\x28\x3e\xdf\x55\xe2\xa8\x49\x53\x52\x2e\x99\x97\xa7\xb5\x42\xae\xb2\x1b\x5a\xed\x13\x4d\xfa\xae\x14\x56\x77\xa2\xc3\x6a\x6d\x38\xe0\x1e\xc4\x5e\x25\x87\x8b\x25\xb6\x6e\xc2\x45\xab\x03\xd1\x63\xae\x75\x43\x8e\xc8\x67\xca\xd5\x8d\x43\xe5\xa4\x45\x92\x65\x3a\xe1\xee\xe3\x68\x5a\x83\xa4\x35\x5f\xea\xa7\x8a\x87\x94\xb8\xc9\x4e\x17\x74\x66\x64\x15\x3e\x82\x8b\xe2\x41\x97\xa9\x57\x35\x3e\xb4\xf9\x07\xdf\x44\xab\xc0\xb1\xc6\xb8\x99\xea\x86\xde\xd1\x82\xdc\xc8\xdb\xe8\x9a\x56\x37\x5e\x4d\x12\x5c\x14\xec\x9e\x98\xb4\x5e\x12\xf5\xf4\x0d\xb1\x5b\xb8\xf0\x23\x7b\xd5\x99\x7a\xff\xcb\x35\xaa\x88\xfe\x14\x07\xf0\x97\xf9\xb7\x5f\xd9\x99\x68\xee\xc6\xd1\xd1\x91\xb2\xad\xbd\xfc\xa7\xd4\xe3\xf3\xe2\x15\xfa\x44\x4c\xff\xe4\x05\x47\x72\x9b\x4c\xa0\xfb\x35\x53\xd6\x92\x96\x03\x30\x16\xbb\x1d\xa0\x8e\xbf\x4e\x62\x33\x14\x4e\x24\x15\xa9\x34\x6b\x51\xad\xe6\x2b\xef\xca\x60\x84\x2f\x34\x1c\x75\xde\xfc\x9d\xdc\x07\x66\x4a\x0c\xeb\xd4\x18\xdb\xe9\xa0\xf4\x60\x57\xe5\x43\x55\x8d\xe0\x0f\x65\x41\xab\xdb\x43\x44\x85\x65\xbb\x72\xd7\x99\xd0\xed\xea\x16\x5a\xd7\xac\x21\xb8\xf0\xa4\xd6\x0e\x76\xce\xce\x24\x92\x48\x36\xdc\x5f\x3f\xd4\x44\x9d\x67\xc7\x96\x4c\xf8\x98\x6f\xe4\x78\x11\x37\x5c\x3f\xaf\x99\x00\x9a\x35\x76\xc0\xff\x29\x4f\xa9\xac\x79\x70\xb9\x38\x5b\x5c\x0e\xc0\x93\xf5\x6f\x3d\xd7\xd4\x16\x81\xf3\xbb\x8a\x9c\x4f\x11\xfe\x6a\x12\x76\xab\x93\x67\x6b\x5c\x9f\xb6\x62\x7d\x4e\x79\xc6\xee\x48\xe2\xe5\xd2\x96\x6a\x35\x8e\x1f\x44\xed\x14\x6b\x5a\xe8\xec\xbf\x4f\xaf\x06\xc8\x84\x3b\xd2\x4f\xba\x9e\x2f\x08\x4f\xbe\x89\x8e\xf7\xdb\x50\x7a\xd4\x5e\xef\x9d\x7e\x5f\x8d\xd3\x4f\x9d\xc6\xaf\xd5\xd1\x47\x2b\x2a\x28\x16\x0c\x94\xa1\xde\xb7\xf2\xb4\x5c\xb0\xd2\x1c\xa9\x4b\x4b\x46\x85\x9a\x28\xa7\x5d\x8f\x32\x68\x83\x75\x78\x18\x54\xe9\x18\x19\xa7\xae\x46\xf2\x20\x10\xfd\x10\x55\xe4\x3e\x4e\x54\xf5\x8d\x3a\x1a\xff\x65\xd2\x0e\xe4\x3e\xc6\xc5\x5f\xdf\xfc\x97\x39\x5a\x15\x2e\xc9\x5f\x95\x0e\x13\x25\xd9\x95\xb5\x70\xa6\x2d\x83\x52\xb6\x3b\x93\x16\x42\xf4\xb7\x34\x3e\x67\x4c\xbd\x7a\xbc\x7f\x6f\x71\xa1\xe7\xf1\xfd\x2e\xed\x92\xfd\xf5\x48\xea\x9e\xdd\x23\x76\x1d\xde\x5b\x5b\x8e\x54\xcc\x95\xcc\x56\x4f\xc4\xb5\xc5\x06\x57\x5c\x2e\x5e\xdf\x67\x74\x60\x5c\xc2\x07\xe8\xa5\xc8\x6a\x60\x4d\xcb\x47\x48\x5b\xd2\xc3\x34\x6b\xf1\xb3\x4b\x57\x8a\xf5\xe7\x91\xfc\xa3\x6a\x8f\xa7\x99\xe0\x7a\x03\xb8\x52\x04\xd0\xcf\x94\x0b\x1d\x83\xae\x29\x42\x90\x6d\x88\x4e\x50\x91\xba\xd8\x95\x2a\xe8\x5e\xff\x03\xe7\x79\xf3\x46\xcb\xe0\x95\xd1\x89\x1a\x75\xa3\x66\x70\xd8\x72\xeb\xf9\x7f\x29\x1e\x6a\x9a\xa9\xeb\xf3\xf5\xd9\x95\xa2\xc4\xd1\x0f\xdf\xeb\x5a\x47\x7f\xf9\xf3\xf7\xdf\x46\xb7\xc0\x97\xcb\x20\x9a\x65\xe3\x4a\x8a\xef\x86\x38\x34\x62\xfe\xd7\x9d\xa9\x41\xf3\x22\xc2\x95\x62\xb6\xe8\x90\xad\xf5\xbe\x34\xcc\x5b\x2e\xb2\x93\x2d\xd1\xc1\x26\xa9\x77\xfb\xe8\xe5\xaf\x20\x7a\xd9\x66\x28\x6a\xfe\xb5\x2d\xff\xd3\xac\xef\xca\xb2\x3e\xc3\xda\xe2\xdb\x0e\xcc\xfa\x7a\xac\x2d\x4a\x77\x7b\xd6\xb7\xd3\x1b\x3f\xfd\x2d\x74\xa4\x8e\xa4\x04\x0d\xfe\xdd\x5f\xa9\x6d\x2d\x07\xea\xba\x13\x33\x1d\x83\x46\x5f\xa5\x38\xf7\xde\xbf\x5d\x0c\xec\x0f\xf2\x17\xeb\xd1\xeb\x7b\xed\xc2\xac\x72\xc2\xa3\xb7\xed\xf5\xa5\x5a\x05\x8b\x3b\x3d\xb2\xcd\xd1\x1a\xce\xc9\xe7\xfe\xe5\x51\x4e\x12\x27\xcd\x5d\x5c\x3d\xda\xda\x16\x16\x99\x00\xf4\x85\x5d\x54\x72\x26\xf4\xec\x40\x3c\x49\x4f\xea\x9c\x7a\x94\x59\x86\xa9\x0d\x4d\x6a\xbe\xea\xc1\x42\xbd\x63\xdd\xa2\xf2\xcc\xe9\x38\xbf\x46\x72\x62\xc9\x83\x09\xe7\x90\x7a\x61\x83\xdd\xf9\x7c\x76\xdf\x4e\x8c\xb0\x47\x66\x5c\xdb\x72\xdb\x2e\x7c\x4e\xeb\x92\x67\x05\xa6\xc1\x72\x4d\x03\xde\x30\xf6\xba\xfe\xe7\x42\x5b\x6c\x81\x90\x48\x7d\x1c\x15\x84\xd1\x28\x65\x17\xc4\x83\xcd\x6d\x5f\x95\x39\x0e\x73\x9e\x99\xeb\xde\x4d\xcc\x91\xdd\x02\xdd\x4f\xfa\x97\x4c\x76\x69\x27\x4c\x59\x51\x4a\x8f\x83\x3d\xb3\xaf\x0d\xd3\xbb\x27\xa6\x0f\x72\xa5\xd8\x9c\x5e\x84\xb9\xab\xac\xdd\x1a\x03\x16\x38\x0f\xfc\xcb\xce\x3f\x7a\x74\x99\xf0\x29\x31\x49\x37\x3a\x5d\xe7\x36\x43\x7c\x97\x17\x38\x18\xcb\x71\xbb\x70\x6b\xa6\xb2\x66\x82\x55\x33\xf3\x95\xae\x46\x5e\xee\xc7\x04\xe8\x27\xce\x74\x8e\x5e\x11\xb3\x9f\x38\x42\x3a\xb4\xdb\x79\x87\x14\xe8\xad\x11\xc1\xac\xb2\x7e\x22\x1e\xf7\x2f\x1b\xd3\xed\x0e\x8e\xfd\xbf\x4e\xed\x83\x5d\x57\x50\xda\xd5\x99\xaf\xf3\xc4\xac\xc2\xcb\x73\xa3\x0a\xdb\xcc\x41\x6e\xb6\x23\xea\xf6\xa3\xb7\xe7\xa2\x83\x02\x24\x1f\xed\x56\xad\xc8\x2f\xcf\xb7\x3e\xde\xac\x11\xf7\xac\x49\xad\xc1\x72\xd5\x7b\x6d\x10\xe6\x63\xfe\x06\x89\x3b\x06\x9d\xe0\x2f\x7c\x4a\x17\x2a\x7e\xc0\x1b\xe2\x88\xb3\x0e\x12\x57\xa1\xef\x9f\x63\x47\x3b\x70\x74\xa3\x54\x83\x47\x5b\x1f\xdd\xd1\x23\x0b\xbc\xd8\xb8\x23\xfd\x28\x47\x76\x96\x98\x8e\x54\xe6\x80\x27\xbf\xcc\xaa\xcc\xb1\xb3\xfb\x94\x3e\x1d\x89\x2c\xeb\x57\xf3\x92\x49\x7a\x96\xeb\xd9\x31\x2f\xec\x8e\x65\x74\xe8\xa0\x94\x80\x9d\x32\x2b\x3b\xdc\xad\x19\x96\x46\x56\x0f\x7f\x6e\x04\x54\x67\xc5\x1a\x55\x76\x83\xea\x4a\x1c\x5d\x75\x74\x53\x87\xe3\xd0\x60\xba\x95\xb8\xe6\x61\x91\x28\x59\x95\x8f\xca\xb3\x03\xb6\x34\x17\xa4\xea\xdd\x34\x32\xd5\x26\xf2\x54\x5c\xbb\x07\x00\x56\x6c\xe2\x4c\x81\x2e\xef\x16\x87\x0a\x8c\x33\x15\xa5\x1a\xc5\xaa\x18\xa2\x50\x44\x29\x86\x50\x2a\xa6\xf0\x27\x00\x4c\xdf\xc7\xa7\xf8\x22\x5e\x47\xb3\xd1\x93\x36\x96\x45\x9f\xb2\xf1\xeb\xfa\xd0\x01\x20\x40\xe6\xe0\x4a\x5d\x39\xea\x7a\xcd\x4c\x01\x1f\x77\xd2\x11\x2e\x18\xa8\x2a\xba\xb7\x09\x3c\x78\x3e\x13\xaa\xf3\x50\x03\x7c\x2f\x69\x70\x02\x99\x45\xc8\x9e\x81\xf7\xe0\x57\x3d\x72\x80\x79\x1d\x45\x04\x2a\xfe\xa1\x9b\x60\x76\xae\x40\x2f\xa4\x43\x26\x00\x17\xd5\xb6\x3e\xf7\xed\x69\x0e\x87\x88\xe0\x6c\x8d\x6e\xc9\xc3\x91\xe2\x31\x60\x9a\x08\xd5\x58\xe5\xf4\xa9\x69\x3a\xc7\xa2\x8f\xba\xd5\x59\x9c\xa0\x80\x32\xb2\x75\x08\xe7\x36\xe3\xad\xdb\x73\x2e\x7b\x10\x98\x3d\xd7\x35\xcc\x8d\x72\x87\xee\xd7\x8c\x1b\x43\x8e\x31\xea\xdc\x92\x07\xc5\x4e\x32\x56\x81\xae\x14\x5d\x33\x04\xd4\xac\xa9\x58\x9e\x41\x66\x9d\x3c\xb1\x24\x87\x61\xb4\x77\x2d\x30\xee\x2e\xf4\x47\x32\xef\x88\x4c\x1c\xcc\x40\x95\xa3\xb6\xf2\x7a\xa4\xbf\xa3\x0a\x58\xaa\x28\x2c\x4e\x2a\x58\x74\xb3\x47\x53\xcd\x5d\x3f\x24\x49\x15\xb0\xa6\xdc\x60\x62\x2b\xaa\x29\x33\xaa\xf7\x92\xdb\x04\xbd\x0c\x45\x4e\x44\x5b\xc3\xc2\x8f\xba\xa6\xe2\xca\xe4\xc8\x09\xe7\x48\x97\xc9\x2e\x71\x73\x4b\x72\x87\xef\x71\xac\x80\x7d\x52\x56\xc8\x96\x01\xb5\x28\x38\xfa\xa6\x84\x1f\xfc\x74\xd1\x04\xdc\x39\xd9\x0e\x8e\x8f\x35\x5c\xcf\x58\x1a\x29\x98\x4e\x22\x53\x18\x6a\x2e\xb8\x56\xf1\xea\x4a\xb9\x54\x4b\xab\x2c\xc5\x20\x7c\x08\xbf\x19\xac\x4b\x0c\x36\x61\x76\x2d\x9d\x0f\xea\x76\x4b\xa2\xf7\x95\x61\xeb\x07\x86\x19\x3e\xd0\xb1\xed\x94\x5e\xa3\x79\x28\x27\xba\xc1\x91\xd1\x26\xfa\x3e\x81\x91\x96\x48\x12\xf9\x98\x6a\xe3\x68\x69\xc9\x14\xc7\xd1\xd5\x06\xb8\x69\xc9\x54\xc3\x38\x6b\x1a\x41\x2d\x99\x28\x04\x71\x2d\x99\x68\x1c\x5d\x35\x99\x24\x40\x0b\x4e\xef\xe6\x6c\xd4\xb6\xae\xa5\xe3\xb7\x75\x2d\x15\xc9\xad\x6b\x70\x4c\xb7\xae\x6d\x9c\x7b\xc7\xc5\xeb\x2e\xf9\x27\x79\x0e\x2d\x9c\x5b\x89\x6b\xa7\x54\x08\x76\x8c\xde\x19\xa9\x30\x63\x59\x70\xd5\xc1\xbb\x99\xb4\x9f\xbe\x88\x99\x75\x72\xd4\x20\x49\x41\x4a\x52\x09\x53\xa4\xc0\x92\x55\x62\x27\x99\xa8\xcb\xf1\x37\x72\x23\x4d\x62\x99\x8e\xcd\x63\x9e\x69\x78\x4b\xba\x1d\xc9\xa5\x49\x7a\x3e\x51\xfe\x25\x02\x63\xfa\x2f\xc5\xc3\x22\xbb\x06\x8d\xab\xd3\x2d\x2d\xba\x2e\x61\xb4\x5f\x20\x0e\x4f\x37\x78\x34\x5e\x02\x51\x15\xb7\x07\x8e\xc9\xd3\x6d\xc6\xde\xb5\x9a\xe7\x56\x40\x6f\x0f\x2e\x6b\xa7\xa7\x31\x27\x8c\x96\x35\x48\xb2\x7b\x75\x19\xb0\xa2\xde\x00\xc8\x24\x8e\x1e\x62\x5b\xed\xbf\x01\x3e\x1f\x40\x40\x7c\xef\x85\xf8\x8d\xde\xa3\x09\x1c\xa8\xbc\xf9\x3f\xf3\x3b\xfd\x26\x4c\xf9\x06\x36\x78\xc2\xde\x00\xc0\x95\xcf\xee\x77\x22\x84\x79\x92\x2c\xe9\x17\xae\x0e\x80\x99\x27\x51\x4d\x03\x3e\xef\xda\xdc\xeb\x4c\x1a\x18\x7a\xd7\x80\xb0\xe8\xe9\x1a\xa2\x0d\xc8\x0d\x01\xa4\x27\x53\xdd\x04\x54\x9f\x05\x95\xde\xb5\xb9\xd3\x8d\x66\xc2\xa7\x77\x2d\x0e\xa4\x3e\x83\xa8\xde\x77\x0e\x7c\x7d\x0c\x52\x7d\x16\xd5\xed\x60\xd8\xbd\xde\xcd\xbd\xf2\xa2\x79\xd0\xec\x5d\x8b\x82\xb4\xcf\x9a\x17\x07\xec\x8e\x76\x00\xd7\xde\xb5\x2d\xa6\x69\x8e\x82\x8b\x66\x80\xb9\x77\x6d\x96\xf6\x8a\xf6\x66\x8c\xbd\x19\x23\xa9\xed\xcd\x18\x7e\xdb\xda\x8c\x31\x01\x52\x9f\x3c\x85\x7d\x53\xc8\x08\x5c\xfd\x8c\xb3\xb3\x09\x6f\x3f\x00\xae\x4f\xa6\x19\x04\xba\x77\x10\xf6\xc9\x64\x77\x0b\x79\xdf\xb5\x9d\x80\xdf\x77\x6d\xb6\x38\x99\x07\x88\xdf\x35\x00\x34\xfe\x2c\x26\xd8\x41\xe9\x8f\x83\xe4\xcf\x30\x9c\x4d\x80\xea\x0f\xe0\xf2\x67\x1c\x8f\xdd\xc0\xeb\x7b\x5d\xdd\x0a\x68\xbf\x6b\xdb\x68\xbe\x33\xc1\xf7\xbb\x06\x83\xe1\x9f\xa5\x92\xad\x5c\xd9\xf1\x11\x40\xfe\x59\x14\xd3\x40\xfc\xbb\xb6\x95\xb2\x9b\x0c\xec\xef\xbd\x1a\x83\xf8\x9f\x3b\xaf\x25\x16\x96\xb5\x6d\x82\xfd\xcf\x22\xda\xbb\x53\xbc\x8e\xd7\x1f\xd9\x6c\x5b\x4d\xb2\xed\xfd\xf6\x5b\xb8\x93\xa6\x49\x08\xfd\xc3\xa6\x8a\xca\x49\x2e\xf9\xc4\xfb\x6d\xfe\xad\x61\xe6\x70\x67\x5e\x1a\xe6\x99\xef\x9f\xa3\x39\x3e\xf1\x23\x3a\xbc\x71\x67\xe6\x4c\x03\x83\xb6\x8f\x4e\x1a\x76\x7b\xf7\xd1\x49\xa6\xd8\xc2\x3e\x34\xe9\x5f\x36\x34\x69\x61\xe0\x02\x47\xe3\x92\x74\xb4\x51\x02\x51\x40\x5c\x92\xba\x3a\x24\x90\x04\xc4\x25\x29\x1f\x6d\xd2\x41\xda\xc7\x25\xed\xe3\x92\x52\xfb\xbe\x37\xe8\xed\x0d\x7a\x7b\x83\x1e\xb8\xed\xe3\x92\xf6\x71\x49\x7f\xf8\x8b\xd0\x3e\x2e\x69\x1f\x97\xd4\x8b\x4b\x32\x17\xa6\x24\xa5\xd8\x04\x25\x3d\xdf\x98\x24\x03\x5b\x7c\x9a\x65\xac\xad\xc4\x35\xbb\x25\xc0\xa0\x01\xd0\x65\x7e\x83\x36\x70\xe0\x4f\x13\xa3\x84\xdb\x9c\xca\x5b\xf3\xcc\x3d\x72\x6a\x5e\xb7\x17\x54\x29\x5d\xab\x9c\xe4\x8e\x6e\xc2\x3e\x31\x9c\x42\xc8\x39\x3a\x46\xa7\xa8\x21\x19\xad\xa9\x94\x1f\xaa\x44\x8b\xfa\x3d\xf5\xf6\xe4\xb0\x0a\xa9\xe0\xa4\x58\x19\x64\xb5\xca\x43\x32\xee\x54\xc4\xf4\xcb\xa3\x1d\x64\xaf\xeb\x5a\x5d\x62\x16\xc2\x2b\x81\xaa\x01\x91\x6e\xc8\x3f\xad\x06\x67\xe6\xe2\xda\xff\x56\x0e\xad\x71\xd5\x35\x73\xa7\xf7\x06\x6d\x3a\x8c\x6b\x0a\xad\x46\xe6\x68\xa5\xf3\x21\xf2\xb9\xa6\x8d\x3a\x18\x0b\x92\xb1\x2a\x9f\x6b\x49\xba\x18\xd2\xb1\xbb\xce\xf8\x6d\x92\x96\x30\x6f\x35\x29\x95\x82\x89\x0b\x9a\x53\xf1\xe0\x42\x7c\x0c\x8e\x39\xd6\xa7\x36\x69\xa6\xf5\xe6\xe5\xdd\xf2\x21\x5c\xd7\x0d\xc3\xd9\x9a\x70\x6f\x26\x52\xc4\x85\x52\xf4\x74\xb5\x06\x97\x2d\x5a\xb4\x37\xb4\xd2\x97\x11\x45\x5d\x6a\x96\x80\x7c\xfc\xae\x35\x4c\xd8\x50\xba\xc1\x70\xfd\x5d\x67\x3e\x9b\x6a\x53\xd2\x96\x05\xd1\x3c\xa8\xf2\x47\xcc\xff\x98\x9e\x13\x40\xfd\x92\xfe\xf8\xcd\x6b\x1c\xb1\x22\xb7\xd5\x23\x7f\xf8\x16\xd5\xa4\xc9\x0c\x87\x48\x73\x2d\xaa\x12\x83\x82\xa1\x42\x6a\xe4\xac\xb1\x35\x2a\x47\x3e\x93\x40\xf4\xcf\xdf\xa1\x35\x6b\x1b\x7e\xec\xd7\x4f\x78\xad\x7e\xd3\xb6\x1b\x2d\x01\x53\xec\x5e\x02\x15\x04\x73\x81\x5e\x7f\x8b\x4a\x5a\xb5\x52\xf1\x01\xbf\xee\x5d\x96\xbe\xff\x2e\xf1\x80\xa7\x5d\x93\xd2\x2e\x48\x9b\xe1\x5e\xe6\x1c\xd7\x1a\xcf\xc8\xdc\x93\x92\x6c\x0b\xaa\x48\xbc\xda\xbd\x1a\x37\xad\x1f\xe7\x60\x85\x68\xe2\x9d\xcb\xec\x86\x4a\xb0\x47\xe4\x8f\x69\xb7\x8b\x84\x7b\x42\x92\x16\x94\xf0\x30\xec\x12\x01\x2b\x59\x61\x1c\x94\x81\x67\x40\x1d\xfb\xad\x65\xcb\x07\x01\xaf\xad\xf3\x77\xfd\x7c\xbf\xa8\x8e\xfd\x71\xa3\x88\x69\x70\x3e\x36\x61\x09\xbb\x1a\xa6\x81\x17\xa1\x9a\xda\x4d\xc3\xda\x68\xee\x7b\x6f\x6c\xca\x66\x63\x6d\x04\x46\x5c\xe0\x2c\x23\x5c\x71\xa3\x73\x07\x23\x1e\xdd\x12\x15\xd3\x5f\x07\x6d\x87\xc7\xaa\x44\x13\xac\x21\x6a\x57\x0c\xe8\xa4\x79\xcc\x3a\xa2\xa0\x49\x82\xdc\x61\x1a\x72\x43\xb9\x48\x46\x41\xd5\x2f\xf5\x37\x34\xa7\xd5\x8d\x42\x80\x43\x65\x5b\x08\x5a\x03\x52\x00\xec\x8c\x3a\x82\x46\x37\xf0\x1d\x2f\xd8\xb3\xde\xe3\xf8\x14\xc9\x13\xa4\xeb\x40\x2b\x07\xde\x4b\xdb\x17\x44\x2a\xa1\x6a\x9c\xa8\x20\x71\x52\xe3\x06\xdb\x65\x89\xd2\xcc\x58\x59\x62\xfe\xca\xf8\x80\xb0\x0a\x5c\xd2\x22\x44\x6a\x03\x0d\x2e\xdc\x34\xfa\x21\x27\xbb\xda\xc8\x82\x54\xb8\x8a\xfa\x7b\xfb\x06\x40\xf5\x0a\x62\xf7\x95\x45\x34\xd1\x10\xba\x89\x3b\xd8\xdc\x3b\x7e\xc4\xd9\x2d\xa9\x72\x8d\xc8\xae\xf6\x71\xfe\x50\xe1\xd2\x54\xc8\x76\x78\xd3\x24\xb7\xf4\xa3\x84\x5d\x50\x8e\x2e\x4b\xa3\x0b\xc6\xd8\x22\x59\x5a\xd9\xdc\xd5\xec\xb5\x3c\xb1\xc4\xed\x47\x2e\x35\xb1\x30\x3f\x03\x79\x22\x38\x69\xe8\x5d\x46\xac\x9a\x2b\x3b\xb2\xab\x41\xdd\x45\x6b\xbb\x6d\x0c\xcb\xd4\x75\xa3\xde\x69\x52\xb2\xc4\x39\xb2\x55\x55\x6d\x5c\x48\x16\x15\x57\xec\x6d\x49\xa2\xfe\x86\x92\x2b\xb8\x43\x94\x66\x28\xe8\xb0\x3e\x7a\xc1\x87\xa2\x1b\x1e\x24\xf7\x9b\x25\xbc\x46\xd5\xc1\x87\x1f\xcf\xfb\xfc\xf1\x03\xce\x19\x47\x3f\x16\x2c\xbb\x45\xe7\x44\x5d\x81\xe2\xf8\xe7\xc3\xe2\xe6\x20\x48\xe2\x20\xc5\x18\x2c\x5a\xb3\xcc\x77\x0b\x8a\xb6\x07\xe9\xfa\x6a\x40\xba\x9a\x65\xdc\xe6\xf1\x47\x85\xe8\x2a\xf1\x4d\x2a\x0a\xe5\x9a\xa0\x46\x1d\x6a\xf5\xb2\x45\xfe\x87\x23\x10\xf6\x8e\xda\x37\x6b\x76\x7f\x24\xd8\x51\xcb\xc9\x11\x8d\x06\xfd\x81\xc7\x75\x4b\x1e\xe4\x33\x69\x23\xfb\x9b\x7e\xa9\x77\x51\x16\x4c\x99\xd5\xd5\xef\x52\xcb\xf9\xf0\xe3\xb9\x14\x95\xf0\x9a\xc9\x94\xa3\x13\x22\xb2\x93\x8c\xd4\xeb\x13\xd3\xad\x67\x37\x5d\x25\xab\xa8\x60\x4d\x22\xa8\xfa\x29\xca\x58\x51\x98\x8a\x67\x6c\x85\xce\x48\xbd\x76\xa4\x92\x7c\x50\x8f\x38\x07\x5f\x0e\x8e\xa9\x66\x2c\x0d\x22\xc6\x3b\x5a\xf2\x5d\x73\xb2\xbc\x8d\xd4\x2c\xf3\x9d\xa2\xaf\x3f\xc5\xd6\x7a\x04\x54\x0b\x70\x61\xd4\xa9\xda\xa7\x23\xa8\x54\xcf\x64\xb7\x3e\x36\xfa\xd5\xc1\xc2\xbe\xa6\x82\xfa\x3c\xdf\x71\x12\x98\x95\xfd\x7c\x8f\x25\xa2\xcb\x95\xbe\x16\xe5\x24\x47\xec\x8e\x34\x0d\xcd\x09\xb7\xac\x38\x89\x63\x56\xb4\x78\x2a\x1e\xb9\xc7\xe5\xfa\x2a\x70\xb9\x92\x2f\xbc\x1e\xb3\x95\xef\x6e\x32\x5b\x9c\x97\x14\x90\xbb\xfc\xac\x24\x39\x10\x59\x4b\xea\x6d\xc1\x27\xac\x10\xdf\xf6\xea\xc8\x33\x5c\x90\xcb\x5f\xc0\xd7\xc7\x85\x7e\xbe\x7f\x83\xb4\x3f\x7a\xa8\x09\x5b\x54\x64\xff\x9b\x3b\x64\xa8\x62\x79\xd8\xd3\xb3\xc7\x4c\x18\x5e\xcd\xbc\xf3\xa1\x4b\xb2\xef\x4a\x4d\xb8\xc1\x82\xdc\xe3\x34\x2d\xe1\xda\x0e\xb1\x43\x60\xd2\xf1\x33\x66\xc3\x9c\x5e\x5d\xa2\x9f\x34\xdd\xdd\x81\x33\x34\x4c\x68\x8d\xf7\x9c\x95\x98\x26\x42\xe9\x7a\x70\x38\x7e\x47\xaf\x1c\x51\xa4\xa9\x46\x97\xc5\xc3\x07\x5e\xd1\x9b\x56\xde\x90\xcd\xad\x75\x5f\xd3\x3e\x32\xf4\xc7\x53\xae\x3a\xdd\xca\x33\x2f\xda\x54\x0f\xa7\x2f\x45\x87\x6e\x77\x85\x12\x4b\x2e\xcc\x05\x71\x52\x71\xaa\x7c\xb6\x5e\x10\x94\x52\xba\xc4\x1a\xe0\x68\x72\x39\x1c\x5a\x41\x3b\x44\x3f\xb3\x1b\x5a\x59\xee\xc0\x4c\x98\xc3\x0a\xd3\x22\x36\x8d\x7b\x8d\xe9\xab\xd0\x98\x38\x2f\x2e\x2a\xbc\x2c\xe2\x4e\xf1\xbe\xe0\x2a\xb0\x8a\x36\x21\xea\xdd\x93\x9c\x72\xf9\xff\x68\xb1\xf8\x59\x39\x8c\xda\x0a\x7a\x83\x50\x2e\x15\xc3\x9e\x5d\x6d\x1d\xcd\x34\x76\x77\x8e\x35\x4f\x4c\xc6\x23\xb8\xac\x72\x39\x0c\xc2\x7b\x71\x99\x86\x9a\x86\x60\x80\x7a\x93\x4c\xbc\xd9\x92\xa0\xeb\x35\xcd\x6e\xaf\x3c\xbf\x11\x6b\xe4\x6f\x95\xf7\x93\x13\xb0\x90\xe3\x3c\x7c\x77\x57\x8c\xdf\x0c\xf3\x2a\xd5\x7c\x71\xed\x49\xb4\x85\x99\x2a\x49\x04\x61\xce\x59\x46\xe1\x8e\x47\x65\x7c\xeb\x44\x62\xae\x44\xe2\xee\x86\xa7\xb4\xa0\xad\xe4\xb6\xdd\x08\x46\x81\xc3\xdc\x93\xc3\x10\xf7\xa2\x99\xa5\x9d\x0d\x49\x6f\xc5\x64\xac\xbe\xeb\x1e\x3a\x9f\xf5\xfa\x69\x5f\x98\xf3\x75\x01\x81\x31\xec\xc2\x5b\x9d\xd6\x40\xb3\x0e\x96\xde\x47\xe9\x8b\x9f\x1c\x15\xb6\xf2\xa4\x5e\x35\xa3\x85\x06\x9f\x71\xba\x41\xf8\xa9\x98\xde\x0e\xbb\x3f\x45\x93\x9e\xc7\xac\x3b\x83\x00\x05\xfd\x9b\x71\xa3\x29\x66\x54\xb3\xba\x2d\x70\xc4\x63\xed\x03\x2a\x6e\xeb\x41\xd1\x7d\xd8\x85\x5b\x6d\x2e\xc2\xcc\x44\x62\xdd\x00\x6c\x26\xae\x77\x0f\xc1\x68\x20\x60\x33\x50\xcb\x97\xea\xd0\xb7\xdf\x7f\xf7\xdd\x18\x3c\x4d\x0f\x7e\x26\xae\x77\x01\xe1\x69\x06\x09\x72\x30\xa1\x1d\x84\xa7\x19\xc2\xcf\xc4\xa7\x14\x00\x4f\x93\x98\xd0\xf6\x38\xf8\x33\x20\x4f\x42\x42\x56\xbe\xcd\xb5\x07\xf1\xd7\x50\x2e\xfe\x64\x86\x3d\x40\x16\xf5\x32\xf0\x21\x79\xf5\x00\x9f\xa5\xca\xbb\xdf\x69\x36\x7d\x42\x0e\x7d\x2f\x33\x3e\x4a\x38\x94\x39\x3f\x99\x0f\x0f\xbf\x6b\x29\x5a\xa0\x2c\xf8\x28\x4d\x30\x26\x07\x38\x00\x1a\x94\xf1\xde\xcf\x63\x87\xf1\x07\x48\xd6\xe0\x1c\x7c\xa5\x40\x4e\xbb\xcb\x53\x07\x5c\xa6\xa0\x99\xec\x69\x79\x3e\xe0\xac\xf5\x9d\xe4\xaa\x27\x06\x40\xc3\xf3\xd2\x53\x84\x26\xc8\xee\xa0\xdb\x68\x0e\xfa\x44\x4e\x39\x90\x64\x3f\xf3\x3c\x92\x49\x0e\xa4\xa9\xf2\xcd\x41\xf9\xe3\x56\xfc\x01\x09\x47\x84\x64\x4f\x08\x82\x49\xee\x42\x54\xea\x96\x9e\xf1\x9d\x9a\xc0\x00\x4f\x5e\x00\xe5\x74\x27\xd6\x56\x9c\xce\xe4\xde\xcc\xcc\x06\x92\x7c\x37\xc2\x30\xa7\xf3\xb1\x81\x44\xbd\x62\x21\xb3\xb2\xb0\x93\xd8\x02\x3c\x27\x02\x96\x67\x0d\xcc\x9a\xd8\x79\x12\x04\x3c\x07\x17\x9e\x79\xeb\x8a\xfc\x47\x87\x93\x96\x70\x9b\x6a\x82\x4e\xc7\xdf\xf7\x6d\xa7\xe6\xea\x67\x77\xa7\x0e\x9d\x74\x85\xc3\xe3\x2b\xa5\x38\xfd\x13\x5c\xfe\x10\x7c\xeb\xc2\xae\xcd\xba\x07\x2c\x28\xb8\xfb\x9b\x41\xbf\xf1\xcb\x62\xe0\x7a\x74\x3f\x5b\x05\xd9\x78\x15\xc3\xae\xc7\xbd\xc7\xf1\xeb\x47\x69\xdf\xbb\xc7\xe6\xbb\xc7\x78\xaf\x24\xa7\x35\x50\x69\xbd\x12\xe2\x21\x63\x4b\x03\x48\xa1\x99\xb6\x3b\xa4\xa7\x57\x97\x28\x6b\x88\xca\xc0\xc6\x05\x3f\x46\x33\x2a\x14\x59\x47\x84\xd2\x50\xb9\xbb\x79\x62\x21\x48\x59\x8b\xf8\x06\xda\x7b\xc7\xbe\x0a\xef\xd8\x4c\x93\xfa\xaf\xee\x35\x6b\xff\x58\xb7\x25\xae\x8e\xe4\x29\x57\x7e\x32\x63\x6f\x87\xd9\xd4\x07\xd2\xe7\x18\xd9\x7c\x16\xb5\x30\x2a\xa7\x4b\xa5\xd5\x69\x10\x75\xd0\xe5\x5c\xd5\x72\x73\x2a\xc0\x23\x78\x20\x14\xdd\x99\x73\xa6\xf1\x4c\x06\xdc\x21\x63\x35\x78\xc6\x8c\x94\x36\x03\x75\xf3\x67\x19\x81\x07\x9a\xe2\x5b\x75\x20\xa4\xb5\x0a\x75\xa5\x32\x4f\x3b\x2a\xbd\x3a\x65\xa6\xf0\x18\x2e\x0a\x76\x0f\x48\x6a\x5c\x93\x9e\x66\x20\xf7\x85\x1c\xab\x49\xe6\x5f\x12\x54\xd2\xa6\x61\x8d\xf1\x9c\x00\xcc\x84\xdd\x76\x51\xd1\x21\xf2\xfe\x4a\x1a\x7d\x45\x6b\x4c\xb0\xc0\x82\x08\x6f\xba\x21\x0a\x20\xae\x74\x72\x93\xfc\xb7\x8d\xe9\xd4\x78\x50\x86\x4f\x2e\xc9\x1a\xdf\x51\xd6\x36\x8a\x3a\x84\xe4\x0b\xf3\xaa\x14\xdd\xe8\x81\xb5\x0e\x4f\xbd\x55\x69\x0e\x6e\x76\xc1\xc0\xec\xde\x3a\xbf\xef\x5e\x56\x57\xee\x9c\x59\x4b\xdc\x11\xf9\x4c\xb9\x48\x9f\x4b\xbb\xc4\xb6\x22\xff\x53\xaa\xb1\xed\x32\x06\xf6\x02\xfa\xdc\x1d\xaf\xa5\xbe\xf0\x6b\x34\x7d\xae\x7f\x2c\xfd\xb7\xfa\x6a\xf1\xdd\x42\xfd\x69\x1b\xa5\xd8\xd4\xbc\xe0\x5a\x63\x34\x69\x2d\x7b\xc5\x38\xd4\xfe\x20\x8a\xb1\x0b\x1f\x28\x68\xf6\x70\x79\x9e\xa6\x22\xba\xb0\x01\xf9\x32\xfa\x11\x73\x92\xa3\x77\xb8\xc2\x37\xda\xa6\xf2\x72\x71\xf5\xe3\xbb\x38\x62\x40\xdd\x30\x65\x1f\xba\x3c\x1f\x71\x40\x3b\xb9\xaa\x3f\xf2\x7e\x77\x99\x9b\x83\xb1\x27\x2b\x0f\x3b\x1e\xfd\x0e\x73\x52\xad\x80\x87\x60\x4f\x6d\x16\x1e\xd1\xc1\x00\xb6\x2e\x12\x1f\xb2\x8f\xbb\x32\xbf\xdd\x4d\x37\x61\x4e\xfe\x6e\x28\xdb\x31\xe8\xe8\x23\x35\x15\x93\x31\xe9\x10\x7e\x26\x70\x73\x43\xc4\x65\x95\x15\x2d\xa7\x77\x70\xce\x7d\xdd\x7f\xcf\x53\xa8\x9c\xad\x8b\x21\x2a\xff\x9c\x87\x75\x00\x56\xdd\x30\xa5\x8f\x34\xb8\xe2\x58\x47\xe3\xd0\xca\x64\xd5\xeb\xde\xe9\x4a\x30\xa1\x6d\x06\xbb\x56\x6a\x6a\xd7\x34\x41\x40\x5d\xbb\x57\x06\x2a\xa3\x2a\x3b\xc4\x05\x2e\x6b\xa4\x8b\x74\xc4\xbd\x76\x0d\xc9\xa4\x76\xf3\xe0\x8a\x3d\x65\x24\xcc\x12\x41\x3b\xb2\x1b\x54\x41\xab\x39\x03\x93\xaf\x79\x83\x33\xbd\xd4\x77\x7b\xa9\x9c\x05\xc7\x54\xe3\x46\xd0\xac\x2d\x70\xa3\x66\x44\xd2\xd2\xf5\xa6\xf2\x2e\x88\x5b\x30\x4b\x14\xe1\x82\xe9\x0b\x75\x98\xc3\x29\x5d\xd0\x76\x4d\x9d\xec\x7b\xcc\x2d\x1e\x8b\xdc\x60\x5a\x53\x5e\x62\x2e\xff\x27\xbb\x6d\x6b\xf9\x40\x90\xa6\xc0\xb7\x24\x18\xdf\x95\x30\xd9\xff\x3b\x2c\x71\x46\xe6\xf9\x7f\x5f\x9e\x0f\xf7\x8f\xb7\xdd\x2f\xcf\xf5\x1e\x0a\x0e\x40\x57\xc8\x78\x8c\x3d\x14\xe5\x31\x0d\xe1\x93\xf1\x41\x10\x1e\xd3\x36\x41\xab\xf9\x2e\xba\xc8\xff\xb2\x4d\x07\x97\x6d\x76\x1b\x0e\x81\x02\xed\x0e\x52\xe5\x8a\x53\x6d\x4d\xa8\x6e\xc8\x8a\x7e\xde\x9a\x4c\x43\x6e\x22\xb0\x99\x3b\x99\x7a\xad\x51\x2c\xa2\xbe\x84\xe8\xc7\xf8\x3d\x5d\x6d\xb5\xd1\x3a\xc4\xaa\x67\xb1\x02\x91\xa9\x0b\xfe\x59\xb3\x90\xc5\x24\x70\x4e\x6c\x3a\xf0\x3d\xbf\x28\x30\x17\x34\x53\x65\x31\xa4\xda\x37\xb9\x30\x83\x8c\xeb\x4f\x8b\x8d\x37\x7b\x57\xb3\x0a\x9d\x7e\x5a\xa0\x73\xca\x6f\xe3\xb8\x34\x2e\x46\xd3\x66\x4a\xa9\x68\x0a\x73\x31\x3b\x38\xe8\x5f\xcd\x6c\x74\x56\x65\x81\x8f\xa6\xc9\x32\xeb\x6d\xda\xda\x73\x84\xef\x39\xd1\xc3\x5d\xca\xe1\xca\x3f\x4f\x96\x3e\x80\xec\xc1\xf8\xe5\x70\x4e\x3d\x0e\x55\x6f\x23\x2c\xe0\x92\x6a\x71\xf4\x6a\x6d\x04\xe9\x02\xeb\x70\x0c\xea\x6c\x04\x49\x26\xdc\x2e\xe1\xb7\xc7\x47\xd8\x06\xc1\xef\xed\xbe\x18\xc7\x9c\x42\x1c\x30\x66\x26\x95\x34\x11\x11\x05\x9b\x89\xab\xee\x35\x3b\x98\x2d\xf6\xe4\xe5\x0a\xb1\x92\x0a\x61\xa3\x68\xfa\xea\xa1\x2e\xd4\xb7\x7c\x80\x44\x6d\xeb\x1c\xda\x6e\xdf\xbd\x75\x65\xc1\xd0\x49\x4e\xee\x4e\x78\x8e\x5f\x1f\xaa\xee\x71\xe3\x7c\x8f\xa9\x9b\xdd\x38\x31\x47\x2f\x5e\xbf\x38\x46\x0b\x5a\xd2\x02\x37\xc5\x43\x2f\xe4\xa7\x7b\x2e\xe6\x3f\xb2\x1d\x51\x29\x8c\xdf\xbe\x40\x2f\x59\xa3\x7a\x94\xe1\x0a\x15\x04\xdf\x11\x9b\x7e\x20\xb9\xc9\x03\x22\x65\x2d\x1e\x5e\x05\xc3\x68\xa0\xc1\x33\xb0\x90\x19\x88\x5f\x71\x10\xf4\x6d\xe6\xf2\x85\x68\x5a\xf2\x42\xb9\x16\x95\x4f\x50\x72\x6c\x4e\x04\xbc\x64\x82\x1b\xf4\xc0\x71\xa8\x8c\xb6\x8a\xf8\xe4\x66\x09\xd2\x95\x33\xad\xbc\x9d\x2f\x9e\x54\x22\x20\xf0\xe5\x53\x53\x4f\xb8\x39\x1c\x7c\x54\x1e\x17\x79\x3b\xb0\x30\xef\x5d\x72\x72\x0e\x92\xbe\x48\xa7\x82\x48\x71\xfd\xf2\xb4\xc4\xbf\xb3\x0a\x5d\xfc\x68\x3d\x3d\xaf\xbe\xd0\x44\x05\x99\x55\xcc\xba\x72\xe4\xe6\x71\xae\xba\x8a\x7f\x6f\x1b\x22\x95\x17\x90\x36\x74\x6a\x9f\x1e\x6a\x40\xf2\x77\x1d\x30\xad\xfe\x6a\x4b\x8d\x06\x14\x21\x9b\x47\x5c\xe5\x68\x49\xad\xa1\xda\xd7\x64\xb6\x51\x7c\x95\xa4\xb8\x89\x65\x2c\xf4\xf7\xd7\x7f\xcb\xee\x9c\xe9\x37\x75\xf4\x26\x7a\xcf\x2a\x72\xa8\x0e\x32\x92\x27\xd9\xfc\xf3\x53\x43\x05\x09\xb2\x27\x90\x18\x92\x7b\x36\x66\xaf\xdc\x08\xcc\xf3\x1d\xd1\xaa\x90\xbe\xda\xf9\x46\x20\x2d\x0b\xb6\xb4\xf7\x8f\x5d\xf4\xee\xe3\x87\xcb\xa4\xce\x7d\xfc\x70\xf9\xf8\x1d\x4b\x54\x28\x77\xe8\x69\x78\x14\x2f\x43\xba\x87\x01\xaa\x03\x82\x66\xf3\x96\x56\x09\x95\x06\x2f\x3e\xd7\x3a\x15\xc0\x44\x6a\x2c\xd6\x58\xc1\x8f\xba\xd2\xa7\x6a\xa1\xe5\xca\x87\xad\x4f\x35\x69\x5c\x42\x9f\xad\x5a\x89\xce\x89\x4e\x00\xcd\xdf\xd8\x02\xaf\x8e\x9a\xff\x42\xd8\xe3\x65\x89\x69\x13\x7e\xfe\x46\xf3\x37\x54\xea\xff\xf4\x76\xe6\x4b\xe5\xc5\xa7\x95\xfd\x53\x98\xec\x1d\xa6\x05\x5e\xd2\x82\x0a\x15\xea\xf3\xea\xb8\x07\x22\xab\x2a\x25\x06\x2b\x18\x02\xed\x13\x89\x6a\x08\x34\xb4\x49\x85\x2e\x85\xad\x69\xbb\x0b\x6b\x82\x88\xff\xb8\x58\xb3\xcc\x31\xf8\xc0\xc7\x0f\x97\x5b\x89\x3d\xc9\x1b\xe0\x62\x4f\x3e\x3d\x2a\xf6\xd4\x1f\x16\x06\x6b\x20\x5c\x68\xd3\x2f\xb2\xf9\x28\x92\xef\x5f\x67\x0f\x41\xc3\x75\x7b\xa3\x15\x5e\xfa\xad\x9f\xa4\x69\x2c\x65\xdc\xac\xe8\x02\xc0\x6a\x0c\xf2\x8d\x96\xc8\x72\x2d\xff\x16\x8c\xd7\x06\x71\x00\xc5\x48\x92\x06\xa4\x38\x30\x8a\x44\x96\xec\x44\xd1\xec\x66\x7b\xfa\x11\xdb\xfd\xb9\xa7\x32\x23\xf5\x7a\x35\xb9\xbb\x7b\x03\x3f\x23\xf5\xfa\xed\x20\x74\x58\x15\x43\x7c\xbb\xd8\x2c\x74\xaf\x16\x39\x3c\xeb\xe0\x22\xf7\x90\x53\x08\xa9\xed\x38\x05\xe5\xfd\xce\xbc\xab\x0b\x28\x6f\x56\x7b\x0c\x6e\x4a\xfb\xe1\x94\x12\x59\x7a\xd2\xe7\x54\xc9\x02\x24\x94\x25\xc5\xe6\x84\xb3\x0e\x62\xe9\x2c\x53\x69\x54\xaa\x98\xb8\xa9\xa2\x6e\xa3\x61\x1a\xc6\xc4\x21\x6a\x70\x14\x96\x52\xe1\xb1\x28\xcb\x55\x5b\x14\x7a\x83\x89\x86\x90\x43\xdf\x62\x73\xf2\xf4\x92\xdf\x1b\x5e\x84\x81\x07\x47\x07\x2a\xf9\x38\x2f\xb6\xf9\x49\x36\x60\x8a\x9c\x08\x09\xfb\xd0\xfc\x2e\xdc\xdb\x53\x45\x6a\x83\xf3\xb0\x62\x8d\x2a\xf4\xde\xdf\x31\xae\x3a\x6d\xcb\x49\x73\x6c\x24\xd1\x8e\xca\x6a\x6f\x3b\x9d\x31\x19\x05\x09\x44\x0f\x4f\xa6\x29\x85\xe9\xb2\xa9\xad\xee\x93\x50\x0f\xd3\xab\x85\xb9\x31\xbb\xca\x7e\x98\x54\xcb\x72\xfe\x94\x41\x63\xe4\x20\x61\xe7\xcf\x3b\xe4\x3c\x35\xdc\x1c\x14\x4a\xbe\xcb\xd0\xcd\x58\x39\xca\x80\x7c\x68\x1c\xe0\x5a\xbf\x38\xe5\x21\xd4\xd6\xaa\x0a\x57\x3e\x25\xcf\xdb\x52\x99\x8b\x14\x9b\x8c\x2b\x6a\xb4\xca\xa7\x67\xbb\x3f\xd3\x67\xea\xd9\xbe\xa6\xa6\xdf\x1f\x06\xb3\x06\x33\x71\x63\x81\xac\xa0\x03\x5f\x3e\xf0\xdf\x8a\x23\xfd\xf5\xa3\x1a\x00\x3f\xf0\x14\x2e\xce\xa7\x33\x49\x41\x40\x02\x1e\x03\x20\x00\x00\x0e\xb0\xf5\x4a\xa1\xbd\xb2\xf5\x48\xf3\x09\xd3\xaf\x66\x6a\x04\x2a\x42\x88\xeb\x38\x08\x23\xd4\x35\xdf\xb1\x77\xf2\x68\x75\x50\xdc\xe0\x92\x08\xd2\x28\xbe\xad\x36\x65\xc6\xaa\x4a\x65\xfd\x33\xf4\x4b\x4d\xaa\x85\xc0\xd9\x6d\xd0\x5e\xbf\x97\xe2\xcf\x46\x8a\xa7\xfb\x05\x8d\x10\xa1\xb9\x5b\x7f\x07\x8e\xeb\x79\xab\x69\x65\x84\xce\x97\x3c\x49\x5f\xd8\xd7\xa7\x2b\xe6\xbd\xc3\x93\xb8\x7b\x7d\x0b\x8b\x7d\x7a\x20\xba\xdd\xcf\x49\xe5\xcd\xe2\x55\xe8\x20\x87\x10\x58\x8a\x6c\x46\x19\x32\x2d\x71\x83\x7b\x23\xb1\x04\x19\x0c\x6c\x0f\x5a\x7e\xac\x57\x5e\x2c\xd6\x4d\x60\xe9\x31\xaf\xb6\x4a\x90\x22\xb0\xec\xd8\x46\x59\xb1\x20\xd1\xed\xea\xa8\xec\x36\x00\x24\x6a\xc8\x9a\x51\x62\x2c\x3a\x01\xc1\xf2\x62\xdd\xe1\x4b\xab\x30\x36\xa3\xba\x98\xad\x1e\x16\xbb\xe3\x40\x2b\x8b\xcd\xed\x71\xb0\xaa\xd8\x46\xd5\xb0\xb0\x4e\x00\xa8\x28\xb6\x59\x31\x2c\x62\x08\x24\xdd\xa2\x4c\x14\x14\x1b\x29\x18\x16\xb6\xd6\x06\x8b\x89\x05\x8b\x85\x45\xfb\xba\x59\x48\x0c\x56\x28\x0c\x60\xd3\x4d\x2e\x10\x06\x2a\xff\x05\x4f\xe2\x07\x95\xfd\xda\xba\xe4\x57\x42\x86\x3b\xac\xd4\x57\x6a\x99\x2f\x5d\xc0\x2b\x4a\x16\x01\x4b\x7c\xa5\x16\x65\x40\x91\xf2\x5e\x1b\x85\xbb\x00\x14\xa3\xa5\xbd\x86\x22\x06\x40\x33\x26\x84\xc6\x04\x0d\x64\x52\x13\x4b\x7a\xa5\x95\xf3\x4a\x29\xe5\x05\x2b\xe3\x95\x54\xc2\x0b\x95\x38\x86\x7e\x8c\xcc\x06\x80\x94\xef\x4a\xa8\xb8\x05\x2b\xdd\xe5\x31\x2c\x60\x37\x93\xca\x76\x25\x14\x9c\x81\x94\xeb\x8a\x97\xea\x02\x94\xe9\x02\x56\xc9\x80\x38\xca\x62\xb7\xd4\xe7\x7b\x43\xdd\xf9\xed\x14\xb4\xd2\x90\x52\x66\xd1\x32\x66\x9d\xc2\xe6\x55\x32\x53\xac\x39\xac\xac\x43\xaa\x98\x41\xcc\x30\xf1\xcb\x1f\xa7\xb0\x6b\xdf\xe2\x12\xbd\x3c\xb3\x99\x43\x2e\x41\xfa\xb2\x12\xa4\x59\xe1\x8c\xbc\xf2\xaf\x83\xb1\x98\x2c\x9b\xef\xb2\xc6\x55\x5e\x68\x03\x25\xae\x10\xf9\x2c\x48\x53\xe1\x42\x7d\x2b\x6f\xe8\x1d\x69\xd0\xcb\xd3\xa2\x5e\x63\xb4\x22\x58\xb4\xcd\xb4\x29\x0d\x74\x49\x54\x14\xe1\x11\x30\xba\x03\x46\xc3\xf5\x6b\xce\x7b\xdd\x53\x03\xd1\xa3\x88\xdc\xe7\xfc\x12\xde\x67\xac\x52\xb2\x47\x09\xba\x07\xd6\x36\xc6\x51\xd0\x41\xc9\x34\xf2\xd2\xa7\x3e\x1a\xa4\x8a\xb9\x41\x1f\x26\x8d\x2a\xc4\xab\xdf\x2e\x5a\xf9\xc3\xd6\x31\x80\x3b\x8b\xa8\xf4\x62\x1e\x93\xf2\x5e\x56\x03\x98\x14\x39\x38\xe5\xc4\xeb\x50\xbb\x6b\xcc\xb5\x71\x27\xaa\xf8\x7a\xd5\x07\xbc\xf5\xd3\x2a\xbf\x52\x5d\x72\x22\x48\x53\xea\x54\x5a\x58\x30\xbd\x9f\x2c\xc4\x10\xae\xeb\x22\x08\x6e\x04\x9a\xf4\x8a\xe5\xe4\xaa\x5d\x16\x94\xaf\x17\xc9\xf6\xd3\xf7\x23\x2f\xeb\x78\x91\xa1\x4f\x15\xe2\x44\xdd\xb0\xb7\x8e\xe3\xde\x28\xed\x19\xf3\xa8\x39\x63\x78\x72\x98\xca\xe4\x29\x88\x20\xee\x4f\x5e\xff\x7f\x05\xc0\x8a\x55\xb9\x7a\xe3\x63\x55\xfb\xef\xa0\x0c\x17\x05\x37\x1a\xa8\xbe\x47\x53\xee\x98\x79\x78\xeb\x49\x92\xea\x4a\xb5\xb4\x3b\x8d\xaa\x62\x45\xb6\x7a\x23\x77\xa2\xdf\xa0\xfd\xd8\x92\x69\x61\x3b\x49\x6f\x22\x39\x2a\x99\x4e\x39\xab\x10\xab\x2c\x81\x43\x84\x8b\xc2\x7e\xa7\xc3\x2c\x0a\xf7\xb6\x21\xe6\x00\xec\xa2\x8e\xe1\xde\x88\x3d\xda\x76\x69\xc4\x4e\x76\x31\x2d\x5c\x32\x3c\x56\x2f\x1f\xa9\xe8\x64\x8b\x70\x82\x6d\x96\x55\xf4\x44\x5b\xc1\x33\xdf\x4f\x95\x92\xbd\x73\x2a\x44\x43\x97\xad\x08\xef\x38\x9c\xe7\x54\x9f\xc9\x2b\xe0\x0e\x05\x2e\xc5\x48\x45\xb3\xae\x47\x4a\x35\x21\xdc\x70\xa1\x23\x73\xf1\xcd\xbc\x53\x12\x91\x24\xf2\x1e\xea\xce\xdd\x26\x5f\xeb\x84\xbb\x92\xeb\xfa\xc7\x83\x30\xd1\x9c\x65\xad\xbc\xec\x74\xeb\xd9\xb9\x6e\x75\x44\x7d\x7c\x65\x82\x3b\x0f\x10\x57\xad\xfa\x39\x57\x87\xcc\xd9\x7d\x75\x8f\x9b\xfc\xf4\x6a\x32\x31\xa4\xaf\x5a\x75\xcf\xfb\x5a\xa3\x25\xa3\x8a\x47\xe2\x25\x6b\x85\x0d\x7d\x0e\x2b\x92\x03\x5f\xc3\xde\xa7\x30\x35\x59\x7b\x9f\xc2\x1f\xce\xa7\x20\x9f\xd6\x2a\x5c\x41\xb9\x90\xd2\xb6\x77\x4a\x8c\x1d\x4e\xce\xce\x0e\x8d\xb7\xde\xf9\xd4\xfc\x73\x98\xe3\xe0\xa9\x7f\x31\xf1\xc9\xcc\xae\xef\x56\xd1\x53\x28\xcd\xf1\xd6\x22\x7a\x47\x66\x60\x45\x0b\x50\x10\x77\x3a\xd4\x7a\x41\x0a\xa9\x7c\xa0\x81\x1b\xa6\x66\x80\xfa\xec\x48\x97\x01\xc5\x55\xc5\x34\x3f\xe7\x87\xa8\xc0\x4b\x52\xf0\x43\x7d\x87\x94\xfb\xb5\xab\x5a\x09\x01\x10\x42\x9d\x38\x00\x18\x1c\xd3\xa0\x32\x3a\x9d\x68\x06\x22\x80\x79\xd3\x95\x38\xcf\xd6\xa4\xc4\xea\x9f\x6f\xe5\xbc\x45\xca\x7a\xf9\x8d\x72\x24\x55\x10\x41\x74\x12\x3d\x69\x4a\x8e\xd8\xea\xb0\x97\x4d\xf5\xe2\xee\x75\x14\xe3\x56\xb7\x44\x44\x8e\x95\xed\xec\x8c\x29\xb8\xea\x19\x51\xe5\x66\x11\xf2\xb6\x20\xf7\x0f\xc4\xd7\xd7\xb5\xce\x0b\xa5\x8e\xb5\x9e\xd9\x2f\x8c\x34\xb0\x02\xaf\x62\x02\x90\xc0\xde\x29\xb2\x77\x8a\x3c\x2b\xa7\x88\xc7\xf8\xd5\x69\xa6\xdc\x02\xba\x78\x8e\x12\xc0\x24\xf8\x16\x42\xeb\x4f\xf1\x8a\xd5\x6a\x35\xce\xba\x4a\x8c\x9f\x04\x22\x4e\x9a\x3e\x10\xd4\xc1\xf1\xf1\xc1\x81\xf5\xaf\x98\xcd\xdc\x8a\xd5\xd1\x0f\x88\x54\x19\xcb\xe3\xd5\x43\x65\xbb\x56\x7d\x6c\xb8\x50\xaa\x41\x77\x87\xf7\x5d\x43\xa5\xed\x2f\x0c\x6e\xca\x02\x4e\xa9\xfe\xc5\xb7\x40\x02\xd3\xb2\xf5\x1b\xde\xce\x14\xec\x9d\x38\xb7\x94\xec\x80\x41\x85\xb0\x6c\x53\x72\xdd\x52\xe0\xa8\xa0\x25\x55\xd9\x9e\xb9\xe2\xa9\x84\x0b\x8e\x5e\xea\x1f\x8f\xb3\xba\x85\xf0\x0c\xf3\x74\x49\x4a\xd6\x3c\x1c\x3a\x32\xf2\xf5\x1e\x5d\xf3\x44\xbc\xdc\xa8\x36\x09\x99\x02\x80\xc5\xc3\x23\xea\x0d\x6e\xe6\x20\x95\x55\x75\x1b\x44\x7f\x3b\x4f\x82\xb2\x3b\x39\xb9\xa4\xae\xbf\x26\x1a\x1e\x56\x9a\xbe\x73\xd4\xa8\x77\x49\x75\x87\xee\x70\xc3\x61\x68\x4b\x89\xaa\x42\x4e\xef\x28\x67\xa0\xed\x32\x69\xc9\x91\x1b\x8f\xb5\xa2\x6e\x85\xe1\x83\x66\x37\x02\x07\x6b\x6a\x7e\x75\x3b\x71\xa0\x25\xbd\x0e\x87\x5c\xdb\x96\x38\x70\xfb\xb5\x39\x4b\xdd\xf1\x57\x77\xfe\x9c\x92\xf4\x08\xab\x94\xa2\xe1\x80\x4a\xc3\xa0\x14\x05\x07\xea\x1a\x7e\x3a\xc7\x6f\x94\x90\x32\x74\x9f\x53\x60\xda\xc6\x85\x79\xba\x1f\xfd\x29\x48\x59\xb3\x06\x37\x0f\x28\x37\xb6\x85\x87\x84\xe4\x5a\x2f\xbb\x76\xeb\x6a\x3b\x6a\x34\x39\x6d\xb6\xc9\xdc\x28\x49\x4e\xdb\x20\x2e\x75\x7f\x4e\x3e\xa9\xf2\x71\xa6\x2c\x9d\x2d\x60\xa1\x89\x38\xd0\x71\x9c\xdd\xc6\x51\xfa\xdc\xe4\x6d\x54\x87\x7d\xf1\xc2\xf8\xaa\x4a\x82\x2b\xa7\xfd\x2a\xcf\x24\xcb\xc9\x41\xcc\xc2\x68\x08\xe9\x3e\x79\x26\xa5\xca\xb8\x39\x4c\x9c\xc4\x4b\xf3\xe0\x2b\xa9\x76\xbc\x53\x52\xe7\x51\xcb\xc9\xc5\x16\x0b\x81\xb3\x0f\xe9\xef\xe4\x67\x29\x4e\x13\x6a\xb7\x31\x81\x0b\x84\x4d\x52\xf8\x0a\x15\x2c\xc3\x85\x5b\x3d\x5f\x1e\xc5\x1d\xbb\xee\x50\x58\x43\xbb\x5c\x3d\xd9\x27\x2d\xe3\x95\x01\xa7\xe0\xda\x47\x48\x33\xbc\x0c\x5a\x6b\x74\x72\xa8\x96\xf9\x6e\xc5\xae\x55\xa1\xbb\xcf\xb4\x6c\x4b\xd4\x72\xd9\x43\x56\xf5\x9f\x09\x52\x74\x1d\xbc\xb7\x10\xf8\x2a\xed\x99\x56\x8a\x60\xff\x2a\xa4\xea\xb2\xdb\xf9\x0c\x3b\x0a\xdd\xa5\x55\xe5\xae\xd8\x4b\x04\x6f\x95\x4a\x69\x7a\x67\x14\x25\xb6\x52\x1e\x2e\xa7\x38\x84\x37\xac\x0a\x0f\x54\x75\x2b\x07\xe7\xa0\xa2\x45\xff\x20\xd8\xca\x8d\x45\xb4\xb7\x94\xa3\xb6\x32\x51\x15\x1b\x6c\x66\x7c\xe3\xb6\x9c\x34\x47\x37\x2d\xcd\x77\xbe\x65\xa3\x5c\x79\x95\x81\xf8\xf1\xdb\xb3\x3e\x23\x7e\x4b\x97\x0d\x41\x67\x6b\x5c\x55\xa4\xf0\x04\xae\x0e\xb8\x98\xec\xf3\x78\xe1\xd1\x48\xdd\xd1\x98\x2f\x79\xcb\x9a\x25\x7f\x9c\xfc\xb9\x2f\x5d\xd2\xe9\x0f\x55\x66\xb3\x68\x13\x0a\x6c\x76\x96\x9f\xb7\x67\xb6\xcc\x7d\xd1\x56\xa8\x6a\xcb\x25\x09\x9e\xc1\x2f\x5d\x0a\xf2\x39\x24\x07\x6e\x9f\xc3\xa7\xa7\xfc\xd3\xa7\xf7\x09\x35\x4b\xc6\xd6\xec\x9e\x35\x45\x7e\x4f\x73\x8b\x97\xf5\x52\x92\x7c\xf5\x7c\x8a\x88\xdc\xdf\xd3\x7c\xee\x10\x2d\xd2\x95\x1c\x22\x52\x63\x74\x00\x1b\x11\x29\xf7\x52\x7d\xf6\x15\xba\xa0\xca\xae\xa7\xfe\x4b\x1b\x7c\xca\x25\xad\xb0\x2d\xef\xd2\x2d\x42\x14\x93\x58\x9e\x0d\x6b\xe2\xe4\x44\x1c\xa2\x65\x6b\x8c\x4e\x4c\xac\x11\xa7\x65\x5b\x08\x5c\x11\xd6\xf2\xe2\x21\xb8\x3d\x9e\x72\xfa\xe3\xb2\xb0\x20\x9f\xc3\x90\x49\x7d\x99\xe8\x1e\xef\xcb\xc6\x1b\x52\x91\x86\x66\x76\xc1\xc0\x55\xb9\x55\x04\x1a\xa7\xac\x22\xf9\x89\x13\x94\x1a\x21\x4b\x45\x2d\x92\x4c\x61\x2c\xe4\xa8\x2e\xda\x1b\x3a\x69\xb5\x7f\xd2\x18\xc5\x2e\xca\x0a\x82\xe4\xe8\x47\x27\x6e\xcb\xdf\xbf\xee\x42\x8c\xbe\x3a\xea\x89\xd3\x9c\xd4\xa4\x92\x87\xb7\xf2\x76\x5f\x58\x77\x56\x53\xb0\xf5\x6c\x1b\x5f\xc0\x97\x0f\xb4\xf1\x78\xe2\xc5\x67\xd1\x60\xc9\xc4\x4a\xa9\x31\x5a\x6f\x05\x5d\x21\x5c\x85\x99\xce\xe3\x04\x51\x7d\x25\xa2\xf8\x11\x0b\xec\x24\xc7\x30\x46\x83\x41\x21\x61\xa6\x9a\x5b\x9a\x83\x60\x03\x36\xa7\x83\x2f\x01\xc6\x37\x3f\x9b\x6f\x10\xa0\x39\x1d\x84\x19\x1e\xf6\x68\x80\x26\x1f\x09\x01\x1b\x8c\x66\x5f\x56\x00\x3d\xff\x88\xcc\xc7\x8e\x8b\x5b\x15\x2c\xbb\x05\xd6\xc3\x79\xab\x9f\x1d\xdc\xe6\xcd\x8f\xc3\x82\x38\x81\x78\xf7\xa9\xdb\xbb\x39\x5f\x9e\xa0\x52\x81\x1a\xe6\x03\xf2\x58\x34\xac\x08\x30\x1f\x5d\xc6\x74\x49\xe4\xd1\x6f\xda\x2a\x50\x7f\x03\xa4\xe7\x60\x81\x79\x62\x91\xce\x61\x8d\x6b\x4e\x84\x8e\xe6\x54\x65\xfc\x4a\x22\xb0\x2a\xe3\x7b\xf4\xd7\x78\xde\x84\x19\xbd\xa5\xb2\x62\x8d\x9b\x09\x6b\xaf\x55\xde\x41\x4e\x73\x62\xe8\xe7\x72\x5d\x54\x1d\xe2\x6d\x45\xb6\xf9\xea\xc7\x8f\x09\xd5\x2c\xe4\xc3\x83\xb1\x9b\x05\x55\x56\x2d\x55\x01\xbf\xbb\x75\x84\xc7\xbe\xf2\x36\x96\xa1\xf5\xc8\xb6\xac\x9b\x8c\x5c\xb9\xa2\xfc\xe0\xa2\xf2\x07\x3f\x9d\x5d\xf4\x5f\xeb\x1f\x8e\x9f\xce\x2e\xbe\x1a\x78\x9d\x9b\x8c\x74\xb0\x05\x39\xe5\xb7\x7b\x6c\x9d\xae\xfd\x8b\x60\xeb\x6c\xec\x81\xaf\xc5\xe2\xb7\x07\xd6\x09\xeb\xc1\xcf\x04\x58\xe7\x49\xf7\xf6\xd3\x99\x6e\xeb\x3c\x49\xcb\xb0\x78\x32\xbe\x31\xe5\xea\xbc\xf3\xa4\xd0\x4a\x0a\x9e\x63\x55\x3e\x38\xb6\xf9\x7a\x05\xa7\x2c\xf0\x85\x7a\xfb\x29\xa7\xf3\x91\xaa\xdf\x25\xdd\x87\x63\xce\xbe\xde\x5d\x79\xf3\x9a\xfe\x25\x26\x6c\x5b\xa8\x02\xbd\xef\x66\xab\x4c\x54\x7c\x20\xf5\x64\xc9\xdf\x81\xa2\xa4\x1f\x1e\x58\x3b\xa9\x90\x3f\x30\x4e\x55\x34\x06\x16\xaa\xfc\x8a\xc5\xa1\x0d\x6c\x04\x6d\xeb\x3c\x46\xe7\x17\x57\x1f\x2e\xce\x4e\xaf\x2f\xce\xdf\x20\xfb\x05\xea\x2b\xc2\xc7\xe8\x9a\x75\xc6\xd1\xc0\x8d\xc4\x39\x7d\x75\x8c\x60\xd7\xb7\x43\xc3\x7a\x71\xd5\x79\xa8\x35\x9c\x6e\x85\x2e\x2b\x2a\x5c\x94\x58\x58\xb5\xcb\x0a\x56\x99\xc8\x2a\x49\xd5\xd8\x66\x6f\xa8\x38\xd4\x8a\x9c\x41\x52\x58\x93\xfe\x57\x02\x44\x09\xba\xd2\x71\x29\xae\xeb\x93\x37\x7a\xd0\x75\xc7\xc6\x75\xc0\x71\x73\xb4\xdf\xa4\x8b\xa6\xd1\x72\xc7\x05\x91\xda\x98\xd0\x88\x24\x18\x56\xf8\x41\x52\x12\x1e\x1c\x1f\x58\xe5\xab\x70\x95\x9a\x6c\xf0\xb2\xfd\x60\x90\xac\x0d\x6b\x96\x2f\xf6\xf7\xd9\x31\x42\xbf\xc8\xab\xfe\x3d\xe5\xe4\x50\x6a\x4f\xc0\x28\x6a\xaf\x0b\x8a\xb8\x1f\xf3\x3a\xd8\xc9\xe6\x57\xde\x2e\xa1\x9d\x35\x60\xf3\x1a\x2c\x3b\x86\xc5\x0e\x64\x97\xb6\x3b\xe0\x15\xfd\xd0\x8d\xe0\xe3\x87\x9f\xb7\xef\x80\x3e\x75\xe0\xcf\x9f\xb1\xb2\xa4\x02\xad\x31\x5f\xbb\x3a\x03\x5d\xfc\x86\x3b\xf5\xdb\xf5\x2b\xce\x15\xbb\x89\x9b\xcd\x19\x75\x79\x03\x20\x1e\xc4\xc1\x4f\xf6\xf1\xc1\xe5\xd1\xfd\xec\xa3\x42\x4c\x8e\xde\xa1\x45\xa4\x05\xae\x4d\x95\x79\x76\x63\xd8\x4d\xa5\x61\x8b\xa8\x9c\xe0\xc1\xbc\xb0\xaf\xbc\xf7\x2a\xbf\x59\x3a\x5a\xf9\x51\xc3\xcd\x89\xc0\xb4\x08\x5b\xfa\xba\xb9\x14\xac\x66\x05\xbb\x49\xab\xb2\x3e\x32\x19\xdf\xe8\xa8\xf9\x23\x7c\x24\x67\x79\xfb\xfb\x47\x0a\x42\x84\x4d\x02\x90\x13\xd2\x8d\xcc\xe9\xe0\x2a\xee\x7e\x37\x15\xf9\x1f\x7d\xe0\x3b\x56\xea\x86\xb3\x11\x53\x7f\x97\x1d\xb0\x86\xe2\xc1\x5d\x06\x7b\x4d\x9a\x92\x72\xc9\x70\xfa\xda\x5e\x90\xe2\xb4\x26\xf8\x78\x13\xbc\xad\x12\xe8\x4e\xe6\xb4\x9a\x38\x1d\x08\x1c\x65\x85\x92\x2b\x85\x12\xd7\x36\x81\x0c\xd5\xe6\xee\x31\xc2\xba\x21\x47\xe4\x33\xe5\xca\xa6\xa2\xf2\x56\x58\x03\xd0\x02\x7c\x14\x1d\x6b\x38\xb3\x66\x36\xfd\x76\xf1\x30\x88\x13\xf3\x74\xa9\x49\xb2\xd6\xa4\xa9\x5c\xf5\xb8\x28\x1e\x74\xf1\x5e\x95\x13\xaf\xcd\x18\xf8\x46\x75\x9c\x35\xc6\xa5\x50\x37\xf4\x8e\x16\x24\x04\xd5\x26\xd6\xb4\xba\xe1\x5d\xee\x3e\x2e\x0a\x76\x4f\x4c\xaa\x1e\xd9\x18\x87\xdc\x62\x5c\x40\x22\x15\xd5\xf9\x78\xff\xcb\x35\xaa\x88\x24\xb7\xa6\x7c\xeb\x8b\x8a\xec\x48\x30\x36\xfc\xe8\xe8\x48\xd9\x7e\x5e\xfe\x53\xea\xbc\x79\xf1\x0a\x7d\x22\xe6\xfb\xf2\x02\x20\x39\x42\x26\xd0\xfd\x9a\xa9\xdb\x7e\xcb\xcd\xd8\xe2\x2b\x5a\x6a\x80\x59\x5c\xe5\xf6\xed\x13\x49\x41\x2a\x9b\x5a\x44\xf6\xe8\xa8\x9a\x14\x1c\x75\xde\xd3\xad\xf4\xe3\x19\x1c\xda\x1a\xc3\x9d\x82\xec\xed\x48\xeb\xfb\x8b\x98\x5d\x34\x9f\xc7\x88\x3f\x94\x05\xad\x6e\x0f\x11\x15\x96\xe5\xc9\x1d\x62\xc2\x4a\xab\x5b\xbb\x7f\x1b\x82\xa7\x3d\x24\x96\xe4\xce\x76\xc0\xd6\xdc\x5f\x24\x19\x81\xaf\x1f\x6a\x15\x27\x82\x1c\x9b\x30\x21\x34\xfe\x65\xfc\xc5\x0b\x35\xba\xc8\x6d\xfe\x0b\x8f\x1c\x70\x35\xdf\x82\xe7\x52\x0e\xad\x98\x76\x70\xb9\x38\x5b\x5c\x0e\xa0\x01\xf5\x6f\x3d\xb7\xc5\xcc\xe0\x5c\x40\x74\x6e\xf0\x82\x3b\xe5\xb6\x98\x12\xa6\x6a\xe0\xbb\xd1\x57\xb3\x35\xae\x4f\x5b\xb1\x3e\xa7\x3c\x63\x77\x24\xe1\x12\x65\x4b\xeb\x19\xc7\x01\xa2\x76\x3a\x35\x1d\x74\xf6\xdf\xa7\x57\x70\xbc\x20\x58\xe0\x85\xed\xed\x82\xf0\xa4\x1b\xd7\x78\x5f\x0d\x95\x47\xe9\xe9\xde\xf1\xf3\x87\x74\xfc\xa8\x93\xf5\xb5\x38\x7b\x68\x45\x05\xc5\x82\x45\x33\x43\xfb\xd6\x89\x96\x0b\x56\x9a\x23\x72\x69\x49\x28\x97\xbf\x12\xe6\x3d\xaa\x61\xf1\xd3\xab\xe8\x4d\x95\x8c\xcf\x38\x75\x75\x2a\x07\x41\xb0\x87\xa8\x22\xf7\xfa\xbb\x11\xa9\x66\xdf\xff\x2f\x13\xd2\x2c\xf7\x2f\x2e\xfe\xfa\xe6\xbf\xcc\x71\x91\x77\xe6\xbf\x3a\xcb\x98\x49\xfb\x0e\x5f\x68\x5c\xb9\x47\x85\x4b\xb2\xbd\xf9\x05\x21\xfa\x1b\x9c\x3f\x19\x13\xa3\x9e\xf3\xbf\xb7\xb8\xd0\x73\xf6\x7e\x17\xf6\xb1\xfe\x9c\x83\xbb\x64\xd7\xdf\xce\xf5\x7b\x67\x87\x68\x39\x51\xf2\x53\x3f\x21\x1a\x5c\x71\xb9\x00\xe1\x73\xe9\xab\x2e\x07\xc6\xe5\x77\x80\x5e\x8a\xac\x06\xd4\x3a\xdb\x61\x1a\x83\xee\xb4\x99\xef\x9f\x5d\xfa\x42\xa8\x0f\x3b\xf6\x81\xa9\xbd\x0a\x37\x0f\xf5\x3a\x7c\xa5\x5e\x46\x3f\x53\x2e\x74\xfc\xab\xa6\xa6\x20\xf5\x68\xb4\x42\x84\xd4\x79\xae\x54\xf1\xdb\xfa\x1f\x38\xcf\x9b\x37\x5a\x16\xda\x92\x3a\x8d\xba\x31\x32\x53\x2f\x17\x57\xa0\xc2\x9b\x2f\xc5\x43\x4d\x33\x75\x3d\xbc\x3e\xbb\x52\x54\x38\xfa\xe1\x7b\x5d\xc3\xe3\x2f\x7f\xfe\xfe\xdb\xe0\xf2\x3e\x6d\x66\x41\xb2\x0d\xe6\x49\xfd\x6a\x5b\xab\x1c\xe9\x51\xa9\x4a\xf1\x59\x74\x38\x8d\xe6\x44\xeb\xbd\x26\x17\xd0\xf1\xfa\xf0\xbe\x82\xaa\x4e\xfb\x68\xcb\x67\x12\x6d\x69\xb3\x89\x34\x3f\xd9\x86\x17\x69\x36\x74\x35\x60\x43\x28\x12\xcb\x3b\x87\x0d\x79\xac\x26\xac\xa0\xa5\xb3\xa1\x9d\xdc\x64\xe9\x6f\x53\x63\x3e\x92\x12\x6a\xf2\x6f\xfe\x4a\xcc\xbd\x09\x57\x50\x17\xcc\xfb\x01\x20\x77\x85\xde\x4f\xa2\x71\x1b\xff\xca\xf4\x5d\x78\xe8\x77\xd9\x56\xf9\xae\x56\x93\xa5\x42\x1e\xc9\x72\x65\xcd\xa4\xf2\x9e\xee\x27\xaa\xc8\x49\xe1\xa4\x51\x45\x44\x1f\xd1\xca\x12\x18\x30\xfa\x42\x8e\x05\x39\x72\x3d\x1b\x31\x1f\x40\xba\x4b\x21\x2e\xe8\xb6\xbe\xbf\x81\x66\x34\x2e\x48\x9b\x94\xcc\xaf\x83\x85\x7a\xde\x3a\xaa\xe4\xf9\xd1\x11\x4b\x8d\xe4\x73\x92\xc3\x11\xce\x21\x95\x65\x86\xbb\xee\x8b\xee\xac\xad\x4c\x77\x47\x66\x1c\x73\xf9\x59\x17\x20\xa4\xb5\xa6\xb3\x02\xd3\xc9\x22\x20\x83\x73\x3d\xf6\xaa\xfe\xe7\x42\xdb\xf8\x7c\xfe\x17\x38\x56\x5e\x62\x0e\x46\xa3\x54\x5d\xf8\x03\x36\x77\x4e\x55\x48\x72\x7a\x7f\xcf\x5c\xd3\x6e\x32\x8e\xec\xf2\x76\x3f\xe9\x5f\x32\xd9\x9d\xad\x98\xa7\xa2\x90\x16\x9d\x77\x66\x5f\x19\x26\x3d\x4e\x4c\x57\x4c\x41\xde\x9c\x4a\x84\xb9\xab\x4b\xda\x1a\xf3\x88\x87\xdd\xf0\x08\x9c\x79\xeb\xb9\x46\x8f\xc6\xb7\x3f\xed\x12\x8e\xf6\xdc\xe6\x4d\xee\xe2\xea\x11\x67\x15\x6e\x77\xcd\x66\x08\x6b\x26\x58\x35\x23\x73\xe1\x6a\xe4\xc5\xbe\xd7\x55\x3f\x71\xa6\xb3\x6e\x8a\xd0\xcd\xdd\x11\xd1\x01\xa4\x3e\x26\x76\x14\xfb\x7a\x8b\xa3\xf9\x75\x67\xf1\xee\xd0\xfa\x0b\x8b\x40\xc9\x13\x72\x7d\x2e\xcf\x8d\x8a\x68\xf3\x79\xb8\xd9\x2e\xa8\xdb\x2f\xde\xbe\x08\x8e\x3b\x92\x46\xb0\x1b\x91\x9c\xcf\x87\x9e\x95\x8b\x7c\xcf\x9a\x94\xec\xfe\xab\xde\x2b\x83\x60\x06\xf3\xb7\x61\xc2\xdc\xf4\x75\xe2\x79\x9d\xa2\x85\xf2\xc2\x7a\x43\x1a\x73\x9f\xd8\xb3\x15\x56\x69\x47\x8e\x1d\xe8\x68\x05\xa9\x8e\x1c\x3b\x7d\xb4\x76\x0b\x04\xff\xe4\x62\x2e\x92\x17\xde\xb7\xc9\x05\x47\xb2\x43\xfc\xf6\x14\xc8\x8d\x04\xf6\xf2\xab\x79\xc1\xa4\x0d\xca\xf5\xea\x18\x0d\x76\xc7\x2b\x1e\xe3\xf5\x2c\xb0\xab\x1d\x98\x2c\x88\x77\xe8\x72\xfa\x2b\xd6\xa8\x64\x6e\xaa\x01\x78\xba\x9a\xae\x26\xbb\xfb\xd0\x20\xac\x94\xb8\x0e\xd4\x20\x95\xac\xc3\xaf\xc5\xbf\x05\x9b\x98\x03\x35\xf1\x2e\x86\x2f\xe1\x63\x48\x00\x59\x45\x00\x5f\x62\x03\x31\x22\x2c\xc3\xa7\xd0\x24\x42\x88\x11\xb1\x8b\x7f\x5a\x35\xec\x18\x26\x02\x4a\xad\x83\xdd\x55\xb9\x0e\xb3\x48\x12\x9c\xee\xdd\xfa\x75\xcc\xc6\x05\x6f\x1a\x8b\x21\x61\xa3\x59\xf5\xe1\x91\xd3\xb7\x9d\xbf\xa4\x2f\xa0\x1d\x55\xbd\x26\xa6\xa4\x83\x3b\xa9\x08\x17\xac\xba\x81\xa0\x78\x32\x3f\x7e\x82\xe4\x2e\x30\xe1\xa1\x8e\x58\xc3\xe1\xc5\x8c\xa3\xd8\xf7\x13\x83\xf4\x6b\x5e\x74\x50\x35\x1d\x08\x7e\x8e\xc5\xf4\x3d\xbf\x6b\x1d\xf2\x70\xf4\xe1\xb4\x02\xcd\x80\x45\x1b\x1d\x17\x00\xc4\x1c\x44\xd4\x5d\xae\x61\x70\xe6\x40\x9a\x1b\x10\xe2\xd3\xc0\xe6\x50\x8a\x31\xf8\xf3\x3e\xc4\x39\x90\xea\x2e\x81\xd0\xbb\x96\x00\x89\x9e\x32\x9f\xa6\x26\x3d\x04\x1c\x1d\xda\xd1\x21\x84\x3a\x12\x53\x30\xe9\x40\x8a\x41\x30\xf5\x0d\xc0\x74\x20\x51\x38\xac\x7a\x42\x7d\xee\xb9\x00\xeb\x5d\x4b\x38\xba\xc9\xa0\xeb\x40\xaa\x08\x08\xce\xde\xb5\x34\xee\xa4\x1b\x08\xb0\xbd\x6b\x5b\x43\xb7\x77\x2d\xb1\xfa\xb9\x6e\x30\xe4\x92\x89\xfe\x06\x30\x4c\x12\x48\xa2\x3e\xde\xc9\x14\x9a\x49\x12\xc5\x20\xf2\x49\xfa\x49\xb5\x63\x8f\x63\xa0\xa0\x65\x1a\x4d\xb8\xfe\x97\x44\x16\x82\x2e\x66\xf4\xc1\x24\xba\x33\xd1\xc6\x86\x2d\x0d\x2b\xc5\x1b\x56\x02\x6a\x4a\xd7\x60\xf8\x29\x5d\x83\xc3\xcb\xa7\xad\x89\x82\xa2\x77\xe2\x78\x1a\x68\x3e\x89\x6a\x0f\x94\x7e\x12\x72\x3e\x89\xe4\x14\x3c\xbd\x16\xd3\x29\xe0\xf3\xde\xe0\xd3\x99\x13\x1c\xf3\x40\xb7\x38\x34\xbd\xff\x2c\x10\x00\x07\xa5\x01\x41\xf9\x2f\x84\x43\xa8\xba\x06\x89\xd1\xd1\x2d\x2d\x52\x07\x38\xba\x27\x8e\xe7\xd1\x2d\x35\xaa\x07\x48\x16\x12\xfb\xa3\x5b\xe2\x7e\x84\xc0\xe6\x77\x2d\x09\x40\x1f\xaa\x7e\xfa\x30\xfb\x30\x28\xfd\xae\xc1\xac\x6e\xfd\xa7\x41\xfb\x1d\x00\x92\xea\x3d\x1c\xbf\x6b\x7a\xf4\xfe\xb8\xb7\xcd\x4d\x78\xcb\x0d\xec\x49\xe0\xa2\x83\x65\xcc\x7c\xf5\x3a\x06\x8b\x09\xe6\xf1\x83\x82\x99\xd3\x00\x99\x60\x8a\x70\x20\xcd\xae\xcd\x51\xd9\xe1\xe0\x9a\x5d\x03\xc2\x6c\xa6\xa9\xc1\x1d\x24\xe7\x34\xe0\x66\x12\xc5\x71\x70\xce\x24\x08\xad\xae\xcd\x99\x5a\x34\x03\x8e\xb3\x6b\x30\x60\xce\x44\xa2\xa8\x03\xf2\x9c\x82\xe8\x4c\xa6\x38\x0f\xd2\xb3\x6b\xb3\xae\x6e\x28\x1d\xe6\xd3\xef\x31\x0c\xf0\x33\x79\x2a\x6c\xf8\xc9\x7c\xe8\xcf\xae\xcd\x9c\x96\x54\xc5\x11\x25\x02\x83\x0e\x3b\x98\xa0\x19\xa2\xfd\x95\x7b\x7f\xe5\xde\x5f\xb9\x37\x5a\x12\x78\x69\xf2\xfd\x18\x04\x63\x9a\x26\x58\xfb\x90\xa7\xe3\x80\xa6\x73\xee\xf1\xa3\xe0\xa7\x1d\xb4\x69\xda\x46\xdf\x1d\x0c\x6a\xd7\x92\x00\x51\xbb\x36\x8b\x95\xa7\x83\xa4\x76\x0d\x08\x97\x9a\x76\x14\x1d\xb4\x2a\x00\x38\x35\x89\xb2\x0f\xb2\x1a\x82\x50\x4d\x53\xbc\x46\xe0\x56\xb7\x00\x53\xed\xda\x5c\x4d\x70\x06\xc0\x6a\xd7\x60\x50\xab\xc9\xfa\x8a\x0f\xcd\xba\x0d\xe8\x6a\xd7\x66\x2b\x73\x49\x40\xac\xde\x6b\x40\x48\xd6\xe4\xa9\x31\xac\x23\x00\xce\x9a\x4c\x32\x01\xcc\xd5\x7b\x69\xee\x84\xa6\x01\xbc\x76\x0d\x00\xf5\x9a\x3c\xf2\x14\x68\xd8\xae\x3d\xa9\x06\x0c\x06\x8e\x1d\xf6\x2f\x49\x01\x4e\x37\xeb\x3e\x17\x53\x6d\x02\x71\x1d\x74\xb5\x13\x93\x98\x81\xfa\x50\x30\x00\xa0\x7d\xf7\xcc\xac\x61\x4f\x1a\x7b\x61\x52\x70\xe5\x55\x01\x48\x15\x16\x78\xa1\x43\x2a\x80\x24\xc1\x81\x17\xe8\x72\x05\x0d\x15\xd8\x07\x5e\x0c\x02\x2f\x16\x06\xc0\xc6\x5b\x2d\x15\x4f\x91\xd2\x57\x40\xd4\x85\x8e\xa7\x00\x12\x85\x46\x5d\x28\xef\x19\xd4\xa0\xb9\x8f\xba\x00\xb4\x7d\xd4\xc5\xde\x04\x94\xd0\xf6\x26\xa0\x67\x6e\x02\xda\x47\x5d\xec\xa3\x2e\xf6\x51\x17\xfb\xa8\x8b\x9d\x46\x5d\x98\xcb\x01\x6b\x50\x2c\xdf\xa1\x6b\x92\x67\x3c\xab\x88\x0b\x03\x5a\x77\x9a\x65\xac\xad\xc4\x35\xbb\x25\x00\xb7\x2a\xe8\x9a\xb9\x41\x17\x30\x50\x73\x2b\x7d\xa4\x3b\x27\x6e\x73\x2a\xef\x75\x33\xd6\xff\xd4\xbc\x6a\x2f\x5c\x52\x7a\x55\x39\xc9\x1d\x4d\xe0\xfa\x9b\x93\x2e\xe4\x7c\x1c\xa3\x53\xd4\x90\x8c\xd6\x54\xde\x43\x54\x7a\xbe\xfa\x5d\x6f\x10\x8b\x8b\x03\xbd\xd5\x08\x4e\x8a\x95\xc1\x0e\xa9\x3c\x9c\x3b\xef\x96\x64\x44\xca\x16\x5d\xd6\x6a\x07\xb3\xe0\x15\x16\x08\xb0\x21\xff\x34\x19\x45\x50\x66\xac\xc7\x7f\xed\xf5\xa6\xe7\xf4\x56\x53\x0c\x83\xea\xdb\xe8\x28\xae\xa9\xa9\xd5\xf1\x18\x3c\x84\x7c\xae\x69\xa3\x36\xfb\x82\x64\xac\x0a\x03\xa2\x77\xad\xb7\x99\x2e\x86\x34\xec\xae\x32\xd6\x75\xf0\x9d\x3b\x6f\x1b\x07\x80\x7e\x87\x0b\x9a\x53\xf1\xe0\x02\x1a\x0c\x1a\x25\xd6\x27\x30\x6d\x61\x4e\x79\xb7\xe6\x08\xd7\x75\xc3\x70\xb6\x26\xdc\x1b\xfd\x61\xc2\x6a\x9b\x8c\x61\x97\x51\xa5\x51\x60\x95\xf2\xad\x28\x4b\xad\xac\x78\x40\x0d\x13\x18\xac\x37\x8d\x0c\xd1\xdf\x55\xf6\x93\x09\x96\x1b\xad\x22\x89\xe6\x41\x95\xb3\x60\xa6\x3b\xde\x3c\x50\xef\x20\xc0\x6d\x0d\xac\xc8\x6d\xbd\xac\x1f\xbe\x45\x35\x69\x32\x73\xda\xd5\x35\x8b\x96\xca\x79\x58\xc0\xdd\x90\x52\xdc\xac\xfc\x5e\xf5\x3e\xf1\xe7\xef\xd0\x9a\xb5\x0d\x3f\x3e\x4f\x33\xa9\x0b\x86\x5e\xab\x37\xb5\x8d\xc1\x5e\xde\x04\x2a\x08\xe6\x02\xbd\xfe\x16\x95\xb4\x6a\xa5\x5a\x01\x22\xe8\x5d\x0d\xbe\xff\x2e\xe1\x18\xc2\x2f\x05\xf0\xeb\xc0\x66\x68\x8a\x39\x6d\xb5\xae\xf3\x6f\x6e\x05\x00\x30\xe6\xae\xe9\xba\x5c\x1a\x07\x64\xe0\x07\x36\xa2\x2b\x7d\xab\x54\x82\x3d\x02\xc7\x82\xeb\xdf\x40\x6d\x1a\xac\x5b\x00\x1f\x8c\xab\xd9\xf1\x04\x69\xe3\x48\x9a\xf8\x7b\xb4\x23\xbf\xb5\x6c\xf9\x20\x60\x95\x15\xfe\xae\x9f\xed\x97\x54\xb0\x3f\x6e\x94\x6b\x9b\x1c\xf7\x26\x4c\x4e\x57\xad\x6d\xe2\x25\x88\xae\x73\xd3\xb0\x36\x98\xa5\xd9\x1b\x8b\xb2\x24\xd8\x1b\xad\x35\x51\x67\x19\xd1\xd0\xe4\xe7\x1d\xfc\x63\x15\xf6\x13\xa8\xaf\x46\x97\x78\xd7\xf5\x08\x82\xd5\xd2\xec\x8a\x7c\x41\x10\x96\xe8\x84\xc4\xb4\xf9\x86\xdc\x50\x2e\x92\xd0\xb3\xf4\x0b\xfd\xcd\xc9\x69\x75\xa3\x11\x4b\xca\xb6\x10\xb4\x2e\xdc\xec\x04\x07\xe1\x88\x19\x29\xeb\x9b\xdb\xb1\x67\xcb\xc5\xba\x10\x88\xae\x15\x19\x75\xbf\xbc\x74\x7d\x20\x95\xd0\x00\x19\x8d\x14\xe4\x35\x6e\xb0\x9b\xfe\x8c\x95\x25\xe6\xaf\xb4\x55\x1f\xe1\x2c\x22\xc5\x4c\x2d\x2a\x29\x57\x1b\x5c\xb8\x69\xf3\x5d\xf1\xdb\x6e\x4e\x41\x2a\x5c\x05\xfd\x6f\x7d\x73\x93\x7a\x1c\xb1\xfb\xca\x56\x0e\xd7\xb0\x6a\xfd\x5d\x89\x00\x39\x93\x3f\xe2\xec\x96\x54\xb9\x42\xd2\xd4\x93\x93\x3f\x54\xb8\x34\x85\x7d\x1d\xae\x20\xc9\x07\xb4\x23\x81\xbd\xda\x26\xab\x4b\x0c\xd8\x12\x27\x5a\x2d\xdb\x76\xa6\x5a\x9e\x50\xa0\xef\x23\x97\x7a\x4b\x98\xff\x70\x1d\x3c\xda\xd0\xbb\x8c\x40\x74\x59\xd9\x81\x6d\x07\x71\x17\xac\xb4\xb3\x31\x0c\x53\x65\x87\x7a\xa7\x42\xf1\x77\xe7\x48\x54\xf5\x3c\x71\x21\xd9\x4a\xf8\x3e\x67\x8b\x53\x0c\x36\xca\xf2\x61\x17\x88\x7c\x10\xe0\x39\x7d\x74\x26\x1f\x08\xb2\xd3\xa8\x9c\x6d\x96\xb0\x0a\x24\x07\x1f\x7e\x3c\xef\xf3\xb0\x0f\x38\x67\x1c\xfd\x58\xb0\xec\x16\x9d\x13\xa5\xf4\x7f\x09\x48\xba\x66\x99\xef\x06\xdc\x63\x0f\x42\xf1\x87\x04\xa1\x68\x96\xe1\x69\xf8\x23\x41\x50\x94\xf8\x26\x05\xf9\x68\x4d\x50\xa3\x0e\xa1\x7a\xd1\x22\xad\xce\x3c\x3a\xdf\xac\xd9\xfd\x91\x60\x47\x2d\x27\x47\x34\x18\xc4\x04\x1a\xcb\x2d\x79\x90\x7f\x87\x8f\xe6\x6f\xfa\x85\xde\x45\x50\x30\x65\x9c\x55\xbf\x4b\xcd\xe1\xc3\x8f\xe7\x52\x3c\xc1\xaa\x35\x52\x8e\x4e\x88\xc8\x4e\x32\x52\xaf\x4f\x4c\x77\x9e\xcd\xf4\x94\xac\xa2\x82\x35\x09\xc0\x97\xa7\x28\x63\x45\x61\xea\xd3\xb0\x15\x3a\x23\xf5\xda\x91\xd9\x19\xb4\xe3\xcc\x31\x3f\x2d\x34\x41\xcd\x18\xbc\x0c\xbb\x77\x4c\xe4\x7b\xe6\x94\x78\x9b\xa4\x59\xe6\xc9\xd5\x51\xbf\xc4\x96\xf9\x03\x22\x9d\x3f\xca\x34\xed\x1e\xd9\xe1\x60\x61\x5f\x51\x17\x6b\xcf\xfb\xd7\x07\x6b\x30\xa4\xc3\xf7\x4c\x8f\x4d\xa1\xcb\x95\xbe\x0e\xe4\x24\x47\xec\x8e\x34\x0d\xcd\x09\x47\x8e\x17\x75\x9b\x30\x48\xb2\xa2\xc5\x53\xcc\xee\x1e\x6f\xe2\xd9\xe0\x4d\x24\x5d\xd8\x3c\x06\x27\xdf\xdb\x64\x70\x38\x2f\x69\xf5\x07\x60\x71\x00\xd4\x08\xa9\xe7\x4c\xfe\xd5\x0a\xc3\xb9\x57\x21\x9e\xe1\x82\x5c\xfe\x02\xba\x0e\x2d\xf4\xb3\xfd\x1b\x91\xfd\xd1\xab\x7d\x1c\xb1\x75\x4d\x55\x45\xfe\x9b\x3b\x08\xa8\x62\xf9\xb4\x85\x7f\x5f\x11\xd9\xdb\xe7\xba\xa0\xeb\xb6\x62\xf6\x06\x0b\x72\x8f\xe1\x52\xf6\xda\x0e\xa9\x8f\x5d\xe0\x36\xc3\xe9\xd5\x25\xfa\x49\xd3\xdc\xbe\x1c\x73\xc3\x84\xd6\x00\xcf\x59\x89\x69\x02\x64\x9a\x57\x70\xde\xef\xdc\x95\x23\x88\x34\x45\x29\xbf\xc2\x6b\xea\xaa\x05\xb6\xf2\xd6\x67\x6e\x63\xfb\xca\xb7\xde\x50\x77\xaf\xa0\x74\xfa\x89\x67\xbe\xb2\xa1\xdd\x1d\x22\x95\x59\xd5\xa8\x29\xae\x0b\x18\x40\x9c\x54\x9c\x2a\x5f\x9b\x17\x32\x62\x60\x88\x35\xa2\xb5\x8e\xcb\xd6\x4a\x4c\xf8\x64\xfe\xcc\x6e\x68\x65\x4f\x36\x33\xce\xe4\x15\xa6\xc1\xba\x76\x7b\xad\xe3\xd9\x68\x1d\x9c\x17\x17\x15\x5e\x16\x61\xc7\x64\x5f\x58\x14\x58\xf9\xe5\x89\x7a\xef\x24\xa7\x5c\xfe\x3f\x5a\x2c\x7e\x56\x0e\x83\xb6\xb2\x9a\x73\xb4\x68\xaa\x61\x91\x2e\xef\x4c\x1f\xea\xed\xcf\x9a\xe6\x4f\x49\x15\x8a\x2f\xab\x5c\x76\x9b\xf0\x5e\x64\x99\xa1\xa4\x8b\x30\x43\x7c\x58\x26\x0e\x67\x49\xd0\xf5\x9a\x66\xb7\x57\x9e\x5f\x80\x35\xf2\xb7\xca\xfb\xc9\x09\xb2\xb0\x86\xc6\x37\xde\xdb\x96\xf1\x9a\x61\x5d\xa5\x5c\xa9\xaf\x3d\x09\xb2\x30\xd3\x22\x09\x20\xcc\x39\xcb\x68\xe7\x34\x8a\x42\x99\x77\xe2\x27\x57\xe2\x67\xfb\xe1\x28\x6d\x62\xb6\x5c\xb4\x8b\x6c\x31\xfb\xb9\x27\xeb\x62\x17\x64\x33\x23\x5b\x0f\x41\x6f\xad\x24\x74\x99\xeb\x1e\x9e\x8c\xf5\xda\x68\xdf\x86\xf3\x5f\x00\x3c\x5b\x76\x51\xad\xfe\x67\x00\xbf\x36\x97\xd5\xe1\xca\x18\x37\xff\xa3\x7b\x41\x8c\x56\x36\xf9\x77\x27\x53\xa7\x9f\x08\xe9\xab\x80\xbb\x81\x9c\xec\x50\x15\x96\xe8\x30\xc3\xf9\x82\x63\x06\x89\x81\xcf\x58\xff\x66\x3c\x27\x8a\xb7\xd4\xac\x6e\x8b\x50\x7c\xd6\x06\x02\xd0\x16\x86\x76\xfd\xfd\x6d\x3c\x2c\x73\xca\xc5\x07\x32\x61\x36\x2a\xc7\xc7\xdc\x21\xb6\xaa\x3c\xac\x72\x3c\x24\x58\x4b\x30\xf4\xed\xf7\xdf\x7d\x37\x56\x67\x7e\xba\x96\x7c\xdc\x6b\x33\x5e\x67\x7e\xba\x96\x7c\x90\x62\xa8\xce\x7c\x28\x8b\x25\x48\x34\x58\x67\x3e\x9a\xb5\xb2\xdb\x62\xf2\x51\xe3\x73\x6a\xb2\x2a\x84\x55\x42\x53\x54\xe1\x69\x9b\x91\xc4\xd4\x50\xca\x69\x4c\x69\xe8\xa5\xa3\xee\x2e\xd1\x34\x21\xbd\xd4\x4f\x1c\x8d\xa8\x04\xf1\xa4\xd2\xcd\x74\xd1\xe8\x95\x75\x2a\x95\x34\x92\x24\x0a\x38\x58\x2e\x81\x74\x37\x05\xb9\xe7\x96\xe1\x4e\x05\x3b\x88\x27\x7f\x02\x93\x3a\xe1\xe1\xfe\xa0\x04\xce\xad\xd3\x36\x13\x22\x31\x61\x29\x9a\x29\xe2\xa8\x4b\xb6\x8c\x92\x45\x53\xe9\x98\xe1\x14\x4b\x00\x5d\x6f\x8f\x43\x12\x2b\x01\x14\x93\x41\x4c\x00\x34\x81\x49\x94\x3d\x11\x03\x99\xd4\xc4\xd4\xc9\xb4\x84\xc9\x94\x88\x68\x58\x34\x34\x3c\x25\xd2\x04\x65\x01\x37\x40\x38\x11\xb2\x9f\xdc\x08\x20\x39\x95\xfe\x38\x99\xd2\x08\xec\x66\x52\xd2\x23\xf8\x68\xc3\x02\xac\xe3\x69\x8d\x80\xf0\xeb\x9d\x45\x54\xc3\x52\xe1\xd2\x12\xe0\xba\x6a\xc2\x61\x9d\x13\x92\xf7\x96\x62\xdb\x4c\x83\x46\xf5\x0d\x75\xe6\x92\x63\x77\x9a\x8e\x0b\x73\x95\x4d\x63\xba\x78\x3b\xe1\x87\xde\xdd\x35\x07\xc1\xb6\x61\xfc\x3e\xa9\xbf\xca\x60\x48\xe4\xc6\xc8\xf2\xcb\x62\xe0\x6f\x72\x3f\xcf\x84\x0d\xdc\xbb\x99\x26\xdb\x17\x06\xde\xdc\xfb\x43\x42\x83\xed\xfc\x21\xbc\x57\x0b\xcd\x9a\x48\xb4\x3e\xb6\x62\x0d\x62\x4b\x48\x45\x6a\xc5\x38\xdd\x61\x3a\xbd\xba\x44\x59\x43\x54\xaa\x23\x2e\xf8\x31\x1a\x29\x74\x91\x03\xac\xb5\x4a\xab\xeb\xee\x54\x58\x08\x52\xd6\x22\xbc\x39\xf6\xee\x90\x67\xe3\x0e\x99\x61\x87\xfd\xd5\xbd\xe2\xf0\xed\xdb\x12\x57\x47\xf2\x24\x2a\xc7\x88\x67\x6b\x0e\x1b\x62\x07\x9c\xfd\x18\xd9\x80\x76\x35\xb9\xca\xa4\xa4\x72\x61\x34\x16\x26\xa4\x5c\x0f\x86\x80\xae\x27\x9b\xa8\x15\xbd\x19\xf3\xa3\x0b\x95\x0f\x4e\x6f\xc6\x6a\xd0\xec\x18\x69\x67\xae\xa9\x6e\xae\xec\x41\xf5\x2a\xa1\xfb\xb6\x83\x18\x07\xd0\x2a\xc7\x95\x4a\xfb\xea\x28\xf4\x6f\x4d\xfa\xda\x84\x8b\x82\xdd\xf3\x68\x37\x7d\xe9\x2a\xd7\x5d\x8e\xcf\xe4\xb1\x2e\x09\x2a\x69\xd3\xb0\xc6\x98\xd4\xfd\x61\x04\x69\x4a\x9e\x26\xe4\xad\x8d\x34\xfa\x1a\xd2\x18\x8f\xed\x82\x08\x7f\xfb\xc9\xcb\x7c\xa5\x33\x14\x62\x99\x51\x36\x30\x4d\x83\x33\x18\xef\xdb\x92\xac\xf1\x1d\x65\x6d\xa3\x29\x0b\x86\x5e\x98\x3f\x29\x51\xf7\xc0\xc2\x65\x4a\xad\xc9\x53\xe3\xd0\xbb\xd9\xe4\x23\x6b\xe6\x76\x43\xc4\xd2\x2a\x2f\x98\x39\xb3\x76\x9f\x23\xf2\x99\x72\xb1\x41\xce\x2d\x97\x2d\xfb\xfb\xc8\x6a\xdc\x1d\xaf\xa5\x3c\x4d\x40\x81\xfe\xd5\x7f\xa3\xaf\xce\xdd\x2d\xd4\x9f\xfe\xa8\x18\xd0\x7b\x85\x0e\xe4\x67\x2d\x68\xf6\x90\x80\x7a\xdc\xf9\x57\xe5\x8b\xe8\x47\xcc\x49\x8e\xde\xe1\x0a\xdf\xe8\xfb\xf7\xcb\xc5\xd5\x8f\xef\x5e\xc9\x05\x8d\x96\x4d\xba\x3c\x1f\x73\xd0\xda\x2f\xe8\x0f\xbc\xdf\x3e\xa5\x69\x30\xd6\x24\x01\xba\xc3\xd1\xee\x20\x39\xcb\x4a\x9a\x18\xf8\xc2\x66\x36\xfb\x10\x07\x7f\x70\xb4\xef\xca\xfc\xd1\xd1\xed\xbb\xae\xcf\x63\x6e\xc1\x3f\x73\x81\xf9\xfa\x03\x91\x0b\x4d\x16\x84\x4f\x01\x7f\x8c\x6b\xa0\xea\x65\xd4\xf4\xde\x96\xb7\x0a\x8e\xad\x7e\xa3\x24\x2f\x1b\xf7\xe5\x4a\x36\x97\x2f\x4d\xc7\x8e\xa5\x2a\xdb\xa9\xae\x37\x54\xac\xdb\xe5\x71\xc6\xca\x13\xf5\x11\x92\xeb\xff\x3f\x59\x16\x6c\x79\xf2\xed\x7f\xe2\xd5\xbf\xe7\x7f\x79\xfd\x9f\xcb\xe5\xbf\x2f\xc9\x0f\x3f\xfc\xe7\xeb\x1f\xbe\xff\xcf\xef\xff\x1d\xaf\x96\xdf\x7e\xf7\xed\x77\xff\xfe\x1f\x3f\xbc\xce\xbf\x5f\xfd\xe7\x9f\xbf\x3f\xc1\x35\xe5\xe6\xc5\xbb\xd7\x4b\x22\xf0\xeb\x13\xd3\xdb\x7f\x70\xdd\xdd\x7f\x28\x28\xdf\xe3\x1b\xf6\xcd\xcf\x7f\xfe\xf3\x98\x52\x1a\x63\xb0\x21\xfd\xfd\x79\xea\xed\x3b\xd5\xd7\x23\x3b\x3c\xb0\xf7\x26\xff\x64\xa2\x7f\x87\x93\x3a\xc0\x1e\x57\xcf\x48\xb5\x50\xea\x73\xf6\x1d\x55\xe2\x68\x89\xb9\x9c\x51\x2e\xf0\x66\x19\x9e\xd0\x6a\xe2\x1b\x32\x9e\x85\x1c\x1c\x23\x6e\x6e\x46\x77\xc6\x20\xe7\xa7\xb9\x69\x4b\xa5\x1d\x18\x47\x1b\xa9\x44\xf3\xa0\x4a\x5c\xe8\x92\x2a\x39\xcb\x6e\xa5\x26\x58\xe2\x1b\x72\x70\xc0\xd1\xd9\xbb\x71\x40\x7a\x3b\x60\x3a\x1e\xd7\x77\x8c\x7e\xc5\x0d\x55\x37\x14\x2f\xc0\xf0\xdf\x5e\xfe\x7a\xfa\xe1\x1f\xef\x4f\xdf\x5d\xbc\x1a\x25\x2a\x95\x3c\xf2\xb9\xc6\xaa\xe6\x52\xeb\xb2\xe1\x5c\x05\x78\xd9\x21\x52\xdd\xd1\x86\x55\x65\xe7\xd2\xbb\x33\x5f\x1a\x25\x99\x29\x38\x24\xed\x44\xe3\xac\xb8\xb3\x3e\x4a\xd7\x2b\x6b\x19\xa4\x55\xdd\x0a\x6b\x3d\x36\x4a\xdf\x28\xc5\xb6\xca\xd6\xb8\xba\xb1\x08\x0b\xde\x98\x10\x7f\xa8\x04\xfe\x6c\x1d\x0c\x84\x67\xb8\xb6\x72\x11\xa3\x9c\xb5\x53\x9d\xfc\xb7\x7f\x3b\x44\x94\xbc\x41\xff\xe6\x11\x3b\x46\x17\xe6\x7d\x6f\x02\xb5\xcf\x93\xdc\x91\x46\x7d\xc0\x4c\xd5\xb8\x9a\xd2\x90\x1b\xdc\xe4\x85\x09\x20\xf6\x2d\xba\x76\xc2\x90\x52\x79\x39\x62\x8d\x5c\xbb\x63\x74\xe6\xe6\xaa\xad\xf3\x69\x65\x17\xc6\x29\x04\xe6\xb7\xfc\x84\x56\xf2\x58\x1d\xc9\xe3\x70\x84\x6b\xa9\x20\xa9\xdb\xc5\x89\xb6\x0e\x1f\xa9\x1a\x00\x55\x7e\x84\xcd\xb6\x3c\x72\x4b\x7d\xf2\x4d\xd3\x56\x95\x64\x2c\xd8\x3d\x45\xab\x23\x7c\xc4\xd7\x64\xa2\xd8\xcf\xb9\x54\x7d\x33\xd9\xef\x37\xca\x5a\x53\x37\xac\x94\x83\x6e\xf9\x31\xf9\xac\x34\xbf\xe6\x58\x9e\x92\x31\x16\x12\x70\x76\x82\x38\xcb\xb8\x1d\x9e\x54\x77\xf1\x23\xf9\xb3\x81\x7b\xf3\x36\xb6\x5b\x21\x93\x16\xef\xcc\xd7\x6e\x7a\xc6\x57\x66\x73\x01\xbd\x49\x01\xcd\x0f\xa9\xee\x12\xa7\xa7\x5f\xf3\xaa\xba\xfb\x15\x37\xbd\x4b\x48\x35\x3a\x30\xeb\x69\x9f\xe0\xe6\xca\x57\x7c\x16\x1e\x6c\xfc\xc6\x11\x36\x69\xf5\x3a\xee\xcb\xc4\xb1\xfe\xfa\x77\x8e\xb3\x7f\x5c\x9e\x5f\xbc\xbf\xbe\x7c\x7b\x79\xf1\x61\x5a\x1f\x04\xa8\x5c\xca\x9c\x07\xec\xe0\x41\x84\x9f\xf6\x78\x67\x40\x13\xec\xb8\x6a\xdd\x10\x79\x1f\xe7\xd6\x53\x33\xb1\x01\xa3\x11\x06\x6e\x4f\xaa\xeb\x23\xae\x5c\x2d\x91\x71\x82\x10\xa6\x6d\x08\xcf\x66\xdd\x01\xa2\xf2\x6c\xcc\x61\xe0\x01\x92\x96\xb5\xcf\x61\xe3\xe1\x9e\x3a\x06\x9f\xc4\xcc\x03\x34\x15\x9b\xf7\x0d\xfb\x2f\x5e\x04\x3c\xda\xd0\x2d\xfc\xb6\x61\x81\x00\xd9\xfe\x75\x4c\x43\x61\x28\xa3\xd3\xc4\x51\x3b\xe0\x26\xb2\x28\x30\x0e\x8f\xd1\x19\x25\xc4\xd5\x3a\x91\xbf\x93\xb2\x16\x81\xdc\x18\x98\x49\x3c\xb3\x70\xab\x7f\x23\x0f\x51\x18\xa1\x81\x33\xc1\xe2\x06\xdd\x92\x07\x1d\x41\xeb\xb0\x5b\x9f\x45\xe8\x8b\x86\x15\xd9\x69\xe4\x0b\xac\x32\xee\xf3\xbc\x88\x74\xed\x11\x6a\xdd\xc2\xea\xdc\x26\xcc\x34\xbc\xbe\x6d\x12\xa2\x30\xb0\xbc\xed\x9c\xd2\xb6\xf0\xb2\xb6\xbb\x0a\xb3\x00\xc6\x50\xc0\x30\x5c\xa7\x40\xc1\x7a\xb1\x9a\x0a\x7f\xd5\x58\x18\x39\x2a\x89\xc0\x52\xe7\x3d\x96\x1b\x2f\xb6\x4b\x7a\x0f\x2b\x4b\xc5\x61\xf7\x9b\x01\x70\xed\x7e\xf0\xe1\x5d\x23\x84\x79\x4d\xb2\xe3\x8a\xe5\xca\x80\x7f\xa8\xff\xb3\x5f\xb1\xd7\xfc\x41\x60\xd1\xf2\xe3\x35\xe3\xe2\xf2\x2a\x4a\x54\x3f\x5c\xb3\xfc\xf2\x2a\x12\x0d\x05\xe7\x66\x29\x68\xaf\x30\x7c\xd7\x1e\x5e\x2b\x60\x5f\x8f\x21\xba\xce\x40\x68\x4d\x38\xc7\x09\x28\xac\x50\xdc\xd5\x0d\x1c\x55\xc0\xc0\x93\x90\x56\x77\x1e\x2f\x05\xc3\x4f\x05\x1e\xe7\x34\xe4\x3f\x20\xd6\xdf\x10\xbf\x2f\x32\x47\x41\x74\xbf\x10\x62\x5f\x84\xae\x79\x98\xd4\x6b\x52\x92\x06\x17\x47\xc6\x24\xde\x47\xfa\x3b\x1c\x42\xf7\xc5\xce\x9d\x0f\xf6\xb7\x41\x7b\x2e\xee\x1f\xfc\xdc\x27\x62\xfb\xc1\xd0\xfc\x7a\xe8\x7c\x80\x13\x30\x13\xbf\x2f\xe1\xa8\x83\x31\xfa\xa0\xa8\x7c\x03\x94\x3d\xc0\x20\x47\x70\xf8\xa0\xb8\x7a\x09\x03\x85\x63\xe7\x01\xd0\xf2\xc0\xe8\x77\x3b\xe7\x4a\x20\x4c\x3b\x20\x53\xd2\x11\x44\xbb\xb8\x43\x6c\x46\x32\x42\x03\x19\x9f\xe2\x5a\xd1\x0f\xb7\xec\x44\xd2\xaa\x61\xe5\x31\x82\x82\xe5\xda\xe0\x75\x9a\x5b\x4a\xb7\x24\x58\xe5\x40\xb7\xfd\x45\xe5\xeb\xbe\xa8\x6c\xc4\x20\x03\xc6\xf3\x95\xdc\x52\xe2\xf5\x36\x83\xbd\x39\x52\x1b\x3e\x60\xd8\x8e\xb8\x6b\xc7\x0d\xdb\x9d\xe9\x78\xec\xab\x31\x76\x63\xad\xcd\x53\xf3\x07\x61\x57\x53\xee\x2e\xdb\xb6\x73\x7b\x05\x97\xed\xec\xdd\xf9\x2c\xf7\x57\x90\xe8\x94\x29\x17\xe2\x06\x0b\x12\xee\x59\x5b\xc1\x36\xd5\x20\xc9\x31\x57\x59\xdc\xaa\x1a\x24\x19\x72\x99\x85\xed\xaa\x91\x93\x1a\x73\x9d\x8d\x5b\x56\xc3\xc7\x36\xc9\x85\x96\x5a\x47\xf1\xa9\x5d\x69\xcf\xa7\x08\xe3\x84\xb7\xcc\xb6\xde\x89\x4e\x70\x9a\x85\xf7\x9d\xf3\x31\x41\xbd\x9f\xba\xa5\x26\x47\x82\x1d\x63\x11\x31\xe5\xe1\x99\x46\x1d\x64\xdd\x3b\x50\xed\x6f\x86\x6e\x04\x73\x9c\x41\x35\x3f\x98\x6b\xcd\xb6\x04\x5d\x24\xe2\x6a\x1b\x1d\x1a\xc4\xe5\x06\x18\xd8\x08\x27\x0f\xb9\xde\x00\x14\x87\xce\x39\x98\x0b\x2e\x85\xf0\x31\x4c\x6c\x80\xee\x9d\x80\x38\x0b\x4f\x78\x40\x74\xdf\x1d\x45\x5d\xf4\xdb\x6e\x9d\x77\xb6\x25\x3a\xf1\x40\xdb\xa9\x27\x70\xc0\xce\x3c\xdb\x52\x0f\x4d\xd8\xb9\x67\x5b\xba\x93\x0f\xb4\x1d\x55\x81\x81\xed\x9c\x7d\xb6\xa5\x81\xc8\x25\x39\xff\xc6\x27\x61\xb6\x13\x70\x5e\x8f\x51\x2a\xa0\xf1\xb6\xce\x41\xdb\x66\xc0\x85\xc2\x61\x34\x37\x3a\xba\x2b\x28\x4d\xf4\xa5\xe0\x34\x51\xd2\xed\x3d\x81\x28\x3c\xa7\xa9\x6b\x33\xd6\x2e\x0d\x5e\x13\x25\xb9\x21\x13\x46\xdb\x99\x02\x66\x21\x6d\xa2\x64\xb4\x4d\x94\x0c\x73\x0b\x07\xb9\x4d\x44\xad\x85\xb9\x2d\x6d\x4b\x77\x5f\x02\x67\xb0\xef\xe4\x04\xb9\x31\x53\x29\xfb\xce\x4e\xa8\x3b\x13\xf8\x8d\xbe\xd3\x33\xc5\xad\x69\x5b\x3a\x7f\x4e\x71\x73\xda\x96\xea\xee\x4c\x38\x43\x94\xef\xca\xed\x69\xdb\x0c\x7e\x92\xe0\x06\xb5\x2d\xc1\x1d\x9a\x30\x1b\xfd\xb2\x43\x49\x6e\x51\x47\x22\x75\xf8\xa9\x0c\x05\xe6\x2e\xed\x77\x07\xcc\x56\xfe\x7f\xf6\xde\xb6\xc9\x8d\xdc\xc8\x1f\x7c\x7f\x9f\x02\xd1\x76\xfc\x5b\x8a\x68\xb2\x25\xdb\xeb\xf0\xcd\x7a\x7d\xd1\x96\x34\xb3\x1d\xd6\x48\x1d\x6a\xcd\xcc\xfa\x62\x23\x26\xc0\x2a\x90\xc4\x76\x11\x28\x03\x28\xb6\xb8\x7b\xfb\xdd\x2f\x90\x09\xd4\x03\xc9\x2a\x00\xd5\xa4\xa4\x19\x57\xed\x8b\xf5\xa8\x59\x59\x78\x48\x24\xf2\xe1\x97\x99\x69\xe1\x53\xff\xa4\x87\x51\x63\x2f\x1a\x51\xec\x12\xc2\xa9\x91\x54\xbb\x41\xd7\xd8\xb0\x6a\x24\xf1\xbd\xe0\x6b\x28\xbc\x1a\x2b\x35\x46\x05\x61\xfd\x93\x2e\xa5\x12\x83\xb2\xfe\x89\x0f\xce\x26\x1c\x4a\x1f\xc6\x1d\x1b\xa4\xf5\xcf\x08\xc1\x14\x1d\xb4\xad\x5f\x88\x0f\xde\x26\x8a\x25\x17\xe6\x7d\x4a\x10\xb7\x26\x37\xa6\xb9\x7f\x6c\x50\xd7\x3f\xa7\x0c\xee\x8e\x1e\x78\xaa\x6c\x8d\x0a\xfa\x76\x47\x13\x2d\x5a\xe3\x83\xc0\xfe\x49\x0a\x06\x47\x2e\x62\x4a\xc8\xb8\x7e\xe7\x0b\x18\xa1\x3d\xa1\xe4\x84\x43\xd3\x0a\x3a\x8f\x0d\x29\xfb\x67\x32\x6f\x27\xf3\x76\xf0\x89\x0f\x5e\xa7\xa8\xe6\xff\x9c\xb6\x6d\xf4\x8f\x63\x43\xf0\xbd\xc1\xef\xc4\x2f\xc6\x35\x11\x53\xf1\xcd\x63\xef\xa4\x32\x44\x54\x9b\x05\x53\x8d\xa3\xd4\xc5\xc5\x89\xe6\x39\x23\x19\x1d\x8c\xeb\x9c\xb6\xe2\x6d\xad\x59\xc4\xc7\xd4\x5f\xc9\x4d\x59\x19\x46\x3e\xd4\x2a\x7a\xad\xe3\x2d\x76\xcd\x5c\x02\x29\x6b\xfe\x19\x0c\x9c\x46\x89\x32\x5f\x57\x1d\xa3\xa2\x1b\x48\xf1\x9f\x65\x38\xc8\x59\x3d\xbf\x56\x58\xf4\x14\xad\xab\xd0\x7e\x08\xc2\x9b\xf3\x9c\xa3\x58\xb9\x4b\xb8\x4e\x53\x00\x86\x7b\x19\x85\x60\x2a\xe1\x3f\x2e\x9c\x0a\xba\xa1\x9f\xf8\xa6\xda\x10\xea\x5a\xaa\x86\x75\x50\xb7\x76\x2d\x1b\x0c\xca\xd4\x7c\xe9\xad\x21\xa9\x72\xc2\x5a\x5f\x5f\xd9\x0e\x7d\xf0\x16\xec\xde\x1e\x71\xd1\xda\xa3\xe0\xe7\xe5\xf2\xc8\x1e\xf9\x43\x08\x21\xbc\xfa\x3b\x5c\x13\xb9\xe1\x26\x54\x7f\x99\xb8\x82\x40\xb4\x39\xb6\x57\x84\x9b\x8e\xb5\xe1\xb8\x0b\x90\x2f\x34\xd8\x6a\x8e\x60\x04\xd4\x57\x46\x69\x15\x3c\x03\xdd\xe0\x91\x6b\x57\x5a\x88\xf0\x4d\x89\x15\x40\x81\x4b\x66\xb1\x37\x9e\x0b\x12\xfd\x42\x38\x32\xae\x6d\x0a\xcb\x2a\xc5\xcd\xce\xda\xd0\xec\x53\xfc\x9d\x72\x79\xef\x5e\x6c\x15\xd1\x05\xd7\xae\xaf\xee\xaf\x2a\xec\x9b\x72\xd2\xf6\xb9\x25\x54\x56\xb9\xf6\x83\x86\x35\x63\x9f\xcc\xf5\x09\xbe\x81\xc0\x97\xba\x61\xc6\xac\x94\x79\x6b\x4b\x0e\xbe\x78\x0a\x81\x0e\x22\xee\x4e\xf1\x2d\x2f\xd8\x8a\xbd\xd1\x19\x2d\x80\x47\xd2\x4a\xe3\xdd\xf4\x50\x81\x63\xa5\x64\xa1\xa3\x80\x46\x30\x1e\x3b\x72\x68\x96\x9e\x51\x41\x56\x94\x0b\xb2\xb1\x6b\x57\x7a\xe2\x50\x29\x59\x80\xc2\x58\x52\x15\x13\xe7\x77\x04\x5d\xc5\x66\xab\x23\x92\x1c\x9a\x0d\x14\xbb\x66\x7c\x1c\x4d\x10\x21\x7f\x16\xec\xf1\x67\xfb\xb5\xf0\x39\x5f\x16\xb4\x09\xe9\x6b\xe6\xfb\x76\xb7\xe0\x09\xf5\xa7\xfb\x16\x28\xf8\x0d\xae\x89\x51\x15\x23\xb4\x78\xa4\x3b\x58\xc6\xfd\x6f\x70\xfd\x0d\x79\xf9\x1c\x78\x9d\x6a\x52\x7f\x23\x2c\x49\x7e\xf7\x9c\xac\xa9\x26\xaf\x6e\xee\x7e\xbe\xff\xfb\xfd\xcf\x37\xaf\xbf\xbf\x7d\x17\x77\xec\x63\xf4\xec\x8c\x96\x74\xc1\x0b\x1e\x73\xb3\x1c\x58\xc5\xed\x97\x41\x5c\xe6\xf9\x75\xae\x64\x89\xf3\x77\xf0\xae\x88\x0b\xdd\xad\xd1\x5e\xbb\xd5\x76\x99\x36\xd8\xb6\x65\xe7\x83\x41\xba\x2b\x45\x45\xab\xac\x56\xb3\x15\xaa\x12\xd0\x7d\x3d\x40\x21\xc5\xc7\x40\xf3\x28\x0b\xa5\xb3\x82\x37\x79\xce\xf2\xb4\x29\x45\x21\xbc\x8e\x7e\xec\x95\xff\xcc\xae\x41\x7b\x91\xbb\xf7\xf7\xb7\xff\x91\x3a\x02\xe2\xf8\x2b\xc1\xcc\x8a\x36\x75\x63\xec\x99\x7a\x7a\x4a\x96\xc9\x6b\xfe\x81\x6d\xe4\x76\x5a\xf5\x63\x3f\x8f\x59\xf5\x68\x05\xb7\xbe\x07\x82\xc7\xa2\xbb\x3d\x95\x68\x8b\x4c\xd1\xa2\x03\x05\xef\xe7\xe4\x0e\x45\x75\xc4\x9a\x75\xdf\x6e\x84\x0c\xe2\x98\xb5\xc6\xaa\xb7\xc5\x8e\x58\xcd\x74\x4b\x8b\x98\x3b\xca\x48\xa2\xa4\xac\x6f\x90\xb5\xd4\xe6\x58\x8b\xe8\x93\x49\x67\x7b\x31\x41\xf5\xe1\xa4\x55\xac\xdf\x22\x39\x13\xd2\x38\x2d\x1e\x8a\x0d\x4a\x68\xd4\x9c\x91\x38\x4d\xbe\x55\x5f\xb8\x23\x41\xb5\x43\xa7\x37\x2d\x49\xdd\x1a\xdc\xf9\x2f\x07\x49\x63\x7f\x93\x4a\xbb\xc1\x1d\x08\xe7\x46\xb7\xb7\x5f\x57\x8c\xe6\x11\x59\x8e\xd8\x8b\x40\xbb\x7e\x24\xfa\xc1\xf7\x69\x71\x3a\x85\xb3\x41\xf0\x8b\xf5\x50\x3f\xc6\x9c\xaa\x25\xa3\xa6\x52\x0c\x75\x09\x2c\x9f\x88\xad\x00\x83\xd0\xc0\x84\x2c\x30\xac\x3f\xfd\x41\x4a\xd3\xd4\x98\x4c\xda\xf8\x9f\x6a\xf7\x1e\xd7\xad\x25\x5d\x53\x8c\x7c\xd2\x7c\x16\xb5\x88\xc0\xe2\x4d\x09\xcb\x4e\xef\xd9\x13\x33\xb8\xaa\xc4\x0d\xf6\xc3\x48\x56\x3e\xbe\xbb\x7d\x0d\xe7\xb1\x12\x7b\xa9\x13\x07\xa1\xdd\x78\xd5\xf3\x07\xcb\x8f\x7b\x1c\xe8\x0a\x64\x32\x83\xdd\x1f\x68\xa1\x65\xa8\xb7\x0f\x01\x6b\x09\xc2\x20\x77\x32\xbf\xef\xda\x4d\x58\xbd\xd7\xfd\x79\x21\xcd\x9a\xec\xfd\x20\xac\x6c\x88\xfc\x08\xdd\xab\xa6\xfb\x51\x0b\x30\xc0\x45\x32\x79\x43\x1f\x98\x26\xa5\x62\x19\xcb\x99\x18\xae\xa2\x4c\xba\x2e\xbf\x3f\xfe\x21\x8a\x33\x62\xfa\x8a\x00\x67\xbc\x93\xc2\x1e\x87\x24\xde\x68\xba\x5a\x82\x23\xa0\x2b\x5d\xc0\x71\x8d\x3a\x78\x84\x8d\x23\xa4\x98\xc1\x61\xa8\x7c\x97\x7b\xab\xe4\xe3\x42\xff\x0d\xab\xd0\xa2\x61\x01\x71\x9c\xa1\xfe\x74\xf5\xfc\xd7\x0c\xb3\x79\x08\x35\x35\xa3\x41\x5f\x51\x6d\xc5\x0b\xba\x2e\x0c\xc9\x25\x43\x14\xa9\xaa\xc2\xb6\x07\xd5\xe4\x87\xdb\xd7\xe4\x05\x79\x66\xc7\xfa\x1c\xd8\x63\x49\x79\x01\x21\x2a\xe8\x53\xb2\x67\x89\x84\x7d\x6c\x6e\x08\x73\xd7\x44\x0c\x73\xdc\xe0\xe8\x5f\x11\x21\x89\xae\xb2\xb5\x9f\xb3\x6f\x80\x1b\xa4\xb9\x60\xa4\x64\xca\x32\x0b\xb8\xea\x9a\xa3\x14\x38\x2a\xb1\x27\xed\xd8\x51\xea\x3b\x2a\x51\xfb\x14\x3e\x4a\xc9\x47\x25\x51\x30\xfe\x10\x68\x8f\x4f\x8e\xc9\xc5\x1f\xce\x20\x17\xdb\x2a\x0e\x34\x56\xee\xac\x0a\x32\xb4\x47\xc7\x85\x99\xab\x5b\x70\xf8\x9f\x94\x15\xce\x23\x35\x35\x7b\xcb\x45\xf5\x09\x9b\x77\xa5\x1b\xf4\xf7\x6f\xe0\x75\x92\xf9\x49\xc1\xa6\x40\x5a\x17\x96\x8d\x8e\x89\xea\xb7\x92\x97\xf6\x7b\x10\x1e\x57\xf5\xa2\xc4\x07\x2d\x0a\x69\xc5\xba\xd5\x64\xa8\xc8\xe5\xe6\x60\xb0\x00\xc1\xa1\xd9\xba\x3d\x00\xcb\x5c\x11\xa4\x63\x98\xaf\xcd\x5c\x41\x92\x91\xcc\xd7\x30\x57\x98\xb5\x4f\xc9\x7c\x29\xae\x8d\x82\x6d\x59\x54\xdc\xb9\x9b\x09\x67\xdf\xb2\x0a\xa3\xdf\x25\x20\x43\x00\x70\xeb\x9a\xa8\x01\x57\xc5\xd9\xbe\xce\x1b\x14\x19\xb4\x73\xef\xa4\x18\xc1\x4a\x16\x51\xd8\x88\xae\xb5\x2a\x0b\x48\xf7\xa0\xf5\x24\x2d\x99\xaf\x76\x8e\x26\x50\xe5\xfe\xe8\x1c\xad\x75\xd4\x9d\x23\xd8\x91\x5f\xeb\x1c\xab\x88\x1b\xf3\x60\x8e\xf6\x9a\xed\xce\x11\xee\xb8\xaf\x73\x8e\xd1\x2e\x98\x47\x2e\x72\xf9\xa8\xc7\x5e\x05\x3f\xe1\xeb\x5e\xee\x64\xbe\x2d\x92\x6e\x5d\x07\x31\x42\xbb\xe3\x35\x38\x76\x1f\xf8\xa0\xd0\x52\xc9\x4d\xd4\xfd\x72\x28\x47\xf7\x9a\x97\xfc\xba\xcc\xab\x14\x59\xbd\xda\x68\xfa\xaa\xee\xe8\x74\x5f\xb2\x2c\xf9\x30\x7c\xf7\xfd\xfd\x4d\x97\x04\x00\xf2\xa1\xaa\xbf\x5d\x01\xfb\xf7\xa8\x73\x40\xf3\x0d\xc7\x92\xf7\x8f\x6c\xb1\x96\xf2\x81\x3c\x3b\x52\xbe\xbe\x09\xaf\xcd\x34\x5f\xe9\x6b\xc7\xb5\x33\x3b\x93\x38\x24\x32\x17\x05\x17\x2d\x37\x12\xa4\x31\x3b\x55\xd7\x0e\xb6\xd5\xe2\x0a\x36\x2e\x8a\xa8\xa0\x9b\x26\x72\x70\xb8\x24\x00\x87\x03\xe0\x18\xba\x96\xa2\x68\x62\x1a\x00\xb4\xd5\x29\xd7\x74\x86\x17\xa2\x65\x36\xae\x11\x55\xbe\x96\x42\x3a\x9c\x8a\x66\x6a\xcb\x54\xa4\xc0\xb1\x12\x0a\xbd\x51\x30\x5c\x77\x72\x61\xee\x6d\xbf\xd5\xc9\x85\xed\x21\xb7\xc5\x42\xb3\x03\x1c\xd7\x6e\x2c\x15\x84\x4a\xf9\x67\x60\xcb\xeb\x96\x89\x1f\xb1\x6d\x2d\x2b\xe2\x20\x6b\xbf\xa2\xbd\xaa\xed\xc9\x51\x5b\x04\x76\xa5\x7b\xd9\xca\x3c\x7f\x39\x34\x76\x66\xd4\xec\x07\x6c\xd1\x43\x5b\x33\xe5\xb2\x0d\xd9\xa4\x09\x4d\x6e\x9a\x27\xd2\x2e\xc5\xdb\x26\x52\x54\x9d\xd6\x34\x25\xe7\x33\x4f\xf1\x69\xce\xcb\xd1\xb3\x60\xf6\x8f\x43\x14\xd1\xe6\xc8\xf4\x1d\x87\x0f\x6d\x66\x8d\x93\xad\xe7\x3b\x3b\xa7\x83\xd0\x04\x7f\x62\x2d\x7c\xb5\xed\x47\xf9\x76\xd1\x1c\xb7\xee\xd7\x84\x1a\x17\x4e\xd9\x30\xa3\x78\xa6\x3d\xae\xc6\xf2\x6d\xa6\xa0\x50\x40\xab\xc8\x7e\xef\x1c\xbc\x12\xa5\x5c\x8c\x14\x8a\x79\x2c\x2b\x58\x57\xc5\x0a\x46\x35\x1b\xd9\xe6\x84\xa0\x2e\xdd\xab\xc0\xa4\xc1\xdc\x22\xf6\x6e\x0f\x78\x08\x1f\x87\xb8\xdf\x03\xdb\xb9\xd3\x52\x52\xee\x19\xd0\x57\x4d\x0a\x43\xfa\xef\xea\x02\x53\x75\x07\x15\xb2\xe5\x94\xdc\x63\xbe\xa7\x6f\xbb\x82\xb3\x9d\x7f\x9e\x55\x1f\xe0\x27\x11\x6a\x5c\x78\x08\xf2\xf7\x2d\x89\x5a\x53\x9d\xfb\xe9\xf9\x36\x32\x7a\xd8\x63\xd3\x74\xa5\xc3\x3c\x10\xde\x4a\xee\xe8\xac\xc9\xfe\xdc\x7b\x29\x9e\x92\x13\x87\xe0\xd0\xdd\xe5\x88\xc3\x42\x47\x6d\x72\xa5\x9b\x57\xe7\xf6\xff\xf5\x0d\x3f\x06\x3e\x1d\xf2\x06\x0e\xb2\xc5\x20\xa2\xfa\x1c\x48\xea\x2f\x80\xa0\x3e\x3a\x8e\x98\x36\x23\x35\xb1\x31\x9d\xae\x86\x31\xd7\xe7\x16\x71\x51\xd8\x6a\x8f\xcb\xed\xfd\xee\x57\x84\xa9\x8e\x2a\x30\x38\x84\xa1\x3e\xf3\x8a\x47\x61\xa5\xd3\xd6\x3c\x84\x91\x3e\xc0\x40\xf7\x0b\xcc\x00\x36\x3a\x84\x7d\xee\x5f\xa6\x01\x4c\xf4\x97\xc6\x3c\x3f\xa9\xcf\x5f\x18\xdb\x3c\x12\xd3\x1c\x4a\x92\x7b\x0a\x96\x19\x68\xf7\x68\x92\xa7\xc5\x30\x8f\x16\xa9\x7b\x0b\x3b\x46\xb0\xa6\x62\x9f\x47\x62\x9e\x1b\x4c\x73\x2f\xf7\xc7\x62\x9d\x8f\x60\x99\x7b\x69\x46\x61\x9c\x8f\x61\x98\xfb\xcf\x68\x1a\xb6\x79\x0f\xbb\xdc\xaf\xa8\xc6\x63\x9a\x93\x30\xcb\xe1\x98\x78\x0c\x46\x79\x1c\x36\xb9\xed\x9c\xee\x9d\x78\x02\x26\x79\x0f\x73\xdc\xcf\x48\xb1\x58\xe4\xa8\x9a\xb3\xc3\xd8\xe3\xf1\x98\xe3\xd4\x6a\x92\x91\x68\xd7\x30\x8e\xf5\x84\xd5\x3b\x43\x28\xe1\xa7\xa0\x83\x7f\xf9\xeb\x13\x54\xb2\xc2\x38\xde\xb1\xf8\xdd\xa1\x2a\x38\xa9\xb8\xdd\x16\x2e\x77\x50\x2a\x26\xe2\x75\xc3\x92\x29\x88\xcf\x1d\x85\xcb\x75\xee\xea\xde\xa9\x8c\xc0\xe3\xa2\x83\x68\xc8\x3e\x4d\xc2\xe1\x36\x38\xdb\x5e\x92\x49\xf8\xdb\x8e\xff\x6e\x48\xf9\x0c\xe3\x6e\x83\x67\x23\x0d\x67\x3b\x02\x5f\x7b\x80\x9f\x0d\xdd\x2c\x41\x5c\x6d\x98\x11\xc3\x38\xda\x73\xe0\x67\x47\xe0\x66\x9d\x27\xbd\xdf\xc3\x96\x8e\x97\x4d\x76\x9f\x9f\xd8\x65\x1e\x83\xe4\x0a\x23\xb8\x62\xf0\xae\xa3\x70\xae\x2d\x1c\xeb\xd0\xf9\x8f\xc2\xb7\x1e\xc5\xaf\x0e\x9d\xd7\x01\x5c\xeb\x10\x6e\xb5\x97\xe4\x71\x3c\x6b\x0c\x5e\xb5\x97\xe4\x1e\x8e\xf5\xf4\x38\xd5\x11\xac\x1b\x81\x0b\x3b\x09\xeb\x46\x0a\x96\x21\x1c\xea\x39\xf0\xa7\xa3\x70\xa7\xd1\x31\xbe\xf8\x2d\x1d\x05\x23\x39\x13\x7c\xe4\xf3\x4a\xa3\x38\x1c\xe9\x28\xfc\x68\x0c\x32\x2a\x1e\x37\x7a\x88\x0b\xed\x25\x1a\x8b\x17\xfd\x15\x9f\xf7\x18\x73\x32\x88\xf7\x1c\x87\xf3\x0c\xc1\xc5\xa2\x31\x73\x51\xc6\x4f\x08\xcf\x39\x0e\xc7\xf9\x79\xe7\x10\xc2\x6b\x8e\xc3\x69\x7e\xde\x39\x84\xf0\x98\xe3\x70\x98\x9f\x73\x0e\x41\x13\x39\x0e\x67\x39\x0a\x5f\xb9\x8f\x9f\x4c\x92\x97\xfb\xb8\xca\x3e\xdc\xe4\x50\x1c\x37\x06\x4f\xf9\xa5\xd5\xef\x18\x99\x96\x86\x8b\x4c\xc6\x43\x36\x58\xc7\x41\xb6\x3c\x0f\x0e\x32\x15\xff\x88\xd8\xc6\x41\x92\xd1\xb8\xc7\xa3\xd8\xa0\x41\xd2\xc3\x18\xba\x21\x7c\xdc\x20\xd9\x58\xfc\x4f\x94\xd0\x4a\xc7\x35\x26\xe2\x19\xdb\xdb\x33\x38\xad\x30\x8e\xf1\x08\x2e\x6b\x98\x5b\xbe\xf2\xb5\x8f\xc6\x29\x26\xe2\x13\x5b\x76\xc8\xe0\x64\xc2\xb8\xc4\xe3\x98\xc3\xc0\x11\x0d\xd8\x2a\x91\x6a\xe7\xe0\x47\x4e\x2c\xa5\xc9\xb9\xb0\x85\xa9\x98\xc2\x58\x88\x6d\x0c\x96\xf0\x94\xbc\x3a\x3e\xdc\xdc\xfb\xa7\x92\xda\x0b\x77\x9f\xeb\x43\x5e\x1f\xcb\x50\x0b\xaa\x41\xc2\x20\x05\x58\x49\x17\x4f\x2c\x98\x3a\x7e\xcd\x0b\x69\x88\xde\x89\x0c\x1a\x33\x61\x9f\x23\x4d\x36\x34\x67\xc8\xe0\x1c\x55\x93\xfd\x45\xea\xf7\x18\x94\x32\xff\xc8\x36\x65\x41\xcd\xc1\xb9\xdd\x2b\x31\x59\xff\x0e\x18\x40\x34\x45\xb4\x3b\x50\x00\xb0\xcf\x4a\x99\x23\x38\xef\x60\xf8\x46\xba\xfa\xd3\xf5\xfc\xf7\x7e\x32\xa4\x17\x34\x6b\x13\x8e\xf4\xff\x24\xd5\x43\x21\x69\x7b\x41\x2f\x2f\x5b\xbd\xf4\x8f\xe1\x1d\x56\xdc\xcc\x1f\xfe\x04\xd1\xf6\x4c\x6e\x36\x95\xe0\x66\x77\x0d\xef\xf3\x45\x65\xa4\xd2\xd7\xb9\xe5\xf8\x6b\x5a\xf2\x59\x26\xc5\xd6\xca\x78\x29\xf4\x7c\x93\xff\xc6\xd3\x1d\x15\x29\x6f\xfa\x52\x7c\x21\x54\xcc\x4d\x33\x02\xb7\xb9\x95\xd0\x46\x55\x99\x3d\x75\x79\x0b\x7e\xb9\xa1\x25\xd1\x66\x10\x33\xec\x5a\x65\x35\xd5\xb9\x2d\xc3\x6f\xe8\xce\xcb\x48\x00\xa1\x19\xa6\x2c\xe7\x18\x29\x0b\x6c\xb0\x67\xfa\x20\x11\xa4\x6e\x2c\x6e\x14\x67\x5b\x46\xa8\x5a\x70\xa3\xa8\xda\xb5\xf6\xf2\xe3\x9a\xed\x20\xd0\x64\x4f\xc7\x3f\x2a\xa6\x76\x20\x4f\x86\x6e\xd5\x06\x6c\x0b\x21\x3d\xb5\x65\x39\xc6\x98\x37\x32\xe7\xcb\x1d\x17\x2b\x77\xd4\xf5\x01\xab\x1c\x87\x66\xd8\x8b\x65\xb6\xaa\x78\xce\xae\x5b\x1b\x7a\x0e\xd4\x8b\x9f\x77\x04\xdc\xc5\x50\x91\x53\x95\x3b\x4a\xd3\x01\xe8\x5b\xa8\xe9\x00\xfc\x92\x0e\x80\xee\xb1\x04\xf7\x98\xdf\x99\xe8\x78\x2d\x39\x0d\x31\x67\x1a\xa1\xb0\x6c\x4d\xb7\x5c\xaa\x56\xcb\xa2\xe3\x8a\xc5\x69\x4f\x89\x1d\xf9\x8c\x8a\x7c\x86\x1d\x82\x46\x1d\x96\xe5\x92\xdb\x2f\xc6\x45\x9b\x96\x64\xcf\xbf\x80\x65\xfb\x75\xb6\x66\x79\x55\x38\x2c\x8d\x36\x8a\x72\xd1\x9b\xbb\x13\x63\xaa\x0b\x99\xb3\x9b\xc0\xc8\x0e\x46\xf7\xba\xc6\x60\xda\xd7\xeb\x99\xb5\x47\xa7\xaa\x82\xe9\x60\x9b\x8f\xc1\x1d\x8c\x9f\x04\xfe\x8e\x2d\x99\x52\x2c\x7f\x5d\x59\xe9\x71\x5f\x0f\xe5\x76\x05\x7a\x2d\xfe\xf3\x9b\x4f\x2c\xab\x92\x2b\x79\x7e\x74\x5d\x96\xf2\xca\xab\x77\xee\x73\x20\x01\xdc\x1f\x40\x79\x0a\x50\x05\x3d\xca\xae\x99\xd3\x27\x35\x35\x5c\x2f\xd1\xfc\xaf\x57\x91\x7d\xb2\x07\x5b\x83\x4c\x8b\x33\x78\x88\x77\x22\x78\x55\xff\x8a\x2c\x2a\x88\x00\x5a\xf1\x95\xad\xa5\xd5\xdb\x28\x6e\x16\x7c\x77\xcb\xa5\x55\x08\xc3\xc3\x95\x82\x11\xa9\x10\x80\xe7\xfb\xbb\x36\xc3\x43\x1c\x44\x43\x96\x6b\xb2\x91\x11\x7d\x5e\xeb\xbd\xf2\x56\xba\xfd\x0c\x88\x5f\xfb\x1f\x2b\xc8\x66\xd0\x86\xe8\x6a\x03\x2d\x32\x19\x5f\xad\x4d\x44\xdb\x30\x3e\x67\xf3\x26\xcc\xd0\x0c\x6b\xc3\x98\x01\x88\x75\xbb\x63\x16\x32\x47\x90\xa6\x03\x51\x60\xdb\xf0\x67\xf5\xdd\xe0\xd0\xd0\x57\x35\x88\x78\x9f\xeb\x82\x84\x8f\x6d\xf7\x15\x61\x26\x9b\x3f\xbf\xaa\x0b\x3a\x53\x58\x83\xc5\x8e\x70\xc3\xac\x9a\x1e\x53\x76\x60\xad\x64\xb5\xc2\x95\x64\x85\x1b\xb8\x5c\xb6\x98\x03\xdb\xc3\xe6\xb9\x3d\xa6\x17\xb8\xb8\xe1\xce\x31\xce\x0a\xb7\xc3\xa9\x01\x93\xb9\xbd\x56\x4d\xb6\xae\xbd\x61\x4a\x31\x5d\x4a\x01\x94\xe1\x2f\x6f\x9a\xb9\xfd\x6b\xc4\xc8\x91\xe8\x33\xfd\xbc\x61\x86\x35\x5f\xad\x3d\x2f\x50\xe7\x03\xb4\x3c\xd6\xf0\x50\x28\xff\x2c\xb2\x98\x64\x17\xb7\x27\xb0\xa1\x68\x8b\x53\x5b\xb2\xcd\x30\xb5\xf1\x33\x0f\xd2\xc5\xac\x7c\x77\x23\xe3\xbc\xf8\x06\xd1\xe0\x8e\xb3\xc9\x0b\xf2\x0c\x58\x97\x9b\x4b\x4d\xc2\x05\x7d\xac\xd0\x9e\xc9\xf2\xf9\x9c\xdc\x10\x51\xd5\xb2\xe8\x69\x83\x14\xb2\x1e\xa3\x1b\x8c\x46\x0f\x09\xf5\x5f\x8b\x38\xd5\x29\x4d\x62\xca\xba\x99\xee\x88\x42\x9f\x37\xc8\x7d\x98\x3e\x26\x15\x4c\xf6\x8a\x50\xad\x65\xc6\x69\x4c\x79\x73\x7c\x6a\x2e\xeb\xb2\x2e\x6e\xcb\xb9\xda\xb3\xee\x1f\x8c\x91\x3d\x46\x6e\x48\xe1\xba\x9f\x77\x97\xa2\x2d\xb0\xa2\x29\xc3\xf5\x61\xe9\x5c\x6a\x9f\x4d\x17\xfd\x6e\x42\xb1\xd6\xa3\xd3\xe8\x1d\x7e\x02\x49\xcc\x1d\x6f\xf1\x83\x15\xfb\xce\xa9\xa8\xd1\x02\xd0\x57\x51\x47\xab\x79\x1e\xd8\xee\xca\x75\xd2\x26\x76\x8f\x69\x4d\x58\xb1\xc2\xb9\x84\x62\x7b\x2e\xd5\x14\x81\x20\x8e\x27\x7e\x85\xc7\x70\x59\xfd\xc5\xb4\x17\x8e\x28\x3e\x18\x0f\x84\xb6\xc0\xce\x05\x96\x48\x91\x34\xfb\xd2\x04\x14\x53\x66\x4f\xc6\x35\xf1\xc1\xc7\x6f\xdd\x93\xd6\xe1\x43\xab\x63\xbf\x5d\x8a\x4b\x8d\x4c\x60\xcf\xef\x9a\xa7\x74\xac\xc5\xc7\x48\xe0\x56\x38\xbe\x8e\x1b\xc8\x8f\xd0\x9c\xca\x0f\x37\xe5\xec\xe2\x63\x6f\xc7\x5b\x71\x45\xde\x49\x63\xff\xdf\x1b\xe8\x10\x7e\x45\x5e\x4b\xa6\xdf\x49\x03\xff\x99\xba\xe8\x84\x7c\x67\xf0\x0c\xbc\x4d\x7e\x77\xf4\x86\xe1\x7a\x3c\x69\xbb\x6e\x04\xc2\xb0\xed\xf2\xba\x1e\xf3\xe9\x67\x0e\x9f\xdb\xa5\x8b\xee\x3a\x01\xc0\x35\xb9\x15\x56\x25\x76\xcb\x3c\xe6\x38\xe0\x58\xdc\x10\x7d\x6f\x27\x21\xc5\x0c\x9b\x98\xc7\x54\xde\xdb\x7f\xf6\xc7\xf8\xa6\xee\x0f\xdf\xde\xff\x94\x4e\x5b\x0d\xdd\xa3\xc3\x3d\xdd\x50\xbf\x03\xf4\xe0\xdb\x36\x2a\x67\x0c\xf3\xd7\x83\x5b\xd3\x2d\x28\xce\x5c\xac\x8a\x5a\x05\x4e\x9f\x39\xa6\xf8\x7b\x88\x22\x94\x0a\x28\x15\x33\x2c\x07\x8c\xa7\xf0\x70\xae\x74\x8e\x82\x80\x0c\x8e\x17\x40\xda\x65\x41\x33\x96\x93\x1c\x0c\x08\x3b\x70\xa3\xa8\x61\x2b\x1e\x57\x39\xa7\xfd\x6c\x98\x5a\x31\x52\x5a\xfd\x22\x75\x58\xc9\x97\x38\x3e\xa3\x0f\x79\x5a\xed\xf9\xe6\x49\xeb\x4f\x86\x4f\x7c\x97\x32\xff\x7b\xcf\x9e\x09\x2f\x25\xb6\x82\x6c\xbf\x94\xb2\x06\xa0\x3c\x42\x6b\xde\xaf\x4e\x6f\x74\x8d\xfd\x26\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x27\xbd\x71\xd2\x1b\x8f\x3e\x93\xde\xe8\x9f\xcf\xa2\x37\x26\x7e\x04\xfd\x9f\x23\xdc\xb2\x3f\xa1\x3f\xbb\xf1\xc3\xa2\x87\x15\x94\x56\xf0\x49\x47\x0b\xbd\xae\x43\xd6\xaa\x7a\xf7\x4e\x17\xf8\x08\xae\x5e\xec\x78\x4e\x14\x15\xab\x58\x92\x2f\x67\x2f\x5f\xbc\x88\xe3\xef\xd8\xae\xba\xcd\x13\x5f\x32\x9e\x24\x71\xe3\xac\xe5\x27\x8f\xf8\x31\xee\x5c\x38\xd2\x12\xcf\x0f\xb1\xac\xd6\x17\x07\x3b\x41\xf4\xd5\x5d\xa5\x75\xc0\xac\x13\x92\x1b\x19\x20\xad\x31\x17\x1b\x66\x08\x35\x9d\xc0\x09\xdf\xb0\xb8\xfb\xb9\x94\x39\x0a\x7a\x57\x71\xcb\x47\x82\x73\x22\x85\x8b\x97\x09\xc8\xc2\xdf\x9b\x41\x5a\xd0\xb1\xc1\x82\x76\x67\x90\x31\x8a\x5d\x53\x17\x00\x74\x0d\x07\x1c\x0d\xd1\x72\xc3\x08\x26\x07\xba\x6b\xc3\x4e\x81\xf9\x5d\x21\xcf\xd8\x7c\x35\x27\x79\xe5\x9a\xb1\x06\x49\x62\x89\xb1\xe7\x78\x03\x63\xf6\x35\x44\x9c\xa5\x82\xff\x67\x97\xc5\xa8\x1d\x60\x07\xb7\x4c\x98\x8a\x16\x11\xed\x90\xd8\x96\x67\xa6\xae\xef\x03\xe9\x14\xdc\x20\xd2\xe0\x94\xb5\x9b\xf7\x65\x4a\xd4\x2d\xb6\xa7\xdc\xfb\xfa\x51\x7d\x36\xb5\xb1\x74\x63\x4b\x7f\x32\xfc\x39\x70\xe6\xfb\x0f\x71\x55\x53\xc7\x36\xca\x73\x81\x43\xa9\x5c\x98\xf3\x70\xd8\x29\xfe\x08\xc0\x81\x34\xa0\x23\x3b\x95\x0e\x07\x63\xd4\x3d\x96\xa4\x9d\xff\xcd\xbb\xd7\x2c\x47\x4a\x1f\x65\x29\x0b\xb9\xda\xb5\xf7\x0a\x93\xad\xea\xb2\x58\xb1\x6a\x1f\x25\xba\x5a\x38\xeb\xc9\xf2\xd7\xbb\x3d\x16\x98\x22\x7e\x71\xcf\xe4\xb9\x49\xa0\x38\x79\x6e\x26\xcf\xcd\xe4\xb9\x19\x7c\x26\xcf\xcd\xe4\xb9\x99\x3c\x37\x93\xe7\xe6\xe8\xf3\xcf\xed\xb9\x99\x22\x7e\x93\xde\x38\xe9\x8d\x49\xcf\xa4\x37\x86\x9e\x49\x6f\x9c\xf4\xc6\x49\x6f\x9c\xf4\xc6\x49\x6f\xdc\x7b\x7e\x3d\x7a\x63\xe2\x47\xe2\xc9\xc7\x2e\xeb\xec\xd0\xc1\x1e\x15\x69\x3a\x45\xe3\x27\x88\xcc\x3c\x21\xa9\xb1\x94\xf9\x40\x4e\x23\x04\x49\x06\xe7\x92\xc9\x99\x2b\x92\x07\xe1\x1a\x4b\xce\xc5\x2b\x35\xdd\x60\x4c\xe8\x8a\xfc\xb7\x14\x0c\xf3\xbd\xac\x98\xd0\x32\xd0\x79\x0b\x7a\x45\x58\x52\xcf\xf4\xf3\xc1\x5c\x9c\x29\x5f\x72\xca\x97\x9c\xf2\x25\xbf\xd6\x7c\xc9\x35\xd5\x58\x64\xc5\x75\x90\x6b\xd2\x27\x83\x14\xbb\x90\x88\x96\x84\xb3\xc2\xf5\x5f\x8f\x66\x4f\x06\x69\x7e\x99\xec\x4a\x7b\x08\x1c\x93\xda\x95\x6e\x31\x1a\xae\x47\xee\x80\x24\x2c\xbf\xeb\xce\x32\xe2\x26\x43\x9f\x04\x4c\x86\x42\xf3\x85\x92\xa9\x19\xb2\xb6\x24\x4b\x2e\xf2\x23\x73\x8c\x20\xeb\x56\x36\xe2\xa4\x26\xe5\x40\x76\xa7\x37\x22\x90\xdb\x8e\x41\x77\xae\xad\x5f\x52\x46\x24\xf8\x0d\xbc\xaa\x30\xde\xc9\x05\xde\x07\xa8\xa1\x41\xe4\x16\x1a\xcc\x38\xbb\xb9\xee\x6a\x94\xa2\xdb\xfb\x5e\x7a\x19\xd5\x78\x55\xc5\x2b\xca\xe3\x7c\x30\xe3\xa3\xc4\x64\x7f\x31\xf6\x49\xa1\xcf\xab\xe0\x11\x57\x4d\xf7\x91\x4b\xb7\xac\x47\x9d\x86\x70\x9d\x25\x52\xec\xdc\x0f\x4d\xa8\x3f\xcd\x83\x37\xc6\x04\x39\xca\x2d\x4f\x76\x26\x92\x38\x87\x62\xba\x95\x1a\x76\x2a\x8e\x32\xa7\xc7\x3b\x16\xc9\x13\x9c\x8b\x64\x9c\x83\x91\xec\x6f\x9b\x1d\xbd\xd3\x80\x6a\x5f\xe3\x08\x9a\xa4\x29\xe6\x76\x02\x7f\x23\x79\x9a\x75\x3b\xde\xef\x48\xf6\x97\xa7\x66\x93\xba\xdd\x4d\x3a\x93\x10\xcf\x7c\x7b\x8e\xcb\xda\x11\x39\x8a\x62\xbf\xf3\xd2\xca\x80\x51\x24\x0f\x1c\x98\xc0\xd7\x4f\xf3\x61\x3e\x71\x23\xc7\xf9\x23\xc9\xfe\x36\x3a\x2f\x1a\x96\xb3\x4a\x75\x7b\x34\xcf\x81\x47\x73\xdf\x43\x39\x8a\xea\x11\xaf\x66\xc7\xed\x37\x8a\xe8\x51\xcf\xe6\x49\xc6\xda\xe3\xdd\x1c\xe5\x8c\x25\x7d\x0e\x59\x37\xe4\x8f\x6b\x3e\xf2\xbc\x9d\xc3\xc5\x47\x9e\xe6\xe6\x23\xe3\x5d\x7d\xe4\xa9\xe7\x68\xac\xcb\x8f\x8c\x74\xfb\x91\x11\xae\x3f\x32\xd6\xfd\x47\xc6\xba\x00\xc9\xe8\x75\x01\x75\xf0\xed\x60\x4b\xf0\xe3\x4f\x5a\xf1\xbe\xa1\x21\x8f\xe0\x84\x43\x8d\xd6\x35\x16\x07\x7d\x6b\x43\x4b\x2b\xe1\xfe\xc7\xaa\x49\x70\x28\xff\x37\x55\x97\xa1\x5c\x69\x6b\x36\x39\xf7\x7f\x8b\x92\xf7\xd6\xb5\x3e\x9a\x48\xdc\x8e\x8e\xeb\xbd\x96\x69\x54\x78\x07\x83\x1d\xf9\xbe\x8e\x9e\xaa\x23\x3e\xae\xa5\x46\x7d\xae\x2e\xee\x7b\xf1\xc0\x76\x17\x57\x4f\x91\x9b\x96\xc8\xad\xb8\x40\xc5\xf3\x20\xa2\xe3\xb5\xda\x54\x23\x42\x14\x3b\x72\x01\x94\x2e\x8e\xa0\x83\x47\x1a\x01\x4f\x70\xa3\x27\xbd\x54\xf7\x52\x1f\x0b\xbf\x68\x08\xd4\xde\x49\xef\xfe\x69\xfe\x94\x12\x3f\xf0\xda\xef\xfd\xa1\xee\x4a\x9e\x79\x8f\x12\x5d\xd9\x9d\x32\xcf\xc3\x65\xb7\x5a\x53\xed\x60\xc2\x01\x34\xb2\x61\x54\x68\x72\xe1\xfd\xd8\x97\xad\xde\xf2\x61\x1f\x98\x7f\x92\xef\x91\x51\x32\x23\x5d\x36\x1a\x07\x2d\xff\x5b\x8a\x69\xb2\xe7\xc9\x72\xfe\xfd\xa6\x28\x67\xed\xfc\x8f\x75\xb9\xd8\xe7\x99\xf7\xdb\x3c\xb7\xeb\x2f\xa4\x69\x91\x21\xcf\xa8\x30\x7c\x56\xff\x22\x81\x6c\xed\xcd\x01\x97\x63\x3b\x0d\xab\xcb\x41\xa9\x6e\x91\x76\x81\xf2\x86\x87\xaf\x5c\x9b\x86\x51\x2b\xc0\x35\xf1\x7d\xad\xa9\xae\xfb\xc5\x4a\xe1\xdd\xf0\x28\xee\x86\x7b\xf6\x1c\x3e\xce\xad\x88\xc6\x22\xac\x06\xa0\x53\x9a\x7d\x4f\xa8\x90\xe6\x1f\xb0\x1d\xe5\x12\xea\x78\xc3\xd0\xa4\x70\xc7\xd9\xfe\x8b\xf7\x98\xc3\xca\x26\xad\x00\xec\x11\xaf\xe7\x3e\x27\x6f\xe0\x18\xb6\x07\xcb\xa1\x9b\x5b\x02\x4d\xdf\x56\x3e\xf1\x10\x25\x9c\xbc\x34\x7d\x6b\xd6\x9e\xce\x39\x02\x99\xa3\x53\x17\x1f\xcf\x94\xba\xb8\xe7\xe2\xfd\xa7\xca\x5c\x4c\x74\xde\x4f\xe9\x8b\x43\xcf\x94\xbe\x98\x98\xbe\x18\x35\x7f\xbc\x19\xa2\xf3\x18\x83\x34\x9b\x3c\xc7\xc1\x3c\x46\xf2\x93\xeb\xee\x1e\xe1\xfc\xb2\x5b\xbd\xa9\x0a\xc3\xcb\x06\xa4\xa4\x71\xa8\x05\x3a\x37\x96\x2e\x44\xde\x91\x3c\x31\x11\x4a\x88\xfb\xee\x1d\x53\xf8\x1e\x80\x98\x34\xdc\x60\x57\x18\x26\xa6\x03\x9d\xab\x6a\x8a\x90\xbf\xe8\xbd\x22\x18\xab\x1f\x6c\x0d\x89\xcf\x98\x10\xe2\x6b\xd0\x15\x74\x13\xe3\x81\xdb\xf3\x99\x55\x46\x0a\xcb\x66\x56\x59\xf0\xb2\x3b\x42\x0c\x1e\xea\xd4\xe8\xfb\xdc\x32\x1f\xc8\x5d\xf1\x2d\x13\x8d\xb2\xf3\x4c\x3f\x8f\x51\xc4\x9c\x9f\x79\x40\x49\xec\xaa\x7e\x51\x91\xc8\x21\xe5\x10\x6e\xad\x51\x8a\x58\x82\x02\xe6\x94\x9c\x08\xa2\x7b\x8a\xd7\x9f\x5b\xb7\xff\x5f\x5a\xc1\xef\x5a\xa1\x8a\x8c\xc4\xb6\x54\x2e\x58\xd8\x5a\xe9\x6a\x58\xa1\x51\xa4\x4e\x1c\xb3\x1d\x11\xac\x3c\x5f\xa0\x72\x64\x90\xf2\x8b\xa5\xb0\xf6\x07\x26\x89\x4c\xc1\x87\x86\x82\x92\x63\x73\x1b\x46\xf8\x22\x9e\x9a\xd4\x70\xa2\x40\xe4\x94\xd5\xd0\xf3\xc5\x27\xc5\x89\x8f\x05\x1c\x61\x0d\x46\x05\x5f\x7f\xf1\xc9\x0d\x47\x02\x8c\x3e\x58\x98\xbc\x20\x47\x83\x8b\x07\x81\xc2\xd1\xc1\x54\x7d\x3c\xcb\x21\xd8\xb0\xef\xd8\xf3\x94\xa0\xe2\x97\x4c\x6e\x38\x0c\x24\x36\x41\xc1\x91\xc1\xcd\x83\xc0\xdc\x7e\x40\x70\xd4\xc1\x08\xa4\x39\x24\xd3\x3c\x32\xc6\xcf\x95\xe6\x30\x2a\x08\x38\x61\xfc\x27\x8c\xff\xe8\xdc\xd0\xd4\xc0\xde\x53\x83\x7a\xa3\x76\xf9\x8c\xc1\xbc\xb3\x05\xf2\xce\x1c\xc4\x8b\x0b\xe0\x91\x24\x71\x12\x11\xbc\x83\x70\x5c\x0a\xc9\x53\x06\xee\x92\xcf\x45\xe2\x0b\xa9\xc1\xba\xb3\x05\xea\xce\x13\xa4\x3b\x47\x80\x2e\x49\xd6\x27\x9f\xfd\x34\x99\x96\x1c\x90\x8b\x0f\xc6\xb5\xfc\x2c\x91\x73\x0d\x06\xe2\xba\xe1\xb5\x14\x91\x7d\x34\x08\x77\x10\x5a\x4b\x0e\x50\x1f\xfa\x7d\x8e\x7b\x75\x62\x17\x60\xc0\xf7\xb3\xe7\xd9\x49\x0f\xb8\x1e\xf3\xfe\x74\x7d\x3b\x91\x34\x8f\x04\xdd\x22\x42\x69\xb1\xfe\x15\x08\xb8\xa5\x85\xd1\x92\xce\x48\x4a\x3c\x25\x65\xf8\x27\x0f\x91\x44\xa7\xdd\x09\xc3\x9f\x9a\x7a\xd7\x3e\x65\x07\xf9\x77\x83\xb3\xc1\x08\x00\xdd\x4a\x9e\x93\xb2\x32\x06\x0f\x5a\x44\x0e\xde\x20\x55\x97\x9f\x37\xe5\xe0\x1d\xe6\xe0\x75\xb6\xaa\x95\x99\x15\xa4\xd9\x13\x16\xea\x4f\xc4\x0b\x8f\xb2\x9d\xa8\x17\x93\x88\x17\xa4\x78\x90\xa8\x17\x99\x88\x17\x9e\x7c\x37\x51\x2f\x9c\x88\x17\xa4\x78\x90\xa8\x17\x4a\xc4\x8b\x96\x4c\xfb\xac\xd9\xbf\xe7\x61\x9a\xc1\x6c\xbd\xa3\xd9\x78\x71\x93\x1f\xca\xd6\x3b\xcc\xc6\x8b\xdb\xfb\xfe\x6c\xbd\x40\x36\x5e\x04\xb3\x7e\x35\xbd\x0e\xa7\x6c\x3c\xff\xeb\x29\x1b\x8f\x4c\xd9\x78\xee\x99\xb2\xf1\x62\x9f\x29\x1b\x6f\xca\xc6\x9b\xb2\xf1\xe0\x99\xb2\xf1\xa6\x6c\xbc\x9e\x67\xca\xc6\x9b\xb2\xf1\xa6\x6c\xbc\xd8\x67\xca\xc6\x3b\xf2\x4c\xd9\x78\x53\x36\xde\x94\x8d\x37\x65\xe3\x4d\xd9\x78\xcd\x33\x65\xe3\x4d\xd9\x78\x53\x36\x5e\xfd\x4c\xd9\x78\xfb\xcf\x94\x8d\x07\xcf\x94\x8d\xb7\x97\x8d\xd7\x09\x62\xfd\x72\x53\xf2\xda\xd3\x88\x65\x97\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xea\x67\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\x2f\xf0\x4c\x79\x79\x53\x5e\xde\x94\x97\x37\xfc\x4c\x79\x79\x53\x5e\xde\x94\x97\xd7\x7a\xa6\xbc\xbc\x29\x2f\x6f\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\x29\x2f\xef\xb3\xe7\xe5\x05\x7f\x42\xd5\xaa\x57\xd2\x74\x4e\xf2\xe5\x8d\x5a\x55\x78\xc9\x38\xf7\x2b\x13\x46\xed\xc0\xf5\x8f\x17\x51\x2e\xb3\x07\xa6\x08\xdf\xd0\x15\xbb\x1c\xb0\x3e\x5f\x7d\xff\xda\x6e\x62\xa5\xed\x59\x70\xe9\x3b\x6e\x53\x4b\x25\xb7\x3c\x67\xb9\xb5\x34\x15\xa7\x8b\xc2\x5e\x6f\x4b\xa6\x98\xb0\x37\xc0\x6f\x9f\xfd\x78\xf3\xe1\xe7\x77\x37\xdf\xbf\xe9\x97\x17\xf6\x02\x64\x9f\x4a\x2a\x72\x96\x93\x4a\xfb\x53\xed\x6e\x5a\xa6\x2e\x2f\x35\x61\x62\xcb\x95\x14\x76\x32\x60\x3b\x51\xb2\x75\x5f\xeb\x25\x9b\x51\xe1\xc2\x32\x8a\x69\x59\x6c\x59\x8e\x2a\x41\x3d\x3a\x2f\x29\xb8\x28\x2b\xe3\xe1\x9e\x8f\x7c\xc0\x43\xbf\x60\xa4\x12\xd9\x9a\x8a\x95\x9d\xaf\x5d\xc0\xd6\xfc\x88\xde\x09\x43\x3f\xd9\xef\x82\x21\xa3\x33\x5a\xfa\x48\x68\xbf\xcb\x28\x97\x95\x5d\xb2\xdf\xfe\xf6\x8a\x70\xf6\x0d\xf9\x6d\x8b\xe0\x9c\xbc\x71\x34\x5a\x0b\x8a\xe1\x26\xb6\x1d\x08\x37\x2e\x9a\xe5\xbc\x22\x8a\xad\xa8\xca\x0b\xa6\x21\xc0\xf1\xb8\x66\x90\x14\x89\x6a\x8d\xdb\x2e\xe6\x6d\xba\x5e\x8a\x42\x9a\x39\x79\x55\xaf\x27\xc6\x79\xf2\x39\xf9\x5e\x42\x90\x63\x29\xbf\x21\x6b\x63\x4a\xfd\xcd\xf5\xf5\x43\xb5\x60\x4a\x30\xc3\xf4\x9c\xcb\xeb\x5c\x66\xfa\xda\x50\xfd\xa0\xaf\xb9\xb0\x0c\x3d\xcb\xa9\xa1\x33\xb8\xc4\x33\xf0\x5b\x5c\xa3\x5c\x9d\x65\x72\xb3\xa1\x22\x9f\x51\xc7\xb2\xb3\x7a\xfb\xaf\x7f\xe3\xe4\xcf\x8c\xd6\xbf\xe2\x62\x46\x67\x7a\xcd\x8a\xe2\xb2\x67\xd0\x81\xfb\x38\x42\xba\x84\x0e\x34\x13\xdb\xa8\x53\xf8\xd6\x75\x73\x6f\xb1\x70\xbd\xf6\x70\x30\x35\x33\x9e\x15\xeb\x49\xf7\xcb\xc8\xc3\x6d\x18\xb7\x02\x9d\x31\xbe\x11\xdb\x1f\x69\xd7\x1f\x25\x8e\x0e\x98\xb8\x1f\x0c\x88\x38\x6e\xef\xbb\x57\xe1\x89\xc4\x39\x23\xed\xb5\x3c\x2c\xd5\x3b\x13\x79\x47\x37\x4d\x02\xe9\x91\xf1\xcf\xc9\xf7\xe8\x68\x08\x48\x73\x4a\x5e\xfd\x7c\xfb\xfa\xcd\xbb\x8f\xb7\xdf\xde\xbe\xf9\x30\x7c\x63\x45\xde\x54\x70\xef\x27\x4c\xe5\x32\x20\x4f\x3b\x72\x33\x30\x9d\x46\xaa\x96\x8a\x6d\xb9\xac\x1a\x7d\xe6\x38\x5b\x72\x11\xba\xee\xda\xdc\xea\xfc\xdb\x3b\xa2\x99\xda\xf2\xec\xf8\xd2\x07\x3d\xd5\x1d\xb1\x1e\x2d\xbe\x43\x51\xd1\x7d\xe1\x1e\x25\xc4\x03\x44\x8f\x8a\xf8\x28\x51\x1e\x20\x7c\x54\xd0\x47\x08\xf4\x88\xcd\x3a\x14\xf7\x28\xd6\x5f\xb3\x25\xad\x0a\x54\x11\x2e\x2e\xe6\x7d\xf2\xd4\x11\x4a\x60\xf5\x6f\x95\x0c\x24\x65\x76\xd8\xfd\x1e\x13\x9e\x97\x52\xf5\x1e\xde\x4b\x17\x83\x09\x31\x52\x4b\x44\x3a\x85\x05\x75\x6e\xa7\xb1\x44\x78\x43\xe3\x03\x25\x99\x14\x4b\xbe\xfa\x9e\x96\x7f\x63\xbb\x0f\x6c\x99\x18\x7f\x47\xa3\xc5\x79\xff\x41\x7d\xb7\x92\x13\x09\x86\xd5\xe4\xb4\x70\x4e\x74\x10\xe7\x20\xdd\x18\x61\x7f\xce\x2e\x38\x83\xf6\x1e\x23\xe5\x8f\x0e\xee\xb2\x2d\xee\xdd\xd9\x31\x6d\xb5\x24\xd2\x3e\x19\x50\x5e\x32\x29\x32\x56\x1a\x7d\x2d\xb7\x56\xb6\xb1\xc7\xeb\x47\xa9\x1e\xac\x36\x62\x4f\xfd\x0c\xd5\x74\x7d\x0d\xd6\xe3\xf5\x6f\xe0\xff\x45\x7e\xf4\xe3\xfb\xd7\xef\xbf\x21\x37\x79\xee\x0a\x55\x54\x9a\x2d\xab\xc2\xe5\x60\xcf\x09\x2d\xf9\x8f\x4c\x69\x2e\xc5\x15\x79\xe0\x22\x8f\xf5\x89\x55\x3c\xff\x7f\x86\x0f\xb1\x7f\x12\xf7\x48\x96\xe8\xee\x1c\xb1\x4f\xf7\x60\x8b\xef\x3a\xea\x67\xcd\xe7\x71\x78\x0d\x02\x1a\x8d\x06\x5e\xf4\xb1\x02\x77\x85\x25\x4c\x76\x21\x65\xc1\x68\xe8\x6e\x4b\xb3\x27\x63\xec\xf6\x04\x3b\x12\xf6\x3f\x5d\x92\x5c\x36\xa2\x04\xfd\xa0\xee\x54\x94\x32\xff\x86\xe8\xaa\x2c\xa5\x8a\x0a\xe1\x6f\x98\xa1\x56\x47\x9f\x5b\x56\xbe\xea\xfe\x27\xb8\x47\x5a\xff\x06\xce\x8b\x28\x67\x6d\xfd\x0a\x48\x66\x0c\x58\x5e\x81\x8b\x66\x2e\x64\xce\xde\xc1\xb7\xe0\x3f\x9d\x06\x71\x93\x65\xb2\x12\x06\xfe\x10\x41\x5f\x1b\x6a\x2a\x3d\x5f\x4b\x6d\x6e\xef\xae\xfc\x7f\x96\x32\xbf\xbd\x0b\xdc\x68\x24\x59\x8e\x36\x07\x73\xc4\x49\x70\x6f\xb6\x0b\x80\x6c\x28\xfc\xcf\x6f\xed\xae\xdd\x51\x13\xeb\xb0\xe1\x9a\x3c\x2a\x6e\x0c\x13\xa0\x08\x01\x66\x4c\x2e\xaf\xec\xa1\x68\xee\xf3\xed\xcb\x8b\xb3\xc8\xeb\xa5\x1f\xec\x88\x25\xb0\xaf\xf9\xf9\x23\xab\xd6\x77\x4b\x9c\x4a\xe7\x9f\x06\x12\x79\x73\x77\x4b\xb6\xb8\xb2\x5f\xd8\xb9\xb4\x8c\xde\xc5\x04\x91\xe0\xf1\x4c\xdf\x3e\x59\x34\xd4\x75\x65\xdc\xfa\xd7\x1a\x7c\xcc\x3e\x42\x2a\x52\x8d\xad\x22\x05\xdf\x70\x97\x38\xec\xaa\xd4\x68\xf2\x0c\xff\x71\x9e\x95\x55\xcc\xb1\x75\xbf\xde\xb0\x8d\x54\xbb\x2b\xff\x9f\xac\x5c\xb3\x0d\x53\xb4\x98\x69\x23\x15\x5d\xb1\xab\xfa\x03\xb1\x84\xeb\xdf\x23\xe9\xce\x20\x0f\xe9\xc7\xb8\xb2\xad\xb1\x95\x55\xca\x2a\x18\xc5\xce\x0b\x54\x96\x9f\x5c\xba\xd4\x3b\xf2\x6e\xa4\x4a\x54\x5b\xde\xa8\x54\xd5\xdc\x0b\x9a\xf5\x56\x16\xd5\x26\x1e\x17\xe7\xaf\x7c\x2c\x76\x24\xb6\x56\x13\xd7\x67\x51\x2e\x72\xbe\xe5\x7a\x14\x10\xf0\xbe\x8e\x31\x41\xbc\xaf\x32\xd6\xde\x43\x24\x7f\x3c\xc0\xd2\x3e\xec\x53\x29\x35\x38\xdb\x3c\x7a\xb0\x2b\x4b\x5f\xc6\x05\x82\x12\x27\xee\xbf\x36\x66\xab\x7d\xfd\x9a\x6f\x9a\x73\x5d\x8b\xd2\x33\xec\x52\x8a\x1c\xf4\x03\x3a\xa5\x18\xd4\x2c\x53\xcc\x9c\xca\xce\x42\x6a\xde\xf1\x06\x31\xbf\x94\xc8\xe8\x57\x65\x9c\xd5\x81\x1b\x98\x52\x73\x9d\x2e\x95\xdc\xcc\x09\xb8\xbc\x22\x0f\xc1\x82\x81\x0f\xa6\xe0\xb9\xa7\xf6\xc0\x22\x91\x43\x93\xc9\x17\x7c\xfe\xc9\x4d\xbe\x7b\xe4\x28\xa9\xac\x25\x17\x39\xb7\x5f\xb9\xbd\x17\xf5\xc3\xf0\xe8\x66\x70\x9c\x02\xd1\x8e\x88\xa8\x63\x7f\xb4\x03\x42\x84\x77\x55\x51\xe0\x26\xc6\x05\x20\x6f\xf7\x5e\x72\x18\xca\x5a\xad\x70\x88\xf5\x96\xdb\xb3\x7f\x0a\xd2\x09\x24\xdd\x2d\x0c\xea\xe5\xb1\xfd\x41\xa5\xd1\x7f\x58\x56\x85\x2b\x7d\xb8\x1b\xc2\xc3\x43\xec\xcf\x8e\xd0\x05\x36\x7d\x62\xd5\x9d\xcc\x2d\xf7\x42\x9c\xb1\xb6\x31\xc0\xf9\xac\xbd\x8c\xed\x1f\xa7\x77\x31\x97\x54\x5b\x9a\x46\x12\x2e\xac\x72\x93\x57\xb4\x80\x81\x41\xb8\xb5\x44\xec\x13\x1a\xc2\xde\xe7\xd9\x9f\xe4\x87\x73\x3b\x45\xa0\xe7\xad\xcc\x68\xf1\x1e\x18\xe1\x43\xed\x48\xaf\x31\x4d\x4c\x40\x35\x47\x2b\x47\xad\xfe\xc4\xe5\xd0\xc9\x31\x92\x14\xcc\x90\x9d\xac\x08\xc2\x24\xba\xee\xf9\xdc\xf1\x1b\xe1\x42\xf3\x9c\xd5\x5b\x16\x88\xf5\xc0\x66\x7e\xe6\xa0\x51\xf0\x4e\xf9\xbc\xb7\x45\xea\x2d\x11\x21\xff\xa3\xe4\xfe\x29\xa4\x84\xe0\xa6\x36\x40\x22\x41\x0a\x3e\x3e\x6a\xdf\xe5\xb4\xe0\xff\x0d\x8c\xd7\x18\x42\x9a\x2c\x58\x21\xc5\x0a\x22\x58\xfd\xa9\x83\x4e\x8b\x9b\x93\x5b\xc1\x4d\xfb\x6d\x0c\x93\xb1\xac\x02\x20\x8f\x20\x52\xe5\x4c\x91\x52\x71\x09\xb5\x75\x9b\x5f\xf6\x92\x5e\x30\xfb\x6d\x6d\x28\x58\x7c\x10\xa7\x12\x3b\x18\x6f\x2b\x04\xb6\xa4\xbc\x70\xf9\x84\x50\xbd\x58\xdb\xbf\x59\xce\x1f\xaa\x91\x69\x24\x59\xd3\x2d\x83\x97\x19\xd6\x42\xe5\x9a\xac\xa9\xc8\xe1\x3f\xb3\x4c\xaa\x1c\xe7\x0d\xce\x4f\xc5\x60\x10\x77\xb2\xe0\xd9\x80\x56\x66\xd5\x42\xcb\x68\x20\x58\xa8\xd8\x1f\x29\x44\x7e\xd4\x86\x16\xad\x7f\xdb\x04\xa2\xa2\x95\xe0\xff\xa8\x18\xa1\x1b\x69\xe5\x6a\xd1\x7a\x55\x1f\xae\xb8\x4f\xf6\xb4\x53\xeb\xa5\xf8\x96\x2f\x59\xb6\xcb\x0a\x46\x68\xe6\xfc\x81\x1f\x18\xcd\xb9\x60\x5a\xdb\x63\xbe\xb0\x06\x98\x54\xe4\x2d\xdf\xb2\xd6\xbf\x0d\x97\x4d\xf4\x66\xc7\x87\x36\xc0\x12\x50\x51\xfb\x8b\x00\x05\x5b\xe9\x03\x78\xcf\x8c\x84\xa5\xae\x06\xc2\xda\x0e\x48\xde\xca\x12\x5e\xec\xa0\x22\xaa\x8f\xab\xfa\x62\xb0\xce\xcb\x70\x0d\xbe\x0c\xbb\x01\xbd\x24\x21\x6b\xb4\x31\xdc\x76\x25\xab\x21\xa7\xa2\x15\xb0\xdd\xd0\x4f\x76\x06\x20\x9d\xa8\x09\x14\x71\x70\xc1\x33\x57\xb0\x18\xf3\x8f\xbb\x3b\xad\xe7\xe4\xad\x73\xdc\x28\xe6\xd0\x94\xf9\xd0\xb9\xe2\x7b\x9b\x0b\xe1\x7d\xcd\x37\xbc\xa0\x96\xe9\xf5\x9a\x4b\x71\xc8\x02\x18\xbd\xed\x25\xda\x78\x52\x16\xbe\xd4\x2c\xa4\xc3\x6c\xe4\xd6\x9e\xb0\x41\xa8\x49\x2f\xd1\x18\x21\x6d\x65\x73\x21\x69\xae\xaf\x4b\x99\xeb\x6b\x3b\xb9\x06\x69\xa2\xaf\x47\xa2\x49\xf6\x72\xd1\x1c\x82\xba\x85\x72\x69\x31\x1e\xec\xa2\xbd\x34\x1f\xe9\x20\x8c\xc2\x48\xa2\x2a\x01\xb1\x65\x58\x72\x2b\xdb\x9e\x78\x2d\x0e\x01\xc7\x8e\x4c\x24\x16\x3e\x16\xb8\xce\x3c\xb8\x2c\x0d\x44\x16\x74\x89\x06\x21\x11\x3d\x50\xb2\x00\xe1\x7e\xa0\x59\x18\x91\x10\x5a\x88\x1e\xb8\xd9\x30\x22\x21\xe4\x14\x19\x00\x9d\x0d\x22\x12\x02\x74\x07\xa1\x67\x7d\x88\x84\x00\xcd\x20\x00\xad\x0f\x68\x16\xa0\xfb\x15\xc3\xd0\xf0\x89\x02\x87\x47\xdb\xe6\x71\x48\x53\x37\xc6\x94\xf3\xfe\xa6\x3e\xde\x48\x7d\x4e\xde\x49\xd3\xe8\x4e\x5e\x14\x85\x38\xd2\xae\xc7\x51\x78\x29\x79\xf3\xee\xe3\x87\xbf\xdf\xbd\xbf\x7d\xf7\x71\x5f\x10\x84\x8e\x4e\x22\xd6\x34\xa2\x30\xea\x19\x10\xa7\xf8\x8c\xc2\x9d\x06\x68\x46\x03\x97\xf6\x04\x41\x90\x6c\x34\x70\x29\xc6\x46\x6f\x8d\x35\x16\xb8\xd4\x11\x04\xc1\x1d\x0b\x88\x89\x49\x10\x1c\x5d\xb6\x7e\x9c\x2a\x3e\x63\xd1\xaa\xa1\x73\x50\x43\x40\x53\x25\x7a\xd4\x2a\x8d\xc3\xaf\x46\xb8\xed\x81\x40\x34\x8a\xd5\xbf\x15\xef\xec\x8f\x75\x7c\x8f\xc0\xb5\x46\x79\x46\xc1\xc5\x1f\x8f\x6e\xc5\x27\xc9\x71\x1c\x81\x74\x3d\x32\xc5\x18\xbc\x6b\xd4\x04\x8f\x48\xf6\x21\xd4\x6b\x14\xcd\x36\x32\x36\x1e\xfb\x9a\x46\x3a\x52\xdf\x8c\x22\x1a\x4e\x72\xe8\x5e\x27\x51\x44\x53\x12\x1e\xdc\xa5\x12\x45\x37\x29\xf9\x21\x8a\xe2\x39\xae\x1f\x7c\x9e\x82\x9e\xc5\x27\xfd\x28\x85\x91\xb4\xf8\xa4\xe3\x69\x23\x19\xb4\xa8\xd8\xfc\x04\xa8\x5a\x7c\x52\x8b\x90\x24\x23\x6c\xf1\x39\x21\xce\x76\xdc\xb8\x49\x7a\xe1\x94\x53\x20\x6f\xf1\x19\x95\x5d\x1e\x1f\x92\x3d\x32\xdc\x01\x27\x7a\x02\x49\xf2\x25\x1c\xee\xdd\x27\xde\xfd\x9e\x44\x36\xd6\x55\xdf\x7d\x46\xed\x63\x5a\xd8\x16\x9f\x78\xbc\x6e\xd2\xac\x31\xd6\x3b\x3a\x8a\x8b\x4f\x5a\x2c\x17\x9f\xd4\x9a\x16\x29\xf5\x2c\x92\xd3\xef\xe3\x31\xbd\xf8\x9c\x05\xd9\x8b\xcf\x79\xf0\xbd\x7b\xb4\xcf\x84\xf2\xc5\xe7\x69\x58\x5f\x7c\xc6\xc8\xf2\x54\xdc\x2f\x3e\x67\x42\xff\xe2\x73\x5a\x0c\x30\x3e\xa3\x24\x4e\x22\x1e\x18\x9f\x58\x54\x70\xe2\xf5\xb1\x57\x62\x3b\x19\x1b\x8c\xcf\x88\x65\x48\x17\x39\xf1\x68\xe1\xf6\xa0\x12\x04\x4f\x3a\x72\x18\x9f\xb3\xe0\x87\xf1\x39\x3d\x8a\x18\x9f\xb3\x61\x89\xf1\x39\x3d\xa2\x18\x9f\xf1\xb8\x62\x7c\xc6\x48\xb2\x11\x18\x63\x7c\xe2\x91\xc6\x49\x67\xd6\xa3\x92\x9f\x82\x37\xc6\x67\x5c\x51\xa5\x14\xec\xb1\x7b\x25\x12\x81\x9c\xa6\x2b\xd5\x7d\x6f\x07\x70\xc8\x49\x14\x63\x31\xcb\xf8\x8c\x5a\xbc\x34\xfc\x32\x3e\xa7\x46\x31\x8f\x1e\x7e\xba\xc4\x8e\xc6\x35\xb7\xc7\x94\x20\xb0\xd3\x30\xce\xf8\x24\x21\x9d\xa3\x17\x74\xaf\x0a\xd2\x57\x6e\x24\xf7\x20\xa0\x93\x4e\x4b\x0b\x2d\xfd\x14\x1c\x34\x3e\x93\x01\x3e\x19\xe0\xa7\x35\xc0\x11\x43\x3b\x59\xdf\x89\x32\x35\x29\xcf\x2e\x6e\xd4\x01\xb4\x75\xe2\x77\xa3\xa3\x78\x89\x05\x15\x7c\x24\xcf\x6b\xda\x46\x92\x52\x96\x55\x41\x4d\x4f\x7d\x8e\x50\x0c\x7e\xbf\x44\x8d\x17\xbe\x4d\x54\xa5\x06\x2b\xb9\x7b\x7c\x13\x8e\x49\x1d\x46\xa3\xc8\x4d\x51\x10\x2e\x50\xf8\x02\x79\x1f\xae\x50\x0c\x95\xe3\x00\x49\x8a\xd1\xbf\xad\x9d\xdc\xa3\x6b\x10\xd1\x8a\xd7\x70\x8d\x50\x4e\xa8\x68\x06\x0d\x24\x68\x04\xf7\x39\xbf\x3f\x17\x4d\x13\x89\x5a\x3d\xab\x8b\x44\xee\x77\xc0\x09\xb1\x08\x14\x80\xd3\xc6\x2f\x17\xcc\xd3\xd0\x07\x88\x57\x65\x2c\x67\x22\x63\x50\xc0\xb9\x62\x3a\xf2\xe0\x2e\xac\x65\x42\xde\x88\x6d\x1d\x86\xa9\x30\xb4\x8d\xd7\xe4\xd1\x2f\x04\x48\x7e\x8e\xe0\xad\x65\x6d\x17\xb0\x68\xc5\x70\xe1\x46\xf7\xf6\x66\xf0\xa8\xd7\x95\xaf\x6b\x4f\x65\x88\xa3\x53\x94\x95\x3a\x0a\x11\xa9\x98\x1d\x68\x29\x4d\xbd\x83\x6e\x7e\xd6\x19\x22\x26\x29\x6a\xc4\x59\x92\xab\xbe\x50\x7a\xd5\x59\x54\x87\x74\xb5\x21\x59\x65\x48\x55\x17\x12\x6a\x6b\x44\x48\xe0\xe6\x49\x56\x0f\x52\x55\x83\xa4\xab\xbb\x54\x6c\xc9\x3f\x25\x9f\xb5\x9b\x56\x7e\x11\xcf\x99\x30\xd6\x34\x07\xa4\x7f\xa9\x58\xc9\xc4\x20\xd8\xb9\xfd\x00\x3e\x1b\x3a\x17\x88\xee\xa2\xce\x5b\x26\xc2\x59\x71\x14\x68\x79\x8c\x15\x38\xf7\xc7\xb2\x41\x27\x69\x33\x49\x9b\x53\x4b\x1b\xc7\x68\xbf\x58\x51\x73\x62\x4d\x1d\xd0\xae\x29\xb0\xdb\xd7\x2d\x94\x2c\x9c\xa6\xe4\xd4\xb3\x56\x06\x03\x26\x34\x06\x66\xfc\xb1\xe9\x1f\xc7\x75\x23\x2e\x8d\xc4\x12\xbd\x98\xcc\xa2\x48\xc1\xb6\xac\x70\x9a\x4f\x80\xe2\x86\x0a\xba\xc2\x7a\xee\x46\x7a\x7f\xa5\xb5\x3f\xed\xb1\x53\x3c\xef\x28\xe0\x98\x73\x19\x2c\x31\xe8\x73\x35\xe0\x55\x25\x8b\x82\x29\x4d\x0a\xfe\xc0\xc8\x6b\x56\x16\x72\xe7\xca\xa7\x8b\x9c\xdc\x1b\x6a\xec\xd1\xbb\x67\x46\x9f\xa6\x82\x5d\x9d\xee\x8a\xb9\x56\x29\xdb\x09\x49\xaf\x90\xea\x49\x4a\x4c\xd4\x22\xef\x05\xc8\xb9\x9b\xe2\x91\xee\xf4\x15\x79\xc7\xb6\x4c\x85\x64\xc2\xed\xf2\x9d\x34\x77\xa8\x0a\x77\x71\x46\x48\x86\xf0\x25\xf9\x06\x1a\x08\x19\x62\xe8\x0a\xcc\x9a\x3a\x59\x35\x40\x5b\xaa\x0e\x79\x14\x5f\x8f\x5c\xb3\xb1\xa9\x37\xf8\x8c\x62\xd5\xdf\xc0\x77\xac\x40\xc6\xff\x3e\xc9\xf6\x15\x3e\xb9\x2c\x61\xe3\x6e\x30\x0d\xcd\x37\x9b\x63\x6d\x9e\x76\xcd\x0c\xb1\x22\x7a\x48\x9c\x58\xf3\x8a\x0b\x82\x3d\x04\xb1\x39\x63\xc3\xfc\xf5\xc8\xd0\x40\xd5\x7e\xc5\xc3\x66\x72\x94\xf5\x15\x7f\x79\x97\x52\x9b\x7b\x6b\x07\xa7\x56\x13\xba\xf3\x2f\x42\x8e\x23\x2d\x0a\x96\x13\xbe\xd9\xb0\xdc\xda\xbd\xc5\x8e\xd0\xa5\x89\xe8\x85\x6a\xed\xb5\x8e\x4d\x9e\x29\x46\x7d\x7a\x25\x24\xd4\x41\x12\x64\x3b\xaf\x32\x82\x66\x87\xa2\x61\x6a\xc3\x05\x18\xe3\x18\xad\x73\x19\x9c\x4d\x5e\x65\xcc\x3d\xd2\xc9\xbc\x6c\x4e\x34\xdc\x7e\x2d\x0e\xd9\x0f\x88\x46\x90\x5e\x14\x32\x7b\xd0\xa4\x12\x86\x17\x38\x65\x29\x1f\x48\x26\x37\x65\x01\x67\xe7\x09\xb7\x40\xfd\x3f\x67\x35\xbf\xcd\x2c\x75\x7d\xfd\x9b\xe6\x4f\xf0\x0f\xa7\xae\x5f\xc4\x3e\xb1\x6c\x44\xb9\x08\x2b\x21\xed\x26\x41\x74\x58\x8a\x5a\x2d\x5c\x4a\x7b\x21\xc5\xfb\x5e\x9b\x9e\x05\xb5\x30\x9c\x93\x37\x9f\x58\xd6\xea\x45\x01\x9d\x58\xb3\x40\x76\x7b\xfb\x31\x12\x0e\xf5\xb9\x9a\x02\x46\x65\xea\xb4\x9f\xce\xca\xbd\xc2\xb7\x7d\x7f\x35\x47\x8c\x14\x5c\xb0\xb4\x70\xa1\xcb\xf3\x69\xe7\xeb\xd7\xbc\x82\x3e\x2e\xa7\x39\xa7\x38\xb5\xb9\x82\xa6\x0c\xbb\x1a\x87\xea\xc7\x07\x7d\x05\xa4\x34\xe4\xd9\xe5\xf5\x65\x4a\x5b\xf6\x7d\x37\xe4\xa5\xd5\x64\x0a\x86\x12\x1a\x7d\x92\xee\x1b\x29\x44\x35\xd1\x7c\x53\x16\x3b\x58\x85\xcb\xfc\x8a\x70\xe3\x81\xad\xaa\x12\x7e\x4d\x52\x3a\xff\x41\x36\xc8\x15\xd1\x92\x18\x45\x7d\xab\x20\xfc\x57\x4b\xce\xa8\x0a\xef\x9b\x04\x92\xcf\x2e\xff\xbf\xcb\x2b\xc2\x4c\xf6\x9c\x3c\x4a\x71\x69\x60\x43\xe6\xe4\x23\x56\xbe\xa0\xfe\x93\x3b\x59\x25\x10\x15\x0c\xcb\x54\xb0\x4f\x65\xc1\x33\x6e\x8a\x1d\x08\x75\x22\x2b\x83\x69\x9f\xd4\xb8\x94\xae\x04\xa2\x6f\x3e\x71\xe3\x90\x59\xf6\x24\xbf\x00\xee\x44\x01\x4f\xa8\x55\xe2\xb6\xec\x7a\xcd\x68\x61\xd6\x29\x3d\x74\x2c\xdf\x08\x29\x66\xff\xcd\x94\x84\x04\x32\xe1\x68\x9c\xb1\xcd\xe4\xa8\xf8\x4f\x6a\x0b\xaa\xc4\x90\x86\xbd\x0c\xbe\x63\x63\x1a\xb5\xff\xfb\xc7\x8f\x77\xdf\x31\xb3\x27\x0c\x2d\x3d\x0f\x66\x89\x17\x89\x25\x53\x4b\xa9\x36\xe7\x92\x8a\x6b\xa9\x23\x67\x48\x0e\x66\x29\xb5\xc1\x02\x08\xa8\x7a\x09\x96\x59\x5e\x6e\x70\x14\x29\xfb\x2f\xeb\x92\x0e\xb7\x77\x73\xf2\x77\x59\x41\x21\x02\xba\x28\x76\x90\xc1\xed\x52\xa2\x12\x28\x5e\xd8\xe1\x5d\x58\x39\x66\xd7\xfd\xdf\x19\xcd\x31\xad\x5e\x1b\x46\x93\x7b\x40\x25\x31\x66\xeb\x7b\x63\x2f\x9b\x4a\x1b\xb9\x21\x6b\x37\xe8\x94\x74\xb0\xf6\xe3\x78\x6d\x0e\xfc\x88\x36\x27\x34\xed\x43\x01\xe1\xa8\x7f\xae\xde\xb1\x76\x0c\xb8\x2a\xee\xdf\x17\xd0\x10\x3b\x83\xa9\x26\x85\x5b\x71\xe0\xae\x19\x3b\x26\x49\x08\x9c\x22\xd6\xae\x48\x20\x36\xb6\x53\x6b\x2a\x82\x80\x1c\xf3\x1c\xba\x79\xa0\x83\x20\x22\xd4\xb9\xff\x3c\xad\x59\xe7\x69\x87\x3f\x5c\x2f\xe3\xa4\xe3\x1f\xd7\x46\x31\x71\x7d\x67\xc9\x33\xfa\x4c\x4d\x14\xcb\x24\xf4\xef\x21\xf6\x17\x8b\xb0\x40\x7a\x16\x6a\x78\x70\x70\x34\x53\xdb\x70\xfa\xe5\xfe\xb8\x93\xb6\xae\x94\x31\x36\xb0\x7f\xa8\xd8\xbd\x8f\x46\x66\x41\xbb\x29\x18\x11\x17\x86\xad\xa2\xac\xc2\xee\x7b\x4f\xe9\x0f\x89\xee\x75\x45\x44\xb5\x59\x30\xd5\xa4\x0d\x28\x93\x66\x18\x74\xb7\xa5\x15\xff\x7f\x87\x84\x43\xb5\x83\x0e\x1f\xa7\xc3\x2b\x2a\x56\x8c\xbc\xb4\x5b\xff\xc7\x7f\xf9\x97\xdf\xff\xcb\x1c\x87\xec\xa1\x2a\xd1\x68\x13\xfb\xdc\xde\xbc\xbb\xf9\xf9\xfe\xc7\x57\x90\x3d\x18\xcf\x2f\x9f\x66\x8d\x45\x3d\xe3\xc2\xcc\xa4\x9a\xe1\x9a\x7f\x43\x8c\x8a\x3e\x67\x80\xe4\x4f\x90\x5c\x5d\x9f\x3a\xbc\xdc\x2e\x60\xe7\x74\x96\x34\xf1\xe3\x34\x15\xab\x37\x75\xfd\x85\xf6\x20\x9d\xf1\x04\xa5\x89\xbd\x19\x30\xe0\x39\xb4\x62\x93\x95\xf7\x32\x7b\x18\xa5\x17\x5f\x7e\x7c\x75\x87\x2f\xb7\x54\x63\x2a\x9c\x9b\x80\x70\xb1\x95\xc5\x36\x7e\x3b\x28\xf9\xf8\xea\x0e\x26\x3a\x87\xff\x05\x9e\x16\x30\x26\x77\xf6\x0b\x1e\xe4\x8d\x01\xa4\x48\x9a\x75\xd1\x40\x80\xe1\xd3\x82\x6b\xc3\x33\xa0\xde\xb8\x14\xed\x77\xe2\xe2\x46\x9f\x55\x1f\xbf\x7c\xef\x43\x4e\x47\x55\xf3\x24\x1e\xef\x26\xb7\xb4\x54\xf3\x78\x50\xdf\x74\x47\xb4\xee\x08\x77\x37\x20\x86\x7f\xba\x23\x8e\x3d\x27\xb9\x23\xbe\x0e\x29\x99\xf0\xe3\x52\xb1\x7b\x23\xcb\xe4\xe8\x00\xbe\xd6\x13\x1b\x58\xb0\x65\x1c\x1c\x99\xf6\xba\xf2\xf3\x8a\xb9\x06\xd2\x37\x77\xb7\x09\x5e\x0b\xd9\x71\xd7\x23\x3a\x50\x57\xd9\xda\xfb\xa3\x04\xd3\xfa\x1a\x9c\xfc\x55\x89\xf6\x5a\x04\xd1\x25\xe5\x45\xa5\xd8\x95\x5d\x2d\xb6\x81\x35\xb8\x6a\xd2\x18\xec\x14\x98\xc0\x7f\x64\x26\x1b\x2e\x5d\xd8\x3c\x3e\xf2\xe1\xfc\x8f\x7e\x19\xf7\x02\x0c\x24\x53\x54\xaf\xd9\x60\xdf\xc6\xe6\x61\x9f\xb8\xd1\xbe\xf9\x34\xd5\x52\xa0\x43\xd6\x2d\x2b\xdc\x71\xba\x55\xb3\x36\xce\x9c\x77\x03\x45\xb2\x77\x32\xbf\xbc\xd4\x1d\x92\x2b\x45\x33\x46\x4a\xa6\xb8\xcc\x09\x64\x7a\xe6\xf2\x31\xe6\xc0\x2e\xd8\x8a\x0b\xed\xb8\x05\xa6\xed\xd9\xca\xde\x70\xd8\x8f\xd7\x97\xa5\x9a\x93\x0f\xb1\xf5\xc7\x48\x93\x64\x23\x2b\x93\xc9\x46\xe0\xb9\x99\x5c\xed\x2d\x71\x64\xbd\x09\x60\xa6\x8a\x16\xc5\xae\x61\x54\x8f\x85\x35\x47\x97\x26\x82\x68\x7b\xf1\x3e\x4b\xbc\xc9\x9e\x90\xe6\x6f\xe3\x07\x0b\x9e\x7d\x46\xb3\x75\x7c\x45\xa6\x29\x84\xd5\x7a\xa6\x10\xd6\x14\xc2\x9a\x42\x58\x53\x08\xab\xef\x99\x42\x58\x53\x08\x6b\x0a\x61\x4d\x21\xac\x29\x84\xd5\x3c\x53\x08\xeb\x34\xe3\x9f\x42\x58\x53\x08\x6b\xff\x99\x42\x58\xc7\x9e\x5f\x99\x7b\x72\x0a\x61\x7d\x79\xe7\xec\x14\xc2\x9a\x42\x58\xb1\x44\xa6\x3b\x62\x0a\x61\x4d\x21\xac\xc1\x1f\x47\xfe\xd0\xc7\x7e\xee\xac\x7d\x93\x92\xe7\x75\x07\xde\x6e\x9e\xa1\x65\x64\xf9\xae\x9d\xe5\x83\x44\xe7\x4d\x09\xf9\xc0\xc4\x9a\x1a\x17\x3e\x4b\xc5\x05\x7c\x90\x3a\x64\xc1\x9c\xad\x35\x4a\x5f\x7b\xa4\x52\xe6\x8d\xf7\xbd\xe5\x76\x47\x5b\x70\x58\x5c\xc5\x8b\xe7\x38\x7f\x7b\x9a\xaf\x3d\x2e\x55\x8b\x60\x66\x55\x8c\x9f\x3d\xde\x83\x9e\xda\xef\x3b\xc1\x73\x9e\xe0\x35\xf7\xbe\xf0\xd8\xab\x39\xe4\x31\x6f\xfc\xe0\x91\x14\x87\xbd\xe5\x47\x7c\xe0\xb1\x74\x8f\x7b\xca\x8f\xfa\xbf\x63\x27\x7f\xe8\x25\x1f\xf2\x7d\xc7\x2f\x69\xed\x21\x0f\xf9\xbd\xa3\x43\x43\xde\x3b\x1e\xe3\xf3\x4e\x21\x3a\x3f\x83\xbf\xfb\x89\xbe\xee\x24\x97\x58\xb2\x1a\x91\xe2\x1d\x48\xb8\x9f\x1c\x20\xe0\xe3\x5a\x31\xbd\x96\x45\xc4\xb9\xee\x9c\xe9\xef\xb9\xe0\x9b\x6a\x03\xad\x23\xed\xf1\xe5\xae\x37\x64\xa5\x58\xdd\x26\x36\x62\x7a\x78\x67\xa0\x13\xaf\xe9\x42\x59\x77\x99\x5c\x1a\xa6\xc8\x9a\x6e\x41\x4e\x56\x59\xc6\x58\x1e\xd7\x02\xa2\x6d\x92\xfd\x7e\x5e\x8f\xb6\xee\x03\xf0\x32\x4c\x04\xeb\x62\x82\xa6\xf8\xfb\xdf\x45\xae\x7c\x9c\x56\x19\x1d\x52\x48\x0c\x27\xc4\x69\x91\xd1\xa1\x84\xb4\xeb\x21\xde\x64\x39\x4b\xf8\x20\x32\x74\xe0\x02\x02\xd1\x82\x71\x7c\xd8\x20\xf1\x9c\x27\x87\x0b\xa2\x43\x05\x75\x00\x20\x72\xd2\x4f\x0f\x13\x24\xc9\xc3\xf8\xf0\x80\x1b\x44\xbc\xe9\xf9\xc4\xd0\xc0\x98\xb0\xc0\x93\xea\x62\x3e\x35\x1c\x30\xca\x42\x4d\x0e\x03\x9c\x36\x04\xf0\x59\x6a\xe1\x26\xac\x63\x9a\xcb\x3f\xd9\xdd\x9f\xe6\xea\x8f\x77\xf3\x9f\xc3\xc5\x9f\xb8\x35\xf1\x6e\x9b\x04\x97\xcd\x18\x77\xcd\x08\x57\x4d\xbc\x2b\xdf\x2d\x6a\x24\x7f\x84\x5c\x34\x1d\xc7\x4b\x24\xcd\x01\xf7\xcc\x18\xa7\xcb\x09\x1c\x2e\x29\x0e\xf9\x68\x67\x7c\x3c\xb8\x93\x38\xed\x63\xac\x23\x3e\x89\x5b\xe2\x85\x4f\xa4\x5b\x29\x41\x84\xb8\xbe\xf3\xaf\x59\x41\x77\xf7\x2c\x93\x22\x8f\xb8\x99\xf6\x0a\x99\xd5\x3c\xad\x91\x80\xd3\xb1\x53\x11\x9a\x6b\xaa\x7d\x9b\x79\x0f\x7e\x2d\xba\xed\xcf\xa1\x5f\x00\x8e\x38\xc2\xfb\x43\xbe\xa8\x07\x88\x9c\x55\xdd\x47\xb0\xe9\xb8\x0d\xfb\x77\xf9\x48\xe4\xd2\x30\x41\x9e\x71\xe1\xf7\xec\x79\x0b\x11\x94\x62\x67\xd5\x07\xc4\xbe\xff\xf2\x85\x27\xf7\xb5\x99\x47\x60\xe8\x69\x7d\x4a\xcb\xd4\x91\x3c\x85\x69\xea\x48\x2d\xab\xa2\x6b\x9e\xa2\xc9\x9a\x6a\x9b\xbe\x6c\x4a\x34\xbe\x84\xb1\xd5\xa7\x88\x8a\x9c\x38\x90\x7f\xd4\xe1\xf9\xaa\xb6\x30\x21\x3c\x78\xae\xd0\x60\x52\x58\xb0\x09\xf8\x45\x51\x7e\x5a\x48\xf0\xb3\xd8\xd5\x81\x30\xa0\x35\xb1\xa3\x0d\xb4\x27\x84\x00\xff\x69\x75\xc8\xa1\x50\xdf\xa4\x43\xee\x3f\x5f\x52\xab\x32\x7c\xc3\x64\x65\x4e\xac\x50\x3d\xae\x79\xb6\x6e\xc2\x62\x11\xcb\x68\xc7\xa1\x89\xac\xf6\xf4\xd8\x97\x8e\xf0\xe1\x2d\x1d\x41\xf3\x65\x72\x5e\xcb\x2f\x44\xab\x8a\xdc\xdf\xb0\x3b\xa6\xb7\x77\x75\x13\x22\x6d\x3a\xb4\x51\x4d\x28\x79\xfd\xee\xfe\xe7\xb7\x37\x7f\x7d\xf3\x36\x74\x36\xde\xd0\x6c\xdd\x4e\x0e\x14\x84\x82\xf0\x84\xb3\xb6\xa6\x5b\x46\x28\xa9\x04\xff\x47\x85\xb5\x54\xc9\xb3\x9a\xf2\xf3\x13\x57\xba\x8f\x94\x65\xd0\x9f\x71\x44\xdf\x06\x78\xcf\x85\x78\xa4\x35\xe4\x94\xdc\xec\xc9\xac\xd0\x52\xd9\x17\xad\x16\x45\x51\x46\xae\x99\x62\x64\xc5\xb7\xce\xc9\xed\x8a\x5a\xd2\xbc\x0e\x6f\x59\x86\xb6\x9c\x15\xce\x2b\xa2\x0b\x08\x34\xad\x19\x11\xcc\x58\xee\xae\x6d\x4c\x29\x74\x27\x7b\xb3\xd2\x4c\x5f\x91\x45\x15\x34\xc3\xac\x89\xc3\x37\x54\xf1\x62\xd7\x1e\x08\x2d\xe6\xe4\x9d\xf4\x9a\xcb\x6e\x6f\x3a\x01\xa2\xaf\xdf\xbf\xb9\x27\xef\xde\x7f\x84\x06\xe0\x50\x9c\x76\x4d\x0d\xbe\x0d\xcb\xb9\x60\x96\x9e\xeb\xb8\x35\x27\x37\x62\x17\x23\x08\x51\x0a\x71\x4d\xac\xba\xc2\x84\x25\xe1\xae\x13\x5f\xf8\xf6\xe2\xc5\x1c\xfe\xef\xc2\xae\xae\x0a\xdf\x4a\x75\xd8\xb1\x9b\x7b\x08\x77\x07\xdc\x6a\x7c\x51\xb4\x38\xc0\xad\xf9\x17\xef\xdc\x50\x83\x1b\xee\xec\x8a\xb6\xbb\xef\xd7\x6c\x11\x75\xaf\x60\xcf\x10\x2e\x56\x45\x02\x77\x27\x76\x6f\x68\x06\x9a\x5c\x4d\xbd\xb9\x8d\xbc\xaa\xe1\x8e\xa4\xdb\x75\x68\x95\x15\x75\xa5\xdf\xde\x79\x86\x98\x63\x11\xe6\xcd\x5e\xb3\x29\xf8\x00\xba\xc8\xe2\x34\xc9\x17\xe4\xcf\xe4\x13\xf9\x33\xa8\x1d\x7f\x8c\xd1\x2b\xd2\xee\x8e\x34\x03\x05\xf5\xea\xdb\xbb\xe4\x15\xfe\xc9\x1e\x4b\xfb\xae\x5d\x21\x6b\x1c\x72\x91\xbb\x66\x78\x86\x29\x2b\x9a\xe2\xc1\x44\xf2\xe4\x75\xf8\xed\xc0\xce\xc2\x38\xe0\x5f\x8b\x63\x9c\x65\xab\xba\x33\x31\x67\x60\x1d\xfb\x09\x6b\xd3\xbc\x73\x07\xb7\x53\x4f\x1a\xbe\x18\x45\x14\x46\xb5\xa1\x26\x5b\x77\xa5\x83\x55\x99\xb4\x69\x0e\xa2\x26\xb9\x24\xe1\xba\xc7\xf8\x20\xd8\x61\xcd\xa3\x22\x65\xe7\x65\xf0\xd8\x50\x54\x87\x0f\x86\x76\x6f\xcf\x34\x88\x34\xd3\x72\xaf\xe3\xb4\xd2\xcc\x4b\x99\xcf\x51\x3d\xb2\x83\x74\x0c\x11\xac\xb2\xee\x28\x0e\xe9\x50\xce\x9a\xf1\x88\x9e\xf8\xa3\x68\x4f\x75\x46\x05\xe2\xda\x96\x4c\x29\xc4\xac\x2c\x76\xc4\x35\x80\x8e\xda\xd0\xa4\xb3\x5a\x2a\x69\x64\x26\xa3\xba\x1b\x74\xc3\x3b\xee\x45\x98\x26\x3a\x38\xbc\x0f\xe9\x87\xd7\x77\x57\xe4\xe3\xab\xbb\xb8\x63\x25\x15\xb9\x7f\xf5\xf1\xae\x6b\x6f\x5c\x7c\x7c\x75\x17\xd5\x86\x39\x61\xb2\xf1\xed\xca\x3a\xd7\x5f\xc8\x70\x3b\x6d\x37\x04\xc5\x68\xce\x4f\x8e\xaf\x74\xec\xd3\x50\x0f\xaa\x42\x07\x7a\x95\x62\x1b\xb9\x65\x39\x2a\x55\x9e\x1e\x13\x79\x29\xb9\xd5\x60\x78\xa8\xe1\x54\x04\x36\x73\x42\x5f\x06\x9f\x09\x7d\x49\x26\xf4\xe5\x84\xbe\x9c\xd0\x97\xa1\xdf\x4e\xe8\xcb\x09\x7d\xd9\xff\x4c\xe8\xcb\x09\x7d\x39\xf4\x4c\xe8\x4b\xf7\x4c\xe8\xcb\x11\x43\x9e\xd0\x97\x11\x2f\x4c\xe8\xcb\xaf\x3a\x72\x3e\xa1\x2f\x27\xf4\x65\xdf\x33\xa1\x2f\xe1\x99\xd0\x97\x13\xfa\x72\x42\x5f\x4e\xe8\xcb\xbe\xdf\x4e\xe8\xcb\xfe\x67\x42\x5f\xf6\x3e\xbf\x1e\x1d\x72\x42\x5f\x4e\xe8\xcb\x09\x7d\xf9\xa5\xd1\x97\xbe\xbd\x40\x0a\xa6\xf0\xf2\x95\xdc\x94\x95\x61\xe4\x83\x7f\xb9\x66\x4f\xb2\xd8\x21\x22\x21\x1a\x78\xf5\xf4\x40\x27\xb6\x94\xaf\x14\x00\xfc\xae\xb1\xaa\xfd\x2c\xc3\x21\xce\xea\xf9\xcd\xea\x11\x5d\x9f\x2a\xd8\x59\xf0\x0d\x0f\x81\x31\xed\xd3\x60\x22\xef\x92\x2e\xb6\x24\x01\xdb\xdd\xa1\xb7\x30\xb4\x96\x8b\x10\x5b\x90\x7f\x82\xe3\x41\x37\xb2\x8a\xba\xc7\x21\x4a\x8e\x5b\x5d\xaf\x23\x3a\x3e\xbf\xfc\x36\x91\x34\x19\xe6\x5c\xbc\x5f\xe7\x6e\x7d\x70\x83\xdb\xdf\x2f\x27\xce\x9e\xb6\x5f\xfe\x68\x02\x26\xab\xfe\x12\xd7\x44\x6e\xb8\x31\x2c\x26\xae\x6e\xd5\x6e\xda\x0e\x26\x73\xd3\x51\x7a\x1c\xb7\x41\x8d\x29\x6a\xe2\x04\x6f\x2b\xd8\xd9\x42\x33\x49\xb3\x66\xea\x91\x6b\xdf\x95\xa5\xd6\x3a\x81\x6b\x66\x39\x5b\x72\x11\x35\x64\xb8\x02\x7e\x51\x3c\x1a\xf9\x43\x6b\xb1\x29\x6e\x76\xaf\xa4\x30\xec\x53\x40\x17\xec\xb2\xd9\xbd\x7b\x95\xc8\x12\x23\xd9\x5e\x59\x75\x4d\x22\x54\x25\x00\x01\x76\xe2\x32\x60\xd8\xe5\xfe\xda\x0f\x1c\x56\x8f\x7d\x32\xd7\x27\xf9\x8a\xa1\xfa\xa1\xd9\x37\x36\xb3\xd7\x71\xb3\x3d\x07\xdf\x3c\x95\xe8\x07\x21\x78\xa7\xf8\x96\x17\x6c\xc5\xde\xe8\x8c\x16\xc0\x33\xa9\xca\xd1\x4d\x0f\x1d\x38\x6c\x4a\x16\x9a\x3c\xae\x99\x3d\x13\x51\x56\x57\xa9\x24\xf8\xb3\x33\x2a\xc8\x8a\x72\x41\x36\x76\x0d\x4b\x4f\xde\x6e\xb8\x3d\x53\x46\x93\x92\xaa\x38\x53\xce\x91\x74\x00\xe3\x85\x94\x85\x43\x8f\x14\xbb\x66\x8c\xae\xb8\x9c\x90\x3f\x0b\xf6\xf8\xb3\xfd\x5e\x8c\x04\x58\x16\x74\x55\x03\xa8\x34\x33\x07\x7a\x7c\xf3\xf1\xbe\x65\x8a\xf8\x0a\x40\x1f\x2a\x46\x68\xf1\x48\x77\xb0\x9c\xfb\x5f\xe1\xfa\x1b\xf2\xf2\x39\x70\x3f\x8d\x19\x77\x3d\x8e\x9c\xfc\xee\x39\xf8\xf9\x5e\xdd\xdc\xfd\x7c\xff\xf7\xfb\x9f\x6f\x5e\x7f\x7f\xfb\x2e\x56\x24\xd8\xb5\x64\xc1\x72\x8d\x19\x2d\xe9\x82\x17\x3c\xee\x16\x3a\x88\x3c\xb5\x5f\x07\x91\x9a\xe7\xd7\xb9\x92\x25\xae\x83\xaa\x84\x88\x33\xde\x1a\xa4\x6d\x57\xf7\x6e\xa7\x29\xc0\x16\x2e\x3b\x9f\x8c\xa0\xbc\x52\x54\x18\xaf\x38\xb6\xb7\x45\x55\xc2\x2a\xfc\xa7\x8e\xc2\xd3\x7c\x0c\x40\xeb\x26\xcf\x59\x9e\x3a\xb5\xa7\xc4\x79\x5f\xf9\x4f\xed\x9a\x4c\x08\x72\xf7\xfe\xfe\xf6\x3f\xd2\x47\x41\x1c\xcf\x25\x85\xec\xce\x84\xbf\x21\xc4\xb2\xdf\x88\x1d\xf8\xe0\x10\x96\xd3\x1e\x0c\xbc\x70\x72\x0c\x54\x7d\x77\xa4\xfa\x98\x3f\x54\xa2\x9b\x57\xd7\x50\x22\x1b\x99\xb3\x39\xb9\x43\xe1\x1e\xb5\x7e\xdd\xf7\x5b\xb0\x7f\xaa\x18\xb1\x44\x84\xe1\xd0\x31\xcd\xea\xba\x5b\x5a\xc4\xdd\x6d\x46\x22\x8a\xb1\x9d\x3f\xd1\x91\x6e\x4b\x5a\xe8\x08\x01\x94\x22\xcf\xed\x95\xf6\xbd\x55\xe7\x13\xd7\xb3\x7e\x8f\xe4\x4c\x48\xe3\x2c\x04\xfb\x65\x48\x08\x51\x32\x23\xb1\x56\x42\x2b\x98\xd8\x91\xb8\xae\xa3\x9f\x17\xe7\x5c\xfb\xb5\xb8\xf3\xdf\x8e\x20\x8e\x5e\x9d\x4a\x33\x7d\x5c\x9c\x37\x76\x83\xfd\xbe\x62\x34\x97\xa2\x88\x8d\xf4\xa3\xcf\x7f\x43\xf5\x03\xcb\xf1\x1f\x9c\x5e\xe2\x6c\x1c\xed\xba\xfb\xb9\xe1\x7e\x8c\x3b\x6f\x4b\x46\x4d\xa5\x18\xea\x23\x18\xcd\x60\x82\x2e\xa2\x62\x15\x49\x00\x7b\x9a\xbf\x17\xc5\xee\x83\x94\xe6\xdb\x1a\xf8\x9a\xc8\x06\x3f\xa1\x36\xb8\xe7\x63\x01\x25\x04\x9c\xee\xf9\x2c\x72\x39\x81\xf1\xdb\xf8\xdb\xd7\xcd\xb6\x9f\x81\xed\x55\x25\x6e\xf4\x77\x4a\x56\xa9\x2d\x40\x2d\x47\x7e\x77\xfb\x1a\xce\x6a\x85\xe7\x94\x09\xa3\x76\x00\xac\x77\x5e\xe3\x14\xfd\xa5\xd1\x29\x7f\xb0\x3c\xba\xc7\x95\x56\x93\xad\x84\x66\x51\x50\xb0\xef\xe9\x8e\xd0\x42\x4b\xaf\xbe\x72\x41\xee\x20\x8a\xd9\xb6\xcf\xe6\x98\x6d\xc5\x22\x73\x67\x16\xd2\xac\xc9\x1e\x09\x60\xfa\x43\xca\x57\x91\x53\x47\x67\x68\x93\x20\xcd\xc5\xc1\x07\x0c\x7d\x60\x9a\x94\x8a\x65\x2c\x67\x22\x8b\xd8\xfb\x96\xd7\xf2\x8f\x7f\x38\x69\x60\x0c\x38\xe5\x9d\x14\xf6\x98\x24\xf2\xca\xad\xc8\x79\x46\x51\x36\x52\xb3\x27\x7f\xc0\x7f\xaf\xaa\x98\x4d\x80\xc3\x24\xa4\x98\xc1\x21\xa9\x34\x53\xe0\x3b\xb1\x66\x04\xe2\xe8\xff\x56\x2d\x58\xc1\x0c\x1a\x2f\x90\x2f\x47\xa3\xd0\xf9\xf6\x5d\xbe\xa1\x2b\x46\xa8\xa9\x59\xcf\x48\xc2\x84\xae\xa0\x35\x29\x35\xe0\x5a\x91\x4c\x47\x66\xb3\xa1\xd1\x42\x7e\xb8\x7d\x4d\x5e\x90\x67\x76\xbc\xcf\x81\x5d\x96\x94\x17\x00\x72\x34\x54\x99\x64\xec\x02\x5f\xfa\x61\xc0\xc4\xe1\x44\x10\xa9\x50\x30\x5c\x11\x21\xb1\xd7\xad\x9b\x79\x9c\x1d\xe6\x0d\x3d\x17\x95\x07\x07\x62\xf4\x01\x8a\xa0\xef\x08\xa4\x1c\xa0\xc8\x1d\x3b\xcb\x01\x4a\x16\x9e\x3f\x68\xa6\x46\xc8\xce\x1f\xce\x22\x3b\xdb\x4a\x92\x3d\x1f\x9d\xd5\x89\x61\x30\x38\x04\x1b\x66\x68\x4e\x0d\x75\x52\xb7\xc9\xdc\x39\x64\x8c\x18\xb3\x7c\x50\xf6\x1e\x65\x8c\x18\x59\xd0\x2f\x7b\x23\x18\x23\x86\xc3\xbe\x22\xd9\xab\xd9\x5b\x2e\xaa\x4f\x18\x18\x1f\xe3\x6e\xb8\x7f\x03\x04\x48\xe6\xcf\x05\x6c\x21\x2d\xcb\x82\x43\x8a\x4b\xe4\x89\x6b\x45\x72\x6f\x3b\xac\xb1\xdf\x52\xd9\xc9\xd0\x58\xf1\x43\x8b\x42\xda\x0b\xc2\xea\x4a\x54\xe4\x72\x73\x30\x60\xab\x94\x32\x9a\xad\x53\x8e\xc5\x3c\x45\x15\xf8\xf5\x49\xb2\x34\xf7\x4b\xc1\xb6\x2c\x2a\x9d\x76\xbf\x8e\x89\x7d\xcf\x2a\xa7\x7e\xc7\x80\x10\x29\xe8\x82\x15\x29\x19\x52\xc8\x8b\xb5\xef\x2a\x3a\x4c\x89\x4f\xa2\x59\xae\x64\x31\x06\xf4\xf9\x41\x16\x00\x50\xa2\xf5\x64\x2d\xa1\xaf\x7c\xae\xf0\xf3\xf4\xb9\x5a\x1b\xad\x3b\x57\xb0\x69\xbf\xee\xb9\x56\x51\x77\x31\xd9\x9f\xab\xbd\xc2\xbb\x73\x85\xbb\xf3\x6b\x9e\x6b\x82\xab\xe8\x91\x8b\x5c\x3e\xea\xf1\x97\xc7\x4f\x48\xc0\xcb\xa7\xcc\x0a\x42\xc3\xc5\x4a\xfb\x0b\x24\xce\xb7\x41\x8b\xa2\xe3\xd3\x38\x76\x83\xf8\x00\xd8\x52\x45\x75\x34\x75\x6d\xf7\xf7\x65\xa5\x57\x69\x2b\xed\xa2\xab\x2d\xc9\x1d\x41\x35\xc1\xcc\x8b\x4e\xb9\xf8\xa2\xb2\x7d\xb5\xd1\xf4\x95\xb2\xb4\x0d\xa7\xc5\x7d\x39\xaa\xf1\xfd\x77\xdf\xdf\xdf\x74\x89\xd8\x23\xf3\x08\xd5\xa6\xec\x4a\xd8\xbf\xc7\x9e\x93\x7c\xc3\xb5\xe6\x52\x90\x47\xb6\x58\x4b\xf9\x40\x9e\xf9\x48\xe2\x8a\x9b\x75\xb5\x98\x67\x72\xd3\x0a\x2a\xce\x34\x5f\xe9\x6b\xc7\xc7\x33\x3b\x9b\xd8\x3e\xec\x5c\x14\x5c\xb4\x5c\x5e\x50\xb6\xc8\x41\xda\xec\x80\x49\x56\xcf\x28\x92\xa2\xdd\x48\x57\x79\xc3\x45\x46\x0e\x17\x06\xeb\x68\x70\x56\x44\x77\x49\x06\x67\x19\xa6\x21\x59\x39\x54\x94\x6b\x3a\xc3\x8b\xd4\xa5\x5d\x43\x12\xfe\x5a\x0a\xa9\xa2\x8e\x9b\x7d\x5c\xfd\x0d\xc8\xaa\xb3\x06\x2c\xfa\xce\x60\xc8\xee\x44\xc3\x0a\x38\x2f\x5b\x24\xd1\x65\x41\x57\x67\x11\xdd\x87\x3c\xfa\x2e\x3a\x21\x2d\xc0\xa7\xb0\x1d\x2e\x83\x3f\x21\x9f\xea\x38\x9b\x20\x03\xa0\x79\x35\x6f\xed\x5b\x2c\x43\x06\x77\xb7\xb5\x6f\xb1\x31\x89\xf0\xee\x9e\x6f\xdf\x6a\x1b\x78\xe4\x76\x81\x2d\xec\x5e\xb7\xb2\xd1\x5f\x36\x8d\x6d\x1c\xb9\x0a\x07\x16\xf4\x90\x7d\x1c\xbb\xb2\x78\x91\x1f\x58\xd2\x01\x3b\x39\x92\x7a\xa4\x71\x82\xf7\x57\xb4\xc0\x3b\xb5\x7d\x42\x12\x6d\x94\x48\x92\xad\xdb\x2e\x24\xfd\x12\x4a\x4c\xf4\x1c\xa4\xbe\x23\xf2\xa1\xcd\xbc\xb1\x12\xf0\xbc\x27\xea\xe4\xb0\x24\x4c\xc4\x48\xae\xcb\x73\xdf\x7a\x8f\xf0\x43\x07\xee\x9d\xcc\xc9\x3a\x08\xcb\x68\x52\x4e\xa0\xdc\x23\x24\x81\xf1\xff\xf6\x5a\x59\xa3\xfb\x09\x89\x08\xb3\xb8\x34\x67\x08\x2e\x62\xe9\x95\x9c\x54\xc2\xf0\xc2\xc7\x5d\x36\x65\x61\x15\x86\xce\x77\xd1\x47\x1c\xae\x6c\xd6\x2a\xf3\x73\x55\x4f\xf1\xa0\x61\xe3\x15\xf9\xaf\x4a\x1b\x42\x3d\xb8\x26\x40\xb4\xd3\x77\xd2\x67\xda\x20\xc3\xbb\x92\x59\x90\xe5\x6d\xa4\xfd\xfc\x96\xe7\x8c\xe4\x7c\xb9\x64\x11\x20\x20\x1c\x6e\x49\x15\xdd\x30\x03\x21\x57\xdc\x98\x05\x5b\x71\x81\xd5\x2a\x97\x84\xda\x49\x5c\x5e\xea\x26\xd3\x23\x74\xe4\x01\x7f\xc2\x0d\xd9\xf0\xd5\x1a\x4f\x34\xa1\xa4\x90\x62\x45\xbc\x53\xbc\x90\x34\x27\x20\xf6\xa4\x22\x8f\x54\x85\x14\x75\x4a\x32\x9a\xad\xc1\x43\x4f\x05\xc9\x2b\x05\x25\x31\x0c\xa3\xf9\x6e\xa6\x0d\x35\x56\xeb\x67\x88\xec\x6b\x56\x26\xec\x65\x6f\x03\x93\xe1\x2d\x8e\xf9\x36\x56\x7a\xd4\x87\xd4\xc5\x0b\x9d\xaa\x16\xa0\xd8\x61\xf9\xce\x31\x9f\x4a\x3c\x05\x9f\xa9\xc4\x13\x99\x4a\x3c\x4d\x25\x9e\xa6\x12\x4f\xa1\xdf\x4e\x25\x9e\xa6\x12\x4f\xfd\xcf\x54\xe2\x69\x2a\xf1\x34\xf4\x4c\x25\x9e\xdc\x33\x95\x78\x1a\x31\xe4\xa9\xc4\x53\xc4\x0b\x53\x89\xa7\xaf\x3a\x3d\x7f\x2a\xf1\x34\x95\x78\xea\x7b\xa6\x12\x4f\xf0\x4c\x25\x9e\xa6\x12\x4f\x53\x89\xa7\xa9\xc4\x53\xdf\x6f\xa7\x12\x4f\xfd\xcf\x54\xe2\xa9\xf7\xf9\xf5\xe8\x90\x53\x89\xa7\xa9\xc4\xd3\x54\xe2\xe9\x4b\x97\x78\xd2\x26\xe7\x81\xc2\x14\x31\x39\x86\xae\x48\x48\x83\xa1\x0f\x05\x4e\xab\xe5\x92\x29\xb8\xcf\x61\x04\x07\x31\xa4\x3a\xc3\xdf\x07\xce\xc3\xdb\x69\x6f\x2e\xcd\xcc\x15\xa4\x3a\x6a\xd7\x6d\xe7\x38\x71\x07\xf8\x7f\xa4\xbb\x10\x51\xc5\x34\xa4\xfe\x09\xf2\xe6\xfd\xb7\xa9\x89\x90\xb1\x79\x3c\x30\xca\xf7\x22\x4b\x01\x47\x34\x1b\x71\x2c\x91\xd6\xed\x47\x56\x48\x1d\x3a\x59\xd0\x9f\x13\x96\x29\x5b\x53\x21\x98\xd7\xda\xb8\x01\x1b\x66\xc1\x98\x20\xb2\x64\x02\x23\xd8\xbe\x79\x62\x28\xde\x6e\x0c\xcd\xd6\x73\x3b\x4a\xe1\x37\xc1\xd5\xda\x68\xbe\xa7\x8d\x62\x74\x83\x9b\xa1\xd8\x86\x06\x33\x79\xec\x30\x08\xcd\x94\xd4\x9a\x6c\xaa\xc2\xf0\xb2\x60\xee\x53\x44\x33\x40\x73\x22\xa6\xb7\x5e\xd0\x30\xd7\x68\x86\x41\x36\xc8\xdf\xab\x47\xea\x26\x2c\xdb\x79\xea\xa0\x6b\x5e\x85\x29\xb2\x4d\x69\x76\x35\x24\x84\x91\x25\x57\xda\x90\xac\xe0\x4c\x18\x37\x5a\xc4\x67\xc3\xd7\xae\xac\x1e\x1b\xde\x22\xe1\x56\x48\xbb\x45\x10\x39\xdc\x91\xa5\xd1\x08\x83\x68\x3e\x87\x1f\x0a\x50\xcc\xb9\x76\x7a\x8e\xbe\x22\xd4\x78\x61\x0c\xac\xe3\xd7\x00\x98\x27\x87\x4f\xb9\x6f\x07\x88\xba\x17\x5a\x43\x69\x95\x51\x69\xd0\x2b\xcd\x91\x5e\x16\x34\xa4\x39\xf8\x83\x76\xd5\xe9\x58\x5a\xfa\xf2\x00\x88\x05\xda\x3f\xf0\x01\x9a\xc0\x70\x82\x6d\xed\x79\x61\x19\xb3\xe6\x0f\xed\x39\xdf\x27\x39\xde\x86\xa9\x0d\x17\x00\x2e\xf9\x9e\x69\x4d\x57\xec\x2e\xe8\xb6\xec\x53\x55\xc1\x73\xd9\x6c\x18\xb0\x57\x01\x7a\x2b\xfc\x4b\xc4\x59\x6f\xc2\xf4\x97\xba\x3d\x34\xb2\xc1\xb1\xd5\x70\xa3\x47\xc5\x8d\x61\xa1\xc5\xe4\x1a\x6b\x0b\x40\x0c\x61\x3f\xe9\xc0\x7e\xa2\x1d\xe4\x77\xd3\x0f\xed\x0f\x7e\xd8\x92\xb6\x37\x9d\xc8\x5d\x2f\x3f\x46\x16\x8a\xb3\x25\x59\x72\x88\xdf\x43\x7c\xfb\x0a\xb3\x4d\x83\x20\x30\x6b\x22\x69\x6d\x8d\x0a\x29\x7c\x18\xd6\xcf\x78\x4e\x7e\x72\x53\x36\xaa\x12\x19\x35\xb1\x60\x1d\x21\x73\x46\xf8\x92\xac\x20\xb6\xae\x10\x5c\xf4\x87\x17\xff\xf7\x1f\xc9\x62\x67\x75\x07\x70\xfe\x1b\x69\x68\x51\x2f\x6e\xc1\xc4\x2a\x98\x00\xe0\x44\x5c\x37\x59\xa1\xde\x17\xa8\x2c\x88\x4b\xf2\xf2\x77\x0f\x8b\x68\x40\xa9\x91\xe4\x3a\x67\xdb\xeb\xd6\x9e\xcf\x0a\xb9\x3a\xd6\x4e\x6e\x58\x6d\x89\x54\xfc\x8f\xb0\x3d\x14\xfb\x4a\x60\x7c\x9f\xb4\x4d\xd6\xf2\x11\x6b\x5a\x1c\xe1\xd7\x28\x78\xd0\xc2\xda\x16\x65\x55\x20\x56\xeb\x5b\x7b\x66\x60\x3d\x2b\xcd\x0e\x81\xf9\x47\xcf\x6b\x78\x75\xfd\x07\xf6\xdb\x8f\x23\x10\xc3\x0f\x57\x3a\x74\xac\x73\x93\x04\xf9\x36\xf7\xec\x3a\x27\xdf\xd2\xa2\x58\xd0\xec\xe1\xa3\x7c\x2b\x57\xfa\xbd\x78\xa3\x94\x54\xdd\x79\x14\x54\x87\x64\x7f\xb6\xae\xc4\x43\xb7\xc9\x61\x21\x57\x56\xaf\x2e\x2b\xe3\xcb\x75\x1d\x59\xe8\x00\x59\x90\x43\x5c\xbb\xeb\x8f\xba\xae\xba\xcd\x37\xd8\x27\xe0\xda\x47\x6e\x05\x98\x20\xcc\x8e\x3d\x64\x3c\xd9\xf3\xd3\x1e\x9b\x6e\x33\xff\xef\x5e\xfc\xe1\x4f\x78\xd0\xac\x15\xf9\xa7\x17\x00\x97\xd2\x61\x6c\x21\xcf\xd6\x20\xfb\xb9\x26\x7a\x43\x8b\xc2\x1a\x8c\x6d\x7b\xc2\x32\xc7\xb1\x43\x71\x92\x33\x61\x52\xd8\xff\x44\xca\xf6\xc7\x8f\x7f\x07\x4d\x9b\x1b\xcd\x8a\xe5\x15\xe2\xbd\xeb\xaa\x28\x97\x70\x65\x5e\x3a\x09\x6b\xf5\xa0\x7a\x39\x22\xef\xe6\xd3\x28\xc1\x5b\x59\x54\x1b\xf6\x9a\x41\xb3\xd6\x84\x45\xea\xbc\xe7\x11\x74\x85\xeb\x6c\xbf\x28\x64\xf6\x40\x72\xfc\x63\xf8\x04\xfb\x68\xf8\x7e\xbd\xb1\x16\xba\x93\x2c\x98\xa9\xb1\x9d\xa7\xee\x72\xde\x9e\x4b\x27\xbe\xbf\xa1\x65\x59\xc3\x69\x15\x7d\x0c\x1a\x8a\xed\x89\xfb\xce\xbd\xf4\x3c\x1d\xcf\xf1\x23\x61\x95\xe6\xc8\x7c\x9b\x57\xfd\xc6\x95\xf0\xbf\x11\xb9\x17\x5d\x84\xa0\x5d\x86\xa0\x06\x87\xd7\x73\xc7\x5b\xd3\xae\x20\xc8\x8d\x93\xf7\x01\x1e\xd5\xa7\x59\xd4\x3e\x25\xec\x60\xed\xf3\x82\x70\x87\x4b\xa6\x34\x34\xfc\x37\x3f\x02\x47\xbc\x2a\x28\x8f\xc9\x45\x24\xa4\x69\xd0\x7c\xda\x69\xc6\x77\x00\x6e\xf6\x34\xf8\xd3\x08\xd4\xc1\x89\x7b\x04\xe3\x01\x83\x02\x50\x29\x32\xe6\x4e\xe6\xee\x55\xb8\x21\x40\xe1\x3d\xa6\xee\x86\x44\x4c\x5b\x17\x4e\xbc\x60\xd2\x85\xc9\x8f\xcd\x5c\xbb\xb2\xc4\xfe\x4b\x2d\x4c\xf0\x57\x41\x66\x39\xaf\x08\x81\x21\x8d\x92\x20\x20\x3b\x5a\x9d\xc9\x1b\x41\xe0\x8d\xa4\x38\x2f\xfc\x9a\xb9\x0d\xf6\xb7\xab\x15\x19\x68\xd7\xcc\x09\x46\xa0\xec\x6e\x39\xf2\x51\x34\x2f\xbf\xb9\x3c\xb9\xac\xc1\x85\x52\xb2\xa4\xab\xc8\x92\xb2\x7b\xeb\xb5\x4f\x80\xe4\x0c\x55\x3d\xa6\x41\xc9\x86\xbf\xc7\x39\xde\x29\x94\x8f\x45\x4a\xbe\xbb\xb5\x2f\x95\xe7\x02\x29\x7e\x2b\x82\x1e\x0e\xb7\x14\x6b\xe6\x52\x70\x1e\xe9\x8e\x50\x25\x2b\x91\x3b\x1f\x52\xed\xdc\xfb\x7e\x6f\x02\xef\xa4\x88\xbb\x22\xb8\x76\xb9\xd8\xdd\x4c\x2f\xb8\xce\xb9\x20\x2f\xe7\x2f\x5f\x7c\x1d\x57\xc3\xc7\xba\x69\x7f\x73\x35\xbc\xab\xaf\x06\x3c\xaf\x27\x1f\xa9\x2f\x40\x97\x3c\xda\xef\x9d\xf1\x5f\xd7\x97\x03\x0b\x02\xbc\x69\xf0\x4f\xd6\x98\x8f\xdb\xa0\xa6\xbc\xf7\x33\x50\x2b\xad\x56\xdf\xca\x68\x7c\xde\xd1\xd2\xa3\x28\x46\xd6\xaa\x4b\x2b\xb8\x44\x88\xae\x16\x27\x91\x55\x4e\xe0\xc0\xc1\xa9\xfd\x39\x69\xea\xce\xa5\x1e\x10\x5b\x49\x89\xa6\x46\x92\x8b\x0b\xf2\x0c\xa9\x5d\x62\x7e\xc7\xf3\x93\xb3\x99\x5b\xba\x37\x9f\xca\xa8\x1a\x19\x9d\xe5\x7b\xf3\xa9\xa4\xe0\x0b\x2a\xfb\xd7\x31\x6a\xaa\x8d\xef\x2c\x6a\x1d\xa3\x68\xfe\x95\xad\xe9\x96\x41\xde\x0a\x2f\xa8\x2a\x76\x76\x41\xef\x71\xb6\x64\x51\x19\xc2\xc4\x96\x2b\x29\x36\x4c\x18\xb2\xa5\x8a\xd3\x45\xd0\x89\x8e\x8f\x62\x90\x8a\x67\x8d\x9b\xdf\x3e\xfb\xf1\xe6\x03\x44\x1d\x9f\xbb\xfc\x43\xb7\x22\x95\x06\x3c\xd8\x08\xee\x69\x0d\xab\x6b\x05\xb7\x99\x21\x6e\x9c\xc0\x30\x7e\xce\x76\x87\xc1\x09\xe0\xd7\xc0\x8e\x77\x53\x99\x0a\x2b\xb1\x7e\xca\x8a\x4a\xf3\x6d\xd4\xe1\xdc\xaf\x4c\xd0\x92\xd8\xff\x72\x62\x06\x8d\xd7\x72\x6b\x8d\xe5\x2b\x54\x72\x5d\x9a\xd7\x6b\x1e\x38\x63\x7b\x29\x68\x0d\x53\x1c\xe4\x89\x81\xcb\x1e\xae\xe0\x3a\x5d\x36\xc5\xd3\xec\xc3\x52\x97\xba\xae\xa5\xd9\x2e\x8f\x72\x15\xa5\xa8\x61\x32\x28\x42\x8d\xb0\x9e\x7f\x7e\x18\xd8\x83\x9c\xf8\x96\x6e\x1d\xa0\x79\x3a\xd7\x4e\x98\x73\x02\x9c\x10\xc1\x03\xa1\xdd\xaf\xc3\xd0\x7d\x83\xe8\x56\x2d\xcf\x7c\x9f\x07\x67\x30\x63\x47\x0b\x10\x50\x68\xa3\x78\x59\x68\xe8\x43\xff\xb8\xb9\x20\x8a\xe9\x52\x0a\xcd\xba\x4a\x5f\x03\xfa\x61\x5b\x26\x8c\x4e\xb0\x78\x62\x4c\x87\x52\x6a\x03\xc9\xb2\x43\x3c\xde\x8d\xa2\xdc\xf9\x57\x20\xba\x45\x8b\xc2\x72\xd0\x66\xc3\x72\x4e\x0d\x2b\x76\x2e\xee\x49\x23\x61\x9e\x96\x06\xe6\xd4\xb9\x80\x16\x23\x6b\x2a\xf2\x82\xa9\x76\xfe\x76\x27\x04\xe6\x9d\xaa\x81\xf2\x29\x18\x71\xf3\xe0\x51\x9a\x65\x52\xe5\x0e\xef\xcb\x4d\x1d\x48\x23\xd8\x3a\x63\x4e\xde\x83\xc6\xdc\xec\xde\x20\xed\x83\xb2\x14\xe0\x28\xd2\xad\xa0\x1d\xd4\xc2\xa9\xb3\xd8\x11\x1e\x31\xbc\x10\x29\x1d\x54\x5c\x30\xa3\xf9\x9f\x0d\x78\x62\x06\x00\xb4\xeb\x16\x86\x02\xfe\x61\x28\x16\x11\x6b\x63\xc6\xa4\x25\x9f\x27\x29\xf9\xc4\x29\xc9\x29\x46\x75\x42\x3a\xf2\xb9\x92\x91\x13\x52\x91\xc9\x52\xc6\x01\xcf\x4e\x9f\x88\x9c\x92\x86\x1c\x87\x2a\x22\x49\x49\xc8\x9d\xf4\xe2\x28\xea\x81\x14\xe4\xfd\xe4\xe2\x58\x03\x60\x20\x01\xf9\x48\x6a\x71\x9c\x51\x37\x9c\x7e\xbc\x9f\x58\x1c\x45\x33\x29\xf9\x38\x21\xd5\x6e\x4c\x51\xc3\xa8\x4c\xa5\x68\xfd\x2e\x32\xef\x35\x3d\xeb\x35\x36\xa7\x35\x45\xbe\xc4\xe2\x6e\xd3\xb2\x59\x63\x6d\xfb\x84\x5c\xd6\xb8\x12\xc1\x64\x6c\x26\x6b\x12\xdb\x24\x66\xb1\x9e\x29\x87\xf5\xa9\x19\xac\x09\x87\xea\x5c\xd9\xab\x4f\xcb\x5d\x4d\xcf\x5c\x4d\xcb\x5b\x3d\x61\xd6\xea\x88\xfc\xcf\xc4\x8c\xd5\x53\xe6\xab\x26\x8f\x36\x2d\x57\x35\x21\x53\x35\x25\x4f\x35\x31\x4b\x35\x25\x47\x35\x36\x43\xf5\xf4\xf9\xa9\x49\x5b\x11\x9b\x57\x10\x9d\x55\x90\x9e\x53\x90\x9c\x51\x70\x9e\x9c\xd4\xd3\x67\x13\x9c\x34\x97\xe0\xc9\x99\x04\xf1\xb9\xa8\x67\xc9\x44\x1d\x9f\x87\x7a\x16\x3f\x5e\x44\xae\x44\xbc\x77\x2e\x36\xa7\xeb\x3c\x19\x5d\xe7\xca\xe7\x7a\x5a\x36\xd7\xd9\x35\xca\x53\xe5\x71\x3d\x21\x8b\xeb\x9f\x4c\xd2\x9e\x2a\x73\xeb\xd7\x2d\x69\xbf\x84\x0c\x8a\xfa\x59\xa9\xd8\xbd\x19\x6e\xb3\xb8\xe7\x37\xc5\x17\x7a\xbc\xa6\x2e\xb9\x3d\xc1\x6d\xda\xb8\x41\x49\x5e\xf9\x66\xce\x37\x77\xb7\xb5\xbd\x2a\xdb\xee\x4c\x74\x1f\x0f\xd2\x74\x10\xf0\x3a\x35\xf8\xda\xa5\x05\xb7\xca\x69\x56\x8a\x5d\xd9\x99\xb3\x0d\xcc\xea\xaa\xee\x81\x3d\x48\xd8\xa1\x82\xe1\x05\x66\x32\x74\x0f\x79\x2f\xaf\x2b\x35\xe7\x97\x64\x99\x50\x22\x20\x53\x54\xaf\x11\xb7\xca\x3e\x71\xe3\x90\xe2\x8a\x51\x2d\x05\x26\x60\xb7\xe0\xb7\x5c\x93\x92\x6a\x1d\x70\xe3\x38\xa9\xe5\x06\x87\x04\x5d\xdd\xcd\x36\xb1\x95\xa2\x19\x73\x09\xf7\x24\x93\x95\x30\xb9\x7c\x1c\x36\x8f\xa1\x98\xa7\xf6\xfb\x8c\x4d\xf4\x90\x21\xac\xfc\x67\xe0\x27\xf3\x95\x50\xe7\xe4\x03\x5b\x51\x95\x17\x21\x19\xe0\xa4\x86\xac\x4c\x26\x1b\x21\xe2\x46\xbf\xef\x3a\x87\x60\x11\xb0\x01\x84\x0f\x87\xd7\xc1\x33\x57\x3b\x42\x1c\x58\x88\x61\x69\xb0\xef\x5f\x8f\xf4\xa1\x07\x18\xcb\x57\x89\x05\x90\x83\x7f\xaf\x77\xa7\x20\x7f\x86\x66\xeb\x50\xac\x2a\xbd\xa5\xf9\xe4\x90\x9f\x1c\xf2\x93\x43\x7e\x72\xc8\x4f\x0e\xf9\x63\xcf\xe4\x90\x9f\x1c\xf2\x9d\x67\x72\xc8\xf7\x3d\x93\x43\xbe\xff\x99\x1c\xf2\x93\x43\xfe\x9f\xce\x4d\x34\x39\xe4\x27\x87\xbc\x7f\x26\x87\xfc\xe4\x90\x9f\x1c\xf2\xc1\x37\x26\x87\xfc\xd0\xf3\xeb\x74\xc8\x07\x7f\xd2\x69\xdf\x14\x05\xed\xbe\xbc\x03\xaf\x21\xcf\x9c\x03\xbc\x5b\xeb\xc1\x91\x9b\x37\x90\xff\xde\x09\x1c\x74\x9e\xf2\x6e\xee\x56\x9f\x2a\xa4\xa3\x64\x51\x58\x1b\x68\x43\x77\x83\x9d\xe2\x3c\xfe\xff\x6d\xa7\x27\x15\x5f\x12\x21\xf7\xea\xe3\x82\xdf\x1b\xfb\x51\xe5\x73\xf2\xb1\xdf\x08\xe5\x2b\x21\x15\xf3\x94\xb9\x58\x5d\x61\x51\xa7\xba\x5f\x9c\x91\xae\x28\x45\xf7\xa3\x17\xff\xf3\xbf\x17\xfd\x6c\x77\x08\x56\xff\x22\x85\xe2\x62\xa4\x75\xc8\x99\x3a\xca\x91\x1a\x4a\x9e\x38\x95\x13\x35\xf6\x3a\x8a\x74\x9e\x9e\xc3\x71\x9a\xe8\x34\x8d\xd2\xbc\xa2\x1d\xa6\x6d\x67\x68\x90\x6a\x84\xb3\x74\xcf\x11\x1a\xa1\x6c\xc4\x3a\x4a\x5b\x4e\xd0\x20\xd5\x18\x27\x69\xd7\x01\x1a\x5e\xd1\xb0\x83\x74\xdf\xf9\x19\x9e\xfc\xb0\x73\x34\xde\xf1\x19\xe9\x9f\x49\xd0\x02\xe2\x4c\xde\xa8\x6b\x2a\xa5\xd1\x51\x72\x8b\xa3\x88\xea\x9e\x89\xcd\x8d\xe2\xf2\x5a\xc7\xb4\x35\x8a\xad\xc5\x19\xa7\xde\x45\xf8\x8e\xcf\xe3\x37\x8e\x15\xa9\x31\xda\x7d\xb2\xaf\x38\x4a\xfa\xc5\xfb\x89\xdb\xfe\xd9\x18\x41\x1d\xe3\x23\x8e\x3e\x65\x09\xbe\xe1\x74\xbf\x30\xec\x77\x58\x02\x8d\xf3\x09\x47\xca\x9b\x73\xf8\x82\xc7\xfb\x81\xd3\x7c\xc0\xf1\xfe\xdf\x13\xf9\x7e\x13\x4d\xb4\x04\x9f\xef\xa9\xfc\xbd\x67\xeb\xd3\x11\xb5\x46\xb1\xfe\xdd\x94\xca\xd3\x91\x7e\xdd\x18\x9f\xee\x69\xfd\xb9\xd1\x4b\x1d\xe3\x5d\x88\xf2\x2c\xa4\x79\x15\x92\x3c\x0a\xc9\x7e\x5b\x22\xc3\x01\xbc\x78\x4f\x42\xdb\x4b\x10\x24\xfb\x24\x2f\xc2\x93\x3c\x08\x71\x7e\xda\x54\x1f\x2d\xfa\x5f\x83\xd3\x4e\xf5\xcf\x46\xee\x7e\x8c\x10\x08\xfa\x43\xa2\x0e\x74\x62\x6b\x9e\x11\x4d\x79\x82\xad\xc0\x93\xda\xf1\xb4\xac\xfd\xa0\x8e\xf0\xd9\x4a\xc6\x9f\x56\x41\x8d\x6e\xbb\x93\xde\x70\xc7\xb5\xd3\x19\x5c\xb9\x93\xb4\xda\x39\xed\x8a\xa4\x34\xd6\x49\x6f\xa9\x33\xc6\x14\x0a\x34\xd3\x89\xb6\x85\xe2\xda\xe8\x74\x17\x7f\x90\xe6\xe7\xdd\x98\xa8\x48\xce\xa8\x28\x4e\xa0\x7a\xea\xe9\x23\x38\xe3\xa3\x37\x67\xb3\xeb\x22\x22\x36\xf1\xdd\x66\xd3\xa2\x35\xbf\x62\x3d\x2a\x22\x2a\xf3\x4f\xa8\x47\x7d\x3e\x8d\x23\xbe\x6d\xcd\xa8\x86\x35\xd8\x8e\x66\x70\xa1\x12\x5a\xd5\x74\x1b\xd1\xfc\x3a\x35\x8e\xe0\xae\x09\x99\xb3\x7b\x56\x80\x2b\xbd\x6f\x0d\x68\xee\x5d\xd0\x77\x11\xe2\x30\xe2\xf0\xee\x6d\x7e\x6b\x08\x58\xef\x59\xfb\xff\xc2\xfd\xf7\x47\x66\x90\xcd\xeb\x0b\x5f\x82\x17\x7b\xc9\x8d\x35\x31\x29\x4c\x70\x4e\xee\x8f\x50\xc4\x52\x8f\xfd\x77\x91\x7d\xf3\xf2\x52\x93\x82\x2e\x58\xa1\xf7\x3f\xb0\x60\x60\x9d\xe4\x55\x81\x4d\x4b\xc0\xff\x8d\x1f\x1b\x2c\xdf\x93\x94\x29\x00\x45\xb7\x20\x37\xe1\x9a\x6a\xcd\x57\x62\x66\xd9\xca\x7e\xe5\xba\x8f\x83\x82\x3b\x5e\x2a\x2e\x15\xef\x2f\x8a\x7e\xe0\x19\xf1\x2f\xe0\xc1\x99\x93\x1f\xa9\xe2\xb2\xd2\xbe\x62\x55\x26\x37\xa5\x14\x50\xc8\xbf\x1a\xe8\xde\x61\x9a\x82\x72\xb0\x3d\xae\x58\x7d\x4d\xbc\x16\xd6\xbe\xfc\xe8\x9d\xfb\x4b\x2f\xc5\x9b\x7c\xc3\xa1\x01\x4d\x2b\x1a\x0a\x89\x31\x82\x2e\x0a\x86\xc1\x97\x52\x61\x25\x2c\x3b\x34\xe5\xfb\x95\x30\x63\x86\x2e\x96\x66\xa4\x08\x85\xa7\xf5\x77\xb2\xe6\x3b\xbe\xf1\x80\x6e\xfd\xbc\x9f\x37\xed\x67\xfd\x7c\x5e\x15\x54\x6b\x7b\x15\xb8\xd4\x26\xbe\xf2\x3d\x85\x60\x7d\x31\xca\xd5\xfc\x6b\xbf\x29\xe1\xe8\xf5\x5d\x1c\x31\x62\x24\x2c\x42\xca\xfd\x51\x47\xb1\xcd\xed\xb2\x55\xb6\x8e\x70\xd7\x52\x42\xfb\x1d\xbe\xd4\xcd\xe8\xc9\x05\xf2\x11\x70\xf5\x2c\x53\xdc\xf0\x8c\x16\xfd\xcd\xf0\xad\xee\xec\x5f\xc9\x8a\x4a\x1b\xa6\x9a\xb7\xc0\xa0\x34\x8f\x12\xbf\x4e\x0b\xf2\xc0\x76\x8f\x52\xe5\x3a\x50\xee\xce\x8f\xb0\x59\x7b\x6d\xfc\x10\xad\x12\x0b\x1d\x14\x30\x64\xab\x36\x4c\x91\x05\x0b\x15\x7f\xdc\x23\xb2\x9b\x93\x1b\xb1\x73\x95\x76\x45\x5b\x0f\xc8\xd9\x92\xbb\x46\x4f\x50\xdb\x6c\x88\x33\x69\x97\x89\xdc\x29\xf7\xa3\xa3\xa8\x45\x1e\x29\x1c\x38\xcc\x47\x32\x6f\x4e\xa1\x47\x1f\x78\xcc\x80\x54\x04\x03\x6f\x70\x3a\x15\xc3\x68\xa6\xff\x73\x1f\xeb\x05\xaf\x00\xc5\x68\xce\x4f\x08\xb0\xd0\x4c\x41\xe5\xf9\x9a\xee\x00\xc8\xa0\x9b\xe2\x06\x48\x8b\x8d\xdc\xfa\x6a\xca\x9e\x12\x13\x79\x29\xb9\x95\x1c\x6d\xf8\xc5\x60\x3c\xef\x68\xb9\xbd\x63\x48\x8d\x7a\x75\x3f\x74\x96\xa1\x9f\x3b\x01\xaa\x61\xe7\xb6\xeb\xc7\x6a\xf4\x60\x32\x06\xa4\xdc\x01\x56\xe3\x83\xff\x42\x0b\xac\x31\x21\x30\xda\xcf\x84\xc0\x98\x10\x18\x13\x02\x63\x42\x60\x4c\x08\x8c\xbe\x5f\x4d\x08\x8c\xfe\x11\x4e\x08\x8c\x09\x81\x71\xf0\x4c\x08\x8c\x09\x81\x71\xec\xa7\x13\x02\x83\x4c\x08\x0c\xff\x4c\x08\x8c\x09\x81\x31\x21\x30\x26\x04\xc6\x59\x56\x64\x42\x60\x4c\x08\x8c\xee\x33\x21\x30\x26\x04\xc6\x84\xc0\xd8\x7f\x26\x04\xc6\x84\xc0\xd8\x5b\xec\x53\x20\x30\x7c\x55\xcc\xde\xcd\xda\xf7\xee\x97\x95\x61\xe4\x83\x7f\xab\xe6\x2d\xdf\x41\xdb\x5e\xa2\x19\x55\xe1\xae\xb1\x31\x92\x15\x7a\xbf\x0f\xb2\x51\x1a\x38\x84\xc4\x4b\xbf\x2e\x7f\xbe\x85\x81\xb4\x7c\x34\xd8\x3e\xeb\x13\xf0\x13\xc5\xee\xc0\x10\x12\x84\xe5\x19\xfc\x7e\xbd\xe0\xe8\x67\x1a\x91\x66\xdc\x45\x66\x60\x99\xca\x99\xfb\xf4\xac\x26\x3f\xab\x77\xa0\x17\xac\x41\x62\x8f\xb5\xf3\x9f\x7d\x0d\x3b\xf1\xc1\x0d\x65\x7f\x2f\xdc\xd9\x1e\xbb\x17\x9e\x8d\x21\x7c\x5d\x7f\x83\x6b\x22\x37\xdc\x40\xb3\x5b\xd9\x69\x14\x36\x5c\xd0\x82\x9b\x8e\x7b\xd6\x71\x0f\x84\x72\xa9\xc1\xea\xa9\x75\x99\xbf\xc8\x06\x7b\x4d\xaf\x54\xac\x9e\x5b\x2b\x3e\xc0\x05\x33\x1f\xc7\x77\x20\x99\x13\x8a\xb5\xcf\xcd\x6d\xc1\x9f\x78\xdc\x93\x1a\x89\x07\xf1\x9a\x52\x0d\x36\xe0\xba\xa4\xc6\x12\xb5\x32\xac\xfe\x61\xbf\xc1\xe2\xbf\xdf\x03\x75\xe8\x27\xde\x4b\xd2\x47\xe4\x1b\xd2\x83\x8b\x33\x70\x64\xac\x25\x04\x08\x0d\x29\x0c\xfb\xd4\xab\xbd\x75\xcf\xd4\x7d\xf7\x25\x62\xcd\x30\x4d\xe0\x02\x63\x5b\x56\xd4\x44\x09\x35\x46\xf1\x45\x65\x06\xee\x60\x6b\xda\x64\x72\xb3\x71\x78\x25\x0f\x90\x00\xcc\x93\x9e\x93\x46\xeb\x6d\xdf\xd1\x00\x00\x98\x13\x72\xcf\x86\xdb\x25\xb6\xc7\x0d\x27\xd2\x2f\x1c\xb0\x3d\xc4\x1a\x19\xcd\xd6\x0e\x3e\xf5\x94\xf8\xfe\x52\x7f\xa7\x64\x15\x5f\x32\xfb\xe2\xa6\x06\xfd\x58\x13\xc5\x1d\xcd\x82\xac\x2c\x15\x3c\xf6\xb4\x2c\x0b\x1e\xd0\x5e\xec\xd9\x2e\x8a\x66\xe5\x34\x81\x16\xec\x00\x4b\xbb\x97\x9b\xba\xf3\xad\x5d\x0c\x77\x81\x04\x83\x3f\x7f\xab\x16\xac\x60\xd8\xa0\x7b\x0d\x3a\x2b\xd4\x61\x7e\xb4\xe4\xd7\xbc\x44\x2d\x99\x9a\x9a\x34\x98\xc3\xf6\xcf\xc3\xb1\x5a\x77\xdf\x97\x32\xff\x86\xfc\xa7\xb0\xba\xd4\x47\x24\x6b\x0d\xbc\xef\x6e\x5f\xd7\x47\xc0\xfe\xea\xdb\x7b\x58\x4e\xf2\xbb\x61\x2d\xd7\x52\xd0\xcc\xac\x78\x4e\x16\x18\x39\xd7\xcc\x90\x67\x82\x3d\x62\x48\xde\xf7\x5f\x24\x9d\x3e\xc0\x83\x24\xfd\x28\x60\x42\x76\xd0\x6e\x28\xcf\xc9\xef\x71\xc4\x25\x53\x1e\x60\xb7\xb0\x52\x9a\x2a\x46\xde\x7f\xb8\x1c\x9e\x3c\x60\x9e\xd4\xe3\x4c\x3d\xce\x66\xb3\x99\x9d\xff\xed\x92\x54\x02\xfa\x95\xdb\x81\xf9\x35\x87\xaf\x5b\x11\xb1\x91\x39\x5f\x06\xea\x58\x77\x76\xc5\x9e\xa3\x66\x68\xc0\xda\x54\xec\xdc\x8c\xe7\xfd\x00\xb5\x8e\xfa\xf8\xc7\x3f\x3c\xd9\x0b\xa0\x2a\x71\x93\x78\x16\xec\xaa\x5a\x06\x30\x12\x40\x0f\x76\x5e\x4c\x18\xb5\x03\x44\xd3\x41\x2d\xed\x61\x0b\x54\xc9\x0c\x2a\xd7\xfc\xa0\xed\x25\x8d\x4d\x65\xeb\x53\xcf\xdd\x9a\xcf\xc9\xf7\x74\x47\x68\xa1\x11\x17\x3b\x00\x3b\x22\xd8\xbf\x74\x4f\xe0\xcd\x09\x5c\x11\x18\x2f\x5c\x48\xb3\xde\xff\x41\xb0\x9f\xfd\x1d\xf8\xf4\xda\xaf\x5c\xb5\x20\x4e\xf5\xfd\x70\xe4\xdb\xc3\x2c\x41\x1f\x98\x26\xa5\x62\x19\xcb\x99\xc8\x98\xf3\x6a\x51\x13\x56\xaf\xc9\x79\x38\xe1\x9d\x14\x1f\xa4\x8c\x77\x09\xdd\xb6\xc0\x97\xae\xeb\x6c\x73\x2d\x80\x29\x6c\x59\x84\xea\x80\x4b\x48\x48\x31\x03\xc8\x4e\xa5\xdd\xbd\x8b\x0d\xe7\x0f\xce\xda\x96\x16\x3c\x77\x50\xca\x61\x2e\xd8\xd0\x15\x23\xd4\xd4\x4c\x65\xaf\x21\xa1\x2b\x28\x78\x6f\x95\x34\x43\x72\xc9\x1a\xe8\x0e\xd5\xe4\x87\xdb\xd7\x83\x24\x5f\x90\x67\xd0\x12\x1b\xce\xee\x92\xf2\x02\xa2\xd0\xd0\xb9\x75\xaf\x31\xec\xd2\x93\xb7\x53\x19\xa4\x09\xfc\x4d\xa4\xc2\xce\xf6\x57\x44\x48\xec\x7d\xe0\xe6\x69\xa5\x96\x97\x70\xce\x15\x1c\x2c\x18\xdf\x3d\x2a\x63\x8e\xc3\xb0\xaf\x4d\xe4\x9f\xeb\x38\x0c\x4d\x34\xae\xc1\x3f\xf0\xf4\x0f\x9a\x0d\xf6\xcd\x3e\x10\x6e\x3f\x9c\x58\xb8\xb5\x55\x21\xcb\xe0\xdd\x15\x42\x4e\xdd\x30\x43\x73\x6a\x86\x8f\x09\x0a\xc4\x06\x25\x18\xb9\xd7\xc3\x11\x9c\x61\xb1\xd8\xb7\xd7\x83\x34\xc3\x7c\x70\x54\xf4\x05\xae\xcf\x2f\x23\x16\x35\x7b\xcb\x45\xf5\x09\x15\xdb\x78\x97\x97\xe5\xa3\xfb\x37\xf0\x2a\x36\x1d\xf9\x64\x9c\xea\x85\x7a\x62\x7e\xa8\x0b\x0e\x9f\xeb\xdb\xce\xde\xef\x37\xd4\xf0\x52\x0e\x84\x85\xd5\x1b\x01\x6f\x3e\xcc\x4d\x8a\x8a\x5c\x6e\x0e\x46\x69\xef\x20\xd0\xb2\x5b\x1e\xd2\x36\xa7\xc5\x70\xd3\x2f\x55\xe2\x24\x5e\xc0\xb1\xd1\x03\x30\xb3\x92\xc2\x07\x6f\xc1\x30\xe3\xba\xde\x1d\xb4\xd4\x20\x59\x28\xde\xdc\x20\x4d\xec\x20\x6a\x3e\x24\x25\x7a\xa0\x64\x7f\x5f\xfa\xa3\x73\xfa\x20\x0b\x86\x19\x58\x7e\x52\x96\xc4\x57\x35\x27\xf8\x61\xca\x9c\x3e\x5a\xab\xb5\x33\x27\xb0\x63\xbf\xa6\x39\x55\x81\xeb\xef\x60\x4e\xf6\xbe\xec\xce\x09\x2e\xad\xaf\x67\x4e\x51\x3e\xcd\xb6\x99\x0e\xf6\x4d\xbc\xec\xbe\x21\x05\xd7\x70\xd9\x83\x79\xaf\xdb\x22\x1b\x70\xfd\x5c\x41\xee\x8d\x0c\xd6\x61\x45\x50\xf8\x9e\x38\xbd\x02\xa3\xdf\xb9\x53\x0f\xd6\x28\xd0\x51\xa5\x54\x7c\x43\xd5\xce\x1a\x60\xf3\xc3\x4b\x41\x48\x3f\x64\xaf\x35\xd2\x3c\x0f\xf7\x99\xb2\x96\x67\xd4\x26\x45\x60\x20\x63\x6f\xdf\xd8\xfb\x37\x0e\xb1\xa6\x77\x3a\x33\x45\xfc\x16\xdf\xe3\xef\xc1\x15\x46\x68\xbd\xdf\x82\x6e\x98\x2e\x69\xc6\x72\x4f\x11\x50\x97\xa1\x09\x37\xb9\x85\x77\x32\x77\xf9\x5c\x95\x68\x62\xd9\x9e\xd6\x33\xe7\x54\x89\xd3\x1f\xdd\x9d\xfe\x9c\x6c\xf8\x6a\x6d\x6a\x8b\xa3\xa0\x95\xc8\xd6\x4f\xdc\xa5\x23\x8b\xe1\x72\xc5\xec\xb9\x7f\x60\x4a\xb0\x82\x94\x54\xd1\x0d\x03\x50\x50\x94\xe5\x1d\x0f\x36\x8d\x03\x9a\x1e\xc1\xd0\x2d\x09\xf5\x9f\xd9\x39\x10\x70\x58\x0a\xc5\x47\x9b\x23\x01\xa6\x9d\x81\xfd\x08\x2a\xc8\x79\x47\x16\x07\x2c\x8d\x00\x95\xc6\x00\x4a\x93\x2a\x21\x0f\x1f\xcb\x47\x2e\x72\xf9\xa8\xc7\x28\xcf\x3f\xe1\xab\x5e\xb7\xcb\x6a\x27\xf3\x9e\x02\x3d\x38\x95\x96\x72\x7d\x54\x81\x96\x38\x30\xdf\x59\x8e\x46\x8b\xe1\x7d\x73\xc6\x8b\x5b\x2b\x2d\xe6\xbf\x10\x65\xf7\x14\x9a\xed\x6a\xa3\xe9\x2b\x65\xe9\x19\x4e\x8b\xfb\x32\xb1\x09\xdc\x77\xdf\xdf\xdf\x74\x5f\xb7\x8a\xc7\x23\xe4\x82\xda\x19\xdb\xbf\x37\x19\xd2\xc1\xf3\xf4\xc8\x16\x6b\x29\x1f\xc8\x33\x1f\xf8\x5a\x71\xb3\xae\x16\xf3\x4c\x6e\x5a\x31\xb0\x99\xe6\x2b\x7d\xed\x58\x73\x66\x67\x10\x4e\xae\xe2\xa2\x00\xd9\xe8\xa5\x37\x64\x7d\x3b\x6f\x00\x0c\x32\xab\x67\x01\x1b\x04\x27\x31\xa2\x77\xdd\xae\xa6\xd0\x5d\x06\x90\x76\x75\x96\x78\x9d\xdb\x1e\xd1\xbe\x8b\x16\xe5\x9a\xba\xc0\x8e\xcb\x59\x83\xbc\xc4\xb5\x14\xd2\xc5\xf1\x11\x8e\xed\x5c\x76\x98\xcf\x1e\x16\x55\xcd\x91\x84\xf9\x2e\x19\x35\x95\x62\x64\x59\xd0\xd5\xc9\x54\xd5\x43\x6e\x1a\x8a\x01\xfa\x27\xc0\x51\xb0\x94\x2e\x5d\xb1\x05\x1b\x0a\xce\xf8\xe8\xb6\xa2\x07\x67\x6f\x4f\xda\x6b\x1e\xde\x9f\xe8\x3d\xd9\x5f\xf3\x20\xe9\xb3\xec\x49\xed\x42\x4b\xde\x0a\x70\xa5\xb9\x17\xad\xac\xf2\x12\xfd\xa8\x6b\x2d\x38\xb9\x83\x1e\x9d\x47\xdd\x6b\xf6\x27\x5d\x17\x5b\xc4\xd1\xde\x73\xc1\x85\xdc\x6c\x31\x14\x0f\x45\xf8\x93\x6e\x05\x72\xde\x9b\x81\x1c\xbb\x1d\xfa\x79\x1c\x79\x38\x62\x1d\x92\xd9\xfc\x43\x9b\xd9\xbe\x04\xbf\x9f\x04\xc0\x80\x49\xfe\x37\x19\x74\xe3\x8d\x46\x31\x5c\xde\x1f\xbc\x77\x44\x6c\x91\xee\xaf\xfa\xc3\xe9\x98\x1f\x51\x9f\x35\xae\xd1\x40\x89\xc3\x22\x19\xaa\x1f\x1a\x68\x08\x83\xba\x30\x0d\x02\xa4\xf9\x77\x37\xd5\x19\xc5\xd1\x04\xca\xc6\x0c\xac\xbe\x91\x05\x43\x08\x4a\x1c\x50\xed\x28\xe4\xe3\x52\xb7\xe9\xf4\x71\x44\xc0\x3a\x3a\x2c\x50\x23\x73\x5c\xbf\x8f\x35\x6d\x38\x0f\xc6\x40\xfb\x5e\x90\x3a\xf8\x97\x41\x8f\x88\xb5\xb1\xed\xfa\x19\xe4\x7d\x28\x0f\xe4\x14\x0a\xa3\x78\x59\x30\xf2\xe7\x07\xb6\xbb\xc2\x2a\x2d\x6c\xb9\x64\x99\xf9\x0b\xa9\x74\x80\x5d\x01\xa6\x66\xb2\x35\x17\x2b\x62\x35\x36\x6a\xa4\x22\x7f\xf6\xff\xeb\x2f\xfd\xa7\x22\x4e\xc1\xc3\x71\x24\x98\x92\x6f\xe0\x85\xbd\x9a\x2c\x38\x6d\xa4\x65\x97\x0b\x46\x1c\x3a\xb0\x6f\xa0\x68\xc4\x86\x51\xa1\x7d\x2d\xa5\xa2\xe8\x90\xd2\xae\x94\x4f\x24\xc2\x8a\x78\x40\x9e\x47\x93\x50\xc5\xc8\x3b\x79\xef\x30\x39\x57\xe4\x4e\xb1\x25\x53\xcd\xbf\x04\xa3\xc2\x84\xbc\x93\x6f\xb0\xe0\xc1\xf0\x6c\x22\x85\xcf\x03\xeb\x2d\x9b\x84\x4f\x67\xa9\xff\xc6\x76\x5e\x3e\xe0\xaa\x3c\xb0\x5d\x13\x85\x6d\x0e\x42\x68\x51\xd0\x97\x47\x8c\x9c\x0f\xae\xf9\x03\xdb\xa1\x11\x15\xd6\x9d\x1e\x70\x64\x80\xfa\xb9\x6a\xd8\xd2\x23\xa3\xdf\x7c\xe2\xda\xe8\x7f\xc5\x43\x95\xc9\xcd\xc2\x35\xc8\x0e\x50\xc5\x61\x79\xf6\x81\x91\xf9\x8d\x14\x39\xfc\x27\x0c\xf1\x14\x1b\xe1\x87\x9c\xb0\x1b\xef\xfd\x2c\x15\x2b\x15\xd3\x60\x1f\x50\x3b\xa2\x4b\x4d\x14\x2b\x50\x24\xad\x79\x19\xba\xa6\x64\x73\x9f\xcf\xc9\x8f\xb4\xe0\x79\x3d\x1a\xe4\x58\x5c\x3d\x98\xf3\x9b\x7f\x54\xb4\x08\x9d\xa3\xb6\x76\x84\x2f\x78\x12\x76\x8b\xfe\x51\xf1\x2d\x2d\x18\x66\x89\x3f\xf2\x22\xcf\xa8\x0a\x31\xfd\x52\x2a\x5f\x4c\x4a\xbb\xba\x10\x00\x61\x22\x19\x15\xb5\x28\x6c\x38\xc7\xda\x49\x21\x1e\x24\x25\x55\x86\x67\x55\x41\x15\xb1\x72\x63\x25\x55\xa0\xfe\x43\xec\x7d\x5e\x1f\x83\x08\xcc\xfa\xbe\xf0\xdf\x7f\xb7\xbd\xb7\x66\x5d\xb7\x72\x0f\x4e\x0f\xf1\x07\x9d\x43\x49\x9e\x75\x8b\xcf\xc9\xa5\x97\x8f\xb5\x48\x09\x49\xb3\x16\x62\xb4\xa3\xa8\x61\xa5\x9e\xfc\x79\x73\x2b\x35\x32\x22\xc4\x2c\x7f\xdd\x79\xf0\x4d\xbb\xb4\x09\xc0\x9e\xdc\x78\xdd\x21\x74\x9b\x1c\x96\x05\x28\x3c\x96\x52\xb1\x2d\x53\xe4\x59\x2e\x81\x22\xdb\xf2\xcc\x3c\x9f\x93\xff\x97\x29\x89\x15\x40\xd8\x8a\x42\x86\x17\x1e\xe9\x00\xd1\x1a\x7a\xd6\xb4\xbc\x7e\x41\x9e\x01\x51\xc2\x37\x1b\x96\x73\x6a\x58\xb1\x7b\x5e\x83\xd6\x23\x6a\xbd\x9c\xde\x6f\x1d\xe1\x4c\x3c\xe2\x48\xec\x88\x74\x57\x42\xa9\xcb\x3a\x4e\x75\x08\x4a\x12\x2f\xad\x1b\x09\xcc\xb5\x3b\xfb\x1d\xab\xc1\xd7\x26\x72\x02\x3b\x9a\xed\xfe\xcb\xf2\x2e\x25\x8a\xad\xe0\xdc\xe2\x59\x3c\xc1\xa9\x8d\xd6\xc1\xfb\x7c\x8f\x03\x04\x7a\xff\xa4\x58\x59\xf0\x8c\x1e\xc8\x87\x2e\x0a\xb4\xc9\x63\xe1\x42\x1b\x2a\x32\xb8\x38\x49\xce\xca\x42\x62\xa1\xa2\x3b\xa6\x32\x29\xe8\x7f\x18\x45\x5f\xff\x75\x4e\x3e\xf4\x90\x25\xe4\xe5\x7f\x9a\xff\x34\xb3\xd9\x5f\xec\xff\x7b\x8d\xef\x5b\x8a\x39\x2d\xa4\x60\x5d\x32\x0d\x15\xf2\x17\xfb\x5e\xe7\xad\x03\xc2\xdd\x57\x5d\x11\x3b\x8c\x49\x34\x06\x62\x93\x89\xbe\xa1\xf6\xef\x7a\x1f\x71\x38\x94\xa4\xd2\x7f\x00\x9c\x3d\xf0\x91\x6d\xca\x82\x9a\x03\xe6\xef\x46\x1d\xba\xbf\x05\x9d\x5a\x38\x8f\x2c\x05\x5c\x44\x83\x4b\x87\xa5\x75\xc4\x0f\x26\x0c\x75\x31\xb0\xb0\x91\xd4\x8c\x58\x13\x7e\x41\x0f\x6a\x45\x0e\x29\xbc\xde\xf2\x3f\x76\x58\xf7\x6c\x34\xd8\x22\x95\x3b\x16\xba\xbc\xd4\xf5\xcb\x47\x6d\xab\x15\x37\xf3\x87\x3f\x81\x61\x95\xc9\xcd\xa6\x12\xdc\xec\xae\xa1\xd0\x23\x5f\x54\xf6\x4e\xbf\xce\xad\x45\x7d\x4d\x4b\x6e\x0d\xac\x2d\x13\x68\xbb\x6c\xf2\xdf\x78\xba\xc7\x6c\xaa\x90\xf6\x0e\x85\xe2\x86\xcd\xa9\x33\x97\x5d\xbd\x69\x46\xe0\x76\xb6\x72\x75\xad\x2a\xc5\x72\x50\x11\x51\xfc\x6c\x68\x49\xb4\xb1\x37\xd6\x40\x14\xc1\xac\x41\xd0\x60\x32\x82\x37\xa0\x76\x1e\xf6\xb4\xd8\x11\xf6\xc9\x30\x65\xd9\xc6\x48\x59\x60\x79\x18\x33\x54\x27\xd5\xde\x39\x8a\x19\xc5\xd9\x96\x11\xaa\x16\xdc\x28\xaa\x76\xad\xbd\xfc\xb8\x66\x3b\xd0\xb7\xec\x75\xf5\x8f\x8a\xa9\x1d\xf8\x2a\x86\x4c\x82\x46\x90\x82\x96\xa0\xb6\x2c\x27\x8f\xd6\x40\x41\x70\x30\x98\x68\xc0\x35\xfa\x80\x55\x8e\x5b\xe1\x95\x66\x6a\xb6\xaa\x78\xce\xae\x5b\x1b\x3a\xb2\x34\xeb\xe0\x9f\x75\x8f\xe3\x7e\x8f\xf9\x5d\x28\x06\x8f\xa4\xf3\x47\xe4\x4c\x63\x7e\x18\x5b\xd3\x2d\x97\x75\x75\x0b\x77\x5a\x8f\xdf\x07\xa7\x3d\x29\x76\xf4\x33\x2a\xf2\x19\x96\x24\x1b\x73\x60\x9c\x98\xbc\xbd\x8b\x73\xd5\xd4\x3f\xf7\xd7\xf5\xed\x9d\x3d\x50\x0a\xf2\x4f\x3b\xf3\x1f\xe4\x18\xae\x49\xa5\x2b\x5a\x14\x3b\x82\x05\x78\x59\xee\x50\x59\xc5\xce\xeb\x2e\x28\x9f\xe1\x2e\xa7\xc2\x7f\x64\x88\x62\x23\xe4\x37\x54\x38\xe2\xe8\x73\xb6\xac\xcc\x05\xf8\x85\x16\xae\x5a\xa8\x06\x3d\xcf\xea\x53\xbd\x24\x17\xac\x06\x94\xd5\x08\x08\x37\xb9\x7f\x6d\xb4\x81\x2b\x57\x5f\xb4\x61\x8c\x3e\x71\xed\x1f\x50\xe2\x96\x94\x17\x1d\x4f\xa3\xb5\x21\x5c\x91\x4b\xcc\x66\xc8\x89\x59\x2b\x59\xad\xd6\xae\xe8\xe5\x80\x85\x87\xe6\x52\xcb\xba\xbf\x78\x27\x05\xbb\xb8\x72\x05\x28\x51\x7a\x91\x67\x17\x17\xcf\xaf\x08\xa4\x7b\x01\xca\x96\xdc\xf6\x97\x8c\x72\xcb\x3d\x77\x94\x60\x74\x8b\xb6\xa3\xd5\xde\x4b\x6b\x46\xf3\xc2\xee\xbc\x9b\x31\x04\xb0\xfa\xad\xd9\x52\xc9\x4f\x20\x0c\x7c\xe1\xc0\x3a\x35\xed\xbd\xb0\x7b\x55\xdb\xe3\x2e\x0b\xe4\x95\xe7\xb5\x7e\xcd\xec\x9d\xcc\xd9\x9d\x54\xe6\x0a\x76\xfa\xad\xa4\xf9\x5f\x69\x61\xb5\x13\xcb\x37\x68\x0e\x40\x76\x9a\x03\x2b\xbd\x71\xc2\x12\xca\x04\xf7\x12\x4d\xcc\x5a\xf4\x93\x9f\x09\x66\x5c\x0d\x47\xff\x6f\xd7\xbf\xd9\x72\x65\x2a\x5a\xcc\x78\xa9\xf1\xa0\x3a\xbf\xa1\x5d\x0b\xde\x9f\x2d\x1b\xbc\x75\xbc\xd8\xbf\xbd\x8b\x73\x1b\xb6\x7e\x8f\x08\x27\x0f\xfc\x68\xce\xaf\xab\x2d\x31\x5c\xd1\x57\xc8\x9c\xe9\xba\xb2\x64\xad\x62\x01\xf6\x52\x63\x26\x7a\x69\x88\x51\x74\xb9\xe4\x99\x43\x88\xf0\x9a\x41\xe6\x90\x09\x33\x50\xcd\xda\x0e\xcf\xdf\x3d\x98\x91\x07\xce\xf3\xbf\x35\xcb\x8f\xb9\x34\x95\x43\x6a\x29\xa6\x4b\x29\x34\x1f\x0a\xe4\x01\xac\x53\xe8\x4a\x61\x6d\x61\xda\x0c\x8f\x2a\xc5\xb7\xf6\xc4\x18\x57\xd0\xdc\x97\xfc\xe5\x1a\x2a\xca\x91\xfe\xc8\x93\xcb\x04\x63\x9f\xe8\xa6\x44\x70\x5f\x7d\x11\x17\x92\xe6\xb3\x85\x63\x43\xe7\xf0\xf7\x73\xb2\xd6\x7e\x2f\x4d\x27\x3e\x9a\xc9\x06\xcc\xb7\x80\x3f\x37\x42\x73\x09\x21\x19\xfc\x9c\x3e\xe2\x82\xdd\xc9\x82\x67\x71\x05\xce\x8f\xbe\x49\x72\x26\xa4\x9d\x17\x24\x8c\x72\xed\x35\x61\x77\x95\xf6\x0b\x77\x23\x89\x92\x95\x61\x2d\x6d\xc7\x6d\xa1\x91\xb0\x71\x33\x2b\xa6\x0b\x2b\xdb\x7c\xed\xea\x47\x9e\xb7\xaa\x0d\xf7\x1f\xf6\x8b\xb7\x12\x2a\x5c\x7b\xcd\xc5\x45\xba\x0b\xce\x84\x21\x4e\xed\xb2\x67\x44\xe4\x84\x6e\x25\xcf\xb1\x8e\x7e\x26\x07\x2e\xb7\xb5\x2c\x81\xe9\xda\xe2\x08\x08\x58\x69\x85\x35\x1b\xac\x3c\xf2\x72\xe3\x8a\x2c\x2a\x43\x14\xd7\x0f\xfd\x0b\x50\x4a\x83\xc1\xd8\x62\x47\xf8\xc6\x31\x57\x5e\xaf\x82\x2e\xb1\x42\xf3\x6a\x4e\x2e\x9c\xd4\xbc\x20\x72\xa1\xb3\x6a\x70\x55\xfb\x26\x6a\x35\xcc\x8c\xba\x3a\xaa\x30\x57\x98\x13\xe0\xe5\xe0\xde\x1b\x14\x0f\x38\x1f\xa7\x13\xae\xe9\x96\x91\x95\x94\x39\x91\x5b\xa6\x68\xe1\x8e\x47\x33\xe0\xb1\x02\x10\x6b\xa5\xbe\x5a\xb3\xec\xc1\x5f\x02\x51\x8c\x79\xe4\xbd\xfd\x22\x99\xf0\x8b\xcc\xfe\x02\xe6\x73\x37\x54\x3e\xc2\x63\xe0\x6a\x01\x77\x98\x39\xfb\xef\x47\xbe\x38\x00\x67\xf0\x99\x80\xde\x83\xe3\xb5\xa9\x92\x93\x05\xcd\x1e\x98\xc8\x9b\xb2\xe9\x8d\x7a\xe2\x07\xda\xcf\xe8\x3f\x59\x21\x6d\xf7\x14\x94\xeb\x96\x41\xec\xc7\xe4\xaa\x47\xb4\xe2\x4b\x6e\x0c\xfd\x43\x05\xe6\x71\xd7\xb7\x0b\x4d\xa0\xe2\xef\xd1\xc1\x1a\xd3\x33\xf7\x4f\x42\x2f\xc5\x37\x47\xc5\x46\x9b\x50\xd6\xef\xf8\x3d\x4d\x65\xfe\xa2\x35\xd6\x58\xad\x78\x5f\x7f\xf1\x72\xed\x23\x7c\xad\x33\xfb\xf6\x7f\x0c\x6b\x88\x2b\x66\x6a\x66\xa8\x77\xfc\xf6\xae\x1b\xec\xee\x36\x55\x18\x60\x2b\x1f\x32\xce\x59\xc9\x44\x0e\x55\x0a\x1f\xd7\xcc\xf8\x1e\x09\x95\xc8\x99\x2a\x40\x3b\xcb\x0a\x59\xe5\x33\x57\x03\x5d\xf9\xc2\x44\xfd\x94\x71\x3c\x3b\x57\xb9\x7f\x6f\xfd\x90\x1d\x28\xfc\x2b\xf1\x97\xa2\xdd\x50\x37\xb3\x7e\x7e\x6d\xa9\xc6\xde\xeb\xc9\x5b\x1a\x1d\xc8\xae\xce\x40\x7d\x56\x5b\xff\x40\x71\x26\x88\x64\xc6\xe5\xe8\x4d\xa5\x0e\xca\x9f\xf6\x34\xef\x41\x7a\x7e\xb0\x4a\x7b\x9c\x36\x76\xd9\x8e\xe2\x62\xd1\xac\x1a\x32\xeb\xd3\x8f\x0b\x6a\x2c\x43\x5f\xc1\x16\x0f\x73\x8a\x62\x76\xa0\x59\xa3\xd8\x78\xc3\xe1\xc8\x2a\x75\xb4\x93\x61\xb2\x50\xc3\x1f\x29\xb7\x0c\xa0\x7a\xd8\xee\xea\xb8\xbd\xd3\x6d\x3b\x26\x48\x32\x6e\x13\xdb\x9b\x15\xe2\xe9\xf9\x45\x52\x70\x1f\xab\x25\xcd\xe0\xb8\xa2\x45\xef\x1b\x5e\xb4\xe2\xfb\xdd\x61\xcd\x96\x5c\xb1\x47\x5a\x14\xbd\x71\xfe\xf3\xeb\x62\x70\x08\xe3\xb8\xcb\x6a\xc8\x5e\xbf\x87\xd7\x1a\x25\x14\x5d\x85\x8e\xcb\x5a\x8a\xf9\xd7\x6c\x0c\xa5\xe0\x16\x9c\xe4\x85\x0b\xcd\xe1\x36\x34\x0c\xdf\x5e\x0d\x60\xa3\x0b\x3f\xe7\x41\xa0\x6b\x39\x78\x97\xc6\x61\x08\xc2\x58\xef\x03\xc8\x45\x83\x77\x01\xd8\x8a\x32\x1e\xa0\x1b\x74\x2c\x35\x0f\x9c\xc5\xba\x18\x17\x79\xfd\xee\xfe\xe7\xb7\x37\x7f\x7d\xf3\x76\x4e\x6e\x8a\xc2\xf1\x43\x0d\xfb\x75\xeb\x75\x5f\xb2\x2c\x14\x85\xb6\x14\x41\x9d\xab\x04\xff\x47\x85\x63\xf5\x47\x7f\x43\xcb\x1a\x85\x76\x69\xad\xeb\xcb\x80\x34\xc0\x87\x0b\xf2\xc6\xa9\xe8\xb0\x63\xb5\x97\xd0\x57\xd3\xb0\x52\xa2\x6e\x2e\xd1\xda\xdb\x10\x5d\x5d\xf7\x7f\x91\x22\x92\xd1\x49\x7c\x6c\x55\x04\x14\x4e\x7c\x0e\xcf\x24\x6c\xa8\x74\x59\x31\x60\x6f\xc2\x2d\x8c\x95\xc0\x9a\x31\x86\x27\xe7\x4f\x31\x5c\xae\x76\xd0\xff\x56\x6b\x96\x7b\x76\xc7\x9c\xfc\x80\x7e\xb6\x50\x20\xda\x7b\xe1\xba\x81\xc3\xfd\x8e\x43\x0d\xde\xbb\x56\x3d\xe3\xe2\xfa\x5e\x8d\x05\x84\x21\xc4\x2d\xac\x55\x5e\x68\x96\xec\x3d\xc3\xa7\xe5\x43\xf3\xa5\x3f\x39\x70\x20\xad\x8c\x9c\x35\x79\xa0\xb8\xe6\x3c\x06\xbc\xe1\xc3\x32\x56\x75\x95\x7b\x06\xaa\x73\x55\x59\xb5\x29\xbe\x08\x51\x5c\x19\xa2\x41\x89\x69\xf7\x16\x3a\x38\xd9\x69\x0c\x97\x3f\x8c\x2d\xae\x16\x1f\xc6\x0d\x57\x49\x3c\x02\x19\x53\x0e\xe6\xe5\xf9\x24\xf9\xc2\x39\xc7\x5c\xc2\x59\x24\x81\x2a\x81\x4f\x8e\xcc\x12\xa2\x19\x40\xf9\x6f\x96\x4b\x2e\x10\x9d\xba\xe4\xab\xa8\xfb\xfc\xe8\x9b\xcd\xed\xe6\xc0\xc1\x4d\xcc\xb0\xff\x5e\x83\x32\x84\x58\x12\x86\x3a\x6a\x4f\xa9\x62\x87\x1a\x60\xbf\x91\x74\x30\x13\xff\xc2\xd0\xe0\xed\x20\x5f\xc1\xef\x06\x37\xfe\xf6\x8e\x2c\xa8\x65\xac\xd8\x09\xc5\x4e\x8a\x24\x55\x7b\x3c\x98\x62\xf7\xd5\x3d\xd7\x82\xaf\x01\x19\x04\xce\x10\xb7\x04\xb7\x77\xde\x57\x84\x93\xd4\x86\x67\x0f\x3b\xf8\x08\x16\xf9\x71\xa1\xc4\x4a\x87\x41\xc9\x0b\x46\xfe\xf2\x82\xfc\x9f\xff\x43\xfe\xfc\x6f\x7f\xfa\xe3\x1f\x5e\xbc\x78\xb6\x94\x8a\xbc\x24\x39\xdd\x3d\xb7\x02\xd2\xc3\x6b\xdd\x32\x92\x7f\xfb\xb7\x20\xc5\x0b\x3f\xc8\x8b\x46\x0a\x37\x35\x28\x5f\xfc\xc9\x7d\xe3\xf7\x64\x2d\x2b\xa5\x9f\x87\x14\x97\xf8\x53\x9f\x9a\x42\xf9\x34\x58\xf3\x50\x6e\x74\xf7\x92\x77\xa5\xbc\x0c\x53\x1b\x48\x9a\x59\x63\x15\xab\xfa\x1a\x69\xae\xee\x88\x62\xcb\x46\x36\x11\x90\x06\x11\x87\x67\x04\xf1\x70\x4d\x30\xe3\xaa\x15\x2c\x69\x82\x22\x83\x41\xe0\xae\x96\x70\xd1\xa6\x76\xd1\xd1\xe7\x1a\x8b\x8f\x45\x85\x4f\x2e\xea\xa1\x5c\xd4\x5a\x02\xf4\xfe\x70\x9e\x59\xbb\x69\xe0\xc3\x6d\x85\x0e\xa1\x88\x74\x63\x99\x0e\x82\x64\x64\xcb\xad\x5b\xab\x8f\xb8\x24\xf5\xd2\xb7\xdc\x67\xae\x41\xe9\x40\x91\x8d\x56\xf9\xc2\x3d\xd7\xdd\x62\xe7\x42\x89\x50\x45\xdb\x37\xa7\xc2\x92\x55\xcd\xa7\xfb\xc5\x2d\xf0\x14\x28\x51\x9d\xb8\xa9\x8f\xce\x09\x49\x9c\x49\x44\xf0\x0f\x61\xa5\x8a\xba\xfe\x9e\xac\x33\xef\xb2\x5a\x14\x5c\xaf\x11\x10\x46\xc1\x59\x26\x97\xad\xdf\x28\x3a\xe8\xb5\x35\x6b\x6a\x6d\x01\x6d\x20\xd2\x6f\xb9\xed\xc2\xf3\xd0\x05\x59\x54\xbc\x40\x7f\x51\xbd\xaf\x1e\x77\x8a\x5b\xdb\x3f\xd6\x46\xe1\xdd\x32\xb5\x73\x11\x16\x50\x77\xc1\x9b\x5f\x73\x58\xd6\xb0\xf9\x45\x9b\x2d\xfb\x8b\x81\x35\x83\xaa\x15\x5f\xa8\xcf\x07\x4e\x25\x00\x5d\x1c\x0f\xc7\x90\x67\xbc\x5f\xf4\x36\x3e\x18\x1f\xdf\xaa\x94\x62\xc2\xa0\x8f\xe2\x79\x60\xe8\x9f\xc5\x82\x76\x1b\xcd\xc5\x6a\x56\xff\x6e\x56\xdb\xd1\x10\x36\x1d\xe9\xd1\x1a\x03\x1d\xd3\x46\x2a\xba\x0a\x80\x9d\xf0\x37\x75\x12\x99\xf3\x16\x82\x68\xd4\xfe\x6f\x6b\xda\x4a\x22\xdd\xa3\x36\x74\x67\xa3\x2b\xe7\x7b\x99\x1f\xbf\xd0\xf7\x80\x39\xcd\x8f\xbb\xfa\x87\x07\x72\xb8\x32\xda\x1b\xf8\x45\x9f\xbd\xe0\x8a\x09\xb6\xc2\x1b\xc9\x65\x6e\xdd\xb4\xaf\x4b\xa6\x34\xd7\x86\x09\x33\x43\xaa\xfa\x37\xce\x37\x05\x43\x98\xbd\x3c\xb6\x95\x03\xce\x90\xa8\x1d\x3e\xae\xa0\xe6\xd4\x50\xf4\x62\x06\xd7\xb1\xe5\x97\xad\xad\x22\xbb\x8a\x3f\xc2\x14\xee\x05\x2d\xf5\x5a\x9a\xd7\x35\x41\xcc\x9f\x3a\x3a\x60\xef\x93\x5e\x01\xa2\x16\xb2\xcc\x5c\x93\x61\x3c\xcd\x78\xfc\x8a\xdd\x1e\x6d\x07\x3d\x39\x4a\x12\x9c\x05\xcd\x41\x86\xac\x36\x0c\x6e\xd5\xa0\x50\x70\xea\x59\x6d\x8a\x29\x80\x35\x78\x4f\x63\xf7\x23\x47\xa9\xb7\xc8\x35\xc6\x30\x0a\x1d\x42\x89\x60\x8f\x9e\x3d\xec\xf0\xe1\xc7\x6d\x47\x6a\x2f\xd4\xcb\x63\xdf\xdd\xbb\xe8\xa1\xd6\x50\x37\x9f\x6f\x8e\x0f\x7c\xdf\x4f\x7a\x94\xee\xde\xb2\x75\x46\xef\x3e\x56\xd7\x71\x5c\xb0\x3a\xd8\xe0\xee\x98\xe3\x5b\x86\x1d\xf9\x5a\xf3\x72\x2b\x4d\x51\xea\x6e\x21\x20\x74\x8b\xf2\x73\x59\xd9\xed\xbd\x22\x8f\xe0\xce\x16\xc4\xc8\xe3\x96\x91\xdb\x80\x0d\xf4\x59\x6d\x06\xe9\x8b\x81\xba\x2b\x6f\x1f\x67\xd5\x5a\x8e\xa3\x64\x21\x8a\x09\x48\x9a\x63\xb2\x39\x08\x24\x2c\xf9\x60\x71\xc8\x6e\xdd\x94\xbb\x5b\x2c\x03\xea\x40\x51\x58\x1c\xd5\xc7\x06\x6b\xf8\x1e\xb6\x37\x86\x64\x1b\x26\xb2\xa1\xe0\xc7\xed\xb2\x43\xf3\x48\x2d\xde\x46\x2b\xfb\x1b\x17\x79\xab\x84\xff\x70\xb8\xd7\x2e\xf1\xcd\xdd\x2d\x8e\x70\x4e\xbe\x95\x0a\xf2\xb3\xa4\x0b\x04\x71\x95\xcf\x4a\x0a\x85\x1c\xec\xda\x5f\xd5\xa3\xe8\x57\x9e\x5a\x25\xa6\xc7\xc6\x52\x1e\x78\x7f\x2f\xd6\x6e\xe6\x0f\x6f\x1a\xb0\x1a\xe7\xa7\xe9\x5d\xdd\xb1\xa3\x19\x72\xdb\x1e\x16\xe6\xd8\x4b\x54\x3c\xf1\x68\x86\x1c\x17\x33\x58\xb7\xa3\x7f\xe8\xa9\x86\x31\x68\xe9\x0c\xd6\xcb\xdf\x2f\x55\xde\x54\x17\xef\xe4\x85\xf8\x62\xe5\x4d\xf9\xf1\x40\x31\xdb\x33\x5d\xa3\xf5\xf7\xc7\x20\x22\x87\x6b\xf3\x9f\x19\x3d\x7c\xa2\x7a\xfc\x5f\x51\x2d\xfe\x88\x46\x0d\xc3\x35\xf8\xcf\xbc\xe2\x27\xab\xbb\x7f\x8e\x9a\xfb\xe3\xea\xed\x37\xe0\xd4\x21\x2b\x3a\xa1\xd6\xfe\x57\xc5\x31\xc3\x78\x6e\x67\xef\x07\x85\xd8\x8d\x2b\xeb\x06\x08\x77\x00\x27\x39\x39\xa5\x5d\xb3\x22\x68\x9a\x05\x3b\xb5\xe0\xa2\x0f\xaa\x14\x92\x25\x90\xb1\xf4\xe6\x93\x15\x92\x3a\x3a\xc5\x7b\xff\xa5\x2e\x60\x13\x87\x5d\xfb\x35\x1c\xaf\xd9\x4d\x1c\x40\xb9\x7d\x5c\xb3\xce\x2f\xc1\x6b\x70\xf3\xee\x75\xff\xa5\x9d\x12\x74\xbd\x19\x18\x14\x0e\xbe\xfe\x8b\xe5\xdb\x01\x77\x5d\x6d\x97\x21\x96\xf9\x0a\x33\x49\x11\xdd\x0b\x39\x32\x2e\x9f\x0b\xd8\x1f\xb2\x4b\x07\x4c\x35\x7c\x1e\x18\xc2\xc0\x91\xe2\x53\x63\xba\x69\x99\xca\x0f\x4d\xa6\x32\xae\x50\x27\x53\xb9\x5e\x94\xb8\xaa\x82\x46\x7e\xa9\x14\x5f\x79\xb2\x14\xdf\xda\x37\xe5\x76\xe3\x68\xa2\xef\xad\xb8\x22\xef\xa4\xb1\xff\x0f\x93\xf6\x42\xb1\x4b\x91\x93\xd7\x92\xe9\x77\xd2\xc0\xef\x4f\xb2\x4c\x38\xc0\x84\x45\x72\xe8\x7b\x4c\xf9\x01\x2b\x1b\xc2\x2d\x08\xbd\xf7\xd3\x8d\xca\x22\x6f\x67\x2d\xde\x0a\x22\x95\x5f\x8d\x3a\x75\x51\xbb\x0f\x78\xad\x5f\x48\x31\xc3\x56\x13\x01\xd2\xbd\x79\x91\xf6\x2b\xed\x35\x6c\x7f\x2c\xb4\xfc\x9d\xa1\xb8\x8e\x17\xe0\x25\xc0\xbf\x80\x85\x50\x16\x50\x5b\x30\x47\x14\xf6\x70\x79\x5e\x62\x57\x8d\x1a\xb6\xe2\x19\xd9\x30\xb5\x62\xa4\x0c\xd7\x4d\x88\x6a\x52\x9d\x56\x0e\x35\x50\xe2\x2d\x26\xa8\xf8\xc0\xfa\xdf\x9f\xd5\xdb\x70\xce\xb0\x23\x5c\x26\x6f\xad\xf0\xf9\x42\x0a\x56\x6b\x00\x78\x17\x6c\x28\xb4\xe6\xf8\x9f\xba\xe8\xc7\xff\x92\x92\x72\xa5\xe7\xe4\x86\x68\x2e\x56\x03\x50\xfe\xf6\x3b\xce\x47\xdb\x26\x6f\x29\x1f\xe4\xf6\x53\x41\x58\xa0\x93\x22\x24\x83\x76\xef\xdc\x2b\xf2\xb8\x96\x9a\x81\xc0\xae\x13\xcc\x2f\x1e\xd8\xee\xe2\xaa\x73\x82\x86\xec\xe2\x8b\x5b\x71\x71\x55\xbb\x2f\x3a\x07\xb7\xbe\xe7\xc0\x5f\x75\x01\x7f\xbb\x98\x1f\x5c\xd3\xfd\xae\xf5\xd0\xf5\xfd\x24\x1d\x0a\x0d\xab\x57\x05\xd5\xba\xaf\x88\xcf\x5e\x97\xbb\x76\x99\x9e\xd6\xdb\x07\x4d\xd4\xb2\x82\xf2\x0d\x6a\x96\x47\x07\x7e\x12\xeb\x2f\xb3\x9f\x3e\xee\x3d\x1d\x64\x5e\x7c\xff\x7b\x99\x87\x67\xdc\xfc\xb4\x2e\x1e\xfa\x08\xd7\xba\x73\x4a\x38\xef\x5a\xcb\x39\x72\x74\xba\xdd\x55\xa9\xeb\x69\x7e\xcb\x0b\x86\x00\x1c\x28\x6b\xb0\xc1\xaa\x8f\x00\xf6\xc1\x4c\xb6\xac\xa8\xfa\x8a\xdb\x72\x81\xe4\xc0\x1c\x70\x72\x18\x8e\xdd\x82\x19\x5a\x23\x26\xc7\x2d\x4d\x14\x33\xfc\x58\xff\xd4\xab\x3e\x4e\x7f\x6e\x9c\x21\xde\xe1\x79\x57\xef\xdd\x8f\xfd\x2e\x82\x05\xcd\x1e\x10\x5b\xcc\xb5\x5b\xa9\xb4\xd1\x87\xc2\x17\x1f\x8f\x84\x77\x8f\x85\x30\x00\x18\xe4\xf2\xe0\xf2\x4a\x41\xac\xec\x99\xb3\xce\x9e\x03\x9c\xa9\x5c\xb3\x0d\x53\x74\x3f\xa3\xb0\x77\x6c\x18\xac\x04\xf5\xe9\x78\x6a\x4d\xd7\xf1\xbe\xff\x6b\x90\x22\x0a\xb2\x7e\x21\x8a\x51\x30\xe3\x05\x53\xdd\x46\xea\x78\x4a\x78\xef\x88\x30\xd3\xf0\x1e\xaf\xdf\xe1\xe1\x74\x7f\xba\x57\xf8\xe8\xde\x50\xc3\x96\x55\x71\xcf\xcc\x0f\x9d\xdf\x1d\x6c\x5d\x17\x2c\xb4\x29\x0b\xb9\x43\xb0\x31\xd2\xc7\xba\xc2\x4e\xd6\xb7\xa8\x7a\x5c\xb9\x62\xe8\x03\x3e\xa0\x0b\xa0\xc4\x1c\x58\xcd\x27\xda\xa7\x44\x96\x94\x2c\x0a\x2e\x56\x38\xf8\x20\xcf\x7f\x68\xff\x1a\x93\x5b\x71\x12\x2e\xa1\x17\xb0\x68\x75\x51\xe1\x81\x34\x49\x9f\x37\xd1\x21\xd8\x9a\xb6\x5f\x46\xfb\xbb\x31\xf6\x28\x54\x9b\x81\x31\xc7\x5c\xdd\x77\xfe\xd7\x7b\xbb\x2b\x55\xce\x05\x2d\x88\xdd\xb9\xba\x8f\x69\x6b\x94\xbd\xd7\x56\x2b\x51\xdc\x93\x6e\x41\x21\x1a\xec\xc8\x8b\x73\xa6\x78\x0c\xde\x7d\x7d\x58\x8f\x23\xb5\xef\xbb\x95\xbe\x6a\xd4\xe0\x00\xf3\x1f\x9f\x55\x0b\xbf\xd8\xd9\xf6\x53\x89\xb9\xad\x95\xb2\x87\x3b\xde\x15\xda\xf8\x1b\x3b\x83\x6e\x15\x0d\x8c\xca\x61\x99\x8f\x43\x6d\xa3\x67\x38\xc7\x34\xe3\x99\x1f\xc7\xff\x15\x18\x32\xa6\xb2\xb7\x5f\xed\x63\x6a\xb9\xc0\x5a\x03\xdf\x31\xe1\x64\xde\xe0\x1c\x0f\x7f\xee\x2f\xa8\x8d\xd4\x86\x28\x96\x59\x8d\x71\xd5\xfc\xd5\xbf\x70\xb0\x0f\x75\x5a\xab\xf7\x6a\xcd\xc9\xad\x21\x99\x54\x98\x8e\x9a\xd7\xe8\x00\xff\xf7\x4b\xdd\xa2\x7b\xd5\x93\x62\x6b\xc5\x06\x6c\x3c\x80\x96\x37\x15\x3a\xe5\xbc\x8e\x70\x73\x77\x0b\x30\xa2\xc3\x32\xf5\x43\xf5\x7b\xfa\xcf\x42\xb9\xa6\xfa\x80\xd3\x7b\xd9\x4b\x31\xaa\x0f\x97\xb7\xe7\xe7\x47\xb6\x75\xef\x9f\x3c\x4b\x92\xed\x4b\x88\x0e\xbf\x6c\xfe\x0d\xf6\x18\x23\x18\x9d\x3f\x63\x89\x15\x96\xb7\x7a\x42\x7b\xf8\x01\xfe\xcb\xff\x1f\x00\x00\xff\xff\xca\x97\x76\x57\xbb\xd0\x06\x00") func kubedbCom_perconaxtradbsYamlBytes() ([]byte, error) { return bindataRead( @@ -664,12 +642,12 @@ func kubedbCom_perconaxtradbsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_perconaxtradbs.yaml", size: 140921, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_perconaxtradbs.yaml", size: 446651, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_pgbouncersYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x5f\x73\xe3\x38\x8e\x7f\xcf\xa7\xe0\xc3\x3d\xdc\x5d\x95\x73\xd7\x37\x53\x53\xb7\x79\xd9\x4a\xa7\xff\x6c\xef\xf4\x9f\x54\xbb\x67\x5e\xa6\x66\xab\x68\x09\xb6\xb9\xa1\x48\x2d\x49\x39\x76\x6f\xed\x77\xdf\x92\x14\x39\x8e\x2d\x91\x80\x2c\x39\xee\x69\xe2\x29\xb1\x24\x12\x04\x40\xe0\x47\x88\x84\x78\x2e\x7e\x05\x63\x85\x56\x57\x8c\xe7\x02\xd6\x0e\x54\xf9\x9f\xbd\xbc\xfb\x7f\x7b\x29\xf4\xff\xac\x5e\xcc\xc0\xf1\x17\x17\x77\x42\xa5\x57\xec\xa6\xb0\x4e\x67\x9f\xc1\xea\xc2\x24\xf0\x0a\xe6\x42\x09\x27\xb4\xba\xc8\xc0\xf1\x94\x3b\x7e\x75\xc1\x58\x62\x80\x97\x3f\x7e\x11\x19\x58\xc7\xb3\xfc\x8a\xa9\x42\xca\x0b\xc6\x24\x9f\x81\xb4\xe5\x3d\x8c\xf1\x3c\xbf\x62\x77\xc5\x0c\xd2\xd9\x05\x63\x8a\x67\x70\xc5\xf2\xc5\x4c\x17\x2a\x01\x63\x2f\xeb\x2b\x97\x89\xce\x2e\x6c\x0e\x49\xf9\x0c\x4f\xd3\xaa\x33\x2e\x6f\x8d\x50\x0e\xcc\x8d\x96\x45\xa6\xaa\xf6\x26\xec\xaf\xd3\x4f\x1f\x6f\xb9\x5b\x5e\xb1\xcb\xf2\x81\xcb\x55\x3d\xac\xaa\xaf\xba\xf5\x5f\x77\x7e\x71\x9b\x1c\xae\x98\x75\x46\xa8\xc5\xc1\xe3\x8e\xbb\xc2\x5e\xe6\x4b\x6e\x61\xe7\xf1\x69\xf5\x73\xf0\xe9\x46\x12\x97\x07\x62\xd8\x69\xeb\x7a\x01\x3b\x0d\xa5\xdc\x95\xff\x2e\x8c\x2e\xb6\x32\xa9\x46\x5e\xdf\xfe\x20\xb0\x84\x3b\x58\x68\x23\x9a\xff\x27\x2c\x37\x7a\xbd\x79\xf8\x7b\x2b\xc9\xf2\x1f\x9e\xe7\x36\xd1\x29\x34\xff\x56\xc2\x67\xac\xd6\xe1\xed\xe2\x65\x2d\xe4\xea\x37\x29\xac\xfb\xf9\xe9\xef\xef\x85\x75\xd5\xb5\x5c\x16\x86\xcb\x5d\xb5\x54\x3f\xdb\xa5\x36\xee\xe3\x23\x63\x13\x96\xd7\x1d\x5b\xa1\x16\x85\xe4\x66\xe7\x89\x0b\xc6\x72\x03\x16\xcc\x0a\x7e\x51\x77\x4a\xdf\xab\x37\x02\x64\x6a\xaf\xd8\x9c\xcb\x4a\xbc\x36\xd1\xa5\x0c\xaa\xf6\x72\x9e\x40\x5a\xfe\x56\xcc\xcc\x83\x8d\x3d\xf4\x51\xeb\xe4\x8a\xfd\xf3\x5f\x17\x8c\xad\xb8\x14\x69\x25\xdb\xfa\xa2\xce\x41\x5d\xdf\xbe\xfb\xf5\x87\x69\xb2\x84\x8c\xd7\x3f\x96\x1d\xeb\x1c\x8c\xdb\x0a\xac\xb6\xba\xad\xbd\x6f\x7f\x3b\xd0\x67\x4d\x95\xb4\x42\x37\xed\xda\x7d\x43\x6d\xfd\x6e\x55\xff\xe4\x17\xc6\x32\xbe\x7e\x0f\x6a\x51\x5a\xce\x4f\x3f\xec\x5d\xcb\xb9\x73\x60\xd4\x15\xfb\xdb\x6f\x7c\xf2\xf5\xf7\xff\xfc\x6d\xc2\x27\x5f\xff\x77\xf2\xa7\xdf\xff\xfb\xb7\x87\x3f\xfe\xeb\xcf\xff\xb1\xf7\x4c\x2b\x93\xcd\xcf\x7a\xf6\x77\x48\xdc\xf6\xe7\x66\x5e\x85\xf8\x4e\xb4\x52\x90\x94\xe2\xbe\xd5\x5a\xee\x8f\xa0\xeb\xa9\x4a\xda\x69\x26\xd4\x2f\x16\x4c\xcb\x35\xc6\x84\x83\xac\xf5\x42\xe7\x30\x9e\x5e\xe6\xc6\xf0\xcd\x61\x9f\x85\x5b\x7e\x29\xaf\x77\x3e\xd7\xd1\x6c\xf9\x60\xc9\x2b\xf9\xc1\x14\xe6\xbc\x90\xae\x14\xce\x54\x7c\x6d\xed\x78\xae\x4d\xc6\xdd\x15\x13\xca\xfd\xf4\x63\x67\xfb\xa5\x53\x5b\x3c\xcc\xcb\x5d\x12\x0b\xa5\x0d\x4c\x1d\x37\xae\xc8\x6f\xb9\xe1\x19\xb8\x0e\x99\x7a\x19\xcd\xf8\xfa\x46\x0a\x50\xee\x66\xab\xd1\xd6\x46\x8e\xe3\x36\xe3\xeb\x57\x2f\xc7\xee\xa1\x54\xd4\xb8\x7d\x08\x35\x9e\x42\x73\xad\xe5\x07\x9d\xd2\x6d\x34\xd7\xc6\x05\xd8\xf9\xe1\xff\xc8\xec\x3c\x38\xe8\xf1\xc6\xbb\xd3\x41\x19\x0d\x75\xe1\xa6\x90\x68\x95\x8e\xa0\xb7\x32\x50\xd8\x5b\x30\x42\xa7\x23\xf5\xd1\xea\x4b\x4b\x2a\xe3\xc0\x8c\xdb\x43\x47\xd8\xe1\xe8\x7c\x9e\x93\x31\x2e\x05\xef\xe7\x1d\x1b\x3e\x3e\xb6\xc4\x1b\x52\x03\x9f\x61\xde\xfe\xbc\x9f\x73\xd6\x11\xeb\xd0\xfd\x37\x0d\x54\x78\xe0\xa8\x56\x72\xaf\xb3\xdc\x6d\xa6\x45\x9f\xbb\xb4\x9e\x94\x00\xcb\x28\x70\x60\x27\x90\xcd\x20\x4d\x21\x9d\x34\x20\xe5\x8a\x39\x53\x00\xee\xe1\x06\x0e\x4d\x8a\x1a\x0f\x4d\xe6\x0f\x80\xa8\xb3\x09\x03\xff\x28\x84\x81\xb4\x7d\x08\x93\x4a\x54\x9e\x4b\x95\x14\x3d\x66\xd0\x39\xf2\xc6\x0c\xa6\x90\x18\x70\xcf\x67\x0c\x5e\x36\xbb\x85\x33\xa9\xa7\x50\xcb\xef\xbb\x13\xc4\x73\xf9\x33\xcc\x0f\xae\x7a\x78\xe9\x02\x25\x99\x56\xc2\xe9\x03\x58\xe1\xc5\x4d\x0b\x50\xad\x7e\xde\x0f\x60\xcc\xe2\x84\x38\x0b\xd4\x8a\xd8\xd9\x09\xbc\xc6\x8a\xcb\x62\x80\x16\xde\x18\x9d\x75\xb7\x12\x1e\x07\xab\x51\xf3\x5c\x2c\x3e\xf0\xfc\x67\xd8\x74\xce\x1d\x5a\x93\x25\xdd\xc1\x26\x74\x0b\x6a\x9c\x0d\xf9\x45\xde\xa3\x41\x9d\xd7\x6b\x74\x6c\xa3\x33\xad\x25\x70\xe5\xbd\xdb\xef\x01\x1b\x9a\x94\xc2\xf1\xde\x81\x72\xf5\x8c\x55\x1e\x79\x40\x9d\xb5\x2f\x3a\x7d\x2c\xa2\x24\x5d\xb1\x59\x65\x1d\x86\x6b\x15\x2b\xe9\x6d\xdf\x43\xc8\xbb\x09\xa3\x6f\x06\x96\x7b\xa2\x95\xe3\x42\x81\xe9\x46\x42\x87\xdc\xa2\x44\x9f\x8a\x95\xb0\x87\x3e\xfd\xa8\x36\xb7\x60\xe2\xf4\xda\x6c\xba\x1e\x42\x99\xb6\x42\x0b\xd1\xe9\x79\x1b\x3d\x3b\xa7\x17\xbc\xa9\x37\x08\x0d\xb4\xec\x83\x18\xb9\xd1\x19\xb8\x25\x14\xad\x06\x12\x32\x1f\x58\x97\xab\xe5\xf6\x7c\x0e\xe6\x79\xe6\x81\x54\x0d\x79\xd0\x4e\x43\x48\x2b\xf2\xc9\xa1\xa1\x0e\xc8\x45\x60\x06\x3f\xe5\x06\x9f\x22\x01\x68\xd6\xb7\x45\x3f\x54\x6b\x08\x3f\x6e\x46\x85\x6e\xfd\xba\x60\x58\xaf\xd6\x10\x41\x2e\x0d\xe1\x54\x78\x44\x07\x78\xaf\xf7\xb4\x13\x8c\xf7\x6b\x08\xe7\x05\x1b\x0a\x7b\xc3\xa7\x9c\x04\xa3\x59\x43\x38\x48\xd8\x10\xdd\x16\x28\x10\xb1\xa1\x1e\x1a\x23\x40\xc6\xde\xbd\x50\x35\x86\x83\x92\x4f\xd9\x41\xeb\x8d\x06\x2d\x1b\xa2\xeb\x8f\x08\x35\x1b\xea\xa1\x42\x34\xf4\x3c\xa2\x0f\x3c\x14\xed\xdd\x09\xd5\x4a\x50\x10\xf5\x29\x37\x68\x23\xc1\x43\xd6\x86\xa2\xb3\x47\x77\xf2\xcd\x39\x7b\xf4\xcd\x58\x80\xde\x09\x8d\x89\x3d\x62\x20\x62\xd7\x0b\xa2\x86\x42\x2f\x8a\x9e\xf6\xd5\xf5\x92\xa5\xa1\xbd\x97\xf4\x1d\x2c\x21\xe7\x8a\x14\x99\x70\xe1\x5c\xca\xce\x26\x10\xfc\x1c\x24\xd8\x3b\x49\xfd\x60\xbf\x1d\x8e\x51\xb7\x59\x48\x0a\x23\xdc\xe6\x46\x2b\x07\x6b\xaf\x29\x61\xf5\xca\xa5\xd4\xf7\xb7\x46\xac\x84\x84\x05\xbc\xb6\x09\x97\x3b\x7b\x37\x42\xfc\x62\xdc\x47\xc2\x73\x3e\x13\x52\x60\x24\x4b\xf1\xdc\x3c\x45\x79\x22\xc4\xba\xab\x21\xa2\xdf\xc5\xcc\xf8\x86\x52\xa3\xf3\x6f\x85\x5b\xf4\x1c\xcb\x1b\xb3\x09\x2a\x02\x6f\x2d\xb9\xd1\xc9\x07\x5d\xb4\xbf\x60\x39\x6c\x12\x95\x66\xe3\xe9\x27\x25\x37\x9f\xb5\x76\x6f\x84\x04\xbb\xb1\x0e\x82\xab\x52\x42\x26\xa8\x50\xd7\xf6\x6d\xb5\x3b\x2c\xd0\x66\xe8\xbd\xf6\x61\xff\x21\x17\xbf\xed\xff\xa3\x56\xe5\xf8\x06\x1e\x55\xd7\x86\x9b\x5d\x1a\x67\x50\x16\xde\x0b\x55\xac\x3f\xe5\x9d\x1b\x48\x76\x89\xe2\x36\x24\xac\x00\x05\x93\x48\xf3\xcb\x68\x89\x02\x78\xa4\x46\x5d\xc7\x46\xa9\xa3\x1a\x2d\x10\x3a\x25\x36\x8a\x76\x18\xf7\x42\xa5\xfa\xde\x8e\xa0\xd5\x45\x66\xf9\x8d\x81\x14\x94\x13\x5c\x4e\xf7\xf6\xce\xf9\x19\x47\x0a\xee\xb0\x0b\xec\x6a\x92\x66\x49\xcd\xc4\x1b\xa1\xf5\xe1\xb0\x48\xf0\x96\x6a\x0b\xf0\xaa\x7b\x41\x12\xe4\x7a\x77\x37\xf2\x21\xd1\x60\x1b\x42\x44\xc1\x01\x05\xb7\xbc\x04\x3b\xf1\xa1\x7f\x0c\xf2\x0f\x79\xcf\xc0\x4e\x0c\xcf\x62\x20\x34\xd3\xfc\xe0\xff\xf4\xba\x08\x81\xfb\x53\x73\xe4\xbd\x8c\x00\xed\x21\xf9\x53\x41\x7a\x38\xcc\x63\x40\x39\xea\x15\x8c\x1f\x84\x9f\xf6\x0d\x4c\x08\x64\x9f\x92\x9b\xa0\x0d\x87\xc1\x73\x58\x8b\x41\xb0\x1c\x1c\x0e\x0d\x1c\x87\x39\x0a\x83\x61\x0c\x5e\x0c\xe3\x44\x0c\xe8\x45\x72\xeb\x03\xb9\xc3\x30\x8b\x03\xb3\x98\xe9\x16\x04\xaf\x28\xfb\x0d\x81\x55\x54\x23\x21\x70\x8a\x6a\x24\x04\x46\x87\x08\x16\x38\xd0\x89\x91\x3e\x0d\x64\xa2\x04\x40\x07\x95\x38\x0d\x63\x41\xe4\xa8\xb1\xaf\xf3\x52\xce\x0b\x7b\xe8\xf7\xba\xe7\x6b\xae\xd3\x2f\x90\xe5\x92\xbb\x83\xc1\xf8\xf4\x96\x68\xe5\x8c\x96\xb2\xdd\xc6\x82\x41\x57\x29\xed\xb8\xd7\x68\xce\x0a\x67\xb4\x1d\x76\xfa\xa3\x8e\x75\xff\x70\x14\x7a\x9c\xf3\xea\x4c\x64\xe7\xcb\x1e\x8c\x17\x50\x3a\x85\xeb\x40\x3b\xd8\xb6\xea\xfb\x60\x0e\xc6\x40\xfa\xaa\x28\xa5\x35\x4d\x96\x90\x16\x52\xa8\xc5\xbb\xea\x60\xd1\xc3\xcf\xaf\xd7\x90\x14\x98\xc4\x2c\x32\x83\x48\x7b\x47\x56\xf3\x08\x0a\xfb\xd2\x91\xfe\x06\x2e\xe3\x2e\x59\xbe\x5e\xe7\x06\xac\xc5\x24\x07\x1e\x89\x90\x32\xed\xcb\x5c\x4d\xa4\x97\x84\x35\xf5\x78\x93\x57\x53\xc9\x21\x6f\xd9\x97\x3e\x5a\x87\xd5\x76\x1d\xa2\x40\x7a\xc8\xbe\xa6\xde\x5c\xd2\x92\xee\x8f\x44\x7b\x75\x59\x13\xfe\x05\x66\x73\x7f\xa3\x34\xc2\x43\xc4\x77\xe1\xbb\x0f\x51\x64\x50\xcd\xae\x87\xb3\xbd\x71\x62\xc5\x89\xd5\xf9\x68\x9c\x58\x14\x19\x10\x3b\xb9\x07\xb1\x58\x06\xdf\xd1\xd4\x84\xdd\x0a\xb0\xcf\x0c\xe6\xe5\x0a\x23\x29\x6e\xb2\x13\xfd\x11\x37\xd7\x83\x0c\xde\x48\x10\x1d\x56\x2b\xcd\x90\x86\xc1\x51\x14\x67\x56\x42\xc2\x29\x48\x48\x9c\x36\x5f\xc0\xe0\x66\x2e\x61\x8a\x47\x38\x55\x53\xf4\xfa\xad\x14\xbd\x7e\x43\x11\x4e\xc5\x89\xd5\x46\x71\x62\xed\xde\x7f\xae\x13\x8b\xd8\x09\xbe\x79\xac\x58\x27\x87\x91\x1c\x85\x4d\x86\xd9\xdd\x97\xeb\xf4\xbb\xcb\x2b\x3d\x0e\xb9\x94\xf6\x58\x68\xa8\xda\x4b\xd0\xa8\x15\x3f\xb7\xfa\x39\xe0\xfe\xd0\x8b\xf5\xf5\x54\x7d\x23\x05\xeb\x17\x2d\xd8\x71\xae\xb1\x7f\xd4\x38\xba\xe3\x7e\xd1\x83\xf5\x8f\x20\xec\x58\x8e\xfb\x46\x12\xd6\x33\x9a\xb0\x1e\x11\x85\xf5\x8d\x2a\xac\x6f\x64\x61\xbd\xe5\x52\xcd\xce\xf7\xde\xbd\x45\xed\xd4\x6f\xa3\x78\x1b\xcb\x3d\x2c\xe1\x88\xf0\x4b\x7a\x68\xbb\xc9\x69\x4c\x5c\xdb\x4b\x0a\x74\x6d\x3b\x9d\x6b\xa9\x17\x9b\x9f\x47\x3d\xdb\x43\x3d\x14\xb3\xc3\x55\x4c\x31\x35\x34\xd9\x07\x02\xdf\x51\x9e\x69\x14\x5c\xd5\x03\xf0\xc4\x1c\x53\x4d\x71\x29\xdc\x4a\x71\x29\xdc\xd0\x29\x73\x4c\x54\xa0\x72\x2c\x48\x39\x22\x34\x13\x04\x42\x7c\x80\x0a\x4a\x48\x16\x4e\x1e\x31\x4d\x93\x64\x10\x42\x3b\x2b\x40\x88\xb0\x14\xe0\x31\x78\xd0\x44\xe7\x3f\x94\x13\x31\x07\x82\xa0\x98\x03\x19\x86\xd1\x9a\x62\x0e\x04\x45\x31\x07\x12\x7a\x26\xe6\x40\x90\x2c\xc7\x1c\x48\xcc\x81\xc4\x1c\xc8\x2e\xc5\x1c\x48\xcc\x81\x0c\xcc\x5c\x4d\x31\x07\x72\x40\x31\x07\xb2\x7b\x7f\xcc\x81\xb4\xb0\x19\x73\x20\xc1\x07\x62\x0e\xe4\xc9\xad\x03\xe4\x40\x82\xb7\xf8\x2a\xde\x06\x54\x8e\x3e\x91\xd5\x3d\x0e\x4f\x85\xdb\x40\xe7\xb8\xd8\x15\xae\x92\x87\xb4\x0c\x44\x35\x5b\x4a\x4b\xe1\x2a\xb6\xa4\xaa\xe7\xb4\xea\xb5\xb4\xb0\x8f\x0e\xf6\xc4\x39\x8f\x2f\x60\x48\x6c\x98\x56\xb8\x30\x7c\xa4\x7b\x97\x28\xae\x01\x13\x34\x09\x2e\x01\x5f\x91\x96\xa6\x5f\x6a\x25\x5a\xa2\x36\x88\x15\x68\x47\x73\xd4\xf8\xaa\xb3\x04\x9d\xd0\xab\xcd\x92\x0b\x53\x53\xab\xcc\x12\xd5\x43\xaa\x2e\x4b\x6c\x9b\x56\x55\x76\x34\xcd\xa3\x2b\xc9\x12\x14\x4f\xab\x20\x1b\x1d\xee\x41\xe3\x67\xef\x70\x51\x37\x86\xb9\x0b\x54\x83\x45\x23\xb8\x6e\x08\x25\x32\xbe\x80\xdb\x42\xca\xfa\xb3\x5d\x7d\xc1\xdc\x49\xf1\xd4\x10\xc3\x56\xc2\xdd\x34\xee\x71\xdc\x41\x87\x3e\x0a\x81\x5c\x1b\xa1\x67\x15\x0e\xfc\x27\x3a\xcb\xb8\x0a\x4c\x8c\xe7\x60\x2c\xf0\xd5\x0a\x24\x53\xa4\xc3\x72\x63\x54\xcd\x43\x7e\xbf\xa2\x4f\xab\xb8\x6f\x58\xd0\xf3\x73\xbd\xbe\x63\xd1\x2f\x0d\x48\x4c\x01\xf6\xca\x80\xd0\x4a\x9c\xf7\xec\x84\x5e\xe6\x9c\x1a\xc2\x6a\xa2\x26\xde\x28\x49\x37\x72\xaa\x88\xf6\x75\x8b\x7e\x16\xd2\xe7\x0b\x17\x3d\x75\xd8\xe3\x2b\x17\xbd\x7a\xa2\xeb\x90\xf6\xad\x8b\x1e\x9a\xec\xf7\xbd\x8b\x7e\x1a\xed\xf9\xcd\x8b\x9e\x4a\x25\x7f\xf7\xa2\x67\x3f\xf4\x6f\x5f\x9c\xc8\x76\x48\x5f\xc0\xe8\x61\x3a\xf4\xaf\x60\xc4\x50\xf1\xbd\x85\x0a\x52\x2e\x04\x7d\x22\x32\xf4\x7d\x0c\xf2\x32\x0d\x01\x49\xc3\x98\x6b\x70\x58\xba\x85\x63\xc8\x09\x46\x9d\x5c\x14\xa3\x27\x1b\x3c\xd5\xd8\xa9\x86\x4e\x32\xc4\xdc\xc0\x5c\xac\x07\x07\xe3\xd6\xff\xa1\xeb\x7d\x1e\xa2\x76\x8e\xba\x15\x37\x55\xab\x74\xc6\x20\x2f\x5a\xb6\x89\x91\x5b\x2d\x45\x12\x88\x41\xc8\x36\xa5\x98\x43\xb2\x49\x42\x95\xf9\xf1\xb6\x92\x6b\xeb\xa6\x8e\xfb\x3f\xe2\x43\x6d\x94\x55\x5f\xc3\xc4\x15\xac\xef\xf7\xf1\x33\x44\xea\x61\x97\xce\x73\x33\x1b\x31\x16\x2e\x9d\xcb\xdf\x02\x72\x17\x18\x5d\xa8\x4b\x6d\x91\x6d\xb3\x7e\x02\x2a\xf9\xff\x0b\xf0\xd4\x93\x2e\x3b\xa4\x93\xed\x29\xa2\x22\x38\x76\xf4\x1e\x9f\x13\xf5\xd6\x6f\xc7\x0d\x02\x23\x3d\x7d\xa0\x1a\x12\x79\x86\x8d\xbe\xdf\x26\x1f\xf7\xdb\x93\xe1\x0f\xa0\x3d\x25\xae\x36\x9f\xd0\x8b\x9d\x6a\x7f\x07\x69\x6f\xe6\xfe\x73\x44\x63\x59\x4f\xee\x8a\x19\x18\x05\x0e\xec\x44\x28\x37\xd1\x66\x52\x37\x71\xc5\x9c\x41\xab\xd7\x26\x4b\x18\xf5\xe3\x80\xd4\xdd\xb9\xa5\x8e\xc6\xf0\xc8\x2e\xc9\xa7\x3a\xb9\xfb\x86\x7d\x72\xb4\xde\x3d\x3a\x0f\xd3\x22\xdc\x9c\x1b\x98\x3a\xcc\x97\xd8\x22\x7c\x43\x3d\x14\xe1\x5b\x57\x07\x11\xbe\x35\x14\xe1\x5b\x84\x6f\x18\xfa\x16\x03\x60\x84\x6f\x5d\x74\x86\x3e\x39\x5a\xef\x1e\x9d\x87\x69\x0d\xbb\xc9\x8b\x31\x29\x56\xa0\xc0\xda\x5b\xa3\x67\x83\x65\xfe\x70\x08\x8f\xba\x5f\x94\x80\xec\xce\xe7\x40\x07\x65\x17\x34\x17\xb2\x30\xf0\x65\x69\xc0\x2e\xb5\x44\x0c\x95\x76\x1e\x93\x32\xe5\xd0\x88\x92\xa6\x44\xbc\xd7\x22\x2a\x85\x8c\x20\x49\x16\xd2\x07\x39\x9e\xe4\xb5\x2d\x19\x2d\x9e\xe4\xed\x3e\x01\x21\xd2\xd0\x61\xcf\x73\x63\x58\x54\x88\x47\x84\x44\x31\xe2\x63\x29\x21\x8e\xf6\x89\xa1\x3d\xe2\xe7\x00\xb1\x93\x82\xfa\x46\xdb\x2a\x8f\x0a\xc7\x04\x03\x13\x4a\x38\xc1\xe5\x2b\x90\x7c\x33\x85\x44\x2b\x4c\x75\xf3\xf1\x1c\x76\x0e\x46\xe8\xf4\x0c\x18\xb1\x45\x92\x80\xb5\x67\x11\xc5\x08\x28\xfc\x4c\xe2\xd8\x77\xed\x29\x9e\x73\x3a\x3b\x91\x81\x2e\xdc\xb3\x4f\x20\x24\xcb\x83\x1d\xfe\x2c\xe5\x38\xc4\x09\x00\xe2\xe6\xa1\x7a\xb3\xe5\x2d\xd2\xda\xa9\x75\x47\x68\xe6\x5e\x4e\xe6\x77\xb7\x83\xef\xc0\x29\x9b\x3d\x8f\x01\x8e\x72\x86\x20\x37\xda\xe9\x44\xa3\xb6\xe9\x10\x1a\xc6\x6f\xb5\x7b\x62\x45\xa1\xd9\x3d\xec\x46\x1e\x03\x3c\x15\x71\xd5\x1c\x57\xcd\x7b\x14\x57\xcd\xbb\x14\x57\xcd\x71\xd5\xdc\xd2\x6e\xc4\xc2\x71\xd5\x1c\x57\xcd\x7b\x14\x57\xcd\x2d\xec\x46\x4f\x11\x57\xcd\x83\xae\x9a\x9b\x63\x67\xc1\x3a\xd8\x58\xab\x96\x22\x13\xa1\xe5\x33\x3b\xa2\xca\x1a\xc9\x9a\x88\x07\x9a\xc0\x7e\x7b\x9c\x23\x6f\xb4\x90\x14\x46\xb8\xcd\x8d\x56\x0e\xd6\x01\xd7\x80\xd7\x36\x97\x52\xdf\xdf\x1a\xb1\x12\x12\x16\xf0\xda\x26\x5c\x72\x4c\xc1\x4e\xda\x19\x95\x84\xe7\x7c\x26\xa4\xc0\x49\x9a\x58\x10\x29\xfd\xe6\x96\x82\x8c\xa5\x06\xb3\x07\x91\x9d\x15\xd7\xa4\x5d\x96\x0f\x06\x85\x50\x0d\xc5\x8e\x72\xa3\x93\x0f\xba\x50\x88\xc8\x48\xca\xcf\xf0\xf4\x93\x92\x9b\xcf\x5a\xbb\x37\x42\x82\xdd\x58\x07\x88\x8a\x0f\x14\xce\x4d\xa1\xae\xed\x5b\xa3\x0b\x84\xda\x77\x22\xca\x4f\x3f\x0e\x0a\x83\x2a\x2e\x3e\x6a\x55\x8e\x74\x84\xf1\xfd\x62\x01\x71\x00\x7c\xbc\xe1\x59\x78\x2f\x54\xb1\xfe\x54\x9d\xb6\x1b\xbe\x9c\x30\xac\x80\x54\x34\x09\x5f\x79\x4b\x87\x4e\xa8\xf5\x6c\xb8\xba\x7d\x8c\x86\x0b\x94\xa6\xc9\x0d\x13\x5c\xcc\xbd\x50\xa9\xbe\xb7\x23\xe9\x7a\x91\x59\x7e\x63\x20\x05\x55\x2e\xed\xa6\x39\x76\x77\x37\x51\x8c\x87\xdd\x8c\x56\x39\x6e\x3b\x41\x47\xea\x61\x70\xbc\xe3\xb8\x71\x45\x1e\xb3\xd1\xcf\x1e\xcc\x63\x36\xfa\x80\xd9\x98\x8d\xf6\x53\xcc\x46\x63\x1e\x88\xd9\xe8\xfd\x67\x62\x36\xda\xd7\x7b\xcc\x46\x1f\xc1\x48\xcc\x46\xb7\xb0\x1b\x3d\x45\xcc\x46\x0f\x9a\x8d\xb6\x2e\x15\x81\xdc\x21\x36\xab\x50\x35\xf5\x49\x85\x2a\xbd\x61\x9b\x73\x60\x32\xa1\xaa\xdc\xe6\x07\xb0\x96\x2f\x20\x5c\x81\x10\x69\x6a\x2d\x4d\x0f\x57\xc2\xc6\xf9\xbf\x83\x89\x17\xc0\x4a\xcb\x22\x83\x57\xb0\x12\xc1\x97\x05\x83\xef\x8e\x4b\xab\x5e\xb1\x25\x1f\x49\x33\x7c\x84\x8d\x60\xf8\xfd\x5a\x8f\xe3\x0a\xde\x7a\xfa\x2a\x6a\xb5\xc2\xab\x74\xe9\xa9\xf5\x9d\x95\x9d\x8e\xa2\xee\xba\x65\xa3\x73\xbe\x40\xbe\xa7\x78\x7e\x7b\x7a\xcc\x30\xe3\x1b\xc6\xd6\xfe\xb2\xc5\x6c\x14\x39\x3f\xb4\xfb\x7a\x9d\xa3\xf2\x7c\xa3\xcc\xae\xad\x15\x9d\xe1\xe4\xba\xd7\xe6\x4e\xa8\xc5\x2b\x11\x10\x0f\x4a\x30\xe7\x50\x97\x3e\x58\x2a\x0d\x33\xff\x51\xe5\xd1\xb0\x8e\x04\x93\xad\xa3\x6d\xd1\x46\x67\xea\x08\x59\x98\x3e\x19\x79\xd4\xca\x1f\x6d\xb0\xc8\x9c\x18\x45\x54\xd8\x75\x04\x6d\xf3\x38\x2d\x17\x46\xd0\x01\x3d\x0f\x46\xcb\x82\xf5\xc8\x4e\x11\x33\x60\xe4\x1e\xa8\x27\xb7\xd1\xb9\x2f\x4a\xe6\x8b\x98\xf7\xa2\x64\xbd\xb0\x39\x2f\xda\xfe\x7e\xe4\x2a\x16\xbd\x86\xa5\xaf\x60\xc9\xeb\xd7\xa3\x57\xaf\xf8\x2c\xd7\x28\x41\x1c\xb1\x20\xc6\x87\x66\x6c\xde\xe4\xd9\x7d\xdd\x77\x68\x69\xcf\x61\x12\xa8\xdb\x10\x25\xbf\x22\x24\x89\x90\x24\x42\x92\x23\x7b\x88\x90\x64\xb7\xcd\x18\x28\xba\x29\x42\x12\x3f\x45\x48\xf2\x40\x7f\x4c\x48\x12\xbc\x05\x55\xc0\x0a\x63\x50\x21\xbc\x82\x35\x4a\x24\x4e\x41\xc6\x47\x82\x11\xe0\xfc\x33\x4a\x35\x94\x6d\x4c\xd8\xb7\x68\xb8\x09\x80\x40\x43\x58\x45\x60\x3c\x03\x5a\xbc\x04\xf4\x83\xd4\x2c\x0d\xf5\x8c\xf6\x85\x53\x02\xd2\x19\x6d\x5f\x07\x0a\xdd\x60\x91\x0d\xe5\x85\x31\x12\xd1\x60\xd0\x0c\x5a\x38\x98\xd8\x82\x8a\x2b\xb4\x98\x42\x8a\x27\x47\xc5\x12\x1c\x62\x41\x72\x83\x31\xa3\x60\x48\x42\x99\x04\x71\x33\xd0\xb0\x6e\x0f\xbd\xf5\x67\xd8\x6e\x29\x1b\x7d\x86\xed\x19\x85\x05\x9f\xc5\xd3\xff\xc1\xe7\xe7\xe9\x26\x14\x7e\x3b\xce\x90\xa6\x15\x64\x4d\xe9\x14\xa6\x20\x21\x71\xdd\x5f\x60\xa4\x9d\x7a\x44\x28\x2e\xc8\x55\x6e\x84\x36\xa2\x7b\xff\x0a\x46\x44\x61\xf1\x34\xbd\xdc\x48\x6e\xad\xef\x70\x43\x70\x48\xb8\x12\x38\x11\x77\xef\xdd\x15\x71\xf7\x2e\x53\x11\x77\x47\xdc\xed\xbb\x2f\xe2\xee\x88\xbb\xf7\x29\xe2\xee\xa3\x7a\x8e\xb8\xbb\xe3\xee\x88\xbb\x43\xdd\x1e\x89\xbb\x83\xc5\x57\x30\x56\x17\x2e\xb8\x42\x2f\x58\x82\xdd\x5c\x8e\x91\x3d\xa6\xb0\xca\x73\x72\x18\xbc\xa5\x0c\x22\x69\x21\xfd\x47\x9f\x83\xfc\x20\x0b\xb0\x60\x34\x3e\x0f\x57\x82\xc0\x16\x49\xc0\xb9\x05\x5c\xf5\x89\x11\xfa\x44\xd4\x9a\xc0\xed\x77\x46\xd5\x97\x18\x76\x00\xf8\x6a\x12\xd8\xd8\x82\xaa\x20\x81\x76\xdd\x98\xaa\x11\xe8\xc6\xaa\x1b\x87\x6a\x0c\x53\x1d\x62\x48\x0f\x65\x8b\x3c\x97\x90\x81\x72\x5c\x56\x56\xee\xd5\x03\x62\x4d\x85\x2f\x51\x82\x0d\xcb\x98\xe5\x81\xdd\xd8\xc4\xc9\x63\x79\xc7\xaf\x05\x71\xeb\x40\x02\x94\x40\xae\xff\xf0\x16\x8e\x5a\xf7\x21\xd6\x7c\x98\xf5\x1e\xe9\xfd\xae\x5f\x91\xf8\xda\x24\x58\x65\xd1\xeb\x91\xa0\x85\xdc\xaf\x06\x09\x5e\x87\x94\xba\x23\xa7\x04\x05\x60\x56\x22\x81\xeb\x24\xd1\x85\x72\x47\x21\x03\xa7\x25\x18\xee\xd5\x75\x60\xde\xe2\xcc\x00\xe6\x73\x48\x02\xeb\x09\xa4\x04\xef\x60\x98\xd3\x89\x25\xdb\xdc\x93\x74\x26\x35\xf6\x28\x47\xd4\x71\xd7\xe1\x9d\x34\xc2\x7f\xa1\x86\x72\xf4\x71\x1c\x4f\x03\x9d\x97\x0c\xe4\x52\x24\xfc\x40\x68\xbe\x05\x51\xb7\x60\x1e\xa6\xc7\x17\xc8\x72\xc9\xdd\x81\x50\x7c\x06\x9b\x81\xe3\x29\x77\xbc\x4d\x90\x21\x43\xe7\x4a\x69\xe7\x9f\x4a\xa7\x7e\x8f\xe1\xbd\x6c\x3b\x3c\x71\x68\x9c\x89\x2c\xac\x03\xd3\xfd\x89\x86\x20\xdf\xb0\x76\x60\x14\x97\xef\x6e\xfb\x3a\x1d\xb4\x68\xba\x83\x5d\xc3\xc4\x17\xc3\xe7\x73\x91\xf8\x8f\x3d\x07\xfb\x5b\x02\x97\x6e\x79\xb3\x84\xe4\xee\xa3\x4e\xc1\xf7\xa1\x89\x61\x5e\x1d\x49\xcd\xd3\x97\x5c\x72\x95\x1c\xa5\x8a\xdd\x66\xa6\x55\x3e\xe0\x33\x57\x8b\x6e\xab\x1c\x5f\x2f\xde\x2f\xa0\x0c\x12\x8b\x06\xfb\x58\x8b\x0a\x68\xba\x26\x7c\x59\x03\xac\xaf\x0f\xa7\xe6\x86\xee\x13\x73\xca\xd3\x9b\x2b\x3b\x3a\xac\x94\x6e\xdd\x5a\xa1\xd5\xf5\x7c\x2e\x54\x9d\xcb\x98\x8b\xc5\x31\xa9\x8c\x44\x0a\x50\x81\x4f\xcd\x60\x41\x2e\xad\xd6\x05\xa5\xd2\x05\x6d\x95\x76\x1c\xb0\xf4\xad\xa4\x03\x73\xa2\x4f\xd8\x6f\x59\x30\xfa\xe4\x9d\x94\x17\xe6\x22\x69\x89\xe9\xa1\x47\x4b\x4a\x55\xf5\x8a\xfd\x19\x5d\x5b\x5a\x18\xef\xc1\xff\x60\x17\x22\xbf\x4e\x53\x03\xd6\x3e\xe7\x28\xb4\x59\x70\x25\xbe\x7a\x47\x32\x3e\x17\x06\x14\xdc\xbf\x84\xb9\x36\xfd\x17\x3f\x85\x11\xd3\xeb\x8f\xcf\x26\x4a\xef\x74\x14\xd6\x16\x60\x3e\x43\xeb\xeb\x95\x20\x14\xcd\x85\x37\x63\x1a\x64\xfd\x4e\x74\xef\xdc\x08\x3e\xec\x8b\xaf\x81\x87\x7d\x71\x66\x52\x71\xd5\x7a\xa1\x23\x89\xe2\x11\x70\x57\x47\x93\x47\xc1\x63\xbd\x58\x61\xc1\xbc\x17\xb6\xf4\xfd\x06\x5c\x8b\xc6\x7c\xda\xea\x92\x95\x47\x4e\x9d\x8c\xac\xc0\xd8\x96\x39\xd9\xd1\x54\x9b\x04\x26\x4d\x1b\x17\x81\xee\xac\xe3\xae\x78\x32\x9c\xae\x41\xea\x59\xb9\x1c\x83\xf4\x2d\x28\x68\xf7\x7e\xbe\xb5\x70\x77\xf0\xcb\x97\xdc\x1e\x48\xae\x53\x6a\x06\xb8\x45\x4b\xa6\x65\xc4\x7b\x3f\x35\x92\x66\xab\x17\x5c\xe6\x4b\xfe\xe2\xf1\xb7\x6a\xf8\xb5\x45\x3e\xb9\x5c\x2f\x4b\x21\xdd\x79\x31\x69\x9d\x36\x7c\x01\x0f\xbf\xfc\x3b\x00\x00\xff\xff\x53\x1c\xe6\x4b\x2f\x19\x01\x00") +var _kubedbCom_pgbouncersYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\xfb\x77\xdc\x36\x96\x2f\x8a\xff\xde\x7f\x05\x96\x92\x75\x64\x7f\xbf\xaa\x92\x9d\x7e\xdc\x3e\x9e\x9e\x99\xa5\xb6\x95\x8c\x4e\x6c\x59\x4b\x52\x92\xd3\x77\xce\xb9\x39\x28\x12\x55\x85\x11\x09\x30\x00\x58\x52\xf5\xdc\xf9\xdf\xef\xc2\x06\xc0\x47\x15\x49\x00\x54\x95\xed\xa4\x89\xfe\xa1\xe3\x12\x09\xe2\xb1\xb1\xb1\x1f\x9f\xbd\x37\x2e\xe8\x8f\x44\x48\xca\xd9\x1b\x84\x0b\x4a\x9e\x14\x61\xfa\x5f\x72\xfe\xf0\x67\x39\xa7\xfc\x7c\xf3\x7a\x41\x14\x7e\xfd\xbb\x07\xca\xd2\x37\xe8\x6d\x29\x15\xcf\x6f\x89\xe4\xa5\x48\xc8\x3b\xb2\xa4\x8c\x2a\xca\xd9\xef\x72\xa2\x70\x8a\x15\x7e\xf3\x3b\x84\x12\x41\xb0\xfe\xf1\x9e\xe6\x44\x2a\x9c\x17\x6f\x10\x2b\xb3\xec\x77\x08\x65\x78\x41\x32\xa9\x9f\x41\x08\x17\xc5\x1b\xf4\x50\x2e\x48\xba\xf8\x1d\x42\x0c\xe7\xe4\x0d\x2a\x56\x0b\x5e\xb2\x84\x08\x39\x37\x7f\x99\x27\x3c\xff\x9d\x2c\x48\xa2\xdf\xc1\x69\x0a\x1f\xc3\xd9\x8d\xa0\x4c\x11\xf1\x96\x67\x65\xce\xa0\xbf\x19\xfa\x1f\x77\x1f\xaf\x6f\xb0\x5a\xbf\x41\x73\xfd\xc2\x7c\x63\xa6\x05\xdf\x32\xbd\xff\xd8\xf8\x45\x6d\x0b\xf2\x06\x49\x25\x28\x5b\xed\xbd\xae\xb0\x2a\xe5\xbc\x58\x63\x49\x1a\xaf\xdf\xc1\xcf\xde\xb7\xdd\x4a\xcc\xf7\x96\xa1\xd1\xd7\xc5\x8a\x34\x3a\x4a\xb1\xd2\xff\x5c\x09\x5e\x56\x6b\x02\x33\x37\x8f\xdb\x05\x4b\xb0\x22\x2b\x2e\xa8\xfb\xf7\x0c\x15\x82\x3f\x6d\xed\x7f\x57\x2b\xa9\xff\x81\x8b\x42\x26\x3c\x25\xee\x9f\xb0\xf8\x08\x99\x3d\xbc\x59\xfd\xd5\x2c\x32\xfc\x96\x51\xa9\xbe\x6f\xff\xfe\x9e\x4a\x05\x7f\x2b\xb2\x52\xe0\xac\xb9\x2d\xf0\xb3\x5c\x73\xa1\xae\xeb\x81\xcd\x50\x61\x3e\x2c\x29\x5b\x95\x19\x16\x8d\x37\x7e\x87\x50\x21\x88\x24\x62\x43\x7e\x60\x0f\x8c\x3f\xb2\x6f\x29\xc9\x52\xf9\x06\x2d\x71\x06\xcb\x2b\x13\xae\xd7\x00\xfa\x2b\x70\x42\x52\xfd\x5b\xb9\x10\x96\xc6\xec\x37\xcc\x9e\xbc\x41\xff\xf9\x5f\xbf\x43\x68\x83\x33\x9a\xc2\xda\x9a\x3f\xf2\x82\xb0\x8b\x9b\xab\x1f\x7f\x7f\x97\xac\x49\x8e\xcd\x8f\xfa\xc3\xbc\x20\x42\x55\x0b\x66\xa8\xae\xa2\xf7\xea\x37\x84\x52\x22\x13\x41\x0b\xe8\x11\x9d\xea\xae\xcc\x33\x28\xd5\x14\x4e\x24\x52\x6b\x82\x2c\x41\x91\x14\x49\xf8\x0c\xe2\x4b\xa4\xd6\x54\x22\x41\x60\x8a\x4c\xc1\x90\x1a\xdd\x22\xfd\x08\x66\x88\x2f\xfe\x83\x24\x6a\x8e\xee\xf4\x32\x08\xa9\x17\xb0\xcc\x52\x94\x70\xb6\x21\x42\x21\x41\x12\xbe\x62\xf4\xef\x55\xcf\x12\x29\x0e\x9f\xcc\xb0\x22\x76\x2f\x5c\x03\xc2\x67\x38\xd3\x8b\x50\x92\x33\x84\x59\x8a\x72\xbc\x45\x82\xe8\x6f\xa0\x92\x35\x7a\x83\x47\xe4\x1c\x7d\xe0\x82\x20\xca\x96\xfc\x0d\x5a\x2b\x55\xc8\x37\xe7\xe7\x2b\xaa\xdc\x09\x4f\x78\x9e\x97\x8c\xaa\xed\x79\xc2\x99\x12\x74\x51\x2a\x2e\xe4\x79\x4a\x36\x24\x3b\x97\x74\x35\xc3\x22\x59\x53\x45\x12\x55\x0a\x72\x8e\x0b\x3a\x83\x81\x33\x05\x6c\x22\x4f\xbf\xaa\xb6\xea\xb4\x31\xd2\x9d\x23\x62\x1a\x10\x60\xef\xba\x6b\x32\x44\x54\x22\x6c\x5f\x33\xe3\xaf\x97\x57\xff\xa4\x57\xe5\xf6\xf2\xee\x1e\xb9\x8f\xc2\x16\xb4\xd7\x1c\x56\xbb\x7e\x4d\xd6\x0b\xaf\x17\x8a\xb2\x25\x11\x66\xe3\x96\x82\xe7\xd0\x23\x61\x69\xc1\x29\x53\xf0\x8f\x24\xa3\x84\xb5\x17\x5d\x96\x8b\x9c\x2a\xbd\xd3\xbf\x94\x44\x2a\xbd\x3f\x73\xf4\x16\x33\xc6\x15\x5a\x10\x54\x16\xfa\x04\xa7\x73\x74\xc5\xd0\x5b\x9c\x93\xec\x2d\x96\xe4\xe8\xcb\xae\x57\x58\xce\xf4\x92\xfa\x17\xbe\xc9\x9e\x5d\xeb\x3a\x1e\x15\x87\x6a\xfd\x82\x50\x8e\x9f\xde\x13\xb6\xd2\x0c\xee\x4f\xbf\xdf\xf9\x5b\x81\x95\x26\xc9\x37\xe8\xff\xf9\x77\x3c\xfb\xfb\xff\x7e\xf1\xef\x33\x3c\xfb\xfb\xab\xd9\x7f\xff\xdf\xff\xbf\x7f\xb7\xff\xf1\xf2\x5f\xbf\xde\x79\xa7\x73\x90\xee\x67\xb3\x81\xd5\xcf\x8e\xfd\xfb\xc6\x9d\x70\xc6\x48\xa2\x97\xe7\x86\xf3\x6c\x77\x06\x2d\x52\x7b\xdb\x7a\xf4\x2d\x67\x4b\xba\xaa\xce\x7a\xfd\x47\x54\x70\x9e\xe9\x7e\x97\x74\x55\x0a\x38\xdd\xf3\xdd\xc9\xf7\x0c\x46\x37\x9c\xe6\x94\xfd\x20\x89\xe8\xf8\xdb\xce\x80\x2e\xaa\x47\x61\xba\x74\x49\x89\xd4\x9c\x03\x0b\x81\xb7\x9a\x8b\x94\xf0\xb7\xc7\x35\x47\x89\xfe\x39\x51\x1d\x3d\x22\x84\x65\xcd\xc5\xcd\xe7\xa9\x54\x02\x6b\xc2\xda\x1d\xb8\x6e\x54\x91\xbc\x73\x6c\xbd\x1b\xd4\xfe\x33\x8c\x6e\x7f\xda\xa5\x5a\xdf\xeb\xbf\xfb\x26\x7d\x7a\x61\x9f\x6c\xcc\x79\xcd\x1f\x35\xf3\xd3\x7d\x68\x52\xd7\x77\x9e\x99\xfb\x1c\xbd\x23\x4b\x5c\x66\xaa\x7b\xbc\x79\xfa\x47\xf4\x22\x4f\xff\xf8\xff\x2f\x32\x4c\x19\x52\xe4\x49\xbd\x9c\x9f\xf6\x8e\xbc\x67\x62\xfa\xb3\x7a\x17\xc2\x86\xae\x9f\x44\x19\xe7\x0f\x12\x95\x05\xc2\x6c\x0b\x23\x45\x9a\x29\xb8\x09\xa5\x88\x32\xe8\xf5\xe7\x25\xcd\x48\xe7\xc8\x81\x09\x15\xab\x9f\xe5\x1a\xa7\xfc\xb1\x9e\xa6\xe9\x87\xa8\xf8\x59\xa4\xa6\x07\x4d\xda\x77\xf4\xef\x01\xfb\xf0\xae\xfd\xc2\xce\x76\xe4\x7a\x66\x70\x83\x8b\xc6\x19\x93\xdd\x64\xc3\xb5\xb0\xc1\x1f\x51\x41\x04\xac\xc6\xb9\xe6\x3a\x0b\x2c\x09\x2a\x30\x15\x8d\xd9\x7d\xf3\xaa\x73\x62\x4b\x2e\x72\xac\xde\xe8\x6b\xee\x4f\x7f\xe8\x9d\xb8\xbe\x04\x57\x56\x80\x69\x36\xba\x62\x5c\x90\x3b\x85\x85\x2a\x8b\x1b\x2c\x70\x4e\x54\xc8\xf1\xbb\xea\x7e\xaf\xb1\x10\x9a\x5b\xe3\x99\x24\x05\x16\x9a\xd5\x6b\x79\x44\x3f\xdb\xb9\x08\x45\xdd\x81\x5a\x63\x55\x0b\x43\x48\x0b\x40\x12\x61\x41\xd0\x1a\xb3\x34\x23\x29\x5a\x6c\xcd\x39\x85\x7b\x9c\x2a\x7d\xba\x3b\xfb\x34\x33\xd3\xf7\x53\xde\x75\x92\x07\xe9\x21\xc7\x4f\x6f\xe1\x4e\xab\x39\x9b\x7f\x49\x4e\x3f\x74\xbc\xa5\x6f\x67\x7d\x45\xe6\xf8\x89\xe6\x65\x8e\x58\x99\x2f\x88\x00\x29\x47\xef\x3a\xc8\x6e\xfb\xcd\x5c\xa8\x4d\xda\x69\xd0\xc1\xeb\x57\xc7\x20\x84\x1c\x3f\xbd\xfb\x6b\xec\x74\x5b\x6f\xf4\x4f\xd5\x77\x06\xec\x52\xe8\x23\x30\x73\xd4\xdf\x98\x70\xc9\x32\x9a\x53\x2d\x2e\x1c\x65\xda\x9a\x29\xc5\x4e\x7c\xe7\x9d\xfe\xa9\x03\x27\xfe\xe2\x26\x4d\x59\x38\xab\xfb\x50\x3f\xac\xa7\x59\x4a\x92\x02\xd3\x4a\x53\x94\xeb\x03\x16\xce\xe7\x40\x36\xa0\x4b\xb4\x20\x9a\xdf\x81\x3c\x69\x16\xaa\x31\xed\x57\xe8\x45\x4a\x25\x5e\x64\x24\xed\xbe\x8d\x9e\x37\x73\x3d\x84\x0f\x3c\x0d\x98\xf6\x8d\x7d\xd2\x6d\xad\x7e\x53\x8b\xd3\x39\x49\xd6\x98\x51\x99\xc3\x97\x1a\x23\x97\x44\x6a\x65\x27\xfe\xf2\x29\xb8\xe8\xbc\xa2\x77\xc7\x23\x54\x3d\x16\xa1\x2a\x1a\x63\xe8\x71\x4d\x93\x75\x43\x8c\xd1\x0a\x2a\xe9\xdf\x06\xc3\x5c\x9a\x1c\xe5\x8f\x7f\xf8\xfd\x37\xbe\xc5\xfe\xfd\x37\xd1\x8b\x6d\xb5\xd8\x70\x52\xbb\x6d\xbf\xd0\x75\xab\xd6\x16\x8d\xf0\x9b\x55\xff\x07\xec\xdf\x1c\xbd\x42\x96\xba\xe4\xa7\xa3\xb9\xc6\x32\xdc\xd3\x9c\xf0\x52\xdd\x91\x84\xb3\x34\x80\xd3\xdc\xf6\xbd\xea\x28\xa1\x66\x34\xd2\xfc\xa1\xfb\x2a\x74\x34\x42\x97\x08\xbb\xcb\x65\x8d\x25\x32\xda\x18\x61\x70\x88\x69\x42\xd2\xb3\xc6\xd5\x4b\x18\x2c\x54\x67\x8f\xa5\x24\x70\x87\x75\xee\x86\x11\xd0\xec\xb4\x07\x16\xbe\xb3\xe7\x3f\xce\x8f\x71\xbb\x49\x85\x95\xbc\x21\x82\xf2\x34\x74\xf1\xef\xf6\x5e\xd1\xb2\xa5\x21\x45\xbe\x54\x84\xc1\x06\xe0\x0d\x11\x78\x45\xc0\x42\xf1\xd8\x23\x88\x30\xb4\xc1\x82\xf2\x52\xa2\xbb\x7f\xfb\xf8\x93\x11\x8c\x74\x77\x5a\xaa\xb1\x8a\x30\x08\x33\x75\xcf\x78\xb5\x12\x64\xa5\xff\xd0\xd9\xa3\x9e\x0d\x95\x8a\x26\xa6\x8f\x47\x41\x15\x8c\xc7\x9a\x40\xf8\xaa\x4b\xe0\x79\xce\x02\x76\x6a\x99\xb0\x62\xf6\xe2\xda\x5b\xce\xd6\x52\xbe\x73\x4f\xc1\x2d\x20\xf8\xd3\x56\x4b\x71\x49\x5b\x6b\xa4\x6c\x6f\xd8\x3d\xda\xd6\x90\x06\xa9\xef\x55\x8a\x7b\x54\xb4\xb6\x02\xa9\x9f\xd3\x03\x2a\x19\xfd\xa5\x24\xd9\x16\xd1\x54\x2b\x50\xcb\x2d\xc2\x48\x61\xb1\x22\xaa\x9a\x1e\x12\x25\x63\xdd\x7a\x1d\x8c\x93\x49\x9a\x12\x84\x1d\xc3\x4a\xd0\x0d\x97\x6a\x25\x88\xd4\x7f\x52\x98\x25\xa4\x6b\x47\xbc\x3a\xa3\xfb\xfc\x75\x87\x7d\x61\x60\x99\xf5\xe3\x15\x83\xd0\xff\x0d\x66\x37\xb2\x37\x29\x33\xec\x9e\x39\xe1\x03\xcf\xe1\x96\x2c\x23\xa6\x70\x4b\x96\x0d\xee\xaf\x07\x5f\x8d\x1a\x17\xc5\x82\xb2\x54\xdf\xc5\x82\x2c\x89\x20\x2c\xe9\x9b\x03\x28\x09\x5b\x63\x11\x2e\x70\xdf\x04\x86\xc9\x09\xf5\xd8\x77\x7a\x26\x70\xfa\x7f\xf4\xc3\xff\xa7\x6b\xf9\x71\x51\xcc\xd1\x2d\xf9\xa5\xa4\x82\xa4\x5d\x2c\xce\x34\xcf\x7a\xba\xf1\xc0\x84\xa2\x06\x05\x6f\xb4\x46\x06\xbf\x1c\x7e\x78\xc5\xa0\x1a\xd9\x31\xbe\x93\x86\x02\x69\xac\x99\x44\xb9\x61\x35\x55\x43\x8e\x16\x7d\x5b\x8d\xcc\xa5\x04\xa2\x29\xdf\x10\x21\xf4\x81\xb4\x6a\x7d\xa3\x8f\x39\xba\x5f\x6b\xc2\xcf\x28\x23\xe8\x6f\x17\x1f\xde\x9f\xff\x8f\xbb\x8f\xd7\x03\x7d\x16\x78\x9b\x71\x9c\x9a\x6f\x23\x25\x30\x93\x19\x30\x6c\xca\x14\x47\x7a\xb5\x36\x38\xd3\xd7\xa9\xee\xa7\x32\x5b\xff\xaf\xee\x9b\xc0\x34\x3d\x82\xc6\x84\x97\x94\x64\x60\xc4\xbd\xfe\x78\xaf\x6f\x71\xa1\xe7\x2e\xf4\x7f\x95\xc2\x5a\x43\xd8\x16\x3d\x76\x98\x8d\xea\xa6\x6f\x0f\x6b\x22\xbf\xbe\xfc\xf1\xf2\x16\x4c\xac\x76\x35\xd6\x3c\x4b\x91\x24\x4c\x52\x45\x37\xc6\xba\xaa\x2f\x02\x2d\xaa\x9e\x78\x76\xb9\x83\xe1\x37\xdb\xd3\xec\xa1\x5c\x10\xc1\x88\x22\x72\x46\xf2\x05\x49\x53\x92\xce\x9c\x99\xf9\x0d\x52\xa2\xec\xdf\xae\xd6\xcb\xce\xe1\x31\x2b\x8d\xc7\x63\xb6\xb4\x2e\x8f\xde\x2e\x84\x25\xd4\x6e\x0a\x9b\x01\x79\x0f\xfc\x09\x28\x7f\x80\x9d\xf5\xce\xdc\xb1\xa1\x3b\xd8\xa8\x38\xa6\x56\xbd\x83\xc0\x74\x2e\x8d\x60\x6a\xb7\x1c\xec\x1e\x09\x67\x0a\xd3\x1e\x79\x16\x19\x5b\xbb\x20\x70\x4d\xe1\x4c\xa2\x17\x5a\xbb\x04\x16\xa3\x09\xa0\xc0\x52\x3e\x72\x91\xbe\xb4\x3e\x14\xf2\xa4\x65\x04\xb6\x02\x1d\xb4\xa7\x47\xe7\x90\xa9\x15\xd0\x2b\xd5\xd4\xf2\x34\xa7\xd5\x63\xa4\x6c\x95\x19\xb3\xa2\x91\x32\x68\x65\xe9\x49\x7a\x7a\xae\xf8\x75\x7d\xcd\x7f\x0a\xf6\x7b\xdd\x60\xb8\xf6\x7a\x50\x9d\x7e\x85\x9a\xfa\xe6\x94\x9f\xa7\x3c\x91\xe7\x09\x67\x09\x29\x94\x3c\xd7\x0c\x64\x43\xc9\xe3\xf9\x23\x17\x0f\x94\xad\x66\x8f\x54\xad\x67\x86\x26\xe4\x39\xd0\xcf\xf9\x57\xf0\x7f\x43\xc7\xfc\xe3\xbb\x8f\x6f\xd0\x45\x9a\x22\xae\xd6\xc6\xb6\xb7\x2c\x33\x73\xdc\xe5\xbc\xe1\x56\x3b\x03\x27\xcf\x19\x2a\x69\xfa\xaf\xcf\xe0\xbb\x83\x84\xdb\x7f\x5c\x66\x46\x60\xea\xf8\xbd\x29\x7d\x0c\xfc\xf9\x96\x2c\xf7\xfe\x3a\x30\x96\x3e\x3b\x78\xce\x19\x55\x7c\xcf\x8e\xdc\xda\xdd\x0f\xe6\x99\x8a\x40\xed\x3b\x2d\x89\xa6\x53\x52\x19\xf4\x39\xac\x08\xeb\xd4\x45\x86\xed\xde\x62\x15\xa0\xbf\x5d\x88\x55\x99\x13\x7b\xd4\x8d\xdb\x4c\x89\x2d\x9c\x7e\x73\x13\xa5\x3c\x79\x20\x02\xd1\x1c\xaf\xc8\xe9\xa9\x44\x6f\x3f\xbc\xeb\xd6\x21\xec\x8c\xa9\x3d\xaf\xd4\xe8\x6e\x85\xe0\x1b\x9a\x92\x74\x8e\x7e\xc4\x82\x6a\xf5\xaa\x96\x89\x24\xfa\xfa\xc5\x8f\x17\xb7\x3f\x5f\x5f\x7c\xb8\x7c\xd9\x6d\x81\x12\x04\x91\xa7\x02\xb3\x94\xa4\xa8\x94\xce\x59\x68\x99\x10\x11\x7a\x40\x84\x6d\xa8\xe0\x2c\x87\x63\x74\xa5\xd5\xc7\x8d\xfd\x52\xb7\xe1\xb2\xf2\xf0\xe9\x6b\x20\xdb\x68\x8d\xb2\x71\x14\x13\xbd\x45\xf0\x03\x65\x45\xa9\x9c\xd7\xf2\x91\x66\x59\xdf\xd5\x5e\xb2\x64\x8d\xd9\x4a\xcf\x51\x2f\x58\x63\x4e\x48\x6e\x99\xc2\x4f\xe0\xde\x59\x10\x44\x64\x82\x0b\x92\x22\x7d\x56\x11\x46\x29\x2f\xfb\x06\xf9\xf5\xd7\x67\x88\x92\x37\xe8\xeb\x46\x67\x73\x74\x69\xdf\x6f\x2c\x20\x8c\x8b\x91\x0d\x11\xf0\x01\xbb\x54\x67\x3d\x17\xd2\x0a\x8b\x34\x23\x52\x6a\xf6\xf3\xb8\x26\x70\xe8\xc1\x0b\xee\xb6\x06\x18\xb2\xd4\x97\x3b\xe3\xaa\xcb\x1b\xda\xd9\x71\x18\xef\x52\x58\x3e\xc8\x73\xca\xf4\x89\x03\x73\xe2\x0c\x17\x45\x46\x13\xb8\xe8\xcf\x8d\xa3\x6e\x66\x35\xcf\x19\xb6\x64\x39\xab\xb6\xfa\xfc\x2b\xab\xe1\xcc\x70\xf5\x14\x65\x33\x3c\x93\x6b\x62\xa1\x10\xbb\xed\x1d\x29\x04\x49\xf4\xb8\xdf\x80\x39\xa0\x10\x3c\xd7\x93\x2e\xe5\x9c\x3c\x15\x5c\x28\x22\xe6\xfa\x94\x74\xb1\xb4\xe3\xb8\xd1\x08\xdb\xf8\x8f\xe4\x7b\x2a\x41\xb6\x6c\x10\x76\xb5\x43\x70\x4c\xb5\xec\x69\x89\xb4\x5a\x9e\xee\x9d\xe9\x70\x67\xd7\x8b\x12\xb4\x3e\x84\x6d\x22\x97\xa7\x35\x99\x4b\xb6\xf9\x11\x8b\x86\xdf\x1e\xae\xfd\x8e\x89\x21\xfb\xc0\x80\x9e\x84\xde\x0e\x4f\xf6\xa0\xd7\x74\xf3\x96\xee\x1a\xef\x1c\x7d\x28\x25\xac\x2c\x46\x6f\x7f\xbe\x7a\x77\x79\x7d\x7f\xf5\xed\xd5\xe5\x6d\xf7\xd0\x50\x98\x5a\x02\xd8\x88\x50\x39\xc2\xc3\x4f\x5b\xbc\x73\x50\x25\x71\x5c\xb5\x10\x64\x03\x36\x20\x73\x16\xd3\x1e\x02\x34\x94\x37\xd0\x63\x45\x93\x20\xf3\x39\x47\x23\x4d\xba\x17\x52\x86\x30\x6d\xdb\xf1\x68\xd6\x3d\xd0\xa9\x3e\x1b\x63\x18\xf8\x90\xae\x63\x59\xfb\x18\x36\x3e\x3c\xd2\x8a\xc1\x47\x31\xf3\x81\x3e\x81\xcd\x5b\x6b\x27\xf0\x96\x93\x93\x4e\xdb\xa6\x69\xa1\x24\xfc\xad\xe0\x79\x20\x19\xdf\x19\xc0\xcf\x92\x8b\xde\xa3\x76\x2a\x4d\xaf\xfd\x47\xab\xc5\xe8\xac\x10\x62\x70\x46\x56\x0a\x21\x79\xa1\xb6\xfd\xef\xfb\x39\x07\x32\x74\xbd\xa4\xab\x0f\xb8\xf8\x9e\x6c\x7b\xd5\xaa\xee\x49\x92\x4c\xcb\xe5\x08\xa3\x07\x02\xc8\x0f\xe0\x65\xa6\xb3\xa1\x59\x85\x8e\x4c\xb7\x07\xb2\xf5\x3d\xb2\x33\x2a\x4d\xeb\x7a\x3c\x70\xa3\xe8\x01\x0e\x0f\x05\x85\x11\x80\x6b\xc3\xbc\xb6\x73\x40\x5f\x90\x6a\xe4\x5a\xac\x8a\x14\xd0\xe5\xb0\x12\xe5\x5a\xc4\x4a\xf3\xc2\x38\x38\x22\x57\xfb\x0e\xb4\xe3\x6d\x8b\x77\x54\x54\xa9\x45\x40\xaa\x42\x56\x48\x53\x50\x6e\xaf\x42\x7b\x71\x04\x4e\x6e\xc1\x79\x46\x7a\xa0\x11\xae\x0d\x1b\x51\x5c\x9b\xe9\x51\x0c\x3e\x11\x64\x2d\x42\x66\x5f\xe3\xce\xf6\x69\x7d\xb8\x8d\x9d\xcc\x59\x05\x79\xfa\x06\xc9\xb2\xd0\x72\x94\xac\xb0\x7a\x73\x4d\x78\x3e\x2a\x69\x3d\x0c\x76\xa0\xb3\xfa\x37\x03\xb7\x6e\xfc\x00\x9c\x0f\x84\x68\xe9\xeb\x18\x30\xd4\x8c\xa7\xa0\x30\x9f\x99\x7f\xda\xbb\xf9\x22\x49\x78\xc9\x94\xfd\x83\x01\x4b\xaf\xb9\x54\x57\x37\xde\x4e\x2d\xb2\x9a\xa7\x57\x37\x03\x77\x07\x8a\xe2\x66\xdd\x90\xde\xee\xd6\xda\x0e\x07\xf2\xb5\xbb\x60\x51\xbd\xfa\x3f\x01\xa3\x7c\x83\xd5\x1a\xd1\x10\xba\x76\x2e\x2b\x00\x9e\x89\x5c\x5f\xb3\x67\xce\x5c\x6b\x6e\xca\xcd\xeb\x93\x83\x72\xcc\xa5\x1b\x60\xe4\x94\x61\x4e\x76\xbe\x86\x04\x2b\x8e\xee\x04\xa2\x0a\xba\x16\x30\xf1\x8b\x9b\x2b\x07\x8b\x3e\xe0\xf4\x42\x0f\x72\xb5\x08\x87\x38\xce\xce\xd0\xfb\xed\xb3\x8e\x75\x85\x4a\xb6\x6b\x5c\xc9\xb7\x6f\x10\x67\xd9\x30\xdf\xa9\xc7\x20\x11\xa0\x65\x24\x08\xc5\x15\xe6\xf8\x85\xf9\x71\x9e\x14\xe5\x99\x7d\x60\x9e\x93\x9c\x8b\xad\xef\xd8\xd9\x87\x49\xb1\x26\x39\x11\x38\x9b\x49\xc5\x05\x5e\x91\xb3\xaa\x73\xd3\x69\xf5\x2f\xd3\xad\xef\xdc\x35\x06\xb7\xdf\xb7\x51\x2a\x92\x52\xe8\x8b\x39\xdb\x3a\xf6\xd6\x83\x00\xaa\x5b\xf8\xb9\xaf\xd6\xb6\xdf\xa1\xd8\x6c\xed\x2d\xab\xf4\x43\x1b\x90\xe1\x68\x0e\xa4\xcb\x0d\xcf\xca\x9c\x78\x59\x24\x6a\x5c\xa8\xf0\x1e\x61\x1b\x2d\x89\x76\x1a\x09\xda\x2d\xe2\xa8\xa7\x74\x43\xe5\xbe\x29\xd1\x33\xc1\xbb\x96\xbb\x91\x97\x4a\x6b\x39\xc6\x57\x52\xa9\xaa\x4f\x05\x97\x41\xc7\xbc\xa2\xcb\x1d\xae\xf6\xba\xdf\xe5\x32\x62\xa2\x95\xab\x25\x72\x2b\x9d\x97\xef\x4d\x23\x26\xc0\x31\xb5\x03\xee\x44\x28\x57\x72\x83\x38\x04\x53\x32\xde\x94\x43\xe8\x10\xd6\x2f\x63\x79\x7c\xc1\xd3\x53\xe9\x71\x1d\xb9\xf6\x29\xd4\x0a\x77\x03\x5b\xe7\x51\x75\x25\x2d\x05\xcf\xe7\x08\xcc\x27\x01\x64\x0a\x06\x16\x88\x0d\x72\x3d\x3d\x90\x01\x4d\xce\xb5\x49\x51\xf9\x6d\x2b\x2a\x77\x95\x17\x5a\x5f\xa9\x3e\xe9\xdf\xb4\xdf\x88\x96\xe2\x7d\x68\xb4\xe3\xd9\xd3\xf3\x90\x61\xbb\x36\x1d\x77\x7d\xd5\xc7\x6e\x9c\xb5\xb9\x6f\xfd\x42\xd8\x55\x9f\xbb\xcb\xb5\xe7\xb9\xbd\x06\xb7\xed\xed\x87\x77\xa3\xdc\x5f\x83\x9d\xf6\x99\x72\x43\xdc\x60\x83\x1d\xb7\xac\xad\xc1\x36\xd5\xc1\x2e\xbb\x5c\x65\x7e\xab\xea\x60\x97\x43\x2e\xb3\x61\xbb\xaa\xe7\xa4\xfa\x5c\x67\xdd\x96\xd5\xe1\x63\x1b\xe5\x42\x6b\x5c\x13\x83\xbd\x7e\x2e\x57\xda\x10\xcb\x1f\x70\xfb\x54\x8b\x11\x76\x1f\x0c\x31\x13\xd7\x7a\xbc\x65\xae\xb5\x4e\x74\x84\xd3\x6c\x98\xee\x2a\x1f\x53\xa8\xf7\xd3\xb4\x80\x95\x19\xe7\x18\xf3\x5c\x53\xf6\xf5\x20\x07\x59\xfd\x4e\xa8\xf4\x37\x42\x36\x0a\x73\x9c\x85\x4a\x7e\x61\xae\x35\xd7\x22\x64\x11\x8f\xab\xad\x73\x6a\x21\x2e\xb7\x80\x89\x75\x70\xf2\x21\xd7\x5b\x40\x8f\xbb\xce\xb9\x30\x17\x5c\x4c\xc7\xf3\xb0\x6b\x23\x48\xef\x0c\xc0\x59\x34\x2e\x8f\x10\xd9\xf7\x40\xa8\x8b\x76\x3b\xac\xf3\xce\xb5\x48\x27\x5e\x10\x39\xb5\x2e\x9c\x60\x67\x9e\x6b\xb1\x87\x66\xd8\xb9\xe7\x5a\xbc\x93\x2f\x88\x1c\xb3\x92\xcc\x9f\xe9\xec\x73\x2d\x9c\x0b\xa2\x58\xe7\x5f\xf7\x22\x8c\x76\x02\x8e\x1b\x31\x0a\xd5\xde\x3b\x47\x3b\xc2\x39\xe8\x5a\x04\x41\xb9\x16\x76\xcf\x74\x0e\xd4\xab\x8b\x07\x77\x3b\x28\x72\x1d\x47\x6b\x77\x2d\x5c\x7b\x8f\xe8\x34\x04\xb3\xb9\xdb\x46\xec\x5d\xb8\x56\xef\x5a\xb8\x1b\x32\x62\xb6\xb5\x29\x20\x5a\xd1\x77\x2d\x5c\xe1\x77\x2d\x4c\xf1\x77\xcd\x6f\x00\x68\x8f\xc4\x6b\x4a\x74\x2d\xcc\x6d\xe9\x5a\xbc\xfb\x32\x70\x05\xdb\x4e\xce\x20\x37\x66\x6c\xcf\x4d\x67\x67\xa8\x3b\x33\xf0\x1b\x6d\xa7\x67\x8c\x5b\xd3\xb5\x78\xfe\x1c\xe3\xe6\x74\x2d\xd6\xdd\x19\x71\x86\xa8\x3c\x94\xdb\xd3\xb5\x11\xfc\x24\xc2\x0d\xea\x5a\x84\x3b\x34\x62\x35\x5a\x8e\xd3\x38\xb7\x68\xd5\x45\xec\xf4\x63\x19\x4a\x98\xbb\xb4\x3d\x9c\x60\xb6\x12\xe7\x3e\x75\x2d\xde\x8d\x1a\x7a\xd1\xb0\x6c\x1b\xe1\x4e\x0d\xec\xb5\xed\x74\x0d\x75\xab\x06\x76\xbe\xe3\x7c\xf5\xb9\x57\x43\xb9\xc6\x28\x27\xac\x6b\xf1\x5c\x2a\xd2\x29\xeb\x5a\xb8\x73\x36\xe2\x50\x3a\x37\xee\x58\x27\xad\x6b\x23\x18\x53\xb0\xd3\xb6\x7a\x21\xdc\x79\x1b\xc9\x96\xac\x9b\xf7\x39\x4e\xdc\xaa\xbb\xf8\x85\x08\x77\xea\xba\x76\x48\xe7\xee\xe8\x81\xc7\xf2\xd6\x20\xa7\x6f\x7b\x34\xc1\xac\x35\xdc\x09\xec\x5a\x94\x33\x38\x70\x11\x63\x5c\xc6\xd5\x3b\x9f\x41\x09\xed\x71\x25\x47\x1c\x9a\x86\xd3\x79\xac\x4b\xd9\xb5\x49\xbd\x9d\xd4\xdb\xc1\x16\xee\xbc\x8e\x11\xcd\xff\x31\x75\xdb\xe0\x87\x43\x5d\xf0\xbd\xce\xef\xc8\x2f\x86\xf8\xaf\xfa\xd2\x26\xb9\xd6\x56\x5b\x1a\x19\x93\x2a\x43\xa9\xf5\x8b\x23\x48\xde\x91\xe0\x41\xbf\x8e\x2f\x13\x52\x7b\xe4\x7d\x69\x68\x5c\xdb\x49\xd5\x1b\x30\x81\xd3\xb7\x3c\x2f\x4a\x45\xd0\x6d\x25\xa2\x57\x32\xde\x62\x5b\xcf\xc5\x13\xb2\xe6\xda\xa0\xe3\x34\x88\x95\xb5\x72\x7c\x9e\xe7\x98\xe1\x15\x78\x45\xf5\x20\xab\x1c\x00\xb2\xe1\x16\x1d\xe2\x23\xa1\xd7\x9e\xd1\x1f\xbc\xf0\xe6\x46\xd6\xeb\xf0\xeb\x34\x06\x60\xb8\x13\x51\x08\xaa\x92\xf9\x71\x41\xda\x99\xe0\x70\xce\x4b\x16\x24\x83\xda\xb5\x6b\xe8\x60\x36\x43\xdc\xe7\xdd\x1a\x14\xcb\x27\xb4\xf6\xf5\x85\xed\xd0\xad\xd3\x60\x77\xf6\x88\xb2\xc6\x1e\x79\x3f\x0f\x89\x0c\x77\xf7\xc8\x1d\x42\x70\xe1\x55\xdf\xa1\x12\xf1\x9c\xaa\xbe\xfc\x4d\xcd\xa6\xb9\x11\xae\x8f\xed\x19\xa2\xaa\xa5\x6d\x58\xea\x02\xe4\x0b\x56\x21\xe8\x7a\xf2\x54\x64\x34\xa1\xa0\xbd\x3a\x03\xcb\x99\x91\x0d\x1e\xa9\x04\x6d\x00\x33\x44\xf3\x22\x23\xb9\x4b\xc1\x3d\x0b\xbd\xf1\xac\x93\xe8\x57\x42\x91\x41\x8f\x41\xa6\x15\xaa\xb6\x5a\x87\x26\x4f\xe1\x77\xca\xe9\x9d\x7d\xd1\x4a\x31\x2e\x37\x5f\x95\x8a\x45\x94\x0c\xfc\xa2\xc3\xac\x38\x72\x29\x0b\x9e\xd1\x64\x7b\xee\x06\x0d\x6b\x46\x9e\xd4\xf9\x01\xbe\x61\x80\x2f\x6e\xaf\xc8\xac\xe0\x69\x63\x4b\xf6\xbe\x78\x08\x86\x0e\x2c\xee\x46\xd0\x0d\xcd\xc8\x8a\x5c\xca\x04\x67\x8d\x2c\xf5\xa1\x1b\x71\xd1\xd3\x0b\x1c\x2b\xc1\x33\x19\x04\x34\x82\xf1\xe8\x91\x27\x44\x4a\xf0\x6f\xaf\x30\x65\x26\xc9\x65\xe1\x3a\x87\x04\xb5\x0c\x04\xc6\x02\x8b\x10\x3f\xbf\xed\x70\x8e\xee\xd7\x54\x82\x8c\x88\x52\x2a\x48\xa2\xcf\x67\x35\x3e\x6a\x54\x10\xc6\x7f\x66\xe4\xf1\x67\xfd\x35\xff\x39\x5f\x66\xb8\x76\xe9\x43\xc6\xa4\x5d\x78\x42\xf5\xe9\xbe\x05\xf2\x7e\x83\x4a\x48\xc1\x83\x70\xf6\x88\xb7\xb0\x8c\xbb\xdf\xa0\xf2\x0d\x7a\xfd\x12\x68\x1d\x4b\x54\x7d\xc3\xcf\x49\xbe\x79\x09\x29\x08\xdf\x5e\xdc\xfc\x7c\xf7\xb7\xbb\x9f\x2f\xde\x7d\xb8\xba\x0e\x3b\xf6\x21\x72\x76\x82\x0b\xbc\xa0\x19\x0d\xb9\x59\xf6\xb4\xe2\xe6\xcb\x36\xd7\xe9\x79\x2a\x78\x61\xe6\x3f\x9c\x0b\xae\x31\x04\xb7\x46\xb2\x8d\x1b\x80\x6c\x66\x36\x33\x95\x4d\x74\xd5\xfc\xa0\xb7\xdf\x95\xc0\x4c\x19\xb1\xaf\xbd\x15\xa2\x64\x8a\xe6\x83\x91\xbc\x28\xd2\xc6\x80\xd3\x20\x0d\x65\x27\x33\x7b\x4a\xd2\xb8\x29\x05\x21\xbc\x3a\x3f\xf6\xd6\x7d\x66\x5b\xa3\xbd\xd0\xcd\xc7\xbb\xab\xff\x19\x3b\x02\x64\xe9\x2b\x42\xcd\x0a\x56\x75\x43\xf4\x99\x6a\x7a\x82\x17\xd1\x6b\x7e\x4b\x72\xbe\x99\x56\xbd\xeb\xf1\x90\x55\x0f\x16\x70\xab\x7b\xc0\x7b\x2c\xda\xdb\x53\xb2\x26\xcb\x64\x8d\x7e\x50\xce\x53\x32\x47\x37\x86\x55\x07\xac\x59\xfb\xed\x9a\xc9\x18\x1c\xb3\x94\x26\x39\x58\xb6\x6d\x24\xa7\xf3\x4b\xd6\x1c\x09\xce\xab\x1b\x64\xcd\xe5\x0e\xd6\x09\x4a\xcf\xf8\x18\x4b\x38\x77\xd6\x17\xd3\x07\x2d\x74\x47\xad\x62\xf5\x16\x4a\x09\xe3\xca\x4a\xf1\xfa\xab\x9a\x87\xea\xbf\xa2\x30\x49\x5e\x71\xc8\xc8\xe2\x0c\x01\x4d\x46\x7d\xdf\x60\xce\x54\xba\x35\xb8\x71\x5f\xf6\x76\x6d\xf2\xec\x96\xd2\x0e\x6e\x8f\x39\xd7\xb2\xbd\xfe\xba\x20\x38\x0d\x88\x72\x84\x8a\x21\x6b\x69\x2b\xd7\xc8\x07\x92\x9a\x1f\xac\x4c\x61\x75\x10\xf3\xc5\x6a\xa8\xf7\x21\xa7\x6a\x49\xb0\x2a\x05\x31\xb2\x84\xc9\x71\x68\xd2\xfe\x7a\xa1\x81\x11\x51\x60\x38\xfd\xc8\xb2\xed\x2d\xe7\xea\x5b\x9a\x11\xb9\x95\x8a\x78\x31\x6e\xad\x8d\xff\xa9\x32\xef\x51\xd9\x58\x52\x2d\x3e\x60\xe8\x7f\x16\xb4\x88\x40\xe2\xcb\x6a\x08\x15\x85\xeb\x8d\x3e\x30\x81\x8b\x92\x5d\xc8\xef\xa0\x3a\x55\xac\xf0\xf1\xdd\xd5\x3b\x38\x8f\x25\xdb\x09\x9d\xd8\x73\xed\x86\x8b\x9e\x3f\x68\x7a\xdc\xa1\x40\x2d\x73\x96\x4c\x12\x35\x47\x1f\xf0\x16\xe1\x4c\x7a\xd2\x6b\x9a\x66\x91\xde\x37\x90\x15\xb9\xa9\x37\xcd\x21\xf8\xc1\xfe\x79\xc1\xd5\x1a\xed\x3c\xe0\x17\x36\x58\xda\xd1\xef\x99\x85\x6c\x66\x25\x69\x17\x09\x89\xed\x5e\xe1\x07\x22\x51\x21\x48\x42\x52\xd2\x9b\xce\xb6\x6e\xbe\x84\xc9\xad\xbe\x83\xcc\x7e\xc8\x51\xc6\x35\x67\xfa\x38\x44\xd1\xc6\x15\x4b\xa1\xb8\x8b\x2d\x91\xd1\xe6\x2e\x60\xb8\x36\x32\x78\x80\x8e\xc3\x38\x9b\xc1\x61\x28\x25\x11\x60\xb9\xd0\x42\xbe\x59\xe8\xef\xcb\x05\xc9\x88\x32\x8a\x85\x2d\x1b\xe6\xa7\x0a\x80\x1a\xe7\x78\x45\x10\x56\x15\xa1\x29\x8e\x08\x93\x25\x14\xe1\xc0\x0a\x0c\x1b\x9c\x18\x14\xa9\x28\xfd\xba\x07\x96\xe8\x87\xab\x77\xe8\x15\x7a\xa1\xc7\xfa\x12\xc8\x63\x89\x69\x06\x2e\x2a\x85\xc5\xee\x1a\x50\xbf\x8d\xcd\x0e\x01\xa6\x0c\xb4\x8f\xb8\x30\x47\xff\x0c\x31\x8e\x64\x99\xac\x1b\xa5\xd2\x7c\xc9\x8d\x4c\x5b\x10\x54\x10\xa1\x89\x05\x4c\x75\xf5\x51\xf2\x1c\x95\xd0\x93\xd6\x75\x94\xfa\x8e\x4a\xd0\x3e\xf9\x8f\x52\xf4\x51\x89\x64\x8c\x7d\x05\x83\x9a\x6d\x8f\x2f\xfe\x70\x04\xbe\xd8\x14\x71\x20\xb9\x69\x6b\x55\x0c\x41\x3b\x74\x9c\x9f\xb8\x80\xa6\x5c\x07\xff\xa8\xa4\x70\x1c\xae\x29\xc9\x7b\xca\xca\xa7\x8f\x45\x6f\x89\x96\x66\xdb\xa3\x9d\xbb\x4b\x78\x1d\x25\x6e\x52\xb0\x29\x10\xd6\x65\xf2\xdc\x86\x78\xf5\x1b\xc1\x4b\x57\xad\xad\x3e\xeb\x11\xf5\x82\xd8\x07\xce\x32\x0e\x35\xbb\x30\x12\x98\xa5\x3c\xdf\x1b\x2c\x40\x70\x70\xb2\x6e\x0e\x40\x13\x57\x40\xd7\x21\xc4\xd7\x24\x2e\x6f\x97\x81\xc4\x57\x13\x97\x9f\xb4\x0f\x49\x7c\x31\xa6\x8d\x8c\x6c\x48\x90\xdf\xb9\x1d\x09\xa7\xdf\xd2\x02\xa3\xdb\x25\xe8\xc6\x94\x69\x35\xd7\x9c\xa1\xaa\x30\xdd\xd7\x5a\x83\x02\x9d\x76\xf6\x9d\x18\x25\x58\xf0\x2c\x08\x1b\xd1\xd6\x56\x79\x46\x4c\x1e\x76\x37\x49\xdd\xcd\x17\x3b\x47\xd5\x53\x39\x6f\x70\x8e\x50\x44\xaf\x35\x47\xd0\x23\xbf\xd4\x39\x96\x01\x37\xe6\xde\x1c\xa1\xda\x5e\x6b\x8e\x70\xc7\x7d\x99\x73\x0c\x36\xc1\x3c\x52\x96\xf2\x47\x39\xf6\x2a\xf8\xc9\xbc\x5e\x97\xea\x90\x44\x29\xca\x56\xb2\x71\x1d\x84\x30\xed\x96\xd5\xa0\xeb\x3e\x70\x4e\x21\x57\x32\xd5\xdb\xe9\x3e\x1f\xad\x03\xf6\xa4\xf5\x30\xfe\x86\xd4\xab\x18\x5e\xbd\xca\x25\x7e\x5b\x25\xbe\xbf\xdb\x29\x6f\xda\xd7\x5a\x7b\xff\xdd\x87\xbb\x8b\x76\x17\x00\xc8\x5f\x13\x53\x23\x10\xfe\x1e\x74\x0e\x70\x9a\x53\xa8\xf4\x85\x1e\xc9\x62\xcd\xf9\x03\x7a\xd1\xa8\x55\xbb\x2e\xa1\x0e\x75\xc3\xbd\x36\x93\x74\x25\xcf\x2d\xd5\xce\xf4\x4c\xc2\x90\xc8\xa6\x48\x45\x6d\x46\x82\x30\x66\x2b\xea\xea\xc1\x36\x2a\x01\xc0\xc6\x05\x75\xca\x70\x5e\x7b\x0e\xf6\x97\x04\xe0\x70\x00\x1c\x33\xa6\xa5\xa0\x3e\xab\x02\x16\x38\x2b\xd6\x78\x66\x2e\x44\x6c\x0a\x13\x03\xaa\x7c\xcd\x19\xb7\x38\x15\x53\x2c\x2e\x90\xe1\x68\x0e\x65\xac\x51\x30\x5c\x7b\x72\x61\xee\x4d\xbb\xd5\xc1\x99\xed\x3e\xb5\x85\x42\xb3\x3d\x14\xb7\x5b\x98\x27\x68\x19\x06\xb6\xdc\xaa\x2d\xd6\x0c\x08\xfb\x10\x46\x5a\xbf\x9d\xbd\xaa\xf4\xc9\x51\x5b\x04\x7a\xa5\x7d\x59\xf3\x3c\x77\x39\xd4\x7a\x66\xd0\xec\x07\x74\xd1\x7d\x5d\x33\xe6\xb2\xf5\xe9\xa4\xbb\x3a\x67\x50\xdf\x81\x7a\xa9\xb9\x6d\x02\x59\xd5\x61\x55\x53\x74\x3c\xf5\xd4\xb4\xfa\xbc\x74\x9e\x05\xb5\x7b\x1c\x82\x3a\xad\x8f\x4c\xdf\x71\xb8\x6d\x12\x6b\x18\x6f\x3d\xde\xd9\x39\x1c\x84\xc6\xfb\x08\x54\xe0\xdf\xf4\xa3\x7c\xdb\x68\x8e\x2b\xfb\x34\xc2\xca\xba\x53\x72\xa2\x04\x4d\xa4\xc3\xd5\x68\xba\x4d\x04\x24\x0a\x68\x24\xd9\xef\x9d\x83\x13\xa2\x84\xf5\x91\x42\x32\x8f\x65\x09\xeb\x2a\x48\x46\xb0\x24\x7d\xb8\x03\xef\x72\x9a\x40\xcb\xbe\x6f\xc7\xc1\xdc\x02\xf6\x6e\x07\x78\x08\x1f\x07\xbf\xdf\x03\xd9\xda\xd3\x52\x60\xea\x08\xb0\x51\xc7\xc7\x03\xe9\xbf\xa9\x12\x4c\x55\x25\x54\xd0\x86\x62\x74\x67\xe2\x3d\x5d\xdd\x15\x33\xdb\xf9\xa7\x59\xf5\x01\x7a\xf2\xd6\x3f\xdb\x07\xf9\x57\xa5\xce\xea\xa9\xce\xdd\xf4\x5c\x1d\x19\x39\x6c\xb1\x59\x40\xf1\x25\x5b\xfc\xcb\x96\xaf\xad\x2a\xcb\xb5\xca\x3d\xec\xcc\xbd\xb7\xc7\x43\x52\xe2\x10\x1c\xba\xa3\x92\xac\x17\x0b\x1d\xb4\xc9\xa5\xac\x5f\x9d\xeb\xff\xeb\x1b\x7e\x08\x7c\xda\x67\x0d\xf4\x14\x38\x1a\x40\x54\x1f\x03\x49\xfd\x19\x10\xd4\x9d\xe3\x08\x29\x33\x52\x75\xd6\xb5\x3d\x3e\x3d\x6c\x18\x73\x7d\x6c\x16\x17\x84\xad\x76\xb8\xdc\xde\xef\x7e\x41\x98\xea\xa0\x04\x83\x43\x18\xea\x23\xaf\x78\x10\x56\x3a\x6e\xcd\x7d\x18\xe9\x3d\x0c\x74\x3f\xc3\xf4\x60\xa3\x7d\xd8\xe7\xfe\x65\x1a\xc0\x44\x7f\x6e\xcc\x73\x50\xe2\xc8\x9e\x3f\x07\x60\x9b\x47\x62\x9a\x7d\x41\x72\xcf\xc1\x32\x43\xdf\x3d\x92\xe4\x61\x31\xcc\xa3\x59\xea\xce\xc2\x8e\x61\xac\xb1\xd8\xe7\x91\x98\xe7\x1a\xd3\xdc\x4b\xfd\xa1\x58\xe7\x0e\x2c\x73\x6f\x9f\x41\x18\xe7\x2e\x0c\x73\xff\x19\x8d\xc3\x36\xef\x60\x97\xfb\x05\xd5\x70\x4c\x73\x14\x66\xd9\xef\x13\x0f\xc1\x28\x8f\xc3\x26\x37\x8d\xd3\xbd\x13\x8f\xc0\x24\xef\x60\x8e\xfb\x09\x29\x14\x8b\x1c\x94\x73\x76\x18\x7b\x3c\x1e\x73\x1c\x9b\x4d\x32\x10\xed\xea\xc7\xb1\x1e\x30\x7b\xa7\x0f\x25\xfc\x1c\x74\xf0\xaf\x7f\x7d\xbc\x42\x96\x1f\xc7\x3b\x16\xbf\x3b\x94\x05\x27\x16\xb7\xdb\xc0\xe5\x0e\x72\xc5\x48\xbc\xae\x9f\x33\x79\xf1\xb9\xa3\x70\xb9\xd6\x5c\xdd\x3b\x95\x11\x78\x5c\x63\x20\x1a\xd2\x4f\xa3\x70\xb8\x35\xce\xb6\xb7\xcb\x28\xfc\x6d\xcb\x7e\x37\x24\x7c\xfa\x71\xb7\xde\xb3\x11\x87\xb3\x1d\x81\xaf\xdd\xc3\xcf\xfa\x6e\x16\x2f\xae\xd6\x4f\x88\x7e\x1c\xed\x31\xf0\xb3\x23\x70\xb3\xd6\x92\xde\x6f\x61\x8b\xc7\xcb\x46\x9b\xcf\x0f\x6c\x32\x0f\x41\x72\xf9\x11\x5c\x21\x78\xd7\x51\x38\xd7\x06\x8e\x75\xe8\xfc\x07\xe1\x5b\x3b\xf1\xab\x43\xe7\x75\x00\xd7\x3a\x84\x5b\xed\xed\xb2\x1b\xcf\x1a\x82\x57\xed\xed\x72\x07\xc7\x7a\x78\x9c\xea\x08\xd2\x0d\xc0\x85\x1d\x84\x74\x03\x19\xcb\x10\x0e\xf5\x18\xf8\xd3\x51\xb8\xd3\x60\x1f\x5f\xf8\x96\x8e\x82\x91\x1c\x09\x3e\xf2\x69\xb9\x51\x18\x8e\x74\x14\x7e\x34\x04\x19\x15\x8e\x1b\xdd\xc7\x85\xf6\x76\x1a\x8a\x17\xfd\x0d\x9f\xf7\x10\x75\xd2\x8b\xf7\x1c\x87\xf3\xf4\xc1\xc5\x82\x31\x73\x41\xca\x8f\x0f\xcf\x39\x0e\xc7\xf9\x69\xe7\xe0\xc3\x6b\x8e\xc3\x69\x7e\xda\x39\xf8\xf0\x98\xe3\x70\x98\x9f\x72\x0e\x5e\x15\x39\x0c\x67\x39\x0a\x5f\xb9\x8b\x9f\x8c\xe2\x97\xbb\xb8\xca\x3e\xdc\xe4\x90\x1f\x37\x04\x4f\xf9\xb9\xc5\xef\x10\x9e\x16\x87\x8b\x8c\xc6\x43\xd6\x58\xc7\x41\xb2\x3c\x0e\x0e\x32\x16\xff\x68\xb0\x8d\x83\x5d\x06\xe3\x1e\x3b\xb1\x41\x83\x5d\x0f\x63\xe8\x86\xf0\x71\x83\xdd\x86\xe2\x7f\x82\x98\x56\x3c\xae\x31\x12\xcf\xd8\xdc\x9e\xc1\x69\xf9\x71\x8c\x1d\xb8\xac\x61\x6a\xf9\xc2\xd7\x3e\x18\xa7\x18\x89\x4f\x6c\xe8\x21\x83\x93\xf1\xe3\x12\xbb\x31\x87\x9e\x23\xea\xd1\x55\x02\xc5\xce\xc1\x8f\x1c\x98\x4b\xa3\x63\x61\x0b\x63\x31\x85\xa1\x10\xdb\x10\x2c\xe1\x21\x69\x75\xbc\xbb\xb9\xf7\x4f\x05\xd6\x17\xee\x2e\xd5\xfb\xac\x3e\x9a\xa0\x16\x58\x02\x87\x31\x3d\xc0\x4a\x5a\x7f\x62\x46\x44\xf7\x35\xcf\xb8\x42\x72\xcb\x12\x28\xcc\x64\xea\x1c\x49\x94\xe3\x94\x18\x02\xa7\x46\x34\xd9\x5d\xa4\x7e\x8b\x41\xc1\xd3\x7b\x92\x17\x19\x56\x7b\xe7\x76\x27\xc5\x64\xf5\x1c\x10\x00\xab\x93\x68\xb7\xa0\x00\xa0\x9f\x15\x3c\xdd\x13\x7b\x86\x2e\xfc\x7a\xd2\x7e\x17\xfe\x4f\x5c\x3c\x64\x1c\x37\x57\xea\xf4\xb4\x51\x24\xbf\x0b\xc8\xb0\xa2\x6a\xfe\xf0\x67\x70\xa3\x27\x3c\xcf\x4b\x46\xd5\xf6\x1c\xde\xa7\x8b\x52\x71\x21\xcf\x53\x4d\xca\xe7\xb8\xa0\xb3\x84\xb3\x8d\x66\xde\x9c\xc9\x79\x9e\x7e\xe5\xfa\x1d\xe5\x02\xaf\x0b\x4e\x7c\x26\xb8\xcb\x45\x3d\x02\xbb\x6b\x25\x93\x4a\x94\x89\x3e\x4e\x69\x03\x57\x99\xe3\x02\x49\x35\x08\x06\xb6\x35\xb0\xea\xb4\xdb\x9a\x92\x73\xbc\x75\xcc\x0f\xd0\x65\x8a\x08\x4d\x12\x8a\xf3\xcc\x54\xce\x53\x7d\x58\x07\x54\x55\x0c\x57\x82\x92\x0d\x41\x58\x2c\xa8\x12\x58\x6c\x1b\x7b\x79\xbf\x26\x5b\xf0\x20\x69\xb2\xff\xa5\x24\x62\x0b\x8c\x62\xe8\xba\xac\x51\xb4\xe0\xab\x13\x1b\x92\x1a\xe7\x71\xce\x53\xba\xdc\x52\xb6\xb2\x67\x58\xee\x91\x4a\x37\xe6\x42\xdf\x18\xb3\x55\x49\x53\x72\xde\xd8\xd0\x63\xc0\x59\xdc\xbc\x03\x70\x2c\x0a\xb3\x14\x8b\xd4\xf6\x34\x1d\x80\xbe\x85\x9a\x0e\xc0\xaf\xe9\x00\xc8\x1e\x15\x6f\x87\xf8\xad\xee\x6d\xee\x1b\x2b\xfa\xa5\x44\x1a\x8c\x2b\x59\xe3\x0d\xe5\xa2\x51\x8b\xa8\x5b\x62\x38\xec\x29\xd1\x23\x9f\x61\x96\xce\x4c\xe9\x9f\x51\x87\x65\xb9\xa4\xfa\x8b\x61\x6e\xa4\x25\xda\x31\x1c\x98\x7c\xfc\x32\x59\x93\xb4\xcc\x2c\x48\x46\x2a\x81\x29\xeb\x0d\xca\x09\xd1\xc1\x19\x4f\xc9\x85\x67\x64\x7b\xa3\x7b\x57\x81\x2b\xf5\xeb\xd5\xcc\x9a\xa3\x13\x65\x46\xa4\xb7\x7e\xc7\xe0\x0e\x86\x4f\xc2\x3c\x47\x96\x44\x08\x92\xbe\x2b\x35\xf7\xb8\xab\x86\x72\xb5\x02\x81\xd5\xfc\x7c\xf9\x44\x92\x32\x3a\x45\xe7\xbd\x2d\x9f\x94\x96\x4e\x6e\xb3\x9f\x03\x0e\x60\xff\x00\x52\x91\xa7\x57\xf0\xbe\xe9\x35\xb3\x82\xa2\xc4\x8a\xca\xa5\xd1\xeb\xab\x55\x24\x4f\xfa\x60\x4b\xe0\x69\x61\x9a\x0c\x72\xd6\x01\x27\xc3\x9f\xa1\x45\x09\xae\x3d\xcd\xbe\x92\x35\xe7\x92\x80\xc3\x31\xb5\x5c\x6d\x43\xb9\x96\xf4\xfc\xc3\xe5\x8c\x20\x2e\x0c\xb2\xce\x15\x6e\xad\x87\x67\x00\x0e\x75\xb7\x54\xa2\x9c\x07\x14\x70\xad\xf6\xca\xa9\xdf\xfa\x33\xc0\x7e\xf5\x3f\x56\x10\xa6\x20\x15\x92\x65\x0e\xb5\x2f\x09\x5d\xad\x55\x40\x3d\x30\x3a\x27\xf3\xda\x7f\x50\x0f\x2b\x27\x44\x01\x76\xba\x59\x0a\xcb\x10\x87\xb7\x4f\x8b\x8e\x30\xf5\xc0\x5f\x54\x77\x83\x85\x39\x9f\x55\xe8\xe0\x5d\xaa\xf3\x76\xdc\xb5\xdd\x67\x88\xa8\x64\xfe\xf2\xac\xca\xd4\x8c\x61\x0d\x16\x5b\x44\x15\xd1\xf2\x77\x48\x3e\x81\xb5\xe0\xe5\xca\xac\x24\xc9\xec\xc0\xf9\xb2\x41\x1c\xa6\xee\x6b\x9a\xea\x63\x7a\x62\x16\xd7\x5f\x12\xc6\xaa\xd7\x7a\x38\x15\x12\x32\xd5\xd7\xaa\x4a\xd6\x95\x99\x4b\x08\x22\x0b\xce\xa0\x67\xf8\xcb\x65\x3d\xb7\x7f\x0a\x18\xb9\xe9\xf4\x85\x7c\x59\x13\xc3\x9a\xae\xd6\x8e\x16\xb0\x35\xee\x69\x1a\xab\x69\xc8\x17\x58\x16\x98\x25\xb2\x0d\xc8\x63\xa6\x52\x68\x83\x52\x1b\xbc\x4d\x11\x91\xbb\x99\x7b\xfb\x35\xe1\xf6\xf6\x46\x36\xf3\xa2\xb9\x81\x79\x5b\xca\x46\xaf\xd0\x0b\x20\x5d\xaa\x4e\x25\xf2\x67\xea\xd1\x4c\x7b\xc6\x8b\x97\x73\x74\x81\x58\x59\xf1\xa2\xe7\x0d\x92\xf1\x6a\x8c\x76\x30\xd2\x98\x3e\xb0\xfb\x5a\xc0\xa9\x8e\xa9\xfe\x52\x54\x55\x72\x47\x64\xf0\xbc\x30\xd4\x67\xe2\xc2\xb8\x80\xc9\x9e\x21\x2c\x25\x4f\x28\x0e\xc9\x5b\x6e\x5a\x45\x65\x6d\xd2\x35\xdb\x72\xac\xba\xab\xbb\x07\x63\x64\xf1\x90\x0b\x94\xd9\xb2\xe6\xed\xa5\x68\x32\xac\xe0\x9e\xe1\xfa\xd0\xfd\x9c\x4a\x17\x26\x17\xfc\x6e\x44\x16\xd6\xce\x69\xf4\x0e\x3f\xa2\x4b\x13\x14\xde\xa0\x07\xcd\xf6\xad\xb5\x50\x1a\x0d\x40\x9e\x05\x1d\xad\xba\x3d\x90\xed\x99\x2d\x91\x8d\xf4\x1e\xe3\xaa\x63\x41\x32\x6b\xeb\x09\x2d\xa6\x54\xf5\x08\x1d\x9a\xf1\x84\xaf\xf0\x18\x2a\xab\xbe\x18\xf7\x42\x87\xe0\x63\x1c\x7d\x50\xef\xd7\xda\xb6\x22\x7b\x44\xf5\xbe\xd4\x9e\xc2\x98\xd9\xa3\x71\xd5\x79\x4c\x73\x5b\xf7\xac\x75\xb8\x6d\x94\xe2\xd7\x4b\x71\x2a\x0d\x11\xe8\xf3\xbb\xa6\x31\xa5\x68\x4d\x53\x1c\xa8\x15\x8e\xaf\xa5\x06\xf4\x23\x54\x9d\x72\xc3\x8d\x39\xbb\xa6\xe9\xdb\xf1\x8a\x9d\xa1\x6b\xae\xf4\xff\x5d\x42\xe9\xef\x33\xf4\x8e\x13\x79\xcd\x15\xfc\x33\x76\xd1\x11\xfa\x4e\x99\x33\xf0\x3e\xfa\xdd\xd1\x1b\x66\xd6\xe3\x59\xdb\x75\xc1\x0c\xbe\x5a\x2f\xaf\x2d\x1e\x1f\x7f\xe6\x4c\xbb\x5a\x5a\xb7\xad\x65\x00\x54\xa2\x2b\xa6\x45\x62\xbb\xcc\x63\x8e\x83\x19\x8b\x1d\xa2\x2b\xda\xc4\x38\x9b\x99\xea\xe4\x21\x29\xf5\x76\xdb\xee\x18\x2f\xab\xc2\xef\xcd\xfd\x8f\x29\xa1\x55\xf7\xdb\x39\xdc\xc3\x0d\xf5\x3b\x80\x05\xbe\x6f\xc2\x6d\xc6\x10\x7f\x35\xb8\x35\xde\x80\xe0\x4c\xd9\x2a\xab\x44\xe0\xf8\x99\x9b\xd8\x7d\x87\x3d\x84\x1c\x00\x85\x20\x8a\xa4\x00\xde\x64\x0e\xa7\x15\x4f\x51\xe0\x69\x31\xe3\x05\xf4\x75\x91\xe1\x84\xa4\x28\x05\x05\x42\x0f\x5c\x09\xac\xc8\x8a\x86\xa5\xc4\x69\xb6\x9c\x88\x15\x41\x85\x96\x2f\x62\x87\x15\x7d\x89\x9b\x36\xfa\x90\xc7\x25\x95\xaf\x5b\x5c\xe1\x31\xd3\xc2\xcb\x8f\xb9\xe7\x1d\x79\x46\xbc\x14\x59\xe3\xb1\xf9\x52\xcc\x1a\x80\xf0\x08\x35\x77\xbf\x38\xb9\xd1\x56\xec\x9b\xe4\xc6\x49\x6e\x9c\xe4\xc6\x49\x6e\x9c\xe4\xc6\x49\x6e\x9c\xe4\xc6\x49\x6e\xec\x6c\x93\xdc\xe8\xda\x27\x91\x1b\x23\x3f\x62\xec\x9f\x23\xcc\xb2\x3f\x19\x7b\x76\x6d\x87\x35\x16\x56\x10\x5a\xc1\x26\x1d\xcc\xf4\xda\x06\x59\x2d\xea\xdd\x59\x59\xe0\x1e\x4c\xbd\xa6\x94\x39\x12\x98\xad\x42\xbb\x7c\x3d\x7b\xfd\xea\x55\x18\x7d\x87\x96\xcb\xad\x5b\x78\x2e\x78\x14\x45\x8d\xb3\x86\x9d\x3c\xe0\x61\xb3\x73\x7e\x4f\x4b\x38\x3d\x84\x92\x5a\x9f\x1f\xec\x00\xde\x57\x7b\x95\x56\x0e\xb3\x96\x4b\x6e\xa4\x83\xb4\xc2\x5c\xe4\x44\x21\xac\x5a\x8e\x13\x9a\x93\xb0\xfb\xb9\xe0\xa9\x61\xf4\x36\x95\x96\xf3\x04\xa7\x88\x33\xeb\x2f\x63\x10\x5e\xbf\x33\x83\x38\xa7\x63\x0d\xf2\x6c\xcf\x20\x21\xd8\x94\x43\x5d\x00\x82\xd5\xef\x70\x54\x48\xf2\x9c\x20\x13\xf5\x67\xaf\x0d\x3d\x05\xe2\x76\x05\xbd\x20\xf3\xd5\x1c\xa5\xa5\xad\xb2\xea\xed\xd2\xe4\x0e\x7b\x69\x6e\x60\x13\x56\x0d\x1e\x67\x2e\xe0\xff\xf4\xb2\x28\xb1\x85\x88\xd3\x0d\x61\xaa\xc4\x59\x40\x9d\x23\xb2\xa1\x89\xaa\x12\xf7\x40\x9c\x04\x55\x06\x69\x70\xc8\xa4\xcc\xbb\x3c\x25\xe8\x16\xdb\x11\xee\x5d\x62\xa8\x3e\x9d\x5a\xe9\x7e\x43\x73\x7a\x12\xf3\x38\x50\xe6\xc7\xdb\xb0\x74\xa8\x63\x2b\xe0\x59\xc7\x21\x17\xd6\xcd\xb9\x3f\xec\x18\x7b\x04\xe0\x40\x6a\xd0\x91\x9e\x4a\x8b\x82\x8d\xd7\x3d\xb4\x4b\x3d\xff\x8b\xeb\x77\x24\x35\x3d\xdd\xf3\x82\x67\x7c\xb5\x6d\xee\x95\x89\xa2\xaa\xf2\x5d\x85\x8a\x7d\x18\xc9\x72\x61\xb5\x27\x4d\x5f\xd7\x3b\x24\x30\x79\xfc\xc2\xda\x64\xb9\x89\xe8\x71\xb2\xdc\x4c\x96\x9b\xc9\x72\x33\xd8\x26\xcb\xcd\x64\xb9\x99\x2c\x37\x93\xe5\xa6\xb3\xfd\x63\x5b\x6e\x26\x8f\xdf\x24\x37\x4e\x72\x63\x54\x9b\xe4\x46\x5f\x9b\xe4\xc6\x49\x6e\x9c\xe4\xc6\x49\x6e\x9c\xe4\xc6\x9d\xf6\xdb\x91\x1b\x23\x3f\x12\xde\x7d\xe8\xb2\xce\xf6\x0d\xec\x41\x9e\xa6\x43\x54\x74\x02\xcf\xcc\x33\x82\x1a\x0b\x9e\x0e\xc4\x34\x82\x93\x64\x70\x2e\x09\x9f\xd9\xec\x77\xe0\xae\xd1\xdd\x59\x7f\xa5\xc4\xb9\xf1\x09\x9d\xa1\xbf\x73\x46\x4c\xbc\x97\x66\x13\x92\x7b\x4a\x6a\x41\x11\x08\xdd\xd5\x0b\xf9\x72\x30\x16\x67\x8a\x97\x9c\xe2\x25\xa7\x78\xc9\x2f\x35\x5e\x72\x8d\x81\x1f\x48\x57\x1a\xae\x0e\x9f\xf4\xf6\xd8\x86\x44\x34\x38\x9c\x66\xae\xff\xd4\x19\x3d\xe9\xed\xf3\xf3\x44\x57\xea\x43\x60\x89\x54\xaf\x74\x83\xd0\xcc\x7a\xa4\x16\x48\x42\xd2\x9b\xf6\x2c\x03\x6e\x32\x63\x93\x80\xc9\x60\xa8\xaa\x50\x10\x31\x33\xa4\xcd\xd1\x92\xb2\xb4\x63\x8e\x01\xdd\xda\x95\x0d\x38\xa9\x51\x31\x90\xed\xe9\x8d\x70\xe4\x36\x7d\xd0\xad\x6b\xeb\xd7\x14\x11\x09\x76\x03\x27\x2a\x8c\x37\x72\x81\xf5\x01\x72\x68\x20\xbe\x81\xca\x31\x56\x6f\xae\xca\x15\xc5\xc8\xf6\xae\x48\x5e\x82\x25\xe9\x4c\x78\xd4\xdf\xc6\xd9\x60\xc6\x7b\x89\xd1\xee\x62\xec\x76\x65\x6c\x5e\x19\x0d\xb8\x6a\xda\x8d\x2f\xed\xb2\x76\x1a\x0d\xe1\x3a\x8b\xec\xb1\x75\x3f\xd4\xae\xfe\x38\x0b\xde\x18\x15\xa4\x93\x5a\x9e\x6d\x4c\x44\x61\x06\xc5\x78\x2d\xd5\x6f\x54\x1c\xa5\x4e\x8f\x37\x2c\xa2\x67\x18\x17\xd1\x38\x03\x23\xda\xdd\x36\x3d\x7a\x2b\x01\x55\xb6\xc6\x11\x7d\xa2\x3a\x4b\xdb\x01\xec\x8d\xe8\x79\xda\xed\x78\xbb\x23\xda\x5d\x9e\x8a\x4c\xaa\x3a\x36\xf1\x44\x82\x1c\xf1\xed\x18\x2e\x2b\x43\xe4\xa8\x1e\xfb\x8d\x97\x9a\x07\x8c\xea\x72\xcf\x80\x09\x74\xfd\x3c\x1b\xe6\x33\x37\x72\x9c\x3d\x12\xed\x6e\xa3\xb5\xa2\x99\x74\x56\xb1\x66\x8f\xba\xed\x59\x34\x77\x2d\x94\xa3\x7a\xed\xb0\x6a\xb6\xcc\x7e\xa3\x3a\xed\xb4\x6c\x1e\x64\xac\x3d\xd6\xcd\x51\xc6\x58\xd4\x67\x90\xb5\x43\xbe\x5f\xd3\x91\xe7\xed\x18\x26\x3e\xf4\x3c\x33\x1f\x1a\x6f\xea\x43\xcf\x3d\x47\x63\x4d\x7e\x68\xa4\xd9\x0f\x8d\x30\xfd\xa1\xb1\xe6\x3f\x34\xd6\x04\x88\x46\xaf\x0b\x88\x83\xef\x07\x6b\x7d\x77\xb7\xb8\xe4\x7d\x43\x43\x1e\x41\x09\xfb\x12\xad\xad\x18\x0e\xf2\x56\x8e\x0b\xcd\xe1\xfe\x53\x8b\x49\x70\x28\xff\x2b\x56\x96\xc1\x54\x48\xad\x36\x59\xf3\x7f\xa3\x27\x67\xad\x6b\x7c\x34\xb2\x73\x3d\x3a\x2a\x77\x6a\xa1\x61\xe6\x0c\x0c\x7a\xe4\xbb\x32\x7a\xac\x8c\xf8\xb8\xe6\xd2\xc8\x73\x55\xd6\xde\x93\x07\xb2\x3d\x39\x7b\x0e\xdf\xd4\x9d\x5c\xb1\x13\x23\x78\xee\x79\x74\x9c\x54\x1b\xab\x44\xb0\x6c\x8b\x4e\xa0\xa7\x93\x0e\x74\xf0\x48\x25\xe0\x19\x66\xf4\xa8\x97\xaa\x22\xe9\x63\xe1\x17\x75\x07\x95\x75\xd2\x99\x7f\xea\x3f\xc5\xf8\x0f\x9c\xf4\x7b\xb7\x2f\xbb\xa2\x17\xce\xa2\x84\x57\x7a\xa7\xd4\x4b\x7f\xda\xad\xc6\x54\x5b\x98\x70\x00\x8d\xe4\x04\x33\x89\x4e\x9c\x1d\xfb\xb4\x51\x34\xde\x6f\x03\x73\x2d\xfa\x1e\x19\xc5\x33\xe2\x79\xa3\xb2\xd0\xf2\xef\x63\x54\x93\x1d\x4b\x96\xb5\xef\xd7\x49\x39\x2b\xe3\x7f\xa8\xc9\x45\xb7\x17\xce\x6e\xf3\x52\xaf\x3f\xe3\xaa\xd1\x0d\x7a\x81\x99\xa2\xb3\xea\x89\x88\x6e\x2b\x6b\x0e\x98\x1c\x9b\x61\x58\x6d\x0a\x8a\x35\x8b\x34\x33\x8f\xd7\x34\x7c\x66\xeb\x2f\x8c\x5a\x01\x2a\x91\x2b\x58\x8d\x65\x55\x08\x96\x33\x67\x86\x37\xec\x6e\xb8\x18\xcf\x7e\xb3\x66\x45\xa3\x2c\xc2\x6a\x00\x3a\xa5\xde\xf7\x88\x0c\x69\xae\x81\xee\xc8\x97\x90\xa0\x1b\x86\xc6\x99\x3d\xce\xfa\x17\x67\x31\x87\x95\x8d\x5a\x01\xd8\x23\x5a\xcd\x7d\x8e\x2e\xe1\x18\x36\x07\x4b\xa1\x4c\x5b\x44\x9f\xae\x5e\x7c\xe4\x21\x8a\x38\x79\x71\xf2\xd6\xac\x39\x9d\x63\x38\x32\x47\x87\x2e\x3e\x1e\x29\x74\x71\xc7\xc4\xfb\x0f\x15\xb9\x18\x69\xbc\x9f\xc2\x17\x87\xda\x14\xbe\x18\x19\xbe\x18\x34\x7f\x73\x33\x04\xc7\x31\x7a\xfb\xac\xe3\x1c\x07\xe3\x18\xd1\x4f\xb6\x6c\x7b\x80\xf1\x4b\x6f\x75\x5e\x66\x8a\x16\x35\x48\x49\x9a\xa1\x66\xc6\xb8\xb1\xb4\x2e\xf2\x16\xe7\x09\xf1\x50\x82\xdf\x77\xe7\x98\xc2\xf7\x00\xc4\x24\xe1\x06\x3b\x33\x6e\x62\x3c\x50\x92\xaa\xea\x11\xe2\x17\x9d\x55\xc4\xf8\xea\x07\x6b\x3e\x9a\x36\xc6\x85\xf8\x0e\x64\x05\x59\xfb\x78\xe0\xf6\x7c\xa1\x85\x91\x4c\x93\x99\x16\x16\x1c\xef\x0e\x60\x83\xfb\x32\xb5\xb1\x7d\x6e\x88\x73\xe4\xae\xe8\x86\xb0\x5a\xd8\x79\x21\x5f\x86\x08\x62\xd6\xce\x3c\x20\x24\xb6\x45\xbf\x20\x4f\xe4\x90\x70\x08\xb7\xd6\x28\x41\x2c\x42\x00\xb3\x42\x4e\x40\xa7\x3b\x82\xd7\x5f\x1a\xb7\xff\xbf\x34\x9c\xdf\x95\x40\x15\xe8\x89\x6d\x88\x5c\xb0\xb0\x95\xd0\x55\x93\x42\x2d\x48\x1d\xd8\x67\x3b\xc2\x59\x79\x3c\x47\xe5\x48\x27\xe5\x67\x0b\x61\xed\x77\x4c\x22\x1e\x83\x0f\xf5\x39\x25\xc7\xc6\x36\x8c\xb0\x45\x3c\x37\xa8\xe1\x40\x8e\xc8\x29\xaa\xa1\xe7\x8b\xcf\xf2\x13\x77\x39\x1c\x61\x0d\x46\x39\x5f\x7f\xf5\xc1\x0d\x1d\x0e\x46\xe7\x2c\x8c\x5e\x90\x4e\xe7\xe2\x9e\xa3\x70\xb4\x33\x55\x76\x47\x39\x78\x2b\xf1\x75\xb5\xe7\x38\x15\x3f\x67\x70\xc3\xbe\x23\xb1\x76\x0a\x8e\x74\x6e\xee\x39\xe6\x76\x1d\x82\xa3\x0e\x86\x27\xcc\x21\xba\xcf\x8e\x31\x7e\xaa\x30\x87\x51\x4e\xc0\x09\xe3\x3f\x61\xfc\x47\xc7\x86\xc6\x3a\xf6\x9e\xeb\xd4\x1b\xb5\xcb\x47\x74\xe6\x1d\xcd\x91\x77\x64\x27\x5e\x98\x03\x0f\x45\xb1\x93\x00\xe7\x1d\xb8\xe3\x62\xba\x3c\xa4\xe3\x2e\xfa\x5c\x44\xbe\x10\xeb\xac\x3b\x9a\xa3\xee\x38\x4e\xba\x63\x38\xe8\xa2\x78\x7d\xf4\xd9\x8f\xe3\x69\xd1\x0e\xb9\x70\x67\x5c\xc3\xce\x12\x38\x57\xaf\x23\xae\xed\x5e\x8b\x61\xd9\x9d\x4e\xb8\x3d\xd7\x5a\xb4\x83\x7a\xdf\xee\xd3\x6d\xd5\x09\x5d\x80\x01\xdb\xcf\x8e\x65\x27\xde\xe1\xda\x65\xfd\x69\xdb\x76\x02\xfb\xec\x70\xba\x05\xb8\xd2\x42\xed\x2b\xe0\x70\x8b\x73\xa3\x45\x9d\x91\x18\x7f\x4a\xcc\xf0\x0f\xee\x22\x09\x0e\xbb\x63\x8a\x3e\x37\xf4\xae\x79\xca\xf6\xe2\xef\x06\x67\x63\x3c\x00\x78\xc3\x69\x8a\x8a\x52\x29\x73\xd0\x02\x62\xf0\x06\x7b\xb5\xf1\x79\x53\x0c\xde\x7e\x0c\x5e\x6b\xab\x1a\x91\x59\xde\x3e\x7b\xdc\x42\xfd\x81\x78\xfe\x51\x36\x03\xf5\x42\x02\xf1\xbc\x3d\xee\x05\xea\x05\x06\xe2\xf9\x27\xdf\x0e\xd4\xf3\x07\xe2\x79\x7b\xdc\x0b\xd4\xf3\x05\xe2\x05\x73\xa6\x5d\xd2\xec\xdf\x73\x7f\x9f\xde\x68\xbd\xce\x68\xbc\xb0\xc9\x0f\x45\xeb\xed\x47\xe3\x85\xed\x7d\x7f\xb4\x9e\x27\x1a\x2f\x80\x58\xbf\x98\x5a\x87\x53\x34\x9e\x7b\x7a\x8a\xc6\x43\x53\x34\x9e\x6d\x53\x34\x5e\x68\x9b\xa2\xf1\xa6\x68\xbc\x29\x1a\x0f\xda\x14\x8d\x37\x45\xe3\xf5\xb4\x29\x1a\x6f\x8a\xc6\x9b\xa2\xf1\x42\xdb\x14\x8d\xd7\xd1\xa6\x68\xbc\x29\x1a\x6f\x8a\xc6\x9b\xa2\xf1\xa6\x68\xbc\xba\x4d\xd1\x78\x53\x34\xde\x14\x8d\x57\xb5\x29\x1a\x6f\xb7\x4d\xd1\x78\xd0\xa6\x68\xbc\x9d\x68\xbc\x96\x13\xeb\xd7\x1b\x92\xd7\x9c\x46\x28\xb9\x4c\x71\x79\x53\x5c\xde\x14\x97\x37\xc5\xe5\x4d\x71\x79\x53\x5c\xde\x14\x97\x57\xb5\x29\x2e\x6f\x8a\xcb\x9b\xe2\xf2\xa6\xb8\x3c\x4f\x9b\xe2\xf2\xa6\xb8\xbc\x29\x2e\x6f\xb8\x4d\x71\x79\x53\x5c\xde\x14\x97\xd7\x68\x53\x5c\xde\x14\x97\x37\xc5\xe5\x4d\x71\x79\x53\x5c\xde\x14\x97\xf7\xc9\xe3\xf2\xbc\x8f\x60\xb1\xea\xe5\x34\xad\x93\x7c\x7a\x21\x56\xa5\xb9\x64\xac\xf9\x95\x30\x25\xb6\x60\xfa\x37\x17\x51\xca\x93\x07\x22\x10\xcd\xf1\x8a\x9c\x0e\x68\x9f\x6f\x3f\xbc\xd3\x9b\x58\x4a\x7d\x16\x6c\xf8\x8e\xdd\xd4\x42\xf0\x0d\x4d\x49\xaa\x35\x4d\x41\xf1\x22\xd3\xd7\xdb\x92\x08\xc2\xf4\x0d\xf0\xf5\x8b\x1f\x2f\x6e\x7f\xbe\xbe\xf8\x70\xd9\xcf\x2f\xf4\x05\x48\x9e\x0a\xcc\x52\x92\xa2\x52\xba\x53\x6d\x6f\x5a\x22\x4e\x4f\x25\x22\x6c\x43\x05\x67\x7a\x32\xa0\x3b\x61\xb4\xb1\x5f\xeb\xed\x36\xc1\xcc\xba\x65\x04\x91\x3c\xdb\x90\xd4\x88\x04\xd5\xe8\x1c\xa7\xa0\xac\x28\x95\x83\x7b\x3e\xd2\x01\x0b\xfd\x82\xa0\x92\x25\x6b\xcc\x56\x7a\xbe\x7a\x01\x1b\xf3\x43\x72\xcb\x14\x7e\xd2\xdf\x05\x45\x46\x26\xb8\x70\x9e\xd0\x7e\x93\x51\xca\x4b\xbd\x64\x5f\x7f\x7d\x86\x28\x79\x83\xbe\x6e\x74\x38\x47\x97\xb6\x8f\xc6\x82\x1a\x77\x13\xd9\x0c\xb8\x1b\x17\xf5\x72\x9e\x21\x41\x56\x58\xa4\x19\x91\xe0\xe0\x78\x5c\x13\x08\x8a\x34\x62\x8d\xdd\x2e\xe2\x74\xba\xde\x1e\x19\x57\x73\xf4\xb6\x5a\x4f\xe3\xe7\x49\xe7\xe8\x03\x07\x27\xc7\x92\xbf\x41\x6b\xa5\x0a\xf9\xe6\xfc\xfc\xa1\x5c\x10\xc1\x88\x22\x72\x4e\xf9\x79\xca\x13\x79\xae\xb0\x7c\x90\xe7\x94\x69\x82\x9e\xa5\x58\xe1\x19\x5c\xe2\x09\xd8\x2d\xce\x0d\x5f\x9d\x25\x3c\xcf\x31\x4b\x67\xd8\x92\xec\xac\xda\xfe\xf3\xaf\x2c\xff\x99\xe1\xea\x29\xca\x66\x78\x26\xd7\x24\xcb\x4e\x7b\x06\xed\xb9\x8f\x03\xb8\x8b\xef\x40\x13\xb6\x09\x3a\x85\xef\x6d\x35\xf7\x06\x09\x57\x6b\x0f\x07\x53\x12\xe5\x48\xb1\x9a\x74\x3f\x8f\xdc\xdf\x86\x71\x2b\xd0\x1a\xe3\x25\xdb\xfc\x88\xdb\xf6\x28\xd6\x39\x60\x64\x1f\x18\x60\x71\x54\xdf\x77\x6f\xfd\x13\x09\x33\x46\xea\x6b\x79\x98\xab\xb7\x26\x72\x8d\xf3\x3a\x80\xb4\x63\xfc\x73\xf4\xc1\x18\x1a\x3c\xdc\x1c\xa3\xb7\x3f\x5f\xbd\xbb\xbc\xbe\xbf\xfa\xf6\xea\xf2\x76\xf8\xc6\x0a\xbc\xa9\xe0\xde\x8f\x98\xca\xa9\x87\x9f\xb6\xf8\xa6\x67\x3a\x35\x57\x2d\x04\xd9\x50\x5e\xd6\xf2\x4c\x37\x59\x52\xe6\xbb\xee\x9a\xd4\x6a\xed\xdb\x5b\x24\x89\xd8\xd0\xa4\x7b\xe9\xbd\x96\xea\x16\x5b\x0f\x66\xdf\x3e\xaf\xe8\x2e\x73\x0f\x62\xe2\x9e\x4e\x3b\x59\x7c\x10\x2b\xf7\x74\xdc\xc9\xe8\x03\x18\x7a\xc0\x66\xed\xb3\x7b\xc3\xd6\xdf\x91\x25\x2e\x33\x23\x22\x9c\x9c\xcc\xfb\xf8\xa9\xed\x28\x82\xd4\xbf\x15\xdc\x13\x94\xd9\x22\xf7\x3b\x13\xf0\xbc\xe4\xa2\xf7\xf0\x9e\x5a\x1f\x8c\x8f\x90\x1a\x2c\xd2\x0a\x2c\x46\xe6\xb6\x12\x4b\x80\x35\x34\xdc\x51\x92\x70\xb6\xa4\xab\x0f\xb8\xf8\x9e\x6c\x6f\xc9\x32\xd2\xff\x6e\x94\x16\x6b\xfd\x07\xf1\x5d\x73\x4e\xd3\xa1\x5f\x4c\x8e\x73\xe7\x04\x3b\x71\xf6\xc2\x8d\x0d\xec\xcf\xea\x05\x47\x90\xde\x43\xb8\x7c\xe7\xe0\x4e\x9b\xec\xde\x9e\x1d\xd5\x14\x4b\x02\xf5\x93\x01\xe1\x25\xe1\x2c\x21\x85\x92\xe7\x7c\xa3\x79\x1b\x79\x3c\x7f\xe4\xe2\x41\x4b\x23\xfa\xd4\xcf\x8c\x98\x2e\xcf\x41\x7b\x3c\xff\x0a\xfe\x2f\xf0\xa3\xf7\x1f\xdf\x7d\x7c\x83\x2e\xd2\xd4\x26\xaa\x28\x25\x59\x96\x99\x8d\xc1\x9e\x23\x5c\xd0\x1f\x89\x90\x94\xb3\x33\xf4\x40\x59\x1a\x6a\x13\x2b\x69\xfa\xaf\xc3\x87\xd8\xb5\xc8\x3d\xe2\x85\x31\x77\x8e\xd8\xa7\x3b\xd0\xc5\xb7\x2d\xf1\xb3\xa2\xf3\x30\xbc\x06\x02\x89\x46\x02\x2d\x3a\x5f\x81\xbd\xc2\x22\x26\xbb\xe0\x3c\x23\xd8\x77\xb7\xc5\xe9\x93\x21\x7a\x7b\x84\x1e\x09\xfb\x1f\xcf\x49\x4e\x6b\x56\x62\xec\xa0\xf6\x54\x14\x3c\x7d\x83\x64\x59\x14\x5c\x04\xb9\xf0\x73\xa2\xb0\x96\xd1\xe7\x9a\x94\xcf\xda\xff\x04\xf3\x48\xe3\x37\x30\x5e\x04\x19\x6b\xab\x57\x80\x33\x1b\x87\xe5\x19\x98\x68\xe6\x8c\xa7\xe4\x1a\xbe\x05\xff\xb4\x12\xc4\x45\x92\xf0\x92\x29\xf8\x43\x40\xff\x52\x61\x55\xca\xf9\x9a\x4b\x75\x75\x73\xe6\xfe\x59\xf0\xf4\xea\xc6\x73\xa3\xa1\x68\x3e\x5a\x1f\xcc\x11\x27\xc1\xbe\xd9\x4c\x00\x92\x63\xf8\xcf\x6f\xf5\xae\xdd\x60\x15\x6a\xb0\xa1\x12\x3d\x0a\xaa\x14\x61\x20\x08\x01\x66\x8c\x2f\xcf\xf4\xa1\xa8\xef\xf3\xcd\xeb\x93\xa3\xf0\xeb\xa5\x1b\xec\x88\x25\xd0\xaf\xb9\xf9\x1b\x52\xad\xee\x96\x30\x91\xce\xb5\x1a\x12\x79\x71\x73\x85\x36\x66\x65\x3f\xb3\x71\x69\x19\xbc\x8b\x11\x2c\xc1\xe1\x99\xbe\x7d\x36\x6b\xa8\xf2\xca\xd8\xf5\xaf\x24\xf8\x90\x7d\x84\x50\xa4\x0a\x5b\x85\x32\x9a\x53\x1b\x38\x6c\xb3\xd4\x48\xf4\xc2\xfc\x38\x4f\x8a\x32\xe4\xd8\xda\xa7\x73\x92\x73\xb1\x3d\x73\xff\x24\xc5\x9a\xe4\x44\xe0\x6c\x26\x15\x17\x78\x45\xce\xaa\x0f\x84\x76\x5c\x3d\x6f\xba\x6e\x0d\x72\xbf\xff\x10\x53\xb6\x56\xb6\x92\x52\x68\x01\x23\xdb\x3a\x86\x4a\xd2\x83\x73\x97\x6a\x47\xae\x47\x8a\x44\x95\xe6\x6d\x84\xaa\x8a\x7a\x41\xb2\xde\xf0\xac\xcc\xc3\x71\x71\xee\xca\x37\xc9\x8e\xd8\x46\x4b\xe2\xf2\x28\xc2\x45\x4a\x37\x54\x8e\x02\x02\xde\x55\x3e\x26\xf0\xf7\x95\x4a\xeb\x7b\x06\xc9\x1f\x0e\xb0\xd4\x8d\x3c\x15\x5c\x82\xb1\xcd\xa1\x07\xdb\xbc\xf4\x75\x98\x23\x28\x72\xe2\xee\x6b\x63\xb6\xda\xe5\xaf\x79\x53\x9f\xeb\x8a\x95\x1e\x61\x97\x62\xf8\xa0\x1b\xd0\x21\xd9\xa0\x24\x89\x20\xea\x50\x7a\x96\xe9\xcd\x19\xde\xc0\xe7\x17\xe3\x19\xfd\xa2\x94\xb3\xca\x71\x03\x53\xaa\xaf\xd3\xa5\xe0\xf9\x1c\x81\xc9\x2b\xf0\x10\x2c\x08\xd8\x60\x32\x9a\xba\xde\x1e\x48\x20\x72\x68\x52\xf9\xbc\xed\x1f\x5c\xe5\xbb\x33\x14\xc5\x85\xd6\xe4\x02\xe7\xf6\x1b\xd7\xf7\x82\x1e\xf4\x8f\x6e\x06\xc7\xc9\xe3\xed\x08\xf0\x3a\xf6\x7b\x3b\xc0\x45\x78\x53\x66\x99\xd9\xc4\x30\x07\xe4\xd5\xce\x4b\x16\x43\x59\x89\x15\x16\xb1\xde\x30\x7b\xf6\x4f\x81\x5b\x86\x24\xdb\x89\x41\x1d\x3f\xd6\x0f\x94\xd2\xd8\x0f\x8b\x32\xb3\xa9\x0f\xb7\x43\x78\x78\xf0\xfd\xe9\x11\x5a\xc7\xa6\x0b\xac\xba\xe1\xa9\xa6\x5e\xf0\x33\x56\x3a\x06\x18\x9f\xa5\xe3\xb1\xfd\xe3\x74\x26\xe6\x02\x4b\xdd\xa7\xe2\x88\x32\x2d\xdc\xa4\x25\xce\x60\x60\xe0\x6e\x2d\x0c\xf6\xc9\x28\xc2\xce\xe6\xd9\x1f\xe4\x67\xe6\x76\x08\x47\xcf\x7b\x9e\xe0\xec\x23\x10\xc2\x6d\x65\x48\xaf\x30\x4d\x84\x41\x36\x47\xcd\x47\xb5\xfc\x44\xf9\xd0\xc9\x51\x1c\x65\x44\xa1\x2d\x2f\x91\x81\x49\xb4\xcd\xf3\xa9\xa5\x37\x44\x99\xa4\x29\xa9\xb6\xcc\xe3\xeb\x81\xcd\xfc\xc4\x4e\x23\xef\x9d\xf2\x69\x6f\x8b\xd8\x5b\x22\x80\xff\x07\xf1\xfd\x43\x70\x09\x46\x55\xa5\x80\x04\x82\x14\x9c\x7f\x54\xbf\x4b\x71\x46\xff\x0e\x84\x57\x2b\x42\x12\x2d\x48\xc6\xd9\x0a\x3c\x58\xfd\xa1\x83\x56\x8a\x9b\xa3\x2b\x46\x55\xf3\x6d\xe3\x26\x23\x49\x09\x40\x1e\x86\xb8\x48\x89\x40\x85\xa0\x1c\x72\xeb\xd6\x4f\xf6\x76\xbd\x20\xfa\xdb\x52\x61\xd0\xf8\xc0\x4f\xc5\xb6\x30\xde\x86\x0b\x6c\x89\x69\x66\xe3\x09\x21\x7b\xb1\xd4\x7f\xd3\x94\x3f\x94\x23\x53\x71\xb4\xc6\x1b\x02\x2f\x13\x93\x0b\x95\x4a\xb4\xc6\x2c\x85\x7f\x26\x09\x17\xa9\x99\x37\x18\x3f\x05\x81\x41\xdc\xf0\x8c\x26\x03\x52\x99\x16\x0b\x35\xa1\x01\x63\xc1\x6c\x77\xa4\xe0\xf9\x11\x39\xce\x1a\xbf\xe5\x1e\xaf\x68\xc9\xe8\x2f\x25\x41\x38\xe7\x9a\xaf\x66\x8d\x57\xe5\xfe\x8a\xbb\x60\x4f\x3d\xb5\xde\x1e\xdf\xd3\x25\x49\xb6\x49\x46\x10\x4e\xac\x3d\xf0\x96\xe0\x94\x32\x22\xa5\x3e\xe6\x0b\xad\x80\x71\x81\xde\xd3\x0d\x69\xfc\x36\x9c\x36\xd1\xa9\x1d\xb7\x4d\x80\x25\xa0\xa2\x76\x17\x01\x12\xb6\xe2\x07\xb0\x9e\x29\x0e\x4b\x5d\x0e\xb8\xb5\x2d\x90\xbc\x11\x25\xbc\xd8\x42\x46\x54\xe7\x57\x75\xc9\x60\xad\x95\xe1\x1c\x6c\x19\x7a\x03\x7a\xbb\x84\xa8\xd1\x5a\x71\xdb\x16\xa4\x82\x9c\xb2\x86\xc3\x36\xc7\x4f\x7a\x06\xc0\x9d\xb0\xf2\x24\x71\xb0\xce\x33\x9b\xb0\xd8\xc4\x1f\xb7\x77\x5a\xce\xd1\x7b\x6b\xb8\x11\xc4\xa2\x29\xd3\xa1\x73\x45\x77\x36\x17\xdc\xfb\x92\xe6\x34\xc3\x9a\xe8\xe5\x9a\x72\xb6\x4f\x02\xc6\x7b\xdb\xdb\x69\x6d\x49\x59\xb8\x54\xb3\x10\x0e\x93\xf3\x8d\x3e\x61\x83\x50\x93\xde\x4e\x43\x98\xb4\xe6\xcd\x19\xc7\xa9\x3c\x2f\x78\x2a\xcf\xf5\xe4\x6a\xa4\x89\x3c\x1f\x89\x26\xd9\x89\x45\xb3\x08\xea\x06\xca\xa5\x41\x78\xb0\x8b\xfa\xd2\x7c\xc4\x83\x30\x0a\xc5\x91\x28\x19\xf8\x96\x61\xc9\x35\x6f\x7b\xe6\xb5\x38\x04\x1c\xeb\x98\x48\x28\x7c\xcc\x73\x9d\x39\x70\x59\x1c\x88\xcc\x6b\x12\xf5\x42\x22\x7a\xa0\x64\x9e\x8e\xfb\x81\x66\x7e\x44\x82\x6f\x21\x7a\xe0\x66\xc3\x88\x04\x9f\x51\x64\x00\x74\x36\x88\x48\xf0\xf4\x3b\x08\x3d\xeb\x43\x24\x78\xfa\xf4\x02\xd0\xfa\x80\x66\x9e\x7e\xbf\x60\x18\x9a\x69\x41\xe0\xf0\x60\xdd\x3c\x0c\x69\x6a\xc7\x18\x73\xde\x2f\xab\xe3\x6d\x7a\x9f\xa3\x6b\xae\x6a\xd9\xc9\xb1\x22\x1f\x45\xea\xf5\xe8\x84\x97\xa2\xcb\xeb\xfb\xdb\xbf\xdd\x7c\xbc\xba\xbe\xdf\x65\x04\xbe\xa3\x13\x89\x35\x0d\x48\x8c\x7a\x04\xc4\xa9\x69\xa3\x70\xa7\x9e\x3e\x83\x81\x4b\x3b\x8c\xc0\xdb\x6d\x30\x70\x29\x44\x47\x6f\x8c\x35\x14\xb8\xd4\x62\x04\xde\x1d\xf3\xb0\x89\x89\x11\x74\x2e\x5b\x3f\x4e\xd5\xb4\xb1\x68\x55\xdf\x39\xa8\x20\xa0\xb1\x1c\x3d\x68\x95\xc6\xe1\x57\x03\xcc\xf6\xd0\x41\x30\x8a\xd5\xbd\x15\x6e\xec\x0f\x35\x7c\x8f\xc0\xb5\x06\x59\x46\xc1\xc4\x1f\x8e\x6e\x35\x2d\xca\x70\x1c\x80\x74\xed\x98\x62\x08\xde\x35\x68\x82\x1d\x9c\x7d\x08\xf5\x1a\xd4\x67\x13\x19\x1b\x8e\x7d\x8d\xeb\x3a\x50\xde\x0c\xea\xd4\x1f\xe4\xd0\xbe\x4e\x82\x3a\x8d\x09\x78\xb0\x97\x4a\x50\xbf\x51\xc1\x0f\x41\x3d\x1e\xe3\xfa\x31\xed\x39\xe8\x59\xd3\xe2\x8f\x92\x1f\x49\x6b\x5a\x3c\x9e\x36\x90\x40\xb3\x92\xcc\x0f\x80\xaa\x35\x2d\x36\x09\x49\x34\xc2\xd6\xb4\x03\xe2\x6c\xc7\x8d\x1b\xc5\x27\x4e\x39\x04\xf2\xd6\xb4\x51\xd1\xe5\xe1\x2e\xd9\x8e\xe1\x0e\x18\xd1\x23\xba\x44\x9f\xc3\xe0\xde\x6e\xe1\xe6\xf7\xa8\x6e\x43\x4d\xf5\xed\x36\x6a\x1f\xe3\xdc\xb6\xa6\x85\xe3\x75\xa3\x66\x6d\x7c\xbd\xa3\xbd\xb8\xa6\xc5\xf9\x72\x4d\x8b\xcd\x69\x11\x93\xcf\x22\x3a\xfc\x3e\x1c\xd3\x6b\xda\x51\x90\xbd\xa6\x1d\x07\xdf\xbb\xd3\xf7\x91\x50\xbe\xa6\x3d\x0f\xeb\x6b\xda\x18\x5e\x1e\x8b\xfb\x35\xed\x48\xe8\x5f\xd3\x0e\x8b\x01\x36\x6d\x14\xc7\x89\xc4\x03\x9b\x16\x8a\x0a\x8e\xbc\x3e\x76\x52\x6c\x47\x63\x83\x4d\x1b\xb1\x0c\xf1\x2c\x27\x1c\x2d\xdc\x1c\x54\x04\xe3\x89\x47\x0e\x9b\x76\x14\xfc\xb0\x69\x87\x47\x11\x9b\x76\x34\x2c\xb1\x69\x87\x47\x14\x9b\x36\x1e\x57\x6c\xda\x18\x4e\x36\x02\x63\x6c\x5a\x38\xd2\x38\xea\xcc\x3a\x54\xf2\x73\xf0\xc6\xa6\x8d\x4b\xaa\x14\x83\x3d\xb6\xaf\x04\x22\x90\xe3\x64\xa5\xaa\xee\xed\x00\x0e\x39\xaa\xc7\x50\xcc\xb2\x69\xa3\x16\x2f\x0e\xbf\x6c\xda\xa1\x51\xcc\xa3\x87\x1f\xcf\xb1\x83\x71\xcd\xcd\x31\x45\x30\xec\x38\x8c\xb3\x69\x51\x48\xe7\xe0\x05\xdd\xc9\x82\xf4\x85\x2b\xc9\x3d\x08\xe8\xa8\xd3\xd2\x40\x4b\x3f\x07\x07\x6d\xda\xa4\x80\x4f\x0a\xf8\x61\x15\x70\x83\xa1\x9d\xb4\xef\x48\x9e\x1a\x15\x67\x17\x36\x6a\x0f\xda\x3a\xf2\xbb\xc1\x5e\xbc\xc8\x84\x0a\xce\x93\xe7\x24\x6d\xc5\x51\xc1\x8b\x32\xc3\xaa\x27\x3f\x87\xcf\x07\xbf\x9b\xa2\xc6\x31\xdf\xda\xab\x52\x81\x95\xec\x3d\x9e\xfb\x7d\x52\xfb\xde\x28\x74\x91\x65\x88\x32\xc3\x7c\xa1\x7b\xe7\xae\x10\xc4\x08\xc7\x9e\x2e\xb1\xf1\xfe\x6d\xf4\xe4\x1e\x6d\x81\x88\x86\xbf\x86\x4a\x03\xe5\x84\x8c\x66\x50\x40\x02\x07\x50\x9f\xb5\xfb\x53\x56\x17\x91\xa8\xc4\xb3\x2a\x49\xe4\x6e\x05\x1c\x1f\x89\x40\x02\x38\xa9\xdc\x72\xc1\x3c\x15\x7e\x00\x7f\x55\x42\x52\xc2\x12\x02\x09\x9c\x4b\x22\x03\x0f\xee\x42\x6b\x26\xe8\x92\x6d\x2a\x37\x4c\x69\x5c\xdb\xe6\x9a\xec\xfc\x82\xa7\xcb\x4f\xe1\xbc\xd5\xa4\x6d\x1d\x16\x0d\x1f\x2e\xdc\xe8\x4e\xdf\xf4\x1e\xf5\x2a\xf3\x75\x65\xa9\xf4\x51\x74\x8c\xb0\x52\x79\x21\x02\x05\xb3\x3d\x29\xa5\xce\x77\xd0\x8e\xcf\x3a\x82\xc7\x24\x46\x8c\x38\x4a\x70\xd5\x67\x0a\xaf\x3a\x8a\xe8\x10\x2f\x36\x44\x8b\x0c\xb1\xe2\x42\x44\x6e\x8d\x00\x0e\x5c\xb7\x68\xf1\x20\x56\x34\x88\xba\xba\x0b\x41\x96\xf4\x29\xfa\xac\x5d\x34\xe2\x8b\x68\x4a\x98\xd2\xaa\x39\x20\xfd\x0b\x41\x0a\xc2\x06\xc1\xce\xcd\x06\xf8\x6c\xa8\x5c\xc0\xda\x8b\x3a\x6f\xa8\x08\x47\xc5\x51\x18\xcd\x63\x2c\xc3\xb9\xeb\x8a\x06\x9d\xb8\xcd\xc4\x6d\x0e\xcd\x6d\x2c\xa1\xfd\x6a\x59\xcd\x81\x25\x75\x40\xbb\xc6\xc0\x6e\xdf\x35\x50\xb2\x70\x9a\xa2\x43\xcf\x1a\x11\x0c\x26\xa0\xd1\x33\xe3\xfb\xba\x7e\x1c\x95\x35\xbb\x54\xdc\xa4\xe8\x35\xc1\x2c\x02\x65\x64\x43\x32\x2b\xf9\x78\x7a\xcc\x31\xc3\x2b\x93\xcf\x5d\x71\x67\xaf\xd4\xfa\xa7\x3e\x76\x82\xa6\x2d\x01\xdc\xc4\x5c\x7a\x53\x0c\xba\x58\x0d\x78\x55\xf0\x2c\x23\x42\xa2\x8c\x3e\x10\xf4\x8e\x14\x19\xdf\xda\xf4\xe9\x2c\x45\x77\x0a\x2b\x7d\xf4\xee\x88\x92\x87\xc9\x60\x57\x85\xbb\x9a\x58\xab\x98\xed\x84\xa0\x57\x08\xf5\x44\x85\x09\xd4\x42\x1f\x19\xf0\xb9\x8b\xec\x11\x6f\xe5\x19\xba\x26\x1b\x22\x7c\x3c\xe1\x6a\x79\xcd\xd5\x8d\x11\x85\xdb\x38\x23\xd3\x0d\xa2\x4b\xf4\x06\x0a\x08\x29\xa4\xf0\x0a\xd4\x9a\x2a\x58\xd5\xd3\x37\x17\xad\xee\x0d\xfb\x7a\xa4\x92\x8c\x0d\xbd\x31\x6d\x14\xa9\x7e\x05\xdf\xd1\x0c\xd9\xfc\xfb\x20\xdb\x97\xb9\xe0\xb2\x88\x8d\xbb\x30\x61\x68\xae\xd8\x1c\x69\xd2\xb4\x2d\x66\x68\x32\xa2\xfb\xd8\x89\x56\xaf\x28\x43\xa6\x86\xa0\x29\xce\x58\x13\x7f\x35\x32\xa3\xa0\x4a\xb7\xe2\x7e\x35\x39\x48\xfb\x0a\xbf\xbc\x0b\x2e\xd5\x9d\xd6\x83\x63\xb3\x09\xdd\xb8\x17\x21\xc6\x11\x67\x19\x49\x11\xcd\x73\x92\x6a\xbd\x37\xdb\x22\xbc\x54\x01\xb5\x50\xb5\xbe\xd6\xd2\xc9\x13\x41\xb0\x0b\xaf\x84\x80\x3a\x08\x82\x6c\xc6\x55\x06\xf4\xd9\xea\x51\x11\x91\x53\x06\xca\xb8\xf1\xd6\xd9\x08\xce\x3a\xae\x32\xe4\x1e\x69\x45\x5e\xd6\x27\x1a\x6e\xbf\x06\x85\xec\x3a\x44\x03\xba\x5e\x64\x3c\x79\x90\xa8\x64\x8a\x66\x66\xca\x9c\x3f\xa0\x84\xe7\x45\x06\x67\xe7\x19\xb7\x40\xf5\x9f\xb3\x8a\xde\x66\xba\x77\x79\xfe\x55\xfd\x27\xf8\xe1\xd0\xf9\x8b\xc8\x13\x49\x46\xa4\x8b\xd0\x1c\x52\x6f\x12\x78\x87\x39\xab\xc4\xc2\x25\xd7\x17\x52\xb8\xed\xb5\xae\x59\x50\x31\xc3\x39\xba\x7c\x22\x49\xa3\x16\x05\x54\x62\x4d\x3c\xd1\xed\xcd\xa6\x38\x1c\xea\x63\x15\x05\x0c\x8a\xd4\x69\xb6\xd6\xca\xbd\x35\x6f\xbb\xfa\x6a\xb6\x33\x94\x51\x46\xe2\xdc\x85\x36\xce\xa7\x19\xaf\x5f\xd1\x8a\xb1\x71\x59\xc9\x39\xc6\xa8\x4d\x05\x14\x65\xd8\x56\x38\x54\x37\x3e\xa8\x2b\xc0\xb9\x42\x2f\x4e\xcf\x4f\x63\xca\xb2\xef\x9a\x21\x4f\xb5\x24\x93\x11\xc3\xa1\x8d\x4d\xd2\x7e\x23\xa6\x53\x89\x24\xcd\x8b\x6c\x0b\xab\x70\x9a\x9e\x21\xaa\x1c\xb0\x55\x94\xcc\xad\x49\x4c\xe5\x3f\x88\x06\x39\x43\x92\x23\x25\xb0\x2b\x15\x64\x7e\xd5\xdd\x29\x51\x9a\xfb\x26\xa2\xcb\x17\xa7\xff\xef\xe9\x19\x22\x2a\x79\x89\x1e\x39\x3b\x55\xb0\x21\x73\x74\x6f\x32\x5f\x60\xf7\xc9\x2d\x2f\x23\x3a\x65\xc4\xa4\xa9\x20\x4f\x45\x46\x13\xaa\xb2\x2d\x30\x75\xc4\x4b\x65\xc2\x3e\xb1\xb2\x21\x5d\x11\x9d\x5e\x3e\x51\x65\x91\x59\xfa\x24\xbf\x02\xea\x34\x0c\x1e\x61\x2d\xc4\x6d\xc8\xf9\x9a\xe0\x4c\xad\x63\x6a\xe8\x68\xba\x61\x9c\xcd\xfe\x4e\x04\x87\x00\x32\x66\xfb\x38\x62\x99\xc9\x51\xfe\x9f\xd8\x12\x54\x91\x2e\x0d\x7d\x19\x7c\x47\xc6\x14\x6a\xff\xb7\xfb\xfb\x9b\xef\x88\xda\x61\x86\xba\x3f\x07\x66\x09\x67\x89\x05\x11\x4b\x2e\xf2\x63\x71\xc5\x35\x97\x81\x33\x44\x7b\xb3\xe4\x52\x99\x04\x08\x46\xf4\x62\x24\xd1\xb4\x5c\xe3\x28\x62\xf6\x9f\x57\x29\x1d\xae\x6e\xe6\xe8\x6f\xbc\x84\x44\x04\x78\x91\x6d\x21\x82\xdb\x86\x44\x45\xf4\x78\xa2\x87\x77\xa2\xf9\x98\x5e\xf7\x7f\x23\x38\x35\x61\xf5\x52\x11\x1c\x5d\x03\x2a\x8a\x30\x1b\xdf\x1b\x7b\xd9\x94\x52\xf1\x1c\xad\xed\xa0\x63\xc2\xc1\x9a\xcd\xd2\xda\x1c\xe8\xd1\xe8\x9c\x50\xb4\xcf\x30\x08\xdb\xfb\xa7\xaa\x1d\xab\xc7\x60\x56\xc5\xfe\xbe\x80\x82\xd8\x09\x4c\x35\xca\xdd\x6a\x06\x6e\x8b\xb1\x9b\x20\x09\x66\xa6\x68\x72\x57\x44\x74\x36\xb6\x52\x6b\x2c\x82\x00\x75\x59\x0e\xed\x3c\x8c\x81\x20\xc0\xd5\xb9\xdb\x9e\x57\xac\xf3\xb0\xc3\x1f\xce\x97\x71\xd0\xf1\x8f\x2b\xa3\x18\xb9\xbe\xb3\xe8\x19\x7d\xa2\x22\x8a\x45\x14\xfa\x77\x1f\xfb\x6b\x92\xb0\x40\x78\x96\x91\xf0\xe0\xe0\x48\x22\x36\xfe\xf0\xcb\xdd\x71\x47\x6d\x5d\xc1\x43\x74\x60\xd7\x30\xdb\x7e\x0c\x46\x66\x41\xb9\x29\x18\x11\x65\x8a\xac\x82\xb4\xc2\xf6\x7b\xcf\xa9\x0f\x69\xcc\xeb\x02\xb1\x32\x5f\x10\x51\x87\x0d\x08\x15\xa7\x18\xb4\xb7\xa5\xe1\xff\xbf\x36\x1d\xfb\x72\x07\xed\x37\x2b\xc3\x0b\xcc\x56\x04\xbd\xd6\x5b\xff\xa7\x3f\xfe\xf1\xf7\x7f\x9c\x9b\x21\x3b\xa8\x4a\x30\xda\x44\xb7\xab\x8b\xeb\x8b\x9f\xef\x7e\x7c\x0b\xd1\x83\xe1\xf4\xf2\x34\xab\x35\xea\x19\x65\x6a\xc6\xc5\xcc\xac\xf9\x1b\xa4\x44\xf0\x39\x03\x24\x7f\x04\xe7\x6a\xdb\xd4\xe1\xe5\x66\x02\x3b\x2b\xb3\xc4\xb1\x1f\x2b\xa9\x68\xb9\xa9\x6d\x2f\xd4\x07\xe9\x88\x27\x28\x8e\xed\xcd\x80\x00\x8f\x21\x15\xab\xa4\xb8\xe3\xc9\xc3\x28\xb9\xf8\xf4\xfe\xed\x8d\x79\xb9\x21\x1a\x63\x66\xcd\x04\x88\xb2\x0d\xcf\x36\xe1\xdb\x81\xd1\xfd\xdb\x1b\x98\xe8\x1c\xfe\x0b\x2c\x2d\xa0\x4c\x6e\xf5\x17\x1c\xc8\xdb\x38\x90\x02\xfb\xac\x92\x06\x02\x0c\x1f\x67\x54\x2a\x9a\x40\xef\xb5\x49\x51\x7f\x27\xcc\x6f\xf4\x49\xe5\xf1\xd3\x8f\xce\xe5\xd4\x29\x9a\x47\xd1\x78\x3b\xb8\xa5\x21\x9a\x87\x83\xfa\xa6\x3b\xa2\x71\x47\xd8\xbb\xc1\x60\xf8\xa7\x3b\xa2\xab\x1d\xe4\x8e\xf8\x32\xb8\x64\xc4\xc3\x85\x20\x77\x8a\x17\xd1\xde\x01\xf3\x5a\x8f\x6f\x60\x41\x96\x61\x70\x64\xdc\x6b\xca\x4f\x4b\x62\x0b\x48\x5f\xdc\x5c\x45\x58\x2d\x78\xcb\x5c\x6f\xd0\x81\xb2\x4c\xd6\xce\x1e\xc5\x88\x94\xe7\x60\xe4\x2f\x0b\xa3\xaf\x05\x74\xba\xc4\x34\x2b\x05\x39\xd3\xab\x45\x72\x58\x83\xb3\x3a\x8c\x41\x4f\x81\x30\xf3\x23\x51\xc9\x70\xea\xc2\xba\x39\xcf\x87\xb5\x3f\xba\x65\xdc\x71\x30\xa0\x44\x60\xb9\x26\x83\x75\x1b\xeb\x46\x9e\xa8\x92\xae\xf8\x34\x96\x9c\x19\x83\xac\x5d\x56\xb8\xe3\x64\x23\x67\x6d\x98\x3a\x6f\x07\x6a\xba\xbd\xe1\xe9\xe9\xa9\x6c\x75\xb9\x12\x38\x21\xa8\x20\x82\xf2\x14\x41\xa4\x67\xca\x1f\x43\x0e\xec\x82\xac\x28\x93\x96\x5a\x60\xda\x8e\xac\xf4\x0d\x67\xea\xf1\xba\xb4\x54\x73\x74\x1b\x9a\x7f\x0c\xd5\x41\x36\xbc\x54\x09\xaf\x19\x9e\x9d\xc9\xd9\xce\x12\x07\xe6\x9b\x00\x62\x2a\x71\x96\x6d\x6b\x42\x75\x58\x58\xd5\xb9\x34\x01\x9d\x36\x17\xef\x93\xf8\x9b\xf4\x09\xa9\xff\x36\x7e\xb0\x60\xd9\x27\x38\x59\x87\x67\x64\x9a\x5c\x58\x8d\x36\xb9\xb0\x26\x17\xd6\xe4\xc2\x9a\x5c\x58\x7d\x6d\x72\x61\x4d\x2e\xac\xc9\x85\x35\xb9\xb0\x26\x17\x56\xdd\x26\x17\xd6\x61\xc6\x3f\xb9\xb0\x26\x17\xd6\x6e\x9b\x5c\x58\x5d\xed\x37\x66\x9e\x9c\x5c\x58\x9f\xdf\x38\x3b\xb9\xb0\x26\x17\x56\x68\x27\xd3\x1d\x31\xb9\xb0\x26\x17\xd6\xe0\xc3\x81\x0f\x3a\xdf\xcf\x8d\xd6\x6f\x62\xe2\xbc\x6e\xc0\xda\x4d\x13\xa3\x19\x69\xba\x6b\x46\xf9\x98\x4e\xe7\x75\x0a\x79\xcf\xc4\xea\x1c\x17\x2e\x4a\xc5\x3a\x7c\x4c\xef\x10\x05\x73\xb4\xd2\x28\x7d\xe5\x91\x0a\x9e\xd6\xd6\xf7\x86\xd9\xdd\xe8\x82\xc3\xec\x2a\x9c\x3d\x87\xd9\xdb\xe3\x6c\xed\x61\xa1\x5a\xc8\x44\x56\x85\xd8\xd9\xc3\x2d\xe8\xb1\xf5\xbe\x23\x2c\xe7\x11\x56\x73\x67\x0b\x0f\xbd\x9a\x7d\x16\xf3\xda\x0e\x1e\xd8\xe3\xb0\xb5\xbc\xc3\x06\x1e\xda\x6f\xb7\xa5\xbc\xd3\xfe\x1d\x3a\xf9\x7d\x2b\xf9\x90\xed\x3b\x7c\x49\x2b\x0b\xb9\xcf\xee\x1d\xec\x1a\x72\xd6\xf1\x10\x9b\x77\x4c\xa7\xf3\x23\xd8\xbb\x9f\x69\xeb\x8e\x32\x89\x45\x8b\x11\x31\xd6\x81\x88\xfb\xc9\x02\x02\xee\xd7\x82\xc8\x35\xcf\x02\xce\x75\xeb\x4c\x7f\xa0\x8c\xe6\x65\x0e\xa5\x23\xf5\xf1\xa5\xb6\x36\x64\x29\x48\x55\x26\x36\x60\x7a\xe6\xce\x30\x46\xbc\xba\x0a\x65\x55\x65\x72\xa9\x88\x40\x6b\xbc\x01\x3e\x59\x26\x09\x21\x69\x58\x09\x88\xa6\x4a\xf6\xfb\x79\x35\xda\xaa\x0e\xc0\x6b\x7f\x27\x26\x2f\x26\x48\x8a\xbf\xff\x26\x70\xe5\xc3\xa4\xca\x60\x97\x42\xa4\x3b\x21\x4c\x8a\x0c\x76\x25\xc4\x5d\x0f\xe1\x2a\xcb\x51\xdc\x07\x81\xae\x03\xeb\x10\x08\x66\x8c\xe3\xdd\x06\x91\xe7\x3c\xda\x5d\x10\xec\x2a\xa8\x1c\x00\x81\x93\x7e\xbe\x9b\x20\x8a\x1f\x86\xbb\x07\xec\x20\xc2\x55\xcf\x67\xba\x06\xc6\xb8\x05\x9e\x95\x17\xf3\xb9\xee\x80\x51\x1a\x6a\xb4\x1b\xe0\xb0\x2e\x80\x4f\x92\x0b\x37\x62\x1d\xe3\x4c\xfe\xd1\xe6\xfe\x38\x53\x7f\xb8\x99\xff\x18\x26\xfe\xc8\xad\x09\x37\xdb\x44\x98\x6c\xc6\x98\x6b\x46\x98\x6a\xc2\x4d\xf9\x76\x51\x03\xe9\xc3\x67\xa2\x69\x19\x5e\x02\xfb\x1c\x30\xcf\x8c\x31\xba\x1c\xc0\xe0\x12\x63\x90\x0f\x36\xc6\x87\x83\x3b\x91\x95\x3e\xc6\x1a\xe2\xa3\xa8\x25\x9c\xf9\x04\x9a\x95\x22\x58\x88\xad\x3b\xff\x8e\x64\x78\x7b\x47\x12\xce\xd2\x80\x9b\x69\x27\x91\x59\x45\xd3\xd2\x74\x60\x65\xec\x58\x84\xe6\x1a\x4b\x57\x66\xde\x81\x5f\xb3\x76\xf9\x73\xa8\x17\x60\x46\x1c\x60\xfd\x41\x9f\xd5\x02\x84\x8e\x2a\xee\x1b\xb0\xe9\xb8\x0d\xfb\x37\xfe\x88\xf8\x52\x11\x86\x5e\x50\xe6\xf6\xec\x65\x03\x11\x14\xa3\x67\x55\x07\x44\xbf\xff\xfa\x95\xeb\xee\x4b\x53\x8f\x40\xd1\x93\xf2\x90\x9a\xa9\xed\xf2\x10\xaa\xa9\xed\x6a\x59\x66\x6d\xf5\xd4\xa8\xac\xb1\xba\xe9\xeb\x3a\x45\xe3\x6b\x18\x5b\x75\x8a\x30\x4b\x91\x05\xf9\x07\x1d\x9e\x2f\x6a\x0b\x23\xdc\x83\xc7\x72\x0d\x46\xb9\x05\x6b\x87\x5f\x50\xcf\xcf\x73\x09\x7e\x12\xbd\xda\xe3\x06\xd4\x2a\x76\xb0\x82\xf6\x0c\x17\xe0\x3f\xac\x0c\x39\xe4\xea\x9b\x64\xc8\xdd\xf6\x39\xa5\x2a\x45\x73\xc2\x4b\x75\x60\x81\xea\x71\x4d\x93\x75\xed\x16\x0b\x58\x46\x3d\x0e\x89\x78\xb9\x23\xc7\xbe\xb6\x1d\xef\xdf\xd2\x01\x7d\xbe\x8e\x8e\x6b\xf9\x95\x48\x55\x81\xfb\xeb\x37\xc7\xf4\xd6\xae\xae\x5d\xa4\x75\x85\x36\x2c\x11\x46\xef\xae\xef\x7e\x7e\x7f\xf1\xd7\xcb\xf7\xbe\xb3\x71\x89\x93\x75\x33\x38\x90\x21\x0c\xcc\x13\xce\xda\x1a\x6f\x08\xc2\xa8\x64\xf4\x97\xd2\xe4\x52\x45\x2f\xaa\x9e\x5f\x1e\x38\xd3\x7d\x20\x2f\x83\xfa\x8c\x23\xea\x36\xc0\x7b\xd6\xc5\xc3\xb5\x22\x27\x78\xbe\xc3\xb3\x7c\x4b\xa5\x5f\xd4\x52\x14\x36\x3c\x72\x4d\x04\x41\x2b\xba\xb1\x46\x6e\x9b\xd4\x12\xa7\x95\x7b\x4b\x13\xb4\xa6\x2c\x7f\x5c\x11\x5e\x80\xa3\x69\x4d\x10\x23\x4a\x53\x77\xa5\x63\x72\x26\x5b\xd1\x9b\xa5\x24\xf2\x0c\x2d\x4a\xaf\x1a\xa6\x55\x1c\x9a\x63\x41\xb3\x6d\x73\x20\x38\x9b\xa3\x6b\xee\x24\x97\xed\xce\x74\x3c\x9d\xbe\xfb\x78\x79\x87\xae\x3f\xde\x43\x01\x70\x48\x4e\xbb\xc6\xca\xbc\x0d\xcb\xb9\x20\xba\x3f\x5b\x71\x6b\x8e\x2e\xd8\x36\x84\x11\x1a\x2e\x44\x25\xd2\xe2\x0a\x61\xba\x0b\x7b\x9d\xb8\xc4\xb7\x27\xaf\xe6\xf0\xbf\x13\xbd\xba\xc2\x7f\x2b\x55\x6e\xc7\x76\xec\x21\xdc\x1d\x70\xab\xd1\x45\xd6\xa0\x00\xbb\xe6\x9f\xbd\x72\x43\x05\x6e\xb8\xd1\x2b\xda\xac\xbe\x5f\x91\x45\xd0\xbd\x62\x6a\x86\x50\xb6\xca\x22\xa8\x3b\xb2\x7a\x43\x3d\xd0\xe8\x6c\xea\xf5\x6d\xe4\x44\x0d\x7b\x24\xed\xae\x43\xa9\xac\xa0\x2b\xfd\xea\xc6\x11\xc4\xdc\x24\x61\xce\x77\x8a\x4d\xc1\x07\x8c\x89\x2c\x4c\x92\x7c\x85\xfe\x82\x9e\xd0\x5f\x40\xec\xf8\x53\x88\x5c\x11\x77\x77\xc4\x29\x28\x46\xae\xbe\xba\x89\x5e\xe1\x9f\xf4\xb1\xd4\xef\xea\x15\xd2\xca\x21\x65\xa9\x2d\x86\xa7\x88\xd0\xac\x29\x1c\x4c\xc4\x0f\x9e\x87\x5f\x0f\xec\x28\x84\x03\xf6\xb5\x30\xc2\x59\x36\xb2\x3b\x23\x75\x04\xd2\xd1\x9f\xd0\x3a\xcd\xb5\x3d\xb8\xad\x7c\xd2\xf0\xc5\xa0\x4e\x61\x54\x39\x56\xc9\xba\xcd\x1d\xb4\xc8\x24\x55\x7d\x10\x25\x4a\x39\xf2\xe7\x3d\x36\xcd\x80\x1d\xd6\x34\xc8\x53\x76\x5c\x02\x0f\x75\x45\xb5\xe8\x60\x68\xf7\x76\x54\x83\x40\x35\x2d\x75\x32\x4e\x23\xcc\xbc\xe0\xe9\xdc\x88\x47\x7a\x90\x96\x20\xbc\x59\xd6\x6d\x8f\x43\x32\x94\xd5\x66\x1c\xa2\x27\xfc\x28\xea\x53\x9d\x60\x66\x70\x6d\x4b\x22\x84\xc1\xac\x2c\xb6\xc8\x16\x80\x0e\xda\xd0\xa8\xb3\x5a\x08\xae\x78\xc2\x83\xaa\x1b\xb4\xdd\x3b\xf6\x45\x98\xa6\x31\x70\x38\x1b\xd2\x0f\xef\x6e\xce\xd0\xfd\xdb\x9b\xb0\x63\xc5\x05\xba\x7b\x7b\x7f\xd3\xd6\x37\x4e\xee\xdf\xde\x04\x95\x61\x8e\x98\x6c\x78\xb9\xb2\xd6\xf5\xe7\x53\xdc\x0e\x5b\x0d\x41\x10\x9c\xd2\x83\xe3\x2b\x2d\xf9\xd4\xbd\x7b\x45\xa1\x3d\xb9\x4a\x90\x9c\x6f\x48\x6a\x84\x2a\xd7\x1f\x61\x69\xc1\xa9\x96\x60\xa8\xaf\xe0\x54\x00\x36\x73\x42\x5f\x7a\xdb\x84\xbe\x44\x13\xfa\x72\x42\x5f\x4e\xe8\x4b\xdf\xb3\x13\xfa\x72\x42\x5f\xf6\xb7\x09\x7d\x39\xa1\x2f\x87\xda\x84\xbe\xb4\x6d\x42\x5f\x8e\x18\xf2\x84\xbe\x0c\x78\x61\x42\x5f\x7e\xd1\x9e\xf3\x09\x7d\x39\xa1\x2f\xfb\xda\x84\xbe\x84\x36\xa1\x2f\x27\xf4\xe5\x84\xbe\x9c\xd0\x97\x7d\xcf\x4e\xe8\xcb\xfe\x36\xa1\x2f\x7b\xdb\x6f\x47\x86\x9c\xd0\x97\x13\xfa\x72\x42\x5f\x7e\x6e\xf4\xa5\x2b\x2f\x10\x83\x29\x3c\x7d\xcb\xf3\xa2\x54\x04\xdd\xba\x97\x2b\xf2\x44\x8b\xad\x41\x24\x04\x03\xaf\x9e\xef\xe8\x34\x25\xe5\x4b\x01\x00\xbf\x73\x93\xd5\x7e\x96\x98\x21\xce\xaa\xf9\xcd\xaa\x11\x9d\x1f\xca\xd9\x99\xd1\x9c\xfa\xc0\x98\xba\xd5\x98\xc8\x9b\xa8\x8b\x2d\x8a\xc1\xb6\x77\xe8\x3d\x0c\xad\x61\x22\x34\x25\xc8\x9f\xe0\x78\xe0\x9c\x97\x41\xf7\x38\x78\xc9\xcd\x56\x57\xeb\x68\x0c\x9f\x9f\x7f\x9b\x50\x1c\x0f\xb3\x26\xde\x2f\x73\xb7\x6e\xed\xe0\x76\xf7\xcb\xb2\xb3\xe7\xed\x97\x3b\x9a\x80\xc9\xaa\xbe\x44\x25\xe2\x39\x55\x8a\x84\xf8\xd5\xb5\xd8\x8d\x9b\xce\x64\xaa\x5a\x42\x8f\xa5\x36\xc8\x31\x85\x55\x18\xe3\x6d\x38\x3b\x1b\x68\x26\xae\xd6\x44\x3c\x52\xe9\xaa\xb2\x54\x52\x27\x50\xcd\x2c\x25\x4b\xca\x82\x86\x0c\x57\xc0\xaf\x8a\x46\x03\x1f\xd4\x1a\x9b\xa0\x6a\xfb\x96\x33\x45\x9e\x3c\xb2\x60\x9b\xcc\xee\xec\xab\x88\x17\xc6\x93\xed\x84\x55\x5b\x24\x42\x94\x0c\x10\x60\x07\x4e\x03\x66\xaa\xdc\x9f\xbb\x81\xc3\xea\x91\x27\x75\x7e\x90\xaf\x28\x2c\x1f\xea\x7d\x23\x33\x7d\x1d\xd7\xdb\xb3\xf7\xcd\x43\xb1\x7e\x60\x82\x37\x82\x6e\x68\x46\x56\xe4\x52\x26\x38\x03\x9a\x89\x15\x8e\x2e\x7a\xfa\x81\xc3\x26\x78\x26\xd1\xe3\x9a\xe8\x33\x11\xa4\x75\x15\x82\x83\x3d\x3b\xc1\x0c\xad\x30\x65\x28\xd7\x6b\x58\xb8\xee\xf5\x86\xeb\x33\xa5\x24\x2a\xb0\x08\x53\xe5\x6c\x97\x16\x60\xbc\xe0\x3c\xb3\xe8\x91\x6c\x5b\x8f\xd1\x26\x97\x63\xfc\x67\x46\x1e\x7f\xd6\xdf\x0b\xe1\x00\xcb\x0c\xaf\x2a\x00\x95\x24\x6a\x4f\x8e\xaf\x3f\xde\xb7\x4c\x01\x5f\x01\xe8\x43\x49\x10\xce\x1e\xf1\x16\x96\x73\xf7\x2b\x54\xbe\x41\xaf\x5f\x02\xf5\xe3\x90\x71\x57\xe3\x48\xd1\x37\x2f\xc1\xce\xf7\xf6\xe2\xe6\xe7\xbb\xbf\xdd\xfd\x7c\xf1\xee\xc3\xd5\x75\x28\x4b\xd0\x6b\x49\xbc\xe9\x1a\x13\x5c\xe0\x05\xcd\x68\xd8\x2d\xb4\xe7\x79\x6a\xbe\x0e\x2c\x35\x4d\xcf\x53\xc1\x0b\xb3\x0e\xa2\x64\x2c\x4c\x79\xab\x91\xb6\x6d\xd9\xbb\x19\xa6\x00\x5b\xb8\x6c\x7d\x32\xa0\xe7\x95\xc0\x4c\x39\xc1\xb1\xb9\x2d\xa2\x64\x5a\xe0\x3f\xb4\x17\x1e\xa7\x63\x00\x5a\x17\x69\x4a\xd2\xd8\xa9\x3d\xc7\xcf\xfb\xd6\x7d\x6a\x5b\x47\x42\xa0\x9b\x8f\x77\x57\xff\x33\x7e\x14\xc8\xd2\x5c\x94\xcb\xee\x48\xf8\x1b\x84\x34\xf9\x8d\xd8\x81\x5b\x8b\xb0\x9c\xf6\x60\xe0\x85\x83\x63\xa0\xaa\xbb\x23\xd6\xc6\x7c\x5b\xb2\x76\x5c\x5d\xdd\x13\xca\x79\x4a\xe6\xe8\xc6\x30\xf7\xa0\xf5\x6b\xbf\xdf\x80\xfd\x63\x41\x90\xee\x84\x29\x0a\x15\xd3\xb4\xac\xbb\xc1\x59\xd8\xdd\xa6\xb8\x41\x31\x36\xe3\x27\x5a\xdc\x6d\x89\x33\x19\xc0\x80\x62\xf8\xb9\xbe\xd2\x3e\x68\x71\x3e\x72\x3d\xab\xf7\x50\x4a\x18\x57\x56\x43\xd0\x5f\x86\x80\x10\xc1\x13\x14\xaa\x25\x34\x9c\x89\x2d\x8e\x6b\x2b\xfa\x39\x76\x4e\xa5\x5b\x8b\x1b\xf7\xed\x80\xce\x8d\x55\xa7\x94\x44\x76\xb3\xf3\x5a\x6f\xd0\xdf\x17\x04\xa7\x9c\x65\xa1\x9e\x7e\x63\xf3\xcf\xb1\x7c\x20\xa9\xf9\xc1\xca\x25\x56\xc7\x91\xb6\xba\x9f\x1d\xee\x7d\xd8\x79\x5b\x12\xac\x4a\x41\x8c\x3c\x62\xbc\x19\x84\xe1\x45\x90\xaf\x22\x0a\x60\x8f\xd3\x8f\x2c\xdb\xde\x72\xae\xbe\xad\x80\xaf\x91\x64\xf0\x93\x91\x06\x77\x6c\x2c\x20\x84\x80\xd1\x3d\x9d\x05\x2e\x27\x10\x7e\x13\x7f\xfb\xae\xde\xf6\x23\x90\xbd\x28\xd9\x85\xfc\x4e\xf0\x32\xb6\x04\xa8\xa6\xc8\xef\xae\xde\xc1\x59\x2d\xcd\x39\x25\x4c\x89\x2d\x00\xeb\xad\xd5\x38\x46\x7e\xa9\x65\xca\x1f\x34\x8d\xee\x50\xa5\x96\x64\x4b\x26\x49\x10\x14\xec\x03\xde\x22\x9c\x49\xee\xc4\x57\xca\xd0\x0d\x78\x31\x9b\xfa\xd9\xdc\x44\x5b\x91\xc0\xd8\x99\x05\x57\x6b\xb4\xd3\x05\x10\xfd\x7e\xcf\x67\x81\x53\x37\xc6\xd0\x3a\x40\x9a\xb2\xbd\x0f\x28\xfc\x40\x24\x2a\x04\x49\x48\x4a\x58\x12\xb0\xf7\x0d\xab\xe5\x9f\xfe\x70\x50\xc7\x18\x50\xca\x35\x67\xfa\x98\x44\xd2\xca\x15\x4b\x69\x82\x0d\x6f\xc4\x6a\x87\xff\x80\xfd\x5e\x94\x21\x9b\x00\x87\x89\x71\x36\x83\x43\x52\x4a\x22\xc0\x76\xa2\xd5\x08\x83\xa3\xff\xbe\x5c\x90\x8c\x28\xa3\xbc\x40\xbc\x1c\x0e\x42\xe7\xeb\x77\x69\x8e\x57\x04\x61\x55\x91\x9e\xe2\x88\x30\x59\x42\x69\x52\xac\xc0\xb4\xc2\x89\x0c\x8c\x66\x33\x4a\x0b\xfa\xe1\xea\x1d\x7a\x85\x5e\xe8\xf1\xbe\x04\x72\x59\x62\x9a\x01\xc8\x51\x61\xa1\xa2\xb1\x0b\x74\xe9\x86\x01\x13\x87\x13\x81\xb8\x30\x8c\xe1\x0c\x31\x6e\x6a\xdd\xda\x99\x87\xe9\x61\x4e\xd1\xb3\x5e\x79\x30\x20\x06\x1f\xa0\x80\xfe\x6d\x07\x31\x07\x28\x70\xc7\x8e\x72\x80\xa2\x99\xe7\x0f\x92\x88\x11\xbc\xf3\x87\xa3\xf0\xce\xa6\x90\xa4\xcf\x47\x6b\x75\x42\x08\x0c\x0e\x41\x4e\x14\x4e\xb1\xc2\x96\xeb\xd6\x91\x3b\xfb\x84\x11\xa2\x96\x0f\xf2\xde\x4e\xc2\x08\xe1\x05\xfd\xbc\x37\x80\x30\x42\x28\xec\x0b\xe2\xbd\x92\xbc\xa7\xac\x7c\x32\x8e\xf1\x31\xe6\x86\xbb\x4b\xe8\x00\x25\xee\x5c\xc0\x16\xe2\xa2\xc8\x28\x84\xb8\x04\x9e\xb8\x86\x27\xf7\xaa\x45\x1a\xbb\x25\x95\x2d\x0f\x0d\x65\x3f\x38\xcb\xb8\xbe\x20\xb4\xac\x84\x59\xca\xf3\xbd\x01\x6b\xa1\x94\xe0\x64\x1d\x73\x2c\xe6\x31\xa2\xc0\x6f\x8f\x93\xc5\x99\x5f\x32\xb2\x21\x41\xe1\xb4\xbb\x79\x4c\xf4\x7b\x5a\x38\x75\x3b\x06\x1d\xa1\x0c\x2f\x48\x16\x13\x21\x65\x68\xb1\xb2\x5d\x05\xbb\x29\x4d\x8b\x54\xcb\x05\xcf\xc6\x80\x3e\x6f\x79\x06\x00\x25\x5c\x4d\x56\x77\xf4\x85\xcf\x15\x1e\x8f\x9f\xab\xd6\xd1\xda\x73\x05\x9d\xf6\xcb\x9e\x6b\x19\x74\x17\xa3\xdd\xb9\xea\x2b\xbc\x3d\x57\xb8\x3b\xbf\xe4\xb9\x46\x98\x8a\x1e\x29\x4b\xf9\xa3\x1c\x7f\x79\xfc\x64\x3a\x70\xfc\x29\xd1\x8c\x50\x51\xb6\x92\xee\x02\x09\xb3\x6d\xe0\x2c\x6b\xd9\x34\xba\x6e\x10\xe7\x00\x5b\x8a\xa0\x8a\xa6\xb6\xec\xfe\x2e\xaf\x74\x22\x6d\x29\xad\x77\xb5\xc1\xb9\x03\x7a\x8d\x50\xf3\x82\x43\x2e\x3e\x2b\x6f\x5f\xe5\x12\xbf\x15\xba\x6f\x45\x71\x76\x57\x8c\x2a\x7c\xff\xdd\x87\xbb\x8b\x76\x27\xfa\xc8\x3c\x42\xb6\x29\xbd\x12\xfa\xef\xa1\xe7\x24\xcd\xa9\x94\x94\x33\xf4\x48\x16\x6b\xce\x1f\xd0\x0b\xe7\x49\x5c\x51\xb5\x2e\x17\xf3\x84\xe7\x0d\xa7\xe2\x4c\xd2\x95\x3c\xb7\x74\x3c\xd3\xb3\x09\xad\xc3\x4e\x59\x46\x59\xc3\xe4\x05\x69\x8b\x2c\xa4\x4d\x0f\x18\x25\xd5\x8c\x02\x7b\xd4\x1b\x69\x33\x6f\x58\xcf\xc8\xfe\xc2\x98\x3c\x1a\x94\x64\xc1\x55\x92\xc1\x58\x66\xc2\x90\x34\x1f\xca\x8a\x35\x9e\x99\x8b\xd4\x86\x5d\x43\x10\xfe\x9a\x33\x2e\x82\x8e\x9b\x6e\x36\xff\x06\x44\xd5\x69\x05\xd6\xd8\xce\x60\xc8\xf6\x44\xc3\x0a\x58\x2b\x5b\x60\xa7\xcb\x0c\xaf\x8e\xc2\xba\xf7\x69\xf4\x3a\x38\x20\xcd\x43\xa7\xb0\x1d\x36\x82\x3f\x22\x9e\xaa\x9b\x4c\x0c\x01\x18\xf5\x6a\xde\xd8\xb7\x50\x82\xf4\xee\x6e\x63\xdf\x42\x7d\x12\xfe\xdd\x3d\xde\xbe\x55\x3a\xf0\xc8\xed\x02\x5d\xd8\xbe\xae\x79\xa3\xbb\x6c\x6a\xdd\x38\x70\x15\xf6\x34\xe8\x21\xfd\x38\x74\x65\xcd\x45\xbe\xa7\x49\x7b\xf4\xe4\xc0\xde\x03\x95\x13\x73\x7f\x05\x33\xbc\x43\xeb\x27\x28\x52\x47\x09\xec\xb2\x71\xdb\xf9\xb8\x5f\x44\x8a\x89\x9e\x83\xd4\x77\x44\x6e\x9b\xc4\x1b\xca\x01\x8f\x7b\xa2\x0e\x0e\x4b\x32\x81\x18\xd1\x79\x79\xee\x1a\xef\x21\xba\x6f\xc0\xbd\xe1\x29\x5a\x7b\x61\x19\x75\xc8\x09\xa4\x7b\x84\x20\x30\xfa\x77\x27\x95\xd5\xb2\x1f\xe3\x06\x61\x16\x16\xe6\x0c\xce\x45\x93\x7a\x25\x45\x25\x53\x34\x73\x7e\x97\xbc\xc8\xb4\xc0\xd0\xfa\xae\xb1\x11\xfb\x33\x9b\x35\xd2\xfc\x9c\x55\x53\xdc\x2b\xd8\x78\x86\xfe\xa3\x94\x0a\x61\x07\xae\xf1\x74\xda\xaa\x3b\xe9\x22\x6d\x0c\xc1\xdb\x94\x59\x10\xe5\xad\xb8\xfe\xfc\x86\xa6\x04\xa5\x74\xb9\x24\x01\x20\x20\x33\xdc\x02\x0b\x9c\x13\x05\x2e\x57\xb3\x31\x0b\xb2\xa2\xcc\x64\xab\x5c\x22\xac\x27\x71\x7a\x2a\xeb\x48\x0f\xdf\x91\x07\xfc\x09\x55\x28\xa7\xab\xb5\x39\xd1\x08\xa3\x8c\xb3\x15\x72\x46\xf1\x8c\xe3\x14\x01\xdb\xe3\x02\x3d\x62\xe1\x13\xd4\x31\x4a\x70\xb2\x06\x0b\x3d\x66\x28\x2d\x05\xa4\xc4\x50\x04\xa7\xdb\x99\x54\x58\x69\xa9\x9f\x18\x64\x5f\xbd\x32\x7e\x2b\x7b\x13\x98\x0c\x6f\x51\x13\x6f\xa3\xb9\x47\x75\x48\xad\xbf\xd0\x8a\x6a\x9e\x1e\x5b\x24\xdf\x3a\xe6\x53\x8a\x27\x6f\x9b\x52\x3c\xa1\x29\xc5\xd3\x94\xe2\x69\x4a\xf1\xe4\x7b\x76\x4a\xf1\x34\xa5\x78\xea\x6f\x53\x8a\xa7\x29\xc5\xd3\x50\x9b\x52\x3c\xd9\x36\xa5\x78\x1a\x31\xe4\x29\xc5\x53\xc0\x0b\x53\x8a\xa7\x2f\x3a\x3c\x7f\x4a\xf1\x34\xa5\x78\xea\x6b\x53\x8a\x27\x68\x53\x8a\xa7\x29\xc5\xd3\x94\xe2\x69\x4a\xf1\xd4\xf7\xec\x94\xe2\xa9\xbf\x4d\x29\x9e\x7a\xdb\x6f\x47\x86\x9c\x52\x3c\x4d\x29\x9e\xa6\x14\x4f\x9f\x3b\xc5\x93\x54\x29\xf5\x24\xa6\x08\x89\x31\xb4\x49\x42\x6a\x0c\xbd\xcf\x71\x5a\x2e\x97\x44\xc0\x7d\x0e\x23\xd8\xf3\x21\x55\x11\xfe\xce\x71\xee\xdf\x4e\x7d\x73\x49\xa2\xce\x20\xd4\x51\xda\x6a\x3b\xdd\x9d\x5b\xc0\xff\x23\xde\xfa\x3a\x15\x44\x42\xe8\x1f\x43\x97\x1f\xbf\x8d\x0d\x84\x0c\x8d\xe3\x81\x51\x7e\x64\x49\x0c\x38\xa2\xde\x88\xae\x40\x5a\xbb\x1f\x49\xc6\xa5\xef\x64\x41\x7d\x4e\x58\xa6\x64\x8d\x19\x23\x4e\x6a\xa3\x0a\x74\x98\x05\x21\x0c\xf1\x82\x30\xe3\xc1\x76\xc5\x13\x7d\xfe\x76\xa5\x70\xb2\x9e\xeb\x51\x32\xb7\x09\x36\xd7\x46\xfd\x3d\xa9\x04\xc1\xb9\xd9\x0c\x41\x72\xec\x8d\xe4\xd1\xc3\x40\x38\x11\x5c\x4a\x94\x97\x99\xa2\x45\x46\xec\xa7\x90\x24\x80\xe6\x34\x98\xde\x6a\x41\xfd\x54\x23\x89\x71\xb2\x41\xfc\x5e\x35\x52\x3b\x61\xde\x8c\x53\x07\x59\xf3\xcc\xdf\x23\xc9\x0b\xb5\xad\x20\x21\x04\x2d\xa9\x90\x0a\x25\x19\x25\x4c\xd9\xd1\x1a\x7c\x36\x7c\xed\x4c\xcb\xb1\xfe\x2d\x62\x76\x85\xa4\x5d\x04\x96\xc2\x1d\x59\x28\x69\x60\x10\xf5\xe7\xcc\x87\x3c\x3d\xa6\x54\x5a\x39\x47\x9e\x21\xac\x1c\x33\x06\xd2\x71\x6b\x00\xc4\x93\xc2\xa7\xec\xb7\x3d\x9d\xda\x17\x1a\x43\x69\xa4\x51\xa9\xd1\x2b\xf5\x91\x5e\x66\xd8\x27\x39\xb8\x83\x76\xd6\xaa\x58\x5a\xb8\xf4\x00\x06\x0b\xb4\x7b\xe0\x3d\x7d\x02\xc1\x31\xb2\xd1\xe7\x85\x24\x44\xab\x3f\xb8\xe7\x7c\x1f\xe4\x78\x2b\x22\x72\xca\x00\x5c\xf2\x81\x48\x89\x57\xe4\xc6\x6b\xb6\xec\x13\x55\xc1\x72\x59\x6f\x18\x90\x57\x06\x72\x2b\xfc\x12\x70\xd6\x6b\x37\xfd\xa9\x6c\x0e\x0d\xe5\x66\x6c\x15\xdc\xe8\x51\x50\xa5\x88\x6f\x31\xa9\x34\xb9\x05\xc0\x87\xb0\x1b\x74\xa0\x3f\xd1\x74\xf2\xdb\xe9\xfb\xf6\xc7\x7c\x58\x77\xad\x6f\x3a\x96\xda\x5a\x7e\x04\x2d\x04\x25\x4b\xb4\xa4\xe0\xbf\x07\xff\xf6\x99\x89\x36\xf5\x82\xc0\xb4\x8a\x24\xa5\x56\x2a\x38\x73\x6e\x58\x37\xe3\x39\xfa\xc9\x4e\x59\x89\x92\x25\x58\x85\x82\x75\x18\x4f\x09\xa2\x4b\xb4\x02\xdf\xba\x30\xe0\xa2\x3f\xbc\xfa\xef\x7f\x42\x8b\xad\x96\x1d\xc0\xf8\xaf\xb8\xc2\x59\xb5\xb8\x19\x61\x2b\x6f\x00\x80\x65\x71\xed\x60\x85\x6a\x5f\x20\xb3\xa0\x59\x92\xd7\xdf\x3c\x2c\x82\x01\xa5\x8a\xa3\xf3\x94\x6c\xce\x1b\x7b\x3e\xcb\xf8\xaa\xab\x9c\xdc\xb0\xd8\x12\x28\xf8\x77\x90\x3d\x24\xfb\x8a\x20\x7c\x17\xb4\x8d\xd6\xfc\xd1\xe4\xb4\xe8\xa0\xd7\x20\x78\xd0\x42\xeb\x16\x45\x99\x19\xac\xd6\xb7\xfa\xcc\xc0\x7a\x96\x92\xec\x03\xf3\x3b\xcf\xab\x7f\x75\xdd\x07\x76\xcb\x8f\x1b\x20\x86\x1b\x2e\xb7\xe8\x58\x6b\x26\xf1\xd2\x6d\xea\xc8\x75\x8e\xbe\xc5\x59\xb6\xc0\xc9\xc3\x3d\x7f\xcf\x57\xf2\x23\xbb\x14\x82\x8b\xf6\x3c\x32\x2c\x7d\xbc\x3f\x59\x97\xec\xa1\x5d\xe4\x30\xe3\x2b\x2d\x57\x17\xa5\x72\xe9\xba\x3a\x16\xda\xd3\x2d\xf0\x21\x2a\xed\xf5\x87\x6d\x55\xdd\xfa\x1b\xe4\x09\xa8\xf6\x91\x6a\x06\xc6\x10\xd1\x63\xf7\x29\x4f\xfa\xfc\x34\xc7\x26\x9b\xc4\xff\xcd\xab\x3f\xfc\xd9\x1c\x34\xad\x45\xfe\xf9\x15\xc0\xa5\xa4\x1f\x5b\x48\x93\x35\xf0\x7e\x2a\x91\xcc\x71\x96\x69\x85\xb1\xa9\x4f\x68\xe2\xe8\x3a\x14\x07\x39\x13\x2a\x86\xfc\x0f\x24\x6c\xdf\xdf\xff\x0d\x24\x6d\xaa\x24\xc9\x96\x67\x06\xef\x5d\x65\x45\x39\x85\x2b\xf3\xd4\x72\x58\x2d\x07\x55\xcb\x11\x78\x37\x1f\x46\x08\xde\xf0\xac\xcc\xc9\x3b\x02\xc5\x5a\x23\x16\xa9\xf5\x9e\x43\xd0\x65\xb6\xb2\xfd\x22\xe3\xc9\x03\x4a\xcd\x1f\xfd\x27\xd8\x79\xc3\x77\xf3\x8d\x35\xd0\x9d\x68\x41\x54\x85\xed\x3c\x74\x95\xf3\xe6\x5c\x5a\xfe\xfd\x1c\x17\x45\x05\xa7\x15\xf8\xd1\xab\x28\x36\x27\xee\x2a\xf7\xe2\xe3\x54\x3c\x37\x1f\xf1\x8b\x34\x1d\xf3\xad\x5f\x75\x1b\x57\xc0\x7f\x1b\xe4\x5e\x70\x12\x82\x66\x1a\x82\x0a\x1c\x5e\xcd\xdd\xdc\x9a\x7a\x05\x81\x6f\x1c\xbc\x0e\xf0\xa8\x3a\xcd\xac\xb2\x29\x99\x0a\xd6\x2e\x2e\xc8\xec\x70\x41\x84\x84\x82\xff\xea\x47\xa0\x88\xb7\x19\xa6\x21\xb1\x88\x08\xd5\x05\x9a\x0f\x3b\xcd\xf0\x0a\xc0\xf5\x9e\x7a\x1f\x0d\x40\x1d\x1c\xb8\x46\xb0\x39\x60\x90\x00\x2a\x86\xc7\xdc\xf0\xd4\xbe\x0a\x37\x04\x08\xbc\x5d\xe2\xae\x8f\xc5\x34\x65\xe1\xc8\x0b\x26\x9e\x99\xfc\x58\xcf\xb5\xcd\x4b\xf4\x2f\x15\x33\x31\x4f\x79\x89\xe5\xb8\x2c\x04\x86\x34\x8a\x83\x00\xef\x68\x54\x26\xaf\x19\x81\x53\x92\xc2\xac\xf0\x6b\x62\x37\xd8\xdd\xae\x9a\x65\x18\xbd\x66\x8e\x8c\x07\x4a\xef\x96\xed\x3e\xa8\xcf\xd3\x37\xa7\x07\xe7\x35\x66\xa1\x04\x2f\xf0\x2a\x30\xa5\xec\xce\x7a\xed\x76\x80\x52\x62\x44\x3d\x22\x41\xc8\x86\xbf\x87\x19\xde\x31\xa4\x8f\x35\x3d\xb9\xea\xd6\x2e\x55\x9e\x75\xa4\xb8\xad\xf0\x5a\x38\xec\x52\xac\x89\x0d\xc1\x79\xc4\x5b\x84\x05\x2f\x59\x6a\x6d\x48\x95\x71\xef\xc3\xce\x04\xae\x39\x0b\xbb\x22\xa8\xb4\xb1\xd8\xed\x48\x2f\xb8\xce\x29\x43\xaf\xe7\xaf\x5f\x7d\x19\x57\xc3\x7d\x55\xb4\xbf\xbe\x1a\xae\xab\xab\xc1\x9c\xd7\x83\x8f\xd4\x25\xa0\x8b\x1e\xed\x07\xab\xfc\x57\xf9\xe5\x40\x83\x00\x6b\x1a\xfc\xa4\x95\xf9\xb0\x0d\xaa\xd3\x7b\xbf\x00\xb1\x52\x4b\xf5\x8d\x88\xc6\x97\x2d\x29\x3d\xa8\xc7\xc0\x5c\x75\x71\x09\x97\x10\x92\xe5\xe2\x20\xbc\xca\x32\x1c\x38\x38\x95\x3d\x27\x4e\xdc\x39\x95\x03\x6c\x2b\x2a\xd0\x54\x71\x74\x72\x82\x5e\x98\xde\x4e\x4d\x7c\xc7\xcb\x83\x93\x99\x5d\xba\xcb\xa7\x22\x28\x47\x46\x6b\xf9\x2e\x9f\x0a\x0c\xb6\xa0\xa2\x7f\x1d\x83\xa6\x5a\xdb\xce\x82\xd6\x31\xa8\xcf\xbf\x92\x35\xde\x10\x88\x5b\xa1\x19\x16\xd9\x56\x2f\xe8\x9d\x99\x2d\x5a\x94\x0a\x11\xb6\xa1\x82\xb3\x9c\x30\x85\x36\x58\x50\xbc\xf0\x1a\xd1\x4d\x13\x04\x42\xf1\xb4\x72\xf3\xf5\x8b\x1f\x2f\x6e\xc1\xeb\xf8\xd2\xc6\x1f\xda\x15\x29\x25\xe0\xc1\x46\x50\x4f\x63\x58\x6d\x2d\xb8\x49\x0c\x61\xe3\x04\x82\x71\x73\xd6\x3b\x0c\x46\x00\xb7\x06\x7a\xbc\x79\xa9\x4a\x93\x89\xf5\x29\xc9\x4a\x49\x37\x41\x87\x73\x37\x33\x41\x83\x63\xff\xf1\xc0\x04\x1a\x2e\xe5\x56\x12\xcb\x17\x28\xe4\xda\x30\xaf\x77\xd4\x73\xc6\x76\x42\xd0\x6a\xa2\xd8\x8b\x13\x03\x93\x3d\x5c\xc1\x55\xb8\x6c\x8c\xa5\xd9\xb9\xa5\x4e\x65\x95\x4b\xb3\x99\x1e\xe5\x2c\x48\x50\x33\xc1\xa0\x06\x6a\x64\xf2\xf9\xa7\xfb\x8e\x3d\x88\x89\x6f\xc8\xd6\x9e\x3e\x0f\x67\xda\xf1\x53\x8e\x87\x12\x02\x68\xc0\xb7\xfb\x95\x1b\xba\x6f\x10\xed\xac\xe5\x89\xab\xf3\x60\x15\x66\x53\xd1\x02\x18\x94\xd1\x51\x1c\x2f\x54\xf8\xa1\x7f\xdc\x94\x21\x41\x64\xc1\x99\x24\x6d\xa1\xaf\x06\xfd\x90\x0d\x61\x4a\x46\x68\x3c\x21\xaa\x43\xc1\xa5\x82\x60\xd9\x21\x1a\x6f\x7b\x51\x6e\xdc\x2b\xe0\xdd\xc2\x59\xa6\x29\x28\xcf\x49\x4a\xb1\x22\xd9\xd6\xfa\x3d\x71\x20\xcc\x53\xf7\x61\x62\xea\xac\x43\x8b\xa0\x35\x66\x69\x46\x44\x33\x7e\xbb\xe5\x02\x73\x46\x55\x4f\xfa\x14\xe3\x71\x73\xe0\x51\x9c\x24\x5c\xa4\x16\xef\x4b\x55\xe5\x48\x43\xa6\x74\xc6\x1c\x7d\x04\x89\xb9\xde\xbd\xc1\xbe\xf7\xd2\x52\x80\xa1\x48\x36\x9c\x76\x90\x0b\xa7\x8a\x62\x37\xf0\x88\xe1\x85\x88\xa9\xa0\x62\x9d\x19\xf5\x7f\xd6\xe0\x89\x19\x00\xd0\xce\x1b\x18\x0a\xf8\x61\xc8\x17\x11\xaa\x63\x86\x84\x25\x1f\x27\x28\xf9\xc0\x21\xc9\x31\x4a\x75\x44\x38\xf2\xb1\x82\x91\x23\x42\x91\xd1\x92\x87\x01\xcf\x0e\x1f\x88\x1c\x13\x86\x1c\x86\x2a\x42\x51\x41\xc8\xad\xf0\xe2\xa0\xde\x3d\x21\xc8\xbb\xc1\xc5\xa1\x0a\xc0\x40\x00\x72\x47\x68\x71\x98\x52\x37\x1c\x7e\xbc\x1b\x58\x1c\xd4\x67\x54\xf0\x71\x44\xa8\xdd\x98\xa4\x86\x41\x91\x4a\xc1\xf2\x5d\x60\xdc\x6b\x7c\xd4\x6b\x68\x4c\x6b\x0c\x7f\x09\xc5\xdd\xc6\x45\xb3\x86\xea\xf6\x11\xb1\xac\x61\x29\x82\xd1\xd8\x48\xd6\x28\xb2\x89\x8c\x62\x3d\x52\x0c\xeb\x73\x23\x58\x23\x0e\xd5\xb1\xa2\x57\x9f\x17\xbb\x1a\x1f\xb9\x1a\x17\xb7\x7a\xc0\xa8\xd5\x11\xf1\x9f\x91\x11\xab\x87\x8c\x57\x8d\x1e\x6d\x5c\xac\x6a\x44\xa4\x6a\x4c\x9c\x6a\x64\x94\x6a\x4c\x8c\x6a\x68\x84\xea\xe1\xe3\x53\xa3\xb6\x22\x34\xae\x20\x38\xaa\x20\x3e\xa6\x20\x3a\xa2\xe0\x38\x31\xa9\x87\x8f\x26\x38\x68\x2c\xc1\xb3\x23\x09\xc2\x63\x51\x8f\x12\x89\x3a\x3e\x0e\xf5\x28\x76\xbc\x80\x58\x89\x70\xeb\x5c\x68\x4c\xd7\x71\x22\xba\x8e\x15\xcf\xf5\xbc\x68\xae\xa3\x4b\x94\x87\x8a\xe3\x7a\x46\x14\xd7\x3f\x18\xa7\x3d\x54\xe4\xd6\x6f\x9b\xd3\x7e\x0e\x1e\x14\xf4\x58\x21\xc8\x9d\x1a\x2e\xb3\xb8\x63\x37\x35\x2f\xf4\x58\x4d\x6d\x70\x7b\x84\xd9\xb4\x36\x83\xa2\xb4\x74\xc5\x9c\x2f\x6e\xae\x2a\x7d\x95\x37\xcd\x99\xc6\x7c\x3c\xd8\xa7\x85\x80\x57\xa1\xc1\xe7\x36\x2c\xb8\x91\x4e\xb3\x14\xe4\x4c\xcf\x9c\xe4\x30\xab\xb3\xaa\x06\xf6\x60\xc7\x16\x15\x0c\x2f\x10\x95\x18\xf3\x90\xb3\xf2\xda\x54\x73\x6e\x49\x96\x11\x29\x02\x12\x81\xe5\xda\xe0\x56\xc9\x13\x55\x16\x29\x2e\x08\x96\x9c\x99\x00\xec\x06\xfc\x96\x4a\x54\x60\x29\x3d\x66\x1c\xcb\xb5\xec\xe0\x4c\x87\x36\xef\x66\xb3\xb3\x95\xc0\x09\xb1\x01\xf7\x28\xe1\x25\x53\x29\x7f\x1c\x56\x8f\x21\x99\xa7\x74\xfb\x6c\x8a\xe8\x19\x82\xd0\xfc\x9f\x80\x9d\xcc\x65\x42\x9d\xa3\x5b\xb2\xc2\x22\xcd\x7c\x3c\xc0\x72\x0d\x5e\xaa\x84\xd7\x4c\xc4\x8e\x7e\xd7\x74\x0e\xce\x22\x20\x03\x70\x1f\x0e\xaf\x83\x23\xae\xa6\x87\xd8\xb3\x10\xc3\xdc\x60\xd7\xbe\x1e\x68\x43\xf7\x10\x96\xcb\x12\x0b\x20\x07\xf7\x5e\xef\x4e\x41\xfc\x0c\x4e\xd6\x3e\x5f\x55\x7c\x49\xf3\xc9\x20\x3f\x19\xe4\x27\x83\xfc\x64\x90\x9f\x0c\xf2\x5d\x6d\x32\xc8\x4f\x06\xf9\x56\x9b\x0c\xf2\x7d\x6d\x32\xc8\xf7\xb7\xc9\x20\x3f\x19\xe4\xff\xe1\xcc\x44\x93\x41\x7e\x32\xc8\xbb\x36\x19\xe4\x27\x83\xfc\x64\x90\xf7\xbe\x31\x19\xe4\x87\xda\x6f\xd3\x20\xef\x7d\xa4\x55\xbe\x29\x08\xda\x7d\x7a\x03\x56\x43\x9a\x58\x03\x78\x3b\xd7\x83\xed\x6e\x5e\x43\xfe\x7b\x27\xb0\x57\x79\xca\x99\xb9\x1b\x75\xaa\x4c\x3f\x82\x67\x99\xd6\x81\x72\xbc\x1d\xac\x14\xe7\xf0\xff\xef\x5b\x35\xa9\xe8\x12\x31\xbe\x93\x1f\x17\xec\xde\xa6\x1e\x55\x3a\x47\xf7\xfd\x4a\x28\x5d\x31\x2e\x88\xeb\x99\xb2\xd5\x99\x49\xea\x54\xd5\x8b\x53\xdc\x26\xa5\x68\x7f\xf4\xe4\x3f\xff\xeb\xa4\x9f\xec\xf6\xc1\xea\x9f\x25\x51\x5c\x08\xb7\xf6\x19\x53\x47\x19\x52\x7d\xc1\x13\x87\x32\xa2\x86\x5e\x47\x81\xc6\xd3\x63\x18\x4e\x23\x8d\xa6\x41\x92\x57\xb0\xc1\xb4\x69\x0c\xf5\xf6\x1a\x60\x2c\xdd\x31\x84\x06\x08\x1b\xa1\x86\xd2\x86\x11\xd4\xdb\x6b\x88\x91\xb4\x6d\x00\xf5\xaf\xa8\xdf\x40\xba\x6b\xfc\xf4\x4f\x7e\xd8\x38\x1a\x6e\xf8\x0c\xb4\xcf\x44\x48\x01\x61\x2a\x6f\xd0\x35\x15\x53\xe8\x28\xba\xc4\x51\x40\x76\xcf\xc8\xe2\x46\x61\x71\xad\x63\xca\x1a\x85\xe6\xe2\x0c\x13\xef\x02\x6c\xc7\xc7\xb1\x1b\x87\xb2\xd4\x10\xe9\x3e\xda\x56\x1c\xc4\xfd\xc2\xed\xc4\x4d\xfb\x6c\x08\xa3\x0e\xb1\x11\x07\x9f\xb2\x08\xdb\x70\xbc\x5d\x18\xf6\xdb\xcf\x81\xc6\xd9\x84\x03\xf9\xcd\x31\x6c\xc1\xe3\xed\xc0\x71\x36\xe0\x70\xfb\xef\x81\x6c\xbf\x91\x2a\x5a\x84\xcd\xf7\x50\xf6\xde\xa3\xd5\xe9\x08\x5a\xa3\x50\xfb\x6e\x4c\xe6\xe9\x40\xbb\x6e\x88\x4d\xf7\xb0\xf6\xdc\xe0\xa5\x0e\xb1\x2e\x04\x59\x16\xe2\xac\x0a\x51\x16\x85\x68\xbb\x2d\xe2\x7e\x07\x5e\xb8\x25\xa1\x69\x25\xf0\x76\xfb\x2c\x2b\xc2\xb3\x2c\x08\x61\x76\xda\x58\x1b\xad\xb1\xbf\x7a\xa7\x1d\x6b\x9f\x0d\xdc\xfd\x10\x26\xe0\xb5\x87\x04\x1d\xe8\xc8\xd2\x3c\x23\x8a\xf2\x78\x4b\x81\x47\x95\xe3\x69\x68\xfb\x5e\x19\xe1\x93\xa5\x8c\x3f\xac\x80\x1a\x5c\x76\x27\xbe\xe0\x8e\x2d\xa7\x33\xb8\x72\x07\x29\xb5\x73\xd8\x15\x89\x29\xac\x13\x5f\x52\x67\x8c\x2a\xe4\x29\xa6\x13\xac\x0b\x85\x95\xd1\x69\x2f\xfe\x60\x9f\x9f\x76\x63\x82\x3c\x39\xa3\xbc\x38\x9e\xec\xa9\x87\xf7\xe0\x8c\xf7\xde\x1c\x4d\xaf\x0b\xf0\xd8\x84\x57\x9b\x8d\xf3\xd6\xfc\x86\xe5\xa8\x00\xaf\xcc\x3f\xa0\x1c\xf5\xe9\x24\x8e\xf0\xb2\x35\xa3\x0a\xd6\x98\x72\x34\x83\x0b\x15\x51\xaa\xa6\x5d\x88\xe6\xb7\x29\x71\x78\x77\x8d\xf1\x94\xdc\x91\x0c\x4c\xe9\x7d\x6b\x80\x53\x67\x82\xbe\x09\x60\x87\x01\x87\x77\x67\xf3\x1b\x43\x30\xf9\x9e\xa5\xfb\x97\xd9\x7f\x77\x64\x06\xc9\xbc\xba\xf0\x39\x58\xb1\x97\x54\x69\x15\x13\xc3\x04\xe7\xe8\xae\xa3\x47\x93\xea\xb1\xff\x2e\xd2\x6f\x9e\x9e\x4a\x94\xe1\x05\xc9\xe4\xee\x07\x16\x04\xb4\x93\xb4\xcc\x4c\xd1\x12\xb0\x7f\x9b\x8f\x0d\xa6\xef\x89\x8a\x14\x80\xa4\x5b\x10\x9b\x70\x8e\xa5\xa4\x2b\x36\xd3\x64\xa5\xbf\x72\xde\x47\x41\xde\x1d\x2f\x04\xe5\x82\xf6\x27\x45\xdf\xb3\x8c\xb8\x17\xcc\xc1\x99\xa3\x1f\xb1\xa0\xbc\x94\x2e\x63\x55\xc2\xf3\x82\x33\x48\xe4\x5f\x0e\x54\xef\x50\x75\x42\x39\xd8\x1e\x9b\xac\xbe\xea\xbc\x62\xd6\x2e\xfd\xe8\x8d\xfd\x4b\x6f\x8f\x17\x69\x4e\xa1\x00\x4d\xc3\x1b\x0a\x81\x31\x0c\x2f\x32\x62\x9c\x2f\x85\x30\x99\xb0\xf4\xd0\x84\xab\x57\x42\x94\x1a\xba\x58\xea\x91\x1a\x28\x3c\xae\xbe\x93\xd4\xdf\x71\x85\x07\x64\xe3\xf1\x7e\xda\xd4\x9f\x75\xf3\x79\x9b\x61\x29\xf5\x55\x60\x43\x9b\xe8\xca\xd5\x14\x82\xf5\x35\x5e\xae\xfa\xd7\x7e\x55\xc2\xf6\xd7\x77\x71\x84\xb0\x11\x3f\x0b\x29\x76\x47\x1d\x44\x36\x57\xcb\x46\xda\x3a\x44\x6d\x49\x09\xe9\x76\xf8\x54\xd6\xa3\x47\x27\x86\x8e\x80\xaa\x67\x89\xa0\x8a\x26\x38\xeb\x2f\x86\xaf\x65\x67\xf7\x4a\x92\x95\x52\x11\x51\xbf\x05\x0a\xa5\x7a\xe4\xe6\xeb\x38\x43\x0f\x64\xfb\xc8\x45\x2a\x3d\xe9\xee\xdc\x08\xeb\xb5\x97\xca\x0d\x51\x0b\xb1\x50\x41\xc1\xb8\x6c\x45\x4e\x04\x5a\x10\x5f\xf2\xc7\x9d\x4e\xb6\x73\x74\xc1\xb6\x36\xd3\x2e\x6b\xca\x01\x29\x59\x52\x5b\xe8\x09\x72\x9b\x0d\x51\x26\x6e\x13\x91\x3d\xe5\x6e\x74\xd8\x48\x91\x1d\x89\x03\x87\xe9\x88\xa7\xf5\x29\x74\xe8\x03\x87\x19\xe0\x02\x19\xc7\x1b\x9c\x4e\x41\x8c\x37\xd3\xfd\xb9\x8f\xf4\xbc\x57\x80\x20\x38\xa5\x07\x04\x58\x48\x22\x20\xf3\x7c\xd5\xef\x00\xc8\xa0\x1d\xe2\x06\x48\x8b\x9c\x6f\x5c\x36\x65\xd7\x13\x61\x69\xc1\xa9\xe6\x1c\x4d\xf8\xc5\xa0\x3f\xaf\x33\xdd\x5e\x17\x52\xa3\x5a\xdd\xdb\xd6\x32\xf4\x53\x27\x40\x35\xf4\xdc\xb6\xfd\x58\x8d\x1e\x4c\xc6\x00\x97\xdb\xc3\x6a\xdc\xba\x2f\x34\xc0\x1a\x13\x02\xa3\xd9\x26\x04\xc6\x84\xc0\x98\x10\x18\x13\x02\x63\x42\x60\xf4\x3d\x35\x21\x30\xfa\x47\x38\x21\x30\x26\x04\xc6\x5e\x9b\x10\x18\x13\x02\xa3\xeb\xd1\x09\x81\x81\x26\x04\x86\x6b\x13\x02\x63\x42\x60\x4c\x08\x8c\x09\x81\x71\x94\x15\x99\x10\x18\x13\x02\xa3\xdd\x26\x04\xc6\x84\xc0\x98\x10\x18\xbb\x6d\x42\x60\x4c\x08\x8c\x9d\xc5\x3e\x04\x02\xc3\x65\xc5\xec\xdd\xac\x5d\xeb\x7e\x51\x2a\x82\x6e\xdd\x5b\x15\x6d\xb9\x0a\xda\xfa\x12\x4d\xb0\xf0\x57\x8d\x0d\xe1\xac\x50\xfb\x7d\x90\x8c\xe2\xc0\x21\x28\x9c\xfb\xb5\xe9\xf3\x3d\x0c\xa4\x61\xa3\x31\xe5\xb3\x9e\x80\x9e\xb0\xa9\x0e\x0c\x2e\x41\x58\x9e\xc1\xef\x57\x0b\x6e\xec\x4c\x23\xc2\x8c\xdb\xc8\x0c\x93\xa6\x72\x66\x3f\x3d\xab\xba\x9f\x55\x3b\xd0\x0b\xd6\x40\xa1\xc7\xda\xda\xcf\xbe\x84\x9d\xb8\xb5\x43\xd9\xdd\x0b\x7b\xb6\xc7\xee\x85\x23\x63\x70\x5f\x57\xdf\xa0\x12\xf1\x9c\x2a\x28\x76\xcb\x5b\x85\xc2\x86\x13\x5a\x50\xd5\x32\xcf\x5a\xea\x01\x57\x2e\x56\x26\x7b\x6a\x95\xe6\x2f\xb0\xc0\x5e\x5d\x2b\xd5\x64\xcf\xad\x04\x1f\xa0\x82\x99\xf3\xe3\x5b\x90\xcc\x01\xd9\xda\xa7\xa6\x36\xef\x23\x0e\xf7\x24\x46\xe2\x41\x9c\xa4\x54\x81\x0d\xa8\x2c\xb0\xd2\x9d\x6a\x1e\x56\x3d\xd8\xaf\xb0\xb8\xef\xf7\x40\x1d\xfa\x3b\xef\xed\xd2\x79\xe4\xeb\xae\x07\x17\x67\xe0\xc8\x68\x4d\x08\x10\x1a\x9c\x29\xf2\xd4\x2b\xbd\xb5\xcf\xd4\x5d\xfb\x25\xa4\xd5\x30\x89\xe0\x02\x23\x1b\x92\x55\x9d\x22\xac\x94\xa0\x8b\x52\x0d\xdc\xc1\x5a\xb5\x49\x78\x9e\x5b\xbc\x92\x03\x48\x00\xe6\x49\xce\x51\x2d\xf5\x36\xef\x68\x00\x00\xcc\x11\xba\x23\xc3\xe5\x12\x9b\xe3\x86\x13\xe9\x16\x0e\xc8\x1e\x7c\x8d\x04\x27\x6b\x0b\x9f\x7a\x8e\x7f\x7f\x29\xbf\x13\xbc\x0c\x4f\x99\x7d\x72\x51\x81\x7e\xb4\x8a\x62\x8f\x66\x86\x56\xba\x17\x73\xec\x71\x51\x64\xd4\x23\xbd\xe8\xb3\x9d\x65\xf5\xca\x49\x04\x25\xd8\x01\x96\x76\xc7\xf3\xaa\xf2\xad\x5e\x0c\x7b\x81\x78\x9d\x3f\xdf\x97\x0b\x92\x11\x53\xa0\x7b\x0d\x32\x2b\xe4\x61\x7e\xd4\xdd\xaf\x69\x61\xa4\x64\xac\xaa\xae\x41\x1d\xd6\x7f\x1e\xf6\xd5\xda\xfb\xbe\xe0\xe9\x1b\xf4\xbf\x98\x96\xa5\xee\x4d\xb7\x5a\xc1\xfb\xee\xea\x5d\x75\x04\xf4\x53\xdf\xde\xc1\x72\xa2\x6f\x86\xa5\x5c\xdd\x83\x24\x6a\x45\x53\xb4\x30\x9e\x73\x49\x14\x7a\xc1\xc8\xa3\x71\xc9\xbb\xfa\x8b\xa8\x55\x07\x78\xb0\x4b\x37\x0a\x98\x90\x1e\xb4\x1d\xca\x4b\xf4\x7b\x33\xe2\x82\x08\x07\xb0\x5b\x68\x2e\x8d\x05\x41\x1f\x6f\x4f\x87\x27\x0f\x98\x27\xf1\x38\x13\x8f\xb3\xd9\x6c\xa6\xe7\x7f\xb5\x44\x25\x83\x7a\xe5\x7a\x60\x6e\xcd\xe1\xeb\x9a\x45\xe4\x3c\xa5\x4b\x4f\x1e\xeb\xd6\xae\xe8\x73\x54\x0f\x0d\x48\x1b\xb3\xad\x9d\xf1\xbc\x1f\xa0\xd6\x12\x1f\xff\xf4\x87\x67\x5b\x01\x44\xc9\x2e\x22\xcf\x82\x5e\x55\x4d\x00\x8a\x03\xe8\x41\xcf\x8b\x30\x25\xb6\x80\x68\xda\xcb\xa5\x3d\xac\x81\x0a\x9e\x40\xe6\x9a\x1f\xa4\xbe\xa4\x4d\x51\xd9\xea\xd4\x53\xbb\xe6\x73\xf4\x01\x6f\x11\xce\xa4\xc1\xc5\x0e\xc0\x8e\x90\xa9\x5f\xba\xc3\xf0\xe6\x08\xae\x08\xe3\x2f\x5c\x70\xb5\xde\x7d\xc0\x5b\xcf\xfe\x06\x6c\x7a\xcd\x57\xce\x1a\x10\xa7\xea\x7e\xe8\xf8\xf6\x30\x49\xe0\x07\x22\x51\x21\x48\x42\x52\xc2\x12\x62\xad\x5a\x58\xf9\xc5\x6b\x74\x1c\x4a\xb8\xe6\xec\x96\xf3\x70\x93\xd0\x55\x03\x7c\x69\xab\xce\xd6\xd7\x02\xa8\xc2\x9a\x44\xb0\xf4\x98\x84\x18\x67\x33\x80\xec\x94\xd2\xde\xbb\xa6\xe0\xfc\xde\x59\xdb\xe0\x8c\xa6\x16\x4a\x39\x4c\x05\x39\x5e\x11\x84\x55\x45\x54\xfa\x1a\x62\xb2\x84\x84\xf7\x5a\x48\x53\x28\xe5\xa4\x86\xee\x60\x89\x7e\xb8\x7a\x37\xd8\xe5\x2b\xf4\x02\x4a\x62\xc3\xd9\x5d\x62\x9a\x81\x17\x1a\x2a\xb7\xee\x14\x86\x5d\xba\xee\xf5\x54\x06\xfb\x04\xfa\x46\x5c\x98\xca\xf6\x67\x88\x71\x53\xfb\xc0\xce\x53\x73\x2d\xc7\xe1\xac\x29\xd8\x9b\x30\xbe\x7d\x54\xc6\x1c\x87\x61\x5b\x1b\x4b\x3f\xd5\x71\x18\x9a\x68\x58\x81\x7f\xa0\xe9\x1f\x24\x19\xac\x9b\xbd\xc7\xdc\x7e\x38\x30\x73\x6b\x8a\x42\x9a\xc0\xdb\x2b\x64\x28\x35\x27\x0a\xa7\x58\x0d\x1f\x13\xc3\x10\x6b\x94\x60\xe0\x5e\x0f\x7b\x70\x86\xd9\x62\xdf\x5e\x0f\xf6\xe9\xa7\x83\x4e\xd6\xe7\xb9\x3e\x3f\x0f\x5b\x94\xe4\x3d\x65\xe5\x93\x11\x6c\xc3\x4d\x5e\x9a\x8e\xee\x2e\xe1\x55\x53\x74\xe4\x49\x59\xd1\xcb\xc8\x89\xe9\xbe\x2c\x38\x7c\xae\xaf\x5a\x7b\xbf\x5b\x50\xc3\x71\x39\x60\x16\x5a\x6e\x04\xbc\xf9\x30\x35\x09\xcc\x52\x9e\xef\x8d\x52\xdf\x41\x20\x65\x37\x2c\xa4\x4d\x4a\x0b\xa1\xa6\x5f\x2b\xc7\x89\xbc\x80\x43\xbd\x07\xa0\x66\x45\xb9\x0f\xde\x83\x62\x46\x65\xb5\x3b\x46\x53\x83\x60\xa1\x70\x75\x03\xd5\xbe\x83\xa0\xf9\xa0\x18\xef\x81\xe0\xfd\x75\xe9\x3b\xe7\x74\xcb\x33\x62\x22\xb0\xdc\xa4\x74\x17\x5f\xd4\x9c\xe0\xc1\x98\x39\xdd\x6b\xad\xb5\x35\x27\xd0\x63\xbf\xa4\x39\x95\x9e\xeb\x6f\x6f\x4e\xfa\xbe\x6c\xcf\x09\x2e\xad\x2f\x67\x4e\x41\x36\xcd\xa6\x9a\x0e\xfa\x4d\x38\xef\xbe\x40\x19\x95\x70\xd9\x83\x7a\x2f\x9b\x2c\x1b\x70\xfd\x54\x40\xec\x0d\xf7\xe6\x61\x35\xa0\xf0\x1d\x76\x7a\x06\x4a\xbf\x35\xa7\xee\xad\x91\xa7\xa2\x4a\x21\x68\x8e\xc5\x56\x2b\x60\xf3\xfd\x4b\x81\x71\x37\x64\x27\x35\xe2\x34\xf5\xd7\x99\xd2\x9a\x67\xd0\x26\x05\x60\x20\x43\x6f\xdf\xd0\xfb\x37\x0c\xb1\x26\xb7\x32\x51\x59\xf8\x16\xdf\x99\xe7\xc1\x14\x86\x70\xb5\xdf\x0c\xe7\x44\x16\x38\x21\xa9\xeb\x11\x50\x97\xbe\x09\xd7\xb1\x85\x37\x3c\xb5\xf1\x5c\x25\xab\x7d\xd9\xae\xaf\x17\xd6\xa8\x12\x26\x3f\xda\x3b\xfd\x25\xca\xe9\x6a\xad\x2a\x8d\x23\xc3\x25\x4b\xd6\xcf\xdc\xa5\x8e\xc5\xb0\xb1\x62\xfa\xdc\x3f\x10\xc1\x48\x86\x0a\x2c\x70\x4e\x00\x14\x14\xa4\x79\x87\x83\x4d\xc3\x80\xa6\x1d\x18\xba\x25\xc2\xee\x33\x5b\x0b\x02\xf6\x73\xa1\x70\x6f\x73\x20\xc0\xb4\x35\xb0\x1f\x41\x04\x39\xee\xc8\xc2\x80\xa5\x01\xa0\xd2\x10\x40\x69\x54\x26\xe4\xe1\x63\xf9\x48\x59\xca\x1f\xe5\x18\xe1\xf9\x27\xf3\xaa\x93\xed\x92\xca\xc8\xbc\x23\x40\x0f\x4e\xa5\x21\x5c\x77\x0a\xd0\xdc\x0c\xcc\x55\x96\xc3\xc1\x6c\x78\x57\x9d\x71\xec\x56\x73\x8b\xf9\xaf\x44\xd8\x3d\x84\x64\xbb\xca\x25\x7e\x2b\x74\x7f\x8a\xe2\xec\xae\x88\x2c\x02\xf7\xdd\x87\xbb\x8b\xf6\xeb\x5a\xf0\x78\x84\x58\x50\x3d\x63\xfd\xf7\x3a\x42\xda\x7b\x9e\x1e\xc9\x62\xcd\xf9\x03\x7a\xe1\x1c\x5f\x2b\xaa\xd6\xe5\x62\x9e\xf0\xbc\xe1\x03\x9b\x49\xba\x92\xe7\x96\x34\x67\x7a\x06\xfe\xe0\x2a\xca\x32\xe0\x8d\x8e\x7b\x43\xd4\xb7\xb5\x06\xc0\x20\x93\x6a\x16\xb0\x41\x70\x12\x03\x6a\xd7\x6d\xab\x1e\xda\xcb\x00\xdc\xae\x8a\x12\xaf\x62\xdb\x03\xca\x77\xe1\xac\x58\x63\xeb\xd8\xb1\x31\x6b\x10\x97\xb8\xe6\x8c\x5b\x3f\xbe\x81\x63\x5b\x93\x9d\x89\x67\xf7\xb3\xaa\xfa\x48\xc2\x7c\x97\x04\xab\x52\x10\xb4\xcc\xf0\xea\x60\xa2\xea\x3e\x35\x0d\xf9\x00\x5d\xf3\x50\x14\x2c\xa5\x0d\x57\x6c\xc0\x86\xbc\x33\xee\xdc\x56\x63\xc1\xd9\xd9\x93\xe6\x9a\xfb\xf7\x27\x78\x4f\x76\xd7\xdc\xdb\xf5\x51\xf6\xa4\x32\xa1\x45\x6f\x05\x98\xd2\xec\x8b\x9a\x57\x39\x8e\xde\x69\x5a\xf3\x4e\x6e\xaf\x46\x67\xa7\x79\x4d\x3f\xd2\x36\xb1\x05\x1c\xed\x1d\x13\x9c\xcf\xcc\x16\xd2\xe3\x3e\x0b\x7f\xd6\xad\x80\x8e\x7b\x33\xa0\xae\xdb\xa1\x9f\xc6\x0d\x0d\x07\xac\x43\x34\x99\xdf\x36\x89\xed\x73\xd0\xfb\x41\x00\x0c\x26\xc8\xff\x22\x81\x6a\xbc\xc1\x28\x86\xd3\xbb\xbd\xf7\x3a\xd8\x16\x6a\x3f\xd5\xef\x4e\x37\xf1\x11\xd5\x59\xa3\xd2\x28\x28\x61\x58\x24\x85\xe5\x43\x0d\x0d\x21\x90\x17\xa6\x46\x80\xd4\xbf\xdb\xa9\xce\xb0\x19\x8d\x27\x6d\xcc\xc0\xea\x2b\x9e\x11\x03\x41\x09\x03\xaa\x75\x42\x3e\x4e\x65\xb3\x9f\x3e\x8a\xf0\x68\x47\xfb\x09\x6a\x78\x6a\xd6\xef\xbe\xea\x1b\xce\x83\x52\x50\xbe\x17\xb8\x8e\xf9\xcb\xa0\x45\x44\xeb\xd8\x7a\xfd\x94\xa1\x7d\x48\x0f\x64\x05\x0a\x25\x68\x91\x11\xf4\x97\x07\xb2\x3d\x33\x59\x5a\xc8\x72\x49\x12\xf5\x2f\xa8\x94\x1e\x72\x05\x98\x9a\x4a\xd6\x94\xad\x90\x96\xd8\xb0\xe2\x02\xfd\xc5\xfd\xd7\xbf\xf4\x9f\x8a\x30\x01\xcf\x8c\x23\x42\x95\xbc\x84\x17\x76\x72\xb2\x98\x69\x9b\xbe\xf4\x72\xc1\x88\x7d\x07\xf6\x12\x92\x46\xe4\x04\x33\xe9\x72\x29\x65\x59\xab\x2b\x69\x53\xf9\x04\x22\xac\x90\x03\xe4\x39\x34\x09\x16\x04\x5d\xf3\x3b\x8b\xc9\x39\x43\x37\x82\x2c\x89\xa8\x7f\xf1\x7a\x85\x11\xba\xe6\x97\x26\xe1\xc1\xf0\x6c\x02\x99\xcf\x03\xe9\x4d\x9b\x64\x5a\x6b\xa9\xbf\x27\x5b\xc7\x1f\xcc\xaa\x3c\x90\x6d\xed\x85\xad\x0f\x82\x6f\x51\x8c\x2d\x0f\x29\x3e\x1f\x5c\xf3\x07\xb2\x35\x4a\x94\x5f\x76\x7a\x30\x23\x03\xd4\xcf\x59\x4d\x96\x0e\x19\x7d\xf9\x44\xa5\x92\xff\x64\x0e\x55\xc2\xf3\x85\x2d\x90\xed\xe9\xd5\x0c\xcb\x91\x0f\x8c\xcc\x6d\x24\x4b\xe1\x9f\x30\xc4\x43\x6c\x84\x1b\x72\xc4\x6e\x7c\x74\xb3\x14\xa4\x10\x44\x82\x7e\x80\xf5\x88\x4e\x25\x12\x24\x33\x2c\x69\x4d\x0b\xdf\x35\xc5\xeb\xfb\x7c\x8e\x7e\xc4\x19\x4d\xab\xd1\x18\x8a\x35\xab\x07\x73\xbe\xfc\xa5\xc4\x99\xef\x1c\x35\xa5\x23\xf3\x82\xeb\x42\x6f\xd1\x2f\x25\xdd\xe0\x8c\x98\x28\xf1\x47\x9a\xa5\x09\x16\x3e\xa2\x5f\x72\xe1\x92\x49\x49\x9b\x17\x02\x20\x4c\x28\xc1\xac\x62\x85\x35\xe5\x68\x3d\xc9\x47\x83\xa8\xc0\x42\xd1\xa4\xcc\xb0\x40\x9a\x6f\xac\xb8\xf0\xe4\x7f\x08\xbd\xcf\xab\x63\x10\x80\x59\xdf\x65\xfe\xbb\xef\x36\xf7\x56\xad\xab\x52\xee\xde\xe9\x19\xfc\x41\xeb\x50\xa2\x17\xed\xe4\x73\x7c\xe9\xf8\x63\xc5\x52\x7c\xdc\xac\x81\x18\x6d\x09\x6a\x26\x53\x4f\xfa\xb2\xbe\x95\x6a\x1e\xe1\x23\x96\xbf\x6e\x1d\xf8\xa6\x99\xda\x04\x60\x4f\x76\xbc\xf6\x10\xda\x4d\xf6\xf3\x02\xc3\x3c\x96\x5c\x90\x0d\x11\xe8\x45\xca\xa1\x47\xb2\xa1\x89\x7a\x39\x47\xff\x37\x11\xdc\x64\x00\x21\x2b\x0c\x11\x5e\xe6\x48\x7b\x3a\xad\xa0\x67\x75\xc9\xeb\x57\xe8\x05\x74\x8a\x68\x9e\x93\x94\x62\x45\xb2\xed\xcb\x0a\xb4\x1e\x90\xeb\xe5\xf0\x76\xeb\x00\x63\x62\x87\x21\xb1\xc5\xd2\x6d\x0a\xa5\x36\xe9\x58\xd1\xc1\xcb\x49\x1c\xb7\xae\x39\x30\x95\xf6\xec\xb7\xb4\x06\x97\x9b\xc8\x32\xec\x60\xb2\xfb\x0f\x4d\xbb\x18\x09\xb2\x82\x73\x6b\xce\xe2\x01\x4e\x6d\xb0\x0c\xde\x67\x7b\x1c\xe8\xa0\xf7\x4f\x82\x14\x19\x4d\xf0\x1e\x7f\xe8\x8c\x3f\x5a\x42\x5a\x0c\xcc\x12\xb8\x37\x51\x4a\x8a\x8c\x6f\x2d\x84\xfc\x66\xf5\x57\x5e\xb2\x84\x88\xea\x99\xdd\x25\x19\x8a\xff\xe8\xa7\x2d\x2b\x6a\xdf\x93\xbc\xc8\xb0\xda\xa3\xab\xb6\x41\xbf\xfd\x2c\x88\xab\xcc\x1a\x3b\x31\x40\x0e\x6a\xc8\x37\x0c\xdb\x76\xbe\xb7\x96\x90\x72\xc2\xe4\x0c\xe2\x92\x20\xad\x1d\x2f\xb0\xdc\x9b\xd1\x90\x30\xe9\xb4\xea\xae\x83\xb0\xa3\xff\x28\xcc\x52\x2c\x52\xbb\x3d\xa7\xa7\xb2\x7a\xb9\x53\x6f\x59\x51\x35\x7f\xf8\x33\x28\x2d\x09\xcf\xf3\x92\x51\xb5\x3d\x87\x24\x8a\x74\x51\xea\xfb\xf2\x3c\xd5\xda\xea\x39\x2e\xa8\x56\x5e\x36\x84\x19\xbd\x20\x4f\xbf\x72\xfd\x76\xe9\x2b\x3e\xc9\x18\x92\xb0\x0d\xab\x2a\x47\x4e\x69\x7a\x51\x8f\xc0\x6e\x6d\x69\x73\x46\x95\x5a\xcd\xd6\xe2\x97\x39\xda\x39\x2e\x90\x54\xfa\x36\x18\xb0\xd0\xab\x35\x1c\x62\x03\xf4\x77\xca\xc9\xd6\x41\x8a\x16\x5b\x44\x9e\x14\x11\x9a\x6e\x14\xe7\x99\x49\xbd\xa2\x86\x72\x90\x6a\x7e\x2e\x88\x12\x94\x6c\x08\xc2\x62\x41\x95\xc0\x62\xdb\xd8\xcb\xfb\x35\xd9\x82\x2c\xa3\xaf\x82\x5f\x4a\x22\xb6\x60\x07\x18\x12\xb7\x6b\x26\x05\x37\xb0\xd8\x90\x14\x3d\x6a\xe1\xdf\x00\x6f\x41\xfd\x01\xaa\x91\x7b\xa4\xd2\xad\xe1\x96\x92\x88\xd9\xaa\xa4\x29\x39\x6f\x6c\xe8\xc8\xb4\xa7\x83\x7f\x96\x3d\x46\xf1\x1d\xe2\xb7\x6e\x0e\x73\x26\xad\xae\x9f\x12\x69\x62\xaf\xc8\x1a\x6f\x28\xaf\x32\x47\xd8\xe3\xda\xcd\x6b\x0f\x7b\x52\xf4\xe8\x67\x98\xa5\x33\x93\xee\x6b\xcc\x81\xb1\x79\x34\xaf\x6e\xc2\xcc\x20\xd5\xe3\xee\x2a\xbc\xba\xd1\x07\x4a\x40\x6c\x67\x6b\xfe\x83\x14\x43\x25\x2a\x65\x89\xb3\x6c\x8b\x4c\x72\x5b\x92\x5a\xc4\x53\xb6\x75\x72\x41\x8e\xf5\x97\xe0\x9e\xc4\xcc\x7d\x64\xa8\xc7\xda\xc2\x96\x63\x66\x3b\x37\xf6\x5c\x4d\xca\x94\x81\xcd\x65\x61\x33\x71\x4a\x90\xa1\xb4\xac\xd2\xdb\xe5\x82\x54\x60\xad\x0a\x5d\x60\x27\xf7\x4f\xf5\x4d\x7b\x66\x73\x77\xd6\x84\xd1\xc7\xaf\x5d\x03\x01\x69\x89\x69\xd6\xb2\xe2\x69\xf9\xdc\x26\x90\x34\x91\x02\x29\x52\x6b\xc1\xcb\xd5\xda\x26\x94\x1c\xd0\x9e\x8c\x2a\xd2\xd0\x9c\x4f\xae\x39\x23\x27\x67\x36\xb9\xa3\xe1\x5e\xe8\xc5\xc9\xc9\xcb\x33\x04\xf7\x20\x20\x58\xd1\x55\x7f\x3a\x26\xbb\xdc\x73\xdb\x13\x8c\x6e\xd1\x34\x62\xea\x8b\x69\x4d\x70\x9a\xe9\x9d\xb7\x33\x06\xe7\x50\xbf\xa6\x58\x08\xfe\x04\xcc\xc0\x25\xe5\xab\xc2\xbe\x3e\x32\xbd\x57\x95\xae\x6b\x23\x2c\xde\x3a\x5a\xeb\x97\x7a\xae\x79\x4a\x6e\xb8\x50\x67\xb0\xd3\xef\x39\x4e\xff\x8a\x33\x7d\xad\x6b\xba\x31\xa2\x36\x44\x7e\x59\x20\xd0\xa5\x65\x96\x90\x82\xb7\xb7\xd3\xc8\x88\x40\x37\xf9\x19\x23\xca\xe6\x47\x74\xbf\x9d\x7f\xb5\xa1\x42\x95\x38\x9b\xd1\x42\x9a\x83\x6a\x6d\x72\x7a\x2d\x68\x7f\x24\xaa\xf7\xd6\x71\x6c\xff\xea\x26\xcc\x24\xd7\x78\xde\xa0\x87\x1c\xa8\xa2\x3e\xbf\x36\x6f\xc3\x70\xb6\x5c\xc6\x53\x22\xab\xac\x8d\x66\x83\x1c\xae\x51\x9a\x28\xef\x42\x21\x25\xf0\x72\x49\x13\x8b\xbe\xa0\x15\x81\xcc\x21\xca\x64\x20\x53\xb4\x1e\x9e\xbb\x7b\x4c\xb4\x1b\x18\xa6\xbf\xaf\x97\xdf\xc4\xa9\x94\x16\x05\x25\x88\x2c\x38\x93\x74\xc8\x49\x06\x90\x49\x26\x4b\x61\xf2\xf6\xe2\x7a\x78\x58\x08\xba\xd1\x27\x46\xd9\x64\xe1\x2e\x9d\x2e\x95\x90\xad\x0d\xf5\x7b\x75\x6c\x94\x15\x79\xc2\x79\x61\x80\x73\xd5\x45\x9c\x71\x9c\xce\x16\x96\x0c\xad\x31\xdd\xcd\x49\x6b\xd2\xbd\x7d\x5a\xf6\x51\x4f\xd6\xa3\x1a\x79\x6c\xa5\x01\x92\x8b\x0f\x25\xe0\xe6\x74\x6f\x16\xec\x86\x67\x34\x09\x4b\x1e\xde\xf9\x26\x4a\x09\xe3\x7a\x5e\x10\x8c\x49\xa5\x13\x85\xed\x55\xda\xcf\xdc\x15\x47\x82\x97\x8a\x34\xa4\x1d\xbb\x85\x8a\xc3\xc6\xcd\x34\x9b\xce\x34\x6f\x73\x79\xa1\x1f\x69\xda\xc8\xe4\xdb\x7f\xd8\x4f\xde\x73\xc8\x1e\xed\x24\x17\xeb\x45\xce\x28\x61\x0a\x59\xb1\x4b\x9f\x11\x96\x22\xbc\xe1\x34\x35\x39\xea\x13\x3e\x70\xb9\xad\x79\x01\x44\xd7\x64\x47\xd0\x81\xe6\x56\x26\x1f\x82\xe6\x47\x8e\x6f\x9c\xa1\x45\xa9\x90\xa0\xf2\xa1\x7f\x01\x0a\xae\x8c\xa3\x33\xdb\x22\x9a\x5b\xe2\x4a\xab\x55\x90\x85\xc9\x7e\xbc\x9a\xa3\x13\xcb\x35\x4f\x10\x5f\xc8\xa4\x1c\x5c\xd5\xbe\x89\x6a\x09\x33\xc1\x36\x47\x29\xcc\x15\xe6\x04\x58\x34\xb8\xf7\x06\xd9\x83\x99\x8f\x95\x09\xd7\x78\x43\xd0\x8a\xf3\x14\xf1\x0d\x11\x38\xb3\xc7\xa3\x1e\xf0\x58\x06\x68\xf2\x90\xbe\x5d\x93\xe4\xc1\x5d\x02\x41\x84\xd9\xf1\xde\x6e\x02\x4a\x78\x22\xd1\x4f\xc0\x7c\x6e\x86\x52\x33\x38\x7c\x59\xc5\xe0\xf6\xa3\x52\xff\xad\xe3\x8b\x03\x50\x01\x17\x65\xe7\xac\x23\x4e\x9a\x2a\x28\x5a\xe0\xe4\x81\xb0\xb4\x4e\x49\x5e\x8b\x27\x6e\xa0\xfd\x84\xfe\x93\x66\xd2\x7a\x4f\x41\xb8\xae\x2f\x72\xf7\xa6\xcb\xcc\xd0\xf0\xdd\xd8\x31\xf4\x0f\x15\x88\xc7\x5e\xdf\xd6\xec\x6f\x04\x7f\x87\xbc\x95\x26\xf4\x71\xf7\x24\xf4\xf6\x78\xd9\xc9\x36\x9a\x1d\x25\xfd\x46\xd5\xc3\x64\xbd\xcf\x1a\x63\x0d\x95\x8a\x77\xe5\x17\xc7\xd7\xee\xe1\x6b\xad\xd9\x37\xff\x31\x2c\x21\xae\x88\xaa\x88\xa1\xda\xf1\xab\x9b\xb6\x23\xb9\x5d\xb0\x60\x80\xac\x9c\x3b\x36\x25\x05\x61\x29\x64\x00\x7c\x5c\x13\xe5\xea\x0f\x94\x2c\x25\x22\x03\xe9\x2c\xc9\x78\x99\xce\x6c\x7e\x71\xe1\x92\xfe\xf4\xf7\x6c\xc6\xb3\xb5\x59\xf1\x77\xd6\xcf\x90\x03\x86\x5f\x91\xbb\x14\xf5\x86\xda\x99\xf5\xd3\x6b\x43\x34\x76\x16\x45\xda\x90\xe8\x80\x77\xb5\x06\xea\x22\xc6\xfa\x07\x6a\x66\x62\x50\xc2\x66\x39\x7a\xc3\x94\xbd\xfc\xa7\x39\xcd\x3b\xe0\x9e\xb7\x5a\x68\x0f\x93\xc6\x4e\x9b\x1e\x52\x93\x90\xaa\x82\xa3\xba\xd0\xde\x0c\x2b\x4d\xd0\x67\xb0\xc5\xc3\x94\x22\x88\x1e\x68\x52\x0b\x36\x4e\x71\xe8\x58\xa5\x96\x74\x32\xdc\x2d\xe4\xc7\x37\x3d\x37\x14\xa0\x6a\xd8\xf6\xea\xb8\xba\x91\x4d\x3d\xc6\xdb\x65\xd8\x26\x36\x37\xcb\x47\xd3\xf3\x93\x28\xc7\xb9\xc9\x44\x34\x83\xe3\x6a\x34\x7a\x57\x4c\xa2\xe1\x3b\x6f\x0f\x6b\xb6\xa4\x82\x3c\xe2\x2c\xeb\xf5\xa1\x1f\x5f\x16\x83\x43\x18\x46\x5d\x5a\x42\x76\xf2\x3d\xbc\x56\x0b\xa1\xc6\x56\x68\xa9\xac\x21\x98\x7f\xc9\xca\x50\x0c\x26\xc0\x72\x5e\xb8\xd0\x2c\x26\x42\xc2\xf0\xf5\xd5\x00\x3a\x3a\x73\x73\x1e\x04\x91\x16\x83\x77\x69\x98\x7f\xde\x8f\xa3\xde\x83\x33\xd4\x58\x12\x80\x84\x08\xe5\xc0\xaf\x5e\xc3\x52\xdd\xe0\x2c\x56\x89\xae\xd0\xbb\xeb\xbb\x9f\xdf\x5f\xfc\xf5\xf2\xfd\x1c\x5d\x64\x99\xa5\x87\x0a\x52\x6b\xd7\xeb\xae\x20\x89\xcf\xc3\xab\x7b\x04\x71\xae\x64\xf4\x97\xd2\x8c\xd5\x1d\xfd\x1c\x17\x15\xc2\xeb\x54\x6b\xd7\xa7\x1e\x6e\x60\x1a\x65\xe8\xd2\x8a\xe8\xb0\x63\x95\x95\xd0\x65\xaa\xd0\x5c\xa2\x2a\xdc\xd0\xd8\x5b\x5f\xbf\xb2\xaa\xad\xc2\x59\x20\xa1\xa3\x70\xbf\x25\xf3\x08\x9c\xa6\xed\x9f\x49\xd8\x50\x6e\x23\x4e\x40\xdf\x84\x5b\xd8\x64\xd9\xaa\xc7\xe8\x9f\x9c\x3b\xc5\x70\xb9\xea\x41\xff\x73\x25\x59\xee\xe8\x1d\x73\xf4\x83\xb1\xb3\xf9\x9c\xbc\xce\x0a\xd7\x76\xca\xed\x56\xf3\xa9\xb1\xd4\x95\xe8\x19\xe6\x33\x77\x62\x2c\xa0\xf7\xc0\x71\xa1\xb5\xf2\x4c\x92\x68\xeb\x99\x69\x0d\x1b\x9a\x4b\xab\x49\x81\x02\x71\xa9\xf8\xac\x8e\xb1\x34\x6b\x4e\x43\x80\x11\xce\x2f\xa3\x45\x57\xbe\xa3\xa0\x5a\x53\x95\x16\x9b\xc2\x13\xfc\x84\xa5\xf8\x19\xe4\x98\x7a\x6f\xa1\x3a\x92\x9e\xc6\x70\x6a\xc1\xd0\xc4\x65\xe1\x2e\x52\x7f\x06\xc2\x0e\x38\x96\xb0\x10\x2a\x47\x27\xd1\x17\xce\x31\xe6\xe2\x8f\xd0\xf0\x64\xe0\x7b\xb6\xd7\x13\x21\x49\x00\x26\x7f\xb1\x5c\x52\x66\x90\x9f\x4b\xba\x0a\xba\xcf\x3b\xdf\xac\x6f\x37\x0b\xbc\xad\x9d\x86\xfd\xf7\x1a\xa4\xf8\x33\xe9\x56\xb0\xed\xed\x39\x19\xe2\x8c\x04\xd8\xaf\x24\xed\xcd\xc4\xbd\x30\x34\x78\x3d\xc8\xb7\xf0\xdc\xe0\xc6\x5f\xdd\xa0\x05\xd6\x84\x15\x3a\xa1\xd0\x49\xa1\xa8\x4c\x8a\x7b\x53\x6c\xbf\xba\x63\x5a\x70\xf9\x15\xbd\xa0\x14\x64\x97\xe0\xea\xc6\xd9\x8a\xcc\x24\xa5\xa2\xc9\xc3\x16\x3e\x62\x12\xe8\x58\x57\x62\x29\xfd\x80\xdf\x05\x41\xff\xf2\x0a\xfd\xb7\xff\x86\xfe\xf2\xcf\x7f\xfe\xd3\x1f\x5e\xbd\x7a\xb1\xe4\x02\xbd\x46\x29\xde\xbe\xd4\x0c\xd2\x41\x57\xed\x32\xa2\x7f\xfe\x67\x6f\x8f\x27\x6e\x90\x27\x35\x17\xae\xf3\x3b\xbe\xfa\xb3\xfd\xc6\xef\xd1\x9a\x97\x42\xbe\xf4\x09\x2e\xe1\xa7\x3e\x36\x3c\xf1\x79\x90\xe1\xa1\xb8\xe3\xf6\x25\x6f\xd3\x64\x29\x22\x72\x08\x48\x59\x9b\x0c\x51\xd5\x35\x52\x5f\xdd\x01\x89\x8c\x15\xaf\x3d\x20\x35\xda\xcc\x9c\x11\x83\x35\xab\x9d\x19\x67\x0d\x67\x49\xed\x14\x19\x74\x02\xb7\xa5\x84\x93\x66\x6f\x27\x2d\x79\xae\xd6\xf8\x48\x90\xfb\xe4\xa4\x1a\xca\x49\x25\x25\x40\x5d\x0d\x6b\x99\xd5\x9b\x06\x36\xdc\x86\xeb\x10\x12\x34\xd7\x9a\xe9\x20\x00\x85\x37\xcc\xba\x95\xf8\x68\x96\xa4\x5a\xfa\x86\xf9\xcc\x16\xff\x1c\x48\x60\xd1\x48\x0d\xb8\x63\xba\x5b\x6c\xad\x2b\x11\x32\x54\xbb\xc2\x4f\x26\x1d\x54\xfd\xe9\x7e\x76\x0b\x34\x05\x42\x54\xcb\x6f\xea\xbc\x73\x8c\x23\xab\x12\x21\xf3\x07\xbf\x50\x85\x6d\xed\x4c\xd2\x9a\x77\x51\x2e\x32\x2a\xd7\x06\x6c\x85\xc1\x58\xc6\x97\x8d\x67\x04\x1e\xb4\xda\xaa\x35\xd6\xba\x80\x54\xe0\xe9\xd7\xd4\x76\xe2\x68\xe8\x04\x2d\x4a\x9a\x19\x7b\x51\xb5\xaf\x0e\xd3\x69\xb6\xb6\x7f\xac\xb5\xc0\xbb\x21\x62\x6b\x3d\x2c\x20\xee\x82\x35\xbf\xa2\xb0\xa4\x26\xf3\x93\x26\x59\xf6\x27\xda\xaa\x07\x55\x09\xbe\x90\xfb\x0e\x8c\x4a\x00\xba\xe8\x76\xc7\xa0\x17\xb4\x9f\xf5\xd6\x36\x18\xe7\xdf\x2a\x85\x20\x4c\x19\x1b\xc5\x4b\xcf\xd0\x3f\x89\x06\x6d\x37\x9a\xb2\xd5\xac\x7a\x6e\x56\xe9\xd1\xe0\x36\x1d\x69\xd1\x1a\x03\xcb\xea\x88\xe9\x6e\x4b\x84\xef\xef\x1a\x37\x7d\x26\x77\x6f\x7a\xa8\x0f\x61\xac\x48\x60\x03\xeb\x2c\x44\x32\x74\x67\x27\xfa\x0f\x80\xcb\xe8\x64\xd0\x6d\xe6\xfc\xb6\x7e\xd8\x55\x4f\x94\xf6\x9b\xcd\x8e\x2a\x1e\xdb\x1b\x5b\xbe\xd8\x36\x70\x64\x05\x4f\x41\x09\x26\x92\xb4\xb8\x73\x81\xa5\x85\x67\x61\xe8\x7d\x66\xdc\x99\xdd\x87\xb0\x39\x34\xc7\x34\x9e\x04\x59\xb6\x40\x22\x2e\x56\xf2\x3f\x88\x92\x0a\x27\x0f\xe7\xcd\x6e\xcf\x17\x19\x5f\x9c\x6f\x5e\xcd\x5f\x7f\x33\x7f\x75\x5e\x3c\xac\xce\x71\x41\x25\x3c\xe2\x9e\xd8\xbc\x86\x28\xa1\x6f\xce\x81\x4c\x7e\x6e\x4c\x79\xbe\xe2\x5f\xbd\xff\xbf\x5e\xcf\xde\xbf\xfe\xc3\x9f\xc6\x60\x48\x52\x06\xe5\x61\xc3\xac\x53\xef\xae\xef\xe0\xe1\xb6\x1b\x5a\x96\xa6\x9e\x29\xce\x4c\x36\x76\xd9\x28\xab\xd4\xcf\x5f\xcd\x31\x6d\xac\xde\xe7\x73\x95\xa6\x96\xaa\xc3\x32\x39\x37\xf6\xdb\xe5\xd3\x7b\x57\x0e\x46\x04\x78\x87\x48\x8b\x0b\xe7\xc7\x0f\x0b\xd2\xb9\xa9\x9e\x1f\x40\x04\x8c\xda\x85\xcf\xb6\x09\x5c\xac\x30\xa3\x7f\x0f\xdf\x88\x8f\x8d\x17\x1c\xa2\xa9\xd9\x49\xb3\xb8\xd7\x40\x0c\xc4\x97\x32\x7f\x41\x18\x79\xfc\x2b\x54\x7b\x89\xa6\x43\x78\xd7\x95\x8a\x21\x4f\x05\xb5\x08\xd4\xf4\x99\x74\x59\x0a\x7a\x77\x71\x1d\x46\x93\x3f\xdc\x5e\xe9\x67\xdb\xf4\xf8\xc3\xed\x15\xba\xb3\xec\xe1\x22\x83\x5b\x1d\xc0\xe8\xc0\x45\x86\xc4\x44\x0b\x92\x74\x16\xc0\x2f\x80\x4d\x0c\xaa\x1a\x54\xca\x92\x88\x5b\xd2\x59\xd0\xa1\x7d\x74\xdd\x93\x66\xa1\x20\x32\x0a\x12\x64\xc1\x6d\xd3\xdc\x54\xf3\x64\xd7\x74\xbd\x40\xda\x82\x0e\x26\x1e\x6d\xe7\xe4\xb9\xb9\x32\x29\x66\xed\x11\x32\x89\x77\x9d\x6f\xbc\x82\xaf\x9a\xd2\xd9\xd5\x70\x07\x9c\x7f\x57\xcb\x56\x9f\x1d\x79\x9e\x6b\xad\xe4\x7b\xca\xd2\x46\x79\x88\xc1\x43\x9a\x68\xe2\xbe\xb8\xb9\x32\x23\x9c\xa3\x6f\xb9\x80\xd8\x3f\x6e\x1d\xa1\x54\xa4\xb3\x02\x43\x92\x10\x7d\x49\x9e\x55\xa3\xe8\x57\x1e\x1a\xe9\xcb\xc7\x1e\x91\x07\xda\x5f\xe7\xb7\x1d\x55\x46\xeb\xe2\xbe\xca\xda\x29\x7b\x57\x77\xec\x68\x86\xdc\x16\xfb\x49\x5f\x76\x82\x60\x0f\x3c\x9a\x21\xc3\xdd\x0c\xd6\xad\xf3\x0f\x3d\x99\x56\x06\x8e\x5f\xdf\x87\x66\xf5\xb1\x0c\x95\x8a\x4b\x49\xc4\x7b\x2a\xd5\x1d\x49\x04\x51\x1d\xe7\x79\x2f\x9f\x57\xeb\x69\x73\xa6\x25\xfc\xd3\x01\xc0\x1d\x2b\xac\xc4\xce\xbd\xc9\x01\x20\x0e\xd2\x16\x63\x29\xa1\xec\x7d\x8c\x1c\xdd\xb7\xe5\x3b\x75\x42\x1a\x81\xce\x76\x63\x55\x74\xfd\x04\xbe\xd1\xca\x0a\x79\x3c\xb7\xba\xcd\x4c\x4f\x71\x66\x1d\x3f\xe7\x20\xfa\x9d\x7f\xc5\x7a\x59\xbb\x29\x3c\x74\x91\xa6\xf6\xc8\x96\x92\x2c\xcb\xcc\x38\x9b\xe4\x5c\x73\xad\x1f\x89\x90\x94\xb3\x33\xa0\x8e\x33\x54\xd2\xf4\x5f\xbb\x64\xda\x01\xc2\xeb\xdd\xd9\x8d\xe9\x7a\x70\x3f\xed\xe7\x5b\xbb\x65\x2f\x23\x13\x89\xb2\xcf\x27\x7a\x86\xd2\x45\x92\x33\x37\x86\xdf\x79\x86\x6b\x00\xe1\xcd\x57\xfb\xf6\x9f\x2f\x0c\x62\xff\x3b\xc2\x48\xb7\x08\xdb\x9a\xdf\xfe\xe3\x8e\x05\xe4\x5c\x2a\x24\x48\xa2\xd5\xb9\x55\xfd\x57\xf7\xc2\xde\x1e\x54\xe0\x50\xc7\x33\xe6\xe8\x4a\x69\x0e\x6d\x40\x9d\x69\xa5\x63\xbb\xbf\x9f\xca\x46\xbf\x67\x3d\x40\x55\x2a\x5d\xfd\x7d\x7d\xf1\xe7\xa5\x89\x1d\x70\xe6\x20\xcd\xfa\xef\x3a\xd5\xcc\xa1\x08\xb3\x7e\x63\x63\xb1\xc6\x72\x38\xda\xe7\x46\x3f\xb1\x63\x06\x76\x76\x05\xbd\x49\xa4\x4d\x29\xdd\x3a\x70\x2f\xb1\x0a\x82\xa5\x67\xc3\x6e\xe1\x11\x83\xb8\xaf\x6b\x8c\x63\xca\xcc\xe0\xa5\x09\x98\x52\x44\x10\xa9\x9a\x3e\xb8\xe0\x51\x74\xd0\xdf\xce\x4f\xee\xdc\x20\xab\x82\xbe\xae\x7f\x03\x62\x34\x0c\xbb\xf5\x67\x13\x52\x45\xd2\x46\x79\x25\xa9\xb8\xc0\x2b\x62\x7f\xf9\xff\x02\x00\x00\xff\xff\x3b\x20\xe9\x46\x40\x69\x03\x00") func kubedbCom_pgbouncersYamlBytes() ([]byte, error) { return bindataRead( @@ -684,12 +662,12 @@ func kubedbCom_pgbouncersYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_pgbouncers.yaml", size: 71983, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_pgbouncers.yaml", size: 223552, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_postgresesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x5f\x8f\xdc\xb8\xb2\xdf\xfb\x7e\x0a\x3d\xe4\x21\x09\x30\x9b\x9c\xbb\x17\x07\x89\x5f\x02\x1f\xdb\xbb\xd7\x39\xde\xf5\xc0\x63\xef\x09\x70\x70\x03\x70\x24\x4e\x37\x33\x6a\x51\x4b\x52\xf3\x67\x83\x7c\xf7\xa0\xa5\x51\xff\x99\x69\xb1\x7e\x45\x51\xdd\xea\x31\xeb\xc9\x9e\x96\x48\xaa\x58\xac\x2a\x16\x8b\xbf\x12\xb5\xfa\x5d\x1a\xab\x74\xf5\x26\x13\xb5\x92\x0f\x4e\x56\xeb\xff\xd9\x1f\x6f\xff\x9b\xfd\x51\xe9\xff\x72\xf7\x97\x6b\xe9\xc4\x5f\x7e\xb8\x55\x55\xf1\x26\x7b\xd7\x58\xa7\x57\x5f\xa4\xd5\x8d\xc9\xe5\x7b\x79\xa3\x2a\xe5\x94\xae\x7e\x58\x49\x27\x0a\xe1\xc4\x9b\x1f\xb2\x2c\x37\x52\xac\xff\xf8\x55\xad\xa4\x75\x62\x55\xbf\xc9\xaa\xa6\x2c\x7f\xc8\xb2\x52\x5c\xcb\xd2\xae\x9f\xc9\x32\x51\xd7\x6f\xb2\xdb\xe6\x5a\x16\xd7\x3f\x64\x59\x25\x56\xf2\x4d\x56\x6b\xeb\x16\x46\x5a\x69\x7f\xec\x7e\xf9\x31\xd7\xab\x1f\x6c\x2d\xf3\xf5\x3b\xa2\x28\xda\xce\x44\x79\x69\x54\xe5\xa4\x79\xa7\xcb\x66\x55\xb5\xed\x5d\x64\xff\xf3\xea\xf3\x6f\x97\xc2\x2d\xdf\x64\x3f\xae\x5f\xf8\xf1\xae\xfb\xac\xb6\xaf\xae\xf5\xdf\x77\xfe\xe2\x1e\x6b\xf9\x26\xb3\xce\xa8\x6a\xf1\xe2\x75\x27\x5c\x63\x7f\xac\x97\xc2\xca\x9d\xd7\xaf\xda\x3f\x93\x6f\xf7\x9c\xf8\xf1\x05\x1b\x76\xda\x7a\xbb\x90\x3b\x0d\x15\xc2\xad\xff\xbb\x30\xba\xd9\xf0\xa4\xfd\xf2\xee\xf1\x27\x86\xe5\xc2\xc9\x85\x36\xaa\xff\xff\xc5\xfa\x3d\x61\x9d\x36\xf2\xe9\xff\x1b\x6e\xae\xff\x23\xea\xda\xe6\xba\xe8\x7f\x13\xed\x04\x64\x59\x37\x8f\x97\x4f\x8c\x6e\xff\x54\x2a\xeb\xfe\xbe\xf7\xe7\x4f\xca\xba\xf6\xa7\xba\x6c\x8c\x28\x77\x27\xa6\xfd\xb3\x5d\x6a\xe3\x7e\xdb\x0e\xed\x22\xab\x17\xdd\x0f\xaa\x5a\x34\xa5\x30\xdb\x37\x7e\xc8\xb2\x7a\xfd\xa2\xb9\x93\xdf\xaa\xdb\x4a\xdf\x57\x3f\x2b\x59\x16\xf6\x4d\x76\x23\xca\x96\xbf\x36\xd7\x6b\x26\xb4\xcd\xd5\x22\x97\xc5\xfa\x6f\xcd\xb5\x79\x12\xb2\xa7\x2e\xba\x49\x79\x93\xfd\xdf\xff\xf7\x43\x96\xdd\x89\x52\x15\x2d\x73\xbb\x1f\x75\x2d\xab\xb7\x97\x1f\x7f\xff\xe9\x2a\x5f\xca\x95\xe8\xfe\xb8\xee\x58\xd7\xd2\xb8\x0d\xc7\x3a\xb1\xdb\x08\xfc\xe6\x6f\x2f\x26\xb4\xa3\x96\x55\xd4\x43\xbb\x82\xdf\xd3\xa1\x7e\x37\x73\xbf\xf7\x97\x2c\x5b\x89\x87\x4f\xb2\x5a\xac\x45\xe7\xaf\x3f\x3d\xfb\xad\x16\xce\x49\x53\xbd\xc9\xfe\xf7\x3f\xc5\xc5\x9f\xff\xfe\x1f\xff\x79\x21\x2e\xfe\xfc\xaf\x17\xff\xfd\xdf\xff\xf3\x3f\x9f\xfe\xf1\x9f\xfe\xc7\x7f\x78\xf6\xce\xc1\x41\xf6\x7f\xd6\xd7\xff\x47\xe6\x6e\xf3\xe7\x7e\x61\x51\xe3\x16\x26\x5f\xaa\x3b\x69\x9e\x8f\x7d\xe8\xf9\xb6\x6d\xa7\x8d\x58\xbc\xf8\x5c\xea\xb5\xb6\xbb\x3f\x1b\x73\xf0\x45\xe4\xe5\x35\xe5\xba\x72\x42\x55\x2f\x07\xbc\x4b\x03\x8c\xda\xa7\x95\x78\x78\xa7\xab\x4a\xe6\x6b\x59\xf3\xf4\x98\x65\x37\xda\xac\x84\x7b\x93\xa9\xca\xfd\xf5\x5f\xc9\x6e\xd7\xea\x6b\x21\xcd\xe0\x73\xb5\x91\x37\xea\x61\xe4\xf0\x0f\xce\xf9\x2e\x5d\xff\xcb\x18\x2e\x5f\x37\xf9\xad\x74\x89\xc5\x5e\x16\x2f\xf2\xc1\x4f\x4a\x3c\x8e\xc4\xe3\x52\xe7\xa2\x1c\xc3\x65\x71\x6f\x3f\x94\xc2\x3a\x95\xff\xad\xd4\xf9\xed\xd5\xda\xa4\xfa\x06\x8d\xb4\xb9\xa6\x1b\xfb\x75\x3d\x76\xef\x33\xe0\x0c\xb6\xdd\x0a\xe3\x94\x7b\x66\xb9\x0e\xf6\xbb\x9d\xc4\x9f\xfe\x05\xea\x9d\x9a\xc8\x35\x19\x29\x8a\xcf\x55\xf9\x88\x7d\xcf\xb5\xd6\xa5\x14\x95\xf7\xd9\xbb\xb5\xff\x26\x3f\xbe\x8f\xc4\x21\x23\xff\x68\x94\x91\x85\xaf\xb9\x8b\x4d\xa7\xa4\x50\x7a\x24\x2e\xeb\xad\xd4\x7b\x65\x6f\x63\x48\x4a\x2e\xf2\xa5\xaa\x16\xbf\xea\x22\x9e\xb8\x14\xca\xde\xfe\x76\xc0\xe3\x18\xd5\xe0\xb7\x2f\x1f\xa3\xb5\x17\x79\x79\x3c\x77\xd7\x46\x35\x16\x5b\xd8\x31\xd9\xec\xa7\x8c\x7c\xe8\xdb\x97\x8f\x51\xe4\xf7\x67\x55\x46\xd1\x74\xf1\x75\x83\x95\xb9\x91\x2e\xaa\xfc\xda\xa5\x30\x32\x62\x8b\xd8\x9c\x6e\x3f\xc4\xff\x58\x3f\xb8\xb1\xf3\x9a\xcb\x7a\x79\xe3\x9d\x2e\x74\x52\x57\xba\x52\x4e\x1b\xe2\xa9\x2c\x53\x4e\xae\xc8\x87\x18\xf3\xd4\x3f\x2a\x8c\x11\x8f\x84\x45\x74\xcb\xd9\x2e\xf9\x5e\x86\xa9\x35\xc6\x1a\x64\xd7\xe4\x17\x79\x43\xb5\x88\x4e\x72\x36\xb0\x2f\x1d\x35\x4a\x50\x54\xd7\xd4\x58\xff\x36\x8d\xd1\x2f\xb6\x1e\x7b\xa9\x1e\xbd\xce\x54\x55\xf8\x87\x7e\x22\x37\x71\x2a\x39\x7e\x45\x42\x77\xd6\x8e\x67\xae\xab\x1b\xb5\xf8\x55\xd4\x31\x64\xaf\x90\x37\xa2\x29\x1d\xe2\x78\x4e\xb3\xab\x80\x8c\x07\x68\x61\x38\xe2\x97\x65\xb7\x92\x5c\x22\x1d\x31\x24\x30\x6b\xcd\x26\xcd\xcb\x8e\x38\x1c\xdd\x1d\x0a\xc2\xd7\x8e\x10\x03\xb9\xdb\x32\xf8\x91\x88\xc0\x77\x74\xb1\x66\x33\xf0\xd4\x7a\xa0\xa0\x07\x01\xac\x6f\xdc\x83\x40\xb4\x10\xcc\x1a\x5d\x77\xc7\x13\xb1\x34\x2f\xa6\x0e\xac\x8a\xa2\x08\xcc\xa1\x08\xef\xe1\x11\x1d\x7f\x6f\x57\xe9\x42\x5e\x36\xd7\xa5\xb2\xcb\xab\xd7\x66\x8c\xa6\x8a\xab\xbc\x75\xce\xa8\xeb\xc6\xd1\xdf\xbf\x7b\xb0\x86\xf3\x2c\x3e\x2f\xc0\x4d\x72\x2b\xa9\x63\x97\x4d\xa1\xef\xab\x7b\x61\x8a\xb7\x97\xde\x80\x46\xb2\xa3\x24\xdd\x28\x59\x16\xc0\x7a\x0c\x69\x3b\x1b\x3c\xb1\xf3\x13\xd3\x64\x67\xfd\x67\x5c\xc2\xf6\x32\xa8\x17\xdc\x6e\x66\xad\xa8\x6f\xc6\xc4\x30\xe1\x90\x79\xcc\xbe\x0f\x3f\x65\xcd\xf1\xee\x14\xf9\xe7\x89\x85\x74\x73\xe4\x88\xc4\x97\xb6\x14\x20\xa7\x85\xba\x53\x56\x93\x96\x7a\x54\x1f\x3d\xd7\x66\xb4\x14\xfa\x21\xc5\x5f\x09\x1c\x67\xf6\x34\x6e\x2a\xd4\xa0\x5c\xd5\xee\xf1\xbd\x8a\x12\x91\x58\xc9\x42\x35\xab\x78\x41\x2b\xf5\xa7\xfc\xa4\x56\xca\x7b\x90\xc9\x68\x11\xe2\xc7\x4d\x3e\xc3\xd8\x4c\xd9\xbc\x9a\xc3\x3b\x27\xcc\x42\xba\x7f\xfc\xe3\xb7\x19\xc7\x87\xef\xef\x55\x31\xdb\xe1\x61\x52\x5c\xca\x87\xdf\x5b\x77\xfe\xf5\x6f\xf2\xba\xed\xf3\xd9\xec\x56\x52\xa4\x75\x56\x1b\xba\x9b\x52\xe7\xb7\x71\x02\xf2\x6d\x5e\x65\xe4\xc3\xc7\xa7\x36\xbf\x7d\x8b\x16\x75\x86\xb8\xb2\xc8\xe5\xe5\x7a\xf3\x64\x9d\xac\x5c\xac\x6c\x85\xd7\x95\xd7\x52\x17\x51\x27\xfa\x34\x99\x03\xdd\x47\x8c\x96\x16\xe5\xbe\xc8\x5a\x47\x59\x43\xca\xc8\xdc\x69\x03\xf2\x01\x62\x6c\xad\xad\x8a\xdc\xe4\x9d\x42\x02\x0b\x51\xcf\x81\xb6\xdf\x31\x7a\xba\xca\xc6\x3a\x69\xe2\x9c\xf6\xcb\xaa\xa8\xb5\xaa\x1c\x69\x50\x18\xeb\x7a\xc6\xa7\xf3\xd8\x5c\x6d\x98\xe2\x5f\x7c\xfe\x5d\x21\x34\x97\x4b\x6d\x1d\x15\x7d\x42\xa7\x32\x2a\xe3\x5d\x3c\x55\x0f\xaa\xb2\x08\xdc\x54\x36\xd2\xb1\x48\xbe\x14\xf5\xdb\xc6\x2d\xdf\x2b\x9b\xeb\x3b\x89\xea\x1e\xc4\xd7\xeb\x9b\xbe\x92\x16\xd7\x41\x48\xc3\x91\xcd\x73\x7b\xc5\x47\x38\x0d\x85\xb6\xf0\x56\xff\x88\xa5\x75\x9f\x66\xfb\x63\xb5\x56\x85\x82\x0e\x5a\xcd\x7f\xb3\x5e\x6b\xe3\x44\x39\xdb\x8d\x6b\xda\xf8\x00\x7b\xc3\x2e\x3c\x72\xd9\xce\xe4\x51\xd5\xa7\xfa\xc3\xc7\xe9\x8b\xb5\x54\x7b\x7f\xdf\x1d\xf8\x58\x35\xbc\xd2\x4d\x45\x5a\x35\xe8\xeb\xab\x38\x4e\xce\xac\x5d\x92\xf5\x2a\x30\xf1\xe2\x33\x51\xac\xed\xc5\xd3\x98\xc6\x4a\x42\xbd\xd9\x84\x76\xd1\xac\x77\xa5\x50\xde\x00\x33\x6c\xa0\xd7\x0d\xbd\x82\x0d\xdc\xe6\x3b\x46\x73\x7a\xa9\x9d\xae\xe6\xbf\xe9\x2f\x8e\x9c\x7e\xb7\xee\x70\x34\x6f\xb5\x71\xf7\xda\x44\x8c\xc8\xce\x3e\xf7\xf3\xac\x53\x25\x6b\xa3\xd7\xbf\xfb\xbb\x3b\x9b\x14\x8f\xbd\xfb\xd0\xc3\x34\x49\x92\x07\x94\x74\x1a\xda\x38\x63\xd4\x81\x8f\x87\x8c\xa8\x23\x38\x4b\x74\x4b\x01\x07\xee\x1d\xe1\x19\x19\x5b\xe2\xe7\x66\x3c\x1f\x28\x9e\xa5\xb1\x25\x3c\x5f\xe3\x79\x6f\x6c\xb6\xf0\x12\x05\x3a\xc2\xb2\x4e\x77\x9f\x87\x0e\xf6\xb7\xc4\x4c\xb5\xd9\x7d\x89\xde\x5d\x6d\x09\xdd\xc0\xec\xb6\xcf\x62\x30\x9a\xb1\xfa\xbc\x13\xc4\x72\xec\xbf\x01\xf3\x0a\x4c\xcc\xdb\xd2\xeb\xd1\x35\xbc\x4c\xba\xf1\xfd\x65\x81\xd9\x75\x5b\x0a\x56\x75\x59\x58\xc6\x5d\x94\x9e\x43\x34\x4a\x16\x90\x8f\xb7\xa5\x20\x75\x91\x25\x8b\x30\x44\x61\x59\x7d\x3b\x83\x1d\xb1\x60\x02\x33\xfd\xb6\x34\x6a\xcd\xb0\xb3\xff\x22\xf5\xcb\xcf\x08\x8c\xd2\x71\xf8\x52\x65\xe5\x0b\x6e\x29\x70\xa5\x86\x39\x29\x73\x74\x3a\x98\x9d\x74\x71\xdb\xef\xcd\x50\xa7\x4d\xc1\x21\x4a\x9b\x82\xb4\x29\x98\x68\x53\x60\xa5\xb9\x53\xb9\x7c\x9b\xe7\xba\xa9\xdc\x57\x7d\x2b\x41\x77\x35\xe0\xba\x49\x53\x28\x59\x4d\x9a\xfb\x9e\x65\xf2\xa1\x56\xa6\x05\xb0\xbb\x92\xb9\xae\xe8\x24\xd5\x2d\xa1\x08\x4d\x87\xc6\xc8\x5b\xd5\xbc\xf5\x3c\xf9\x0d\x00\x78\x35\xb2\x64\x2b\x7a\xb2\x3e\x88\x0a\xd2\xc5\xf2\xc6\x06\x38\xff\x68\xf4\xf5\xa3\x8b\x12\x89\xee\xd0\x27\xe7\x1b\x88\x36\x72\xa1\xac\x8b\x98\xfc\xe5\x64\x25\xaa\x58\x57\x12\xa2\x02\x59\xf4\x51\xf7\x23\xa7\xa5\x75\xfc\x05\x02\xf3\x63\xa5\xd6\x5c\x47\x09\xc8\xc7\xce\x73\x59\x0d\xe0\x55\x06\xb5\x76\x2b\x1f\xd7\xcf\x44\x6b\xef\x0c\xc0\x78\xb4\x8e\x95\xe9\x90\x32\x4c\xe6\x88\x9c\xd3\x2e\x10\xef\x13\xb1\xb0\x75\x6c\x2e\x4a\xf9\xf1\xf3\x0c\x95\xc4\x42\x38\x79\x2f\xe2\x19\xa1\xda\x68\xd7\xc1\x72\xbe\xd7\x2b\xa1\xe2\xe5\xc4\xa5\x05\x44\x2e\x20\x6b\xcb\x0f\x95\xb8\x2e\x69\x17\x94\xc1\xa4\x0e\xf6\x38\x2a\x90\xe3\x53\x9b\x97\x31\xf5\xab\x7d\xb4\x4e\xc6\xbb\xe1\xd9\xf9\x05\x47\xc7\xd6\x7b\x5a\x8d\x7e\x4f\xbb\x17\x5b\xff\x53\x2d\x3f\x46\xeb\x2d\x32\x1a\x76\x36\xc9\x06\x09\x97\xe9\x0c\xf1\x0e\x5e\x0f\x2e\x53\x6c\x28\xa5\x09\x00\x45\x31\x8d\xd0\xe9\x6e\x1d\x25\x7b\x75\xf6\xc9\x62\xaf\xce\x45\x88\x6e\xd7\x76\x9b\x6c\xab\x5d\x1c\x55\x18\x9b\xeb\x28\xc9\xd8\x77\xb6\x5e\x4a\x23\x67\x9b\x05\xb9\x71\x98\x4a\x95\x3f\x46\x4b\x5d\x7c\xd6\xee\x04\x42\x81\xe4\x42\x4c\x90\x67\x49\x24\x34\x00\xa2\x45\x3e\x62\xa4\x1d\x74\x8b\x10\x21\x69\x8c\xd7\x12\x00\x4c\x21\x87\x68\x7f\x1a\x33\xc0\x48\x85\x1a\xfa\xfb\x86\xa3\x1b\x8a\x52\x79\xa1\x0b\xba\xfa\x33\x83\xa2\xb0\xbe\x5b\x57\x57\xa4\x85\x26\x3b\xb3\xf7\xea\x66\x94\xa0\xc5\x2b\x1d\x73\x8c\xda\x17\x9e\x9f\x07\x7f\xba\x16\xf9\x6d\x53\x5f\xe5\x4b\x59\x34\x2f\x81\xa9\x7d\x3c\x1a\xac\xcb\x43\x31\x96\x64\x2a\xc9\x09\xac\x80\x09\x72\x34\x46\x7b\xea\xfe\x89\x23\x86\xea\x9d\xb0\xc3\xf5\x76\x28\xee\xf9\x55\xcb\x77\xc2\xba\xdc\xe8\xea\xc3\x43\x6d\x86\xef\xca\x7a\x5b\x1f\x28\xc3\x93\x58\xbf\xfb\xf3\x00\xeb\x07\xcb\xeb\x90\x75\xbc\x18\x65\x75\x10\xdd\x4c\x7b\x89\x98\x62\x46\xe0\x46\xd0\x10\x00\xb6\xf1\x47\x76\x5a\xd8\x2e\x0b\xb9\x8e\x03\x70\x81\x72\x0f\xc9\x2b\x38\xa4\x4d\x27\xcb\xe3\x40\xd6\x18\x2b\x8b\x03\x4d\x3b\x52\x0e\x07\x6e\x88\x28\x83\x03\xb5\x13\x49\x9c\xa9\xb2\x37\xa0\x9f\x17\x47\x40\x69\xb9\x22\x4a\xdc\x50\xe5\x6d\x30\xb9\xf3\x95\xdc\x40\xe4\x2e\xde\x7a\xc5\xa2\x4e\xd0\x1c\x41\xe5\x6b\xa2\xac\x7d\xb2\x64\x0d\x5d\xae\x86\x9c\x27\x7f\x99\x1a\x64\x92\x90\x13\x71\x20\x40\xcd\x0a\xb0\xf8\x03\x97\x54\x54\xf7\xa8\x4b\x11\x2d\x3f\x83\xc9\x1e\x12\xd8\x43\xa3\x3d\x11\x31\xf7\xa1\xb0\x17\x75\x50\x1e\x65\xcd\x10\x47\xdf\xf4\x7a\xf0\x96\x93\x39\xa2\x7b\x14\x5b\xfe\xce\x54\x68\xce\xc6\xd1\x22\x6f\xe6\x22\x1c\x06\x8f\x1b\xe3\x7a\xc5\xa4\x72\x06\xb4\x37\x7e\x90\x00\x1d\x2b\x32\xce\x10\xb0\xe3\x44\xde\x51\x22\xe7\x18\x11\x3b\x42\x64\x1c\x06\x21\x47\x87\xf4\xb1\x21\x70\x64\x08\x9e\xbe\x20\x16\x97\xd2\x0a\xd0\xe7\x23\x67\x8d\x88\xc6\xa3\x97\xea\x30\x26\x19\xb4\x48\x49\xf4\xde\x63\xee\x3b\xb8\x25\x59\xe6\xaa\xe8\x63\xef\xcd\xb1\xb2\x2b\x7c\x10\xe3\x78\xdf\x0c\x6c\xd2\x7c\x88\xbc\x64\x0f\xc0\x0d\xee\x64\x93\xba\xb1\xc3\xf7\x57\x79\x29\x34\xdc\x4b\xdd\xcc\x4c\x1a\xe6\xc5\xed\xc9\x52\x58\xf0\xeb\xd8\x8c\x0c\x95\x57\x66\xd7\x43\x2e\x4b\xb3\xa1\x61\xb8\x17\xa2\x99\xf2\xc6\xba\xf4\xcc\x6c\x9b\x77\xb1\x79\x32\x51\x86\xaf\x2b\xc3\x92\x8c\x3a\x74\xc7\x73\xd7\xc8\x86\xa8\x12\x26\x50\x54\x88\x2c\x5d\x82\x05\x3c\x90\x92\x25\x31\xce\xbe\x87\xcb\x94\x1c\x71\xcf\x4f\x20\x9d\xce\xf5\x30\x04\x2b\x41\x72\xdc\x18\x20\x59\x72\xe4\x98\xc3\xa1\xa5\x8f\x2c\x2f\x72\x7e\x1b\x13\xa0\x8c\xc8\x29\xbd\xef\x14\x61\x6b\x69\xea\x4d\x08\x51\x0e\x04\x12\x6b\xac\x0c\x08\x76\x68\x88\x95\xff\x88\x61\x51\xe0\x92\x1f\xaf\xfb\xcc\x9d\x2e\xeb\x31\xb3\x93\x51\x6f\x09\x0f\x7a\xd6\xfd\xa5\x3b\x20\x79\x47\x4a\x76\x80\x4c\x43\x4a\x75\x80\x4d\xd1\x25\x3a\xa2\xc4\xe1\xc9\xb2\x1c\xf4\x14\x50\xe5\x38\x90\x49\x80\xca\x70\x80\x6b\x6e\x46\xa7\x91\x34\xff\xa9\x52\x1b\xde\x9d\x0a\x39\x37\x54\x79\x0d\x64\x6a\xa2\x30\xd4\x8d\x57\xa7\x80\x2a\x19\xc1\x29\x6f\xe9\x0c\x28\x69\x87\x53\x32\x03\xf3\x73\x18\xa5\x32\xb0\x06\x23\x99\x35\xb8\x34\x06\xd6\x9a\xbf\x24\x06\xd6\x06\x5c\x0a\x63\x7e\x1b\x43\xa0\xec\xc5\x71\xf7\x72\xc9\x51\xef\x1e\x02\x4b\x59\x44\x51\x5d\xc3\xe5\x2b\x7c\xa5\x2b\xa0\xb2\x15\xe4\xc7\x92\xe5\x2a\xc8\x2f\xf4\x94\xa9\x38\x9a\x85\x89\x29\xb5\x54\x39\x8a\xa9\xad\x15\x51\x7e\x82\x9c\x51\x56\xd9\x09\xc8\xb8\x21\xe5\x26\x66\xe6\x59\x51\xa5\x25\x68\x2e\x32\x4a\x4a\x1c\x73\x53\x49\x94\x90\x88\x23\x9c\xc3\x65\x23\x68\xbe\x41\xe5\x22\xce\x32\xb7\xeb\x6c\xd2\xa3\xc8\x12\x10\xb3\x3d\x8a\x06\xca\x3d\x44\x3d\x8c\x66\x94\x78\xe0\x1d\x10\x32\x60\x59\x59\x08\xae\x21\xe8\xad\x4c\xe4\x56\xe6\x61\x62\x47\x5c\xc4\xd6\x50\xb4\x56\xce\xa9\xf2\x96\xb8\x28\xad\x01\x2c\xe0\xa2\xb3\x72\x90\x59\x59\xa8\xac\x8c\x63\xff\xdd\x17\x50\x34\x56\x1c\x89\x95\xc9\x44\x1e\x02\x2b\xa6\xb1\xf7\x9f\x86\x78\xc2\x2a\xc5\x70\xbe\x3a\x21\xa4\xec\x42\x28\x72\x74\x78\xb9\x85\x20\x55\x94\x8d\x29\xb3\x10\xd8\x63\x18\x36\x73\x48\x69\x05\xf6\xf2\xce\x92\x76\xce\x46\x96\x4f\x08\x15\xfc\x51\x65\x13\x82\x65\x3f\xb0\x5c\x42\x70\x7f\xa1\x65\x12\x8e\xba\xd4\x02\x4a\x23\x04\xac\x34\xbe\x13\x30\x17\xc3\xce\x68\x1c\x2d\x7f\x70\xbe\xc6\x31\x39\xcc\xc9\x61\x26\x5f\x48\x0e\x73\x47\x41\x65\x0a\x98\xa9\xdd\xac\xf2\x04\x4c\x36\x06\x96\x25\xe0\x97\x24\xe0\xae\xc4\x19\xe0\x25\xc6\x45\x42\x8c\x96\x54\x0b\xdc\xe6\xf6\x96\x1a\x20\x07\x42\x94\x18\x40\xa4\x97\x2c\x2d\x70\xe4\xe0\x25\x52\x4a\x00\x3b\xcc\x27\x4b\x08\x40\xcd\x44\xb8\xa0\x8c\x94\x0c\x88\x94\x26\xe3\x2d\x13\x40\x94\x08\x20\xa5\xcd\x53\x1a\xe0\x88\x71\x72\xb2\x14\x00\xd4\x0a\x50\x02\x00\x6a\x67\x86\x40\x07\x04\x14\xf5\xd1\xcf\x29\xcf\xf8\x74\xfd\x28\xe8\x04\x3e\xe8\xfe\xf1\xd8\x05\x04\x5c\xff\x11\x17\x2e\x00\xcf\x8f\x1d\x2d\x32\x60\xf9\x93\xb0\xef\x3c\x46\x21\xd0\x42\x90\xfb\x20\x23\x30\xa8\x7d\x68\xf8\x20\xc4\x3e\xd6\x16\x09\xad\xcf\xb0\xe7\x47\xc1\xfb\xf1\xc3\xe8\xd3\x10\xfa\x04\x7c\x3e\xad\x3f\xbc\x51\x94\xd9\x1e\xd0\x26\xfc\x8a\xc3\xdd\x27\xfc\x8a\x9d\xc7\xfc\x8e\x54\x2c\xe8\x89\x88\x40\x63\xf4\x6a\xa5\x20\xed\xcf\x32\xa1\xe5\xac\xcd\x6a\x34\x5b\xc1\x82\xa7\x8f\x22\x4c\x7e\x48\x7a\xb2\x0b\x08\x8a\xfe\x88\x02\xc9\x80\x9e\xe7\xb7\x17\x71\x82\x23\xd4\x01\x40\x73\xb7\x3c\x87\xba\x84\x78\x78\x7f\xae\x75\xf1\x55\xae\xea\x52\x1c\x8e\x4d\x21\x98\xd4\x46\x97\xe5\xb8\x2b\x82\xa2\xaa\xb4\x13\xb3\xbe\x6f\x4a\x67\x3d\x4b\x27\x0a\xe1\xc4\xf7\xce\x07\x5b\xcb\x51\x77\xf1\xc5\xcd\x8d\xaa\x94\xf3\xda\x22\xd8\x80\xe8\x42\xbe\x05\xda\xe3\xb4\x99\x3d\xa1\x44\x4b\x63\x64\xf1\xbe\x59\x73\xf4\x09\x05\x5e\x55\x8b\x8f\x8b\x4a\x6f\xfe\xfc\xe1\x41\xe6\x0d\x75\x5b\xb3\x27\xc6\x09\x24\xff\xfc\xb1\x1b\x2f\xaf\x1c\x73\x58\x86\xc2\x4a\xb8\x7c\xb9\x45\x18\x67\x66\x37\xb0\x2b\xcf\x87\x0f\xb4\xa3\x80\x0a\xf4\xd9\x98\xc4\x86\xac\x75\x56\xa5\x11\x8e\x9f\x4d\x31\xba\xe3\x3b\x51\x36\x21\x4c\x0a\x9c\x97\x8e\x46\x8d\x98\x7b\x30\xba\x4b\x21\x49\x1d\x59\x40\x7d\xfb\xee\x9d\x7e\x52\x99\x2f\x06\xa5\x5e\x65\xc1\x7c\x69\x57\x67\x9b\xae\x94\x16\xe6\x4b\x4a\x0b\x93\xfd\x7a\x5a\x98\x87\x5f\xe4\xf1\x25\xa0\xb3\x7b\xa9\x16\x4b\x20\x63\xaa\xa7\xb0\x5c\x1f\x7e\xa6\x0f\x6f\x72\x2f\x76\x3c\x13\xf0\x85\xee\xc3\xa1\x87\x99\x6c\xe5\xcc\x5c\xff\x99\xf1\xfc\x3f\xae\xb2\x5c\xbb\xb6\x57\xb2\x6c\x91\x26\xbe\x4a\x83\x6b\x01\xa6\xca\x48\x6e\xe0\x30\x25\x6b\x03\x53\xb2\x36\x3e\x4a\x6e\xe0\x00\xa5\x85\x09\x51\x5a\x98\xd4\x3b\xe7\xb0\x30\x03\x3a\xe3\x75\xc3\x61\xf9\xc5\x4b\x0f\x03\xf6\xa1\x18\x25\xac\x81\x47\x6b\x5d\xa4\x18\xde\x1e\x1b\xd6\xb3\x31\xb5\x07\x57\x8a\x6b\x59\xf6\xd3\xcf\x5b\xa3\xe1\x0a\x7f\x9c\xdb\x98\x8d\xd1\x84\x63\xac\x54\x16\x6e\xa9\xb2\xf1\x2a\x78\x9c\xc5\x8a\x32\x80\x70\xcb\x95\x8d\xb3\x5e\x59\x8c\xd1\x8f\xb1\x62\xd9\x08\x4b\x96\x05\x5a\xb3\x6c\x8c\x45\xcb\xc6\x58\xb5\x6c\x14\xaf\xda\xd5\xfd\x69\xad\x57\x02\x66\x9b\x7f\xe6\x75\x98\x46\x49\xcb\x48\x77\x80\xfd\x62\xd5\xe7\x0f\x1c\xc3\x4f\x0f\xe6\x4c\x98\x44\x38\x5d\xeb\x52\x2f\x1e\xff\xce\x55\x9c\x81\x77\x75\xb9\x6b\xf4\x62\x77\x84\x29\x94\x47\xd1\xc5\x73\x07\xe5\x3b\x8f\xe7\x4d\xea\x0b\x06\x3a\x67\x29\x96\x37\x4c\x29\x64\x00\x53\x0a\x19\xf8\xe8\x14\xb1\xbc\x10\xa7\x2a\x86\x43\x35\xd2\x65\x60\x32\x29\xe0\xa5\x10\x07\x8a\xbd\x32\x82\xb8\xc0\x9f\xed\x20\x87\x89\x3d\x36\xae\xd5\xe7\x3a\x49\x93\x19\x71\x56\x3c\xa9\x72\x2a\xc5\x94\x52\x4c\x09\xa3\x14\x53\x3a\xc5\x00\x52\x4c\x29\xc5\x94\x68\x4a\x31\xa5\x14\x53\xda\x79\x2b\xc5\x94\x3a\x4a\x31\xa5\x14\x53\x4a\x31\xa5\x08\x03\xed\x28\xc5\x94\x20\x4a\x31\x25\xea\x9d\x14\x53\x02\x87\x9c\x62\x4a\x29\xa6\x74\x36\x31\x25\xe8\x31\x61\x16\x33\x82\x9e\x92\xd5\xdd\xc8\xc1\xe0\xf6\x14\x83\xab\x64\x48\x55\x6b\xa1\xe2\xb7\xf8\xb3\xd1\x40\x08\x8c\x5d\xd5\xbd\xab\x06\xf1\x77\xf9\x08\x43\x44\xf3\x5d\x15\x96\x83\x12\xa0\x5b\x70\xc4\xd1\xc0\x0e\x78\xc8\xa3\x19\x8c\x47\xb1\x4b\x5c\x35\x84\x1a\x78\xa6\xfa\xe1\xe1\xe4\xf3\x65\x21\x04\x1b\x3f\x60\xc6\x02\xf0\xf0\x27\x37\x1c\x3c\xf4\x7b\xe6\xbc\x85\xc1\xbd\xf3\xe7\x2f\x10\xe2\x3d\x60\x0a\xd9\xb0\xee\x01\x7d\xf0\xa1\xdc\x27\x97\x12\x16\x70\x3b\x53\x48\x3a\xfc\x9b\xa4\xec\xbd\xf4\xdd\x28\x7b\xf8\x61\x14\x76\xab\x1a\x2e\x3f\xc7\xea\x11\x71\x11\x5b\xb0\xcb\xcb\xa6\x2c\xaf\x5a\x99\x3e\x1e\x44\x5b\x64\x7f\x31\x26\x4b\x2a\xe5\xde\xf5\xea\xf9\x78\x0c\xa1\xb6\x0e\x70\x97\x1d\xb1\x56\x2c\xbe\x59\xca\xf5\x6a\x25\x2a\x60\xc1\x9d\x7a\xa0\xc4\xde\x87\x39\x48\xf6\xc5\x5d\x86\x76\x65\xeb\x56\x70\x67\x34\xa6\x75\x6c\x97\xd4\x51\x48\xcc\x35\x68\xc7\x14\xde\x5d\x16\x16\xde\x0d\x8e\x52\xf1\x8c\xeb\xc8\xce\xf8\x86\x76\xb7\x43\x8e\xb9\xed\x28\xac\x90\x0e\x2f\x90\x1a\x14\xe6\x4b\xb5\xc9\xa2\xf6\x38\xf3\xda\x64\xa9\x30\xd7\x54\xfd\xa5\xc2\x5c\x3b\xc4\xdf\xeb\x75\x94\xcc\xd4\x33\x4a\x66\x2a\xe4\x15\xe6\x6d\x6e\x6a\xe7\x18\x30\x06\x96\xcb\x8d\xf9\x8d\x93\xb9\xdd\x1b\xb7\x92\xb1\x58\x43\x16\x2a\x77\xe1\x04\x2d\x9a\x90\x05\x13\xb2\x58\xd8\x42\x5c\x1b\x79\xa3\x1e\x26\xdb\x80\x40\xe8\xd2\xfb\xe3\x49\x33\xc8\x3f\x1a\x8d\xbe\xfc\xc9\x42\x40\xbb\x0d\x42\x9c\xdc\x04\xa7\x3a\x48\xe7\xa8\x6d\x97\xea\x46\xe6\x8f\x79\x09\x8c\x98\x27\x5f\xb5\xb6\xee\xca\x09\x03\x26\xe6\xf1\x85\x57\x3e\x0c\x63\xef\xc6\x68\x3f\xe3\x84\x79\x76\x69\xfe\xc9\xa3\x01\xf6\x7a\xe9\x5c\xfd\x0b\x52\xb6\xb4\xa7\x30\x86\x2f\xb5\x65\xf4\x91\x85\x33\x6e\xfd\x3d\xff\x26\x45\x41\x84\x36\x5f\xd2\xd1\xf3\xf1\x42\xbc\xd3\x2c\x4a\x5e\xdc\x91\x7b\x0d\xcf\x4e\x03\xfd\xbd\xfd\x97\xda\x4f\x0c\x5a\xa5\x47\xcb\x4d\xe3\x96\x91\x0d\x66\x7f\xad\x51\x3d\xdd\x93\xa8\x1e\x3f\xb3\x36\x82\x6d\xae\x13\x3b\x87\xfa\xf9\xbb\x01\x82\xf5\x70\x71\xdb\x5c\x4b\x53\x49\x27\xed\x85\xaa\xdc\x85\x36\x17\x5d\x33\x6f\x32\x67\x58\x22\x60\xf3\xa5\xe4\x2e\xc6\xa3\x65\xdb\xaf\xe7\x70\x4a\x0b\xe0\xf2\xfa\x4a\xe7\xb7\xaf\xc8\x06\x24\xa9\x07\x68\x7e\xa2\xc8\x7c\xa1\x36\xf2\xca\x69\x6f\x2d\xd9\xdd\x87\x93\x1b\x9a\xdc\xd0\xe4\x86\xbe\xa4\xe4\x86\x12\x94\xdc\xd0\xe7\xfd\x24\x83\xbc\x43\xc9\x0d\x1d\x1c\x55\x72\x43\x93\xd4\x53\x34\x3f\x51\x9c\x26\x39\x32\xcb\x4a\x75\x27\x2b\x69\xed\xa5\xd1\xd7\xd1\xa3\xb2\xb8\xb7\x1a\x92\xcb\xcd\xf4\x52\xe7\x79\x51\x8c\x7b\xc3\x41\xa8\xb2\x31\xf2\xeb\xd2\x48\xbb\xd4\x25\xf8\xf9\xfc\x3b\xe8\xdc\xe5\xcb\xf2\x94\xf9\x93\xcd\xd3\x8e\x01\x13\x17\xe4\x19\xb3\x25\x2a\xd4\x23\x3e\x6a\xca\x40\x90\x17\x7c\xd4\x2c\x14\xa6\xe7\xcb\xf7\x7a\x47\xdc\x77\xe5\x78\xbb\x3c\x4f\x37\x80\xc5\x3c\x5b\xcf\xb4\xf3\xa1\x36\x3e\xd0\xbe\x47\xb2\xed\x5c\x6f\x76\xf2\x2b\x33\xb0\xdb\xc0\x14\x4a\x55\x29\xa7\x44\xf9\x5e\x96\xe2\xf1\x4a\xe6\xba\x42\x2b\x92\x4c\x6f\x2c\x6a\x69\x94\x2e\x66\x36\x28\xdb\xe4\xb9\xb4\x76\x76\x96\x95\xb9\x03\x99\xa1\x6d\x4d\x5a\xe8\x19\xcd\x45\x45\x38\xb5\x92\xba\x71\xb3\x5a\x88\x8c\x4f\x88\x7e\xf9\x7d\xcd\xe7\x98\xb7\x81\x02\x12\xe9\xba\x44\xe7\x4b\xc6\x8a\x09\xc1\x97\xe2\x2f\x99\xb5\x92\xf8\x78\x39\x59\xf6\xd9\xba\xf9\xf9\x7d\xf4\xa4\xf7\x89\x6a\xa3\x9d\xce\x35\x9c\xa6\xc6\xec\x80\x97\xc2\xba\x27\x79\x88\xe6\x98\x26\x99\xcd\x48\x51\xa8\x14\x8d\x38\x48\x29\x1a\x91\xa2\x11\x5e\x4a\xd1\x88\xb1\xbd\xa5\x68\x44\xda\x07\x80\x94\xa2\x11\x29\x1a\x91\xa2\x11\x24\xcd\xd0\xb6\x26\x2d\xf4\x8c\xe6\xa2\x22\xce\x3c\x1a\xd1\x5f\x8d\x85\x6a\x59\x70\x56\x45\xa9\x56\x0a\x09\x4b\x64\x23\x51\x42\xd9\x12\x18\x70\xa9\x52\xda\xf3\xff\x12\xc6\xc3\x56\xe6\x8d\x51\xee\xf1\x9d\xae\x9c\x7c\x00\xd4\x0e\x4f\x32\x44\x59\xea\xfb\x4b\xa3\xee\x54\x29\x17\xf2\x83\xcd\x45\x29\x50\xc0\x6b\xfe\x9d\xb7\x5c\xd4\xe2\x5a\x95\x0a\x9f\x89\x00\x80\xbd\xe2\xec\xb7\xd0\x59\x56\x18\x34\xff\x37\x9b\xed\x57\xb0\xb3\x9e\x9f\x84\x10\x9c\x3e\xae\xec\xd5\x46\xe7\xbf\xea\xa6\x02\x2d\x37\x3b\x56\x26\x8a\xcf\x55\xf9\xf8\x45\x6b\xf7\xb3\x2a\xa5\x7d\xb4\x4e\x82\x48\x3c\xdc\x2f\x31\x4d\xf5\xd6\xfe\x62\x74\x03\x8a\xc8\x8e\x85\xfb\xeb\xbf\x4e\xe2\xd2\xb5\x23\xfa\x4d\x57\xeb\xaf\x9f\xf0\x9b\xbf\x59\x09\x82\x69\x4c\xff\xc9\x56\x7e\x52\x55\xf3\xf0\xb9\xbd\x29\x3c\x1d\xec\xbf\xbc\x93\x6c\x20\x3e\x1e\x02\xa4\x46\x6e\xd2\x8e\xe8\xa0\x7d\x65\xca\x0e\x1a\x58\x2a\x82\x3a\x60\xaa\xb1\x7b\x55\x15\xfa\xde\x4e\x2c\x17\x8b\x95\x15\xef\x8c\x2c\x64\xb5\xde\x12\x5f\xd5\x9c\x1b\x1d\x01\x2c\x7e\xd9\xdd\xe4\xe8\xa7\x9b\x05\x3f\x71\x4f\x93\xf9\x6d\x4e\x18\xd7\xd4\xe9\x14\xe2\x05\xcd\xd1\xf9\x48\xa7\x10\x00\xa5\x53\x88\x74\x0a\xb1\xf7\x42\x3a\x85\x40\xe8\x3b\x88\xff\xa5\x53\x08\x9a\xd2\x29\xc4\xac\x2c\x6b\x3a\x85\xf0\xd2\x39\x6a\xa1\xb9\xa8\x88\x33\x3f\x85\xb0\xae\x50\x40\xfc\x97\x13\xc1\x69\x9b\xfc\x5c\x21\xc8\xa4\x9c\x66\x9d\x34\x2b\x55\xb5\xf1\xea\x5f\xa5\xb5\x62\x21\x31\x94\x5d\x86\x88\x1e\xe8\x22\x3e\xa4\x99\xa3\xeb\x9c\xf3\x18\x73\xa7\xcb\x66\x25\xdf\xcb\x3b\x05\x1d\x26\x4d\x96\x8d\x5a\xb4\x23\xe0\x40\x1f\xb3\xb5\xc7\x84\x09\x96\xbc\xfc\xc7\xed\xb7\x42\x8f\x9f\x16\xf1\xb3\x13\x90\x36\x1c\x7e\x4a\xf9\x58\xad\x07\x30\xa9\x78\x74\x3d\x18\x5d\x8b\x05\xe3\x5c\x6b\x5e\x72\xb8\x3d\x5d\xe0\x75\xc0\xc1\xa2\xb4\xcd\xf5\xa4\xf3\xf0\xd4\xfe\x87\x87\x1a\x8e\xd5\x4e\xba\x5a\x37\x92\x77\x06\x8b\xf5\x5e\x9b\x5b\x55\x2d\xde\x2b\x80\x75\x30\xd3\xe6\x58\xd3\x06\x82\xf6\x44\x75\x0c\x0c\xe7\xc9\x51\x5a\x68\xe4\x95\x7f\x6d\x83\x15\x75\x65\x46\xc8\x42\x4f\x6d\xe0\xa8\x0b\x4b\xf0\x19\x31\x4d\x2e\x1b\x39\x7b\x2e\xfe\x05\x13\x7e\x2c\x93\x39\x4f\x61\x71\x4c\x7e\x14\x33\x30\xaa\x18\x10\xc1\x0c\xea\x29\x04\x39\x83\x15\xbb\xe4\x46\x2e\x03\xe2\x96\xdc\xa8\x25\x27\x66\xc9\xbf\x27\xc4\x88\x14\xb0\xe2\x04\x61\x51\x82\xa0\x18\x41\x94\x08\x01\x2f\x4a\x39\xa9\x03\x02\x06\x1f\x78\x2e\x05\x27\xa6\x35\x2b\xdd\x9a\x24\xb4\xa5\x53\x8b\x10\xfc\x28\x08\x51\x99\x5c\xab\xc1\x57\x92\x6b\xb5\xdb\x78\x72\xad\x92\x6b\x95\x5c\xab\x5d\x3a\x2f\xc3\x95\x5c\xab\x5d\x9a\x95\x6e\x4d\x12\xda\xd2\xa9\x45\x88\x15\x26\x23\x1e\x83\x01\x17\x51\x41\x44\x7c\x2f\x8e\x50\x33\x7c\x2e\x86\x1d\x67\x0a\x0e\x6e\x27\xe0\x69\xe4\xa6\x09\x72\x4e\x75\xf1\xc5\x04\x7a\x79\x9c\x09\x43\x35\x10\x6b\x0a\x98\x5e\x1d\x43\x12\xf8\xde\xdc\xe4\x55\xf3\x99\x1e\xdc\xe4\xf9\x4f\xb0\xd7\xc6\xf1\xd8\xb8\x89\x10\x0c\x4f\x0d\xf5\xd2\x58\x8c\x43\x6d\x1f\x6c\xf7\xf8\x36\x8f\x6d\xef\x46\xdb\x3a\xdc\x13\x63\x8c\x0c\x15\x3f\xc8\x74\xc2\x62\x14\x90\x6c\x37\x8d\xca\x65\xa5\xd6\x4d\x33\x04\x6e\x22\xdd\x34\xa3\x80\xfd\xe0\x93\x5b\x9f\xef\x70\xed\x9f\x66\x91\xf2\xd2\xdd\xa6\x10\x4b\x68\xa8\x95\x2e\xe4\x95\x2c\x65\xee\xfc\x15\xb9\xf9\xb7\xc6\xc1\x49\x86\x46\x59\x1b\xa5\x8d\xf2\xe7\x83\xa1\x2c\xc4\xd8\xd7\xf7\xf8\xae\x14\xd6\x52\x97\xad\xa0\x4f\xc5\x21\xd8\xd2\xfe\x24\xed\x4f\xd2\xfe\x24\x4b\xfb\x13\xef\xa3\x69\x7f\xf2\x8a\x7c\x94\xb4\x3f\x49\xfb\x93\x09\x47\x91\xf6\x27\x33\x5e\xfb\x69\x7f\xe2\x19\x2a\x04\xfe\x85\x4a\x2d\x06\xf8\x15\x06\x90\xc5\xb9\xd8\x82\xce\x11\x0a\xec\x35\x97\x11\x43\x8f\xad\x0d\x5d\xd1\x94\x34\x84\x05\x34\x3e\x06\x10\x18\x2a\x25\x37\x18\x8a\x10\x07\x4c\x07\x57\x41\x38\x8a\xd1\x84\xfd\x83\x98\x45\xf8\x7d\x0a\x18\xa7\x68\x9a\x8f\xe2\xa1\x12\x71\x6c\x20\x8c\x44\xc4\x32\x29\x28\xfa\x10\xab\xd1\xf6\xe1\xd8\x8d\xa2\x28\x43\x53\x68\x47\xdb\xd4\x75\x29\x57\xb2\x72\xa2\x6c\x57\x0c\x39\x5f\xe0\x5e\x95\x07\x93\xc5\x71\x2f\xd0\xad\x95\x7d\xb4\xb9\x2b\x63\x7d\x0f\x6f\xdf\x8d\xef\xb9\x99\x6e\x12\x63\xaf\xcd\x5b\x2d\xf0\x1e\x1b\xdc\x5f\xa3\x7b\x6b\x76\x9e\x03\x3d\xf1\x3c\x9c\x2c\xce\xc4\x86\x61\x63\xb1\x26\x22\x1c\x0f\x8b\x37\xdf\x5c\x0c\xac\x53\x39\x3a\xd2\xdc\xa9\x5c\xbe\xcd\x73\xdd\x54\x2e\x8a\xb7\xe3\x74\x29\x8d\x20\x65\x03\xd0\x0b\xb8\xe8\xc8\x9b\x1b\x99\x03\x7b\x32\x06\x97\x6f\x65\xdc\x9b\xe2\xeb\x4f\x11\xc4\x01\x06\xbb\xd1\x2d\xaf\x61\xc8\x82\xe9\x0c\x07\xa8\x3b\xe1\xcf\x8b\x76\x3d\x91\x68\xc8\xfb\x73\xad\x8b\xdf\xdb\x1b\xd7\xef\x4a\xa1\x56\x43\x2a\x89\x92\x54\xd1\x06\x58\x7e\xd5\xc5\xb0\x28\x13\xeb\x01\xe0\x1a\xc5\x88\x42\x38\x71\xd5\x6e\x54\x87\xba\x41\x16\x9c\xa8\x15\xe9\xfa\x43\x53\x7c\xab\xfc\xc7\x38\x50\x23\x94\x23\x00\x34\x42\x99\xe6\x8b\x76\xa4\x83\x3f\x7a\xac\x35\x29\xc0\x64\xe0\x00\x99\x10\x3a\x60\x70\xda\x73\x51\x24\x40\x70\xca\x11\x92\x8f\x58\xe2\xe8\x19\x99\xa4\x95\x70\x79\x7b\x85\x5e\x5a\x7b\x54\xcb\x78\x16\x66\xac\xb5\x1c\x31\xd1\x2c\xf8\x9b\x4e\xc0\xef\x45\xef\xdd\xdf\x4a\x7f\x3b\x17\x1b\x26\x1e\xc7\xfc\x3d\x49\xdf\x27\x71\x2d\xfd\xdb\xb5\x79\xaf\x42\xa7\x8d\x58\x48\x32\xd7\x81\x1c\x52\x0f\xa0\x52\x8c\x6d\x62\xc4\x28\xbc\x5f\x6b\xe4\xe1\x33\x0b\x6a\xd1\x37\x66\x30\xca\x33\x66\x38\xf6\xa7\x90\xc1\x5c\x37\xbe\xa3\x1c\x92\xc3\xb2\x2a\x6a\xad\x86\x11\xdf\xc9\x06\x6a\x23\x6f\xd4\x43\xf0\xeb\x46\x2e\x3c\x90\x33\xa3\xd8\xd9\xc9\xf1\x95\xcc\x8d\x1c\xdc\x70\x79\x3b\x78\x6a\xe1\xeb\x40\xac\xcc\xff\xee\xbd\xba\x09\x12\xae\x4d\x8d\xc8\xd3\xcc\x88\x87\xa5\x83\x3f\xe5\xba\xba\x51\x8b\xc3\x1e\xaf\xef\x73\xc5\xbd\xfd\x50\x0a\xeb\x54\xfe\xb7\x52\xe7\xb7\x57\x4e\x9b\x83\x8c\xa6\x58\x76\x63\x87\xa6\x08\xf8\xe0\x2c\xab\x85\x71\xca\x07\x7c\x84\x9c\x77\xd1\xfb\x37\x0a\xa0\x88\x0e\xa0\x77\xda\xf0\xe3\xfb\xc0\x2f\xf5\x99\xd5\x8b\x4d\xe3\xdc\x65\x26\xfe\x6c\x8c\x7c\xaf\xec\x6d\x90\xb0\x8b\x7c\xa9\xaa\xc5\x28\x1b\x51\x28\x7b\x3b\xca\x4e\xad\x1b\xf8\xf6\xe5\x63\xf0\xfb\x23\xc5\xcf\xb7\x3d\x03\xd4\xe7\x38\xa1\xf2\xcb\x44\xcf\xda\xc1\x1f\xbf\x7d\xf9\x18\x24\x2f\x3f\xab\xc3\x67\x1a\x94\xbc\x8c\x5f\x43\xd6\x6b\x0e\x32\x84\xe7\x76\x29\xcc\x18\x9f\xc4\xcf\xf3\xed\x00\x0f\xff\xdc\x77\xce\xe5\x7b\x2e\xeb\xe5\xcd\x41\xb6\x52\x4c\x5f\xe9\x4a\x39\x3d\x9c\x00\x38\x7d\x40\xc5\x97\x58\x36\xf9\x12\xe9\x65\x66\x48\x66\xa1\x41\x74\x4d\x7c\x91\x83\x59\x2a\xc8\x46\x33\x42\x0c\x86\xf4\xfe\x7d\x67\x78\xa3\xe4\xba\x97\x22\xb6\xdc\xaa\xaa\x38\x3c\xa4\x89\xdd\x82\x58\x72\x73\x06\x93\x3e\x4b\xc7\xa2\xf3\x2a\x7f\x15\x07\x03\xa0\x14\xe7\x0a\x79\x23\x9a\xd2\xf9\x1c\x8b\x38\x5e\x9d\x57\xf9\x11\x9a\x11\x0b\x2e\x91\x81\x25\x30\x36\xb0\xf2\xf0\xa2\x23\x3c\xaf\x0b\x3d\xad\xa0\x33\x82\xa1\xc1\xd3\x01\x21\x7f\x30\xe8\xa2\x1d\x08\x61\xa1\x80\xa8\xc9\xb0\x85\xf2\xad\x52\xf2\x13\x75\xdd\x05\x83\x42\x35\x8d\x7f\x19\x59\x15\xb4\x80\x8c\xba\x1b\xb1\x07\x1d\xa9\x7b\x2b\x5d\xc8\xcb\xe6\xba\x54\x76\x79\x75\x2e\x4a\x34\xd6\xfe\xee\xad\x73\x46\x5d\x37\x6e\xf8\x7b\x78\xe1\xc3\xf1\xdf\x46\x6c\x12\x5a\x49\xe1\x8a\x65\xa1\xef\xab\x7b\x61\x8a\xb7\x97\x07\x37\x5e\xdf\x91\x7e\xbf\x51\xb2\x2c\x3c\xf2\xcd\x69\x2b\xeb\xce\x0d\x7f\x97\xc6\x42\x40\xce\x8c\xf0\x7d\x3b\xcc\xc8\xd8\xf1\x68\xa0\x7f\xd3\x37\x60\x4a\xc8\x38\xfe\x19\xdb\xc1\xed\x41\xe6\xcf\x91\x85\x66\x13\x75\xc4\xd2\x68\x18\x72\x53\xa8\x3b\x65\x23\x1f\x63\xf5\x5c\x38\x81\x28\xf6\x5d\x8f\x97\x44\xc4\xa9\x99\xd6\x6d\xf1\x36\x20\x57\xb5\x7b\x1c\xc0\xd3\x26\x23\x06\xb2\x50\xcd\x60\x65\x57\x7a\xb3\xac\xfe\x94\x9f\xd4\x4a\x85\x1e\x4a\x78\xbf\xeb\x26\x28\xaf\x64\xa4\x3f\x53\x36\xb3\x0f\x2e\x3b\x61\x16\xd2\xfd\xe3\x1f\xbf\x9d\x30\xce\x73\x7f\xaf\x86\x33\xab\xa6\xee\xde\x2f\x35\xa5\x7c\xe8\xd2\x93\xce\xcf\x99\xd6\xfe\xfc\xd1\x63\x7b\x93\xdf\x51\x64\x65\x0a\xc7\xf9\xa6\xd4\xf9\x6d\x58\x40\xac\x10\x4e\xd8\x91\xc1\xef\xa7\x36\xbe\x7d\x0b\x8e\x16\x79\xbf\x6e\x91\xcb\xcb\xb5\xf3\x6a\x9d\xac\x5c\xe8\xa9\xd2\x79\x9c\x07\xd6\xc5\xa8\x89\x98\xf6\xe4\xa7\x1b\x1c\x7b\xf6\x94\xfb\x22\x6b\x1d\x24\x9b\xca\xb4\xb9\x5f\xc4\xf7\x78\x19\x52\x6b\xab\x46\x36\x71\xa7\x7c\x1b\xa7\x51\x71\xd0\xed\xf8\xd8\x6c\x2d\x1b\xeb\xa4\x09\x3b\xbd\xe9\x13\x3c\x06\x15\x21\xb0\x1e\x4e\x78\xfa\xe2\xe7\xe9\xe6\xe3\x0e\x0b\xf1\x61\xef\xd9\xcb\xeb\xa5\xb6\x83\xd5\x96\x28\x56\x8f\x62\x94\x0b\x57\x59\xc4\x52\x0e\xe0\x82\xb2\x81\x61\xc3\x7c\x29\xea\xb7\x8d\x5b\xbe\x57\x36\xd7\x77\x92\x5a\x8b\x3e\x1b\xdf\x37\x75\xd5\x65\x72\x86\x37\x34\xd2\x1c\x74\x00\x06\x4e\x7b\xb7\xc6\x74\x2b\x7f\x84\x6a\x95\xa7\xd9\xf8\x58\xad\x55\x80\x18\xde\xf4\x9e\x7e\x13\x52\x6b\xe3\xc4\x70\xe6\xe3\xf4\xfb\x87\xef\xc6\xb1\xec\xb7\x6b\x97\x2d\xc7\x27\x51\x1b\xea\x8f\x43\x1c\xba\x58\x4b\xd1\xc1\xbf\xef\x0e\x88\xab\x6e\xaa\x30\xd3\x76\xf2\xb4\x00\x13\xbe\xab\x0b\xd2\xd9\x17\x4f\x7d\x72\xf9\x5b\x6f\x5c\xea\x9d\x2b\x36\x41\xea\x7d\xfd\xe2\x8c\xdd\xd6\xcd\xf8\xd8\x1c\x5a\x6a\xa7\xab\xd3\x6f\x3d\x8a\x89\x0e\xe1\xd7\x0d\xb3\x79\xa2\x8d\xbb\xd7\x66\x44\xdc\xe3\xe4\x19\x18\xb3\x4c\x6c\xa8\x8d\x5e\xff\xfd\x70\xb3\xb3\x39\xf8\x22\x2e\x4c\x45\x39\xfa\xf2\xa6\x78\x70\x1b\x03\x46\xc5\x7c\x8c\x0f\x52\x07\x5d\x02\xea\x88\x71\xdc\xd1\x11\x7d\x6e\xb5\x25\x7e\xa9\x6c\xfc\x2c\x6b\x4b\x13\x56\x0d\xe1\x95\x22\xa0\x2e\x02\xf5\xcf\x79\x8f\x53\x9e\x8f\x35\x7a\x8d\x52\x0c\x4b\x81\xc1\x28\x2a\x6f\xe4\x79\xa3\x08\x38\x0b\xf8\xed\xc4\xf1\xfd\x96\xce\x67\xed\x62\xe7\xf0\xe1\xed\x67\xcc\xb3\xf9\x2d\xb1\x55\x45\xc6\x3b\xaf\x1f\xd5\x13\xb7\x5c\x12\x7a\x9a\xff\x7c\x50\x8c\xfa\x47\xdf\x95\xa6\xe4\xe6\x04\xec\x0c\x2a\x40\x80\x99\x79\x02\x5b\x0a\x92\x61\x38\x77\x60\x64\x3f\x78\x3e\xc1\xa8\x8e\xf8\x4b\x05\xca\x36\x78\x3e\x26\x78\xa5\x30\xeb\xfd\x9c\xd0\x78\x82\x8d\x76\xd1\x9b\xd7\x62\x90\x92\x33\xe9\x6f\x3d\x39\x93\xaf\xc4\x99\xdc\xc7\x46\xfa\xaa\x6f\x25\xe1\x1e\x31\x92\x21\x9b\x42\xc9\x2a\x6a\xa6\x58\x96\xc9\x87\x5a\xcd\x06\x0c\x08\x5b\x37\xd1\xf3\xe0\x48\xe9\x87\xe6\x7e\x74\x0a\x1b\x71\x97\xae\x8b\x61\x70\x03\x34\x7f\x34\xfa\xfa\xd1\x05\x45\xbc\x16\x3e\xc4\x9e\x23\x04\xbc\x8c\x5c\x28\xeb\x46\x1c\x81\x3b\x59\x89\x11\x68\x00\x23\xae\x8f\xf5\xd1\xba\x89\x0e\xdf\x3b\xbe\x78\x02\x79\x5c\x29\x31\xd7\x41\x01\xbc\xb1\xa7\x91\x2b\xb1\x18\x71\xd7\x58\x3e\xb6\x48\xd4\xa1\xef\xcf\xe0\x2a\xa8\xd6\xa1\xe7\x5d\xdf\xd5\xf9\xe0\x64\xf7\x38\x5b\x01\x3c\xf8\x4b\xe8\x0d\x4f\x9b\x8b\x52\x7e\xfc\x7c\x82\xc5\xb4\x10\x4e\xde\x8b\x70\x65\x59\x1b\xed\x64\xbe\x76\x04\xde\xeb\x95\x50\xe1\x27\xfc\xdf\x91\x60\x5a\x5b\x7e\xa8\xc4\x75\x39\xec\x62\x00\x1f\xdb\x01\xb3\x8c\x82\x8d\x78\x6a\xe3\x72\x8c\x3e\xb1\x8f\xd6\xc9\xf0\x3c\xf7\xd1\xe8\x46\xfe\x95\xfa\x24\xdd\x87\x3d\xa3\x5e\x5c\x0e\xff\xda\x7e\x17\x7b\x1d\x0f\xee\xbe\x67\x73\xa8\x95\x6e\xeb\xa6\xdb\xba\x11\x2e\xdc\x46\x80\x11\xf1\xaf\xa4\x4e\x37\xe9\xa0\xac\x98\x93\x1f\xba\x9f\x8d\x29\x1a\xad\x7f\x77\x9b\xb0\x75\x78\x6e\x9e\x77\xa4\x77\xb6\x5e\x4a\x23\x4f\x96\x85\xb1\x31\x94\xa5\xca\x1f\x83\x53\x29\x9e\xb5\x13\x81\xe9\xbe\xb3\xad\x08\x79\x1d\x03\x07\x54\x9e\xa9\x1a\xfc\xa9\x10\x4e\x5c\x0b\xfb\x04\x45\xf7\xbc\x53\xdf\xf4\x11\x86\x91\x32\x01\x7e\xc5\x3f\x68\xef\x3c\x86\x90\x5e\xba\x5e\x03\x08\xac\x5a\xbf\xe1\xc3\x8c\x1e\x62\xf0\xfc\xc6\x0e\x50\x93\x3e\x23\x37\x6c\xe0\x3c\xc6\x8d\xd0\x57\x3e\xa3\xe6\x33\x68\x7e\x85\xed\x37\x64\x1e\x36\x0c\x8e\x76\x29\xca\x03\xb9\x4d\xc3\xa3\x50\xd5\xcb\x8b\x9e\x3e\x31\xab\xb5\x75\x0b\x23\xed\x3f\xde\x7e\x0a\xd1\x86\x2d\xfe\xd8\x18\xcb\x44\x02\x34\x66\xa8\xa3\xb4\x12\x0f\xef\x74\x55\x75\x3b\x48\x3f\x46\x00\x18\x3e\xc6\x3c\x3d\x3f\x40\x24\x38\x7c\xd2\xba\x5e\xff\xcb\x18\x2e\xfb\x61\x4d\xc1\x31\xbe\x7a\x16\x8b\xfc\xb6\xa9\x47\xd9\xd2\x45\x3e\x0a\x13\x3d\x4d\x13\x30\x4d\xa5\xce\x87\xf7\x1a\x50\x29\x00\x10\x28\x95\xd3\x66\x46\x7a\x86\x3d\xc1\x67\x47\xe4\xc5\xc9\x4d\xbf\x93\xd4\xb5\xa4\x76\x2e\xfb\x2d\x22\xe7\x97\x54\xfa\xf0\x7e\x8b\x00\x78\x07\x7d\xb6\xe6\x4d\x2b\xde\xef\x8f\x38\x5b\xf3\x02\xb3\xf6\x84\x4a\x0a\x00\xd4\xba\x3f\x38\x40\x5c\x28\xe0\xd6\xa0\x06\x3d\x40\xae\xec\xf6\x22\x2f\x0f\xaa\x0e\x07\xab\xb1\xd8\xc2\x8e\xc9\xa6\x07\x10\x76\xff\xa1\xc3\xc0\xb0\xfb\x83\x42\xe4\xd7\x07\xba\x99\x31\xe4\x37\xbe\x6e\xa0\x23\x40\xfb\x6d\x02\x73\x4a\x02\xcb\x32\x5b\xc4\xe6\xd4\x0b\x38\xbb\xf3\x98\x07\x78\x76\x7f\x5c\xc4\xbc\x0e\x03\xd1\xf6\x84\x4e\x2a\x75\x1a\xd9\x13\x98\xa1\xc5\xc8\x00\x41\xf3\x74\x90\xe4\x8c\x93\x2d\x79\x04\xd8\x96\x3d\x48\x32\xf8\xd7\x13\x27\x1b\x0e\xad\x42\xc8\x9e\x41\x20\x2d\x0b\x29\x6a\x19\x75\x3d\x7a\x8e\x51\x59\x83\x1f\x06\xce\xed\xe9\x44\x6e\xe2\x54\x72\xfc\x8a\x84\xee\xac\x1d\x4f\xe8\x56\x17\x3a\x13\xc0\xd1\x60\x4f\xd3\xec\x2a\x20\xe3\x31\x49\xed\x55\x38\xff\x97\x99\x0e\x8b\xe7\xfe\xf2\x33\x7f\xb9\x79\xbf\x78\xd6\x2f\xeb\x23\x39\x55\x60\x91\x7c\x5f\x30\xdb\x97\x91\xeb\x8b\x7a\x10\x88\x16\x82\x59\x83\xe6\xf8\xa2\x9a\x17\x53\x07\x87\x91\x44\x7a\x82\x15\x81\x17\x43\x6d\x7f\x44\xc7\xdf\xdb\x71\x00\x8b\x7b\x3a\x17\x63\x34\x55\x5c\x85\x06\x3a\xee\x89\x5f\x2f\x2d\x9b\x84\x17\xe0\x26\x79\x08\xd7\x8d\xd5\x1b\x78\xc3\x32\xd9\x51\x92\x78\x17\x3b\xf9\xb7\xe2\x42\x2e\x75\x32\x4d\x76\x16\x76\xa1\x93\xdd\x0b\xef\x86\x1a\xf7\x2a\x27\xc3\x3c\x66\xdf\x87\x9f\x12\x7a\x79\x93\x2f\xa4\x81\x17\x37\x03\xe4\x94\x7d\x69\x33\xa0\x0f\xfe\x85\xcd\xc9\x97\x02\xeb\xaa\x26\x6b\x25\x70\x9c\xd9\xd3\xb8\xa9\x50\x83\x3e\x40\xe9\x9e\xe0\xc8\x9f\x17\x60\x7a\x7f\x58\x48\xd0\x8a\x02\x9c\x66\xb6\x08\xf1\xe3\x30\x10\x75\x4f\x27\x8a\xcd\x78\x30\xe2\x36\x3d\x9e\xc9\xe1\x1d\x0d\x68\xdd\xd3\xe9\xe2\xc3\x5e\xc0\xeb\x53\x0f\x0f\x93\x62\x2f\x30\x76\x4f\xaf\x63\x93\x47\x00\x69\xf7\x34\x97\xdd\x4a\x8a\xb4\xce\x6a\x43\xe7\x01\xee\xee\x09\x5e\x26\x34\x90\xf7\xfe\xd0\x90\xc3\x73\x1a\xd8\x9b\xd9\x26\xc4\x15\x08\xf0\xbb\xa7\xef\x33\xaf\xc5\x0f\x14\xbe\xdf\xde\x6c\x33\x07\x06\x01\xc5\xf7\xbb\xa3\xa4\x65\x18\x60\xbc\x27\x78\x0d\x51\x80\xe3\xfb\x03\x83\x18\x4b\x01\x90\x07\x34\xe9\x07\x24\x67\x36\x88\x4d\x95\x17\xa8\x7c\xbf\x47\x6a\xba\x7c\xc0\xe5\x3d\xa1\x13\x46\x02\x99\xef\x0f\x0d\x5a\xd7\x33\x3e\x9d\xc7\xe6\xca\x07\x80\xbe\x7d\x8a\xd8\x15\x42\x73\xe9\x03\x46\xef\x09\x9d\xca\xa8\x8c\x77\xf1\x54\x3d\xa8\xca\x22\x70\x73\x10\x60\xbd\x27\x38\x31\x0f\x05\x5c\xdf\x1f\x1e\xe2\xeb\x81\x00\xec\xfc\x86\x23\x9b\x67\x08\xa0\x9d\xdf\xea\x30\x60\x3b\xbf\x2d\x08\xc0\x9d\xdd\xec\xc9\x36\xeb\x04\xd0\x7b\x4f\xa7\xdb\x57\xa7\x8d\x0f\xb9\x37\x44\x00\xe4\x99\xfd\x63\xea\xf3\x30\xb0\xfc\xf6\xf7\xc3\x00\xf3\xdb\xdf\x09\xa0\xf9\xfd\x31\x13\x8c\x58\xe9\xa6\x22\xad\x1a\xf4\xf5\x03\x10\xf6\x3d\x9d\xc4\x32\x4e\xb1\x0a\x7c\x90\xf7\xcc\x01\x46\xb1\xb6\x1e\x48\xfc\xfd\xe1\x10\x92\x00\x43\xe4\x6f\x5e\x40\x0d\x34\x05\x99\xbf\x3f\xcc\xd9\x7a\x9a\x3e\x68\xfd\xfd\x1e\x29\x4e\x83\x50\xfb\x9b\xe7\x4f\xb4\xe9\xf7\x40\xf1\x33\x1b\x43\x77\xc8\xe3\x53\xef\x68\xc8\xfe\xcd\x93\xaf\x25\xf7\xf3\xac\x53\x25\xbd\xa5\x00\x76\x1e\x3a\x8f\x14\x0f\xa2\x64\x40\x4f\x93\x24\x79\x80\xa5\x04\xc2\x1a\x67\x8c\x3a\xf0\xf1\x30\x34\xe6\x8c\x87\x12\xdb\x53\xc0\x81\x7b\x47\x1c\xd4\xd8\x9e\x42\xd0\x63\xf7\x07\xca\x41\x91\xed\x89\x83\x26\xbb\xdf\x1b\x9b\x2d\x5c\x54\xe7\x8c\x81\x32\xbb\x7d\x1e\x44\x9b\xed\x89\x99\x6a\xb3\xfb\x12\x82\x3e\xdb\x13\xba\x81\xd9\x6d\x9f\xc5\x60\x1c\x95\x76\xbf\x13\xc4\x72\xec\xbf\x01\xf3\x0a\x2e\x7d\xd0\xd3\xeb\xd1\x35\xdc\x12\x09\x63\xfb\xcb\x82\x4b\x26\xf4\x14\xac\xea\xb2\xd0\x12\x0a\x11\x7a\x0e\xd1\x28\x59\x50\x69\x85\x9e\x82\xd4\x45\x96\x2c\xc2\x10\x85\x96\x64\xd8\x0c\x76\xc4\x82\x09\x2e\xd1\xd0\xd3\xa8\x35\x13\x50\xb2\x21\x4a\xbf\x21\x25\x1c\x22\x74\x1c\xbe\x54\x99\xa5\x1d\x7a\x0a\x5c\xa9\x61\x4e\xca\x1c\x9d\x0e\x66\x27\x48\x49\x88\x9e\x5e\x8f\xa1\x4e\x9b\x82\x43\x94\x36\x05\x69\x53\x30\xd1\xa6\x80\x5d\xc2\xa2\xa7\x80\xeb\x26\x70\x49\x8b\x9e\x02\x58\x1c\x50\xe2\xa2\x27\x5e\xa9\x8b\xfd\x31\xf2\x56\x35\x6f\x3d\x4f\x7e\x03\x00\x5e\x8d\x2c\xd9\x8a\x9e\xac\x0f\xa2\x82\x0c\x96\xce\x60\x0d\xcc\x53\x4a\xa3\x27\x74\x05\x78\x4b\x6b\xec\x0f\xea\x24\x81\x68\xaa\xf4\x06\x7b\x88\xfe\x52\x1c\xec\xe6\x22\x02\x59\x50\xa5\x3a\x98\xcd\xa1\x69\x69\x83\x25\x3c\xb6\x0f\x0d\x96\xf2\xd8\x1f\x12\x21\xb5\x03\xa5\x3d\x7a\x3a\xd1\xd9\x89\xb7\xf4\x07\xbb\x35\xa2\x14\x08\xbb\xbd\x33\x00\xe3\xf1\x40\xfd\xb3\xbb\x4d\x19\x26\xf3\x43\xce\x19\x2a\x4d\xb2\x7d\x22\x16\xb6\x8e\xa7\x64\x49\x4f\x27\x52\x12\x44\x49\x13\x76\x7b\x68\x89\x13\x76\xc3\x69\x01\x91\x0b\x88\x2e\x95\xb2\xdf\x24\xc4\x24\xba\x74\xca\x7e\xa3\xc8\xf5\x49\xba\x94\x0a\xbf\x4d\x6f\x69\x15\x76\x73\x34\xd4\x3f\xb3\x49\x4c\x23\x0d\x97\x60\xd9\x3e\xe3\x2b\xc5\xb2\xf3\xd4\x50\x49\x96\xfd\x71\x53\x7a\x8b\x8c\x86\x9d\x4d\xb2\x41\xc2\x65\x3a\x43\xbc\x83\xd7\x83\xcb\x14\x1b\x4a\x69\x02\x40\x51\x4c\x23\xf8\x4a\xcd\xf4\xf4\x6a\x92\xc5\x5e\x9d\x8b\x10\xdd\xae\xc1\x25\x6d\x98\xed\x62\xc2\xd8\x5c\x47\x49\xc6\x26\x4b\xe6\xf4\x74\x22\xc1\x06\x4b\xea\x8c\x6b\x77\x02\xa1\x40\x72\x21\x26\xc8\xb3\x24\x12\x1a\x00\xd1\x22\x1f\xa9\x95\x1b\xdc\xab\x22\x42\xd2\x5d\x4a\xf8\x58\xe5\x65\x63\xd5\x1d\x50\xb9\x8a\xd2\x56\x5d\x83\x5f\xd5\xe8\x2a\x58\xbb\x4d\x95\xaa\x8a\xd5\xdc\xff\xf2\x8b\x2d\xd0\x12\x39\x27\x46\xda\x41\x57\x15\x99\x93\xc6\x78\xad\x73\x8c\x21\xda\x9f\xc6\x0c\x30\x52\xf1\x8c\xfe\x0e\xe8\xe8\x86\xa2\x54\xc3\xe8\x02\xe1\xfe\x6c\xad\x28\xac\xef\x74\xdd\xd5\xd8\x42\x7c\x59\x66\xef\xd5\xcd\x28\x41\x8b\x57\x11\xe8\x18\xf5\x48\xbc\x3f\xdb\xdc\xa8\xda\x5d\x0d\xa6\xd2\x90\xd5\x95\x18\x95\x4a\x10\xd6\xd2\x86\x17\xe3\x2b\x82\xe0\x80\xee\xaa\xb0\xbd\x14\xe2\xbc\x62\xa6\x00\xb9\xe1\x00\x70\x81\xb2\xb8\xe4\xad\x06\x72\x49\x92\x15\x47\xa0\xc5\x84\x55\x1a\x81\xa6\x1d\xa9\x30\x02\x37\x44\x54\x16\x81\xda\x89\x24\xce\x54\x25\x11\x50\x4d\xc7\x11\x50\x5a\xae\x88\xaa\x21\x54\xc5\x10\x4c\xee\x7c\x55\x0c\x10\xb9\x8b\xb7\x5e\xb1\x8d\x3c\x34\x47\x50\x45\x90\x28\x6b\x9f\xac\x02\x42\x57\x00\x21\xe7\xc9\x5f\xf9\x03\x99\x24\xe4\x90\x11\x88\xf9\xb1\xf6\xac\xfe\x58\x10\x15\x28\x3b\xea\x52\x44\x2b\x7a\x60\xb2\x87\xc4\x4a\xd0\x0d\x74\x44\x18\x73\x28\x92\x40\x9d\x3d\x46\x59\x33\xc4\x69\x22\xbd\x1e\xbc\x15\x3a\x8e\xe8\x1e\xc5\x96\xbf\x33\x15\x9a\xb3\x71\xb4\xc8\xcb\x8e\x08\x87\xc1\x13\x9c\xb8\x5e\x31\xa9\x9c\x01\xed\x8d\xc7\x66\xa1\x93\x1a\x46\x58\x16\x3b\xa1\xe1\x9d\xce\x70\x4e\x66\xb0\x53\x19\x46\x7c\x1d\x39\x8d\xa1\x4f\x62\x80\x53\x18\x30\xa0\x8d\x58\xdc\x08\x95\xe1\xb1\xe3\x1b\x44\xe3\xd1\x4b\x75\x18\xe6\x09\x5a\xa4\x24\x20\xea\x31\xf7\x1d\xdc\x2a\x17\x73\x55\xf4\xb1\xf7\xe6\x58\x25\x0b\x3e\x2e\x6c\xbc\x6f\x06\x36\x69\x3e\x90\x53\xb2\x07\xe0\x52\x6c\xb2\x49\xdd\xd8\xe1\x2b\x81\xbc\xac\x04\xee\x3d\x59\x66\x72\x02\xf3\x2e\xec\x64\x59\x01\xf8\x0d\x57\xc6\xa1\xff\x2b\xb3\xeb\x21\xf7\x4f\xd9\x68\x1b\xdc\x3b\xa6\x4c\x79\x63\xdd\x23\x65\xb6\xcd\xbb\x2b\x3a\x99\x28\xc3\x37\x40\x61\x49\x46\x1d\xba\xe3\xb9\x6b\x64\x43\x54\x55\x08\x28\x2a\x44\x56\x83\xc0\x02\x1e\x48\x15\x88\x18\x47\x57\xc3\x95\x1f\x8e\xb8\xe7\x27\xc0\x23\xe7\x7a\x18\x82\x55\x75\x38\x6e\x0c\x90\xac\xe2\x70\xcc\xe1\xd0\xd2\x47\x56\x6c\x38\xbf\x8d\x09\x50\x99\xe1\x94\xde\x77\x8a\xb0\xb5\x34\xf5\x26\x84\xa8\xb0\x00\x89\x35\x56\x59\x01\x3b\x34\xc4\x2a\x2a\xc4\xb0\x28\x70\x15\x85\xd7\x7d\xe6\x4e\x57\x4a\x98\xd9\xc9\xa8\xb7\x2a\x02\x3d\xeb\xfe\x6a\x08\x90\xbc\x23\x55\x10\x40\xa6\x21\xd5\x0f\xc0\xa6\xe8\xaa\x07\x51\xe2\xf0\x64\xa5\x03\x7a\x0a\xa8\x0a\x07\xc8\x24\x40\x95\x0d\xc0\x35\x37\xa3\xd3\x48\x9a\xff\x54\xf5\x02\xef\x4e\x85\x9c\x1b\xaa\x62\x01\x32\x35\x51\x18\xea\xc6\xab\x53\x40\x95\x8c\xe0\x94\xb7\x1a\x01\x94\xb4\xc3\xa9\x42\x80\xf9\x39\x8c\xea\x03\x58\x83\x91\xcc\x1a\x5c\x6d\x00\x6b\xcd\x5f\x65\x00\x6b\x03\xae\x2e\x30\xbf\x8d\x21\x50\x49\xe0\xb8\x7b\xb9\xe4\xa8\x77\x0f\x81\xd5\x01\xa2\xa8\xae\xe1\x8a\x00\xbe\x6a\x00\x50\x25\x00\xf2\x63\x3d\xb8\xfd\x47\xb3\x0f\x31\x65\x8e\xc2\xe7\x9f\xda\xd6\x10\x78\xfc\xe4\x7c\xb0\x70\xf8\x21\xd3\x84\xe0\xef\xcf\xcc\x2f\xa2\xb0\xf6\x69\x2e\x32\x30\xf6\x8f\xb9\x25\x24\x30\xf5\xe3\x08\xe7\x30\x8e\x3e\xcd\x37\x08\x3f\xff\x2c\x33\xb3\xce\x26\xb9\x89\xc4\xc4\x9f\xed\x41\x32\x80\x7f\x1f\xf5\x28\x99\x81\x79\xcf\x3b\xde\x63\xe0\x54\xb2\x20\x2d\x43\xe0\x2c\x99\x50\x96\xcc\xa3\xc0\x8e\xb8\x10\x96\xa1\xf0\x95\x9c\x33\xe1\x2d\x71\x61\x2b\x03\x58\xc0\x85\xab\xe4\x40\x55\xb2\x60\x2a\x19\x87\xf6\xbb\x2f\xa0\xf0\x94\x38\x34\x25\x93\x89\x3c\x48\x4a\x4c\x63\xef\x3f\x0d\xf1\x84\x85\x4d\x7f\xbe\x3a\x21\x04\x87\x3e\x14\x4a\x37\x1c\x7f\x3e\x48\x15\x65\x63\x70\xe7\x03\x7b\x0c\x03\xab\x0d\xc1\x9a\x67\x2f\xef\x2c\x69\xe7\x6c\x24\x9e\x7c\xa8\xe0\x8f\xc2\x91\x0f\x96\xfd\x40\xfc\xf8\xe0\xfe\x42\x71\xe3\x8f\xba\xd4\x02\xb0\xe2\x03\x56\x1a\xdf\x09\x98\x8b\x61\x67\x34\x8e\xe2\xc1\x9f\xaf\x71\x4c\x0e\x73\x72\x98\xc9\x17\x92\xc3\xdc\x51\x10\x6e\x3b\x33\x31\x9b\x85\xd7\xce\x64\x63\x20\x4e\x3b\x1f\xa3\x9d\xbb\x12\x67\x00\x20\x17\x17\x1a\x2e\x5a\x4a\x2c\x70\x17\xdb\x8b\xbd\x4e\x0e\x84\xc0\x5c\x47\xa4\x97\xc4\x5a\x3f\x72\xf0\x12\xc1\x56\xc7\x8e\xe2\x49\x4c\x75\xa8\x99\x08\xd7\x8b\x11\x0c\xf5\x48\x49\x2e\x5e\xdc\x74\x02\x33\x9d\x94\x36\x0f\x56\xfa\x11\xe3\xe4\x24\x36\x3a\xd4\x0a\x80\x89\x0e\xb5\x33\x43\x98\x02\x02\x9b\xf7\xe8\xe7\x94\x67\x7c\x36\x7e\x14\x6c\x01\x1f\x96\xf9\x78\xe4\x01\x02\xbf\xfc\x88\x0b\x17\xc0\x2b\xc7\x8e\x16\x19\x38\xe5\x49\xd8\x77\x1e\xa3\x20\x39\x21\x0c\x72\x90\x11\x18\xf6\x38\x76\x59\x07\xc3\x1c\xc7\xda\x22\xb1\xc6\x19\xf6\xfc\x28\x68\x3d\x7e\x5c\x71\x1a\x53\x9c\xc0\x13\x07\xf4\x87\x51\xb5\x37\xb9\x92\xfc\x4c\x7f\x20\x66\xb6\x67\xbc\x09\xc0\xe2\x70\xf7\x09\xc0\x62\xe7\x31\xbf\x2f\x16\x0b\x7b\x22\x22\xd2\x18\xbd\xe0\x29\x98\xf0\xb3\xcc\x89\x39\x6b\xcb\x1c\xcd\xdc\xb0\x20\xbf\x63\x08\x13\x04\xcf\x7d\x44\x81\x62\xc0\x71\xf3\xdb\x8b\x38\x41\x11\xb0\xd1\xd1\xf4\x2d\xcf\xb9\x2e\x31\xbd\xde\x9f\x6d\x25\x6a\xbb\xd4\x63\x00\x66\xcd\x62\x50\x20\x08\xd3\x0b\x8b\xee\xb0\xfa\xf6\xad\x71\xb2\xf9\x8a\x5a\x5f\x44\x0b\xbe\xb9\xbb\x68\x5b\x1f\xfc\xa1\xed\x96\x3d\x59\x4e\xd8\xe5\x17\xb9\x96\x66\xe9\xb9\x85\x41\xcd\xd8\x08\x9e\x79\x86\x37\xf8\x53\x29\x45\x21\xcd\x87\xb2\xdb\x0c\x3e\xef\xd8\x37\xd8\x52\x0a\x2b\xdf\x37\x64\x38\x9d\x72\x8f\xfc\x0e\x91\x91\x95\xbc\x7f\x2f\x45\x51\xaa\x4a\x4e\xd8\x8b\x33\x8f\x97\xd2\x28\x5d\x4c\xd4\xc7\x90\x34\x5e\x1c\xe4\xe3\x8b\x87\x0e\xb1\xe1\xc0\x43\xcf\xbf\x02\x95\x82\xa7\x00\x09\x67\xfa\xc5\x42\x1e\x8e\x0c\x7b\x85\x74\x48\x1f\x79\x74\x11\x24\xf4\x87\x75\x90\xac\xee\x98\x9d\xd1\x66\xd4\xef\xb7\x00\x4a\xf3\x4e\x94\x4d\x84\x16\x7e\x36\xda\xb3\x07\xc7\xbc\xb0\x4d\x46\xec\xdf\xe5\x23\x99\x26\x73\xba\x6d\x18\x76\xaa\xca\x68\x10\x3f\x4d\xc5\x4f\x52\x63\x6d\xae\xc0\x9d\x13\x96\xd3\x87\xcf\x19\x27\x6f\x8f\xc1\x69\x46\x6e\x5e\xf4\x6d\x2c\x96\x71\x07\xf2\x9b\x97\x52\xc6\x4a\x4a\xe7\xa4\x8d\x31\x58\x0f\xa7\x86\x31\xda\xc4\xd3\xbf\xa2\xcf\x26\x94\xd4\x05\x4e\x66\xb7\x91\x4d\x4a\xcf\xdb\xe8\xec\x94\x1e\x7d\xb6\xea\x1d\xcd\xa0\xcf\x0f\xee\xd1\x0e\xbb\x18\xb5\xd1\x2b\xe9\x96\xb2\x39\x28\x20\x94\xf8\xc8\x87\x5a\x1b\x37\x0e\x83\xc5\xb7\xc5\xcb\x8e\x7e\x72\x3a\xe0\x72\x31\x06\x83\x2f\xb9\xe8\x4b\x84\x70\xcd\x42\x5b\xf4\xbb\x6a\x3d\xb1\x21\x05\x71\xd7\x2d\xac\x8b\x8c\x9b\x1d\x19\x90\x18\x88\x27\xcc\x05\x76\xc0\x4b\x9c\xcb\xd8\xc9\x73\x19\x3b\xbb\x11\xcf\x6d\x64\x26\x2b\xf2\xae\x79\xf0\x65\x21\xe4\x6a\x47\xc0\x8c\x05\x5c\xe7\x60\xf7\xc2\x9d\x31\xde\xe5\x0d\xe6\xbc\x85\xdd\x56\xe0\xcf\x5f\xe0\x0d\x85\x80\x29\x64\xdf\x4a\x08\x4a\x29\xe6\xde\x44\x98\x5c\x4a\x58\xf7\x0e\x98\x42\x82\xbb\xac\x3d\x25\x65\x0f\x77\x72\x76\xca\x1e\x7e\x18\x75\xd0\x07\x5d\x63\x66\x8f\x58\x72\x9d\xf1\xa6\x94\xc6\xc6\x52\x05\xee\x99\xa3\x6b\xa5\x54\x2b\xe5\xc7\x1d\xcb\x82\xb0\x33\x33\x9e\xbc\xb3\xa6\x5f\xda\xf3\x19\x31\x96\x63\x25\xf3\xc6\x28\xf7\xf8\x4e\x57\x4e\x3e\x44\x29\xcf\x2f\xca\x52\xdf\x5f\x1a\x75\xa7\x4a\xb9\x90\x1f\x6c\x2e\x4a\x41\x61\x31\x66\x2c\xf5\x91\x8b\x5a\x5c\xab\x52\x21\x9c\xe5\x68\x6e\x51\x40\x9a\x88\x71\x8d\x8a\xa9\x77\x91\x15\xdf\x53\x61\x34\x00\xbe\x30\x8f\xd1\xc2\x6b\xac\xee\xc5\x86\x9c\x08\x5c\x5a\x6a\xa3\xf3\x5f\x75\xe3\x4f\xbd\xcf\x78\x61\xb6\x2e\x0b\xe4\x8b\xd6\x6d\xbd\x33\x3a\x89\x8f\x37\x62\xd3\x54\x6f\xed\x2f\xd4\x3d\x88\x8c\x79\x99\x06\x4f\x96\x6a\xfb\xff\x4d\x57\xeb\xef\x8b\xfc\x55\xdf\x88\x04\xe6\x6c\xb2\x8f\xb2\xf2\x93\xaa\x9a\x87\xcf\x34\x5c\x73\xc6\x54\x1b\xa5\xbc\x93\x90\x9b\xc4\x5a\x5f\x46\xfb\x0b\xe9\x05\x35\xea\x88\x9c\x95\xa0\x46\xa9\xa4\xf4\x80\x46\x61\x85\x71\xaf\xaa\x42\xdf\xdb\x09\x66\x75\xb1\xb2\xe2\x9d\x91\x85\xac\x9c\x12\xe5\x55\x2d\x07\x91\xf3\x5f\x0e\x1c\x64\xdc\xcb\x2e\xd0\xdd\x24\x4f\x92\xfa\x85\x37\x41\xeb\xf1\x7c\x11\xf2\x91\xf5\x22\x37\x77\xc3\x1b\x12\x72\xd4\xa5\xb8\x96\xc3\x78\x8f\x3c\xb7\x2d\x46\x2e\xda\xd8\xa4\x1c\xbf\xf7\x8f\x78\xfe\x94\xf6\xf4\x7e\x82\x77\x33\x40\xad\x34\xbf\xf3\x7f\xfc\xb9\xa0\x9c\xfb\x63\x8f\xc8\x9f\x1d\x45\x3b\xed\x64\x2e\x1b\xd3\x49\xa7\xcd\x3c\xe2\x94\x43\x47\x30\x7e\x27\xfc\xb8\x27\x30\x94\x93\x3d\xab\xea\x1a\xb4\xf3\x4c\xcf\x22\xe9\x2c\x93\x9f\xc3\x73\x8e\xe9\x11\xd1\xce\x30\xe2\x2f\xd2\x7e\x22\xe2\xf4\x82\xa3\xf5\x39\xb9\x71\x06\x8b\x39\xb3\xc8\x72\x23\x9d\x57\x2c\x2f\x9e\x70\x56\xa1\x46\x28\xe7\x14\x6a\x24\xc2\x0d\x49\x72\xa1\x61\x4e\x27\x74\xd9\x9d\xe5\x64\x42\x0c\xe0\x3b\x95\xd8\x0c\xa3\x4e\xe4\xa4\xb6\x6f\xf0\xa7\x5a\x34\xf6\xa5\xde\x1b\x5e\xaf\xb5\x2e\xbe\xca\x55\x5d\x8a\x97\x60\x05\xbe\x79\xcb\x75\xe5\x8c\x2e\xcb\xc3\x32\x46\x1a\xdd\xaa\xd2\x4e\x78\x85\x66\x56\x7e\xc6\x4a\x3a\x51\x08\x27\xbe\x87\x6f\xb5\x03\x6b\x8f\xfc\xce\x9b\x1b\x55\x29\x37\x78\xd8\x83\x68\x81\x4a\x17\xf2\x2d\xd1\x0e\xda\x56\xf7\x9c\xbc\x91\xc6\xc8\xe2\x7d\xb3\xe6\xd6\x55\xbe\x94\x45\x53\xaa\x6a\xf1\x71\x51\xe9\xcd\x9f\x3f\x3c\xc8\xbc\x41\x02\xb3\x60\x04\x91\x77\x46\xd6\x8d\x11\x07\xa7\xe1\x9f\xc0\xad\x84\xcb\x97\x1f\x1e\x6a\xd3\xdd\x1f\x60\xc0\x58\xb1\x70\xb2\xc2\x06\xd7\x11\x13\x2f\x2b\x0b\x3b\xc9\xeb\x68\x3d\x42\x71\x20\x2f\x7d\xb2\x0e\xdb\x74\x1d\x26\x43\x02\x78\xdf\x51\xf0\x28\x79\x41\xf7\x2d\x85\xa1\xe9\xe1\x48\x5c\xdd\xf3\xfd\xa4\x31\x5e\x62\x9e\x85\xef\xbe\xc4\xe1\x41\xbb\xba\xda\x2c\x8b\xb4\xb0\xd2\xc2\xf2\xbc\x9a\x16\x16\x87\x07\xcc\x4e\xee\xa5\x5a\x2c\x01\x48\xc9\x2c\x08\x08\x11\x3f\x5c\xc9\xb8\xf8\x68\x1b\xeb\x0f\x3c\xdc\x7d\x24\xf9\x20\x83\x75\xe8\xac\xf4\x9f\x14\xc7\x8f\xe2\x28\xb3\xb5\x4b\x78\x25\xcb\xb6\x40\xde\x57\x69\xb0\x95\xcb\x58\xe2\xc9\x9d\xea\x28\x69\xfd\x83\x94\xb4\x7e\x4f\xc9\x9d\x4a\x0b\xeb\x10\xa5\x85\xb5\xfb\xfc\x5c\x17\x16\xb3\x13\xbc\x79\x94\xad\x17\x2f\x2d\x39\xe4\x9b\xc4\xc9\xee\xab\x75\xf1\xdd\xc5\x95\xb6\x9f\xbc\xe6\xf6\x54\xde\x50\x9b\x4b\xd0\x4f\x2b\xbe\xb6\xc2\x14\x70\xb8\xeb\x95\x85\x6a\xaa\x50\x4b\x91\x85\x59\x8b\x6c\x9c\x6a\x0c\xb7\x1a\xa3\x3b\x0e\xb3\x1e\x59\xb8\x05\xc9\xc6\x8e\x38\xd4\x92\x64\x81\xd6\x24\x0b\xb0\x28\x59\xa8\x55\xc9\x42\x2d\x4b\x16\xcc\x97\x76\x75\x7e\xf2\xe6\x16\x1d\xa6\xb0\x44\xf1\x43\x43\x0e\x90\x84\x11\xe6\x97\xf5\xd2\x26\xc9\x69\x4a\xbf\x36\x88\x0b\xfc\xd9\x76\xba\xd6\xa5\x5e\x3c\xfe\x7d\xd2\xbb\x3d\xdc\x4b\x31\x3b\xa3\x4a\x21\xa6\x9e\x2e\x9e\x3b\x02\xdf\x51\x9c\x69\x12\xbf\x2a\xc0\xe1\x49\x31\xa6\x8e\xd2\x56\xf8\x20\xa5\xad\x70\x4f\xc7\x8c\x31\x71\x1d\x95\xb1\x4e\xca\x08\xd3\xcc\xae\x2c\x04\xbf\xc0\x75\x4a\x58\x12\xce\xfe\x62\xde\x4c\xb2\x9d\x10\xde\x5d\x01\x86\x85\xe5\x38\x1e\xd1\x8d\x26\x1c\xff\xa8\x9c\x4a\x31\x10\x80\x52\x0c\x24\xce\x40\x3b\x4a\x31\x10\x88\x52\x0c\x84\x7a\x27\xc5\x40\xc0\x21\xa7\x18\x48\x8a\x81\xa4\x18\xc8\x2e\xa5\x18\x48\x8a\x81\x44\x1e\x5c\x47\x29\x06\xf2\x82\x52\x0c\x64\xf7\xf9\x14\x03\x39\x30\xcc\x14\x03\x21\x5f\x48\x31\x90\xbd\x47\x23\xc4\x40\xc8\x47\x4e\x5b\xd4\xc4\x83\x70\x4b\x74\x8e\xd9\x2e\x1a\x25\x0f\x94\x0c\x00\xcd\x96\xd3\x12\x8d\x62\xcb\x42\x3d\xe7\xa1\xd7\xf2\xcc\x3e\x6c\xec\x99\x6b\xfe\x2c\xcb\xbb\x73\x54\x03\x62\x34\x19\x2a\x01\x47\xa4\x65\xd6\x88\x67\x22\xd1\x32\x67\x83\x89\x40\x3b\x99\xa2\xc6\x51\x67\x19\x73\xc2\x47\x9b\x65\x03\x53\x73\x51\x66\x99\xd3\xc3\x42\x97\x65\xb6\xcd\x43\x95\x9d\x6c\xe6\x61\x24\x59\xc6\xc4\xf3\x10\x64\x93\xc2\x7d\xd1\xf8\xec\x15\x2e\xf4\x20\x3d\x3a\x02\x0d\x16\xf6\xe0\x86\x5d\xa8\xb6\x5a\xf7\x65\x53\x96\x57\xad\x4c\x86\x3a\x73\x47\xf5\xa7\x62\x7c\x76\xa5\xdc\xbb\x5e\x3d\x4e\xfb\xd1\x54\x51\x08\x70\x6f\x04\xaf\x2a\xcc\xf9\xcf\xf5\x6a\x25\x2a\x62\x61\x9c\x62\x60\x44\xd5\x0a\x70\x50\xac\xcb\x72\x53\xa0\xe6\x81\xf5\x2b\x42\x5a\xc5\x6a\x58\xf0\xe3\x73\x41\x75\x2c\xc2\xc2\x80\xcc\x10\x60\x50\x04\x84\x07\x71\x1e\xd8\x09\x1f\xe6\x9c\x6b\xc2\x3a\xe2\x06\xde\x38\x41\x37\x76\xa8\x88\x57\xdd\x22\x4c\x42\x42\x2a\x5c\x04\xce\x61\x40\x95\x8b\xa0\x9e\xf8\x73\xc8\xab\x75\x11\x30\x93\x61\xf5\x2e\xc2\x66\x34\xb0\xe6\x45\xe0\xa4\xb2\xeb\x5e\x04\xf6\xc3\xaf\x7d\x71\x24\xd9\x61\x55\xc0\x08\x10\x1d\x7e\x15\x8c\x64\x2a\xbe\x37\x53\xc1\x8a\x85\xc0\x37\x22\xa9\xfa\x18\xec\x6d\x1a\xe0\x92\xd2\x3e\x57\x74\xb7\x74\xe3\x8e\x81\x0b\x8c\xbb\xb8\x38\x42\xcf\x16\x78\xae\xb0\x73\x05\x9d\x25\x88\xb5\x91\x37\xea\x21\xba\x33\xde\x69\xc0\x34\x3b\x43\xcf\x33\x8e\xaa\xa2\x2d\xd5\x36\x9c\x11\xe5\xa0\x65\x13\x18\xb9\xd4\xa5\xca\x09\x1b\x04\xb6\x59\xaa\x1b\x99\x3f\xe6\x14\x32\x3f\x2e\x2b\xb5\xb6\xee\xca\x09\x7f\x11\x1f\x6e\xa3\x59\x5b\x0d\x13\x03\xac\x0f\x2b\x7e\x06\x84\x1e\x76\x69\x9e\xc9\x6c\x4c\x5b\xb8\x74\xae\xfe\x45\x82\x59\x60\x7c\xa6\x2e\xb5\x05\xdb\xce\xc2\x18\xb4\x1e\xff\xbf\x49\x51\x78\xc2\x65\x2f\xe9\x68\x39\x45\x5c\x0f\x2e\x1b\x9d\xe3\x73\xa4\xde\xc2\x32\x6e\x00\x1f\x69\xff\x85\xf6\x93\xd8\x2b\x6c\xf2\x7c\x9b\x7a\xda\xda\x93\x74\x01\xb4\x7d\x12\xd5\xe3\x67\x78\xb3\xd3\xe6\x77\xb0\x72\x33\x9f\xbf\xc7\x14\x96\x87\x8b\xdb\xe6\x5a\x9a\x4a\x3a\x69\x2f\x54\xe5\x2e\xb4\xb9\xe8\x9a\x78\x93\x39\x03\x4f\xaf\xcd\x97\x72\xd2\xe2\x80\xdc\xec\xdc\xf5\x1c\x4d\xa1\x91\x5d\x5e\x5f\xe9\xfc\xf6\x8c\x75\x72\x92\xde\x67\x34\x0f\xd1\x62\x3c\x5c\x1b\x79\xe5\x90\x4a\x6c\xc9\x7d\x83\x5e\x4a\xee\xdb\x50\x07\xc9\x7d\xeb\x29\xb9\x6f\xc9\x7d\x43\xe8\x1c\x0d\x60\x72\xdf\x86\x68\x86\x3a\x39\x49\xef\x33\x9a\x87\x68\xc5\x4d\xf2\xca\xb2\x52\xdd\xc9\x4a\x5a\x7b\x69\xf4\x75\xb4\xc8\x1f\xe6\xe1\x71\xf3\x45\x19\x9e\xdd\x7c\x2e\x74\x70\xb2\xa0\x85\x2a\x1b\x23\xbf\x2e\x8d\xb4\x4b\x5d\x02\x9f\xca\xbb\x8f\xc9\x59\x72\xb0\x47\xc9\x9b\x44\x5c\x6b\x31\x27\x85\xed\x41\xb2\x24\x24\xc4\x73\x3c\xca\xb1\x2d\xdb\x5b\x3c\xca\xe9\x3e\xc3\x43\xe4\x79\x87\x81\xf7\xc6\x50\xaf\x10\xf7\x08\x99\x6c\xc4\x6d\x29\xc3\x8e\x86\xd8\xd0\x00\xfb\x19\xc1\x76\x72\xbc\xbe\xc9\x52\xe5\x21\x73\xcc\x10\x30\x55\x29\xa7\x44\xf9\x5e\x96\xe2\xf1\x4a\xe6\xba\x42\xd0\xcd\xa7\x53\xd8\xb5\x34\x4a\x17\x33\x18\x88\x6d\xf2\x5c\x5a\x3b\x0b\x2b\xc6\xf0\xc2\x67\x62\xc7\xbe\x6b\x4d\x71\xca\xe5\xec\xd4\x4a\xea\xc6\x9d\x7c\x01\x81\x43\x8e\x76\xf9\x73\xcd\xc7\x18\x37\x00\x98\xc9\x43\x5d\xb2\xe5\x25\x28\xed\x5c\xdc\x11\x9e\xb8\xaf\x17\xf3\xc7\xcb\xe8\x19\x38\xeb\x66\xe7\xf1\x81\x93\xdc\x21\xa8\x8d\x76\x3a\xd7\x50\x9a\x0e\xa3\x61\x3c\xd5\x6e\x4f\x8a\xa8\xd5\x1d\x37\x91\xc7\x48\x51\xa8\xb4\x6b\x4e\xbb\xe6\x67\x94\x76\xcd\xbb\x94\x76\xcd\x69\xd7\x7c\xa0\xdd\xe4\x0b\xa7\x5d\x73\xda\x35\x3f\xa3\xb4\x6b\x3e\x30\xdc\xa4\x29\xd2\xae\x39\xea\xae\xb9\xbf\x76\x46\xe2\x60\xa3\x52\x5d\xaa\x95\xa2\xb6\xcf\xd9\x08\x94\x35\x96\x34\x31\x2f\x34\x49\x7b\x7e\x23\x07\x1f\xb4\x32\x6f\x8c\x72\x8f\xef\x74\xe5\xe4\x03\xa1\x1a\xf0\xd9\x16\x65\xa9\xef\x2f\x8d\xba\x53\xa5\x5c\xc8\x0f\x36\x17\xa5\x40\x00\x3b\x79\x77\x54\x72\x51\x8b\x6b\x55\x2a\x8c\xd3\x4c\x40\xa4\xe2\xec\xb6\x82\x59\x56\x18\x24\x07\x31\x9b\xd5\xa8\x59\x59\x96\x4f\x02\x05\x4c\x0d\x47\x8e\x6a\xa3\xf3\x5f\x75\x53\x01\x96\x91\x15\x9f\x11\xc5\xe7\xaa\x7c\xfc\xa2\xb5\xfb\x59\x95\xd2\x3e\x5a\x27\x01\xc4\x07\xce\xc8\x4d\x53\xbd\xb5\xbf\x18\xdd\x00\xd3\xbe\x63\x51\xfe\xfa\xaf\x51\xdd\xa0\x76\x14\xbf\xe9\x6a\xfd\xa5\x13\x7c\xdf\x37\x2b\x81\x0b\xe0\xd3\x7d\x9e\x95\x9f\x54\xd5\x3c\x7c\x6e\x6f\xdb\xc5\x87\x13\x96\x77\x92\x05\x9a\x84\x23\x6f\x69\xea\x86\x5a\x60\xc3\xed\xe3\x53\x34\xdc\x40\x33\xcd\x6e\x98\xa1\x62\xee\x55\x55\xe8\x7b\x3b\xd1\x5c\x2f\x56\x56\xbc\x33\xb2\x90\xd5\x7a\x6b\x77\x55\xa3\xd9\xdd\x4c\x36\xbe\xec\x66\x32\xe4\xb8\xcd\x02\x9d\xa8\x87\xe8\xfe\x8e\x13\xc6\x35\x75\x8a\x46\x9f\xdc\x98\xa7\x68\xf4\x8b\xc1\xa6\x68\xb4\x9f\x52\x34\x1a\x79\x21\x45\xa3\x9f\xbf\x93\xa2\xd1\xbe\xde\x53\x34\x7a\xc4\x40\x52\x34\xfa\xc0\x70\x93\xa6\x48\xd1\xe8\xa8\xd1\x68\xeb\x0a\x45\xc4\x0e\xd1\xa8\x42\xdb\xd4\xe7\x8a\x42\x7a\x43\x9b\x73\xd2\xac\x54\xd5\xc6\x36\x7f\x95\xd6\x8a\x85\xa4\x11\x08\x41\x51\x3b\xd0\x74\x3c\x08\x1b\xe7\xaf\x83\x89\x33\xe0\x4e\x97\xcd\x4a\xbe\x97\x77\x8a\x3c\x2c\x88\x9e\x1d\x57\xb4\xbd\xa2\x90\x8f\xac\x15\x3e\x41\x22\x18\x9e\xaf\xb5\xfd\x2e\xf2\xd1\xe3\xa3\xa8\x75\x13\xde\x86\x4b\x8f\x3d\xdf\xab\x75\xa7\x93\x4c\x77\xd7\xb2\xd1\xb5\x58\x80\xe7\x14\xa7\x97\xa7\x6d\x84\x19\x6f\x18\xc5\xfe\xb2\xcd\xf5\x24\x7c\x7e\x6a\xf7\xc3\x43\x0d\xc5\xf9\x26\x59\x5d\x1b\x29\x9a\xe1\xe2\xba\xd7\xe6\x56\x55\x8b\xf7\x8a\x60\x0f\xc4\x98\x39\xe0\xd2\x93\x50\x69\xc8\xfa\x87\xe0\xd1\x50\x45\x82\x44\xeb\x78\x29\xda\x70\xa4\x8e\x11\x85\x09\x89\xc8\x43\x3b\x7f\x58\x60\xc1\x98\x18\x87\x55\xe8\x3e\x82\x97\x3c\xce\x8b\x85\x31\xe6\x80\x1f\x07\xe3\x45\xc1\x02\xa2\x53\xcc\x08\x18\xbb\x07\xee\xcd\x6d\x38\xf6\xc5\x89\x7c\x31\xe3\x5e\x9c\xa8\x17\x1a\xf3\xe2\xe5\xf7\x83\xbb\x58\x78\x0f\xcb\xdf\xc1\xb2\xf7\xaf\xa3\x77\xaf\x78\x94\x6b\x12\x23\x0e\x6c\x88\x71\xd3\x8c\xc6\x4d\x4e\xae\xeb\xbe\x43\x49\x3b\x85\x48\x40\x8f\x01\x90\x5f\xc9\x25\x49\x2e\x49\x72\x49\x46\xf6\x90\x5c\x92\xdd\x36\x93\xa1\x18\xa6\xe4\x92\xf8\x29\xb9\x24\x4f\xf4\x3a\x5d\x12\xf2\x11\x08\xc0\x0a\x11\x28\xca\x5f\x41\x85\x12\xf4\x53\x40\xfb\xc8\x10\x02\x4c\x3f\x43\x53\xc3\x49\x63\x42\x4f\xd1\xb0\x05\x00\x78\x43\xe8\x44\x20\x9a\x01\x66\x2f\xc3\xfb\x01\x67\x96\xe7\xf5\x4c\x56\xe1\x94\xe1\xe9\x4c\x96\xd7\x01\x79\x37\xa8\x67\xc3\x39\x30\x06\x3d\x1a\xc4\x9b\x81\x99\x83\xd8\x16\xc8\xae\xf0\x6c\x0a\xcb\x9e\x8c\xb2\x25\x98\xc7\x02\x8e\x06\x11\x23\xd2\x24\x41\x22\xc1\x4c\x06\x8a\xab\xf6\xe0\xd4\x9f\xb8\xdd\x72\x12\x7d\xe2\xf6\x0c\xf9\x82\x27\xd1\xf4\xaf\x7c\x7d\x1e\x6f\x41\xe1\xe9\x38\x31\x45\x8b\x1c\x5a\xa5\x0b\x79\x25\x4b\x99\xbb\xe1\x0a\x8c\xbc\x5b\x8f\xc0\xc4\x91\xa3\xaa\x8d\xd2\x46\x0d\xe7\xaf\x20\x2c\xa2\xd9\xd3\xf7\xf2\xae\x14\xd6\xfa\x2e\x37\x90\x9f\x84\x41\xe0\x24\xbf\xfb\xd9\x53\xc9\xef\xde\x1d\x54\xf2\xbb\x93\xdf\xed\x7b\x2e\xf9\xdd\xc9\xef\x7e\x4e\xc9\xef\x1e\xd5\x73\xf2\xbb\x07\x9e\x4e\x7e\x37\xd5\xed\x48\xbf\x9b\x04\x5f\x41\xa4\x8e\x06\x5c\xe1\x03\x96\xa0\xc9\xe5\x08\xef\x11\x60\x95\x53\x8e\x90\x7c\x64\x6d\x44\x8a\xa6\xf4\x5f\x7d\x26\xc7\x03\x02\xb0\x20\x33\x7e\x43\x23\x41\xa0\x20\x09\x98\x5a\xc0\xd0\x27\x26\xe8\x13\xc0\x9a\xc0\xf2\x9d\x21\x7c\x89\xb8\x1f\x80\xa3\x49\xa0\xb6\x05\x42\x90\x80\x55\x37\x82\x1a\x01\x37\xd6\x3e\x18\xab\x31\x04\x1d\x22\xa6\x86\xb2\x4d\x5d\x97\x72\x25\x2b\x27\xca\x56\xca\xbd\xf3\x00\xec\xa9\x70\x88\x12\xd4\x2c\x23\xdb\x03\xfb\x68\x73\x57\x8e\x1d\x3b\xbe\x17\xc4\xf6\x81\x0c\x57\x02\xdc\xff\xe1\x12\x0e\xed\xfb\x80\x3d\x1f\xb2\xdf\x63\x9d\xef\xfa\x27\x12\xc7\x26\x41\x27\x8b\x8f\x47\x02\x33\x39\x0c\x83\x04\x9f\x43\x0e\xee\xc8\x31\x9d\x02\x69\xee\x54\x2e\xdf\xe6\xb9\x6e\x2a\x37\xca\x33\x70\xba\x94\x46\x78\xe7\x9a\x58\xb7\x98\x18\xc8\x9b\x1b\x99\x13\xfb\x09\x90\x83\xb7\x32\xce\xed\xc4\xf5\xb0\x85\x27\xe8\xcc\x6a\x6c\xcb\x47\xe8\xba\x6b\x7c\x25\x0d\xe8\x2f\xe8\x53\x46\x5f\xc7\xf1\x34\x30\xf8\x93\x91\x75\xa9\x72\x71\xd5\xc9\xf5\x57\xb9\xaa\x4b\xe1\x5e\x7c\x8d\x4f\xd2\x56\xd2\x89\x42\x38\x71\x88\x03\x94\x84\x8a\xaa\xd2\xce\xbf\x06\x8e\x7d\x00\xe1\xfd\xd9\x0e\xa8\x50\xea\x3b\xf3\xb2\xb1\x4e\x9a\xe1\xda\x0a\xe4\xb8\xe5\x83\x93\xa6\x12\xe5\xc7\xcb\x50\x6d\x01\xb3\x66\xd8\x4a\xf5\x83\xf8\x6a\xc4\xcd\x8d\xca\xfd\xf7\x95\xc9\xfe\x96\x52\x94\x6e\xf9\x6e\x29\xf3\xdb\xdf\x74\x21\x7d\x15\x22\xe2\x9c\xf9\x94\x5a\x14\x7f\x13\xa5\xa8\xf2\x51\x53\xb1\xdb\xcc\x55\xbb\x91\xff\x22\xaa\xc5\xb0\x54\x4e\x3f\x2f\xde\xd2\x25\x51\x8c\x48\xb4\x2a\x2b\x15\x31\xd3\x1d\xe1\x78\x04\xa8\x92\xa6\x63\x6a\xb1\xfb\x44\xae\x67\x7a\x83\x5c\xa3\xed\xc1\xda\x5d\xb1\x56\xe9\xea\xed\xcd\x8d\xaa\xba\x20\xc4\x8d\x5a\x8c\x89\x41\xe4\xa5\x92\x15\x51\x23\x06\xf5\x4e\x79\x20\x15\x1c\x88\x0a\xde\xf6\x6a\x9c\x47\xe8\xdb\x02\x13\x6b\x62\x84\xbd\x7e\xc1\x2e\x1f\x7b\x86\xd9\x61\x93\xd9\x47\x7e\x4e\x66\x3f\x99\xfd\x64\xf6\x43\x3f\x23\x4b\x66\x7f\x8f\x92\xd9\x4f\x66\x9f\x6b\xf6\xad\x13\x55\x71\xfd\xf8\xab\x2e\x5e\xf4\x3a\xd8\x9b\x75\xda\x88\x05\xcb\xa8\x8b\xf6\x30\x7e\xdd\xcb\xc1\x89\xf1\xe8\x14\xe8\x9b\x0f\x4b\xec\xda\x8b\xe8\x14\x6a\x90\x2f\x51\x2b\xef\x11\x15\xa9\xa0\x6e\xd5\x70\xaa\x1c\xf9\xb2\x4f\x41\x12\x2f\xfb\x14\xc5\x45\x3b\xaa\x83\x3f\x0c\x44\xad\xbd\x02\xeb\x3d\x70\xa6\x18\xec\x3f\x68\x3e\x7e\x7e\x28\x75\xb0\x3c\x2f\xcf\xd1\x93\x5e\x4b\x31\x7e\x25\x5c\xde\x42\x29\x75\xda\x7c\x5a\x4b\x3f\xcb\xd0\x6e\x1b\x59\x8d\x81\x42\xc6\x3b\xd0\x24\xce\x69\x10\x0b\x7f\x2b\x87\xdf\xbf\xd8\x30\x69\x4a\x1f\xa0\x95\x9e\x4f\xe2\x5a\x0e\x1f\x0d\xce\x6b\xa5\x74\xd6\xca\x9b\x8f\xed\x1d\x42\x0f\x5c\xf7\xd2\x42\x82\xaf\x06\xf4\xea\xb1\xd7\xed\xd7\x7c\x3d\xe0\x25\x78\xec\xb5\x91\x62\xa5\xaa\x05\xcb\xca\xef\xc0\x48\x1e\xde\x98\x0d\xbe\xd9\xd4\x85\x70\xf2\xca\x19\xe1\xe4\xe2\xc5\x6b\x3e\xb5\x61\x74\x59\xaa\x6a\xf1\xad\x6d\x20\x44\xb5\xd5\xc2\x38\xe5\x03\xe2\x8b\xb1\xf3\xf3\x8a\xdb\x90\xff\x16\x32\xd9\x77\xd2\xd8\x03\xdf\x32\xd0\xd4\x21\xf5\x71\xd1\xb7\xf1\x03\xd1\x9d\x75\xc2\x35\x7b\x4c\x1d\x62\xb5\xbe\xb6\xd2\xdc\xc9\xe2\x17\x59\x3d\x1d\x8f\x79\x42\x46\x2f\x4e\xc2\x86\x79\x5b\x2f\x85\xc5\xa5\xd3\x48\x61\x61\xce\x1c\xf8\xe2\x67\x7f\xea\x39\x9d\xdd\xfd\x45\x94\xf5\x52\xfc\x65\xfb\xb7\xf6\xf3\x3b\xf7\x68\xef\xe7\x2e\xc8\x25\x8b\x9d\xb4\xc4\xde\x31\xee\xfe\xf2\xff\x03\x00\x00\xff\xff\xcd\xbd\x1d\x47\x99\xe4\x03\x00") +var _kubedbCom_postgresesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x6d\x6f\xdc\x38\xf6\x2f\xf8\x7e\x3e\x05\x91\x59\xc0\xce\xc2\x76\x3a\x33\x8d\xbe\xb3\xc1\x60\x2e\x1c\xdb\xe9\xf1\x76\x27\xed\x49\x39\x9d\x0b\xfc\x71\xf7\x0f\x96\xc4\x72\x71\x2c\x89\x6a\x91\xb2\x53\xbd\xd8\xef\xbe\xe0\xa3\x28\x95\x24\x1e\xaa\x54\x8e\x3b\x53\x7c\x31\x93\x2e\x4b\x47\x7c\x3c\xe7\xf0\x3c\xfc\x0e\x2e\xe9\xaf\xa4\xe2\x94\x15\x6f\x10\x2e\x29\xf9\x22\x48\x21\xff\x8b\x9f\xdd\xff\x8d\x9f\x51\xf6\xea\xe1\xf5\x92\x08\xfc\xfa\x4f\xf7\xb4\x48\xdf\xa0\x8b\x9a\x0b\x96\x7f\x24\x9c\xd5\x55\x42\x2e\xc9\x8a\x16\x54\x50\x56\xfc\x29\x27\x02\xa7\x58\xe0\x37\x7f\x42\x28\xa9\x08\x96\x3f\xde\xd2\x9c\x70\x81\xf3\xf2\x0d\x2a\xea\x2c\xfb\x13\x42\x19\x5e\x92\x8c\xcb\x67\x10\xc2\x65\xf9\x06\xdd\xd7\x4b\x92\x2e\xff\x84\x50\x81\x73\xf2\x06\x95\x8c\x8b\xbb\x8a\x70\xc2\xcf\xf4\x5f\xce\x12\x96\xff\x89\x97\x24\x91\xef\xe0\x34\x55\x1f\xc3\xd9\x4d\x45\x0b\x41\xaa\x0b\x96\xd5\x79\xa1\xe8\x9d\xa2\xff\x7b\xf1\xcb\x87\x1b\x2c\xd6\x6f\xd0\x99\x7c\xe1\xec\x41\x0f\x4b\x7d\x4b\x53\xff\xd5\xfb\x45\x6c\x4a\xf2\x06\x71\x51\xd1\xe2\x6e\xeb\x75\x81\x45\xcd\xcf\xca\x35\xe6\xc4\x7b\x7d\xa1\x7e\x0e\xbe\x6d\x67\xe2\x6c\x6b\x1a\x3c\x5a\xe7\x77\xc4\x23\x94\x62\x21\xff\xf3\xae\x62\xb5\x9b\x13\x35\x72\xfd\xb8\x99\xb0\x04\x0b\x72\xc7\x2a\x6a\xff\xfb\x54\xbe\x87\xb9\x60\x15\x31\xff\xed\x66\x53\xfe\x07\x2e\x4b\x9e\xb0\xd4\xfe\x0d\xab\x05\x40\x48\xaf\xe3\x8d\x99\x68\xf5\x53\x46\xb9\xf8\xa9\xf5\xf3\xcf\x94\x0b\xf5\xa7\x32\xab\x2b\x9c\xf9\x0b\xa3\x7e\xe6\x6b\x56\x89\x0f\x4d\xd7\x4e\x51\x79\xa7\xff\x40\x8b\xbb\x3a\xc3\x55\xf3\xc6\x9f\x10\x2a\xe5\x8b\xd5\x03\xf9\x54\xdc\x17\xec\xb1\x78\x47\x49\x96\xf2\x37\x68\x85\x33\x35\xbf\x3c\x61\x72\x12\x14\xb9\x12\x27\x24\x95\xbf\xd5\xcb\xca\x6c\x32\xf3\x09\xbd\x28\x6f\xd0\xff\xfb\xff\xfd\x09\xa1\x07\x9c\xd1\x54\x4d\xae\xfe\x23\x2b\x49\x71\x7e\x73\xfd\xeb\x5f\x17\xc9\x9a\xe4\x58\xff\x28\x3f\xcc\x4a\x52\x09\x37\x63\x7a\xdb\xb9\x0d\xef\x7e\x43\x28\x25\x3c\xa9\x68\xa9\x28\xa2\x23\x49\x4a\x3f\x83\x52\xb9\xc5\x09\x47\x62\x4d\x90\xd9\x51\x24\x45\x5c\x7d\x06\xb1\x15\x12\x6b\xca\x51\x45\xd4\x10\x0b\xa1\xba\xe4\x91\x45\xf2\x11\x5c\x20\xb6\xfc\x37\x49\xc4\x19\x5a\xc8\x69\xa8\xb8\x9c\xbf\x3a\x4b\x51\xc2\x8a\x07\x52\x09\x54\x91\x84\xdd\x15\xf4\x77\x47\x99\x23\xc1\xd4\x27\x33\x2c\x88\x59\x0a\xdb\xd4\xce\x2f\x70\x26\x27\xa1\x26\x27\x08\x17\x29\xca\xf1\x06\x55\x44\x7e\x03\xd5\x85\x47\x4d\x3d\xc2\xcf\xd0\x7b\x56\x11\x44\x8b\x15\x7b\x83\xd6\x42\x94\xfc\xcd\xab\x57\x77\x54\xd8\x23\x9e\xb0\x3c\xaf\x0b\x2a\x36\xaf\x12\x56\x88\x8a\x2e\x6b\xc1\x2a\xfe\x2a\x25\x0f\x24\x7b\xc5\xe9\xdd\x29\xae\x92\x35\x15\x24\x11\x75\x45\x5e\xe1\x92\x9e\xaa\x8e\x17\x42\xf1\x89\x3c\xfd\xb3\x5b\xaa\x23\xaf\xa7\x9d\x33\xa2\x9b\xda\x7d\x83\xf3\x2e\x37\x21\xa2\x1c\x61\xf3\x9a\xee\x7f\x33\xbd\xf2\x27\x39\x2b\x1f\xaf\x16\xb7\xc8\x7e\x54\x2d\x41\x7b\xce\xd5\x6c\x37\xaf\xf1\x66\xe2\xe5\x44\xd1\x62\x45\x2a\xbd\x70\xab\x8a\xe5\x8a\x22\x29\xd2\x92\xd1\x42\xa8\xff\x48\x32\x4a\x8a\xf6\xa4\xf3\x7a\x99\x53\x21\x57\xfa\xb7\x9a\x70\x21\xd7\xe7\x0c\x5d\xe0\xa2\x60\x02\x2d\x09\xaa\x4b\x79\x84\xd3\x33\x74\x5d\xa0\x0b\x9c\x93\xec\x02\x73\xb2\xf7\x69\x97\x33\xcc\x4f\xe5\x94\x86\x27\xde\xe7\xcf\xb6\xf5\x1d\x0f\xc7\xa2\x5a\xbf\x20\x94\xe3\x2f\x3f\x93\xe2\x4e\x72\xb8\x1f\xfe\xda\xf9\x5b\x89\x85\xdc\x92\x6f\xd0\xff\xf3\x5f\xf8\xf4\xf7\xff\x7d\xfc\x5f\xa7\xf8\xf4\xf7\xef\x4e\xff\xaf\xff\xfd\x7f\xfe\x97\xf9\xc7\xcb\xff\xf9\x7f\x74\xde\xe9\xed\xa4\xfd\x59\x2f\xa0\xfb\xd9\xf2\xff\x50\xbf\xd5\x7c\x3d\x90\xaa\xdb\xf7\xd6\x26\x3b\xd7\x0f\xa1\x15\xab\xd0\x23\xce\xd0\x8a\x66\x84\x77\x07\x34\xf0\x01\xd5\x19\xc1\x2a\x7c\xb7\x35\x3f\xa1\xd7\x54\xff\x7e\xaf\xab\xde\x17\x21\x2f\xcb\x26\xf7\x09\xa6\xc5\xf6\x08\xfd\x36\x30\xb3\xed\x96\xe3\x2f\x17\xac\x28\x48\xa2\x36\xd3\x18\xb9\x15\xab\x72\x2c\xde\x48\xb6\xf3\xc3\xf7\xc1\xcf\x4a\xe6\x74\x47\xaa\xc1\xe7\xca\x8a\xac\xe8\x97\x1d\xbb\xdf\xbb\x49\xfc\xb6\xfc\xcb\x2e\xb3\xbc\xac\x93\x7b\x22\x0e\x53\x3c\x3a\xc5\x77\xc9\xe0\x90\x0e\x73\x3c\xd3\x1c\x67\x2c\xc1\xd9\x2e\xb3\x8c\x1f\xf9\x55\x86\xb9\xa0\xc9\xdb\x8c\x25\xf7\x0b\xa9\x2a\x8e\x75\xba\xa3\x05\x7d\x5e\x6c\xbd\xed\x09\x55\xa9\xd7\x9c\x7f\x5e\xa0\x4b\xca\xef\x47\x68\x22\x5f\x50\x63\xa1\xc4\xbb\x10\x38\x59\x93\x54\x2a\x39\x58\x29\xad\x19\x11\x47\x47\x1c\xad\x19\x17\x28\xc7\xc9\x9a\x16\x64\x94\xa4\xd4\x79\xc4\x9a\x14\x88\x7c\x29\x19\xd7\x94\xa4\xe4\x2e\x59\xda\x2b\x75\xe5\x37\xaa\x82\x08\xa2\x04\x6f\xca\x12\x2e\x65\x6e\x42\x4a\xc1\x5f\x19\x86\xfe\xea\x41\x5e\x26\x08\xff\x33\x7e\xe4\x44\x0f\x7b\x29\x87\xad\xf4\xeb\xa3\x91\xde\x40\x16\x42\xb6\x15\xbf\x95\x0b\x3e\xfa\x4c\x77\x09\xde\x49\xe1\xb4\xe1\x82\xe4\x6a\xb7\x68\x85\x93\x20\xdd\x55\x3d\x9f\x1b\x56\x07\x48\x22\xf4\x88\xa5\x66\xc3\x50\xce\xea\x42\x9c\xa1\x5b\x5a\xbe\x41\x57\x05\xaf\x2b\x43\x43\xd2\x5c\xb5\x3f\x15\xa4\x49\x39\xe2\x75\x59\xb2\x4a\x90\x14\x2d\x37\x8a\x86\x5a\x3f\x39\x1b\x58\xa9\x6a\x9a\xdc\x19\xba\xfa\x82\xf3\x32\x0b\xcd\x8f\x6c\x2f\xc8\x17\xf1\xfd\x8b\x13\xf4\xe2\xcb\x8a\xcb\xff\x2b\xc4\x8a\xbf\x38\x43\xd7\x79\x99\xd1\x84\x8a\xcc\x28\x6f\x95\x5e\xf1\x25\x31\x2f\x84\x3b\xbb\x42\x75\x21\xd5\x08\xba\xa2\x64\x3f\x5b\x24\xd8\x87\xdb\x5f\x2e\x7f\x79\x83\xd6\xec\x11\xa5\x0c\x3d\x12\xc9\x43\xa4\x32\x87\x48\x55\xb1\x8a\x23\x5a\x74\x97\x41\x2a\xa7\x41\xaa\x09\xcb\xcb\x8a\xe5\x94\x5b\xdd\xd8\x1c\x9f\xb1\x1d\x8b\xa0\xec\x15\x29\xe5\xae\x12\x54\x74\xae\x4b\x7d\xad\xbd\x73\x6f\xe5\x69\xb4\xaf\xda\xc1\x75\xf6\xad\xda\x97\xc1\x11\x36\xfb\xf6\x7a\x85\x58\x4e\x85\x20\xe9\x89\x22\x97\x92\x15\xae\x33\xc5\x52\xec\x43\x72\x27\xea\xaf\x04\xe9\x4a\x2d\xd7\xdb\x9b\xe8\x1d\xab\x6c\x07\xa5\x0e\xfe\x8a\xa7\xf8\xf5\x89\xea\xa6\xde\x38\x9b\x70\x4f\x5b\x63\xc6\x1c\xbd\x78\xfd\xe2\x0c\x2d\x68\x4e\x33\x5c\x65\x9b\x13\x7f\x0e\xdc\x73\x41\xaa\x52\x51\xb5\x1d\x92\x43\x7d\xf1\xdd\x0b\x74\xcc\x2a\xd5\xb3\x04\x17\x28\x23\xf8\x81\xe8\x6f\x6b\x4e\x14\xee\x28\xc9\x4b\xb1\x79\x79\x16\xda\x23\x9e\xcc\xfc\xeb\x5f\x40\xfb\x29\x24\x37\x91\x12\x07\x38\xfd\xa5\xc8\x36\x71\xfb\x69\xa1\xd7\x00\xbd\x10\x55\x4d\x5e\xc8\xf5\x5e\x31\x29\x53\xa4\x24\xe0\x44\xb3\xb0\x8f\x86\x72\x70\xfc\x76\xa2\xe4\xbe\xfc\x55\xad\xc7\x7b\xb9\x79\xd4\x36\xd2\x1f\xd8\xda\x6c\x41\x9a\xde\x66\x7c\xa1\x2c\x1b\x2f\x9e\x5c\x12\x21\xb7\x0e\x4b\xc6\x32\x82\xc7\xf7\x96\xfe\xca\xf5\x65\xdc\x3a\x7c\x2a\xe8\x6f\x35\x41\xd7\x97\x56\x16\x95\xa4\xe2\x94\x0b\xc9\xc9\x52\xca\xef\x9d\xb4\x0f\xf3\x64\xad\x3e\x1c\x9f\xe7\xf8\x77\x56\xa0\xab\xb7\x0b\xd3\xa5\x97\x5f\x71\xe2\x82\x0c\xb1\x22\xbf\xd5\xb4\x22\xe9\xd8\xac\x9d\xba\xb9\x0d\x2a\x88\x23\xda\x1f\xb2\x37\x46\xa9\x60\x81\xb5\xb6\x73\xfb\x46\x57\x53\x93\xbf\xa3\x4b\x2c\xb0\x52\xd8\x34\xb7\x1c\x9d\x12\x56\x34\x32\x5d\x9e\xb2\x25\x2d\x52\xc3\x64\x3d\x6d\x6b\x06\xc5\x28\x51\x12\xeb\xee\x3d\x4b\x23\xb5\xa3\x7f\xca\xae\x5d\xe8\xb7\x51\x2e\x5f\x47\x1f\x58\x41\x4e\x14\x23\x40\x92\x13\xe8\x7f\x06\xb7\xe2\xe7\x8a\x0a\x12\x64\x87\x60\x91\x29\xcf\xc1\x87\x1e\x1b\xca\xe8\x68\xa4\xc0\x94\x2f\xd9\x73\x95\xca\xa5\x52\x27\xca\x08\xcf\x65\xc6\x96\xd6\xfa\x30\x67\x4f\x3f\x7d\xbc\x8e\xee\xe8\xa7\x8f\xd7\x4f\xd7\xc9\x09\x8a\x73\x57\x6f\x6e\x74\x88\xf7\x35\x57\x16\x3b\xec\x69\x5a\x61\xc1\x2e\x69\xc0\xb5\xdd\x33\xab\xc7\x86\xf5\xdd\x38\x3d\x17\xd1\x55\x90\xa4\xaf\xe7\xce\xb5\x02\x5d\xab\x6d\x5f\x6b\x1f\xcd\xab\x2f\x25\x49\x84\xb3\x40\xa3\xc5\x1a\x4b\xa6\x89\xf2\x3a\x13\xb4\xcc\xf4\x46\x09\xcb\x54\xca\xef\xb9\x94\x30\x76\x4b\x21\x9c\x24\x8a\x03\xa1\x4b\x92\xd2\x04\x0b\x49\x53\xaa\xbe\x31\x14\xfb\x09\xbe\xc7\x05\xbe\x93\xe4\x14\xcf\x45\xb9\xfe\x4f\xb5\xc3\x61\x54\x8f\x59\xa1\xd6\xcd\xbd\x8a\x1f\x30\xcd\xf0\x92\x66\x54\x6c\xa4\x8e\xf2\xf2\xcc\x2a\x09\x5d\x7b\xe3\x76\x13\x0c\x71\x35\x65\xb3\x31\xa5\x49\x6a\xd7\xa5\xe9\xaf\xd2\xb7\xa4\x52\x83\x8e\x25\x9d\x57\x8f\x92\x61\xbe\x3c\x83\x6b\x5c\x6b\x52\x11\xf4\x48\xb3\xcc\xa8\x6d\xbe\xba\x26\xe7\x46\x9d\xa0\x8e\x36\x06\xdb\xbe\x61\x55\x07\x26\xb2\x2d\xd3\x0e\x3e\xf4\xe9\xe3\xf5\x2c\x62\x5d\xf2\xa8\x38\xb1\x2e\xdf\xe8\x15\xeb\xea\x0f\x0b\x52\x3d\xd0\x80\xde\xa5\xc5\xf7\x93\x49\xf6\xff\xdc\x3d\x87\x10\x27\x49\x45\x44\xb4\x1a\x20\x3b\x59\x18\x35\x40\x93\xd0\xd7\x65\x63\xfa\xe7\x7a\xc5\x83\x63\x5f\x18\xf6\x76\x6e\xd8\x9b\xd2\x2c\xe4\x5a\xff\x44\x42\x13\x07\xe6\x28\x8a\x41\x45\x0f\x50\x49\x02\x14\x38\x69\x11\xfd\x80\x9d\xee\x66\x35\xc6\x1f\xb3\x43\xda\xf5\x84\x27\xa4\x5c\xaf\x46\x4f\x47\x6b\x52\x2e\x48\xb9\x7e\xb7\x68\x9d\x6d\xf5\x1b\x7a\xb7\xd8\x3e\xb3\xa3\xf3\xa6\x36\x8b\x1a\x86\xa4\x51\xb2\xf4\x88\xa3\x8c\xae\x88\xa0\xa3\x83\x82\x9e\xe8\x9c\x15\x54\xb0\x2a\x68\xca\x6b\x6b\x03\x1f\xed\x1a\xa1\xf7\xe6\x7d\xed\xe5\x4d\x58\x96\x69\xdb\x3d\x62\x61\xcd\x46\x4d\x88\xed\x40\xdf\x15\x91\x18\x5b\x8e\x0b\x5d\xd1\xd7\xc1\x57\x7a\x31\x5e\x7d\xbc\x3a\xbf\x7c\x7f\x75\x96\xa7\x7f\x5e\xb3\xc7\x53\xc1\x4e\x6b\x4e\x4e\xa9\x08\x49\x58\x2a\x48\x0e\x30\x5d\x82\x8f\x8d\x7d\x14\x57\x15\x1e\x3f\x8b\x25\x16\xeb\xb8\x89\xfe\xa5\xd4\xf1\x31\x6f\xd0\x27\x2e\x35\x10\x1d\xb7\xa0\x76\x10\x49\x51\xc5\x98\x38\x41\x15\x16\xeb\x80\x89\x06\xe9\x8d\x64\x2c\x92\x75\x96\xe9\xb9\x17\x15\x21\x27\xbe\xa1\xe3\xd5\xd7\xd5\x4e\xbc\xe1\x06\x84\x46\x70\xb4\x4e\x2e\xec\x43\x68\xa0\xa7\xdb\xac\xb1\xf2\x29\xa4\x84\xa0\x91\x39\x5f\x38\x0a\xca\x02\xab\x8c\x9f\x62\x2d\x57\xe0\x3e\x28\x64\x10\x52\xf1\x1d\x2b\x56\xc9\x9d\x5a\xb5\x77\x15\x11\x89\x9a\x86\x57\x35\x27\xd5\x99\x91\x82\xef\x21\x36\xf6\xa7\x9b\x62\x88\x7c\x54\x1d\xff\x48\x56\xbb\x4d\xf0\x47\xb2\x42\x2a\xc6\x68\x45\x2a\x52\x24\xc4\xe8\x68\xc1\xb9\xc0\xb5\x58\x93\x42\xc8\x5b\x92\x64\xb0\x66\x1a\x7b\x67\x5c\xd9\x83\x9f\xd1\x2e\x86\x4a\x23\x34\x10\xac\xd2\xd7\xda\x93\xec\x5b\x5a\xcc\xcc\x8a\x68\xb3\x23\x7b\x90\x2a\x37\x79\x7c\xf5\xc8\xaa\x7b\x5a\xdc\x9d\x3e\x52\xb1\x3e\xd5\x9a\x01\x7f\xa5\x22\xf7\x5e\xfd\x59\xfd\x1f\xa0\x7f\xd6\x41\x74\x9e\xa6\x88\x49\x0e\x8d\x6a\x4e\x56\x75\x86\x56\x2a\x5c\xee\xcc\x0b\x5c\x3b\x51\x17\xf2\xb0\x75\x41\xb6\x9a\xa6\xff\x33\x34\xdd\x68\x8a\xf8\x0a\x28\x40\xea\xdb\x7c\x3c\x52\x05\x8d\xcb\xaf\xca\xb2\x95\x0a\xa7\x8c\x2b\x6a\x6a\xb5\xc3\x03\xf7\xb6\x36\x4e\x73\x5a\x3c\x35\xff\x9d\x49\x69\xb5\xba\xce\xce\xca\x28\x2d\xd2\xf1\x95\x68\xaf\xc2\x85\x7a\xbe\xad\x8d\x6a\x1a\xd6\x7b\x65\x3d\xf8\xa3\xb3\x81\xed\xad\x92\xa4\x52\x7d\x35\x7e\xfe\xb6\x97\xbf\xf7\xcc\x75\x97\x26\xdf\xf0\xdf\xb2\x53\xdd\x83\xd3\x32\x6d\xd6\xe6\xb9\xb8\xe5\x9f\xd6\xbc\xf8\x07\x70\xa6\xcf\xb2\x82\xe8\xa0\x40\xba\xb6\xff\x39\x86\xeb\x8c\x3b\x68\x34\x2a\xc6\x96\xeb\xb8\x1f\xa3\x90\x98\x60\x5d\x63\xdf\x08\x4b\x1f\x15\x91\x80\x73\x22\x48\xa5\x64\x82\xda\xbc\x89\x0e\x02\x93\xff\xfc\xa5\x24\xc5\x42\xe0\xe4\x3e\xe8\xcf\x39\x68\x19\xdf\x84\x96\x31\xcd\x8f\x6d\x04\x19\x4d\xdd\x1e\xa2\xa9\xd4\x96\x57\x1b\x2f\x4a\x03\xe2\xc3\xd6\x07\xee\x59\x70\xc1\xa7\xf5\x4d\x27\xac\x58\xd1\xbb\xf7\xb8\x84\x5b\xb9\xec\x1b\x1d\xd5\xc2\xfd\x6c\x8c\x57\xac\xce\xc6\x35\x8b\x92\x95\x75\x86\x85\x0e\xfd\x0f\xaf\x15\xf4\xa0\x1b\xb5\x31\xde\x11\xdd\x30\xb8\x9c\xa5\x04\x2d\xa9\xe6\x71\x35\x27\x52\xf1\x51\x79\x40\x01\x5d\x49\x36\xa5\x31\x48\xe9\x6f\xfa\xe1\x6b\x13\x3a\x11\x62\x49\xc4\x23\x21\x05\xfa\x4e\xe9\x56\xdf\xfd\x8f\xff\xf1\x3f\xc2\x92\xc3\x17\x6c\xdf\xfd\xf0\xfd\xf7\x67\xe8\x92\x56\x24\x11\x2a\x91\x08\x49\x5e\x62\x5c\xb7\xea\xf2\x8e\x01\x97\xec\x82\x09\x84\x57\x2b\xed\xdf\x53\xca\x0a\xe5\x56\xb2\x9d\xa1\x5b\xf9\x5f\x39\xbd\x5b\xab\x9e\xcb\x03\xc2\x8a\x55\x46\x03\x87\x58\x36\xd9\x17\xc3\x94\x98\x9a\x50\xae\x37\x84\xfe\x96\x8b\x8e\x53\x73\x7c\x82\x32\x7a\x1f\xee\xea\x8a\xff\x58\xb1\xba\x3c\xb1\x01\xa3\xa8\x22\x5c\x5e\x0c\x12\x5c\xc8\xde\xe9\x8f\x35\x6b\xc6\x89\xf8\x4a\x41\x51\x20\x23\x63\x6b\xd3\x5d\xb7\xb4\xb0\x13\x44\x70\xb2\x46\xf7\x64\x73\xaa\xb7\x4a\x89\x69\x85\x68\x38\xba\x4c\x4e\x8a\x8a\x0a\x51\x02\xa0\x23\xac\x12\x92\x7a\x87\x56\x29\x35\xcb\xf0\xa4\x97\x15\xfb\xb7\xde\x1c\xb4\x30\xfe\x24\x7b\x6d\xe0\x46\x31\x46\x8f\x6b\xc6\x8d\xa3\x83\x02\xbc\xa1\x6b\x22\x87\xa6\x56\x51\x2a\x0a\xa4\x10\xf6\x6e\xa8\x46\xab\xa2\xb5\xbc\xb9\x80\x98\x47\x32\xca\x65\x17\xef\xc9\x86\xdb\x91\xf5\xf5\xdc\x51\x55\xe7\x83\x87\xc5\xa1\xec\x63\x5d\x6c\x51\x37\x89\x42\x86\xed\xa9\x0e\x63\x35\x26\xc0\xf0\x9b\x3e\x3c\xae\x69\xb2\x96\x43\x97\xe4\x0c\x2d\x1b\x7a\xe1\x16\x0a\x36\x7e\xb3\x24\x9c\x88\xda\x2c\xad\x0a\x44\x95\x7d\x27\x9c\x23\xaa\x66\x38\xc7\xd5\xbd\xbc\xbd\x19\xfe\x16\xe6\x36\x37\x72\x92\x50\x6e\xf8\x56\x45\x32\x2c\xe8\x03\x71\x39\x6a\xb2\xdb\x46\xd3\x53\x7d\x3e\x3a\x0b\x9e\x37\x6d\x06\x47\xac\x42\x5c\xe0\x4a\x68\x2e\x21\xdf\x0b\x75\x06\x68\xb7\x6f\x1d\xaa\xf7\xb8\xf4\xb2\xcf\xe4\xf2\x28\x55\x55\xf5\xc0\xb0\xca\x70\x34\x80\x9d\xdb\xf0\x6c\xc5\x68\xa0\x48\x76\x07\xf2\x58\x4f\xb8\x8e\x19\x88\xd9\xde\xe1\x7e\xa1\x38\x55\x0d\x29\xc7\x50\x58\x68\xf6\xf4\x2e\x20\x3a\xb7\x52\xfb\x86\x9b\x64\x2b\x27\x6e\xe7\x8d\x48\x4c\x74\x1d\x76\x35\xe9\x26\x77\x6b\x9b\xab\xd8\x53\xe3\x69\x0a\x60\xb6\xa8\x9b\xd4\x36\x47\x84\x64\x8f\x10\x04\x12\x0e\x88\xca\x96\x28\x04\x93\x9c\x43\x60\xea\x16\x23\x36\xcd\xd7\xc1\xc2\x53\x37\x88\xb7\x4c\xb7\xad\xf3\xe1\xf8\x94\x66\x35\xab\x66\x02\x05\x03\xce\x55\xae\xd4\x57\x7b\xd4\xce\xd0\x7b\xc3\xed\xe4\x5e\x2c\x10\x5e\x72\x96\xd5\x42\x7f\x00\x76\xfe\x90\x23\xe1\x33\x4c\xd5\x41\x92\x91\x5c\x32\x7e\xc5\x05\xed\x63\x40\xa2\x1e\x13\x55\xe2\x4d\x73\x3a\x08\x3f\xd5\x2d\x8a\x2d\x40\x2e\x24\xba\x9d\x82\x7c\x46\xa7\x6a\xfc\x40\x57\x2c\xe0\xea\x08\x77\xc5\x42\xee\xff\xcf\xfb\xee\x1f\x7b\xef\x07\xdd\xe9\xc1\xbb\xc1\x6a\x10\x71\xa1\x22\x26\xe6\xff\x71\x4d\x54\x97\x5b\x5a\x8e\xd4\x08\x24\x0b\x92\x2a\x56\x70\xf0\x56\x2c\xe8\x6c\xfe\x10\xff\x83\x1a\xc4\x60\xd7\x64\x4e\xe1\x17\xe4\xc5\x35\x3a\xbe\xb0\x49\xbe\x2e\x88\xe7\xba\x10\xa4\x5a\xe1\x84\xbc\xf4\x2e\xce\xe3\x86\x3a\xf3\xa6\xcd\xb8\x5b\xe3\x22\xcd\xf4\x6d\x0d\x17\x88\x7c\x31\x08\x02\xf2\x7b\x69\x45\x1f\x48\x85\x8e\xcf\xb3\x72\x3d\xae\xdb\xac\x08\x16\x75\x35\x6e\x0c\x05\x5f\xb5\xab\xbe\x44\xed\xd1\xc9\xb9\xd4\x1d\x35\x7a\x7f\xe1\x1d\x2f\x6f\x18\x72\xc0\xc1\xdd\xa0\x67\x83\xfb\xd6\x83\x33\xb9\xb1\x94\xa4\x53\xac\x71\xc3\xea\xca\xb8\x8e\x56\xac\x02\xe9\xd3\x09\xab\xe4\xb5\x5a\x77\x0c\x73\x54\x91\x3b\x79\x07\xa8\xd4\x65\xc2\xc0\x0a\xd4\xf2\x87\xd9\xa2\x72\x67\x8d\x8b\xf6\xa2\x96\x8d\xc3\x20\xec\x5f\xb0\x0e\x85\x95\xb9\x8e\xb0\x07\x9a\x5a\x45\x49\xb9\x94\x8d\x12\x46\x39\x2a\x31\xe7\x00\x13\x88\xb9\x74\x61\xce\x59\x42\xb1\xbc\x41\x79\x6b\xab\x2f\x3f\x4a\xdd\x4a\x89\x20\x55\x1e\xca\x12\x45\x46\x87\xb1\xee\x40\x3f\xc5\x91\x21\x5c\x96\x59\xd0\xe9\x0d\x5e\x8c\x82\xa5\xe4\xa6\x5e\x66\x94\xaf\x17\x93\xac\xe4\x1f\x7a\x08\xe8\x28\x29\xdf\xf3\x0f\x1a\xef\x90\x65\x1d\x71\x52\x70\xaa\x14\x1d\x29\x82\xa4\x42\x06\x49\x40\x93\x37\x07\xcc\x1d\x24\x89\x7f\xda\x98\xca\x3f\xcc\x88\x20\xee\x4f\xde\x38\x7e\x85\x19\x51\xa5\x66\x2e\xdf\xfa\x54\x94\xfe\x7b\x28\xc1\x59\xc6\x8d\xae\xac\xad\x13\x94\x3b\x41\x02\xbb\x88\xab\x4b\xe7\xd2\xee\x46\x2a\x37\xaa\x9d\x1d\xca\x9d\x7a\xa2\xb6\x30\xe4\x8c\xf7\x4e\x2c\x47\x39\xd3\x89\xb4\x05\x62\x85\x9d\xfd\x13\x84\xb3\xcc\xfc\x1b\xa0\x27\x99\x15\xe6\x08\x57\xc4\x1c\x96\xd0\xd6\x3c\xb8\x2f\xbe\x09\xf7\xc5\x24\xc7\xe5\xc2\xdc\x4a\x35\x7b\xc0\xe9\xa9\xca\x3d\xd0\x86\xf4\xba\xd2\x01\x3f\x2b\x06\x09\xf2\x23\x4e\x00\xee\xe6\x01\x8d\xcd\x3b\x3c\x17\x1a\xf1\x26\xbc\x7b\x7d\xd4\x2f\xf8\x8e\x8f\x58\xaa\xd6\xcc\xfe\xda\xe9\x9d\x52\xa5\x08\x37\x1c\xef\xd4\x98\x03\x92\x08\xd3\x8e\xb9\x99\xbb\x73\xbd\xcd\x47\x9d\xf2\x11\xa4\xaa\xf4\x12\xfd\xd2\x11\x47\x29\x4b\xea\xdc\xa2\x4e\x29\x45\xa5\x09\x22\x30\xc8\x4f\xf3\xec\x52\x60\x06\x85\xea\xd7\xae\xfa\x72\xca\x1e\x8b\x47\x5c\xa5\xe7\x37\xa3\x69\x69\x6d\xd5\xb0\x79\xc7\x77\x2d\x59\x52\x48\xfe\x8e\x97\xac\x16\x41\x2e\x5f\xb2\xd4\xf7\x42\x1d\x3c\x4d\x07\x4f\xd3\xc1\xd3\x24\xdf\xd0\xaa\x68\x46\xb9\x90\x1a\x41\xeb\x64\x01\x7d\xe5\x72\x46\xf7\x60\xb2\xf7\xce\xbe\xe6\xdd\xdd\x2c\xa9\x18\x55\x57\x29\xbb\xfa\x14\x35\xbb\xc0\x53\xa0\x4d\x6e\x94\x56\x37\x66\x36\xef\x2b\x9a\x80\x5b\x43\xcf\x1c\x78\x09\x16\x0b\x92\x49\xc5\x0a\xb5\x1d\x7a\x40\xe3\x60\xc9\xd2\x37\x48\xa9\x12\x0a\xd9\x4e\xcd\x19\x3f\x31\xa8\x9d\x27\xe6\x6a\x5b\xa4\x1a\x94\xb2\xc4\x80\x24\x7f\xdd\xa4\xf0\x73\xa2\x09\x68\x30\x8e\x9b\x3c\x34\x88\xec\x38\xde\xda\xb2\xdf\x60\x3e\x1a\x95\xd7\x80\x3c\xca\x7f\x2a\xc8\xca\x1b\x88\xed\xb1\x69\x94\x23\xa9\x3a\x09\xa2\xe1\x4f\x48\x95\x73\xc4\x56\x2e\xee\x5a\x83\x4d\x3c\xbc\x7e\x01\x35\x07\x47\xbb\x64\x90\xdd\x54\x37\x60\xcb\x38\xea\x4e\xc9\x4d\xcb\x20\x2e\x37\x94\x90\x37\x28\xb9\xc7\x20\xde\x65\xaf\xef\x2d\x5f\xaa\x62\x1b\x7a\xb6\xf7\x38\x7c\xb8\xf9\x19\x29\x05\x66\x15\xb5\xca\x11\x56\x66\x74\x70\x90\x1d\x1c\x64\x81\xf6\x6c\x1d\x64\x9e\x70\x51\xdc\x80\x72\x3b\x70\xed\x34\x83\xca\x16\xf9\xae\x6f\xb5\x35\xfe\x35\x39\x6b\x46\x6f\x35\x6a\x28\xdc\x99\x25\xf7\xb1\xf5\xac\xb1\xaa\x1d\x59\x70\x74\x76\x76\x74\xa4\xfd\x6d\x8a\x2c\x9c\x64\x2d\x56\xa7\x7f\x43\xa4\x48\x58\xaa\xb7\xa2\xec\x6b\xc5\x85\x52\x4f\x1a\x7b\x48\xfc\xe8\x73\x33\xba\x56\x24\x83\xea\x27\x6c\x8b\x44\x32\x40\x8b\xc4\xf3\x6e\x07\xc5\xa2\x51\x27\x1c\x8a\x9f\x99\x00\x10\x16\xa9\xdf\x94\x5e\xe1\x90\x82\x51\x46\x15\xa0\xae\xe4\x3a\x0e\x54\xf7\x58\xff\x78\x96\x94\x35\xcc\x70\x83\x0c\x99\xb3\x9c\xe4\xac\xda\x9c\x38\x52\x92\x44\x8b\xb6\x79\xe2\x65\x84\xc6\x92\xd4\x55\x45\x0a\x91\x6d\x9e\x40\x77\x71\xb3\x09\xc9\xa7\x6e\x5a\x27\x6f\xc3\x79\x8e\x34\xc8\xb8\x95\x7f\x20\x53\x50\xd3\x4c\x26\xcc\x89\xb3\xb5\x2a\xd3\x02\x29\x1e\xd0\x03\xae\x38\x6c\x06\xd0\x34\x75\x25\xa5\x0f\x94\x33\xf0\x96\x1a\xb4\x8a\xc9\x0d\xca\x6a\x51\xd6\xc2\xf0\x55\x48\x7e\xb1\xd7\xf3\x35\x71\xc8\x92\x6e\xc7\x76\x34\xb7\xd7\xe1\x44\x09\x47\x2e\x7e\x22\xec\x57\xa7\x6e\x85\x86\x67\x37\xe8\x9b\x56\x71\xdb\xe3\x0a\xc6\x6a\x5c\x60\xb0\x30\x14\xab\x70\xc5\x84\x1e\x7c\x9d\xa0\x02\x10\x41\xe5\xb8\xb8\xa4\x11\xc9\x5b\x57\xe6\x8d\x76\x8c\xb5\x20\x79\xc9\x2a\x5c\x6d\x50\x6a\x6c\x32\xe3\xf1\x0e\xdb\x30\x02\x1e\x8e\xc0\xce\xf8\x6c\x6a\x54\x29\xad\xe6\xc8\xdf\xca\x49\x4a\xeb\x3c\xce\x8a\xf6\x59\x81\x9e\x1a\x40\x55\xeb\x2b\xd7\x84\xac\xe1\x6f\x89\x93\x71\x54\x5b\x3d\x4b\x94\x37\x13\xaa\x55\x05\x1f\x07\xf0\x85\xf1\x59\xe6\x04\x17\x56\x6b\x07\xd9\xe4\x0b\x96\x12\x39\xe3\x96\x98\xee\x9b\x67\xa6\x2b\x8c\x4b\x0b\x78\x36\x8f\x0d\xa1\x97\x52\x4d\x7a\xaf\x24\xe1\x93\x2c\x22\x8a\xca\x97\xa6\xbf\x93\x9f\xa5\x38\x8f\x44\x1a\x65\x02\x67\x08\x1b\x98\x8c\x95\x46\x4d\x76\xab\x6a\xf9\x40\xd8\x3c\xc5\x4c\x4d\x00\x77\x80\xac\x63\x44\xae\xaa\xec\x9b\xd6\x35\x94\x21\x2c\xe3\xda\x7f\x4c\x13\xbc\x0c\x5a\xb5\x34\x6d\xad\x7f\xb8\x95\xbc\x55\x50\xad\x5f\x68\x5e\xe7\xa8\xe6\xb2\xa7\xac\x68\x3f\x13\xa4\xea\x3a\xfa\xa8\x77\xac\x36\x59\xe5\xb4\x50\x44\xdb\xd7\x3b\xf9\x97\x85\x9d\xdf\xb0\x9f\xd3\x5d\xd4\x55\x36\x9b\x35\x69\xf2\x5a\xa9\xbf\xa6\x97\x46\x81\x63\x2b\x57\x5a\x64\xac\x39\x05\x47\x21\xdd\x62\x8d\xd4\xdc\x39\x2f\x05\xcd\xfc\x03\x03\x38\x29\x06\xbb\xd8\x2d\x4c\x5d\x98\x08\x9f\xad\xdd\xdd\xbf\xb9\x6b\x4e\xaa\xd3\xbb\x9a\xa6\x7b\xdb\xd6\x20\x2e\xbf\x4a\xc0\xfc\xfd\xdd\x45\x9b\xb1\xbf\xa3\xcb\x8a\xa0\x8b\x35\x2e\x0a\x92\xb5\xa1\xb6\xc7\xcd\xc0\x43\x30\xdc\xed\xfc\xdc\x2d\xa4\xed\x71\xa9\x31\x2b\x7a\xd4\x1f\x2f\x33\xf7\xd9\x00\xff\xc1\xc0\xa6\x61\x7e\xa2\x06\x8c\x7a\xff\x60\xd3\x59\x1d\x09\x33\xdd\x58\xc7\xde\x5d\x20\x81\xab\x3b\x22\x24\x11\x54\xd4\xf9\x92\x04\xcf\xf0\x73\x02\x38\x7e\x2e\xa9\xc8\xf3\x65\x0b\xeb\xe5\xf8\xfc\xf9\x43\x24\x5a\x54\xdf\x9a\x3e\xb2\x2a\x4b\x1f\x69\xaa\x03\xff\x38\x3a\x96\x64\x5f\x3e\x5f\xe8\xa6\xc7\x47\x9a\xee\x32\x6c\x63\x46\x55\xc3\x46\x6a\xdc\x26\x3d\x95\x92\x51\x3c\x08\xdd\x8e\xd5\xe7\x5f\xa2\x2b\xaa\xcc\x91\xea\xbf\xb4\x81\x2c\x5f\xd2\x02\x0b\xeb\xe4\x70\x0b\x14\xa4\x28\xc5\x80\x3c\x57\xd6\x7c\xcc\x89\x38\x41\xcb\x5a\x9b\xb3\x96\x4c\xac\x11\xa7\x79\x9d\x09\x5c\x10\x56\xf3\x6c\x13\xdc\x46\x5f\x6b\x69\x60\xf2\x38\x23\x5f\xf4\xa1\x80\xcb\x65\xf7\x4a\x5b\x3e\xdf\x91\x82\x54\x34\xb1\x0b\x0a\xba\xf0\xda\xa8\x5d\x15\x51\xa9\x2b\x8e\xbd\x72\xc2\xba\x56\xcc\x57\x45\xf1\x92\x04\x2d\x31\x27\x29\x2a\xb3\xfa\x8e\x8e\x7a\x52\xbe\x4a\x5c\x6e\x13\x25\x08\xb9\xf7\x38\x05\x1c\x96\x3d\x75\x80\x0f\xde\xd2\x22\x6e\xfb\x63\x5d\x53\x52\x92\x42\x32\x80\xc2\xdb\xa5\xe1\x3b\x80\x9a\x8e\xd9\x56\xc1\xf8\x6a\x9e\x57\xb0\x97\xc7\x73\xaf\xbe\x88\x0a\x4b\x06\x99\x4b\x56\x67\xa3\x42\xe8\x0a\xe1\x22\xcc\xcc\xf6\x1b\xec\xf7\x0d\xaa\x06\x5f\x19\x1a\x2d\x2e\x40\x1a\x12\x76\xed\x07\x48\x6b\x6e\x6c\x0e\x90\x0d\x60\xde\x0e\x44\x8e\xec\x25\xe5\xc8\xd3\xef\xaf\x57\xc3\x91\xde\x80\x74\x98\x40\xc0\x32\xdf\x0e\x57\x0c\xcf\x40\x7b\xd4\x07\xf0\x95\xbe\xf6\x8d\x45\x2f\x3f\x65\x5c\xe8\x2a\x63\xc9\x7d\x04\x8a\xd9\x3b\xfd\x7c\xc7\x5a\x62\x7e\x8c\x81\x31\x1b\xb1\x8e\x98\xb3\xed\x09\x58\x15\x2c\xa4\x3f\x32\x4a\x54\x55\xfc\x64\xf2\xbc\x29\xd0\x6e\xb4\x24\x92\xfd\x54\x75\x11\x40\x40\x02\xeb\x71\x58\x60\x3e\x01\x7e\xba\x5b\x81\x82\x13\xa1\x23\xa0\x15\x98\xac\x2d\x22\x1a\xf6\xa9\xfc\xc3\x28\x82\x45\x8b\x92\x54\xf1\xec\x12\x58\x3b\xbb\xf2\x24\x73\x9a\x12\x88\x91\x16\xab\xc9\xae\x48\x02\x08\x73\x85\x17\xc1\xd0\xbd\xfb\xf4\x29\x12\x43\x48\xbe\xd0\x99\x2b\xb3\x21\x94\x25\x52\xd5\xc9\x69\x6e\x6d\xc1\xb1\xb1\x95\xb7\x41\x0d\xbd\x27\xb4\x41\xde\x25\xe4\xc6\x95\xf2\x89\x2a\x39\x73\xf4\xe3\xc5\x55\xfb\xd5\xf6\xa1\xfb\xf1\xe2\x0a\x5d\x82\x4b\x03\x45\x15\x09\x74\xe6\xc9\x51\x92\x7b\x28\x12\x78\x97\x90\xa6\xf0\x51\x4a\xf9\xfd\x73\x81\x22\x3c\x54\x08\x7c\x16\x15\x02\xb7\xf6\x47\xb0\x03\x87\xf2\x80\x87\xf2\x80\xcf\xab\x3c\xe0\x93\xf2\x48\xb4\x37\x73\x7c\x99\x46\x6b\x41\xb6\xca\x9d\x6f\xcc\xba\xb9\x6c\xbc\x6b\xb4\x90\x42\x2d\x7c\xdd\xfe\xd4\x07\x2d\x68\xcb\x65\x49\x0a\x4f\x3e\xc5\x7b\xc6\x53\x05\xd9\x17\x00\x17\xdf\x7e\xfb\xc3\xb6\xf9\xc3\x9f\xc0\x20\xd9\x27\x9c\xe0\xb9\x8a\x12\xe9\xbd\xbb\xb3\x6a\x47\xc5\x47\x52\x8e\xce\x50\x47\xa1\xd3\x2f\x74\x2c\xd9\x54\xc8\x1f\x18\xa7\x82\x55\x1b\x84\x85\x02\xc6\xaa\x04\x4d\xea\x0c\x87\x3c\x62\xda\x8e\x7d\x86\x2e\xaf\x6e\x3e\x5e\x5d\x9c\xdf\x5e\x5d\xbe\x41\xf6\x2b\xd4\x57\xea\xcf\xd0\x2d\x6b\x0c\xdf\xa3\x54\x71\x13\x54\xa0\x63\x69\x9b\x3e\x9e\x18\x76\x8f\x8b\x26\x4a\x42\x41\xba\x05\xec\x52\xd7\x05\x15\x4d\x14\xa5\x2e\xbc\x93\xb1\xc2\x44\x14\x4a\xca\xc6\xfe\x7e\x47\xc5\x89\xf6\x8b\x87\x0b\x29\xca\x57\xdb\xbd\x50\xfc\x44\xc7\x54\xb9\x21\x8c\x5a\x4c\xc0\xd7\x3e\x1b\x8b\x14\x57\xd1\x4f\xfb\xd8\xdc\xcb\x46\xf6\xd9\x60\x6c\xdb\xc7\xf0\x0d\x66\x1b\xa3\x0d\x49\xa9\x7c\x74\x76\x64\x95\xc1\xac\x93\x28\x10\xa4\xd9\x74\xca\x82\xf4\xc9\x97\xdb\x7b\xf1\x0c\xa1\x5f\xc4\x9a\x54\x8f\x94\x03\xc0\xe1\x69\x17\x2a\xd0\x39\xdb\xe4\x07\xfc\x18\xf2\xf6\x57\xc2\x84\x0b\x13\x25\xb3\xf4\x3b\x6d\x80\x96\xee\xe8\x03\x29\xf4\xc4\xce\xc7\xa2\x6d\xd7\xa2\x56\xfb\x63\x73\x86\x3f\x7d\xfc\x79\xbe\xce\xe8\x13\x1b\xd5\x95\x0b\x96\xe7\x54\xa0\x35\xe6\x6b\x8b\xb3\xe2\xc5\x1e\x39\xae\x31\x4f\x1f\x61\x1c\x17\xb4\xde\x30\xae\xab\xe1\x5e\x22\xaa\x40\x1d\xfd\x68\x5f\xe9\x5c\xa0\xdd\xcf\xb6\x16\x54\x90\xdf\xa8\x7b\x56\x7c\x10\xe7\x50\x51\x04\x37\x96\x79\xb1\xf7\x49\x91\x6a\x44\xf0\xc8\xe2\x92\xf6\xb5\x0f\x1a\x3f\x54\xc7\x6b\x9b\x1f\xb5\xd2\x06\xc2\x01\x4a\x89\xc0\x34\xe3\xde\xfc\x0a\x56\xb2\x8c\xdd\xf5\x07\x47\x46\x4c\xce\x9f\x75\x46\xcb\x29\x3e\x95\xb3\x3e\xdf\x5d\x2b\xb6\x1e\x94\x4d\xd8\x91\x13\xd4\x8c\xd2\xdd\x31\x54\x6e\xcc\x7c\x75\x75\x9e\x6c\x22\xf6\xa0\x9c\xba\xd9\x09\xce\x85\xbd\xa5\x2a\xeb\x82\xad\x6f\xa1\xf8\x7c\x83\xc4\x51\x92\x2a\xa7\x5c\x32\x2f\x4f\x6b\x85\x5c\x65\xb7\xb4\xda\x27\x9a\xf4\xb9\x14\x56\x77\xa2\xc7\xd5\xda\xf1\x80\x7b\x10\x7b\x95\x1c\x2e\x94\xd8\xba\x5d\x2e\x5a\x1d\x88\x16\x73\x2d\x2b\x72\x4a\xbe\x50\xae\x6e\x1c\x2a\x27\x2d\x90\x2c\xd3\x08\x77\xbf\x8e\xa6\x35\x48\x5a\xf3\xa5\x7e\x2a\xdb\xc4\xc4\x4d\x36\xba\xa0\x33\x23\xab\xf0\x11\x9c\x65\x1b\x0d\x53\xaf\x30\x3e\xb4\xf9\x07\xdf\x05\x51\xe0\x58\x65\xdc\x4c\x65\x45\x1f\x68\x46\xee\xe4\x6d\x74\x4d\x8b\x3b\x0f\x93\x04\x67\x19\x7b\x24\x26\xad\x97\x04\x3d\x7d\xdd\xda\x2d\x5c\xf8\x91\xbd\xea\x4c\x7d\xf8\xe5\x16\x15\x44\x7f\x8a\x03\xf8\xcb\xf4\xdb\xaf\xec\x4c\x30\x77\xe3\xf4\xf4\x54\xd9\xd6\x8e\xff\x2d\xf5\xf8\x34\x7b\x89\x3e\x13\xd3\x3f\x79\xc1\x91\xdc\x26\x11\xe8\x71\xcd\x94\xb5\xa4\xe6\x80\x1a\x8b\xcd\x0e\x50\xc7\x5f\x27\xb1\x19\x0a\xaf\x24\x15\xa9\x34\x6b\x51\xad\xe6\x2b\x6d\x60\x30\xc6\x2f\x34\x1c\x35\xde\xfc\x59\xee\x03\x13\x25\x86\x75\x6a\xf4\xed\x74\x50\x7a\xb0\x43\xf9\x50\xa8\x11\x7c\x93\x67\xb4\xb8\x3f\x41\x54\x58\xb6\x2b\x77\x9d\x09\xdd\x2e\xee\xa1\xb8\x66\x15\xc1\x99\x27\xb5\x66\xd8\x39\xb3\x49\x24\x11\x6d\xb8\xbf\xdd\x94\x44\x9d\x67\xc7\x96\x4c\xf8\x98\x6f\xe4\x78\x11\x36\x5c\x3f\xaf\x99\x00\x9a\x35\x66\xe0\xff\x94\xc7\x20\x6b\x1e\x5d\x2f\x2e\x16\xd7\x9d\xe2\xc9\xfa\xb7\x96\x6b\x6a\x87\xc0\xf9\xb9\x22\xe7\x63\x84\xbf\x9a\x84\x79\x75\xf2\x64\x8d\xcb\xf3\x5a\xac\x2f\x29\x4f\xd8\x03\x89\xbc\x5c\x5a\xa8\x56\xe3\xf8\x41\xd4\x4e\xb1\xa6\x85\x2e\xfe\x79\x7e\xd3\xa9\x4c\x38\x93\x7e\xd2\xf4\x7c\x41\x78\xf4\x4d\xb4\xbf\xdf\x86\xd2\x5e\x7b\x7d\x70\xfa\x7d\x33\x4e\x3f\x75\x1a\xbf\x55\x47\x1f\x2d\xa8\xa0\x58\x30\x50\x86\x7a\xdb\xca\x53\x73\xc1\x72\x73\xa4\xae\x2d\x19\x15\x6a\xa2\x9c\x76\x2d\xca\xa0\x0d\xd6\xd4\xc3\xa0\x4a\xc7\x48\x38\x75\x18\xc9\x9d\x40\xf4\x13\x54\x90\xc7\x30\x51\xd5\x37\xea\x68\xfc\xdd\xa4\x1d\xc8\x7d\x8c\xb3\x7f\xbc\xf9\xbb\x39\x5a\x05\xce\xc9\x3f\x94\x0e\x13\x24\xd9\xc0\x5a\x38\xd3\x96\xa9\x52\x36\x9f\x49\x0b\x21\xfa\x5b\x1c\x9f\x33\xa6\x5e\x3d\xde\x7f\xd5\x38\xd3\xf3\xf8\x61\x4e\xbb\x64\x7b\x3d\xa2\xba\x67\xf7\x88\x5d\x87\x0f\xd6\x96\x23\x15\x73\x25\xb3\xd5\x13\x61\x6d\xb1\xc2\x05\x97\x8b\xd7\xf6\x19\x1d\x19\x97\xf0\x11\x3a\x16\x49\x09\xc4\xb4\xdc\x43\xda\x92\x1e\xa6\x59\x8b\x9f\x5d\xba\x52\xa8\x3f\x7b\xf2\x8f\xaa\x3d\x1e\x67\x82\x6b\x0d\xe0\x46\x11\x40\x3f\x53\x2e\x74\x0c\xba\xa6\x08\xa9\x6c\x43\x74\x82\x8a\xd4\xc5\x6e\x14\xa0\x7b\xf9\xdf\x38\x4d\xab\x37\x5a\x06\xaf\x8c\x4e\x54\xa9\x1b\x35\x83\x97\x2d\xb7\x9e\xff\x63\xb1\x29\x69\xa2\xae\xcf\xb7\x17\x37\x8a\x12\x47\x7f\xfb\x41\x63\x1d\xfd\xf5\x2f\x3f\x7c\x17\xdc\x02\x5f\x2f\x83\x68\x92\x8d\x2b\x2a\xbe\x1b\xe2\xd0\x08\xf9\x5f\x67\x53\x83\xa6\x45\x84\x2b\xc5\x6c\xd1\x54\xb6\xd6\xfb\xd2\x30\x6f\xb9\xc8\x4e\xb6\x04\x07\x1b\xa5\xde\x1d\xa2\x97\xbf\x81\xe8\x65\x9b\xa1\xa8\xf9\xd7\xae\xfc\x4f\xb3\xbe\x1b\xcb\xfa\x0c\x6b\x0b\x6f\x3b\x30\xeb\x6b\xb1\xb6\x20\xdd\xdd\x59\xdf\xac\x37\x7e\xfa\xdb\xd8\x91\x3a\x95\x12\x74\xf4\xef\xfe\x4a\xed\x6a\x39\x50\xd7\x9d\x90\xe9\x18\x34\xfa\x22\xc6\xb9\xf7\xe1\xdd\xa2\x63\x7f\x90\xbf\x58\x8f\x5e\xdb\x6b\x37\xce\x2a\x07\x3c\x7a\xbb\x5e\x5f\x8a\xd5\x28\xb8\xd3\x9e\x6d\x8e\xd6\x70\x4e\xbe\xb4\x2f\x8f\x72\x92\x38\xa9\x1e\xc2\xea\xd1\xce\xb6\xb0\xc0\x04\xa0\xaf\xec\xa2\x92\x33\xa1\x67\x07\xe2\x49\x7a\x52\xe7\xd4\x5e\x66\x19\xa6\x36\x54\xb1\xf9\xaa\x47\x0b\xf5\x8e\x75\x8b\xca\x33\xa7\xe3\xfc\x2a\xc9\x89\x25\x0f\x26\x9c\x43\xf0\xc2\x3a\xbb\xf3\xf9\xec\xbe\x59\x8c\xb0\xa7\x66\x5c\xbb\x72\xdb\x26\x7c\x4e\xeb\x92\x17\x19\xa6\xa3\x70\x4d\x1d\xde\xd0\xf7\xba\xfe\xe7\x42\x5b\x6c\x81\x25\x91\xda\x75\x54\x10\x46\xbd\x94\x5d\x10\x0f\x36\xb7\x7d\x05\x73\x3c\xce\x79\x26\xae\x7b\x33\x31\xa7\x76\x0b\x34\x3f\xe9\x5f\x12\xd9\xa5\x59\x98\xb2\xa2\x14\x1f\x07\x7b\x61\x5f\xeb\xa6\x77\x0f\x4c\x1f\xe4\x4a\xb1\x3d\xbd\x08\x73\x87\xac\x5d\x1b\x03\x16\x38\x0f\xfc\xeb\xce\x3f\xda\xbb\x4c\xf8\x1c\x99\xa4\x1b\x9c\xae\x4b\x9b\x21\x3e\xe7\x05\x0e\xc6\x72\xdc\x2e\xdc\x99\xa9\xac\x99\x60\xc5\xc4\x7c\xa5\x9b\x9e\x97\xdb\x31\x01\xfa\x89\x0b\x9d\xa3\x97\x85\xec\x27\x8e\x90\x0e\xed\x76\xde\x21\x55\xf4\xd6\x88\x60\x56\x58\x3f\x11\x0f\xfb\x97\x8d\xe9\x76\x86\x63\xff\x9f\x83\x7d\x30\x37\x82\xd2\x5c\x67\xbe\x4c\x23\xb3\x0a\xaf\x2f\x8d\x2a\x6c\x33\x07\xb9\xd9\x8e\xa8\xd9\x8f\xde\x9e\x0b\x0e\x0a\x90\x7c\x34\xaf\x5a\x91\x5e\x5f\xee\x7c\xbc\x59\x25\x1e\x59\x15\x8b\xc1\x72\xd3\x7a\xad\x13\xe6\x63\xfe\x06\x89\x3b\x06\x9d\xe0\xaf\x7c\x4a\x17\x2a\x7e\xc0\x1b\x62\x8f\xb3\x0e\x12\x57\xa1\xef\x9f\x7d\x47\x7b\xe4\xe8\x06\xa9\x8e\x1e\x6d\x7d\x74\x7b\x8f\x2c\xf0\x62\xe3\x8e\xf4\x5e\x8e\xec\x24\x31\x1d\x40\xe6\x80\x27\xbf\x4c\x42\xe6\x98\xed\x3e\xa5\x4f\x47\x24\xcb\xfa\xd5\xbc\x64\x92\x9e\xe5\x7a\x36\xcc\x0b\xbb\x63\x19\x1c\x3a\x28\x25\x60\x56\x66\x65\x87\xbb\x33\xc3\xd2\x95\xd5\xc7\x3f\xd7\x53\x54\x67\xc5\x2a\x05\xbb\x41\x35\x12\x47\x83\x8e\x6e\x70\x38\x4e\x4c\x4d\xb7\x1c\x97\x7c\x5c\x24\x4a\x56\xe5\x57\xe5\x99\x81\x2d\x4d\x2d\x52\xf5\x7e\xb8\x32\xd5\x76\xe5\xa9\xb0\x76\x0f\x28\x58\xb1\x5d\x67\x0a\x74\x79\xb7\x75\xa8\xc0\x75\xa6\x82\x54\x83\xb5\x2a\xba\x55\x28\x82\x14\xc7\xaa\x54\x0c\xd5\x9f\x00\x30\x7d\xbf\x3e\xc5\x57\xf1\x3a\x9a\x8d\x1e\xb5\xb1\x6c\xf5\x29\x1b\xbf\xae\x0f\x1d\xa0\x04\xc8\x94\xba\x52\x37\x8e\xba\x5e\x33\x03\xe0\xe3\x4e\x3a\xc2\x19\x03\xa1\xa2\x7b\x9b\xc0\x2b\xcf\x67\x42\x75\x36\x25\xc0\xf7\x12\x57\x4e\x20\xb1\x15\xb2\x27\xd4\x7b\xf0\x51\x8f\x5c\xc1\xbc\x86\x22\x02\x81\x7f\xe8\x26\x98\x9d\x2b\xd0\x0b\xf1\x25\x13\x80\x8b\x6a\x5b\x9b\xfb\xb6\x34\x87\x13\x44\x70\xb2\x46\xf7\x64\x73\xaa\x78\x0c\x98\x26\x42\x25\x56\x39\x7d\x6a\x9a\x2e\xb1\x68\x57\xdd\x6a\x2c\x4e\xd0\x82\x32\xb2\x35\x15\xce\x6d\xc6\x5b\xb3\xe7\x5c\xf6\x20\x30\x7b\xae\x69\x98\x1b\xe5\x0e\x3d\xae\x19\x37\x86\x1c\x63\xd4\xb9\x27\x1b\xc5\x4e\x12\x56\x80\xae\x14\x4d\x33\x04\xd4\xac\xa9\x58\x9e\x4e\x66\x9d\x3c\xb1\x24\x85\xd5\x68\x6f\xda\xc8\xb8\x9b\xd0\x1f\xc9\xbc\x03\x32\xb1\x33\x03\x45\x8a\xea\xc2\xeb\x91\xfe\x8e\x02\xb0\x54\x51\x58\x9c\x14\xb0\xe8\x66\x8f\xa6\x9a\xbb\x76\x48\x92\x02\xb0\xa6\xdc\xd4\xc4\x56\x54\x63\x66\x54\xef\x25\xb7\x09\x5a\x19\x8a\x9c\x88\xba\x84\x85\x1f\x35\x4d\xc5\x95\xc9\x91\x13\xce\x91\x86\xc9\xce\x71\x75\x4f\x52\x57\xdf\xe3\x4c\x15\xf6\x89\x59\x21\x0b\x03\x6a\xab\xe0\xe8\x9b\x12\xde\xf8\xe9\xa2\x11\x75\xe7\x64\x3b\x3a\x3b\xd3\xe5\x7a\xfa\xd2\x48\xc1\x74\x22\x99\x42\x57\x73\xc1\xa5\x8a\x57\x57\xca\xa5\x5a\x5a\x65\x29\x06\xd5\x87\xf0\x9b\xa9\x75\x89\xc1\x26\xcc\xa6\xc5\xf3\x41\xdd\xee\x49\xf0\xbe\xd2\x6d\xed\xc0\x30\xc3\x07\x1a\xb6\x1d\xd3\x6b\x34\xad\xca\x89\x6e\xf0\xca\x68\x03\x7d\x1f\xa8\x91\x16\x49\x12\xf9\x35\xd5\xfa\xab\xa5\x45\x53\xec\xaf\xae\xd6\xa9\x9b\x16\x4d\x75\xbc\xce\x9a\xae\xa0\x16\x4d\x14\x52\x71\x2d\x9a\x68\xb8\xba\x6a\x34\x49\x80\x16\x1c\xdf\xcd\xc9\x55\xdb\x9a\x16\x5f\xbf\xad\x69\xb1\x95\xdc\x9a\x06\xaf\xe9\xd6\xb4\xad\x73\xef\xb8\x78\xd9\x24\xff\x44\xcf\xa1\x2d\xe7\x96\xe3\xd2\x29\x15\x82\x9d\xa1\xf7\x46\x2a\x4c\x58\x16\x5c\x34\xe5\xdd\x4c\xda\x4f\x5b\xc4\x4c\x3a\x39\x6a\x90\x24\x23\x39\x29\x84\x01\x29\xb0\x64\x95\xd8\x89\x26\xea\x72\xfc\x8d\xdc\x88\x93\x58\xa6\x63\xd3\x98\x67\x5c\xbd\x25\xdd\x4e\xe5\xd2\x44\x3d\x1f\x29\xff\x22\x0b\x63\xfa\x2f\x85\xc3\x22\x9b\x06\x8d\xab\xd3\x2d\x2e\xba\x2e\x62\xb4\x5f\x21\x0e\x4f\x37\x78\x34\x5e\x04\x51\x15\xb7\x07\x8e\xc9\xd3\x6d\xc2\xde\xb5\x9a\xe7\x4e\x85\xde\x36\x2e\x6b\xa7\xa5\x31\x47\x8c\x96\x55\x48\xb2\x7b\x75\x19\xb0\xa2\xde\x14\x90\x89\x1c\x3d\xc4\xb6\xda\x7e\x03\x7c\x3e\x80\x05\xf1\xbd\x17\xc2\x37\x7a\x8f\x26\x70\xa0\xf2\xe6\xff\xcc\xef\xf4\xdb\x65\xca\xb7\x6a\x83\x47\xec\x0d\x40\xb9\xf2\xc9\xfd\x8e\x2c\x61\x1e\x25\x4b\xda\xc0\xd5\x23\xc5\xcc\xa3\xa8\xc6\x15\x3e\x6f\xda\xd4\xeb\x4c\x5c\x31\xf4\xa6\x01\xcb\xa2\xc7\x6b\x88\x36\x20\x77\xac\x40\x7a\x34\xd5\xed\x82\xea\x93\x4a\xa5\x37\x6d\xea\x74\xa3\x89\xe5\xd3\x9b\x16\x2e\xa4\x3e\x81\xa8\xde\x77\xae\xf8\x7a\x5f\x49\xf5\x49\x54\x77\x2b\xc3\xee\xf5\x6e\xea\x95\x17\x4d\x2b\xcd\xde\xb4\x60\x91\xf6\x49\xf3\xe2\x0a\xbb\xa3\x19\xca\xb5\x37\x6d\x87\x69\x9a\xa2\xe0\xa2\x09\xc5\xdc\x9b\x36\x49\x7b\x45\x07\x33\xc6\xc1\x8c\x11\xd5\x0e\x66\x0c\xbf\xed\x6c\xc6\x18\x28\x52\x1f\x3d\x85\x6d\x53\x48\x4f\xb9\xfa\x09\x67\x67\xbb\xbc\x7d\xa7\x70\x7d\x34\xcd\xd1\x42\xf7\xae\x84\x7d\x34\xd9\x79\x4b\xde\x37\x6d\x96\xe2\xf7\x4d\x9b\x2c\x4e\xa6\x15\xc4\x6f\x1a\xa0\x34\xfe\x24\x26\xd8\x94\xd2\xef\x2f\x92\x3f\xc1\x70\x36\x50\x54\xbf\x53\x2e\x7f\xc2\xf1\x98\xa7\xbc\xbe\xd7\xd5\x9d\x0a\xed\x37\x6d\x17\xcd\x77\x62\xf1\xfd\xa6\xc1\xca\xf0\x4f\x52\xc9\x56\x0e\x76\xbc\xa7\x20\xff\x24\x8a\x71\x45\xfc\x9b\xb6\x93\xb2\x1b\x5d\xd8\xdf\x7b\x35\x54\xe2\x7f\xea\xbc\xe6\x58\x58\xd6\xb6\x5d\xec\x7f\x12\xd1\xd6\x9d\xe2\x75\x18\x7f\x64\xbb\xed\x34\xc9\xb6\xf7\xbb\x6f\xe1\x46\x9a\x46\x55\xe8\xef\x36\x05\x2a\x27\xb9\xe4\x13\xef\xb7\xe9\xb7\x86\x89\xc3\x9d\x78\x69\x98\x66\xbe\x7f\x8e\xe6\xf8\xc8\x8f\xe8\xf0\xc6\xd9\xcc\x99\xa6\x0c\xda\x21\x3a\xa9\xdb\xed\xf9\xa3\x93\x0c\xd8\xc2\x21\x34\xe9\x3f\x36\x34\x69\x61\xca\x05\xf6\xc6\x25\xe9\x68\xa3\x08\xa2\x80\xb8\x24\x75\x75\x88\x20\x09\x88\x4b\x52\x3e\xda\xa8\x83\x74\x88\x4b\x3a\xc4\x25\xc5\xf6\xfd\x60\xd0\x3b\x18\xf4\x0e\x06\x3d\x70\x3b\xc4\x25\x1d\xe2\x92\xfe\xf0\x17\xa1\x43\x5c\xd2\x21\x2e\xa9\x15\x97\x64\x2e\x4c\x51\x4a\xb1\x09\x4a\x7a\xbe\x31\x49\xa6\x6c\xf1\x79\x92\xb0\xba\x10\xb7\xec\x9e\x00\x83\x06\x40\x97\xf9\x2d\xda\xc0\x81\x3f\x4d\x8c\x12\xae\x53\x2a\x6f\xcd\x13\xf7\xc8\xb9\x79\xdd\x5e\x50\xa5\x74\x2d\x52\x92\x3a\xba\x11\xfb\xc4\x70\x0a\x21\xe7\xe8\x0c\x9d\xa3\x8a\x24\xb4\xa4\x52\x7e\x28\x88\x16\xf5\x7b\xec\xed\xc9\xd5\x2a\xa4\x82\x93\x6c\x65\x2a\xab\x15\x5e\x25\xe3\x46\x45\x8c\xbf\x3c\xda\x41\xb6\xba\xae\xd5\x25\x66\x4b\x78\x45\x50\x35\x45\xa4\x2b\xf2\x6f\xab\xc1\x99\xb9\xb8\xf5\xbf\x95\x42\x31\xae\x9a\x66\xee\xf4\xde\xa0\x4d\x87\x71\x49\xa1\x68\x64\x8e\x56\x3c\x1f\x22\x5f\x4a\x5a\xa9\x83\xb1\x20\x09\x2b\xd2\xa9\x96\xa4\xab\x2e\x1d\xbb\xeb\x8c\xdf\x26\x6a\x09\xd3\x5a\x93\x52\x29\x98\x38\xa3\x29\x15\x1b\x17\xe2\x63\xea\x98\x63\x7d\x6a\xa3\x66\x5a\x6f\x5e\xde\x2c\x1f\xc2\x65\x59\x31\x9c\xac\x09\xf7\x66\x22\x46\x5c\x28\x45\x4f\xa3\x35\xb8\x6c\xd1\xac\xbe\xa3\x85\xbe\x8c\x28\xea\x52\xb3\x04\xe4\xe3\x37\xad\x62\xc2\x86\xd2\x75\x86\xeb\xef\x3a\xf3\xd9\x58\x9b\x92\xb6\x2c\x88\x6a\xa3\xe0\x8f\x98\xff\x31\x3d\x27\x00\xfc\x92\xf6\xf8\xcd\x6b\x1c\xb1\x2c\xb5\xe8\x91\x7f\xfb\x0e\x95\xa4\x4a\x0c\x87\x88\x73\x2d\x2a\x88\x41\xc1\x50\x26\x35\x72\x56\x59\x8c\xca\x9e\xcf\x44\x10\xfd\xcb\xf7\x68\xcd\xea\x8a\x9f\xf9\xf8\x09\xaf\xd5\x6f\xda\x76\xa3\x25\x60\x8c\xdd\x4b\xa0\x8c\x60\x2e\xd0\xeb\xef\x50\x4e\x8b\x5a\x2a\x3e\xe0\xd7\xbd\xcb\xd2\x0f\xdf\x47\x1e\xf0\xb8\x6b\x52\xdc\x05\x69\x3b\xdc\xcb\x9c\xe3\x52\xd7\x33\x32\xf7\xa4\x28\xdb\x82\x02\x89\x57\xbb\x57\xd7\x4d\x6b\xc7\x39\x58\x21\x1a\x79\xe7\x32\xbb\xa1\x10\x6c\x8f\xfc\x31\xee\x76\x11\x71\x4f\x88\xd2\x82\x22\x1e\x86\x5d\x22\x60\x90\x15\xc6\x41\x39\xf2\x0c\xa8\x63\xbf\xd5\x6c\xb9\x11\x70\x6c\x9d\x7f\xe9\xe7\xdb\xa0\x3a\xf6\xc7\x2d\x10\xd3\xd1\xf9\xd8\x2e\x4b\xd8\x60\x98\x8e\xbc\x08\xd5\xd4\xee\x2a\x56\x07\x73\xdf\x5b\x63\x53\x36\x1b\x6b\x23\x30\xe2\x02\x27\x09\xe1\x8a\x1b\x5d\xba\x32\xe2\xc1\x2d\x51\x30\xfd\x75\xd0\x76\xd8\x17\x12\xcd\x28\x86\xa8\x5d\x31\xa0\x93\x66\x9f\x38\xa2\xa0\x49\x82\xdc\x61\x2a\x72\x47\xb9\x88\xae\x82\xaa\x5f\x6a\x6f\x68\x4e\x8b\x3b\x55\x01\x0e\xe5\x75\x26\x68\x09\x48\x01\xb0\x33\xea\x08\x1a\xdd\xc0\x77\xbc\x60\xcf\x7a\x8f\xc3\x53\x24\x4f\x90\xc6\x81\x56\x0e\xbc\x63\xdb\x17\x44\x0a\xa1\x30\x4e\x54\x90\x38\x29\x71\x85\xed\xb2\x04\x69\x26\x2c\xcf\x31\x7f\x69\x7c\x40\x58\x05\x2e\x69\x11\x22\xb5\x81\x0a\x67\x6e\x1a\xfd\x90\x93\xb9\x36\xb2\x20\x05\x2e\x82\xfe\xde\xb6\x01\x50\xbd\x82\xd8\x63\x61\x2b\x9a\xe8\x12\xba\x91\x3b\xd8\xdc\x3b\xde\xe2\xe4\x9e\x14\xa9\xae\xc8\xae\xf6\x71\xba\x29\x70\x6e\x10\xb2\x5d\xbd\x69\x92\x5a\xfa\x41\xc2\x2e\x28\x47\xc3\xd2\x68\xc0\x18\x0b\x92\xa5\x95\xcd\xb9\x66\xaf\xe6\x91\x10\xb7\x9f\xb8\xd4\xc4\xc6\xf9\x19\xc8\x13\xc1\x49\x45\x1f\x12\x62\xd5\x5c\xd9\x91\xb9\x06\xf5\x10\xc4\x76\xdb\x1a\x96\xc1\x75\xa3\xde\x69\x52\xb2\xc4\x39\xb2\x15\xaa\x36\xce\x24\x8b\x0a\x2b\xf6\x16\x92\xa8\xbd\xa1\xe4\x0a\xce\x58\xa5\x19\x5a\x74\x58\x1f\xbd\xd1\x87\x82\x1b\x1e\x24\xf7\xab\x25\x1c\xa3\xea\xe8\xe3\xdb\xcb\x36\x7f\xfc\x88\x53\xc6\xd1\xdb\x8c\x25\xf7\xe8\x92\xa8\x2b\x50\xb8\xfe\x79\x17\xdc\x1c\x54\x92\x78\x94\x62\xa8\x2c\x5a\xb5\x4c\xe7\x2d\x8a\x76\x28\xd2\xf5\xcd\x14\xe9\xaa\x96\x61\x9b\xc7\x1f\xb5\x44\x57\x8e\xef\x62\xab\x50\xae\x09\xaa\xd4\xa1\x56\x2f\xdb\xca\xff\xf0\x0a\x84\xad\xa3\xf6\xe7\x35\x7b\x3c\x15\xec\xb4\xe6\xe4\x94\x06\x83\xfe\xc0\xe3\xba\x27\x1b\xf9\x4c\xdc\xc8\x7e\xd2\x2f\xb5\x2e\xca\x82\x29\xb3\xba\xfa\x5d\x6a\x39\x1f\xdf\x5e\x4a\x51\x09\xc7\x4c\xa6\x1c\xbd\x22\x22\x79\x95\x90\x72\xfd\xca\x74\xeb\xd9\x4d\x57\xce\x0a\x2a\x58\x15\x59\x54\xfd\x1c\x25\x2c\xcb\x0c\xe2\x19\x5b\xa1\x0b\x52\xae\x1d\xa9\x28\x1f\xd4\x1e\xe7\xe0\xeb\x95\x63\x2a\x19\x8b\x2b\x11\xe3\x1d\x2d\xf9\xae\x39\x59\xde\x46\xaa\x96\xe9\xac\xd5\xd7\x9f\x62\x6b\xed\xa1\xaa\x05\x18\x18\x75\x08\xfb\xb4\xa7\x2a\xd5\x33\xd9\xad\xfb\xae\x7e\x75\xb4\xb0\xaf\xa9\xa0\x3e\xcf\x77\x1c\x55\xcc\xca\x7e\xbe\xc5\x12\xd1\xf5\x4a\x5f\x8b\x52\x92\x22\xf6\x40\xaa\x8a\xa6\x84\x5b\x56\x1c\xc5\x31\x0b\x9a\x3d\x15\x8f\x3c\xd4\xe5\xfa\x26\xea\x72\x45\x5f\x78\x3d\x66\x2b\xdf\xdd\x66\xb6\x38\xcd\x29\x20\x77\xf9\x59\x49\x72\x60\x65\x2d\xa9\xb7\x8d\x3e\x61\x85\xf8\xae\x57\x47\x9e\xe0\x8c\x5c\xff\x02\xbe\x3e\x2e\xf4\xf3\xed\x1b\xa4\xfd\xd1\xab\x9a\xb0\x03\x22\xfb\x4f\xee\x90\xa1\x82\xa5\xe3\x9e\x9e\x43\xcd\x84\xee\xd5\xcc\x3b\x1f\x1a\x92\x7d\x2e\x35\xe1\x0e\x0b\xf2\x88\xe3\xb4\x84\x5b\x3b\xc4\xa6\x02\x93\x8e\x9f\x31\x1b\xe6\xfc\xe6\x1a\xfd\xa8\xe9\xce\x57\x9c\xa1\x62\x42\x6b\xbc\x97\x2c\xc7\x34\xb2\x94\xae\x57\x0e\xc7\xef\xe8\x8d\x23\x8a\x34\xd5\xe0\xb2\x78\xf5\x81\x57\xf4\xae\x96\x37\x64\x73\x6b\x3d\x60\xda\x07\x86\xbe\x3f\xe5\xaa\xd1\xad\x3c\xf3\xa2\x4d\xf5\x70\xfa\x52\x70\xe8\x76\x57\x28\xb1\xe4\xc2\x5c\x10\x27\x05\xa7\xca\x67\xeb\x05\x41\x29\xa5\x4b\xac\x01\x8e\x26\x97\xc3\xa1\x15\xb4\x13\xf4\x33\xbb\xa3\x85\xe5\x0e\xcc\x84\x39\xac\x30\xcd\x42\xd3\x78\xd0\x98\xbe\x09\x8d\x89\xf3\xec\xaa\xc0\xcb\x2c\xec\x14\x6f\x0b\xae\x0c\xab\x68\x13\xa2\xde\x7d\x95\x52\x2e\xff\x1f\x2d\x16\x3f\x2b\x87\x51\x5d\x40\x6f\x10\xca\xa5\x62\xd8\xb3\xc3\xd6\xd1\x4c\x63\xbe\x73\xac\x79\x62\x74\x3d\x82\xeb\x22\x95\xc3\x20\xbc\x15\x97\x69\xa8\xe9\x12\x0c\x50\x6f\x92\x89\x37\x5b\x12\x74\xbb\xa6\xc9\xfd\x8d\xe7\x37\x62\x95\xfc\xad\xf0\x7e\x72\x02\x16\x72\x9c\xbb\xef\xce\xc5\xf8\xcd\x30\x6f\x62\xcd\x17\xb7\x9e\x44\x5b\x98\xa9\x92\x44\x10\xe6\x9c\x25\x14\xee\x78\x54\xc6\xb7\x46\x24\xa6\x4a\x24\xce\x37\x3c\xa5\x05\xed\x24\xb7\xed\x46\x30\x0a\x1c\xe6\x9e\x1c\x86\xb8\x17\xcd\x2c\xcd\x36\x24\xbd\x15\xa3\x6b\xf5\xdd\xb6\xaa\xf3\x59\xaf\x9f\xf6\x85\x39\x5f\x17\xb0\x30\x86\x5d\x78\xab\xd3\x9a\xd2\xac\x9d\xa5\xf7\xab\xf4\x85\x4f\x8e\x0a\x5b\x79\x52\xaf\x9a\xd1\x42\x47\x9f\x71\xba\xc1\xf8\x53\x21\xbd\x1d\x76\x7f\x0a\x26\x3d\xf7\x59\x77\x3a\x01\x0a\xfa\x37\xe3\x46\x53\xcc\xa8\x64\x65\x9d\xe1\x80\xc7\xda\x2f\xa8\xb8\xab\x07\x45\xf7\x61\x0e\xb7\xda\xd4\x0a\x33\x03\x89\x75\x9d\x62\x33\x61\xbd\xbb\x5b\x8c\x06\x52\x6c\x06\x6a\xf9\x52\x1d\xfa\xee\x87\xef\xbf\xef\x2b\x4f\xd3\x2a\x3f\x13\xd6\xbb\x80\xe5\x69\x3a\x09\x72\x30\xa1\x3d\x5a\x9e\xa6\x5b\x7e\x26\x3c\xa5\x80\xf2\x34\x91\x09\x6d\xfb\xa9\x3f\x03\xf2\x24\x44\x64\xe5\xdb\x5c\x7b\x10\x7f\x1d\xcb\xc5\x1f\xcc\xb0\x07\xc8\xa2\x56\x06\x3e\x24\xaf\x1e\xe0\xb3\x54\x79\xf7\xb3\x66\xd3\x47\xe4\xd0\xb7\x32\xe3\x83\x84\xc7\x32\xe7\x07\xf3\xe1\xe1\x77\x2d\x45\x0b\x94\x05\x1f\xa4\x09\xae\xc9\x01\x0e\x80\x06\x65\xbc\xb7\xf3\xd8\x61\xfc\x01\x92\x35\x38\xa5\xbe\xd2\x48\x4e\xbb\xcb\x53\x07\x5c\xa6\xa0\x99\xec\x71\x79\x3e\xe0\xac\xf5\x59\x72\xd5\x23\x03\xa0\xe1\x79\xe9\x31\x42\x13\x64\x77\xd0\xad\x37\x07\x7d\x20\xa7\x1c\x48\xb2\x9d\x79\x1e\xc8\x24\x07\xd2\x54\xf9\xe6\xa0\xfc\x71\x2b\xfe\x80\x84\x03\x42\xb2\x25\x04\xc1\x24\xe7\x10\x95\xba\xc5\x67\x7c\xc7\x26\x30\xc0\x93\x17\x40\x39\xdd\x91\xd8\x8a\xc3\x99\xdc\xdb\x99\xd9\x40\x92\xef\x7b\x18\xe6\x70\x3e\x36\x90\xa8\x07\x16\x32\x29\x0b\x3b\x8a\x2d\xc0\x73\x22\x60\x79\xd6\xc0\xac\x89\xd9\x93\x20\xe0\x39\xb8\xf0\xcc\x5b\x07\xf2\x1f\x1c\x4e\x5c\xc2\x6d\xac\x09\x3a\xbe\xfe\xbe\x6f\x3b\x35\x57\x3f\xbb\x3b\x75\xe8\xa4\x03\x0e\x0f\xaf\x94\xe2\xf4\x4f\x70\xf9\x43\xf0\xad\x0b\xbb\x36\xeb\x1e\xb0\x51\xc1\xdd\xde\x0c\xfa\x8d\x5f\x16\x1d\xd7\xa3\xfb\xd9\x2a\xc8\xc6\xab\x38\xee\x7a\x3c\x78\x1c\xbf\xfd\x2a\xed\x07\xf7\xd8\x74\xf7\x18\x6f\x41\x72\x5a\x03\x95\xd6\x2b\x21\x1e\x32\xb6\x34\x05\x29\x34\xd3\x76\x87\xf4\xfc\xe6\x1a\x25\x15\x51\x19\xd8\x38\xe3\x67\x68\x02\x42\x91\x75\x44\x28\x0d\x95\xbb\x9b\x27\x16\x82\xe4\xa5\x08\x6f\xa0\x83\x77\xec\x9b\xf0\x8e\x4d\x34\xa9\xff\xea\x5e\xb3\xf6\x8f\x75\x9d\xe3\xe2\x54\x9e\x72\xe5\x27\x33\xf6\x76\x98\x4d\xbd\x23\x7d\xce\x90\xcd\x67\x51\x0b\xa3\x72\xba\x54\x5a\x9d\x2e\xa2\x0e\xba\x9c\x2b\x2c\x37\xa7\x02\xec\xc1\x03\xa1\xe8\x4e\x9c\x33\x5d\xcf\xa4\xc3\x1d\x12\x56\x82\x67\xcc\x48\x69\x33\x50\x37\x7f\x96\x11\x78\x45\x53\x7c\xab\x0e\x84\xb4\x56\xa1\x6e\x54\xe6\x69\x43\xa5\x85\x53\x66\x80\xc7\x70\x96\xb1\x47\x40\x52\xe3\x9a\xb4\x34\x03\xb9\x2f\xe4\x58\x4d\x32\xff\x92\xa0\x9c\x56\x15\xab\x8c\xe7\x04\x60\x26\x6c\xb6\x8b\x8a\x0e\x91\xf7\x57\x52\xe9\x2b\x5a\x65\x82\x05\x16\x44\x78\xd3\x0d\x51\x00\x71\xa1\x93\x9b\xe4\xbf\x6d\x4c\xa7\xae\x07\x65\xf8\xe4\x92\xac\xf1\x03\x65\x75\xa5\xa8\x43\x48\xbe\x30\xaf\x4a\xd1\x8d\x36\xac\x76\xf5\xd4\x6b\x95\xe6\xe0\x66\x17\x5c\x98\xdd\x5b\xe7\x0f\xcd\xcb\xea\xca\x9d\x32\x6b\x89\x3b\x25\x5f\x28\x17\xf1\x73\x69\x97\xd8\x22\xf2\x3f\xa5\x1a\x5b\x2f\x43\xc5\x5e\x40\x9f\x7b\xe0\xa5\xd4\x17\x7e\x0d\xa6\xcf\xb5\x8f\xa5\xff\x56\x5b\x2d\x7e\x58\xa8\x3f\xed\xa2\x14\x1b\xcc\x0b\xae\x35\x46\x93\xd6\x72\x50\x8c\xc7\xda\x1f\x44\x31\x76\xe1\x03\x19\x4d\x36\xd7\x97\x71\x2a\xa2\x0b\x1b\x90\x2f\xa3\xb7\x98\x93\x14\xbd\xc7\x05\xbe\xd3\x36\x95\xe3\xc5\xcd\xdb\xf7\xe1\x8a\x01\x65\xc5\x94\x7d\xe8\xfa\xb2\xc7\x01\xed\xe4\xaa\xfe\xc8\x87\xf9\x32\x37\x3b\x63\x8f\x56\x1e\x66\x1e\xfd\x8c\x39\xa9\x56\xc0\x43\x6a\x4f\x6d\x03\x8f\xe8\x60\x00\x8b\x8b\xc4\xbb\xec\xe3\x21\x4f\xef\xe7\xe9\x26\xcc\xc9\xdf\x0c\x65\x37\x06\x1d\x7c\xa4\x22\x7c\xd0\x77\x0f\xe1\x67\x75\x35\x6a\xd1\x02\x4c\x4a\xb0\x8b\xfc\xaf\xbb\x74\x70\x59\x27\xf7\xe3\xe1\x09\xa0\x85\x23\x45\xaa\xf0\x64\x76\x26\x54\x56\x64\x45\xbf\xec\x4c\xa6\x22\x77\x81\x92\x76\xb3\x4c\xbd\x3e\xed\x8b\xa0\x9d\x2f\xf8\x31\xfe\x48\x57\x3b\x6d\xb4\xa6\x9a\xcc\xb3\x58\x81\xc0\xd4\x8d\xfc\x79\xf0\x4f\x3a\x3e\x6b\xd1\x5b\xeb\xa2\xc5\xb0\x2e\xbc\x07\x55\x00\x53\xe1\x95\x50\x31\x85\xf2\x6c\x10\x2d\x4a\x6a\x2e\x58\xee\x82\xbf\xfa\xe3\x1e\x15\x2f\x96\x1a\x79\x8a\x05\x5e\x62\x4e\xd0\x31\x3d\x23\xa8\x64\x5c\xdc\x55\x84\xff\x96\x9d\xc9\xf7\x5f\x6e\xbb\xc8\x0d\x74\x73\xbf\x7b\xd8\x5c\x3a\xfc\xd8\x33\x1d\xc6\xab\x5e\x71\xc0\x78\x4e\x4d\xdf\x7e\x68\x8b\xe4\x18\xe8\xf2\xd8\x2e\xc2\x8f\xfc\x2a\xc3\x5c\xd0\x44\x65\xf9\x4b\x29\xd6\xbb\x97\x3b\xc9\xa3\x9f\x17\x5b\x6f\xb5\xb4\xcc\x02\x9d\x7f\x5e\xa0\x4b\xca\xef\xc7\x4b\x6c\xb8\x50\x33\x9b\xf0\xa1\x9c\xc2\x46\xbf\x3c\x3a\x6a\x6b\x98\x36\xc8\xa4\xb0\xf5\x5b\xfa\x49\x32\x6b\x30\xdf\xd9\xf8\x8d\x1f\x39\xd1\xc3\x5c\xca\x61\xca\x3f\xf7\x66\x6f\x87\x8e\xe9\xb8\x5e\x3b\x05\x46\xc0\xc2\x04\x0c\x9e\xd5\x08\xf8\x80\x2e\x3c\xc0\x20\x4d\x08\x6c\xc0\x00\x2c\xc0\x20\x4d\x80\x22\x3c\x04\x07\x30\x48\x73\xae\xa5\x1e\xfc\xc0\x24\xbc\x80\x16\x1e\xc0\xe8\x1c\x07\x70\x02\x82\x4c\xb8\xc4\x95\xa0\x62\x44\x0a\x6e\xe7\xd2\xb9\x57\x6c\xe7\x07\xf6\x9b\xd9\x57\xc3\xcb\xb9\x42\x2c\xa7\x42\x58\xa7\x7e\xda\xa4\x1c\xd9\x97\xe5\xa5\xea\xa1\xb1\x84\x41\x20\x27\xde\x39\x84\x22\xf4\x2a\x25\x0f\xaf\x78\x8a\x5f\x9f\xa8\x6e\x71\xe3\x07\x14\xad\x31\x60\x8e\x5e\xbc\x7e\x71\x86\x16\x34\xa7\x19\xae\xb2\x91\xca\x67\xde\x58\x9b\xf7\x25\xc3\xb7\x1f\x52\xd9\x52\xdf\xbd\x40\xc7\xac\x52\x5f\x4c\x70\x81\x32\x82\x47\xca\xe2\x99\x08\x68\xc9\x11\x36\x88\xe4\xa5\xd8\xbc\x1c\xf4\xe4\x43\x7c\xf7\x61\x6f\x7d\xc8\x9d\xd1\x89\x33\x35\x73\xf6\x42\x54\x35\x79\xa1\xbc\x19\xca\x0d\x21\xb9\x2b\x27\xa2\xed\x8e\xb0\x03\x19\x1c\x6d\xc7\x4f\xa1\x6c\x44\x8a\xf0\xd9\xd8\x66\x78\xa1\x1c\x28\x23\x7c\xe1\x89\x38\x37\x02\xb9\x4e\x34\xd5\xe1\xeb\x70\x7b\x7e\x3f\x29\x83\xae\xbc\xbf\xda\x2a\xd2\x4d\xee\x63\xea\x4b\x44\x39\x77\xe7\x9f\x17\x83\x73\x70\x7c\x9e\xe3\xdf\x59\x81\xae\xde\x5a\x23\xf2\xcb\x27\x13\x69\x28\xcc\x68\xc6\x2e\x6c\xa7\x6e\xce\xe2\x74\x40\x84\xf0\xef\x75\x45\xa4\xe2\x10\xd4\x42\xce\xed\x93\x5d\xcd\x43\xfe\xae\x63\x2e\xd5\x5f\x7d\xb4\xc2\xde\x91\xea\x34\xc4\x22\x45\x4b\x6a\xed\x5c\xbe\x16\x31\x41\xe0\x27\x8a\x83\xdf\x8d\x05\x3a\xb7\xf7\xcc\x3f\x65\x17\x2e\xf4\x5b\x3a\xe0\x0b\x7d\x60\x05\x39\x51\x07\x11\xc9\x93\x68\xfe\xf9\xb9\xa2\x82\x0c\xb2\x93\xa0\x68\x90\xfb\x6f\xec\xba\xb2\x15\xbf\xe3\xfb\xab\x14\xde\xb6\xda\xc1\x46\x48\x2c\x33\xb6\xb4\x57\xa1\x5d\x7a\xf4\xe9\xe3\x35\xb8\x43\x9f\x3e\x5e\xef\xaf\x33\x11\x8a\xda\x4c\x86\xc7\xa9\x06\x47\xa3\x5f\x0d\xd2\x8d\x30\x34\x42\x0c\x89\xc1\x99\xbb\xa7\xc5\xa0\xe5\xa6\xbd\xd5\xaf\xbe\x94\x3a\x0a\xd8\x38\x69\x17\x6b\xac\x2a\x0f\x3a\xd4\x43\xb5\x90\x72\x65\xb9\xe4\x9c\xc3\x06\x76\x63\x70\xb3\x60\x75\xe8\x92\xe8\xbc\xaf\xf4\x8d\xc5\x75\x74\x94\x24\xa1\xed\x17\xb4\x75\x6e\xc4\xe0\xa4\x78\x11\xca\xf5\x63\xde\x8e\x3b\x56\x8e\x3b\x5a\xb8\x3f\xe1\x07\x4c\x33\xbc\xa4\x19\x15\xca\x83\xff\x72\x58\xb0\xf9\x35\x23\x15\x30\xda\x20\x60\x59\x70\xce\xa3\xc4\x3e\x34\x7a\xa1\x89\x4e\x18\x1c\xc2\xee\x51\x0b\x21\x91\x3b\x2e\x5a\x2c\x13\x1b\xfc\xe3\xa7\x8f\xd7\x93\xc4\x8e\x3c\xd3\x30\xb1\x23\x9f\xec\x15\x3b\xea\x0f\x0b\x03\x17\x6e\x25\xcf\xc0\xd5\x97\xec\x41\xf2\x7c\xbb\x7b\x02\x12\x55\xd7\x1a\x9d\xf0\x32\xe4\xfc\x3c\x2a\x63\x30\xe3\x66\xc5\x16\xa3\x22\x03\x21\x53\x98\x42\x4b\x42\xb9\x56\x3f\x0d\x86\x53\x86\x8d\x7d\xf2\xc0\x83\x07\xa0\x38\x23\x1a\x71\xf6\xee\xa4\xa0\x35\xb3\xd9\xff\x67\xdb\xd5\xd8\x93\x94\x90\x72\xbd\xea\xdd\x9d\x6d\x5b\x1d\x29\xd7\xef\x3a\x11\x7b\x0a\x83\xec\xdd\x62\x1b\x5f\x5a\x2d\xdc\xf0\x8c\x82\x70\xa5\x43\x27\x27\x04\xa3\x36\x54\x31\xf7\xbd\x79\x4f\xe3\x94\x8e\x80\xaa\xc5\xdc\x75\x86\x50\x68\xf4\xe4\xc6\x02\xd1\x04\xf2\x35\xc0\x56\xdd\xe1\x60\xde\xb1\x08\xf1\xa1\xac\x84\x4f\xc6\x04\xea\x80\xe9\x49\x8a\x2a\xc6\xc4\x09\xaa\xb0\x09\xea\x1d\x09\x65\x53\x16\x96\x3a\xcb\xf4\x1c\x8b\x8a\x90\x13\xff\x82\xf9\xea\x69\xa4\xaa\x37\x9c\x9d\xc3\x03\x27\x85\x05\x8e\x23\xca\xed\x73\x53\x41\xf9\xf5\x90\x50\x1d\x9b\xcb\x85\x7b\x73\x0c\xcf\x71\x70\xd8\x9f\x38\xa9\xda\xbb\xc1\x81\x38\xd6\x9c\x54\x67\x46\x1a\xec\xfd\xdc\x85\xe5\x41\x28\x16\x73\x7c\x82\x0c\x12\x9c\x4b\x26\xb4\xba\x03\x10\x0e\xce\x83\x81\xdb\x9a\x31\x65\xb7\x8a\x82\x71\x9b\x36\x45\x10\x0f\x57\x28\xd2\xf2\xf9\x46\x58\xc6\x46\x56\x06\xa3\x26\xe7\xf0\x5d\x8e\xa1\xad\x8d\xf0\xea\xca\xd5\x12\x6a\xe3\xae\xb9\x6d\x33\xcc\x85\x0c\x1e\xdb\x57\x3f\x70\xe3\x0a\xd1\x88\x9c\x1e\x57\x78\x68\x91\xf6\xcf\x68\x7b\x36\x2f\xd4\x73\x6d\x8d\x47\xbf\xdb\x8d\xc5\xf2\xe3\xad\x7a\x47\x3a\x14\x83\x05\x3a\xb0\xf9\x86\xff\x96\x9d\xea\x2f\x9f\x96\x01\xe4\xec\x7d\xba\xb6\x9e\xc6\x64\xd2\x71\x4c\x0d\x5b\x4c\xa2\x23\xb4\x60\x11\x58\x73\xaf\x08\x3a\x28\x31\x33\xcc\x5d\x58\x6f\x99\x20\x95\x55\x20\x0c\xd7\x3e\x6c\x23\x5c\x35\xcf\xb0\x77\xce\xd1\xe8\x0b\x5c\xe1\x9c\x08\x52\x71\x1d\x1c\x20\x98\x7c\xab\x50\x49\xa7\x0c\xfd\x52\x92\x62\x21\x70\x72\x3f\x68\xfb\x3d\x48\xd2\x27\x97\xa4\x71\x7e\x21\xc3\xe4\x69\xea\xd6\xd7\xd5\x5e\xf4\xbc\x90\xb4\x30\x42\xe1\x59\x71\x94\xfd\xf8\x7a\x74\x5c\xcb\x7b\xdc\x5b\xbe\xa9\x27\xb2\xe7\x3d\x2e\x3b\xe2\xd3\xfd\x0c\x46\xc8\x19\x07\x31\x0a\x1d\x22\x00\x82\xcd\x04\xe4\x1a\x87\x4c\x13\xb2\x1a\x83\x10\x6b\xb6\x11\x69\x06\xc9\x06\x90\x6a\xc6\x91\x68\x06\xa9\xc6\xa4\xe0\x77\x93\xeb\x87\x0d\x8c\x23\x49\xf7\xa3\xe9\xf4\x83\x14\x83\x69\xf6\xf3\x38\xe7\x47\x8d\x2f\x13\x10\x67\x1c\xa2\xcc\xc8\x54\xf5\x23\xcd\x34\x87\x68\x18\x92\x65\x90\x28\x1c\x64\xa6\x03\x22\x33\x4c\x11\x00\x2e\x33\xd0\xd3\x51\xab\xd0\x28\xa8\xcc\x30\x68\xcc\x20\xcd\x11\x30\x99\x01\xb0\x18\x37\xd1\xa0\xb8\x93\x06\x47\x06\x82\x13\x33\x48\xb1\x85\x1f\x13\x87\x0f\x33\xe2\x63\x73\x90\x06\x63\x38\x06\x01\xfb\x62\x34\x0e\x4c\x10\xe5\x05\x96\x50\x12\x44\x75\xd9\x09\xcd\x05\x18\xd6\x1e\x46\x6f\x89\x45\x6d\xd1\x78\x2c\xa3\x24\x11\x10\xad\x25\x2e\xbf\x76\x1c\xa5\x65\x00\x7f\x25\x40\x33\x42\x34\x78\x22\x20\x40\x34\x4e\x40\xa8\x39\x0e\x50\x0c\xa3\xb1\xc0\x51\x58\xa0\xe8\x2b\x61\xd4\x95\x28\xb4\x15\x8b\xa3\x12\x18\x29\x04\x65\xa5\x8b\x9f\x02\xd8\x37\xc3\xe8\x2a\xfd\xb8\x29\x01\x92\x61\x54\x15\x60\xb2\x40\x28\xe7\x64\x1c\x3d\x25\x80\x9a\x02\xce\x43\x19\x76\xac\x8c\xdd\xd8\x9e\xe7\x6d\x6d\xd6\x9b\x5a\x70\x15\x43\xe8\x31\x41\xd4\x98\x46\x29\xf2\x80\x63\xc6\x8b\xe8\x07\x01\x63\x42\x26\x86\xf1\x4b\x11\xa7\xe1\xeb\xd0\xe2\x1a\x1d\x5f\xd8\xc4\x0f\x97\x7b\x76\x5d\x08\x52\xad\x70\x42\x5e\xfa\xd7\xa4\xb1\x98\x28\x1b\x7f\xbf\xc6\x45\x9a\x69\x1d\x1f\x17\x88\x7c\x11\xa4\x2a\x70\xa6\xbe\x93\x56\xf4\x81\x54\xe8\xf8\x3c\x2b\xd7\x18\xad\x08\x16\x75\x45\x7a\x03\x5c\x82\x97\x27\x45\x09\x16\x99\xa0\x3f\x6a\x14\x4b\x1f\xbe\xd7\xeb\x92\xea\xbc\xee\xf9\xf0\x76\x6c\x21\xa1\x5e\xb0\x42\xc9\x00\xc5\x6c\x36\xaa\xe8\xb8\x32\x4c\x37\x88\xfc\x95\xbc\x10\xa9\x0f\x0e\x52\xc4\xdc\x14\x70\x24\x95\x52\x47\xf5\x9b\x59\x2d\x7f\x98\x1c\x3f\x35\x4b\xe4\xd9\x76\x7c\x58\x38\xfe\x7e\xd5\x41\x96\x97\x83\x51\xce\x9f\xa6\xd0\x69\x89\xb9\x31\x58\x28\xe7\x92\x4b\xca\x1c\x24\xea\xad\x91\x56\x93\x95\x8a\x90\x12\x41\xaa\x9c\x16\xed\x14\x74\x3f\x19\x61\x58\xaf\xc7\x65\x99\x0d\xd6\x81\x08\x4e\x6e\xc1\x52\x72\x53\x2f\x33\xca\xd7\x8b\x28\xdb\xde\x87\x9e\x17\xb5\x9f\x7f\xcb\xe7\xa6\xed\x7d\x83\x03\xd8\xb2\x03\xf6\x97\x04\x50\xda\x27\xe6\xae\xf2\xc0\xc5\xa2\x2f\x92\xc9\xf4\xd4\x9c\x02\xa6\x32\x0b\x32\x22\x88\x3b\x20\x5e\xbf\x4d\x0a\xb8\x54\x82\xe4\xaf\x9f\x8a\xd2\xff\x7d\x90\x78\x82\xb3\x8c\x1b\x6d\x4e\xdf\x27\x29\x77\xcc\x56\xeb\x54\xea\x5a\xb1\xb4\xbb\x85\x2a\x8c\x86\xc0\x2c\x28\x67\xa5\x16\xb9\xa6\xf8\x01\xe9\x37\x94\x72\x94\x33\x9d\xb2\x52\x20\x56\xd8\x87\x86\xf5\x3e\x9c\x65\x96\x90\x5f\x1d\xb6\x22\x66\xf3\x0e\x6d\x9d\x83\xd1\xf4\xc9\x8d\xa6\x51\xae\x89\x85\x83\x13\xc1\x5e\x25\xf2\x4e\x3e\x9c\x61\xde\xa1\x4b\x63\xc0\xb7\x31\xd9\x5d\xa0\xbf\x7b\x2e\x44\x45\x97\xb5\x18\xde\x49\x38\x4d\xa9\x3e\x3f\x37\x80\x5d\x07\x98\xea\x1e\x20\x96\xa6\x17\x4a\xec\x13\x6e\xb8\xc4\xa9\xb9\xe4\x25\xde\x8e\x1f\x11\x99\xf2\xde\xe5\xce\x8e\xc7\x8b\x0c\xb5\x46\x90\x2a\x19\xaa\x7f\x3c\xe2\x28\x65\x49\x2d\x15\xfc\xf1\xb0\x03\xb9\x5e\x8d\xfb\x4e\x47\x01\x8f\xcf\xfe\xe0\x6e\x0a\xc4\x89\xaa\x7e\xc5\xea\x5f\x29\x7b\x2c\x1e\x71\x95\x9e\xdf\xf4\x06\xa5\xb7\xd5\x94\xe6\x59\x5f\xe3\xb2\x24\x14\xa6\x15\x5e\xb2\x5a\xd8\x90\xce\xb1\x40\xb6\x96\xed\xfa\x60\xa7\xf6\xdb\xc1\x4e\xfd\xac\xec\xd4\xf2\x49\xad\x06\x65\x94\x0b\x29\xed\x5a\x3b\xde\xd8\x88\x7a\xf3\x94\x01\xdf\x1a\x3e\x63\x9a\xc7\x75\x63\xaf\x3d\xf5\x69\x4c\x74\x31\xb3\x8b\x1b\x9b\x88\xa7\x8c\xd9\xe3\xa9\x44\xe3\x8e\x66\x47\x45\x23\x88\xaf\x37\x14\x4e\xba\x20\x99\x14\xf2\xa8\x03\x18\x5f\xb2\xf4\x8d\xc2\x0b\x0b\x18\x46\x70\x51\x30\xcd\x7f\xf9\x09\xca\xf0\x92\x64\xfc\x44\xdf\x9f\xe4\xfe\x6b\xc0\xaf\xe4\xa9\x71\x4c\x38\x60\xda\x82\xa3\xe2\x35\x1a\x45\x24\x3a\xb8\x79\xcb\x61\x9f\x26\x6b\x92\x63\xf5\xcf\x77\x72\x16\x14\x12\x09\x08\xaf\x5a\x0a\x73\x41\x74\x1a\x2b\xa9\x72\x8e\xd8\xea\xa4\x95\x73\xf1\xe2\xe1\x75\xb0\xf0\x5d\x14\x2a\xdd\xca\x76\x30\x72\xc8\x37\x2d\x13\x9d\x01\x27\xe0\x6a\xf5\xed\xa5\x12\x0e\x72\x86\xf4\xc1\xd3\xb3\x38\xe3\xf0\x60\x30\xc3\xa7\xcd\x24\x00\x6c\x72\x41\x00\xbf\x83\xc9\x7c\xb4\x1d\x4c\xe6\x83\x2d\xd2\x64\xee\xb1\x5d\xc3\x61\x2c\x32\xbb\x6f\x46\x1f\x35\x06\xe9\xd6\xb1\xb4\x7b\x88\x73\x5a\x11\xb2\x86\x74\x6b\x45\x67\x55\x84\xe9\xfc\xe8\xe8\xec\xec\xe8\xc8\x5a\xde\xcd\x26\xad\xc5\xea\xf4\x6f\x88\x14\x09\x4b\xf5\x16\x92\x5f\xaf\xb8\x50\xa2\x15\xd6\xdb\xf6\x28\x73\xdb\x4f\xdf\xe7\xa7\xbe\x3c\xbe\x88\x60\x74\x27\x9d\xf3\xfc\x6e\x82\x70\x6c\x44\xa2\xcb\x9c\x36\x43\x68\xb0\x6f\x20\xb2\xd1\xbe\xcd\x51\x46\x73\xaa\xb2\xb6\x52\xc5\xe1\x08\x17\x1c\x1d\xeb\x1f\xcf\x92\xb2\x3e\x31\x0f\x9c\xe5\x24\x67\xd5\x08\x7a\x80\xa5\xab\x49\xc8\x57\x5b\x34\xcd\xfb\x2f\x95\xb4\x4d\xea\xaa\x22\x85\xc8\x36\x7b\x90\xbb\x6e\x1e\x20\xb0\x65\x5b\x71\xa9\xce\x8e\xac\x2c\x1d\x8e\xe7\xab\x8b\x9a\x89\xc7\x85\x60\xbe\x36\x50\x3b\xac\x42\xa4\x78\x40\x0f\xb8\xe2\x61\x08\xd8\x08\x51\x9b\xd2\x07\xca\x59\xb0\x54\xf4\xa0\x0d\x41\x6e\x19\x56\x8b\xb2\x16\x86\xf7\xd8\x7d\x34\x86\x27\xd3\x6e\x6e\x0f\x75\xb4\x8a\xd7\x2f\xe6\x1c\xa8\xfd\x4a\xec\x52\x36\xfc\xcc\x9d\x14\xa7\x54\xcc\xb8\x12\x50\xad\x60\x14\xfa\xa7\xfd\xd5\x80\x52\x00\x71\xd4\xed\xd7\x15\x37\x4a\x40\x99\x40\x2f\x29\x20\x08\xfc\xca\x3c\xd9\x8e\x63\x13\x24\x2f\x59\x85\xab\x0d\x4a\xcd\x4d\x77\x63\x23\xda\x70\x35\x60\xa9\xc1\xb6\x26\x80\xcd\x79\xdb\x19\x1b\x42\x8d\x22\xa5\xd5\x94\x38\xf0\x9c\xa4\xb4\x1e\x2c\xcc\xd8\x9e\x83\xcf\x0a\x88\xc8\x80\x1b\xd9\xac\x6c\x4d\xc0\x55\xdc\xc4\xc9\xbd\xd6\xdc\xdc\x84\x8c\xdd\xe3\xdb\xd8\x22\x2f\x8c\xd7\x21\x27\xb8\x70\x9a\xa0\xf2\x23\xb1\x94\xc8\x19\xb3\x0f\xeb\x6f\x8e\x04\x5a\x5a\x8d\xb0\x30\x46\x6e\x13\xb5\x72\x6c\x08\xbc\x94\x82\xfc\xbd\xe2\xf1\x7b\x9d\x7c\x04\xca\x25\xa2\xbf\x93\x9f\xa5\xd8\x02\xa2\xfe\x30\x81\x33\x84\x4d\xaa\xe5\x0a\x65\x2c\xc1\x99\x5b\x8d\x96\x0c\x18\x2d\x15\xe4\x36\xb4\xf5\xb1\xc9\xd5\x90\x7d\xd1\x32\x54\x99\x09\x32\xce\x94\x07\x87\x26\x0a\x46\x5b\xd2\xd4\x92\x71\x90\xaa\x59\x19\x45\x2c\xc7\x5f\x68\x5e\xe7\xa8\xe6\xb2\x67\xac\x30\xef\xda\x1d\xe3\x3a\xf0\x28\x77\xce\xb0\x15\x45\x6f\x81\x9c\x16\x8a\x58\x5b\xc5\x57\xc0\xa2\x76\xfe\xbc\x20\xaf\x35\x19\x89\x4b\xb7\x4a\x32\xaf\x73\x39\x81\xa6\x57\x46\xb5\x60\x2b\xe5\x93\x70\x82\x59\xa1\x42\x61\x8d\x4a\x76\x3b\x62\x3e\xf2\xf6\x71\x41\xb3\xf6\x46\xb6\xf8\x5d\x6e\x62\xeb\xc2\xf8\xa1\xc1\x11\xf4\xfd\x9b\xb2\xe6\xa4\x3a\xbd\xab\x69\x3a\xdb\x76\x1c\xe5\x96\xab\x24\xc8\x27\xdf\x5d\xb4\x19\xe4\x3b\xba\xac\x08\xba\x58\xe3\xa2\x20\x99\x27\xdc\x3a\xf0\x71\xbd\x9d\x6d\x41\xca\x05\x10\xe5\x76\xcc\xbe\x7f\xfe\xd9\x30\x7b\x07\x10\xd1\x4e\xa7\x41\xb2\xcf\x16\x34\x2d\xab\x81\x70\x69\x8d\xb5\xe1\xdd\x05\x12\xb8\xba\x23\x42\xbe\x8c\x8a\x3a\x5f\x92\xc1\xf3\xf2\x35\x80\xbe\xbe\x76\x5a\xcf\xf4\x0c\x1c\x3d\xad\x9f\x3f\x7f\x00\x66\xe3\xf7\xad\xc9\x23\xab\xb2\xf4\x91\xa6\xb6\xe0\xc2\xb1\x24\xf7\xf2\xeb\xa5\xc8\x3f\x3e\xd2\x74\xca\x70\x6c\x59\x04\x39\x1c\xa4\xc6\xe3\xd0\x98\x2b\x8e\x8e\x15\xd9\x61\x5c\xe9\x2b\xaa\x8c\x36\xea\x29\x6d\x76\xc8\x97\xb4\xc0\x16\xa0\xa0\x99\x68\xc5\x0a\xe5\x3e\x0e\x55\xa0\xe4\x44\x9c\xa0\x65\x6d\x8c\x1a\x4c\xac\x11\xa7\x79\x9d\x09\x5c\x10\x56\xf3\x6c\x33\xb8\xec\xfb\x9e\xe2\x71\x99\x93\x91\x2f\xc3\x18\xfa\x9d\x22\xf9\xf6\xd1\xb6\x0c\xba\x23\x05\xa9\x68\x62\x17\xa4\x25\x84\xfa\x3d\x2a\x5c\xc7\xd5\xe8\x12\xef\xaf\x5c\x76\xa7\x2e\x95\xa0\xe2\xac\x48\x82\x96\x0a\x29\xbc\xcc\xea\xbb\xfe\x3a\xe9\x4f\x12\x55\xd5\xc4\x92\x98\x32\x3e\xe3\x4a\xdf\xb8\xab\xfd\x3f\x10\x66\xeb\xb6\x3f\xa2\x29\x25\x25\x29\xe4\xc1\x2b\xfc\x5d\xa5\x87\x37\x79\xf6\x8c\xad\xf7\xeb\x84\x19\x78\xbc\xe9\xea\x8b\xa8\xb0\x64\x28\xb9\x64\x1d\xd6\x02\x4d\x57\x08\x17\xc3\x4c\x60\xde\xf0\x90\x3f\xb0\x88\xdb\x13\xf4\xc3\x7e\xc2\xd0\x34\x77\x1a\x16\x09\xaa\xa3\x36\x5c\x6c\x30\x2c\xcc\x7e\xdd\xcf\xa3\x19\x8d\x4c\x8c\x0d\x0f\xf3\xc2\xc0\x86\x79\xd7\x76\x60\x8b\x1e\x9d\x1b\xc5\x21\xc1\xf6\x99\xc4\x8a\xed\x23\xba\x67\x95\xb1\xe4\x1e\x80\xd6\xf0\x4e\x3f\xd7\xb9\x85\x9a\x1f\xbb\x70\x0d\xed\x1b\x66\xef\x60\xdb\x28\x0d\xea\x9c\x78\xc2\x41\x39\xba\x0d\x71\xb9\xc5\x2b\x26\xf7\xb1\x06\x91\x5b\x92\xc1\x24\xff\xba\x18\xc8\x28\x0f\xea\x0c\x58\x60\x1e\x01\xa5\xd6\x45\x01\xe5\x44\xe8\xf8\x32\x05\xe0\x94\x13\x81\x15\x38\xe2\xe9\x3f\xc6\x9d\x65\x66\xa4\x96\x82\x54\x33\xec\xa8\xad\xdd\x4f\xf9\x74\x38\x4d\x89\xa1\x9d\xca\xf9\x4f\x46\xa2\x8d\xc3\x00\xa3\xfa\x6b\x9f\x3e\x01\xf3\xb4\xe5\x83\x9d\xb1\x9a\x05\x53\x16\x17\x85\xed\xdb\x68\xe0\xc3\x63\x5d\x79\x1b\xc6\xd0\xd9\x83\x2d\xe5\x2e\x21\x37\x0e\x5e\x18\x04\x9b\x7b\xf4\xe3\xc5\x55\xfb\x95\xf6\x26\xff\xf1\xe2\xaa\x0d\xdc\x3f\xaa\xe0\x4e\x03\xee\x47\x23\xc9\xa6\x73\x00\xf7\xdf\x25\xa4\x01\x5d\x4e\x29\xbf\x3f\xa0\xf6\x7f\x93\xa8\xfd\x5b\xeb\x3c\xec\x23\x38\x40\xf6\x0f\xb4\x03\x64\x7f\x3f\x64\xff\x93\xf0\x20\x34\x9b\x69\xb0\x4c\xc1\xd2\xdc\x22\xd4\xfb\x06\x80\x9b\xcb\x16\x2c\xfd\x8f\x17\x57\x67\x1a\xa0\x71\x84\x5b\xb5\xe0\x4b\x2c\x14\xb7\x7a\xf3\xa9\xa6\x6e\x66\x1c\xa4\x6d\xbc\xdb\x91\xbb\xe0\x88\xb7\xa5\x83\x6e\xb4\x75\x35\x7d\xea\x09\x9a\x0a\xb4\xac\xf7\x54\xb4\x4a\x42\xc5\x47\x52\xf6\x72\xfa\x8e\x22\xa2\x1f\xec\x58\xd9\xa8\x90\x3f\x30\x4e\x95\x17\x1c\x0b\x05\x0e\x50\x09\x9a\xd4\x19\x1e\xb2\x8a\x6b\x1b\xdb\x19\xba\xbc\xba\xf9\x78\x75\x71\x7e\x7b\x75\xf9\x06\x59\xea\xd4\x57\x22\xcf\xd0\x2d\x6b\x8c\x72\x1a\x41\x46\x3b\xe8\xfa\x6d\xb6\x54\xac\xbd\x3e\x9d\x18\x76\x88\x8b\xc6\xeb\xa8\x80\x33\x70\x81\xae\x0b\x2a\x9a\x48\x9a\x41\x95\x29\xc9\x58\x61\x22\x51\x24\x45\x63\x0b\xbc\xa3\xe2\x44\x2b\x48\x06\x03\x7a\x4d\x3a\x5f\x10\xa6\x80\xed\xc0\xf5\xc2\x0d\xa3\xf7\xf6\x1a\xbc\x0e\x58\x1f\x3b\x0c\x85\x5f\xdb\xd7\x9b\x48\x05\x2d\x13\x5c\xa0\x9b\x45\x99\x60\x95\x8e\x25\x1b\x3c\x28\x0d\xae\x84\x92\x42\x47\x67\x47\x56\xa9\xc9\x1c\x16\x88\x0d\x9e\x74\x1f\x1b\x45\xa1\x36\x4e\xde\xf6\x1e\x3a\x43\xe8\x17\x5b\x52\xeb\x44\x6a\x26\x1d\xb8\x91\xc1\x24\x0b\xdb\xcb\xc6\x8f\xdb\x43\xdd\xc5\xea\xd6\x4b\xbf\x93\x3a\x99\x7d\x90\xe8\x1d\x7d\x20\xc5\x68\x91\x47\x00\x6b\xb3\x5d\x00\xad\xda\xc7\xa6\xc7\x9f\x3e\xfe\x3c\xfd\xa3\xfa\xe4\x80\x3e\x79\xc1\xf2\x9c\x0a\xb4\xc6\x7c\xed\x92\xb4\x1a\xdf\xba\x3b\xb5\xd3\xfa\x32\xce\xb9\x9a\xc9\x89\xe6\x5e\x3a\x91\x17\x80\x60\x7d\xf4\xa3\x7d\xb4\x73\x81\x72\x3f\x6f\xe1\x58\xf7\x3b\xbb\x9a\x40\x1f\x60\x50\xcf\x10\x68\xa6\xeb\xfb\x6e\x98\x8e\xb6\xa4\x23\xd0\x5b\x75\x65\x1f\xf7\x2b\xa7\x5b\x1a\xa6\xfe\xb4\x2a\xe7\x4c\x04\xa6\xd9\xb0\x15\xaa\x99\x37\xc1\x4a\x96\xb1\xbb\x38\xfc\xd9\x9e\xc1\xff\x59\x47\xe1\x9e\xe2\x53\x39\xab\xd3\x75\x73\x28\xb6\xb5\x0d\x22\x96\x13\xd0\x8c\xc6\xe9\xaa\x2a\x7e\x17\x7e\x11\x7a\xf2\x81\xce\xa8\x2c\x75\x47\x3f\xac\x79\xeb\x6a\xe9\x06\xfe\x5b\xf1\xcd\x26\xcf\xb3\x24\x55\x4e\xb9\x64\x12\xbd\x5a\xd4\x20\xd1\x27\xdb\x35\x53\x15\x2b\x77\xc2\xfa\xd5\xae\xfe\x40\xc6\x51\xb6\x25\xb9\xcb\x50\x12\xca\x76\xa9\x21\xb5\x51\x5b\x4c\xcb\x15\x59\x57\xd8\xda\xaa\x0c\x65\xd5\x48\xdd\x7e\x3f\x94\x87\xcf\x6f\x0d\x3d\x36\x20\x47\xbf\x99\x6d\xba\x71\x35\x8d\x9e\xd2\x4b\xd2\x9a\xd9\x94\xab\x15\x67\xd9\x46\x43\x25\xaa\x8c\x51\x7d\x2d\xc7\x77\xaa\xc3\xac\x32\x66\xea\xb2\xa2\x0f\x34\x23\x77\xf2\x13\x6b\x5a\xdc\xf5\xb3\x17\x97\xd1\xaa\xea\xfb\x13\x93\x6a\x43\xb6\xfa\x2f\xcf\x27\x17\x7e\xd4\xd6\xa0\xba\xf1\xe1\x97\x5b\x54\x10\xfd\x59\xbe\xb3\x42\x2f\x3b\x31\x18\xbf\x7a\x7a\x7a\xaa\xec\x17\xc7\xff\x96\xba\x63\x9a\xbd\x44\x9f\x89\xf9\x36\x53\x75\x8a\x2b\x95\x0d\xb2\x66\xea\xa6\x5b\x73\x33\xa6\xf1\xd5\xcb\x75\xb9\x36\x5c\xa4\xf6\xcd\x57\xf2\x6d\xa9\xc0\x69\xb1\xd5\xa2\xa1\x32\xb0\x39\x6a\x3c\x6a\x93\xf4\xcc\x48\x4e\x6a\x8d\xb0\x4e\xad\xf2\x76\x9c\x83\x0f\x18\x8d\xfa\x55\x39\x8a\x7c\x93\x67\xb4\xb8\x3f\x41\x54\x58\x36\x25\x77\x81\x09\xa5\x2b\xee\xed\xde\xac\x08\xce\x3c\x2e\x3d\x72\xbf\xdb\x75\x95\x27\x73\x68\x01\x36\x48\xde\x6e\x4a\xed\xc7\x77\xc7\xdd\x38\x9f\x7d\x36\xfa\xe2\xc5\xbe\x0c\x73\x3b\x8e\x34\x70\x2d\x9d\xc0\x1f\x29\x87\xe0\xea\x1c\x5d\x2f\x2e\x16\xd7\x9d\xc2\x3e\xfa\xb7\x6d\x93\x78\x5c\xe0\x61\x4c\xe4\xe1\xf0\xfe\x83\x09\x35\x35\xd8\xdd\x74\xc0\x64\x8d\xcb\xf3\x5a\xac\x2f\x29\x4f\xd8\x03\x01\x5e\x32\x2c\xb0\x92\x31\x4c\x23\x6a\xa7\x4e\xd3\x40\x17\xff\x3c\xbf\x81\x55\x27\x08\x3b\xd0\x6d\x0f\x17\x84\x83\x6f\x24\xfd\xfd\x33\x14\x66\xed\xdd\xc1\x79\xf0\xec\x9d\x07\xea\x94\xfc\x51\x1d\x06\xb4\xa0\x82\x62\xc1\x46\x33\xbe\xda\xb7\x71\x5d\xef\x5c\x6f\xf9\x6b\xfb\xba\x72\xed\x2a\x61\xda\xa2\x38\x96\x6c\xed\x61\xa0\x52\x75\xdf\x49\x38\x75\xc8\x63\x9d\x60\xc0\x13\x54\x90\x47\xf3\x4d\x6a\x9f\x19\xa4\xfc\x77\x13\xba\x29\xf7\x25\xce\xfe\xf1\xe6\xef\x9e\xd3\xe1\x1f\x2e\x69\xd6\x81\x51\x38\xd0\x2e\x85\x92\x3e\xdd\x94\x80\x10\xfd\x0d\xc6\x3f\x8c\xe9\x4b\x8f\xe7\x5f\x35\xce\xf4\x3c\x7c\xd8\xc5\x8e\xd3\x9e\x3f\x50\x37\xec\x1a\xda\x39\xff\xe0\xee\xd8\x35\x27\x4a\x66\xe9\x27\x44\x85\x0b\x2e\x27\x13\x06\x8a\x73\x64\x5c\x3f\x47\xe8\x58\x24\x65\x00\x11\x67\x86\x50\x6a\xdd\x49\x33\xa7\x3f\xbb\x10\xea\xa1\xef\xce\xe4\x27\x51\x7b\x0b\x66\xda\x68\x75\xf0\x46\xbd\x88\x7e\xa6\x5c\xe8\x78\x3f\x4d\x49\x15\xcb\x51\x41\xb6\x83\x73\x2c\x75\x88\x1b\x05\x2f\x58\xfe\x37\x4e\xd3\xea\x8d\x96\x3d\x16\xd8\xa1\x52\x9a\x04\x73\x25\xaf\x9c\x07\xee\x58\x6c\x4a\x9a\xc8\x6b\xd0\x30\x97\xba\xb8\x51\x14\x38\xfa\xdb\x0f\x3a\x4f\xfd\xaf\x7f\xf9\xe1\xbb\xc1\xa5\xdb\x7f\x94\x73\x94\x0d\x21\xca\xdf\x32\x96\x18\x1f\xf2\xb7\x4c\x16\xe3\x71\x51\x7a\x4a\x81\x58\x34\x55\x95\xcc\x29\xd4\xfb\x47\x2e\x8e\xe3\xb1\x30\x35\xe3\x10\x71\xf6\xe4\xe8\x64\x7a\xb1\xf4\x59\x9f\xca\x23\x34\x7b\xb8\xe9\xb0\x07\xcd\x06\x06\xbb\xff\x1c\xd8\xc3\x4e\xb7\x32\xfa\x5b\xdf\x36\x3e\x95\xd2\xa0\xf7\x77\x7f\xa6\x63\x6f\x73\x05\xc4\x3c\xff\xa1\x53\x5e\xb2\x40\x1f\x06\x6b\x4b\x46\x25\xda\xee\x6a\xec\x29\x56\xbd\x69\xf1\x33\x5b\x4f\xec\x15\x55\xde\x2f\xfd\xa0\x77\x39\x09\x9c\x54\x0a\xc6\x6d\x4f\x76\x8e\x81\x01\xa2\x27\x36\x42\xcb\x91\xea\xd1\xeb\xfb\xc5\xf8\xcd\x29\xda\xfc\xfc\xd5\x66\x6f\x5c\x60\x55\xd0\x6c\x90\xa3\x85\x7a\xd6\x3a\x2c\xe4\x59\xd0\x11\x21\x95\x54\x57\x24\x27\x22\x9c\x5b\x61\xf1\xe1\xdd\x62\xf8\x42\xe0\xed\xa6\xaf\xb2\x6b\x26\x99\x8b\x4e\x4d\xbf\x63\x79\x4f\x13\x78\xa1\xb5\x8e\x8b\x0c\xd3\xde\xc4\xf7\xce\x99\xec\x7b\x4d\xff\x73\xa1\x6d\x4a\x2d\x7b\xbc\x0b\xec\x1f\xb6\x2c\xf5\x52\x74\xee\x68\x6c\xee\x4d\x0a\xee\x6b\xf2\xda\x34\x83\x3d\xb5\xcb\xd4\xfc\xa4\x7f\x49\xe4\x67\x27\x31\x34\xf5\x26\x3c\x6a\xe9\xc2\x3e\xde\x4d\x60\x1a\x98\x8a\x91\xa3\xd9\x33\x45\xb6\x12\x6d\xc9\x6c\x82\x56\x0b\x39\x7a\x66\x1b\xc4\x4e\xf3\x8a\x66\xe7\xa3\x9f\x23\xd3\x5e\x42\xd7\xc9\xdd\xd4\xee\xf1\xe3\xec\x76\x4d\xf4\xc1\x5d\x33\xc1\x8a\xc8\x68\xe9\x9b\x9e\x97\xda\x27\x55\x3f\x71\xa1\xa3\xf6\xb3\xa1\x5b\xa7\x23\xa0\x03\xe5\xfa\x2a\x3d\x0e\x56\x75\x9c\x70\xb4\xbe\xbd\x0c\xbb\x99\xea\x31\x86\xbd\xfd\x29\x30\x4f\xe0\xfa\xd2\xa8\x58\x36\x17\x80\x9b\xad\x80\x9a\xbd\xe0\xad\xfb\xe0\x00\x47\xc2\x96\x77\x13\x7b\x69\x7c\x41\x36\xb9\x78\x8f\xac\x82\x66\xca\xde\xb4\x1e\xef\x38\x94\xcd\xdf\xba\xc9\x32\xfd\x2a\xf6\xd7\x3f\x05\x0b\xe5\x31\xf3\x86\xd0\x67\x36\xb7\x67\x63\x70\x31\xfb\x8e\x0c\xe8\x68\x0c\x2b\x57\x43\x47\x26\x7c\x24\x86\x05\xe0\x3c\x47\x25\x4a\xc4\x40\xf3\x33\x1b\x4d\x7e\xb0\xfb\xbb\x0b\x2a\x28\xa8\x37\x90\x15\xfc\x6a\x1e\x36\xe9\x41\x72\x3d\x1a\xa6\x80\xdd\x31\x19\x8f\x85\xf9\x2a\x15\x18\x5d\x59\xb5\xe0\x59\xd7\xa0\xbf\x2b\x56\xa9\x24\x4b\xaa\xf3\x2e\x1b\x44\x3d\x93\x75\x79\x62\xb0\xd9\x73\x5c\x0e\x60\xc6\xc9\xa3\xee\xa3\x05\x4f\x38\xd6\xb1\xe0\xd6\xef\x01\x88\xd6\x6d\xe4\xea\xc1\xad\x17\x42\xb4\x1e\xc6\xa9\x1e\xb6\x0e\x87\xf0\xab\x87\x71\xaa\x07\x69\x46\x21\x83\xb6\xb1\x3f\x47\xac\xd8\x00\x4c\x50\x85\xfa\xb9\x57\xfb\xbd\xd9\x70\xa0\x85\xb7\xe8\xd4\x36\x02\x4f\x6f\x76\x39\x1d\xd3\xec\xe3\x6d\xe1\xe7\xa8\xe9\xb9\x35\x69\xcf\x4d\xa1\x42\x9c\xb1\xe2\xce\x5b\x8a\x11\xcb\xa5\x07\x87\x6f\x9c\xbe\x9b\x72\xc4\x7a\x0a\x03\x86\x1c\xad\xae\x3a\x30\x28\x3f\x07\xbc\x01\xae\x6f\xca\xac\xaa\x34\xcf\xa6\x42\xde\x28\x61\x38\x7c\x65\x60\xda\x7b\x7b\x0a\x2b\x96\x19\xa4\xa9\xbd\xb1\x97\x72\x58\xb0\xb2\x99\x00\x8a\xbd\x85\x35\xc7\x0a\x68\x02\x68\x8e\x96\xd8\xec\x2d\xa5\x09\x1c\x7a\xb8\xd8\x66\x34\x14\x75\x54\xd9\x4d\x74\xbd\x02\x90\x9c\xbf\x00\x67\x7b\x16\x22\x4a\x71\x02\x28\xba\x62\x9d\x11\x45\x39\x81\x1d\xf5\xcb\x76\x42\xcb\x73\x36\x0d\x78\xd0\xa2\x4b\x76\x02\x28\x22\x40\x59\xcf\xa6\xc1\x79\x87\x6e\xc1\x52\x9f\x4d\xdb\xa9\xe8\x67\xd3\x22\xd0\x5c\x75\x0b\xa3\x9a\x0f\xf4\x71\x1c\xdf\x1c\x48\x11\x79\x38\xe8\x10\xa4\x73\x30\xd9\x2d\x44\xf4\x31\xcc\x73\x30\xd5\x41\x6c\xf4\x3e\xf4\x73\x30\xd5\xd9\x74\xa1\x6e\x83\xeb\x46\x61\x14\x5e\xdd\xe0\xd8\xe8\x4d\x83\xa2\xa4\x37\x2d\x8c\x97\xde\xb4\xa8\x62\xa3\xe0\x99\x33\x45\x49\x41\x65\x47\xc1\x44\xdf\xf7\xd4\x3b\xee\x2f\x40\x0a\x26\x39\x58\xa8\x14\xc8\x79\x75\x8b\x64\x1a\x30\x9c\x65\xdd\xc6\x0b\x95\xfa\xcf\x8d\xde\x46\xba\x7d\x0d\x16\x6b\xf0\x1f\x1e\x0e\x0b\x69\x5a\x28\x5e\x41\xb7\xe7\x1b\xb5\xa0\x5b\x6c\xec\x02\x80\x64\x28\xba\x41\xb7\x88\x1d\x14\x2a\x8d\xda\xb4\xe8\x22\xa9\x80\xe1\xb8\x32\xaa\xe1\x72\xa9\xdd\xd1\x8d\xd9\x65\xda\x4f\x06\x77\x67\xa0\x98\x97\xf7\x60\xf8\x16\xe4\xd1\xb2\xf7\xa0\xc0\x80\x9e\xc1\x2d\x69\xbb\x54\xd3\x56\x3d\x25\xc0\x62\x8e\x94\x72\x8a\xee\xdf\x7e\xca\x3b\x35\x6d\x8e\x42\x4f\x4d\x8b\x55\x44\x61\xc5\x9f\x9a\x16\x57\x06\x0a\x2c\xae\x5c\xb9\x28\x68\x41\x28\xb8\xaa\x13\x51\x38\xca\xeb\x4f\xe4\x34\xa2\xc8\x62\x52\x4d\x8b\x2d\x2b\x15\x41\x5a\xdd\xc2\x67\x2a\x30\xd5\xb4\xe8\x8b\x04\x8a\x2b\x3a\xd5\x34\x68\xf9\xa9\xb8\x29\xe9\x94\xaa\x8a\x2b\x44\xd5\xb4\x09\xd3\x10\xa3\x1e\xa1\x88\x32\x55\xdd\x4e\x01\x75\x20\x74\xb8\xe4\x1d\x2e\x79\xdf\xd2\x25\x2f\x54\x1e\x0b\x2e\x8d\x6c\x19\xad\x50\xa1\xac\xa8\xeb\x58\x7f\x41\x2d\xd4\x2d\x99\x05\xbf\x35\x42\x4a\x6b\xc5\x0a\xe2\x79\x8a\x6c\x35\x2d\x9a\x4d\xc6\x15\xde\x6a\x5a\x7c\x09\x2e\xf8\x09\x95\x7a\x09\xbc\x18\x17\x98\x6e\xbb\x68\x57\xb8\x2c\x57\x94\xce\x13\x5f\xbe\xab\x69\x53\xb4\x9f\xc8\x92\x5e\x4d\x83\x17\xf7\x8a\x92\xf3\xb6\x10\xd8\xd4\x32\x5f\x4d\x9b\xa4\xf0\x80\x4b\x7f\x79\xaf\x00\x8b\x80\x45\x4d\x43\xbb\x60\xd8\x40\x39\xb0\x28\x8a\x90\xd2\x61\x4d\x9b\x34\x79\xf0\x72\x62\x4d\x9b\xb3\xb0\xd8\x4e\xdd\x8f\xd7\xf2\x40\x65\xc7\xba\x7d\x02\x2b\x79\x71\x46\xb9\xaf\x69\x6c\x03\x12\xd5\xa1\x1b\x3b\x9b\x47\x0c\x50\xf7\x7f\xa2\x87\xd8\xa4\x7c\x19\xf7\x29\xcc\xaa\x10\xe1\x1e\x86\x55\x3e\x3e\xb8\x87\xc1\xee\x61\xbd\x5e\x07\xdf\x70\xab\x1d\x7c\xc3\x07\xdf\xf0\xc1\x6c\x70\x30\x1b\xd8\x76\xf0\x0d\x43\x49\x1e\x7c\xc3\x80\x87\x0f\xbe\xe1\x6f\xd4\x37\x6c\x94\x5f\xed\x18\x06\x6e\xb4\xaf\xee\x17\x36\xc5\x55\xce\x93\x84\xd5\x85\xb8\x65\xf7\x24\xe0\x64\x02\x5d\x80\xb6\x68\x06\x06\xb6\x9f\xbb\x12\xae\x53\x2a\xef\x25\x91\x6b\x7b\x6e\x5e\xb3\x97\x06\x29\x2b\x8a\x94\xa4\x8e\x1e\x62\x10\x55\x5c\xbe\x2a\xe4\xd8\xcf\xd0\x39\xaa\x48\x42\x4b\x4a\x74\x85\x61\xac\x7f\xd7\x8b\x6f\xb1\xe3\x01\x14\xa9\xe0\x24\x5b\x19\x2c\xee\xc2\xab\xbd\xe2\x69\xfb\x86\x91\xdb\xae\x42\xf4\xf0\x55\xd3\x55\x7d\x19\x61\x16\x24\xda\x16\xa3\xa9\xc8\xbf\xad\x16\xa0\x47\x04\x39\xfc\x5e\x2f\x5a\x6e\x41\x35\xa5\x4d\xd7\xcd\xe7\x71\x49\x4d\xf6\xf4\x9c\xa7\x9b\x7c\x29\x69\xa5\xb6\xe7\x82\x24\xac\x18\x2e\x3b\xd9\xb4\xd6\x56\xb8\xea\xbe\x6f\xf7\x84\xb1\xa0\x92\x14\xa5\x75\x05\x75\xc9\xb3\x95\x54\x25\x69\x4a\xc5\xc6\x39\x62\x4d\x6d\x23\xac\xcf\x8a\xdb\x30\x1c\x68\x5b\xd7\x1b\x09\x97\x65\xc5\x70\xb2\x26\xdc\x1b\xb1\xd6\x31\x4d\x06\x59\x08\x7d\xb6\x69\xa6\x06\x98\xba\xde\x29\xaa\x52\x7b\xc9\x36\xa8\x62\xc2\x86\x12\x74\x3a\x0d\xed\xa6\xf6\x20\xd8\x0e\xa9\x0f\x68\x65\x41\x54\x1b\x15\x91\xc0\xbc\x8f\x80\xc7\x4e\xbd\xed\xab\xf0\x41\xb2\xd4\xe2\x83\xfc\xed\x3b\x54\x92\x2a\x31\xa7\x0e\x16\xad\xa3\x60\x2d\x04\x43\x99\xd4\xd9\x24\x2b\x1f\x26\xff\x97\xef\xd1\x9a\xd5\x15\x3f\xb3\x19\x5d\xa0\x3e\xa3\xd7\xea\x2d\x7d\xbb\xb5\x57\x0c\x81\x32\x82\xb9\x40\xaf\xbf\x43\x39\x2d\x6a\x29\x9a\x83\xc4\x3c\xe5\xf7\x87\xef\x81\x87\x06\xa6\xf6\xc2\x14\xde\x6d\x27\xba\x39\x1b\xa5\xc6\xd4\x35\x7a\xaf\x39\xf1\xe3\xd9\x82\xde\xb7\x15\x56\x76\xc7\x3b\x66\xc4\x82\xbf\x12\x85\x60\x33\x72\x0a\x98\x0e\x09\xd0\x0a\x41\x52\x17\xf0\xd0\xb8\xaa\x38\x9e\x02\x67\x0c\xf1\x3d\x7f\x1b\xfd\xf0\x6f\x35\x5b\x6e\x44\x38\xd7\xf5\x5f\xfa\xb9\x76\x92\xab\xfd\xb1\x1f\x54\xa6\x77\x90\x2d\xa0\xf7\x06\x53\xa6\xe7\xd9\x90\xc4\xbf\x93\xf7\x50\x50\x1e\x94\xba\xb1\xaa\xe4\x55\x5c\x3a\x43\x63\x92\x10\x5d\xe0\xf1\xd2\x2b\x39\xcf\x34\xd5\xd1\xe5\x99\x2b\x23\x74\x14\xbb\xc5\xce\xac\xcd\x87\x1a\xbe\x35\xce\x0d\x1f\x1e\xd6\x35\x2b\x72\x47\xb9\x00\xd7\x5d\xd0\x0f\xb7\x37\x0e\xa7\xc5\x9d\xc6\xd8\xce\xeb\x4c\xd0\x32\x73\x23\x1e\x1c\xa7\x23\x64\xe4\x90\x6f\xec\xc4\x9e\x0d\x0e\xeb\xb4\x69\x8d\x22\x55\x62\x3a\xcc\xf6\x8e\xdd\xb7\x49\x21\x34\xc4\x73\x25\xc5\x5c\x89\x2b\xec\xa6\x53\xd5\x77\xe5\x2f\x8d\x3d\x15\x2b\x27\xf0\x30\xcb\x57\x1e\x61\x49\x0d\x67\x6e\x9a\x94\xa3\xd0\xb8\x0f\xa7\x6e\x2c\x41\x0a\x5c\x0c\xfa\x28\xda\xe6\x07\xf5\x28\x62\x8f\x2e\xde\x4f\x17\xdb\xe8\xec\x28\xa3\x31\xbe\xc5\xc9\x3d\x29\x86\x6f\x20\xaa\x06\x92\x9a\x88\x74\x53\xe0\x5c\xe3\x6d\xf9\x65\x9d\x3b\x74\xf9\x89\xb1\x9b\x8d\x01\x68\x12\x61\x93\xc0\x47\x0b\xab\x06\x67\xa5\xe6\x40\xa8\x9f\x4f\x5c\x17\x77\x1e\x3b\xff\x5c\x7b\xf4\x2a\xfa\x90\x90\x90\x8a\x23\x3f\x3c\xb5\xd3\x0f\x83\xd8\x02\x5b\xdd\x36\xb8\x02\xd4\xdb\xdd\xca\x3c\xe7\x5c\x2f\x0a\xd5\x0b\x67\xf2\xc8\x6f\x6c\x24\xc9\x60\xa7\x3b\x1b\x60\xb9\xd9\xa5\xfe\x4a\xa8\xfc\x88\xde\xfa\xbd\x7f\x1c\xd4\x49\x47\xe5\x54\xb5\x0c\xe7\x68\x1f\x7d\x7c\x7b\xd9\xe6\x33\x1f\x71\xca\x38\x7a\x9b\xb1\xe4\x1e\x5d\x12\xa5\xbe\x3e\x75\x51\x92\x6a\x99\xee\x06\x45\x7d\x80\x52\x1e\xa4\xf9\x5c\xa0\x94\xab\x65\xaa\xcd\x5e\xc3\x54\x9f\x2d\x90\x72\x8e\xef\xa0\x98\xfa\xf2\x06\xac\x0e\x94\x7a\xc9\xd6\xbd\x9a\x78\x14\xfe\xbc\x66\x8f\xa7\x82\x9d\xd6\x9c\x9c\xd2\xc1\x20\x8a\x60\xff\xef\xc9\x46\xfe\x0d\x36\x82\x9f\xf4\xc3\xad\x2b\x8b\x60\xca\xc0\xae\x7e\x97\x92\xfa\xe3\xdb\x4b\x29\x2e\x9c\xc6\x34\x38\xfb\x94\xa3\x57\x44\x24\xaf\x12\x52\xae\x5f\x99\x6e\x7c\xf5\xe9\xc8\x59\x41\x05\xab\x80\xa5\x8b\xce\x51\xc2\xb2\xcc\x64\xf1\xb3\x15\xba\x20\xe5\xda\x91\xd8\xf7\x58\xf6\x0f\xc6\x5b\x32\x06\x03\x31\xf5\xb6\xb6\x7c\xc7\xec\x6c\xef\x62\x50\x2d\xe3\x98\xc7\x53\x2e\xf9\x1f\xa8\xc6\xe3\xec\xd3\x32\x1f\x76\xf1\xd1\xc2\x3e\xae\x2e\x82\x9e\x57\xa5\x0d\x55\x6c\xc8\x0e\xce\x4c\x8b\x85\x5c\xaf\xb4\xaa\x9c\x92\x14\xb1\x07\x52\x55\x34\x25\x1c\x39\x5e\xe1\xdf\x3c\x69\x36\x4b\x3d\xa7\x09\x33\x79\x40\x59\x7e\x72\x94\x65\xf0\xc5\xc5\x63\x4c\xf2\x9d\x6d\xc6\x84\xd3\x9c\x16\xcf\x94\x35\x05\xf0\x92\xa5\x0e\xd1\xfb\x17\x2b\x80\x62\xaf\x08\x3c\xc1\x19\xb9\xee\x55\xc2\xda\x5e\x3c\xfd\x5c\xfb\xa6\x60\x7f\xf4\x90\x0a\x27\x20\xb7\xfd\xe4\x36\x34\x2a\x58\xda\x6f\xcf\xfd\xcf\xc3\x2e\xf4\xf6\xab\x86\x6e\x9b\x2a\xea\xee\xb0\x20\x8f\x18\x58\xa6\xd5\x0e\xa1\x83\xe4\x6b\x17\xfa\xfc\xe6\x1a\xfd\xa8\xe9\x4d\x07\x4b\xac\x98\xd0\xda\xd3\x25\xcb\x31\x05\x16\xd1\x58\xb7\x4b\x4f\xdb\x0e\xdd\x38\x62\x48\x53\xb3\x15\x3e\x06\xe7\x57\xe3\x12\xd5\xf2\xd6\x63\x6e\x24\x07\x2c\xbb\x9e\x16\xa7\x08\x34\x7a\x80\x67\x66\xb1\x61\x9e\x4d\x6d\x03\xb3\x6a\xa3\x26\xa2\xc6\xad\x8a\x38\x29\x38\x55\x9e\x11\xcf\x79\x6e\x8a\xb8\xe9\x9a\x7f\x3a\x4e\x53\x2b\x0b\xc3\x47\xea\x67\x76\x47\x0b\x7b\x2a\x99\x71\xd8\xad\xf0\xb0\xf6\x70\x90\xee\x4f\x2e\xdd\x39\xcf\xae\x0a\xbc\xcc\x86\x1d\x4b\x6d\x26\x9e\x61\xe5\x05\x25\xea\x9d\x57\x29\xe5\xf2\xff\xd1\x62\xf1\xb3\x32\x3e\xd7\x85\xd5\x3c\x95\x19\xd6\xb0\xac\xe1\x1d\x92\xfa\x10\xc4\xd3\xcf\x8c\xe6\x27\x60\x8c\xc1\xeb\x22\x95\xdd\x24\xbc\x15\x1b\x63\xa8\x68\xd8\x44\x17\x48\xac\xa2\x0b\xc6\xfc\x19\xb7\x6b\x9a\xdc\xdf\x78\x36\x66\x56\xc9\xdf\x0a\xef\xa7\x96\x50\xe9\xfe\x6d\x2a\x13\x34\xdd\xbd\x81\x5e\x1b\x6f\x3d\xee\xbd\x30\x43\x95\x2f\x23\xcc\x39\x4b\x68\xe3\x44\x50\xc6\x06\xc7\xde\x87\x97\x4e\xb1\xfd\xe9\xdd\x57\x12\x7a\x92\x0c\xb2\x0b\x65\xab\x8c\x72\x5f\xb6\x8c\xc4\x30\x9b\xd1\x4f\xee\xb2\xde\x12\x60\x0c\xf4\xdb\x16\xea\xb9\xd5\xcf\xda\xf6\x6f\x17\xe4\x1e\x60\xd0\x56\x6f\xb2\x95\x0c\xb7\x96\xcc\xa1\x9f\x1b\xd7\xea\x5e\x2c\xe5\x46\xa3\xe9\xfd\x9b\x93\x5b\xfd\x7f\x1d\xd2\xe9\xc6\x75\xe4\xc1\x64\x97\xbe\xdb\x70\xc7\x69\xa7\x7f\x33\xa6\x71\x15\x22\x54\xb2\xb2\xce\x74\xec\xc6\x80\xc3\x67\x1b\x40\x7e\x92\x85\x55\x7f\x7b\x52\x71\xff\x48\xb4\xd4\xf1\x90\xf2\x2d\xe0\xd4\x10\x1f\xf6\x55\xf1\x11\xe0\x54\x4f\xa3\xfa\xee\x87\xef\xbf\x1f\x41\x98\x1f\x86\x58\x0d\x43\xa9\x0e\x52\x85\x84\x92\x0f\x85\x88\x0f\xeb\x76\x03\xa1\xe3\xc1\x90\xf0\x61\xd9\x10\x0a\x15\x9f\x07\x63\x75\xd4\x32\x39\x21\xc7\xca\x65\x50\x8d\x4c\x15\x24\xb3\xaa\x27\xf3\x68\x90\xe2\x78\x3e\xd5\x48\xb6\xd4\x30\xc5\x9e\x2c\x2a\x60\x8e\xd4\xa8\x07\xa3\x71\xe3\x47\x65\x46\x0d\x3b\x85\x56\x73\xe7\x43\x45\x66\x41\x35\x39\x4e\x83\x14\xe1\xb9\x4f\x5b\x99\x4d\xc3\x02\x0d\x96\xf1\x14\x83\xf1\x1b\xce\x6e\x02\x64\x2e\xc1\x22\x77\x83\x59\x4a\x3b\xe5\x26\x01\x43\xc2\xc2\x79\x48\x31\xa2\xa2\xc9\x2a\x1a\x25\x89\x20\x39\x47\xdb\xb9\x44\x01\x9a\x23\x99\x46\xc3\x19\x44\x01\x9a\x11\x42\xc1\x63\xfe\x01\xa2\x71\xa2\x41\xcd\x71\x80\x62\x38\x97\x08\x9e\x41\x04\x0d\xa0\x0c\x07\x4f\x46\xe5\x08\xd9\xdc\x9f\xc0\x48\x21\x99\x41\xdd\x8c\x1f\xc0\xbe\xe9\xcf\x07\x1a\xce\xf3\x09\x90\x0c\x67\x01\x81\x8e\x67\x38\x5a\x73\x3c\xcf\x27\x10\xc7\xb9\x73\x78\x66\x38\xab\x24\x3e\x97\xc4\xc9\x88\x31\x35\x73\x24\x85\x04\x6a\x1c\x83\x57\xa1\xf2\xad\x3f\xe6\x42\x60\x55\x50\x1d\x24\xd3\x54\x94\x1a\x91\xfb\xf5\x80\x83\x70\x9e\x2b\x01\x0a\x6f\xa9\xf1\x4b\x92\xfe\x12\x0b\x17\x59\x34\xb7\xfe\x5f\x16\x1d\x67\x82\xfb\xb9\xe3\x43\x90\xfc\xad\xb7\xc3\x07\x1f\xc2\x40\x7b\xea\xfa\x47\x07\x43\xf8\xb6\x21\x9c\xb7\xc0\x63\xac\x19\x40\xeb\x39\x2b\x56\x21\xb6\x34\xf0\x92\xa3\x1a\x74\x73\x28\xce\x6f\xae\xe5\x3d\x5a\x65\x03\xe1\x8c\x9f\xf5\x65\x4a\xa7\x81\xe8\x1b\xa5\x29\x35\xf7\x0d\x2c\x04\xc9\x4b\x31\xbc\xf0\x07\x3b\xf8\x93\xdb\xc1\x23\x8d\x7b\xbf\xba\xc7\x5d\x49\xce\x3a\xc7\xc5\xa9\x3c\x51\xca\x22\xde\x72\x9a\xd9\xcd\x14\xb8\x00\x9f\xd9\xe2\xd8\x5a\x2e\x29\x13\x89\x0a\x8e\xd7\xa5\x8a\x9a\x5b\x4c\x53\x2b\x72\x77\x5b\xa6\xa2\x13\x39\x66\x2d\x32\x3b\x27\x2d\x61\xdd\x18\xce\xc1\xe1\x9a\x81\xb8\x79\xb1\x87\xca\x93\xc7\xad\xfb\xb0\x58\x13\x2d\xb6\x6f\x58\x7a\x34\xbc\xb9\x9a\xb7\xdb\x37\x07\x7d\x75\xc0\x59\xc6\x1e\x75\x5f\x7d\xa9\x25\xd7\x49\xf6\x7d\x94\x23\x28\xde\x9d\x53\x79\x89\x36\x36\x57\xbf\xfb\xda\xf7\x29\x6f\x26\xa4\xd2\xea\x77\x65\x5c\x66\x8b\x91\xe0\x1b\x6f\x0b\xc9\x8b\x6a\xa1\x43\x9c\xe5\xbf\x6d\xf4\x8d\x46\x32\x36\xae\x83\x25\x59\xe3\x07\xca\xea\x91\xec\xc3\x85\xe6\x74\x2f\xcc\x2b\x4a\xcc\x6c\x58\xed\x4c\x6d\xba\x54\xa6\x9b\x25\xbe\xbd\x0e\x83\xa4\x3f\x34\x2f\xa9\xcb\x53\xca\xac\x6d\xe2\x94\x7c\xa1\x5c\x6c\xcf\x49\x08\x60\xc7\x62\x09\xee\x41\x25\x7a\xe0\xa5\x94\x61\xc0\xc2\x78\xbf\xfa\x4f\xb7\x55\xa3\x87\x85\xfa\xd3\x1f\xa5\x2c\xde\x41\x39\xf2\x9b\x73\x90\x65\x34\xd9\x00\x8b\xc3\x35\x8e\x31\xf9\x12\x7a\x8b\x39\x49\xd1\x7b\x5c\xe0\x3b\x7d\xbf\x3c\x5e\xdc\xbc\x7d\xff\x52\x2e\xda\x28\xca\xf6\xf5\x65\xaf\x57\x6d\xe1\xf7\xe8\xc3\xf4\x7c\x86\xce\xd8\xc0\x42\x6b\xa6\xd1\xed\x90\x89\x61\x05\xcf\x18\x1a\xf2\x76\xd2\x66\xb7\x74\x67\xe7\x58\x3e\xe4\xe9\x5e\x8a\x72\x36\x5d\x8d\x63\x40\x83\x7f\x4a\xb1\xc0\x4b\xcc\xc9\xa2\xd7\xaf\xd5\x56\xd6\xcd\xa3\xa0\x80\xce\x31\x1e\x12\xf0\x28\xed\xe2\x4d\x72\x5e\xa3\xde\xc9\x9f\xe4\x49\xf2\x3d\x46\xbd\x54\xa3\xbd\x48\x6d\xb3\x61\xbf\x07\x25\xca\x83\xd4\xf5\x14\x0d\x70\xed\x18\x13\xe1\xa0\x11\x30\x64\xfa\x1b\x37\xf8\x0d\x1a\xcf\x77\xf1\x0a\x8d\x80\xf1\x4f\xf0\x08\x35\x9e\x9f\x7e\x99\x1a\xe7\x0d\x82\x63\xe7\x4d\x41\xcb\xf3\x3c\x3e\xbd\x34\x41\xf8\x78\x83\xde\x9e\xfe\x9d\x39\xe6\x01\x02\x78\x7a\x06\x1c\x86\x7d\xde\x9f\x5d\x11\xee\xa6\x60\xda\x8d\x78\x77\xe6\xf5\xec\x84\xef\xd3\xa3\x1e\x9d\xc9\xde\x1c\xc0\xc5\x74\xdc\x8b\x33\xcd\x83\xa3\x56\x71\xe4\xbe\x1c\xeb\xbd\x81\x5c\xe9\x50\x84\xe7\xa6\xcd\x6e\x47\x48\x4e\xab\x8a\x3a\x78\x42\x75\xdb\x15\xdf\x0d\xe6\x8f\x81\xf8\x62\xc6\xfd\x30\x93\x7c\x30\x01\x4c\xa7\x58\xff\x8b\x13\xb4\x23\x34\x23\x7c\x2f\x01\xef\x0a\xc0\xde\x39\xe6\x55\x19\xf6\xa8\x8c\x78\x53\x02\x86\xa1\x31\x2f\xca\x98\x07\x65\x07\xef\xc9\x88\x97\x64\xdc\x6a\x3a\xee\x1d\xd9\xc1\x33\xa2\x3c\x20\xfd\x4a\xde\xbe\xbc\x22\x23\x5b\x61\x70\xc5\xd6\x38\xeb\x29\x8e\x3d\x10\xf9\xe9\x52\x84\xad\x52\x2e\x85\xa2\xa6\xa0\x58\x21\xce\x32\xc4\x56\x2b\xbe\x66\x6c\x7b\x5f\x78\xf6\xa3\x06\x1a\x9f\x7c\x91\x83\x44\x37\xbf\x5e\x68\xcb\x5d\x2a\xef\xff\xdb\xf7\xd7\xe1\x35\xa4\x05\x1d\xbf\x14\x5c\x17\x5a\x76\x4b\xae\x2a\x97\x45\xbe\x40\x71\x46\x7f\x6f\x46\x11\x71\x33\x28\x19\x17\x77\x15\xe1\x9f\xcf\x7f\xee\xdb\x2f\x21\x99\x89\x7f\xaf\xab\x41\xc9\x05\x31\x60\x83\x8a\x11\x80\x9c\xad\x39\xfe\x72\xc1\x8a\xc2\x94\x8b\x1e\x23\x07\x05\x24\x82\x79\xd2\xcb\x8a\xac\xe8\x97\x1d\xbb\x1f\xb4\x4c\x2f\xff\xb2\xcb\x2c\x2f\xeb\xe4\x7e\x1c\x30\xfc\x30\xc5\x68\x89\x93\xfb\xba\x1c\xb3\xa3\x84\xb3\x7d\x92\xc1\x59\x39\x2c\xd3\x4c\xcb\x94\xb1\x64\x38\x5e\x01\x32\xcb\xf8\x91\x5f\x65\x98\x0b\x9a\x28\x94\x8d\x85\x60\xc3\x2c\x0c\x6d\x27\xa0\x7f\x5e\x6c\xbd\xdd\xb2\x17\x17\xe8\xfc\xf3\x02\x5d\x52\x3e\x64\x8e\xd2\xad\xa9\xca\x60\xc3\xb9\xad\xc3\x5d\x5d\x6b\x8c\xe5\x58\x0a\xe1\x80\xed\xd8\x1b\x58\x61\x9c\x24\xb6\xd6\x85\xb9\xbc\x96\x2c\xdd\x39\x74\x01\x3f\x72\xa2\x87\xbd\x94\xc3\x96\x7f\x1e\x44\x70\x80\x2e\x04\x0a\x5a\xb6\xfb\x97\x00\x06\x19\x12\x20\x89\x2c\xa4\x48\x0c\x74\x48\x90\x66\x07\x5a\x04\x04\x21\x12\x24\xda\x0f\x31\x12\x34\xa1\x87\x3b\x3b\x08\x35\x32\xdb\x16\x09\xf6\x41\xbb\x81\x23\xb1\x46\x82\x54\x7d\x2c\x12\x08\xe6\x88\x6d\x60\x1c\xbe\x12\x57\x82\x0a\x40\xa1\xc3\xed\xdc\x68\xf7\xaa\x1d\x5c\x1f\xd4\x4d\x70\x84\xcd\xbe\xbd\x5e\x21\x96\x53\x21\xec\x15\x3d\x6d\xb2\x8c\xec\x43\x72\x27\x02\x71\x35\x75\xba\x76\x03\x6f\xf3\xce\x21\x81\xa1\x57\x29\x79\x78\xc5\x53\xfc\xfa\x44\x75\x53\x6f\x9c\x30\x1c\xac\x68\x8d\x19\x73\xf4\xe2\xf5\x8b\x33\xb4\xa0\x39\xcd\x70\x95\x6d\x5a\x16\x2c\xf7\x5c\x90\xea\x8a\x55\xae\x43\x2a\x4b\xf7\xbb\x17\xe8\x98\x55\xaa\x67\xf2\x42\x9f\x11\xfc\x40\x6c\x16\x93\xe4\x44\xe1\x8e\x92\xbc\x14\x9b\x97\x41\x4c\xf7\x18\x2c\x77\x38\x98\x65\x28\x88\xc7\xb6\x4e\xce\x8b\xb9\x53\xbe\x10\x55\x4d\x5e\xa8\x98\x1e\x15\x94\x23\x25\x01\x27\xa2\x15\x9c\x13\x1c\xbf\x9d\xa8\x6e\xf4\x8e\xf2\x26\xab\x0f\x6c\x6d\xb6\x20\x4d\x6f\x33\xbe\x50\xe1\x46\x2f\x9e\x5c\x12\xa1\x28\x34\x6a\xfd\x95\x61\x47\x61\x33\x30\x7f\x1d\x3e\xe9\xd0\x8c\xeb\x4b\x2b\x8b\xbc\x9c\xfc\x94\xf2\x7b\x78\x81\x23\xaa\xd5\x87\xe3\xf3\x1c\xff\xce\x0a\x74\xf5\xd6\x06\xe4\xbd\xfc\x8a\x13\x17\x64\x88\x10\x58\xd2\x53\x37\xb7\x41\x05\x31\x00\x4b\xaa\x2e\x9d\x52\xc1\x02\x6b\x6d\xe7\xf6\x8d\xae\xa6\x26\x7f\xd7\x1e\x0d\xf5\xd7\x30\xf8\xab\x8f\x18\x2a\x4f\xd9\x92\x5a\x8f\xbf\xaf\x6d\xcd\xa0\x18\x25\x4a\x62\xdd\x8d\x25\x81\xf5\x0e\xf5\xe8\x9f\xb2\x6b\x17\xfa\x6d\x6d\x58\x46\x1f\x58\x41\x4e\x14\x23\x40\x92\x13\xe8\x7f\x06\xb7\xe2\xe7\x8a\x0a\x12\x64\x87\x60\x91\x29\xcf\x01\xa4\x32\xde\x96\xc5\xd3\xb7\x52\x29\xfc\x75\x75\xa2\x8c\xf0\x5c\x66\x6c\x69\x1d\xe1\x73\xf6\xf4\xd3\xc7\x40\xf9\xf1\x9e\x8e\x7e\xfa\x78\xfd\x74\x9d\x9c\xa0\x38\xcf\x14\x1a\xe2\x77\x75\x4a\x88\x48\x58\xdf\x8d\xd3\x73\x11\x0d\xa3\xdc\x03\x42\x49\xfc\x61\x81\x56\xe0\x9e\x16\xc1\x5a\x1e\xed\xa3\x79\xf5\xa5\xd4\x7e\x45\x13\x0a\xba\x58\x63\x55\xa1\xcf\xa1\xba\xca\x8d\x12\x96\xa9\x94\xdf\x73\x29\x61\x5c\x0e\xb4\x05\x65\x47\x97\x44\x5b\x36\xd3\x37\x16\xaf\x16\x4c\xb1\x9f\xa0\x8e\x0b\x49\xdf\x68\x9e\x8b\x72\xfd\x9f\x6a\x87\xc3\xa8\x1e\xab\xd0\x45\x5a\xb8\x57\xf1\x03\xa6\x19\x5e\xd2\x8c\x0a\x15\x2f\xfc\xf2\xcc\x81\xee\x43\x94\x5e\x05\x70\xd9\x0b\x4a\xd9\x7a\x10\x8e\xa7\x3d\x41\xed\x82\xc6\x50\x07\xc7\x03\x01\x34\x83\xc6\x52\xb7\x87\x1e\x56\x75\x60\x22\xdb\x32\xed\xe0\x43\x9f\x3e\x5e\xcf\x22\xd6\x25\x8f\x8a\x13\xeb\xf2\x8d\x5e\xb1\xae\xfe\xb0\xd0\xd0\xcb\xa3\x93\xb6\x8d\x05\xbe\x57\xc9\xfe\x9f\xbb\xe7\x20\xb9\x3b\xbd\xa3\x17\x1e\x8a\x82\x9f\xd3\x6f\xbc\x07\x5c\xaf\x78\x70\xec\x36\xf4\xcd\x14\x7c\xd1\x9a\x85\x5c\xeb\x9f\x82\x35\x70\xc0\x1c\x45\x31\xa8\xe8\x01\x2a\x49\x80\x02\x27\x2d\xa2\x1f\xb0\xd3\xdd\xac\xc6\xf8\x63\x76\x48\xbb\x9e\xf0\x84\x94\xeb\xd5\xe8\xe9\x68\x4d\xca\x05\x29\xd7\xef\x3a\x79\x4a\x0a\xef\xf3\xdd\x02\x88\x89\xec\x7a\xb7\x85\x8d\x3c\x8a\xe3\x6f\x1b\xf4\x44\x87\x20\x4c\x7b\x47\xe7\x55\xe8\x7d\x6f\xde\xd7\xb8\xd9\x2d\x80\xd3\xe0\x9e\x6e\x01\xa0\xc6\xe0\x2e\xea\xc5\x88\x05\xd0\xb3\x0d\x58\x7b\x32\xa2\x04\x0e\xb4\xe8\x18\xa4\xe8\xc7\x50\xc4\x8c\xc2\x86\xc7\xbc\x29\xf4\x41\x52\x54\x31\x26\x4e\x50\x85\x41\xb5\x07\x55\x3d\x15\x65\x91\xac\xb3\x4c\xcf\xbd\xa8\x08\x39\xf1\x0d\x1d\xaf\xbe\xae\x76\xe2\x0d\x37\x20\x34\x82\xa3\x8d\x42\x5e\x8d\x15\x1a\x51\x20\xa1\xbb\x6d\xd6\x58\xf9\x14\x52\x42\xd0\xc8\x9c\x2f\x1c\x85\x1e\xcc\xe6\xe0\x94\x38\x4c\xe7\x4f\x9c\x54\xed\x5d\xe5\x80\x9b\x6b\x4e\xaa\x33\x23\x05\xdf\x43\x6c\xec\x4f\x37\xc5\x10\xf9\x18\xca\xe8\xb3\x6d\x7c\x82\x0d\xea\xad\x0b\x33\x45\x01\x70\x11\xdb\x7a\x23\xa9\xfb\x67\x5c\xd9\x83\x9f\xd1\x2e\x8e\xa9\xa2\x0b\xab\xcb\xf8\x9c\xf3\x03\x6d\xdb\x43\x6d\x46\x68\x75\xc6\x09\xe2\x0b\x50\x60\x73\x0c\x49\xd7\xb6\x11\xf9\x55\xb9\xca\x6e\x6d\x8c\xdd\xf0\xc0\xd3\x0e\x06\xef\x53\xf3\xdf\x99\x94\xd6\x11\xac\xdd\xf6\xf7\x42\xca\x28\x2d\xd2\xf1\x95\x68\xaf\xc2\x85\x7a\xbe\xad\x8d\x6a\x1a\xa0\xcc\x30\xdb\x20\x19\x62\x20\x24\xf2\x7c\xc3\x7f\xcb\x4e\x75\x0f\x4e\xcb\x40\xc5\x0e\xdb\x9e\xd2\x2d\xff\xb4\xe6\xc5\x3f\x80\x33\x7d\x96\x15\x44\x07\x05\xd2\xb5\xfd\xcf\x31\x5c\x67\xdc\x41\xa3\x51\xa5\x04\xb9\x8e\xfb\x31\x0a\x89\xe6\x5d\xd6\xbe\x01\xa9\x2f\x5d\xe2\x0a\xe7\x44\x90\xaa\x89\x0c\x4d\x74\x10\x98\xfc\xe7\x2f\x25\x29\x16\x02\x27\xf7\x41\x7f\xce\x41\xcb\xf8\x26\xb4\x8c\x69\x7e\x6c\x5b\x69\x2d\x6d\xa2\x8b\x4d\xd5\x5f\x58\xf6\x87\x6e\xb4\x30\x82\xf1\x59\x70\xc1\xa7\xf5\x4d\x6b\x10\xda\xf7\x78\xb0\xcc\x23\xda\xb2\x72\xd9\x37\x3a\xaa\x85\xfb\xd9\x43\x2f\x1d\x37\x8c\xf8\xc8\xa6\xe1\xb5\x82\x1e\x74\x00\x1a\x69\xef\xb8\x60\x79\xa4\xc1\xcd\xb4\x95\x67\x0a\xc9\x29\x0d\x52\x1d\xcd\x39\xed\xcb\x2f\x0d\xf3\x42\x78\xfe\xa9\x9f\xfc\x14\xa4\x3b\x53\x2e\x6a\x6b\x4a\xe7\xc9\x4b\x6d\x91\xdc\x4b\x50\x14\xc8\xc8\x38\x21\x8f\x15\x60\xe6\xf3\xf3\x5c\x7b\x72\x5a\x9b\x43\x1b\x42\xb8\xb0\x6d\x2c\xed\xb5\x37\xc5\x15\xd4\xc9\x88\x14\x58\x90\x79\x64\x62\x3a\x6c\xd8\xec\x02\x02\x48\xf5\x53\x63\x83\x24\x61\x40\xa9\x6e\xa1\x60\xe3\x9f\x17\x33\xd5\xb6\x09\xd8\xa9\x00\x7d\x0f\x9c\x61\xeb\x37\xa0\xdd\x3e\x3a\xf3\x16\xa0\xe6\x84\x50\x57\xdd\xc8\x22\x34\x50\x00\x0a\x6b\xef\x90\x62\xd1\x58\x6d\x8b\x50\xd5\x10\x08\x9d\xb5\xb7\x77\x80\x1c\x5f\x10\x51\xe4\x65\x02\x87\xf3\x7d\x81\x24\x07\xb3\x82\xfb\x72\x7f\x81\x34\x21\x19\xc2\x6d\x21\x08\x24\x3c\x53\xb6\x70\x9b\xe4\x1c\x02\x53\xb7\x18\xb1\x69\xbe\x1e\x51\x1e\x1f\x81\x4b\xe4\xa3\xd8\x4c\x63\xe0\x5c\x79\xf9\xc8\xc1\xac\x63\x20\xc9\xa1\xdc\xe4\xfe\x0c\x64\x20\xd1\x29\x79\xca\x7e\x8b\x62\x0b\xb0\x1a\xfe\x28\x88\x0e\xdb\x3c\x15\xac\xf6\x8f\x62\xae\x8e\x70\x57\x2c\xe4\xfe\xff\xbc\xef\xfe\xb3\xa3\x10\xa2\x98\xdd\x10\x42\xdf\xed\x9d\xc3\xbe\x3c\xf2\x46\x1d\xf5\x52\xc9\x83\x83\x0f\xa7\x9a\x6f\x8f\x2a\x6c\x10\x83\x5d\x93\x39\x85\x5f\x90\x17\xd7\xe8\xf8\xc2\xe6\x09\xbb\x20\x9e\xeb\x42\x90\x6a\x85\x13\xf2\xd2\xbb\x38\x8f\x1b\xea\xcc\x9b\x36\xe3\x6e\x8d\x8b\x34\xd3\xb7\x35\x5c\x20\xf2\x45\x90\xaa\xc0\x99\xfa\x5e\x5a\xd1\x07\x52\xa1\xe3\xf3\xac\x5c\x8f\xeb\x36\x2b\x82\x45\x5d\x8d\x1b\x43\xc1\x57\x6d\xf5\xd5\xb8\xb8\x30\xdd\x51\xa3\xf7\xfb\x78\x93\xde\x30\xe4\x80\x83\xbb\x41\xcf\x06\xf7\xad\x07\x67\x72\x63\x29\x49\xa7\x58\xe3\x86\xd5\x95\x71\x1d\x85\xea\xbc\xd9\x96\xb0\x4a\x5e\xab\x75\xc7\x30\x37\x65\xd6\x49\xd5\x14\xbd\x49\xb2\x5a\xfe\x30\x5b\x54\xee\xac\x71\xd1\x11\xc0\x76\xb6\x39\x87\xc2\xaa\x5d\x1f\x4d\x0d\x56\xb9\x94\x8d\x12\x46\x39\x2a\x31\xe7\x00\x13\x88\xb9\x74\x79\x60\x72\xde\xda\xea\xcb\x8f\x52\xb7\x52\x22\x48\x95\x87\xb2\x44\x91\xd1\x61\x5c\xd5\x2d\x6f\xf4\x0c\xe1\xb2\xcc\x82\x4e\x6f\xf0\x62\x14\x2c\x25\x37\xf5\x32\xa3\x7c\xbd\x98\x64\x25\xff\xd0\x43\x40\x47\x49\xf9\x9e\x7f\xd0\x78\x87\x2c\xeb\xfd\x85\xee\x20\x8b\x22\x97\xcf\x2e\x8e\x7f\xda\x98\xca\x3f\xcc\x88\x20\xee\x4f\xde\x38\x7e\x85\x19\x51\xa5\x66\x2e\xdf\xfa\x54\x94\xfe\x7b\x28\xc1\x59\xc6\x8d\xae\xac\xad\x13\x94\x3b\x41\x02\xbb\x88\xab\x4b\xe7\xd2\xee\x46\xaa\x30\x57\x2d\xfc\x07\x77\xea\x89\x29\xf5\x17\xee\x69\xef\xc4\x72\x94\x33\x9d\x48\x5b\x20\x56\xd8\xd9\x3f\x51\x88\x1a\x81\x7a\xc4\xb6\x79\xc5\x0c\x71\x45\xcc\x61\x09\x6d\xcd\x83\xfb\xe2\x9b\x70\x5f\x4c\x72\x5c\x2e\x1c\x14\x31\x56\x04\x4e\x55\xee\x81\x2d\x0b\xa7\x03\x7e\x56\x23\xe5\x68\x5c\x2f\xdd\x95\xb6\xa7\x4a\x78\x94\x07\x34\x36\xef\xf0\x5c\x88\x8a\x2e\x6b\x11\xde\xbd\x38\x4d\xa9\x3e\xf3\x37\x11\x3b\x3e\x62\xa9\x7a\x40\x9f\x9b\xde\x29\x55\x8a\x70\xc3\xf1\x4e\x8d\x39\x20\x89\x30\xed\x98\x9b\xb9\x3b\xd7\xdb\x7c\xd4\x29\x1f\x41\xaa\x4a\x2f\xd1\x2f\x1d\x71\x94\xb2\xa4\x96\x17\x41\xb7\xde\x5e\x10\x81\xce\xbb\x81\xad\x5a\x70\x97\x02\x33\x28\x54\xbf\x76\xd5\x97\x53\xf6\x58\x3c\xe2\x2a\x3d\xbf\x19\x4d\x4b\x6b\xab\x86\xcd\x3b\xbe\x6b\xc9\x92\x52\x98\xf6\x78\xc9\xea\xf1\x92\x68\x48\x79\x96\xd2\xe1\x1a\x7a\x07\x4f\xd3\x68\x3b\x78\x9a\xbe\x51\x4f\x93\x7c\x43\xab\xa2\x19\xe5\x42\x6a\x04\xad\x93\x05\xf4\x95\x8f\x62\x2c\x47\xf4\x6d\xf8\xec\x6b\xde\xdd\xcd\x92\x8a\x51\x75\x95\xb2\xab\x4f\x51\xb3\x0b\x3c\x05\xda\xe4\x46\x8d\x80\xc2\xfa\x2d\xce\xbc\xaf\x68\x02\x6e\x0d\x3d\x73\xe0\x25\x58\x2c\x48\x26\x15\x2b\xd4\x76\xe8\x01\x8d\x83\x25\x4b\xdf\xe8\x0a\x0c\xb8\x28\x98\x96\x2b\xfc\x04\x65\x78\x49\x32\x7e\x62\xae\xb6\x45\xda\x80\xe5\x01\xe9\x4a\xe1\xe7\x44\x13\xd0\x60\x1c\x37\x79\xea\x2b\x4e\xf7\x83\xbe\xd1\x95\xfd\xfa\x6d\x87\x13\x98\xac\x49\x8e\xd5\x3f\xdf\xc9\xb9\x1c\x40\xc6\x1e\x6a\x94\x23\xa9\x3a\x09\xa2\xe1\x4f\x48\x95\x73\xc4\x56\x2e\xee\x5a\x83\x4d\x3c\xbc\x1e\x2c\xb8\xbf\xdd\x22\x5d\x32\xc8\x6e\xaa\x31\xf4\xf1\xed\xb6\x8d\x47\xee\x0c\xe2\x72\x43\x09\x79\x83\x92\x7b\x0c\xe2\x5d\xf6\xfa\xde\xf2\xa5\x2a\xb6\xa1\x67\x7b\x8f\xc3\x87\x9b\x9f\x91\x52\x60\x56\x51\xab\x1c\x61\x65\x46\x07\x07\xd9\xc1\x41\x16\x68\xcf\xd6\x41\xe6\x09\x17\xc5\x0d\x28\xb7\x03\xd7\x4e\x33\xa8\x6c\x91\xef\xfa\x56\x5b\x8b\xe4\xbb\x24\xae\x36\x8a\x56\x43\xe1\xce\x2c\xb9\x8f\xad\x67\x8d\x55\xed\xc8\x82\xa3\xb3\xb3\xa3\x23\x8b\xf2\x3b\x8e\x0f\xdd\x21\x59\x8b\xd5\xe9\xdf\x10\x29\x12\x96\xea\xad\x28\xfb\x5a\x71\xa1\xd4\x93\xc6\x1e\x12\x3f\xfa\xdc\x8c\xae\x15\xc9\xa0\xfa\x09\xdb\x22\x91\x0c\xd0\x22\xf1\xbc\xdb\x41\xb1\x68\xd4\x09\x87\xe2\x67\x26\x00\x04\x67\xea\x37\xa5\x57\x34\xf0\xb1\x19\xcd\xa9\xca\x61\x4f\x15\x9f\x26\x5c\x70\x74\xac\x7f\x3c\x4b\xca\x1a\x66\xb8\x41\x86\xcc\x59\x4e\x72\x56\x6d\x4e\x1c\x29\x49\xa2\x45\xdb\x3c\xf1\x32\x42\x63\x49\xea\xaa\x22\x85\xc8\x36\x4f\xa0\xbb\xb8\xd9\x84\xe4\x53\x37\xad\x93\xb7\xe1\x3c\x47\xca\xde\xe7\xe4\x1f\xc8\x14\xd4\x34\x93\x09\x73\xe2\x6c\xad\xca\xb4\x40\x8a\x07\xf4\x80\x2b\x0e\x9b\x01\x34\x4d\x5d\x49\xe9\x03\xe5\x0c\xbc\xa5\x06\xad\x62\x72\x83\xb2\x5a\x94\xb5\x30\x7c\x15\x92\x5f\xec\xf5\x7c\x4d\x1c\xb2\xa4\xdb\xb1\x1d\xcd\xed\x75\x38\x51\xc2\x91\x8b\x9f\x08\xfb\xd5\xa9\x5b\xa1\xe1\xd9\x0d\xfa\xa6\x55\xdc\xf6\xb8\x82\xb1\x1a\x17\x18\x2c\x0c\xc5\x2a\x5c\x31\xa1\x07\x5f\x27\xa8\x00\x44\x50\x39\x2e\x2e\x69\x44\xf2\xd6\x95\x79\xa3\x1d\x63\x2d\x48\x5e\xb2\x0a\x57\x1b\x94\x1a\x9b\xcc\x78\xbc\xc3\x36\x8c\x80\x87\x23\xb0\x33\x3e\x9b\x1a\x55\x4a\xab\x39\xf2\xb7\x72\x92\xd2\x3a\x8f\xb3\xa2\x7d\x56\xa0\xa7\x06\x50\xd5\xfa\xca\x35\x21\x6b\xf8\x5b\xe2\x64\x1c\xd5\x56\xcf\x12\xe5\xcd\x84\x6a\x55\xc1\xc7\x01\x7c\x61\x7c\x96\x39\xc1\x85\xd5\xda\x41\x36\xf9\x82\xa5\x44\xce\xb8\x25\xa6\xfb\xe6\x99\xe9\x0a\xe3\xd2\x02\x9e\xcd\x63\x43\xe8\xa5\x54\x93\xde\x2b\x49\xf8\x24\x8b\x88\xa2\xf2\xa5\xe9\xef\xe4\x67\x29\xce\x23\x91\x46\x99\xc0\x19\xc2\x06\x26\x63\xa5\x51\x93\xdd\xaa\x5a\x3e\x10\x36\x4f\x29\x3f\x3f\xe5\xc8\x1d\x20\xeb\x18\x91\xab\x2a\xfb\xa6\x75\x0d\x65\x08\xcb\xb8\xf6\x1f\xd3\x04\x2f\x83\x56\x2d\x4d\x5b\xeb\x1f\x6e\x25\x6f\x15\x54\xeb\x17\x9a\xd7\x39\xaa\xb9\xec\x29\x2b\xda\xcf\x04\xa9\xba\x8e\x3e\xea\x1d\xab\x4d\x56\x39\x2d\x14\xd1\xf6\xf5\x4e\x95\x60\xb0\xf3\x1b\xf6\x73\xba\x8b\xba\xca\x66\xb3\x26\x4d\x5e\x2b\xf5\xd7\xf4\xd2\x28\x70\x6c\x85\xf0\x48\xe9\x5c\xdb\x9c\x82\xa3\x90\x6e\xb1\x46\x6a\xee\x9c\x97\x82\x66\xfe\x81\x01\x9c\x14\x83\x5d\xec\x16\xa6\x2e\x4c\x84\xcf\xd6\xee\xee\xdf\xdc\x35\x27\xd5\xe9\x5d\x4d\xd3\xbd\x6d\x6b\x10\x97\x5f\x25\x60\xfe\xfe\xee\xa2\xcd\xd8\xdf\xd1\x65\x45\xd0\xc5\x1a\x17\x05\xc9\xda\x50\xdb\xe3\x66\xe0\x21\x18\xee\x76\x7e\xee\x16\xd2\xf6\xb8\xd4\x98\x15\x3d\xea\x8f\x97\x99\xfb\x6c\x80\xff\x60\x60\xd3\x30\x3f\x51\x03\x46\xbd\x7f\xb0\xe9\xac\x8e\x84\x99\x6e\xac\x63\xef\x2e\x90\xc0\xd5\x1d\x11\x92\x08\x2a\xea\x7c\x49\x82\x67\xf8\x39\x01\x1c\x3f\x97\x54\xe4\xf9\xb2\x85\xf5\x72\x7c\xfe\xfc\x21\x12\x2d\xaa\x6f\x4d\x1f\x59\x95\xa5\x8f\x34\xb5\xa5\xa2\x8f\x25\xd9\x97\xcf\x17\xba\xe9\xf1\x91\xa6\xbb\x0c\xdb\x98\x51\xd5\xb0\x91\x1a\xb7\xab\x07\x3a\x8a\x07\xa1\xdb\xb1\xfa\xfc\x4b\x74\x45\x95\x39\x52\xfd\x97\x36\x90\xe5\x4b\x5a\x60\x61\x9d\x1c\x6e\x81\x82\x14\xa5\x18\x90\xe7\xca\x9a\x8f\x39\x11\x27\x68\x59\x6b\x73\xd6\x92\x89\x35\xe2\x34\xaf\x33\x81\x0b\xc2\x6a\x9e\x6d\x82\xdb\xe8\x6b\x2d\x0d\x4c\x1e\x67\xe4\xcb\x70\x35\x65\xdb\xda\x72\xd9\xbd\xd2\x96\xcf\x77\xa4\x20\x15\x4d\xec\x82\x82\x2e\xbc\x36\x6a\x57\x45\x54\x72\xca\x0a\x92\xbe\x72\xc2\x5a\x17\xb5\x56\x51\xbc\x24\x41\x4b\x55\xd3\xb6\xcc\xea\x3b\x3a\xea\x49\xf9\x2a\x71\xb9\x4d\x94\x20\xe4\xde\xe3\x14\x70\x58\xf6\xd4\x01\x3e\x78\x4b\x8b\xb8\xed\x8f\x75\x4d\x49\x49\x0a\xc9\x00\x0a\x6f\x97\x86\xef\x00\x6a\x3a\x66\x5b\x05\xe3\xab\x79\x5e\xc1\x5e\x1e\xcf\xbd\xfa\x22\x2a\x2c\x19\x64\x2e\x59\x9d\x8d\x0a\xa1\x2b\x84\x8b\x30\x33\xdb\x6f\xb0\xdf\x37\xa8\x1a\x7c\x65\x68\xb4\xb8\x00\x69\x48\xd8\xb5\x1f\x20\xad\xb9\xb1\x39\x40\x36\x80\x79\x3b\x10\x39\xb2\x97\x7e\x09\x5d\x1b\xb0\x3c\x10\x90\x1c\xa4\x1c\x0a\x58\xe6\xdb\xe1\x8a\xe1\x19\x68\x8f\xfa\x00\xbe\xd2\xd7\xbe\xb1\xe8\xe5\xa7\x8c\x0b\x5d\x65\x2c\xb9\x8f\x40\x31\x7b\xa7\x9f\xef\x58\x4b\xcc\x8f\x31\x30\x66\x23\xd6\x11\x73\xb6\x3d\x01\xab\x82\x85\xf4\x47\x46\x89\xca\xa3\x5a\x31\x79\xde\x14\x68\x37\x5a\x12\xc9\x7e\xaa\xba\x08\x20\x20\x81\xf5\x38\x2c\x30\x9f\x00\x3f\xdd\xad\x40\xc1\x89\xd0\x11\xd0\x0a\x4c\x36\x27\x02\x83\x00\xf1\x4f\xff\x61\x14\xc1\xa2\x45\x49\xaa\x78\x76\x09\xac\x9d\x5d\x79\x92\x39\x4d\x09\xc4\x48\x8b\xd5\x64\x57\x24\x01\x84\xb9\xc2\x8b\x60\xe8\xde\x7d\xfa\x14\x89\x21\x24\x5f\xe8\xcc\x95\xd9\x10\xca\x12\xa9\xea\xe4\x34\xb7\xb6\xe0\xd8\xd8\xca\xdb\xa0\x86\xde\x13\xda\x20\xef\x12\x72\xe3\x4a\xf9\x44\x95\x9c\x39\xfa\xf1\xe2\xaa\xfd\x6a\xfb\xd0\xfd\x78\x71\x85\x2e\xc1\xa5\x81\xa2\x8a\x04\x3a\xf3\xe4\x28\xc9\x3d\x14\x09\xbc\x4b\x48\x53\xf8\x28\xa5\xfc\xfe\xb9\x40\x11\x1e\x2a\x04\x3e\x8b\x0a\x81\x5b\xfb\x23\xd8\x81\x43\x79\xc0\x43\x79\xc0\xe7\x55\x1e\xf0\x49\x79\x24\xda\x9b\x39\xbe\x4c\xa3\xb5\x20\x5b\xe5\xce\x37\x66\xdd\x5c\x36\xde\x35\x5a\x48\xa1\x16\xbe\x6e\x7f\xea\x83\x16\xb4\xe5\xb2\x24\x85\x27\x9f\xe2\x3d\xe3\xa9\x82\xec\x0b\x80\x8b\x6f\xbf\xfd\x61\xdb\xfc\xe1\x4f\x60\x90\xec\x13\x4e\xf0\x5c\x45\x89\xf4\xde\xdd\x59\xb5\xa3\xe2\x23\x29\x47\x67\xa8\xa3\xd0\xe9\x17\x3a\x96\x6c\x2a\xe4\x0f\x8c\x53\xc1\xaa\x0d\xc2\x42\x01\x63\x55\x82\x26\x75\x86\x43\x1e\x31\x6d\xc7\x3e\x43\x97\x57\x37\x1f\xaf\x2e\xce\x6f\xaf\x2e\xdf\x20\xfb\x15\xea\x2b\xf5\x67\xe8\x96\x35\x86\xef\x51\xaa\xb8\x09\x2a\xd0\xb1\xb4\x4d\x1f\x4f\x0c\xbb\xc7\x45\x13\x25\xa1\x20\xdd\x02\x76\xa9\xeb\x82\x8a\x26\x8a\x52\x17\xde\xc9\x58\x61\x22\x0a\x25\x65\x63\x7f\xbf\xa3\xe2\x44\xfb\xc5\xc3\x85\x14\xe5\xab\xed\x5e\x28\x7e\xa2\x63\xaa\xdc\x10\x46\x2d\x26\xe0\x6b\x9f\x8d\x45\x8a\xab\xe8\xa7\x7d\x6c\xee\x65\x23\xfb\x6c\x30\xb6\xed\x63\xf8\x06\xb3\x8d\xd1\x86\xa4\x54\x3e\x3a\x3b\xb2\xca\x60\xd6\x49\x14\x08\xd2\x6c\x3a\x65\x41\xfa\xe4\xcb\xed\xbd\x78\x86\xd0\x2f\x62\x4d\xaa\x47\xca\x01\xe0\xf0\xb4\x0b\x15\xe8\x9c\x6d\xf2\x03\x7e\x0c\x79\xfb\x2b\x61\xc2\x85\x89\x92\x59\xfa\x9d\x36\x40\x4b\x77\xf4\x81\x14\x7a\x62\xe7\x63\xd1\xb6\x6b\x51\xab\xfd\xb1\x39\xc3\x9f\x3e\xfe\x3c\x5f\x67\xf4\x89\x8d\xea\xca\x05\xcb\x73\x2a\xd0\x1a\xf3\xb5\xc5\x59\xf1\x62\x8f\x1c\xd7\x98\xa7\x8f\x30\x8e\x0b\x5a\x6f\x18\xd7\xd5\x70\x2f\x11\x55\xa0\x8e\x7e\xb4\xaf\x74\x2e\xd0\xee\x67\x5b\x0b\x2a\xc8\x6f\xd4\x3d\x2b\x3e\x88\x73\xa8\x28\x82\x1b\xcb\xbc\xd8\xfb\xa4\x48\x35\x22\x78\x64\x71\x49\xfb\xda\x07\x8d\x1f\xaa\xe3\xb5\xcd\x8f\x5a\x69\x03\xe1\x00\xa5\x44\x60\x9a\x71\x6f\x7e\x05\x2b\x59\xc6\xee\xfa\x83\x23\x23\x26\xe7\xcf\x3a\xa3\xe5\x14\x9f\xca\x59\x9f\xef\xae\x15\x5b\x0f\xca\x26\xec\xc8\x09\x6a\x46\xe9\xee\x18\x2a\x37\x66\xbe\xba\x3a\x4f\x36\x11\x7b\x50\x4e\xdd\xec\x04\xe7\xc2\xde\x52\x95\x75\xc1\xd6\xb7\x50\x7c\xbe\x41\xe2\x28\x49\x95\x53\x2e\x99\x97\xa7\xb5\x42\xae\xb2\x5b\x5a\xed\x13\x4d\xfa\x5c\x0a\xab\x3b\xd1\xe3\x6a\xed\x78\xc0\x3d\x88\xbd\x4a\x0e\x17\x4a\x6c\xdd\x2e\x17\xad\x0e\x44\x8b\xb9\x96\x15\x39\x25\x5f\x28\x57\x37\x0e\x95\x93\x16\x48\x96\x69\x84\xbb\x5f\x47\xd3\x1a\x24\xad\xf9\x52\x3f\x95\x6d\x62\xe2\x26\x1b\x5d\xd0\x99\x91\x55\xf8\x08\xce\xb2\x8d\x86\xa9\x57\x18\x1f\xda\xfc\x83\xef\x82\x28\x70\xac\x32\x6e\xa6\xb2\xa2\x0f\x34\x23\x77\xf2\x36\xba\xa6\xc5\x9d\x87\x49\x82\xb3\x8c\x3d\x12\x93\xd6\x4b\x82\x9e\xbe\x6e\xed\x16\x2e\xfc\xc8\x5e\x75\xa6\x3e\xfc\x72\x8b\x0a\xa2\x3f\xc5\x01\xfc\x65\xfa\xed\x57\x76\x26\x98\xbb\x71\x7a\x7a\xaa\x6c\x6b\xc7\xff\x96\x7a\x7c\x9a\xbd\x44\x9f\x89\xe9\x9f\xbc\xe0\x48\x6e\x93\x08\xf4\xb8\x66\xca\x5a\x52\x73\x40\x8d\xc5\x66\x07\xa8\xe3\xaf\x93\xd8\x0c\x85\x57\x92\x8a\x54\x9a\xb5\xa8\x56\xf3\x95\x36\x30\x18\xe3\x17\x1a\x8e\x1a\x6f\xfe\x2c\xf7\x81\x89\x12\xc3\x3a\x35\xfa\x76\x3a\x28\x3d\xd8\xa1\x7c\x28\xd4\x08\xbe\xc9\x33\x5a\xdc\x9f\x20\x2a\x2c\xdb\x95\xbb\xce\x84\x6e\x17\xf7\x50\x5c\xb3\x8a\xe0\xcc\x93\x5a\x33\xec\x9c\xd9\x24\x92\x88\x36\xdc\xdf\x6e\x4a\xa2\xce\xb3\x63\x4b\x26\x7c\xcc\x37\x72\xbc\x08\x1b\xae\x9f\xd7\x4c\x00\xcd\x1a\x33\xf0\x7f\xca\x63\x90\x35\x8f\xae\x17\x17\x8b\xeb\x4e\xf1\x64\xfd\x5b\xcb\x35\xb5\x43\xe0\xfc\x5c\x91\xf3\x31\xc2\x5f\x4d\xc2\xbc\x3a\x79\xb2\xc6\xe5\x79\x2d\xd6\x97\x94\x27\xec\x81\x44\x5e\x2e\x2d\x54\xab\x71\xfc\x20\x6a\xa7\x58\xd3\x42\x17\xff\x3c\xbf\xe9\x54\x26\x9c\x49\x3f\x69\x7a\xbe\x20\x3c\xfa\x26\xda\xdf\x6f\x43\x69\xaf\xbd\x3e\x38\xfd\xbe\x19\xa7\x9f\x3a\x8d\xdf\xaa\xa3\x8f\x16\x54\x50\x2c\x18\x28\x43\xbd\x6d\xe5\xa9\xb9\x60\xb9\x39\x52\xd7\x96\x8c\x0a\x35\x51\x4e\xbb\x16\x65\xd0\x06\x6b\xea\x61\x50\xa5\x63\x24\x9c\x3a\x8c\xe4\x4e\x20\xfa\x09\x2a\xc8\x63\x98\xa8\xea\x1b\x75\x34\xfe\x6e\xd2\x0e\xe4\x3e\xc6\xd9\x3f\xde\xfc\xdd\x1c\xad\x02\xe7\xe4\x1f\x4a\x87\x09\x92\x6c\x60\x2d\x9c\x69\xcb\x54\x29\x9b\xcf\xa4\x85\x10\xfd\x2d\x8e\xcf\x19\x53\xaf\x1e\xef\xbf\x6a\x9c\xe9\x79\xfc\x30\xa7\x5d\xb2\xbd\x1e\x51\xdd\xb3\x7b\xc4\xae\xc3\x07\x6b\xcb\x91\x8a\xb9\x92\xd9\xea\x89\xb0\xb6\x58\xe1\x82\xcb\xc5\x6b\xfb\x8c\x8e\x8c\x4b\xf8\x08\x1d\x8b\xa4\x04\x62\x5a\xee\x21\x6d\x49\x0f\xd3\xac\xc5\xcf\x2e\x5d\x29\xd4\x9f\x3d\xf9\x47\xd5\x1e\x8f\x33\xc1\xb5\x06\x70\xa3\x08\xa0\x9f\x29\x17\x3a\x06\x5d\x53\x84\x54\xb6\x21\x3a\x41\x45\xea\x62\x37\x0a\xd0\xbd\xfc\x6f\x9c\xa6\xd5\x1b\x2d\x83\x57\x46\x27\xaa\xd4\x8d\x9a\xc1\xcb\x96\x5b\xcf\xff\xb1\xd8\x94\x34\x51\xd7\xe7\xdb\x8b\x1b\x45\x89\xa3\xbf\xfd\xa0\xb1\x8e\xfe\xfa\x97\x1f\xbe\x0b\x6e\x81\xaf\x97\x41\x34\xc9\xc6\x15\x15\xdf\x0d\x71\x68\x84\xfc\xaf\xb3\xa9\x41\xd3\x22\xc2\x95\x62\xb6\x68\x2a\x5b\xeb\x7d\x69\x98\xb7\x5c\x64\x27\x5b\x82\x83\x8d\x52\xef\x0e\xd1\xcb\xdf\x40\xf4\xb2\xcd\x50\xd4\xfc\x6b\x57\xfe\xa7\x59\xdf\x8d\x65\x7d\x86\xb5\x85\xb7\x1d\x98\xf5\xb5\x58\x5b\x90\xee\xee\xac\x6f\xd6\x1b\x3f\xfd\x6d\xec\x48\x9d\x4a\x09\x3a\xfa\x77\x7f\xa5\x76\xb5\x1c\xa8\xeb\x4e\xc8\x74\x0c\x1a\x7d\x11\xe3\xdc\xfb\xf0\x6e\xd1\xb1\x3f\xc8\x5f\xac\x47\xaf\xed\xb5\x1b\x67\x95\x03\x1e\xbd\x5d\xaf\x2f\xc5\x6a\x14\xdc\x69\xcf\x36\x47\x6b\x38\x27\x5f\xda\x97\x47\x39\x49\x9c\x54\x0f\x61\xf5\x68\x67\x5b\x58\x60\x02\xd0\x57\x76\x51\xc9\x99\xd0\xb3\x03\xf1\x24\x3d\xa9\x73\x6a\x2f\xb3\x0c\x53\x1b\xaa\xd8\x7c\xd5\xa3\x85\x7a\xc7\xba\x45\xe5\x99\xd3\x71\x7e\x95\xe4\xc4\x92\x07\x13\xce\x21\x78\x61\x9d\xdd\xf9\x7c\x76\xdf\x2c\x46\xd8\x53\x33\xae\x5d\xb9\x6d\x13\x3e\xa7\x75\xc9\x8b\x0c\xd3\x51\xb8\xa6\x0e\x6f\xe8\x7b\x5d\xff\x73\xa1\x2d\xb6\xc0\x92\x48\xed\x3a\x2a\x08\xa3\x5e\xca\x2e\x88\x07\x9b\xdb\xbe\x82\x39\x1e\xe7\x3c\x13\xd7\xbd\x99\x98\x53\xbb\x05\x9a\x9f\xf4\x2f\x89\xec\xd2\x2c\x4c\x59\x51\x8a\x8f\x83\xbd\xb0\xaf\x75\xd3\xbb\x07\xa6\x0f\x72\xa5\xd8\x9e\x5e\x84\xb9\x43\xd6\xae\x8d\x01\x0b\x9c\x07\xfe\x75\xe7\x1f\xed\x5d\x26\x7c\x8e\x4c\xd2\x0d\x4e\xd7\xa5\xcd\x10\x9f\xf3\x02\x07\x63\x39\x6e\x17\xee\xcc\x54\xd6\x4c\xb0\x62\x62\xbe\xd2\x4d\xcf\xcb\xed\x98\x00\xfd\xc4\x85\xce\xd1\xcb\x42\xf6\x13\x47\x48\x87\x76\x3b\xef\x90\x2a\x7a\x6b\x44\x30\x2b\xac\x9f\x88\x87\xfd\xcb\xc6\x74\x3b\xc3\xb1\xff\xcf\xc1\x3e\x98\x1b\x41\x69\xae\x33\x5f\xa6\x91\x59\x85\xd7\x97\x46\x15\xb6\x99\x83\xdc\x6c\x47\xd4\xec\x47\x6f\xcf\x05\x07\x05\x48\x3e\x9a\x57\xad\x48\xaf\x2f\x77\x3e\xde\xac\x12\x8f\xac\x8a\xc5\x60\xb9\x69\xbd\xd6\x09\xf3\x31\x7f\x83\xc4\x1d\x83\x4e\xf0\x57\x3e\xa5\x0b\x15\x3f\xe0\x0d\xb1\xc7\x59\x07\x89\xab\xd0\xf7\xcf\xbe\xa3\x3d\x72\x74\x83\x54\x47\x8f\xb6\x3e\xba\xbd\x47\x16\x78\xb1\x71\x47\x7a\x2f\x47\x76\x92\x98\x0e\x20\x73\xc0\x93\x5f\x26\x21\x73\xcc\x76\x9f\xd2\xa7\x23\x92\x65\xfd\x6a\x5e\x32\x49\xcf\x72\x3d\x1b\xe6\x85\xdd\xb1\x0c\x0e\x1d\x94\x12\x30\x2b\xb3\xb2\xc3\xdd\x99\x61\xe9\xca\xea\xe3\x9f\xeb\x29\xaa\xb3\x62\x95\x82\xdd\xa0\x1a\x89\xa3\x41\x47\x37\x38\x1c\x27\xa6\xa6\x5b\x8e\x4b\x3e\x2e\x12\x25\xab\xf2\xab\xf2\xcc\xc0\x96\xa6\x16\xa9\x7a\x3f\x5c\x99\x6a\xbb\xf2\x54\x58\xbb\x07\x14\xac\xd8\xae\x33\x05\xba\xbc\xdb\x3a\x54\xe0\x3a\x53\x41\xaa\xc1\x5a\x15\xdd\x2a\x14\x41\x8a\x63\x55\x2a\x86\xea\x4f\x00\x98\xbe\x5f\x9f\xe2\xab\x78\x1d\xcd\x46\x8f\xda\x58\xb6\xfa\x94\x8d\x5f\xd7\x87\x0e\x50\x02\x64\x4a\x5d\xa9\x1b\x47\x5d\xaf\x99\x01\xf0\x71\x27\x1d\xe1\x8c\x81\x50\xd1\xbd\x4d\xe0\x95\xe7\x33\xa1\x3a\x9b\x12\xe0\x7b\x89\x2b\x27\x90\xd8\x0a\xd9\x13\xea\x3d\xf8\xa8\x47\xae\x60\x5e\x43\x11\x81\xc0\x3f\x74\x13\xcc\xce\x15\xe8\x85\xf8\x92\x09\xc0\x45\xb5\xad\xcd\x7d\x5b\x9a\xc3\x09\x22\x38\x59\xa3\x7b\xb2\x39\x55\x3c\x06\x4c\x13\xa1\x12\xab\x9c\x3e\x35\x4d\x97\x58\xb4\xab\x6e\x35\x16\x27\x68\x41\x19\xd9\x9a\x0a\xe7\x36\xe3\xad\xd9\x73\x2e\x7b\x10\x98\x3d\xd7\x34\xcc\x8d\x72\x87\x1e\xd7\x8c\x1b\x43\x8e\x31\xea\xdc\x93\x8d\x62\x27\x09\x2b\x40\x57\x8a\xa6\x19\x02\x6a\xd6\x54\x2c\x4f\x27\xb3\x4e\x9e\x58\x92\xc2\x6a\xb4\x37\x6d\x64\xdc\x4d\xe8\x8f\x64\xde\x01\x99\xd8\x99\x81\x22\x45\x75\xe1\xf5\x48\x7f\x47\x01\x58\xaa\x28\x2c\x4e\x0a\x58\x74\xb3\x47\x53\xcd\x5d\x3b\x24\x49\x01\x58\x53\x6e\x6a\x62\x2b\xaa\x31\x33\xaa\xf7\x92\xdb\x04\xad\x0c\x45\x4e\x44\x5d\xc2\xc2\x8f\x9a\xa6\xe2\xca\xe4\xc8\x09\xe7\x48\xc3\x64\xe7\xb8\xba\x27\xa9\xab\xef\x71\xa6\x0a\xfb\xc4\xac\x90\x85\x01\xb5\x55\x70\xf4\x4d\x09\x6f\xfc\x74\xd1\x88\xba\x73\xb2\x1d\x9d\x9d\xe9\x72\x3d\x7d\x69\xa4\x60\x3a\x91\x4c\xa1\xab\xb9\xe0\x52\xc5\xab\x2b\xe5\x52\x2d\xad\xb2\x14\x83\xea\x43\xf8\xcd\xd4\xba\xc4\x60\x13\x66\xd3\xe2\xf9\xa0\x6e\xf7\x24\x78\x5f\xe9\xb6\x76\x60\x98\xe1\x03\x0d\xdb\x8e\xe9\x35\x9a\x56\xe5\x44\x37\x78\x65\xb4\x81\xbe\x0f\xd4\x48\x8b\x24\x89\xfc\x9a\x6a\xfd\xd5\xd2\xa2\x29\xf6\x57\x57\xeb\xd4\x4d\x8b\xa6\x3a\x5e\x67\x4d\x57\x50\x8b\x26\x0a\xa9\xb8\x16\x4d\x34\x5c\x5d\x35\x9a\x24\x40\x0b\x8e\xef\xe6\xe4\xaa\x6d\x4d\x8b\xaf\xdf\xd6\xb4\xd8\x4a\x6e\x4d\x83\xd7\x74\x6b\xda\xd6\xb9\x77\x5c\xbc\x6c\x92\x7f\xa2\xe7\xd0\x96\x73\xcb\x71\xe9\x94\x0a\xc1\xce\xd0\x7b\x23\x15\x26\x2c\x0b\x2e\x9a\xf2\x6e\x26\xed\xa7\x2d\x62\x26\x9d\x1c\x35\x48\x92\x91\x9c\x14\xc2\x80\x14\x58\xb2\x4a\xec\x44\x13\x75\x39\xfe\x46\x6e\xc4\x49\x2c\xd3\xb1\x69\xcc\x33\xae\xde\x92\x6e\xa7\x72\x69\xa2\x9e\x8f\x94\x7f\x91\x85\x31\xfd\x97\xc2\x61\x91\x4d\x83\xc6\xd5\xe9\x16\x17\x5d\x17\x31\xda\xaf\x10\x87\xa7\x1b\x3c\x1a\x2f\x82\xa8\x8a\xdb\x03\xc7\xe4\xe9\x36\x61\xef\x5a\xcd\x73\xa7\x42\x6f\x1b\x97\xb5\xd3\xd2\x98\x23\x46\xcb\x2a\x24\xd9\xbd\xba\x0c\x58\x51\x6f\x0a\xc8\x44\x8e\x1e\x62\x5b\x6d\xbf\x01\x3e\x1f\xc0\x82\xf8\xde\x0b\xe1\x1b\xbd\x47\x13\x38\x50\x79\xf3\x7f\xe6\x77\xfa\xed\x32\xe5\x5b\xb5\xc1\x23\xf6\x06\xa0\x5c\xf9\xe4\x7e\x47\x96\x30\x8f\x92\x25\x6d\xe0\xea\x91\x62\xe6\x51\x54\xe3\x0a\x9f\x37\x6d\xea\x75\x26\xae\x18\x7a\xd3\x80\x65\xd1\xe3\x35\x44\x1b\x90\x3b\x56\x20\x3d\x9a\xea\x76\x41\xf5\x49\xa5\xd2\x9b\x36\x75\xba\xd1\xc4\xf2\xe9\x4d\x0b\x17\x52\x9f\x40\x54\xef\x3b\x57\x7c\xbd\xaf\xa4\xfa\x24\xaa\xbb\x95\x61\xf7\x7a\x37\xf5\xca\x8b\xa6\x95\x66\x6f\x5a\xb0\x48\xfb\xa4\x79\x71\x85\xdd\xd1\x0c\xe5\xda\x9b\xb6\xc3\x34\x4d\x51\x70\xd1\x84\x62\xee\x4d\x9b\xa4\xbd\xa2\x83\x19\xe3\x60\xc6\x88\x6a\x07\x33\x86\xdf\x76\x36\x63\x0c\x14\xa9\x8f\x9e\xc2\xb6\x29\xa4\xa7\x5c\xfd\x84\xb3\xb3\x5d\xde\xbe\x53\xb8\x3e\x9a\xe6\x68\xa1\x7b\x57\xc2\x3e\x9a\xec\xbc\x25\xef\x9b\x36\x4b\xf1\xfb\xa6\x4d\x16\x27\xd3\x0a\xe2\x37\x0d\x50\x1a\x7f\x12\x13\x6c\x4a\xe9\xf7\x17\xc9\x9f\x60\x38\x1b\x28\xaa\xdf\x29\x97\x3f\xe1\x78\xcc\x53\x5e\xdf\xeb\xea\x4e\x85\xf6\x9b\xb6\x8b\xe6\x3b\xb1\xf8\x7e\xd3\x60\x65\xf8\x27\xa9\x64\x2b\x07\x3b\xde\x53\x90\x7f\x12\xc5\xb8\x22\xfe\x4d\xdb\x49\xd9\x8d\x2e\xec\xef\xbd\x1a\x2a\xf1\x3f\x75\x5e\x73\x2c\x2c\x6b\xdb\x2e\xf6\x3f\x89\x68\xeb\x4e\xf1\x3a\x8c\x3f\xb2\xdd\x76\x9a\x64\xdb\xfb\xdd\xb7\x70\x23\x4d\xa3\x2a\xf4\x77\x9b\x02\x95\x93\x5c\xf2\x89\xf7\xdb\xf4\x5b\xc3\xc4\xe1\x4e\xbc\x34\x4c\x33\xdf\x3f\x47\x73\x7c\xe4\x47\x74\x78\xe3\x6c\xe6\x4c\x53\x06\xed\x10\x9d\xd4\xed\xf6\xfc\xd1\x49\x06\x6c\xe1\x10\x9a\xf4\x1f\x1b\x9a\xb4\x30\xe5\x02\x7b\xe3\x92\x74\xb4\x51\x04\x51\x40\x5c\x92\xba\x3a\x44\x90\x04\xc4\x25\x29\x1f\x6d\xd4\x41\x3a\xc4\x25\x1d\xe2\x92\x62\xfb\x7e\x30\xe8\x1d\x0c\x7a\x07\x83\x1e\xb8\x1d\xe2\x92\x0e\x71\x49\x7f\xf8\x8b\xd0\x21\x2e\xe9\x10\x97\xd4\x8a\x4b\x32\x17\xa6\x28\xa5\xd8\x04\x25\x3d\xdf\x98\x24\x53\xb6\xf8\x3c\x49\x58\x5d\x88\x5b\x76\x4f\x80\x41\x03\xa0\xcb\xfc\x16\x6d\xe0\xc0\x9f\x26\x46\x09\xd7\x29\x95\xb7\xe6\x89\x7b\xe4\xdc\xbc\x6e\x2f\xa8\x52\xba\x16\x29\x49\x1d\xdd\x88\x7d\x62\x38\x85\x90\x73\x74\x86\xce\x51\x45\x12\x5a\x52\x29\x3f\x14\x44\x8b\xfa\x3d\xf6\xf6\xe4\x6a\x15\x52\xc1\x49\xb6\x32\x95\xd5\x0a\xaf\x92\x71\xa3\x22\xc6\x5f\x1e\xed\x20\x5b\x5d\xd7\xea\x12\xb3\x25\xbc\x22\xa8\x9a\x22\xd2\x15\xf9\xb7\xd5\xe0\xcc\x5c\xdc\xfa\xdf\x4a\xa1\x18\x57\x4d\x33\x77\x7a\x6f\xd0\xa6\xc3\xb8\xa4\x50\x34\x32\x47\x2b\x9e\x0f\x91\x2f\x25\xad\xd4\xc1\x58\x90\x84\x15\xe9\x54\x4b\xd2\x55\x97\x8e\xdd\x75\xc6\x6f\x13\xb5\x84\x69\xad\x49\xa9\x14\x4c\x9c\xd1\x94\x8a\x8d\x0b\xf1\x31\x75\xcc\xb1\x3e\xb5\x51\x33\xad\x37\x2f\x6f\x96\x0f\xe1\xb2\xac\x18\x4e\xd6\x84\x7b\x33\x11\x23\x2e\x94\xa2\xa7\xd1\x1a\x5c\xb6\x68\x56\xdf\xd1\x42\x5f\x46\x14\x75\xa9\x59\x02\xf2\xf1\x9b\x56\x31\x61\x43\xe9\x3a\xc3\xf5\x77\x9d\xf9\x6c\xac\x4d\x49\x5b\x16\x44\xb5\x51\xf0\x47\xcc\xff\x98\x9e\x13\x00\x7e\x49\x7b\xfc\xe6\x35\x8e\x58\x96\x5a\xf4\xc8\xbf\x7d\x87\x4a\x52\x25\x86\x43\xc4\xb9\x16\x15\xc4\xa0\x60\x28\x93\x1a\x39\xab\x2c\x46\x65\xcf\x67\x22\x88\xfe\xe5\x7b\xb4\x66\x75\xc5\xcf\x7c\xfc\x84\xd7\xea\x37\x6d\xbb\xd1\x12\x30\xc6\xee\x25\x50\x46\x30\x17\xe8\xf5\x77\x28\xa7\x45\x2d\x15\x1f\xf0\xeb\xde\x65\xe9\x87\xef\x23\x0f\x78\xdc\x35\x29\xee\x82\xb4\x1d\xee\x65\xce\x71\xa9\xeb\x19\x99\x7b\x52\x94\x6d\x41\x81\xc4\xab\xdd\xab\xeb\xa6\xb5\xe3\x1c\xac\x10\x8d\xbc\x73\x99\xdd\x50\x08\xb6\x47\xfe\x18\x77\xbb\x88\xb8\x27\x44\x69\x41\x11\x0f\xc3\x2e\x11\x30\xc8\x0a\xe3\xa0\x1c\x79\x06\xd4\xb1\xdf\x6a\xb6\xdc\x08\x38\xb6\xce\xbf\xf4\xf3\x6d\x50\x1d\xfb\xe3\x16\x88\xe9\xe8\x7c\x6c\x97\x25\x6c\x30\x4c\x47\x5e\x84\x6a\x6a\x77\x15\xab\x83\xb9\xef\xad\xb1\x29\x9b\x8d\xb5\x11\x18\x71\x81\x93\x84\x70\xc5\x8d\x2e\x5d\x19\xf1\xe0\x96\x28\x98\xfe\x3a\x68\x3b\xec\x0b\x89\x66\x14\x43\xd4\xae\x18\xd0\x49\xb3\x4f\x1c\x51\xd0\x24\x41\xee\x30\x15\xb9\xa3\x5c\x44\x57\x41\xd5\x2f\xb5\x37\x34\xa7\xc5\x9d\xaa\x00\x87\xf2\x3a\x13\xb4\x04\xa4\x00\xd8\x19\x75\x04\x8d\x6e\xe0\x3b\x5e\xb0\x67\xbd\xc7\xe1\x29\x92\x27\x48\xe3\x40\x2b\x07\xde\xb1\xed\x0b\x22\x85\x50\x18\x27\x2a\x48\x9c\x94\xb8\xc2\x76\x59\x82\x34\x13\x96\xe7\x98\xbf\x34\x3e\x20\xac\x02\x97\xb4\x08\x91\xda\x40\x85\x33\x37\x8d\x7e\xc8\xc9\x5c\x1b\x59\x90\x02\x17\x41\x7f\x6f\xdb\x00\xa8\x5e\x41\xec\xb1\xb0\x15\x4d\x74\x09\xdd\xc8\x1d\x6c\xee\x1d\x6f\x71\x72\x4f\x8a\x54\x57\x64\x57\xfb\x38\xdd\x14\x38\x37\x08\xd9\xae\xde\x34\x49\x2d\xfd\x20\x61\x17\x94\xa3\x61\x69\x34\x60\x8c\x05\xc9\xd2\xca\xe6\x5c\xb3\x57\xf3\x48\x88\xdb\x4f\x5c\x6a\x62\xe3\xfc\x0c\xe4\x89\xe0\xa4\xa2\x0f\x09\xb1\x6a\xae\xec\xc8\x5c\x83\x7a\x08\x62\xbb\x6d\x0d\xcb\xe0\xba\x51\xef\x34\x29\x59\xe2\x1c\xd9\x0a\x55\x1b\x67\x92\x45\x85\x15\x7b\x0b\x49\xd4\xde\x50\x72\x05\x67\xac\xd2\x0c\x2d\x3a\xac\x8f\xde\xe8\x43\xc1\x0d\x0f\x92\xfb\xd5\x12\x8e\x51\x75\xf4\xf1\xed\x65\x9b\x3f\x7e\xc4\x29\xe3\xe8\x6d\xc6\x92\x7b\x74\x49\xd4\x15\x28\x5c\xff\xbc\x0b\x6e\x0e\x2a\x49\x3c\x4a\x31\x54\x16\xad\x5a\xa6\xf3\x16\x45\x3b\x14\xe9\xfa\x66\x8a\x74\x55\xcb\xb0\xcd\xe3\x8f\x5a\xa2\x2b\xc7\x77\xb1\x55\x28\xd7\x04\x55\xea\x50\xab\x97\x6d\xe5\x7f\x78\x05\xc2\xd6\x51\xfb\xf3\x9a\x3d\x9e\x0a\x76\x5a\x73\x72\x4a\x83\x41\x7f\xe0\x71\xdd\x93\x8d\x7c\x26\x6e\x64\x3f\xe9\x97\x5a\x17\x65\xc1\x94\x59\x5d\xfd\x2e\xb5\x9c\x8f\x6f\x2f\xa5\xa8\x84\x63\x26\x53\x8e\x5e\x11\x91\xbc\x4a\x48\xb9\x7e\x65\xba\xf5\xec\xa6\x2b\x67\x05\x15\xac\x8a\x2c\xaa\x7e\x8e\x12\x96\x65\x06\xf1\x8c\xad\xd0\x05\x29\xd7\x8e\x54\x94\x0f\x6a\x8f\x73\xf0\xf5\xca\x31\x95\x8c\xc5\x95\x88\xf1\x8e\x96\x7c\xd7\x9c\x2c\x6f\x23\x55\xcb\x74\xd6\xea\xeb\x4f\xb1\xb5\xf6\x50\xd5\x02\x0c\x8c\x3a\x84\x7d\xda\x53\x95\xea\x99\xec\xd6\x7d\x57\xbf\x3a\x5a\xd8\xd7\x54\x50\x9f\xe7\x3b\x8e\x2a\x66\x65\x3f\xdf\x62\x89\xe8\x7a\xa5\xaf\x45\x29\x49\x11\x7b\x20\x55\x45\x53\xc2\x2d\x2b\x8e\xe2\x98\x05\xcd\x9e\x8a\x47\x1e\xea\x72\x7d\x13\x75\xb9\xa2\x2f\xbc\x1e\xb3\x95\xef\x6e\x33\x5b\x9c\xe6\x14\x90\xbb\xfc\xac\x24\x39\xb0\xb2\x96\xd4\xdb\x46\x9f\xb0\x42\x7c\xd7\xab\x23\x4f\x70\x46\xae\x7f\x01\x5f\x1f\x17\xfa\xf9\xf6\x0d\xd2\xfe\xe8\x55\x4d\xd8\x01\x91\xfd\x27\x77\xc8\x50\xc1\xd2\x71\x4f\xcf\xa1\x66\x42\xf7\x6a\xe6\x9d\x0f\x0d\xc9\x3e\x97\x9a\x70\x87\x05\x79\xc4\x71\x5a\xc2\xad\x1d\x62\x53\x81\x49\xc7\xcf\x98\x0d\x73\x7e\x73\x8d\x7e\xd4\x74\xe7\x2b\xce\x50\x31\xa1\x35\xde\x4b\x96\x63\x1a\x59\x4a\xd7\x2b\x87\xe3\x77\xf4\xc6\x11\x45\x9a\x6a\x70\x59\xbc\xfa\xc0\x2b\x7a\x57\xcb\x1b\xb2\xb9\xb5\x1e\x30\xed\x03\x43\xdf\x9f\x72\xd5\xe8\x56\x9e\x79\xd1\xa6\x7a\x38\x7d\x29\x38\x74\xbb\x2b\x94\x58\x72\x61\x2e\x88\x93\x82\x53\xe5\xb3\xf5\x82\xa0\x94\xd2\x25\xd6\x00\x47\x93\xcb\xe1\xd0\x0a\xda\x09\xfa\x99\xdd\xd1\xc2\x72\x07\x66\xc2\x1c\x56\x98\x66\xa1\x69\x3c\x68\x4c\xdf\x84\xc6\xc4\x79\x76\x55\xe0\x65\x16\x76\x8a\xb7\x05\x57\x86\x55\xb4\x09\x51\xef\xbe\x4a\x29\x97\xff\x8f\x16\x8b\x9f\x95\xc3\xa8\x2e\xa0\x37\x08\xe5\x52\x31\xec\xd9\x61\xeb\x68\xa6\x31\xdf\x39\xd6\x3c\x31\xba\x1e\xc1\x75\x91\xca\x61\x10\xde\x8a\xcb\x34\xd4\x74\x09\x06\xa8\x37\xc9\xc4\x9b\x2d\x09\xba\x5d\xd3\xe4\xfe\xc6\xf3\x1b\xb1\x4a\xfe\x56\x78\x3f\x39\x01\x0b\x39\xce\xdd\x77\xe7\x62\xfc\x66\x98\x37\xb1\xe6\x8b\x5b\x4f\xa2\x2d\xcc\x54\x49\x22\x08\x73\xce\x12\x0a\x77\x3c\x2a\xe3\x5b\x23\x12\x53\x25\x12\xe7\x1b\x9e\xd2\x82\x76\x92\xdb\x76\x23\x18\x05\x0e\x73\x4f\x0e\x43\xdc\x8b\x66\x96\x66\x1b\x92\xde\x8a\xd1\xb5\xfa\x6e\x5b\xd5\xf9\xac\xd7\x4f\xfb\xc2\x9c\xaf\x0b\x58\x18\xc3\x2e\xbc\xd5\x69\x4d\x69\xd6\xce\xd2\xfb\x55\xfa\xc2\x27\x47\x85\xad\x3c\xa9\x57\xcd\x68\xa1\xa3\xcf\x38\xdd\x60\xfc\xa9\x90\xde\x0e\xbb\x3f\x05\x93\x9e\xfb\xac\x3b\x9d\x00\x05\xfd\x9b\x71\xa3\x29\x66\x54\xb2\xb2\xce\x70\xc0\x63\xed\x17\x54\xdc\xd5\x83\xa2\xfb\x30\x87\x5b\x6d\x6a\x85\x99\x81\xc4\xba\x4e\xb1\x99\xb0\xde\xdd\x2d\x46\x03\x29\x36\x03\xb5\x7c\xa9\x0e\x7d\xf7\xc3\xf7\xdf\xf7\x95\xa7\x69\x95\x9f\x09\xeb\x5d\xc0\xf2\x34\x9d\x04\x39\x98\xd0\x1e\x2d\x4f\xd3\x2d\x3f\x13\x9e\x52\x40\x79\x9a\xc8\x84\xb6\xfd\xd4\x9f\x01\x79\x12\x22\xb2\xf2\x6d\xae\x3d\x88\xbf\x8e\xe5\xe2\x0f\x66\xd8\x03\x64\x51\x2b\x03\x1f\x92\x57\x0f\xf0\x59\xaa\xbc\xfb\x59\xb3\xe9\x23\x72\xe8\x5b\x99\xf1\x41\xc2\x63\x99\xf3\x83\xf9\xf0\xf0\xbb\x96\xa2\x05\xca\x82\x0f\xd2\x04\xd7\xe4\x00\x07\x40\x83\x32\xde\xdb\x79\xec\x30\xfe\x00\xc9\x1a\x9c\x52\x5f\x69\x24\xa7\xdd\xe5\xa9\x03\x2e\x53\xd0\x4c\xf6\xb8\x3c\x1f\x70\xd6\xfa\x2c\xb9\xea\x91\x01\xd0\xf0\xbc\xf4\x18\xa1\x09\xb2\x3b\xe8\xd6\x9b\x83\x3e\x90\x53\x0e\x24\xd9\xce\x3c\x0f\x64\x92\x03\x69\xaa\x7c\x73\x50\xfe\xb8\x15\x7f\x40\xc2\x01\x21\xd9\x12\x82\x60\x92\x73\x88\x4a\xdd\xe2\x33\xbe\x63\x13\x18\xe0\xc9\x0b\xa0\x9c\xee\x48\x6c\xc5\xe1\x4c\xee\xed\xcc\x6c\x20\xc9\xf7\x3d\x0c\x73\x38\x1f\x1b\x48\xd4\x03\x0b\x99\x94\x85\x1d\xc5\x16\xe0\x39\x11\xb0\x3c\x6b\x60\xd6\xc4\xec\x49\x10\xf0\x1c\x5c\x78\xe6\xad\x03\xf9\x0f\x0e\x27\x2e\xe1\x36\xd6\x04\x1d\x5f\x7f\xdf\xb7\x9d\x9a\xab\x9f\xdd\x9d\x3a\x74\xd2\x01\x87\x87\x57\x4a\x71\xfa\x27\xb8\xfc\x21\xf8\xd6\x85\x5d\x9b\x75\x0f\xd8\xa8\xe0\x6e\x6f\x06\xfd\xc6\x2f\x8b\x8e\xeb\xd1\xfd\x6c\x15\x64\xe3\x55\x1c\x77\x3d\x1e\x3c\x8e\xdf\x7e\x95\xf6\x83\x7b\x6c\xba\x7b\x8c\xb7\x20\x39\xad\x81\x4a\xeb\x95\x10\x0f\x19\x5b\x9a\x82\x14\x9a\x69\xbb\x43\x7a\x7e\x73\x8d\x92\x8a\xa8\x0c\x6c\x9c\xf1\x33\x34\x01\xa1\xc8\x3a\x22\x94\x86\xca\xdd\xcd\x13\x0b\x41\xf2\x52\x84\x37\xd0\xc1\x3b\xf6\x4d\x78\xc7\x26\x9a\xd4\x7f\x75\xaf\x59\xfb\xc7\xba\xce\x71\x71\x2a\x4f\xb9\xf2\x93\x19\x7b\x3b\xcc\xa6\xde\x91\x3e\x67\xc8\xe6\xb3\xa8\x85\x51\x39\x5d\x2a\xad\x4e\x17\x51\x07\x5d\xce\x15\x96\x9b\x53\x01\xf6\xe0\x81\x50\x74\x27\xce\x99\xae\x67\xd2\xe1\x0e\x09\x2b\xc1\x33\x66\xa4\xb4\x19\xa8\x9b\x3f\xcb\x08\xbc\xa2\x29\xbe\x55\x07\x42\x5a\xab\x50\x37\x2a\xf3\xb4\xa1\xd2\xc2\x29\x33\xc0\x63\x38\xcb\xd8\x23\x20\xa9\x71\x4d\x5a\x9a\x81\xdc\x17\x72\xac\x26\x99\x7f\x49\x50\x4e\xab\x8a\x55\xc6\x73\x02\x30\x13\x36\xdb\x45\x45\x87\xc8\xfb\x2b\xa9\xf4\x15\xad\x32\xc1\x02\x0b\x22\xbc\xe9\x86\x28\x80\xb8\xd0\xc9\x4d\xf2\xdf\x36\xa6\x53\xd7\x83\x32\x7c\x72\x49\xd6\xf8\x81\xb2\xba\x52\xd4\x21\x24\x5f\x98\x57\xa5\xe8\x46\x1b\x56\xbb\x7a\xea\xb5\x4a\x73\x70\xb3\x0b\x2e\xcc\xee\xad\xf3\x87\xe6\x65\x75\xe5\x4e\x99\xb5\xc4\x9d\x92\x2f\x94\x8b\xf8\xb9\xb4\x4b\x6c\x11\xf9\x9f\x52\x8d\xad\x97\xa1\x62\x2f\xa0\xcf\x3d\xf0\x52\xea\x0b\xbf\x06\xd3\xe7\xda\xc7\xd2\x7f\xab\xad\x16\x3f\x2c\xd4\x9f\x76\x51\x8a\x0d\xe6\x05\xd7\x1a\xa3\x49\x6b\x39\x28\xc6\x63\xed\x0f\xa2\x18\xbb\xf0\x81\x8c\x26\x9b\xeb\xcb\x38\x15\xd1\x85\x0d\xc8\x97\xd1\x5b\xcc\x49\x8a\xde\xe3\x02\xdf\x69\x9b\xca\xf1\xe2\xe6\xed\xfb\x70\xc5\x80\xb2\x62\xca\x3e\x74\x7d\xd9\xe3\x80\x76\x72\x55\x7f\xe4\xc3\x7c\x99\x9b\x9d\xb1\x47\x2b\x0f\x33\x8f\x7e\xc6\x9c\x54\x2b\xe0\x21\xb5\xa7\xb6\x81\x47\x74\x30\x80\xc5\x45\xe2\x5d\xf6\xf1\x90\xa7\xf7\xf3\x74\x13\xe6\xe4\x6f\x86\xb2\x1b\x83\x0e\x3e\x52\x52\x31\x18\x93\x0e\xe1\x67\x02\x57\x77\x44\x5c\x17\x49\x56\x73\xfa\x00\xe7\xdc\xb7\xed\xf7\x3c\x85\xca\xd9\xba\x18\xa2\xf2\xcf\xe9\xb8\x0e\xc0\x8a\x3b\xa6\xf4\x91\x0a\x17\x1c\xeb\x68\x1c\x5a\x98\xac\x7a\xdd\x3b\x8d\x04\x33\xb6\xcd\x60\xd7\x4a\x4d\xed\x96\x46\x08\xa8\x5b\xf7\x4a\x47\x65\x54\xb0\x43\x5c\xe0\xbc\x44\x1a\xa4\x23\xec\xb5\xab\x48\x22\xb5\x9b\x8d\x03\x7b\x4a\xc8\x38\x4b\x04\xed\xc8\x66\x50\x19\x2d\xa6\x0c\x4c\xbe\xe6\x0d\xce\xf4\x52\xdf\xed\xa5\x72\x36\x3a\xa6\x12\x57\x82\x26\x75\x86\x2b\x35\x23\x92\x96\xc6\x9b\x4a\x9b\x20\x6e\xc1\x2c\x51\x84\x33\xa6\x2f\xd4\xe3\x1c\x4e\xe9\x82\xb6\x6b\xea\x64\x3f\x62\x6e\xeb\xb1\xc8\x0d\xa6\x35\xe5\x25\xe6\xf2\x7f\x92\xfb\xba\x94\x0f\x8c\xd2\x14\xf8\x9e\x8c\xc6\x77\x45\x4c\xf6\xff\x1a\x97\x38\x3d\xf3\xfc\xbf\xae\x2f\xbb\xfb\xc7\xdb\xee\xd7\x97\x7a\x0f\x8d\x0e\x40\x23\x64\xec\x63\x0f\x05\x79\x4c\x45\xf8\x60\x7c\x10\x84\xc7\xd4\xd5\xa8\xd5\x7c\x8e\x2e\xf2\xbf\xee\xd2\xc1\x65\x9d\xdc\x8f\x87\x40\x81\x76\x07\x29\x52\xc5\xa9\x76\x26\x54\x56\x64\x45\xbf\xec\x4c\xa6\x22\x77\x81\xb2\x99\xb3\x4c\xbd\xd6\x28\x16\x41\x5f\x42\xf0\x63\xfc\x91\xae\x76\xda\x68\x4d\xc5\xaa\x67\xb1\x02\x81\xa9\x1b\xfd\xb3\x66\x21\x8b\xc1\xc2\x39\xa1\xe9\xc0\x8f\xfc\x2a\xc3\x5c\xd0\x44\xc1\x62\x48\xb5\x6f\x70\x61\x3a\x19\xd7\x9f\x17\x5b\x6f\xb6\xae\x66\x05\x3a\xff\xbc\x40\x97\x94\xdf\x87\xeb\xd2\xb8\x18\x4d\x9b\x29\xa5\xa2\x29\xcc\xc5\xec\xe8\xa8\x7d\x35\xb3\xd1\x59\x85\x2d\x7c\x34\x4c\x96\x59\x6f\xd3\xce\x9e\x23\xfc\xc8\x89\x1e\xee\x52\x0e\x57\xfe\x79\x10\xfa\x00\xb2\x07\xc3\x97\xc3\x29\x78\x1c\x0a\x6f\x63\x5c\xc0\x45\x61\x71\xb4\xb0\x36\x46\xe9\x02\x71\x38\x3a\x38\x1b\xa3\x24\x23\x6e\x97\xf0\xdb\xe3\x1e\xb6\xc1\xe8\xf7\xe6\x07\xe3\x98\x02\xc4\x01\x63\x66\x52\x49\x13\x01\x51\xb0\x9d\xb8\xea\x5e\xb3\x83\xd9\x61\x4f\x5e\xaf\x10\xcb\xa9\x10\x36\x8a\xa6\xad\x1e\x6a\xa0\xbe\xe5\x06\x12\xb5\xad\x73\x68\x9b\x7d\xf7\xce\xc1\x82\xa1\x57\x29\x79\x78\xc5\x53\xfc\xfa\x44\x75\x8f\x1b\xe7\x7b\x48\xdd\x6c\xc6\x89\x39\x7a\xf1\xfa\xc5\x19\x5a\xd0\x9c\x66\xb8\xca\x36\xad\x90\x9f\xe6\xb9\x90\xff\xc8\x76\x44\xa5\x30\x7e\xf7\x02\x1d\xb3\x4a\xf5\x28\xc1\x05\xca\x08\x7e\x20\x36\xfd\x40\x72\x93\x0d\x22\x79\x29\x36\x2f\x47\xc3\x68\xa0\xc1\x33\xb0\x90\x19\x88\x5f\xb1\x13\xf4\x6d\xe6\xf2\x85\xa8\x6a\xf2\x42\xb9\x16\x95\x4f\x50\x72\x6c\x4e\x04\x1c\x32\xc1\x0d\xba\xe3\x38\x54\x46\x5b\x45\x7c\x70\xb3\x8c\xd2\x95\x33\xad\xbc\x9d\x2f\x9e\x54\x22\x20\xf0\xe5\x53\x53\x8f\xb8\x39\x1c\x7d\x52\x1e\x17\x79\x3b\xb0\x65\xde\x9b\xe4\xe4\x14\x24\x7d\x91\x4e\x05\x91\xe2\xfa\xf8\x3c\xc7\xbf\xb3\x02\x5d\xbd\xb5\x9e\x9e\x97\x5f\x69\xa2\x46\x99\x55\xc8\xba\x72\xea\xe6\x71\xaa\xba\x8a\x7f\xaf\x2b\x22\x95\x17\x90\x36\x74\x6e\x9f\xee\x6a\x40\xf2\x77\x1d\x30\xad\xfe\x6a\xa1\x46\x47\x14\x21\x9b\x47\x5c\xa4\x68\x49\xad\xa1\xda\xd7\x64\x76\x51\x7c\x95\xa4\xb8\x0b\x65\x2c\xb4\xf7\xd7\x3f\x65\x77\x2e\xf4\x9b\x3a\x7a\x13\x7d\x60\x05\x39\x51\x07\x19\xc9\x93\x6c\xfe\xf9\xb9\xa2\x82\x8c\xb2\x27\x90\x18\x92\x7b\x36\x64\xaf\xdc\x0a\xcc\xf3\x1d\xd1\x0a\x48\x5f\xed\x7c\x23\x90\x96\x19\x5b\xda\xfb\xc7\x1c\xbd\xfb\xf4\xf1\x3a\xaa\x73\x9f\x3e\x5e\xef\xbf\x63\x91\x0a\xe5\x8c\x9e\x86\xbd\x78\x19\xe2\x3d\x0c\x50\x1d\x10\x34\x9b\xf7\xb4\x88\x40\x1a\xbc\xfa\x52\xea\x54\x00\x13\xa9\xb1\x58\x63\x55\x7e\xd4\x41\x9f\xaa\x85\x96\x2b\x3f\x6e\x7d\x2a\x49\xe5\x12\xfa\x2c\x6a\x25\xba\x24\x3a\x01\x34\x7d\x63\x01\x5e\x1d\x35\xff\x85\x71\x8f\x97\x25\xa6\x4d\xf8\xe9\x1b\xcd\xdf\x50\xae\xff\xd3\xdb\x99\xc7\xca\x8b\x4f\x0b\xfb\xa7\x71\xb2\x0f\x98\x66\x78\x49\x33\x2a\x54\xa8\xcf\xcb\xb3\x56\x11\x59\x85\x94\x38\x8a\x60\x08\xb4\x4f\x44\xaa\x21\xd0\xd0\x26\x15\xba\x34\x6e\x4d\x9b\x2f\xac\x09\x22\xfe\xc3\x62\xcd\x32\xc7\xd1\x07\x3e\x7d\xbc\xde\x49\xec\x49\xde\x00\x17\x7b\xf2\xe9\x5e\xb1\xa7\xfe\xb0\x30\xb5\x06\xc6\x81\x36\x7d\x90\xcd\xbd\x48\xbe\xff\x9c\x3d\x04\x0d\xd7\x6d\x8d\x56\x78\xe9\xb7\x7e\x92\xa6\xb1\x94\x71\xb3\xa2\x0b\x00\xab\x31\x95\x6f\xb4\x44\x96\x6b\xf9\xd3\x68\xbc\x36\x88\x03\x28\x46\x12\x35\x20\xc5\x81\x51\x20\xb2\x64\x16\x45\xb3\x99\xed\xe1\x47\x6c\xf7\xa7\x9e\xca\x84\x94\xeb\xd5\xe0\xee\x6e\x0d\xfc\x82\x94\xeb\x77\x9d\xd0\x61\x05\x86\xf8\x6e\xb1\x0d\x74\xaf\x16\x79\x7c\xd6\xc1\x20\xf7\x90\x53\x08\xc1\x76\x1c\x2a\xe5\xfd\xde\xbc\xab\x01\x94\xb7\xd1\x1e\x47\x37\xa5\xfd\x70\x0c\x44\x96\x9e\xf4\x29\x28\x59\x80\x84\xb2\xa8\xd8\x9c\xf1\xac\x83\x50\x3a\xcb\x50\x1a\x95\x02\x13\x37\x28\xea\x36\x1a\xa6\x62\x4c\x9c\xa0\x0a\x07\xcb\x52\xaa\x7a\x2c\xca\x72\x55\x67\x99\xde\x60\xa2\x22\xe4\xc4\xb7\xd8\xbc\x7a\x7a\xc9\xef\x0d\x2f\xc0\xc0\x47\x47\x07\x82\x7c\x9c\x16\xdb\xfc\x24\x1b\x30\x46\x4e\x8c\x09\xfb\xff\x9f\xbd\x77\x6f\x6e\x1c\x47\xf2\x45\xbf\x0a\xa2\x66\x22\x5c\x75\xc3\x92\xbb\xe6\xd1\x77\xb6\x77\x62\x6e\x78\xaa\xdc\xbd\x8e\xa9\x87\x4f\xd9\xdd\x7d\xf6\xc6\x8d\xe8\x80\x48\x48\xc2\x9a\x02\x38\x04\x28\x97\xf6\xdc\xf3\xdd\x4f\x20\x01\xf0\x25\x91\x48\x50\x52\x95\xbb\x87\xdc\x3f\x76\xda\x25\x26\xf1\x48\x24\xf2\xf1\xcb\xcc\xa1\xf5\xbd\xaf\xde\xee\x2b\x52\x3b\xb8\x0e\x4b\x59\x40\xa1\xf7\x36\xc7\x54\xd5\x69\x4b\xc5\x8a\xb9\xbb\x89\x4e\x54\x56\xfb\xd8\xe5\x0c\xdd\x51\x18\x20\xfa\xf0\x62\xba\x52\x98\x55\x36\xb5\xd7\x7d\x22\xea\x61\x36\x6a\x61\xee\xad\x2e\xf8\x0f\xa3\x6a\x59\x8e\x5f\x32\x2c\x46\x0e\x03\x3b\x7f\xde\x90\xf3\x58\xb8\x39\x0a\x4a\x7e\x4a\xe8\x66\xa8\x1c\xe5\xc0\xfd\x50\x54\x0d\xd7\xda\xc5\x29\x2f\xb1\xbe\x56\x28\x5c\xf9\x25\x65\xde\x91\xca\x5c\xa0\xd8\x64\x58\x51\xe3\x22\xed\x5f\xed\xf6\x4a\xbf\x81\xdf\xb6\x35\x35\xfb\x7e\x17\xcc\x3a\x98\x89\x1b\x02\xb2\xa2\x0e\xfc\x66\xa7\xfe\x99\xcd\xec\xd7\x67\x39\xa2\xfd\xc0\x97\x08\x71\x7e\x39\x97\x14\xa6\x49\xc0\x39\x1a\x04\x20\x9a\x03\x1c\xbd\x53\x64\x52\xb6\xce\xb4\x9e\x38\xfd\x6a\xa4\x46\x00\x08\x21\x65\x71\x10\xee\x52\xb7\x72\xc7\xdb\xe4\xc1\xea\xa0\xb4\xa0\x1b\xa6\x59\x01\x72\x1b\x98\x32\x91\x42\x40\xd6\xbf\x24\x1f\x73\x26\xee\x35\x4d\x1e\x07\xfd\xf5\xd3\x2d\xfe\x6c\x6e\xf1\xf8\xb8\xa0\xbb\x44\x78\x5a\xed\x7f\xd5\x1c\xb7\x11\xad\xe6\xc2\x5d\x3a\x5f\xf3\x24\x7d\xe5\x58\x9f\xad\x98\xf7\x9e\xf6\xf6\xdd\x6b\x7b\x58\xfc\xaf\x3b\x57\x77\xf5\xe7\xa8\xf2\x66\xe1\x2a\x74\x98\x43\x88\x2c\x45\x36\xa2\x0c\x99\xbd\x71\x07\x79\x23\xb2\x04\x19\xae\xd9\x1e\xb6\xfc\x58\xab\xbc\x58\x68\x98\xc8\xd2\x63\x8d\xda\x2a\x83\x14\x91\x65\xc7\xf6\xca\x8a\x0d\x12\x3d\xae\x8e\xca\x69\x01\x20\x41\x47\xd6\x88\x12\x63\xc1\x05\x18\x2c\x2f\x56\x1f\xbe\xb8\x0a\x63\x23\xaa\x8b\xf9\xea\x61\x21\x1b\x07\x5b\x59\x6c\xec\x88\x07\xab\x8a\xed\x55\x0d\x1b\xd6\x09\x10\x15\xc5\xf6\x2b\x86\x05\x1c\x81\xac\xde\x94\x9e\x82\x62\x07\x0a\x86\x0d\x7b\x6b\x07\x8b\x89\x0d\x16\x0b\x0b\x8e\x75\xbf\x90\x18\xae\x50\x18\xc2\xa7\x1b\x5d\x20\x0c\x55\xfe\x0b\x9f\xc4\x8f\x2a\xfb\x75\x74\xc9\xaf\x88\x0c\x77\x5c\xa9\xaf\xd8\x32\x5f\xb6\x80\x57\x90\x2c\x41\x96\xf8\x8a\x2d\xca\x40\x02\xe5\xbd\xf6\x0a\x77\x21\x28\x06\x4b\x7b\x75\xaf\x18\x04\xcd\xd0\x25\x74\xe8\xa2\xc1\x2c\x6a\x64\x49\xaf\xb8\x72\x5e\x31\xa5\xbc\x70\x65\xbc\xa2\x4a\x78\x91\x0d\x0d\x75\x3f\x26\x8e\x01\x30\xe5\xbb\x22\x2a\x6e\xe1\x4a\x77\x35\x04\x16\x72\x98\x51\x65\xbb\x22\x0a\xce\x60\xca\x75\x85\x4b\x75\x21\xca\x74\x21\xab\x64\x60\x02\x65\x21\x2b\xf5\xf9\x5a\xa8\x27\xb7\x4e\x51\x3b\x8d\x29\x65\x16\x2c\x63\x56\x2b\x6c\x8d\x4a\x66\x20\x9a\x87\x95\x75\x4c\x15\x33\x8c\x1b\x26\x6c\xfc\x29\x8e\x33\xfb\xee\x6f\xc9\xcb\x37\x3e\x73\xa8\x4a\x90\xbe\x15\x9a\x15\x4b\x9a\xb0\x57\x4d\x73\x30\x84\xc9\xf2\xf9\x2e\x6b\x2a\xd2\xcc\x3a\x28\xa9\x20\xec\xb3\x66\x85\xa0\x19\x7c\x2b\x2d\xf8\x96\x15\xe4\xe5\x75\x96\xaf\x29\x59\x32\xaa\xcb\xa2\xdf\x95\x86\x32\x12\x81\x22\x1e\x01\x63\x07\xe0\x34\xdc\x66\xcd\xf9\xc6\xf0\x60\x22\x76\x16\x01\x7b\xae\x59\xc2\xfb\x8d\x14\x70\xf7\xc0\x45\xb7\x93\x65\xe1\x02\x05\x75\x2b\x99\xc2\x18\x7d\xf0\xd1\x41\xaa\x54\xb9\xee\xc3\xac\x80\x42\xbc\xf6\xed\xac\x34\x7f\x38\x1a\x03\x78\x32\x44\x65\x03\xf3\x18\x95\xf7\xb2\xec\xb4\x49\x31\x93\x83\x20\x5e\xdd\xb5\x3b\xa7\xca\x3a\x77\x82\x8a\x6f\xa3\xfa\x40\x63\xff\xac\xca\x0f\xaa\x4b\xca\x34\x2b\x36\x36\x95\x16\x07\xa6\x6f\x26\x0b\x49\x42\xf3\x3c\x1b\x6c\x6e\x84\x5a\x74\x21\x53\x76\x57\x2e\x32\xae\xd6\xf7\xd1\xfe\xd3\x0f\x07\x5e\xb6\x78\x91\x6e\x4c\x15\x13\x44\xdd\xf3\xb7\x1e\xee\x7b\x03\xda\x33\x55\x41\x77\x46\xf7\xe4\x48\xc8\xe4\xc9\x98\x66\xd5\x3f\x35\xc6\xff\x13\xa2\xad\x98\x48\xe1\x8d\x1f\x45\xde\x7c\x87\x24\x34\xcb\x94\xd3\x40\xad\x1d\xcd\x55\x25\xcc\x87\x59\xcf\x90\x04\x93\x6a\xe1\x39\x8d\x43\xb1\x22\x5f\xbd\x51\x55\x57\xbf\xeb\xf6\xe3\x4b\xa6\x0d\xfb\x49\x5a\x0b\xa9\xc8\x46\xda\x94\x33\x41\xa4\xf0\x04\x2e\x09\xcd\x32\xff\x9d\xba\x67\xd1\xf0\x68\x0b\xe6\x0e\xc0\x29\xea\x18\x4e\x4e\xec\x83\xcf\x29\x9d\xd8\xd1\x21\xa6\xfb\x2a\x19\x9e\xc2\xcb\x33\x40\x27\xfb\x0e\x27\xd4\x67\x59\x05\x4f\xb4\xbf\x78\xc6\xc7\xa9\x62\xb2\x77\xae\xb5\x2e\xf8\xa2\xd4\xc3\x1c\x47\xd3\x94\xdb\x33\x79\x87\xe4\x50\xe4\x56\x1c\xa8\x68\x56\x8f\x08\x54\x13\xa6\x9c\x14\x9a\x39\xc3\x37\x69\x9c\x92\xc0\x4d\x62\xec\xd0\xea\xdc\xed\xcb\xb5\xfa\x72\x87\x7b\xdd\xfe\xf1\x62\x98\x68\x2a\x93\xd2\x18\x3b\xf5\x7e\xd6\xa1\x5b\x8b\xa8\x0f\xef\xcc\x20\xe7\x21\x70\xd5\x30\xce\xb1\x3a\x64\x2a\x9f\xc4\x13\x2d\xd2\xeb\xbb\xde\xc4\x90\xb6\x6a\x55\xff\xbe\xa9\x35\x7a\x32\x50\x3c\x92\x2e\x64\xa9\x3d\xf4\x79\x58\x91\xec\xc4\x1a\xa6\x98\x42\xdf\x62\x4d\x31\x85\x5f\x5d\x4c\xc1\xfc\xda\xaa\x70\x19\x57\xda\xdc\xb6\xad\x53\xe2\xfc\x70\x66\x75\x4e\xe8\xbc\x6d\x9c\x4f\x2b\x3f\xbb\x39\x0e\x0d\xf5\x2f\x74\x7d\x4a\xc7\xf5\xf5\x2e\x36\x14\x4a\x77\xbc\xed\x15\x7d\x22\x37\x30\xd0\x42\x14\xc4\xed\x87\x5a\xdf\xb3\xcc\x28\x1f\xa4\x13\x86\xc9\x25\xa2\x3e\x3b\xb1\x65\x40\xa9\x10\xd2\xca\x73\x75\x49\x32\xba\x60\x99\xba\xb4\x36\xa4\xe1\xd7\xba\x6a\x25\xa6\x81\x10\xa9\xaf\x03\x84\xc3\x31\xae\x55\x46\xad\x13\x8d\xe8\x08\xe0\xde\xac\x4a\x9c\x27\x6b\xb6\xa1\xf0\x3f\xbf\x37\xeb\x16\x28\xeb\xd5\x7c\xb8\x22\x46\x05\xd1\xcc\x26\xd1\xb3\x62\xa3\x88\x5c\x5e\xb6\xb2\xa9\x5e\x6c\x5f\x07\x7b\xdc\xda\x27\xb2\x23\xc7\xd2\x0f\x76\xc4\x12\xdc\xb5\x9c\xa8\x86\x59\xb4\xb1\x16\x0c\xff\x60\x62\x7d\xf5\x53\x47\xa1\xe0\x58\xdb\x95\xfd\xca\x9d\x06\x96\xe8\x5d\x8c\x68\x24\x30\x05\x45\xa6\xa0\xc8\xb3\x0a\x8a\x34\x04\x3f\x9c\x66\xae\x7c\x43\x97\x46\xa0\x04\xb1\x08\x4d\x0f\xa1\x8f\xa7\x34\x8a\xd5\x5a\x35\xce\x87\x4a\x5c\x9c\x04\x73\x9d\x14\xed\x46\x50\x17\xf3\xf9\xc5\x85\x8f\xaf\x38\x66\x2e\xf5\x72\xf6\x17\xc2\x44\x22\xd3\x70\xf5\x50\xf3\x3c\xc0\x18\x0b\xa5\x41\x35\xa8\x6d\xf8\x66\x68\x68\xe3\xc7\x8b\x6b\x37\xe5\x1b\x4e\xc1\xf8\xc2\x2c\x10\x21\xb4\x7c\xfd\x86\xef\x47\x5e\xec\xf5\x75\xee\x29\xf9\x09\xa3\x0a\x61\xf9\x07\xee\x75\x4f\x41\x91\x8c\x6f\x38\x64\x7b\xa6\x20\x53\x99\xd2\x8a\xbc\xb4\x7f\x9c\x27\x79\x89\x91\x19\xee\xd7\x1b\xb6\x91\xc5\xee\xb2\x22\x63\x5e\x6f\xd1\x75\xbf\x08\x97\x1b\xb5\x2e\x21\x57\x00\x30\xdb\x9d\x51\x6f\xa8\x56\x0e\x53\x59\xd5\x3e\x1d\xf4\x77\x15\x49\x00\xbf\x53\x75\x2f\x81\xf9\xeb\xd0\xf0\xb8\xd2\xf4\x75\xa0\x06\xde\x65\x62\x4b\xb6\xb4\x50\xb8\x6e\x4b\x91\xaa\x42\xca\xb7\x5c\x49\x14\xbb\xf4\x7a\x72\x0c\xe3\xc9\x52\xe7\xa5\x76\x72\xd0\x71\x23\x72\xb2\xae\xe6\x57\xcd\x89\x1d\x2d\xe9\xf5\x30\xe4\xda\x3f\x91\x13\xf7\x5f\x1b\xb3\xd5\xb5\x7c\xad\xce\x5f\xa5\x24\x9d\x61\x97\x62\x34\x1c\x54\x69\x18\x12\xa3\xe0\x60\x43\xc3\x5f\x2e\xf0\x1b\x24\x04\x8e\xee\xb7\x1c\x99\xb6\x71\xe3\x7e\xdd\x46\x7f\x6a\xb6\xc9\x65\x41\x8b\x1d\x49\x9d\x6f\x61\x17\x91\x5c\xdb\xc8\xae\x3d\xba\xda\x0e\xcc\x26\xe5\xc5\x31\x99\x1b\x1b\x96\xf2\x72\xb0\x2f\x75\x7b\x4d\x7e\x86\xf2\x71\xae\x2c\x9d\x2f\x60\x61\x89\x54\x4d\xc7\x69\xf2\x18\xee\xd2\x57\x2d\xde\x5e\x75\xd8\x17\x2f\x5c\xac\x6a\xc3\xa8\xa8\xb4\x5f\x88\x4c\xca\x94\x5d\x84\x3c\x8c\x8e\x90\x1d\x53\xc3\xa5\x24\x5c\x98\xc3\xe1\x24\x5e\xba\x1f\xbe\x32\x6a\xc7\x7b\xb8\x75\xce\x5a\x4e\x2e\xb4\x59\x04\x9d\x7d\xc8\xff\x9b\xbd\x33\xd7\x69\x44\xed\x36\xa9\x69\x46\xa8\x4b\x0a\x5f\x92\x4c\x26\x34\xab\x76\xaf\x79\x1f\x85\x03\xbb\xd5\xa1\xf0\x8e\x76\xb3\x7b\x66\x4c\xf6\x8e\x07\x07\x4e\xa6\x6c\x8c\x90\x27\x74\x31\xe8\xad\xb1\xc9\xa1\xf6\xce\xaf\x76\xec\x01\x0a\xdd\x7d\xe6\x9b\x72\x43\x4a\x65\x46\x28\x45\xfb\x37\x83\x14\xab\x01\x3e\xf9\x16\xf8\x90\xf6\xcc\x05\x10\x6c\x9b\x42\x50\x97\xdd\xaf\xe7\x70\xa0\xb0\x32\x5a\x21\x77\xc5\x1b\x11\xaa\x04\x95\xd2\x8d\xce\x29\x4a\x72\x09\x11\xae\x4a\x71\x18\x66\x58\x80\x07\x42\xdd\xca\xce\x39\x10\x3c\x6b\x1f\x04\x5f\xb9\x31\x0b\x8e\x96\x2b\x52\x0a\x87\xaa\xd8\x13\x33\x87\x19\xb7\x54\xac\x98\xad\x4a\x9e\x9e\x9c\x65\x83\x52\x79\x99\xa0\xe4\xf1\xf7\x6f\xda\x82\xf8\x7b\xbe\x28\x18\x79\xb3\xa6\x42\xb0\xac\x71\xe1\x5a\xc0\x45\xef\x98\x0f\x17\x1e\x0d\xd4\x1d\x0d\xc5\x92\x8f\xac\x59\xf2\xeb\xc9\x9f\xfb\xda\x25\x9d\x7e\x55\x65\x36\xb3\x32\xa2\xc0\x66\xed\xf9\xf9\xfe\x8d\x2f\x73\x9f\x95\x82\x88\x72\xb3\x60\x83\x67\xf0\x6b\x97\x82\x7c\x0e\xc9\x81\xc7\xe7\xf0\xd9\x25\xff\xf9\xe7\x0f\x11\x35\x4b\x0e\xed\xd9\x93\x2c\xb2\xf4\x89\xa7\xbe\x5f\xd6\x4b\x43\xf2\xd5\xf3\x29\x22\xf2\xf4\xc4\xd3\xb1\x53\xf4\x9d\xae\xcc\x14\x09\xcc\xb1\x6a\xb0\x11\xb8\xe5\x5e\xc2\x67\x5f\x91\x1b\x0e\x7e\x3d\xf8\x2f\xeb\xf0\xd9\x2c\xb8\xa0\xbe\xbc\x4b\xbd\x09\xc1\x9e\xc4\xe6\x6c\x78\x17\xa7\x62\xfa\x92\x2c\x4a\xe7\x74\x92\x7a\x4d\x14\xdf\x94\x99\xa6\x82\xc9\x52\x65\xbb\x41\xf6\xf8\x92\xcb\x1f\xbe\x0b\x33\xf6\x79\xb8\x65\x52\xfb\x4e\xac\x7e\xde\xbe\x1b\x57\x4c\xb0\x82\x27\x7e\xc3\xd0\x55\xb9\x01\x81\xa6\xb8\x14\x2c\xbd\xaa\x2e\x4a\xdb\x21\x0b\x50\x8b\x2c\x81\x1e\x0b\x29\xc9\xb3\x72\xc5\x7b\xbd\xf6\x5f\x14\xa3\x58\xa3\xac\x30\x9d\x1c\x9b\xe8\xc4\x63\xe5\xfb\x6f\xbb\x10\x63\x53\x1d\x6d\x5c\xa7\x29\xcb\x99\x30\x87\x57\x34\xb8\x6f\x58\x77\x86\x25\x38\x7a\xb5\x5d\x2c\xe0\xeb\x03\x6d\x1a\x32\xf1\xe6\xb3\x2e\xa8\x11\x62\x1b\xa3\x31\xfa\x68\x05\x5f\x12\x2a\x86\x85\xce\x79\x40\x54\xbf\x91\xab\xf8\x8c\x05\x76\xa2\x31\x8c\x41\x30\x28\x06\x66\x6a\xa5\xa5\x3b\x08\x1e\xb0\xd9\x0f\xbe\x44\x38\xdf\x9a\xd9\x7c\x1d\x80\x66\x3f\x08\x73\x78\xda\x07\x01\x9a\xea\x00\x04\xac\x33\x9b\xa9\xac\x00\x79\xfe\x88\xcc\x73\xe3\xe2\x96\x99\x4c\x1e\x91\xf5\x70\xbe\xb7\xbf\xed\x58\xf3\xee\x8f\xdd\x82\x38\x03\x78\xf7\x3e\xeb\xdd\x9d\xaf\xc6\x45\x05\x40\x0d\xf7\x01\x73\x2c\x0a\x99\x0d\x08\x1f\x5b\xc6\x74\xc1\xcc\xd1\x2f\x4a\x31\x50\x7f\x03\xa5\xe7\x50\x4d\x55\x64\x91\xce\x6e\x8d\x6b\xc5\xb4\x45\x73\x42\x19\xbf\x0d\xd3\x14\xca\xf8\xce\xfe\x16\xce\x9b\x70\xb3\xf7\x54\x96\xb2\xa8\x56\xc2\xfb\x6b\x21\x3a\xa8\x78\xca\x1c\xfd\xd4\xec\x0b\xd4\x21\x3e\xf6\xca\x76\x5f\xfd\xf1\xc7\x88\x6a\x16\xe6\xc7\x9d\xb9\xbb\x0d\x05\xaf\x16\x54\xc0\xaf\xad\x8e\xe1\xb9\x2f\x1b\x8c\xe5\x68\x9d\xd9\x97\xb5\x4a\xd8\x5d\x55\x94\x1f\x5d\x54\xfe\xe2\x87\x37\x37\xed\xd7\xda\x87\xe3\x87\x37\x37\xbf\x99\xf6\x3a\xab\x84\xd5\x6d\x0b\x52\xae\x1e\xa7\xde\x3a\xf5\xf3\x2f\xd2\x5b\x67\x8f\x07\x7e\x2b\x1e\xbf\xa9\xb1\xce\xb0\x1e\xfc\x4c\x1a\xeb\x7c\x51\xde\xfe\x72\xae\xdb\x3c\x8d\xd2\x32\x7c\x3f\x99\xa6\x33\xe5\xee\x6d\x1d\x49\xe1\xc2\x5c\x3c\x73\x28\x1f\x1c\x62\xbe\x56\xc1\x29\xdf\xf8\x02\xde\xfe\x92\xcb\x79\xa6\xea\x77\x51\xf6\x70\x28\xd8\xd7\xb2\x95\xf7\xcd\xf4\xaf\xb1\x60\xc7\xb6\x2a\xb0\x7c\x37\x5a\x65\xe2\xfa\x13\xcb\x7b\x4b\xfe\x76\x14\x25\xfb\xe3\x8e\xb7\x93\x6b\xf3\x07\xa9\x38\xa0\x31\xa8\x86\xf2\x2b\xbe\x0f\xed\x00\x23\x58\x5f\xe7\x9c\xbc\xbd\xb9\xfb\x74\xf3\xe6\xfa\xe1\xe6\xed\x77\xc4\x7f\x81\x37\x15\xe1\x39\x79\x90\xb5\x73\x74\xc0\x22\xa9\x82\xbe\x16\x23\x58\x8f\xed\xd2\x89\x5e\x2a\xea\x08\xb5\x6d\xa7\x2b\xc8\xad\xe0\xba\x42\x89\x0d\xab\x76\x49\x26\x85\x43\x56\x19\xaa\xce\x37\xbb\xe2\xfa\xd2\x2a\x72\xae\x93\xc2\x9a\xb5\xbf\x32\x40\x94\x91\x3b\x8b\x4b\xa9\x86\xde\x6b\xd1\xa3\xcc\x1d\x8f\xeb\xc0\xf7\xcd\xb1\x71\x93\x1a\x4d\x63\xef\x9d\x0a\x44\xea\x31\xa1\x81\x9b\xa0\x5b\xe1\x87\x98\x9b\xf0\x62\x7e\xe1\x95\xaf\xac\xaa\xd4\xe4\xc1\xcb\xfe\x83\x83\x64\x3d\xac\xd9\xbc\xd8\xe6\xb3\x39\x21\x1f\x8d\xa9\xff\xc4\x15\xbb\x34\xda\x13\x12\x45\xdd\x18\x02\x10\x6f\x62\x5e\x3b\x9c\xec\xfe\xaa\xca\x05\x76\xb0\xae\xd9\xbc\x6d\x96\x1d\xea\xc5\x8e\x14\x97\x7e\x38\xe8\x1d\xfd\x54\xcf\xe0\xc7\x4f\xef\x8e\x1f\x80\x3d\x75\xe8\xcf\xbf\x91\x9b\x0d\xd7\x64\x4d\xd5\xba\xaa\x33\x50\xe3\x37\xaa\x53\x7f\xdc\xb8\xc2\x52\xb1\x5e\xb8\xd1\x92\xd1\x96\x37\x40\xf6\x83\xb8\xf8\xc1\xff\xbc\x63\x3c\x56\x7f\x6e\x76\x85\xe8\x9d\x7d\xd5\x2d\x22\x0e\xb8\xd6\x57\xe6\xb9\x9a\xc3\x69\x2a\x0d\xfb\x8e\xca\x11\x11\xcc\x1b\xff\xca\x87\x46\xe5\x37\x4f\xc7\x2a\x3f\x30\xdd\x94\x69\xca\xb3\x61\x4f\x5f\xbd\x96\x5a\xe6\x32\x93\xab\xb8\x2a\xeb\x07\x16\xe3\x77\x16\x35\x3f\xa3\x33\xb3\xca\xc7\xdb\x1f\x31\x1d\x22\x7c\x12\x80\x59\x90\x7a\x66\x95\x0e\x0e\xb8\xfb\xd3\x54\xe4\x3f\xfb\xc4\x4f\xac\xd4\x75\x57\x23\xa4\xfe\x2e\xea\xc6\x1a\x20\x83\xeb\x0c\xf6\x9c\x15\x1b\xae\x8c\xc0\x69\x6b\x7b\x83\x14\xfb\x35\xc1\xf3\x2d\xf0\xb1\x4a\x60\x75\x32\xfb\xd5\xc4\x7e\x20\x70\x50\x14\x1a\xa9\x34\x94\xb8\xb6\xdf\xc8\x10\x98\xbb\x25\x08\xf3\x82\xcd\xd8\x67\xae\xc0\xa7\x02\x79\x2b\xb2\x40\x68\x01\xcd\x2e\x3a\xde\x71\xe6\xdd\x6c\xf6\xed\x6c\xd7\xc1\x89\x35\x74\xa9\x5e\xb2\xde\xa5\x09\xa1\x7a\x9a\x65\x3b\x5b\xbc\x17\x72\xe2\xad\x1b\x83\xae\x60\xe0\xb2\x70\x21\x85\xbc\xe0\x5b\x9e\xb1\xa1\x56\x6d\x7a\xcd\xc5\x4a\xd5\xb9\xfb\x34\xcb\xe4\x13\x73\xa9\x7a\x6c\x6f\x1e\x86\xc5\x94\xc6\x20\x15\xe1\x7c\x7c\xf8\xf8\x40\x04\x33\xe4\xd6\x5c\x1d\x6d\xa8\x98\x81\x0c\x62\xc3\x67\xb3\x19\xf8\x7e\x5e\xfe\x97\xd1\x79\xd3\xec\x15\xf9\x99\xb9\xef\x1b\x03\xc0\x48\x84\x44\x93\xa7\xb5\x04\x6b\xbf\x54\x6e\x6e\xe1\x1d\xdd\xd8\x06\xb3\x54\xa4\xfe\xed\x2b\x43\xc1\x28\x9b\xf6\x8a\x6c\xd1\x81\x9a\x14\x8a\xd4\xd1\xd3\xa3\xf4\xe3\x11\x12\xda\x3b\xc3\x2b\x05\xb9\xc1\x91\x3e\xf6\x17\x70\xbb\x58\x39\x4f\x89\xda\x6d\x32\x2e\x1e\x2f\x09\xd7\x5e\xe4\x19\x0e\x71\xb0\x52\xf1\xe8\xf9\xb7\x60\xb4\x3f\x42\xe2\x49\x9e\x8c\x03\x8e\x96\xfe\x3a\xca\x09\xfc\xb0\xcb\x01\x27\x42\x2a\x31\xe1\x20\x34\x4d\x63\xfc\xc5\x0b\x98\x5d\xc0\x9a\xff\xca\x33\x47\x98\xe6\x47\xc8\x5c\xae\xb0\x15\xd3\x2e\x6e\xef\xdf\xdc\xdf\x76\x5a\x03\xda\xbf\xb5\xc2\x16\x23\xc1\xb9\x08\x74\xee\xa0\x81\xdb\x17\xb6\xe8\xbb\x4c\x61\xe2\xa7\xd1\x57\x93\x35\xcd\xaf\x4b\xbd\x7e\xcb\x55\x22\xb7\x2c\xc2\x88\xf2\xa5\xf5\x5c\xe0\x80\x70\xbf\x9c\x96\x0e\x79\xf3\x1f\xd7\x77\xf8\x7e\x41\x38\xe0\x85\x1f\xed\x3d\x53\x51\x16\xd7\xe1\xb1\x3a\x2a\x67\x19\xe9\x14\xf8\xf9\x55\x06\x7e\xe0\x64\xfd\x56\x82\x3d\x5c\x70\xcd\xa9\x96\xc1\xcc\xd0\xb6\x77\xa2\x54\x5a\x6e\xdc\x11\xb9\xf5\x24\x20\xe4\x0f\x97\x79\x8b\xea\xf0\xf5\xd3\xaa\xe8\xcd\xe1\x8e\x4f\x14\xaf\xea\x54\x76\x40\xb0\x97\x44\xb0\x27\xfb\xdd\xc0\xad\xe6\xdf\xff\xab\x83\x34\x1b\xfe\xa5\xd9\xdf\xbe\xfb\xab\x3b\x2e\xc6\x66\xfe\x5b\xe5\x19\x73\x69\xdf\xc3\x06\x4d\x55\xee\x11\xfa\x92\x1c\xef\x7e\x21\x84\xff\x13\x2f\x9f\x9c\x8b\xd1\xae\xf9\xff\x28\x69\x66\xd7\xec\xc3\x29\xfc\x63\xed\x35\x47\x0f\xc9\xef\xbf\x5f\xeb\x0f\x95\x1f\xa2\x54\x0c\xee\x4f\xfb\x0b\x5d\x50\xa1\xcc\x06\x0c\x9f\xcb\xa6\xea\x72\xe1\x42\x7e\x17\xe4\xa5\x4e\x72\x44\xad\xb3\x13\xa6\x31\xd8\x41\xbb\xf5\x7e\x57\xa5\x2f\x0c\x8d\xe1\xc4\x31\x30\xe0\x55\xbc\x7b\xa8\x35\xe0\x3b\x78\x99\xbc\xe3\x4a\x5b\xfc\xab\xa5\x06\x2d\xf5\x78\xb0\x42\x84\xd1\x79\xee\xa0\xf8\x6d\xfe\x0b\x4d\xd3\xe2\x3b\x7b\x17\xfa\x92\x3a\x05\x58\x8c\xd2\xd5\xcb\xa5\x02\x55\x78\xf3\xa5\xde\xe5\x3c\x01\xf3\xf0\xe1\xcd\x1d\x50\x51\xe4\x2f\xdf\xda\x1a\x1e\x7f\xfc\xc3\xb7\xdf\x0c\x6e\xef\x97\xcd\x2c\x88\xf6\xc1\x7c\xd1\xb8\xda\xd1\x2a\x47\x3c\x2a\x15\x14\x9f\xfb\xba\x4f\xa3\x3b\xd1\x96\xd7\xcc\x06\x56\xb2\x7e\x98\xaf\xb0\xaa\xd3\x84\xb6\x7c\x26\x68\x4b\x9f\x4d\x64\xe5\xc9\x31\xb2\xc8\x8a\xa1\xbb\x8e\x18\x22\x01\x2c\xef\x18\x31\xd4\x10\x35\xc3\x0a\x5a\xbc\x18\x3a\x89\x25\xcb\xff\xd9\x37\xe7\x99\xb9\xa1\x7a\xff\xad\xb9\x13\x63\x2d\x61\x81\x0d\xc1\x7c\xe8\x34\xe4\x16\xe4\x43\x6f\x37\x6e\x17\x5f\xe9\xb7\x85\xbb\x71\x97\x63\x95\x6f\xb1\xec\x2d\x15\x72\x26\xcf\x95\x77\x93\x1a\x3b\xbd\x99\xa8\x62\x16\x45\xb1\x02\x8a\x88\x9e\xd1\xcb\x32\x30\x61\xf2\x95\x02\x0b\x66\xe6\x76\x35\x42\x31\x80\xf8\x90\x42\xf8\xa2\x3b\xda\x7e\x43\xad\x68\xf8\x22\x2d\x62\x32\xbf\x2e\xee\xe1\xf7\x3e\x50\x65\xce\x8f\x45\x2c\x15\x46\xce\x19\x09\xc7\x94\xc2\x54\x96\xe9\x72\xdd\x57\xe5\xac\xa3\x5c\x77\x33\x37\x8f\xb1\xf2\xac\x06\x08\x59\xad\xe9\x4d\x46\x79\x6f\x11\x90\xce\xb9\x3e\xf4\xaa\xfd\x9f\xf7\xd6\xc7\xd7\x94\x7f\x03\xc7\xaa\x91\x98\x43\xc9\x41\xaa\x15\xfc\x81\x3a\x9b\x13\x0a\x49\xf6\xf3\xf7\xc8\x3d\xad\x17\x63\xe6\xb7\xb7\xfe\x93\xfd\x4b\x62\x86\x73\x94\xf0\x04\x0a\x71\xe8\xbc\x37\xfe\x95\x6e\xd2\x63\xcf\x72\x85\x14\xe4\xfd\xa5\x24\x54\x55\x75\x49\x4b\xe7\x1e\x69\xf4\x6e\x38\x83\x64\x3e\x7a\xad\xc9\xd9\xe4\xf6\xcf\xa7\x6c\x47\xfb\xd6\xe7\x4d\x9e\xc2\xf4\x08\x8b\x8a\x8a\xbb\x46\x0b\x84\xb5\xd4\x52\x8c\xc8\x5c\xb8\x3b\xf0\x62\x3b\xea\x6a\x7f\xf1\xc6\x66\xdd\x64\x43\x96\x7b\x45\xc4\x02\x48\x9b\x3d\xb1\x83\xbd\xaf\x8f\x38\x9a\xbf\xed\x2c\xde\x13\x7a\x7f\x71\x08\x94\x34\x22\xd7\xe7\xf6\xad\x53\x11\x7d\x3e\x8f\x72\xec\x42\x6a\x7e\x69\xf0\xc5\xe0\xbc\x03\x69\x04\xa7\xb9\x92\xd3\xf1\xad\x67\xcd\x26\x3f\xc9\x22\x26\xbb\xff\xae\xf5\x4a\x07\xcc\xe0\xfe\xad\x9b\x30\xd7\x6f\x4e\x3c\xaf\x53\x74\x0f\x51\xd8\xc6\x94\x0e\x85\x4f\xfc\xd9\x1a\x56\x69\x0f\x1c\x3b\xd4\xd1\x1a\xa4\x7a\xe0\xd8\xd9\xa3\x75\xda\x46\xf0\x5f\xfc\x9a\x0b\xe4\x85\xb7\x7d\x72\x83\x33\x39\x61\xff\xf6\x98\x96\x1b\x11\xe2\xe5\x27\xf7\x82\x4b\x1b\x34\xfb\x55\x0b\x1a\x5a\x1d\xaf\x30\xc6\xeb\x59\xf4\xae\xae\x9a\xc9\xa2\x64\x87\x2d\xa7\xbf\x94\x05\x24\x73\x73\xdb\x80\xa7\xae\xe9\xea\xb2\xbb\x2f\x5d\x87\x95\x0d\xcd\x07\x6a\x90\x1a\xd1\xd1\xac\xc5\x7f\x84\x98\x18\xd3\x6a\xe2\x7d\xa8\xbf\x44\xb3\x87\x04\x52\x54\x0c\xf4\x97\xd8\xeb\x18\x31\x7c\x87\xf7\x75\x93\x18\xea\x18\x11\x32\xfc\xe3\xaa\x61\x87\x7a\x22\x90\xd8\x3a\xd8\x75\x95\xeb\x61\x11\xc9\x06\x97\xfb\xb4\x71\x1d\xc7\xb8\x68\xa6\xf1\x3d\x24\x3c\x9a\xd5\x1e\x1e\xb3\x7c\xc7\xc5\x4b\xda\x17\x74\x45\xd5\xee\x89\x2b\xe9\x50\x9d\x54\x42\x33\x29\x56\x98\x2e\x9e\xb2\x89\x9f\x60\x69\x05\x4c\xd8\xe5\x01\x6f\x38\xbe\x98\x71\xb0\xf7\x7d\xcf\x24\x9b\x35\x2f\xea\x56\x35\x75\x13\xfc\x94\xea\x7e\x3b\xbf\x7e\xea\xce\xc3\xc1\x1f\xc7\x15\x68\x46\x6c\xda\xc1\x79\x21\x9a\x98\xa3\x88\x56\xc6\x35\xae\x9d\x39\x92\xe6\x5e\x0b\xf1\xfe\xc6\xe6\x58\x8a\xa1\xf6\xe7\xed\x16\xe7\x48\xaa\xa7\x6c\x84\x5e\x3f\x11\x2d\xd1\x63\xd6\xd3\xd5\xa4\xc7\x34\x47\xc7\x0e\xb4\xdb\x42\x9d\xe8\xbe\x36\xe9\x48\x8a\x83\xcd\xd4\xf7\x1a\xa6\x23\x89\xe2\xdb\xaa\x47\xd4\xe7\x1e\xdb\x60\xbd\x7e\x22\x8e\x6e\x74\xd3\x75\x24\x55\x82\x6c\xce\x5e\x3f\x71\xd2\xc9\x3e\xa8\x86\xed\xf5\x73\x74\xeb\xf6\xfa\x89\xac\x7e\x6e\x1f\x5c\xe7\x92\x9e\xf1\x0e\xf4\x30\x89\x20\x49\xda\xfd\x4e\xfa\xba\x99\x44\x51\x1c\xec\x7c\x12\x7f\x52\xfd\xdc\xc3\x3d\x50\xc8\x22\x8e\x26\x5e\xff\x8b\x22\x8b\xe9\x2e\xe6\xf4\xc1\x28\xba\x23\xbb\x8d\x75\x9f\xb8\x5e\x29\x8d\x69\x45\x74\x4d\xa9\x1f\x5c\xff\x94\xfa\xc1\xb7\x97\x8f\xdb\x13\x68\x45\x5f\x5d\xc7\xfd\x8d\xe6\xa3\xa8\xb6\x9a\xd2\xf7\xb6\x9c\x8f\x22\xd9\xd7\x9e\xde\x5e\xd3\x31\xcd\xe7\x1b\x93\x8f\x17\x4e\xf8\x9e\x07\xf6\x09\xb7\xa6\x6f\xfe\x16\xd9\x00\x87\xc4\x35\x82\x6a\xbe\x30\x0c\xa1\xaa\x1f\x0c\x46\xc7\x3e\x71\x48\x1d\xe4\xec\xbe\x30\x9e\xc7\x3e\xb1\xa8\x1e\x24\x59\x0c\xf6\xc7\x3e\x91\xfc\x88\x69\x9b\x5f\x3f\x51\x0d\xf4\xb1\xea\x67\xb3\xcd\x3e\xae\x95\x7e\xfd\xe0\xbc\x6e\xed\x5f\xa3\xf8\x1d\xd1\x24\xb5\xf1\xe3\xb0\xad\xd9\xa0\xf7\xeb\xb5\x36\xf7\xdb\x5b\xee\xf5\x9e\x44\x6e\x3a\xfa\x8e\x19\xaf\x5e\x87\xda\x62\xa2\x65\x7c\xa7\x60\x66\x7f\x83\x4c\x34\x45\x7c\x23\xcd\xfa\x19\xa3\xb2\xe3\x9b\x6b\xd6\x0f\xb2\xcd\x66\x9c\x1a\x5c\xb7\xe4\xec\x6f\xb8\x19\x45\xf1\x70\x73\xce\xa8\x16\x5a\xf5\x33\x66\x69\xc9\x88\x76\x9c\xf5\x83\x6b\xcc\x19\x49\x94\xd4\x8d\x3c\xfb\x5a\x74\x46\x53\x1c\xd7\xd2\xb3\x7e\x46\x99\x6e\x24\xbe\xcd\x67\x73\xc4\xb8\x86\x9f\xd1\x4b\xe1\xe1\x27\xe3\x5b\x7f\xd6\xcf\xc8\x65\x89\x55\x1c\x49\x64\x63\xd0\xee\x00\x23\x34\x43\x32\x99\xdc\x93\xc9\x3d\x99\xdc\x7b\x4f\x54\xf3\xd2\x68\xfb\x18\xd5\xc6\x34\xee\x62\x6d\xb7\x3c\x3d\xdc\xd0\x74\x8c\x1d\x7f\xb0\xf9\x69\xdd\xda\x34\x8e\xd1\x4f\xd7\x06\xb5\x7e\xa2\x1a\xa2\xd6\xcf\x28\x51\x1e\xdf\x24\xb5\x7e\x90\xed\x52\xe3\x8e\x62\xd5\x5a\x15\xd1\x38\x35\x8a\x72\xb3\xc9\xea\x50\x0b\xd5\x38\xc5\xeb\x40\xbb\xd5\x23\x9a\xa9\xd6\xcf\x58\x4d\x70\x44\x83\xd5\xfa\xc1\xb5\x5a\x8d\xd6\x57\x9a\xad\x59\x8f\x69\xba\x5a\x3f\xa3\x95\xb9\xa8\x46\xac\x8d\xd7\x90\x2d\x59\xa3\x97\xc6\x89\x8e\x81\xe6\xac\xd1\x24\x23\x9a\xb9\x36\x5e\x1a\xbb\xa0\x71\x0d\x5e\xeb\x07\xd1\xea\x35\x7a\xe6\x31\xad\x61\xeb\xe7\x8b\x6a\xc0\xe8\xc6\xb1\xdd\xf1\x45\x29\xc0\xf1\x6e\xdd\xe7\xe2\xaa\x8d\x20\x6e\x41\x57\x27\x71\x89\xb9\x56\x1f\xd0\x06\x00\xc5\x77\xcf\xcc\x1b\xf6\x45\xb1\x17\x2e\x05\xd7\x98\x0a\x48\xaa\x38\xe0\x85\x85\x54\x20\x49\xa2\x81\x17\xe4\x76\x89\x85\x0a\x4c\xc0\x8b\x0e\xf0\xe2\xde\x35\xb0\x69\xec\x16\xe0\x29\x62\xc6\x8a\x40\x5d\x58\x3c\x05\x92\x28\x16\x75\x01\xd1\x33\xac\x43\x73\x42\x5d\x20\x9e\x09\x75\x31\xb9\x80\x22\x9e\xc9\x05\xf4\xcc\x5d\x40\x13\xea\x62\x42\x5d\x4c\xa8\x8b\x09\x75\x71\x52\xd4\x85\x33\x0e\x64\x41\x42\xf9\x0e\xf5\x63\x64\xc6\xb3\x42\x5c\xb8\xa6\x75\xd7\x49\x22\x4b\xa1\x1f\xe4\x23\x43\x84\x55\x51\x66\xe6\x1e\x5d\xc4\x44\x9d\x55\x7a\x26\x9b\x93\x96\x29\x37\x76\xdd\x88\xfd\xbf\x76\xaf\x7a\x83\xcb\xdc\x5e\x22\x65\x69\x45\x13\xb9\xff\xee\xa4\x6b\xb3\x1e\x73\x72\x4d\x0a\x96\xf0\x9c\x1b\x3b\x04\xd2\xf3\xe1\xef\x96\x41\x7c\x5f\x1c\xac\x55\xa3\x15\xcb\x96\xae\x77\x88\x68\xf4\xb9\x6b\x58\x49\xee\x4a\x39\x62\xc8\x56\xed\x90\xbe\x79\x85\x6f\x04\x58\xb0\xff\x72\x19\x45\x58\x61\x6c\xe7\xff\xd0\x18\x4d\x2b\xe8\x0d\x4b\x8c\x6b\xd5\xb7\x37\x50\x9a\x73\x57\xab\xe3\x1c\x32\x84\x7d\xce\x79\x01\xcc\x7e\xcf\x12\x29\x86\x1b\xa2\xd7\x4f\x8b\x99\x6e\xba\x34\x3c\x57\x39\xef\x3a\xda\xe6\x4e\xcb\xa2\x6a\x80\xbe\xa5\x19\x4f\xb9\xde\x55\x80\x06\xd7\x8d\x92\xda\x13\x18\xb7\x31\xd7\xaa\xde\x73\x42\xf3\xbc\x90\x34\x59\x33\xd5\x98\xfd\x65\xc4\x6e\xbb\x8c\xe1\x2a\xa3\xca\x76\x81\x05\xe5\x1b\x28\x1b\xad\x2c\xdb\x91\x42\x6a\x8a\xd6\x9b\x0e\x4c\xb1\xc9\x55\xfe\x93\x11\x9e\x1b\xab\x22\xe9\x62\x07\xe5\x2c\xa4\x1b\x4e\x63\x1d\x78\xe3\x20\xe0\x7d\x0d\x32\x4b\x7d\xbd\xac\xbf\x7c\x43\x72\x56\x24\xee\xb4\x83\x99\xc5\x37\x10\x3c\xcc\xf0\x61\x48\x73\xdd\x2c\x9b\xa3\x6a\x7d\xe2\x0f\x7f\x22\x6b\x59\x16\x6a\xfe\x36\xce\xa5\xae\x25\x79\x0d\x6f\x5a\x1f\x83\x37\xde\x34\xc9\x18\x55\x9a\xbc\xfe\x86\x6c\xb8\x28\x8d\x5a\x81\x22\xd8\x30\x0d\xbe\xfd\x53\xc4\x31\xc4\x1b\x05\x78\x73\x60\x1f\x9a\xe2\x4e\x5b\x6e\xeb\xfc\x3b\xab\x00\xd1\x8c\xb9\x7e\x6c\x5d\x2e\xdb\x07\xa4\x13\x07\x76\x57\x57\x3c\xab\x08\x2d\xcf\x20\xb1\xf0\xfa\x37\x52\x9b\x46\xeb\x16\xc8\x1f\x86\xd5\xec\x70\x82\xb4\x0b\x24\xf5\xfc\x7b\x70\x20\xff\x2c\xe5\x62\xa7\x71\x95\x15\xfe\x87\xfd\x6d\xbb\xa4\x82\xff\xe3\x5e\xb9\xb6\xde\x79\xef\xb7\xc9\xa9\xab\xb5\xf5\xbc\x84\xd1\x75\x56\x85\x2c\x07\xb3\x34\x5b\x73\x01\x4f\x82\xb7\x68\xbd\x8b\x3a\x49\x98\x6d\x4d\xfe\xb6\x6e\xff\x28\x86\xe3\x04\xf0\xd5\xe0\x16\x9f\xba\x1e\xc1\x60\xb5\x34\xbf\x23\x5f\xb1\x09\x4b\x70\x41\x42\xda\x7c\xc1\x56\x5c\xe9\xa8\xee\x59\xf6\x85\x36\x73\x2a\x2e\x56\xb6\x63\xc9\xa6\xcc\x34\xcf\xb3\x6a\x75\x06\x27\x51\x11\x73\xb7\x6c\xd3\xdd\x4e\x1b\xbe\x5c\x6a\x0b\x81\xd8\x5a\x91\xc1\xf0\xcb\xcb\x6a\x0c\x4c\x68\xdb\x20\xa3\x30\x17\x79\x4e\x0b\x5a\x2d\x7f\x22\x37\x1b\xaa\x5e\x59\xaf\x3e\xa1\x49\xe0\x16\x73\xb5\xa8\xcc\xbd\x5a\xd0\xac\x5a\xb6\x66\x28\xfe\x58\xe6\xd4\x4c\x50\x31\x18\x7f\x6b\xbb\x9b\xe0\xe7\x44\x3e\x09\x5f\x39\xdc\xb6\x55\x6b\x73\x25\x41\xe4\x4c\xfe\x9d\x26\x8f\x4c\xa4\xd0\x49\xd3\x2e\x4e\xba\x13\x74\xe3\x0a\xfb\x56\x7d\x05\x59\xda\xa1\x1d\x00\xf6\x5a\x9f\xac\x2d\x31\xe0\x4b\x9c\x58\xb5\xec\xd8\x95\x2a\x55\x44\x81\xbe\x1f\x95\xd1\x5b\x86\xe5\x8f\xb2\xe0\xd1\x82\x6f\x13\x86\xd1\x65\xcd\x00\x8e\x9d\xc4\x76\xb0\xd2\xce\xde\x34\x5c\x95\x1d\xde\x38\x15\x20\xdf\xab\x40\x22\xd4\xf3\xa4\x99\x11\x2b\xc3\xf6\x9c\x2f\x4e\xd1\x61\x94\xc5\xee\x14\x1d\xf9\x30\x8d\xe7\xec\xd1\xe9\xfd\xc1\xa0\x38\x0d\xde\xb3\xc5\x02\x57\x81\xe4\xe2\xd3\xdf\xdf\xb6\x65\xd8\x27\x9a\x4a\x45\xfe\x9e\xc9\xe4\x91\xbc\x65\xa0\xf4\x7f\x8d\x96\x74\xc5\x22\x3d\x4d\x73\x8f\xa9\x09\xc5\xaf\xb2\x09\x45\xb1\x18\x5e\x86\x5f\x53\x0b\x8a\x0d\x5d\xc5\x74\x3e\x5a\x33\x52\xc0\x21\x84\x17\x7d\xa7\xd5\x91\x47\xe7\x77\x6b\xf9\x34\xd3\x72\x56\x2a\x36\xe3\x83\x20\x26\xd4\x5c\x1e\xd9\xce\xfc\x3b\x7e\x36\xff\xb0\x2f\xb4\x0c\x41\x2d\xc1\x39\x0b\x7f\x37\x9a\xc3\xa7\xbf\xbf\x35\xd7\x13\xae\x5a\x23\x57\xe4\x8a\xe9\xe4\x2a\x61\xf9\xfa\xca\x0d\xe7\xd9\x2c\xcf\x46\x0a\xae\x65\x11\xd1\xf8\xf2\x9a\x24\x32\xcb\x5c\x7d\x1a\xb9\x24\x6f\x58\xbe\xae\xc8\x9c\xac\xb5\xe3\xc8\x39\x7f\xd9\xd6\x04\xb9\x94\xf8\x32\xec\x8d\x63\x62\xde\x73\xa7\xa4\xc1\x24\xc5\x22\x8d\xae\x8e\xfa\x35\x58\xe6\x57\xd8\xe9\xfc\x2c\xcb\x74\xfa\xce\x0e\x17\xf7\xfe\x15\x30\xac\x1b\xd1\xbf\x76\xb3\x06\x47\x7a\xd8\xce\x6c\x88\x29\x72\xbb\xb4\xe6\x40\xca\x52\x22\xb7\xac\x28\x78\xca\x14\xa9\x64\x51\xcd\x84\x83\x24\x05\xcf\xbe\xc4\xea\x4e\xfd\x26\x9e\x4d\xbf\x89\x28\x83\xad\x21\xe0\xcc\x7b\xfb\x02\x8e\xa6\x1b\x2e\x7e\x05\x22\x0e\xd1\x35\xc2\xe8\x39\xbd\xff\xea\x2f\xc3\xb1\xa6\x90\x4a\x68\xc6\x6e\x3f\xa2\xcc\xa1\x7b\xfb\xdb\xb6\x45\xe4\xff\xd8\xa8\x7d\x1c\xf0\x75\xf5\x55\x45\xfe\x47\x75\x10\x88\x90\x69\xbf\x87\x7f\xaa\x88\xdc\xe0\x73\x5b\xd0\xf5\xd8\x6b\x76\x45\x35\x7b\xa2\xf8\x5b\xf6\xc1\x4f\xa9\xdd\xbb\xa0\x62\x86\xeb\xbb\x5b\xf2\x83\xa5\x79\x7c\x39\xe6\x42\x6a\xab\x01\xbe\x95\x1b\xca\x23\x5a\xa6\x35\x0a\xce\x37\x07\x77\x57\x11\x24\x96\xa2\xb9\xbf\x86\xf7\xb4\xaa\x16\x58\x1a\xab\xcf\x59\x63\x53\xe5\xdb\xc6\x54\x4f\xaf\xa0\xd4\xfa\x49\xc3\x7d\xe5\xa1\xdd\x75\x47\x2a\xb7\xab\x41\x57\x5c\x0d\x18\x20\x8a\x09\xc5\x21\xd6\xd6\x80\x8c\xb8\x36\xc4\xb6\xa3\xb5\xc5\x65\x5b\x25\x66\xf8\x64\xbe\x93\x2b\x2e\xfc\xc9\x96\x2e\x98\xbc\xa4\x7c\xb0\xae\xdd\xa4\x75\x3c\x1b\xad\x43\xa9\xec\x46\xd0\x45\x36\x1c\x98\x6c\x5f\x16\x19\x85\xb8\x3c\x83\xf7\xae\x52\xae\xcc\xff\x27\xf7\xf7\xef\x20\x60\x50\x0a\xaf\x39\x07\x8b\xa6\x3a\x11\x59\xe5\x9d\xd9\x43\x7d\xfc\x59\xb3\xf2\x29\xaa\x42\xf1\xad\x48\xcd\xb0\x99\x6a\x21\xcb\x1c\x25\x5b\x84\x19\x13\xc3\x72\x38\x9c\x05\x23\x0f\x6b\x9e\x3c\xde\x35\xe2\x02\xb2\x30\x7f\x13\x8d\x3f\x55\x17\xd9\xb0\x86\xa6\xf6\xde\x3b\x56\xf0\xba\x69\xdd\xc5\x98\xd4\x0f\x8d\x1b\xe4\xde\x2d\x8b\x21\x40\xa8\x52\x32\xe1\x75\xd0\x28\xd8\xca\xbc\xbe\x7e\x52\xb8\x7e\x8e\x9f\x0e\x68\x13\xa3\xef\x45\xbf\xc9\xbe\x67\xbf\x6a\xdc\x75\x21\x03\xd9\xad\xc8\xd1\x53\xb0\xac\x15\xd5\x5d\xe6\xa1\xd5\x4f\xc6\x47\x6d\x6c\x6c\xa3\x8a\x5f\x20\x22\x5b\x7e\x53\xbd\xfe\xe7\x1a\x7e\xed\x6f\x6b\xd5\x57\xc6\x85\xf9\xcf\x1e\x05\x71\x5a\x59\xef\xbf\x57\x77\x6a\xff\x2f\x86\xf4\x55\x84\x6d\x60\x16\x7b\xa8\x0a\x4b\x70\x9a\xc3\xf9\x82\x87\x1c\x12\x9d\x98\xb1\xfd\x9b\x8b\x9c\x80\x6c\xc9\x65\x5e\x66\x43\xf8\xac\xbd\x0e\x40\x47\x38\xda\xed\xf7\x8f\x89\xb0\x8c\x29\x17\x3f\x90\x09\xb3\x57\x39\x3e\x14\x0e\xf1\x55\xe5\x71\x95\xe3\x31\x60\x2d\x2d\xc9\x37\xdf\xfe\xe9\x4f\x87\xea\xcc\xf7\xd7\x92\x0f\x47\x6d\x0e\xd7\x99\xef\xaf\x25\x3f\x48\x71\xa8\xce\xfc\x50\x16\xcb\x20\xd1\xc1\x3a\xf3\xc1\xac\x95\xd3\x16\x93\x0f\x3a\x9f\x63\x93\x55\x31\xa2\x12\x9b\xa2\x8a\x4f\xdb\x0c\x24\xa6\x0e\xa5\x9c\x86\x94\x86\x56\x3a\xea\xe9\x12\x4d\x23\xd2\x4b\x9b\x89\xa3\x01\x95\x20\x9c\x54\xba\x9f\x2e\x1a\x34\x59\xfb\x52\x49\x03\x49\xa2\x88\x83\x55\x25\x90\x9e\xa6\x20\xf7\xd8\x32\xdc\xb1\xcd\x0e\xc2\xc9\x9f\xc8\xa4\x4e\x3c\xdc\x1f\x95\xc0\x79\x74\xda\x66\x04\x12\x13\x97\xa2\x19\x73\x1d\xd5\xc9\x96\x41\xb2\xa4\x2f\x1d\x73\x38\xc5\x12\x41\xb7\xc1\xe3\x98\xc4\x4a\x04\xc5\xe8\x26\x26\x08\x9a\xc8\x24\xca\xd6\x15\x83\x59\xd4\xc8\xd4\xc9\xb8\x84\xc9\x18\x44\x34\x0e\x0d\x8d\x4f\x89\x74\xa0\x2c\x24\x03\x0c\x27\x42\xb6\x93\x1b\x11\x24\xfb\xd2\x1f\x7b\x53\x1a\x91\xc3\x8c\x4a\x7a\x44\x1f\x6d\x1c\xc0\x3a\x9c\xd6\x88\x80\x5f\x9f\x0c\x51\x8d\x4b\x85\x8b\x4b\x80\xab\xab\x09\x0f\xeb\x9c\x98\xbc\xb7\x18\xdf\x66\x5c\x6b\xd4\xa6\xa3\xce\x19\x39\x9e\xd3\x2c\x2e\xac\xaa\x6c\x1a\xd2\xc5\xcb\x9e\x38\xf4\xe9\xcc\x1c\x82\x63\xc3\xb0\x3d\x69\xbf\x2a\x71\x9d\xc8\x9d\x93\xe5\xe3\x7d\x27\xde\x54\xfd\x79\x64\xdb\xc0\x29\xcc\xd4\xfb\x7c\xe5\xc6\x9b\x53\x3c\x64\x68\xb2\x75\x3c\x44\xb5\x6a\xa1\x79\x17\x89\xd5\xc7\x96\xb2\x20\x72\x81\xa9\x48\x0d\x82\xb3\x3a\x4c\xd7\x77\xb7\x24\x29\x18\xa4\x3a\xd2\x4c\xcd\xc9\x81\x42\x17\x29\xc2\x5b\x0b\x5a\x5d\x6d\x53\x51\xad\xd9\x26\xd7\xc3\xcc\x31\x85\x43\x9e\x4d\x38\x64\x84\x1f\xf6\xa7\xea\x95\xaa\xbf\x7d\xb9\xa1\x62\x66\x4e\x22\x04\x46\x1a\xbe\xe6\x61\x47\x6c\x47\xb2\xcf\x89\x07\xb4\xc3\xe2\x82\x4b\x09\x72\x61\x6c\x2f\x4c\x4c\xb9\x1e\x8a\x69\xba\x1e\xed\xa2\x06\x7a\x23\xd6\xc7\x16\x2a\xef\x9c\xde\x44\xe6\xa8\xd5\x71\xb7\x9d\x33\x53\xab\xb5\xf2\x07\xb5\x51\x09\xbd\xe9\x3b\x08\x49\x00\xab\x72\xdc\x41\xda\x57\x4d\xa1\x6d\x35\x59\xb3\x89\x66\x99\x7c\x52\xc1\x61\x36\x6f\x57\xb3\xef\x66\x7e\x2e\x8f\x75\xc1\xc8\x86\x17\x85\x2c\x9c\x4b\xbd\x39\x8d\x41\x9a\x46\xa6\x69\x63\xb5\xb1\xc2\x9a\x21\x85\x8b\xd8\xde\x33\xdd\x64\x3f\x63\xcc\x0b\x9b\xa1\x10\xca\x8c\xf2\xc0\x34\xdb\x9c\xc1\x45\xdf\x16\x6c\x4d\xb7\x5c\x96\x85\xa5\xac\x25\x79\xe1\xfe\x09\xae\xba\x9d\x1c\x2e\x53\xea\x5d\x9e\xb6\x0f\x7d\xb5\x9a\xea\xc0\x9e\x55\xdc\x10\xf0\xb4\x1a\x03\x33\x95\xde\xef\x33\x63\x9f\xb9\xd2\x7b\xe4\xaa\xed\xf2\x65\x7f\xcf\xac\xc6\x6d\x55\x6e\xee\xd3\x88\x2e\xd0\x3f\x35\xdf\x68\xab\x73\xdb\x7b\xf8\xa7\x5f\x6b\x0f\xe8\x49\xa1\x43\xc5\x59\x33\x9e\xec\x22\xba\x1e\xd7\xf1\x55\xf3\x22\xf9\x3b\x55\x2c\x25\xef\xa9\xa0\x2b\x6b\x7f\xbf\xbc\xbf\xfb\xfb\xfb\x57\x66\x43\x83\x65\x93\x6e\xdf\x1e\x0a\xd0\xfa\x2f\xd8\x0f\x7c\x38\x3e\xa5\xa9\x33\xd7\xa8\x0b\xf4\x84\xb3\x3d\x41\x72\x96\xbf\x69\x42\xcd\x17\xf6\xb3\xd9\xbb\x7d\xf0\x3b\x47\x7b\xbb\x49\xcf\xde\xdd\xbe\x1e\xfa\x38\xe1\x36\xf8\xcf\x4a\x53\xb5\xfe\xc4\xcc\x46\xb3\x7b\xa6\xfa\x1a\x7f\x1c\xd6\x40\xe1\x65\x52\xb4\xde\x36\x56\x85\xa2\x5e\xbf\x81\x9b\x57\x1e\x8e\xe5\x1a\x31\x97\x2e\xdc\xc0\xe6\x46\x95\xad\x55\xd7\x15\xd7\xeb\x72\x31\x4f\xe4\xe6\x0a\x3e\xc2\x52\xfb\xff\xaf\x16\x99\x5c\x5c\x7d\xf3\x6f\x74\xf9\xe7\xf4\x8f\xaf\xff\x6d\xb1\xf8\xf3\x82\xfd\xe5\x2f\xff\xf6\xfa\x2f\xdf\xfe\xdb\xb7\x7f\xa6\xcb\xc5\x37\x7f\xfa\xe6\x4f\x7f\xfe\xbf\xff\xf2\x3a\xfd\x76\xf9\x6f\x7f\xf8\xf6\x8a\xe6\x5c\xb9\x17\xb7\xaf\x17\x4c\xd3\xd7\x57\x6e\xb4\xbf\x28\x3b\xdc\x5f\xa0\x95\xef\x7c\x25\x7f\xf7\xee\x0f\x7f\x38\xa4\x94\x86\x04\xec\x90\xfe\xfe\x3c\xf5\xf6\x93\xea\xeb\x01\x0e\x1f\xe0\xbd\xde\x7f\xca\x18\x4d\x59\x71\xe3\x32\x64\xba\x6b\xdb\x5a\xd3\x77\xf0\x53\xc2\x7c\x36\x8d\xc7\x78\x80\x2a\xd5\x79\x71\x68\x23\x33\x46\x15\x7b\x5b\x06\x4b\xcf\x74\x3f\x5e\xbf\xe4\xcd\x84\xaa\x68\x0c\x87\x24\x03\x09\x2e\x70\xaa\x89\x90\x62\x66\x27\x76\x70\x21\x13\x2a\x52\x9e\x5a\xa8\x92\x51\x7c\x9e\x28\x07\x5d\xcd\x5a\xef\x34\x01\x19\xe1\x56\x46\xad\x79\xee\xdc\xfe\x5c\x91\x0d\xa3\xaa\x17\xd4\x42\x57\x94\x0b\xa5\x6d\x25\x14\xb9\x24\x19\x35\x37\xef\x02\x2a\xf8\xa4\x84\x26\x8f\x35\xec\xf6\xf5\x9f\x0f\x50\x08\xf9\xd4\x87\xbd\xe8\x05\x13\xec\xe9\x2d\xa3\x69\xc6\x05\xc3\xae\xea\xa7\xe6\x4b\xa1\x55\x85\xcc\x8e\xa4\x37\xe9\x65\x43\x95\x51\xaf\x61\x45\x0b\x66\x73\xf7\x97\x05\x53\x6b\xa3\x76\xd4\x8b\x49\x16\x6c\x69\x4e\xe1\x8a\x6f\xcd\x3f\x94\xf9\x9c\x7c\x30\x13\xcf\xb2\xdd\x61\x4d\xa4\xbd\xf3\xff\x17\xf9\x03\xb9\x22\x7f\x6c\x2c\xe5\x37\x67\x58\x4a\x5d\xec\xee\x58\xc1\x65\x8a\x5f\xc8\xea\x95\xc1\x65\x64\xee\x14\xc1\x81\xeb\xc1\x0c\x27\x19\x07\xd5\xd6\xa1\x55\x80\x3b\x7d\x90\xcb\x16\x1a\x90\x4b\xd8\x08\xa8\xe4\x50\x2d\x5e\x7b\xa1\x0e\x52\x6e\x2d\xdc\xa1\x75\x39\x66\xdd\xfa\xee\xd6\xd9\xc1\x03\xbf\xf7\xa3\x43\xfc\x7b\xe0\x47\xdd\x9d\xc1\xca\x39\x97\xe5\x30\x28\xe0\xde\xdb\xdf\x98\x0d\x34\x76\xab\x7f\x07\x4a\xb9\x2d\xa8\x32\x37\x87\xd2\x74\xbf\xdc\xd8\x90\xb0\xa3\x2b\x76\xb8\xda\xc2\xa0\x2c\xa7\xc5\x2a\xcc\x73\x17\xd7\xc5\xaa\xdc\x00\xab\x38\x40\x01\x13\xba\xd8\x41\x29\x1f\x5b\x3a\x2a\x95\xc9\xa3\xb1\x78\x37\x74\xc5\x2e\x2e\x14\x79\xf3\xfe\xed\x41\xbe\xf0\x13\xe6\x87\xf1\xcb\x73\xf2\x13\x2d\x38\x78\x62\x1a\x40\xea\xdf\xbf\xfc\xe9\xfa\xd3\x2f\x1f\xae\xdf\xdf\xbc\x3a\x2c\x0e\x0b\x68\x90\x40\xa1\xb6\x5c\x59\x65\xfd\x56\x9d\x2e\xcc\x80\x98\xd8\xf2\x42\x8a\x4d\x0d\x5d\xd8\xba\x2f\xf5\x09\x6e\x17\x94\x2b\x98\x92\xd9\xd6\x63\x31\xaa\x51\xf9\x08\x08\x17\x79\xa9\x7d\x94\xcc\x19\xb7\x07\x29\x96\x22\x59\x53\xb1\xf2\x9d\x64\x1a\x73\x22\x6a\x27\x34\xfd\xec\x03\xa9\x4c\x25\x34\xf7\xfa\x3f\x25\xa9\x2c\xfb\x06\xf9\xfb\xdf\x5f\x12\xce\xbe\x23\xbf\x6f\x10\x9b\x93\x1b\xf7\x7e\x63\x01\x2d\xb6\x83\x6d\x59\x01\x1f\x70\x4b\x75\x58\x08\x16\x6c\x45\x8b\x34\x73\x89\x12\xcd\xc8\x95\x5f\x30\x02\xa6\xbd\x22\xb2\x30\x7b\x37\x27\x6f\xaa\xb5\x2a\xf3\xb4\xdf\xa8\xc7\x69\x44\x9a\xaa\x47\x75\xc5\x85\x39\x56\x33\x73\x1c\x66\x34\x37\x86\x20\x9c\xe8\x2b\x1b\x05\x9b\x41\xad\x13\x91\xce\xa8\x63\xcb\x59\xb5\xd5\x57\xbf\x2b\x4a\x21\x8c\x02\x45\xab\x5f\x71\x31\xa3\x33\xb5\x66\x3d\x45\xcd\xde\x1a\x13\x3f\x31\xe3\xfe\x0e\xbc\xd2\x79\x21\x37\x66\xd2\xa5\x9a\xb3\xcf\x60\xe1\x16\x73\x73\x4a\x0e\xa9\x4a\x03\xa0\x0e\x94\x06\x75\x38\xde\xc8\xc4\x36\x7c\x24\xdf\xb9\xb6\x96\x0d\xc6\xae\x76\xc8\x95\xff\xa8\xc2\x74\xd5\xf2\x1c\xde\x99\xfd\x0d\x6c\x2c\x0a\x6a\x7d\x98\xd8\x46\x2e\x4f\xbb\xb6\x9f\xd8\xfe\x44\x8b\x96\xb3\x45\x1c\x9c\x98\x47\x14\xf5\x68\xad\x80\x89\x79\x33\x3c\xd9\xb0\x67\x65\xd8\x75\xdf\x1a\x78\x53\xf7\x3f\x34\xde\xa6\x6f\xe5\xcd\x2f\xb7\x6f\x6f\x3e\x3c\xdc\x7e\x7f\x7b\xf3\xa9\xdf\xee\x45\x98\x96\x10\xb6\x40\x0e\xf0\x22\x20\x4f\x5b\xb2\x73\xc0\xe2\xad\xa5\x6a\x5e\xb0\x2d\x97\xa5\xf2\x11\xe9\x1e\x06\x0c\x22\xa9\x2a\x9e\x04\x37\x19\x15\x55\xcd\xa4\xc3\x04\x31\x42\xdb\x11\x1e\x2d\xba\x07\x88\x9a\xb3\x31\x46\x80\x0f\x90\xf4\xa2\x7d\x8c\x18\x1f\x1e\x69\x25\xe0\xa3\x84\xf9\x00\x4d\x10\xf3\xcd\x00\xe6\x8b\x17\x03\xc8\x1d\x2c\x0b\x7f\x5f\xc8\x81\x44\x80\xb6\xdb\xc9\xb6\xfc\x01\xe7\x7a\xcf\x51\xbb\x50\x0e\x41\x39\x30\x8f\x86\xa0\x73\x4a\x48\x55\xd3\xc9\xfc\x9d\x6d\x72\x3d\x90\x03\x88\x0b\xfd\x25\xbe\xad\xf4\x3f\xd8\x2e\xd8\x2e\xad\x13\x34\xf5\xfd\xd1\x1e\xd9\xce\x66\x0a\x54\x3d\xaa\x9f\x05\xc4\xcf\xb6\x4f\x3a\x29\xc2\x0f\x57\x01\xfc\x79\x3a\x5c\xea\xe7\x0c\x35\xbd\x71\xf5\xbc\x23\x56\x1a\x5f\xc7\x3b\xaa\x73\x3a\xb2\x8c\xf7\x98\x12\xde\xf8\xf2\xdd\xa7\x82\x93\x21\xb1\x62\xb8\x5e\xd5\x7d\xcd\x0f\x5b\x98\x74\xe8\x33\xed\x22\x29\x8a\x6c\x98\xa6\x46\xe7\x9d\x1b\xc6\x0b\x71\x49\xeb\xc7\xe0\x91\xbd\xac\xff\xe6\x1a\x55\xd7\x7f\x68\xb6\xb1\x0e\x10\x56\x39\x4b\xe6\x42\xa6\x10\xa8\xbc\xb4\xff\xd9\xae\x4c\xee\xfe\x41\x53\x5d\xaa\xf9\x5a\x2a\x7d\x7b\x17\x24\x6a\x7f\x9c\xcb\xf4\xf6\x2e\x80\xfa\xc4\x4b\xb3\x98\xae\xd6\xb8\x3e\xd6\xad\xbe\xd4\x08\xbe\x3e\xd4\xb9\x7a\x44\x27\xea\x88\x73\x1c\xd1\x6d\x1a\xdb\x5f\x7a\xaf\x5f\x34\x62\xe2\x51\x1d\xa5\x4f\x8e\x0b\xc5\xf5\x89\x46\x1e\xe7\xb8\x0e\xa7\xc8\x9e\xa6\xdd\x3e\xa5\x81\x35\x1a\xec\x62\x3a\xd4\x99\x34\x40\xd7\xfd\x98\xe5\x6b\xb6\x61\x05\xcd\x66\x2e\xf4\xd7\xee\x68\x7a\xd9\x6d\x51\x1a\x3a\x77\xcd\xa6\xa6\x7b\xb4\xc7\xf6\x37\xc5\x9f\xfb\xc8\x1e\xa6\xb8\xae\xa5\xad\x2e\xa4\x88\x13\x30\xb2\x4f\x69\xc4\x51\x47\xf7\x22\xc5\x76\x1f\xed\x74\x13\x45\x4c\xf2\x40\xbf\x51\x6c\xff\xd0\x88\x89\xe2\x7b\x84\x22\xba\x82\xa2\xbb\x7c\x9e\x5c\x2a\xa1\x7a\x77\x22\x85\x92\x45\x4a\x9e\xc2\x86\xd8\x47\x6c\x63\x01\xdb\x5f\xc2\xac\x68\xc3\xca\xeb\x2b\x69\x59\xc8\xcd\x9c\x60\x9b\x82\xfb\x24\x1d\x9e\x7a\x4a\x8f\x6c\xb0\x9a\x8b\x7d\x26\x43\xe5\xb7\x6d\xa8\xec\xe5\x5a\x20\xe6\xf3\x1b\xb1\x52\xc2\x75\x85\x07\x47\x33\x03\x86\x1f\x70\x6c\x07\x60\x29\x87\x1d\xdb\xb5\xeb\xf8\xd0\x57\x43\xe2\xc6\x7b\x9b\xfb\xd6\x0f\x23\xae\xfa\xc2\x5d\xfe\x39\x2e\xec\x35\xb8\x6d\x6f\xde\xbf\x1d\x15\xfe\x1a\x24\xda\xe7\xca\xc5\x84\xc1\x06\x09\xb7\xbc\xad\x68\x9f\xea\x20\xc9\x43\xa1\xb2\xb0\x57\x75\x90\xe4\x50\xc8\x6c\xd8\xaf\x1a\x38\xa9\xa1\xd0\xd9\x61\xcf\xea\xf0\xb1\x8d\x0a\xa1\xc5\xd6\x8b\xfd\xd2\xa1\xb4\xe7\x53\x6c\xb6\x27\x5a\xe6\x9f\x36\xb6\x07\x1f\x34\x1b\xe6\xbb\x2a\xc6\x84\x8d\x7e\xda\x27\x36\x09\x1c\x1d\x18\x0b\x5c\x53\x8d\xbe\xcd\xc1\x00\x59\xfd\x0e\x56\xfb\x1b\xa1\x1b\xe1\x02\x67\x58\xcd\x0f\x17\x5a\xf3\x4f\x84\x2e\x12\x08\xb5\x1d\x9c\x1a\x26\xe4\x86\x98\xd8\x01\x49\x3e\x14\x7a\x43\x50\xec\x06\xe7\x70\x21\xb8\x18\xc2\x73\xdc\xb5\x81\xb2\x3b\x11\x38\x8b\xc6\xe5\x81\xd1\x7d\x4f\x84\xba\x68\x3f\xa7\x0d\xde\xf9\x27\x32\x88\x87\x62\xa7\xd6\x85\x83\x0e\xe6\xf9\x27\xf6\xd0\x0c\x07\xf7\xfc\x13\x1f\xe4\x43\xb1\x23\x14\x52\x39\x2e\xd8\xe7\x9f\xb8\x66\x99\x51\xc1\xbf\xc3\x8b\x30\x3a\x08\x38\x6e\xc4\x24\xb6\x71\xfb\xb1\xc1\x41\xff\x8c\x68\x8b\x8c\x6f\x17\xbc\x37\xd0\x53\xb5\x0c\x26\x5f\xab\x6d\x30\x89\xb2\xde\x23\x88\xe2\x73\x37\xeb\x67\xc4\xde\xc5\xb5\x11\x26\x51\x61\xc8\x88\xd9\xd6\xae\x80\x51\x1d\x85\x49\x74\x57\x61\x12\xdd\xce\x1b\xdf\xcc\x3b\xb2\x3b\x37\x2e\x6c\xe9\x9f\xf8\xf0\x25\x72\x05\xdb\x41\x4e\x54\x18\x33\x96\x72\x33\xd8\x89\x0d\x67\x22\xbf\xd1\x0e\x7a\xc6\x84\x35\xfd\x13\x2f\x9f\x63\xc2\x9c\xfe\x89\x0d\x77\x46\x9c\x21\xae\x4e\x15\xf6\xf4\xcf\x08\x79\x12\x11\x06\xf5\x4f\x44\x38\x34\x62\x35\xda\xe5\xd5\xa2\xc2\xa2\x15\x89\xd8\xe9\xc7\x0a\x14\x5c\xb8\xb4\x3d\x1c\xb4\x58\x89\x0b\x9f\xfa\x27\x3e\x8c\x8a\xbd\x68\x44\xb6\x8b\x08\xa7\x22\xa9\xb6\x83\xae\xd8\xb0\x2a\x92\x78\x27\xf8\x1a\x0a\xaf\x62\xa5\xc6\xa8\x20\xac\x7f\xe2\xa5\x54\x64\x50\xd6\x3f\xf8\xe0\x6c\xc4\xa1\xf4\x61\xdc\xb1\x41\x5a\xff\x8c\x10\x4c\xe8\xa0\x6d\xf5\x02\x3e\x78\x1b\x29\x96\x5c\x98\xf7\x98\x20\x6e\x45\x2e\x7e\x21\xf0\x41\x5d\xff\x9c\x32\xb8\x3b\x7a\xe0\xb1\xb2\x15\x15\xf4\x6d\x8f\x06\x2d\x5a\xf1\x41\x60\xff\x44\x05\x83\x91\x8b\x18\x13\x32\xae\xde\xf9\x0a\x46\x68\x4f\x28\x39\xe2\xd0\x34\x82\xce\x63\x43\xca\xfe\x99\xcc\xdb\xc9\xbc\x1d\x7c\xf0\xc1\xeb\x18\xd5\xfc\x5f\xd3\xb6\x45\xff\x18\x1b\x82\xef\x0d\x7e\x47\x7e\x11\xd7\x2c\xb1\xc0\x37\xc9\xbe\x93\x85\x26\xa2\xdc\x2c\x58\x51\x3b\x4a\x5d\x5c\x9c\x28\x9e\x32\x92\xd0\xc1\xb8\xce\x69\x2b\x7b\x57\x9a\x05\x3e\xa6\xfe\x46\x6e\xf2\x52\x33\xf2\xa9\x52\xd1\x2b\x1d\x6f\xb1\xab\xe7\x12\x48\x59\xf3\xcf\x60\xe0\x14\x25\xca\x5a\xb5\x05\xae\x36\x50\xca\x64\x96\xd8\x41\xce\xaa\xf9\x35\xc2\xa2\xa7\x68\xd1\x67\xed\x87\x20\xbc\x39\x4d\xb9\x15\x2b\x77\x11\xd7\x69\x0c\xc0\xb0\x93\x51\x08\xa6\x92\xfd\xe3\xc2\xa9\xa0\x1b\xfa\x99\x6f\xca\x0d\xa1\xae\x75\x74\x58\x07\x75\x6b\xd7\xb0\xc1\xa0\x1c\xd7\xd7\xde\x1a\x12\x2b\x27\x8c\xf5\xf5\xcc\x76\xe8\x93\xb7\x60\x3b\x7b\xc4\x45\x63\x8f\x82\x9f\x97\xcb\x03\x7b\xe4\x0f\x21\x84\xf0\xaa\xef\x70\x45\xe4\x86\xeb\x50\x9d\x79\xe2\x0a\x9f\xd1\xfa\xd8\x5e\x12\xae\x5b\xd6\x86\xe3\x2e\x40\xbe\xd0\x60\x4b\x4d\x62\x23\xa0\xbe\x02\x54\xa3\xb0\x23\xe8\x06\x4f\x5c\xb9\x12\x6a\x84\x6f\x72\x5b\xe9\x18\xb8\x64\x86\xbd\xf1\x5c\x90\xe8\x57\xc2\x91\xb8\xf6\x50\x2c\x29\x0b\xae\x77\xc6\x86\x66\x9f\xf1\x77\xca\xc5\xbd\x7b\xb1\x51\x2c\x1c\x5c\xbb\xbe\x2e\x44\x51\xda\xfe\x50\x27\x6d\x13\x9e\x43\x05\xa9\x2b\x3f\x68\x58\x33\xf6\x59\x5f\x9d\xe0\x1b\x16\xf8\x52\x35\x06\x9a\xe5\x32\x6d\x6c\xc9\xde\x17\x4f\x21\xd0\x41\xc4\xdd\x15\x7c\xcb\x33\xb6\x62\x37\x2a\xa1\x19\x3d\x54\xe6\x66\x78\x23\xae\x7b\xa8\xc0\xb1\x2a\x64\xa6\x50\x40\x23\x18\x8f\x19\x79\xc2\x94\x82\xf8\xf6\x8a\x72\x41\x36\x66\xed\x72\x4f\x1c\x2a\xc2\x0b\x50\x18\x73\x5a\x60\xe2\xfc\x8e\xa0\x2b\x51\x63\x74\x44\x92\x42\x53\x95\x6c\x57\x8f\x8f\x5b\x13\x44\xc8\x5f\x04\x7b\xfa\xc5\x7c\x2d\x7c\xce\x97\x19\xad\x43\xfa\xca\xa8\xbc\x5d\x78\x42\xf5\xe9\xbe\x05\x0a\x7e\x83\x2b\xa2\x8b\x92\x11\x9a\x3d\xd1\x1d\x2c\x63\xf7\x1b\x5c\x7d\x47\x5e\xbf\x02\x5e\xa7\x8a\x54\xdf\x08\x4b\x92\x3f\xbc\x22\x6b\xaa\xc8\x9b\xeb\xbb\x5f\xee\xff\xf3\xfe\x97\xeb\xb7\xef\x6f\x3f\xe0\x8e\x3d\x46\xcf\x4e\x68\x4e\x17\x3c\xe3\x98\x9b\x65\xcf\x2a\x6e\xbe\x0c\xe2\x32\x4d\xaf\xd2\x42\xe6\x76\xfe\x0e\xde\x85\xb8\xd0\xdd\x1a\x75\xda\x4a\x37\xcb\x51\xc2\xb6\x2d\x5b\x1f\x0c\xd2\x5d\x15\x54\x34\xca\x07\xd6\x5b\x51\x94\x42\xf3\x50\x5b\x8b\x38\x1f\x03\x4d\x51\x16\x4a\x6b\x05\xaf\xd3\x94\xa5\x71\x53\x42\x21\xbc\x0e\x7e\xec\x8d\xff\xcc\xae\x46\x7b\x91\xbb\x8f\xf7\xb7\xff\x33\x76\x04\xc4\xf1\x57\x84\x99\x85\x36\x75\x31\xf6\x4c\x35\xbd\x42\xe6\xd1\x6b\xfe\x89\x6d\xe4\x76\x5a\xf5\x43\x3f\xc7\xac\x3a\x5a\xc1\xad\xee\x81\xe0\xb1\x68\x6f\x4f\x29\x9a\x22\x53\x34\xe8\x40\x63\x8f\x39\xb9\xb3\xa2\x1a\xb1\x66\xed\xb7\x6b\x21\x63\x71\xcc\x4a\xd9\xea\xde\xd9\x8e\x18\xcd\x74\x4b\x33\xcc\x1d\xa5\x25\x29\xa4\xac\x6e\x90\xb5\x54\xfa\x50\x2b\xfc\x93\x49\x67\x73\x31\x41\x95\xf5\xa8\x55\xac\xde\x22\x29\x13\x52\x3b\x2d\x1e\x8a\xaa\x4a\x68\x48\x9f\x10\x9c\x26\xdf\xa8\xa3\xde\x92\xa0\xca\xa1\xd3\xeb\xd6\xcb\x6e\x0d\xee\xfc\x97\x83\xa4\x6d\x1f\xa7\x52\xb9\xc1\xed\x09\xe7\x5a\xb7\x37\x5f\x2f\x18\x4d\x11\x59\x8e\xb6\xe7\x8a\x72\x7d\x97\xd4\xa3\xef\x47\xe5\x74\x0a\x67\x83\xd8\x2f\x56\x43\x7d\xc0\x9c\xaa\x25\xa3\xba\x2c\x98\xd5\x25\x6c\x99\x58\xdb\xf2\x34\x08\x0d\x8c\xc8\x02\xb3\x75\xf6\x3f\x49\xa9\xeb\x5a\xba\x51\x1b\xff\x73\xe5\xde\xe3\xaa\xb1\xa4\x6b\x6a\x23\x9f\x34\x9d\xa1\x16\x11\x58\xbc\x2e\xd5\xdb\xea\xb1\x7d\x62\x06\x2f\x4a\x71\x6d\xfb\xfe\x44\x2b\x1f\x3f\xdc\xbe\x85\xf3\x58\x8a\x4e\xea\xc4\x5e\x68\x17\xaf\x7a\xfe\x68\xf8\xb1\xc3\x81\xae\x10\x30\xd3\xb6\xcb\x0d\xcd\x94\x0c\xf5\x30\x23\x60\x2d\x41\x18\xe4\x0e\xea\xbb\x35\xed\x26\x5b\xa5\xdc\xfd\xf3\x42\xea\x35\xe9\xfc\x20\xac\x6c\x88\xf4\x00\xdd\xcb\xba\xcb\x5b\x03\x30\xc0\x45\x34\x79\x4d\x1f\x99\x22\x79\xc1\x12\x96\x32\x31\x5c\x2d\x9e\xb4\x5d\x7e\xdf\xfe\x09\xc5\x19\x98\xfe\x49\xc0\x19\x1f\xa4\x30\xc7\x21\x8a\x37\xea\xee\xbd\x55\xad\xc7\xfa\x28\x80\xe3\xda\xea\xe0\x08\x1b\x47\x48\x31\x83\xc3\x50\x2a\x56\xd8\xa6\xd8\x45\xc9\xec\x42\xff\xc3\x56\xdb\xb6\x86\x05\xc4\x71\x86\xfa\x70\x56\xf3\x5f\x33\x9b\xcd\x43\xa8\xae\x18\x0d\xfa\x27\x2b\x23\x5e\xac\xeb\x42\x93\x54\x32\x8b\x22\x2d\xca\xb0\xed\x41\x15\xf9\xf1\xf6\x2d\xf9\x86\xbc\x34\x63\x7d\x05\xec\xb1\xa4\x3c\x83\x10\x15\xf4\x63\xea\x58\x22\x61\x1f\x9b\x1b\xc2\xdc\x35\x4b\xb4\x39\x6e\x70\xf4\x2f\x89\x90\x44\x95\xc9\xda\xcf\xd9\x37\xfa\x0e\xd2\x5c\x30\x92\xb3\xc2\x30\x0b\xb8\xea\xea\xa3\x14\x38\x2a\xd8\x93\x76\xe8\x28\xf5\x1d\x15\xd4\x3e\x85\x8f\x52\xf4\x51\x89\x14\x8c\x3f\xaa\x30\x2e\x65\x4f\x2e\xfe\x78\x06\xb9\xd8\x54\x71\xa0\x81\x7c\x6b\x55\x2c\x43\x7b\x74\x5c\x98\xb9\xda\x85\xd5\xff\x45\x59\xe1\x3c\x52\x53\xb1\x77\x5c\x94\x9f\x6d\x93\xc2\x78\x83\xfe\xfe\x06\x5e\x27\x89\x9f\x14\x6c\x0a\xa4\x75\xd9\xf2\xf8\x98\xa8\x7e\x23\x79\xa9\xdb\x6b\xf5\xb0\xaa\x87\x12\x1f\x34\xcb\xa4\x11\xeb\x46\x93\xa1\x22\x95\x9b\xbd\xc1\x02\x04\x87\x26\xeb\xe6\x00\x0c\x73\x21\x48\x63\x98\xaf\xc9\x5c\x41\x92\x48\xe6\xab\x99\x2b\xcc\xda\xa7\x64\xbe\x18\xd7\x46\xc6\xb6\x0c\x15\x77\xee\x54\xb9\xde\xb2\xcc\x28\x8c\x7e\x97\x80\x0c\x01\xc0\xad\x6b\x16\x09\x5c\x85\xb3\x7d\x9d\x37\x08\x19\xb4\x73\xef\xc4\x18\xc1\x85\xcc\x50\xd8\x88\xb6\xb5\x2a\x33\x48\xf7\xa0\xd5\x24\x0d\x99\x67\x3b\x47\x1d\xe8\xe6\x71\x70\x8e\xc6\x3a\x6a\xcf\x11\xec\xc8\xe7\x3a\xc7\x12\x71\x63\xee\xcd\xd1\x5c\xb3\xed\x39\xc2\x1d\xf7\x3c\xe7\x88\x76\xc1\x3c\x71\x91\xca\x27\x35\xf6\x2a\xf8\xd9\xbe\xee\xe5\x4e\xe2\xdb\xbf\xa9\xc6\x75\x80\x11\xda\x2d\xaf\xc1\xa1\xfb\xc0\x07\x85\x96\x85\xdc\xa0\xee\x97\x7d\x39\xda\x69\xd2\xf4\xdb\x32\xaf\x62\x64\xf5\x6a\xa3\xe8\x9b\xaa\x73\xdd\x7d\xce\x92\xe8\xc3\xf0\xc3\xfb\xfb\xeb\x36\x09\x00\xe4\x43\xf7\x12\xb3\x02\xe6\xdf\x51\xe7\x80\xa6\x1b\x6e\x5b\x7b\x3c\xb1\xc5\x5a\xca\x47\xf2\xf2\x40\x9b\x8e\x3a\xbc\x36\x53\x7c\xa5\xae\x1c\xd7\xce\xcc\x4c\x70\x48\x64\x2e\x32\x2e\x1a\x6e\x24\x48\x63\x76\xaa\xae\x19\x6c\xa3\x95\x1f\x6c\x1c\x8a\xa8\xa0\x9b\x3a\x72\xb0\xbf\x24\x00\x87\x03\xe0\x98\x75\x2d\xa1\x68\xda\x34\x00\x68\x1f\x96\xaf\xe9\xcc\x5e\x88\x86\xd9\xb8\xb2\xa8\xf2\xb5\x14\xd2\xe1\x54\xa0\xd5\x42\x81\x14\x38\x46\x42\x59\x6f\x14\x0c\xd7\x9d\x5c\x98\x7b\xd3\x6f\x75\x72\x61\xbb\xcf\x6d\x58\x68\x76\x80\xe3\x9a\x0d\xf4\x82\x50\x29\xff\x0c\x6c\x79\xd5\x1a\xf6\xc1\xb6\xe7\x66\x19\x0e\xb2\xf6\x1b\xda\xab\xca\x9e\x1c\xb5\x45\x60\x57\xba\x97\x8d\xcc\xf3\x97\x43\x6d\x67\xa2\x66\x3f\x60\x8b\xee\xdb\x9a\x31\x97\x6d\xc8\x26\x8d\x68\xe6\x55\x3f\x48\xbb\xd4\xde\x36\x48\x51\x75\x5a\xd3\x94\x9c\xcf\x3c\xb5\x4f\x7d\x5e\x0e\x9e\x05\xdd\x3d\x0e\x28\xa2\xf5\x91\xe9\x3b\x0e\x9f\x9a\xcc\x8a\x93\xad\xe7\x3b\x3b\xa7\x83\xd0\x04\x7f\x62\x2c\xfc\x62\xdb\x8f\xf2\x6d\xa3\x39\x6e\xdd\xaf\x09\xd5\x2e\x9c\xb2\x61\xba\xe0\x49\xd5\x6f\xc5\xf0\x6d\x52\x40\xa1\x80\x46\x91\xfd\xde\x39\x78\x25\xaa\x70\x31\x52\x28\xe6\xb1\x2c\x61\x5d\x0b\x06\xad\x4f\x46\xb6\x73\x22\x56\x97\xee\x55\x60\xe2\x60\x6e\x88\xbd\xeb\x00\x0f\xe1\xe3\x10\xf7\x7b\x64\x3b\x77\x5a\x72\xca\x3d\x03\xfa\xaa\x49\x61\x48\xff\x5d\x55\x60\xaa\xea\xa0\x42\xb6\x9c\x92\x7b\x9b\xef\xe9\xdb\xae\xd8\xd9\xce\xbf\xcc\xaa\x0f\xf0\x93\x08\x35\x68\xdd\x07\xf9\xfb\xd6\x6b\x8d\xa9\xce\xfd\xf4\x7c\x1b\x19\x35\xec\xb1\xa9\xbb\x6f\xda\x3c\x10\xde\x48\xee\x68\xad\x49\x77\xee\xbd\x14\x4f\xc9\x89\x43\x70\xe8\xf6\x72\xe0\xb0\xd0\xa8\x4d\x2e\x55\xfd\xea\xdc\xfc\xbf\xbe\xe1\x63\xe0\xd3\x21\x6f\xe0\x20\x5b\x0c\x22\xaa\xcf\x81\xa4\xfe\x0a\x08\xea\x83\xe3\xc0\xb4\x19\xa9\x88\x8d\xe9\xe8\x37\x8c\xb9\x3e\xb7\x88\x43\x61\xab\x3d\x2e\xb7\xf7\xbb\xcf\x08\x53\x8d\x2a\x30\x38\x84\xa1\x3e\xf3\x8a\xa3\xb0\xd2\x71\x6b\x1e\xc2\x48\xef\x61\xa0\xfb\x05\x66\x00\x1b\x1d\xc2\x3e\xf7\x2f\xd3\x00\x26\xfa\x6b\x63\x9e\x8f\xea\x67\x1a\xc6\x36\x8f\xc4\x34\x87\x92\xe4\x8e\xc1\x32\x03\xed\x1e\x4d\xf2\xb4\x18\xe6\xd1\x22\xb5\xb3\xb0\x63\x04\x6b\x2c\xf6\x79\x24\xe6\xb9\xc6\x34\xf7\x72\x3f\x16\xeb\x7c\x00\xcb\xdc\x4b\x13\x85\x71\x3e\x84\x61\xee\x3f\xa3\x71\xd8\xe6\x0e\x76\xb9\x5f\x51\xc5\x63\x9a\xa3\x30\xcb\xe1\x98\x38\x06\xa3\x3c\x0e\x9b\xdc\x74\x4e\xf7\x4e\x3c\x02\x93\xdc\xc1\x1c\xf7\x33\x12\x16\x8b\x8c\xaa\x39\x3b\x8c\x3d\x1e\x8f\x39\x8e\xad\x26\x89\x44\xbb\x86\x71\xac\x27\xac\xde\x19\x42\x09\x1f\x83\x0e\xfe\xf5\xaf\x4f\x50\xc9\x0a\xe3\x78\xc7\xe2\x77\x87\xaa\xe0\xc4\xe2\x76\x1b\xb8\xdc\x41\xa9\x18\x89\xd7\x0d\x4b\xa6\x20\x3e\x77\x14\x2e\xd7\xb9\xab\x7b\xa7\x32\x02\x8f\x6b\x1d\x44\x43\xf6\x69\x14\x0e\xb7\xc6\xd9\xf6\x92\x8c\xc2\xdf\xb6\xfc\x77\x43\xca\x67\x18\x77\x1b\x3c\x1b\x71\x38\xdb\x11\xf8\xda\x3d\xfc\x6c\xe8\x66\x09\xe2\x6a\xc3\x8c\x18\xc6\xd1\x9e\x03\x3f\x3b\x02\x37\xeb\x3c\xe9\xfd\x1e\xb6\x78\xbc\x6c\xb4\xfb\xfc\xc4\x2e\x73\x0c\x92\x2b\x8c\xe0\xc2\xe0\x5d\x47\xe1\x5c\x1b\x38\xd6\xa1\xf3\x8f\xc2\xb7\x1e\xc4\xaf\x0e\x9d\xd7\x01\x5c\xeb\x10\x6e\xb5\x97\xe4\x61\x3c\x2b\x06\xaf\xda\x4b\xb2\x83\x63\x3d\x3d\x4e\x75\x04\xeb\x22\x70\x61\x27\x61\x5d\xa4\x60\x19\xc2\xa1\x9e\x03\x7f\x3a\x0a\x77\x8a\x8e\xf1\xe1\xb7\x74\x14\x8c\xe4\x4c\xf0\x91\x2f\x2b\x8d\x70\x38\xd2\x51\xf8\x51\x0c\x32\x0a\x8f\x1b\xdd\xc7\x85\xf6\x12\xc5\xe2\x45\x7f\xc3\xe7\x1d\x63\x4e\x06\xf1\x9e\xe3\x70\x9e\x21\xb8\x18\x1a\x33\x87\x32\x7e\x42\x78\xce\x71\x38\xce\x2f\x3b\x87\x10\x5e\x73\x1c\x4e\xf3\xcb\xce\x21\x84\xc7\x1c\x87\xc3\xfc\x92\x73\x08\x9a\xc8\x38\x9c\xe5\x28\x7c\x65\x17\x3f\x19\x25\x2f\xbb\xb8\xca\x3e\xdc\xe4\x50\x1c\x17\x83\xa7\xfc\xda\xea\x37\x46\xa6\xc5\xe1\x22\xa3\xf1\x90\x35\xd6\x71\x90\x2d\xcf\x83\x83\x8c\xc5\x3f\x5a\x6c\xe3\x20\x49\x34\xee\xf1\x20\x36\x68\x90\xf4\x30\x86\x6e\x08\x1f\x37\x48\x16\x8b\xff\x41\x09\xad\x78\x5c\x63\x24\x9e\xb1\xb9\x3d\x83\xd3\x0a\xe3\x18\x0f\xe0\xb2\x86\xb9\xe5\x99\xaf\x3d\x1a\xa7\x18\x89\x4f\x6c\xd8\x21\x83\x93\x09\xe3\x12\x0f\x63\x0e\x03\x47\x34\x60\xab\x20\xd5\xce\xc1\x8f\x9c\x58\x4a\x93\x73\x61\x0b\x63\x31\x85\x58\x88\x2d\x06\x4b\x78\x4a\x5e\x1d\x1f\x6e\xee\xfd\xa7\x9c\x9a\x0b\xb7\xcb\xf5\x21\xaf\x8f\x61\xa8\x05\x55\x20\x61\x2c\x05\x58\x49\x17\x4f\xcc\x58\x71\xf8\x9a\x17\x52\x13\xb5\x13\x09\x34\x66\xb2\x7d\x8e\x14\xd9\xd0\x94\x59\x06\xe7\x56\x35\xe9\x2e\x52\xbf\xc7\x20\x97\xe9\x03\xdb\xe4\x19\xd5\x7b\xe7\xb6\x53\x62\xb2\xfa\x1d\x30\x80\xa8\x8b\x68\xb7\xa0\x00\x60\x9f\xe5\x32\xb5\xe0\xbc\xbd\xe1\x6b\xe9\xea\x4f\x57\xf3\xef\xfc\x64\x48\x2f\xa8\xd7\x26\x1c\xe9\xff\x59\x16\x8f\x99\xa4\xcd\x05\xbd\xb8\x68\xf4\xd2\x3f\x84\x77\x58\x71\x3d\x7f\xfc\x0b\x44\xdb\x13\xb9\xd9\x94\x82\xeb\xdd\x15\xbc\xcf\x17\xa5\x96\x85\xba\x4a\x0d\xc7\x5f\xd1\x9c\xcf\x12\x29\xb6\x46\xc6\x4b\xa1\xe6\x9b\xf4\x77\x9e\xee\xa8\x48\x79\xdd\x97\xe2\x2b\xa1\x62\xae\xeb\x11\xb8\xcd\x2d\x85\xd2\x45\x99\x98\x53\x97\x36\xe0\x97\x1b\x9a\x13\xa5\x07\x31\xc3\xae\x55\x56\x5d\x9d\xdb\x30\xfc\x86\xee\xbc\x8c\x04\x10\x9a\x66\x85\xe1\x1c\x2d\x65\x66\x1b\xec\xe9\x3e\x48\x04\xa9\x1a\x8b\xeb\x82\xb3\x2d\x23\xb4\x58\x70\x5d\xd0\x62\xd7\xd8\xcb\x87\x35\xdb\x41\xa0\xc9\x9c\x8e\x7f\x96\xac\xd8\x81\x3c\x19\xba\x55\x6b\xb0\x2d\x84\xf4\x8a\x2d\x4b\x6d\x8c\x79\x23\x53\xbe\xdc\x71\xb1\x72\x47\x5d\xed\xb1\xca\x61\x68\x86\xb9\x58\x66\xab\x92\xa7\xec\xaa\xb1\xa1\xe7\x40\xbd\xf8\x79\x23\xe0\x2e\x9a\x8a\x94\x16\xa9\xa3\x34\x1d\x80\xbe\x85\x9a\x0e\xc0\xaf\xe9\x00\xa8\x1e\x4b\xb0\xc3\xfc\xce\x44\xb7\xd7\x92\xd3\x10\x53\xa6\x2c\x14\x96\xad\xe9\x96\xcb\xa2\xd1\xb2\xe8\xb0\x62\x71\xda\x53\x62\x46\x3e\xa3\x22\x9d\xd9\x0e\x41\xa3\x0e\xcb\x72\xc9\xcd\x17\x71\xd1\xa6\x25\xe9\xf8\x17\x6c\xd9\x7e\x95\xac\x59\x5a\x66\x0e\x4b\xa3\x74\x41\xb9\xe8\xcd\xdd\xc1\x98\xea\x42\xa6\xec\x3a\x30\xb2\xbd\xd1\xbd\xad\x30\x98\xe6\xf5\x6a\x66\xcd\xd1\x15\x65\xc6\x54\xb0\xcd\xc7\xe0\x0e\xe2\x27\x61\x7f\xc7\x96\xac\x28\x58\xfa\xb6\x34\xd2\xe3\xbe\x1a\xca\xed\x0a\xf4\x5a\xfb\xe7\x9b\xcf\x2c\x29\xa3\x2b\x79\x3e\xb8\x2e\x4b\x69\xe9\xd5\x3b\xf7\x39\x90\x00\xee\x1f\x40\x79\x0a\x50\x05\x3d\xca\xac\x99\xd3\x27\x15\xd5\x5c\x2d\xad\xf9\x5f\xad\x22\xfb\x6c\x0e\xb6\x02\x99\x86\x33\x78\x88\x77\x22\x78\x55\xff\x92\x2c\x4a\x88\x00\x1a\xf1\x95\xac\xa5\xd1\xdb\xa8\xdd\x2c\xf8\xee\x96\x4b\xa3\x10\x86\x87\x2b\x05\x23\xb2\xb0\x00\x3c\xdf\xdf\xb5\x1e\x9e\xc5\x41\xd4\x64\xb9\x22\x1b\x89\xe8\xf3\x5a\xed\x95\xb7\xd2\xcd\x67\x40\xfc\x9a\xff\x58\x41\x36\x83\xd2\x44\x95\x1b\x68\x91\xc9\xf8\x6a\xad\x11\x6d\xc3\xf8\x9c\xcd\xeb\x30\x43\x3d\xac\x0d\x63\x1a\x20\xd6\xcd\x8e\x59\x96\x39\x82\x34\x1d\x88\xc2\xb6\x0d\x7f\x59\xdd\x0d\x0e\x0d\x7d\x59\x81\x88\xbb\x5c\x17\x24\x7c\x68\xbb\x2f\x09\xd3\xc9\xfc\xd5\x65\x55\xd0\x99\xc2\x1a\x2c\x76\x84\x6b\x66\xd4\x74\x4c\xd9\x81\x75\x21\xcb\x95\x5d\x49\x96\xb9\x81\xcb\x65\x83\x39\x6c\x7b\xd8\x34\x35\xc7\xf4\x85\x5d\xdc\x70\xe7\x18\x67\x85\x9b\xe1\x54\x80\xc9\xd4\x5c\xab\x3a\x59\x57\xde\xb0\xa2\x60\x2a\x97\x02\x28\xc3\xbf\xdc\xd4\x73\xfb\x77\xc4\xc8\x2d\xd1\x97\xea\x55\xcd\x0c\x6b\xbe\x5a\x7b\x5e\xa0\xce\x07\x68\x78\xac\xe6\xa1\x50\xfe\x19\xb2\x98\x64\x1b\xb7\x27\x6c\x43\xd1\x06\xa7\x36\x64\x9b\x66\xc5\xc6\xcf\x3c\x48\xd7\x66\xe5\xbb\x1b\xd9\xce\x8b\x6f\x2c\x1a\xdc\x71\x36\xf9\x86\xbc\x04\xd6\xe5\xfa\x42\x91\x70\x41\x1f\x23\xb4\x67\x32\x7f\x35\x27\xd7\x44\x94\x95\x2c\x3a\x6e\x90\x42\x56\x63\x74\x83\x51\xd6\x43\x42\xfd\xd7\x10\xa7\x3a\xa6\x49\x4c\x5e\x35\xd3\x1d\x51\xe8\xf3\xda\x72\x9f\x4d\x1f\x93\x05\x4c\xf6\x92\x50\xa5\x64\xc2\x29\xa6\xbc\xb9\x7d\x2a\x2e\x6b\xb3\xae\xdd\x96\x73\xb5\x67\xed\x1e\x8c\x91\x3d\x46\xae\x49\xe6\xba\x9f\xb7\x97\xa2\x29\xb0\xd0\x94\xe1\xfa\x30\x74\x2e\x94\xcf\xa6\x43\xbf\x1b\x51\xac\xf5\xe0\x34\x7a\x87\x1f\x41\xd2\xe6\x8e\x37\xf8\xc1\x88\x7d\xe7\x54\x54\xd6\x02\x50\x97\xa8\xa3\x55\x3f\x8f\x6c\x77\xe9\x3a\x69\x13\xb3\xc7\xb4\x22\x5c\xb0\xcc\xb9\x84\xb0\x3d\x97\x2a\x8a\x40\xd0\x8e\x07\xbf\xc2\x63\xb8\xac\xfa\x62\xdc\x0b\x07\x14\x1f\x1b\x0f\x84\xb6\xc0\xce\x05\x16\x49\x91\xd4\xfb\x52\x07\x14\x63\x66\x4f\xc6\x35\xf1\xb1\x8f\xdf\xba\xa3\xd6\xe1\x53\xa3\x63\xbf\x59\x8a\x0b\x65\x99\xc0\x9c\xdf\x35\x8f\xe9\x58\x6b\x1f\x2d\x81\x5b\xe1\xf8\x3a\x6e\x20\x3f\x41\x73\x2a\x3f\xdc\x98\xb3\x6b\x1f\x73\x3b\xde\x8a\x4b\xf2\x41\x6a\xf3\xff\x6e\xa0\x43\xf8\x25\x79\x2b\x99\xfa\x20\x35\xfc\x67\xec\xa2\x13\xf2\x83\xb6\x67\xe0\x5d\xf4\xbb\xa3\x37\xcc\xae\xc7\x51\xdb\x75\x2d\x2c\x0c\xdb\x2c\xaf\xeb\x31\x1f\x7f\xe6\xec\x73\xbb\x74\xd1\x5d\x27\x00\xb8\x22\xb7\xc2\xa8\xc4\x6e\x99\xc7\x1c\x07\x3b\x16\x37\x44\xdf\xdb\x49\x48\x31\xb3\x4d\xcc\x31\x95\xf7\xba\x4f\x77\x8c\x37\x55\x7f\xf8\xe6\xfe\xc7\x74\xda\xaa\xe9\x1e\x1c\xee\xe9\x86\xfa\x03\xa0\x07\xdf\x35\x51\x39\x63\x98\xbf\x1a\xdc\x9a\x6e\x41\x71\xe6\x62\x95\x55\x2a\x70\xfc\xcc\x6d\x8a\xbf\x87\x28\x42\xa9\x80\xbc\x60\x9a\xa5\x80\xf1\x14\x1e\xce\x15\xcf\x51\x10\x90\xb1\xe3\x05\x90\x76\x9e\xd1\x84\xa5\x24\x05\x03\xc2\x0c\x5c\x17\x54\xb3\x15\xc7\x55\xce\x69\x3e\x1b\x56\xac\x18\xc9\x8d\x7e\x11\x3b\xac\xe8\x4b\xdc\x3e\xa3\x0f\x79\x5c\xed\xf9\xfa\x89\xeb\x4f\x66\x1f\x7c\x97\x32\xff\x7b\xcf\x9e\x11\x2f\x45\xb6\x82\x6c\xbe\x14\xb3\x06\xa0\x3c\x42\x6b\xde\x67\xa7\x37\xba\xc6\x7e\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x93\xde\x38\xe9\x8d\x07\x9f\x49\x6f\xf4\xcf\x17\xd1\x1b\x23\x3f\x62\xfd\x9f\x23\xdc\xb2\x3f\x5b\x7f\x76\xed\x87\xb5\x1e\x56\x50\x5a\xc1\x27\x8d\x16\x7a\x6d\x87\xac\x51\xf5\xee\x9d\x2e\xf0\x00\xae\x5e\xdb\xf1\x9c\x14\x54\xac\xb0\x24\x5f\xcf\x5e\x7f\xf3\x0d\x8e\xbf\xb1\x5d\x75\xeb\x07\x5f\x32\x9e\x44\x71\xe3\xac\xe1\x27\x47\xfc\xd8\xee\x5c\x38\xd2\x82\xe7\x07\x2c\xab\xf5\xc5\xc1\x4e\x10\x7d\x75\x57\x69\x15\x30\x6b\x85\xe4\x46\x06\x48\x2b\xcc\xc5\x86\x69\x42\x75\x2b\x70\xc2\x37\x0c\x77\x3f\xe7\x32\xb5\x82\xde\x55\xdc\xf2\x91\xe0\x94\x48\xe1\xe2\x65\x02\xb2\xf0\x3b\x33\x88\x0b\x3a\xd6\x58\xd0\xf6\x0c\x12\x46\x6d\xd7\xd4\x05\x00\x5d\xc3\x01\x47\x4d\x94\xdc\x30\x62\x93\x03\xdd\xb5\x61\xa6\xc0\xfc\xae\x90\x97\x6c\xbe\x9a\x93\xb4\x74\xcd\x58\x83\x24\x6d\x89\xb1\x57\xf6\x06\xb6\xd9\xd7\x10\x71\x96\x05\xfc\x3f\xb3\x2c\xba\xd8\x01\x76\x70\xcb\x84\x2e\x69\x86\x68\x87\xc4\xb6\x3c\xd1\x55\x7d\x1f\x48\xa7\xe0\xda\x22\x0d\x4e\x59\xbb\xb9\x2b\x53\x50\xb7\x58\x47\xb9\xf7\xf5\xa3\xfa\x6c\x6a\x6d\xe8\x62\x4b\x7f\x32\xfb\x73\xe0\xcc\x8f\x9f\x70\x55\x53\xc7\x36\xca\x73\x81\x43\x59\xb8\x30\xe7\xfe\xb0\x63\xfc\x11\x80\x03\xa9\x41\x47\x66\x2a\x2d\x0e\xb6\x51\x77\x2c\x49\x33\xff\xeb\x0f\x6f\x59\x6a\x29\x3d\xc8\x5c\x66\x72\xb5\x6b\xee\x95\x4d\xb6\xaa\xca\x62\x61\xd5\x3e\x4a\x54\xb9\x70\xd6\x93\xe1\xaf\x0f\x1d\x16\x98\x22\x7e\xb8\x67\xf2\xdc\x44\x50\x9c\x3c\x37\x93\xe7\x66\xf2\xdc\x0c\x3e\x93\xe7\x66\xf2\xdc\x4c\x9e\x9b\xc9\x73\x73\xf0\xf9\xd7\xf6\xdc\x4c\x11\xbf\x49\x6f\x9c\xf4\xc6\xa8\x67\xd2\x1b\x43\xcf\xa4\x37\x4e\x7a\xe3\xa4\x37\x4e\x7a\xe3\xa4\x37\x76\x9e\xdf\x8e\xde\x18\xf9\x11\x3c\x79\xec\xb2\xce\xf6\x1d\xec\xa8\x48\xd3\x29\x1a\x3f\x41\x64\xe6\x88\xa4\xc6\x5c\xa6\x03\x39\x8d\x10\x24\x19\x9c\x4b\x22\x67\xae\x48\x1e\x84\x6b\x0c\x39\x17\xaf\x54\x74\x63\x63\x42\x97\xe4\xbf\xa5\x60\x36\xdf\xcb\x88\x09\x25\x03\x9d\xb7\xa0\x57\x84\x21\xf5\x52\xbd\x1a\xcc\xc5\x99\xf2\x25\xa7\x7c\xc9\x29\x5f\xf2\xb9\xe6\x4b\xae\xa9\xb2\x45\x56\x5c\x07\xb9\x3a\x7d\x32\x48\xb1\x0d\x89\x68\x48\x38\x23\x5c\xff\xfd\x60\xf6\x64\x90\xe6\xd7\xc9\xae\x34\x87\xc0\x31\xa9\x59\xe9\x06\xa3\xd9\xf5\x48\x1d\x90\x84\xa5\x77\xed\x59\x22\x6e\x32\xeb\x93\x80\xc9\x50\x68\xbe\x90\xb3\x62\x66\x59\x5b\x92\x25\x17\xe9\x81\x39\x22\xc8\xba\x95\x45\x9c\xd4\xa8\x1c\xc8\xf6\xf4\x46\x04\x72\x9b\x31\xe8\xd6\xb5\xf5\x6b\xca\x88\x04\xbf\x81\x57\x15\xc6\x3b\xb9\xc0\xfb\x00\x35\x34\x88\xdc\x42\x83\x19\x67\x37\x57\x5d\x8d\x62\x74\x7b\xdf\x4b\x2f\xa1\xca\x5e\x55\x78\x45\x79\x9c\x0f\x66\x7c\x94\x98\x74\x17\xa3\x4b\xca\xfa\xbc\x32\x8e\xb8\x6a\xda\x8f\x5c\xba\x65\x3d\xe8\x34\x84\xeb\x2c\x92\x62\xeb\x7e\xa8\x43\xfd\x71\x1e\xbc\x31\x26\xc8\x41\x6e\x39\xda\x99\x48\x70\x0e\xc5\x78\x2b\x35\xec\x54\x1c\x65\x4e\x8f\x77\x2c\x92\x23\x9c\x8b\x64\x9c\x83\x91\x74\xb7\xcd\x8c\xde\x69\x40\x95\xaf\x71\x04\x4d\x52\x17\x73\x3b\x81\xbf\x91\x1c\x67\xdd\x8e\xf7\x3b\x92\xee\xf2\x54\x6c\x52\xb5\xbb\x89\x67\x12\xe2\x99\xaf\xe3\xb8\xac\x1c\x91\xa3\x28\xf6\x3b\x2f\x8d\x0c\x18\x45\x72\xcf\x81\x09\x7c\x7d\x9c\x0f\xf3\xc8\x8d\x1c\xe7\x8f\x24\xdd\x6d\x74\x5e\x34\x5b\xce\x2a\xd6\xed\x51\x3f\x7b\x1e\xcd\xae\x87\x72\x14\xd5\x03\x5e\xcd\x96\xdb\x6f\x14\xd1\x83\x9e\xcd\x93\x8c\xb5\xc7\xbb\x39\xca\x19\x4b\xfa\x1c\xb2\x6e\xc8\x0f\x6b\x3e\xf2\xbc\x9d\xc3\xc5\x47\x8e\x73\xf3\x91\xf1\xae\x3e\x72\xec\x39\x1a\xeb\xf2\x23\x23\xdd\x7e\x64\x84\xeb\x8f\x8c\x75\xff\x91\xb1\x2e\x40\x32\x7a\x5d\x40\x1d\x7c\x37\xd8\x12\xfc\xf0\x13\x57\xbc\x6f\x68\xc8\x23\x38\x61\x5f\xa3\x75\x8d\xc5\x41\xdf\xda\xd0\xdc\x48\xb8\xff\x65\xd4\x24\x38\x94\xff\x3b\x56\x97\xa1\xbc\x50\xc6\x6c\x72\xee\xff\x06\x25\xef\xad\x6b\x7c\x34\x92\xb8\x19\x1d\x57\x9d\x96\x69\x54\x78\x07\x83\x19\x79\x57\x47\x8f\xd5\x11\x9f\xd6\x52\x59\x7d\xae\x2a\xee\xfb\xe2\x91\xed\x5e\x5c\x1e\x23\x37\x0d\x91\x5b\xf1\xc2\x2a\x9e\x7b\x11\x1d\xaf\xd5\xc6\x1a\x11\x22\xdb\x91\x17\x40\xe9\xc5\x01\x74\xf0\x48\x23\xe0\x08\x37\x7a\xd4\x4b\x55\x2f\xf5\xb1\xf0\x8b\x9a\x40\xe5\x9d\xf4\xee\x9f\xfa\x9f\x62\xe2\x07\x5e\xfb\xbd\xdf\xd7\x5d\xc9\x4b\xef\x51\xa2\x2b\xb3\x53\xfa\x55\xb8\xec\x56\x63\xaa\x2d\x4c\x38\x80\x46\x36\x8c\x0a\x45\x5e\x78\x3f\xf6\x45\xa3\xb7\x7c\xd8\x07\xe6\x9f\xe8\x7b\x64\x94\xcc\x88\x97\x8d\xda\x41\xcb\xff\x11\x63\x9a\x74\x3c\x59\xce\xbf\x5f\x17\xe5\xac\x9c\xff\x58\x97\x8b\x79\x5e\x7a\xbf\xcd\x2b\xb3\xfe\x42\xea\x06\x19\xf2\x92\x0a\xcd\x67\xd5\x2f\x22\xc8\x56\xde\x1c\x70\x39\x36\xd3\xb0\xda\x1c\x14\xeb\x16\x69\x16\x28\xaf\x79\xf8\xd2\xb5\x69\x18\xb5\x02\x5c\x11\xdf\xd7\x9a\xaa\xaa\x5f\xac\x14\xde\x0d\x6f\xc5\xdd\x70\xcf\x9e\xfd\xc7\xb9\x15\xad\xb1\x08\xab\x01\xe8\x94\x7a\xdf\x23\x2a\xa4\xf9\x07\x6c\x47\xb9\x84\x3a\xde\x30\x34\x29\xdc\x71\x36\x7f\xf1\x1e\x73\x58\xd9\xa8\x15\x80\x3d\xe2\xd5\xdc\xe7\xe4\x06\x8e\x61\x73\xb0\x1c\xba\xb9\x45\xd0\xf4\x6d\xe5\x23\x0f\x51\xc4\xc9\x8b\xd3\xb7\x66\xcd\xe9\x9c\x23\x90\x39\x3a\x75\xf1\xe9\x4c\xa9\x8b\x1d\x17\xef\xbf\x54\xe6\x62\xa4\xf3\x7e\x4a\x5f\x1c\x7a\xa6\xf4\xc5\xc8\xf4\x45\xd4\xfc\xed\xcd\x80\xce\x63\x0c\xd2\xac\xf3\x1c\x07\xf3\x18\xc9\xcf\xae\xbb\x3b\xc2\xf9\x65\xb6\x7a\x53\x66\x9a\xe7\x35\x48\x49\xd9\xa1\x66\xd6\xb9\xb1\x74\x21\xf2\x96\xe4\xc1\x44\x28\x21\xee\xdb\x39\xa6\xf0\x3d\x00\x31\x29\xb8\xc1\x2e\x6d\x98\x98\x0e\x74\xae\xaa\x28\x42\xfe\xa2\xf7\x8a\xd8\x58\xfd\x60\x6b\x48\xfb\x8c\x09\x21\xbe\x05\x5d\x41\xd5\x31\x1e\xb8\x3d\x5f\x1a\x65\x24\x33\x6c\x66\x94\x05\x2f\xbb\x11\x62\x70\x5f\xa7\xb6\xbe\xcf\x2d\xf3\x81\xdc\x15\xdf\x32\x51\x2b\x3b\x2f\xd5\x2b\x8c\x22\xe6\xfc\xcc\x03\x4a\x62\x5b\xf5\x43\x45\x22\x87\x94\x43\xb8\xb5\x46\x29\x62\x11\x0a\x98\x53\x72\x10\x44\x3b\x8a\xd7\x5f\x1b\xb7\xff\xdf\x1a\xc1\xef\x4a\xa1\x42\x46\x62\x1b\x2a\x17\x2c\x6c\xa5\x74\xd5\xac\x50\x2b\x52\x27\x8e\xd9\x8e\x08\x56\x9e\x2f\x50\x39\x32\x48\xf9\xd5\x52\x58\xfb\x03\x93\x44\xc6\xe0\x43\x43\x41\xc9\xb1\xb9\x0d\x23\x7c\x11\xc7\x26\x35\x9c\x28\x10\x39\x65\x35\xf4\x7c\xf1\xa8\x38\xf1\xa1\x80\x23\xac\xc1\xa8\xe0\xeb\xaf\x3e\xb9\xe1\x40\x80\xd1\x07\x0b\xa3\x17\xe4\x60\x70\x71\x2f\x50\x38\x3a\x98\xaa\x0e\x67\x39\x04\x1b\xf6\x1d\x7a\x8e\x09\x2a\x7e\xcd\xe4\x86\xfd\x40\x62\x1d\x14\x1c\x19\xdc\xdc\x0b\xcc\x75\x03\x82\xa3\x0e\x46\x20\xcd\x21\x9a\xe6\x81\x31\x7e\xa9\x34\x87\x51\x41\xc0\x09\xe3\x3f\x61\xfc\x47\xe7\x86\xc6\x06\xf6\x8e\x0d\xea\x8d\xda\xe5\x33\x06\xf3\xce\x16\xc8\x3b\x73\x10\x0f\x17\xc0\x23\x51\xe2\x04\x11\xbc\x83\x70\x5c\x0c\xc9\x53\x06\xee\xa2\xcf\x45\xe4\x0b\xb1\xc1\xba\xb3\x05\xea\xce\x13\xa4\x3b\x47\x80\x2e\x4a\xd6\x47\x9f\xfd\x38\x99\x16\x1d\x90\xc3\x07\xe3\x1a\x7e\x16\xe4\x5c\x83\x81\xb8\x76\x78\x2d\x46\x64\x1f\x0c\xc2\xed\x85\xd6\xa2\x03\xd4\xfb\x7e\x9f\xc3\x5e\x1d\xec\x02\x0c\xf8\x7e\x3a\x9e\x9d\xf8\x80\xeb\x21\xef\x4f\xdb\xb7\x83\xa4\x79\x20\xe8\x86\x08\xa5\x61\xfd\x2b\x10\x70\x8b\x0b\xa3\x45\x9d\x91\x98\x78\x4a\xcc\xf0\x4f\x1e\x22\x41\xa7\xdd\x09\xcd\x8f\x4d\xbd\x6b\x9e\xb2\xbd\xfc\xbb\xc1\xd9\xd8\x08\x00\xdd\x4a\x9e\x92\xbc\xd4\xda\x1e\x34\x44\x0e\xde\x20\x55\x97\x9f\x37\xe5\xe0\xed\xe7\xe0\xb5\xb6\xaa\x91\x99\x15\xa4\xd9\x13\x16\xea\x4f\xc4\x0b\x8f\xb2\x99\xa8\x87\x49\xc4\x0b\x52\xdc\x4b\xd4\x43\x26\xe2\x85\x27\xdf\x4e\xd4\x0b\x27\xe2\x05\x29\xee\x25\xea\x85\x12\xf1\xd0\x92\xa9\xcb\x9a\xfd\x7b\x1e\xa6\x19\xcc\xd6\x3b\x98\x8d\x87\x9b\xfc\x50\xb6\xde\x7e\x36\x1e\x6e\xef\xfb\xb3\xf5\x02\xd9\x78\x08\x66\x7d\x36\xbd\x0e\xa7\x6c\x3c\xff\xeb\x29\x1b\x8f\x4c\xd9\x78\xee\x99\xb2\xf1\xb0\xcf\x94\x8d\x37\x65\xe3\x4d\xd9\x78\xf0\x4c\xd9\x78\x53\x36\x5e\xcf\x33\x65\xe3\x4d\xd9\x78\x53\x36\x1e\xf6\x99\xb2\xf1\x0e\x3c\x53\x36\xde\x94\x8d\x37\x65\xe3\x4d\xd9\x78\x53\x36\x5e\xfd\x4c\xd9\x78\x53\x36\xde\x94\x8d\x57\x3d\x53\x36\x5e\xf7\x99\xb2\xf1\xe0\x99\xb2\xf1\x3a\xd9\x78\xad\x20\xd6\xaf\x37\x25\xaf\x39\x0d\x2c\xbb\x4c\x79\x79\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x53\x5e\xde\x94\x97\x57\x3d\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x81\x67\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xe1\x67\xca\xcb\x9b\xf2\xf2\xa6\xbc\xbc\xc6\x33\xe5\xe5\x4d\x79\x79\x53\x5e\xde\x94\x97\x37\xe5\xe5\x4d\x79\x79\x5f\x3c\x2f\x2f\xf8\x13\x5a\xac\x7a\x25\x4d\xeb\x24\x5f\x5c\x17\xab\xd2\x5e\x32\xce\xfd\xca\x84\x2e\x76\xe0\xfa\xb7\x17\x51\x2a\x93\x47\x56\x10\xbe\xa1\x2b\x76\x31\x60\x7d\xbe\x79\xff\xd6\x6c\x62\xa9\xcc\x59\x70\xe9\x3b\x6e\x53\xf3\x42\x6e\x79\xca\x52\x63\x69\x16\x9c\x2e\x32\x73\xbd\x2d\x59\xc1\x84\xb9\x01\x7e\xff\xf2\xa7\xeb\x4f\xbf\x7c\xb8\x7e\x7f\xd3\x2f\x2f\xcc\x05\xc8\x3e\xe7\x54\xa4\x2c\x25\xa5\xf2\xa7\xda\xdd\xb4\xac\xb8\xb8\x50\x84\x89\x2d\x2f\xa4\x30\x93\x01\xdb\x89\x92\xad\xfb\x5a\x2f\xd9\x84\x0a\x17\x96\x29\x98\x92\xd9\x96\xa5\x56\x25\xa8\x46\xe7\x25\x05\x17\x79\xa9\x3d\xdc\xf3\x89\x0f\x78\xe8\x17\x8c\x94\x22\x59\x53\xb1\x32\xf3\x35\x0b\xd8\x98\x1f\x51\x3b\xa1\xe9\x67\xf3\x5d\x30\x64\x54\x42\x73\x1f\x09\xed\x77\x19\xa5\xb2\x34\x4b\xf6\xfb\xdf\x5f\x12\xce\xbe\x23\xbf\x6f\x10\x9c\x93\x1b\x47\xa3\xb1\xa0\x36\xdc\xc4\xb6\x03\xe1\xc6\x45\xbd\x9c\x97\xa4\x60\x2b\x5a\xa4\x19\x53\x10\xe0\x78\x5a\x33\x48\x8a\xb4\x6a\x8d\xdb\x2e\xe6\x6d\xba\x5e\x8a\x42\xea\x39\x79\x53\xad\xa7\x8d\xf3\xa4\x73\xf2\x5e\x42\x90\x63\x29\xbf\x23\x6b\xad\x73\xf5\xdd\xd5\xd5\x63\xb9\x60\x85\x60\x9a\xa9\x39\x97\x57\xa9\x4c\xd4\x95\xa6\xea\x51\x5d\x71\x61\x18\x7a\x96\x52\x4d\x67\x70\x89\x27\xe0\xb7\xb8\xb2\x72\x75\x96\xc8\xcd\x86\x8a\x74\x46\x1d\xcb\xce\xaa\xed\xbf\xfa\x9d\x93\x3f\x33\x5a\xfd\x8a\x8b\x19\x9d\xa9\x35\xcb\xb2\x8b\x9e\x41\x07\xee\x63\x84\x74\x09\x1d\x68\x26\xb6\xa8\x53\xf8\xce\x75\x73\x6f\xb0\x70\xb5\xf6\x70\x30\x15\xd3\x9e\x15\xab\x49\xf7\xcb\xc8\xfd\x6d\x18\xb7\x02\xad\x31\xde\x88\xed\x4f\xb4\xed\x8f\x12\x07\x07\x4c\xdc\x0f\x06\x44\x1c\x37\xf7\xdd\x9b\xf0\x44\x70\xce\x48\x73\x2d\x0f\x4b\xf5\xd6\x44\x3e\xd0\x4d\x9d\x40\x7a\x60\xfc\x73\xf2\xde\x3a\x1a\x02\xd2\x9c\x92\x37\xbf\xdc\xbe\xbd\xf9\xf0\x70\xfb\xfd\xed\xcd\xa7\xe1\x1b\x0b\x79\x53\xc1\xbd\x1f\x31\x95\x8b\x80\x3c\x6d\xc9\xcd\xc0\x74\x6a\xa9\x9a\x17\x6c\xcb\x65\x59\xeb\x33\x87\xd9\x92\x8b\xd0\x75\xd7\xe4\x56\xe7\xdf\xde\x11\xc5\x8a\x2d\x4f\x0e\x2f\x7d\xd0\x53\xdd\x12\xeb\x68\xf1\x1d\x8a\x8a\x76\x85\x3b\x4a\x88\x07\x88\x1e\x14\xf1\x28\x51\x1e\x20\x7c\x50\xd0\x23\x04\x3a\x62\xb3\xf6\xc5\xbd\x15\xeb\x6f\xd9\x92\x96\x99\x55\x11\x5e\xbc\x98\xf7\xc9\x53\x47\x28\x82\xd5\xbf\x2f\x64\x20\x29\xb3\xc5\xee\xf7\x36\xe1\x79\x29\x8b\xde\xc3\x7b\xe1\x62\x30\x21\x46\x6a\x88\x48\xa7\xb0\x58\x9d\xdb\x69\x2c\x08\x6f\x28\x3e\x50\x92\x48\xb1\xe4\xab\xf7\x34\xff\x07\xdb\x7d\x62\xcb\xc8\xf8\xbb\x35\x5a\x9c\xf7\x1f\xd4\x77\x23\x39\x2d\xc1\xb0\x9a\x1c\x17\xce\x41\x07\x71\xf6\xd2\x8d\x2d\xec\xcf\xd9\x05\x67\xd0\xde\x31\x52\xfe\xe0\xe0\x2e\x9a\xe2\xde\x9d\x1d\xdd\x54\x4b\x90\xf6\xc9\x80\xf2\x92\x48\x91\xb0\x5c\xab\x2b\xb9\x35\xb2\x8d\x3d\x5d\x3d\xc9\xe2\xd1\x68\x23\xe6\xd4\xcf\xac\x9a\xae\xae\xc0\x7a\xbc\xfa\x1d\xfc\x3f\xe4\x47\x1f\x3e\xbe\xfd\xf8\x1d\xb9\x4e\x53\x57\xa8\xa2\x54\x6c\x59\x66\x2e\x07\x7b\x4e\x68\xce\x7f\x62\x85\xe2\x52\x5c\x92\x47\x2e\x52\xac\x4f\xac\xe4\xe9\xff\x33\x7c\x88\xfd\x13\xb9\x47\x32\xb7\xee\xce\x11\xfb\x74\x0f\xb6\xf8\xae\xa5\x7e\x56\x7c\x8e\xc3\x6b\x10\xd0\x68\x14\xf0\xa2\x8f\x15\xb8\x2b\x2c\x62\xb2\x0b\x29\x33\x46\x43\x77\x5b\x9c\x3d\x89\xb1\xdb\x23\xec\x48\xd8\xff\x78\x49\x72\x51\x8b\x12\xeb\x07\x75\xa7\x22\x97\xe9\x77\x44\x95\x79\x2e\x0b\x54\x08\x7f\xc3\x34\x35\x3a\xfa\xdc\xb0\xf2\x65\xfb\x3f\xc1\x3d\xd2\xf8\x1b\x38\x2f\x50\xce\xda\xea\x15\x90\xcc\x36\x60\x79\x09\x2e\x9a\xb9\x90\x29\xfb\x00\xdf\x82\xff\x74\x1a\xc4\x75\x92\xc8\x52\x68\xf8\x07\x04\x7d\xa5\xa9\x2e\xd5\x7c\x2d\x95\xbe\xbd\xbb\xf4\xff\x99\xcb\xf4\xf6\x2e\x70\xa3\x91\x68\x39\x5a\x1f\xcc\x11\x27\xc1\xbd\xd9\x2c\x00\xb2\xa1\xf0\x3f\xbf\x37\xbb\x76\x47\x35\xd6\x61\xc3\x15\x79\x2a\xb8\xd6\x4c\x80\x22\x04\x98\x31\xb9\xbc\x34\x87\xa2\xbe\xcf\xb7\xaf\x5f\x9c\x45\x5e\x2f\xfd\x60\x47\x2c\x81\x79\xcd\xcf\xdf\xb2\x6a\x75\xb7\xe0\x54\x3a\xff\xd4\x90\xc8\xeb\xbb\x5b\xb2\xb5\x2b\xfb\x95\x9d\x4b\x4b\xf4\x2e\x46\x88\x04\x8f\x67\xfa\xfe\x68\xd1\x50\xd5\x95\x71\xeb\x5f\x69\xf0\x98\x7d\x84\x54\xa4\x0a\x5b\x45\x32\xbe\xe1\x2e\x71\xd8\x55\xa9\x51\xe4\xa5\xfd\xe3\x3c\xc9\x4b\xcc\xb1\x75\xbf\xde\xb0\x8d\x2c\x76\x97\xfe\x3f\x59\xbe\x66\x1b\x56\xd0\x6c\xa6\xb4\x2c\xe8\x8a\x5d\x56\x1f\xc0\x12\xae\x7e\x6f\x49\xb7\x06\xb9\x4f\x1f\xe3\xca\x36\xc6\x56\x52\x16\x46\xc1\xc8\x76\x5e\xa0\xb2\xf4\xe4\xd2\xa5\xda\x91\x0f\x23\x55\xa2\xca\xf2\xb6\x4a\x55\xc5\xbd\xa0\x59\x6f\x65\x56\x6e\xf0\xb8\x38\x7f\xe5\xdb\x62\x47\x62\x6b\x34\x71\x75\x16\xe5\x22\xe5\x5b\xae\x46\x01\x01\xef\xab\x18\x13\xc4\xfb\x4a\x6d\xec\x3d\x8b\xe4\xc7\x03\x2c\xcd\xc3\x3e\xe7\x52\x81\xb3\xcd\xa3\x07\xdb\xb2\xf4\x35\x2e\x10\x14\x39\x71\xff\xb5\x31\x5b\xed\xeb\xd7\x7c\x57\x9f\xeb\x4a\x94\x9e\x61\x97\x62\xe4\xa0\x1f\xd0\x29\xc5\xa0\x62\x49\xc1\xf4\xa9\xec\x2c\x4b\xcd\x3b\xde\x20\xe6\x17\x13\x19\x7d\x56\xc6\x59\x15\xb8\x81\x29\xd5\xd7\xe9\xb2\x90\x9b\x39\x01\x97\x17\xf2\x10\x2c\x18\xf8\x60\x32\x9e\x7a\x6a\x8f\x0c\x89\x1c\x9a\x4c\xbe\xe0\xf3\x2f\x6e\xf2\xdd\x5b\x8e\x92\x85\xb1\xe4\x90\x73\xfb\x8d\xdb\x7b\xa8\x1f\x86\x47\x37\x83\xe3\x14\x88\x76\x20\xa2\x8e\xfd\xd1\x0e\x08\x11\xde\x95\x59\x66\x37\x11\x17\x80\xbc\xed\xbc\xe4\x30\x94\x95\x5a\xe1\x10\xeb\x0d\xb7\x67\xff\x14\xa4\x13\x48\xaa\x5d\x18\xd4\xcb\x63\xf3\x83\x52\x59\xff\x61\x5e\x66\xae\xf4\xe1\x6e\x08\x0f\x0f\xb1\x3f\x33\x42\x17\xd8\xf4\x89\x55\x77\x32\x35\xdc\x0b\x71\xc6\xca\xc6\x00\xe7\xb3\xf2\x32\xb6\x7f\x9c\xde\xc5\x9c\x53\x65\x68\x6a\x49\xb8\x30\xca\x4d\x5a\xd2\x0c\x06\x06\xe1\xd6\xdc\x62\x9f\xac\x21\xec\x7d\x9e\xfd\x49\x7e\x76\x6e\xa7\x08\xf4\xbc\x93\x09\xcd\x3e\x02\x23\x7c\xaa\x1c\xe9\x15\xa6\x89\x09\xa8\xe6\x68\xe4\xa8\xd1\x9f\xb8\x1c\x3a\x39\x5a\x92\x8c\x69\xb2\x93\x25\xb1\x30\x89\xb6\x7b\x3e\x75\xfc\x46\xb8\x50\x3c\x65\xd5\x96\x05\x62\x3d\xb0\x99\x5f\x38\x68\x14\xbc\x53\xbe\xec\x6d\x11\x7b\x4b\x20\xe4\x3f\x4a\xee\x9f\x42\x4a\x08\xae\x2b\x03\x04\x09\x52\xf0\xf1\x51\xf3\x2e\xa7\x19\xff\x6f\x60\xbc\xda\x10\x52\x64\xc1\x32\x29\x56\x10\xc1\xea\x4f\x1d\x74\x5a\xdc\x9c\xdc\x0a\xae\x9b\x6f\xdb\x30\x19\x4b\x4a\x00\xf2\x08\x22\x8b\x94\x15\x24\x2f\xb8\x84\xda\xba\xf5\x2f\x7b\x49\x2f\x98\xf9\xb6\xd2\x14\x2c\x3e\x88\x53\x89\x1d\x8c\xb7\x11\x02\x5b\x52\x9e\xb9\x7c\x42\xa8\x5e\xac\xcc\xbf\x19\xce\x1f\xaa\x91\xa9\x25\x59\xd3\x2d\x83\x97\x99\xad\x85\xca\x15\x59\x53\x91\xc2\x7f\x26\x89\x2c\x52\x3b\x6f\x70\x7e\x16\x0c\x06\x71\x27\x33\x9e\x0c\x68\x65\x46\x2d\x34\x8c\x06\x82\x85\x8a\xee\x48\x21\xf2\x53\x6c\x68\xd6\xf8\xdb\x26\x10\x15\x2d\x05\xff\x67\xc9\x08\xdd\x48\x23\x57\xb3\xc6\xab\x6a\x7f\xc5\x7d\xb2\xa7\x99\x5a\x2f\xc5\x77\x7c\xc9\x92\x5d\x92\x31\x42\x13\xe7\x0f\xfc\xc4\x68\xca\x05\x53\xca\x1c\xf3\x85\x31\xc0\x64\x41\xde\xf1\x2d\x6b\xfc\x6d\xb8\x6c\xa2\x37\x3b\x3e\x35\x01\x96\x80\x8a\xea\x2e\x02\x14\x6c\xa5\x8f\xe0\x3d\xd3\x12\x96\xba\x1c\x08\x6b\x3b\x20\x79\x23\x4b\x78\xb1\x83\x8a\xa8\x3e\xae\xea\x8b\xc1\x3a\x2f\xc3\x15\xf8\x32\xcc\x06\xf4\x92\x84\xac\xd1\xda\x70\xdb\xe5\xac\x82\x9c\x8a\x46\xc0\x76\x43\x3f\x9b\x19\x80\x74\xa2\x3a\x50\xc4\xc1\x05\xcf\x5c\xc1\x62\x9b\x7f\xdc\xde\x69\x35\x27\xef\x9c\xe3\xa6\x60\x0e\x4d\x99\x0e\x9d\x2b\xde\xd9\x5c\x08\xef\x2b\xbe\xe1\x19\x35\x4c\xaf\xd6\x5c\x8a\x7d\x16\xb0\xd1\xdb\x5e\xa2\xb5\x27\x65\xe1\x4b\xcd\x42\x3a\xcc\x46\x6e\xcd\x09\x1b\x84\x9a\xf4\x12\xc5\x08\x69\x23\x9b\x33\x49\x53\x75\x95\xcb\x54\x5d\x99\xc9\xd5\x48\x13\x75\x35\x12\x4d\xd2\xc9\x45\x73\x08\xea\x06\xca\xa5\xc1\x78\xb0\x8b\xe6\xd2\x7c\xa2\x83\x30\x0a\x2d\x49\x51\x0a\x88\x2d\xc3\x92\x1b\xd9\x76\xe4\xb5\x38\x04\x1c\x3b\x30\x11\x2c\x7c\x2c\x70\x9d\x79\x70\x59\x1c\x88\x2c\xe8\x12\x0d\x42\x22\x7a\xa0\x64\x01\xc2\xfd\x40\xb3\x30\x22\x21\xb4\x10\x3d\x70\xb3\x61\x44\x42\xc8\x29\x32\x00\x3a\x1b\x44\x24\x04\xe8\x0e\x42\xcf\xfa\x10\x09\x01\x9a\x41\x00\x5a\x1f\xd0\x2c\x40\xf7\x19\xc3\xd0\xec\x83\x02\x87\xa3\x6d\x73\x1c\xd2\xd4\x8d\x31\xe6\xbc\xdf\x54\xc7\xdb\x52\x9f\x93\x0f\x52\xd7\xba\x93\x17\x45\x21\x8e\x34\xeb\x71\x10\x5e\x4a\x6e\x3e\x3c\x7c\xfa\xcf\xbb\x8f\xb7\x1f\x1e\xba\x82\x20\x74\x74\x22\xb1\xa6\x88\xc2\xa8\x67\x40\x9c\xda\x67\x14\xee\x34\x40\x13\x0d\x5c\xea\x08\x82\x20\x59\x34\x70\x09\x63\xa3\x37\xc6\x8a\x05\x2e\xb5\x04\x41\x70\xc7\x02\x62\x62\x12\x04\x07\x97\xad\x1f\xa7\x6a\x9f\xb1\x68\xd5\xd0\x39\xa8\x20\xa0\xb1\x12\x1d\xb5\x4a\xe3\xf0\xab\x08\xb7\x3d\x10\x40\xa3\x58\xfd\x5b\x78\x67\x3f\xd6\xf1\x3d\x02\xd7\x8a\xf2\x8c\x82\x8b\x1f\x8f\x6e\xb5\x4f\x94\xe3\x18\x81\x74\x3d\x30\x45\x0c\xde\x15\x35\xc1\x03\x92\x7d\x08\xf5\x8a\xa2\xd9\x44\xc6\xe2\xb1\xaf\x71\xa4\x91\xfa\x26\x8a\x68\x38\xc9\xa1\x7d\x9d\xa0\x88\xc6\x24\x3c\xb8\x4b\x05\x45\x37\x2a\xf9\x01\x45\xf1\x1c\xd7\x8f\x7d\x8e\x41\xcf\xda\x27\xfe\x28\x85\x91\xb4\xf6\x89\xc7\xd3\x22\x19\x34\x2b\xd9\xfc\x04\xa8\x5a\xfb\xc4\x16\x21\x89\x46\xd8\xda\xe7\x84\x38\xdb\x71\xe3\x26\xf1\x85\x53\x4e\x81\xbc\xb5\xcf\xa8\xec\x72\x7c\x48\xf6\xc0\x70\x07\x9c\xe8\x11\x24\xc9\xd7\x70\xb8\xb7\x1f\xbc\xfb\x3d\x8a\x2c\xd6\x55\xdf\x7e\x46\xed\x63\x5c\xd8\xd6\x3e\x78\xbc\x6e\xd4\xac\x6d\xac\x77\x74\x14\xd7\x3e\x71\xb1\x5c\xfb\xc4\xd6\xb4\x88\xa9\x67\x11\x9d\x7e\x8f\xc7\xf4\xda\xe7\x2c\xc8\x5e\xfb\x9c\x07\xdf\xdb\xa1\x7d\x26\x94\xaf\x7d\x8e\xc3\xfa\xda\x67\x8c\x2c\x8f\xc5\xfd\xda\xe7\x4c\xe8\x5f\xfb\x9c\x16\x03\x6c\x9f\x51\x12\x27\x12\x0f\x6c\x1f\x2c\x2a\x38\xf2\xfa\xe8\x94\xd8\x8e\xc6\x06\xdb\x67\xc4\x32\xc4\x8b\x1c\x3c\x5a\xb8\x39\xa8\x08\xc1\x13\x8f\x1c\xb6\xcf\x59\xf0\xc3\xf6\x39\x3d\x8a\xd8\x3e\x67\xc3\x12\xdb\xe7\xf4\x88\x62\xfb\x8c\xc7\x15\xdb\x67\x8c\x24\x1b\x81\x31\xb6\x0f\x1e\x69\x1c\x75\x66\x3d\x2a\xf9\x18\xbc\xb1\x7d\xc6\x15\x55\x8a\xc1\x1e\xbb\x57\x90\x08\xe4\x38\x5d\xa9\xea\x7b\x3b\x80\x43\x8e\xa2\x88\xc5\x2c\xdb\x67\xd4\xe2\xc5\xe1\x97\xed\x73\x6a\x14\xf3\xe8\xe1\xc7\x4b\x6c\x34\xae\xb9\x39\xa6\x08\x81\x1d\x87\x71\xb6\x4f\x14\xd2\x19\xbd\xa0\x9d\x2a\x48\xcf\xdc\x48\xee\x41\x40\x47\x9d\x96\x06\x5a\xfa\x18\x1c\xb4\x7d\x26\x03\x7c\x32\xc0\x4f\x6b\x80\x5b\x0c\xed\x64\x7d\x47\xca\xd4\xa8\x3c\x3b\xdc\xa8\x03\x68\xeb\xc8\xef\xa2\xa3\x78\x91\x05\x15\x7c\x24\xcf\x6b\xda\x5a\x92\x5c\xe6\x65\x46\x75\x4f\x7d\x8e\x50\x0c\xbe\x5b\xa2\xc6\x0b\xdf\x3a\xaa\x52\x81\x95\xdc\x3d\xbe\x09\xc7\xa4\xf6\xa3\x51\xe4\x3a\xcb\x08\x17\x56\xf8\x02\x79\x1f\xae\x28\x98\x55\x8e\x03\x24\xa9\x8d\xfe\x6d\xcd\xe4\x9e\x5c\x83\x88\x46\xbc\x86\x2b\x0b\xe5\x84\x8a\x66\xd0\x40\x82\x22\xb8\xcf\xf9\xfd\xb9\xa8\x9b\x48\x54\xea\x59\x55\x24\xb2\xdb\x01\x27\xc4\x22\x50\x00\x4e\x69\xbf\x5c\x30\x4f\x4d\x1f\x21\x5e\x95\xb0\x94\x89\x84\x41\x01\xe7\x92\x29\xe4\xc1\x5d\x18\xcb\x84\xdc\x88\x6d\x15\x86\x29\x6d\x68\xdb\x5e\x93\x07\xbf\x10\x20\xf9\x25\x82\xb7\x86\xb5\x5d\xc0\xa2\x11\xc3\x85\x1b\xdd\xdb\x9b\xc1\xa3\x5e\x55\xbe\xae\x3c\x95\x21\x8e\x8e\x51\x56\xaa\x28\x04\x52\x31\xdb\xd3\x52\xea\x7a\x07\xed\xfc\xac\x33\x44\x4c\x62\xd4\x88\xb3\x24\x57\x7d\xa5\xf4\xaa\xb3\xa8\x0e\xf1\x6a\x43\xb4\xca\x10\xab\x2e\x44\xd4\xd6\x40\x48\xe0\xfa\x89\x56\x0f\x62\x55\x83\xa8\xab\x3b\x2f\xd8\x92\x7f\x8e\x3e\x6b\xd7\x8d\xfc\x22\x9e\x32\xa1\x8d\x69\x0e\x48\xff\xbc\x60\x39\x13\x83\x60\xe7\xe6\x03\xf8\x6c\xe8\x5c\x20\xda\x8b\x3a\x6f\x98\x08\x67\xc5\x51\x58\xcb\x63\xac\xc0\xb9\x3f\x94\x0d\x3a\x49\x9b\x49\xda\x9c\x5a\xda\x38\x46\xfb\xd5\x8a\x9a\x13\x6b\xea\x80\x76\x8d\x81\xdd\xbe\x6d\xa0\x64\xe1\x34\x45\xa7\x9e\x35\x32\x18\x6c\x42\x63\x60\xc6\x0f\x75\xff\x38\xae\x6a\x71\xa9\xa5\x2d\xd1\x6b\x93\x59\x0a\x92\xb1\x2d\xcb\x9c\xe6\x13\xa0\xb8\xa1\x82\xae\x6c\x3d\x77\x2d\xbd\xbf\xd2\xd8\x9f\xe6\xd8\x15\x3c\x6d\x29\xe0\x36\xe7\x32\x58\x62\xd0\xe7\x6a\xc0\xab\x85\xcc\x32\x56\x28\x92\xf1\x47\x46\xde\xb2\x3c\x93\x3b\x57\x3e\x5d\xa4\xe4\x5e\x53\x6d\x8e\xde\x3d\xd3\xea\x34\x15\xec\xaa\x74\x57\x9b\x6b\x15\xb3\x9d\x90\xf4\x0a\xa9\x9e\x24\xb7\x89\x5a\xe4\xa3\x00\x39\x77\x9d\x3d\xd1\x9d\xba\x24\x1f\xd8\x96\x15\x21\x99\x70\xbb\xfc\x20\xf5\x9d\x55\x85\xdb\x38\x23\x4b\x86\xf0\x25\xf9\x0e\x1a\x08\x69\xa2\xe9\x0a\xcc\x9a\x2a\x59\x35\x40\x5b\x16\x2d\xf2\x56\x7c\x3d\x71\xc5\xc6\xa6\xde\xd8\x67\x14\xab\xfe\x0e\xbe\x63\x04\xb2\xfd\xef\x93\x6c\x5f\xe6\x93\xcb\x22\x36\xee\xda\xa6\xa1\xf9\x66\x73\xac\xc9\xd3\xae\x99\xa1\xad\x88\x1e\x12\x27\xc6\xbc\xe2\x82\xd8\x1e\x82\xb6\x39\x63\xcd\xfc\xd5\xc8\xac\x81\xaa\xfc\x8a\x87\xcd\x64\x94\xf5\x85\xbf\xbc\x73\xa9\xf4\xbd\xb1\x83\x63\xab\x09\xdd\xf9\x17\x21\xc7\x91\x66\x19\x4b\x09\xdf\x6c\x58\x6a\xec\xde\x6c\x47\xe8\x52\x23\x7a\xa1\x1a\x7b\xad\x65\x93\x27\x05\xa3\x3e\xbd\x12\x12\xea\x20\x09\xb2\x99\x57\x89\xa0\xd9\xa2\xa8\x59\xb1\xe1\x02\x8c\x71\x1b\xad\x73\x19\x9c\x75\x5e\x25\xe6\x1e\x69\x65\x5e\xd6\x27\x1a\x6e\xbf\x06\x87\x74\x03\xa2\x08\xd2\x8b\x4c\x26\x8f\x8a\x94\x42\xf3\xcc\x4e\x59\xca\x47\x92\xc8\x4d\x9e\xc1\xd9\x39\xe2\x16\xa8\xfe\xe7\xac\xe2\xb7\x99\xa1\xae\xae\x7e\x57\xff\x13\xfc\xe1\xd4\xf5\x8b\xd8\x67\x96\x8c\x28\x17\x61\x24\xa4\xd9\x24\x88\x0e\x4b\x51\xa9\x85\x4b\x69\x2e\x24\xbc\xef\xb5\xee\x59\x50\x09\xc3\x39\xb9\xf9\xcc\x92\x46\x2f\x0a\xe8\xc4\x9a\x04\xb2\xdb\x9b\x8f\x96\x70\xa8\xcf\xd5\x14\x10\x95\xa9\xd3\x7c\x5a\x2b\xf7\xc6\xbe\xed\xfb\xab\x39\x62\x24\xe3\x82\xc5\x85\x0b\x5d\x9e\x4f\x33\x5f\xbf\xe2\x15\xeb\xe3\x72\x9a\x73\x8c\x53\x9b\x17\xd0\x94\x61\x57\xe1\x50\xfd\xf8\xa0\xaf\x80\x94\x9a\xbc\xbc\xb8\xba\x88\x69\xcb\xde\x75\x43\x5e\x18\x4d\x26\x63\x56\x42\x5b\x9f\xa4\xfb\x46\x0c\x51\x45\x14\xdf\xe4\xd9\x0e\x56\xe1\x22\xbd\x24\x5c\x7b\x60\x6b\x51\x0a\xbf\x26\x31\x9d\xff\x20\x1b\xe4\x92\x28\x49\x74\x41\x7d\xab\x20\xfb\x57\x43\x4e\x17\xa5\xbd\x6f\x22\x48\xbe\xbc\xf8\xff\x2f\x2e\x09\xd3\xc9\x2b\xf2\x24\xc5\x85\x86\x0d\x99\x93\x07\x5b\xf9\x82\xfa\x4f\xee\x64\x19\x41\x54\x30\x5b\xa6\x82\x7d\xce\x33\x9e\x70\x9d\xed\x40\xa8\x13\x59\x6a\x9b\xf6\x49\xb5\x4b\xe9\x8a\x20\x7a\xf3\x99\x6b\x87\xcc\x32\x27\xf9\x1b\xe0\x4e\x2b\xe0\x09\x35\x4a\xdc\x96\x5d\xad\x19\xcd\xf4\x3a\xa6\x87\x8e\xe1\x1b\x21\xc5\xec\xbf\x59\x21\x21\x81\x4c\x38\x1a\x67\x6c\x33\x39\x2a\xfe\x13\xdb\x82\x2a\x32\xa4\x61\x2e\x83\x1f\xd8\x98\x46\xed\xff\xf1\xf0\x70\xf7\x03\xd3\x1d\x61\x68\xe8\x79\x30\x0b\x5e\x24\xe6\xac\x58\xca\x62\x73\x2e\xa9\xb8\x96\x0a\x39\x43\xb2\x37\x4b\xa9\xb4\x2d\x80\x60\x55\x2f\xc1\x12\xc3\xcb\x35\x8e\x22\x66\xff\x65\x55\xd2\xe1\xf6\x6e\x4e\xfe\x53\x96\x50\x88\x80\x2e\xb2\x1d\x64\x70\xbb\x94\xa8\x08\x8a\x2f\xcc\xf0\x5e\x18\x39\x66\xd6\xfd\x3f\x18\x4d\x6d\x5a\xbd\xd2\x8c\x46\xf7\x80\x8a\x62\xcc\xc6\xf7\xc6\x5e\x36\xa5\xd2\x72\x43\xd6\x6e\xd0\x31\xe9\x60\xcd\xc7\xf1\xda\x1c\xf8\xd1\xda\x9c\xd0\xb4\xcf\x0a\x08\x47\xfd\x4b\xf5\x8e\x35\x63\xb0\xab\xe2\xfe\xbe\x80\x86\xd8\x09\x4c\x35\x2a\xdc\x6a\x07\xee\x9a\xb1\xdb\x24\x09\x61\xa7\x68\x6b\x57\x44\x10\x1b\xdb\xa9\x35\x16\x41\x40\x0e\x79\x0e\xdd\x3c\xac\x83\x00\x11\xea\xec\x3e\xc7\x35\xeb\x3c\xed\xf0\x87\xeb\x65\x9c\x74\xfc\xe3\xda\x28\x46\xae\xef\x2c\x7a\x46\x5f\xa8\x89\x62\x1e\x85\xfe\xdd\xc7\xfe\xda\x22\x2c\x90\x9e\x65\x35\x3c\x38\x38\x8a\x15\xdb\x70\xfa\x65\x77\xdc\x51\x5b\x97\x4b\x8c\x0d\xec\x1f\x2a\x76\x1f\xd1\xc8\x2c\x68\x37\x05\x23\xe2\x42\xb3\x15\xca\x2a\x6c\xbf\x77\x4c\x7f\x48\xeb\x5e\x2f\x88\x28\x37\x0b\x56\xd4\x69\x03\x85\x8e\x33\x0c\xda\xdb\xd2\x88\xff\x7f\xb0\x84\x43\xb5\x83\xf6\x1f\xa7\xc3\x17\x54\xac\x18\x79\x6d\xb6\xfe\xdb\x3f\xff\xf9\x8f\x7f\x9e\xdb\x21\x7b\xa8\x0a\x1a\x6d\x62\x9e\xdb\xeb\x0f\xd7\xbf\xdc\xff\xf4\x06\xb2\x07\xf1\xfc\xf2\x79\x56\x5b\xd4\x33\x2e\xf4\x4c\x16\x33\xbb\xe6\xdf\x11\x5d\xa0\xcf\x19\x20\xf9\x23\x24\x57\xdb\xa7\x0e\x2f\x37\x0b\xd8\x39\x9d\x25\x4e\xfc\x38\x4d\xc5\xe8\x4d\x6d\x7f\xa1\x39\x48\x67\x3c\x41\x71\x62\x6f\x06\x0c\x78\x0e\xad\x58\x27\xf9\xbd\x4c\x1e\x47\xe9\xc5\x17\x0f\x6f\xee\xec\xcb\x0d\xd5\x98\x0a\xe7\x26\x20\x5c\x6c\x65\xb6\xc5\x6f\x07\x25\x0f\x6f\xee\x60\xa2\x73\xf8\x5f\xe0\x69\x01\x63\x72\x67\xbe\xe0\x41\xde\x36\x80\x84\xa4\x59\x15\x0d\x04\x18\x3e\xcd\xb8\xd2\x3c\x01\xea\xb5\x4b\xd1\x7c\x07\x17\x37\xfa\xa2\xfa\xf8\xc5\x47\x1f\x72\x3a\xa8\x9a\x47\xf1\x78\x3b\xb9\xa5\xa1\x9a\xe3\x41\x7d\xd3\x1d\xd1\xb8\x23\xdc\xdd\x60\x31\xfc\xd3\x1d\x71\xe8\x39\xc9\x1d\xf1\x3c\xa4\x64\xc4\x8f\xf3\x82\xdd\x6b\x99\x47\x47\x07\xec\x6b\x3d\xb1\x81\x05\x5b\xe2\xe0\xc8\xb4\xd7\x95\x9f\x96\xcc\x35\x90\xbe\xbe\xbb\x8d\xf0\x5a\xc8\x96\xbb\xde\xa2\x03\x55\x99\xac\xbd\x3f\x4a\x30\xa5\xae\xc0\xc9\x5f\xe6\xd6\x5e\x43\x10\x5d\x52\x9e\x95\x05\xbb\x34\xab\xc5\x36\xb0\x06\x97\x75\x1a\x83\x99\x02\x13\xf6\x8f\x4c\x27\xc3\xa5\x0b\xeb\xc7\x47\x3e\x9c\xff\xd1\x2f\x63\x27\xc0\x40\x92\x82\xaa\x35\x1b\xec\xdb\x58\x3f\xec\x33\xd7\xca\x37\x9f\xa6\x4a\x0a\xeb\x90\x75\xcb\x0a\x77\x9c\x6a\xd4\xac\xc5\x99\xf3\x6e\xa0\x96\xec\x9d\x4c\x2f\x2e\x54\x8b\xe4\xaa\xa0\x09\x23\x39\x2b\xb8\x4c\x09\x64\x7a\xa6\xf2\x09\x73\x60\x17\x6c\xc5\x85\x72\xdc\x02\xd3\xf6\x6c\x65\x6e\x38\xdb\x8f\xd7\x97\xa5\x9a\x93\x4f\xd8\xfa\x63\xa4\x4e\xb2\x91\xa5\x4e\x64\x2d\xf0\xdc\x4c\x2e\x3b\x4b\x8c\xac\x37\x01\xcc\x54\xd2\x2c\xdb\xd5\x8c\xea\xb1\xb0\xfa\xe0\xd2\x20\x88\x36\x17\xef\x8b\xc4\x9b\xcc\x09\xa9\xff\x6d\xfc\x60\xc1\xb3\xcf\x68\xb2\xc6\x57\x64\x9a\x42\x58\x8d\x67\x0a\x61\x4d\x21\xac\x29\x84\x35\x85\xb0\xfa\x9e\x29\x84\x35\x85\xb0\xa6\x10\xd6\x14\xc2\x9a\x42\x58\xf5\x33\x85\xb0\x4e\x33\xfe\x29\x84\x35\x85\xb0\xba\xcf\x14\xc2\x3a\xf4\xfc\xc6\xdc\x93\x53\x08\xeb\xeb\x3b\x67\xa7\x10\xd6\x14\xc2\xc2\x12\x99\xee\x88\x29\x84\x35\x85\xb0\x06\x7f\x8c\xfc\xa1\x8f\xfd\xdc\x19\xfb\x26\x26\xcf\xeb\x0e\xbc\xdd\x3c\xb1\x96\x91\xe1\xbb\x66\x96\x8f\x25\x3a\xaf\x4b\xc8\x07\x26\x56\xd7\xb8\xf0\x59\x2a\x2e\xe0\x63\xa9\x43\x16\xcc\xd9\x5a\xa3\xf4\xb5\x47\xca\x65\x5a\x7b\xdf\x1b\x6e\x77\x6b\x0b\x0e\x8b\x2b\xbc\x78\xc6\xf9\xdb\xe3\x7c\xed\xb8\x54\x2d\x62\x33\xab\x30\x7e\x76\xbc\x07\x3d\xb6\xdf\x77\x84\xe7\x3c\xc2\x6b\xee\x7d\xe1\xd8\xab\x39\xe4\x31\xaf\xfd\xe0\x48\x8a\xc3\xde\xf2\x03\x3e\x70\x2c\xdd\xc3\x9e\xf2\x83\xfe\x6f\xec\xe4\xf7\xbd\xe4\x43\xbe\x6f\xfc\x92\x56\x1e\xf2\x90\xdf\x1b\x1d\x1a\xf2\xde\x71\x8c\xcf\x3b\x86\xe8\xfc\x0c\xfe\xee\x23\x7d\xdd\x51\x2e\xb1\x68\x35\x22\xc6\x3b\x10\x71\x3f\x39\x40\xc0\xc3\xba\x60\x6a\x2d\x33\xc4\xb9\x6e\x9d\xe9\xf7\x5c\xf0\x4d\xb9\x81\xd6\x91\xe6\xf8\x72\xd7\x1b\xb2\x2c\x58\xd5\x26\x16\x31\x3d\x7b\x67\x58\x27\x5e\xdd\x85\xb2\xea\x32\xb9\xd4\xac\x20\x6b\xba\x05\x39\x59\x26\x09\x63\x29\xae\x05\x44\xd3\x24\xfb\xe3\xbc\x1a\x6d\xd5\x07\xe0\x75\x98\x88\xad\x8b\x09\x9a\xe2\x1f\xff\x80\x5c\x79\x9c\x56\x89\x0e\x29\x44\x86\x13\x70\x5a\x24\x3a\x94\x10\x77\x3d\xe0\x4d\x96\xb3\x84\x0f\x90\xa1\x03\x17\x10\x40\x0b\xc6\xf1\x61\x83\xc8\x73\x1e\x1d\x2e\x40\x87\x0a\xaa\x00\x00\x72\xd2\xc7\x87\x09\xa2\xe4\x21\x3e\x3c\xe0\x06\x81\x37\x3d\x8f\x0c\x0d\x8c\x09\x0b\x1c\x55\x17\xf3\xd8\x70\xc0\x28\x0b\x35\x3a\x0c\x70\xda\x10\xc0\x17\xa9\x85\x1b\xb1\x8e\x71\x2e\xff\x68\x77\x7f\x9c\xab\x1f\xef\xe6\x3f\x87\x8b\x3f\x72\x6b\xf0\x6e\x9b\x08\x97\xcd\x18\x77\xcd\x08\x57\x0d\xde\x95\xef\x16\x15\xc9\x1f\x21\x17\x4d\xcb\xf1\x82\xa4\x39\xe0\x9e\x19\xe3\x74\x39\x81\xc3\x25\xc6\x21\x8f\x76\xc6\xe3\xc1\x9d\xc4\x69\x1f\x63\x1d\xf1\x51\xdc\x82\x17\x3e\x48\xb7\x52\x84\x08\x71\x7d\xe7\xdf\xb2\x8c\xee\xee\x59\x22\x45\x8a\xb8\x99\x3a\x85\xcc\x2a\x9e\x56\x96\x80\xd3\xb1\x63\x11\x9a\x6b\xaa\x7c\x9b\x79\x0f\x7e\xcd\xda\xed\xcf\xa1\x5f\x80\x1d\x31\xc2\xfb\x43\xbe\xaa\x07\x88\x9c\x55\xdd\xb7\x60\xd3\x71\x1b\xf6\x1f\xf2\x89\xc8\xa5\x66\x82\xbc\xe4\xc2\xef\xd9\xab\x06\x22\x28\xc6\xce\xaa\x0e\x88\x79\xff\xf5\x37\x9e\xdc\x73\x33\x8f\xc0\xd0\x53\xea\x94\x96\xa9\x23\x79\x0a\xd3\xd4\x91\x5a\x96\x59\xdb\x3c\xb5\x26\x6b\xac\x6d\xfa\xba\x2e\xd1\xf8\x1a\xc6\x56\x9d\x22\x2a\x52\xe2\x40\xfe\xa8\xc3\xf3\xac\xb6\x30\x22\x3c\x78\xae\xd0\x60\x54\x58\xb0\x0e\xf8\xa1\x28\x1f\x17\x12\xfc\x22\x76\x75\x20\x0c\x68\x4c\x6c\xb4\x81\x76\x44\x08\xf0\x5f\x56\x87\x1c\x0a\xf5\x4d\x3a\x64\xf7\xf9\x9a\x5a\x95\xe6\x1b\x26\x4b\x7d\x62\x85\xea\x69\xcd\x93\x75\x1d\x16\x43\x2c\xa3\x19\x87\x22\xb2\xec\xe8\xb1\xaf\x1d\xe1\xfd\x5b\x1a\x41\xf3\x75\x74\x5e\xcb\xaf\x44\xab\x42\xee\x6f\xd8\x1d\xd3\xdb\xbb\xba\x0e\x91\xd6\x1d\xda\xa8\x22\x94\xbc\xfd\x70\xff\xcb\xbb\xeb\xbf\xdf\xbc\x0b\x9d\x8d\x1b\x9a\xac\x9b\xc9\x81\x82\x50\x10\x9e\x70\xd6\xd6\x74\xcb\x08\x25\xa5\xe0\xff\x2c\x6d\x2d\x55\xf2\xb2\xa2\xfc\xea\xc4\x95\xee\x91\xb2\x0c\xfa\x33\x8e\xe8\xdb\x00\xef\xb9\x10\x8f\x34\x86\x5c\x21\x37\x1d\x99\x15\x5a\x2a\xf3\xa2\xd1\xa2\xa8\x95\x91\x6b\x56\x30\xb2\xe2\x5b\xe7\xe4\x76\x45\x2d\x69\x5a\x85\xb7\x0c\x43\x1b\xce\x0a\xe7\x15\xd1\x05\x04\x9a\xd6\x8c\x08\xa6\x0d\x77\x57\x36\xa6\x14\xaa\x95\xbd\x59\x2a\xa6\x2e\xc9\xa2\x0c\x9a\x61\xc6\xc4\xe1\x1b\x5a\xf0\x6c\xd7\x1c\x08\xcd\xe6\xe4\x83\xf4\x9a\xcb\xae\x33\x9d\x00\xd1\xb7\x1f\x6f\xee\xc9\x87\x8f\x0f\xd0\x00\x1c\x8a\xd3\xae\xa9\xb6\x6f\xc3\x72\x2e\x98\xa1\xe7\x3a\x6e\xcd\xc9\xb5\xd8\x61\x04\xa1\x95\x42\x5c\x11\xa3\xae\x30\x61\x48\xb8\xeb\xc4\x17\xbe\x7d\xf1\xcd\x1c\xfe\xef\x85\x59\xdd\x22\x7c\x2b\x55\x61\xc7\x76\xee\x21\xdc\x1d\x70\xab\xf1\x45\xd6\xe0\x00\xb7\xe6\x5f\xbd\x73\x43\x05\x6e\xb8\x33\x2b\xda\xec\xbe\x5f\xb1\x05\xea\x5e\xb1\x3d\x43\xb8\x58\x65\x11\xdc\x1d\xd9\xbd\xa1\x1e\x68\x74\x35\xf5\xfa\x36\xf2\xaa\x86\x3b\x92\x6e\xd7\xa1\x55\x16\xea\x4a\xbf\xbd\xf3\x0c\x31\xb7\x45\x98\x37\x9d\x66\x53\xf0\x01\xeb\x22\xc3\x69\x92\xdf\x90\xbf\x92\xcf\xe4\xaf\xa0\x76\x7c\x8b\xd1\x2b\xe2\xee\x8e\x38\x03\xc5\xea\xd5\xb7\x77\xd1\x2b\xfc\xb3\x39\x96\xe6\x5d\xb3\x42\xc6\x38\xe4\x22\x75\xcd\xf0\x34\x2b\x8c\x68\xc2\x83\x89\xe4\xc9\xeb\xf0\x9b\x81\x9d\x85\x71\xc0\xbf\x86\x63\x9c\x65\xa3\xba\x33\xd1\x67\x60\x1d\xf3\x09\x63\xd3\x7c\x70\x07\xb7\x55\x4f\x1a\xbe\x88\x22\x0a\xa3\xda\x50\x9d\xac\xdb\xd2\xc1\xa8\x4c\x4a\xd7\x07\x51\x91\x54\x92\x70\xdd\x63\xfb\x58\xb0\xc3\x9a\xa3\x22\x65\xe7\x65\x70\x6c\x28\xaa\xc5\x07\x43\xbb\xd7\x31\x0d\x90\x66\x5a\xea\x75\x9c\x46\x9a\x79\x2e\xd3\xb9\x55\x8f\xcc\x20\x1d\x43\x04\xab\xac\x3b\x8a\x43\x3a\x94\xb3\x66\x3c\xa2\x07\x7f\x14\xcd\xa9\x4e\xa8\xb0\xb8\xb6\x25\x2b\x0a\x8b\x59\x59\xec\x88\x6b\x00\x8d\xda\xd0\xa8\xb3\x9a\x17\x52\xcb\x44\xa2\xba\x1b\xb4\xc3\x3b\xee\x45\x98\xa6\x75\x70\x78\x1f\xd2\x8f\x6f\xef\x2e\xc9\xc3\x9b\x3b\xdc\xb1\x92\x05\xb9\x7f\xf3\x70\xd7\xb6\x37\x5e\x3c\xbc\xb9\x43\xb5\x61\x8e\x98\x2c\xbe\x5d\x59\xeb\xfa\x0b\x19\x6e\xa7\xed\x86\x50\x30\x9a\xf2\x93\xe3\x2b\x1d\xfb\xd4\xd4\x83\xaa\xd0\x9e\x5e\x55\xb0\x8d\xdc\xb2\xd4\x2a\x55\x9e\x1e\x13\x69\x2e\xb9\xd1\x60\x78\xa8\xe1\x14\x02\x9b\x39\xa1\x2f\x83\xcf\x84\xbe\x24\x13\xfa\x72\x42\x5f\x4e\xe8\xcb\xd0\x6f\x27\xf4\xe5\x84\xbe\xec\x7f\x26\xf4\xe5\x84\xbe\x1c\x7a\x26\xf4\xa5\x7b\x26\xf4\xe5\x88\x21\x4f\xe8\x4b\xc4\x0b\x13\xfa\xf2\x59\x47\xce\x27\xf4\xe5\x84\xbe\xec\x7b\x26\xf4\x25\x3c\x13\xfa\x72\x42\x5f\x4e\xe8\xcb\x09\x7d\xd9\xf7\xdb\x09\x7d\xd9\xff\x4c\xe8\xcb\xde\xe7\xb7\xa3\x43\x4e\xe8\xcb\x09\x7d\x39\xa1\x2f\xbf\x36\xfa\xd2\xb7\x17\x88\xc1\x14\x5e\xbc\x91\x9b\xbc\xd4\x8c\x7c\xf2\x2f\x57\xec\x49\x16\x3b\x8b\x48\x40\x03\xaf\x8e\x0f\x74\xda\x96\xf2\x65\x01\x00\xbf\x2b\x5b\xd5\x7e\x96\xd8\x21\xce\xaa\xf9\xcd\xaa\x11\x5d\x9d\x2a\xd8\x99\xf1\x0d\x0f\x81\x31\xcd\x53\x63\x22\xef\xa2\x2e\xb6\x28\x01\xdb\xde\xa1\x77\x30\xb4\x86\x8b\xd0\xb6\x20\xff\x0c\xc7\x83\x6e\x64\x89\xba\xc7\x21\x4a\x6e\xb7\xba\x5a\x47\xeb\xf8\xfc\xfa\xdb\x44\xe2\x64\x98\x73\xf1\x3e\xcf\xdd\xfa\xe4\x06\xd7\xdd\x2f\x27\xce\x8e\xdb\x2f\x7f\x34\x01\x93\x55\x7d\x89\x2b\x22\x37\x5c\x6b\x86\x89\xab\x1b\xb5\x9b\x36\x83\xc9\x5c\xb7\x94\x1e\xc7\x6d\x50\x63\x8a\x6a\x9c\xe0\x6d\x04\x3b\x1b\x68\x26\xa9\xd7\xac\x78\xe2\xca\x77\x65\xa9\xb4\x4e\xe0\x9a\x59\xca\x96\x5c\xa0\x86\x0c\x57\xc0\xaf\x8a\x47\x91\x3f\x34\x16\x5b\xc1\xf5\xee\x8d\x14\x9a\x7d\x0e\xe8\x82\x6d\x36\xbb\x77\xaf\x12\x99\xdb\x48\xb6\x57\x56\x5d\x93\x88\xa2\x14\x80\x00\x3b\x71\x19\x30\xdb\xe5\xfe\xca\x0f\x1c\x56\x8f\x7d\xd6\x57\x27\xf9\x8a\xa6\xea\xb1\xde\x37\x36\x33\xd7\x71\xbd\x3d\x7b\xdf\x3c\x95\xe8\x07\x21\x78\x57\xf0\x2d\xcf\xd8\x8a\xdd\xa8\x84\x66\xc0\x33\xb1\xca\xd1\x75\x0f\x1d\x38\x6c\x85\xcc\x14\x79\x5a\x33\x73\x26\x50\x56\x57\x5e\x48\xf0\x67\x27\x54\x90\x15\xe5\x82\x6c\xcc\x1a\xe6\x9e\xbc\xd9\x70\x73\xa6\xb4\x22\x39\x2d\x70\xa6\x9c\x23\xe9\x00\xc6\x0b\x29\x33\x87\x1e\xc9\x76\xf5\x18\x5d\x71\x39\x21\x7f\x11\xec\xe9\x17\xf3\x3d\x8c\x04\x58\x66\x74\x55\x01\xa8\x14\xd3\x7b\x7a\x7c\xfd\xf1\xbe\x65\x42\x7c\x05\xa0\x0f\x25\x23\x34\x7b\xa2\x3b\x58\xce\xee\x57\xb8\xfa\x8e\xbc\x7e\x05\xdc\x4f\x31\xe3\xae\xc6\x91\x92\x3f\xbc\x02\x3f\xdf\x9b\xeb\xbb\x5f\xee\xff\xf3\xfe\x97\xeb\xb7\xef\x6f\x3f\x60\x45\x82\x59\x4b\x16\x2c\xd7\x98\xd0\x9c\x2e\x78\xc6\x71\xb7\xd0\x5e\xe4\xa9\xf9\x3a\x88\xd4\x34\xbd\x4a\x0b\x99\xdb\x75\x28\x4a\x21\x70\xc6\x5b\x8d\xb4\x6d\xeb\xde\xcd\x34\x05\xd8\xc2\x65\xeb\x93\x08\xca\xab\x82\x0a\xed\x15\xc7\xe6\xb6\x14\xa5\x30\x0a\xff\xa9\xa3\xf0\x34\x1d\x03\xd0\xba\x4e\x53\x96\xc6\x4e\xed\x98\x38\xef\x1b\xff\xa9\x5d\x9d\x09\x41\xee\x3e\xde\xdf\xfe\xcf\xf8\x51\x10\xc7\x73\x51\x21\xbb\x33\xe1\x6f\x08\x31\xec\x37\x62\x07\x3e\x39\x84\xe5\xb4\x07\x03\x2f\x9c\x1c\x03\x55\xdd\x1d\xb1\x3e\xe6\x4f\xa5\x68\xe7\xd5\xd5\x94\xc8\x46\xa6\x6c\x4e\xee\xac\x70\x47\xad\x5f\xfb\xfd\x06\xec\x9f\x16\x8c\x18\x22\x42\x73\xe8\x98\x66\x74\xdd\x2d\xcd\x70\x77\x9b\x96\x16\xc5\xd8\xcc\x9f\x68\x49\xb7\x25\xcd\x14\x42\x00\xc5\xc8\x73\x73\xa5\xbd\x37\xea\x7c\xe4\x7a\x56\xef\x91\x94\x09\xa9\x9d\x85\x60\xbe\x0c\x09\x21\x85\x4c\x08\xd6\x4a\x68\x04\x13\x5b\x12\xd7\x75\xf4\xf3\xe2\x9c\x2b\xbf\x16\x77\xfe\xdb\x08\xe2\xd6\xab\x53\x2a\xa6\x0e\x8b\xf3\xda\x6e\x30\xdf\x2f\x18\x4d\xa5\xc8\xb0\x91\x7e\xeb\xf3\xdf\x50\xf5\xc8\x52\xfb\x07\xa7\x97\x38\x1b\x47\xb9\xee\x7e\x6e\xb8\x0f\xb8\xf3\xb6\x64\x54\x97\x05\xb3\xfa\x88\x8d\x66\x30\x41\x17\xa8\x58\x45\x14\xc0\x9e\xa6\x1f\x45\xb6\xfb\x24\xa5\xfe\xbe\x02\xbe\x46\xb2\xc1\xcf\x56\x1b\xec\xf8\x58\x40\x09\x01\xa7\x7b\x3a\x43\x2e\x27\x30\x7e\x13\x7f\xfb\xb6\xde\xf6\x33\xb0\x7d\x51\x8a\x6b\xf5\x43\x21\xcb\xd8\x16\xa0\x86\x23\x7f\xb8\x7d\x0b\x67\xb5\xb4\xe7\x94\x09\x5d\xec\x00\x58\xef\xbc\xc6\x31\xfa\x4b\xad\x53\xfe\x68\x78\xb4\xc3\x95\x46\x93\x2d\x85\x62\x28\x28\xd8\x7b\xba\x23\x34\x53\xd2\xab\xaf\x5c\x90\x3b\x88\x62\x36\xed\xb3\xb9\xcd\xb6\x62\xc8\xdc\x99\x85\xd4\x6b\xd2\x21\x01\x4c\xbf\x4f\xf9\x12\x39\x75\xeb\x0c\xad\x13\xa4\xb9\xd8\xfb\x80\xa6\x8f\x4c\x91\xbc\x60\x09\x4b\x99\x48\x10\x7b\xdf\xf0\x5a\x7e\xfb\xa7\x93\x06\xc6\x80\x53\x3e\x48\x61\x8e\x49\x24\xaf\xdc\x8a\x94\x27\xd4\xca\x46\xaa\x3b\xf2\x07\xfc\xf7\x45\x89\xd9\x04\x38\x4c\x42\x8a\x19\x1c\x92\x52\xb1\x02\x7c\x27\xc6\x8c\xb0\x38\xfa\x7f\x94\x0b\x96\x31\x6d\x8d\x17\xc8\x97\xa3\x28\x74\xbe\x79\x97\x6f\xe8\x8a\x11\xaa\x2b\xd6\xd3\x92\x30\xa1\x4a\x68\x4d\x4a\x35\xb8\x56\x24\x53\xc8\x6c\x36\x6b\xb4\x90\x1f\x6f\xdf\x92\x6f\xc8\x4b\x33\xde\x57\xc0\x2e\x4b\xca\x33\x00\x39\x6a\x5a\xe8\x68\xec\x02\x5f\xfa\x61\xc0\xc4\xe1\x44\x10\x59\x58\xc1\x70\x49\x84\xb4\xbd\x6e\xdd\xcc\x71\x76\x98\x37\xf4\x5c\x54\x1e\x1c\x88\xe8\x03\x84\xa0\xef\x08\xc4\x1c\x20\xe4\x8e\x9d\xe5\x00\x45\x0b\xcf\x1f\x15\x2b\x46\xc8\xce\x1f\xcf\x22\x3b\x9b\x4a\x92\x39\x1f\xad\xd5\xc1\x30\x18\x1c\x82\x0d\xd3\x34\xa5\x9a\x3a\xa9\x5b\x67\xee\xec\x33\x06\xc6\x2c\x1f\x94\xbd\x07\x19\x03\x23\x0b\xfa\x65\x2f\x82\x31\x30\x1c\xf6\x8c\x64\xaf\x62\xef\xb8\x28\x3f\xdb\xc0\xf8\x18\x77\xc3\xfd\x0d\x10\x20\x89\x3f\x17\xb0\x85\x34\xcf\x33\x0e\x29\x2e\xc8\x13\xd7\x88\xe4\xde\xb6\x58\xa3\xdb\x52\xd9\xc9\x50\xac\xf8\xa1\x59\x26\xcd\x05\x61\x74\x25\x2a\x52\xb9\xd9\x1b\xb0\x51\x4a\x19\x4d\xd6\x31\xc7\x62\x1e\xa3\x0a\xfc\xf6\x24\x59\x9c\xfb\x25\x63\x5b\x86\x4a\xa7\xed\xd6\x31\x31\xef\x19\xe5\xd4\xef\x18\x10\x22\x19\x5d\xb0\x2c\x26\x43\xca\xf2\x62\xe5\xbb\x42\x87\x29\xed\x13\x69\x96\x17\x32\x1b\x03\xfa\xfc\x24\x33\x00\x28\xd1\x6a\xb2\x86\xd0\x33\x9f\x2b\xfc\x3c\x7e\xae\xc6\x46\x6b\xcf\x15\x6c\xda\xe7\x3d\xd7\x12\x75\x17\x93\xee\x5c\xcd\x15\xde\x9e\x2b\xdc\x9d\xcf\x79\xae\x11\xae\xa2\x27\x2e\x52\xf9\xa4\xc6\x5f\x1e\x3f\x5b\x02\x5e\x3e\x25\x46\x10\x6a\x2e\x56\xca\x5f\x20\x38\xdf\x06\xcd\xb2\x96\x4f\xe3\xd0\x0d\xe2\x03\x60\xcb\x02\xd5\xd1\xd4\xb5\xdd\xef\xca\x4a\xaf\xd2\x96\xca\x45\x57\x1b\x92\x1b\x41\x35\xc2\xcc\x43\xa7\x5c\x7c\x55\xd9\xbe\xda\x28\xfa\xa6\x30\xb4\x35\xa7\xd9\x7d\x3e\xaa\xf1\xfd\x0f\xef\xef\xaf\xdb\x44\xcc\x91\x79\x82\x6a\x53\x66\x25\xcc\xbf\x63\xcf\x49\xba\xe1\x4a\x71\x29\xc8\x13\x5b\xac\xa5\x7c\x24\x2f\x7d\x24\x71\xc5\xf5\xba\x5c\xcc\x13\xb9\x69\x04\x15\x67\x8a\xaf\xd4\x95\xe3\xe3\x99\x99\x0d\xb6\x0f\x3b\x17\x19\x17\x0d\x97\x17\x94\x2d\x72\x90\x36\x33\x60\x92\x54\x33\x42\x52\x34\x1b\xe9\x2a\x6f\xb8\xc8\xc8\xfe\xc2\xd8\x3a\x1a\x9c\x65\xe8\x2e\xc9\xe0\x2c\xb3\x69\x48\x46\x0e\x65\xf9\x9a\xce\xec\x45\xea\xd2\xae\x21\x09\x7f\x2d\x85\x2c\x50\xc7\xcd\x3c\xae\xfe\x06\x64\xd5\x19\x03\xd6\xfa\xce\x60\xc8\xee\x44\xc3\x0a\x38\x2f\x1b\x92\xe8\x32\xa3\xab\xb3\x88\xee\x7d\x1e\xfd\x80\x4e\x48\x0b\xf0\x29\x6c\x87\xcb\xe0\x8f\xc8\xa7\x3a\xcc\x26\x96\x01\xac\x79\x35\x6f\xec\x1b\x96\x21\x83\xbb\xdb\xd8\x37\x6c\x4c\x22\xbc\xbb\xe7\xdb\xb7\xca\x06\x1e\xb9\x5d\x60\x0b\xbb\xd7\x8d\x6c\xf4\x97\x4d\x6d\x1b\x23\x57\x61\xcf\x82\x1e\xb2\x8f\xb1\x2b\x6b\x2f\xf2\x3d\x4b\x3a\x60\x27\x23\xa9\x23\x8d\x13\x7b\x7f\xa1\x05\xde\xa9\xed\x13\x12\x69\xa3\x20\x49\x36\x6e\xbb\x90\xf4\x8b\x28\x31\xd1\x73\x90\xfa\x8e\xc8\xa7\x26\xf3\x62\x25\xe0\x79\x4f\xd4\xc9\x61\x49\x36\x11\x23\xba\x2e\xcf\x7d\xe3\x3d\xc2\xf7\x1d\xb8\x77\x32\x25\xeb\x20\x2c\xa3\x4e\x39\x81\x72\x8f\x90\x04\xc6\xff\xdb\x6b\x65\xb5\xee\x27\xa4\x45\x98\xe1\xd2\x9c\x21\xb8\x68\x4b\xaf\xa4\xa4\x14\x9a\x67\x3e\xee\xb2\xc9\x33\xa3\x30\xb4\xbe\x6b\x7d\xc4\xe1\xca\x66\x8d\x32\x3f\x97\xd5\x14\xf7\x1a\x36\x5e\x92\xff\x2a\x95\x26\xd4\x83\x6b\x02\x44\x5b\x7d\x27\x7d\xa6\x8d\x65\x78\x57\x32\x0b\xb2\xbc\xb5\x34\x9f\xdf\xf2\x94\x91\x94\x2f\x97\x0c\x01\x02\xb2\xc3\xcd\x69\x41\x37\x4c\x43\xc8\xd5\x6e\xcc\x82\xad\xb8\xb0\xd5\x2a\x97\x84\x9a\x49\x5c\x5c\xa8\x3a\xd3\x23\x74\xe4\x01\x7f\xc2\x35\xd9\xf0\xd5\xda\x9e\x68\x42\x49\x26\xc5\x8a\x78\xa7\x78\x26\x69\x4a\x40\xec\xc9\x82\x3c\xd1\x22\xa4\xa8\x53\x92\xd0\x64\x0d\x1e\x7a\x2a\x48\x5a\x16\x50\x12\x43\x33\x9a\xee\x66\x4a\x53\x6d\xb4\x7e\x66\x91\x7d\xf5\xca\x84\xbd\xec\x4d\x60\x32\xbc\xc5\x6d\xbe\x8d\x91\x1e\xd5\x21\x75\xf1\x42\xa7\xaa\x05\x28\xb6\x58\xbe\x75\xcc\xa7\x12\x4f\xc1\x67\x2a\xf1\x44\xa6\x12\x4f\x53\x89\xa7\xa9\xc4\x53\xe8\xb7\x53\x89\xa7\xa9\xc4\x53\xff\x33\x95\x78\x9a\x4a\x3c\x0d\x3d\x53\x89\x27\xf7\x4c\x25\x9e\x46\x0c\x79\x2a\xf1\x84\x78\x61\x2a\xf1\xf4\xac\xd3\xf3\xa7\x12\x4f\x53\x89\xa7\xbe\x67\x2a\xf1\x04\xcf\x54\xe2\x69\x2a\xf1\x34\x95\x78\x9a\x4a\x3c\xf5\xfd\x76\x2a\xf1\xd4\xff\x4c\x25\x9e\x7a\x9f\xdf\x8e\x0e\x39\x95\x78\x9a\x4a\x3c\x4d\x25\x9e\xbe\x76\x89\x27\xa5\x53\x1e\x28\x4c\x81\xc9\x31\x74\x45\x42\x6a\x0c\x7d\x28\x70\x5a\x2e\x97\xac\x80\xfb\x1c\x46\xb0\x17\x43\xaa\x32\xfc\x7d\xe0\x3c\xbc\x9d\xe6\xe6\x52\x4c\x5f\x42\xaa\xa3\x72\xdd\x76\x0e\x13\x77\x80\xff\x27\xba\x0b\x11\x2d\x98\x82\xd4\x3f\x41\x6e\x3e\x7e\x1f\x9b\x08\x89\xcd\xe3\x81\x51\x7e\x14\x49\x0c\x38\xa2\xde\x88\x43\x89\xb4\x6e\x3f\x92\x4c\xaa\xd0\xc9\x82\xfe\x9c\xb0\x4c\xc9\x9a\x0a\xc1\xbc\xd6\xc6\x35\xd8\x30\x0b\xc6\x04\x91\x39\x13\x36\x82\xed\x9b\x27\x86\xe2\xed\x5a\xd3\x64\x3d\x37\xa3\x14\x7e\x13\x5c\xad\x8d\xfa\x7b\x4a\x17\x8c\x6e\xec\x66\x14\x6c\x43\x83\x99\x3c\x66\x18\x84\x26\x85\x54\x8a\x6c\xca\x4c\xf3\x3c\x63\xee\x53\x44\x31\x40\x73\x5a\x4c\x6f\xb5\xa0\x61\xae\x51\xcc\x06\xd9\x20\x7f\xaf\x1a\xa9\x9b\xb0\x6c\xe6\xa9\x83\xae\x79\x19\xa6\xc8\x36\xb9\xde\x55\x90\x10\x46\x96\xbc\x50\x9a\x24\x19\x67\x42\xbb\xd1\x5a\x7c\x36\x7c\xed\xd2\xe8\xb1\xe1\x2d\x12\x6e\x85\x94\x5b\x04\x91\xc2\x1d\x99\x6b\x65\x61\x10\xf5\xe7\xec\x87\x02\x14\x53\xae\x9c\x9e\xa3\x2e\x09\xd5\x5e\x18\x03\xeb\xf8\x35\x00\xe6\x49\xe1\x53\xee\xdb\x01\xa2\xee\x85\xc6\x50\x1a\x65\x54\x6a\xf4\x4a\x7d\xa4\x97\x19\x0d\x69\x0e\xfe\xa0\x5d\xb6\x3a\x96\xe6\xbe\x3c\x80\xc5\x02\x75\x0f\x7c\x80\x26\x30\x9c\x60\x5b\x73\x5e\x58\xc2\x8c\xf9\x43\x7b\xce\xf7\x49\x8e\xb7\x66\xc5\x86\x0b\x00\x97\xbc\x67\x4a\xd1\x15\xbb\x0b\xba\x2d\xfb\x54\x55\xf0\x5c\xd6\x1b\x06\xec\x95\x81\xde\x0a\x7f\x41\x9c\xf5\x3a\x4c\x7f\xa1\x9a\x43\x23\x1b\x3b\xb6\x0a\x6e\xf4\x54\x70\xad\x59\x68\x31\xb9\xb2\xb5\x05\x20\x86\xd0\x4d\x3a\x30\x9f\x68\x06\xf9\xdd\xf4\x43\xfb\x63\x3f\x6c\x48\x9b\x9b\x4e\xa4\xae\x97\x1f\x23\x8b\x82\xb3\x25\x59\x72\x88\xdf\x43\x7c\xfb\xd2\x66\x9b\x06\x41\x60\xc6\x44\x52\xca\x18\x15\x52\xf8\x30\xac\x9f\xf1\x9c\xfc\xec\xa6\xac\x8b\x52\x24\x54\x63\xc1\x3a\x42\xa6\x8c\xf0\x25\x59\x41\x6c\xbd\xb0\xe0\xa2\x3f\x7d\xf3\x6f\xdf\x92\xc5\xce\xe8\x0e\xe0\xfc\xd7\x52\xd3\xac\x5a\xdc\x8c\x89\x55\x30\x01\xc0\x89\xb8\x76\xb2\x42\xb5\x2f\x50\x59\xd0\x2e\xc9\xeb\x3f\x3c\x2e\xd0\x80\x52\x2d\xc9\x55\xca\xb6\x57\x8d\x3d\x9f\x65\x72\x75\xa8\x9d\xdc\xb0\xda\x82\x54\xfc\x0f\xb0\x3d\x14\xfb\x8a\x60\x7c\x9f\xb4\x4d\xd6\xf2\xc9\xd6\xb4\x38\xc0\xaf\x28\x78\xd0\xc2\xd8\x16\x79\x99\x59\xac\xd6\xf7\xe6\xcc\xc0\x7a\x96\x8a\xed\x03\xf3\x0f\x9e\xd7\xf0\xea\xfa\x0f\x74\xdb\x8f\x5b\x20\x86\x1f\xae\x74\xe8\x58\xe7\x26\x09\xf2\x6d\xea\xd9\x75\x4e\xbe\xa7\x59\xb6\xa0\xc9\xe3\x83\x7c\x27\x57\xea\xa3\xb8\x29\x0a\x59\xb4\xe7\x91\x51\x15\x92\xfd\xc9\xba\x14\x8f\xed\x26\x87\x99\x5c\x19\xbd\x3a\x2f\xb5\x2f\xd7\x75\x60\xa1\x03\x64\x41\x0e\x71\xe5\xae\x3f\xea\xba\xea\xd6\xdf\x60\x9f\x81\x6b\x9f\xb8\x11\x60\x82\x30\x33\xf6\x90\xf1\x64\xce\x4f\x73\x6c\xaa\xc9\xfc\x7f\xf8\xe6\x4f\x7f\xb1\x07\xcd\x58\x91\x7f\xf9\x06\xe0\x52\x2a\x8c\x2d\xe4\xc9\x1a\x64\x3f\x57\x44\x6d\x68\x96\x19\x83\xb1\x69\x4f\x18\xe6\x38\x74\x28\x4e\x72\x26\x74\x0c\xfb\x9f\x48\xd9\x7e\x78\xf8\x4f\xd0\xb4\xb9\x56\x2c\x5b\x5e\x5a\xbc\x77\x55\x15\xe5\x02\xae\xcc\x0b\x27\x61\x8d\x1e\x54\x2d\x07\xf2\x6e\x3e\x8d\x12\xbc\x95\x59\xb9\x61\x6f\x19\x34\x6b\x8d\x58\xa4\xd6\x7b\x1e\x41\x97\xb9\xce\xf6\x8b\x4c\x26\x8f\x24\xb5\xff\x18\x3e\xc1\x3e\x1a\xde\xad\x37\xd6\x40\x77\x92\x05\xd3\x15\xb6\xf3\xd4\x5d\xce\x9b\x73\x69\xc5\xf7\x37\x34\xcf\x2b\x38\x6d\x41\x9f\x82\x86\x62\x73\xe2\xbe\x73\x2f\x3d\x4f\xc7\x73\xfb\x91\xb0\x4a\x73\x60\xbe\xf5\xab\x7e\xe3\x72\xf8\xdf\x16\xb9\x87\x2e\x42\xd0\x2c\x43\x50\x81\xc3\xab\xb9\xdb\x5b\xd3\xac\x20\xc8\x8d\x93\xf7\x01\x1e\xd5\xa7\x59\x54\x3e\x25\xdb\xc1\xda\xe7\x05\xd9\x1d\xce\x59\xa1\xa0\xe1\xbf\xfe\x09\x38\xe2\x4d\x46\x39\x26\x17\x91\x90\xba\x41\xf3\x69\xa7\x89\xef\x00\x5c\xef\x69\xf0\xa7\x08\xd4\xc1\x89\x7b\x04\xdb\x03\x06\x05\xa0\x62\x64\xcc\x9d\x4c\xdd\xab\x70\x43\x80\xc2\x7b\x48\xdd\x0d\x89\x98\xa6\x2e\x1c\x79\xc1\xc4\x0b\x93\x9f\xea\xb9\xb6\x65\x89\xf9\x4b\x25\x4c\xec\xaf\x82\xcc\x72\x5e\x11\x02\x43\x1a\x25\x41\x40\x76\x34\x3a\x93\xd7\x82\xc0\x1b\x49\x38\x2f\xfc\x9a\xb9\x0d\xf6\xb7\xab\x11\x19\xd6\xae\x99\x13\x1b\x81\x32\xbb\xe5\xc8\xa3\x68\x5e\x7c\x77\x71\x72\x59\x63\x17\xaa\x90\x39\x5d\x21\x4b\xca\x76\xd6\xab\x4b\x80\xa4\xcc\xaa\x7a\x4c\x81\x92\x0d\xff\x8e\x73\xbc\x53\x28\x1f\x6b\x29\xf9\xee\xd6\xbe\x54\x9e\x0b\xa4\xf8\xad\x08\x7a\x38\xdc\x52\xac\x99\x4b\xc1\x79\xa2\x3b\x42\x0b\x59\x8a\xd4\xf9\x90\x2a\xe7\xde\xfb\xce\x04\x3e\x48\x81\xbb\x22\xb8\x72\xb9\xd8\xed\x4c\x2f\xb8\xce\xb9\x20\xaf\xe7\xaf\xbf\x79\x1e\x57\xc3\x43\xd5\xb4\xbf\xbe\x1a\x3e\x54\x57\x83\x3d\xaf\x27\x1f\xa9\x2f\x40\x17\x3d\xda\xf7\xce\xf8\xaf\xea\xcb\x81\x05\x01\xde\x34\xf8\x93\x31\xe6\x71\x1b\x54\x97\xf7\x7e\x09\x6a\xa5\xd1\xea\x1b\x19\x8d\xaf\x5a\x5a\x3a\x8a\x22\xb2\x56\x5d\x5c\xc1\x25\x42\x54\xb9\x38\x89\xac\x72\x02\x07\x0e\x4e\xe5\xcf\x89\x53\x77\x2e\xd4\x80\xd8\x8a\x4a\x34\xd5\x92\xbc\x78\x41\x5e\x5a\x6a\x17\x36\xbf\xe3\xd5\xc9\xd9\xcc\x2d\xdd\xcd\xe7\x1c\x55\x23\xa3\xb5\x7c\x37\x9f\x73\x0a\xbe\xa0\xbc\x7f\x1d\x51\x53\xad\x7d\x67\xa8\x75\x44\xd1\xfc\x3b\x5b\xd3\x2d\x83\xbc\x15\x9e\xd1\x22\xdb\x99\x05\xbd\xb7\xb3\x25\x8b\x52\x13\x26\xb6\xbc\x90\x62\xc3\x84\x26\x5b\x5a\x70\xba\x08\x3a\xd1\xed\x53\x30\x48\xc5\x33\xc6\xcd\xef\x5f\xfe\x74\xfd\x09\xa2\x8e\xaf\x5c\xfe\xa1\x5b\x91\x52\x01\x1e\x6c\x04\xf7\x34\x86\xd5\xb6\x82\x9b\xcc\x80\x1b\x27\x30\x8c\x9f\xb3\xd9\x61\x70\x02\xf8\x35\x30\xe3\xdd\x94\xba\xb4\x95\x58\x3f\x27\x59\xa9\xf8\x16\x75\x38\xbb\x95\x09\x1a\x12\xfb\xcf\x27\x66\x50\xbc\x96\x5b\x69\x2c\xcf\x50\xc9\x75\x69\x5e\x6f\x79\xe0\x8c\x75\x52\xd0\x6a\xa6\xd8\xcb\x13\x03\x97\x3d\x5c\xc1\x55\xba\x6c\x8c\xa7\xd9\x87\xa5\x2e\x54\x55\x4b\xb3\x59\x1e\xe5\x12\xa5\xa8\xd9\x64\x50\x0b\x35\xb2\xf5\xfc\xd3\xfd\xc0\x1e\xe4\xc4\x37\x74\xeb\x00\xcd\xd3\xb9\x76\xc2\x9c\x13\xe0\x04\x04\x0f\x84\x76\xbf\x0a\x43\xf7\x0d\xa2\x5d\xb5\x3c\xf1\x7d\x1e\x9c\xc1\x6c\x3b\x5a\x80\x80\xb2\x36\x8a\x97\x85\x9a\x3e\xf6\x8f\x9b\x0b\x52\x30\x95\x4b\xa1\x58\x5b\xe9\xab\x41\x3f\x6c\xcb\x84\x56\x11\x16\x0f\xc6\x74\xc8\xa5\xd2\x90\x2c\x3b\xc4\xe3\xed\x28\xca\x9d\x7f\x05\xa2\x5b\x34\xcb\x0c\x07\x6d\x36\x2c\xe5\x54\xb3\x6c\xe7\xe2\x9e\x14\x09\xf3\x34\x34\x6c\x4e\x9d\x0b\x68\x31\xb2\xa6\x22\xcd\x58\xd1\xcc\xdf\x6e\x85\xc0\xbc\x53\x35\x50\x3e\xc5\x46\xdc\x3c\x78\x94\x26\x89\x2c\x52\x87\xf7\xe5\xba\x0a\xa4\x11\xdb\x3a\x63\x4e\x3e\x82\xc6\x5c\xef\xde\x20\xed\xbd\xb2\x14\xe0\x28\x52\x8d\xa0\x1d\xd4\xc2\xa9\xb2\xd8\x2d\x3c\x62\x78\x21\x62\x3a\xa8\xb8\x60\x46\xfd\x3f\x6b\xf0\xc4\x0c\x00\x68\x57\x0d\x0c\x05\xfc\x61\x28\x16\x81\xb5\x31\x31\x69\xc9\xe7\x49\x4a\x3e\x71\x4a\x72\x8c\x51\x1d\x91\x8e\x7c\xae\x64\xe4\x88\x54\x64\xb2\x94\x38\xe0\xd9\xe9\x13\x91\x63\xd2\x90\x71\xa8\x22\x12\x95\x84\xdc\x4a\x2f\x46\x51\x0f\xa4\x20\x77\x93\x8b\xb1\x06\xc0\x40\x02\xf2\x81\xd4\x62\x9c\x51\x37\x9c\x7e\xdc\x4d\x2c\x46\xd1\x8c\x4a\x3e\x8e\x48\xb5\x1b\x53\xd4\x10\x95\xa9\x84\xd6\xef\x90\x79\xaf\xf1\x59\xaf\xd8\x9c\xd6\x18\xf9\x82\xc5\xdd\xc6\x65\xb3\x62\x6d\xfb\x88\x5c\x56\x5c\x89\x60\x32\x36\x93\x35\x8a\x6d\x22\xb3\x58\xcf\x94\xc3\x7a\x6c\x06\x6b\xc4\xa1\x3a\x57\xf6\xea\x71\xb9\xab\xf1\x99\xab\x71\x79\xab\x27\xcc\x5a\x1d\x91\xff\x19\x99\xb1\x7a\xca\x7c\xd5\xe8\xd1\xc6\xe5\xaa\x46\x64\xaa\xc6\xe4\xa9\x46\x66\xa9\xc6\xe4\xa8\x62\x33\x54\x4f\x9f\x9f\x1a\xb5\x15\xd8\xbc\x02\x74\x56\x41\x7c\x4e\x41\x74\x46\xc1\x79\x72\x52\x4f\x9f\x4d\x70\xd2\x5c\x82\xa3\x33\x09\xf0\xb9\xa8\x67\xc9\x44\x1d\x9f\x87\x7a\x16\x3f\x1e\x22\x57\x02\xef\x9d\xc3\xe6\x74\x9d\x27\xa3\xeb\x5c\xf9\x5c\xc7\x65\x73\x9d\x5d\xa3\x3c\x55\x1e\xd7\x11\x59\x5c\xff\x62\x92\xf6\x54\x99\x5b\xbf\x6d\x49\xfb\x35\x64\x10\xea\x67\x79\xc1\xee\xf5\x70\x9b\xc5\x8e\xdf\xd4\xbe\xd0\xe3\x35\x75\xc9\xed\x11\x6e\xd3\xda\x0d\x4a\xd2\xd2\x37\x73\xbe\xbe\xbb\xad\xec\x55\xd9\x74\x67\x5a\xf7\xf1\x20\x4d\x07\x01\xaf\x52\x83\xaf\x5c\x5a\x70\xa3\x9c\x66\x59\xb0\x4b\x33\x73\xb6\x81\x59\x5d\x56\x3d\xb0\x07\x09\x3b\x54\x30\xbc\xc0\x74\x62\xdd\x43\xde\xcb\xeb\x4a\xcd\xf9\x25\x59\x46\x94\x08\x48\x0a\xaa\xd6\x16\xb7\xca\x3e\x73\xed\x90\xe2\x05\xa3\x4a\x0a\x9b\x80\xdd\x80\xdf\x72\x45\x72\xaa\x54\xc0\x8d\xe3\xa4\x96\x1b\x9c\x25\xe8\xea\x6e\x36\x89\xad\x0a\x9a\x30\x97\x70\x4f\x12\x59\x0a\x9d\xca\xa7\x61\xf3\x18\x8a\x79\x2a\xbf\xcf\xb6\x89\x9e\x65\x08\x23\xff\x19\xf8\xc9\x7c\x25\xd4\x39\xf9\xc4\x56\xb4\x48\xb3\x90\x0c\x70\x52\x43\x96\x3a\x91\xb5\x10\x71\xa3\xef\xba\xce\x21\x58\x04\x6c\x00\xe1\xc3\xe1\x75\xf0\xcc\xd5\x8c\x10\x07\x16\x62\x58\x1a\x74\xfd\xeb\x48\x1f\x7a\x80\xb1\x7c\x95\x58\x00\x39\xf8\xf7\x7a\x77\x0a\xf2\x67\x68\xb2\x0e\xc5\xaa\xe2\x5b\x9a\x4f\x0e\xf9\xc9\x21\x3f\x39\xe4\x27\x87\xfc\xe4\x90\x3f\xf4\x4c\x0e\xf9\xc9\x21\xdf\x7a\x26\x87\x7c\xdf\x33\x39\xe4\xfb\x9f\xc9\x21\x3f\x39\xe4\xff\xe5\xdc\x44\x93\x43\x7e\x72\xc8\xfb\x67\x72\xc8\x4f\x0e\xf9\xc9\x21\x1f\x7c\x63\x72\xc8\x0f\x3d\xbf\x4d\x87\x7c\xf0\x27\xad\xf6\x4d\x28\x68\xf7\xc5\x1d\x78\x0d\x79\xe2\x1c\xe0\xed\x5a\x0f\x8e\xdc\xbc\x86\xfc\xf7\x4e\x60\xaf\xf3\x94\x77\x73\x37\xfa\x54\x59\x3a\x85\xcc\x32\x63\x03\x6d\xe8\x6e\xb0\x53\x9c\xc7\xff\xbf\x6b\xf5\xa4\xe2\x4b\x22\x64\xa7\x3e\x2e\xf8\xbd\x6d\x3f\xaa\x74\x4e\x1e\xfa\x8d\x50\xbe\x12\xb2\x60\x9e\x32\x17\xab\x4b\x5b\xd4\xa9\xea\x17\xa7\xa5\x2b\x4a\xd1\xfe\xe8\x8b\xff\xf5\xbf\x5f\xf4\xb3\xdd\x3e\x58\xfd\xab\x14\x8a\xc3\x48\xeb\x90\x33\x75\x94\x23\x35\x94\x3c\x71\x2a\x27\x2a\xf6\x3a\x42\x3a\x4f\xcf\xe1\x38\x8d\x74\x9a\xa2\x34\x2f\xb4\xc3\xb4\xe9\x0c\x0d\x52\x45\x38\x4b\x3b\x8e\x50\x84\xb2\x81\x75\x94\x36\x9c\xa0\x41\xaa\x18\x27\x69\xdb\x01\x1a\x5e\xd1\xb0\x83\xb4\xeb\xfc\x0c\x4f\x7e\xd8\x39\x8a\x77\x7c\x22\xfd\x33\x11\x5a\x00\xce\xe4\x45\x5d\x53\x31\x8d\x8e\xa2\x5b\x1c\x21\xaa\x7b\x46\x36\x37\xc2\xe5\xb5\x8e\x69\x6b\x84\xad\xc5\x89\x53\xef\x10\xbe\xe3\xf3\xf8\x8d\xb1\x22\x15\xa3\xdd\x47\xfb\x8a\x51\xd2\x0f\xef\x27\x6e\xfa\x67\x31\x82\x1a\xe3\x23\x46\x9f\xb2\x08\xdf\x70\xbc\x5f\x18\xf6\x3b\x2c\x81\xc6\xf9\x84\x91\xf2\xe6\x1c\xbe\xe0\xf1\x7e\xe0\x38\x1f\x30\xde\xff\x7b\x22\xdf\x6f\xa4\x89\x16\xe1\xf3\x3d\x95\xbf\xf7\x6c\x7d\x3a\x50\x6b\x84\xf5\xef\xc6\x54\x9e\x46\xfa\x75\x31\x3e\xdd\xd3\xfa\x73\xd1\x4b\x8d\xf1\x2e\xa0\x3c\x0b\x71\x5e\x85\x28\x8f\x42\xb4\xdf\x96\xc8\x70\x00\x0f\xef\x49\x68\x7a\x09\x82\x64\x8f\xf2\x22\x1c\xe5\x41\xc0\xf9\x69\x63\x7d\xb4\xd6\xff\x1a\x9c\x76\xac\x7f\x16\xb9\xfb\x18\x21\x10\xf4\x87\xa0\x0e\x74\x64\x6b\x9e\x11\x4d\x79\x82\xad\xc0\xa3\xda\xf1\x34\xac\xfd\xa0\x8e\xf0\xc5\x4a\xc6\x9f\x56\x41\x45\xb7\xdd\x89\x6f\xb8\xe3\xda\xe9\x0c\xae\xdc\x49\x5a\xed\x9c\x76\x45\x62\x1a\xeb\xc4\xb7\xd4\x19\x63\x0a\x05\x9a\xe9\xa0\x6d\x21\x5c\x1b\x9d\xf6\xe2\x0f\xd2\xfc\xb2\x1b\x83\x8a\xe4\x8c\x8a\xe2\x04\xaa\xa7\x9e\x3e\x82\x33\x3e\x7a\x73\x36\xbb\x0e\x11\xb1\xc1\x77\x9b\x8d\x8b\xd6\xfc\x86\xf5\x28\x44\x54\xe6\x5f\x50\x8f\xfa\x72\x1a\x07\xbe\x6d\xcd\xa8\x86\x35\xb6\x1d\xcd\xe0\x42\x45\xb4\xaa\x69\x37\xa2\xf9\x6d\x6a\x1c\xc1\x5d\x13\x32\x65\xf7\x2c\x03\x57\x7a\xdf\x1a\xd0\xd4\xbb\xa0\xef\x10\xe2\x10\x71\x78\x3b\x9b\xdf\x18\x82\xad\xf7\xac\xfc\x7f\xd9\xfd\xf7\x47\x66\x90\xcd\xab\x0b\x5f\x82\x17\x7b\xc9\xb5\x31\x31\x29\x4c\x70\x4e\xee\x0f\x50\xb4\xa5\x1e\xfb\xef\x22\xf3\xe6\xc5\x85\x22\x19\x5d\xb0\x4c\x75\x3f\xb0\x60\x60\x9d\xa4\x65\x66\x9b\x96\x80\xff\xdb\x7e\x6c\xb0\x7c\x4f\x54\xa6\x00\x14\xdd\x82\xdc\x84\x2b\xaa\x14\x5f\x89\x99\x61\x2b\xf3\x95\xab\x3e\x0e\x0a\xee\x78\x5e\x70\x59\xf0\xfe\xa2\xe8\x7b\x9e\x11\xff\x82\x3d\x38\x73\xf2\x13\x2d\xb8\x2c\x95\xaf\x58\x95\xc8\x4d\x2e\x05\x14\xf2\x2f\x07\xba\x77\xe8\xba\xa0\x1c\x6c\x8f\x2b\x56\x5f\x11\xaf\x84\xb5\x2f\x3f\x7a\xe7\xfe\xa5\x97\xe2\x75\xba\xe1\xd0\x80\xa6\x11\x0d\x85\xc4\x18\x41\x17\x19\xb3\xc1\x97\xbc\xb0\x95\xb0\xcc\xd0\x0a\xdf\xaf\x84\x69\x3d\x74\xb1\xd4\x23\xb5\x50\x78\x5a\x7d\x27\xa9\xbf\xe3\x1b\x0f\xa8\xc6\xcf\xfb\x79\xd3\x7c\xd6\xcf\xe7\x4d\x46\x95\x32\x57\x81\x4b\x6d\xe2\x2b\xdf\x53\x08\xd6\xd7\x46\xb9\xea\xbf\xf6\x9b\x12\x8e\x5e\xdf\xc5\x81\x11\x23\x61\x11\x92\x77\x47\x8d\x62\x9b\xdb\x65\xa3\x6c\x1d\xe1\xae\xa5\x84\xf2\x3b\x7c\xa1\xea\xd1\x93\x17\x96\x8f\x80\xab\x67\x49\xc1\x35\x4f\x68\xd6\xdf\x0c\xdf\xe8\xce\xfe\x95\x24\x2b\x95\x66\x45\xfd\x16\x18\x94\xfa\x49\xda\xaf\xd3\x8c\x3c\xb2\xdd\x93\x2c\x52\x15\x28\x77\xe7\x47\x58\xaf\xbd\xd2\x7e\x88\x46\x89\x85\x0e\x0a\x36\x64\x5b\x6c\x58\x41\x16\x2c\x54\xfc\xb1\x43\x64\x37\x27\xd7\x62\xe7\x2a\xed\x8a\xa6\x1e\x90\xb2\x25\x77\x8d\x9e\xa0\xb6\xd9\x10\x67\xd2\x36\x13\xb9\x53\xee\x47\x47\xad\x16\x79\xa0\x70\xe0\x30\x1f\xc9\xb4\x3e\x85\x1e\x7d\xe0\x31\x03\xb2\x20\x36\xf0\x06\xa7\xb3\x60\x36\x9a\xe9\xff\xb9\x8f\xf5\x82\x57\x40\xc1\x68\xca\x4f\x08\xb0\x50\xac\x80\xca\xf3\x15\xdd\x01\x90\x41\x3b\xc5\x0d\x90\x16\x1b\xb9\xf5\xd5\x94\x3d\x25\x26\xd2\x5c\x72\x23\x39\x9a\xf0\x8b\xc1\x78\xde\xc1\x72\x7b\x87\x90\x1a\xd5\xea\x7e\x6a\x2d\x43\x3f\x77\x02\x54\xc3\xcc\x6d\xd7\x8f\xd5\xe8\xc1\x64\x0c\x48\xb9\x3d\xac\xc6\x27\xff\x85\x06\x58\x63\x42\x60\x34\x9f\x09\x81\x31\x21\x30\x26\x04\xc6\x84\xc0\x98\x10\x18\x7d\xbf\x9a\x10\x18\xfd\x23\x9c\x10\x18\x13\x02\x63\xef\x99\x10\x18\x13\x02\xe3\xd0\x4f\x27\x04\x06\x99\x10\x18\xfe\x99\x10\x18\x13\x02\x63\x42\x60\x4c\x08\x8c\xb3\xac\xc8\x84\xc0\x98\x10\x18\xed\x67\x42\x60\x4c\x08\x8c\x09\x81\xd1\x7d\x26\x04\xc6\x84\xc0\xe8\x2c\xf6\x29\x10\x18\xbe\x2a\x66\xef\x66\x75\xbd\xfb\x79\xa9\x19\xf9\xe4\xdf\xaa\x78\xcb\x77\xd0\x36\x97\x68\x42\x8b\x70\xd7\x58\x8c\x64\x85\xde\xef\x83\x6c\x14\x07\x0e\x21\x78\xe9\xd7\xe6\xcf\x77\x30\x90\x86\x8f\xc6\xb6\xcf\xfa\x0c\xfc\x44\x6d\x77\x60\x08\x09\xc2\xf2\x0c\x7e\xbf\x5a\x70\xeb\x67\x1a\x91\x66\xdc\x46\x66\xd8\x32\x95\x33\xf7\xe9\x59\x45\x7e\x56\xed\x40\x2f\x58\x83\x60\x8f\xb5\xf3\x9f\x3d\x87\x9d\xf8\xe4\x86\xd2\xdd\x0b\x77\xb6\xc7\xee\x85\x67\x63\x08\x5f\x57\xdf\xe0\x8a\xc8\x0d\xd7\xd0\xec\x56\xb6\x1a\x85\x0d\x17\xb4\xe0\xba\xe5\x9e\x75\xdc\x03\xa1\x5c\xaa\x6d\xf5\xd4\xaa\xcc\x1f\xb2\xc1\x5e\xdd\x2b\xd5\x56\xcf\xad\x14\x1f\xe0\x82\x99\x8f\xe3\x3b\x90\xcc\x09\xc5\xda\x97\xe6\xb6\xe0\x4f\x3c\xee\xa9\x18\x89\x07\xf1\x9a\x52\x05\x36\xe0\x2a\xa7\xda\x10\x35\x32\xac\xfa\x61\xbf\xc1\xe2\xbf\xdf\x03\x75\xe8\x27\xde\x4b\xd2\x47\xe4\x6b\xd2\x83\x8b\x33\x70\x64\x8c\x25\x04\x08\x0d\x29\x34\xfb\xdc\xab\xbd\xb5\xcf\xd4\x7d\xfb\x25\x62\xcc\x30\x45\xe0\x02\x63\x5b\x96\x55\x44\x09\xd5\xba\xe0\x8b\x52\x0f\xdc\xc1\xc6\xb4\x49\xe4\x66\xe3\xf0\x4a\x1e\x20\x01\x98\x27\x35\x27\xb5\xd6\xdb\xbc\xa3\x01\x00\x30\x27\xe4\x9e\x0d\xb7\x4b\x6c\x8e\x1b\x4e\xa4\x5f\x38\x60\x7b\x88\x35\x32\x9a\xac\x1d\x7c\xea\x98\xf8\xfe\x52\xfd\x50\xc8\x12\x5f\x32\xfb\xc5\x75\x05\xfa\x31\x26\x8a\x3b\x9a\x19\x59\x19\x2a\xf6\xd8\xd3\x3c\xcf\x78\x40\x7b\x31\x67\x3b\xcb\xea\x95\x53\x04\x5a\xb0\x03\x2c\xed\x5e\x6e\xaa\xce\xb7\x66\x31\xdc\x05\x12\x0c\xfe\xfc\xa3\x5c\xb0\x8c\xd9\x06\xdd\x6b\xd0\x59\xa1\x0e\xf3\x93\x21\xbf\xe6\xb9\xd5\x92\xa9\xae\x48\x83\x39\x6c\xfe\x79\x38\x56\xeb\xee\xfb\x5c\xa6\xdf\x91\xff\x4f\x18\x5d\xea\xc1\x92\x35\x06\xde\x0f\xb7\x6f\xab\x23\x60\x7e\xf5\xfd\x3d\x2c\x27\xf9\xc3\xb0\x96\x6b\x28\x28\xa6\x57\x3c\x25\x0b\x1b\x39\x57\x4c\x93\x97\x82\x3d\xd9\x90\xbc\xef\xbf\x48\x5a\x7d\x80\x07\x49\xfa\x51\xc0\x84\xcc\xa0\xdd\x50\x5e\x91\x3f\xda\x11\xe7\xac\xf0\x00\xbb\x85\x91\xd2\xb4\x60\xe4\xe3\xa7\x8b\xe1\xc9\x03\xe6\xa9\x78\x9a\x15\x4f\xb3\xd9\x6c\x66\xe6\x7f\xbb\x24\xa5\x80\x7e\xe5\x66\x60\x7e\xcd\xe1\xeb\x46\x44\x6c\x64\xca\x97\x81\x3a\xd6\xad\x5d\x31\xe7\xa8\x1e\x1a\xb0\x36\x15\x3b\x37\xe3\x79\x3f\x40\xad\xa5\x3e\x7e\xfb\xa7\xa3\xbd\x00\x45\x29\xae\x23\xcf\x82\x59\x55\xc3\x00\x5a\x02\xe8\xc1\xcc\x8b\x09\x5d\xec\x00\xd1\xb4\x57\x4b\x7b\xd8\x02\x2d\x64\x02\x95\x6b\x7e\x54\xe6\x92\xb6\x4d\x65\xab\x53\xcf\xdd\x9a\xcf\xc9\x7b\xba\x23\x34\x53\x16\x17\x3b\x00\x3b\x22\xb6\x7f\x69\x47\xe0\xcd\x09\x5c\x11\x36\x5e\xb8\x90\x7a\xdd\xfd\x41\xb0\x9f\xfd\x1d\xf8\xf4\x9a\xaf\x5c\x36\x20\x4e\xd5\xfd\x70\xe0\xdb\xc3\x2c\x41\x1f\x99\x22\x79\xc1\x12\x96\x32\x91\x30\xe7\xd5\xa2\x3a\xac\x5e\x93\xf3\x70\xc2\x07\x29\x3e\x49\x89\x77\x09\xdd\x36\xc0\x97\xae\xeb\x6c\x7d\x2d\x80\x29\x6c\x58\x84\xaa\x80\x4b\x48\x48\x31\x03\xc8\x4e\xa9\xdc\xbd\x6b\x1b\xce\xef\x9d\xb5\x2d\xcd\x78\xea\xa0\x94\xc3\x5c\xb0\xa1\x2b\x46\xa8\xae\x98\xca\x5c\x43\x42\x95\x50\xf0\xde\x28\x69\x9a\xa4\x92\xd5\xd0\x1d\xaa\xc8\x8f\xb7\x6f\x07\x49\x7e\x43\x5e\x42\x4b\x6c\x38\xbb\x4b\xca\x33\x88\x42\x43\xe7\xd6\x4e\x63\xd8\xa5\x27\x6f\xa6\x32\x48\x13\xf8\x9b\xc8\xc2\x76\xb6\xbf\x24\x42\xda\xde\x07\x6e\x9e\x46\x6a\x79\x09\xe7\x5c\xc1\xc1\x82\xf1\xed\xa3\x32\xe6\x38\x0c\xfb\xda\x44\xfa\xa5\x8e\xc3\xd0\x44\x71\x0d\xfe\x81\xa7\x7f\x54\x6c\xb0\x6f\xf6\x9e\x70\xfb\xf1\xc4\xc2\xad\xa9\x0a\x19\x06\x6f\xaf\x90\xe5\xd4\x0d\xd3\x34\xa5\x7a\xf8\x98\x58\x81\x58\xa3\x04\x91\x7b\x3d\x1c\xc1\x19\x16\x8b\x7d\x7b\x3d\x48\x33\xcc\x07\x07\x45\x5f\xe0\xfa\xfc\x3a\x62\x51\xb1\x77\x5c\x94\x9f\xad\x62\x8b\x77\x79\x19\x3e\xba\xbf\x81\x57\x6d\xd3\x91\xcf\xda\xa9\x5e\x56\x4f\x4c\xf7\x75\xc1\xe1\x73\x7d\xdb\xda\xfb\x6e\x43\x0d\x2f\xe5\x40\x58\x18\xbd\x11\xf0\xe6\xc3\xdc\x54\x50\x91\xca\xcd\xde\x28\xcd\x1d\x04\x5a\x76\xc3\x43\xda\xe4\x34\x0c\x37\xfd\x5a\x25\x4e\xe4\x05\x8c\x8d\x1e\x80\x99\x15\x15\x3e\x78\x07\x86\x19\x57\xd5\xee\x58\x4b\x0d\x92\x85\xf0\xe6\x06\xa9\x63\x07\xa8\xf9\x90\x98\xe8\x41\x21\xfb\xfb\xd2\x1f\x9c\xd3\x27\x99\x31\x9b\x81\xe5\x27\x65\x48\x3c\xab\x39\xc1\x0f\x63\xe6\xf4\x60\xac\xd6\xd6\x9c\xc0\x8e\x7d\x4e\x73\x2a\x03\xd7\xdf\xde\x9c\xcc\x7d\xd9\x9e\x13\x5c\x5a\xcf\x67\x4e\x28\x9f\x66\xd3\x4c\x07\xfb\x06\x2f\xbb\xaf\x49\xc6\x15\x5c\xf6\x60\xde\xab\xa6\xc8\x06\x5c\x3f\x2f\x20\xf7\x46\x06\xeb\xb0\x5a\x50\x78\x47\x9c\x5e\x82\xd1\xef\xdc\xa9\x7b\x6b\x14\xe8\xa8\x92\x17\x7c\x43\x8b\x9d\x31\xc0\xe6\xfb\x97\x82\x90\x7e\xc8\x5e\x6b\xa4\x69\x1a\xee\x33\x65\x2c\x4f\xd4\x26\x21\x30\x90\xd8\xdb\x17\x7b\xff\xe2\x10\x6b\x6a\xa7\x12\x9d\xe1\xb7\xf8\xde\xfe\x1e\x5c\x61\x84\x56\xfb\x2d\xe8\x86\xa9\x9c\x26\x2c\xf5\x14\x01\x75\x19\x9a\x70\x9d\x5b\x78\x27\x53\x97\xcf\x55\x8a\x3a\x96\xed\x69\xbd\x74\x4e\x15\x9c\xfe\xe8\xee\xf4\x57\x64\xc3\x57\x6b\x5d\x59\x1c\x19\x2d\x45\xb2\x3e\x72\x97\x0e\x2c\x86\xcb\x15\x33\xe7\xfe\x91\x15\x82\x65\x24\xa7\x05\xdd\x30\x00\x05\xa1\x2c\x6f\x3c\xd8\x14\x07\x34\x3d\x80\xa1\x5b\x12\xea\x3f\xb3\x73\x20\xe0\xb0\x14\xc2\x47\x9b\x91\x00\xd3\xd6\xc0\x7e\x02\x15\xe4\xbc\x23\xc3\x01\x4b\x11\xa0\x52\x0c\xa0\x34\xaa\x12\xf2\xf0\xb1\x7c\xe2\x22\x95\x4f\x6a\x8c\xf2\xfc\xb3\x7d\xd5\xeb\x76\x49\xe5\x64\xee\x28\xd0\x83\x53\x69\x28\xd7\x07\x15\x68\x69\x07\xe6\x3b\xcb\x51\xb4\x18\xee\x9a\x33\x5e\xdc\x1a\x69\x31\xff\x95\x28\xbb\xa7\xd0\x6c\x57\x1b\x45\xdf\x14\x86\x9e\xe6\x34\xbb\xcf\x23\x9b\xc0\xfd\xf0\xfe\xfe\xba\xfd\xba\x51\x3c\x9e\x20\x17\xd4\xcc\xd8\xfc\x7b\x9d\x21\x1d\x3c\x4f\x4f\x6c\xb1\x96\xf2\x91\xbc\xf4\x81\xaf\x15\xd7\xeb\x72\x31\x4f\xe4\xa6\x11\x03\x9b\x29\xbe\x52\x57\x8e\x35\x67\x66\x06\xe1\xe4\x2a\x2e\x32\x90\x8d\x5e\x7a\x43\xd6\xb7\xf3\x06\xc0\x20\x93\x6a\x16\xb0\x41\x70\x12\x11\xbd\xeb\x76\x15\x85\xf6\x32\x80\xb4\xab\xb2\xc4\xab\xdc\x76\x44\xfb\x2e\x9a\xe5\x6b\xea\x02\x3b\x2e\x67\x0d\xf2\x12\xd7\x52\x48\x17\xc7\xb7\x70\x6c\xe7\xb2\xb3\xf9\xec\x61\x51\x55\x1f\x49\x98\xef\x92\x51\x5d\x16\x8c\x2c\x33\xba\x3a\x99\xaa\xba\xcf\x4d\x43\x31\x40\xff\x04\x38\x0a\x96\xd2\xa5\x2b\x36\x60\x43\xc1\x19\x1f\xdc\x56\xeb\xc1\xe9\xec\x49\x73\xcd\xc3\xfb\x83\xde\x93\xee\x9a\x07\x49\x9f\x65\x4f\x2a\x17\x5a\xf4\x56\x80\x2b\xcd\xbd\x68\x64\x95\x97\xe8\x07\x5d\x6b\xc1\xc9\xed\xf5\xe8\x3c\xe8\x5e\x33\x3f\x69\xbb\xd8\x10\x47\xbb\xe3\x82\x0b\xb9\xd9\x30\x14\xf7\x45\xf8\x51\xb7\x02\x39\xef\xcd\x40\x0e\xdd\x0e\xfd\x3c\x6e\x79\x18\xb1\x0e\xd1\x6c\xfe\xa9\xc9\x6c\x5f\x83\xdf\x4f\x02\x60\xb0\x49\xfe\xd7\x09\x74\xe3\x45\xa3\x18\x2e\xee\xf7\xde\x3b\x20\xb6\x48\xfb\x57\xfd\xe1\x74\x9b\x1f\x51\x9d\x35\xae\xac\x81\x82\xc3\x22\x69\xaa\x1e\x6b\x68\x08\x83\xba\x30\x35\x02\xa4\xfe\xbb\x9b\xea\x8c\xda\xd1\x04\xca\xc6\x0c\xac\xbe\x96\x19\xb3\x10\x14\x1c\x50\xed\x20\xe4\xe3\x42\x35\xe9\xf4\x71\x44\xc0\x3a\xda\x2f\x50\x23\x53\xbb\x7e\x0f\x15\x6d\x38\x0f\x5a\x43\xfb\x5e\x90\x3a\xf6\x5f\x06\x3d\x22\xc6\xc6\x36\xeb\xa7\x2d\xef\x43\x79\x20\xa7\x50\xe8\x82\xe7\x19\x23\x7f\x7d\x64\xbb\x4b\x5b\xa5\x85\x2d\x97\x2c\xd1\x7f\x23\xa5\x0a\xb0\x2b\xc0\xd4\x74\xb2\xe6\x62\x45\x8c\xc6\x46\xb5\x2c\xc8\x5f\xfd\xff\xfa\x5b\xff\xa9\xc0\x29\x78\x76\x1c\x11\xa6\xe4\x0d\xbc\xd0\xa9\xc9\x62\xa7\x6d\x69\x99\xe5\x82\x11\x87\x0e\xec\x0d\x14\x8d\xd8\x30\x2a\x94\xaf\xa5\x94\x65\x2d\x52\xca\x95\xf2\x41\x22\xac\x88\x07\xe4\x79\x34\x09\x2d\x18\xf9\x20\xef\x1d\x26\xe7\x92\xdc\x15\x6c\xc9\x8a\xfa\x2f\xc1\xa8\x30\x21\x1f\xe4\x8d\x2d\x78\x30\x3c\x1b\xa4\xf0\x79\x64\xbd\x65\x93\xec\xd3\x5a\xea\x7f\xb0\x9d\x97\x0f\x76\x55\x1e\xd9\xae\x8e\xc2\xd6\x07\x21\xb4\x28\xd6\x97\x47\xb4\x9c\x0f\xae\xf9\x23\xdb\x59\x23\x2a\xac\x3b\x3d\xda\x91\x01\xea\xe7\xb2\x66\x4b\x8f\x8c\xbe\xf9\xcc\x95\x56\xff\x6e\x0f\x55\x22\x37\x0b\xd7\x20\x3b\x40\xd5\x0e\xcb\xb3\x0f\x8c\xcc\x6f\xa4\x48\xe1\x3f\x61\x88\xa7\xd8\x08\x3f\xe4\x88\xdd\xf8\xe8\x67\x59\xb0\xbc\x60\x0a\xec\x03\x6a\x46\x74\xa1\x48\xc1\x32\x2b\x92\xd6\x3c\x0f\x5d\x53\xb2\xbe\xcf\xe7\xe4\x27\x9a\xf1\xb4\x1a\x8d\xe5\x58\xbb\x7a\x30\xe7\x9b\x7f\x96\x34\x0b\x9d\xa3\xa6\x76\x64\x5f\xf0\x24\xcc\x16\xfd\xb3\xe4\x5b\x9a\x31\x9b\x25\xfe\xc4\xb3\x34\xa1\x45\x88\xe9\x97\xb2\xf0\xc5\xa4\x94\xab\x0b\x01\x10\x26\x92\x50\x51\x89\xc2\x9a\x73\x8c\x9d\x14\xe2\x41\x92\xd3\x42\xf3\xa4\xcc\x68\x41\x8c\xdc\x58\xc9\x22\x50\xff\x01\x7b\x9f\x57\xc7\x00\x81\x59\xef\x0a\xff\xee\xbb\xcd\xbd\xd5\xeb\xaa\x95\x7b\x70\x7a\x16\x7f\xd0\x3a\x94\xe4\x65\xbb\xf8\x9c\x5c\x7a\xf9\x58\x89\x94\x90\x34\x6b\x20\x46\x5b\x8a\x9a\xad\xd4\x93\xbe\xaa\x6f\xa5\x5a\x46\x84\x98\xe5\xef\x3b\x0f\xbe\x69\x96\x36\x01\xd8\x93\x1b\xaf\x3b\x84\x6e\x93\xc3\xb2\xc0\x0a\x8f\xa5\x2c\xd8\x96\x15\xe4\x65\x2a\x81\x22\xdb\xf2\x44\xbf\x9a\x93\xff\x97\x15\xd2\x56\x00\x61\x2b\x0a\x19\x5e\xf6\x48\x07\x88\x56\xd0\xb3\xba\xe5\xf5\x37\xe4\x25\x10\x25\x7c\xb3\x61\x29\xa7\x9a\x65\xbb\x57\x15\x68\x1d\x51\xeb\xe5\xf4\x7e\x6b\x84\x33\xf1\x80\x23\xb1\x25\xd2\x5d\x09\xa5\x36\xeb\x38\xd5\x21\x28\x49\xbc\xb4\xae\x25\x30\x57\xee\xec\xb7\xac\x06\x5f\x9b\xc8\x09\x6c\x34\xdb\xfd\x97\xe1\x5d\x4a\x0a\xb6\x82\x73\x6b\xcf\xe2\x09\x4e\x2d\x5a\x07\xef\xf3\x3d\x0e\x10\xe8\xfd\xa7\x82\xe5\x19\x4f\xa8\xd3\xae\x1f\xd8\x26\xcf\xa8\xde\xdb\xbd\x76\x3c\xf3\xe0\x2b\xa0\x1b\x0a\xe7\x59\xa4\x10\xdf\xaf\xf1\xd5\x07\x51\x0e\xbe\x28\x18\xd4\x77\xb0\x05\x7a\xa4\x32\x7a\xa7\xd2\xab\x02\xb0\xeb\xf0\x9d\xee\x86\x0f\x69\x70\xde\x94\x3d\xc4\x7d\x1d\xa3\x43\x53\x91\xd2\x22\x75\x6b\x72\x71\xa1\xaa\x97\x0f\x1a\x0b\x2b\xae\xe7\x8f\x7f\x01\x4b\x21\x91\x9b\x4d\x29\xb8\xde\x5d\x41\xe5\x42\xbe\x28\xcd\x25\x75\x95\x1a\x13\xf1\x8a\xe6\xdc\x58\x0c\x5b\x26\xac\x32\xbe\x49\x7f\xe7\xe9\x1e\x32\x12\x42\xea\x28\x54\x3e\x1b\xb6\x0f\xce\x5c\x47\xf4\xba\x1e\x81\xdb\xe2\xd2\x15\x6a\x2a\x8d\x6d\x6b\x74\x1e\x7b\x9e\x36\x34\x27\x4a\x1b\x11\x3c\xe0\x16\xd7\x6b\x38\x39\x16\x5d\xef\x2d\x82\x9d\xc7\xf1\x2c\x76\x84\x7d\xd6\xac\x30\xfc\xa3\xa5\xcc\x6c\xbd\x13\x3d\x54\xf8\xd3\x08\xd1\x82\xe9\x82\xb3\x2d\x23\xb4\x58\x70\x5d\xd0\x62\xd7\xd8\xcb\x87\x35\xdb\x81\x02\x61\xe4\xef\x3f\x4b\x56\xec\xc0\xf8\x1e\xd2\x71\x6b\xc9\x00\xd7\x5e\xb1\x65\x29\x79\x32\x1a\xb7\x45\xbb\x82\xcd\x01\x5c\xa3\xf6\x58\xe5\xb0\x59\x59\x2a\x56\xcc\x56\x25\x4f\xd9\x55\x63\x43\x47\xd6\x1a\x1d\xfc\x67\xd5\xe3\x89\xee\x30\xbf\x8b\x2d\xd8\xb3\xe9\x0c\xec\x94\x29\x9b\xf0\xc4\xd6\x74\xcb\x65\x55\xae\xc1\x1d\xd3\xc3\x02\xee\xb4\x27\xc5\x8c\x7e\x46\x45\x3a\xb3\x35\xb6\xc6\x1c\x18\x57\xbc\xf2\xf6\x0e\xe7\x7b\xa8\x7e\xee\xef\x9f\xdb\x3b\x73\xa0\x0a\x48\xa8\x6c\xcd\x7f\x90\x63\xb8\x22\xa5\x2a\x69\x96\xed\x88\xad\x28\xcb\x52\x07\x33\xca\x76\xfe\x32\xde\x50\xf3\x25\xb8\x9c\xa8\xf0\x1f\x19\xa2\x58\xbb\xb5\x36\x54\x38\xe2\xd6\x89\x6a\x58\x99\x0b\x70\x74\x2c\x5c\xf9\x4b\x05\x8a\x8b\x51\x10\x7a\x49\x2e\x58\x85\x90\xaa\x42\xfa\x6e\x72\xff\x5e\x5f\x6f\x97\xae\x60\x66\xcd\x18\xee\x37\x03\xa7\x3a\xcb\x20\x4a\xdb\x72\x9d\x19\xa5\xd8\x55\x6d\xb4\xf0\xfc\x94\xe8\x75\x21\xcb\xd5\xda\x55\x71\x1c\x30\x59\xac\xfe\xdf\x30\x57\x5f\x7c\x90\x82\xbd\xb8\x74\x15\x15\xad\xf4\x22\x2f\x5f\xbc\x78\x75\xf9\x7f\xd8\xbb\xa2\x1e\xb7\x71\x23\xfc\xde\x5f\x41\xf8\x80\xcb\x05\xb0\xf7\x12\xb4\x28\x0e\x45\x53\x60\x2f\xc9\xb5\xc6\xa5\xa9\x91\xcd\x5d\x1f\x0b\x5a\xa2\x6d\x62\x25\x51\x15\xa9\xdd\x2c\x8a\xfe\xf7\x82\x33\x43\x8a\x92\x45\x4a\xde\x64\x9b\x7b\x90\x5e\x82\xac\x29\x6a\x48\x0e\x67\x86\x33\x1f\x67\x18\xdc\x5f\x02\xd8\x28\xdb\xc6\x73\x20\xd1\x74\x5f\x51\x4f\x40\xdd\x3e\xf4\x1c\x5a\xe3\xfe\x24\x78\x5e\xd8\x95\xa7\x11\x43\x44\x26\x7e\x3c\xab\x1b\xf5\x09\x84\x81\xcb\x84\xe7\xef\x5a\xfd\xa3\xb2\x6b\xe5\x0f\x98\x74\xad\xe1\xb5\xe3\xb5\xb8\xa9\xf1\x5e\xe5\x62\xa7\x1a\xb3\x86\x95\x7e\xa7\x78\xfe\x23\x2f\x78\x95\x01\xdf\xa0\x7d\x0b\xd7\xad\x08\x7d\xf3\x96\x84\x25\xe4\xbd\x8d\x76\x7a\xe1\x35\x3c\x37\xf8\x4d\x25\x0c\x25\x25\x74\x7f\xfb\xfe\x9b\x3b\xd9\x98\x96\x17\x1b\x59\x6b\xdc\xa8\xe4\x08\xb3\x73\x21\xe3\xd7\x3f\x27\xb5\x8e\x13\xfb\xdb\xdd\x3c\x3f\x58\xd0\x1e\x21\x3b\x0e\xc9\xd0\xed\x5f\x4a\x96\x90\x4e\x51\x5b\xa9\x5c\x68\x9f\x2a\x11\x17\xc8\x81\x09\x35\x5e\xad\xae\x0d\x33\x0d\x3f\x1c\x64\x46\x90\x07\xe9\x19\xe4\x0a\xae\x76\x24\xd2\x33\x5b\xf2\x9c\xee\xc1\x2b\x66\xe0\x0d\xfe\xb9\x9b\x7e\xbc\x1c\xd2\x12\xf4\xa8\x11\xba\x56\x95\x96\xa9\xc8\x14\xe0\x14\x2b\xdd\x36\x98\x2c\x97\x77\xe4\xf1\xa6\x91\x77\x76\xc7\x18\xca\xd0\xed\x72\xd8\x4a\x0d\x29\xd2\x58\x3c\x94\x42\x57\x9b\xc4\x27\x5e\xd6\x88\x56\xf3\x8a\xb8\x50\x3c\xdf\xec\x89\x0d\xc9\x83\xed\xc6\x64\x8f\xaf\xd1\x3e\x49\x7c\x74\x83\x9d\x38\x8f\x4c\x38\x28\x67\x58\x2e\x53\xa1\x79\x37\xa6\x8f\x38\x61\x3b\x55\xc8\x6c\x5e\xc6\xee\xd1\x37\x59\x2e\x2a\x65\xc7\x05\x37\x20\xa5\x76\x3e\x6a\x52\xa5\x71\xe1\x6e\x14\x6b\x54\x6b\x44\x60\xed\xd0\x12\x1a\x05\x0b\xb7\xb1\x62\xba\xb0\xb2\xcd\x25\x63\xbe\x97\x79\x90\x3e\x37\xbe\xd9\x57\xef\x14\xa4\x6c\x76\x96\x0b\x85\x6e\x0b\x29\x2a\xc3\xc8\xec\xb2\x7b\xa4\xca\x19\xbf\x53\x32\xc7\xc4\xf0\xf6\x98\x1f\xed\xf2\xa4\x6a\x60\xba\x50\x1c\x41\x07\x56\x5a\x61\x12\x02\x2b\x8f\x9c\xdc\x58\xb3\x7d\x6b\x58\x23\xf5\x6d\x7c\x02\x6a\x65\x30\xba\x58\x3c\x30\x59\x12\x73\xe5\x7e\x16\x74\x8d\x29\x87\x8f\x57\x6c\x45\x52\x73\xc5\xd4\x5e\x67\x6d\x72\x56\x63\x03\xb5\x16\x66\xc6\x29\x31\x28\x8c\x15\xc6\x04\x00\x30\xd0\x7b\x49\xf1\x80\xe3\x21\x9b\xf0\xc4\xef\x04\x3b\x2a\x95\x33\x75\x27\x1a\x5e\xd0\xf6\xe8\x08\x7e\xac\x00\xc4\xe4\x9f\xaf\x4f\x22\xbb\x75\x4a\x60\x16\x63\x8e\xbc\x37\xcc\xfa\x08\x2d\x32\xdb\x02\xc6\xb3\x4b\xe5\x43\x70\xa0\x2e\x2f\xe0\xce\xaf\x82\xfe\x6d\xe4\x8b\x89\xf8\xbc\xbb\xda\xe6\x5c\x12\xce\x9a\xaa\x25\xdb\xf3\xec\x56\x54\x79\x97\x07\xbc\x33\x4f\x1c\xa1\x71\x46\xff\xa7\x15\xd2\x76\x4d\xc1\xb8\xee\x14\xb9\x7b\xd3\xa5\x43\x08\x02\x26\x44\x43\x9c\x54\x60\x1e\x52\xdf\xe4\x6b\x47\xc3\xdf\xc1\x5d\x35\xde\x37\x1c\xee\x84\x68\x8f\x6f\x47\xc5\x46\xd8\x51\x16\xf7\x64\x7e\x99\x54\xf3\x45\x40\xeb\x5c\xab\x78\x68\xbf\x38\xb9\xf6\x11\xbe\xd6\x1b\x7d\xf8\x9f\xb4\x85\x78\x14\xc6\x33\x83\x5f\xf1\xed\xae\x1f\xbd\xed\x57\x09\x48\xb0\x95\x8b\x81\xe6\xa2\x16\x55\x0e\x69\xf7\xee\x4f\xc2\xb8\xa4\xff\x6d\x95\x8b\xa6\x00\xeb\x2c\x2b\x54\x9b\x6f\x28\xa9\x77\xe3\x32\xed\xc4\x7b\x46\x7a\x1e\x28\x15\xfd\x60\xfe\x90\x1d\x38\xfc\x95\x39\xa5\x68\x17\x94\x46\x16\xe7\xd7\xc0\x34\x76\x6e\x3c\x19\x58\x74\x20\xbb\x7a\x84\xba\x6b\x5a\x71\x42\x71\x24\x08\xcd\xc5\xe9\x88\xde\x0d\x9e\x94\x3f\xe1\x30\x6f\x40\x7a\x7e\xb0\x46\xfb\x3c\x6b\xec\x59\x18\x96\xc4\x2c\x50\x1e\x03\xea\xee\xd3\x16\xdc\x58\x86\x5e\xc3\x12\xa7\x39\xa5\x11\x96\xd0\xac\x33\x6c\xdc\xc1\x61\x64\x96\x7a\xd6\x49\xba\x5b\x2a\xff\x6f\x7b\x0e\x0e\x40\x9e\x6c\x52\x1d\xdb\x9d\x0e\xcf\x31\x93\x5d\xce\x5b\xc4\x70\xb1\xa6\x78\xfa\x6a\x75\x51\xb4\x1a\xd3\xff\x6c\x60\xbb\xe2\x89\xde\x55\x70\x08\x02\xd6\x7d\xb2\x36\x07\xd9\x88\x7b\x5e\x14\xd1\xc0\xf5\xd3\xdb\x62\xb0\x09\xe7\x71\x97\xb5\x90\x9d\x7d\x0f\xaf\x75\x46\x28\xfa\x0c\x89\xcb\x02\xc3\xfc\xb7\x7c\x18\xba\x24\x10\x4f\x92\x17\x14\x1a\x01\x11\x34\x90\x6f\x55\x03\x9c\xd1\x2b\x37\xe6\x24\x72\xb3\x4e\xea\xd2\x79\x41\xf1\x69\xf0\xf2\x19\x86\xa0\x03\x70\x00\x0e\xa3\x31\x0e\x71\x3a\xe9\x58\xea\x1e\xd8\x8b\x3e\xbb\x14\x7b\xf3\xfe\xe6\x5f\xef\xae\x7f\x7c\xfb\xee\x8a\x5d\x17\x05\xf1\x83\xc7\xb1\xd2\x7c\xdd\xd4\x22\x9b\x0a\xab\xda\x1e\xc1\x9c\x6b\x2b\xf9\xef\x16\x69\x75\x5b\xbf\xe4\xb5\x87\x55\x3d\xb3\xa7\xeb\x67\x13\xd2\x00\x1f\x59\xb1\xb7\x64\xa2\xc3\x8a\x79\x2f\xa1\x4b\x0f\x61\xa5\x84\xaf\x96\x10\xac\xed\x54\xbf\xda\x17\x34\x51\xd5\x4c\x46\x67\xf3\x83\x85\xd5\x84\xc1\x89\xcf\xf9\x9e\x84\x05\x55\x74\xcd\x03\xce\x9b\xa0\x85\x31\xb5\x55\x47\xe3\xf4\xe0\xdc\x2e\x06\xe5\x6a\x89\x7e\xe5\x2d\xcb\xc1\xb9\xe3\x8a\xfd\x82\x7e\xb6\xa9\xc8\xaa\xf3\xc2\xf5\x23\x61\xc3\x12\x3a\x1d\x80\xd9\x9b\x9e\xf3\x02\xd5\xce\x8c\x05\xc8\x1c\x04\x30\xec\xa9\xbc\xd0\xe2\x62\xef\x19\x3e\x81\x0f\xcd\xe5\xb2\x94\xc0\x81\xbc\x35\x6a\xd3\x5d\x6c\xc4\x39\x97\x73\xd0\x08\x2e\x3e\x63\x4d\x57\x35\x38\xa0\x92\xab\xca\x9a\x4d\xf3\xb3\xea\xcc\xcb\xab\x93\x94\x98\x76\x6d\xa1\x24\x91\x1d\x46\x3a\x9f\xdf\xdc\x6c\x61\xf3\xe3\x92\xd3\x69\xff\x46\x30\x50\x0d\xe1\x96\x1c\x9f\x5c\xac\x70\x9e\x62\x2c\xd3\xd7\x22\x26\xd2\xde\x7d\x76\xa8\x91\x31\x2d\x00\x9b\x7e\x7d\x38\xc8\x0a\xe1\x96\x07\x79\x9c\xa5\xcf\x47\xdf\xec\xb4\x1b\xa1\x5d\xbb\xe0\x61\x5c\xaf\x41\x5e\x3d\xcc\x71\xc2\xa9\xb7\xcf\x49\xcb\x86\x16\x60\xfc\x90\x74\x36\x12\xf7\x42\x8a\x78\x4b\xe4\x6b\x68\x97\x5c\xf8\xed\x8e\xed\xb9\x65\xac\xb9\x03\x9a\x3b\x28\x76\x51\xfa\xc2\xb3\x21\xf6\x5f\x1d\xb8\x16\x5c\x52\xc3\x49\x24\x08\xa3\x29\xd8\xee\x9c\xaf\x08\x07\xa9\x8d\xcc\x6e\x1f\xe0\x23\x98\xb5\x86\x42\x89\xad\x9e\x46\xd9\xee\x05\xfb\xcb\x0b\xf6\xed\xb7\xec\xcf\xaf\x7e\xf8\xe3\x1f\x5e\xbc\xf8\xee\xa0\x1a\xf6\x92\xe5\xfc\xe1\xb9\x15\x90\x0e\x2f\x4a\xd3\xc8\x5e\xbd\x9a\xec\x71\xe5\x88\x5c\x75\x52\xb8\x4b\xaa\xf8\xe2\x07\xfa\xc6\xef\xd9\x49\xb5\x8d\x7e\x3e\x65\xb8\xcc\xdf\xf5\x97\xde\x09\xfc\x3c\x9c\x6e\xea\xb2\x6f\x5f\xc9\x53\x6e\x2a\x23\x9a\x12\x6e\x81\x9c\x30\x2d\x93\x57\x23\x9d\xea\x9e\x91\x3d\xd8\xa8\x2e\x02\xd2\x41\xbc\x70\x8f\x20\xc0\xab\x0b\x66\xac\x83\x60\x49\x17\x14\x49\x06\x81\xfb\x56\xc2\x2a\xec\x6d\xd5\xb3\xe7\xba\x13\x9f\x98\x15\x3e\x59\x79\x52\x56\xde\x4a\x80\x62\x16\xe4\x99\xb5\x8b\x06\x3e\xdc\x20\x74\x08\x59\x91\xbb\x93\x69\x12\xf5\xa1\x02\xb7\xae\x37\x1f\x71\x4a\xfc\xd4\x07\xee\x33\xaa\xb8\x99\xc8\x1a\x11\xe4\xe3\x1b\xb8\xee\xf6\x0f\x14\x4a\x84\xb4\xd0\xae\xda\x12\xe6\x60\xea\x3e\x1d\x17\xb7\xc0\x53\x60\x44\xf5\xe2\xa6\x2e\x3a\x57\x29\x46\x47\x22\x86\x3f\x4c\x1b\x55\x9c\x0a\x56\x8a\xde\xb8\xeb\x76\x5f\x48\x7d\x42\x84\x13\x07\x67\x99\x3a\x04\x6d\x1a\x9e\xf4\xda\x9a\x13\xb7\x67\x01\x6d\x20\xd2\x6f\xb9\x6d\xe5\x78\x68\xc5\xf6\xad\x2c\xd0\x5f\xe4\xd7\xd5\x01\x29\x71\x69\xe3\xb4\x76\x06\xef\x9d\x68\x1e\x28\xc2\x02\xe6\x2e\x78\xf3\x3d\x87\x65\x1d\x9b\xaf\x42\xb6\x8c\x67\xb7\xea\x88\xf2\x86\x2f\x24\x9c\x03\xa7\x12\x80\x2e\xc6\xc3\x31\xec\x3b\x19\x17\xbd\x9d\x0f\xc6\xc5\xb7\xda\xa6\x11\x95\x41\x1f\xc5\xf3\x09\xd2\xff\x2f\x27\x68\x5a\x68\x59\x1d\x37\xbe\xdd\xc6\x9f\xa3\x21\x6c\xfa\x48\x8f\xd6\x67\x60\xa1\xce\x14\xe4\x68\x2e\xe6\x03\x94\x08\xb2\xab\x00\x93\x97\x8b\xba\x50\x0f\x94\x4e\x73\xe7\x20\x4c\x39\x37\xdc\xaa\xf5\xe1\x6c\xa6\x54\x43\x5c\x15\xe8\x0b\x40\x5a\x97\xa2\xb3\xa2\xe7\x94\x01\x3a\xcb\x8d\x68\xd0\x6e\x01\x65\x0d\x9a\x2c\xa0\xac\x05\x94\xe5\x49\x5f\x40\x59\x0b\x28\x2b\xf2\x2c\xa0\xac\x05\x94\xb5\x80\xb2\xfa\xcf\x02\xca\xc2\x67\x01\x65\x9d\x3d\x0b\x28\x8b\x9e\x05\x94\xb5\x80\xb2\x16\x50\xd6\x02\xca\x5a\x40\x59\x0b\x28\xcb\x3f\x0b\x28\x6b\x01\x65\x2d\xa0\xac\x05\x94\x15\x27\x7d\x01\x65\x2d\xa0\xac\x05\x94\xb5\x80\xb2\x16\x50\xd6\x02\xca\x5a\x40\x59\x0b\x28\x6b\x01\x65\x25\x9e\x05\x94\xb5\x80\xb2\x16\x50\xd6\x02\xca\x5a\x40\x59\x5f\x11\x94\xa5\x0d\xaf\xf2\xfd\xc3\xdf\x55\x3e\x01\x78\xc2\x76\xac\x54\xf9\xd0\x08\x8f\x52\xa5\x8d\x6a\xf8\x71\xaa\x5f\x68\x03\xa0\x17\x74\x42\x82\xc4\xa5\x57\x99\x3e\xf1\x20\x03\xfe\xa0\xa3\x94\x29\x80\x1e\x22\x3b\xac\x51\xdd\x3f\xc0\xfb\x74\x8d\xfb\x66\x8d\xc3\x87\x60\x6f\x30\x78\x1d\x3d\x86\x50\x25\xd4\x20\x6a\x72\x71\x8d\x6e\x1a\xf6\xf7\xb5\x68\xb4\xd4\x46\x54\x66\x83\xbd\xea\x6f\xc8\xe5\x05\x24\x6c\x5e\x8e\x71\x48\xc2\xc7\x32\x8b\x71\xc6\xed\xde\x9c\x1b\x8e\xce\xd1\xc9\x79\x0c\xdc\xbd\xfe\xb0\x65\x67\xf1\x57\x18\xc2\x4d\xc5\x6b\x7d\x52\xe6\x8d\xef\x10\x93\x3f\x8f\x12\xec\x5c\xdd\x47\x48\x07\x08\x29\xb2\x31\xad\x33\xba\x5a\x69\x57\x17\x0f\x83\xbe\x09\xd1\x32\xda\x25\xf8\x20\x3a\xf9\x00\x29\xb9\x31\x66\xe6\x33\xda\x81\xaf\xd0\x1a\x69\xa2\x01\xb4\x84\x73\x60\xf6\x3f\x32\xda\x7b\xd0\x5d\x77\xc6\x46\x59\xc6\x38\xab\xc4\xbd\x63\x0f\x4b\x3e\x34\x0e\xfd\xb3\x51\x04\x99\x4b\xdc\x49\xef\xa2\xe3\x5b\xf3\x52\x90\xfd\x38\x42\xf8\xd0\xfd\x3a\xda\xef\x60\xda\x7a\xd4\xd3\xc7\x7c\x11\xda\xbd\xf0\x31\x0c\x52\x5d\xe3\x4b\xc6\x65\x61\x97\xac\x1b\x17\xcd\x34\x47\x61\x7e\x07\x71\xa6\x2d\x8a\xe5\x43\x6b\x97\x77\xcd\xee\xc1\x4b\x5e\x31\xa3\xc6\x0f\x5c\xb4\x00\xa5\xdd\x46\x01\x91\xae\x92\x31\x69\xd2\x21\x7c\x2b\x98\x8e\xd1\x6e\x21\x38\x0a\x00\x9d\x31\x91\x3f\x89\x4f\xac\x65\xb2\xb2\x6d\xbf\xe8\xd3\x6e\x8b\x35\x8c\x09\x6b\x85\x95\x9d\x5d\xc8\xd1\xa3\x02\xf7\x42\x56\x47\x06\x99\x82\x45\x95\xa5\x62\x2a\xdb\x43\xaf\xcf\x91\x42\xe2\x9d\xb1\xf7\xb3\xac\x72\xef\x46\x94\x71\x54\x0f\x9e\xe0\x1a\x61\x7b\x46\x0a\xaf\xd8\x4f\xaa\x81\xe4\xd2\x8a\xe2\x4b\xb2\xc9\x37\x35\x87\x2a\x34\x76\xee\xd7\x9e\x8a\xb8\x4d\x16\xd4\xc7\x7f\x6c\x88\xe6\x56\x56\xd1\x13\x7f\x3f\x6d\xb1\x44\x98\x18\x24\xb5\x24\xf7\x4f\x74\x76\x1f\x4b\x4d\xca\x1b\x7c\x5e\x55\x68\x90\x65\xfd\x0b\x53\x93\xf2\x87\x6c\x60\xde\x46\x7f\x88\x94\xf2\x49\x1e\xa0\x7c\xb9\xfe\x69\x4d\xfa\xc1\x35\x1d\x26\xb5\x2d\x65\x25\xcb\xb6\xec\xfa\x0a\xe4\xda\xf8\xd6\x7f\x1a\x35\xea\xbf\xff\x18\xa0\x65\x21\x4b\x19\x0f\xe0\x3c\x31\x28\xf9\x1d\x7c\x9c\xfe\xb8\xa7\x09\x2c\xf9\x27\x98\x56\x5e\xaa\x16\x0b\xc9\x66\xaa\xac\x5b\x13\x77\x94\x76\x0b\x40\x79\xcb\x2f\x9e\xdd\x9e\xaf\xe7\x7b\x84\x78\x6d\xe8\xb3\x1b\xdf\x7d\x90\xd8\xff\x91\xa0\x5f\xe4\x71\xa1\xbf\xda\x8c\x7f\xa0\xcf\x0f\xe7\x9c\x58\xf9\x31\x73\xde\xe1\x25\xb7\x07\xe6\xfb\x97\x9a\xa9\x52\x1a\x43\x98\xcc\xa0\x5e\x54\xfc\xfc\x2f\x8d\xcb\xa9\x0c\x07\x19\xe2\x8e\xe0\x1c\x2c\x3e\xd5\x85\xcc\xa4\x35\x92\x02\x05\xe1\x31\xaf\xa9\xc3\x39\xaf\x98\x2c\x5d\x99\x43\x88\xae\xba\x50\x0c\x65\x10\xff\x8d\x72\x4c\x1a\x26\x4e\x6e\x84\x49\x21\x76\x4d\x35\x29\x01\x38\x0f\x98\x27\x92\x53\x30\xd1\x99\xaa\x34\x84\xb9\xed\x4a\xed\x65\x15\x43\x40\x4d\xc9\x12\x48\xb7\xfc\xf6\x93\x15\x92\x7a\x76\x7d\x8a\xe1\x4b\x7d\x1c\x28\x92\xed\xdd\x25\xc4\x6b\x76\x11\x13\xe0\xb9\x8f\x27\xd1\x6b\x09\xce\x88\xeb\xf7\x6f\xe2\x4a\xfb\x92\x58\xee\x75\x82\x28\x24\xde\xff\x62\xf9\x36\xe1\x05\xf4\xe7\x32\x84\x48\xaf\x31\x0d\x3e\x82\x86\xe1\xea\x0d\x25\xa3\x06\xf6\x87\xd4\xf8\x89\xa3\x1a\x3e\xb7\x02\xd1\xe5\xd8\xe3\xe7\x86\x8a\x2f\x2b\xb3\x70\xdb\x95\x59\xc0\x19\xea\x95\x59\xf0\x93\x32\xaf\x24\xaa\x51\x5f\xab\x3e\x81\xfa\x62\xf5\x09\xbc\xcb\x8b\x56\x63\xb4\x4a\xc1\xb6\x5a\xb3\xf7\xca\xd8\x7f\x30\xe3\xf8\x54\x48\xb4\xca\xd9\x1b\x25\xf4\x7b\x65\xa0\xfd\x17\x99\x26\x24\xf0\x82\x49\x22\x50\x3f\xde\x24\x82\x53\x36\x44\x71\x10\xd1\xef\x86\x3b\xab\x04\x46\x98\x72\x7d\x5b\x31\xd5\xb8\xd9\xf0\x79\xd7\x35\x7d\xc0\x59\xfd\x95\xaa\x36\x70\x83\x60\xca\x73\x1f\x4d\xea\x6e\xbf\x12\xce\x61\xf8\xb1\xa9\xe9\xef\x91\x82\x64\xa0\x97\x00\x7f\x91\x98\x85\x1c\x0a\xa3\xe6\x08\xee\x4e\xd7\x16\x67\x76\xd6\xb8\x11\x47\x99\xb1\x52\x34\x47\xc1\xea\xe9\xa2\x2f\x33\xea\x96\x5e\x5a\xcb\x79\xa2\x3e\xe5\x9c\x58\xe5\xad\x88\xbf\xbf\xf1\xcb\xf0\x94\xd1\x4c\x50\x26\xef\xac\xf0\xf9\x4a\x06\x56\x40\x00\xea\x82\x92\xd7\x76\x67\xfc\xc7\x57\x2c\xfa\x2f\xab\xb9\x6c\xf4\x15\xbb\x66\x5a\x56\xc7\xc4\x0d\x81\xf0\x1d\x72\xfd\x86\xdd\xdb\x9e\xcf\x0a\x93\xf0\x8a\x09\x34\x72\xe2\xee\xff\xc3\x99\xce\x5d\xb3\xfb\x93\xd2\x02\x04\xb6\xaf\x8e\xb1\xba\x15\x0f\xab\x75\x6f\x07\xa5\xce\xc5\xab\x6d\xb5\x5a\x7b\xf7\x45\x6f\xe3\x7a\x3d\x07\xfe\xaa\x15\xfc\xb6\xba\x3a\x53\xd3\x71\x8f\xfd\x94\xfa\xfe\x2c\x1b\x0a\x0f\x56\xaf\x0b\xae\x75\xac\x02\x59\xdf\x86\x7e\x1f\xd6\x18\x0b\xde\xf6\x7b\xc4\x45\x79\xb2\x82\xcb\x12\x2d\xcb\x51\xc2\xbf\xc8\xe9\x2f\xb3\x9f\x1e\xf7\x9e\x26\x99\x17\xdf\x1f\x73\x92\x9f\x8d\xb8\x6b\xea\x2b\x1f\xdf\x83\x5a\x27\xa7\x04\x79\xd7\x02\xe7\xc8\xe8\x70\xfb\xb3\xe2\x8b\x01\xff\x24\x0b\x81\xb8\x1e\xa8\xc9\x52\x62\xc9\x5a\xc0\x10\xe1\x05\xb9\xac\x68\x63\x95\xb9\x65\x85\xdd\xc1\x71\x80\xe4\x30\x6c\xbb\xbd\x30\xdc\x03\x31\x1f\x37\x35\xb3\x98\xe1\x57\xdf\xd4\x99\x3e\x64\x3f\x77\xce\x10\xe7\xf0\xdc\xf9\xb5\xfb\x35\xee\x22\xd8\xf3\xec\x16\x21\xcb\x52\xd3\x4c\x5d\x46\x7d\x22\x2a\x02\x2c\xf4\x71\x24\x6a\x3c\x16\xbd\x00\xbc\x11\x5d\xaf\xcb\xdb\x06\x42\x70\xdf\xd1\xe9\xec\x39\xa0\xa4\xea\x93\x28\x45\xc3\x87\x17\x15\x13\xa1\x93\x46\xf0\x52\x56\xc7\x19\x81\x19\x6a\x79\x51\x68\x06\x63\xac\x60\x9e\x8d\xdf\x08\xea\x3b\xf6\x87\xad\x41\x4a\x35\x70\x59\x19\xa2\x24\x85\x30\x4e\xf0\xb9\x0b\xef\x91\x9b\xec\x51\x8a\xf0\x82\xe4\x0d\xaa\xf7\x34\x39\xfd\xa6\x83\xaa\x70\x37\x86\x1b\x71\x68\x8b\x1b\x61\x7e\xe9\xb5\x3b\x63\x8d\x3e\xc6\xa9\xac\x0b\xf5\x80\x18\x69\xec\x1f\x8b\xae\x93\x2e\x09\x7a\x75\x70\xf8\x46\xa0\x8f\xf9\xac\x5f\xc0\x52\xe6\xc0\xca\x2e\x3f\xc0\x25\x91\xab\x46\x15\x85\xac\x8e\x48\xfc\xe4\x9e\xfa\x10\xb6\xc6\x3b\xb9\x38\x08\xba\x87\x0c\x10\x3a\x5f\x71\x3d\x71\xbb\xd3\x5d\xf7\xe8\x75\x18\x0c\xdb\x4d\xa3\x6d\xf7\x98\xf3\x2e\x94\xe2\x02\x9a\xe7\x98\x06\x3b\xd7\x7a\xb0\xba\xaa\xc9\x65\xc5\x0b\x66\x57\x8e\x40\x97\xbd\xc5\x89\xaa\xc5\xe0\x7e\xbb\xeb\x3a\x40\x70\x74\x90\x97\x17\x4f\x79\x33\x25\xa9\x5b\x63\x10\x95\xfe\x4e\x84\x55\xea\x97\x41\xf4\x60\xc7\x04\xf3\x8f\x8f\x2a\x80\x5d\xf6\x96\xfd\x4b\x89\xd1\x3b\x2b\xc5\xcf\x57\xbc\xaf\x14\xb0\x8d\x1d\x81\xcf\xeb\x81\x01\x3f\xcc\xf9\x71\x6e\xc8\x44\x28\x19\x33\xba\x37\x8e\x84\xdf\x4d\x50\x8b\x97\xef\xc3\x57\x63\xfc\xac\xf6\x98\x1d\xe1\xaf\xa2\x22\x71\x97\x1c\xde\x79\x73\xa7\xfb\x4a\xa5\x0d\x6b\x44\x66\x8d\xd1\x63\xf7\xab\x7b\xe1\x6c\x09\xfc\x45\x5c\xe7\x30\xbb\x62\x5b\xc3\x32\xd5\xe0\x05\xda\xdc\xe3\x19\xdc\xef\xcf\x74\xd0\xef\x3a\x72\x29\xd8\x4a\x0c\x58\x73\x80\x59\x97\x2d\xfa\xfb\x9c\xf9\x71\xbd\xdb\x02\xf0\x49\x34\x89\x14\x2b\x67\x75\xcd\xe2\xdb\xa0\x3e\x71\x7d\xc6\xe4\x51\xce\x6a\x04\xd7\xe7\xd3\x1b\x69\x3e\xb2\xac\x83\x3f\x39\x6e\x64\x77\x2f\x21\xf0\xfc\xb2\xfb\x1b\xac\x31\x06\x47\x7a\x3f\x63\x52\x18\x91\xff\x89\x99\xa6\x45\x55\xe6\x40\x0d\xf8\x97\xff\x05\x00\x00\xff\xff\x51\x8e\x01\x2d\x8b\x36\x08\x00") func kubedbCom_postgresesYamlBytes() ([]byte, error) { return bindataRead( @@ -704,12 +682,12 @@ func kubedbCom_postgresesYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_postgreses.yaml", size: 255129, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_postgreses.yaml", size: 538251, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_proxysqlsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5d\x4f\x73\xe3\xb8\x72\xbf\xcf\xa7\xc0\x21\x87\x24\x55\x9e\x64\xf3\x5e\x6d\x25\xbe\xa4\xfc\xc6\x33\x9b\xc9\xce\x1f\x67\x34\xb3\xef\xb0\xf5\x52\x05\x93\x2d\x09\x31\x04\x70\x00\x50\xb6\x36\x95\xef\x9e\x22\x69\x5a\xb2\x44\x02\xdd\x20\x69\xc9\x63\xe0\x64\x8b\x24\xd0\xe8\x6e\x34\x7e\x68\x34\x1a\xbc\x10\xbf\x81\xb1\x42\xab\x73\xc6\x0b\x01\x77\x0e\x54\xf5\x9f\x7d\x7d\xf3\xaf\xf6\xb5\xd0\xff\xb4\xfe\xe9\x1a\x1c\xff\xe9\xd5\x8d\x50\xf9\x39\x7b\x53\x5a\xa7\x57\x5f\xc0\xea\xd2\x64\x70\x09\x73\xa1\x84\x13\x5a\xbd\x5a\x81\xe3\x39\x77\xfc\xfc\x15\x63\x99\x01\x5e\xfd\xf8\x55\xac\xc0\x3a\xbe\x2a\xce\x99\x2a\xa5\x7c\xc5\x98\xe4\xd7\x20\x6d\xf5\x0e\x63\xbc\x28\xce\xd9\x4d\x79\x0d\xf9\xf5\x2b\xc6\x14\x5f\xc1\x39\x2b\x8c\xbe\xdb\xd8\xef\xd2\xbe\x6e\x1e\xbc\xce\xf4\xea\x95\x2d\x20\xab\x3e\xe1\x79\x5e\xb7\xc5\xe5\x95\x11\xca\x81\x79\xa3\x65\xb9\x52\x75\x75\x67\xec\x3f\x67\x9f\x3f\x5d\x71\xb7\x3c\x67\xaf\xab\x0f\x5e\xaf\x9b\x5e\xd5\x4d\x35\x95\xff\xb6\xf3\x8b\xdb\x14\x70\xce\xac\x33\x42\x2d\x0e\x3e\x77\xdc\x95\xf6\x75\xb1\xe4\x16\x76\x3e\x9f\xd5\x3f\x07\xbf\x6e\x19\xf1\xfa\x80\x0b\x3b\x75\x5d\x2c\x60\xa7\xa2\x9c\xbb\xea\xdf\x85\xd1\xe5\x03\x4b\xea\x9e\x37\xaf\xdf\xf3\x2b\xe3\x0e\x16\xda\x88\xf6\xff\xb3\xea\x3b\x6e\x9d\x36\x70\xff\xff\x03\x33\xab\x7f\x78\x51\xd8\x4c\xe7\xed\x33\x5e\xf3\x9f\xb1\x46\x8c\x57\x15\x9f\x67\xff\xf5\xa1\xfe\x49\x0a\xeb\x7e\x7d\xf4\xf3\x07\x61\x5d\xfd\xa8\x90\xa5\xe1\x72\x47\x2e\xf5\xaf\x56\xa8\x45\x29\xb9\xd9\xfe\xfe\x8a\xb1\xc2\x80\x05\xb3\x86\x6f\xea\x46\xe9\x5b\xf5\x4e\x80\xcc\xed\x39\x9b\x73\x59\x73\xd1\x66\xba\xea\xea\xa7\xaa\x3f\x05\xcf\x20\xaf\x7e\x2b\xaf\xcd\xbd\x26\xdd\xf7\xa9\x61\xfd\x39\xfb\xdf\xff\x7b\xc5\xd8\x9a\x4b\x91\xd7\x2c\x6c\x1e\xea\x02\xd4\xc5\xd5\xfb\xdf\xfe\x34\xcb\x96\xb0\xe2\xcd\x8f\x55\xc3\xba\x00\xe3\x1e\xf8\xd2\xe8\xd6\x83\x56\x3f\xfc\x76\x20\xb6\xa6\xd4\x0c\x09\xbd\xb4\xab\xdd\x6d\xe9\x6a\xf7\x41\xc2\x8f\x7e\x61\x6c\xc5\xef\x3e\x80\x5a\x54\x0a\xf2\xf3\x9f\xf6\x9e\x15\xdc\x39\x30\xea\x9c\xfd\xf7\xef\xfc\xec\x8f\xbf\xfd\xfd\xef\x67\xfc\xec\x8f\x7f\x3e\xfb\xb7\xbf\xfd\xe3\xef\xf7\x7f\xfc\xc3\xbf\xff\xdd\xde\x37\x9d\x44\xb6\x3f\xeb\xeb\xff\x81\xcc\x3d\xfc\xdc\x0e\x9f\x10\xdd\xd7\x3c\xbb\x81\xc7\xbc\xf0\xbd\x5e\x15\x03\xf3\xc3\x1f\xfd\x9f\xb0\x46\x3a\xbf\xd4\xba\xde\xf9\xb4\xb7\x77\xdb\xb2\x2f\x33\xd2\xc7\x5d\xf2\x41\x7e\x6c\xe0\x7b\x29\x0c\x74\xb6\x7d\x56\x53\xd5\xf9\xa0\x6a\xb1\xe3\x41\xa7\xb4\xb6\x4d\x15\x52\x64\xbc\x93\x83\x73\x6d\x56\xdc\x9d\x33\xa1\xdc\x9f\xfe\xa5\xb7\xe2\xca\x44\x2e\xc0\x74\x6a\x4e\x47\xa3\x99\x56\x73\xb1\x98\xd5\xa3\x91\xa2\x03\xfc\xd6\xbe\x95\xdc\x3a\x91\xfd\x45\xea\xec\x66\x56\xd9\xa3\x18\xa5\x98\xdb\xaf\x15\x69\xb1\x52\x2d\xb8\x71\xc2\xed\x0d\xf8\x47\xf5\x07\x98\xc6\x02\x8c\x6b\x8a\x01\x9e\x7f\x56\x72\xe3\xa7\xf3\x5a\x6b\x09\x5c\x75\xbe\xb3\xae\x26\x2d\x78\x7f\x39\x89\x0a\xb6\x95\x53\xb5\x8d\xff\x51\x1a\xb8\x14\xf6\x26\x46\x72\x19\xcf\x96\x42\x2d\x3e\xea\x3c\x5e\x7c\xb9\xb0\x37\x9f\xe2\x07\x66\x53\xc1\xb7\x2f\xef\xa3\xbf\x1f\xa8\x7e\x83\x2c\xd2\x50\xa5\xf2\xeb\x44\xcb\xda\xde\x87\xdf\xbe\xbc\x8f\xd2\x97\x77\x42\x46\x8d\xf4\xe1\x63\xc8\x42\x66\xc0\x0d\xd2\x17\xbb\xe4\x06\x06\xd4\xe0\xe7\xf9\x96\xc0\xee\xc7\x6d\xe3\x54\xbe\x67\x50\x2c\xe7\x9d\x6c\x0d\x31\x7d\xa5\x95\x70\xda\xf4\x3c\x65\x4c\x38\x58\xf5\x3e\x44\xf0\xb3\x7d\x85\x1b\xc3\x37\x3d\x16\xda\x2d\x8f\x36\x44\x5a\x9d\xe9\xd3\x59\x14\x11\x4d\x15\x5f\xba\x41\x0f\x43\x08\x81\x05\xe0\x07\x8a\x8a\x80\x8a\x54\xa5\xb4\x60\x26\xd1\xeb\x56\x8b\xc8\x7a\x2b\x54\xde\x4d\xd2\xc4\xb0\x60\x2c\xbd\x79\x06\x42\x3f\x49\x60\xd1\xa0\xca\x8f\xbc\x13\xeb\x87\x38\x97\xc3\x9c\x97\xd2\xf9\x80\xc5\x38\xa8\xce\x6b\xfc\x02\x96\x11\x23\x7e\xc6\x6e\xa0\x57\x05\x77\x89\xf4\x6a\x00\xab\xcd\x78\x3f\x2f\x9a\x82\xe1\xc8\x6e\x93\x3e\xbe\x34\xc5\x67\xb8\x09\xc4\xfb\x14\xac\x29\x67\x15\x9b\x3c\x4f\x2b\x42\x02\x33\x94\x67\x7c\x84\x67\xa8\x01\x2b\x43\xc6\x74\xd1\xf8\xa6\x62\x2d\x8d\x7f\x18\x59\x11\x35\x80\x8c\x58\x47\xcf\x04\x83\x6d\xaf\xd2\x39\x5c\x95\xd7\x52\xd8\xe5\xec\xb9\x18\xd1\xb1\xd6\x77\x17\xce\x19\x71\x5d\xba\xfe\xfe\xec\x7a\x33\xc3\x7d\x1f\xde\xb7\xc0\x22\xa1\xd6\x14\xaa\x5a\xe6\xfa\x56\xdd\x72\x93\x5f\x5c\x75\x2e\xbc\x5e\x90\x7d\x9f\x0b\x90\xb9\x47\xbf\x29\x75\xb1\x5e\x07\x66\x77\x41\x4e\x1d\x0f\x64\x5e\x05\xed\x39\xa9\xd6\xb0\x5d\x67\xb5\x8a\x3d\xb4\x8d\x98\x4a\xbc\x66\x9c\x3d\xef\x79\xb0\xe2\x58\xe3\xf4\x7e\x37\xb2\xd2\x64\x5a\x39\x2e\x14\x18\xdf\xba\x96\x4c\x2d\xab\xbd\x2b\x6b\x61\x75\xef\x4c\x12\x55\x67\xcb\x85\x23\xa8\x62\xdb\xf4\x70\x4d\xc4\x80\x9a\x69\x61\x8b\xb7\x02\x58\x15\x6e\x73\x29\xa2\x56\x5e\x2b\xc8\x45\xb9\x8a\x5f\x2c\x8b\x3f\xe0\x83\x58\x09\x17\x59\x83\xb7\x5f\xf3\xec\x08\x6b\x49\x59\x9e\xbc\x73\xd9\x71\xb3\x00\xf7\xd7\xbf\x7e\x3a\xa2\x9f\xe7\xf6\x56\xe4\x47\x6b\xde\xaf\x35\x12\xee\x7e\xab\xe1\xd9\xf3\x03\xd3\xcd\xf2\xe2\x64\xd0\xe4\x0b\xf2\xac\x4c\x01\x9c\xe7\x52\x67\x37\x71\x0e\xb1\x7a\xd3\x7f\xa0\xf3\xfb\xbe\x8e\x6f\xdf\xa2\xbd\x45\xde\xde\x2d\x32\xb8\xaa\xc0\xab\x75\xa0\x5c\xec\xae\xd2\xf3\xd8\x0f\x2c\xf2\x41\x82\x98\x76\xe7\xa7\x21\x8e\x2c\x3d\xe1\xbe\x40\xa1\xa3\x74\x53\x18\xc8\x9c\x36\x81\xfe\x78\x19\x52\x68\x2b\x06\x56\xb1\x16\xbe\x85\xd3\x20\x3f\xe8\x96\x3e\x32\x5b\x65\x69\x1d\x98\xb8\xdd\x1b\x50\x79\xa1\x85\x72\xbd\x86\x10\x31\x1e\x8e\xb8\xfb\xe2\xe7\xe9\x43\xe7\xba\x95\xb8\x1b\x3d\x7b\x79\xbd\xd4\xd6\xf5\xad\x72\x43\xac\x1e\xc4\x28\x17\x6f\xb2\x02\x43\x39\x82\x0b\xc2\x46\xba\x0d\xb3\x25\x2f\x2e\x4a\xb7\xbc\x14\x36\xd3\x6b\x08\x8d\x45\xdf\x1c\xdf\x56\x35\x03\x1b\x1e\x93\xbe\x8a\x06\x4e\x07\x75\x98\x22\x77\xda\xbb\x34\x0e\xd7\xf2\x3d\xd6\xaa\xdc\x4b\xe3\xbd\xaa\x4c\x00\xef\x5f\xf4\x1e\x7f\x11\x52\x68\xe3\xb8\x3c\xe2\xfa\xe1\xc5\x00\xcb\x76\xb9\x76\x55\x73\x7c\x12\xb3\x21\xbe\x77\x71\xe8\xac\xd2\xa2\xce\xdf\x77\x09\xa2\x9a\x1b\x15\x37\xb5\x1d\x3d\x2c\xc0\xc4\xaf\xea\xa2\x6c\xf6\xd9\x7d\x9b\x54\xfe\x16\x0f\x90\xba\x59\xc3\xbe\x91\x5c\x74\xba\x67\x82\xe6\xbd\xfa\xf0\x84\x61\xeb\x03\x7d\x64\x0e\x2d\xb5\xd3\xea\xf8\x4b\x8f\x7c\xa2\x4d\xf8\xaa\x62\x32\x4f\xb4\x71\xb7\xda\x0c\xf0\x7b\x1c\x3d\x02\xe3\x24\x03\x1b\x0a\xa3\xab\xdf\xbb\xab\x3d\x99\x8d\xaf\x47\xc1\xf5\x87\x65\x94\xad\x2f\x6f\x88\x07\xb5\x32\x04\x55\xc4\xd7\x28\x2d\x37\x25\x18\xab\xb1\x2d\x84\xed\x8e\xa6\x84\xf7\xad\xb6\x05\xbf\x83\xb5\x4f\x50\x78\x2f\x6b\x5b\xc2\xbb\x5a\xfb\xb5\xa3\xbb\x8b\xdb\x8e\x69\x8a\x3f\xf6\x63\xf7\x3d\xef\x76\xca\x3e\xad\xc1\x8d\xc4\xdd\x97\xfb\x31\xe9\xb6\x84\x60\xe1\x6e\x7d\x28\x46\x85\xe2\x46\xf6\x2b\xf5\x59\xca\xc7\x6f\x06\xfb\x1e\xd8\xbe\xdf\x96\xe7\x33\x76\x71\xfb\xf0\xf1\xf5\x33\xe2\xde\xfc\xb6\x90\x4d\x05\xa3\xed\xd7\x0f\x6a\x89\x32\x52\x19\x61\x37\x7f\x9f\x28\xe4\x70\x64\x2f\xcd\x52\x52\x63\x02\x76\x88\x8a\x50\x60\x62\x9c\xc0\xb6\x44\xe9\x30\x3a\x76\x60\x60\x3b\xf8\x78\x82\x41\x0d\xd1\x87\x0a\x2a\xda\x60\x9f\x26\xf4\x48\xa1\x4d\xb2\xc7\x9c\x3c\x91\x95\x36\xde\x9b\x1f\x65\x42\x4a\x60\xd2\x5f\x7b\x02\x93\x3f\x08\x98\xb4\x60\xd6\x22\x83\x8b\x2c\xd3\xa5\x72\x5f\xf5\x0d\x04\xe0\x11\x21\x18\xb2\xcc\x05\xa8\x51\x23\xc5\x18\x83\xbb\x42\x98\xfa\x74\xf9\x0c\x32\xad\xfa\x43\x56\xb6\x65\x67\x0c\xfd\xfc\x67\x24\x2d\xb8\xd1\x83\x1b\x37\xa3\xc7\xc1\x05\xb5\x1f\x25\xfb\xc1\x21\x6c\x81\xb3\x74\x8d\x0f\x83\xea\xa0\xf9\x5e\xea\xeb\x8d\x8b\xf2\x78\x2d\x06\x1d\x4e\x1f\xee\xf0\x32\xb0\x10\xd6\x0d\xd8\x02\x77\xa0\xb8\x8a\x0d\xbc\x1b\x74\x7c\xac\xf5\xd6\x4d\xb4\xf9\xde\xf0\xc5\xe3\xc8\xa3\x6a\x89\xb9\x8e\x72\xe0\x0d\xdd\x8d\x5c\xf1\xc5\x80\xb3\xc6\xb0\xa9\x9e\x45\x7f\x7f\x02\x47\x41\xb5\x8e\xdd\xef\x7a\x51\xfb\x83\x93\x9d\xe3\xac\x15\xb0\xf3\x49\xec\x09\x4f\x9b\x71\x09\xef\x3f\x1f\x61\x30\x2d\xb8\x83\x5b\x1e\x6f\x2c\x0b\xa3\x1d\x64\x15\x10\xb8\xd4\x2b\x2e\xe2\x77\xf8\x5f\x90\x62\x5a\x2b\xdf\x2a\x7e\x2d\xfb\x21\x06\xa2\xb3\x4e\x1b\xbe\x80\x41\x69\x23\xee\xeb\xb8\x1a\x62\x4f\xec\xc6\x3a\x88\x8f\x73\x6f\xe6\x9d\xc9\x32\x09\xdc\x6b\x77\x37\x32\x6a\xd5\xa5\xfb\x69\xdd\x2f\xf2\x38\xee\x5d\x7d\x9f\xcc\xa6\x56\x3a\xad\x9b\x4e\xeb\x8e\x70\xe0\x76\x84\x34\x22\xfe\x91\xd4\xd8\x26\x1d\x15\x15\x73\xf4\x4d\xf7\x67\x33\x15\x0d\xb6\xbf\xbb\x55\xd4\xa9\xe9\xa6\x50\x86\xb5\x2d\x96\x60\xe0\x68\x51\x18\x0f\x13\xa5\x14\xd9\x26\x3a\x94\x62\xaf\x9e\x11\x98\xee\xdb\xdb\x1a\x21\xae\xa3\x67\x83\xca\x23\xaa\xde\x47\x5d\xb6\xbc\x97\xc2\x7b\x14\xbd\xff\xbe\x37\x8f\xda\x02\xba\x97\xec\x5e\x36\x70\xb3\xe8\x54\x18\xcf\x34\x88\x52\xe3\x6e\xb3\x0b\x6a\x4d\x6c\x2c\x6c\x25\xfc\x36\x02\x61\x21\xd6\x5c\x96\x23\xd4\xf0\xce\xe8\x5e\x10\x48\x0e\x85\xf9\x15\x36\x23\x9e\xeb\x45\xed\x21\x10\x5c\x9f\xcf\xc2\xed\x8c\xf5\x61\x86\x3c\xfd\x48\xf7\x75\x3a\xc0\xff\xb4\x07\xf8\xd3\x19\x78\xf6\xa3\x9c\x81\x6f\xc1\x62\x32\x7a\xde\x4a\x4f\xce\xe8\x05\x5f\xf2\x53\xd3\x9b\xd7\x36\x58\xb3\x0f\x62\x14\x46\xaf\xc0\x2d\xa1\x8c\x3b\x27\x77\x57\x68\xe3\xfa\x9d\xa6\x18\xf5\xeb\x83\x54\x6d\x41\x84\x0a\x20\xb5\x08\xb3\x51\xdc\x03\xb9\x08\xc4\xe0\x87\xdc\xe8\x43\x24\x00\xcd\x62\x6b\xf4\x43\xb5\xb6\xd0\x22\x35\x48\xd0\x2d\xae\x09\x46\x0b\x07\x89\x8a\x4e\xc2\x89\x70\x40\x03\x78\xab\xf7\xb8\x11\x8c\xf5\x6b\x0b\x2d\xc4\x0a\x1b\xec\x41\x8e\xac\xa2\xc5\x92\xd2\x75\x21\x26\x8e\x34\x42\x62\x11\x31\xa4\x11\xd1\x8b\x34\x89\xd1\xa2\x47\xc9\x11\x71\x31\xa1\x94\x74\xf9\x45\x86\x51\x46\x88\x90\x1c\x42\x19\x15\xd7\x48\x0d\x9f\x9c\x5c\x4b\x48\x81\x93\x44\x25\xc1\x43\xd6\xb6\x24\x63\x8f\x6e\xe4\xd9\x19\x7b\xf4\xcb\x58\x80\xde\x0b\x8d\x89\x2d\x62\x20\x62\x05\x79\x7d\xf4\x60\xf7\x98\x70\x3b\x4c\x7b\x37\xb6\xf4\x90\x84\x1c\x2b\x52\xac\x44\x7f\x52\x8b\xb6\xd0\x92\x1b\x3d\xee\x0e\x4a\xdf\x49\xe2\x07\xfb\x7c\x28\x46\xbd\x66\x21\x2b\x8d\x70\x9b\x37\x5a\x39\xb8\xf3\xaa\x12\x56\xae\x5c\x4a\x7d\x7b\x65\xc4\x5a\x48\x58\xc0\x5b\x9b\x71\xc9\x7d\xc9\x78\x1e\xd3\x8b\x31\x1f\x19\x2f\xf8\xb5\x90\x02\xc3\x59\x8a\xe5\xe6\x39\xca\x12\xa1\xe3\xc5\xc9\x76\x17\x1f\x3d\xcc\x58\x6e\x74\xe0\xd4\xe5\xe9\x50\x8b\x1e\x63\x45\xab\x36\x41\x41\xe0\xb5\xa5\x30\x3a\xfb\xa8\xcb\xfe\x98\xc8\xc7\x55\xa2\xdc\x6c\xcd\x0e\xeb\x17\xad\xeb\x4b\x05\xfc\x51\x24\x74\x8a\x4d\xa9\x2e\xac\xf7\x96\xa4\xb6\x50\xa2\x92\xf1\x31\xc9\x75\xfb\x9f\xb4\xaa\xfa\x37\x72\xaf\xbe\x79\xa2\xda\xda\x32\x4d\xa7\x2c\x7c\x10\xaa\xbc\xfb\xec\xcf\xa5\xd7\x16\x8a\xd9\x90\xb0\x06\x14\x4c\x22\x8d\x2f\xa3\xfb\x6f\xab\x88\xae\xd4\x79\xf6\x91\xa3\x2b\xf5\x45\x2a\x46\x56\x8a\x36\x18\xb7\x42\xe5\xfa\xd6\x4e\x20\xd5\xc5\xca\xf2\x37\x06\x72\x50\x4e\x70\x39\xdb\xbb\x48\xcd\x4f\x38\x92\x71\x87\x4d\x60\x57\x93\x34\x4d\x6a\x07\xde\x04\xb5\x8f\x87\x45\x82\xaf\xd4\xd7\x3e\xae\xa3\x93\xe5\x3c\xbe\x80\xf2\xb0\x3c\x7d\x16\x4d\x35\x30\xe8\xc4\x8f\xfe\xc7\x88\xb7\xf3\x87\xcf\xfb\x16\x03\xa1\x91\xe6\x07\xff\xc7\xc8\x68\xea\x07\xf7\x4f\x4d\x51\x28\x4e\x33\x04\xda\x83\xd7\x30\x12\x41\x7a\x78\x9a\xc7\x80\x72\xd4\x16\x8c\x1f\x84\x3f\xed\x0e\x4c\x08\x64\x3f\x25\x35\x41\x1d\x0e\x83\xe7\xb0\x14\x83\x60\x19\x1d\x7e\x88\x03\xc7\x61\x8a\xc2\x60\x18\x83\x17\xc3\x38\x11\x03\x7a\x91\xd4\xfa\x40\xee\x38\xc4\xe2\xc0\x2c\x66\xb8\x05\xc1\x2b\x2e\x62\x38\x00\x56\x51\x95\x84\xc0\x29\xaa\x92\x10\x18\x1d\x63\xb2\xc0\x81\x4e\x0c\xf7\x69\x20\x13\xc5\x00\x3a\xa8\xc4\x49\x18\x0b\x22\x27\x9d\xfb\x7a\x1f\x15\xbc\xb4\x87\x76\xaf\x7f\xbc\x16\x3a\xff\x0a\xab\x42\xf2\xc3\x53\xa2\x3e\xb9\x65\x5a\x39\xa3\xa5\x8c\x4b\xdf\xcd\x95\xd2\x8e\x9f\x54\x2e\x77\xef\xe3\xae\x9b\xaf\x7f\xd4\xbe\xee\xdf\x94\x8d\xee\xe7\xbc\xbe\x06\xbf\x77\xb3\x07\x15\x2a\xaf\x73\xb8\x08\xd4\x83\xad\xab\x79\x0f\xe6\x60\x0c\xe4\x97\x65\xc5\xad\x59\xb6\x84\xbc\x94\x42\x2d\xde\x2f\x94\x7e\xf8\xf9\xed\x1d\x64\x25\xc6\x31\x8b\xf4\x20\xd2\xf6\xc8\x1a\x1a\x71\x27\xfb\xe9\xb5\xb3\xfa\xde\x75\x97\x2d\xdf\xde\x15\xa6\x49\x3f\x4c\xc8\x91\x43\x70\x99\xc6\x12\xd7\x14\xd2\x26\x61\x53\x22\x76\xf2\x9a\x52\x51\xc8\x3b\xe2\xd2\x27\x6b\xb0\x0e\xd7\x21\x32\x24\x82\xf7\x4d\x89\xa6\x92\xe6\x74\xdf\x16\x6a\x2a\x20\x46\xda\xc0\x6c\xdf\x6f\x85\x46\xf8\x88\xb8\x17\xbe\xfb\x11\x85\x07\xf5\xe8\xaa\xa3\x2c\xd2\xc0\x4a\x03\xcb\xf3\x69\x1a\x58\x14\x1e\x10\x1b\xb9\x05\xb1\x58\x06\xf7\x68\x9a\x42\xcf\x02\x85\xdf\x5c\x61\x24\xc1\x9d\xed\xcc\xfe\x88\x97\x9b\x4e\x06\x5f\x24\xb0\x0e\x2b\x95\xb6\x4b\xe3\xe0\x28\x8a\x31\xab\x20\xe1\x0c\x64\x7d\xa3\xca\x57\x30\xb8\x91\x4b\x18\xe2\x09\x4e\x35\x25\x59\xfd\xce\x92\xac\x7e\x5b\x12\x9c\x4a\x03\xab\xab\xa4\x81\xb5\xfb\xfe\xa9\x0e\x2c\x62\x23\xf8\xea\xb1\x6c\x3d\x3b\x9c\xc9\x51\xd8\x64\x9c\xe8\xbe\x42\xe7\x2f\xce\xaf\xb4\xed\x72\xc5\xed\xa9\xd0\x50\x1d\x4b\xd0\x8a\x15\x3f\xb6\xe2\x0c\x70\x3c\xf4\x62\xb1\x96\x2a\x76\xa6\x60\x71\xb3\x05\x1b\x66\x1a\xe3\x67\x8d\xc1\x0d\xc7\xcd\x1e\x2c\x7e\x06\x61\x43\x29\x8e\x9d\x49\x58\xe4\x6c\xc2\x22\x66\x14\x16\x3b\xab\xb0\xd8\x99\x85\x45\xf3\xa5\x1e\x9d\x1f\xbc\xb1\x45\xdd\x25\x2e\x50\xbc\x8b\xe4\x08\x4d\x18\x30\xfd\x92\x3e\x7a\x08\x72\x9a\x12\xd7\x46\x71\x81\x2e\x6d\xa7\x0b\x2d\xf5\x62\xf3\xeb\xa4\x67\x7b\xa8\x87\x62\x76\xa8\x4a\x2e\xa6\xb6\x9c\xed\x03\x81\x17\xe4\x67\x9a\x04\x57\x45\x00\x9e\xe4\x63\x6a\x4a\x5a\x0a\x77\x96\xb4\x14\x6e\xcb\x53\xfa\x98\xa8\x40\x65\x28\x48\x19\x30\x35\x13\x18\x42\xfc\x80\x0a\x4a\x48\x1a\x4e\xee\x31\x4d\x92\x64\x10\x42\x3b\x2b\x40\x98\x61\x29\xc0\x63\xf4\x49\x13\xed\xff\x50\x4e\x24\x1f\x08\xa2\x24\x1f\xc8\x38\x84\x36\x25\xf9\x40\x50\x25\xf9\x40\x42\xdf\x24\x1f\x08\x92\xe4\xe4\x03\x49\x3e\x90\xe4\x03\xd9\x2d\xc9\x07\x92\x7c\x20\x23\x13\xd7\x94\xe4\x03\x39\x28\xc9\x07\xb2\xfb\x7e\xf2\x81\x74\x90\x99\x7c\x20\xc1\x0f\x92\x0f\xe4\xd1\xab\x23\xf8\x40\x82\xaf\xf8\x32\xde\x4e\x7f\x19\x9c\x27\xc3\xed\x28\x97\xf9\x84\xb3\xe4\x21\x35\x03\x91\xcd\x96\x52\x53\x38\x8b\x2d\x29\xeb\x39\x2d\x7b\x2d\x6d\xda\x47\x4f\xf6\xc4\x31\x8f\x4f\x60\x48\xac\x98\x96\xb8\x30\x7c\xa4\x7b\xb7\x50\x4c\x03\x66\xd2\x24\x98\x04\x7c\x46\x5a\x9a\x7c\xa9\x99\x68\x89\xd2\x20\x66\xa0\x9d\xcc\x50\xe3\xb3\xce\x12\x64\x42\xcf\x36\x4b\x4e\x4c\x4d\xcd\x32\x4b\x14\x0f\x29\xbb\x2c\xb1\x6e\x5a\x56\xd9\xc9\x24\x8f\xce\x24\x4b\x10\x3c\x2d\x83\x6c\x32\xb8\x07\x95\x9f\xbc\xc1\x45\xbd\x88\xb9\x28\xcf\x9b\x0d\x16\x8d\xe0\xfa\x21\x54\x7d\x9d\xeb\x55\x29\xe5\xac\xd6\xc9\x58\x30\xf7\xa4\x78\x6a\x8c\x6e\x2b\xe1\xde\xb4\xe6\x71\xda\x4e\x87\x2e\x85\x40\xae\x8d\xd0\xa3\x0a\x07\xfe\x33\xbd\x5a\x71\x15\x18\x18\xc7\x20\x2c\x70\x6b\x05\x92\x28\xd2\x61\xb9\x29\xb2\xe6\x21\xef\xaf\x88\xa9\x15\x77\x87\x05\xdd\x3f\x17\x75\x8f\x45\x9c\x1b\x90\xe8\x02\x8c\xf2\x80\xd0\x52\x9c\x47\x36\x42\x4f\x73\x4e\x9d\xc2\x9a\x42\x75\xbc\x51\x9c\x6e\x64\x57\x11\xed\x76\x8b\x38\x0d\x89\xb9\xe1\x22\x52\x86\x11\xb7\x5c\x44\xb5\x44\x97\x21\xed\xae\x8b\x08\x49\xc6\xdd\x77\x11\x27\xd1\xc8\x3b\x2f\x22\x85\x4a\xbe\xf7\x22\xb2\x1d\xfa\xdd\x17\x4f\xa4\x3b\xa4\x1b\x30\x22\x54\x87\x7e\x0b\x46\x9a\x2a\x5e\xda\x54\x41\xf2\x85\xa0\x4f\x44\x86\xee\xc7\x20\x2f\xd3\x10\x90\x34\x8c\xb9\x46\x87\xa5\x0f\x70\x0c\x39\xc0\xa8\x83\x8b\xa2\xf4\x64\x85\xa7\x2a\x3b\x55\xd1\x49\x8a\x58\x18\x98\x8b\xbb\xd1\xc1\x78\xf0\x9e\xf3\xc7\x34\x24\xe9\x0c\x7a\x15\x37\x54\x6b\x77\xc6\x28\x1b\x2d\x0f\x8e\x91\xe6\xc2\xf2\x51\xea\x94\x62\x0e\xd9\x26\x0b\x65\xe6\xc7\xeb\x4a\xa1\xad\x9b\x39\xee\xbf\xc4\x87\x5a\x29\xab\x6f\xc3\xc4\x25\xac\x8f\xbb\xfc\x0c\xe1\x7a\xd8\x2d\xa7\x19\xcc\x46\x9c\x0b\x97\xce\x15\xbf\x00\x32\x0a\x8c\xce\xd4\xa5\xb6\xc8\xba\x59\x1c\x83\x2a\xfa\xff\x03\x78\xee\x71\x97\x1d\x96\x27\x8b\x29\xa2\x22\x38\x36\x38\xc6\xe7\x89\x5a\x8b\x8b\xb8\x41\x60\xa4\xc7\x1f\xd4\x5d\x22\x8f\xb0\xc9\xe3\x6d\x8a\x69\xef\x9e\x0c\x5f\x80\xf6\xb8\x70\xb5\xf9\x8c\x5e\xec\xd4\xf1\x1d\xa4\xd8\xcc\xfd\xef\x88\xca\x72\x77\x76\x53\x5e\x83\x51\xe0\xc0\x9e\x09\xe5\xce\xb4\x39\x6b\xaa\x38\x67\xce\xa0\xc5\x6b\xb3\x25\x4c\x7a\x39\x20\x35\x3a\xb7\x92\xd1\x14\x16\xd9\x65\xc5\x4c\x67\x37\xcf\xd8\x26\x27\xed\xdd\x2b\xa7\xa1\x5a\x84\x97\x0b\x03\x33\x87\xb9\x89\x2d\xc1\x37\xd4\x47\x09\xbe\xf5\x35\x90\xe0\x5b\x5b\x12\x7c\x4b\xf0\x0d\x53\x9e\xe3\x04\x98\xe0\x5b\x5f\x39\x41\x9b\x9c\xb4\x77\xaf\x9c\x86\x6a\x8d\x1b\xe4\xc5\x98\x14\x6b\x50\x60\xed\x95\xd1\xd7\xa3\x79\xfe\x70\x08\x8f\x1a\x2f\x4a\x40\x76\xa7\x73\xa0\x83\x12\x05\xcd\x85\x2c\x0d\x7c\x5d\x1a\xb0\x4b\x2d\x11\x5d\xa5\x9d\xc7\xa4\x0c\x39\x34\xa2\xa4\x09\x11\x6f\xb5\x88\x42\x21\x23\x48\x92\x86\xc4\x20\xc7\x27\xd9\xb6\x25\xa3\xc5\x27\xd9\xdd\x27\x20\x44\x1a\x3a\x8c\x3c\x37\x86\x45\x85\x78\x44\x48\x64\x23\x7e\x2e\x25\xcc\xa3\x31\x73\x68\xc4\xfc\x39\xc2\xdc\x49\x41\x7d\x93\x85\xca\xa3\xa6\x63\x82\x82\x09\x25\x9c\xe0\xf2\x12\x24\xdf\xcc\x20\xd3\x0a\x93\xdd\x7c\x3a\x83\x5d\x80\x11\x3a\x3f\x01\x42\x6c\x99\x65\x60\xed\x49\xcc\x62\x04\x14\x7e\x22\xf3\xd8\x8b\xb6\x14\xc7\x1c\xce\x4e\xac\x40\x97\xee\xe8\x03\x08\x49\xf2\x68\x87\x3f\x2b\x3e\x8e\x71\x02\x80\x18\x3c\xd4\x04\x5b\x5e\x21\xb5\x9d\x9a\x77\x84\xa6\xee\xd5\x60\x7e\x7f\x35\x7a\x04\x4e\x55\xed\x69\x74\x70\x92\x33\x04\x85\xd1\x4e\x67\x1a\x15\xa6\x43\xa8\x18\x1f\x6a\xf7\x48\x8b\x42\xa3\x7b\xdc\x40\x1e\x03\x3c\x17\x69\xd5\x9c\x56\xcd\x7b\x25\xad\x9a\x77\x4b\x5a\x35\xa7\x55\x73\x47\xbd\x09\x0b\xa7\x55\x73\x5a\x35\xef\x95\xb4\x6a\xee\x20\x37\x59\x8a\xb4\x6a\x1e\x75\xd5\xdc\x1e\x3b\x0b\xe6\xc1\xc6\x6a\xb5\x14\x2b\x11\x5a\x3e\xb3\x01\x59\xd6\x48\xda\x44\x3c\xd0\x04\xf6\xf9\x51\x8e\x7c\xd1\x42\x56\x1a\xe1\x36\x6f\xb4\x72\x70\x17\x30\x0d\x78\x69\x73\x29\xf5\xed\x95\x11\x6b\x21\x61\x01\x6f\x6d\xc6\x25\xc7\x24\xec\xa4\x9d\x51\xc9\x78\xc1\xaf\x85\x14\x38\x4e\x13\x13\x22\xe5\xcf\x6e\x29\xc8\x58\x6e\x30\x31\x88\xec\xa4\xa8\x26\x45\x59\xde\x2b\x14\x42\x34\x14\x3d\x2a\x8c\xce\x3e\xea\x52\x21\x66\x46\x92\x7f\x86\xe7\x9f\x95\xdc\x7c\xd1\xda\xbd\x13\x12\xec\xc6\x3a\x40\x64\x7c\xa0\x50\x6e\x4a\x75\x61\x7f\x31\xba\x44\x88\x7d\x67\x46\xf9\xf9\xcf\xa3\xc2\xa0\x9a\x8a\x4f\x5a\x55\x3d\x9d\xa0\x7f\xdf\x2c\x20\x0e\x80\x4f\xd7\x3d\x0b\x1f\x84\x2a\xef\x3e\xd7\xa7\xed\xc6\x4f\x27\x0c\x6b\x20\x25\x4d\xc2\x67\xde\xd2\xa1\x13\x6a\x91\x15\xd7\xaf\x4f\x51\x71\x89\x92\x34\xb9\x62\x82\x89\xb9\x15\x2a\xd7\xb7\x76\x22\x59\x2f\x56\x96\xbf\x31\x90\x83\xaa\x96\x76\xb3\x02\x1b\xdd\x4d\x64\xe3\x61\x33\x93\x65\x8e\x7b\x18\xa0\x13\xb5\x30\x3a\xde\x71\xdc\xb8\xb2\x48\xde\xe8\xa3\x4f\xe6\xc9\x1b\x7d\x40\x6c\xf2\x46\xfb\x4b\xf2\x46\x63\x3e\x48\xde\xe8\xfd\x6f\x92\x37\xda\xd7\x7a\xf2\x46\x0f\x20\x24\x79\xa3\x3b\xc8\x4d\x96\x22\x79\xa3\x47\xf5\x46\x5b\x97\x8b\x80\xef\x10\xeb\x55\xa8\xab\xfa\xac\x42\x99\xde\xb0\xd5\x39\x30\x2b\xa1\x6a\xdf\xe6\x47\xb0\x96\x2f\x20\x9c\x81\x10\xa9\x6a\x1d\x55\x8f\x97\xc2\xc6\xf9\xef\xc1\xc4\x33\x60\xad\x65\xb9\x82\x4b\x58\x8b\xe0\x66\xc1\xe8\xd1\x71\x79\xdd\x2a\x36\xe5\x23\x69\x84\x4f\x10\x08\x86\x8f\xd7\xda\xf6\x2b\xf8\xea\xd3\x67\x51\x6b\x04\x5e\xbb\x4b\x9f\x5a\xde\xab\xaa\xd1\x49\xc4\xdd\xd4\x6c\x74\xc1\x17\xc8\x7d\x8a\xe3\xeb\xd3\xd6\xc3\x8c\xaf\x18\x9b\xfb\xcb\x96\xd7\x93\xf0\xf9\xbe\xde\xb7\x77\x05\xca\xcf\x37\xc9\xe8\x7a\xd0\xa2\x13\x1c\x5c\xb7\xda\xdc\x08\xb5\xb8\x14\x01\xf6\xa0\x18\x73\x0a\x79\xe9\x83\xa9\xd2\x30\xe3\x1f\x95\x1e\x0d\x6b\x48\x30\xde\x3a\x5a\x88\x36\xda\x53\x47\xf0\xc2\xc4\x78\xe4\x51\x2b\x7f\xb4\xc2\x22\x7d\x62\x14\x56\x61\xd7\x11\xb4\xe0\x71\x9a\x2f\x8c\x20\x03\xba\x1f\x8c\xe6\x05\x8b\xf0\x4e\x11\x3d\x60\xe4\x16\xa8\x27\xb7\xd1\xbe\x2f\x8a\xe7\x8b\xe8\xf7\xa2\x78\xbd\xb0\x3e\x2f\x5a\x7c\x3f\x72\x15\x8b\x5e\xc3\xd2\x57\xb0\xe4\xf5\xeb\xe0\xd5\x2b\xde\xcb\x35\xc9\x24\x8e\x58\x10\xe3\xa7\x66\xac\xdf\xe4\xe8\xb6\xee\x05\x6a\xda\x31\x54\x02\xf5\x1a\x22\xe5\x57\x82\x24\x09\x92\x24\x48\x32\xb0\x85\x04\x49\x76\xeb\x4c\x13\x45\x7f\x49\x90\xc4\x5f\x12\x24\xb9\x2f\x3f\x26\x24\x09\xbe\x82\x4a\x60\x85\x51\xa8\x10\x5e\xc1\x2a\x25\x12\xa7\x20\xe7\x47\x82\x12\xe0\xec\x33\x4a\x34\x94\x30\x26\xec\x2e\x1a\x6e\x00\x20\xd0\x10\x56\x10\x18\xcb\x80\x66\x2f\x01\xfd\x20\x25\x4b\x43\x3d\x93\xdd\x70\x4a\x40\x3a\x93\xc5\x75\xa0\xd0\x0d\x16\xd9\x50\x36\x8c\x91\x88\x06\x83\x66\xd0\xcc\xc1\xcc\x2d\xa8\x79\x85\x36\xa7\x90\xe6\x93\x41\x73\x09\x0e\xb1\x20\xa9\xc1\xa8\x51\x70\x4a\x42\xa9\x04\x31\x18\x68\x5c\xb3\x87\x0e\xfd\x19\xb7\x59\x4a\xa0\xcf\xb8\x2d\xa3\xb0\xe0\x51\x2c\xfd\x0f\x3e\x3e\x9f\x6e\x40\xe1\xc3\x71\xc6\x54\xad\x20\x69\x4a\xe7\x30\x03\x09\x99\xeb\xbf\x81\x91\x76\xea\x11\x21\xb8\x20\x55\x85\x11\xda\x88\xfe\xf8\x15\x0c\x8b\xc2\xec\x69\x5b\x79\x23\xb9\xb5\xbe\xc3\x0d\xc1\x2e\xe1\x52\xe0\x24\xdc\xbd\xf7\x56\xc2\xdd\xbb\x44\x25\xdc\x9d\x70\xb7\xef\xbd\x84\xbb\x13\xee\xde\x2f\x09\x77\x0f\x6a\x39\xe1\xee\x9e\xb7\x13\xee\x0e\x35\x3b\x10\x77\x07\x93\xaf\x60\xb4\x2e\x9c\x70\x85\x9e\xb0\x04\x1b\x5c\x8e\xe1\x3d\x26\xb1\xca\x31\x29\x0c\xbe\x52\x4d\x22\x79\x29\xfd\x47\x9f\x83\xf4\x20\x13\xb0\x60\x24\x3e\x0f\x67\x82\xc0\x26\x49\xc0\x99\x05\x5c\xf6\x89\x09\xda\x44\xe4\x9a\xc0\xc5\x3b\xa3\xf2\x4b\x8c\xdb\x01\x7c\x36\x09\xec\xdc\x82\xca\x20\x81\x36\xdd\x98\xac\x11\xe8\xca\xea\x17\xc7\xaa\x0c\x93\x1d\x62\x4c\x0b\x65\xcb\xa2\x90\xb0\x02\xe5\xb8\xac\xb5\xdc\x2b\x07\xc4\x9a\x0a\x9f\xa2\x04\x3b\x2d\x63\x96\x07\x76\x63\x33\x27\x87\xd2\x8e\x5f\x0b\xe2\xd6\x81\x04\x28\x81\x5c\xff\xe1\x35\x1c\xb5\xee\x43\xac\xf9\x30\xeb\x3d\xd2\xfe\xae\x5f\x90\xf8\xdc\x24\x58\x61\xd1\xf3\x91\xa0\x99\x1c\x97\x83\x04\x2f\x43\x4a\xde\x91\xa7\x04\x05\x60\xd6\x22\x83\x8b\x2c\xd3\xa5\x72\x83\x90\x81\xd3\x12\x0c\xf7\xca\x3a\x30\x6e\x71\x6a\x00\xf3\x39\x64\x81\xf5\x04\x92\x83\x37\x30\xce\xe9\xc4\x8a\x6c\xee\x71\x3a\x93\x2a\xdb\xf2\x11\x75\xdc\x75\x7c\x23\x8d\xb0\x5f\xa8\xae\x0c\x3e\x8e\xe3\xa9\xa0\xf7\x51\x61\xf4\xdd\xc6\x7e\x97\x33\xc8\xcc\xe1\x52\xd8\xa7\x61\x39\xcc\x79\x29\xdd\x47\x9d\x77\x76\x3e\xb4\xa2\xf2\x73\xb7\x57\xf3\x3d\x43\x22\x3c\x1c\xbc\xfa\x8b\x90\xd1\xaa\xa7\xaf\x4d\xc1\xad\x21\x31\x5a\xe5\xf7\xf6\x21\x76\x24\x7c\x13\xe0\x59\xc5\x86\x9e\x27\x45\xdf\xb1\xb9\x80\x6e\xfa\xf4\x52\x17\xcd\x12\xaf\x8b\x1a\x3f\x8a\xb7\xb5\x4e\xf6\x19\x59\x0f\x1b\x7a\xa9\x35\x50\x48\x91\xf1\x03\x05\xf1\x89\xae\x5f\x60\xf7\x93\xc1\x57\x58\x15\x92\xbb\x03\x22\x7d\xfa\xb8\x02\xc7\x73\xee\x78\x57\xc7\x42\x7a\xcc\x95\xd2\xce\x3f\x71\x3c\xf5\xae\x9d\xf7\xb1\xed\xc1\x1d\xa1\x7e\x66\xb2\xb4\x0e\x4c\xff\x85\x24\x41\xba\xe1\xce\x81\x51\x5c\xbe\xbf\x8a\x9d\x62\xd1\xac\xe9\x87\x76\x2d\x11\x5f\x0d\x9f\xcf\x45\xe6\x3f\xe4\x1f\x6c\x6f\x09\x5c\xba\xe5\x9b\x25\x64\x37\x9f\x74\x0e\xbe\x6b\x55\xc6\xd9\x28\x95\x9a\xe7\x7f\xe1\x92\xab\x6c\x90\x28\x76\xab\x99\xd5\xde\xaf\x2f\x5c\x2d\xfa\xb5\x72\x7a\xb9\x78\xef\xfb\x19\x05\x79\x8d\x76\x35\x91\x0a\x48\xba\x29\xf8\x24\x1e\x58\x64\x13\x76\x44\x8f\xdd\x26\xe6\x4c\xb3\xd7\x33\x3c\x18\x44\x55\x66\xdd\x5a\xa1\xd5\xc5\x7c\x2e\x54\xe3\xb9\x9b\x8b\xc5\x10\xc7\x5d\x26\x05\xa8\xc0\xc5\x4a\xd8\x25\x1d\x2d\xb3\x0b\x25\xaf\x0b\xcd\x27\x31\x6c\x19\xe5\xf3\x1b\x05\xc6\x44\x0c\xc8\x2d\x8b\x9c\x3b\x98\x39\xc3\x1d\x2c\x0e\x6c\xaf\x8f\xf5\x46\x4b\x29\xd4\xe2\x5b\x5d\x41\xcc\x24\x56\x70\xe3\x84\x2f\xe5\xc4\x18\x56\xda\xcb\xef\x3e\x5e\xc7\xe0\xa7\x35\x18\xdb\xd1\x97\x9e\xaa\xba\x06\xf3\x59\x5b\xc7\xab\x40\x73\xd6\x71\x57\x3e\x62\x6a\x1f\xab\xf5\x75\x05\xc4\x20\xff\x05\xd4\xfd\x42\xd0\x03\xef\x0e\xd6\x7c\xfd\xbc\x2d\x96\xdc\x1e\x70\xae\x97\x6b\x06\xb8\x45\x73\xa6\xa3\xc7\x7b\x3f\xb5\x9c\x66\xeb\x9f\xb8\x2c\x96\xfc\xa7\xed\x6f\x75\xf7\x1b\xf7\xd5\xa3\xc7\x0d\x20\x85\x7c\x67\x03\xce\x3a\x6d\xf8\x02\xee\x7f\xf9\xff\x00\x00\x00\xff\xff\x31\x52\x61\xc1\x0a\x5e\x01\x00") +var _kubedbCom_proxysqlsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x6b\x73\xe4\xb8\x95\x20\x0c\x7f\xf7\xaf\x40\x94\x1d\xa1\xaa\x37\x94\xa9\x6e\x8f\xc7\xeb\xad\x9d\x98\x0d\xb5\xa4\xee\xd1\xeb\xba\x68\x4a\xd5\xdd\x33\xb1\xb1\x4f\x07\x92\x44\x66\x62\x44\x02\x34\x01\x4a\x95\xde\x67\xff\xfb\x13\x38\x00\x78\xc9\x24\x89\x03\x2a\xb3\xaa\xba\x4d\xf8\x83\xbb\x52\xe4\x21\x2e\x07\xe7\x7e\xa1\x05\xff\x89\x95\x8a\x4b\xf1\x9a\xd0\x82\xb3\x4f\x9a\x09\xf3\x2f\xb5\x7c\xf8\x8b\x5a\x72\x79\xf1\xf8\xed\x8a\x69\xfa\xed\xef\x1e\xb8\x48\x5f\x93\xab\x4a\x69\x99\x7f\x60\x4a\x56\x65\xc2\xae\xd9\x9a\x0b\xae\xb9\x14\xbf\xcb\x99\xa6\x29\xd5\xf4\xf5\xef\x08\x49\x4a\x46\xcd\x8f\x1f\x79\xce\x94\xa6\x79\xf1\x9a\x88\x2a\xcb\x7e\x47\x48\x46\x57\x2c\x53\xe6\x19\x42\x68\x51\xbc\x26\x0f\xd5\x8a\xa5\xab\xdf\x11\x22\x68\xce\x5e\x93\xa2\x94\x9f\x76\xea\x6f\x99\x5a\xda\x3f\x2c\x13\x99\xff\x4e\x15\x2c\x31\xaf\xd0\x34\x85\x6f\xd1\xec\xae\xe4\x42\xb3\xf2\x4a\x66\x55\x2e\x00\xdc\x82\xfc\xff\xef\xdf\xbf\xbb\xa3\x7a\xfb\x9a\x2c\xcd\x0b\xcb\x47\xbb\x2a\xf8\x94\x05\xfe\x53\xeb\x17\xbd\x2b\xd8\x6b\xa2\x74\xc9\xc5\xe6\xe0\x75\x4d\x75\xa5\x96\xc5\x96\x2a\xd6\x7a\xfd\x1e\x7e\x0e\xbe\xed\x37\x62\x79\xb0\x0b\x2d\x58\x97\x1b\xd6\x02\x94\x52\x6d\xfe\xb9\x29\x65\x55\x6f\x09\xac\xdc\x3e\xee\xf6\x2b\xa1\x9a\x6d\x64\xc9\xfd\xbf\x17\xe6\x3d\xaa\xb4\x2c\x99\xfb\x77\xbd\x99\xe6\x1f\xb4\x28\x54\x22\x53\xff\x37\x0a\xfb\x4f\x88\x3d\xc6\x3b\xb3\xcf\xf7\xff\xfe\x06\x7e\xca\xb8\xd2\x7f\xed\xfc\xfc\x86\x2b\x0d\x7f\x2a\xb2\xaa\xa4\x59\xeb\x5c\xe0\x57\xc5\xc5\xa6\xca\x68\xd9\xfc\xfe\x3b\x42\x8a\x92\x29\x56\x3e\xb2\x1f\xc5\x83\x90\x4f\xe2\x7b\xce\xb2\x54\xbd\x26\x6b\x9a\xc1\x2e\xaa\x44\x9a\xa5\xbe\x33\xeb\x29\x68\xc2\x52\xf3\x5b\xb5\x2a\x1d\x26\xb9\x35\xd9\xad\x7f\x4d\xfe\xcf\xff\xfd\x1d\x21\x8f\x34\xe3\x29\x6c\xa1\xfd\xa3\x2c\x98\xb8\xbc\xbb\xfd\xe9\x9f\xee\x93\x2d\xcb\xa9\xfd\xd1\x7c\x58\x16\xac\xd4\xf5\xbe\x58\xdc\xaa\xb1\xba\xfe\x8d\x90\x94\xa9\xa4\xe4\x05\x40\x24\x67\x06\x94\x7d\x86\xa4\x06\x8f\x99\x22\x7a\xcb\x88\xc3\x1b\x96\x12\x05\x9f\x21\x72\x4d\xf4\x96\x2b\x52\x32\x58\xa2\xd0\x30\xa5\x16\x58\x62\x1e\xa1\x82\xc8\xd5\x7f\xb1\x44\x2f\xc9\xbd\xd9\x86\x52\x11\xb5\x95\x55\x96\x92\x44\x8a\x47\x56\x6a\x52\xb2\x44\x6e\x04\xff\x7b\x0d\x59\x11\x2d\xe1\x93\x19\xd5\xcc\x6d\xb8\x1f\x80\xdf\x82\x66\x66\x13\x2a\x76\x4e\xa8\x48\x49\x4e\x77\xa4\x64\xe6\x1b\xa4\x12\x2d\x68\xf0\x88\x5a\x92\xb7\xb2\x64\x84\x8b\xb5\x7c\x4d\xb6\x5a\x17\xea\xf5\xc5\xc5\x86\x6b\x7f\x8f\x13\x99\xe7\x95\xe0\x7a\x77\x91\x48\xa1\x4b\xbe\xaa\xb4\x2c\xd5\x45\xca\x1e\x59\x76\xa1\xf8\x66\x41\xcb\x64\xcb\x35\x4b\x74\x55\xb2\x0b\x5a\xf0\x05\x4c\x5c\x68\x20\x06\x79\xfa\xfb\xfa\xa8\xce\x5a\x33\xdd\xbb\x09\x76\x00\x8e\x0d\xee\xbb\x41\x35\xc2\x15\xa1\xee\x35\x3b\xff\x66\x7b\xcd\x4f\x66\x57\x3e\xdc\xdc\x7f\x24\xfe\xa3\x70\x04\xdd\x3d\x87\xdd\x6e\x5e\x53\xcd\xc6\x9b\x8d\xe2\x62\xcd\x4a\x7b\x70\xeb\x52\xe6\x00\x91\x89\xb4\x90\x5c\x68\xf8\x47\x92\x71\x26\xba\x9b\xae\xaa\x55\xce\xb5\x39\xe9\xbf\x55\x4c\x69\x73\x3e\x4b\x72\x45\x85\x90\x9a\xac\x18\xa9\x0a\x73\x51\xd3\x25\xb9\x15\xe4\x8a\xe6\x2c\xbb\xa2\x8a\x9d\x7c\xdb\xcd\x0e\xab\x85\xd9\xd2\xf0\xc6\xb7\x89\xb0\x1f\x7d\xd7\xa3\x26\x44\x9d\x5f\x08\xc9\xe9\xa7\x37\x4c\x6c\x0c\x1d\xfb\xf3\x3f\xed\xfd\xad\xa0\xda\xa0\xe4\x6b\xf2\xff\xfc\x2f\xba\xf8\xfb\xff\x7e\xf9\xbf\x16\x74\xf1\xf7\x6f\x16\xff\xfd\x7f\xff\xff\xfe\x97\xfb\x8f\x57\xff\xf3\x0f\x7b\xef\xf4\x4e\xd2\xff\x6c\x0f\xb0\xfe\xd9\x53\xf9\xd0\xbc\x57\x34\x79\x60\x5d\xfc\x3a\xc0\xb1\xef\xec\x33\x00\x93\xaf\xb9\xbb\xd9\xe6\x8c\xca\x1c\x6e\x2f\xa1\x2b\x59\x69\x0f\x8b\xbc\x35\x44\xef\xe2\x8e\x95\x89\x14\x74\xf1\x1f\xba\xa4\xd7\xdf\x5d\xbc\xa5\x25\xa7\xd7\xdf\xed\x7d\x87\x10\x65\xb1\x6c\x7f\x7b\x06\xa6\x6b\x46\xc9\xd6\x87\x3f\xee\x4d\xf9\x03\x5b\x93\x8c\x69\x45\xa4\x60\x86\x2e\x64\xd2\xd0\x7b\x98\xb7\xd9\xae\xd4\x00\x61\x25\x13\x09\x4b\xf7\x77\xae\x3d\x5e\x72\x41\x64\x55\x92\x84\x2a\x76\x4e\xb8\x36\x17\xcd\xc0\x18\x5b\xa1\x83\xf7\x8a\x70\xa1\xb8\x63\x18\xfb\xc3\xc0\x50\x34\x67\x96\x21\x19\x02\xbe\xec\x79\x6e\x6c\x13\x88\x25\xcb\x3f\x00\x93\xeb\xfd\xeb\xde\x8e\x5c\xde\xdd\xc2\xc3\x7e\x09\xc0\x1e\xc9\x5a\x96\xf0\xaf\x9a\x30\xac\x98\x21\x18\xcd\xee\xf4\xcd\xcb\x8e\xdb\x75\x07\xa6\xb9\xd5\x1e\x41\xd2\x73\xbb\x42\xff\x4f\x02\x44\x2a\xaf\x14\x5c\x7c\x2e\x06\x61\x02\x25\x31\x04\xe0\xf2\xee\xd6\xce\x70\x49\xbe\x97\x25\xa1\x62\x47\xa4\xde\x5a\x12\x54\xa6\x8b\x82\x96\x7a\x07\x27\xa9\xce\xeb\x59\x0c\x42\xe5\x96\x06\xf1\x72\x78\x39\x03\x57\xab\x19\xfb\x44\x78\x70\x9f\x3d\x3d\xf6\xa8\x66\xb8\xd9\xe0\xee\x4e\x9d\x4d\x1f\xb5\xe9\x9d\x8d\x11\x10\xfc\x6c\xcc\x4b\x27\x98\x8d\xdf\xda\xbe\xf9\x2c\x60\xdf\x7a\xff\x60\x66\xd3\xf3\x87\x5e\x62\xd6\x7c\xaa\xc8\x78\x42\x7b\xaf\x43\x77\xd9\x55\xbe\x62\xa5\x59\xac\xa7\x49\x8e\xcc\xf4\x9d\xbf\x25\x63\xaf\x8d\x90\xf0\x4f\x7f\x1c\x9c\x92\x11\x21\x36\xac\xec\x25\xc9\x3d\xd3\x4d\xa4\x58\xf3\xcd\x3d\x6c\xf4\x28\x71\xbd\x6a\x3d\x08\x7c\x5c\x10\x59\x58\xb9\x9c\xac\x8d\xd4\x67\xc8\x57\x51\xca\x47\x9e\x32\x92\x80\xbe\xe0\x80\x57\xe5\xa1\xe8\x04\xeb\xe1\x19\x83\x8b\xed\xc5\x49\xf2\x92\x2f\xfd\xbb\x0b\xff\xe3\x32\x11\xeb\x57\x4b\x73\x8b\x3b\xb7\xd6\x30\x78\x9e\x1d\x9e\xcc\x13\xcf\x32\xe0\xda\x8a\xa5\x84\xaa\xee\x14\xec\x27\xe1\x82\x3e\x71\xc5\x8c\x00\x48\xab\x4c\x63\xe6\xd9\x86\xbb\x7f\x38\x63\xf4\x8f\x3e\xa9\x9b\x8c\x2a\xcd\x93\xef\x32\x99\x3c\xdc\x1b\xb9\x3d\x88\x16\x67\x97\x3f\xdf\x1f\xbc\xd5\x92\x79\xcc\xe6\x5f\xfe\x7c\x4f\xae\xb9\x7a\xa8\xaf\xc9\x00\x01\xa7\xc0\x0c\xa8\xd6\x34\xd9\x32\x38\x24\x0a\x1a\x43\xc6\xf4\xd9\x99\x22\x5b\xa9\x34\xc9\x69\xb2\xe5\x82\x81\xb8\xa9\xb7\x4c\x10\xf6\xa9\x90\x6a\xe0\xa2\x39\xe9\xb5\x90\x69\xaf\x10\x64\x60\x97\x82\x69\x06\x72\x50\x2a\x13\x65\x44\xa0\x84\x15\x5a\x5d\x18\xad\x85\x6e\xd8\xc5\xa3\xd1\xe0\x98\xfa\x3d\x7d\x52\xcc\x2e\x73\x65\x96\x09\x4a\xcd\xd9\x04\x06\xb3\x56\x1f\x0d\x7e\x63\x08\xcd\xd9\xf7\x3c\x63\x6a\xa7\x34\xcb\x6b\xb2\x07\xf2\x3f\x4c\xc9\xee\xd7\x4e\x56\xe4\x89\x1a\x81\x51\x0e\xd2\xea\x5c\x56\x42\x2f\xc9\x47\x5e\xbc\x26\x37\x42\x55\xa5\x7b\xd7\xc0\x5a\xef\x7d\x82\x2b\xa2\xaa\xa2\x90\xa5\x66\x29\x59\xed\x46\xb9\x0a\x9c\x87\x59\x2d\x05\x89\xd8\x82\x59\x92\x9b\x4f\x34\x2f\x32\xa6\x5e\x93\x17\xec\x93\xfe\xd3\x8b\x73\xf2\xe2\xd3\x5a\x99\xff\x13\x7a\xad\x5e\x8c\x70\xbf\xdc\x90\x22\xae\x33\x27\x1b\x97\x16\x07\x56\xcc\x01\x22\x7c\x4d\x2a\x51\x5f\xad\xf6\x91\x0e\xc2\x3c\xd6\x51\x0f\x7e\xe0\xe3\xfb\xeb\xf7\xaf\xc9\x56\x3e\x91\x54\x92\x27\x66\x94\x4c\x23\x1b\x13\x56\x96\xb2\x54\x84\x8b\xfd\x6d\x06\x59\x3f\x91\x79\x51\xca\x9c\xab\x21\x6e\xe4\xf7\xd8\xa1\x7b\x1f\xa6\x11\x0c\x57\x33\x5c\x9d\xeb\x3d\x2d\xb3\x3d\xba\x18\xf7\xd1\xdc\x16\xff\x8a\x9f\xfc\x00\xbe\x39\xbc\x1a\x13\x66\x64\xce\xb5\xf6\xa2\x8b\xa7\x60\x5c\xd5\x2f\x93\xd5\xce\x43\x37\xbc\xab\x85\x3b\x83\x50\x8d\xe8\xe2\x5e\x31\x2a\xca\x85\x4a\xe9\xb7\xe7\x30\x2d\x8b\x18\x3b\x7b\xe3\xeb\x35\x50\x45\x5e\x7c\xfb\x62\x49\xee\x79\xce\x33\x5a\x66\xbb\xf3\xd1\xfd\x76\xa0\x9b\xf7\x0d\xd1\xf7\x1f\x32\x53\x7f\xf1\xcd\x0b\xf2\x52\x96\xf0\xc5\x84\x0a\x92\x31\xfa\x38\x8c\x1d\x30\x17\x4b\x11\x76\x84\xe5\x85\xde\xbd\x5a\x0e\x9d\x65\x88\x67\x92\x00\xdf\xb4\xa3\x64\x34\x7d\x2f\xb2\x1d\xee\xbc\xef\xdd\x9e\xbd\xd0\x65\xc5\x5e\x98\x73\x59\x4b\xc3\x34\x29\xb0\x77\x4b\x22\x3e\x38\x88\xf5\x42\x86\x85\x42\x41\x7e\x82\xfd\x7b\x6b\x0e\x17\x8e\xd9\x02\x5e\x8e\x21\xc3\x0b\x30\xc0\x8c\xd0\x85\xcf\x44\xb9\x9b\xfd\x5d\x49\x99\x31\xda\x2f\x52\x5b\xa8\xb7\xd7\xb8\xfd\xfd\x51\xf0\xbf\x55\x8c\xdc\x5e\x7b\xda\x5d\xb0\x52\x71\xa5\x0d\x85\x48\xdb\x1c\xd1\xec\xdd\xe5\xcf\xf7\x83\x7b\xf0\xf2\x32\xa7\x7f\x97\x82\xdc\x7c\x77\xef\xa6\xf0\xea\xb3\xb1\x34\xf2\x5c\x81\xd5\xef\x59\xac\x6c\x4a\xff\x5e\x95\xcc\x08\x0e\x41\x29\xe4\xd2\x3f\xb9\x2f\x79\x98\xdf\xc9\x35\xd5\xd4\x0a\x20\x96\xea\x48\xa0\x6b\xbd\x2b\x05\x9e\x66\xb0\x7f\x05\xea\x15\x3c\xde\x92\x22\x26\x30\xfc\x04\x28\xf8\xe6\xad\x4c\x91\x5c\xff\xdf\xcc\x14\xae\xec\x5b\x24\x37\xaf\x91\x77\x52\xb0\x73\xb8\x88\xc4\xdc\x44\xf7\x9f\x3f\x97\x5c\xb3\x41\x72\x12\x64\x0d\x06\xff\xde\x61\x95\x1e\xc3\x18\xde\x39\x65\x07\xee\xaf\xd9\x52\xc0\x60\xc7\x24\x56\x99\x5c\x11\x87\x61\xcf\x99\xd1\x8f\x1f\x6e\xd1\x13\xfa\xf1\xc3\xed\xe9\x26\x13\x21\xa8\xed\xcb\x69\x35\x6f\x24\x6f\x9d\x7e\x4e\x5b\x12\xc0\x30\xb3\x30\xef\xb6\xa5\xaf\x71\x29\x6b\xb9\x27\x5f\x0d\xc2\x75\x72\x57\xb4\x7c\x75\x72\xbd\xfe\xec\xe6\x53\xc1\x12\x5d\x1b\x88\xc9\xfd\x96\x1a\x22\x42\xf2\x2a\xd3\xbc\xc8\xdc\x41\x9a\x93\x55\x86\x72\x0e\xae\xd0\x1d\x35\xa1\x49\x02\x37\x96\x5c\xb3\x94\x27\x54\x1b\x58\x46\xc4\x6a\x43\x32\x80\x0e\x5f\x78\x4b\x05\xdd\xf4\xd3\x2f\x3b\x80\x16\x91\xdc\x3e\xd6\xc2\xb8\x97\x52\xc0\x7e\xd6\x7f\xa2\x8f\x94\x67\x74\xc5\x33\xae\x77\x86\x87\xbe\x1a\x66\x6c\x8e\x09\x02\xa3\x54\xb0\xf4\xc9\x97\x39\x8a\xed\x5f\xb7\xbe\x0b\xcc\x97\xbc\x34\xef\x5f\x3c\x19\x82\xf2\x6a\xd9\x70\xfc\x2d\x2b\xad\x3a\x39\xb8\x04\x2b\x2e\x74\xc4\x04\xc5\x34\x60\xea\x9e\x34\x30\x8e\x4e\xc3\x2c\x77\x9c\xb5\x78\x22\x36\xf8\xc7\x1f\x3f\xdc\x4e\x62\x3b\xe6\x4e\xe3\xd8\x8e\x79\xb2\x97\xed\xc0\x1f\xee\x59\xf9\xc8\x13\x56\x73\x9e\x41\xdb\xe5\xf1\x39\xcf\x6f\x17\x27\x08\x51\x2c\x29\x99\x46\xb3\xaf\xb6\xad\xce\xbe\x6a\xd5\x99\x44\x0a\x4d\xb9\x50\xee\xc4\xee\x47\x59\x06\x21\x97\x8e\x5c\x00\x27\x34\x67\xf5\x57\x36\x24\x0d\x07\x6f\x2c\x5c\x78\xf4\x02\x80\x32\x92\x01\x4c\x47\x7c\x6f\xfc\x16\x35\xbb\xd9\xff\x67\x3f\xd5\xd8\x9b\x94\xb0\x62\xbb\x0e\x9b\x16\xaf\x58\xb1\xfd\xfe\xbe\x73\x87\xe0\x37\xf2\xfd\x7d\x47\x62\xb3\x77\xc4\x1c\xdc\xf0\x8e\x9a\x77\x0b\x99\x9e\x29\x92\xf1\x35\xd3\xbc\x77\xd2\xa1\x9b\x93\x4b\xc1\xb5\x2c\x07\xd5\xd0\x2e\x17\xfb\xe0\xf7\x96\xbc\x75\xef\x59\xe7\x61\x22\xb3\x8c\x25\xa0\x45\xca\xb5\x5d\x90\x07\x1c\xa3\xeb\x30\xa7\x13\xd7\xe1\x0e\x56\x7c\xbf\xb0\x9b\x7b\xf1\xe1\xe6\xf2\xfa\xed\xcd\x32\x4f\x7f\xbf\x95\x4f\x0b\x2d\x17\x95\x62\x0b\xae\x87\x38\x09\xd7\x2c\x1f\x51\xaf\x83\x68\xeb\x1f\xa1\x65\x49\xfb\x71\xbf\xa0\x7a\x8b\xdb\xb8\xf7\xce\x28\xfb\x9a\xfc\xe8\x4c\xa0\x60\xf2\x30\x27\xce\x52\x52\x4a\xa9\xcf\x49\x49\x9d\x8f\x62\x80\x10\x10\x47\x3e\xd7\x55\x96\xd9\x3d\xd6\x25\x63\xe7\x6d\x05\xf3\xe2\xf3\x70\xd5\xd6\x72\xb0\xc4\x74\xd8\x6c\xe5\x89\x6c\x0c\x31\x05\xe4\x19\x51\xce\x4f\x87\x54\x58\x7a\x3d\xc4\x54\xc7\xf6\xf2\xbe\x7e\xd3\x3b\x5d\x0c\x82\x99\x9d\x7d\x60\x3b\x02\xee\xf9\xb5\x1c\x16\x0d\x7f\x54\xac\xec\x62\x03\xd3\x09\x2c\xf3\xa2\x52\xac\x5c\x3a\x6e\x70\xf2\x7b\x17\xe6\x07\x30\x91\x0f\xfd\x8e\xd8\xf0\x06\x7d\x60\x6b\xeb\x94\x73\x9e\x27\x2f\x3b\xd0\x4a\x6f\x99\xd0\x46\x1a\xee\x73\x18\x74\xbf\x0e\xd6\xae\x83\x1d\x03\xbb\x55\xaf\xb5\xe1\xb8\x5b\x14\xa2\xca\x24\xe0\xa5\x3b\xdc\xa4\xb6\xc6\xea\x76\x46\x47\x9b\x4d\xe4\xa3\x11\xe1\xd8\xd3\xc5\x93\x2c\x1f\xb8\xd8\x2c\x9e\xb8\xde\x2e\x2c\xc7\x53\x17\xe0\x6d\xbe\xf8\x3d\xfc\xdf\xc8\xbc\xbc\xa1\xf8\x32\x4d\x9d\xd7\xb5\x52\x6c\x5d\x39\x7f\x94\x5a\xb6\xe2\x81\xce\x41\x81\x3a\x27\x15\x4f\xff\xe7\xd0\x56\x91\x18\x52\x3d\xe2\x8c\x37\x57\x60\x02\xad\x2e\xfd\x55\x2c\x69\x2a\x15\x40\x81\x93\xa9\xd1\x66\x98\x0a\x29\x42\xd3\x9c\x8b\x2f\x7e\xe1\xc6\x05\xa2\x11\x3e\x3d\x2e\xf0\x70\x91\xf6\xef\x68\x77\x37\xaf\xe0\xb9\xae\xc4\x63\xdf\xf5\x16\xe8\xda\x0b\x46\xbd\x36\x30\xe0\xe3\x92\xc2\xfb\xc8\xba\x1e\x32\xd4\x85\xcd\x77\xea\x6f\xd9\xc2\x7e\x79\x51\xa4\xcd\x1e\x7f\x6e\xd7\xd6\xe7\x31\x99\xec\x39\xa6\x86\x2d\x26\x1d\x87\xd5\xb1\x0c\x27\x28\xe9\x2e\xea\x44\xc8\x2c\xc4\x1c\x61\xef\xc2\x72\xcb\x04\xae\x0c\x61\x7c\xca\xfa\xb0\x1d\x73\x75\xf1\x80\x4e\xe7\x1c\xf3\xfc\x15\xb4\xa4\x39\xd3\xac\x54\x36\x38\x40\x4b\xf3\x96\x30\x6f\x6b\x49\xde\x17\x4c\xdc\x6b\x9a\x3c\x0c\xda\x7e\x67\x4e\xfa\xd9\x39\x69\x9c\x5f\xc8\x11\x79\x9e\xd6\xe7\xcb\x53\x23\xa5\x39\xf7\xa5\xff\xb3\x70\x4c\xe1\xab\xa2\x28\xa7\xf1\xf5\xd8\xb8\x96\xb7\xb4\x37\xf2\xae\x27\xba\xe7\x2d\x2d\xf6\xd8\x67\xfd\x33\x58\x76\x5c\x68\x73\x21\x8b\x2a\xb3\xc1\xeb\x3d\x13\xda\x72\xe5\x26\x3c\x81\xdd\x39\x51\x07\xef\xd8\x69\x88\x43\x2e\x53\x46\x56\xdc\xd2\x87\x4a\x31\xc3\xc4\x21\x18\x9f\xa5\x96\xeb\x8d\x85\x5e\xb8\xef\xb6\x39\xa5\x8d\x4f\x5e\x31\xfd\xc4\x98\x20\xdf\x80\xcc\xf0\xcd\x7f\xfb\x6f\xff\x6d\xd9\x21\xe2\xdf\xfc\xf9\x4f\x7f\x1a\xc6\xa4\x6b\x5e\xb2\x44\x43\xf4\x3e\x31\xf7\xd2\xb9\x52\x40\xd9\xa2\x25\x83\x60\x44\xba\x5e\x5b\x7b\x3d\x30\x5a\xae\x3c\x15\x1f\x86\xfa\xd1\x3c\x95\xf3\xcd\xd6\x85\x29\xc2\x31\x65\x3c\xd1\xf0\x0d\x77\x81\x6d\x70\x96\xb2\x07\x67\xbf\x31\xe8\xa0\x23\x3e\xca\xc9\xec\xe1\x39\xc9\xf8\x03\x23\x6b\x05\xc1\x8a\xe7\x3e\x28\x88\x94\x4c\x41\xac\x14\x15\xe6\xab\xf6\x23\xb9\x1c\x08\x1c\x35\x03\xce\x42\x31\x7d\x62\xe7\xfc\xa8\xf1\xa5\x83\x2c\xb7\x1d\x89\xe2\x9c\x30\x9a\x6c\x8d\xc2\xbb\xb0\x47\x5d\x50\x5e\x7a\x67\xd7\x35\xd5\x74\x64\xab\x58\x96\xee\x11\xee\x84\xa5\xad\x4b\xe4\xa3\xc5\x8a\x52\xfe\x97\x3d\x5c\x2e\xac\xee\x38\x08\xd4\x8b\xa8\xca\x09\x69\xe4\x69\x2b\x95\x33\xb0\x3a\xc5\xc0\xe8\xe6\xe6\x34\x0c\xb3\x63\xc2\x07\xf9\x0e\x43\x34\xab\x3a\x8c\x9c\x63\x90\xf9\xc1\x52\x03\x4e\x0d\xcc\x74\xd4\x2a\xd4\x84\xcb\x1a\x3c\x56\x16\x43\x2a\x71\x00\xd5\xc5\xcf\x3b\x72\x32\x1a\xd3\x42\x61\x6d\x06\xf7\x6b\xd8\x4f\x5b\x9e\x6c\x7d\xc0\xae\x83\xe1\x4f\xa7\xde\x68\x54\xdc\x89\x62\xba\x72\x47\x02\x01\x44\x66\xae\x4c\x29\x17\x26\x9d\xd3\xf2\x81\xa5\x75\x2c\xe3\xf0\x34\xef\xcc\x62\xeb\xe0\xe0\x92\x65\x54\xf3\x47\x56\xa7\x68\x98\x69\x3a\x29\x04\x3e\x7e\xb6\x5c\x9e\xd9\x8b\x3e\x62\x48\x51\x9a\x96\xee\xd6\x9a\xe7\x87\x3e\x1e\xb0\x2f\x76\x90\xfc\x2d\x2d\x5a\x49\x16\x66\x5b\x41\x5c\x82\x99\x38\x12\x44\xdd\xce\x0c\xaf\x15\x23\xeb\x10\x03\x7c\xec\xcf\x3d\xce\x65\x37\x1d\x87\x6c\xc3\xdf\x27\x38\x01\x82\x80\x59\x79\x98\x55\xf4\xcc\x22\xc0\x30\xea\xc0\xd2\x61\xcc\x72\x9f\x45\xf0\x89\xdb\xf5\x5e\xb4\x79\x00\x66\x0b\x67\x5b\x7c\xb0\x1b\x7a\x7a\x40\xfc\x03\x30\x23\x58\x43\x8b\x05\x04\x80\xc6\x31\x08\xd8\xe3\x00\xc4\x31\x36\x61\x07\x86\x59\xd8\x11\x66\x19\x76\x8c\xd9\xd4\xed\x38\xc0\xdf\xfa\xd6\xdb\x8b\xbd\x6e\xb6\xcd\xe8\xda\x20\x26\x0d\xd3\x63\x3b\xec\x15\x58\x92\xb7\x8e\x66\x18\x1c\x12\x84\xae\x94\xcc\x2a\x6d\x01\x37\x7f\x74\x04\x05\x81\x37\x30\x21\x96\xb1\xdc\x90\x49\xa0\x25\x35\x90\x16\x91\x01\xf2\x1d\xba\x51\x66\x8c\x51\x23\xf7\x51\xcc\xf5\x1c\x13\x6b\xed\x58\x98\x0d\x19\xf9\xab\x59\x57\xc0\xb1\x32\xa2\x40\x84\x1d\x2b\xe8\x0c\x85\xaf\x46\x5b\x3b\xaa\xa6\x16\x3c\x45\xcf\x17\x71\x0e\x55\x17\xf9\xf8\xb4\x65\xce\xc1\xd4\xe2\xd5\x44\x96\xc4\x10\x5b\x10\x10\x0c\xf9\x1c\x16\x1c\x99\x4b\xcd\x1c\xcf\xf4\x18\x36\x31\x8c\x2b\x45\x8a\x87\xd5\xa1\xfb\x5b\xf2\xf2\xca\x5e\x3e\x56\x7a\x17\x36\xb9\x15\x9a\x95\x6b\x9a\xb0\x57\x6d\x35\x69\x2c\x26\xca\xc7\xdf\x6f\xa9\x48\x33\x2b\xe3\x53\x41\xd8\x27\x97\xe6\x69\xbe\x93\x96\xfc\x91\x95\xe4\xe5\x65\x56\x6c\x29\x59\x33\xaa\xab\x92\xf5\x06\xb8\x04\x95\x27\x80\x84\x8b\x4c\xb0\x1f\xdd\xcb\xb8\x81\xf3\x6a\xa6\x04\x93\xb7\x33\x1f\x46\xc7\x96\xbe\xb7\x34\x87\x0d\x3c\x00\x88\xcd\x4e\x56\xa5\x33\x4c\xfb\xf4\xad\x44\x96\x46\x21\x1a\x4a\xaa\xb1\x83\x2a\x52\xb2\x8d\x91\x26\x4b\x10\x47\x5d\xde\x66\x65\x7e\x98\x1c\x3f\x75\x94\xc8\xb3\xc3\xf8\xb0\x70\xfc\xfd\xda\x09\xb0\x90\x18\xe3\x04\x70\x70\xfe\x38\xc1\x81\x2b\x52\x50\xe5\x0c\x16\xe0\x5c\x52\x4a\x26\x9c\x0e\x99\xa6\xcd\x68\x9d\x91\x15\x93\x41\x44\x48\x99\x66\x65\xce\x05\xeb\x04\x03\xb7\x93\x11\x86\xe5\x7a\x5a\x14\xd9\x6e\xf2\xe6\x0a\x99\xb2\xbb\x6a\x95\x71\xb5\xbd\x8f\xb2\xed\xbd\xeb\x79\xd1\xfa\xf9\x0f\x7c\x6e\xd6\xde\x37\xb8\x80\x03\x3b\x20\x51\x4c\x28\x0e\xcc\xba\x9d\x01\x6a\xa4\x4f\xaa\xea\x1c\xec\xab\xfb\xbe\x48\x26\x37\x53\x77\x0b\x24\x64\x16\x64\xcc\xe5\x65\x9a\xcd\x6f\xcd\xfb\x27\xa7\xb7\x89\x14\x7e\xfd\x51\x14\xed\xdf\x07\x81\x27\x34\xcb\x94\x93\xe6\xac\x3e\xc9\x55\x4d\x6c\xad\x4c\x05\x6a\xc5\xca\x63\x0b\x37\x88\x14\xda\x85\x76\x06\xa1\x41\xbd\x66\xe3\xf6\x36\x48\x91\x5c\xda\x94\x15\x01\xa9\xa7\xf6\xa1\x61\xb9\x8f\x66\x99\x07\x54\x9f\x8c\x02\x13\x86\x45\xde\x21\xd4\x99\x8d\xa6\x9f\xdd\x68\x1a\xe5\x9a\xb8\xaf\x53\xa5\x29\xbc\xb8\x80\xc8\xcb\xbd\xa4\x39\x47\xbc\x43\x4a\x63\xc0\xb7\x31\xd9\x5d\x60\xbf\x7b\xa9\x6d\x1a\xfd\x30\x26\xb5\x0b\x85\x84\xb1\x0e\xb1\xd5\x9d\x9d\xfa\x69\x6f\x16\xc0\xf6\x99\x72\x54\x62\xe1\x94\xbc\xa4\x85\xf1\x23\x2c\xd3\xe8\x5d\xf5\xdd\x69\xd1\x22\x07\xad\x61\xa4\xc0\x43\xed\x8f\x67\x8a\xa4\x32\xa9\xf2\xde\x52\x14\xed\x61\xce\xab\x71\xdf\xb9\x32\x11\xd3\xb0\x29\x10\x27\x0a\xf3\x8a\x95\xbf\x52\xf9\x24\x9e\x68\x99\x5e\xde\xf5\x06\xa5\x77\xc5\x94\xe6\xd9\xb6\xc4\xe5\x41\x40\xfa\xb5\xcd\xe9\x77\x21\x9d\x63\x81\x6c\x1d\xdb\xf5\x6c\xa7\x6e\x8f\xd9\x4e\xfd\x55\xd9\xa9\xcd\x93\x56\x0c\xca\xb8\xd2\x86\xdb\x75\x30\xde\xd9\x88\x7a\xf3\x9f\x11\xdf\x1a\xbe\x63\x96\xc6\xed\xc7\x5e\xb7\xc4\xa7\x31\xd6\x25\x1d\x16\x37\x36\x91\x96\x30\xe6\xaf\x27\xb0\xc6\x67\x9a\x1d\x01\xc6\x88\x84\xd9\xb3\xc6\x56\x38\xe9\x3d\xcb\x0c\x93\x07\x2b\x7b\xcb\x8c\x5f\xc8\xf4\x35\x91\x63\x9e\x77\x3b\xa0\x2c\x0c\xec\x85\x3a\x77\x75\xad\xce\xad\xfe\x64\xf0\xaf\x2e\x93\x01\xb7\xa6\x26\xc2\x01\xd3\x16\x6e\xd9\x64\xb0\xc0\x11\x62\x03\x7c\xc9\x23\xb7\x5a\x57\xe3\xc8\xfc\x27\x54\x6c\xba\x33\x17\x9d\x87\x8c\x74\x66\x18\x66\xae\x99\x4d\x63\x65\x65\xae\x88\x5c\x9f\x77\x72\x2e\x5e\x3c\x7e\x3b\xa2\x0e\xf9\x81\x34\xee\x12\x7f\xdc\x77\x41\x5b\xdd\xc1\x92\xef\x3a\x26\x3a\x57\xa0\x40\xc1\xe9\x7b\xa5\xb2\xb6\xcc\x22\x16\x0e\x17\xcf\xee\xe2\x11\x97\x17\x36\x90\x11\x60\xb5\xf5\x26\x20\x6c\x72\xa3\xf6\x30\x32\x9b\xcc\x67\x93\xf9\xc1\x38\x91\xc9\xbc\x45\x76\x1d\x85\x21\x6e\xd9\x6d\x33\xfa\xa8\x31\xc8\x8e\x3d\x4b\xfb\x8a\x79\x89\xc9\x09\x42\xde\x90\xee\xad\xe8\xb2\x8c\x30\x9d\x9f\x9d\x2d\x97\x67\x67\xde\xf2\xee\x90\xb4\xd2\xeb\xc5\x5f\x08\x13\x89\x4c\x2d\x0a\x99\xaf\x97\x4a\x03\x6b\xc5\xcd\xb6\xbb\xca\xdc\xcf\xb3\xed\xf3\x83\x2f\x8f\x1f\x22\x92\x94\xf8\x9c\xe7\xef\x27\x30\xc7\x86\x25\xd6\x99\xd3\x6e\x09\x89\x37\x81\xa2\x78\x63\x5d\x2a\x8e\x64\x1c\x2a\xaa\x19\x34\xaf\xab\xaa\xbd\xb4\x3f\x2e\x93\xa2\x3a\x77\x0f\x2c\x73\x96\xcb\x72\xa4\x7a\x80\x87\x6b\x41\x98\x57\x3b\x30\xdd\xfb\xaf\x80\xdb\x26\x55\x59\x32\xa1\xb3\xdd\x09\xf8\x6e\xbd\x0f\x63\xb9\x45\xcd\xd8\x8b\x4b\xad\xed\xc8\xb6\x0a\xa4\xa7\xf9\xa0\xa8\xb9\x78\xdc\xd0\x16\x90\x96\x29\x1e\xde\x63\xe2\x91\x3c\xd2\x52\x8d\xaf\x90\xc4\xb1\xda\x94\x3f\x72\x25\x07\x2d\xc8\x03\x0b\xbc\xef\x94\x5b\x93\x95\x2e\x2a\xed\x68\x8f\xc7\xa3\xb1\x7a\x32\xdd\x51\xe3\xd0\x9e\x54\xf1\xed\x8b\x63\x2e\xd4\x7f\x25\xf6\x28\x1b\x7a\xd6\x54\x28\xf4\x42\xc5\x11\x4f\x02\x2b\x15\x8c\x96\xfe\xe9\x7e\x35\x20\x14\x60\x1c\x75\xa7\x75\xc5\x8d\x02\x00\x13\xe8\x35\x47\x04\x81\xdf\xb8\x27\xbb\x71\x6c\x9a\xe5\x85\x2c\x69\xb9\x23\xa9\xd3\x74\x77\x3e\xa2\x8d\x96\x03\x96\x1a\x9b\xf2\xd6\xca\x79\x7b\x76\x6d\x08\x58\x45\xca\xcb\x29\x71\xe0\x39\x4b\x79\x95\xe3\x6c\x0d\x3f\x43\x21\x22\x57\xdc\xc8\x67\x65\x5b\x00\xde\x0c\xb2\xa2\xc9\x83\x95\xdc\xea\x0d\x19\xd3\xe3\xbb\xb5\x45\x5e\x38\xaf\x43\xce\xa8\xa8\x25\x41\xf0\x23\xc9\x94\x99\x1d\xf3\x0f\xdb\x6f\x8e\x04\x5a\x7a\x89\x50\x38\x23\xb7\x8b\x5a\x79\xe9\x00\xbc\x32\x8c\xfc\x2d\xd0\xf8\x93\x6e\x3e\x41\xe5\x12\xf1\xbf\xb3\x37\x86\x6d\x21\xab\xfe\x48\x4d\x33\x42\x5d\xaa\xe5\x1a\x2a\x3b\x66\xf5\x69\x74\x78\xc0\x41\x91\xd3\xf6\xa8\x11\xda\xfb\xd8\xcc\x69\x98\xb9\x58\x1e\x0a\x66\x82\x4c\x49\xf0\xe0\xf0\x84\xae\x5c\x4d\x35\xcb\x19\x07\xa1\xba\x93\x01\x60\x39\xfd\xc4\xf3\x2a\x27\x95\x32\x33\x93\xc2\xbd\xeb\x31\xa6\x9e\xc0\x93\xc1\x9c\x61\x2b\x8a\x45\x81\x9c\x0b\x00\xd6\x15\xf1\xcd\x5f\xee\xfd\xfe\xb5\x82\xbc\xb6\x6c\x24\x2e\xdd\x0b\xc9\xaa\xca\xcd\x06\xba\x59\x39\xd1\x42\xae\xc1\x27\x51\x33\x66\xa8\x0a\x45\x6d\x55\xb2\x8f\x23\xe6\xa3\x16\x1e\x0b\x9e\x75\x11\xd9\xd7\xef\xaa\x37\xb6\x12\xce\x0f\x8d\x8e\xa0\xef\x47\xca\x4a\xb1\x72\xb1\xa9\x78\x7a\x34\x74\x1c\xa5\x96\xeb\x24\x48\x27\xbf\xbf\xea\x12\xc8\xef\xf9\xaa\x64\xe4\x6a\x4b\x85\x60\x59\xbb\xfc\x6e\xb7\x7c\x5c\xef\x64\x3b\x25\xe5\x02\x15\xe5\x9e\x99\x7d\xff\xf5\x67\xc3\x9c\xbc\x80\x88\x75\x3a\x0d\x82\xfd\x6a\x8b\xa6\x65\x15\xb2\x5c\x5a\x63\x6d\xf8\xfe\x8a\x68\x5a\x6e\x98\x36\x2f\x13\x01\xb5\x32\xbf\xa6\x42\x5f\x5f\x3a\xad\x67\x7a\x06\x8e\xdd\xd6\x9f\x7f\x7e\x87\xcc\xc6\xef\x3b\x93\x27\x59\x66\xe9\x13\x4f\x5d\x71\x60\xf2\xd2\x80\x7b\xf5\xe5\x52\xe4\x9f\x9e\x78\x3a\x65\x39\xce\x7c\x04\xcb\x21\xb0\x1e\x97\x36\xc2\x0d\x57\x79\x09\x60\x5f\x0d\xb3\x67\x0e\x46\x1b\x78\xca\x9a\x1d\xf2\x15\x17\xd4\x17\x28\x68\x36\x1a\x48\xa1\xc1\x63\x67\x06\x1b\x84\xa8\x98\x3e\x27\xab\xca\x19\x35\xa4\xde\x12\xc5\xf3\x2a\xd3\x54\x30\x59\xa9\x6c\x37\x78\xec\xa7\xde\xe2\x71\x9e\x93\xb1\x4f\x16\x39\xc3\xbc\xa7\x7e\xb4\xcb\x83\x36\x4c\xb0\x92\x27\xfe\x40\x3a\x4c\xa8\xdf\xa3\xa2\x6c\x5c\x8d\x2d\xdc\x7f\x51\x67\x77\x56\x86\x98\xd9\x38\x2b\x96\x90\x15\x35\x7c\xa7\xc8\xaa\x0d\xef\xb5\xdc\x7e\x96\xa8\xaa\x26\x96\xc4\xc8\xca\x41\xa1\x6f\xdc\xd5\xfe\x0f\x58\x66\xeb\x63\x7f\x44\x53\xca\x0a\x26\xcc\xc5\x13\x6d\xac\xb2\xcb\x9b\xbc\x7b\xce\xd6\xfb\x65\xc2\x0c\x5a\xb4\xe9\xe6\x93\x2e\xa9\x21\x28\xb9\x21\x1d\xde\x02\xcd\xd7\x84\x8a\x61\x22\x70\xdc\xf0\x90\x5f\x31\x8b\x3b\x51\xe9\x87\xd3\x84\xa1\x59\xea\x34\xcc\x12\x60\xa2\x3e\x5c\x6c\x30\x2c\xcc\x7f\xbd\x9d\x47\x33\x1a\x99\x18\x1b\x1e\xd6\x0a\x03\x1b\xa6\x5d\x87\x81\x2d\x76\x75\xf5\x2a\xe6\x04\xdb\xaf\x24\x56\xec\x14\xd1\x3d\xeb\x4c\x26\x0f\x88\x6a\x0d\xdf\xdb\xe7\xf6\xb4\x50\xf7\xe3\x7e\xb9\x86\xae\x86\xd9\xbb\xd8\x6e\x95\x06\xb8\x27\x2d\xe6\x00\x8e\x6e\x07\x1c\x1a\xb2\xc8\x0c\x2a\xed\x73\xdf\x5d\xa0\x9f\x54\x56\x62\x20\xa3\x3c\x28\x33\x50\x4d\x55\x44\x29\xb5\xfd\x2a\xa0\x8a\x69\x1b\x5f\x06\x05\x9c\x7c\x7f\x17\xb2\xf8\xd7\x71\x67\x99\x5b\xa9\x87\x60\xc4\x0c\xbf\x6a\x6f\xf7\x03\x9f\x8e\xe2\x29\x73\xb0\x53\xb3\xff\xc9\x48\xb4\x71\xb8\xc0\xa8\xfd\xda\x8f\x3f\x22\xf3\xb4\xcd\x83\x7b\x6b\x75\x07\x06\x16\x17\xa8\xed\xdb\x48\xe0\xc3\x6b\x5d\xb7\x10\xc6\xc1\x39\x81\x2d\x65\x93\xb0\xbb\xba\xbc\x30\xaa\x6c\xee\xd9\x0f\x57\x37\xdd\x57\xba\x48\xfe\xc3\xd5\x4d\xb7\x70\xff\xa8\x80\x3b\xad\x70\x3f\x19\x49\x36\x3d\x46\xe1\xfe\x4d\xc2\x9a\xa2\xcb\x29\x57\x0f\x73\xd5\xfe\xdf\x64\xd5\xfe\x83\x73\x1e\xf6\x11\xcc\x25\xfb\x07\xc6\x5c\xb2\xbf\xbf\x64\xff\x67\xa1\x41\xe4\x68\xa6\xc1\x22\x45\x73\x73\x5f\xa1\xbe\x6d\x00\xb8\xbb\xee\x94\xa5\xff\xe1\xea\x66\x69\x0b\x34\x8e\x50\xab\x4e\xf9\x12\x5f\x8a\x1b\xde\xfc\x5c\x5b\x77\xe4\x3a\x48\x87\xf5\x6e\x47\x74\xc1\x11\x6f\xcb\x5e\x75\xa3\x03\xd5\xf4\x73\x6f\xd0\xd4\x42\xcb\x16\xa7\xa2\x45\x12\xae\x3f\xb0\xa2\x97\xd2\xef\x09\x22\xf6\xc1\x3d\x2b\x1b\x87\xee\x89\x52\x71\xf0\x82\x53\x0d\xc5\x01\x4a\xcd\x93\x2a\xa3\x43\x56\x71\x6b\x63\x5b\x92\xeb\x9b\xbb\x0f\x37\x57\x97\x1f\x6f\xae\x5f\x13\x0f\x9d\xb7\x85\xc8\x25\xf9\x28\x1b\xa3\x9c\xad\x20\x63\x1d\x74\xfd\x36\x5b\xae\xb7\xad\x39\x9d\x3b\x72\x48\x45\xe3\x75\x84\xc2\x19\x54\x90\x5b\xc1\x75\x13\x49\x33\x28\x32\x25\x99\xf4\x2d\x3d\x0d\x44\x67\x0b\xdc\x70\x7d\x6e\x05\x24\x57\x03\x7a\xcb\xf6\xbe\x00\x77\x14\xfc\xfd\xfd\x60\xfd\x97\x7b\xb5\xd7\xa0\x3a\xe0\x7d\xec\xb8\x2a\xfc\xd6\xbe\xde\x44\x2a\x58\x9e\x50\x07\xba\xf9\x2a\x13\xb2\xb4\xb1\x64\x83\x17\xa5\xa9\x2b\x01\x5c\xe8\x6c\x79\xe6\x85\x9a\xac\xae\x05\xe2\x83\x27\xeb\x8f\x8d\x56\xa1\x76\x4e\xde\x2e\x0e\x2d\x09\x79\xef\x5b\x6a\x9d\x1b\xc9\x64\xaf\xdc\xc8\x60\x92\x85\x9f\x65\xe3\xc7\xed\x81\x5e\xc7\xea\x56\xab\xf6\x24\x6d\x32\xfb\x20\xd0\x0d\x7f\x64\xc2\x6e\xdc\x74\xd2\xe6\xa7\x80\x3a\xb5\x0f\xcd\x8c\x7f\xfc\xf0\x66\xfa\x47\xed\xcd\x41\x7d\xf2\x4a\xe6\x39\xd7\x64\x4b\xd5\xb6\x4e\xd2\x6a\x7c\xeb\xf5\xad\x9d\x36\x97\x71\xca\xd5\x6c\x4e\x34\xf5\xb2\x89\xbc\x88\x0a\xd6\x67\x3f\xf8\x47\xf7\x14\xa8\xfa\xe7\x83\x3a\xd6\xfd\xce\xae\x26\xd0\x07\x19\xd4\x33\x54\x34\xb3\x9e\xfb\xf3\x6a\x3a\xfa\x86\xb4\x48\x6f\xd5\x8d\x7f\xbc\xdd\x24\xb1\x6e\x6a\x0b\x42\x06\x2c\x31\x65\x9a\xf2\x6c\xd8\x0a\xd5\xec\x9b\x96\x85\xcc\xe4\x26\xae\xfe\x6c\xcf\xe2\x7f\x6f\xa3\x70\x17\x74\x61\x76\x75\xba\x6c\x8e\xad\x6d\xed\x83\x88\xcd\x06\x34\xab\xa9\x65\x55\x88\xdf\xc5\x2b\x42\x9f\x7d\xa1\x47\x14\x96\xf6\x57\x3f\x2c\x79\x83\xd6\xe8\xcb\x7f\x03\xdd\x6c\xf2\x3c\x0b\x56\xe6\x5c\xd9\xbe\xef\x3d\x52\xd4\x20\xd0\xcf\x86\x35\x53\x05\xab\xfa\x86\xf5\x8b\x5d\xfd\x81\x8c\xa3\x64\xcb\x50\x97\xa1\x24\x94\xc3\x56\x43\x80\xa8\x1d\xa2\x55\x94\x6c\xc1\x3e\x71\x05\xf6\x01\xdb\x86\xb2\x6c\xb8\x6e\xbf\x1f\xaa\x55\x9f\xdf\x1b\x7a\x7c\x40\x8e\x7d\x33\xdb\xed\xc7\xd5\x34\x72\x4a\x2f\x48\x6f\x66\x03\x57\x2b\xcd\xb2\x9d\x2d\x95\x08\x19\xa3\x56\x2d\xa7\x1b\x98\xb0\x2c\x9d\x99\xba\x28\xf9\x23\xcf\xd8\xc6\x7c\x62\xcb\xc5\xa6\x9f\xbc\xd4\x19\xad\x34\xcb\xe4\x13\x73\xa9\x36\xec\x60\xfe\xe6\x7e\x2a\xdd\x8e\xda\x1a\x14\x37\xde\xbd\xff\x48\x04\xb3\x9f\xed\xef\x72\x1e\x23\xd0\x9b\x49\x0c\xc6\xaf\x2e\x16\x0b\xb0\x5f\xbc\xfc\x2f\x23\x3b\xa6\xd9\x2b\xf2\x33\x73\xdf\x36\xc2\xb3\xb9\xd1\x89\x26\x4f\x5b\x09\x9a\x6e\xa5\xdc\x9a\xc6\x4f\x2f\xb7\xed\xda\xa8\x48\xfd\x9b\x17\xe6\x6d\x23\xc0\x59\xb6\xd5\x81\x01\x19\xd8\x8a\x34\x1e\xb5\x49\x72\x66\x24\x25\xf5\x46\xd8\x5a\xac\x6a\x61\x5c\x5d\x3e\x60\x34\xea\xd7\xf6\x73\xdf\xe5\x19\x17\x0f\xd0\x77\xda\x91\x29\x83\x05\x2e\x94\x4e\x3c\x78\xdc\x2c\x19\xcd\x5a\x54\x7a\x44\xbf\x7b\xee\x29\x4f\xa6\xd0\x1a\x6d\x90\xfc\xb8\x2b\xac\x1f\xbf\xbe\xee\xce\xf9\xdc\x26\xa3\x2f\x5e\x9c\xca\x30\xf7\xcc\x95\x06\xd4\xd2\x09\xf4\x91\x2b\x4c\x5d\x9d\xb3\xdb\xfb\xab\xfb\xdb\xbd\xc6\x3e\xf6\xb7\x43\x93\x78\x5c\xe0\x61\x4c\xe4\xe1\x30\xfe\xe1\x98\x1a\x2c\xf6\x79\x32\x60\xb2\xa5\xc5\x65\xa5\xb7\xd7\x5c\x25\xf2\x91\x21\x95\x0c\x5f\x58\xc9\x19\xa6\x09\xf7\x5b\x67\x61\x90\xab\x7f\xbb\xbc\xc3\x75\x27\x08\x3b\xd0\xfd\x0c\xef\x99\x42\x6b\x24\xfd\xf3\x73\x10\x8e\x3a\xbb\xd9\x79\xf0\xd5\x3b\x0f\xe0\x96\xfc\x5a\x1d\x06\x5c\x70\xcd\xa9\x96\xa3\x19\x5f\x5d\x6d\xdc\xf6\x3c\xb7\x28\x7f\xeb\x5f\x07\xd7\x2e\x30\xd3\x0e\xc4\xb1\x64\xeb\x56\x0d\x54\x0e\xfa\x4e\xa2\x78\x5d\x79\x6c\x2f\x18\xf0\x9c\x08\xf6\xe4\xbe\xc9\xfd\x33\x83\x90\xff\xc5\x85\x6e\x1a\xbc\xa4\xd9\xbf\xbe\xfe\x97\x96\xd3\xe1\x5f\xeb\xa4\xd9\xba\x18\x45\x5d\xb4\x0b\xaa\xa4\x4f\x37\x25\x10\xc2\xff\x86\xa3\x1f\xce\xf4\x65\xd7\xf3\xef\x15\xcd\xec\x3e\xbc\x7b\x8e\x1d\xa7\xbb\x7f\xa8\x69\xf8\x33\xf4\x7b\xfe\xae\xd6\xb1\x2b\xc5\x80\x67\xd9\x27\x74\x49\x85\x32\x9b\x89\x2b\x8a\x73\xe6\x5c\x3f\x67\xe4\xa5\x4e\x8a\x40\x45\x9c\x23\x84\x52\xdb\x49\xba\x3d\x7d\x53\x87\x50\x0f\x7d\xf7\x48\x7e\x12\xc0\x2d\x9c\x69\xa3\x33\xc1\x3b\x78\x91\xbc\xe1\x4a\xdb\x78\x3f\x0b\x09\x9a\xe5\x40\x90\xed\xe0\x1e\x1b\x19\xe2\x0e\xca\x0b\x16\xbf\xd0\x34\x2d\x5f\x5b\xde\xe3\x0b\x3b\x94\x20\x49\xc8\xba\xe5\x55\xed\x81\x7b\xa9\x77\x05\x4f\x8c\x1a\x34\x4c\xa5\xae\xee\x00\x82\x22\x7f\xf9\xb3\xcd\x53\xff\xa7\x3f\xfe\xf9\x9b\xc1\xa3\x3b\x7d\x94\x73\x94\x0d\x21\xca\xdf\x32\x96\x18\x1f\xf2\xb7\x4c\x66\xe3\x71\x51\x7a\x20\x40\xdc\x37\x5d\x95\xdc\x2d\xb4\xf8\x63\x0e\xa7\xa6\xb1\x38\x31\x63\x8e\x38\xfb\xec\xd5\xc9\xec\x61\xd9\xbb\x3e\x95\x46\x58\xf2\x70\xb7\x47\x1e\x2c\x19\x18\x9c\xfe\xd7\x40\x1e\x9e\xa5\x95\xf1\xbf\xf5\xa1\xf1\xc2\x70\x83\xde\xdf\xdb\x3b\x1d\xab\xcd\x09\x8c\x79\xfe\xdd\x5e\x7b\x49\x41\xde\x0d\xf6\x96\x8c\x4a\xb4\x7d\xae\xb1\x47\xac\x7b\xd3\xe2\x8f\x6c\x3d\xf1\x2a\xaa\xd1\x2f\xdb\x41\xef\x66\x13\x14\x2b\xa1\x8c\xdb\x89\xec\x1c\x03\x0b\x24\x9f\xd9\x08\x6d\x56\x6a\x57\x6f\xf5\x8b\x71\xcd\x29\xda\xfc\xfc\xc5\x76\x6f\x9c\x61\x95\xd8\x6c\x90\xb3\x7b\x78\xd6\x3b\x2c\xcc\x5d\xb0\x11\x21\xa5\x11\x57\x0c\x25\x62\x4a\x79\x66\xf1\xee\xfb\xfb\x61\x85\xa0\x85\x4d\x5f\x04\x6b\x26\x99\x8b\x16\x6e\xde\xb1\xb4\xa7\x09\xbc\xb0\x52\xc7\x55\x46\x79\x6f\xe2\xfb\xde\x9d\xec\x7b\xcd\xfe\xe7\xbd\xb5\x29\x75\xec\xf1\x75\x60\xff\xb0\x65\xa9\x17\x62\xed\x8e\xa6\x4e\x6f\x82\x72\x5f\x93\xcf\xa6\x59\xec\xc2\x1f\x53\xf3\x93\xfd\x25\x31\x9f\x9d\x44\xd0\xe0\x4d\x7c\xd4\xd2\x95\x7f\x7c\x3f\x81\x69\x60\x2b\x46\xae\x66\xcf\x16\xf9\x4e\xb4\x85\xf4\x09\x5a\x9d\xca\xd1\x47\xb6\x41\x3c\x6b\x5f\xc9\xd1\xe9\xe8\xcf\x91\x69\x2f\x21\x75\xf2\x79\x62\xf7\xf8\x75\xae\xb1\x26\xfa\xe2\x6e\xa5\x96\x22\x32\x5a\xfa\xae\xe7\xa5\xee\x4d\xb5\x4f\x5c\xd9\xa8\xfd\x6c\x48\xeb\xac\x01\xd8\x40\xb9\xbe\x4e\x8f\x83\x5d\x1d\x27\x5c\xad\xdf\x5e\x86\xdd\x91\xfa\x31\x86\xbd\xfd\x29\x32\x4f\xe0\xf6\xda\x89\x58\x3e\x17\x40\x39\x54\x20\x0d\x2e\xb4\xce\x7d\x70\x81\x23\x61\xcb\xcf\x63\x7b\x69\x7c\x43\x36\x73\x78\x4f\xb2\xc4\x66\xca\xde\x75\x1e\xdf\x73\x28\xbb\xbf\xed\x27\xcb\xf4\x8b\xd8\x5f\xfe\x16\xdc\x83\xc7\xac\xb5\x84\x3e\xb3\xb9\xbf\x1b\x83\x87\xd9\x77\x65\x50\x57\x63\x58\xb8\x1a\xba\x32\xe1\x2b\x31\xcc\x00\x8f\x73\x55\xa2\x58\x0c\x36\x3f\xb3\x91\xe4\x07\xa7\xff\x7c\x46\x85\x2d\xea\x8d\x24\x05\x3f\xb9\x87\x5d\x7a\x90\x39\x8f\x86\x28\xd0\xfa\x9a\x8c\xc7\xc2\x7c\x91\x0e\x8c\x75\x5b\xb5\xe0\x5d\xb7\x45\x7f\xd7\xb2\x84\x24\x4b\x6e\xf3\x2e\x9b\x8a\x7a\x2e\xeb\xf2\xdc\xd5\x66\xcf\x69\x31\x50\x33\xce\x5c\xf5\x76\xb5\xe0\x09\xd7\x3a\xb6\xb8\xf5\x5b\x44\x45\xeb\x6e\xe5\xea\x41\xd4\x0b\x55\xb4\x1e\xae\x53\x3d\x6c\x1d\x0e\xd5\xaf\x1e\xae\x53\x3d\x08\x33\xaa\x32\x68\xb7\xf6\xe7\x88\x15\x1b\x51\x13\x14\xaa\x7e\x9e\xd4\x7e\xef\x10\x0e\x75\xf0\xbe\x3a\xb5\x8f\xc0\xb3\xc8\x6e\xb6\x63\x9a\x7d\xbc\xcb\xfc\x6a\x68\x76\x6f\x5d\xda\x73\xd3\xa8\x90\x66\x52\x6c\x5a\x47\x31\x62\xb9\x6c\x95\xc3\x77\x4e\xdf\x5d\x31\x62\x3d\xc5\x15\x86\x1c\xed\xae\x3a\xb0\xa8\x76\x0e\x78\x53\xb8\xbe\x69\xb3\x0a\x69\x9e\x4d\x87\xbc\x51\xc0\xf8\xf2\x95\x81\x6d\xef\x9d\x29\xae\x59\x66\x10\xa6\xf5\xc6\x5e\x9b\x65\xe1\xda\x66\x22\x20\xf6\x36\xd6\x1c\x6b\xa0\x89\x80\x39\xda\x62\xb3\xb7\x95\x26\x72\xe9\xe1\x66\x9b\xd1\xa5\xa8\xa3\xda\x6e\x92\xdb\x35\x02\xe4\xf1\x1b\x70\x76\x77\x21\xa2\x15\x27\x02\x62\xdd\xac\x33\xa2\x29\x27\x72\xa2\xed\xb6\x9d\xd8\xf6\x9c\xcd\x40\x5e\xb4\xe8\x96\x9d\x08\x88\x04\xd1\xd6\xb3\x19\x78\xda\x61\x47\xb0\xd5\x67\x33\x9e\xd5\xf4\xb3\x19\x11\xd5\x5c\xed\x08\x57\x35\x1f\x98\xe3\x78\x7d\x73\x24\x44\xd2\xaa\x83\x8e\xa9\x74\x8e\x06\x7b\x50\x11\x7d\xac\xe6\x39\x1a\xea\x60\x6d\xf4\xbe\xea\xe7\x68\xa8\x47\x93\x85\xf6\x07\x5e\x36\x0a\x57\xe1\xb5\x03\x5f\x1b\xbd\x19\xd8\x2a\xe9\xcd\x08\xd7\x4b\x6f\x46\x54\xb3\x51\xf4\xce\xb9\xa6\xa4\xa8\xb6\xa3\x68\xa0\x6f\x7b\xfa\x1d\xf7\x37\x20\x45\x83\x1c\x6c\x54\x8a\xa4\xbc\x76\x44\x12\x0d\x5c\x9d\x65\x3b\xc6\x1b\x95\xb6\x9f\x1b\xd5\x46\xf6\xe7\x1a\x6c\xd6\xd0\x7e\x78\x38\x2c\xa4\x19\xa1\x78\x05\x3b\xbe\xde\xa8\x05\x3b\x62\x63\x17\x10\x20\x43\xd1\x0d\x76\x44\x60\x50\xa8\x35\x6a\x33\xa2\x9b\xa4\x22\x96\x53\xb7\x51\x0d\xb7\x4b\xdd\x5f\xdd\x98\x5d\xa6\xfb\x64\x10\x3b\x03\xcd\xbc\x5a\x0f\x86\xb5\xa0\x16\x2c\xaf\x07\x05\x16\xf4\x15\x68\x49\x87\xad\x9a\x0e\xfa\x29\x21\x0e\x73\xa4\x95\x53\xf4\xfc\x4e\xd3\xde\xa9\x19\xc7\x68\xf4\xd4\x8c\x58\x41\x14\xd7\xfc\xa9\x19\x71\x6d\xa0\xd0\xec\xaa\x6e\x17\x85\x6d\x08\x85\x17\x75\x22\x1a\x47\xb5\xe6\x13\xb9\x8d\x24\xb2\x99\x54\x33\x62\xdb\x4a\x45\x80\x06\x2d\xfc\x48\x0d\xa6\x9a\x11\xad\x48\x90\xb8\xa6\x53\xcd\xc0\xb6\x9f\x8a\xdb\x92\xbd\x56\x55\x71\x8d\xa8\x9a\x31\x61\x1b\x62\xc4\x23\x12\xd1\xa6\x6a\x7f\x52\x48\x19\x88\xcc\x4a\xde\xac\xe4\xfd\x96\x94\xbc\x50\x7b\x2c\x3c\x37\xf2\x6d\xb4\x42\x8d\xb2\xa2\xd4\xb1\xfe\x86\x5a\x64\xbf\x65\x16\x5e\x6b\xc4\xb4\xd6\x8a\x65\xc4\xc7\x69\xb2\xd5\x8c\x68\x32\x19\xd7\x78\xab\x19\xf1\x2d\xb8\xf0\x37\xd4\xc8\x25\xf8\x66\x5c\x68\xb8\xdd\xa6\x5d\xe1\xb6\x5c\x51\x32\x4f\x7c\xfb\xae\x66\x4c\x91\x7e\x22\x5b\x7a\x35\x03\xdf\xdc\x2b\x8a\xcf\xfb\x46\x60\x53\xdb\x7c\x35\x63\x92\xc0\x83\x6e\xfd\xd5\x7a\x05\xd9\x04\x2c\x6a\x1b\xba\x0d\xc3\x06\xda\x81\x45\x41\xc4\xb4\x0e\x6b\xc6\xa4\xcd\xc3\xb7\x13\x6b\xc6\x31\x1b\x8b\x3d\x6b\xfa\xf1\x52\x1e\xaa\xed\xd8\xfe\x9c\xd0\x42\x5e\x9c\x51\xee\x4b\x1a\xdb\x90\x40\x6d\xe8\xc6\xb3\xcd\x23\xae\x50\xf7\x3f\xa2\x87\xd8\xa5\x7c\x39\xf7\x29\xce\xaa\x10\xe1\x1e\xc6\x75\x3e\x9e\xdd\xc3\x68\xf7\xb0\x3d\xaf\xd9\x37\xdc\x19\xb3\x6f\x78\xf6\x0d\xcf\x66\x83\xd9\x6c\xe0\xc7\xec\x1b\xc6\x82\x9c\x7d\xc3\x88\x87\x67\xdf\xf0\x6f\xd4\x37\xec\x84\x5f\xeb\x18\x46\x22\xda\x17\xf7\x0b\xbb\xe6\x2a\x97\x49\x22\x2b\xa1\x3f\xca\x07\x16\x70\x32\xa1\x14\xa0\x03\x98\x81\x85\x9d\x46\x57\xa2\x55\xca\x8d\x5e\x12\x79\xb6\x97\xee\x35\xaf\x34\x18\x5e\x21\x52\x96\xd6\xf0\x88\xc4\x88\xe2\xe6\x55\x6d\xd6\xbe\x24\x97\xa4\x64\x09\x2f\x38\xb3\x1d\x86\xa9\xfd\xdd\x1e\xbe\xaf\x1d\x8f\x80\xc8\xb5\x62\xd9\xda\xd5\xe2\x16\xad\xde\x2b\x2d\x69\xdf\x11\x72\x3f\x55\x8c\x1c\xbe\x6e\xa6\x6a\x95\x11\xe9\x8b\x44\xfb\x66\x34\x25\xfb\x2f\x2f\x05\xd8\x15\x61\x2e\x7f\x6b\x16\x1d\xb7\x20\x6c\x69\x33\x75\xf7\x79\x5a\x70\x97\x3d\x7d\xcc\xdb\xcd\x3e\x15\xbc\x04\xf4\xbc\x67\x89\x14\xc3\x6d\x27\x9b\xd1\x41\x85\x9b\xfd\xf7\x3d\x4e\x38\x0b\x2a\x4b\x49\x5a\x95\x58\x97\xbc\x5c\x1b\x51\x92\xa7\x5c\xef\x6a\x47\xac\xeb\x6d\x44\xed\x5d\xa9\x11\x46\x21\x6d\xeb\x16\x91\x68\x51\x94\x92\x26\x5b\xa6\x5a\x2b\xb6\x32\xa6\xcb\x20\x0b\x55\x9f\x6d\x86\xeb\x01\x06\xea\x1d\x40\x35\xd2\x4b\xb6\x23\xa5\xd4\x3e\x94\x60\x6f\xd2\xd8\x69\x5a\x0f\x82\x9f\x10\x7c\xc0\x0a\x0b\xba\xdc\x41\x44\x82\x6c\x7d\x04\xbd\x76\xde\x42\x5f\xa8\x0f\x92\xa5\xbe\x3e\xc8\x5f\xbe\x21\x05\x2b\x13\x77\xeb\x70\xd1\x3a\x50\xd6\x42\x4b\x92\x19\x99\xcd\x90\xf2\x61\xf0\x7f\xfc\x13\xd9\xca\xaa\x54\x4b\x9f\xd1\x85\x9a\x33\xf9\x16\xde\xb2\xda\xad\x57\x31\x34\xc9\x18\x55\x9a\x7c\xfb\x0d\xc9\xb9\xa8\x0c\x6b\x0e\x02\x6b\x09\xbf\x7f\xfe\x13\xf2\xd2\xe0\xc4\x5e\x9c\xc0\x7b\xe8\x44\x77\x77\xa3\xb0\x35\x75\x9d\xdc\xeb\x6e\xfc\x78\xb6\x60\xeb\xdb\x50\x2b\x7b\xcf\x3b\xe6\xd8\x42\xfb\x24\x84\x96\x47\xa4\x14\x38\x19\x12\x21\x15\xa2\xb8\x2e\xe2\xa1\x71\x51\x71\x3c\x05\xce\x19\xe2\x7b\xfe\x36\xfa\xe1\xbf\x55\x72\xb5\xd3\xe1\x5c\xd7\x7f\xb7\xcf\x75\x93\x5c\xfd\x8f\xfd\x45\x65\x7a\x17\xd9\x29\xf4\xde\xd4\x94\xe9\x79\x36\xc4\xf1\x37\x46\x0f\x45\xe5\x41\x81\xc6\x0a\xc9\xab\xb4\xa8\x0d\x8d\x49\xc2\x6c\x83\xc7\xeb\x56\xcb\x79\x69\xa1\x8e\x1e\xcf\xb1\x32\x42\x47\x6b\xb7\xf8\x9d\xf5\xf9\x50\xc3\x5a\xe3\xb1\xcb\x87\x87\x65\xcd\x92\x6d\xb8\xd2\xe8\xbe\x0b\xf6\xe1\x2e\xe2\x28\x2e\x36\xb6\xc6\x76\x5e\x65\x9a\x17\x59\xbd\xe2\xc1\x75\xd6\x80\x1c\x1f\x6a\x1b\x3b\x69\xcb\x06\x47\x6d\xda\xb4\xad\x22\x55\x50\x3e\x4c\xf6\x5e\xd6\xdf\x66\x42\xdb\x12\xcf\xa5\x61\x73\x05\x2d\x69\xbd\x9d\xd0\xdf\x55\xbd\x72\xf6\x54\x0a\x4e\xe0\x61\x92\x0f\x1e\x61\x03\x8d\x66\xf5\x36\x81\xa3\xd0\xb9\x0f\xa7\x22\x96\x66\x82\x8a\x41\x1f\x45\xd7\xfc\x00\x8f\x12\xf9\x54\xc7\xfb\xd9\x66\x1b\x7b\x18\xe5\x24\xc6\xef\x68\xf2\xc0\xc4\xb0\x06\x02\x3d\x90\x60\x23\xd2\x9d\xa0\xb9\xad\xb7\xd5\x6e\xeb\xbc\x07\x57\x9d\x3b\xbb\xd9\x58\x01\x4d\xa6\x7d\x12\xf8\x68\x63\xd5\xe0\xae\x54\x0a\x59\xea\xe7\x47\x65\x9b\x3b\x8f\xdd\x7f\x65\x3d\x7a\x25\x7f\x4c\x58\x48\xc4\x31\x1f\x9e\x3a\xe9\xc7\xc1\xda\x02\x07\xd3\x76\x75\x05\x78\x0b\xbb\xc1\x3c\x57\xbb\x5e\xa0\xaa\x17\xcd\xcc\x95\xdf\xf9\x48\x92\xc1\x49\xef\x21\xc0\x6a\xf7\x9c\xfe\x2b\xa1\xf6\x23\x16\xf5\x7b\xff\x38\x28\x93\x8e\xf2\xa9\x72\x15\xce\xd1\x3e\xfb\xf0\xdd\x75\x97\xce\x7c\xa0\xa9\x54\xe4\xbb\x4c\x26\x0f\xe4\x9a\x81\xf8\xfa\xb9\x9b\x92\x94\xab\xf4\x79\xa5\xa8\xe7\x52\xca\x83\x30\xbf\x96\x52\xca\xe5\x2a\xb5\x66\xaf\x61\xa8\x5f\x6d\x21\xe5\x9c\x6e\xb0\x35\xf5\x8d\x06\x0c\x17\x0a\x5e\xf2\x7d\xaf\x26\x5e\x85\xdf\x6f\xe5\xd3\x42\xcb\x45\xa5\xd8\x82\x0f\x06\x51\x04\xe7\xff\xc0\x76\xe6\x6f\xb8\x15\xfc\xd5\x3e\xdc\x51\x59\xb4\x04\x03\x3b\xfc\x6e\x38\xf5\x87\xef\xae\x0d\xbb\xa8\x25\xa6\xc1\xdd\xe7\x8a\x5c\x30\x9d\x5c\x24\xac\xd8\x5e\xb8\x69\x7c\xf1\xed\xc8\xa5\xe0\x5a\x96\xc8\xd6\x45\x97\x24\x91\x59\xe6\xb2\xf8\xe5\x9a\x5c\xb1\x62\x5b\x83\x38\xf5\x5a\x4e\x5f\x8c\xb7\x90\x12\x57\xc4\xb4\x85\xda\xe6\x1d\x87\xd9\x2d\xc5\xa0\x5c\xc5\x11\x8f\xcf\x79\xe4\xbf\xa2\x1e\x8f\x47\xdf\x96\xe3\xd5\x2e\x3e\xbb\xf7\x8f\x83\x22\xd8\xf2\xaa\x74\x4b\x15\x3b\xb0\x83\x3b\xd3\x21\x21\xb7\x6b\x2b\x2a\xa7\x2c\x25\xf2\x91\x95\x25\x4f\x99\x22\x35\xad\x68\x6b\x9e\x3c\x3b\x4a\x3f\xa7\x09\x3b\x39\x57\x59\xfe\xec\x55\x96\xd1\x8a\x4b\x8b\x30\x99\x77\x0e\x09\x13\x4d\x73\x2e\xbe\x52\xd2\x14\xa8\x97\x6c\x64\x88\xde\xbf\x78\x06\x14\xab\x22\xa8\x84\x66\xec\xb6\x57\x08\xeb\x7a\xf1\xec\x73\x5d\x4d\xc1\xff\xd8\xaa\x54\x38\xa1\x72\xdb\x5f\x6b\x84\x26\x42\xa6\xfd\xf6\xdc\x7f\xbc\xda\x85\x2d\x7c\xb5\xa5\xdb\xa6\xb2\xba\x0d\xd5\xec\x89\x22\xdb\xb4\xfa\x25\xec\x55\xf2\xf5\x07\x7d\x79\x77\x4b\x7e\xb0\xf0\xa6\x17\x4b\x2c\xa5\xb6\xd2\xd3\xb5\xcc\x29\x47\x36\xd1\xd8\x76\x5b\x4f\xfb\x09\xdd\xd5\xc0\x88\x85\xe6\x3b\x7c\x0c\xee\xaf\xad\x4b\x54\x19\xad\xc7\x69\x24\x73\x2d\xbb\x9e\x11\x27\x08\x34\x72\x40\xcb\xcc\xe2\xc3\x3c\x9b\xde\x06\xee\xd4\x46\x4d\x44\x8d\x5b\x95\x28\x26\x14\x07\xcf\x48\xcb\x79\xee\x9a\xb8\xd9\x9e\x7f\x36\x4e\xd3\x0a\x0b\xc3\x57\xea\x8d\xdc\x70\xe1\x6f\xa5\x74\x0e\xbb\x35\x1d\x96\x1e\x66\xee\xfe\xd9\xb9\xbb\x52\xd9\x8d\xa0\xab\x6c\xd8\xb1\xd4\x25\xe2\x19\x05\x2f\x28\x83\x77\x2e\x52\xae\xcc\xff\x93\xfb\xfb\x37\x60\x7c\xae\x84\x97\x3c\xc1\x0c\xeb\x48\xd6\x30\x86\xa4\xed\x12\xc4\xd3\xef\x8c\xa5\x27\xe8\x1a\x83\xb7\x22\x35\xd3\x64\xaa\x13\x1b\xe3\xa0\xd8\xb2\x89\x75\x20\x31\x44\x17\x8c\xf9\x33\x3e\x6e\x79\xf2\x70\xd7\xb2\x31\xcb\xd2\xfc\x26\x5a\x3f\x75\x98\xca\xfe\xdf\xa6\x12\x41\x37\xdd\x3b\xac\xda\xf8\xb1\x45\xbd\xef\xdd\x52\xcd\xcb\x84\x2a\x25\x13\xde\x38\x11\xc0\xd8\x50\x93\xf7\xe1\xa3\x03\xb2\x3f\x7d\xfa\xc0\xa1\x27\xf1\x20\x7f\x50\xbe\xcb\xa8\x6a\xf3\x96\x91\x18\x66\xb7\xfa\xc9\x53\xb6\x28\x81\xae\x81\xfe\xb1\x53\xf5\xdc\xcb\x67\x5d\xfb\x77\x1d\xe4\x1e\x20\xd0\x5e\x6e\xf2\x9d\x0c\x0f\x8e\xac\xae\x7e\xee\x5c\xab\x27\xb1\x94\x3b\x89\xa6\xf7\x6f\x35\xdf\xea\xff\xeb\x90\x4c\x37\x2e\x23\x0f\x26\xbb\xf4\x69\xc3\x7b\x4e\x3b\xfb\x9b\x33\x8d\x43\x88\x50\x21\x8b\x2a\xb3\xb1\x1b\x03\x0e\x9f\xc3\x02\xf2\x93\x2c\xac\xf6\xdb\x93\x9a\xfb\x47\x56\x4b\x1d\x0f\x29\x3f\x28\x9c\x1a\xa2\xc3\x6d\x51\x7c\xa4\x70\x6a\x4b\xa2\xfa\xe6\xcf\x7f\xfa\xd3\x48\x85\xf9\xe1\x12\xab\xe1\x52\xaa\x83\x50\x31\xa1\xe4\x43\x21\xe2\xc3\xb2\xdd\x40\xe8\x78\x30\x24\x7c\x98\x37\x84\x42\xc5\x8f\x53\x63\x75\xd4\x32\x39\x21\xc7\xaa\xce\xa0\x1a\xd9\x2a\x4c\x66\x55\x4f\xe6\xd1\x20\xc4\xf1\x7c\xaa\x91\x6c\xa9\x61\x88\x3d\x59\x54\xc8\x1c\xa9\x51\x0f\x46\xe3\xc6\x8f\xca\x8c\x1a\x76\x0a\xad\x8f\x9d\x0f\x15\x99\x05\xd5\xe4\x38\x0d\x42\xc4\xe7\x3e\x1d\x64\x36\x0d\x33\x34\x5c\xc6\x53\x4c\x8d\xdf\x70\x76\x13\x22\x73\x09\x17\xb9\x1b\xcc\x52\x7a\x56\x6e\x12\x32\x24\x2c\x9c\x87\x14\xc3\x2a\x9a\xac\xa2\x51\x90\x04\x93\x73\x74\x98\x4b\x14\x80\x39\x92\x69\x34\x9c\x41\x14\x80\x19\xc1\x14\x5a\xc4\x3f\x00\x34\x8e\x35\xc0\x1e\x07\x20\x86\x73\x89\xf0\x19\x44\xd8\x00\xca\x70\xf0\x64\x54\x8e\x90\xcf\xfd\x09\xac\x14\x93\x19\xb4\x9f\xf1\x83\xc0\x9b\xfe\x7c\xa0\xe1\x3c\x9f\x00\xc8\x70\x16\x10\xea\x7a\x86\xa3\x35\xc7\xf3\x7c\x02\x71\x9c\xcf\x0e\xcf\x0c\x67\x95\xc4\xe7\x92\xd4\x3c\x62\x4c\xcc\x1c\x49\x21\xc1\x1a\xc7\xf0\x5d\xa8\xda\xd6\x1f\xa7\x10\x78\x11\xd4\x06\xc9\x34\x1d\xa5\x46\xf8\x7e\x35\xe0\x20\x3c\x8e\x4a\x40\xc2\x28\x35\xae\x24\xd9\x2f\xc9\x70\x93\x45\xa7\xf5\xbf\xbf\xdf\x73\x26\xd4\x3f\xef\xf9\x10\x0c\x7d\xeb\x9d\xf0\xec\x43\x18\x18\x9f\xbb\xff\xd1\x6c\x08\x3f\x34\x84\xab\x4e\xf1\x18\x6f\x06\xb0\x72\xce\x5a\x96\x44\xae\x5c\x79\xc9\x51\x09\xba\xb9\x14\x97\x77\xb7\x46\x8f\x86\x6c\x20\x9a\xa9\x65\x5f\xa6\x74\x1a\x88\xbe\x01\x49\xa9\xd1\x37\xa8\xd6\x2c\x2f\xf4\xf0\xc1\xcf\x76\xf0\xcf\x6e\x07\x8f\x34\xee\xfd\x54\x3f\x5e\xb7\xe4\xac\x72\x2a\x16\xe6\x46\x81\x45\xbc\xe3\x34\xf3\xc8\x14\x50\x80\x97\xbe\x39\xb6\xe5\x4b\x60\x22\x81\xe0\x78\xdb\xaa\xa8\xd1\x62\x9a\x5e\x91\xcf\xb7\x65\x02\x9c\xc8\x35\x5b\x96\xb9\x77\xd3\x12\xb9\x1f\xc3\x39\xb8\x5c\xb7\x90\x7a\x5f\xfc\xa5\x6a\xf1\xe3\x8e\x3e\xac\xb7\xcc\xb2\xed\x3b\x99\x9e\x0d\x23\x57\xf3\x76\x57\x73\xb0\xaa\x03\xcd\x32\xf9\x64\xe7\xda\xe6\x5a\xe6\x9c\xcc\xdc\x47\x29\x02\xd0\xee\x9c\x1b\x25\xda\xd9\x5c\xdb\xd3\xb7\xbe\x4f\xa3\x99\xb0\xd2\x8a\xdf\xa5\x73\x99\xdd\x8f\x04\xdf\xb4\x50\xc8\x28\xaa\xc2\x86\x38\x9b\xff\xf6\xd1\x37\xb6\x92\xb1\x73\x1d\xac\xd8\x96\x3e\x72\x59\x8d\x64\x1f\xde\x5b\x4a\xf7\xc2\xbd\x02\x6c\x66\x27\xab\xda\xd4\x66\x5b\x65\xd6\xbb\xa4\x0e\xcf\x61\x10\xf4\xbb\xe6\x25\x50\x9e\x52\xe9\x6d\x13\x0b\xf6\x89\x2b\x7d\xb8\x27\xa1\x02\x3b\xbe\x96\xe0\x09\x44\xa2\x47\x55\x18\x1e\x86\x6c\x8c\xf7\x53\xfb\xe9\xae\x68\xf4\x78\x0f\x7f\xfa\xb5\xb4\xc5\x9b\x85\xa3\xf6\xa8\x1d\x64\x19\x4f\x76\xc8\xe6\x70\x8d\x63\xcc\xbc\x44\xbe\xa3\x8a\xa5\xe4\x2d\x15\x74\x63\xf5\xcb\x97\xf7\x77\xdf\xbd\x7d\x65\x0e\x6d\xb4\xca\xf6\xed\x75\xaf\x57\xed\xbe\x3d\xa3\x77\xd3\xf3\x19\xf6\xd6\x86\x66\x5a\x47\x5a\xdd\x33\x32\x31\x3c\xe3\x19\xab\x86\x7c\x98\xb4\xb9\xdf\xba\x73\xef\x5a\x3e\xe6\xe9\x49\x9a\x72\x36\x53\x8d\x23\x40\x83\x7f\xea\xb3\xd8\x1d\x36\xbf\xeb\xb2\x55\x9f\x19\xf1\x76\x77\xff\xef\x6f\x2e\xee\x58\x99\x48\x41\x17\xff\xa1\x4b\x7a\xfd\xdd\xc5\x5b\x5a\x72\x7a\xfd\xdd\xc1\xf4\x92\xac\x52\x86\x17\x19\xbe\x64\x6d\xc9\x45\x29\x3f\xed\xd4\xdf\xb2\x9a\x33\x36\x2e\xd3\x25\xb9\xd5\xb5\x55\x8f\x71\x10\xc9\x5e\xfc\x40\x33\x56\xd2\xc3\x62\x87\xd2\xfc\xad\x94\x55\xf1\x81\x99\x5b\x0c\x6c\x6e\xff\xa9\xc1\x4d\x77\xb1\x72\x81\x2d\x80\x67\x0c\xff\x37\xcc\xdb\xbf\xd3\x2c\x80\x0b\xa5\xe9\x61\xd9\x80\x31\x3a\x4a\x37\xac\x3f\x1f\x6d\x14\x3d\x68\xb9\x09\xeb\xd4\x67\x97\xe5\xa6\xca\x6d\x0f\x52\x1b\x76\xc3\x84\x2e\x77\x90\x22\x6c\x93\xc9\x53\x99\x3c\x18\xb1\x20\xa7\x1b\x76\x76\xa6\xc8\xd5\xdb\xbe\xc6\x8f\xa4\x5e\x30\xef\x8f\xb2\x59\x92\x9f\xcc\x61\xaf\x32\xd6\x0e\xf5\xf9\xc3\xcb\x9f\x2e\x3f\xfc\xf2\xee\xf2\xed\x4d\x7f\x81\x54\xc3\xf9\xd9\xa7\x82\x42\x6d\x08\xdf\x29\xbb\x55\x07\xd6\x4c\x88\x89\x47\x5e\x4a\x91\xbb\x0a\x6e\x60\xd8\xb5\x5f\xea\x05\x99\x40\x91\x7a\xeb\x09\x50\x32\x7b\xf4\x8e\x95\x7a\x56\xde\xc4\xc2\x45\x51\x69\x6f\x8e\x1f\x93\x06\x2a\x91\x6c\xa9\xd8\xf8\xfa\xbd\xad\x35\x11\xb5\x13\x9a\x7e\xf2\x96\x55\xa6\x12\x5a\x78\x82\x4a\x49\x2a\xab\xa1\x49\xfe\xe1\x0f\xe7\x84\xb3\xd7\xe4\x0f\x2d\x60\x4b\x72\xe3\xde\x6f\x6d\xa0\x75\xd6\xb0\x47\x56\xc2\x07\xdc\x56\xf5\x33\xb1\x92\x6d\x68\x99\x66\x2e\x3c\xaf\x6d\x0a\xf3\x1b\x46\x40\x16\x52\xe6\x96\x08\xa9\x97\xe4\xaa\xde\xab\xaa\x48\x87\xa5\x1d\x9c\x1a\xa6\xa9\x7a\x50\x17\x5c\x18\xb2\xb2\x48\xa9\xa6\x0b\x5a\xd4\x77\xf0\xc2\x9a\xd6\x16\x90\x01\x2a\xd2\x05\x75\x68\xb9\xa8\x8f\xfa\xe2\xf7\x65\x25\x8c\xde\xbb\xa0\xf5\x53\x5c\x2c\xe8\x42\x6d\xd9\x80\xaa\x7f\x6d\x64\xa1\xc4\xcc\xfb\x35\xa8\xcf\x45\x29\x73\xb3\xe8\x4a\x2d\xd9\x27\x10\x0f\xca\xa5\xb9\x25\x7d\xba\xd9\x88\xe7\x06\x25\xda\xf5\x1b\x2e\x99\x78\x0c\x5f\xc9\x37\xae\x79\x46\x0b\xb1\xeb\x13\x72\x89\x93\xb5\x1d\xb0\xde\x9e\xfe\x93\x39\x3c\xc0\xd6\xa6\xa0\xf6\x87\x89\xc7\xc8\xed\xe9\x56\xf7\x10\x8f\x3f\xd1\xb2\x23\x95\x8a\xde\x85\x79\x37\xe1\x90\x23\xcd\xa8\x8d\x57\xe3\x8b\x0d\x5b\x1d\xc6\x6d\x0e\x9d\x89\xb7\x0d\x0e\x7d\xf3\x6d\x0b\xa5\x57\xbf\xdc\x5e\xdf\xbc\xfb\x78\xfb\xfd\xed\xcd\x87\x61\x15\x04\xa1\xe5\x83\x9d\x05\x39\xc1\xb3\x00\x3d\xed\xd0\xce\x11\xe3\x43\x43\x55\x8b\x92\x19\x05\x4d\x79\x33\xf7\x00\x02\x5a\xcc\x1b\x81\x58\xe3\x24\xe8\x14\x46\x31\xf4\xd5\x4c\x7a\x01\x62\x88\xb6\x03\x3c\x99\x74\x8f\x00\x35\x77\x63\x0a\x01\x1f\x01\xe9\x49\xfb\x14\x32\x3e\x3e\xd3\x9a\xc0\x47\x11\xf3\x11\x98\x40\xe6\xdb\x96\xd5\x17\x2f\x46\xdc\x79\x58\x14\xfe\xbe\x94\x83\xa1\x71\xfb\x32\xbd\x2d\xf0\xec\xa2\xaf\x7b\x31\xe4\x4c\xb9\x70\x88\x91\x75\xb4\x08\x9d\x13\x42\x7c\x66\x3c\x48\x21\x2c\x2f\xf4\x60\xe4\x79\x74\x8f\xdb\xbf\xb2\x5d\xb0\xb8\xfd\x9e\x75\xd7\x57\xb4\x7f\x60\x3b\x1b\x4f\x57\x77\xb9\x1a\x77\xd6\xe1\x2b\x71\xa1\x2a\x8f\x0e\xf9\xf5\x6d\x71\xed\xa3\xd6\x85\x9a\xeb\xeb\x0d\x8c\xaf\xb9\xbe\xde\xb4\xde\x6b\x27\x2c\xb1\x87\xad\x1a\x14\x2a\x05\x88\x2c\xd5\x87\xeb\xa8\x35\xd4\xae\xa2\x13\x58\x06\x5d\xb1\x9c\x19\x4a\x91\x9c\x69\x6a\x64\xde\xa5\x41\xbc\x60\x88\x4a\xfb\x61\xb0\x5a\x9e\x37\xbf\xf9\xb6\x5a\xf5\x0f\xed\xa6\x5b\x01\xc0\x46\x35\x5f\x0a\x99\x82\xd5\xf6\xdc\xfe\xb3\x5b\x49\xd0\xfd\x41\x53\x5d\xa9\xe5\x56\x2a\x7d\x7b\x17\x04\x6a\x1f\x2e\x64\x7a\x7b\x17\x08\x05\x89\xa8\x2b\x18\xd1\x8f\x2b\xb6\x0b\x17\xae\xc4\xf9\x91\x7a\x6f\x45\xdc\xe3\x88\x3e\x5b\xd8\xee\x5a\x07\x1d\xb3\x10\x0b\x8f\xea\xa9\x75\xf4\xf2\x5f\xb8\xae\x59\xc8\xeb\x1c\xd7\x8f\x26\xbe\x0b\x0d\x78\xb7\x02\x7b\x84\xef\x3d\xb3\xd7\x53\x26\x00\xd7\x3d\xcc\x8a\x2d\xcb\x59\x49\xb3\x85\xb3\xa9\x76\x7b\xd1\x9c\xef\x37\xa2\x09\xdd\xbb\x76\xeb\x9a\x03\xd8\xaf\x26\x76\xa7\xc1\xdf\xfb\xc8\x4e\x34\xf8\xfe\x33\x75\xc9\x24\xc4\x0d\x98\xd8\x75\x26\xe2\xaa\xa3\x3b\xcc\x60\xfb\xca\xec\xf5\x8a\x41\x2c\xb2\xbf\x9b\x0c\xaa\x43\x4c\xc4\x42\xf1\xdd\x60\x8e\xd9\x03\xe6\xe8\x54\x09\xd5\xe5\x25\xaa\x05\xca\x31\x74\x88\xc3\x90\x30\x85\x6c\xb2\xf9\x39\xd4\x8a\x6e\xdc\x5a\xc3\x92\xd6\xa5\xcc\x97\x04\xdb\x82\xcd\x47\xea\xf2\xd4\x43\x7a\x60\x23\x9a\x9c\x1f\xb3\xa2\xf2\xdb\x56\x54\xbe\xae\x42\xe0\x9f\x55\x4b\x09\x3e\x34\x3e\x9b\x05\x20\xfc\x88\x61\x7b\x10\xf2\x98\x61\xbb\x31\x1d\xf7\x7d\x35\x44\x6e\xbc\xb5\x79\x68\xff\x30\xe4\x6a\xc8\xdd\xe5\xc7\xf3\xdc\x5e\xa3\xc7\x76\xf5\xf6\x7a\x92\xfb\x6b\x14\xe8\x90\x29\x17\xe3\x06\x1b\x05\xdc\xb1\xb6\xa2\x6d\xaa\xa3\x20\xfb\x5c\x65\x61\xab\xea\x28\xc8\x31\x97\xd9\xb8\x5d\x35\x70\x53\x43\xae\xb3\x7e\xcb\xea\xf8\xb5\x8d\x72\xa1\x61\xea\xc7\x90\xf1\xda\x78\x27\x75\xa5\x8d\x91\x7c\x44\xdf\x26\x24\x3f\xc0\x34\xea\x18\xf0\x96\xf9\xd1\xb9\xd1\x11\x4e\xb3\x71\xbc\xab\x7d\x4c\x58\xef\xa7\x1d\x88\x9d\x99\xe6\x18\x0b\xb0\xa9\x56\x76\x5d\xd0\x41\xd6\xbc\x83\x95\xfe\x26\xc8\x46\x38\xc7\x19\x56\xf2\xc3\xb9\xd6\xfc\x88\x90\x45\x02\xae\xb6\xde\xa5\x61\x5c\x6e\x88\x85\xf5\x50\xf2\x31\xd7\x1b\x02\xe2\xbe\x73\x0e\xe7\x82\x8b\x01\xbc\xc4\xb1\x0d\x94\xde\x89\x88\xb3\x68\x31\x0f\x8c\xec\x7b\xa4\xa8\x8b\xee\x38\xae\xf3\xce\x8f\x48\x27\x1e\x0a\x9d\x3a\x0c\x07\xed\xcc\xf3\x23\xf6\xd2\x8c\x3b\xf7\xfc\x88\x77\xf2\xa1\xd0\x11\xb2\xa2\x9f\xe7\xec\xf3\x23\xae\xb5\x5f\x94\xf3\xaf\x7f\x13\x26\x3b\x01\xa7\xcd\x98\xc4\xb5\x23\x7c\xbe\x73\xd0\x8f\x09\x7d\x77\x71\x7c\xa6\x77\xa2\x41\x5d\x1c\x0d\x16\x57\x8e\xf8\xa8\x5a\xbb\x1f\x78\xed\x3d\x02\x28\x2e\xf9\xa4\x3b\x26\x9c\x1d\x5e\xab\xf7\x03\xef\x86\x8c\x58\x6d\x63\x0a\x88\x56\xf4\xfd\xc0\x2b\xfc\x7e\xc4\xf5\x8b\xc6\xb6\xc6\x8b\x6e\x13\x8d\x73\x5b\xfa\x11\xef\xbe\x44\xee\x60\xd7\xc9\x89\x72\x63\xc6\x42\x6e\x3b\x3b\xb1\xee\x4c\xe4\x37\xba\x4e\xcf\x18\xb7\xa6\x1f\xf1\xf4\x39\xc6\xcd\xe9\x47\xac\xbb\x33\xe2\x0e\x71\x75\x2c\xb7\xa7\x1f\x13\xe8\x49\x84\x1b\xd4\x8f\x08\x77\x68\xc4\x6e\x74\xeb\xa5\x44\xb9\x45\x6b\x10\xb1\xcb\x8f\x25\x28\x38\x77\x69\x77\x3a\x11\xdd\xe7\x63\xdc\xa7\x7e\xc4\xbb\x51\xb1\x8c\x46\x64\xbb\x08\x77\x2a\x12\x6a\xd7\xe9\x8a\x75\xab\x22\x81\xef\x39\x5f\x43\xee\x55\x2c\xd5\x98\xe4\x84\xf5\x23\x9e\x4a\x45\x3a\x65\xfd\xc0\x3b\x67\x23\x2e\x65\xdd\xf9\x66\xa2\x93\xd6\x8f\x09\x84\x09\xed\xb4\xad\x5f\xc0\x3b\x6f\x23\xc9\x92\x73\xf3\x3e\xc7\x89\x5b\x83\x8b\xdf\x08\xbc\x53\xd7\x8f\x63\x3a\x77\x27\x4f\x3c\x96\xb6\xa2\x9c\xbe\xdd\xd9\xa0\x49\x2b\xde\x09\xec\x47\x94\x33\x18\xb9\x89\x31\x2e\xe3\xfa\x9d\x2f\xa0\x84\x0e\xb8\x92\x23\x2e\x4d\xcb\xe9\x3c\xd5\xa5\xec\xc7\xac\xde\xce\xea\xed\xe8\xc0\x3b\xaf\x63\x44\xf3\x7f\x4c\xdd\x16\xfd\x30\xd6\x05\x3f\xe8\xfc\x8e\xfc\x22\xc6\x7f\x65\xc4\x32\xb4\x03\xeb\x4e\x96\x9a\x88\x2a\x5f\xb9\xbc\x57\xcf\xe6\x4b\xcd\x4a\xa2\x78\xca\x48\x42\x47\xfd\x3a\xd8\x3a\x6b\xb8\x2a\x6b\xb5\x64\x81\xf7\xa9\x5f\xc9\xbc\xa8\x34\x23\x1f\x6a\x11\xbd\x96\xf1\x56\xbb\x66\x2d\x81\x94\x35\x3f\x46\x1d\xa7\x28\x52\xe6\x53\x84\xad\x57\x34\x87\x3c\xf1\x45\x62\x27\xb9\xa8\xd7\xd7\x72\x8b\x8e\xd1\x11\x2c\xdb\xb3\xfa\x43\x30\xbc\x39\x4d\xb9\x25\x2b\x77\x11\xec\x34\x26\xc0\x70\x2f\xa3\x10\x54\x25\xfb\xe3\xca\x89\xa0\x39\xfd\xc4\xf3\x2a\x27\xd4\x35\xe9\x0b\xcb\xa0\x6e\xef\x5a\x3a\x18\xd4\x24\xf9\xd2\x47\x43\x62\xe9\x84\xd1\xbe\xbe\xb2\x13\xfa\xe0\x35\xd8\xbd\x33\xe2\xa2\x75\x46\xc1\xcf\xcb\x75\xcf\x19\xf9\x4b\x08\x2e\xbc\xfa\x3b\x5c\x11\x99\x73\x3d\xd6\xc3\xd2\x0f\x5b\x50\xbe\x3e\x8b\x73\xc2\x75\x47\xdb\x70\xd8\x05\x91\x2f\x50\xdf\x3b\x08\x91\x7d\xaa\x4b\x68\xb4\xaa\x50\x35\x3d\xf1\xa1\x9e\x0c\xe1\x79\x61\xcb\x22\x02\x96\x2c\xb0\x1c\xcf\x39\x89\x7e\x25\x18\x89\x7a\x4c\xb1\xa4\x2a\xb9\xde\x19\x1d\x9a\x7d\xc2\xf3\x94\xb3\x7b\xf7\x62\xab\x72\x28\x98\x76\x7d\x49\xf1\xb2\xb2\x9d\x0e\xc6\x49\x71\xe4\x56\x16\x50\x9e\xe3\xc2\x4f\x1a\xf6\x8c\x7d\xd2\x17\x47\xf8\x86\x0d\x7c\xa9\x6b\x3f\x2c\x0a\x99\xb6\x8e\xe4\xe0\x8b\xc7\x20\xe8\x40\xe2\xee\x4a\xfe\xc8\x33\xb6\x61\x37\x2a\xa1\x19\xe0\x48\x88\x18\xec\xc5\x9b\x0d\x40\x81\x6b\x55\xca\x4c\xa1\x02\x8d\x60\x3e\x66\xe6\xd0\x4e\x37\xa1\x82\x6c\x28\x17\x24\x37\x7b\x57\x78\xe0\xca\xb6\xce\x37\x57\xb2\xa0\x25\xc6\xcf\xef\x00\xba\x12\xb5\x46\x46\x24\x29\x54\x3e\xcf\x76\xcd\xfc\x5c\x97\x7e\x21\x7f\x11\xec\xe9\x17\xf3\xb5\xf0\x3d\x5f\x67\xb4\x71\xe9\x2b\x56\x77\x82\x6d\xc2\x13\xea\x4f\x0f\x6d\x50\xf0\x1b\x5c\x11\x5d\x56\x8c\xd0\xec\x89\xee\x60\x1b\xf7\xbf\xc1\xd5\x6b\xf2\xed\x2b\xc0\x75\xaa\x48\xfd\x8d\x30\x25\xf9\xe3\x2b\xb2\xa5\x8a\x5c\x5d\xde\xfd\x72\xff\x9f\xf7\xbf\x5c\x5e\xbf\xbd\x7d\x87\xbb\xf6\x18\x39\x3b\xa1\x05\x5d\xf1\x8c\x63\x38\xcb\x81\x56\xdc\x7e\x19\xc8\x65\x9a\x5e\xa4\xa5\x2c\xec\xfa\x5d\x78\x17\x82\xa1\xbb\x3d\xda\x6b\x2a\xd8\xae\xdb\x05\xc7\xb6\xee\x7c\x30\x08\x77\x53\x52\xd1\xaa\xbd\xd4\x1c\x45\x59\x09\xe8\xe9\x1b\x80\x10\x63\x63\xa0\x29\x4a\x43\xe9\xec\xe0\x65\x9a\xb2\x34\x6e\x49\xa8\x08\xaf\xde\x8f\x5d\xf9\xcf\xb4\xda\xb2\x93\xbb\xf7\xf7\xb7\xff\x11\x3b\x03\xe2\xf0\x2b\x42\xcd\x42\xab\xba\x18\x7d\xa6\x5e\x5e\x29\x8b\xe8\x3d\xff\xc0\x72\xf9\x38\xef\x7a\xdf\xe3\x98\x5d\x47\x0b\xb8\x35\x1f\x08\x5e\x8b\xee\xf1\x54\xa2\x4d\x32\x45\x0b\x0e\xd4\x7d\x5a\x92\x3b\x4b\xaa\x11\x7b\xd6\x7d\xbb\x21\x32\x36\x8e\x59\x29\x5b\x8a\x34\xdb\x11\x23\x99\x3e\xd2\x0c\xc3\xa3\xb4\x24\xa5\x94\x9d\x5e\xe2\x7d\x8d\x50\x8f\x46\x9d\x0d\x63\x82\x12\xb0\x51\xbb\x58\xbf\x45\x52\x26\xa4\xde\xab\x81\x65\xfe\x4a\x70\x92\x7c\xab\xe0\x6b\x87\x82\x2a\x17\x9d\xde\xf4\x63\x72\x7b\x70\xe7\xbf\x1c\x04\x6d\x0b\x6a\x55\xca\x4d\xee\x80\x38\x37\xb2\xbd\xf9\x7a\xc9\x68\x8a\xc8\x72\xb4\x45\xd9\x95\x6b\xaa\xa0\x1e\x7c\x83\x09\x27\x53\x38\x1d\xc4\x7e\xb1\x9e\xea\x47\xcc\xad\x5a\x33\xaa\xab\x92\x59\x59\xc2\xd6\xd9\xb3\xcd\xbb\x82\xa1\x81\x11\x59\x60\xb6\x08\xf0\x07\x29\x75\x53\x84\x30\xea\xe0\x7f\xae\xcd\x7b\x5c\xb5\xb6\x74\x4b\xad\xe7\x93\xa6\x0b\xd4\x26\x02\x8a\x37\x35\x0e\x3b\x8d\xb7\x8e\x8c\xe0\x65\x25\x2e\x6d\x23\x80\x68\xe1\xe3\x87\xdb\x6b\xb8\x8f\x95\xd8\x4b\x9d\x38\x70\xed\xe2\x45\xcf\x1f\x0d\x3e\xee\x61\xa0\xab\xa4\xc8\xb4\x2d\x89\x4f\x33\x25\xc7\x2a\x72\xfa\xe1\x22\xbd\xef\x64\x7a\xdf\xd5\x9b\x6c\x99\x56\xf7\xe7\x95\xd4\x5b\xb2\xf7\x40\x58\xd8\x10\x69\x0f\xdc\x73\x17\xb2\x99\x55\xed\x80\x01\x2e\xa2\xc1\x6b\xfa\xc0\x14\x29\x4a\x96\xb0\x94\x89\xe1\xf2\xb8\x7e\xb4\x4c\x7e\x7f\xfe\x13\x0a\x33\xc2\xcd\x15\x1c\x66\xbc\x93\xc2\x5c\x87\x28\xdc\x68\xfa\xd2\x81\x21\xa0\x4b\x5d\xc0\x70\x6d\x65\x70\x84\x8e\x23\xa4\x58\xc0\x65\xa8\x7c\x6f\x67\x23\xe4\x9f\xd7\xd5\x6f\x33\xdf\xa8\x07\xfc\x38\x54\x87\xb1\x02\x42\x8d\xa1\x95\x3e\xd5\x35\xa2\x41\x27\x40\x65\xc8\x8b\x35\x5d\x68\x92\x4a\x66\xa3\x48\xcb\x2a\xac\x7b\x50\x45\x7e\xbc\xbd\x26\xdf\x90\x97\x66\xae\xaf\x00\x3d\xd6\x94\x67\xe0\xa2\x82\xe6\x0d\x7b\x9a\x48\xd8\xc6\xe6\xa6\xb0\x74\xdd\x8e\x6c\x8e\x1b\x5c\xfd\x73\x22\x24\x51\x55\xb2\xf5\x6b\xf6\x2d\x29\x83\x30\x57\x8c\x14\xac\x34\xc8\x02\xa6\xba\xe6\x2a\x05\xae\x0a\xf6\xa6\xf5\x5d\xa5\xa1\xab\x82\x3a\xa7\xf0\x55\x8a\xbe\x2a\x91\x84\xf1\xc7\x91\xa6\xd1\x7e\x1c\xd0\xc5\x1f\x4f\x40\x17\xdb\x22\x0e\xb4\x39\xed\xec\x8a\x45\x68\x1f\x1d\x17\x46\xae\x6e\x65\xda\x7f\x50\x54\x38\x0d\xd5\x54\xec\x0d\x17\xd5\x27\xdb\xa5\x28\x5e\xa1\xbf\xbf\x81\xd7\x49\xe2\x17\x05\x87\x02\x69\x5d\xb6\xbe\x30\xc6\xab\xdf\x4a\x5e\xda\x6f\x96\xd6\x2f\xea\xa1\xc8\x07\xcd\x32\x69\xc8\xba\x91\x64\xa8\x48\x65\x7e\x30\x59\x08\xc1\xa1\xc9\xb6\x3d\x01\x83\x5c\x08\xd0\x18\xe4\x6b\x23\x57\x10\x24\x12\xf9\x1a\xe4\x0a\xa3\xf6\x31\x91\x2f\xc6\xb4\x91\xb1\x47\x86\xf2\x3b\x77\x33\xe1\xcc\x5b\x46\x60\xf4\xa7\x04\x60\x08\x04\xdc\xba\xce\x51\x80\x55\x38\xdd\xd7\x59\x83\x90\x4e\x3b\xf7\x4e\x8c\x12\x5c\xca\x0c\x15\x1b\xd1\xd5\x56\x65\x06\xe9\x1e\xb4\x5e\xa4\x01\xf3\xd5\xae\x51\x8f\x94\x40\x1f\x5c\xa3\xd1\x8e\xba\x6b\x04\x3d\xf2\x6b\x5d\x63\x85\xe0\x98\x07\x6b\x34\x6c\xb6\xbb\x46\xe0\x71\x5f\xe7\x1a\xd1\x26\x98\x27\x2e\x52\xf9\xa4\xa6\xb2\x82\x9f\xed\xeb\x9e\xee\x24\xbe\x37\x8d\x6a\xb1\x03\x0c\xd1\xee\x58\x0d\xfa\xf8\x81\x77\x0a\xad\x4b\x99\xa3\xf8\xcb\x21\x1d\xdd\xeb\x54\xf1\xdb\x52\xaf\x62\x68\xf5\x26\x57\xf4\xaa\x6e\xb3\x73\x5f\xb0\x24\xfa\x32\xfc\xf0\xf6\xfe\xb2\x0b\x02\x02\xf2\xa1\x54\xbc\xd9\x01\xf3\x77\xd4\x3d\xa0\x69\xce\x15\xa4\x05\x3c\xb1\xd5\x56\xca\x07\xf2\xd2\xfb\xd4\x36\x5c\x6f\xab\xd5\x32\x91\x79\xcb\xbd\xb6\x50\x7c\xa3\x2e\x1c\xd6\x2e\xcc\x4a\x70\x91\xc8\x5c\x64\x5c\xb4\xcc\x48\x90\xc6\xec\x44\x5d\x33\xd9\x56\xdf\x21\x38\x38\x14\x50\x41\xf3\xc6\x73\x70\xb8\x25\x10\x0e\x07\x81\x63\xd6\xb4\x84\x82\x69\xd3\x00\xa0\x87\x4a\xb1\xa5\x0b\xcb\x10\x0d\xb2\x71\x65\xa3\xca\xb7\x52\x48\x17\xa7\xa2\x58\xf9\xc8\x4a\x24\xc1\x31\x14\xca\x5a\xa3\x60\xba\xee\xe6\xc2\xda\xdb\x76\xab\xa3\x13\xdb\x43\x6c\xc3\x86\x66\x07\x30\xae\xdd\x11\x28\x18\x2a\xe5\xc7\xc8\x91\x3b\xb5\xc5\x99\x01\xe1\x1c\x70\xa8\xf5\xdb\x39\xab\x5a\x9f\x9c\x74\x44\xa0\x57\xba\x97\x0d\xcd\xf3\xcc\xa1\xd1\x33\x51\xab\x1f\xd1\x45\x0f\x75\xcd\x18\x66\x1b\xd2\x49\x91\xdd\x50\xba\x03\xa9\x97\x5a\x6e\x83\x24\x55\xc7\x55\x4d\xc9\xe9\xd4\x53\x3b\x9a\xfb\xd2\x7b\x17\xf4\xfe\x75\x40\x01\x6d\xae\xcc\xd0\x75\xf8\xd0\x46\x56\x1c\x6d\x3d\xdd\xdd\x39\x5e\x08\x4d\xf0\x11\xa3\xe1\x97\x8f\xc8\x6e\xa2\x67\xb7\xee\x69\x42\xb5\x73\xa7\xe4\x4c\x97\x3c\x51\x3e\xae\xc6\xe0\x6d\x52\x42\xa1\x80\x56\x91\xfd\xc1\x35\x78\x21\xaa\x74\x3e\x52\x28\xe6\xb1\xae\x60\x5f\x4b\x96\x31\xaa\xd8\xc4\xd6\x9b\xc4\xca\xd2\x83\x02\x4c\x5c\x98\x1b\xe2\xec\xf6\x02\x0f\xe1\xe3\xe0\xf7\x7b\x60\x3b\xd2\x34\x6a\x57\x3e\x56\xcc\xa6\xf0\x87\x43\xfa\xef\xea\x02\x53\x75\x07\x15\xf2\xc8\x29\xb9\xb7\xf9\x9e\xbe\xed\x8a\x5d\xed\xf2\xf3\xec\xfa\x08\x3e\x89\xa8\xce\x74\x67\x4d\x53\x3a\xb9\x6e\x2d\x75\xe9\x97\xe7\xdb\xc8\xa8\x71\x8b\xcd\x8a\xf9\xb6\x64\x36\x0f\x84\xb7\x92\x3b\x3a\x7b\xb2\xbf\xf6\x41\x88\xc7\xc4\xc4\xb1\x70\xe8\xee\x76\xe0\x62\xa1\x51\x87\x5c\xa9\xe6\xd5\xa5\xf9\xbf\xa1\xe9\x63\xc2\xa7\x43\xd6\xc0\x51\xb4\x18\x8d\xa8\x3e\x45\x24\xf5\x17\x88\xa0\xee\x9d\x07\xa6\xcd\x48\x0d\xac\xef\x78\x42\x7a\xd8\x78\xcc\xf5\xa9\x49\x1c\x2a\xb6\xda\xc7\xe5\x0e\x7e\xf7\x2b\x8a\xa9\x46\x15\x18\x1c\x8b\xa1\x3e\xf1\x8e\xa3\x62\xa5\xe3\xf6\x3c\x14\x23\x7d\x10\x03\x3d\x4c\x30\x03\xb1\xd1\xa1\xd8\xe7\xe1\x6d\x1a\x89\x89\xfe\xd2\x31\xcf\xa8\xc2\x91\x43\xfd\xbf\xc3\xb1\xcd\x13\x63\x9a\x43\x49\x72\xcf\x89\x65\x06\xd8\x03\x92\xe4\x71\x63\x98\x27\x93\xd4\xbd\x8d\x9d\x42\x58\x63\x63\x9f\x27\xc6\x3c\x37\x31\xcd\x83\xd8\x8f\x8d\x75\xee\x89\x65\x1e\x84\x89\x8a\x71\xee\x8b\x61\x1e\xbe\xa3\x71\xb1\xcd\x7b\xb1\xcb\xc3\x82\x2a\x3e\xa6\x39\x2a\x66\x39\xec\x13\xc7\xc4\x28\x4f\x8b\x4d\x6e\x1b\xa7\x07\x17\x1e\x11\x93\xbc\x17\x73\x3c\x8c\x48\xd8\x58\x64\x54\xcd\xd9\xf1\xd8\xe3\xe9\x31\xc7\xb1\xd5\x24\x91\xd1\xae\xe1\x38\xd6\x23\x56\xef\x0c\x45\x09\x3f\x27\x3a\xf8\xd7\xbf\x3f\x41\x21\x2b\x1c\xc7\x3b\x35\x7e\x77\xac\x0a\x4e\x6c\xdc\x6e\x2b\x2e\x77\x94\x2a\x46\xc6\xeb\x86\x29\x53\x30\x3e\x77\x52\x5c\xae\x33\x57\x0f\x2e\x65\x42\x3c\xae\x35\x10\x8d\xe9\xa7\x51\x71\xb8\x4d\x9c\xed\x20\xc8\xa8\xf8\xdb\x8e\xfd\x6e\x4c\xf8\x0c\xc7\xdd\x06\xef\x46\x5c\x9c\xed\x84\xf8\xda\x83\xf8\xd9\x10\x67\x09\xc6\xd5\x86\x11\x31\x1c\x47\x7b\x8a\xf8\xd9\x09\x71\xb3\xce\x92\x3e\x6c\x61\x8b\x8f\x97\x8d\x36\x9f\x1f\xd9\x64\x8e\x89\xe4\x0a\x47\x70\x61\xe2\x5d\x27\xc5\xb9\xb6\xe2\x58\xc7\xee\x3f\x2a\xbe\xb5\x37\x7e\x75\xec\xbe\x8e\xc4\xb5\x8e\xc5\xad\x0e\x82\xec\x8f\x67\xc5\xc4\xab\x0e\x82\xdc\x8b\x63\x3d\x7e\x9c\xea\x04\xd4\x45\xc4\x85\x1d\x05\x75\x91\x84\x65\x2c\x0e\xf5\x14\xf1\xa7\x93\xe2\x4e\xd1\x3e\x3e\xfc\x91\x4e\x0a\x23\x39\x51\xf8\xc8\xe7\xa5\x46\xb8\x38\xd2\x49\xf1\xa3\x98\xc8\x28\x7c\xdc\xe8\x61\x5c\xe8\x20\x50\x6c\xbc\xe8\x6f\xf8\xbe\x63\xd4\xc9\x60\xbc\xe7\xb4\x38\xcf\x50\xb8\x18\x3a\x66\x0e\xa5\xfc\x84\xe2\x39\xa7\xc5\x71\x7e\xde\x35\x84\xe2\x35\xa7\xc5\x69\x7e\xde\x35\x84\xe2\x31\xa7\xc5\x61\x7e\xce\x35\x04\x55\x64\x5c\x9c\xe5\xa4\xf8\xca\xfd\xf8\xc9\x28\x7a\xb9\x1f\x57\x39\x14\x37\x39\xe6\xc7\xc5\xc4\x53\x7e\x69\xf1\x1b\x43\xd3\xe2\xe2\x22\xa3\xe3\x21\x9b\x58\xc7\x51\xb4\x3c\x4d\x1c\x64\x6c\xfc\xa3\x8d\x6d\x1c\x05\x89\x8e\x7b\xec\x8d\x0d\x1a\x05\x3d\x1e\x43\x37\x16\x1f\x37\x0a\x16\x1b\xff\x83\x22\x5a\xf1\x71\x8d\x91\xf1\x8c\xed\xe3\x19\x5d\x56\x38\x8e\xb1\x27\x2e\x6b\x1c\x5b\xbe\xf2\xbd\x47\xc7\x29\x46\xc6\x27\xb6\xf4\x90\xd1\xc5\x84\xe3\x12\xfb\x63\x0e\x03\x57\x34\xa0\xab\x20\xc5\xce\xd1\x8f\x1c\x99\x4a\x93\x53\xc5\x16\xc6\xc6\x14\x62\x43\x6c\x31\xb1\x84\xc7\xc4\xd5\xe9\xee\xe6\xc1\x3f\x15\xd4\x30\xdc\x7d\xac\x0f\x59\x7d\x0c\x42\xad\xa8\x02\x0a\x63\x21\xc0\x4e\x3a\x7f\x62\xc6\xca\x7e\x36\x2f\xa4\x26\x6a\x27\x12\x68\xcc\x64\xfb\x1c\x29\x92\xd3\x94\x59\x04\xe7\x56\x34\xd9\xdf\xa4\x61\x8b\x41\x21\xd3\x8f\x2c\x2f\x32\xaa\x0f\xee\xed\x5e\x89\xc9\xfa\x39\x40\x00\xd1\x14\xd1\xee\x84\x02\x80\x7e\x56\xc8\xd4\x06\xe7\x1d\x4c\x5f\x4b\x57\x7f\xda\xdc\xd0\x4f\x3b\xf5\xb7\xfd\x15\x8e\xc9\x05\xcd\xde\x84\x3d\xfd\x3f\xcb\xf2\x21\x93\xb4\xbd\xa1\x67\x67\xad\x5e\xfa\x7d\xf1\x0e\x1b\xae\x97\x0f\x7f\x01\x6f\x7b\x22\xf3\xbc\x12\x5c\xef\x2e\xe0\x7d\xbe\xaa\xb4\x2c\xd5\x45\x6a\x30\xfe\x82\x16\x7c\x91\x48\xf1\x68\x68\xbc\x14\x6a\x99\xa7\xbf\xf7\x70\x27\x79\xca\x9b\xbe\x14\x5f\x28\x2a\xe6\xb2\x99\x81\x3b\xdc\x4a\x28\x5d\x56\x89\xb9\x75\x69\x2b\xfc\x32\xa7\x05\x51\x7a\x34\x66\xd8\xb5\xca\x6a\xaa\x73\x1b\x84\xcf\xe9\xce\xd3\x48\x08\x42\xd3\xac\x34\x98\xa3\xa5\xcc\x6c\x83\x3d\x3d\x14\x12\x41\xea\xc6\xe2\xba\xe4\xec\x91\x11\x5a\xae\xb8\x2e\x69\xb9\x6b\x9d\xe5\xc7\x2d\xdb\x81\xa3\xc9\xdc\x8e\xbf\x55\xac\xdc\x01\x3d\x19\xe3\xaa\x4d\xb0\x2d\xb8\xf4\xca\x47\x96\x5a\x1f\x73\x2e\x53\xbe\xde\x71\xb1\x71\x57\x5d\x1d\xa0\x4a\x7f\x68\x86\x61\x2c\x8b\x4d\xc5\x53\x76\xd1\x3a\xd0\x53\x44\xbd\xf8\x75\x23\xc2\x5d\x34\x15\x29\x2d\x53\x07\x69\xbe\x00\x43\x1b\x35\x5f\x80\x5f\xd3\x05\x50\x03\x9a\xe0\x1e\xf2\x3b\x15\xdd\xb2\x25\x27\x21\xa6\x4c\xd9\x50\x58\xb6\xa5\x8f\x5c\x96\xad\x96\x45\xfd\x82\xc5\x71\x6f\x89\x99\xf9\x82\x8a\x74\x61\x3b\x04\x4d\xba\x2c\xeb\x35\x37\x5f\xc4\x79\x9b\xd6\x64\xcf\xbe\x60\xcb\xf6\xab\x64\xcb\xd2\x2a\x73\xb1\x34\x4a\x97\x94\x8b\xc1\xdc\x1d\x8c\xaa\x2e\x64\xca\x2e\x03\x33\x3b\x98\xdd\x75\x1d\x83\x69\x5e\xaf\x57\xd6\x9e\x5d\x59\x65\x4c\x05\xdb\x7c\x8c\x9e\x20\x7e\x11\xf6\x39\xb6\x66\x65\xc9\xd2\xeb\xca\x50\x8f\xfb\x7a\x2a\xb7\x1b\x90\x6b\xed\xcf\x37\x9f\x58\x52\x45\x57\xf2\xfc\xe8\xba\x2c\xa5\x95\x17\xef\xdc\xe7\x80\x02\xb8\x3f\x80\xf0\x14\x80\x0a\x72\x94\xd9\x33\x27\x4f\x2a\xaa\xb9\x5a\x5b\xf5\xbf\xde\x45\xf6\xc9\x5c\x6c\x05\x34\x0d\xa7\xf0\x10\x6f\x44\xf0\xa2\xfe\x39\x59\x55\xe0\x01\x34\xe4\x2b\xd9\x4a\x23\xb7\x51\x7b\x58\xf0\xdd\x47\x2e\x8d\x40\x18\x9e\xae\x14\x8c\xc8\xd2\x06\xe0\xf9\xfe\xae\xcd\xf4\x6c\x1c\x44\x03\x96\x2b\x92\x4b\x44\x9f\xd7\xfa\xac\xbc\x96\x6e\x3e\x03\xe4\xd7\xfc\x63\x03\xd9\x0c\x4a\x13\x55\xe5\xd0\x22\x93\xf1\xcd\x56\x23\xda\x86\xf1\x25\x5b\x36\x6e\x86\x66\x5a\x39\x63\x1a\x42\xac\xdb\x1d\xb3\x2c\x72\x04\x61\xba\x20\x0a\xdb\x36\xfc\x65\xcd\x1b\x5c\x34\xf4\x79\x1d\x44\xbc\x8f\x75\x41\xc0\x7d\xc7\x7d\x4e\x98\x4e\x96\xaf\xce\xeb\x82\xce\x14\xf6\x60\xb5\x23\x5c\x33\x23\xa6\x63\xca\x0e\x6c\x4b\x59\x6d\xec\x4e\xb2\xcc\x4d\x5c\xae\x5b\xc8\x61\xdb\xc3\xa6\xa9\xb9\xa6\x2f\xec\xe6\x86\x3b\xc7\x38\x2d\xdc\x4c\xa7\x0e\x98\x4c\x0d\x5b\xd5\xc9\xb6\xb6\x86\x95\x25\x53\x85\x14\x00\x19\xfe\x72\xd3\xac\xed\x7f\x20\x66\x6e\x81\xbe\x54\xaf\x1a\x64\xd8\xf2\xcd\xd6\xe3\x02\x75\x36\x40\x83\x63\x0d\x0e\x85\xf2\xcf\x90\xc5\x24\xbb\x71\x7b\xc2\x36\x14\x6d\x61\x6a\x8b\xb6\x69\x56\xe6\x7e\xe5\x41\xb8\x36\x2b\xdf\x71\x64\xbb\x2e\x9e\xdb\x68\x70\x87\xd9\xe4\x1b\xf2\x12\x50\x97\xeb\x33\x45\xc2\x05\x7d\x0c\xd1\x5e\xc8\xe2\xd5\x92\x5c\x12\x51\xd5\xb4\xe8\x79\x93\x14\xb2\x9e\xa3\x9b\x8c\xb2\x16\x12\xea\xbf\x86\xb8\xd5\x31\x4d\x62\x8a\xba\x99\xee\x84\x42\x9f\x97\x16\xfb\x6c\xfa\x98\x2c\x61\xb1\xe7\x84\x2a\x25\x13\x4e\x31\xe5\xcd\xed\xa8\xb1\xac\x8b\xba\xf6\x58\x4e\xd5\x9e\x75\xff\x62\x4c\xec\x31\x72\x49\x32\xd7\xfd\xbc\xbb\x15\x6d\x82\x85\x86\x0c\xec\xc3\xc0\x39\x53\x3e\x9b\x0e\xfd\x6e\x44\xb1\xd6\xde\x65\x0c\x4e\x3f\x02\xa4\xcd\x1d\x6f\xe1\x83\x21\xfb\xce\xa8\xa8\xac\x06\xa0\xce\x51\x57\xab\x19\x0f\x6c\x77\xee\x3a\x69\x13\x73\xc6\xb4\x06\x5c\xb2\xcc\x99\x84\xb0\x3d\x97\x6a\x88\x00\xd0\xce\x07\xbf\xc3\x53\xb0\xac\xfe\x62\xdc\x0b\x3d\x82\x8f\xf5\x07\x42\x5b\x60\x67\x02\x8b\x84\x48\x9a\x73\x69\x1c\x8a\x31\xab\x27\xd3\x9a\xf8\xd8\xe1\x8f\xee\x59\xfb\xf0\xa1\xd5\xb1\xdf\x6c\xc5\x99\xb2\x48\x60\xee\xef\x96\xc7\x74\xac\xb5\x43\x4b\xc0\x56\xb8\xbe\x0e\x1b\xc8\x4f\xd0\x9c\xca\x4f\x37\xe6\xee\xda\x61\xb8\xe3\xad\x38\x27\xef\xa4\x36\xff\x77\x03\x1d\xc2\xcf\xc9\xb5\x64\xea\x9d\xd4\xf0\xcf\xd8\x4d\x27\xe4\x07\x6d\xef\xc0\x9b\xe8\x77\x27\x1f\x98\xdd\x8f\x67\x1d\xd7\xa5\xb0\x61\xd8\x66\x7b\x5d\x8f\xf9\xf8\x3b\x67\xc7\xed\xda\x79\x77\x1d\x01\xe0\x8a\xdc\x0a\x23\x12\xbb\x6d\x9e\x72\x1d\xec\x5c\xdc\x14\x7d\x6f\x27\x21\xc5\xc2\x36\x31\xc7\x54\xde\xdb\x1f\xfb\x73\xbc\xa9\xfb\xc3\xb7\xcf\x3f\xa6\xd3\x56\x03\xb7\x77\xba\xc7\x9b\xea\x0f\x10\x3d\xf8\xa6\x1d\x95\x33\x05\xf9\xeb\xc9\x6d\xe9\x23\x08\xce\x5c\x6c\xb2\x5a\x04\x8e\x5f\xb9\x4d\xf1\xf7\x21\x8a\x50\x2a\xa0\x28\x99\x66\x29\xc4\x78\x0a\x1f\xce\x15\x8f\x51\xe0\x90\xb1\xf3\x85\x20\xed\x22\xa3\x09\x4b\x49\x0a\x0a\x84\x99\xb8\x2e\xa9\x66\x1b\x8e\xab\x9c\xd3\x1e\x39\x2b\x37\x8c\x14\x46\xbe\x88\x9d\x56\x34\x13\xb7\x63\xf2\x25\x8f\xab\x3d\xdf\x8c\xb8\xfe\x64\x76\xe0\xbb\x94\xf9\xe7\x3d\x7a\x46\xbc\x14\xd9\x0a\xb2\xfd\x52\xcc\x1e\x80\xf0\x08\xad\x79\xbf\x3a\xb9\xd1\x35\xf6\x9b\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\xec\x1d\xb3\xdc\xe8\xc7\x67\x91\x1b\x23\x3f\x62\xed\x9f\x13\xcc\xb2\x3f\x5b\x7b\x76\x63\x87\xb5\x16\x56\x10\x5a\xc1\x26\x8d\x26\x7a\x5d\x83\xac\x11\xf5\xee\x9d\x2c\xf0\x11\x4c\xbd\xb6\xe3\x39\x29\xa9\xd8\x60\x41\x7e\xbb\xf8\xf6\x9b\x6f\x70\xf8\x8d\xed\xaa\xdb\x0c\x7c\xc9\x78\x12\x85\x8d\x8b\x96\x9d\x1c\xf1\xb0\x3d\xb9\xb0\xa7\x05\x8f\x0f\x58\x54\x1b\xf2\x83\x1d\xc1\xfb\xea\x58\x69\xed\x30\xeb\xb8\xe4\x26\x3a\x48\xeb\x98\x8b\x9c\x69\x42\x75\xc7\x71\xc2\x73\x86\xe3\xcf\x85\x4c\x2d\xa1\x77\x15\xb7\xbc\x27\x38\x25\x52\x38\x7f\x99\x80\x2c\xfc\xbd\x15\xc4\x39\x1d\x9b\x58\xd0\xee\x0a\x12\x46\x6d\xd7\xd4\x15\x04\xba\x86\x1d\x8e\x9a\x28\x99\x33\x62\x93\x03\x1d\xdb\x30\x4b\x60\xfe\x54\xc8\x4b\xb6\xdc\x2c\x49\x5a\xb9\x66\xac\x41\x90\xb6\xc4\xd8\x2b\xcb\x81\x6d\xf6\x35\x78\x9c\x65\x09\xff\x67\xb6\x45\x97\x3b\x88\x1d\x7c\x64\x42\x57\x34\x43\xb4\x43\x62\x8f\x3c\xd1\x75\x7d\x1f\x48\xa7\xe0\xda\x46\x1a\x1c\xb3\x76\xf3\x3e\x4d\x41\x71\xb1\x3d\xe1\xde\xd7\x8f\x1a\xd2\xa9\xb5\x81\x8b\x2d\xfd\xc9\xec\xe3\x80\x99\xef\x3f\xe0\xaa\xa6\x4e\x6d\x94\xe7\x1c\x87\xb2\x74\x6e\xce\xc3\x69\xc7\xd8\x23\x20\x0e\xa4\x09\x3a\x32\x4b\xe9\x60\xb0\xf5\xba\x63\x41\x9a\xf5\x5f\xbe\xbb\x66\xa9\x85\xf4\x51\x16\x32\x93\x9b\x5d\xfb\xac\x6c\xb2\x55\x5d\x16\x0b\x2b\xf6\x51\xa2\xaa\x95\xd3\x9e\x0c\x7e\xbd\xdb\x43\x81\xd9\xe3\x87\x1b\xb3\xe5\x26\x02\xe2\x6c\xb9\x99\x2d\x37\xb3\xe5\x66\x74\xcc\x96\x9b\xd9\x72\x33\x5b\x6e\x66\xcb\x4d\xef\xf8\xc7\xb6\xdc\xcc\x1e\xbf\x59\x6e\x9c\xe5\xc6\xa8\x31\xcb\x8d\xa1\x31\xcb\x8d\xb3\xdc\x38\xcb\x8d\xb3\xdc\x38\xcb\x8d\x7b\xe3\xb7\x23\x37\x46\x7e\x04\x0f\x1e\xbb\xad\x8b\x43\x03\x3b\xca\xd3\x74\x8c\xc6\x4f\xe0\x99\x79\x46\x52\x63\x21\xd3\x91\x9c\x46\x70\x92\x8c\xae\x25\x91\x0b\x57\x24\x0f\xdc\x35\x06\x9c\xf3\x57\x2a\x9a\x5b\x9f\xd0\x39\xf9\xbb\x14\xcc\xe6\x7b\x19\x32\xa1\x64\xa0\xf3\x16\xf4\x8a\x30\xa0\x5e\xaa\x57\xa3\xb9\x38\x73\xbe\xe4\x9c\x2f\x39\xe7\x4b\x7e\xad\xf9\x92\x5b\xaa\x6c\x91\x15\xd7\x41\xae\x49\x9f\x0c\x42\xec\x86\x44\xb4\x28\x9c\x21\xae\xff\xa3\x37\x7b\x32\x08\xf3\xcb\x64\x57\x9a\x4b\xe0\x90\xd4\xec\x74\x0b\xd1\xec\x7e\xa4\x2e\x90\x84\xa5\x77\xdd\x55\x22\x38\x99\xb5\x49\xc0\x62\x28\x34\x5f\x28\x58\xb9\xb0\xa8\x2d\xc9\x9a\x8b\xb4\x67\x8d\x08\xb0\x6e\x67\x11\x37\x35\x2a\x07\xb2\xbb\xbc\x09\x8e\xdc\xb6\x0f\xba\xc3\xb6\x7e\x4d\x19\x91\x60\x37\xf0\xa2\xc2\x74\x23\x17\x58\x1f\xa0\x86\x06\x91\x8f\xd0\x60\xc6\xe9\xcd\x75\x57\xa3\x18\xd9\xde\xf7\xd2\x4b\xa8\xb2\xac\x0a\x2f\x28\x4f\xb3\xc1\x4c\xf7\x12\x93\xfd\xcd\xd8\x07\x65\x6d\x5e\x19\x47\xb0\x9a\xee\x90\x6b\xb7\xad\xbd\x46\x43\x60\x67\x91\x10\x3b\xfc\xa1\x71\xf5\xc7\x59\xf0\xa6\xa8\x20\xbd\xd8\xf2\x6c\x63\x22\xc1\x19\x14\xe3\xb5\xd4\xb0\x51\x71\x92\x3a\x3d\xdd\xb0\x48\x9e\x61\x5c\x24\xd3\x0c\x8c\x64\xff\xd8\xcc\xec\x9d\x04\x54\xdb\x1a\x27\xc0\x24\x4d\x31\xb7\x23\xd8\x1b\xc9\xf3\xb4\xdb\xe9\x76\x47\xb2\xbf\x3d\x35\x9a\xd4\xed\x6e\xe2\x91\x84\x78\xe4\xdb\x33\x5c\xd6\x86\xc8\x49\x10\x87\x8d\x97\x86\x06\x4c\x02\x79\x60\xc0\x04\xbc\x7e\x9e\x0d\xf3\x99\x07\x39\xcd\x1e\x49\xf6\x8f\xd1\x59\xd1\x6c\x39\xab\x58\xb3\x47\x33\x0e\x2c\x9a\xfb\x16\xca\x49\x50\x7b\xac\x9a\x1d\xb3\xdf\x24\xa0\xbd\x96\xcd\xa3\xcc\x75\xc0\xba\x39\xc9\x18\x4b\x86\x0c\xb2\x6e\xca\x1f\xb7\x7c\xe2\x7d\x3b\x85\x89\x8f\x3c\xcf\xcc\x47\xa6\x9b\xfa\xc8\x73\xef\xd1\x54\x93\x1f\x99\x68\xf6\x23\x13\x4c\x7f\x64\xaa\xf9\x8f\x4c\x35\x01\x92\xc9\xfb\x02\xe2\xe0\x9b\xd1\x96\xe0\xfd\x23\xae\x78\xdf\xd8\x94\x27\x60\xc2\xa1\x44\xeb\x1a\x8b\x83\xbc\x95\xd3\xc2\x50\xb8\xff\x63\xc4\x24\xb8\x94\xff\x37\x56\x96\xa1\xbc\x54\x46\x6d\x72\xe6\xff\x16\x24\x6f\xad\x6b\x7d\x34\x12\xb8\x99\x1d\x57\x7b\x2d\xd3\xa8\xf0\x06\x06\x33\xf3\x7d\x19\x3d\x56\x46\x7c\xda\x4a\x65\xe5\xb9\xba\xb8\xef\x8b\x07\xb6\x7b\x71\xfe\x1c\xba\x69\x80\xdc\x8a\x17\x56\xf0\x3c\xf0\xe8\x78\xa9\x36\x56\x89\x10\xd9\x8e\xbc\x00\x48\x2f\x7a\xa2\x83\x27\x2a\x01\xcf\x30\xa3\x47\xbd\x54\xf7\x52\x9f\x1a\x7e\xd1\x00\xa8\xad\x93\xde\xfc\xd3\xfc\x29\xc6\x7f\xe0\xa5\xdf\xfb\x43\xd9\x95\xbc\xf4\x16\x25\xba\x31\x27\xa5\x5f\x85\xcb\x6e\xb5\x96\xda\x89\x09\x87\xa0\x91\x9c\x51\xa1\xc8\x0b\x6f\xc7\x3e\x6b\xf5\x96\x0f\xdb\xc0\xfc\x88\xe6\x23\x93\x68\x46\x3c\x6d\xd4\x2e\xb4\xfc\xaf\x31\xaa\xc9\x9e\x25\xcb\xd9\xf7\x9b\xa2\x9c\xb5\xf1\x1f\x6b\x72\x31\xe3\xa5\xb7\xdb\xbc\x32\xfb\x2f\xa4\x6e\x81\x21\x2f\xa9\xd0\x7c\x51\x3f\x11\x01\xb6\xb6\xe6\x80\xc9\xb1\x9d\x86\xd5\xc5\xa0\x58\xb3\x48\xbb\x40\x79\x83\xc3\xe7\xae\x4d\xc3\xa4\x1d\xe0\x8a\xf8\xbe\xd6\x54\xd5\xfd\x62\xa5\xf0\x66\x78\x4b\xee\xc6\x7b\xf6\x1c\x0e\x67\x56\xb4\xca\x22\xec\x06\x44\xa7\x34\xe7\x1e\x51\x21\xcd\x0f\xd0\x1d\xe5\x1a\xea\x78\xc3\xd4\xa4\x70\xd7\xd9\xfc\xe2\x2d\xe6\xb0\xb3\x51\x3b\x00\x67\xc4\xeb\xb5\x2f\xc9\x0d\x5c\xc3\xf6\x64\x39\x74\x73\x8b\x80\xe9\xdb\xca\x47\x5e\xa2\x88\x9b\x17\x27\x6f\x2d\xda\xcb\x39\x85\x23\x73\x72\xea\xe2\xd3\x89\x52\x17\xf7\x4c\xbc\xff\x50\x99\x8b\x91\xc6\xfb\x39\x7d\x71\x6c\xcc\xe9\x8b\x91\xe9\x8b\xa8\xf5\x5b\xce\x80\xce\x63\x0c\xc2\x6c\xf2\x1c\x47\xf3\x18\xc9\xcf\xae\xbb\x3b\xc2\xf8\x65\x8e\x3a\xaf\x32\xcd\x8b\x26\x48\x49\xd9\xa9\x66\xd6\xb8\xb1\x76\x2e\xf2\x0e\xe5\xc1\x78\x28\xc1\xef\xbb\x77\x4d\xe1\x7b\x10\xc4\xa4\x80\x83\x9d\x5b\x37\x31\x1d\xe9\x5c\x55\x43\x84\xfc\x45\x6f\x15\xb1\xbe\xfa\xd1\xd6\x90\x76\x4c\x71\x21\x5e\x83\xac\xa0\x1a\x1f\x0f\x70\xcf\x97\x46\x18\xc9\x0c\x9a\x19\x61\xc1\xd3\x6e\x04\x19\x3c\x94\xa9\xad\xed\xf3\x91\x79\x47\xee\x86\x3f\x32\xd1\x08\x3b\x2f\xd5\x2b\x8c\x20\xe6\xec\xcc\x23\x42\x62\x57\xf4\x43\x79\x22\xc7\x84\x43\xe0\x5a\x93\x04\xb1\x08\x01\xcc\x09\x39\x08\xa0\x7b\x82\xd7\xbf\xb4\xb8\xff\xbf\xb6\x9c\xdf\xb5\x40\x85\xf4\xc4\xb6\x44\x2e\xd8\xd8\x5a\xe8\x6a\x50\xa1\x11\xa4\x8e\xec\xb3\x9d\xe0\xac\x3c\x9d\xa3\x72\xa2\x93\xf2\x8b\xa5\xb0\x0e\x3b\x26\x89\x8c\x89\x0f\x0d\x39\x25\xa7\xe6\x36\x4c\xb0\x45\x3c\x37\xa9\xe1\x48\x8e\xc8\x39\xab\x61\xe0\x8b\xcf\xf2\x13\xf7\x39\x1c\x61\x0f\x26\x39\x5f\x7f\xf5\xc9\x0d\x3d\x0e\x46\xef\x2c\x8c\xde\x90\x5e\xe7\xe2\x81\xa3\x70\xb2\x33\x55\xf5\x67\x39\x04\x1b\xf6\xf5\x8d\xe7\x38\x15\xbf\x64\x72\xc3\xa1\x23\xb1\x71\x0a\x4e\x74\x6e\x1e\x38\xe6\xf6\x1d\x82\x93\x2e\x46\x20\xcd\x21\x1a\x66\xcf\x1c\x3f\x57\x9a\xc3\x24\x27\xe0\x1c\xe3\x3f\xc7\xf8\x4f\xce\x0d\x8d\x75\xec\x3d\xd7\xa9\x37\xe9\x94\x4f\xe8\xcc\x3b\x99\x23\xef\xc4\x4e\x3c\x9c\x03\x8f\x44\x91\x13\x84\xf3\x0e\xdc\x71\x31\x20\x8f\xe9\xb8\x8b\xbe\x17\x91\x2f\xc4\x3a\xeb\x4e\xe6\xa8\x3b\x8d\x93\xee\x14\x0e\xba\x28\x5a\x1f\x7d\xf7\xe3\x68\x5a\xb4\x43\x0e\xef\x8c\x6b\xd9\x59\x90\x6b\x0d\x3a\xe2\xba\xee\xb5\x18\x92\xdd\xeb\x84\x3b\x70\xad\x45\x3b\xa8\x0f\xed\x3e\xfd\x56\x1d\xec\x06\x8c\xd8\x7e\xf6\x2c\x3b\xf1\x0e\xd7\x3e\xeb\x4f\xd7\xb6\x83\x84\xd9\xe3\x74\x43\xb8\xd2\xb0\xf6\x15\x70\xb8\xc5\xb9\xd1\xa2\xee\x48\x8c\x3f\x25\x66\xfa\x47\x77\x91\xa0\xd3\xee\x84\xe6\xcf\x4d\xbd\x6b\xdf\xb2\x83\xfc\xbb\xd1\xd5\x58\x0f\x00\x7d\x94\x3c\x25\x45\xa5\xb5\xbd\x68\x88\x1c\xbc\x51\xa8\x2e\x3f\x6f\xce\xc1\x3b\xcc\xc1\xeb\x1c\x55\x2b\x33\x2b\x08\x73\xc0\x2d\x34\x9c\x88\x17\x9e\x65\x3b\x51\x0f\x93\x88\x17\x84\x78\x90\xa8\x87\x4c\xc4\x0b\x2f\xbe\x9b\xa8\x17\x4e\xc4\x0b\x42\x3c\x48\xd4\x0b\x25\xe2\xa1\x29\xd3\x3e\x6a\x0e\x9f\x79\x18\x66\x30\x5b\xaf\x37\x1b\x0f\xb7\xf8\xb1\x6c\xbd\xc3\x6c\x3c\xdc\xd9\x0f\x67\xeb\x05\xb2\xf1\x10\xc8\xfa\xd5\xf4\x3a\x9c\xb3\xf1\xfc\xd3\x73\x36\x1e\x99\xb3\xf1\xdc\x98\xb3\xf1\xb0\x63\xce\xc6\x9b\xb3\xf1\xe6\x6c\x3c\x18\x73\x36\xde\x9c\x8d\x37\x30\xe6\x6c\xbc\x39\x1b\x6f\xce\xc6\xc3\x8e\x39\x1b\xaf\x67\xcc\xd9\x78\x73\x36\xde\x9c\x8d\x37\x67\xe3\xcd\xd9\x78\xcd\x98\xb3\xf1\xe6\x6c\xbc\x39\x1b\xaf\x1e\x73\x36\xde\xfe\x98\xb3\xf1\x60\xcc\xd9\x78\x7b\xd9\x78\x1d\x27\xd6\xaf\x37\x25\xaf\xbd\x0c\x2c\xba\xcc\x79\x79\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\x57\x8f\x39\x2f\x6f\xce\xcb\x9b\xf3\xf2\xe6\xbc\xbc\xc0\x98\xf3\xf2\xe6\xbc\xbc\x39\x2f\x6f\x7c\xcc\x79\x79\x73\x5e\xde\x9c\x97\xd7\x1a\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\xf7\xd9\xf3\xf2\x82\x8f\xd0\x72\x33\x48\x69\x3a\x37\xf9\xec\xb2\xdc\x54\x96\xc9\x38\xf3\x2b\x13\xba\xdc\x81\xe9\xdf\x32\xa2\x54\x26\x0f\xac\x24\x3c\xa7\x1b\x76\x36\xa2\x7d\x5e\xbd\xbd\x36\x87\x58\x29\x73\x17\x5c\xfa\x8e\x3b\xd4\xa2\x94\x8f\x3c\x65\xa9\xd1\x34\x4b\x4e\x57\x99\x61\x6f\x6b\x56\x32\x61\x38\xc0\x1f\x5e\xfe\x74\xf9\xe1\x97\x77\x97\x6f\x6f\x86\xe9\x85\x61\x80\xec\x53\x41\x45\xca\x52\x52\x29\x7f\xab\x1d\xa7\x65\xe5\xd9\x99\x22\x4c\x3c\xf2\x52\x0a\xb3\x18\xd0\x9d\x28\x79\x74\x5f\x1b\x04\x9b\x50\xe1\xdc\x32\x25\x53\x32\x7b\x64\xa9\x15\x09\xea\xd9\x79\x4a\xc1\x45\x51\x69\x1f\xee\xf9\xc4\x47\x2c\xf4\x2b\x46\x2a\x91\x6c\xa9\xd8\x98\xf5\x9a\x0d\x6c\xad\x8f\xa8\x9d\xd0\xf4\x93\xf9\x2e\x28\x32\x2a\xa1\x85\xf7\x84\x0e\x9b\x8c\x52\x59\x99\x2d\xfb\xc3\x1f\xce\x09\x67\xaf\xc9\x1f\x5a\x00\x97\xe4\xc6\xc1\x68\x6d\xa8\x75\x37\xb1\xc7\x11\x77\xe3\xaa\xd9\xce\x73\x52\xb2\x0d\x2d\xd3\x8c\x29\x70\x70\x3c\x6d\x19\x24\x45\x5a\xb1\xc6\x1d\x17\xf3\x3a\xdd\x20\x44\x21\xf5\x92\x5c\xd5\xfb\x69\xfd\x3c\xe9\x92\xbc\x95\xe0\xe4\x58\xcb\xd7\x64\xab\x75\xa1\x5e\x5f\x5c\x3c\x54\x2b\x56\x0a\xa6\x99\x5a\x72\x79\x91\xca\x44\x5d\x68\xaa\x1e\xd4\x05\x17\x06\xa1\x17\x29\xd5\x74\x01\x4c\x3c\x01\xbb\xc5\x85\xa5\xab\x8b\x44\xe6\x39\x15\xe9\x82\x3a\x94\x5d\xd4\xc7\x7f\xf1\x7b\x47\x7f\x16\xb4\x7e\x8a\x8b\x05\x5d\xa8\x2d\xcb\xb2\xb3\x81\x49\x07\xf8\x31\x82\xba\x84\x2e\x34\x13\x8f\xa8\x5b\xf8\xc6\x75\x73\x6f\xa1\x70\xbd\xf7\x70\x31\x15\xd3\x1e\x15\xeb\x45\x0f\xd3\xc8\xc3\x63\x98\xb6\x03\x9d\x39\xde\x88\xc7\x9f\x68\xd7\x1e\x25\x7a\x27\x4c\xdc\x03\x23\x24\x8e\x1b\x7e\x77\x15\x5e\x08\xce\x18\x69\xd8\xf2\x38\x55\xef\x2c\xe4\x1d\xcd\x9b\x04\xd2\x9e\xf9\x2f\xc9\x5b\x6b\x68\x08\x50\x73\x4a\xae\x7e\xb9\xbd\xbe\x79\xf7\xf1\xf6\xfb\xdb\x9b\x0f\xe3\x1c\x0b\xc9\xa9\x80\xef\x47\x2c\xe5\x2c\x40\x4f\x3b\x74\x33\xb0\x9c\x86\xaa\x16\x25\x7b\xe4\xb2\x6a\xe4\x99\x7e\xb4\xe4\x22\xc4\xee\xda\xd8\xea\xec\xdb\x3b\xa2\x58\xf9\xc8\x93\xfe\xad\x0f\x5a\xaa\x3b\x64\x1d\x4d\xbe\x43\x5e\xd1\x7d\xe2\x8e\x22\xe2\x01\xa0\xbd\x24\x1e\x45\xca\x03\x80\x7b\x09\x3d\x82\xa0\x23\x0e\xeb\x90\xdc\x5b\xb2\x7e\xcd\xd6\xb4\xca\xac\x88\xf0\xe2\xc5\x72\x88\x9e\x3a\x40\x11\xa8\xfe\x7d\x29\x03\x49\x99\x1d\x74\xbf\xb7\x09\xcf\x6b\x59\x0e\x5e\xde\x33\xe7\x83\x09\x21\x52\x8b\x44\x3a\x81\xc5\xca\xdc\x4e\x62\x41\x58\x43\xf1\x8e\x92\x44\x8a\x35\xdf\xbc\xa5\xc5\x5f\xd9\xee\x03\x5b\x47\xfa\xdf\xad\xd2\xe2\xac\xff\x20\xbe\x1b\xca\x69\x01\x86\xc5\xe4\x38\x77\x0e\xda\x89\x73\x90\x6e\x6c\xc3\xfe\x9c\x5e\x70\x02\xe9\x1d\x43\xe5\x7b\x27\x77\xd6\x26\xf7\xee\xee\xe8\xb6\x58\x82\xd4\x4f\x46\x84\x97\x44\x8a\x84\x15\x5a\x5d\xc8\x47\x43\xdb\xd8\xd3\xc5\x93\x2c\x1f\x8c\x34\x62\x6e\xfd\xc2\x8a\xe9\xea\x02\xb4\xc7\x8b\xdf\xc3\xff\x21\x3f\xfa\xf1\xfd\xf5\xfb\xd7\xe4\x32\x4d\x5d\xa1\x8a\x4a\xb1\x75\x95\xb9\x1c\xec\x25\xa1\x05\xff\x89\x95\x8a\x4b\x71\x4e\x1e\xb8\x48\xb1\x36\xb1\x8a\xa7\xff\x73\xfc\x12\xfb\x11\x79\x46\xb2\xb0\xe6\xce\x09\xe7\x74\x0f\xba\xf8\xae\x23\x7e\xd6\x78\x8e\x8b\xd7\x20\x20\xd1\x28\xc0\x45\xef\x2b\x70\x2c\x2c\x62\xb1\x2b\x29\x33\x46\x43\xbc\x2d\x4e\x9f\xc4\xe8\xed\x11\x7a\x24\x9c\x7f\x3c\x25\x39\x6b\x48\x89\xb5\x83\xba\x5b\x51\xc8\xf4\x35\x51\x55\x51\xc8\x12\xe5\xc2\xcf\x99\xa6\x46\x46\x5f\x1a\x54\x3e\xef\xfe\x13\xcc\x23\xad\xdf\xc0\x78\x81\x32\xd6\xd6\xaf\x00\x65\xb6\x0e\xcb\x73\x30\xd1\x2c\x85\x4c\xd9\x3b\xf8\x16\xfc\xd3\x49\x10\x97\x49\x22\x2b\xa1\xe1\x0f\x08\xf8\x4a\x53\x5d\xa9\xe5\x56\x2a\x7d\x7b\x77\xee\xff\x59\xc8\xf4\xf6\x2e\xc0\xd1\x48\x34\x1d\x6d\x2e\xe6\x84\x9b\xe0\xde\x6c\x17\x00\xc9\x29\xfc\xe7\xf7\xe6\xd4\xee\xa8\xc6\x1a\x6c\xb8\x22\x4f\x25\xd7\x9a\x09\x10\x84\x20\x66\x4c\xae\xcf\xcd\xa5\x68\xf8\xf9\xe3\xb7\x2f\x4e\x42\xaf\xd7\x7e\xb2\x13\xb6\xc0\xbc\xe6\xd7\x6f\x51\xb5\xe6\x2d\x38\x91\xce\x8f\x26\x24\xf2\xf2\xee\x96\x3c\xda\x9d\xfd\xc2\xc6\xa5\x35\xfa\x14\x23\x48\x82\x8f\x67\xfa\xfe\xd9\xa4\xa1\xae\x2b\xe3\xf6\xbf\x96\xe0\x31\xe7\x08\xa9\x48\x75\x6c\x15\xc9\x78\xce\x5d\xe2\xb0\xab\x52\xa3\xc8\x4b\xfb\xe3\x32\x29\x2a\xcc\xb5\x75\x4f\xe7\x2c\x97\xe5\xee\xdc\xff\x93\x15\x5b\x96\xb3\x92\x66\x0b\xa5\x65\x49\x37\xec\xbc\xfe\x00\x16\x70\xfd\xbc\x05\xdd\x99\xe4\x21\x7c\x8c\x29\xdb\x28\x5b\x49\x55\x1a\x01\x23\xdb\x79\x82\xca\xd2\xa3\x53\x97\xfa\x44\xde\x4d\x14\x89\x6a\xcd\xdb\x0a\x55\x35\xf6\x82\x64\xfd\x28\xb3\x2a\xc7\xc7\xc5\x79\x96\x6f\x8b\x1d\x89\x47\x23\x89\xab\x93\x08\x17\x29\x7f\xe4\x6a\x52\x20\xe0\x7d\xed\x63\x02\x7f\x5f\xa5\x8d\xbe\x67\x23\xf9\xf1\x01\x96\x66\xb0\x4f\x85\x54\x60\x6c\xf3\xd1\x83\x5d\x5a\xfa\x2d\xce\x11\x14\xb9\x70\xff\xb5\x29\x47\xed\xeb\xd7\xbc\x6e\xee\x75\x4d\x4a\x4f\x70\x4a\x31\x74\xd0\x4f\xe8\x98\x64\x50\xb1\xa4\x64\xfa\x58\x7a\x96\x85\xe6\x0d\x6f\xe0\xf3\x8b\xf1\x8c\x7e\x55\xca\x59\xed\xb8\x81\x25\x35\xec\x74\x5d\xca\x7c\x49\xc0\xe4\x85\xbc\x04\x2b\x06\x36\x98\x8c\xa7\x1e\xda\x03\x43\x46\x0e\xcd\x2a\x5f\x70\xfc\x83\xab\x7c\xf7\x16\xa3\x64\x69\x34\x39\xe4\xda\x7e\xe3\xfa\x1e\xea\xc1\xf0\xec\x16\x70\x9d\x02\xde\x0e\x84\xd7\x71\xd8\xdb\x01\x2e\xc2\xbb\x2a\xcb\xec\x21\xe2\x1c\x90\xb7\x7b\x2f\xb9\x18\xca\x5a\xac\x70\x11\xeb\x2d\xb3\xe7\xf0\x12\xa4\x23\x48\xaa\x5b\x18\xd4\xd3\x63\xf3\x40\xa5\xac\xfd\xb0\xa8\x32\x57\xfa\x70\x37\x16\x0f\x0f\xbe\x3f\x33\x43\xe7\xd8\xf4\x89\x55\x77\x32\x35\xd8\x0b\x7e\xc6\x5a\xc7\x00\xe3\xb3\xf2\x34\x76\x78\x9e\xde\xc4\x5c\x50\x65\x60\x6a\x49\xb8\x30\xc2\x4d\x5a\xd1\x0c\x26\x06\xee\xd6\xc2\xc6\x3e\x59\x45\xd8\xdb\x3c\x87\x93\xfc\xec\xda\x8e\xe1\xe8\x79\x23\x13\x9a\xbd\x07\x44\xf8\x50\x1b\xd2\xeb\x98\x26\x26\xa0\x9a\xa3\xa1\xa3\x46\x7e\xe2\x72\xec\xe6\x68\x49\x32\xa6\xc9\x4e\x56\xc4\x86\x49\x74\xcd\xf3\xa9\xc3\x37\xc2\x85\xe2\x29\xab\x8f\x2c\xe0\xeb\x81\xc3\xfc\xcc\x4e\xa3\x20\x4f\xf9\xbc\xdc\x22\x96\x4b\x20\xe8\x3f\x8a\xee\x1f\x83\x4a\x08\xae\x6b\x05\x04\x19\xa4\xe0\xfd\xa3\xe6\x5d\x4e\x33\xfe\x77\x40\xbc\x46\x11\x52\x64\xc5\x32\x29\x36\xe0\xc1\x1a\x4e\x1d\x74\x52\xdc\x92\xdc\x0a\xae\xdb\x6f\x5b\x37\x19\x4b\x2a\x08\xe4\x11\x44\x96\x29\x2b\x49\x51\x72\x09\xb5\x75\x9b\x27\x07\x41\xaf\x98\xf9\xb6\xd2\x14\x34\x3e\xf0\x53\x89\x1d\xcc\xb7\xe5\x02\x5b\x53\x9e\xb9\x7c\x42\xa8\x5e\xac\xcc\xdf\x0c\xe6\x8f\xd5\xc8\xd4\x92\x6c\xe9\x23\x83\x97\x99\xad\x85\xca\x15\xd9\x52\x91\xc2\x3f\x93\x44\x96\xa9\x5d\x37\x18\x3f\x4b\x06\x93\xb8\x93\x19\x4f\x46\xa4\x32\x23\x16\x1a\x44\x03\xc2\x42\xc5\xfe\x4c\xc1\xf3\x53\xe6\x34\x6b\xfd\x96\x07\xbc\xa2\x95\xe0\x7f\xab\x18\xa1\xb9\x34\x74\x35\x6b\xbd\xaa\x0e\x77\xdc\x27\x7b\x9a\xa5\x0d\x42\x7c\xc3\xd7\x2c\xd9\x25\x19\x23\x34\x71\xf6\xc0\x0f\x8c\xa6\x5c\x30\xa5\xcc\x35\x5f\x19\x05\x4c\x96\xe4\x0d\x7f\x64\xad\xdf\xc6\xcb\x26\x7a\xb5\xe3\x43\x3b\xc0\x12\xa2\xa2\xf6\x37\x01\x0a\xb6\xd2\x07\xb0\x9e\x69\x09\x5b\x5d\x8d\xb8\xb5\x5d\x20\x79\x2b\x4b\x78\xb5\x83\x8a\xa8\xde\xaf\xea\x8b\xc1\x3a\x2b\xc3\x05\xd8\x32\xcc\x01\x0c\x82\x84\xac\xd1\x46\x71\xdb\x15\xac\x0e\x39\x15\x2d\x87\x6d\x4e\x3f\x99\x15\x00\x75\xa2\x3a\x50\xc4\xc1\x39\xcf\x5c\xc1\x62\x9b\x7f\xdc\x3d\x69\xb5\x24\x6f\x9c\xe1\xa6\x64\x2e\x9a\x32\x1d\xbb\x57\x7c\xef\x70\xc1\xbd\xaf\x78\xce\x33\x6a\x90\x5e\x6d\xb9\x14\x87\x28\x60\xbd\xb7\x83\x40\x1b\x4b\xca\xca\x97\x9a\x85\x74\x98\x5c\x3e\x9a\x1b\x36\x1a\x6a\x32\x08\x14\x43\xa4\x0d\x6d\xce\x24\x4d\xd5\x45\x21\x53\x75\x61\x16\xd7\x44\x9a\xa8\x8b\x89\xd1\x24\x7b\xb9\x68\x2e\x82\xba\x15\xe5\xd2\x42\x3c\x38\x45\xc3\x34\x9f\xe8\x68\x18\x85\x96\xa4\xac\x04\xf8\x96\x61\xcb\x0d\x6d\x7b\x26\x5b\x1c\x0b\x1c\xeb\x59\x08\x36\x7c\x2c\xc0\xce\x7c\x70\x59\x5c\x10\x59\xd0\x24\x1a\x0c\x89\x18\x08\x25\x0b\x00\x1e\x0e\x34\x0b\x47\x24\x84\x36\x62\x20\xdc\x6c\x3c\x22\x21\x64\x14\x19\x09\x3a\x1b\x8d\x48\x08\xc0\x1d\x0d\x3d\x1b\x8a\x48\x08\xc0\x0c\x06\xa0\x0d\x05\x9a\x05\xe0\x7e\xc5\x61\x68\x76\xa0\x82\xc3\xd1\xba\x39\x2e\xd2\xd4\xcd\x31\xe6\xbe\xdf\xd4\xd7\xdb\x42\x5f\x92\x77\x52\x37\xb2\x93\x27\x45\x21\x8c\x34\xfb\xd1\x1b\x5e\x4a\x6e\xde\x7d\xfc\xf0\x9f\x77\xef\x6f\xdf\x7d\xdc\x27\x04\xa1\xab\x13\x19\x6b\x8a\x28\x8c\x7a\x82\x88\x53\x3b\x26\xc5\x9d\x06\x60\xa2\x03\x97\xf6\x08\x41\x10\x2c\x3a\x70\x09\xa3\xa3\xb7\xe6\x8a\x0d\x5c\xea\x10\x82\xe0\x89\x05\xc8\xc4\x4c\x08\x7a\xb7\x6d\x38\x4e\xd5\x8e\xa9\xd1\xaa\xa1\x7b\x50\x87\x80\xc6\x52\x74\xd4\x2e\x4d\x8b\x5f\x45\x98\xed\x01\x00\x3a\x8a\xd5\xbf\x85\x37\xf6\x63\x0d\xdf\x13\xe2\x5a\x51\x96\x51\x30\xf1\xe3\xa3\x5b\xed\x88\x32\x1c\x23\x22\x5d\x7b\x96\x88\x89\x77\x45\x2d\xb0\x87\xb2\x8f\x45\xbd\xa2\x60\xb6\x23\x63\xf1\xb1\xaf\x71\xa0\x91\xf2\x26\x0a\x68\x38\xc9\xa1\xcb\x4e\x50\x40\x63\x12\x1e\x1c\x53\x41\xc1\x8d\x4a\x7e\x40\x41\x3c\x05\xfb\xb1\xe3\x39\xd1\xb3\x76\xc4\x5f\xa5\x70\x24\xad\x1d\xf1\xf1\xb4\x48\x04\xcd\x2a\xb6\x3c\x42\x54\xad\x1d\xb1\x45\x48\xa2\x23\x6c\xed\x38\x62\x9c\xed\xb4\x79\x93\xf8\xc2\x29\xc7\x88\xbc\xb5\x63\x52\x76\x39\xde\x25\xdb\x33\xdd\x11\x23\x7a\x04\x48\xf2\x25\x0c\xee\xdd\x81\x37\xbf\x47\x81\xc5\x9a\xea\xbb\x63\xd2\x39\xc6\xb9\x6d\xed\xc0\xc7\xeb\x46\xad\xda\xfa\x7a\x27\x7b\x71\xed\x88\xf3\xe5\xda\x11\x5b\xd3\x22\xa6\x9e\x45\x74\xfa\x3d\x3e\xa6\xd7\x8e\x93\x44\xf6\xda\x71\x9a\xf8\xde\x3d\xd8\x27\x8a\xf2\xb5\xe3\x79\xb1\xbe\x76\x4c\xa1\xe5\xb1\x71\xbf\x76\x9c\x28\xfa\xd7\x8e\xe3\xc6\x00\xdb\x31\x89\xe2\x44\xc6\x03\xdb\x81\x8d\x0a\x8e\x64\x1f\x7b\x25\xb6\xa3\x63\x83\xed\x98\xb0\x0d\xf1\x24\x07\x1f\x2d\xdc\x9e\x54\x04\xe1\x89\x8f\x1c\xb6\xe3\x24\xf1\xc3\x76\x1c\x3f\x8a\xd8\x8e\x93\xc5\x12\xdb\x71\xfc\x88\x62\x3b\xa6\xc7\x15\xdb\x31\x85\x92\x4d\x88\x31\xb6\x03\x1f\x69\x1c\x75\x67\x7d\x54\xf2\x73\xe2\x8d\xed\x98\x56\x54\x29\x26\xf6\xd8\xbd\x82\x8c\x40\x8e\x93\x95\xea\xbe\xb7\x23\x71\xc8\x51\x10\xb1\x31\xcb\x76\x4c\xda\xbc\xb8\xf8\x65\x3b\x8e\x1d\xc5\x3c\x79\xfa\xf1\x14\x1b\x1d\xd7\xdc\x9e\x53\x04\xc1\x8e\x8b\x71\xb6\x23\x2a\xd2\x19\xbd\xa1\x7b\x55\x90\xbe\x72\x25\x79\x20\x02\x3a\xea\xb6\xb4\xa2\xa5\x9f\x13\x07\x6d\xc7\xac\x80\xcf\x0a\xf8\x71\x15\x70\x1b\x43\x3b\x6b\xdf\x91\x34\x35\x2a\xcf\x0e\x37\xeb\x40\xb4\x75\xe4\x77\xd1\x5e\xbc\xc8\x82\x0a\xde\x93\xe7\x25\x6d\x2d\x49\x21\x8b\x2a\xa3\x7a\xa0\x3e\x47\xc8\x07\xbf\x5f\xa2\xc6\x13\xdf\xc6\xab\x52\x07\x2b\x39\x3e\x9e\x87\x7d\x52\x87\xde\x28\x72\x99\x65\x84\x0b\x4b\x7c\x01\xbc\x77\x57\x94\xcc\x0a\xc7\x01\x90\xd4\x7a\xff\x1e\xcd\xe2\x9e\x5c\x83\x88\x96\xbf\x86\x2b\x1b\xca\x09\x15\xcd\xa0\x81\x04\x45\x60\x9f\xb3\xfb\x73\xd1\x34\x91\xa8\xc5\xb3\xba\x48\xe4\x7e\x07\x9c\x10\x8a\x40\x01\x38\xa5\xfd\x76\xc1\x3a\x35\x7d\x00\x7f\x55\xc2\x52\x26\x12\x06\x05\x9c\x2b\xa6\x90\x17\x77\x65\x34\x13\x72\x23\x1e\x6b\x37\x4c\x65\x5d\xdb\x96\x4d\xf6\x7e\x21\x00\xf2\x73\x38\x6f\x0d\x6a\x3b\x87\x45\xcb\x87\x0b\x1c\xdd\xeb\x9b\xc1\xab\x5e\x57\xbe\xae\x2d\x95\x21\x8c\x8e\x11\x56\x6a\x2f\x04\x52\x30\x3b\x90\x52\x9a\x7a\x07\xdd\xfc\xac\x13\x78\x4c\x62\xc4\x88\x93\x24\x57\x7d\xa1\xf4\xaa\x93\x88\x0e\xf1\x62\x43\xb4\xc8\x10\x2b\x2e\x44\xd4\xd6\x40\x50\xe0\x66\x44\x8b\x07\xb1\xa2\x41\x14\xeb\x2e\x4a\xb6\xe6\x9f\xa2\xef\xda\x65\x2b\xbf\x88\xa7\x4c\x68\xa3\x9a\x43\xa4\x7f\x51\xb2\x82\x89\xd1\x60\xe7\xf6\x80\xf8\x6c\xe8\x5c\x20\xba\x9b\xba\x6c\xa9\x08\x27\x8d\xa3\xb0\x9a\xc7\x54\x82\x73\xdf\x97\x0d\x3a\x53\x9b\x99\xda\x1c\x9b\xda\x38\x44\xfb\xd5\x92\x9a\x23\x4b\xea\x10\xed\x1a\x13\x76\x7b\xdd\x8a\x92\x85\xdb\x14\x9d\x7a\xd6\xca\x60\xb0\x09\x8d\x81\x15\x7f\x6c\xfa\xc7\x71\xd5\x90\x4b\x2d\x6d\x89\x5e\x9b\xcc\x52\x92\x8c\x3d\xb2\xcc\x49\x3e\x01\x88\x39\x15\x74\x63\xeb\xb9\x6b\xe9\xed\x95\x46\xff\x34\xd7\xae\xe4\x69\x47\x00\xb7\x39\x97\xc1\x12\x83\x3e\x57\x03\x5e\x2d\x65\x96\xb1\x52\x91\x8c\x3f\x30\x72\xcd\x8a\x4c\xee\x5c\xf9\x74\x91\x92\x7b\x4d\xb5\xb9\x7a\xf7\x4c\xab\xe3\x54\xb0\xab\xd3\x5d\x6d\xae\x55\xcc\x71\x42\xd2\x2b\xa4\x7a\x92\xc2\x26\x6a\x91\xf7\x02\xe8\xdc\x65\xf6\x44\x77\xea\x9c\xbc\x63\x8f\xac\x0c\xd1\x84\xdb\xf5\x3b\xa9\xef\xac\x28\xdc\x8d\x33\xb2\x60\x08\x5f\x93\xd7\xd0\x40\x48\x13\x4d\x37\xa0\xd6\xd4\xc9\xaa\x01\xd8\xb2\xec\x80\xb7\xe4\xeb\x89\x2b\x36\x35\xf5\xc6\x8e\x49\xa8\xfa\x7b\xf8\x8e\x21\xc8\xf6\xdf\x47\x39\xbe\xcc\x27\x97\x45\x1c\xdc\xa5\x4d\x43\xf3\xcd\xe6\x58\x1b\xa7\x5d\x33\x43\x5b\x11\x3d\x44\x4e\x8c\x7a\xc5\x05\xb1\x3d\x04\x6d\x73\xc6\x06\xf9\xeb\x99\x59\x05\x55\xf9\x1d\x0f\xab\xc9\x28\xed\x0b\xcf\xbc\x0b\xa9\xf4\xbd\xd1\x83\x63\xab\x09\xdd\xf9\x17\x21\xc7\x91\x66\x19\x4b\x09\xcf\x73\x96\x1a\xbd\x37\xdb\x11\xba\xd6\x88\x5e\xa8\x46\x5f\xeb\xe8\xe4\x49\xc9\xa8\x4f\xaf\x84\x84\x3a\x48\x82\x6c\xe7\x55\x22\x60\x76\x20\x6a\x56\xe6\x5c\x80\x32\x6e\xbd\x75\x2e\x83\xb3\xc9\xab\xc4\xf0\x91\x4e\xe6\x65\x73\xa3\x81\xfb\xb5\x30\x64\xdf\x21\x8a\x00\xbd\xca\x64\xf2\xa0\x48\x25\x34\xcf\xec\x92\xa5\x7c\x20\x89\xcc\x8b\x0c\xee\xce\x33\xb8\x40\xfd\x9f\x8b\x1a\xdf\x16\x06\xba\xba\xf8\x7d\xf3\x27\xf8\xe1\xd8\xf5\x8b\xd8\x27\x96\x4c\x28\x17\x61\x28\xa4\x39\x24\xf0\x0e\x4b\x51\x8b\x85\x6b\x69\x18\x12\xde\xf6\xda\xf4\x2c\xa8\x89\xe1\x92\xdc\x7c\x62\x49\xab\x17\x05\x74\x62\x4d\x02\xd9\xed\xed\xa1\x25\x5c\xea\x53\x35\x05\x44\x65\xea\xb4\x47\x67\xe7\xae\xec\xdb\xbe\xbf\x9a\x03\x46\x32\x2e\x58\x9c\xbb\xd0\xe5\xf9\xb4\xf3\xf5\x6b\x5c\xb1\x36\x2e\x27\x39\xc7\x18\xb5\x79\x09\x4d\x19\x76\x75\x1c\xaa\x9f\x1f\xf4\x15\x90\x52\x93\x97\x67\x17\x67\x31\x6d\xd9\xf7\xcd\x90\x67\x46\x92\xc9\x98\xa5\xd0\xd6\x26\xe9\xbe\x11\x03\x54\x11\xc5\xf3\x22\xdb\xc1\x2e\x9c\xa5\xe7\x84\x6b\x1f\xd8\x5a\x56\xc2\xef\x49\x4c\xe7\x3f\xc8\x06\x39\x27\x4a\x12\x5d\x52\xdf\x2a\xc8\xfe\x6a\xc0\xe9\xb2\xb2\xfc\x26\x02\xe4\xcb\xb3\xff\xf7\xec\x9c\x30\x9d\xbc\x22\x4f\x52\x9c\x69\x38\x90\x25\xf9\x68\x2b\x5f\x50\xff\xc9\x9d\xac\x22\x80\x0a\x66\xcb\x54\xb0\x4f\x45\xc6\x13\xae\xb3\x1d\x10\x75\x22\x2b\x6d\xd3\x3e\xa9\x76\x29\x5d\x11\x40\x6f\x3e\x71\xed\x22\xb3\xcc\x4d\xfe\x06\xb0\xd3\x12\x78\x42\x8d\x10\xf7\xc8\x2e\xb6\x8c\x66\x7a\x1b\xd3\x43\xc7\xe0\x8d\x90\x62\xf1\x77\x56\x4a\x48\x20\x13\x0e\xc6\x09\xdb\x4c\x4e\xf2\xff\xc4\xb6\xa0\x8a\x74\x69\x18\x66\xf0\x03\x9b\xd2\xa8\xfd\xdf\x3e\x7e\xbc\xfb\x81\xe9\x3d\x62\x68\xe0\xf9\x60\x16\x3c\x49\x2c\x58\xb9\x96\x65\x7e\x2a\xaa\xb8\x95\x0a\xb9\x42\x72\xb0\x4a\xa9\xb4\x2d\x80\x60\x45\x2f\xc1\x12\x83\xcb\x4d\x1c\x45\xcc\xf9\xcb\xba\xa4\xc3\xed\xdd\x92\xfc\xa7\xac\xa0\x10\x01\x5d\x65\x3b\xc8\xe0\x76\x29\x51\x11\x10\x5f\x98\xe9\xbd\x30\x74\xcc\xec\xfb\xbf\x31\x9a\xda\xb4\x7a\xa5\x19\x8d\xee\x01\x15\x85\x98\xad\xef\x4d\x65\x36\x95\xd2\x32\x27\x5b\x37\xe9\x98\x74\xb0\xf6\x70\xb8\xb6\x04\x7c\xb4\x3a\x27\x34\xed\xb3\x04\xc2\x41\xff\x5c\xbd\x63\xcd\x1c\xec\xae\xb8\xdf\x57\xd0\x10\x3b\x81\xa5\x46\xb9\x5b\xed\xc4\x5d\x33\x76\x9b\x24\x21\xec\x12\x6d\xed\x8a\x08\x60\x53\x3b\xb5\xc6\x46\x10\x90\x3e\xcb\xa1\x5b\x87\x35\x10\x20\x5c\x9d\xfb\xe3\x79\xcd\x3a\x8f\x3b\xfd\xf1\x7a\x19\x47\x9d\xff\xb4\x36\x8a\x91\xfb\xbb\x88\x5e\xd1\x67\x6a\xa2\x58\x44\x45\xff\x1e\xc6\xfe\xda\x22\x2c\x90\x9e\x65\x25\x3c\xb8\x38\x8a\x95\x8f\xe1\xf4\xcb\xfd\x79\x47\x1d\x5d\x21\x31\x3a\xb0\x1f\x54\xec\xde\xa3\x23\xb3\xa0\xdd\x14\xcc\x88\x0b\xcd\x36\x28\xad\xb0\xfb\xde\x73\xfa\x43\x5a\xf3\x7a\x49\x44\x95\xaf\x58\xd9\xa4\x0d\x94\x3a\x4e\x31\xe8\x1e\x4b\xcb\xff\xff\xce\x02\x0e\xd5\x0e\x3a\x1c\x4e\x86\x2f\xa9\xd8\x30\xf2\xad\x39\xfa\x3f\xff\xf3\x3f\xff\xd3\x3f\x2f\xed\x94\x7d\xa8\x0a\x3a\xda\xc4\x8c\xdb\xcb\x77\x97\xbf\xdc\xff\x74\x05\xd9\x83\x78\x7c\xf9\xb4\x68\x34\xea\x05\x17\x7a\x21\xcb\x85\xdd\xf3\xd7\x44\x97\xe8\x7b\x06\x91\xfc\x11\x94\xab\x6b\x53\x87\x97\xdb\x05\xec\x9c\xcc\x12\x47\x7e\x9c\xa4\x62\xe4\xa6\xae\xbd\xd0\x5c\xa4\x13\xde\xa0\x38\xb2\xb7\x00\x04\x3c\x85\x54\xac\x93\xe2\x5e\x26\x0f\x93\xe4\xe2\xb3\x8f\x57\x77\xf6\xe5\x96\x68\x4c\x85\x33\x13\x10\x2e\x1e\x65\xf6\x88\x3f\x0e\x4a\x3e\x5e\xdd\xc1\x42\x97\xf0\x5f\x60\x69\x01\x65\x72\x67\xbe\xe0\x83\xbc\xad\x03\x09\x09\xb3\x2e\x1a\x08\x61\xf8\x34\xe3\x4a\xf3\x04\xa0\x37\x26\x45\xf3\x1d\x9c\xdf\xe8\xb3\xca\xe3\x67\xef\xbd\xcb\xa9\x57\x34\x8f\xc2\xf1\x6e\x72\x4b\x4b\x34\xc7\x07\xf5\xcd\x3c\xa2\xc5\x23\x1c\x6f\xb0\x31\xfc\x33\x8f\xe8\x1b\x47\xe1\x11\x5f\x07\x95\x8c\x78\xb8\x28\xd9\xbd\x96\x45\xb4\x77\xc0\xbe\x36\xe0\x1b\x58\xb1\x35\x2e\x1c\x99\x0e\x9a\xf2\xd3\x8a\xb9\x06\xd2\x97\x77\xb7\x11\x56\x0b\xd9\x31\xd7\xdb\xe8\x40\x55\x25\x5b\x6f\x8f\x12\x4c\xa9\x0b\x30\xf2\x57\x85\xd5\xd7\x10\x40\xd7\x94\x67\x55\xc9\xce\xcd\x6e\xb1\x1c\xf6\xe0\xbc\x49\x63\x30\x4b\x60\xc2\xfe\xc8\x74\x32\x5e\xba\xb0\x19\xde\xf3\xe1\xec\x8f\x7e\x1b\xf7\x1c\x0c\x24\x29\xa9\xda\xb2\xd1\xbe\x8d\xcd\x60\x9f\xb8\x56\xbe\xf9\x34\x55\x52\x58\x83\xac\xdb\x56\xe0\x71\xaa\x55\xb3\x16\xa7\xce\xbb\x89\x5a\xb0\x77\x32\x3d\x3b\x53\x1d\x90\x9b\x92\x26\x8c\x14\xac\xe4\x32\x25\x90\xe9\x99\xca\x27\xcc\x85\x5d\xb1\x0d\x17\xca\x61\x0b\x2c\xdb\xa3\x95\xe1\x70\xb6\x1f\xaf\x2f\x4b\xb5\x24\x1f\xb0\xf5\xc7\x48\x93\x64\x23\x2b\x9d\xc8\x86\xe0\xb9\x95\x9c\xef\x6d\x31\xb2\xde\x04\x20\x53\x45\xb3\x6c\xd7\x20\xaa\x8f\x85\xd5\xbd\x5b\x83\x00\xda\xde\xbc\xcf\xe2\x6f\x32\x37\xa4\xf9\xdb\xf4\xc9\x82\x65\x9f\xd1\x64\x8b\xaf\xc8\x34\xbb\xb0\x5a\x63\x76\x61\xcd\x2e\xac\xd9\x85\x35\xbb\xb0\x86\xc6\xec\xc2\x9a\x5d\x58\xb3\x0b\x6b\x76\x61\xcd\x2e\xac\x66\xcc\x2e\xac\xe3\xcc\x7f\x76\x61\xcd\x2e\xac\xfd\x31\xbb\xb0\xfa\xc6\x6f\xcc\x3c\x39\xbb\xb0\xbe\xbc\x71\x76\x76\x61\xcd\x2e\x2c\x2c\x90\x99\x47\xcc\x2e\xac\xd9\x85\x35\xfa\x30\xf2\x41\xef\xfb\xb9\x33\xfa\x4d\x4c\x9e\xd7\x1d\x58\xbb\x79\x62\x35\x23\x83\x77\xed\x2c\x1f\x0b\x74\xd9\x94\x90\x0f\x2c\xac\xa9\x71\xe1\xb3\x54\x9c\xc3\xc7\x42\x87\x2c\x98\x93\xb5\x46\x19\x6a\x8f\x54\xc8\xb4\xb1\xbe\xb7\xcc\xee\x56\x17\x1c\x27\x57\x78\xf2\x8c\xb3\xb7\xc7\xd9\xda\x71\xa9\x5a\xc4\x66\x56\x61\xec\xec\x78\x0b\x7a\x6c\xbf\xef\x08\xcb\x79\x84\xd5\xdc\xdb\xc2\xb1\xac\x39\x64\x31\x6f\xec\xe0\x48\x88\xe3\xd6\xf2\x1e\x1b\x38\x16\x6e\xbf\xa5\xbc\xd7\xfe\x8d\x5d\xfc\xa1\x95\x7c\xcc\xf6\x8d\xdf\xd2\xda\x42\x1e\xb2\x7b\xa3\x5d\x43\xde\x3a\x8e\xb1\x79\xc7\x00\x5d\x9e\xc0\xde\xfd\x4c\x5b\x77\x94\x49\x2c\x5a\x8c\x88\xb1\x0e\x44\xf0\x27\x17\x10\xf0\x71\x5b\x32\xb5\x95\x19\xe2\x5e\x77\xee\xf4\x5b\x2e\x78\x5e\xe5\xd0\x3a\xd2\x5c\x5f\xee\x7a\x43\x56\x25\xab\xdb\xc4\x22\x96\x67\x79\x86\x35\xe2\x35\x5d\x28\xeb\x2e\x93\x6b\xcd\x4a\xb2\xa5\x8f\x40\x27\xab\x24\x61\x2c\xc5\xb5\x80\x68\xab\x64\xff\xb4\xac\x67\x5b\xf7\x01\xf8\x36\x0c\xc4\xd6\xc5\x04\x49\xf1\x9f\xfe\x88\xdc\x79\x9c\x54\x89\x76\x29\x44\xba\x13\x70\x52\x24\xda\x95\x10\xc7\x1e\xf0\x2a\xcb\x49\xdc\x07\x48\xd7\x81\x73\x08\xa0\x09\xe3\x74\xb7\x41\xe4\x3d\x8f\x76\x17\xa0\x5d\x05\xb5\x03\x00\xb9\xe8\xe7\xbb\x09\xa2\xe8\x21\xde\x3d\xe0\x26\x81\x57\x3d\x9f\xe9\x1a\x98\xe2\x16\x78\x56\x5d\xcc\xe7\xba\x03\x26\x69\xa8\xd1\x6e\x80\xe3\xba\x00\x3e\x4b\x2d\xdc\x88\x7d\x8c\x33\xf9\x47\x9b\xfb\xe3\x4c\xfd\x78\x33\xff\x29\x4c\xfc\x91\x47\x83\x37\xdb\x44\x98\x6c\xa6\x98\x6b\x26\x98\x6a\xf0\xa6\x7c\xb7\xa9\x48\xfc\x08\x99\x68\x3a\x86\x17\x24\xcc\x11\xf3\xcc\x14\xa3\xcb\x11\x0c\x2e\x31\x06\x79\xb4\x31\x1e\x1f\xdc\x49\x9c\xf4\x31\xd5\x10\x1f\x85\x2d\x78\xe2\x83\x34\x2b\x45\x90\x10\xd7\x77\xfe\x9a\x65\x74\x77\xcf\x12\x29\x52\x04\x67\xda\x2b\x64\x56\xe3\xb4\xb2\x00\x9c\x8c\x1d\x1b\xa1\xb9\xa5\xca\xb7\x99\xf7\xc1\xaf\x59\xb7\xfd\x39\xf4\x0b\xb0\x33\x46\x58\x7f\xc8\x17\xb5\x00\x91\x93\x8a\xfb\x36\xd8\x74\xda\x81\xfd\x9b\x7c\x22\x72\xad\x99\x20\x2f\xb9\xf0\x67\xf6\xaa\x15\x11\x14\xa3\x67\xd5\x17\xc4\xbc\xff\xed\x37\x1e\xdc\xd7\xa6\x1e\x81\xa2\xa7\xd4\x31\x35\x53\x07\xf2\x18\xaa\xa9\x03\xb5\xae\xb2\xae\x7a\x6a\x55\xd6\x58\xdd\xf4\xdb\xa6\x44\xe3\xb7\x30\xb7\xfa\x16\x51\x91\x12\x17\xe4\x8f\xba\x3c\x5f\xd5\x11\x46\xb8\x07\x4f\xe5\x1a\x8c\x72\x0b\x36\x0e\x3f\x14\xe4\xe7\xb9\x04\x3f\x8b\x5e\x1d\x70\x03\x1a\x15\x1b\xad\xa0\x3d\xc3\x05\xf8\x0f\x2b\x43\x8e\xb9\xfa\x66\x19\x72\x7f\x7c\x49\xa9\x4a\xf3\x9c\xc9\x4a\x1f\x59\xa0\x7a\xda\xf2\x64\xdb\xb8\xc5\x10\xdb\x68\xe6\xa1\x88\xac\xf6\xe4\xd8\x6f\x1d\xe0\x43\x2e\x8d\x80\xf9\x6d\x74\x5e\xcb\xaf\x44\xaa\x42\x9e\x6f\xd8\x1c\x33\xd8\xbb\xba\x71\x91\x36\x1d\xda\xa8\x22\x94\x5c\xbf\xbb\xff\xe5\xcd\xe5\x77\x37\x6f\x42\x77\xe3\x86\x26\xdb\x76\x72\xa0\x20\x14\x88\x27\xdc\xb5\x2d\x7d\x64\x84\x92\x4a\xf0\xbf\x55\xb6\x96\x2a\x79\x59\x43\x7e\x75\xe4\x4a\xf7\x48\x5a\x06\xfd\x19\x27\xf4\x6d\x80\xf7\x9c\x8b\x47\x1a\x45\xae\x94\xf9\x1e\xcd\x0a\x6d\x95\x79\xd1\x48\x51\xd4\xd2\xc8\x2d\x2b\x19\xd9\xf0\x47\x67\xe4\x76\x45\x2d\x69\x5a\xbb\xb7\x0c\x42\x1b\xcc\x0a\xe7\x15\xd1\x15\x38\x9a\xb6\x8c\x08\xa6\x0d\x76\xd7\x3a\xa6\x14\xaa\x93\xbd\x59\x29\xa6\xce\xc9\xaa\x0a\xaa\x61\x46\xc5\xe1\x39\x2d\x79\xb6\x6b\x4f\x84\x66\x4b\xf2\x4e\x7a\xc9\x65\xb7\xb7\x9c\x00\xd0\xeb\xf7\x37\xf7\xe4\xdd\xfb\x8f\xd0\x00\x1c\x8a\xd3\x6e\xa9\xb6\x6f\xc3\x76\xae\x98\x81\xe7\x3a\x6e\x2d\xc9\xa5\xd8\x61\x08\xa1\xa5\x42\x5c\x11\x23\xae\x30\x61\x40\x38\x76\xe2\x0b\xdf\xbe\xf8\x66\x09\xff\x7b\x61\x76\xb7\x0c\x73\xa5\xda\xed\xd8\xcd\x3d\x04\xde\x01\x5c\x8d\xaf\xb2\x16\x06\xb8\x3d\xff\xe2\x9d\x1b\xea\xe0\x86\x3b\xb3\xa3\xed\xee\xfb\x35\x5a\xa0\xf8\x8a\xed\x19\xc2\xc5\x26\x8b\xc0\xee\xc8\xee\x0d\xcd\x44\xa3\xab\xa9\x37\xdc\xc8\x8b\x1a\xee\x4a\xba\x53\x87\x56\x59\x28\x96\x7e\x7b\xe7\x11\x62\x69\x8b\x30\xe7\x7b\xcd\xa6\xe0\x03\xd6\x44\x86\x93\x24\xbf\x21\xff\x42\x3e\x91\x7f\x01\xb1\xe3\xcf\x18\xb9\x22\x8e\x77\xc4\x29\x28\x56\xae\xbe\xbd\x8b\xde\xe1\x9f\xcd\xb5\x34\xef\x9a\x1d\x32\xca\x21\x17\xa9\x6b\x86\xa7\x59\x69\x48\x13\x3e\x98\x48\x1e\xbd\x0e\xbf\x99\xd8\x49\x10\x07\xec\x6b\x38\xc4\x59\xb7\xaa\x3b\x13\x7d\x02\xd4\x31\x9f\x30\x3a\xcd\x3b\x77\x71\x3b\xf5\xa4\xe1\x8b\x28\xa0\x30\xab\x9c\xea\x64\xdb\xa5\x0e\x46\x64\x52\xba\xb9\x88\x8a\xa4\x92\x84\xeb\x1e\xdb\x61\x83\x1d\xb6\x1c\xe5\x29\x3b\x2d\x82\x63\x5d\x51\x1d\x3c\x18\x3b\xbd\x3d\xd5\x00\xa9\xa6\xa5\x5e\xc6\x69\xa5\x99\x17\x32\x5d\x5a\xf1\xc8\x4c\xd2\x21\x44\xb0\xca\xba\x83\x38\x26\x43\x39\x6d\xc6\x47\xf4\xe0\xaf\xa2\xb9\xd5\x09\x15\x36\xae\x6d\xcd\xca\xd2\xc6\xac\xac\x76\xc4\x35\x80\x46\x1d\x68\xd4\x5d\x2d\x4a\xa9\x65\x22\x51\xdd\x0d\xba\xee\x1d\xf7\x22\x2c\xd3\x1a\x38\xbc\x0d\xe9\xc7\xeb\xbb\x73\xf2\xf1\xea\x0e\x77\xad\x64\x49\xee\xaf\x3e\xde\x75\xf5\x8d\x17\x1f\xaf\xee\x50\x6d\x98\x23\x16\x8b\x6f\x57\xd6\x61\x7f\x21\xc5\xed\xb8\xdd\x10\x4a\x46\x53\x7e\xf4\xf8\x4a\x87\x3e\x0d\xf4\xa0\x28\x74\x20\x57\x95\x2c\x97\x8f\x2c\xb5\x42\x95\x87\xc7\x44\x5a\x48\x6e\x24\x18\x1e\x6a\x38\x85\x88\xcd\x9c\xa3\x2f\x83\x63\x8e\xbe\x24\x73\xf4\xe5\x1c\x7d\x39\x47\x5f\x86\x9e\x9d\xa3\x2f\xe7\xe8\xcb\xe1\x31\x47\x5f\xce\xd1\x97\x63\x63\x8e\xbe\x74\x63\x8e\xbe\x9c\x30\xe5\x39\xfa\x12\xf1\xc2\x1c\x7d\xf9\x55\x7b\xce\xe7\xe8\xcb\x39\xfa\x72\x68\xcc\xd1\x97\x30\xe6\xe8\xcb\x39\xfa\x72\x8e\xbe\x9c\xa3\x2f\x87\x9e\x9d\xa3\x2f\x87\xc7\x1c\x7d\x39\x38\x7e\x3b\x32\xe4\x1c\x7d\x39\x47\x5f\xce\xd1\x97\x5f\x3a\xfa\xd2\xb7\x17\x88\x89\x29\x3c\xbb\x92\x79\x51\x69\x46\x3e\xf8\x97\x6b\xf4\x24\xab\x9d\x8d\x48\x40\x07\x5e\x3d\xdf\xd1\x69\x5b\xca\x57\x25\x04\xf8\x5d\xd8\xaa\xf6\x8b\xc4\x4e\x71\x51\xaf\x6f\x51\xcf\xe8\xe2\x58\xce\xce\x8c\xe7\x3c\x14\x8c\x69\x46\x13\x13\x79\x17\xc5\xd8\xa2\x08\x6c\xf7\x84\xde\xc0\xd4\x5a\x26\x42\xdb\x82\xfc\x13\x5c\x0f\x9a\xcb\x0a\xc5\xc7\xc1\x4b\x6e\x8f\xba\xde\x47\x6b\xf8\xfc\xf2\xc7\x44\xe2\x68\x98\x33\xf1\x7e\x9d\xa7\xf5\xc1\x4d\x6e\xff\xbc\x1c\x39\x7b\xde\x79\xf9\xab\x09\x31\x59\xf5\x97\xb8\x22\x32\xe7\x5a\x33\x8c\x5f\xdd\x88\xdd\xb4\xed\x4c\xe6\xba\x23\xf4\x38\x6c\x83\x1a\x53\x54\xe3\x08\x6f\xcb\xd9\xd9\x8a\x66\x92\x7a\xcb\xca\x27\xae\x7c\x57\x96\x5a\xea\x04\xac\x59\xa4\x6c\xcd\x05\x6a\xca\xc0\x02\x7e\x55\x38\x8a\x7c\xd0\x68\x6c\x25\xd7\xbb\x2b\x29\x34\xfb\x14\x90\x05\xbb\x68\x76\xef\x5e\x25\xb2\xb0\x9e\x6c\x2f\xac\xba\x26\x11\x65\x25\x20\x02\xec\xc8\x65\xc0\x6c\x97\xfb\x0b\x3f\x71\xd8\x3d\xf6\x49\x5f\x1c\xe5\x2b\x9a\xaa\x87\xe6\xdc\xd8\xc2\xb0\xe3\xe6\x78\x0e\xbe\x79\x2c\xd2\x0f\x44\xf0\xae\xe4\x8f\x3c\x63\x1b\x76\xa3\x12\x9a\x01\xce\xc4\x0a\x47\x97\x03\x70\xe0\xb2\x95\x32\x53\xe4\x69\xcb\xcc\x9d\x40\x69\x5d\x45\x29\xc1\x9e\x9d\x50\x41\x36\x94\x0b\x92\x9b\x3d\x2c\x3c\x78\x73\xe0\xe6\x4e\x69\x45\x0a\x5a\xe2\x54\x39\x07\xd2\x05\x18\xaf\xa4\xcc\x5c\xf4\x48\xb6\x6b\xe6\xe8\x8a\xcb\x09\xf9\x8b\x60\x4f\xbf\x98\xef\x61\x28\xc0\x3a\xa3\x9b\x3a\x80\x4a\x31\x7d\x20\xc7\x37\x1f\x1f\xda\x26\xc4\x57\x20\xf4\xa1\x62\x84\x66\x4f\x74\x07\xdb\xb9\xff\x15\xae\x5e\x93\x6f\x5f\x01\xf6\x53\xcc\xbc\xeb\x79\xa4\xe4\x8f\xaf\xc0\xce\x77\x75\x79\xf7\xcb\xfd\x7f\xde\xff\x72\x79\xfd\xf6\xf6\x1d\x96\x24\x98\xbd\x64\xc1\x72\x8d\x09\x2d\xe8\x8a\x67\x1c\xc7\x85\x0e\x3c\x4f\xed\xd7\x81\xa4\xa6\xe9\x45\x5a\xca\xc2\xee\x43\x59\x09\x81\x53\xde\x9a\x48\xdb\xae\xec\xdd\x4e\x53\x80\x23\x5c\x77\x3e\x89\x80\xbc\x29\xa9\xd0\x5e\x70\x6c\x1f\x4b\x59\x09\x23\xf0\x1f\xdb\x0b\x4f\xd3\x29\x01\x5a\x97\x69\xca\xd2\xd8\xa5\x3d\xc7\xcf\x7b\xe5\x3f\xb5\x6b\x32\x21\xc8\xdd\xfb\xfb\xdb\xff\x88\x9f\x05\x71\x38\x17\xe5\xb2\x3b\x51\xfc\x0d\x21\x06\xfd\x26\x9c\xc0\x07\x17\x61\x39\x9f\xc1\xc8\x0b\x47\x8f\x81\xaa\x79\x47\xac\x8d\xf9\x43\x25\xba\x79\x75\x0d\x24\x92\xcb\x94\x2d\xc9\x9d\x25\xee\xa8\xfd\xeb\xbe\xdf\x0a\xfb\xa7\x25\x23\x06\x88\xd0\x1c\x3a\xa6\x19\x59\xf7\x91\x66\x38\xde\xa6\xa5\x8d\x62\x6c\xe7\x4f\x74\xa8\xdb\x9a\x66\x0a\x41\x80\x62\xe8\xb9\x61\x69\x6f\x8d\x38\x1f\xb9\x9f\xf5\x7b\x24\x65\x42\x6a\xa7\x21\x98\x2f\x43\x42\x48\x29\x13\x82\xd5\x12\x5a\xce\xc4\x0e\xc5\x75\x1d\xfd\x3c\x39\xe7\xca\xef\xc5\x9d\xff\x36\x02\xb8\xb5\xea\x54\x8a\xa9\x7e\x72\xde\xe8\x0d\xe6\xfb\x25\xa3\xa9\x14\x19\xd6\xd3\x6f\x6d\xfe\x39\x55\x0f\x2c\xb5\x3f\x38\xb9\xc4\xe9\x38\xca\x75\xf7\x73\xd3\xfd\x88\xbb\x6f\x6b\x46\x75\x55\x32\x2b\x8f\x58\x6f\x06\x13\x74\x85\xf2\x55\x44\x05\xd8\xd3\xf4\xbd\xc8\x76\x1f\xa4\xd4\xdf\xd7\x81\xaf\x91\x68\xf0\xb3\x95\x06\xf7\x6c\x2c\x20\x84\x80\xd1\x3d\x5d\x20\xb7\x13\x10\xbf\x1d\x7f\x7b\xdd\x1c\xfb\x09\xd0\xbe\xac\xc4\xa5\xfa\xa1\x94\x55\x6c\x0b\x50\x83\x91\x3f\xdc\x5e\xc3\x5d\xad\xec\x3d\x65\x42\x97\x3b\x08\xac\x77\x56\xe3\x18\xf9\xa5\x91\x29\x7f\x34\x38\xba\x87\x95\x46\x92\xad\x84\x62\xa8\x50\xb0\xb7\x74\x47\x68\xa6\xa4\x17\x5f\xb9\x20\x77\xe0\xc5\x6c\xeb\x67\x4b\x9b\x6d\xc5\x90\xb9\x33\x2b\xa9\xb7\x64\x0f\x04\x20\xfd\x21\xe4\x73\xe4\xd2\xad\x31\xb4\x49\x90\xe6\xe2\xe0\x03\x9a\x3e\x30\x45\x8a\x92\x25\x2c\x65\x22\x41\x9c\x7d\xcb\x6a\xf9\xe7\x3f\x1d\xd5\x31\x06\x98\xf2\x4e\x0a\x73\x4d\x22\x71\xe5\x56\xa4\x3c\xa1\x96\x36\x52\xbd\x47\x7f\xc0\x7e\x5f\x56\x98\x43\x80\xcb\x24\xa4\x58\xc0\x25\xa9\x14\x2b\xc1\x76\x62\xd4\x08\x1b\x47\xff\xd7\x6a\xc5\x32\xa6\xad\xf2\x02\xf9\x72\x14\x15\x9d\x6f\xde\xe5\x39\xdd\x30\x42\x75\x8d\x7a\x5a\x12\x26\x54\x05\xad\x49\xa9\x06\xd3\x8a\x64\x0a\x99\xcd\x66\x95\x16\xf2\xe3\xed\x35\xf9\x86\xbc\x34\xf3\x7d\x05\xe8\xb2\xa6\x3c\x83\x20\x47\x4d\x4b\x1d\x1d\xbb\xc0\xd7\x7e\x1a\xb0\x70\xb8\x11\x44\x96\x96\x30\x9c\x13\x21\x6d\xaf\x5b\xb7\x72\x9c\x1e\xe6\x15\x3d\xe7\x95\x07\x03\x22\xfa\x02\x21\xe0\x3b\x00\x31\x17\x08\x79\x62\x27\xb9\x40\xd1\xc4\xf3\x47\xc5\xca\x09\xb4\xf3\xc7\x93\xd0\xce\xb6\x90\x64\xee\x47\x67\x77\x30\x08\x06\x97\x20\x67\x9a\xa6\x54\x53\x47\x75\x9b\xcc\x9d\x43\xc4\xc0\xa8\xe5\xa3\xb4\xb7\x17\x31\x30\xb4\x60\x98\xf6\x22\x10\x03\x83\x61\x5f\x11\xed\x55\xec\x0d\x17\xd5\x27\xeb\x18\x9f\x62\x6e\xb8\xbf\x01\x00\x24\xf1\xf7\x02\x8e\x90\x16\x45\xc6\x21\xc5\x05\x79\xe3\x5a\x9e\xdc\xdb\x0e\x6a\xec\xb7\x54\x76\x34\x14\x4b\x7e\x68\x96\x49\xc3\x20\x8c\xac\x44\x45\x2a\xf3\x83\x09\x1b\xa1\x94\xd1\x64\x1b\x73\x2d\x96\x31\xa2\xc0\x6f\x8f\x92\xc5\x99\x5f\x32\xf6\xc8\x50\xe9\xb4\xfb\x75\x4c\xcc\x7b\x46\x38\xf5\x27\x06\x80\x48\x46\x57\x2c\x8b\xc9\x90\xb2\xb8\x58\xdb\xae\xd0\x6e\x4a\x3b\x22\xd5\xf2\x52\x66\x53\x82\x3e\x3f\xc8\x0c\x02\x94\x68\xbd\x58\x03\xe8\x2b\x5f\x2b\x3c\x1e\xbf\x56\xa3\xa3\x75\xd7\x0a\x3a\xed\xd7\xbd\xd6\x0a\xc5\x8b\xc9\xfe\x5a\x0d\x0b\xef\xae\x15\x78\xe7\xd7\xbc\xd6\x08\x53\xd1\x13\x17\xa9\x7c\x52\xd3\x99\xc7\xcf\x16\x80\xa7\x4f\x89\x21\x84\x9a\x8b\x8d\xf2\x0c\x04\x67\xdb\xa0\x59\xd6\xb1\x69\xf4\x71\x10\xef\x00\x5b\x97\xa8\x8e\xa6\xae\xed\xfe\x3e\xad\xf4\x22\x6d\xa5\x9c\x77\xb5\x45\xb9\x11\x50\x23\xd4\x3c\x74\xca\xc5\x17\xa5\xed\x9b\x5c\xd1\xab\xd2\xc0\xd6\x9c\x66\xf7\xc5\xa4\xc6\xf7\x3f\xbc\xbd\xbf\xec\x02\x31\x57\xe6\x09\xaa\x4d\x99\x9d\x30\x7f\xc7\xde\x93\x34\xe7\x4a\x71\x29\xc8\x13\x5b\x6d\xa5\x7c\x20\x2f\xbd\x27\x71\xc3\xf5\xb6\x5a\x2d\x13\x99\xb7\x9c\x8a\x0b\xc5\x37\xea\xc2\xe1\xf1\xc2\xac\x06\xdb\x87\x9d\x8b\x8c\x8b\x96\xc9\x0b\xca\x16\xb9\x90\x36\x33\x61\x92\xd4\x2b\x42\x42\x34\x07\xe9\x2a\x6f\x38\xcf\xc8\xe1\xc6\xd8\x3a\x1a\x9c\x65\xe8\x2e\xc9\x60\x2c\xb3\x69\x48\x86\x0e\x65\xc5\x96\x2e\x2c\x23\x75\x69\xd7\x90\x84\xbf\x95\x42\x96\xa8\xeb\x66\x86\xab\xbf\x01\x59\x75\x46\x81\xb5\xb6\x33\x98\xb2\xbb\xd1\xb0\x03\xce\xca\x86\x04\xba\xce\xe8\xe6\x24\xa4\xfb\x10\x47\xdf\xa1\x13\xd2\x02\x78\x0a\xc7\xe1\x32\xf8\x23\xf2\xa9\xfa\xd1\xc4\x22\x80\x55\xaf\x96\xad\x73\xc3\x22\x64\xf0\x74\x5b\xe7\x86\xf5\x49\x84\x4f\xf7\x74\xe7\x56\xeb\xc0\x13\x8f\x0b\x74\x61\xf7\xba\xa1\x8d\x9e\xd9\x34\xba\x31\x72\x17\x0e\x34\xe8\x31\xfd\x18\xbb\xb3\x96\x91\x1f\x68\xd2\x01\x3d\x19\x09\x1d\xa9\x9c\x58\xfe\x85\x26\x78\xc7\xd6\x4f\x48\xa4\x8e\x82\x04\xd9\xe2\x76\x21\xea\x17\x51\x62\x62\xe0\x22\x0d\x5d\x91\x0f\x6d\xe4\xc5\x52\xc0\xd3\xde\xa8\xa3\x87\x25\xd9\x44\x8c\xe8\xba\x3c\xf7\xad\xf7\x08\x3f\x34\xe0\xde\xc9\x94\x6c\x83\x61\x19\x4d\xca\x09\x94\x7b\x84\x24\x30\xfe\x77\x2f\x95\x35\xb2\x9f\x90\x36\xc2\x0c\x97\xe6\x0c\xce\x45\x5b\x7a\x25\x25\x95\xd0\x3c\xf3\x7e\x97\xbc\xc8\x8c\xc0\xd0\xf9\xae\xb5\x11\x87\x2b\x9b\xb5\xca\xfc\x9c\xd7\x4b\x3c\x68\xd8\x78\x4e\xfe\xab\x52\x9a\x50\x1f\x5c\x13\x00\xda\xe9\x3b\xe9\x33\x6d\x2c\xc2\xbb\x92\x59\x90\xe5\xad\xa5\xf9\xfc\x23\x4f\x19\x49\xf9\x7a\xcd\x10\x41\x40\x76\xba\x05\x2d\x69\xce\x34\xb8\x5c\xed\xc1\xac\xd8\x86\x0b\x5b\xad\x72\x4d\xa8\x59\xc4\xd9\x99\x6a\x32\x3d\x42\x57\x1e\xe2\x4f\xb8\x26\x39\xdf\x6c\xed\x8d\x26\x94\x64\x52\x6c\x88\x37\x8a\x67\x92\xa6\x04\xc8\x9e\x2c\xc9\x13\x2d\x43\x82\x3a\x25\x09\x4d\xb6\x60\xa1\xa7\x82\xa4\x55\x09\x25\x31\x34\xa3\xe9\x6e\xa1\x34\xd5\x46\xea\x67\x36\xb2\xaf\xd9\x99\xb0\x95\xbd\x1d\x98\x0c\x6f\x71\x9b\x6f\x63\xa8\x47\x7d\x49\x9d\xbf\xd0\x89\x6a\x01\x88\x1d\x94\xef\x5c\xf3\xb9\xc4\x53\x70\xcc\x25\x9e\xc8\x5c\xe2\x69\x2e\xf1\x34\x97\x78\x0a\x3d\x3b\x97\x78\x9a\x4b\x3c\x0d\x8f\xb9\xc4\xd3\x5c\xe2\x69\x6c\xcc\x25\x9e\xdc\x98\x4b\x3c\x4d\x98\xf2\x5c\xe2\x09\xf1\xc2\x5c\xe2\xe9\xab\x4e\xcf\x9f\x4b\x3c\xcd\x25\x9e\x86\xc6\x5c\xe2\x09\xc6\x5c\xe2\x69\x2e\xf1\x34\x97\x78\x9a\x4b\x3c\x0d\x3d\x3b\x97\x78\x1a\x1e\x73\x89\xa7\xc1\xf1\xdb\x91\x21\xe7\x12\x4f\x73\x89\xa7\xb9\xc4\xd3\x97\x2e\xf1\xa4\x74\xca\x03\x85\x29\x30\x39\x86\xae\x48\x48\x13\x43\x1f\x72\x9c\x56\xeb\x35\x2b\x81\x9f\xc3\x0c\x0e\x7c\x48\x75\x86\xbf\x77\x9c\x87\x8f\xd3\x70\x2e\xc5\xf4\x39\xa4\x3a\x2a\xd7\x6d\xa7\x1f\xb8\x0b\xf8\x7f\xa2\xbb\x10\xd0\x92\x29\x48\xfd\x13\xe4\xe6\xfd\xf7\xb1\x89\x90\xd8\x3c\x1e\x98\xe5\x7b\x91\xc4\x04\x47\x34\x07\xd1\x97\x48\xeb\xce\x23\xc9\xa4\x0a\xdd\x2c\xe8\xcf\x09\xdb\x94\x6c\xa9\x10\xcc\x4b\x6d\x5c\x83\x0e\xb3\x62\x4c\x10\x59\x30\x61\x3d\xd8\xbe\x79\x62\xc8\xdf\xae\x35\x4d\xb6\x4b\x33\x4b\xe1\x0f\xc1\xd5\xda\x68\xbe\xa7\x74\xc9\x68\x6e\x0f\xa3\x64\x39\x0d\x66\xf2\x98\x69\x10\x9a\x94\x52\x29\x92\x57\x99\xe6\x45\xc6\xdc\xa7\x88\x62\x10\xcd\x69\x63\x7a\xeb\x0d\x0d\x63\x8d\x62\xd6\xc9\x06\xf9\x7b\xf5\x4c\xdd\x82\x65\x3b\x4f\x1d\x64\xcd\xf3\x30\x44\x96\x17\x7a\x57\x87\x84\x30\xb2\xe6\xa5\xd2\x24\xc9\x38\x13\xda\xcd\xd6\xc6\x67\xc3\xd7\xce\x8d\x1c\x1b\x3e\x22\xe1\x76\x48\xb9\x4d\x10\x29\xf0\xc8\x42\x2b\x1b\x06\xd1\x7c\xce\x7e\x28\x00\x31\xe5\xca\xc9\x39\xea\x9c\x50\xed\x89\x31\xa0\x8e\xdf\x03\x40\x9e\x14\x3e\xe5\xbe\x1d\x00\xea\x5e\x68\x4d\xa5\x55\x46\xa5\x89\x5e\x69\xae\xf4\x3a\xa3\x21\xc9\xc1\x5f\xb4\xf3\x4e\xc7\xd2\xc2\x97\x07\xb0\xb1\x40\xfb\x17\x3e\x00\x13\x10\x4e\xb0\x47\x73\x5f\x58\xc2\x8c\xfa\x43\x07\xee\xf7\x51\xae\xb7\x66\x65\xce\x05\x04\x97\xbc\x65\x4a\xd1\x0d\xbb\x0b\x9a\x2d\x87\x44\x55\xb0\x5c\x36\x07\x06\xe8\x95\x81\xdc\x0a\xbf\x20\xee\x7a\xe3\xa6\x3f\x53\xed\xa9\x91\xdc\xce\xad\x0e\x37\x7a\x2a\xb9\xd6\x2c\xb4\x99\x5c\xd9\xda\x02\xe0\x43\xd8\x4f\x3a\x30\x9f\x68\x3b\xf9\xdd\xf2\x43\xe7\x63\x3f\x6c\x40\x1b\x4e\x27\x52\xd7\xcb\x8f\x91\x55\xc9\xd9\x9a\xac\x39\xf8\xef\xc1\xbf\x7d\x6e\xb3\x4d\x83\x41\x60\x46\x45\x52\xca\x28\x15\x52\x78\x37\xac\x5f\xf1\x92\xfc\xec\x96\xac\xcb\x4a\x24\x54\x63\x83\x75\x84\x4c\x19\xe1\x6b\xb2\x01\xdf\x7a\x69\x83\x8b\xfe\xf4\xcd\x7f\xff\x33\x59\xed\x8c\xec\x00\xc6\x7f\x2d\x35\xcd\xea\xcd\xcd\x98\xd8\x04\x13\x00\x1c\x89\xeb\x26\x2b\xd4\xe7\x02\x95\x05\xed\x96\x7c\xfb\xc7\x87\x15\x3a\xa0\x54\x4b\x72\x91\xb2\xc7\x8b\xd6\x99\x2f\x32\xb9\xe9\x6b\x27\x37\x2e\xb6\x20\x05\xff\x1e\xb4\x87\x62\x5f\x11\x88\xef\x93\xb6\xc9\x56\x3e\xd9\x9a\x16\x3d\xf8\x8a\x0a\x0f\x5a\x19\xdd\xa2\xa8\x32\x1b\xab\xf5\xbd\xb9\x33\xb0\x9f\x95\x62\x87\x81\xf9\xbd\xf7\x35\xbc\xbb\xfe\x03\xfb\xed\xc7\x6d\x20\x86\x9f\xae\x74\xd1\xb1\xce\x4c\x12\xc4\xdb\xd4\xa3\xeb\x92\x7c\x4f\xb3\x6c\x45\x93\x87\x8f\xf2\x8d\xdc\xa8\xf7\xe2\xa6\x2c\x65\xd9\x5d\x47\x46\x55\x88\xf6\x27\xdb\x4a\x3c\x74\x9b\x1c\x66\x72\x63\xe4\xea\xa2\xd2\xbe\x5c\x57\xcf\x46\x07\xc0\x02\x1d\xe2\xca\xb1\x3f\xea\xba\xea\x36\xdf\x60\x9f\x00\x6b\x9f\xb8\x21\x60\x82\x30\x33\xf7\x90\xf2\x64\xee\x4f\x7b\x6e\xaa\x8d\xfc\x7f\xfc\xe6\x4f\x7f\xb1\x17\xcd\x68\x91\x7f\xf9\x06\xc2\xa5\x54\x38\xb6\x90\x27\x5b\xa0\xfd\x5c\x11\x95\xd3\x2c\x33\x0a\x63\x5b\x9f\x30\xc8\xd1\x77\x29\x8e\x72\x27\x74\x0c\xfa\x1f\x49\xd8\xfe\xf8\xf1\x3f\x41\xd2\xe6\x5a\xb1\x6c\x7d\x6e\xe3\xbd\xeb\xaa\x28\x67\xc0\x32\xcf\x1c\x85\x35\x72\x50\xbd\x1d\x48\xde\x7c\x1c\x21\xf8\x51\x66\x55\xce\xae\x19\x34\x6b\x8d\xd8\xa4\xce\x7b\x3e\x82\x2e\x73\x9d\xed\x57\x99\x4c\x1e\x48\x6a\xff\x18\xbe\xc1\xde\x1b\xbe\x5f\x6f\xac\x15\xdd\x49\x56\x4c\xd7\xb1\x9d\xc7\xee\x72\xde\x5e\x4b\xc7\xbf\x9f\xd3\xa2\xa8\xc3\x69\x4b\xfa\x14\x54\x14\xdb\x0b\xf7\x9d\x7b\xe9\x69\x3a\x9e\xdb\x8f\x84\x45\x9a\x9e\xf5\x36\xaf\xfa\x83\x2b\xe0\xbf\x6d\xe4\x1e\xba\x08\x41\xbb\x0c\x41\x1d\x1c\x5e\xaf\xdd\x72\x4d\xb3\x83\x40\x37\x8e\xde\x07\x78\x52\x9f\x66\x51\xdb\x94\x6c\x07\x6b\x9f\x17\x64\x4f\xb8\x60\xa5\x82\x86\xff\xfa\x27\xc0\x88\xab\x8c\x72\x4c\x2e\x22\x21\x4d\x83\xe6\xe3\x2e\x13\xdf\x01\xb8\x39\xd3\xe0\xa3\x88\xa8\x83\x23\xf7\x08\xb6\x17\x0c\x0a\x40\xc5\xd0\x98\x3b\x99\xba\x57\x81\x43\x80\xc0\xdb\x27\xee\x86\x48\x4c\x5b\x16\x8e\x64\x30\xf1\xc4\xe4\xa7\x66\xad\x5d\x5a\x62\x7e\xa9\x89\x89\x7d\x2a\x88\x2c\xa7\x25\x21\x30\xa5\x49\x14\x04\x68\x47\xab\x33\x79\x43\x08\xbc\x92\x84\xb3\xc2\x6f\x99\x3b\x60\xcf\x5d\x0d\xc9\xb0\x7a\xcd\x92\x58\x0f\x94\x39\x2d\x07\x1e\x05\xf3\xec\xf5\xd9\xd1\x69\x8d\xdd\xa8\x52\x16\x74\x83\x2c\x29\xbb\xb7\x5f\xfb\x00\x48\xca\xac\xa8\xc7\x14\x08\xd9\xf0\x77\x9c\xe1\x9d\x42\xf9\x58\x0b\xc9\x77\xb7\xf6\xa5\xf2\x9c\x23\xc5\x1f\x45\xd0\xc2\xe1\xb6\x62\xcb\x5c\x0a\xce\x13\xdd\x11\x5a\xca\x4a\xa4\xce\x86\x54\x1b\xf7\xde\xee\x2d\xe0\x9d\x14\x38\x16\xc1\x95\xcb\xc5\xee\x66\x7a\x01\x3b\xe7\x82\x7c\xbb\xfc\xf6\x9b\xaf\x83\x35\x7c\xac\x9b\xf6\x37\xac\xe1\x5d\xcd\x1a\xec\x7d\x3d\xfa\x4c\x7d\x01\xba\xe8\xd9\xbe\x75\xca\x7f\x5d\x5f\x0e\x34\x08\xb0\xa6\xc1\x4f\x46\x99\xc7\x1d\x50\x53\xde\xfb\x25\x88\x95\x46\xaa\x6f\x65\x34\xbe\xea\x48\xe9\x28\x88\xc8\x5a\x75\x71\x05\x97\x08\x51\xd5\xea\x28\xb4\xca\x11\x1c\xb8\x38\xb5\x3d\x27\x4e\xdc\x39\x53\x23\x64\x2b\x2a\xd1\x54\x4b\xf2\xe2\x05\x79\x69\xa1\x9d\xd9\xfc\x8e\x57\x47\x47\x33\xb7\x75\x37\x9f\x0a\x54\x8d\x8c\xce\xf6\xdd\x7c\x2a\x28\xd8\x82\x8a\xe1\x7d\x44\x2d\xb5\xb1\x9d\xa1\xf6\x11\x05\xf3\x3b\xb6\xa5\x8f\x0c\xf2\x56\x78\x46\xcb\x6c\x67\x36\xf4\xde\xae\x96\xac\x2a\x4d\x98\x78\xe4\xa5\x14\x39\x13\x9a\x3c\xd2\x92\xd3\x55\xd0\x88\x6e\x47\xc9\x20\x15\xcf\x28\x37\x7f\x78\xf9\xd3\xe5\x07\xf0\x3a\xbe\x72\xf9\x87\x6e\x47\x2a\x05\xf1\x60\x13\xb0\xa7\x35\xad\xae\x16\xdc\x46\x06\xdc\x3c\x01\x61\xfc\x9a\xcd\x09\x83\x11\xc0\xef\x81\x99\x6f\x5e\xe9\xca\x56\x62\xfd\x94\x64\x95\xe2\x8f\xa8\xcb\xb9\x5f\x99\xa0\x45\xb1\xff\xf9\xc8\x08\x8a\x97\x72\x6b\x89\xe5\x2b\x14\x72\x5d\x9a\xd7\x35\x0f\xdc\xb1\xbd\x14\xb4\x06\x29\x0e\xf2\xc4\xc0\x64\x0f\x2c\xb8\x4e\x97\x8d\xb1\x34\x7b\xb7\xd4\x99\xaa\x6b\x69\xb6\xcb\xa3\x9c\xa3\x04\x35\x9b\x0c\x6a\x43\x8d\x6c\x3d\xff\xf4\xd0\xb1\x07\x39\xf1\x2d\xd9\x3a\x00\xf3\x78\xa6\x9d\x30\xe6\x04\x30\x01\x81\x03\xa1\xd3\xaf\xdd\xd0\x43\x93\xe8\x56\x2d\x4f\x7c\x9f\x07\xa7\x30\xdb\x8e\x16\x40\xa0\xac\x8e\xe2\x69\xa1\xa6\x0f\xc3\xf3\xe6\x82\x94\x4c\x15\x52\x28\xd6\x15\xfa\x9a\xa0\x1f\xf6\xc8\x84\x56\x11\x1a\x0f\x46\x75\x28\xa4\xd2\x90\x2c\x3b\x86\xe3\x5d\x2f\xca\x9d\x7f\x05\xbc\x5b\x34\xcb\x0c\x06\xe5\x39\x4b\x39\xd5\x2c\xdb\x39\xbf\x27\x45\x86\x79\x1a\x18\x36\xa7\xce\x39\xb4\x18\xd9\x52\x91\x66\xac\x6c\xe7\x6f\x77\x5c\x60\xde\xa8\x1a\x28\x9f\x62\x3d\x6e\x3e\x78\x94\x26\x89\x2c\x53\x17\xef\xcb\x75\xed\x48\x23\xb6\x75\xc6\x92\xbc\x07\x89\xb9\x39\xbd\x51\xd8\x07\x65\x29\xc0\x50\xa4\x5a\x4e\x3b\xa8\x85\x53\x67\xb1\xdb\xf0\x88\xf1\x8d\x88\xe9\xa0\xe2\x9c\x19\xcd\x7f\x36\xc1\x13\x0b\x08\x40\xbb\x68\xc5\x50\xc0\x0f\x63\xbe\x08\xac\x8e\x89\x49\x4b\x3e\x4d\x52\xf2\x91\x53\x92\x63\x94\xea\x88\x74\xe4\x53\x25\x23\x47\xa4\x22\x93\xb5\xc4\x05\x9e\x1d\x3f\x11\x39\x26\x0d\x19\x17\x55\x44\xa2\x92\x90\x3b\xe9\xc5\x28\xe8\x81\x14\xe4\xfd\xe4\x62\xac\x02\x30\x92\x80\xdc\x93\x5a\x8c\x53\xea\xc6\xd3\x8f\xf7\x13\x8b\x51\x30\xa3\x92\x8f\x23\x52\xed\xa6\x14\x35\x44\x65\x2a\xa1\xe5\x3b\x64\xde\x6b\x7c\xd6\x2b\x36\xa7\x35\x86\xbe\x60\xe3\x6e\xe3\xb2\x59\xb1\xba\x7d\x44\x2e\x2b\xae\x44\x30\x99\x9a\xc9\x1a\x85\x36\x91\x59\xac\x27\xca\x61\x7d\x6e\x06\x6b\xc4\xa5\x3a\x55\xf6\xea\xf3\x72\x57\xe3\x33\x57\xe3\xf2\x56\x8f\x98\xb5\x3a\x21\xff\x33\x32\x63\xf5\x98\xf9\xaa\xd1\xb3\x8d\xcb\x55\x8d\xc8\x54\x8d\xc9\x53\x8d\xcc\x52\x8d\xc9\x51\xc5\x66\xa8\x1e\x3f\x3f\x35\xea\x28\xb0\x79\x05\xe8\xac\x82\xf8\x9c\x82\xe8\x8c\x82\xd3\xe4\xa4\x1e\x3f\x9b\xe0\xa8\xb9\x04\xcf\xce\x24\xc0\xe7\xa2\x9e\x24\x13\x75\x7a\x1e\xea\x49\xec\x78\x88\x5c\x09\xbc\x75\x0e\x9b\xd3\x75\x9a\x8c\xae\x53\xe5\x73\x3d\x2f\x9b\xeb\xe4\x12\xe5\xb1\xf2\xb8\x9e\x91\xc5\xf5\x0f\x46\x69\x8f\x95\xb9\xf5\xdb\xa6\xb4\x5f\x82\x06\xa1\x1e\x2b\x4a\x76\xaf\xc7\xdb\x2c\xee\xd9\x4d\xed\x0b\x03\x56\x53\x97\xdc\x1e\x61\x36\x6d\xcc\xa0\x24\xad\x7c\x33\xe7\xcb\xbb\xdb\x5a\x5f\x95\x6d\x73\xa6\x35\x1f\x8f\xc2\x74\x21\xe0\x75\x6a\xf0\x85\x4b\x0b\x6e\x95\xd3\xac\x4a\x76\x6e\x56\xce\x72\x58\xd5\x79\xdd\x03\x7b\x14\xb0\x8b\x0a\x86\x17\x98\x4e\xac\x79\xc8\x5b\x79\x5d\xa9\x39\xbf\x25\xeb\x88\x12\x01\x49\x49\xd5\xd6\xc6\xad\xb2\x4f\x5c\xbb\x48\xf1\x92\x51\x25\x85\x4d\xc0\x6e\x85\xdf\x72\x45\x0a\xaa\x54\xc0\x8c\xe3\xa8\x96\x9b\x9c\x05\xe8\xea\x6e\xb6\x81\x6d\x4a\x9a\x30\x97\x70\x4f\x12\x59\x09\x9d\xca\xa7\x71\xf5\x18\x8a\x79\x2a\x7f\xce\xb6\x89\x9e\x45\x08\x43\xff\x19\xd8\xc9\x7c\x25\xd4\x25\xf9\xc0\x36\xb4\x4c\xb3\x10\x0d\x70\x54\x43\x56\x3a\x91\x0d\x11\x71\xb3\xdf\x37\x9d\x83\xb3\x08\xd0\x00\xdc\x87\xe3\xfb\xe0\x91\xab\xed\x21\x0e\x6c\xc4\x38\x35\xd8\xb7\xaf\x23\x6d\xe8\x01\xc4\xf2\x55\x62\x21\xc8\xc1\xbf\x37\x78\x52\x90\x3f\x43\x93\x6d\xc8\x57\x15\xdf\xd2\x7c\x36\xc8\xcf\x06\xf9\xd9\x20\x3f\x1b\xe4\x67\x83\x7c\xdf\x98\x0d\xf2\xb3\x41\xbe\x33\x66\x83\xfc\xd0\x98\x0d\xf2\xc3\x63\x36\xc8\xcf\x06\xf9\x7f\x38\x33\xd1\x6c\x90\x9f\x0d\xf2\x7e\xcc\x06\xf9\xd9\x20\x3f\x1b\xe4\x83\x6f\xcc\x06\xf9\xb1\xf1\xdb\x34\xc8\x07\x1f\xe9\xb4\x6f\x42\x85\x76\x9f\xdd\x81\xd5\x90\x27\xce\x00\xde\xad\xf5\xe0\xc0\x2d\x9b\x90\xff\xc1\x05\x1c\x74\x9e\xf2\x66\xee\x56\x9f\x2a\x0b\xa7\x94\x59\x66\x74\xa0\x9c\xee\x46\x3b\xc5\xf9\xf8\xff\x37\x9d\x9e\x54\x7c\x4d\x84\xdc\xab\x8f\x0b\x76\x6f\xdb\x8f\x2a\x5d\x92\x8f\xc3\x4a\x28\xdf\x08\x59\x32\x0f\x99\x8b\xcd\xb9\x2d\xea\x54\xf7\x8b\xd3\xd2\x15\xa5\xe8\x7e\xf4\xc5\xff\xf9\xbf\x2f\x86\xd1\xee\x30\x58\xfd\x8b\x14\x8a\xc3\x50\xeb\x90\x31\x75\x92\x21\x35\x94\x3c\x71\x2c\x23\x2a\x96\x1d\x21\x8d\xa7\xa7\x30\x9c\x46\x1a\x4d\x51\x92\x17\xda\x60\xda\x36\x86\x06\xa1\x22\x8c\xa5\x7b\x86\x50\x84\xb0\x81\x35\x94\xb6\x8c\xa0\x41\xa8\x18\x23\x69\xd7\x00\x1a\xde\xd1\xb0\x81\x74\xdf\xf8\x19\x5e\xfc\xb8\x71\x14\x6f\xf8\x44\xda\x67\x22\xa4\x00\x9c\xca\x8b\x62\x53\x31\x8d\x8e\xa2\x5b\x1c\x21\xaa\x7b\x46\x36\x37\xc2\xe5\xb5\x4e\x69\x6b\x84\xad\xc5\x89\x13\xef\x10\xb6\xe3\xd3\xd8\x8d\xb1\x24\x15\x23\xdd\x47\xdb\x8a\x51\xd4\x0f\x6f\x27\x6e\xdb\x67\x31\x84\x1a\x63\x23\x46\xdf\xb2\x08\xdb\x70\xbc\x5d\x18\xce\x3b\x4c\x81\xa6\xd9\x84\x91\xf4\xe6\x14\xb6\xe0\xe9\x76\xe0\x38\x1b\x30\xde\xfe\x7b\x24\xdb\x6f\xa4\x8a\x16\x61\xf3\x3d\x96\xbd\xf7\x64\x7d\x3a\x50\x7b\x84\xb5\xef\xc6\x54\x9e\x46\xda\x75\x31\x36\xdd\xe3\xda\x73\xd1\x5b\x8d\xb1\x2e\xa0\x2c\x0b\x71\x56\x85\x28\x8b\x42\xb4\xdd\x96\xc8\xb0\x03\x0f\x6f\x49\x68\x5b\x09\x82\x60\x9f\x65\x45\x78\x96\x05\x01\x67\xa7\x8d\xb5\xd1\x5a\xfb\x6b\x70\xd9\xb1\xf6\x59\xe4\xe9\x63\x88\x40\xd0\x1e\x82\xba\xd0\x91\xad\x79\x26\x34\xe5\x09\xb6\x02\x8f\x6a\xc7\xd3\xd2\xf6\x83\x32\xc2\x67\x2b\x19\x7f\x5c\x01\x15\xdd\x76\x27\xbe\xe1\x8e\x6b\xa7\x33\xba\x73\x47\x69\xb5\x73\xdc\x1d\x89\x69\xac\x13\xdf\x52\x67\x8a\x2a\x14\x68\xa6\x83\xd6\x85\x70\x6d\x74\xba\x9b\x3f\x0a\xf3\xf3\x1e\x0c\xca\x93\x33\xc9\x8b\x13\xa8\x9e\xfa\xff\xb1\x77\xed\x3d\x6e\xdc\x48\xfe\xff\xfb\x14\xc4\x04\xd8\xb1\x81\x91\xec\xdc\x06\x49\x70\x9b\x04\x98\x38\xbe\xdc\x20\x8e\x33\x67\xd9\x59\xe0\x70\xc0\x81\xea\xa6\x24\xee\xb4\x9a\x1d\x92\xad\xb1\xbe\xfd\x81\x55\x7c\x74\x4b\xcd\x87\xc6\x33\xd9\xec\xae\xf4\x97\x3d\x6a\xb1\xf9\x28\xd6\xf3\x57\x55\x8f\x1f\xc1\x79\x78\xf4\xe6\xc9\xec\xba\x82\x88\x4d\x79\xb7\xd9\xd3\xa2\x35\xff\xc4\x7a\x54\x41\x54\xe6\x5f\x50\x8f\xfa\xfd\x34\x8e\xf2\xb6\x35\x0f\x6a\x58\x83\xed\x68\x92\x1b\x75\x42\xab\x9a\x71\x23\x9a\x7f\x4e\x8d\x23\x7b\x6a\xad\xa8\xd9\x82\x35\xe0\x4a\x8f\xed\x01\xad\x9d\x0b\xfa\xb6\x80\x1d\x16\x5c\xde\x83\xc3\x1f\x4c\x01\xeb\x3d\x2b\xf7\x3f\x3c\x7f\x77\x65\x92\x64\xee\x05\xbe\x00\x2f\xf6\x8a\x6b\x63\x62\x52\x58\xe0\x9c\x2c\x26\x46\xc4\x52\x8f\x71\x59\x64\x7e\x79\x79\xa9\x48\x43\x97\xac\x51\x87\x2f\x58\x32\xb0\x4e\xea\xbe\xc1\xa6\x25\xe0\xff\xc6\x97\x25\xcb\xf7\x9c\x94\x29\x00\x45\xb7\x20\x37\xe1\x05\x55\x8a\xaf\xdb\x99\x21\x2b\xf3\x96\x17\x31\x0a\xca\x9e\x78\x27\xb9\x90\x3c\x5e\x14\xfd\xc8\x33\xe2\x7e\x80\x17\x67\x4e\x7e\xa5\x92\x8b\x5e\xb9\x8a\x55\x95\xd8\x76\xa2\x85\x42\xfe\x7d\xa2\x7b\x87\x0e\x05\xe5\xe0\x78\x6c\xb1\x7a\x3f\xb8\x67\xd6\xae\xfc\xe8\xad\xfd\x26\x3a\xe2\x75\xbd\xe5\xd0\x80\x66\x10\x0d\x85\xc4\x98\x96\x2e\x1b\x86\xc1\x97\x4e\x62\x25\x2c\x33\x35\xe9\xfa\x95\x30\xad\x53\x82\x25\xcc\x14\xa1\xf0\xd4\xbf\xa7\x0a\xef\x71\x8d\x07\xd4\xe0\xf1\x38\x6d\x9a\xd7\xba\xf5\xbc\x6a\xa8\x52\x46\x14\xd8\xd4\x26\xbe\x76\x3d\x85\x60\x7f\x31\xca\x15\xfe\x1a\x37\x25\xec\x78\x31\xc1\x51\xc2\x46\xf2\x2c\xa4\x3b\x9c\x75\x11\xd9\xdc\xac\x06\x65\xeb\x08\xb7\x2d\x25\x94\x3b\xe1\x4b\x15\x66\x4f\x2e\x90\x8e\x80\xaa\x67\x95\xe4\x9a\x57\xb4\x89\x37\xc3\x37\xba\xb3\xfb\x49\xd5\xf4\x4a\x33\x19\x7e\x05\x06\xa5\xbe\x17\xf8\x76\xda\x90\x3b\xb6\xbf\x17\xb2\x56\x99\x72\x77\x6e\x86\x61\xef\x95\x76\x53\x34\x4a\x2c\x74\x50\xc0\x90\xad\xdc\x32\x49\x96\x2c\x57\xfc\xf1\x60\x90\xfd\x9c\x5c\xb7\x7b\x5b\x69\xb7\x1d\xea\x01\x35\x5b\x71\xdb\xe8\x09\x6a\x9b\xa5\x28\x93\x8e\x89\xc8\xde\x72\x37\x3b\x8a\x5a\xe4\x44\xe1\xc0\x34\x1d\x89\x3a\xdc\x42\x87\x3e\x70\x98\x01\x21\x09\x06\xde\xe0\x76\x4a\x86\xd1\x4c\xf7\x75\x8c\xf4\xb2\x22\x40\x32\x5a\xf3\x47\x04\x58\x28\x26\xa1\xf2\xbc\x1f\x37\x01\x32\x18\xa7\xb8\x01\xd2\x62\x2b\x76\xae\x9a\xb2\x1b\x89\xb5\x75\x27\xb8\xe1\x1c\x43\xf8\x45\x32\x9e\x37\x59\x6e\x6f\x0a\xa9\xe1\x77\xf7\xdd\x68\x1b\xe2\xd4\x09\x50\x0d\xb3\xb6\x7d\x1c\xab\x11\xc1\x64\x24\xb8\xdc\x11\x56\xe3\x9d\x7b\xc3\x00\xac\x71\x46\x60\x0c\x3f\x67\x04\xc6\x19\x81\x71\x46\x60\x9c\x11\x18\x67\x04\x46\xec\xa9\x33\x02\x23\x3e\xc3\x33\x02\xe3\x8c\xc0\x38\xfa\x9c\x11\x18\x67\x04\xc6\xd4\xa3\x67\x04\x06\x39\x23\x30\xdc\xe7\x8c\xc0\x38\x23\x30\xce\x08\x8c\x33\x02\xe3\x49\x76\xe4\x8c\xc0\x38\x23\x30\xc6\x9f\x33\x02\xe3\x8c\xc0\x38\x23\x30\x0e\x3f\x67\x04\xc6\x19\x81\x71\xb0\xd9\x8f\x81\xc0\x70\x55\x31\xa3\x87\x75\xe8\xdd\xef\x7a\xcd\xc8\x3b\xf7\x2b\x4f\x5b\xae\x83\xb6\x11\xa2\x15\x95\xf9\xae\xb1\x25\x9c\x15\x7a\xbf\x27\xc9\xe8\x34\x70\x08\x29\xe7\x7e\x63\xfa\x7c\x03\x13\x19\xf8\x68\xb0\x7d\xd6\x47\xa0\x27\x8a\xdd\x81\x21\x24\x08\xdb\x93\x7c\xbf\xdf\x70\xf4\x33\x3d\x20\xcd\x78\x8c\xcc\xc0\x32\x95\x33\xfb\xea\x99\x1f\x7e\xe6\x4f\x20\x0a\xd6\x20\xa5\xd7\xda\xfa\xcf\xfe\x08\x27\xf1\xce\x4e\xe5\xf0\x2c\xec\xdd\x7e\xe8\x59\x38\x32\x86\xf0\xb5\x7f\x07\x57\x44\x6c\xb9\x86\x66\xb7\x62\xd4\x28\x2c\x5d\xd0\x82\xeb\x91\x7b\xd6\x52\x0f\x84\x72\xa9\xc6\xea\xa9\xbe\xcc\x5f\x61\x83\xbd\xd0\x2b\x15\xab\xe7\x7a\xc5\x07\xa8\x60\xe6\xe2\xf8\x16\x24\xf3\x88\x6c\xed\xf7\xa6\xb6\xec\x23\x0e\xf7\x24\x1f\x88\x07\x71\x9a\x92\x07\x1b\x70\xd5\x51\x6d\x06\x35\x3c\xcc\x3f\x18\x37\x58\xdc\xfb\x23\x50\x87\xf8\xe0\xd1\x21\x5d\x44\x3e\x0c\x9d\xdc\x9c\xc4\x95\x31\x96\x10\x20\x34\x44\xab\xd9\xc7\xa8\xf6\x36\xbe\x53\x8b\xf1\x8f\x88\x31\xc3\x14\x01\x01\xc6\x76\xac\xf1\x83\x12\xaa\xb5\xe4\xcb\x5e\x27\x64\xb0\x31\x6d\x2a\xb1\xdd\x5a\xbc\x92\x03\x48\x00\xe6\x49\xcd\x49\xd0\x7a\x87\x32\x1a\x00\x00\x73\x42\x16\x2c\xdd\x2e\x71\x38\x6f\xb8\x91\x6e\xe3\x80\xec\x21\xd6\xc8\x68\xb5\xb1\xf0\xa9\x4f\x89\xef\xaf\xd4\x8f\x52\xf4\xe5\x25\xb3\x2f\xae\x3d\xe8\xc7\x98\x28\xf6\x6a\x36\x64\x6d\x46\xc1\x6b\x4f\xbb\xae\xe1\x19\xed\xc5\xdc\xed\xa6\x09\x3b\xa7\x08\xb4\x60\x07\x58\xda\x42\x6c\x7d\xe7\x5b\xb3\x19\x56\x80\x64\x83\x3f\x3f\xf5\x4b\xd6\x30\x6c\xd0\xbd\x01\x9d\x15\xea\x30\xdf\x9b\xe1\x37\xbc\x43\x2d\x99\x6a\x3f\x34\x98\xc3\xe6\xeb\x74\xac\xd6\xca\xfb\x4e\xd4\xff\x41\xfe\xb7\x35\xba\xd4\x7b\x1c\xd6\x18\x78\x3f\xde\xfc\xe0\xaf\x80\x79\xea\x3f\x17\xb0\x9d\xe4\xdf\xd3\x5a\xae\x19\x41\x31\xbd\xe6\x35\x59\x62\xe4\x5c\x31\x4d\x9e\xb5\xec\x1e\x43\xf2\xae\xff\x22\x19\xf5\x01\x4e\x0e\xe9\x66\x01\x0b\x32\x93\xb6\x53\x79\x4e\xfe\x8c\x33\xee\x98\x74\x00\xbb\xa5\xe1\xd2\x54\x32\xf2\xcb\xbb\xcb\xf4\xe2\x01\xf3\x24\xef\x67\xf2\x7e\x36\x9b\xcd\xcc\xfa\x6f\x56\xa4\x6f\xa1\x5f\xb9\x99\x98\xdb\x73\x78\xbb\x61\x11\x5b\x51\xf3\x55\xa6\x8e\xf5\xe8\x54\xcc\x3d\x0a\x53\x03\xd2\xa6\xed\xde\xae\x78\x1e\x07\xa8\x8d\xd4\xc7\x2f\xbf\xf8\x64\x2f\x80\xec\xdb\xeb\x13\xef\x82\xd9\x55\x43\x00\x5a\x00\xe8\xc1\xac\x8b\xb5\x5a\xee\x01\xd1\x74\x54\x4b\x3b\x6d\x81\x4a\x51\x41\xe5\x9a\x0f\xca\x08\x69\x6c\x2a\xeb\x6f\x3d\xb7\x7b\x3e\x27\x3f\xd3\x3d\xa1\x8d\x42\x5c\x6c\x02\x76\x44\xb0\x7f\xe9\x01\xc3\x9b\x13\x10\x11\x18\x2f\x5c\x0a\xbd\x39\x7c\x20\xdb\xcf\xfe\x16\x7c\x7a\xc3\x9f\x5c\x0d\x20\x4e\x5e\x3e\x4c\xbc\x3b\x4d\x12\xf4\x8e\x29\xd2\x49\x56\xb1\x9a\xb5\x15\xb3\x5e\x2d\xaa\xf3\xea\x35\x79\x1a\x4a\x78\x2b\xda\x77\x42\x94\xbb\x84\x6e\x06\xe0\x4b\xdb\x75\x36\x88\x05\x30\x85\x0d\x89\x50\x95\x71\x09\xb5\xa2\x9d\x01\x64\xa7\x57\x56\xee\x62\xc3\xf9\xa3\xbb\xb6\xa3\x0d\xaf\x2d\x94\x32\x4d\x05\x5b\xba\x66\x84\x6a\x4f\x54\x46\x0c\xb5\xaa\x87\x82\xf7\x46\x49\xd3\xa4\x16\x2c\x40\x77\xa8\x22\x1f\x6e\x7e\x48\x0e\xf9\x92\x3c\x83\x96\xd8\x70\x77\x57\x94\x37\x10\x85\x86\xce\xad\x07\x8d\x61\x57\x6e\x78\xb3\x94\xe4\x98\x40\xdf\x44\x48\xec\x6c\x7f\x45\x5a\x81\xbd\x0f\xec\x3a\x0d\xd7\x72\x1c\xce\xba\x82\xb3\x05\xe3\xc7\x57\xe5\x21\xd7\x21\xed\x6b\x6b\xeb\xdf\xeb\x3a\xa4\x16\x5a\xd6\xe0\x1f\x68\xfa\x83\x62\xc9\xbe\xd9\x47\xcc\xed\xc3\x23\x33\xb7\xa1\x2a\x64\x08\x7c\xbc\x43\x48\xa9\x5b\xa6\x69\x4d\x75\xfa\x9a\x20\x43\x0c\x28\xc1\xc2\xb3\x4e\x47\x70\xd2\x6c\x31\x76\xd6\xc9\x31\xf3\x74\x30\xc9\xfa\x32\xe2\xf3\xef\xc3\x16\x15\x7b\xc3\xdb\xfe\x23\x2a\xb6\xe5\x2e\x2f\x43\x47\x8b\xd7\xf0\x53\x6c\x3a\xf2\x51\x5b\xd5\x0b\xf5\xc4\xfa\x58\x17\x4c\xdf\xeb\x9b\xd1\xd9\x1f\x36\xd4\x70\x5c\x0e\x98\x85\xd1\x1b\x01\x6f\x9e\xa6\x26\x49\xdb\x5a\x6c\x8f\x66\x69\x64\x10\x68\xd9\x03\x0f\xe9\x90\xd2\x4a\xa8\xe9\x1f\x95\xe3\x9c\x28\x80\x4b\xa3\x07\x60\x66\x9d\x14\x3e\x78\x03\x86\x19\x57\xfe\x74\xd0\x52\x83\x64\xa1\x72\x73\x83\x84\xd8\x41\xd1\x7a\xc8\x29\xd1\x03\x29\xe2\x7d\xe9\x27\xd7\xf4\x4e\x34\x0c\x33\xb0\xdc\xa2\xcc\x10\x7f\xa8\x35\xc1\x83\xa7\xac\xe9\xbd\xb1\x5a\x47\x6b\x02\x3b\xf6\x8f\xb4\xa6\x3e\x23\xfe\x8e\xd6\x64\xe4\xe5\x78\x4d\x20\xb4\xfe\x38\x6b\x2a\xf2\x69\x0e\xcd\x74\xb0\x6f\xca\x79\xf7\x35\x69\xb8\x02\x61\x0f\xe6\xbd\x1a\xb2\x6c\xc0\xf5\x73\x09\xb9\x37\x22\x5b\x87\x15\x41\xe1\x07\xec\xf4\x0a\x8c\x7e\xeb\x4e\x3d\xda\xa3\x4c\x47\x95\x4e\xf2\x2d\x95\x7b\x63\x80\xcd\x8f\x85\x42\x2b\xdc\x94\x9d\xd6\x48\xeb\x3a\xdf\x67\xca\x58\x9e\x45\x87\x54\x80\x81\x2c\x95\xbe\xa5\xf2\xb7\x0c\xb1\xa6\xf6\xaa\xd2\x4d\xf9\x11\x2f\xf0\x79\x70\x85\x11\xea\xcf\xbb\xa5\x5b\xa6\x3a\x5a\xb1\xda\x8d\x08\xa8\xcb\xdc\x82\x43\x6e\xe1\xad\xa8\x6d\x3e\x57\xdf\x86\x58\xb6\x1b\xeb\x99\x75\xaa\x94\xe9\x8f\x56\xa6\x3f\x27\x5b\xbe\xde\x68\x6f\x71\x34\xb4\x6f\xab\xcd\x27\x9e\xd2\xc4\x66\xd8\x5c\x31\x73\xef\xef\x98\x6c\x59\x43\x3a\x2a\xe9\x96\x01\x28\xa8\xc8\xf2\x2e\x07\x9b\x96\x01\x4d\x27\x30\x74\x2b\x42\xdd\x6b\xf6\x16\x04\x9c\xe7\x42\xe5\xd1\xe6\x42\x80\xe9\x68\x62\xbf\x82\x0a\xf2\xb4\x33\x2b\x03\x96\x16\x80\x4a\x4b\x00\xa5\x27\x55\x42\x4e\x5f\xcb\x7b\xde\xd6\xe2\x5e\x3d\x44\x79\xfe\x2b\xfe\xd4\xe9\x76\x95\x77\x32\x1f\x28\xd0\xc9\xa5\x0c\x94\xeb\x49\x05\x5a\xe0\xc4\x5c\x67\x39\x5a\xcc\x86\x0f\xcd\x19\xc7\x6e\x0d\xb7\x98\xff\x83\x28\xbb\x8f\xa1\xd9\xae\xb7\x8a\xbe\x92\x66\x3c\xcd\x69\xb3\xe8\x4e\x6c\x02\xf7\xe3\xcf\x8b\xeb\xf1\xcf\x8d\xe2\x71\x0f\xb9\xa0\x66\xc5\xe6\xfb\x90\x21\x9d\xbd\x4f\xf7\x6c\xb9\x11\xe2\x8e\x3c\x73\x81\xaf\x35\xd7\x9b\x7e\x39\xaf\xc4\x76\x10\x03\x9b\x29\xbe\x56\x2f\x2c\x69\xce\xcc\x0a\xf2\xc9\x55\xbc\x6d\x80\x37\x3a\xee\x0d\x59\xdf\xd6\x1b\x00\x93\xac\xfc\x2a\xe0\x80\xe0\x26\x16\xf4\xae\xdb\xfb\x11\xc6\xdb\x00\xdc\xce\x67\x89\xfb\xdc\xf6\x82\xf6\x5d\xb4\xe9\x36\xd4\x06\x76\x6c\xce\x1a\xe4\x25\x6e\x44\x2b\x6c\x1c\x1f\xe1\xd8\xd6\x65\x87\xf9\xec\x79\x56\x15\xae\x24\xac\x77\xc5\xa8\xee\x25\x23\xab\x86\xae\x1f\x4d\x55\x3d\xa6\xa6\x54\x0c\xd0\x7d\x32\x14\x05\x5b\x69\xd3\x15\x07\xb0\xa1\xec\x8a\x27\x8f\x15\x3d\x38\x07\x67\x32\xdc\xf3\xfc\xf9\x14\x9f\xc9\xe1\x9e\x67\x87\x7e\x92\x33\xf1\x2e\xb4\x93\x8f\x02\x5c\x69\xf6\x87\x86\x57\x39\x8e\x3e\xe9\x5a\xcb\x2e\xee\xa8\x47\xe7\xa4\x7b\xcd\x3c\x32\x76\xb1\x15\x5c\xed\x03\x17\x5c\xce\xcd\x56\x32\xe2\x31\x0b\xff\x24\xa9\x40\x9e\x56\x32\x90\x29\xe9\x10\xa7\x71\xa4\xe1\x82\x7d\x38\x99\xcc\xdf\x0d\x89\xed\xef\x41\xef\x8f\x02\x60\xc0\x24\xff\xeb\x0a\xba\xf1\x16\xa3\x18\x2e\x17\x47\xbf\x9b\x60\x5b\x64\xfc\x54\x3c\x9c\x8e\xf9\x11\xfe\xae\x71\x85\x06\x4a\x19\x16\x49\x53\x75\x17\xa0\x21\x0c\xea\xc2\x04\x04\x48\xf8\xbb\x5d\xea\x8c\xe2\x6c\x32\x65\x63\x12\xbb\xaf\x45\xc3\x10\x82\x52\x06\x54\x9b\x84\x7c\x5c\xaa\xe1\x38\x31\x8a\xc8\x58\x47\xc7\x05\x6a\x44\x8d\xfb\xf7\xde\x8f\x0d\xf7\x41\x6b\x68\xdf\x0b\x5c\x07\xbf\x49\x7a\x44\x8c\x8d\x6d\xf6\x4f\x23\xed\x43\x79\x20\xab\x50\x68\xc9\xbb\x86\x91\x6f\xee\xd8\xfe\x0a\xab\xb4\xb0\xd5\x8a\x55\xfa\x3b\xd2\xab\x0c\xb9\x02\x4c\x4d\x57\x1b\xde\xae\x89\xd1\xd8\xa8\x16\x92\x7c\xe3\xfe\xf5\x5d\xfc\x56\x94\x29\x78\x38\x8f\x13\x4c\xc9\xd7\xf0\x83\x83\x9a\x2c\xb8\x6c\x1c\xcb\x6c\x17\xcc\x38\x77\x61\x5f\x43\xd1\x88\x2d\xa3\xad\x72\xb5\x94\x9a\x66\x34\x94\xb2\xa5\x7c\x0a\x11\x56\xc4\x01\xf2\x1c\x9a\x84\x4a\x46\xde\x8a\x85\xc5\xe4\x5c\x91\x5b\xc9\x56\x4c\x86\xbf\x64\xa3\xc2\x84\xbc\x15\xaf\xb1\xe0\x41\x7a\x35\x85\xcc\xe7\x8e\x45\xcb\x26\xe1\x67\xb4\xd5\x3f\xb1\xbd\xe3\x0f\xb8\x2b\x77\x6c\x1f\xa2\xb0\xe1\x22\xe4\x36\x05\x7d\x79\x44\x8b\x79\x72\xcf\xef\xd8\x1e\x8d\xa8\xbc\xee\x74\x87\x33\x03\xd4\xcf\x55\x20\x4b\x87\x8c\x7e\xfd\x91\x2b\xad\xfe\x82\x97\xaa\x12\xdb\xa5\x6d\x90\x9d\x19\x15\xa7\xe5\xc8\x07\x66\xe6\x0e\xb2\xad\xe1\xbf\x30\xc5\xc7\x38\x08\x37\xe5\x13\x4e\xe3\x17\xb7\x4a\xc9\x3a\xc9\x14\xd8\x07\xd4\xcc\xe8\x52\x11\xc9\x1a\x64\x49\x1b\xde\xe5\xc4\x94\x08\xf2\x7c\x4e\x7e\xa5\x0d\xaf\xfd\x6c\x90\x62\x71\xf7\x60\xcd\xaf\x7f\xeb\x69\x93\xbb\x47\x43\xed\x08\x7f\xe0\x86\x30\x47\xf4\x5b\xcf\x77\xb4\x61\x98\x25\x7e\xcf\x9b\xba\xa2\x32\x47\xf4\x2b\x21\x5d\x31\x29\x65\xeb\x42\x00\x84\x89\x54\xb4\xf5\xac\x30\x50\x8e\xb1\x93\x72\x34\x48\x3a\x2a\x35\xaf\xfa\x86\x4a\x62\xf8\xc6\x5a\xc8\x4c\xfd\x87\x52\x79\xee\xaf\x41\x01\x66\xfd\x90\xf9\x1f\xfe\x76\x78\xb6\x7a\xe3\x5b\xb9\x67\x97\x87\xf8\x83\xd1\xa5\x24\xcf\xc6\xc5\xe7\xc4\xca\xf1\x47\xcf\x52\x72\xdc\x6c\x80\x18\x1d\x29\x6a\x58\xa9\xa7\x7e\x1e\xa4\x52\xe0\x11\x39\x62\xf9\x7e\xef\xc0\x37\xc3\xd2\x26\x00\x7b\xb2\xf3\xb5\x97\xd0\x1e\x72\x9e\x17\x20\xf3\x58\x09\xc9\x76\x4c\x92\x67\xb5\x80\x11\xd9\x8e\x57\xfa\xf9\x9c\xfc\x0f\x93\x02\x2b\x80\xb0\x35\x85\x0c\x2f\xbc\xd2\x99\x41\x3d\xf4\x2c\xb4\xbc\x7e\x49\x9e\xc1\xa0\x84\x6f\xb7\xac\xe6\x54\xb3\x66\xff\xdc\x83\xd6\x0b\x6a\xbd\x3c\xbe\xdf\xba\xc0\x99\x38\xe1\x48\x1c\xb1\x74\x5b\x42\x69\x4c\x3a\x56\x75\xc8\x72\x12\xc7\xad\x03\x07\xe6\xca\xde\xfd\x91\xd5\xe0\x6a\x13\x59\x86\x5d\x4c\x76\x7f\x33\xb4\x4b\x89\x64\x6b\xb8\xb7\x78\x17\x1f\xe1\xd6\x16\xeb\xe0\x31\xdf\x63\x62\x80\xe8\x57\x9d\x14\x1f\xf7\xea\xb7\x66\xc1\x2a\x79\x9c\x12\x37\x4e\x74\x37\x8f\x2e\xfe\xfb\x0d\x51\xf0\xac\x33\x49\x8d\x0a\x66\x4c\x4f\x50\xd6\x01\xde\x47\x95\xba\x17\x12\xb1\xe5\x52\x88\xe3\xc5\x80\xa5\x0a\x8f\xda\xb7\xc3\x5f\x0e\x1e\x4b\x69\x6a\xf6\xb2\xfe\x2c\xea\x49\x42\x8b\x65\xa4\x6d\x45\xcd\x10\x0d\x69\xcd\x04\xd1\x7a\xe8\x25\x02\x31\x97\xfb\x74\x15\x36\x97\xf8\x48\x2d\x11\x2d\x99\xbe\x67\xac\x25\x2f\x61\x39\x2f\xbf\xfa\xea\xab\xb1\x5d\xfe\xf2\xcb\x2f\xbe\x98\x93\x1f\x6c\x4d\xa7\x58\xec\xd0\xba\x61\x81\xb7\x52\xbd\x01\x79\x67\xd8\x05\x05\xd6\xe8\x92\x50\x10\x36\xaa\x0d\xb1\xa1\x8d\x8a\xf1\x91\x08\x32\x81\x03\x50\x79\xd5\x70\x57\xca\x0e\xab\xe4\x39\xcf\x2f\x8a\x2f\xab\x9a\x42\x6c\xaf\x61\xb0\x3f\x57\xa4\xe1\x77\xd3\x43\x5a\xf0\xf0\x15\xac\x15\xeb\x8f\xa8\xbe\xd1\x20\xff\x0c\x2f\x87\x17\x84\x3d\x56\x4c\x4f\x62\x95\x73\x79\x40\x69\x3e\x13\x35\x63\x0e\xed\xa4\x91\xd3\x1b\x22\x91\x77\x6c\x3f\xc3\x63\xeb\x28\x97\x0e\x6c\xfb\x03\xd5\x34\x51\x69\xd2\x9a\x9f\xa0\x23\xb3\xb6\x62\x35\xc1\xab\x12\xf0\x69\x52\xfc\x0d\x4f\x89\xb7\x4e\x8d\x41\xc8\x71\x24\x87\x9c\xe2\x66\xdf\x6f\x84\xb2\x26\xae\xe5\x7d\x46\x7f\x44\x9c\x39\x38\x5a\xdd\x9f\xad\x52\x34\x32\xfd\xa6\x8d\xc9\x0d\x83\x88\x1e\xab\x41\x25\x4c\xcd\x30\xb8\x4c\x0c\xc1\xa9\xab\xa8\xce\xdf\xb7\x47\x23\xda\x5a\x7c\x56\x25\x80\x89\x51\xa7\xfb\x86\x71\xe3\xa5\x21\xad\x74\xb5\xbf\x77\xc7\x80\xbb\x7a\x35\xdc\x3f\xc5\x74\xdf\xe1\x3b\x99\x94\x42\x9a\xc9\xc4\x22\xcf\x28\xb5\xb7\x54\xde\xb1\xda\x12\xb9\x51\xf9\x6e\xcd\xea\xbc\xb6\x81\x0a\xe9\x0e\xd9\xd4\x96\xee\x61\x1e\x96\x8d\x45\x77\xf4\x72\x3e\xbf\xc4\x6b\x29\xa4\x85\x3d\xc2\x7d\x32\x7f\x9f\x62\x12\x09\x3b\x7b\x9c\xe7\x4d\x3b\xa8\xca\x0b\x42\x01\x8d\x18\x01\x1a\xa1\xde\x84\xb8\x8c\xc5\x45\x4f\x8e\x96\x37\x65\x93\x86\xd5\x91\xc1\x6f\xa7\x60\xa9\x25\x2e\xd0\x0a\x84\xd9\x36\xc2\x98\x27\xde\x9c\x61\xcf\x56\xc7\x33\x76\xaa\x39\xc5\x84\x94\xcd\x70\xe5\xe9\x9c\x96\x2c\xd2\x7e\x20\x69\x0e\x82\x5d\x23\x16\x7c\xc4\x6e\x53\x56\xd6\x29\x8c\x78\xc4\x74\x33\x1e\x91\x87\xb1\x63\xfc\x94\x25\x67\x96\xa8\x80\xe9\x02\x3a\x47\x54\xe7\xef\x24\x5e\xb1\x55\xd8\x04\x30\x79\x3b\xc7\x19\x93\xc6\x0e\xfa\xaa\x2d\x63\xa2\x2d\xa1\x4b\x25\x9a\x5e\xe3\xa0\xe1\x4b\x7b\xd5\xbd\xa0\x4d\x79\x80\x10\x43\x83\xb7\xdc\x0f\x30\xb8\xfe\xc0\x45\xf1\xee\xc6\x38\xc1\x70\xcf\x92\x65\x5b\x53\x41\xee\x59\x74\xf1\xb3\xf8\x1a\x32\xaa\x64\x4a\x8d\x74\xbc\x33\x2b\x62\x17\x70\x93\xf6\xe4\x7e\xc3\xb4\xab\xb5\x6c\x45\xa3\x51\xb9\xb5\x42\x91\x71\x50\x91\x37\x3a\x9b\x18\xa4\x19\x95\xcd\x98\x37\xf9\x20\xdd\x7a\xe0\x2f\xb6\x4a\xaa\x3b\x6d\x51\x5f\x5e\xaa\x80\x73\x71\x01\xad\x69\x25\xef\xb4\xbc\x55\xa5\x85\xa4\x6b\xf6\x02\x79\x89\xfa\x0c\xdf\x3c\x75\xd5\x12\xa4\x10\x3d\x31\xc9\xba\x86\x57\xf4\x88\xc7\xc7\x12\xcd\x79\xab\x34\x6d\x2b\xf0\x6c\x91\x9a\x75\x8d\xc0\x4a\xa2\x4e\x7b\x9f\x93\x57\xbd\x94\xac\x9d\xaa\x83\x79\xcf\x5c\x21\x0a\x0c\x60\xb8\x77\x93\x6f\x21\x0f\x0a\x2a\x53\xdc\xac\xc2\x9f\xbf\x23\x9f\x5f\x05\x1d\xde\xb0\xc7\xa3\x21\x97\x8c\xd8\x7a\xd2\xac\x3e\xdc\x92\x14\xcf\x89\x73\x1a\xeb\x7b\x7f\xcf\xb6\x5d\x43\xf5\x11\x55\x8c\x69\x74\xfc\x2c\xf8\xaf\x5b\x4f\xe2\x64\x94\x03\x0a\xbb\x64\x07\x9f\xb2\x58\x5c\x11\x51\xa3\xb5\xb9\x35\x9f\x60\xb2\xb8\x28\x5b\x9e\x8a\x17\x9a\xb6\x35\x95\xb5\xa5\x06\x43\xb7\xee\xc7\x93\x71\x8c\x35\xd7\xf3\xbb\xaf\x81\x30\x2b\xb1\xdd\xf6\x2d\xd7\xfb\x17\x50\x54\x9d\x2f\x7b\x2d\xa4\x7a\x51\xb3\x1d\x6b\x5e\xd0\x8e\xcf\x2a\xd1\xee\x58\x8b\x71\x82\x6d\xfd\x99\x1b\x77\x8a\x58\x73\xea\x05\x14\x65\x4e\x87\x2e\x9e\xb8\xc5\xc1\x75\x98\x81\x3d\xd9\xde\xd6\x90\xed\x25\x6a\xac\x56\x1f\x30\x62\xc4\xdc\xd2\x44\x54\x14\x78\x3a\xf5\x99\xd3\x2e\x58\xb1\x77\x29\x06\xcb\x3d\x61\x1f\xb5\xb1\x72\x1b\xa2\x85\x68\xb0\x14\xa3\x4e\xf5\x24\x30\xba\x87\x64\x5a\x72\x66\x34\x4e\xb9\xe4\x5a\x52\xb9\x1f\x9c\xe5\xfb\x8d\x51\xf8\xad\xad\xf7\x5b\xcf\xe4\x1e\xe2\x82\x29\x41\x1f\x9c\x16\xa0\x3e\xcb\x1d\x68\xda\xac\xb5\x89\x78\x10\x0e\x01\xaa\x51\x47\xa4\x32\xcd\xc5\x8c\xe1\x3d\x5b\xf7\xbc\x66\x2f\x06\x07\xfa\xc0\x36\x08\xc9\xaf\x55\x04\x24\x73\x40\xfc\x16\xf6\x84\x57\xd2\xf2\xf2\x9a\x29\xac\xc5\xc0\x36\x74\xc7\x85\x0c\x3c\x1e\x6e\x6b\x31\x17\xff\x84\x9b\x62\x66\x3f\xa3\x6d\x3d\xc3\xf2\xbf\x0f\xb9\x30\x96\x0f\xde\xdc\x96\x85\x45\xfd\xe3\xce\x0e\xbc\xb9\x35\x17\x4a\x42\xad\x97\xd1\xfa\x93\x14\xc3\x15\xe9\x55\x4f\x9b\x66\x4f\xb0\xd9\x05\xab\x6d\x06\x44\xb3\x77\x7e\xc2\x2d\x35\x6f\x42\x4b\xae\x75\x2f\x49\x8d\x18\xcc\xbc\x2d\x6d\xed\xe0\x88\xef\x30\xa4\xcc\x5b\xd0\xde\x97\xb6\x32\xbf\x02\x9f\xea\xa4\x74\x70\x9f\x25\xf3\xc9\x1b\x1e\x6d\x6c\x17\xf7\x97\xe0\x79\xbb\xb2\xb5\xfc\x03\x61\xc4\xd8\xb5\xfb\x80\xc6\xbe\xa2\xbc\x19\x45\xf5\x8d\x82\x6c\x75\x45\xcc\x1c\xae\x89\xde\x48\xd1\xaf\x37\xb6\xc0\x7c\x22\x9a\x82\xa1\x89\x41\x24\xed\xe2\xad\x68\xd9\xc5\x95\x2d\xf6\x6e\x35\xc2\x67\x17\x17\xcf\xaf\x08\x94\x56\x80\x8c\x36\x72\x13\x2f\xcf\x6a\xb7\x7b\x6e\x47\x72\xea\x7b\xd8\x62\x23\x97\x36\x8c\xd6\xc6\xf6\x75\x2b\x06\xb0\x58\x3c\x72\x04\xf2\xc9\x4c\xc4\x15\xe9\xf6\x65\x20\x7e\x31\x72\x3d\xc4\xbe\x6c\xc6\xf5\x2b\x47\x6b\x71\x2f\xe8\x5b\x51\xb3\x5b\x21\x35\x7a\x7f\xde\x08\x5a\x7f\x4f\x1b\xa3\x68\x18\xba\x41\xd7\x3b\x54\x82\xb0\x89\x01\xaf\x2d\xb3\x84\x96\x1c\xd1\x41\x4f\xd5\xb4\xec\xe2\x67\x2d\xd3\xb6\x5e\xba\xfb\xdb\x8b\xcf\x76\x5c\xea\x9e\x36\x33\xde\x29\xbc\xa8\x36\x46\x6f\xf6\x82\xc7\x2b\xd3\x64\xa5\x8e\x63\xfb\x37\xb7\x65\x21\xfa\xc1\xf3\x98\x4d\xe0\x40\xd6\xe1\xfe\xda\x3a\x6e\xe9\xee\x19\xad\xa8\x99\xf2\x55\xdc\xf1\x80\x5c\x9e\x93\xc2\xaa\x4f\x9d\x26\x5a\xd2\xd5\x8a\x57\x16\x8d\xcd\x3d\x81\xcc\x21\xeb\x3c\xd1\x39\xc6\x4c\xcf\xc9\x1e\xac\x7e\x01\x6e\xc6\x9f\xc2\xf6\x63\xde\x7a\x6f\xb3\x22\x24\x53\x9d\x68\x15\x4f\x81\xe6\x20\x85\xaa\x55\xbd\xc4\x3e\x1e\x34\x4c\x8f\x4a\xc9\x77\xe6\xc6\x68\xdb\x3c\xc8\x19\x51\x5c\x41\xf5\x66\x12\x47\x79\xd9\xaa\x0b\xec\x23\xdd\x76\x98\x48\xe3\x05\x71\x23\x68\x3d\x5b\x5a\x32\x74\xa6\xb4\x5d\x53\x47\x13\x65\x9f\x2c\xfb\x08\x8b\xcd\x84\x4a\x32\xd8\x89\x02\xcd\x25\x87\x1a\x76\x6b\x7a\x8f\x1b\x76\x2b\x1a\x5e\x95\x35\x13\x9a\xfc\x25\xa9\x59\x2b\xcc\xba\xa0\x38\x0b\x57\x4e\x13\xb6\xa2\x34\xce\xdc\xb5\x20\x52\x18\xcb\x39\x68\x3b\xf6\x08\xb5\x80\x83\x9b\x19\x36\xdd\x18\xde\xe6\xfa\xc4\xdc\xf3\x7a\xd0\xd9\x23\x7e\xd9\x2f\xde\x08\xe8\x26\xe3\x34\x17\x8b\x2a\x6d\xb8\xb1\xb3\xad\xda\x65\xee\x48\x5b\x13\xba\x13\xbc\xc6\x9e\x55\x95\x48\x08\xb7\x8d\xe8\x80\xe8\x86\xec\x08\x06\x30\xdc\x0a\xeb\xa3\x19\x7e\xe4\xf8\xc6\x15\x59\xf6\x9a\x48\xae\xee\xe2\x1b\xd0\x09\x8d\xc0\xc7\x66\x4f\xf8\xd6\x12\x57\xed\x77\x41\x75\xd8\x0d\x65\x3d\x27\x17\x96\x6b\x5e\x10\xb1\x54\x55\x9f\xdc\xd5\xd8\x42\x8d\x86\x59\x51\xdb\xb3\x00\xd6\x0a\x6b\x82\xdc\x14\x90\x7b\x49\xf6\x80\xeb\xb1\x3a\xe1\x86\xee\x18\x59\x0b\x51\x13\xb1\x63\x92\x36\xf6\x7a\x84\x09\x3f\x94\x01\x62\x5f\x82\x57\x1b\x56\xdd\x39\x21\x50\x44\x98\x13\xbf\x3b\x2c\x48\x0f\x4f\x54\xe6\x09\x58\xcf\x6d\xaa\x54\x9b\xcb\x37\xf1\x0c\xee\xd8\xa3\xf7\x5f\x13\x6f\x4c\x40\x87\x5d\xe8\xc7\x45\x4b\x9d\x36\xd5\x71\xb2\xa4\xd5\x1d\x6b\xeb\xe0\xea\x09\xea\x89\x9b\x68\x9c\xd0\xff\x6a\x98\xb4\x39\x53\x50\xae\x83\x20\x77\xbf\x74\x95\xda\x06\x0e\x7d\x3b\x87\xf8\x54\x81\x78\xac\xf8\xb6\x30\x20\x54\xfc\x5d\x26\x9e\xc2\x52\x28\x87\x37\x21\x3a\xe2\xeb\x49\xb6\x31\x1c\xa8\x8a\x83\x2c\x1e\xa7\x0b\x56\x33\x98\x6b\xa9\x56\x7c\xa8\xbf\x38\xbe\xf6\x1e\xde\x36\x5a\xfd\xf0\x3f\x69\x0d\x71\xcd\xb4\x27\x06\x7f\xe2\x37\xb7\x63\x60\xe9\xb8\x81\x59\x82\xac\x1c\x3c\xb3\x66\x1d\x6b\x6b\xa8\x08\x3e\xf4\x91\xf5\x6d\xcd\x64\x03\xda\x59\xd5\x88\xbe\x9e\xd9\x7e\x43\xd2\xf9\x5e\xe2\x23\xe3\x7c\xf6\xb6\x4b\xd6\xc1\xfe\x21\x39\x50\xf8\x2b\x71\x42\xd1\x1c\xa8\x5d\x59\x9c\x5e\x07\xaa\xb1\x73\x71\xf3\x81\x46\x07\xbc\x6b\x34\x51\x57\x41\x22\x3e\x51\xeb\x45\x02\x5f\x2e\x6e\x47\xd4\xf7\x9c\xe5\x3f\xc3\x65\x2e\x80\x7b\xbe\x33\x4a\x7b\x99\x36\x76\x39\x0c\x9b\x61\x81\x5a\x9f\x9e\xe6\x4a\xfd\x34\x54\x1b\x82\xbe\x82\x23\x4e\x53\x8a\x64\x66\xa2\x55\x50\x6c\x9c\xe1\x30\xb1\x4b\x23\xed\x24\x3d\x2c\xc4\xa6\x70\xe4\x81\x01\xe4\xa7\x6d\x45\xc7\xcd\xad\x1a\xda\x31\xd9\x21\xcb\x0e\x71\x78\x58\x39\x9a\x9e\x5f\x9c\x04\xa4\xc5\xca\xa4\x33\xb8\xae\x68\xd1\xbb\xe6\x72\x03\x2c\xed\x78\x5a\xb3\x15\x97\xec\x9e\x36\x4d\x14\x53\xfb\xf4\xba\x18\x5c\xc2\x32\xea\x7a\x6f\x43\xae\x46\xa3\x84\x9f\x05\x25\x14\x5d\x85\xc3\xd8\x7d\xc2\x59\x41\xfe\x18\xc6\xd0\x29\x18\x61\xcb\x79\x41\xa0\xd9\xc0\x8a\x82\xe9\x1b\xd1\x00\x36\x7a\xeb\xd6\x9c\x4c\x2a\xeb\x92\xb2\xb4\x0c\xaf\x9b\xcf\xab\x3c\x8a\x3b\x05\x6c\x39\x40\xc4\x6d\x58\xc7\x9a\x5b\xd9\xb3\xc2\x0f\x86\x00\x3d\x24\xe4\x87\xb7\x8b\xff\x7b\x73\xfd\xfd\xeb\x37\x73\x72\xdd\x34\x96\x1e\x7c\x28\xd7\xee\xd7\xa2\x63\x55\x66\x58\x18\x11\xd4\xb9\xbe\xe5\xbf\xf5\x38\x57\x77\xf5\xb7\xb4\xf3\x19\x1f\x10\xf0\xb8\xcc\x70\x03\xfc\xf0\x96\xbc\xb6\x2a\x3a\x9c\x98\xf7\x12\xba\xf0\xab\xe1\x12\xbe\x91\xdb\xe0\x6c\x73\xe3\x2a\xdf\x6b\xd1\x45\x6b\x8b\x36\xaf\x10\xc7\xd8\x66\x14\x4e\xfc\x1c\xdf\x49\x1b\xc3\x40\xdc\x07\xd8\x9b\x20\x85\xb1\xea\x6e\x98\x63\x7e\x71\xee\x16\x83\x70\x35\x93\xfe\xd6\x6b\x96\x07\x76\xc7\x9c\x7c\x40\x3f\x5b\x66\x50\xef\x85\x1b\x83\xf4\x0e\xbb\x7b\x06\x80\x89\x57\x3d\x33\x03\x8f\xfd\x66\x98\xcd\x03\x71\x0b\x63\x95\x37\x8a\x9d\xec\x3d\xc3\xcf\xc0\x87\xe6\xca\xec\x73\xa0\x40\xda\x6b\x31\x0b\x35\x57\x70\xcf\x79\x09\x50\xda\x85\x65\x8c\xea\x2a\x0e\x0c\x54\xeb\xaa\x32\x6a\x53\x79\xc1\xcf\xb2\x92\x9f\x49\x8e\x69\xce\x16\xba\xa5\x9a\x65\xa4\x4b\x8d\x97\x16\x32\x2e\x87\x4c\xe6\x2b\x92\x4f\xa4\x67\x48\x9b\x52\xe1\xe8\xe4\x64\x81\xf3\x14\x6b\xc9\x67\x6c\x67\x2a\x72\x7f\x32\x0a\x92\x10\xc5\x20\x6d\xf6\x7a\xb5\xe2\x2d\x66\x82\xad\xf8\xba\x48\x9e\x4f\xfe\x32\x48\x37\x9b\x88\x17\x62\x86\x71\xb9\x06\x25\xbf\xb1\xfc\x22\xb5\xa3\x7d\x4a\xc5\x68\xd4\x00\xe3\x46\xd2\xd1\x4a\xdc\x0f\x52\x93\x37\x93\x7c\x05\xcf\x25\x0f\xfe\xe6\x96\x2c\xa9\x21\xac\xd2\x05\x95\x2e\x8a\x9c\x54\x59\xfd\x68\x89\xe3\x9f\x1e\xb8\x16\x5c\xbd\xf5\x2c\x48\x9d\xd8\x2d\xb8\xb9\x75\xbe\x22\x5c\xa4\xd2\xbc\xba\xdb\xc3\x4b\xb0\xa0\xa6\x0d\x25\xa6\x41\x48\xf8\x59\x32\xf2\xdd\x4b\xf2\xa7\x3f\x91\x6f\xbe\xfd\xfa\xcb\x2f\x5e\xbe\x7c\xb6\x12\x92\x7c\x4e\x6a\xba\x7f\x6e\x18\xa4\x4b\x65\xb3\xdb\x48\xbe\xfd\x36\x3b\xe2\x85\x9b\xe4\x45\xe0\xc2\xa1\xde\xfb\xcb\xaf\xed\x3b\xfe\x4c\x36\xa2\x97\xea\x79\x4e\x71\x29\xbf\xf5\xa7\x96\x2b\xf9\xb4\x14\xc2\x54\x1d\xa2\xb1\x90\xb7\x65\x73\x35\x93\x5b\x48\x50\xdf\x60\xc5\x58\x2f\x46\x82\xe8\x2e\x68\x6c\xa2\x45\x88\x80\x84\xec\x13\xbc\x23\x98\x7b\x12\x82\x19\x57\x83\x60\x49\x08\x8a\x24\x83\xc0\x63\x2d\xe1\x62\x38\xda\xc5\x48\x9f\x0b\x16\x1f\x2b\x0a\x9f\x5c\xf8\xa9\x5c\x78\x2d\x01\xfa\xec\x59\xcf\xac\x39\x34\xf0\xe1\x0e\x42\x87\xd0\xb0\x25\x58\xa6\x49\x40\xba\x18\xb8\x75\xbd\xfa\x88\x5b\xe2\xb7\x7e\xe0\x3e\x6b\x00\xe4\x4c\x12\x05\xed\x06\xa5\xc2\x0f\x5c\x77\xcb\xbd\x0d\x25\x42\xc7\x1a\xd7\x08\x16\xcb\xc3\x86\x57\xc7\xd9\x2d\xd0\x14\x28\x51\xa3\xb8\xa9\x8b\xce\xb5\x82\x58\x93\x88\xe0\x17\x79\xa5\xca\x81\x9c\xd9\x68\xdd\x5d\xbf\x6c\xb8\xda\x60\xf2\x05\x05\x67\x99\x58\x0d\x9e\x91\x34\xe9\xb5\xd5\x1b\xda\x02\xe8\x13\x22\xfd\x86\xda\x2e\x1c\x0d\x5d\x90\x65\xcf\x1b\xf4\x17\xf9\x73\x75\x39\x5e\x78\xb4\xf1\xb9\x06\x85\x77\xc7\xe4\xde\x46\x58\x40\xdd\x05\x6f\xbe\xa7\xb0\x2a\x90\xf9\xc5\x90\x2c\xe3\x85\x77\xc3\xa4\xbc\xe2\x0b\x18\x65\x70\x2a\x01\xe8\x62\x3a\x1c\x43\x9e\xf1\x38\xeb\x0d\x3e\x18\x17\xdf\x42\x4c\x12\xfa\x28\x9e\x67\xa6\xfe\xbb\x58\xd0\xf6\xa0\x79\xbb\x9e\xf9\xe7\x66\xde\x8e\x86\xb0\xe9\x03\x3d\x5a\x0f\x49\xd3\xc0\xb8\xf4\x42\x4b\xaa\xd9\xfa\x28\x2e\x34\x62\x8d\xe3\x47\x0f\x52\x52\x17\x9a\x6a\xb6\xea\x9b\x05\xd3\x1f\x46\xcf\x1d\xcd\x73\xac\x5a\x6e\xbb\x46\xec\xd1\x35\x85\xe3\x63\xc5\x27\x87\xdd\x0e\xa3\x3a\x2f\xa4\x64\x3b\x3e\x59\xbb\x04\x4c\xd8\x1a\x00\x78\x0e\x96\x75\x78\xa0\x29\xdd\x41\x8a\xa6\xe1\xed\x1a\x27\x9f\x85\x93\xbc\x1b\x3e\x8d\x50\x08\x5c\x84\x85\x7f\x80\xe5\xe2\xcb\x3d\x25\x82\xea\xce\xcb\x3e\x1a\x70\xb0\x6c\xb7\x8d\xe6\xb9\x29\xfa\xcc\xa9\x43\x90\x07\x08\x73\x2e\x91\x7e\xb7\xee\xe9\x83\xd3\x15\xb2\xe6\xe6\x22\x9a\x93\xf3\x1d\x66\x06\xb3\x8c\xdf\xc7\x00\x2b\x72\x43\x0f\x04\x67\xd0\x34\x5e\x3e\x65\x40\x20\xa9\x1d\xc4\x34\x83\x89\xaa\x84\xe3\x1c\x6c\x6f\x63\x26\x88\x7f\x7a\x55\x03\x6b\x77\x74\xec\x53\x4f\x3f\x04\xd9\xb9\x63\x52\x4d\x9c\xf8\x38\x37\x0e\x9f\x31\x2b\xf0\xe9\x57\x58\x94\x0c\xa1\x9d\xc7\x6e\xfd\xc8\x4c\xa6\xec\xb2\x99\x9b\xc2\xbf\x65\x66\x8b\x98\xa7\xe1\x4f\x63\xf4\x2c\x96\x08\x4a\xfb\x91\xb5\x36\x6d\x2f\xb9\xbc\xe3\xc7\x1d\xd8\x69\x2b\x94\x26\x92\x55\x46\x28\xac\xc3\xb7\xee\x07\x47\x47\xe0\xf1\x0f\x0e\xc1\x37\x27\x37\x9a\x54\x42\x22\x6e\xa1\xf6\x62\xc4\x7d\x7f\xa9\x06\xe3\x5e\x45\xb0\x18\x86\x63\xc0\x99\x83\x77\x6b\xdb\x23\x3c\xce\x69\x3c\xd7\xb7\x37\xa0\x6f\x1e\xd7\x0e\x4c\x25\x55\xc6\xaf\x41\xb7\xa1\xea\x88\xc8\xa3\x94\x25\x19\x55\xc7\xdb\x1b\x79\x7c\xe2\x58\x0f\xfe\xe4\xa8\x91\xec\x3e\x87\x92\x27\x9f\x87\xbf\xc1\x19\x63\x91\xb5\xd1\xd7\x88\xc5\x65\xf5\xa0\x51\x97\xc5\x42\xdb\xbf\xfc\x7f\x00\x00\x00\xff\xff\xfb\xd8\xfa\xa5\x82\x5e\x04\x00") func kubedbCom_proxysqlsYamlBytes() ([]byte, error) { return bindataRead( @@ -724,12 +702,12 @@ func kubedbCom_proxysqlsYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_proxysqls.yaml", size: 89610, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_proxysqls.yaml", size: 286338, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _kubedbCom_redisesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\xcf\x73\xe3\xb8\x72\xff\x7d\xfe\x0a\x1c\xbe\x87\x6f\x52\xa5\x49\x36\xfb\x6a\x2b\xf1\x25\xe5\x67\xcf\x6e\x26\x3b\x3f\x5c\xa3\x99\x7d\x87\xad\x97\x2a\x88\x6c\x49\x88\x21\x80\x0b\x80\xb2\xbd\xa9\xfc\xef\x29\x92\xa6\x2c\xcb\x24\xd0\x0d\x92\x96\x3c\x06\x4e\xb6\x48\x36\x1a\x8d\x46\xe3\x83\x46\xa3\xc1\x0b\xf1\x1b\x18\x2b\xb4\x3a\x63\xbc\x10\x70\xeb\x40\x55\xff\xd9\xb7\xd7\xff\x6a\xdf\x0a\xfd\x4f\xdb\x1f\x16\xe0\xf8\x0f\x6f\xae\x85\xca\xcf\xd8\x45\x69\x9d\xde\x7c\x01\xab\x4b\x93\xc1\x25\x2c\x85\x12\x4e\x68\xf5\x66\x03\x8e\xe7\xdc\xf1\xb3\x37\x8c\x65\x06\x78\xf5\xe3\x57\xb1\x01\xeb\xf8\xa6\x38\x63\xaa\x94\xf2\x0d\x63\x92\x2f\x40\xda\xea\x1d\xc6\x78\x51\x9c\xb1\xeb\x72\x01\xf9\xe2\x0d\x63\x8a\x6f\xe0\x8c\x19\xc8\x85\x05\xfb\xb6\xf9\xf9\x6d\xa6\x37\x6f\x6c\x01\x59\xf5\x01\xcf\xf3\xba\x26\x2e\xaf\x8c\x50\x0e\xcc\x85\x96\xe5\x46\xd5\xc4\x66\xec\x3f\xe7\x9f\x3f\x5d\x71\xb7\x3e\x63\x6f\xab\x0f\xde\x6e\x9b\x36\xd5\x15\x35\xa4\x7f\xdb\xfb\xc5\xdd\x15\x70\xc6\xac\x33\x42\xad\x9e\x7c\xee\xb8\x2b\xed\xdb\x62\xcd\x2d\xec\x7d\x3e\xaf\x7f\x0e\x7e\xdd\x8a\xe1\xed\x13\x19\xec\xd1\x3a\x5f\xc1\x1e\xa1\x9c\xbb\xea\xdf\x95\xd1\xe5\x4e\x20\x75\xcb\x9b\xd7\xef\xa5\x95\x71\x07\x2b\x6d\x44\xfb\xff\xac\xfa\x8e\x5b\xa7\x0d\xdc\xff\xbf\x13\x65\xf5\x0f\x2f\x0a\x9b\xe9\xbc\x7d\xc6\x6b\xe9\x33\xd6\x74\xe2\x97\x4a\xca\xf5\xff\x52\x58\xf7\xeb\xc3\x6f\x1f\x84\x75\xf5\xef\x85\x2c\x0d\x97\xbb\xfe\xa8\x7f\xb3\x6b\x6d\xdc\xa7\x07\x8e\x66\xcc\xe4\xcd\x03\xa1\x56\xa5\xe4\xe6\xfe\xf5\x37\x8c\x15\x06\x2c\x98\x2d\x7c\x53\xd7\x4a\xdf\xa8\x9f\x05\xc8\xdc\x9e\xb1\x25\x97\xb5\x4c\x6d\xa6\xab\x86\xd7\xb4\x0a\x9e\x41\x45\xc6\x96\x0b\x73\xaf\x55\xf7\xf4\x9b\x8e\x38\x63\xff\xf3\xbf\x6f\x18\xdb\x72\x29\xf2\x5a\xa0\xcd\x43\x5d\x80\x3a\xbf\x7a\xff\xdb\x8f\xf3\x6c\x0d\x1b\xde\xfc\x58\x55\xac\x0b\x30\x6e\x27\xa5\x46\xcf\x76\x1a\xbe\xfb\xed\x49\x27\x36\xa5\x16\x4f\xe8\xa5\x7d\x4d\x6f\x4b\x57\xbd\xbb\xfe\x7e\xf4\x0b\x63\x1b\x7e\xfb\x01\xd4\xaa\x52\x97\x9f\x7e\x3c\x78\x56\x70\xe7\xc0\xa8\x33\xf6\x5f\xbf\xf3\xd9\x9f\x7f\xff\xff\xbf\xcf\xf8\xec\xcf\x7f\x9e\xfd\xdb\xdf\xff\xf1\xf7\xfb\x3f\xfe\xe1\xdf\xff\xdf\xc1\x37\x9d\x4c\xb6\x3f\xeb\xc5\x7f\x43\xe6\x76\x3f\xb7\x83\x29\xc4\x77\x26\x4b\xeb\xc0\x1c\xb2\xde\xf7\x7a\xd3\xac\xae\x2f\xaa\xb2\xd4\x66\xc3\xdd\x19\x13\xca\xfd\xf8\x2f\x1d\xcf\x1b\x4e\xab\x31\xbd\x02\xf3\xe4\xb9\x81\x42\x8a\x8c\x77\xd4\x38\x8c\x72\xa7\x7c\xea\xb6\x6b\xb5\x14\xab\x79\xad\x8a\x14\x01\xf0\x1b\xfb\x4e\x72\xeb\x44\xf6\x57\xa9\xb3\xeb\x79\x35\x34\xbb\x98\xf6\xd1\xa8\x1b\x65\xbf\x56\xac\x75\x3e\xeb\xed\xed\x3d\xf2\xdc\x38\xe1\x0e\xb4\xfd\x11\xfd\x80\xd0\x58\xb0\x4b\x58\xdd\x2d\x3c\xff\xac\xe4\x9d\x9f\xcf\x85\xd6\x12\xb8\xea\x7c\x67\x5b\xd9\x6f\x78\x7f\x19\xd9\x52\x03\x7f\x94\xc2\x40\xde\xf5\xf9\x6c\x47\xbc\x57\x29\x3a\x3a\xbe\x2a\xfc\xcf\xd2\xc0\xa5\xb0\xd7\x31\x3d\x97\xf1\x6c\x2d\xd4\xea\xa3\xce\xe3\xbb\x2f\x17\xf6\xfa\x53\x87\xd5\x20\x11\xf8\xf6\xe5\x7d\xf4\xf7\x03\xd5\xef\xd0\x84\x92\x3e\x1e\xaa\x54\x7e\x9d\x68\x45\xdb\xfb\xf0\xdb\x97\xf7\x51\xfa\xf2\xb3\x90\x51\x23\x7d\xf8\x18\xb2\x90\x19\x70\x83\xf4\xc5\xae\xb9\x81\x01\x14\xfc\x32\x7f\x60\xb0\xfb\x71\x5b\x39\x55\xee\x19\x14\xeb\x65\xa7\x58\x43\x42\xdf\x68\x25\x9c\x36\x3d\x4f\x19\x13\x0e\x36\xbd\x0f\x11\xf2\x6c\x5f\xe1\xc6\xf0\xbb\x1e\x0b\xed\xd6\x47\x1b\x22\xad\xce\xf4\xe9\x2c\x8a\x89\x86\xc4\x17\x58\xf6\x51\x08\x75\x02\xeb\xc1\x46\x24\x2e\x02\x2a\x52\x95\xd2\x76\x43\x12\x04\x7d\xbf\x5e\xb7\x5a\x44\xd6\x5b\xa1\xf2\x6e\x96\x26\x86\x05\x63\xe9\xcd\x0b\xe8\xf4\x93\x04\x16\x0d\xaa\xfc\xc8\x8b\x98\xbe\xcf\x61\xc9\x4b\xe9\x7c\xc0\x62\x1c\x54\xe7\x35\x7e\x01\xcb\x88\xe9\x7e\xc6\xae\xa1\x57\x05\xf7\x99\xf4\x6a\x00\xab\xcd\x78\xbf\x2c\x9a\x82\x91\xc8\x7e\x95\x3e\xb9\x34\xc5\x67\xb8\x09\xcc\xfb\x14\xac\x29\xb3\x4a\x4c\x9e\xa7\x15\x23\x81\x19\xca\x33\x3e\xc2\x33\x94\x6f\x94\x06\x9b\xa8\x8b\xc6\x4d\x13\x6b\x69\xfc\xc3\xc8\x8a\xa8\x01\x64\xc4\x36\x7a\x26\x18\x6c\x7b\x95\xce\xe1\xaa\x5c\x48\x61\xd7\xf3\x97\x62\x44\xc7\x5a\xdf\x9d\x3b\x67\xc4\xa2\x74\xfd\xed\xd9\x77\xec\x85\xdb\x3e\xbc\x6d\x81\x45\x42\xad\x29\x54\xb5\xcc\xf5\x8d\xba\xe1\x26\x3f\xbf\xea\x5c\x78\xbd\x22\xfb\xbe\x14\x20\x73\x8f\x7e\x53\x68\xb1\x5e\xef\x5d\x77\x41\x4e\x1d\x3b\x36\xaf\x82\xf6\x9c\x44\x35\x6c\xd7\x59\xad\x62\xbb\xba\x11\x53\x89\xd7\x8c\xb3\x97\x3d\x0f\x56\x12\x6b\x3c\xbe\x3f\x8f\xac\x34\x99\x56\x8e\x0b\x05\xc6\xb7\xae\x25\x73\xcb\x6a\xef\xca\x56\x58\xdd\x3b\x93\x44\xd1\x6c\xa5\x70\x04\x55\x6c\xab\x1e\xae\x89\x18\x50\x33\x2d\x6c\xf1\x12\x80\x4d\xe1\xee\x2e\x45\xd4\xca\x6b\x03\xb9\x28\x37\xf1\x8b\x65\xf1\x27\x7c\x10\x1b\xe1\x22\x29\x78\xdb\xb5\xcc\x8e\xb0\x96\x94\xe5\xc9\x3b\x97\x1d\x37\x2b\x70\x7f\xfb\xdb\xa7\x23\xfa\x79\x6e\x6e\x44\x7e\xb4\xea\xfd\x5a\x23\xe1\xf6\xb7\x1a\x9e\xbd\x3c\x30\xdd\x2c\x2f\x4e\x06\x4d\xbe\x22\xcf\xca\x14\xc0\x79\x29\x75\x76\x1d\xe7\x10\xab\xf7\xbf\x07\x3a\xbf\xef\x69\x7c\xfb\x16\xed\x2d\xf2\xb6\x6e\x95\xc1\x55\x05\x5e\xad\x03\xe5\x62\x77\x95\x5e\xc6\x7e\x60\x91\x0f\xea\x88\x69\x77\x7e\x1a\xe6\xc8\xbd\x27\xdc\x17\x28\x74\x94\x6e\x0a\x03\x99\xd3\x26\xd0\x1e\xaf\x40\x0a\x6d\xc5\x40\x12\x5b\xe1\x5b\x38\x0d\xf2\x83\x3e\xf0\x47\x16\x6b\x13\x5b\x10\xb7\x7b\x03\x2a\x2f\xb4\x50\xae\xd7\x10\x22\xc6\xc3\x11\x77\x5f\xfc\x32\xdd\x35\xae\x5b\x89\xbb\xd1\xb3\x57\xd6\x6b\x6d\x5d\xdf\x2a\x37\x24\xea\x41\x82\x72\xf1\x26\x2b\x30\x94\x23\xa4\x20\x6c\xa4\xdb\x30\x5b\xf3\xe2\xbc\x74\xeb\x4b\x61\x33\xbd\x85\xd0\x58\xf4\xcd\xf1\x2d\xa9\x39\xd8\xf0\x98\xf4\x11\x1a\x38\x1d\xd4\xf1\x7a\xdc\x69\xef\xd2\x38\x4c\xe5\x8f\x58\xab\x72\xdf\x1b\xef\x55\x65\x02\x78\xff\xa2\xf7\xf8\x8b\x90\x42\x1b\xc7\xe5\x11\xd7\x0f\xaf\x06\x58\xb6\xcb\xb5\xab\x5a\xe2\x93\x98\x0d\xf1\x47\x97\x84\x66\x95\x16\x75\xfe\xbe\xcf\x10\xd5\xdc\xa8\xb8\xa9\xed\xe8\x61\x01\x26\x7e\x55\x17\x65\xb3\x67\xf7\x75\x52\xe5\x5b\xec\x20\x75\xb3\x86\xbd\x90\x5c\x74\xba\x67\x82\xe6\xbd\xfa\xf0\x84\x61\xeb\x8e\x3f\xb2\x84\xd6\xda\x69\x75\xfc\xa5\x47\x3e\xd1\x26\x7c\x45\x98\x2c\x13\x6d\xdc\x8d\x36\x03\xfc\x1e\x47\x8f\xc0\x38\xc9\xc0\x86\xc2\xe8\xea\xf7\x6e\xb2\x27\xb3\xf1\xf5\x28\xb2\xfc\x69\x19\x65\xeb\xcb\x1b\xe2\x41\x25\x86\xe0\x8a\xf8\x1a\xa5\xe6\xa6\x04\x63\x35\x1e\x0a\x61\xbb\xa3\x29\xe1\x7d\xab\x87\x82\xdf\xc1\x3a\x64\x28\xbc\x97\xf5\x50\xc2\xbb\x5a\x87\xd4\xd1\xcd\xc5\x6d\xc7\x34\xc5\x1f\xfb\xb1\xff\x9e\x77\x3b\xe5\x90\xd7\xe0\x46\xe2\xfe\xcb\xfd\x98\xf4\xa1\x84\x60\xe1\x3e\x3d\x94\xa0\x42\x71\x23\x87\x44\x7d\x96\xf2\xf1\x9b\xc1\xb6\x07\xb6\xef\x1f\xca\xcb\x19\xbb\xb8\x7d\xf8\x78\xfa\x8c\xb8\x37\xff\x50\xc8\xa6\x82\xd1\xf6\xeb\x07\xd5\x44\x19\xa9\x8c\xb0\x9b\x7f\xc8\x14\x72\x38\xb2\xd7\x66\x29\xa9\x31\x01\x7b\x4c\x45\x28\x30\x31\x4e\xe0\xa1\x44\xe9\x30\x3a\x76\x60\x60\x3d\xf8\x78\x82\x41\x15\xd1\x87\x0a\x2a\xda\xe0\x90\x27\xf4\x48\xa1\x4d\xb2\xc7\x9c\x3c\x91\x44\x1b\xef\xcd\xf7\x32\x21\x25\x30\xe9\xa7\x9e\xc0\xe4\x77\x02\x26\x2d\x98\xad\xc8\xe0\x3c\xcb\x74\xa9\xdc\x57\x7d\x0d\x01\x78\x44\x08\x86\x2c\x73\x01\x6a\xd4\x48\x31\xc6\xe0\xb6\x10\xa6\x3e\x5a\x3d\x87\x4c\xab\xfe\x90\x95\x87\xb2\x37\x86\x7e\xfa\x0b\x92\x17\xdc\xe8\xc1\x8d\x9b\xd1\xe3\xe0\x82\xda\x8f\xea\xfb\xc1\x21\x6c\x81\xb3\x74\x8d\x0f\x83\xea\xa0\xf9\xa3\xd4\x8b\x3b\x17\xe5\xf1\x6a\x72\x12\x1c\xcf\xe1\x65\x60\x25\xac\x1b\xb0\x05\xee\x40\x71\x15\x1b\x78\x37\xe8\xf8\x58\xeb\xad\x9b\x68\xf3\xbd\x91\x8b\xc7\x91\x47\xd5\x12\xb3\x88\x72\xe0\x0d\xdd\x8d\xdc\xf0\xd5\x80\xb3\xc6\x70\x57\x3d\x8b\xfe\xfe\x04\x8e\x82\x6a\x1d\xbb\xdf\xf5\xaa\xf6\x07\x27\x3b\xc7\x59\x2b\x60\xe7\x93\xd8\x13\x9e\x36\xe3\x12\xde\x7f\x3e\xc2\x60\x5a\x71\x07\x37\x3c\xde\x58\x16\x46\x3b\xc8\x2a\x20\x70\xa9\x37\x5c\xc4\xef\xf0\xbf\x22\xc5\xb4\x56\xbe\x53\x7c\x21\xfb\x21\x06\xa2\xb1\x4e\x1b\xbe\x82\x41\x69\x23\xee\x69\x5c\x0d\xb1\x27\xf6\xce\x3a\x88\x8f\x73\x6f\xe6\x9d\xc9\x32\x09\xdc\x6b\x77\x37\x32\x6a\xd5\xa5\xfb\x69\xdd\x2e\xf2\x38\xee\x5d\x7d\x9f\xcc\xa6\x56\x3a\xad\x9b\x4e\xeb\x8e\x70\xe0\x76\x84\x34\x22\xfe\x91\xd4\xd8\x26\x1d\x15\x15\x73\xf4\x4d\xf7\x17\x33\x15\x0d\xb6\xbf\xfb\x24\xea\xbc\x6c\x53\x28\xc3\xd6\x16\x6b\x30\x70\xb4\x28\x8c\xdd\x44\x29\x45\x76\x17\x1d\x4a\x71\x40\x67\x04\xa1\xfb\xf6\xb6\x46\x88\xeb\xe8\xd9\xa0\xf2\x74\x55\xef\xa3\x35\x97\x1d\xd1\x1e\xfd\x03\xa9\xcb\xf6\xf7\xb6\xe8\x1e\x75\x1f\xbe\xef\xcd\xbb\xb6\x82\xee\x25\xbe\x57\x6c\xdc\xac\x3a\x15\xcc\x33\x6d\xa2\xd4\xbe\xdb\x4c\x83\xda\x12\x2b\x0b\x5b\x15\xbf\x4d\x41\x58\x94\x2d\x97\xe5\x08\x14\x7e\x36\xba\x17\x34\x92\x43\x67\x7e\x85\xbb\x11\xcf\x01\xa3\xf6\x1c\x08\xae\xd2\x17\xe1\xa6\xc6\xfa\x3c\x43\x3b\x03\x48\x77\x77\x3a\xf0\xff\xbc\x07\xfe\xd3\x99\x79\xf6\xbd\x9c\x99\x6f\xc1\x65\x32\x7a\x5e\xa2\x27\x67\xf4\x82\x2f\xf9\xb9\x99\xd5\x22\xf5\x40\x8c\x5e\xca\x3e\x88\x51\x18\xbd\x01\xb7\x86\x32\xee\x5c\xdd\x6d\xa1\x4d\x4f\xfe\x5e\xcc\xf7\xcc\x03\xa9\xda\x82\x08\x2d\x40\x6a\x11\x66\x63\xb9\x07\x72\x11\x98\xc1\x0f\xb9\xd1\x87\x48\x00\x9a\xc5\x52\xf4\x43\xb5\xb6\xd0\x22\x3b\x48\xd0\x2d\xae\x0a\x46\x0b\x1f\x89\x8a\x66\xc2\x75\xe1\x80\x0a\xf0\x56\xef\x71\x25\x18\xeb\xd7\x16\x5a\x48\x16\x36\x38\x84\x1c\x89\x45\x8b\x3d\xa5\xeb\x42\x4c\xdc\x69\x44\x8f\x45\xc4\x9c\x46\x44\x3b\xd2\x7a\x8c\x16\x6d\x4a\x8e\xa0\x8b\x09\xbd\xa4\xf7\x5f\x64\xd8\x65\x44\x17\x92\x43\x2e\xa3\xe2\x20\xa9\xe1\x96\x93\x6b\x09\x29\xd0\x92\xa8\x24\x78\xc8\xda\x96\x64\xec\xd1\x95\xbc\x38\x63\x8f\x7e\x19\x0b\xd0\x7b\xa1\x31\xb1\x46\x0c\x44\xac\x20\xaf\x8f\x1f\xec\x9e\x14\x6e\x47\xea\xe0\x7a\x93\x1e\x96\x90\x63\x45\x8a\x8d\xe8\x4f\x82\xd1\x16\x5a\x32\xa4\xc7\xcd\x41\xe9\x3b\xa9\xfb\xc1\xbe\x1c\x8e\x51\xaf\x59\xc8\x4a\x23\xdc\xdd\x85\x56\x0e\x6e\xbd\xaa\x84\xed\x57\x2e\xa5\xbe\xb9\x32\x62\x2b\x24\xac\xe0\x9d\xcd\xb8\xe4\xbe\xe4\x3d\x8f\xf9\xc5\x98\x8f\x8c\x17\x7c\x21\xa4\xc0\x48\x96\x62\xb9\x79\x8e\xb2\x44\xe8\xf8\x72\xb2\xdd\xc5\x47\x1b\x33\x96\x1b\x1d\x38\xa5\x79\x3a\xdc\xa2\xc7\x58\xd1\xaa\x4d\xb0\x23\xf0\xda\x52\x18\x9d\x7d\xd4\x65\x7f\x0c\xe5\x63\x92\x28\x37\x5b\xb3\x23\xfb\x45\xeb\xfa\x12\x02\x7f\xd4\x09\x9d\x63\x53\xaa\x73\xfb\x8b\x2f\x70\xb5\x2d\x94\x28\x66\x7c\x0c\x73\x5d\xff\x27\xad\xaa\xf6\x8d\xdc\xaa\x6f\x9e\x28\xb8\xb6\x4c\xd3\x28\x0b\x1f\x84\x2a\x6f\x3f\xfb\x73\xef\xb5\x85\x62\x36\x24\x6c\x01\x05\x93\x48\xe3\xcb\xe8\xfe\xdb\x2d\xa2\x89\x3a\xcf\xbe\x73\x34\x51\x5f\x64\x63\x24\x51\xb4\xc1\xb8\x11\x2a\xd7\x37\x76\x82\x5e\x5d\x6d\x2c\xbf\x30\x90\x83\x72\x82\xcb\xf9\xc1\xad\x63\x7e\xc6\x91\x82\x7b\x5a\x05\x76\x35\x49\xd3\xa4\x76\xe0\x4d\x40\x7d\x3c\x2c\x12\x7c\xa5\xbe\x31\x71\x1b\x9d\x5c\xe7\xf1\xcd\x8d\x4f\xcb\xf3\x67\xdd\x54\x03\x83\x54\xfc\xe8\x7f\x8c\xf8\x3c\x7f\xb8\xbd\x6f\x31\x10\x1a\x69\x7e\xf0\x7f\x8c\x0c\xa8\x7e\x70\xff\xdc\x1c\x85\xe2\x3a\x43\xa0\x3d\x24\x7f\x2a\x48\x0f\x4f\xf3\x18\x50\x8e\xda\x82\xf1\x83\xf0\xe7\xdd\x81\x09\x81\xec\xe7\xe4\x26\xa8\xc3\x61\xf0\x1c\xee\xc5\x20\x58\x46\x87\x2b\xe2\xc0\x71\x98\xa3\x30\x18\xc6\xe0\xc5\x30\x4e\xc4\x80\x5e\x24\xb7\x3e\x90\x3b\x0e\xb3\x38\x30\x8b\x19\x6e\x41\xf0\x8a\x8b\x30\x0e\x80\x55\x14\x91\x10\x38\x45\x11\x09\x81\xd1\x31\x26\x0b\x1c\xe8\xc4\x48\x9f\x06\x32\x51\x02\xa0\x83\x4a\x5c\x0f\x63\x41\xe4\xa4\x73\x5f\xef\xa3\x82\x97\x96\x12\xd1\x59\xe8\xfc\x2b\x6c\x0a\xc9\x9f\x9e\x2a\xf5\xf5\x5b\xa6\x95\x33\x5a\xca\xb8\x74\xdf\x5c\x29\xed\xf8\x49\xe5\x7e\xf7\x3e\xee\xba\x26\xfa\x7b\x6d\xeb\xe1\xb5\xd2\xe8\x76\x2e\xeb\xfb\xe3\x7b\x37\x7b\x50\xa1\xf5\x3a\x87\xf3\x00\x1d\x2c\xad\xe6\x3d\x58\x82\x31\x90\x5f\x96\x95\xb4\xe6\xd9\x1a\xf2\x52\x0a\xb5\x7a\xbf\x52\x7a\xf7\xf3\xbb\x5b\xc8\x4a\x8c\x63\x16\xe9\x41\xa4\xed\x91\x35\x3c\xe2\x32\x01\xd0\xa9\xb3\xfa\x36\x6f\x97\xad\xdf\xdd\x16\xa6\x49\x57\x4c\xc8\xa9\x43\x70\x99\xc6\x32\xd7\x14\xd2\x26\x61\x53\x22\x76\xf2\x9a\x52\x71\xc8\x3b\xe2\xd2\x27\xab\xb0\x0e\xd7\x21\x0a\x24\x42\xf6\x4d\x89\xe6\x92\xe6\x74\x7f\x28\xd4\xd4\x41\x8c\xb4\x81\xd9\xbe\xdf\x76\x1a\xe1\x23\xe2\x5e\xf8\xfe\x47\x14\x19\xd4\xa3\xab\x8e\xb2\x48\x03\x2b\x0d\x2c\xcf\xa7\x69\x60\x51\x64\x40\xac\xe4\x06\xc4\x6a\x1d\xdc\xa3\x69\x0a\x3d\x6b\x14\x7e\x73\x85\x91\x3a\x6e\xb6\x37\xfb\x23\x5e\x6e\x1a\x19\x7c\x91\x20\x3a\x6c\xaf\xb4\x4d\x1a\x07\x47\x51\x8c\x59\x05\x09\xe7\x20\xeb\x1b\x58\xbe\x82\xc1\x8d\x5c\xc2\x10\x4f\x70\xaa\x29\xc9\xea\x77\x96\x64\xf5\xdb\x92\xe0\x54\x1a\x58\x5d\x25\x0d\xac\xfd\xf7\x4f\x75\x60\x11\x2b\xc1\x93\xc7\x8a\x75\xf6\x74\x26\x47\x61\x93\x71\xa2\xfb\x0a\x9d\xbf\x3a\xbf\xd2\x43\x93\x2b\x69\x4f\x85\x86\xea\x58\x82\xb6\x5b\xf1\x63\x2b\xce\x00\xc7\x43\x2f\x16\x6b\xa9\x62\x67\x0a\x16\x37\x5b\xb0\x61\xa6\x31\x7e\xd6\x18\x5c\x71\xdc\xec\xc1\xe2\x67\x10\x36\x94\xe3\xd8\x99\x84\x45\xce\x26\x2c\x62\x46\x61\xb1\xb3\x0a\x8b\x9d\x59\x58\xb4\x5c\xea\xd1\xf9\xc1\x1b\x5b\xd4\x5d\xe2\x02\xc5\xbb\x58\x8e\xd0\x84\x01\xd3\x2f\xe9\xa3\x5d\x90\xd3\x94\xb8\x36\x4a\x0a\xf4\xde\x76\xba\xd0\x52\xaf\xee\x7e\x9d\xf4\x6c\x0f\xf5\x50\xcc\x1e\x57\xc9\xc5\xd4\x96\xd9\x21\x10\x78\x45\x7e\xa6\x49\x70\x55\x04\xe0\x49\x3e\xa6\xa6\xa4\xa5\x70\x67\x49\x4b\xe1\xb6\x3c\xa7\x8f\x89\x0a\x54\x86\x82\x94\x01\x53\x33\x41\x20\xc4\x0f\xa8\xa0\x84\xa4\xe1\xe4\x16\xd3\x7a\x92\x0c\x42\x68\x67\x05\x08\x33\x2c\x05\x78\x8c\x3e\x69\xa2\xfd\x1f\xca\x89\xe4\x03\x41\x94\xe4\x03\x19\x87\xd1\xa6\x24\x1f\x08\xaa\x24\x1f\x48\xe8\x9b\xe4\x03\x41\xb2\x9c\x7c\x20\xc9\x07\x92\x7c\x20\xfb\x25\xf9\x40\x92\x0f\x64\x64\xe6\x9a\x92\x7c\x20\x4f\x4a\xf2\x81\xec\xbf\x9f\x7c\x20\x1d\x6c\x26\x1f\x48\xf0\x83\xe4\x03\x79\xf4\xea\x08\x3e\x90\xe0\x2b\xbe\x8c\xb7\xd3\x5f\x1e\xe7\xc9\x70\x3b\xca\xe5\x3f\xe1\x2c\x79\x48\xcd\x40\x64\xb3\xa5\x50\x0a\x67\xb1\x25\x65\x3d\xa7\x65\xaf\xa5\x4d\xfb\xe8\xc9\x9e\x38\xe6\xf1\x09\x0c\x89\x84\x69\x89\x0b\xc3\x47\xba\xf7\x0b\xc5\x34\x60\x26\x4d\x82\x49\xc0\x67\xa4\xa5\xf5\x2f\x35\x13\x2d\xb1\x37\x88\x19\x68\x27\x33\xd4\xf8\xac\xb3\x84\x3e\xa1\x67\x9b\x25\x27\xa6\xa6\x66\x99\x25\x76\x0f\x29\xbb\x2c\x91\x36\x2d\xab\xec\x64\x3d\x8f\xce\x24\x4b\xe8\x78\x5a\x06\xd9\x64\x70\x9f\x10\x3f\x79\x83\x8b\x7a\x11\x73\xb1\x9e\x37\x1b\x2c\x1a\xc1\xf5\x43\xa8\xfa\xfa\xd7\xab\x52\xca\x79\xad\x93\xb1\x60\xee\x59\xf1\xd4\x18\xcd\x56\xc2\x5d\xb4\xe6\x71\xda\x46\x87\x2e\x85\x40\xae\x8d\xd0\xa3\x0a\x07\xfe\x33\xbd\xd9\x70\x15\x18\x18\xc7\x60\x2c\x70\x6b\x05\x92\x29\xd2\x61\xb9\x29\xb2\xe6\x21\xef\xaf\x88\xa1\x8a\xbb\xc3\x82\xee\x9f\x8b\xba\xc7\x22\xce\x0d\x48\x74\x01\x46\x79\x40\x68\x29\xce\x23\x2b\xa1\xa7\x39\xa7\x4e\x61\x4d\xa1\x3a\xde\x28\x4e\x37\xb2\xab\x88\x76\xbb\x45\x9c\x86\xc4\xdc\x70\x11\xd9\x87\x11\xb7\x5c\x44\xd5\x44\xef\x43\xda\x5d\x17\x11\x3d\x19\x77\xdf\x45\x5c\x8f\x46\xde\x79\x11\xd9\xa9\xe4\x7b\x2f\x22\xeb\xa1\xdf\x7d\xf1\x4c\xba\x43\xba\x01\x23\x42\x75\xe8\xb7\x60\xa4\xa9\xe2\xb5\x4d\x15\x24\x5f\x08\xfa\x44\x64\xe8\x7e\x0c\xf2\x32\x0d\x01\x49\xc3\x98\x6b\x74\x58\xba\x83\x63\xc8\x01\x46\x1d\x5c\x14\xa5\x27\x2b\x3c\x55\xd9\xa9\x8a\x4e\x52\xc4\xc2\xc0\x52\xdc\x8e\x0e\xc6\x83\xf7\xa2\x3f\xe6\x21\xf5\xce\xa0\x57\x71\x43\xb5\x76\x67\x8c\xb2\xd1\xb2\x73\x8c\x34\x17\x9c\x8f\x42\x53\x8a\x25\x64\x77\x59\x28\x33\x3f\x5e\x57\x0a\x6d\xdd\xdc\x71\xff\x25\x3e\x54\xa2\xac\xbe\x0d\x13\x97\xb0\x3e\xee\xf2\x33\x84\xeb\x61\xbf\x9c\x66\x30\x1b\x71\x2e\x5c\x3b\x57\xfc\x02\xc8\x28\x30\xba\x50\xd7\xda\x22\x69\xb3\x38\x01\x55\xfc\xff\x07\xf0\xdc\xe3\x2e\x7b\x5a\x9e\x2d\xa6\x88\x8a\xe0\xd8\xe0\x18\x9f\x67\xaa\x2d\x2e\xe2\x06\x81\x91\x1e\x7f\x50\x37\x89\x3c\xc2\x26\x8f\xb7\x29\xa6\xbd\x7b\x32\x7c\x01\xda\xe3\xc2\xd5\xdd\x67\xf4\x62\xa7\x8e\xef\x20\xc5\x66\x1e\x7e\x47\x54\x96\xdb\xd9\x75\xb9\x00\xa3\xc0\x81\x9d\x09\xe5\x66\xda\xcc\x1a\x12\x67\xcc\x19\x74\xf7\xda\x6c\x0d\x93\x5e\x0e\x48\x8d\xce\xad\xfa\x68\x0a\x8b\xec\xb2\x62\xae\xb3\xeb\x17\x6c\x93\x93\xf6\x1e\x94\xd3\x50\x2d\xc2\xcb\x85\x81\xb9\xc3\xdc\xc4\x96\xe0\x1b\xea\xa3\x04\xdf\xfa\x2a\x48\xf0\xad\x2d\x09\xbe\x25\xf8\x86\x29\x2f\x71\x02\x4c\xf0\xad\xaf\x9c\xa0\x4d\x4e\xda\x7b\x50\x4e\x43\xb5\xc6\x0d\xf2\x62\x4c\x8a\x2d\x28\xb0\xf6\xca\xe8\xc5\x68\x9e\x3f\x1c\xc2\xa3\xc6\x8b\x12\x90\xdd\xe9\x1c\xe8\xa0\x44\x41\x73\x21\x4b\x03\x5f\xd7\x06\xec\x5a\x4b\x44\x53\x69\xe7\x31\x29\x43\x0e\x8d\x28\x69\x9d\x88\xb7\x5a\xc4\x4e\x21\x23\x48\x92\x86\xc4\x20\xc7\x67\xd9\xb6\x25\xa3\xc5\x67\xd9\xdd\x27\x20\x44\x1a\x3a\x8c\x3c\x37\x86\x45\x85\x78\x44\x48\x14\x23\x7e\x2e\x25\xcc\xa3\x31\x73\x68\xc4\xfc\x39\xc2\xdc\x49\x41\x7d\x93\x85\xca\xa3\xa6\x63\x82\x82\x09\x25\x9c\xe0\xf2\x12\x24\xbf\x9b\x43\xa6\x15\x26\xbb\xf9\x74\x06\xbb\x00\x23\x74\x7e\x02\x8c\xd8\x32\xcb\xc0\xda\x93\x98\xc5\x08\x28\xfc\x44\xe6\xb1\x57\x6d\x29\x8e\x39\x9c\x9d\xd8\x80\x2e\xdd\xd1\x07\x10\x92\xe5\xd1\x0e\x7f\x56\x72\x1c\xe3\x04\x00\x31\x78\xa8\x09\xb6\xbc\x42\x6a\x3b\x35\xef\x08\x4d\xdd\xab\xc1\xfc\xfe\x6a\xf4\x08\x9c\x8a\xec\x69\x34\x70\x92\x33\x04\x85\xd1\x4e\x67\x1a\x15\xa6\x43\x20\x8c\x0f\xb5\x7b\xa4\x45\xa1\xd1\x3d\x6e\x20\x8f\x01\x9e\x8b\xb4\x6a\x4e\xab\xe6\x83\x92\x56\xcd\xfb\x25\xad\x9a\xd3\xaa\xb9\x83\x6e\xc2\xc2\x69\xd5\x9c\x56\xcd\x07\x25\xad\x9a\x3b\xd8\x4d\x96\x22\xad\x9a\x47\x5d\x35\xb7\xc7\xce\x82\x79\xb0\xb1\x5a\x2d\xc5\x46\x84\x96\xcf\x6c\x40\x96\x35\x92\x36\x11\x0f\x34\x81\x7d\x79\x9c\x23\x5f\xb4\x90\x95\x46\xb8\xbb\x0b\xad\x1c\xdc\x06\x4c\x03\xbe\xb7\xb9\x94\xfa\xe6\xca\x88\xad\x90\xb0\x82\x77\x36\xe3\x92\x63\x12\x76\xd2\xce\xa8\x64\xbc\xe0\x0b\x21\x05\x4e\xd2\xc4\x84\x48\xf9\x8b\x5b\x0a\x32\x96\x1b\x4c\x0c\x22\x3b\x29\xae\x49\x51\x96\xf7\x0a\x85\xe8\x1a\x8a\x1e\x15\x46\x67\x1f\x75\xa9\x10\x33\x23\xc9\x3f\xc3\xf3\xcf\x4a\xde\x7d\xd1\xda\xfd\x2c\x24\xd8\x3b\xeb\x00\x91\xf1\x81\xc2\xb9\x29\xd5\xb9\xfd\xc5\xe8\x12\xd1\xed\x7b\x33\xca\x4f\x7f\x19\x15\x06\xd5\x5c\x7c\xd2\xaa\x6a\xe9\x04\xed\xfb\x66\x01\x71\x00\x7c\xba\xe6\x59\xf8\x20\x54\x79\xfb\xb9\x3e\x6d\x37\x7e\x3a\x61\xd8\x02\x29\x69\x12\x3e\xf3\x96\x0e\x9d\x50\x8b\x24\x5c\xbf\x3e\x05\xe1\x12\xd5\xd3\x64\xc2\x04\x13\x73\x23\x54\xae\x6f\xec\x44\x7d\xbd\xda\x58\x7e\x61\x20\x07\x55\x2d\xed\xe6\x05\x36\xba\x9b\x28\xc6\xa7\xd5\x4c\x96\x39\x6e\x37\x40\x27\xaa\x61\x74\xbc\xe3\xb8\x71\x65\x91\xbc\xd1\x47\x9f\xcc\x93\x37\xfa\x09\xb3\xc9\x1b\xed\x2f\xc9\x1b\x8d\xf9\x20\x79\xa3\x0f\xbf\x49\xde\x68\x5f\xed\xc9\x1b\x3d\x80\x91\xe4\x8d\xee\x60\x37\x59\x8a\xe4\x8d\x1e\xd5\x1b\x6d\x5d\x2e\x02\xbe\x43\xac\x57\xa1\x26\xf5\x59\x85\x32\xbd\x61\xc9\x39\x30\x1b\xa1\x6a\xdf\xe6\x47\xb0\x96\xaf\x20\x9c\x81\x10\xa9\x6a\x1d\xa4\xc7\x4b\x61\xe3\xfc\xf7\x60\xe2\x05\xb0\xd5\xb2\xdc\xc0\x25\x6c\x45\x70\xb3\x60\xf4\xe8\xb8\xbc\xae\x15\x9b\xf2\x91\x34\xc2\x27\x08\x04\xc3\xc7\x6b\x3d\xb4\x2b\xf8\xea\xf3\x67\x51\x6b\x3a\xbc\x76\x97\x3e\x77\x7f\x6f\xaa\x4a\x27\xe9\xee\x86\xb2\xd1\x05\x5f\x21\xf7\x29\x8e\xaf\x4f\x0f\x1e\x66\x3c\x61\x6c\xee\x2f\x5b\x2e\x26\x91\xf3\x3d\xdd\x77\xb7\x05\xca\xcf\x37\xc9\xe8\xda\x69\xd1\x09\x0e\xae\x1b\x6d\xae\x85\x5a\x5d\x8a\x80\x78\x50\x82\x39\x85\xbc\xf4\xc1\x54\x69\x98\xf1\x8f\x4a\x8f\x86\x35\x24\x18\x6f\x1d\x2d\x44\x1b\xed\xa9\x23\x78\x61\x62\x3c\xf2\xa8\x95\x3f\x5a\x61\x91\x3e\x31\x8a\xa8\xb0\xeb\x08\x5a\xf0\x38\xcd\x17\x46\xe8\x03\xba\x1f\x8c\xe6\x05\x8b\xf0\x4e\x11\x3d\x60\xe4\x1a\xa8\x27\xb7\xd1\xbe\x2f\x8a\xe7\x8b\xe8\xf7\xa2\x78\xbd\xb0\x3e\x2f\x5a\x7c\x3f\x72\x15\x8b\x5e\xc3\xd2\x57\xb0\xe4\xf5\xeb\xe0\xd5\x2b\xde\xcb\x35\xc9\x24\x8e\x58\x10\xe3\xa7\x66\xac\xdf\xe4\xe8\xb6\xee\x15\x6a\xda\x31\x54\x02\xf5\x1a\x22\xe5\x57\x82\x24\x09\x92\x24\x48\x32\xb0\x86\x04\x49\xf6\x69\xa6\x89\xa2\xbf\x24\x48\xe2\x2f\x09\x92\xdc\x97\xef\x13\x92\x04\x5f\x41\x25\xb0\xc2\x28\x54\x08\xaf\x60\x95\x12\x89\x53\x90\xf3\x23\x41\x09\x70\xf6\x19\xd5\x35\x94\x30\x26\xec\x2e\x1a\x6e\x00\x20\xd0\x10\xb6\x23\x30\x96\x01\x2d\x5e\x02\xfa\x41\xf6\x2c\x0d\xf5\x4c\x76\xc3\x29\x01\xe9\x4c\x16\xd7\x81\x42\x37\x58\x64\x43\xd9\x30\x46\x22\x1a\x0c\x9a\x41\x0b\x07\x33\xb7\xa0\xe6\x15\xda\x9c\x42\x9a\x4f\x06\xcd\x25\x38\xc4\x82\xe4\x06\xa3\x46\xc1\x29\x09\xa5\x12\xc4\x60\xa0\x71\xcd\x1e\x3a\xf4\x67\xdc\x6a\x29\x81\x3e\xe3\xd6\x8c\xc2\x82\x47\xb1\xf4\xdf\xf9\xf8\x7c\xbe\x01\x85\x0f\xc7\x19\x53\xb5\x82\xac\x29\x9d\xc3\x1c\x24\x64\xae\xff\x06\x46\xda\xa9\x47\x44\xc7\x05\xb9\x2a\x8c\xd0\x46\xf4\xc7\xaf\x60\x44\x14\x16\x4f\x5b\xcb\x85\xe4\xd6\xfa\x0e\x37\x04\x9b\x84\x4b\x81\x93\x70\xf7\xc1\x5b\x09\x77\xef\x33\x95\x70\x77\xc2\xdd\xbe\xf7\x12\xee\x4e\xb8\xfb\xb0\x24\xdc\x3d\xa8\xe6\x84\xbb\x7b\xde\x4e\xb8\x3b\x54\xed\x40\xdc\x1d\x4c\xbe\x82\xd1\xba\x70\xc2\x15\x7a\xc2\x12\x6c\x70\x39\x46\xf6\x98\xc4\x2a\xc7\xe4\x30\xf8\x4a\x35\x89\xe4\xa5\xf4\x1f\x7d\x0e\xf2\x83\x4c\xc0\x82\xe9\xf1\x65\x38\x13\x04\x36\x49\x02\xce\x2c\xe0\xb2\x4f\x4c\x50\x27\x22\xd7\x04\x2e\xde\x19\x95\x5f\x62\xdc\x06\xe0\xb3\x49\x60\xe7\x16\x54\x06\x09\xb4\xe9\xc6\x64\x8d\x40\x13\xab\x5f\x1c\x8b\x18\x26\x3b\xc4\x98\x16\xca\x96\x45\x21\x61\x03\xca\x71\x59\x6b\xb9\xb7\x1f\x10\x6b\x2a\x7c\x8a\x12\xec\xb4\x8c\x59\x1e\xd8\x3b\x9b\x39\x39\x94\x77\xfc\x5a\x10\xb7\x0e\x24\x40\x09\xe4\xfa\x0f\xaf\xe1\xa8\x75\x1f\x62\xcd\x87\x59\xef\x91\xf6\x77\xfd\x1d\x89\xcf\x4d\x82\xed\x2c\x7a\x3e\x12\xb4\x90\xe3\x72\x90\xe0\xfb\x90\x92\x77\xe4\x39\x41\x01\x98\xad\xc8\xe0\x3c\xcb\x74\xa9\xdc\x20\x64\xe0\xb4\x04\xc3\xbd\x7d\x1d\x18\xb7\x38\x35\x80\xe5\x12\xb2\xc0\x7a\x02\x29\xc1\x6b\x18\xe7\x74\x62\xc5\x36\xf7\x38\x9d\x49\xc4\x1e\xe4\x88\x3a\xee\x3a\xbe\x91\x46\xd8\x2f\x54\x53\x06\x1f\xc7\xf1\x10\xe8\x7d\x64\xa0\x90\x22\xe3\x4f\x84\xe6\x5b\x10\xf5\x0b\xe6\x7e\x78\x7c\x85\x4d\x21\xb9\x7b\x22\x14\x9f\xc2\x6e\xc0\xf1\x9c\x3b\xde\x25\xc8\x90\xa2\x73\xa5\xb4\xf3\x0f\xa5\xe7\xde\xc7\xf0\x3e\xb6\x3d\x96\x38\xd4\xce\x4c\x96\xd6\x81\xe9\xbf\xa2\x21\xc8\x37\xdc\x3a\x30\x8a\xcb\xf7\x57\xb1\x46\x07\x2d\x9a\xfe\xc9\xae\x65\xe2\xab\xe1\xcb\xa5\xc8\xfc\xc7\x9e\x83\xf5\xad\x81\x4b\xb7\xbe\x58\x43\x76\xfd\x49\xe7\xe0\xbb\x68\x62\x9c\xad\x23\xa9\x79\xfe\x57\x2e\xb9\xca\x06\x75\xc5\x3e\x99\x79\xed\x0f\xf8\xc2\xd5\xaa\x5f\x2b\xa7\xef\x17\xef\x0d\x28\xa3\xcc\x45\xa3\x5d\xd6\xa2\x02\x3d\xdd\x14\x7c\x5a\x03\xac\xad\x0f\xbb\xe6\xc6\xae\x13\x73\xca\xd3\xeb\x2b\x1b\x3c\xad\x54\x66\xdd\x5a\xa1\xd5\xf9\x72\x29\x54\xe3\xcb\x58\x8a\xd5\x10\x57\x46\x26\x05\xa8\xc0\x55\x33\x58\x90\x4b\xcb\x75\x41\xc9\x74\x41\x5b\xa5\x0d\x03\x96\xbe\x95\x74\x60\x4c\xc4\x4c\xfb\xd6\x69\xc3\x57\xa4\x09\x9a\xd7\x8e\xfa\x8f\x3a\xef\xee\x10\x8f\x7d\x40\xf1\xdf\xad\x7d\x15\x22\x68\x8c\x63\x14\x2e\x28\x84\xd7\x7d\x15\x34\x36\xd7\xa2\x7f\x1b\x3d\xf8\xb1\xcf\xd8\x05\x3e\xf6\x0d\xfa\x59\xcd\x55\xe7\x83\x9e\x15\xad\x57\xf9\xbc\xce\xe8\x90\x80\xfd\x4e\xe8\xe7\x8f\x1d\x09\x39\x9d\x4f\x0b\x05\x7a\x42\x6f\x42\x82\xdf\x70\x97\xd5\x69\x16\x1a\xcb\x3c\xed\xac\x7d\x92\xcb\xbe\x7a\xd5\x35\x46\x86\x12\x9a\xb3\x33\xe0\xc3\xc1\xcc\xd6\xd7\xd0\xff\xfd\x6c\x27\xa4\x29\xe7\xf3\x5a\x7b\x3e\xf0\x05\xf4\xbb\x0d\x4f\x6b\xa4\x34\xb3\x95\x37\x56\xcb\xcb\x42\x9b\xd4\x26\x8f\xfd\x34\xa2\xd6\xd0\xdc\xfb\xb5\x63\xc6\xef\x25\xb7\x97\x2c\xaa\x7b\xb9\xd4\xfb\x65\x59\xe4\xdc\xc1\xdc\x19\xee\x60\xf5\xe4\x33\x9f\x01\x30\x5a\x4a\xa1\x56\xdf\x6a\x02\x31\x46\xaa\xe0\xc6\x09\x5f\xba\x9d\x31\xd6\x63\x5e\xc5\xe9\x43\x55\x31\xdd\xb6\x05\x63\x3b\xda\xd2\x43\xaa\xcb\x10\xcc\x5a\x1a\x6f\x02\xd5\x59\xc7\x5d\xf9\x48\xa8\x7d\xa2\xd6\x0b\x0b\x66\x0b\xf9\x2f\xa0\xee\x9d\x60\x1e\x47\xce\x13\x7f\x57\xbf\x6c\x8b\x35\xb7\x78\xed\x34\xc0\x2d\x5a\x32\x1d\x2d\x3e\xf8\xa9\x95\x34\xdb\xfe\xc0\x65\xb1\xe6\x3f\x3c\xfc\x56\x37\xbf\x01\x3a\x8f\x1e\x37\xae\x27\xc8\xf7\x82\x0f\x5a\x88\xdb\xfc\xf2\x7f\x01\x00\x00\xff\xff\xd5\x11\x9b\x21\x3f\x62\x01\x00") +var _kubedbCom_redisesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xfd\x73\xdc\xb8\x95\x28\xfa\x7b\xfe\x0a\x94\x93\x2a\xd9\xaf\xd4\xad\x71\x92\xcd\xcd\xf5\xdd\xb7\xb7\x14\x49\x33\xab\x97\xb1\xad\x6b\x79\x66\xee\xd6\xd6\x7d\x53\x68\x12\xdd\x8d\x15\x09\x30\x04\x28\xb9\xb3\x6f\xff\xf7\x57\x38\x00\xf8\xd1\x4d\x12\x07\x54\xb7\xed\x99\x10\xf9\x21\xe3\x16\x79\x88\x8f\x83\xf3\xfd\x41\x0b\xfe\x23\x2b\x15\x97\xe2\x0d\xa1\x05\x67\x9f\x34\x13\xe6\x5f\x6a\xf9\xf0\x67\xb5\xe4\xf2\xe2\xf1\xf5\x8a\x69\xfa\xfa\x37\x0f\x5c\xa4\x6f\xc8\x55\xa5\xb4\xcc\x3f\x30\x25\xab\x32\x61\xd7\x6c\xcd\x05\xd7\x5c\x8a\xdf\xe4\x4c\xd3\x94\x6a\xfa\xe6\x37\x84\x24\x25\xa3\xe6\xc7\x8f\x3c\x67\x4a\xd3\xbc\x78\x43\x44\x95\x65\xbf\x21\x24\xa3\x2b\x96\x29\xf3\x0c\x21\xb4\x28\xde\x90\x87\x6a\xc5\xd2\xd5\x6f\x08\x11\x34\x67\x6f\x48\xc9\x52\xae\x98\x5a\xda\x9f\x97\x89\xcc\x7f\xa3\x0a\x96\x98\x17\x68\x9a\xc2\x97\x68\x76\x57\x72\xa1\x59\x79\x25\xb3\x2a\x17\x00\x6c\x41\xfe\x9f\xfb\xf7\xef\xee\xa8\xde\xbe\x21\x4b\xf3\xc2\xf2\xd1\xae\x09\x3e\x64\x41\xff\xd8\xfa\x45\xef\x0a\xf6\x86\x28\x5d\x72\xb1\x39\x78\x5d\x53\x5d\xa9\x65\xb1\xa5\x8a\xb5\x5e\xbf\x87\x9f\x83\x6f\xfb\x6d\x58\x1e\xec\x41\x0b\xd6\xe5\x86\xb5\x00\xa5\x54\x9b\x7f\x6e\x4a\x59\xd5\x1b\x02\x2b\xb7\x8f\xbb\xdd\x4a\xa8\x66\x1b\x59\x72\xff\xef\x85\x79\x8f\x2a\x2d\x4b\xe6\xfe\x5d\x6f\xa5\xf9\x07\x2d\x0a\x95\xc8\xd4\xff\x8d\xc2\xee\x13\x62\x0f\xf1\x83\xd9\x65\xf8\x77\xc6\x95\xfe\x6b\xf3\xdb\xf7\x5c\x69\xf8\xbd\xc8\xaa\x92\x66\xf5\x79\xc0\x6f\x6a\x2b\x4b\xfd\xae\x99\xd1\x82\x94\xa9\xfd\x03\x17\x9b\x2a\xa3\xa5\x7b\xfc\x37\x84\x14\x25\x53\xac\x7c\x64\x3f\x88\x07\x21\x9f\xc4\xb7\x9c\x65\xa9\x7a\x43\xd6\x34\x83\x3d\x55\x89\x34\x0b\x07\x58\x05\x4d\x98\x01\xa3\xaa\x55\xe9\xb0\xca\xc1\xb7\x07\xf1\x86\xfc\xe7\x7f\xfd\x86\x90\x47\x9a\xf1\x14\x36\xd4\xfe\x51\x16\x4c\x5c\xde\xdd\xfe\xf8\x87\xfb\x64\xcb\x72\x6a\x7f\x34\x1f\x96\x05\x2b\x75\xbd\x4b\x16\xcf\x6a\x0c\xaf\x7f\x23\x24\x65\x2a\x29\x79\x01\x10\xc9\x99\x01\x65\x9f\x21\xa9\xc1\x69\xa6\x88\xde\x32\xe2\xb0\x88\xa5\x44\xc1\x67\x88\x5c\x13\xbd\xe5\x8a\x94\x0c\x96\x28\x34\x4c\xa9\x05\x96\x98\x47\xa8\x20\x72\xf5\x1f\x2c\xd1\x4b\x72\x6f\xb6\xa1\x54\x66\xf3\xaa\x2c\x25\x89\x14\x8f\xac\xd4\xa4\x64\x89\xdc\x08\xfe\xf7\x1a\xb2\x22\x5a\xc2\x27\x33\xaa\x99\x3b\x04\x3f\x00\xdb\x05\xcd\xcc\x26\x54\xec\x9c\x50\x91\x92\x9c\xee\x48\xc9\xcc\x37\x48\x25\x5a\xd0\xe0\x11\xb5\x24\x6f\x65\xc9\x08\x17\x6b\xf9\x86\x6c\xb5\x2e\xd4\x9b\x8b\x8b\x0d\xd7\xfe\x4e\x27\x32\xcf\x2b\xc1\xf5\xee\x22\x91\x42\x97\x7c\x55\x69\x59\xaa\x8b\x94\x3d\xb2\xec\x42\xf1\xcd\x82\x96\xc9\x96\x6b\x96\xe8\xaa\x64\x17\xb4\xe0\x0b\x98\xb8\xd0\x40\x18\xf2\xf4\xb7\xf5\x51\x9d\xb5\x66\xba\x77\x2f\xec\x00\x8c\x1b\xdc\x77\x83\x7b\x84\x2b\x42\xdd\x6b\x76\xfe\xcd\xf6\x9a\x9f\xcc\xae\x7c\xb8\xb9\xff\x48\xfc\x47\xe1\x08\xba\x7b\x0e\xbb\xdd\xbc\xa6\x9a\x8d\x37\x1b\xc5\xc5\x9a\x95\xf6\xe0\xd6\xa5\xcc\x01\x22\x13\x69\x21\xb9\xd0\xf0\x8f\x24\xe3\x4c\x74\x37\x5d\x55\xab\x9c\x6b\x73\xd2\x7f\xab\x98\xd2\xe6\x7c\x96\xe4\x8a\x0a\x21\x35\x59\x31\x52\x15\xe6\xda\xa6\x4b\x72\x2b\xc8\x15\xcd\x59\x76\x45\x15\x3b\xf9\xb6\x9b\x1d\x56\x0b\xb3\xa5\xe1\x8d\x6f\x13\x64\x3f\xfa\xae\x47\x4d\x96\x3a\xbf\x10\x92\xd3\x4f\xdf\x33\xb1\x31\x54\xed\x4f\x7f\xd8\xfb\x5b\x41\xb5\x41\xc9\x37\xe4\xff\xfd\x77\xba\xf8\xfb\xff\x79\xf9\xef\x0b\xba\xf8\xfb\x37\x8b\xff\xfe\x7f\xfe\xaf\x7f\x77\xff\xf1\xea\x7f\xfe\x6e\xef\x9d\xde\x49\xfa\x9f\xed\x01\xd6\x3f\x7b\x9a\x1f\x9a\x77\x92\x55\x4a\xb3\x72\x7f\xea\x1d\x1c\x03\xc2\xe6\x9f\x34\x17\x70\xcd\x37\x55\x09\xf7\x96\xac\x65\x49\xca\x4a\x08\x83\x66\x40\xbb\x88\x72\x68\xc3\xc5\x1e\xcc\xfa\x63\x24\x97\x29\x5b\x92\x0f\xec\x6f\x15\x2f\x59\x4a\xf8\x9a\xbc\x95\x29\x23\xf0\xb2\x36\xd7\xf8\xc5\x95\x7d\xf2\xc5\xfe\xae\x0d\xac\xc2\xee\x76\xdf\x42\x0e\x16\xf3\xae\xca\x57\xac\x34\x34\xc6\xbe\x40\x84\x4c\xcd\x75\xbf\xd5\x24\xaf\x14\x60\xe6\xbf\xfc\xdf\xe4\x0f\x4b\x72\xbb\x26\x06\x53\xcd\x46\xf2\x35\x67\xe9\x79\x0f\x64\x03\x7b\x4d\xab\x0c\x90\x9b\xfc\x61\xd9\xf3\xc8\x5a\x96\x39\xd5\x6f\x0c\x09\xfa\xc3\xef\x7b\xfe\x6e\x4f\xcf\x10\xa8\x0d\x2b\x0f\xfe\x5e\xb2\x22\xe3\x09\xed\x59\xee\xe0\xb2\xdc\x2b\x2f\xd5\x2b\x52\x98\xbd\x6e\x56\x39\x65\x4d\xaf\x8f\xbd\xa6\x5e\x6c\x35\xc3\xe2\xd5\x3d\xd0\xa7\x51\x74\xbc\x6a\x3d\x08\x94\x4f\x10\x59\x58\xb9\x86\xac\x0d\x9f\x34\xf3\x2e\x4a\xf9\xc8\x53\x46\x12\x90\xb6\xba\x48\x7b\x30\xe3\x35\xcf\x18\x60\xb2\xb9\xed\x2b\xaa\x18\x79\xc9\x97\xcc\xe2\xf3\xd2\xbc\xfa\x0a\xb6\xae\xd9\x36\x47\x09\xcd\x6b\x4f\x3c\xcb\xc8\x8a\x1d\xc0\xac\x14\x4b\x09\x55\xfb\xd7\xc5\xbc\x22\xf5\x96\x95\x4f\x5c\x31\xbf\xd3\x7d\x0f\x19\xb8\x07\x40\x0d\xd9\x54\x2c\xdd\x3f\x93\xb1\x6b\x41\x9f\xd4\x4d\x46\x95\xe6\xc9\x5f\x32\x99\x3c\xdc\x1b\x71\x27\x88\x4d\x67\x97\x3f\xdd\x1f\xbc\xd5\x62\x0e\x66\xcf\x2f\x7f\xba\x27\xd7\x5c\x3d\xd4\x4c\xa5\x17\x97\xf4\x96\x6a\x38\x24\xad\x69\xb2\x65\x70\x36\x14\x04\xad\x8c\xe9\xb3\x33\x45\xb6\x52\x69\x92\xd3\x64\xcb\x05\x03\xbe\xac\xb7\x4c\x10\xf6\xa9\x90\x8a\xa5\xfd\x20\x2d\x9b\x2f\x64\xda\xcb\x2d\x0c\xec\x52\x30\xcd\x80\x61\xa4\x32\x51\x86\x57\x24\xac\xd0\xea\xc2\x08\x7b\x74\xc3\x2e\x1e\x8d\xe0\xcb\xd4\x6f\xe9\x93\x62\x76\x99\x2b\xb3\x4c\x90\x05\xcf\x7a\x3e\x3a\xb6\xc1\x66\xac\xd5\x47\x83\xd6\xbd\x7f\xdb\xdf\xda\x6f\x79\xc6\xd4\x4e\x69\x96\xc3\x5d\xb0\x02\x11\x23\x76\x4a\x76\xbf\x76\xb2\x22\x4f\xd4\x70\x56\x39\x00\x92\x90\x5c\x56\x42\x2f\xc9\x47\x5e\xbc\x21\x37\x42\x55\xa5\x7b\xd7\xc0\x5a\xef\x7d\xc2\x10\xd6\xaa\x28\x64\xa9\x59\x4a\x56\xbb\x41\x98\xe6\x5d\x38\x0f\xb3\x5a\x0a\xa2\x83\x05\xb3\x24\x37\x9f\x68\x5e\x64\x4c\xbd\x21\x2f\xd8\x27\xfd\xc7\x17\xe7\xe4\xc5\xa7\xb5\x32\xff\x27\xf4\x5a\xbd\xe8\xa3\x12\x76\xdc\xe6\x86\x1c\x71\x9d\x39\x21\xa2\xb4\x38\xb0\x62\x0e\x90\xa1\xfe\x95\xa8\xaf\x56\xfb\x48\x07\x61\x1e\xeb\xa8\x07\x3f\xf0\xf1\xfd\xf5\xfb\x37\x64\x2b\x9f\x48\x2a\xc9\x13\x33\xd2\xb8\x11\x22\x08\x2b\x4b\x09\xac\x6d\x7f\x9b\x41\x28\x4a\x64\x5e\x94\x32\xe7\xaa\xcb\x9f\x0f\xf7\xd8\xa1\x7b\x1f\xa6\x91\x61\x3e\xdf\x8c\x82\x96\x9a\xeb\x3d\x71\xbc\x3d\xba\x18\xf7\xd1\xdc\x16\xff\x8a\x9f\xfc\x00\xbe\x39\xbc\x1a\x3e\xce\x35\x91\x39\xd7\xda\x12\xc1\x86\x82\x71\x55\xbf\x4c\x56\x3b\x0f\xdd\x48\x45\x2d\xdc\x19\x84\xfa\xad\x2c\xfd\x2b\x46\x96\xbb\x50\x29\x7d\x7d\x0e\xd3\xb2\x88\xb1\xb3\x37\xbe\x5e\x03\x55\xe4\xc5\xeb\x17\x4b\x72\xcf\x73\x9e\xd1\x32\xdb\xf5\x33\x32\xbf\xdf\x0e\x74\xf3\xbe\xa1\xf5\xfe\x43\x66\xea\x2f\xbe\x79\x41\x5e\xca\x12\xbe\x98\x50\x41\x32\x46\x1f\x87\xb1\x03\xe6\x62\x29\xc2\x8e\xb0\xbc\xd0\xbb\x57\xcb\xa1\xb3\x0c\xb1\x4a\x12\x14\x01\x08\x88\x01\x34\x7d\x2f\xb2\x1d\xee\xbc\xef\xdd\x9e\xbd\xd0\x65\xc5\x5e\x98\x73\x59\x4b\xc3\x2b\x0d\x75\x05\x01\xcb\xa8\x03\x0e\x62\xbd\x90\xc1\xd5\x72\x41\x7e\x84\xfd\x7b\x6b\x0e\x17\x8e\xd9\x02\x5e\x8e\x21\xc3\x0b\xd0\x54\x47\xe8\xc2\x67\xa2\xdc\xcd\xfe\xae\xa4\xcc\x18\x3d\x64\xfe\x66\x58\xa8\xb7\xd7\xb8\xfd\xfd\x41\xf0\xbf\x55\x8c\xdc\x5e\x7b\xda\x5d\x18\x25\x57\x69\x43\x21\xd2\x36\x47\x34\x7b\x77\xf9\xd3\xfd\xe0\x1e\xbc\xbc\xcc\xe9\xdf\xa5\x20\x37\x7f\xb9\x77\x53\x78\xf5\xd9\x58\x1a\x09\x13\x9a\xd2\x09\xe8\x7d\xbb\xb2\xa8\xf7\x6c\x50\xfe\xeb\x91\xf1\xcc\xa0\x7f\xaf\x4a\x66\x04\x87\xa0\x14\x72\xe9\x9f\xdc\x97\x3c\xcc\xef\xe4\x9a\x6a\x6a\x05\x10\x4b\x75\x24\xd0\xb5\xde\x95\x02\x4f\x33\xd8\xbf\x32\xca\xb2\x7d\xbc\x25\x45\x4c\x60\xf8\x09\x50\xf0\x8d\x51\x5b\x70\x38\xf3\xaf\x66\x0a\x57\xf6\x2d\xd0\x7f\xde\x90\x77\x52\xb0\x73\xb8\x88\xc4\xdc\x44\xf7\x9f\x3f\x95\x5c\xb3\x41\x72\x12\x64\x0d\x06\xff\xde\xf5\xe8\xa2\xbd\xb3\x32\x8c\xc1\x3c\xec\xf1\xd8\x88\xbf\x16\x83\x1d\x93\x58\x65\x72\x45\x1c\x86\x3d\x67\x46\x3f\x7c\xb8\x45\x4f\xe8\x87\x0f\xb7\xa7\x9b\x4c\x84\xa0\xb6\x2f\xa7\xd5\xbc\x91\xbc\x75\x7a\x22\x6d\x49\x00\xc3\xcc\xc2\xbc\xdb\x96\xbe\xc6\xa5\xac\xe5\x9e\x7c\x35\x08\xd7\xc9\x5d\xd1\xf2\xd5\xd4\x9d\xdb\xb7\x42\x0d\xee\xdb\xd9\xcd\xa7\x82\x25\xba\xb6\xa4\x91\xfb\x2d\x35\x44\x84\xe4\x55\xa6\x79\x91\xb9\x83\x34\x27\xab\x0c\xe5\x1c\x5c\xa1\x3b\x6a\x42\x93\x04\x6e\x2c\xb9\x66\x29\x4f\xa8\x36\xb0\x8c\x88\xd5\x86\x04\xaa\xee\xc1\x0b\x6f\xa9\xa0\x9b\x7e\xfa\x65\x07\xd0\x22\x92\xdb\xc7\x5a\x18\xf7\x52\x0a\xd8\xcf\xfa\x4f\xf4\x91\xf2\x8c\xae\x78\xc6\xf5\xce\xf0\xd0\x57\xc3\x8c\xad\xad\x3d\x2b\x58\xfa\xe4\xcb\x1c\xc5\xf6\xaf\x5b\xdf\x05\xe6\x4b\x5e\x9a\xf7\x2f\x9e\x0c\x41\x79\xb5\x6c\x38\xfe\x96\x95\x03\xea\xa5\x1f\x56\x5c\xe8\x88\x09\x8a\x69\xc0\xd4\x3d\x69\x60\x1c\x9d\x86\x59\xee\x38\x6b\xf1\x44\x6c\xf0\x8f\x3f\x7c\xb8\x9d\xc4\x76\xcc\x9d\xc6\xb1\x1d\xf3\x64\x2f\xdb\x81\x3f\xdc\xb3\xf2\x91\x27\xac\xe6\x3c\x03\xaa\x2f\x3b\x01\xe7\xf9\xf5\xe2\x04\x21\x8a\x25\x25\xd3\x68\xf6\x65\x26\x23\x1c\xfb\xb2\xaf\x5a\x75\x26\x91\x42\x53\x2e\x94\x3b\xb1\xfb\x51\x96\x41\xc8\xa5\x23\x17\xc0\x09\xcd\x59\xfd\x95\x0d\x49\xc3\xc1\x1b\x0b\x17\x1e\xbd\x00\xa0\x8c\x64\x00\xd3\x11\xdf\x1b\xbf\x45\xcd\x6e\xf6\xff\xd9\x4f\x35\xf6\x26\x25\xac\xd8\xae\xc3\x16\xc9\x2b\x56\x6c\xbf\xbd\xef\xdc\x21\xf8\x8d\x7c\x7b\xdf\x91\xd8\xec\x1d\x31\x07\x37\xbc\xa3\xe6\xdd\x42\xa6\x67\x8a\x64\x7c\xcd\x34\xef\x9d\x74\xe8\xe6\xe4\x52\x70\x2d\xcb\x41\x35\xb4\xcb\xc5\xbc\x75\xfa\x0d\x79\xeb\xde\xb3\x5e\x96\x44\x66\x19\x4b\x40\x8b\x94\x6b\xbb\x20\x0f\x38\x46\xd7\x61\x4e\x27\xae\x7d\xc4\x56\x7c\xbf\xb0\x9b\x7b\xf1\xe1\xe6\xf2\xfa\xed\xcd\x32\x4f\x7f\xbb\x95\x4f\x0b\x2d\x17\x95\x62\x0b\xae\x87\x38\x09\xd7\x2c\x1f\x51\xaf\x83\x68\xeb\x1f\xa1\x65\x49\xfb\x71\xbf\xa0\x7a\x8b\xdb\xb8\xf7\xce\x16\xfb\x86\xfc\xe0\x4c\xa0\x60\xf2\x30\x27\xce\x52\x52\x4a\xa9\xcf\x49\x49\xf5\x16\xfc\x49\x03\x84\x80\x38\xf2\xb9\xae\xb2\xcc\xee\xb1\x2e\x19\x3b\x6f\x2b\x98\x17\x9f\x87\xab\xb6\x96\x83\x25\xa6\xc3\x66\x2b\x4f\x64\x63\x88\x29\x20\xcf\x88\x72\x7e\x3a\xa4\xc2\xd2\xeb\x21\xa6\x3a\xb6\x97\xf7\xf5\x9b\x60\x39\x02\xe3\x8e\xde\x9a\x9d\x7d\x60\x3b\x02\x7e\xcc\xb5\x1c\x16\x0d\x7f\x50\xac\xec\x62\x03\xd3\x09\x2c\xf3\xa2\x52\xac\x5c\x3a\x6e\x70\xf2\x7b\x17\xe6\x07\x30\x91\x0f\x6c\x3d\x6d\x83\x3e\xb0\x35\x01\x5f\xf9\x9a\x95\x4c\x24\xcc\xcb\x0e\xb4\xd2\x5b\x26\xb4\x91\x86\xfb\xfc\x19\xdd\xaf\x83\xb5\xeb\x60\xc7\xc0\x6e\xd5\x6b\x6d\x38\xee\x16\x85\xa8\x32\x19\x70\x9e\x0e\x6f\x52\x5b\x63\x75\x3b\xa3\xa3\xcd\x26\xf2\xd1\x88\x70\xec\xe9\xe2\x49\x96\x0f\x5c\x6c\x16\x4f\x5c\x6f\x17\x96\xe3\xa9\x0b\x88\x1a\xb9\xf8\x2d\xfc\xdf\xc8\xbc\xbc\xa1\xf8\x32\x4d\xad\x53\x87\x54\x8a\xad\x2b\xe7\x86\x52\xcb\x56\xe0\xc4\x39\x28\x50\xe7\xa4\xe2\xe9\xff\x1c\xda\x2a\x12\x43\xaa\x07\x98\x33\xb1\xae\xa7\x5e\x3f\xe8\xe1\x56\x76\x68\x75\xe9\xaf\x62\x49\x53\xa9\x00\x0a\x9c\x4c\x8d\x36\xc3\x54\x48\x11\x9a\xe6\x5c\x7c\xf1\x0b\x37\x2e\x10\x8d\xf0\xe9\x71\x81\x87\x8b\x14\xe1\x59\x3e\xbb\x82\xe7\xba\x12\x8f\x7d\xd7\x5b\xa0\x6b\x2f\x18\xf5\xda\xc0\x80\x8f\x4b\x0a\xef\x23\xeb\x7a\xc8\x50\x17\x36\xdf\xa9\xbf\x65\x0b\xfb\xe5\x45\x91\x36\x7b\xfc\xb9\x5d\x5b\x9f\xc7\x64\xb2\xe7\x98\x1a\xb6\x98\x74\x1c\x56\xc7\x32\x9c\xa0\xa4\xbb\xa8\x13\x21\xb3\x10\x73\x84\xbd\x0b\xcb\x2d\x13\xb8\x32\xc4\x3b\x29\xeb\xc3\x76\xcc\xd5\x05\x4e\x39\x9d\x73\xcc\xf3\x57\xd0\x92\xe6\x4c\xb3\x52\xd9\xe0\x00\x2d\xcd\x5b\xc2\xbc\xad\x25\x79\x5f\x30\x71\xaf\x69\xf2\x30\x68\xfb\x9d\x39\xe9\x67\xe7\xa4\x71\x7e\x21\x47\xe4\x79\x5a\x9f\x2f\x4f\x8d\x94\xe6\xdc\x97\xfe\xcf\xc2\x31\x85\xaf\x8a\xa2\x9c\xc6\xd7\x63\xe3\x5a\xde\xd2\x22\x6c\x2d\xf0\x4f\xee\xb1\xcf\xfa\x67\xb0\xec\xb8\x18\xd0\x42\x16\x55\x66\x63\x7e\x7b\x26\xb4\xe5\xca\x4d\x78\x02\xbb\x73\xa2\x0e\xde\xb1\xd3\x10\x87\x5c\xa6\x8c\xac\xb8\xa5\x0f\x95\x62\x86\x89\x43\x0c\x33\x4b\x2d\xd7\x1b\x0b\xbd\x70\xdf\x6d\x73\x4a\x1b\xc8\xb9\x62\xfa\x89\x31\x41\xbe\x01\x99\xe1\x9b\xff\xf6\xdf\xfe\xdb\xb2\x43\xc4\xbf\xf9\xd3\x1f\xff\x38\x8c\x49\xd7\xbc\x64\x89\x86\xa0\x67\x62\xee\xa5\x73\xa5\x80\xb2\x45\x4b\x06\xd1\x60\x74\xbd\xb6\xf6\x7a\x60\xb4\x36\x08\xcf\x50\xf1\x61\xa8\x1f\xcd\x53\x39\xdf\x6c\x61\xa6\x06\xa1\xa5\x58\x67\x3c\xd1\xf0\x0d\x77\x81\x6d\x4c\x96\xb2\x07\x67\xbf\x31\xe8\xa0\x23\x3e\x08\xcb\xec\xe1\x39\xc9\xf8\x03\x23\x6b\xf5\x5d\x29\xab\xe2\xdc\x07\x05\x91\x92\x29\x88\x95\xa2\xc2\x7c\xd5\x7e\x24\xf7\x01\xda\x7d\x03\xce\x42\x31\x7d\x62\xe7\xfc\xa8\xf1\xa5\x83\x2c\xb7\x1d\x89\xe2\x9c\x30\x9a\x6c\x8d\xc2\xbb\xb0\x47\x5d\x50\x5e\x7a\x67\xd7\x35\xd5\x74\x64\xab\x58\x96\xee\x11\xee\x84\xa5\xad\x4b\xe4\xa2\xd2\x0c\xba\xff\x87\x3d\x5c\x2e\xac\xee\x38\x08\xd4\x8b\xa8\xca\x09\x69\xe4\x69\x2b\x95\x33\xb0\x3a\xc5\xc0\xe8\xe6\xe6\x34\x0c\xb3\x63\x42\xbb\x9f\x87\x21\x9a\x55\x1d\x46\xce\x31\x88\x99\x67\xa9\x01\xa7\x06\x66\x3a\x6a\x15\xaa\xa1\x01\x1e\x2b\x8b\x21\x95\x38\x80\xea\x02\x8d\x1d\x39\x19\x8d\x69\xa1\xb0\x36\x83\xfb\x35\xec\xa7\x2d\x4f\xb6\xe6\x27\x03\xc6\xc1\xf0\xa7\x53\x6f\x34\x2a\xee\x44\x31\x5d\xb9\x23\x81\x00\x22\x33\x57\xa6\x14\xe1\xb0\x83\x39\x2d\x1f\x58\x5a\x87\x30\x0e\x4f\xf3\xce\x2c\xb6\x0e\x52\x2d\x59\x46\x35\x7f\x64\x75\x2c\xbb\x99\xa6\x93\x42\xe0\xe3\x67\xcb\xe5\x99\xbd\xe8\x23\x86\x14\xa5\x69\xe9\x6e\xad\x79\x7e\xe8\xe3\x01\xfb\x62\x07\xc9\xdf\xd2\xa2\x15\x8d\x6e\xb6\x15\xc4\x25\x98\x89\x23\x41\xd4\xed\xcc\xf0\x5a\x31\xb2\x0e\x31\xc0\xc7\xfe\xdc\xe3\x5c\x76\xd3\x71\xc8\x36\xfc\x7d\x82\x13\x20\x08\x98\x95\x87\x59\x45\xcf\x2c\x02\x0c\xa3\x0e\x2c\x1d\xc6\x2c\xf7\x59\x04\x9f\xc0\x85\xfb\xb6\x56\xdc\xe0\x6c\x8b\x0f\xd6\x57\x14\x42\x4f\x0f\x88\x7f\x00\x66\x04\x6b\x68\xb1\x80\x00\xd0\x38\x06\x01\x7b\x1c\x80\x38\xc6\x26\xec\xc0\x30\x0b\x3b\xc2\x2c\xc3\x8e\x31\x9b\xba\x1d\x07\xf8\x5b\xdf\x7a\x7b\xb1\xd7\xcd\xb6\x19\x5d\x1b\xc4\xa4\x61\x7a\x6c\x87\xbd\x02\x4b\xf2\xd6\xd1\x0c\x83\x43\x82\xd0\x95\x92\x59\xa5\x2d\xe0\xe6\x8f\x8e\xa0\x20\xf0\x06\x26\xc4\x32\x96\x1b\x32\x09\xb4\xa4\x06\xd2\x22\x32\x40\xbe\x43\x37\xca\x8c\x31\x6a\xe4\x3e\x8a\xb9\x9e\x63\x62\xad\x1d\x0b\xb3\x21\x23\x7f\x35\xeb\x0a\x38\x56\x46\x14\x88\xb0\x63\x65\x4c\x63\xfb\x3a\xb5\xb5\xa3\x6a\x6a\xc1\x53\xf4\x7c\x11\xe7\x50\x75\x91\x8f\x4f\x5b\xe6\x1c\x4c\x2d\x5e\x4d\x64\x49\x0c\xb1\x05\x01\xc1\x90\xcf\x61\xc1\x91\xb9\x1c\xb6\x7e\xe3\x5c\xd8\xc4\x30\xae\x14\x29\x1e\x56\x87\xee\x6f\xc9\xcb\x2b\x7b\xf9\x58\xe9\x5d\xd8\xe4\x56\x68\x56\xae\x69\xc2\x5e\xb5\xd5\xa4\xb1\x98\x28\x1f\x7f\xbf\xa5\x22\xcd\xac\x8c\x4f\x05\x61\x9f\x5c\x3e\x9c\xf9\x4e\x5a\xf2\x47\x56\x92\x97\x97\x59\xb1\xa5\x64\xcd\xa8\xae\x4a\xd6\x1b\xe0\x12\x54\x9e\x00\x12\x2e\x32\xc1\x7e\xd4\x09\x96\xa2\x85\xda\xad\x29\xc1\xe4\xed\xcc\x87\xd1\xb1\xa5\xef\x2d\xcd\x61\x03\x0f\x00\x62\xb3\x93\x55\xe9\x0c\xd3\x6b\x69\x91\x21\x91\xa5\x51\x88\xe0\x83\x83\x10\xa9\x22\x25\xdb\x18\x69\x12\xb2\x93\x84\x4b\x70\x83\x8c\xa4\xc9\xf1\x53\x47\x89\x3c\x3b\x8c\x0f\x0b\xc7\xdf\xaf\x9d\x00\x0b\xf9\x30\x4e\x00\x07\xe7\x8f\x13\x1c\xb8\x22\x05\x55\xce\x60\x01\xce\x25\xa5\x64\xc2\xe9\x90\x69\xda\x8c\xd6\x19\x59\x31\x19\x44\x84\x94\x69\x56\xe6\x5c\xb0\x4e\x30\x70\x3b\x19\x61\x58\xae\xa7\x45\x91\xed\x26\x6f\xae\x90\x29\xbb\xab\x56\x19\x57\xdb\xfb\x28\xdb\xde\xbb\x9e\x17\xad\x9f\xff\xc0\xe7\x66\xed\x7d\x83\x0b\x38\xb0\x03\x12\xc5\x84\xe2\xc0\xac\x0d\x79\x36\xc2\x03\x37\x02\x9e\x84\xed\xf6\x50\xaf\xee\xfb\x22\x99\xdc\x4c\xdd\x2d\x90\x90\x59\x90\x31\xcd\xea\x0b\xd2\x9a\xf7\x8f\x4e\x6f\x13\x29\xfc\xfa\x83\x28\xda\xbf\x0f\x02\x4f\x68\x96\x29\x27\xcd\x59\x7d\x92\xab\x9a\xd8\x5a\x99\x0a\xd4\x8a\x95\xc7\x16\x6e\x10\x29\xb4\x0b\x5c\xd5\x2c\x17\xc4\xcf\x66\xe3\xf6\x36\x48\x91\x5c\xda\x94\x15\x41\xa4\xf0\x0f\x0d\xcb\x7d\x34\xcb\x3c\xa0\xfa\x64\x14\x98\x30\x2c\xf2\x0e\xa1\xce\x6c\x34\xfd\xec\x46\xd3\x28\xd7\xc4\xbd\xd3\x4d\xec\x95\xa3\xe9\x02\x22\x2f\x0f\x73\x4c\x1b\xd5\x64\xc4\xd8\x35\xee\xdb\x98\xec\x2e\xb0\xdf\xbd\xd4\x36\xdf\x78\x18\x93\xda\xf5\x15\xc2\x58\x87\xd8\xea\xce\x4e\xfd\xb8\x37\x0b\x60\xfb\x4c\x39\x2a\xb1\x70\x4a\x5e\xd2\xc2\xf8\x11\x96\x69\xf4\xae\xfa\xee\xb4\x68\x91\x83\xd6\x30\x52\xe0\xa1\xf6\xc7\x33\x45\x52\x99\x54\x79\x6f\xce\x7e\x7b\x98\xf3\x6a\xdc\x77\x2e\x9f\x7e\x1a\x36\x05\xe2\x44\x61\x5e\xb1\xf2\x57\x2a\x9f\xc4\x13\x2d\xd3\xcb\xbb\xde\xa0\xf4\xae\x98\xd2\x3c\xdb\x96\xb8\x3c\x08\x62\x7e\xa7\x2b\x59\x69\x1f\xd2\x39\x16\xc8\xd6\xb1\x5d\xcf\x76\xea\xf6\x98\xed\xd4\x5f\x95\x9d\xda\x3c\x69\xc5\xa0\x8c\x2b\x6d\xb8\x5d\x07\xe3\x9d\x8d\xc8\xec\xc4\x11\x0c\x86\xad\x3b\x66\x69\xdc\x7e\xec\x75\x4b\x7c\x1a\x63\x5d\xd2\x61\x71\x63\x13\x69\x09\x63\xfe\x7a\x02\x6b\x7c\xa6\xd9\x11\x60\x8c\x48\x98\x3d\x6b\x6c\x85\x93\xde\xb3\xcc\x30\x79\xb0\xb2\xb7\xcc\xf8\x85\x4c\xdf\x10\x39\xe6\x79\xb7\x03\xea\x67\xc0\x5e\xa8\x73\x57\x0c\xe8\xdc\xea\x4f\x06\xff\x84\x2f\x08\x03\xb7\xa6\x26\xc2\x01\xd3\x16\x6e\xd9\x64\xb0\x12\x0c\x62\x03\x7c\x6d\x18\xb7\x5a\x57\x0c\xc6\xfc\x27\x94\xb6\xb9\x33\x17\x9d\x87\x8c\x74\x66\x18\x66\xae\x99\x4d\x63\x65\x65\xae\x88\x5c\x9f\x77\x72\x2e\x5e\x3c\xbe\x1e\x51\x87\xfc\x40\x1a\x77\x89\x3f\xee\xbb\xa0\xad\xee\x60\xc9\x77\x1d\x13\x9d\xab\x4b\xa0\xe0\xf4\xbd\x52\x59\x5b\x66\x11\x0b\x87\x8b\x67\x77\xf1\x88\xcb\x0b\x1b\xc8\x08\xb0\xda\x7a\x13\x10\x36\xb9\x51\x7b\x18\x99\x4d\xe6\xb3\xc9\xfc\x60\x9c\xc8\x64\xde\x22\xbb\x8e\xc2\x10\xb7\xec\xb6\x19\x7d\xd4\x18\x64\xc7\x9e\xa5\x7d\xc5\xbc\xc4\xe4\x04\x21\x6f\x48\xf7\x56\x74\x59\x46\x98\xce\xcf\xce\x96\xcb\xb3\x33\x6f\x79\x77\x48\x5a\xe9\xf5\xe2\xcf\x84\x89\x44\xa6\x16\x85\xcc\xd7\x4b\xa5\x81\xb5\xe2\x66\xdb\x5d\x65\xee\xe7\xd9\xf6\xf9\xc1\x97\xc7\x0f\x11\x49\x4a\x7c\xce\xf3\xb7\x13\x98\x63\xc3\x12\xeb\xcc\x69\xb7\x84\xc4\x9b\x40\x51\xbc\xb1\xae\xa9\x45\x32\x0e\xa5\xa7\x0c\x9a\xd7\xe5\xa7\x5e\xda\x1f\x97\x49\x51\x9d\xbb\x07\x96\x39\xcb\x65\x39\x52\x3d\xc0\xc3\xb5\x20\xcc\xab\x1d\x98\xee\xfd\x57\xc0\x6d\x93\xaa\x2c\x99\xd0\xd9\xee\x04\x7c\xb7\xde\x87\xb1\xdc\xa2\x66\xec\xc5\xa5\xd6\x76\x64\x5f\x22\xd0\x15\x5e\x5a\xd7\x65\x17\x54\x68\x0b\x48\xcb\x14\x0f\xef\x31\xf1\x48\x1e\x69\xa9\xc6\x57\x48\xe2\x58\x6d\xca\x1f\xb9\x92\x83\x16\xe4\x81\x05\x36\x36\x04\x83\x32\xb2\xd2\x45\xa5\x1d\xed\xf1\x78\x34\x56\x4f\xa6\x3b\x6a\x1c\xda\x93\x2a\x5e\xef\xd7\xa2\x7a\xd6\x42\xfd\x57\x62\x8f\xb2\xa1\x67\x4d\x29\x37\x2f\x54\x1c\xf1\x24\xb0\x52\xc1\x68\xe9\x9f\xee\x57\x03\x42\x01\xc6\x51\x77\x5a\x57\xdc\x28\x00\x30\x81\x5e\x73\x44\x10\xf8\x8d\x7b\xb2\x1b\xc7\xa6\x59\x5e\xc8\x92\x96\x3b\x92\x3a\x4d\x77\xe7\x23\xda\x68\x39\x60\xa9\xb1\x29\x6f\xad\x9c\xb7\x67\xd7\x86\x80\x55\xa4\xbc\x9c\x12\x07\x9e\xb3\x94\x57\x39\xce\xd6\xf0\x13\x14\x22\x72\xc5\x8d\x7c\x56\xb6\x05\xe0\xcd\x20\x2b\x9a\x3c\x58\xc9\xad\xde\x90\x31\x3d\xbe\x5b\x5b\xe4\x85\xf3\x3a\xe4\x8c\x8a\x5a\x12\x04\x3f\x92\x4c\x99\xd9\x31\xff\xb0\xfd\xe6\x48\xa0\xa5\x97\x08\x85\x33\x72\xbb\xa8\x95\x97\x0e\xc0\x2b\xc3\xc8\xdf\x02\x8d\x3f\xe9\xe6\x13\x54\x2e\x11\xff\x3b\xfb\xde\xb0\x2d\x64\xd5\x1f\xa9\x69\x46\xa8\x4b\xb5\x5c\x93\x4c\x26\x34\xab\x4f\xa3\xc3\x03\x0e\xaa\x41\xb6\x47\x8d\xd0\xde\xc7\x66\x4e\xc3\xcc\xc5\xf2\x50\x30\x13\x64\x4a\x82\x07\x87\x27\x74\xe5\x4a\xa9\x59\xce\x38\x08\xd5\x9d\x0c\x00\xcb\xe9\x27\x9e\x57\x39\xa9\x94\x99\x99\x14\xee\x5d\x8f\x31\xf5\x04\x9e\x0c\xe6\x0c\x5b\x51\x2c\x0a\xe4\x5c\x00\xb0\xae\x88\x6f\xfe\x72\xef\xf7\xaf\x15\xe4\xb5\x65\x23\x71\xe9\x5e\x48\x56\x55\x0e\xf5\x02\xed\xac\x9c\x68\x21\xd7\xe0\x93\xa8\x19\x33\x54\x85\xa2\xb6\x2a\xd9\xc7\x11\xf3\x51\x0b\x8f\x05\xcf\xba\x88\xec\xeb\x77\xd5\x1b\x5b\x09\xe7\x87\x46\x47\xd0\xf7\x23\x65\xa5\x58\xb9\xd8\x54\x3c\x3d\x1a\x3a\x8e\x52\xcb\x75\x12\xa4\x93\xdf\x5e\x75\x09\xe4\xb7\x7c\x55\x32\x72\xb5\xa5\x42\xb0\xac\x5d\xa7\xb4\x5b\x3e\xae\x77\xb2\x9d\x92\x72\x81\x8a\x72\xcf\xcc\xbe\xff\xfa\xb3\x61\x4e\x5e\x40\xc4\x3a\x9d\x06\xc1\x7e\xb5\x45\xd3\xb2\x0a\x59\x2e\xad\xb1\x36\x7c\x7b\x45\x34\x2d\x37\x4c\x9b\x97\x89\x80\x12\x9b\x5f\x53\xa1\xaf\x2f\x9d\xd6\x33\x3d\x03\xc7\x6e\xeb\x4f\x3f\xbd\x43\x66\xe3\xf7\x9d\xc9\x93\x2c\xb3\xf4\x89\xa7\x36\x7c\x44\x91\x97\x06\xdc\xab\x2f\x97\x22\xff\xf4\xc4\xd3\x29\xcb\x71\xe6\x23\x58\x0e\x81\xf5\xb8\xb4\x11\x6e\xb8\xca\x4b\x00\xfb\x6a\x98\x3d\x73\x30\xda\xc0\x53\xd6\xec\x90\xaf\xb8\xa0\xbe\x40\x41\xb3\xd1\x40\x0a\x0d\x1e\x3b\x33\xd8\x20\x44\xc5\xf4\x39\x59\x55\xce\xa8\x21\xf5\x96\x28\x9e\x57\x99\xa6\x82\xc9\x4a\x65\xbb\xc1\x63\x3f\xf5\x16\x8f\xf3\x9c\x8c\x7d\xb2\xc8\x19\xe6\x3d\xf5\xa3\x5d\x1e\xb4\x61\x82\x95\x3c\xf1\x07\xd2\x61\x42\xfd\x1e\x15\x65\xe3\x6a\x6c\x85\xf3\x8b\x3a\xbb\xb3\x32\xc4\xcc\xc6\x59\xb1\x84\xac\xa8\xe1\x3b\x45\x56\x6d\x78\xaf\xe5\xf6\xb3\x44\x55\x35\xb1\x24\x46\x56\x0e\x0a\x7d\xe3\xae\xf6\x7f\xc0\x32\x5b\x1f\xfb\x23\x9a\x52\x56\x30\x61\x2e\x9e\x68\x63\x95\x5d\xde\xe4\xdd\x73\xb6\xde\x2f\x13\x66\xd0\xa2\x4d\x37\x9f\x74\x49\x0d\x41\xc9\x0d\xe9\xf0\x16\x68\xbe\x26\x54\x0c\x13\x81\xe3\x86\x87\xfc\x82\x59\xdc\x89\x4a\x3f\x9c\x26\x0c\xcd\x52\xa7\x61\x96\x00\x13\xf5\xe1\x62\x83\x61\x61\xfe\xeb\xed\x3c\x9a\xd1\xc8\xc4\xd8\xf0\xb0\x56\x18\xd8\x30\xed\x3a\x0c\x6c\xb1\xab\xab\x57\x31\x27\xd8\x7e\x25\xb1\x62\xa7\x88\xee\x59\x67\x32\x79\x40\x54\x6b\xf8\xd6\x3e\xb7\xa7\x85\xba\x1f\xf7\xcb\x35\x74\x35\xcc\xde\xc5\x76\xab\x34\xc0\x3d\x69\x31\x07\x70\x74\x3b\xe0\xd0\xb9\x42\x66\xd0\x28\x81\x27\x8c\xac\xd8\x60\x92\xbf\x6d\xac\x30\x45\x66\xa0\x9a\xaa\x88\x52\x6a\xfb\x55\x40\x15\xd3\x36\xbe\x0c\x0a\x38\xf9\x46\x18\x64\xf1\x2f\xe3\xce\x32\xb7\x52\x0f\xc1\x88\x19\x7e\xd5\xde\xee\x07\x3e\x1d\xc5\x53\xe6\x60\xa7\x66\xff\x93\x91\x68\xe3\x70\x81\x51\xfb\xb5\x1f\x7e\x40\xe6\x69\x9b\x07\xf7\xd6\xea\x0e\x0c\x2c\x2e\x50\xdb\xb7\x91\xc0\x87\xd7\xba\x6e\x21\x8c\x83\x73\x02\x5b\xca\x26\x61\x77\x75\x79\x61\x54\xd9\xdc\xb3\xef\xae\x6e\xba\xaf\x74\x91\xfc\xbb\xab\x9b\x6e\xe1\xfe\x51\x01\x77\x5a\xe1\x7e\x32\x92\x6c\x7a\x8c\xc2\xfd\x9b\x84\x35\x45\x97\x53\xae\x1e\xe6\xaa\xfd\xbf\xca\xaa\xfd\x07\xe7\x3c\xec\x23\x98\x4b\xf6\x0f\x8c\xb9\x64\x7f\x7f\xc9\xfe\xcf\x42\x83\xc8\xd1\x4c\x83\x45\x8a\xe6\xe6\xbe\x42\x7d\xdb\x00\x70\x77\xdd\x29\x4b\xff\xdd\xd5\xcd\xd2\x16\x68\x1c\xa1\x56\x9d\xf2\x25\xbe\x14\x37\xbc\xf9\xb9\xb6\xee\xc8\x75\x90\x0e\xeb\xdd\x8e\xe8\x82\x23\xde\x96\xbd\xea\x46\x07\xaa\xe9\xe7\xde\xa0\xa9\x85\x96\x2d\x4e\x45\x8b\x24\x5c\x7f\x60\x45\x2f\xa5\xdf\x13\x44\xec\x83\x7b\x56\x36\x0e\x6d\xe6\xa4\xe2\xe0\x05\xa7\x1a\x8a\x03\x94\x9a\x27\x55\x46\x87\xac\xe2\xd6\xc6\xb6\x24\xd7\x37\x77\x1f\x6e\xae\x2e\x3f\xde\x5c\xbf\x21\x1e\x3a\x6f\x0b\x91\x4b\xf2\x51\x36\x46\x39\x5b\x41\xc6\x3a\xe8\xfa\x6d\xb6\x5c\x6f\x5b\x73\x3a\x77\xe4\x90\x8a\xc6\xeb\x08\x85\x33\xa8\x20\xb7\x82\xeb\x26\x92\x66\x50\x64\x4a\x32\xe9\x7b\x1f\x1a\x88\xce\x16\xb8\xe1\xfa\xdc\x0a\x48\xae\x06\xf4\x96\xed\x7d\x01\xee\x28\xf8\xfb\xfb\xc1\xfa\x2f\xf7\x6a\xaf\x41\x75\xc0\xfb\xd8\x71\x55\xf8\xad\x7d\xbd\x89\x54\xb0\x3c\xa1\x0e\x74\xf3\x55\x26\x64\x69\x63\xc9\x06\x2f\x4a\x53\x57\x02\xb8\xd0\xd9\xf2\xcc\x0b\x35\x59\x5d\x0b\xc4\x07\x4f\xd6\x1f\x1b\xad\x42\xed\x9c\xbc\x5d\x1c\x5a\x12\xf2\xde\xb7\xd4\x3a\x37\x92\xc9\x5e\xb9\x91\xc1\x24\x0b\x3f\xcb\xc6\x8f\xdb\x03\xbd\x8e\xd5\xad\x56\xed\x49\xda\x64\xf6\x41\xa0\x1b\xfe\xc8\x84\xdd\xb8\xe9\xa4\xcd\x4f\x01\x75\x6a\x1f\x9a\x19\xff\xf0\xe1\xfb\xe9\x1f\xb5\x37\x07\xf5\xc9\x2b\x99\xe7\x5c\x93\x2d\x55\xdb\x3a\x49\xab\xf1\xad\xd7\xb7\x76\xda\x5c\xc6\x29\x57\xb3\x39\xd1\xd4\xcb\x26\xf2\x22\x2a\x58\x9f\x7d\xe7\x1f\xdd\x53\xa0\xea\x9f\x0f\xea\x58\xf7\x3b\xbb\x9a\x40\x1f\x64\x50\xcf\x50\xd1\xcc\x7a\xee\xcf\xab\xe9\xe8\x3b\x77\x22\xbd\x55\x37\xfe\xf1\x77\xad\x5a\x40\x75\xf7\x4f\x10\x32\x60\x89\x29\xd3\x94\x67\xc3\x56\xa8\x66\xdf\xb4\x2c\x64\x26\x37\x71\xf5\x67\x7b\x16\xff\x5b\x1b\x85\xbb\xa0\x0b\xb3\xab\xd3\x65\x73\x6c\x6d\x6b\x1f\x44\x6c\x36\xa0\x59\x4d\x2d\xab\x42\xfc\x2e\x5e\x11\xfa\xec\x0b\x3d\xa2\xb0\xb4\xbf\xfa\x61\xc9\x1b\xb4\x46\x5f\xfe\x1b\xe8\x66\x93\xe7\x59\xb0\x32\xe7\xca\x36\xcb\xee\x91\xa2\x06\x81\x7e\x36\xac\x99\x2a\x58\xd5\x37\xac\x5f\xec\xea\x0f\x64\x1c\x25\x5b\x86\xba\x0c\x25\xa1\x1c\xb6\x1a\x02\x44\xed\x10\xad\xa2\x64\x0b\xf6\x89\x2b\xb0\x0f\xd8\x36\x94\x65\xc3\x75\xfb\xfd\x50\xad\xfa\xfc\xde\xd0\xe3\x03\x72\xec\x9b\xd9\x6e\x3f\xae\xa6\x91\x53\x7a\x41\x7a\x33\x1b\xb8\x5a\x69\x96\xed\x6c\xa9\x44\xc8\x18\xb5\x6a\x39\xdd\xc0\x84\x65\xe9\xcc\xd4\x45\xc9\x1f\x79\xc6\x36\xe6\x13\x5b\x2e\x36\xfd\xe4\xa5\xce\x68\xa5\x59\x26\x9f\x98\x4b\xb5\x61\x07\xf3\x37\xf7\x53\xe9\x76\xd4\xd6\xa0\xb8\xf1\xee\xfd\x47\x22\x98\xfd\x6c\x7f\x3b\xe8\x18\x81\xde\x4c\x62\x30\x7e\x75\xb1\x58\x80\xfd\xe2\xe5\x7f\x18\xd9\x31\xcd\x5e\x91\x9f\x98\xfb\xb6\x11\x9e\xcd\x8d\x4e\x34\x79\xda\x4a\xd0\x74\x2b\xe5\xd6\x34\x7e\x7a\xb9\x6d\xd7\x46\x45\xea\xdf\xbc\x30\x6f\x1b\x01\xce\xb2\xad\x0e\x0c\xc8\xc0\x56\xa4\xf1\xa8\x4d\x92\x33\x23\x29\xa9\x37\xc2\xd6\x62\x55\x0b\xe3\xea\xf2\x01\xa3\x51\xbf\xb6\xf1\xf5\x2e\xcf\xb8\x78\x38\x27\x5c\x7b\x32\x65\xb0\xc0\x85\xd2\x89\x07\x8f\x9b\x25\xa3\x59\x8b\x4a\x8f\xe8\x77\xcf\x3d\xe5\xc9\x14\x5a\xa3\x0d\x92\x1f\x77\x85\xf5\xe3\xd7\xd7\xdd\x39\x9f\xdb\x64\xf4\xc5\x8b\x53\x19\xe6\x9e\xb9\xd2\x80\x5a\x3a\x81\x3e\x72\x85\xa9\xab\x73\x76\x7b\x7f\x75\x7f\xbb\xd7\xd8\xc7\xfe\x76\x68\x12\x8f\x0b\x3c\x8c\x89\x3c\x1c\xc6\x3f\x1c\x53\x83\xc5\x3e\x4f\x06\x4c\xb6\xb4\xb8\xac\xf4\xf6\x9a\xab\x44\x3e\x32\xa4\x92\xe1\x0b\x2b\x39\xc3\x34\xe1\x7e\xeb\x2c\x0c\x72\xf5\xaf\x97\x77\xb8\xee\x04\x61\x07\xba\x9f\xe1\x3d\x53\x68\x8d\xa4\x7f\x7e\x0e\xc2\x51\x67\x37\x3b\x0f\xbe\x7a\xe7\x01\xdc\x92\x5f\xaa\xc3\x80\x0b\xae\x39\xd5\x72\x34\xe3\xab\xab\x8d\xdb\x56\xe7\x16\xe5\x6f\xfd\xeb\xe0\xda\x05\x66\xda\x81\x38\x96\x6c\xdd\xaa\x81\xca\x41\xdf\x49\x14\xaf\x2b\x8f\xed\x05\x03\x9e\x13\xc1\x9e\xdc\x37\xb9\x7f\x66\x10\xf2\x3f\xbb\xd0\x4d\x83\x97\x34\xfb\x97\x37\xff\xdc\x72\x3a\xfc\x4b\x9d\x34\x5b\x17\xa3\xa8\x8b\x76\x41\x95\xf4\xe9\xa6\x04\x42\xf8\xdf\x70\xf4\xc3\x99\xbe\xec\x7a\xfe\x57\x45\x33\xbb\x0f\xef\x9e\x63\xc7\xe9\xee\x1f\x6a\x1a\xfe\x0c\xfd\x9e\xbf\xab\x75\xec\x4a\x31\xe0\x59\xf6\x09\x5d\x52\xa1\xcc\x66\xe2\x8a\xe2\x9c\x39\xd7\xcf\x19\x79\xa9\x93\x22\x50\x11\xe7\x08\xa1\xd4\x76\x92\x6e\x4f\xbf\xaf\x43\xa8\x87\xbe\x7b\x24\x3f\x09\xe0\x16\xce\xb4\xd1\x99\xe0\x1d\xbc\x48\xbe\xe7\x4a\xdb\x78\x3f\x0b\x09\x9a\xe5\x40\x90\xed\xe0\x1e\x1b\x19\xe2\x0e\xca\x0b\x16\x3f\xd3\x34\x2d\xdf\x58\xde\xe3\x0b\x3b\x94\x20\x49\xc8\xba\xe5\x55\xed\x81\x7b\xa9\x77\x05\x4f\x8c\x1a\x34\x4c\xa5\xae\xee\x00\x82\x22\x7f\xfe\x93\xcd\x53\xff\xc3\xef\xff\xf4\xcd\xe0\xd1\x9d\x3e\xca\x39\xca\x86\x10\xe5\x6f\x19\x4b\x8c\x0f\xf9\x5b\x26\xb3\xf1\xb8\x28\x3d\x10\x20\xee\x9b\xae\x4a\xee\x16\x5a\xfc\x31\x87\x53\xd3\x58\x9c\x98\x31\x47\x9c\x7d\xf6\xea\x64\xf6\xb0\xec\x5d\x9f\x4a\x23\x2c\x79\xb8\xdb\x23\x0f\x96\x0c\x0c\x4e\xff\x6b\x20\x0f\xcf\xd2\xca\xf8\xdf\xfa\xd0\x78\x61\xb8\x41\xef\xef\xed\x9d\x8e\xd5\xe6\x04\xc6\x3c\xff\x6e\xaf\xbd\xa4\x20\xef\x06\x7b\x4b\x46\x25\xda\x3e\xd7\xd8\x23\xd6\xbd\x69\xf1\x47\xb6\x9e\x78\x15\xd5\xe8\x97\xed\xa0\x77\xb3\x09\x8a\x95\x50\xc6\xed\x44\x76\x8e\x81\x05\x92\xcf\x6c\x84\x36\x2b\xb5\xab\xb7\xfa\xc5\xb8\xe6\x14\x6d\x7e\xfe\x62\xbb\x37\xce\xb0\x4a\x6c\x36\xc8\xd9\x3d\x3c\xeb\x1d\x16\xe6\x2e\xd8\x88\x90\xd2\x88\x2b\x86\x12\x31\xa5\x3c\xb3\x78\xf7\xed\xfd\xb0\x42\xd0\xc2\xa6\x2f\x82\x35\x93\xcc\x45\x0b\x37\xef\x58\xda\xd3\x04\x5e\x58\xa9\xe3\x2a\xa3\xbc\x37\xf1\x7d\xef\x4e\xf6\xbd\x66\xff\xf3\xde\xda\x94\x3a\xf6\xf8\x3a\xb0\x7f\xd8\xb2\xd4\x0b\xb1\x76\x47\x53\xa7\x37\x41\xb9\xaf\xc9\x67\xd3\x2c\x76\xe1\x8f\xa9\xf9\xc9\xfe\x92\x98\xcf\x4e\x22\x68\xf0\x26\x3e\x6a\xe9\xca\x3f\xbe\x9f\xc0\x34\xb0\x15\x23\x57\xb3\x67\x8b\x7c\x27\xda\x42\xfa\x04\xad\x4e\xe5\xe8\x23\xdb\x20\x9e\xb5\xaf\xe4\xe8\x74\xf4\xa7\xc8\xb4\x97\x90\x3a\xf9\x3c\xb1\x7b\xfc\x3a\xd7\x58\x13\x7d\x71\xb7\x52\x4b\x11\x19\x2d\x7d\xd7\xf3\x52\xf7\xa6\xda\x27\xae\x6c\xd4\x7e\x36\xa4\x75\xd6\x00\x6c\xa0\x5c\x5f\xa7\xc7\xc1\xae\x8e\x13\xae\xd6\xaf\x2f\xc3\xee\x48\xfd\x18\xc3\xde\xfe\x14\x99\x27\x70\x7b\xed\x44\x2c\x9f\x0b\xa0\x1c\x2a\x90\x06\x17\x5a\xe7\x3e\xb8\xc0\x91\xb0\xe5\xe7\xb1\xbd\x34\xbe\x21\x9b\x39\xbc\x27\x59\x62\x33\x65\xef\x3a\x8f\xef\x39\x94\xdd\xdf\xf6\x93\x65\xfa\x45\xec\x2f\x7f\x0b\xee\xc1\x63\xd6\x5a\x42\x9f\xd9\xdc\xdf\x8d\xc1\xc3\xec\xbb\x32\xa8\xab\x31\x2c\x5c\x0d\x5d\x99\xf0\x95\x18\x66\x80\xc7\xb9\x2a\x51\x2c\x06\x9b\x9f\xd9\x48\xf2\x83\xd3\x7f\x3e\xa3\xc2\x16\xf5\x46\x92\x82\x1f\xdd\xc3\x2e\x3d\xc8\x9c\x47\x43\x14\x68\x7d\x4d\xc6\x63\x61\xbe\x48\x07\xc6\xba\xad\x5a\xf0\xae\xdb\xa2\xbf\x6b\x59\x42\x92\x25\xb7\x79\x97\x4d\x45\x3d\x97\x75\x79\xee\x6a\xb3\xe7\xb4\x18\xa8\x19\x67\xae\x7a\xbb\x5a\xf0\x84\x6b\x1d\x5b\xdc\xfa\x2d\xa2\xa2\x75\xb7\x72\xf5\x20\xea\x85\x2a\x5a\x0f\xd7\xa9\x1e\xb6\x0e\x87\xea\x57\x0f\xd7\xa9\x1e\x84\x19\x55\x19\xb4\x5b\xfb\x73\xc4\x8a\x8d\xa8\x09\x0a\x55\x3f\x4f\x6a\xbf\x77\x08\x87\x3a\x78\x5f\x9d\xda\x47\xe0\x59\x64\x37\xdb\x31\xcd\x3e\xde\x65\x7e\x35\x34\xbb\xb7\x2e\xed\xb9\x69\x54\x48\x33\x29\x36\xad\xa3\x18\xb1\x5c\xb6\xca\xe1\x3b\xa7\xef\xae\x18\xb1\x9e\xe2\x0a\x43\x8e\x76\x57\x1d\x58\x54\x3b\x07\xbc\x29\x5c\xdf\xb4\x59\x85\x34\xcf\xa6\x43\xde\x28\x60\x7c\xf9\xca\xc0\xb6\xf7\xce\x14\xd7\x2c\x33\x08\xd3\x7a\x63\xaf\xcd\xb2\x70\x6d\x33\x11\x10\x7b\x1b\x6b\x8e\x35\xd0\x44\xc0\x1c\x6d\xb1\xd9\xdb\x4a\x13\xb9\xf4\x70\xb3\xcd\xe8\x52\xd4\x51\x6d\x37\xc9\xed\x1a\x01\xf2\xf8\x0d\x38\xbb\xbb\x10\xd1\x8a\x13\x01\xb1\x6e\xd6\x19\xd1\x94\x13\x39\xd1\x76\xdb\x4e\x6c\x7b\xce\x66\x20\x2f\x5a\x74\xcb\x4e\x04\x44\x82\x68\xeb\xd9\x0c\x3c\xed\xb0\x23\xd8\xea\xb3\x19\xcf\x6a\xfa\xd9\x8c\x88\x6a\xae\x76\x84\xab\x9a\x0f\xcc\x71\xbc\xbe\x39\x12\x22\x69\xd5\x41\xc7\x54\x3a\x47\x83\x3d\xa8\x88\x3e\x56\xf3\x1c\x0d\x75\xb0\x36\x7a\x5f\xf5\x73\x34\xd4\xa3\xc9\x42\xfb\x03\x2f\x1b\x85\xab\xf0\xda\x81\xaf\x8d\xde\x0c\x6c\x95\xf4\x66\x84\xeb\xa5\x37\x23\xaa\xd9\x28\x7a\xe7\x5c\x53\x52\x54\xdb\x51\x34\xd0\xb7\x3d\xfd\x8e\xfb\x1b\x90\xa2\x41\x0e\x36\x2a\x45\x52\x5e\x3b\x22\x89\x06\xae\xce\xb2\x1d\xe3\x8d\x4a\xdb\xcf\x8d\x6a\x23\xfb\x73\x0d\x36\x6b\x68\x3f\x3c\x1c\x16\xd2\x8c\x50\xbc\x82\x1d\x5f\x6f\xd4\x82\x1d\xb1\xb1\x0b\x08\x90\xa1\xe8\x06\x3b\x22\x30\x28\xd4\x1a\xb5\x19\xd1\x4d\x52\x11\xcb\xa9\xdb\xa8\x86\xdb\xa5\xee\xaf\x6e\xcc\x2e\xd3\x7d\x32\x88\x9d\x81\x66\x5e\xad\x07\xc3\x5a\x50\x0b\x96\xd7\x83\x02\x0b\xfa\x0a\xb4\xa4\xc3\x56\x4d\x07\xfd\x94\x10\x87\x39\xd2\xca\x29\x7a\x7e\xa7\x69\xef\xd4\x8c\x63\x34\x7a\x6a\x46\xac\x20\x8a\x6b\xfe\xd4\x8c\xb8\x36\x50\x68\x76\x55\xb7\x8b\xc2\x36\x84\xc2\x8b\x3a\x11\x8d\xa3\x5a\xf3\x89\xdc\x46\x12\xd9\x4c\xaa\x19\xb1\x6d\xa5\x22\x40\x83\x16\x7e\xa4\x06\x53\xcd\x88\x56\x24\x48\x5c\xd3\xa9\x66\x60\xdb\x4f\xc5\x6d\xc9\x5e\xab\xaa\xb8\x46\x54\xcd\x98\xb0\x0d\x31\xe2\x11\x89\x68\x53\xb5\x3f\x29\xa4\x0c\x44\x66\x25\x6f\x56\xf2\x7e\x4d\x4a\x5e\xa8\x3d\x16\x9e\x1b\xf9\x36\x5a\xa1\x46\x59\x51\xea\x58\x7f\x43\x2d\xb2\xdf\x32\x0b\xaf\x35\x62\x5a\x6b\xc5\x32\xe2\xe3\x34\xd9\x6a\x46\x34\x99\x8c\x6b\xbc\xd5\x8c\xf8\x16\x5c\xf8\x1b\x6a\xe4\x12\x7c\x33\x2e\x34\xdc\x6e\xd3\xae\x70\x5b\xae\x28\x99\x27\xbe\x7d\x57\x33\xa6\x48\x3f\x91\x2d\xbd\x9a\x81\x6f\xee\x15\xc5\xe7\x7d\x23\xb0\xa9\x6d\xbe\x9a\x31\x49\xe0\x41\xb7\xfe\x6a\xbd\x82\x6c\x02\x16\xb5\x0d\xdd\x86\x61\x03\xed\xc0\xa2\x20\x62\x5a\x87\x35\x63\xd2\xe6\xe1\xdb\x89\x35\xe3\x98\x8d\xc5\x9e\x35\xfd\x78\x29\x0f\xd5\x76\x6c\x7f\x4e\x68\x21\x2f\xce\x28\xf7\x25\x8d\x6d\x48\xa0\x36\x74\xe3\xd9\xe6\x11\x57\xa8\xfb\x1f\xd1\x43\xec\x52\xbe\x9c\xfb\x14\x67\x55\x88\x70\x0f\xe3\x3a\x1f\xcf\xee\x61\xb4\x7b\xd8\x9e\xd7\xec\x1b\xee\x8c\xd9\x37\x3c\xfb\x86\x67\xb3\xc1\x6c\x36\xf0\x63\xf6\x0d\x63\x41\xce\xbe\x61\xc4\xc3\xb3\x6f\xf8\x57\xea\x1b\x76\xc2\xaf\x75\x0c\x23\x11\xed\x8b\xfb\x85\x5d\x73\x95\xcb\x24\x91\x95\xd0\x1f\xe5\x03\x0b\x38\x99\x50\x0a\xd0\x01\xcc\xc0\xc2\x4e\xa3\x2b\xd1\x2a\xe5\x46\x2f\x89\x3c\xdb\x4b\xf7\x9a\x57\x1a\x0c\xaf\x10\x29\x4b\x6b\x78\x44\x62\x44\x71\xf3\xaa\x36\x6b\x5f\x92\x4b\x52\xb2\x84\x17\x9c\xd9\x0e\xc3\xd4\xfe\x6e\x0f\xdf\xd7\x8e\x47\x40\xe4\x5a\xb1\x6c\xed\x6a\x71\x8b\x56\xef\x95\x96\xb4\xef\x08\xb9\x9f\x2a\x46\x0e\x5f\x37\x53\xb5\xca\x88\xf4\x45\xa2\x7d\x33\x9a\x92\xfd\x87\x97\x02\xec\x8a\x30\x97\xbf\x35\x8b\x8e\x5b\x10\xb6\xb4\x99\xba\xfb\x3c\x2d\xb8\xcb\x9e\x3e\xe6\xed\x66\x9f\x0a\x5e\x02\x7a\xde\xb3\x44\x8a\xe1\xb6\x93\xcd\xe8\xa0\xc2\xcd\xfe\xfb\x1e\x27\x9c\x05\x95\xa5\x24\xad\x4a\xac\x4b\x5e\xae\x8d\x28\xc9\x53\xae\x77\xb5\x23\xd6\xf5\x36\xa2\xf6\xae\xd4\x08\xa3\x90\xb6\x75\x8b\x48\xb4\x28\x4a\x49\x93\x2d\x53\xad\x15\x5b\x19\xd3\x65\x90\x85\xaa\xcf\x36\xc3\xf5\x00\x03\xf5\x0e\xa0\x1a\xe9\x25\xdb\x91\x52\x6a\x1f\x4a\xb0\x37\x69\xec\x34\xad\x07\xc1\x4f\x08\x3e\x60\x85\x05\x5d\xee\x20\x22\x41\xb6\x3e\x82\x5e\x3b\x6f\xa1\x2f\xd4\x07\xc9\x52\x5f\x1f\xe4\xcf\xdf\x90\x82\x95\x89\xbb\x75\xb8\x68\x1d\x28\x6b\xa1\x25\xc9\x8c\xcc\x66\x48\xf9\x30\xf8\xdf\xff\x91\x6c\x65\x55\xaa\xa5\xcf\xe8\x42\xcd\x99\xbc\x86\xb7\xac\x76\xeb\x55\x0c\x4d\x32\x46\x95\x26\xaf\xbf\x21\x39\x17\x95\x61\xcd\x41\x60\x2d\xe1\xf7\x4f\x7f\x44\x5e\x1a\x9c\xd8\x8b\x13\x78\x0f\x9d\xe8\xee\x6e\x14\xb6\xa6\xae\x93\x7b\xdd\x8d\x1f\xcf\x16\x6c\x7d\x1b\x6a\x65\xef\x79\xc7\x1c\x5b\x68\x9f\x84\xd0\xf2\x88\x94\x02\x27\x43\x22\xa4\x42\x14\xd7\x45\x3c\x34\x2e\x2a\x8e\xa7\xc0\x39\x43\x7c\xcf\xdf\x46\x3f\xfc\xb7\x4a\xae\x76\x3a\x9c\xeb\xfa\xbf\xec\x73\xdd\x24\x57\xff\x63\x7f\x51\x99\xde\x45\x76\x0a\xbd\x37\x35\x65\x7a\x9e\x0d\x71\xfc\x8d\xd1\x43\x51\x79\x50\xa0\xb1\x42\xf2\x2a\x2d\x6a\x43\x63\x92\x30\xdb\xe0\xf1\xba\xd5\x72\x5e\x5a\xa8\xa3\xc7\x73\xac\x8c\xd0\xd1\xda\x2d\x7e\x67\x7d\x3e\xd4\xb0\xd6\x78\xec\xf2\xe1\x61\x59\xb3\x64\x1b\xae\x34\xba\xef\x82\x7d\xb8\x8b\x38\x8a\x8b\x8d\xad\xb1\x9d\x57\x99\xe6\x45\x56\xaf\x78\x70\x9d\x35\x20\xc7\x87\xda\xc6\x4e\xda\xb2\xc1\x51\x9b\x36\x6d\xab\x48\x15\x94\x0f\x93\xbd\x97\xf5\xb7\x99\xd0\xb6\xc4\x73\x69\xd8\x5c\x41\x4b\x5a\x6f\x27\xf4\x77\x55\xaf\x9c\x3d\x95\x82\x13\x78\x98\xe4\x83\x47\xd8\x40\xa3\x59\xbd\x4d\xe0\x28\x74\xee\xc3\xa9\x88\xa5\x99\xa0\x62\xd0\x47\xd1\x35\x3f\xc0\xa3\x44\x3e\xd5\xf1\x7e\xb6\xd9\xc6\x1e\x46\x39\x89\xf1\x2f\x34\x79\x60\x62\x58\x03\x81\x1e\x48\xb0\x11\xe9\x4e\xd0\xdc\xd6\xdb\x6a\xb7\x75\xde\x83\xab\xce\x9d\xdd\x6c\xac\x80\x26\xd3\x3e\x09\x7c\xb4\xb1\x6a\x70\x57\x2a\x85\x2c\xf5\xf3\x83\xb2\xcd\x9d\xc7\xee\xbf\xb2\x1e\xbd\x92\x3f\x26\x2c\x24\xe2\x98\x0f\x4f\x9d\xf4\xe3\x60\x6d\x81\x83\x69\xbb\xba\x02\xbc\x85\xdd\x60\x9e\xab\x5d\x2f\x50\xd5\x8b\x66\xe6\xca\xef\x7c\x24\xc9\xe0\xa4\xf7\x10\x60\xb5\x7b\x4e\xff\x95\x50\xfb\x11\x8b\xfa\xbd\x7f\x1c\x94\x49\x47\xf9\x54\xb9\x0a\xe7\x68\x9f\x7d\xf8\xcb\x75\x97\xce\x7c\xa0\xa9\x54\xe4\x2f\x99\x4c\x1e\xc8\x35\x03\xf1\xf5\x73\x37\x25\x29\x57\xe9\xf3\x4a\x51\xcf\xa5\x94\x07\x61\x7e\x2d\xa5\x94\xcb\x55\x6a\xcd\x5e\xc3\x50\xbf\xda\x42\xca\x39\xdd\x60\x6b\xea\x1b\x0d\x18\x2e\x14\xbc\xe4\xfb\x5e\x4d\xbc\x0a\xbf\xdd\xca\xa7\x85\x96\x8b\x4a\xb1\x05\x1f\x0c\xa2\x08\xce\xff\x81\xed\xcc\xdf\x70\x2b\xf8\xab\x7d\xb8\xa3\xb2\x68\x09\x06\x76\xf8\xdd\x70\xea\x0f\x7f\xb9\x36\xec\xa2\x96\x98\x06\x77\x9f\x2b\x72\xc1\x74\x72\x91\xb0\x62\x7b\xe1\xa6\xf1\xc5\xb7\x23\x97\x82\x6b\x59\x22\x5b\x17\x5d\x92\x44\x66\x99\xcb\xe2\x97\x6b\x72\xc5\x8a\x6d\x0d\xe2\xd4\x6b\x39\x7d\x31\xde\x42\x4a\x5c\x11\xd3\x16\x6a\x9b\x77\x1c\x66\xb7\x14\x83\x72\x15\x47\x3c\x3e\xe7\x91\xff\x82\x7a\x3c\x1e\x7d\x5b\x8e\x57\xbb\xf8\xec\xde\x3f\x0e\x8a\x60\xcb\xab\xd2\x2d\x55\xec\xc0\x0e\xee\x4c\x87\x84\xdc\xae\xad\xa8\x9c\xb2\x94\xc8\x47\x56\x96\x3c\x65\x8a\xd4\xb4\xa2\xad\x79\xf2\xec\x28\xfd\x9c\x26\xec\xe4\x5c\x65\xf9\xb3\x57\x59\x46\x2b\x2e\x2d\xc2\x64\xde\x39\x24\x4c\x34\xcd\xb9\xf8\x4a\x49\x53\xa0\x5e\xb2\x91\x21\x7a\xff\xe2\x19\x50\xac\x8a\xa0\x12\x9a\xb1\xdb\x5e\x21\xac\xeb\xc5\xb3\xcf\x75\x35\x05\xff\x63\xab\x52\xe1\x84\xca\x6d\x7f\xad\x11\x9a\x08\x99\xf6\xdb\x73\xff\xf1\x6a\x17\xb6\xf0\xd5\x96\x6e\x9b\xca\xea\x36\x54\xb3\x27\x8a\x6c\xd3\xea\x97\xb0\x57\xc9\xd7\x1f\xf4\xe5\xdd\x2d\xf9\xce\xc2\x9b\x5e\x2c\xb1\x94\xda\x4a\x4f\xd7\x32\xa7\x1c\xd9\x44\x63\xdb\x6d\x3d\xed\x27\x74\x57\x03\x23\x16\x9a\xef\xf0\x31\xb8\xbf\xb6\x2e\x51\x65\xb4\x1e\xa7\x91\xcc\xb5\xec\x7a\x46\x9c\x20\xd0\xc8\x01\x2d\x33\x8b\x0f\xf3\x6c\x7a\x1b\xb8\x53\x1b\x35\x11\x35\x6e\x55\xa2\x98\x50\x1c\x3c\x23\x2d\xe7\xb9\x6b\xe2\x66\x7b\xfe\xd9\x38\x4d\x2b\x2c\x0c\x5f\xa9\xef\xe5\x86\x0b\x7f\x2b\xa5\x73\xd8\xad\xe9\xb0\xf4\x30\x73\xf7\xcf\xce\xdd\x95\xca\x6e\x04\x5d\x65\xc3\x8e\xa5\x2e\x11\xcf\x28\x78\x41\x19\xbc\x73\x91\x72\x65\xfe\x9f\xdc\xdf\x7f\x0f\xc6\xe7\x4a\x78\xc9\x13\xcc\xb0\x8e\x64\x0d\x63\x48\xda\x2e\x41\x3c\xfd\xce\x58\x7a\x82\xae\x31\x78\x2b\x52\x33\x4d\xa6\x3a\xb1\x31\x0e\x8a\x2d\x9b\x58\x07\x12\x43\x74\xc1\x98\x3f\xe3\xe3\x96\x27\x0f\x77\x2d\x1b\xb3\x2c\xcd\x6f\xa2\xf5\x53\x87\xa9\xec\xff\x6d\x2a\x11\x74\xd3\xbd\xc3\xaa\x8d\x1f\x5b\xd4\xfb\xde\x2d\xd5\xbc\x4c\xa8\x52\x32\xe1\x8d\x13\x01\x8c\x0d\x35\x79\x1f\x3e\x3a\x20\xfb\xd3\xa7\x0f\x1c\x7a\x12\x0f\xf2\x07\xe5\xbb\x8c\xaa\x36\x6f\x19\x89\x61\x76\xab\x9f\x3c\x65\x8b\x12\xe8\x1a\xe8\x1f\x3b\x55\xcf\xbd\x7c\xd6\xb5\x7f\xd7\x41\xee\x01\x02\xed\xe5\x26\xdf\xc9\xf0\xe0\xc8\xea\xea\xe7\xce\xb5\x7a\x12\x4b\xb9\x93\x68\x7a\xff\x56\xf3\xad\xfe\xbf\x0e\xc9\x74\xe3\x32\xf2\x60\xb2\x4b\x9f\x36\xbc\xe7\xb4\xb3\xbf\x39\xd3\x38\x84\x08\x15\xb2\xa8\x32\x1b\xbb\x31\xe0\xf0\x39\x2c\x20\x3f\xc9\xc2\x6a\xbf\x3d\xa9\xb9\x7f\x64\xb5\xd4\xf1\x90\xf2\x83\xc2\xa9\x21\x3a\xdc\x16\xc5\x47\x0a\xa7\xb6\x24\xaa\x6f\xfe\xf4\xc7\x3f\x8e\x54\x98\x1f\x2e\xb1\x1a\x2e\xa5\x3a\x08\x15\x13\x4a\x3e\x14\x22\x3e\x2c\xdb\x0d\x84\x8e\x07\x43\xc2\x87\x79\x43\x28\x54\xfc\x38\x35\x56\x47\x2d\x93\x13\x72\xac\xea\x0c\xaa\x91\xad\xc2\x64\x56\xf5\x64\x1e\x0d\x42\x1c\xcf\xa7\x1a\xc9\x96\x1a\x86\xd8\x93\x45\x85\xcc\x91\x1a\xf5\x60\x34\x6e\xfc\xa8\xcc\xa8\x61\xa7\xd0\xfa\xd8\xf9\x50\x91\x59\x50\x4d\x8e\xd3\x20\x44\x7c\xee\xd3\x41\x66\xd3\x30\x43\xc3\x65\x3c\xc5\xd4\xf8\x0d\x67\x37\x21\x32\x97\x70\x91\xbb\xc1\x2c\xa5\x67\xe5\x26\x21\x43\xc2\xc2\x79\x48\x31\xac\xa2\xc9\x2a\x1a\x05\x49\x30\x39\x47\x87\xb9\x44\x01\x98\x23\x99\x46\xc3\x19\x44\x01\x98\x11\x4c\xa1\x45\xfc\x03\x40\xe3\x58\x03\xec\x71\x00\x62\x38\x97\x08\x9f\x41\x84\x0d\xa0\x0c\x07\x4f\x46\xe5\x08\xf9\xdc\x9f\xc0\x4a\x31\x99\x41\xfb\x19\x3f\x08\xbc\xe9\xcf\x07\x1a\xce\xf3\x09\x80\x0c\x67\x01\xa1\xae\x67\x38\x5a\x73\x3c\xcf\x27\x10\xc7\xf9\xec\xf0\xcc\x70\x56\x49\x7c\x2e\x49\xcd\x23\xc6\xc4\xcc\x91\x14\x12\xac\x71\x0c\xdf\x85\xaa\x6d\xfd\x71\x0a\x81\x17\x41\x6d\x90\x4c\xd3\x51\x6a\x84\xef\x57\x03\x0e\xc2\xe3\xa8\x04\x24\x8c\x52\xe3\x4a\x92\xfd\x92\x0c\x37\x59\x74\x5a\xff\xfb\xfb\x3d\x67\x42\xfd\xf3\x9e\x0f\xc1\xd0\xb7\xde\x09\xcf\x3e\x84\x81\xf1\xb9\xfb\x1f\xcd\x86\xf0\x43\x43\xb8\xea\x14\x8f\xf1\x66\x00\x2b\xe7\xac\x65\x49\xe4\xca\x95\x97\x1c\x95\xa0\x9b\x4b\x71\x79\x77\x6b\xf4\x68\xc8\x06\xa2\x99\x5a\xf6\x65\x4a\xa7\x81\xe8\x1b\x90\x94\x1a\x7d\x83\x6a\xcd\xf2\x42\x0f\x1f\xfc\x6c\x07\xff\xec\x76\xf0\x48\xe3\xde\x8f\xf5\xe3\x75\x4b\xce\x2a\xa7\x62\x61\x6e\x14\x58\xc4\x3b\x4e\x33\x8f\x4c\x01\x05\x78\xe9\x9b\x63\x5b\xbe\x04\x26\x12\x08\x8e\xb7\xad\x8a\x1a\x2d\xa6\xe9\x15\xf9\x7c\x5b\x26\xc0\x89\x5c\xb3\x65\x99\x7b\x37\x2d\x91\xfb\x31\x9c\x83\xcb\x75\x0b\xa9\xf7\xc5\x5f\xaa\x16\x3f\xee\xe8\xc3\x7a\xcb\x2c\xdb\xbe\x93\xe9\xd9\x30\x72\x35\x6f\x77\x35\x07\xab\x3a\xd0\x2c\x93\x4f\x76\xae\x6d\xae\x65\xce\xc9\xcc\x7d\x94\x22\x00\xed\xce\xb9\x51\xa2\x9d\xcd\xb5\x3d\x7d\xeb\xfb\x34\x9a\x09\x2b\xad\xf8\x5d\x3a\x97\xd9\xfd\x48\xf0\x4d\x0b\x85\x8c\xa2\x2a\x6c\x88\xb3\xf9\x6f\x1f\x7d\x63\x2b\x19\x3b\xd7\xc1\x8a\x6d\xe9\x23\x97\xd5\x48\xf6\xe1\xbd\xa5\x74\x2f\xdc\x2b\xc0\x66\x76\xb2\xaa\x4d\x6d\xb6\x55\x66\xbd\x4b\xea\xf0\x1c\x06\x41\xbf\x6b\x5e\x02\xe5\x29\x95\xde\x36\xb1\x60\x9f\xb8\xd2\x87\x7b\x12\x2a\xb0\xe3\x6b\x09\x9e\x40\x24\x7a\x54\x85\xe1\x61\xc8\xc6\x78\x3f\xb6\x9f\xee\x8a\x46\x8f\xf7\xf0\xa7\x5f\x4a\x5b\xbc\x59\x38\x6a\x8f\xda\x41\x96\xf1\x64\x87\x6c\x0e\xd7\x38\xc6\xcc\x4b\xe4\x2f\x54\xb1\x94\xbc\xa5\x82\x6e\xac\x7e\xf9\xf2\xfe\xee\x2f\x6f\x5f\x99\x43\x1b\xad\xb2\x7d\x7b\xdd\xeb\x55\xbb\x6f\xcf\xe8\xdd\xf4\x7c\x86\xbd\xb5\xa1\x99\xd6\x91\x56\xf7\x8c\x4c\x0c\xcf\x78\xc6\xaa\x21\x1f\x26\x6d\xee\xb7\xee\xdc\xbb\x96\x8f\x79\x7a\x92\xa6\x9c\xcd\x54\xe3\x08\xd0\xe0\x9f\xb6\x34\xeb\xe9\xde\x37\xe0\x9a\xae\x73\x18\x52\xaa\xe9\x8a\x2a\x60\x89\x16\x02\xd0\x1a\x9a\x65\x44\xae\xd7\x6a\x2b\xe5\x21\x05\x6c\x31\xb8\xa6\x76\x27\xfb\x64\xc4\x38\x72\xf7\xe3\x95\x15\x2d\x52\x43\xa0\x0e\x2f\xd8\xb0\x68\xde\x67\x71\xec\x53\x31\x20\x76\xea\x5e\x53\x91\xd2\x4c\x0a\xf6\xc2\xda\xe1\x1d\x73\xba\xca\x2a\xa5\x59\xf9\xe2\x9c\xb8\xff\xba\x2f\x58\x72\xb0\x00\xae\x9a\xea\x97\xb6\x1c\x68\x0a\xae\xa1\xf2\x91\x95\xaa\x9d\x98\xcd\x05\x49\x2c\x9c\x3e\x6f\xcc\xe0\xf9\xbb\xb0\xbd\xd1\xd5\xbc\xb5\xcf\x98\xb9\x18\x39\xc2\xbf\xd3\x3a\x10\xa1\x34\x3d\xac\x60\x30\x46\xd2\xe9\x86\xf5\xa7\xc6\x8d\x62\x2a\x2d\x37\x61\xf5\xfe\xec\xb2\xdc\x54\xb9\x6d\x87\x6a\x23\x80\x98\xd0\xe5\x0e\xb2\x95\x6d\x5e\x7b\x2a\x93\x07\x23\xa1\xe4\x74\xc3\xce\xce\x14\xb9\x7a\xdb\xd7\x83\x92\xd4\x0b\xe6\xfd\x01\x3f\x4b\xf2\x23\x2d\x39\x48\xb9\xad\xa8\xa3\xdf\xbd\xfc\xf1\xf2\xc3\xcf\xef\x2e\xdf\xde\xf4\xd7\x6a\x35\x18\xc7\x3e\x15\x14\xca\x54\xf8\xa6\xdd\xad\x92\xb4\x66\x42\x4c\x3c\xf2\x52\x8a\xdc\x15\x93\x03\x1b\xb3\xfd\x52\x2f\xc8\x04\xea\xe5\x5b\xa7\x84\x92\xd9\xa3\xf7\xf1\xd4\xb3\xf2\xd6\x1e\x2e\x8a\x4a\x7b\xcf\xc0\x98\x60\x52\x89\x64\x4b\xc5\xc6\x97\x12\x6e\xad\x89\xa8\x9d\xd0\xf4\x93\x37\xf2\x32\x95\xd0\xc2\xd3\x76\x4a\x52\x59\x0d\x4d\xf2\x77\xbf\x3b\x27\x9c\xbd\x21\xbf\x6b\x01\x5b\x92\x1b\xf7\x7e\x6b\x03\xad\xdf\x88\x3d\xb2\x12\x3e\xe0\xb6\xaa\x9f\x9f\x96\x6c\x43\xcb\x34\x73\x91\x82\x6d\xab\x9c\xdf\x30\x02\x62\x99\x22\xb2\x34\x67\xb7\x24\x57\xf5\x5e\x55\x45\x3a\x2c\x78\xe1\x34\x42\x4d\xd5\x83\xba\xe0\xc2\x50\xb8\x85\xb9\x0e\x0b\x5a\x18\xa6\x0e\x52\xef\x85\xb5\xf2\x2d\x20\x19\x55\xa4\x0b\xea\xd0\x72\x51\x1f\xf5\xc5\x6f\xcb\x4a\x18\x15\x7c\x41\xeb\xa7\xb8\x58\xd0\x85\xda\xb2\x01\xab\xc3\xb5\x11\xcb\x0c\x61\x4c\xdf\x80\x26\x5f\x94\x32\x37\x8b\xae\xd4\x92\x7d\x02\x49\xa5\x5c\x9a\x5b\xd2\xa7\x26\x8e\x38\x91\x50\x52\x66\xbf\x0d\x95\x89\xc7\xf0\x95\xfc\xde\xf5\xf1\x68\x21\x76\x7d\x42\x2e\x87\xb3\x36\x49\xd6\xdb\xd3\x7f\x32\x87\x07\xd8\xda\x14\xd4\xfe\x30\xf1\x18\xb9\x3d\xdd\x42\x23\xe2\xf1\x47\x5a\x76\x04\x64\xd1\xbb\x30\xef\xb1\x1c\xf2\xe9\x19\x0d\xf6\x6a\x7c\xb1\x61\x03\xc8\xb8\xf9\xa3\x33\xf1\xb6\xed\xa3\x6f\xbe\x6d\xf9\xf8\xea\xe7\xdb\xeb\x9b\x77\x1f\x6f\xbf\xbd\xbd\xf9\x30\xac\x0d\x21\x0c\x0e\x60\xf2\x41\x4e\xf0\x2c\x40\x4f\x3b\xb4\x73\xc4\x0e\xd2\x50\xd5\xa2\x64\x46\x57\x54\xde\xe2\x3e\x80\x80\x16\xf3\x46\x20\xd6\x38\x69\x45\x0e\x51\x27\xb4\xf7\x03\xc4\x10\x6d\x07\x78\x32\xe9\x1e\x01\x6a\xee\xc6\x14\x02\x3e\x02\xd2\x93\xf6\x29\x64\x7c\x7c\xa6\x35\x81\x8f\x22\xe6\x23\x30\x81\xcc\xb7\x8d\xbc\x2f\x5e\x8c\x78\x16\xb1\x28\xfc\x6d\x29\x07\xa3\xf4\xf6\xd5\x0b\x5b\x6b\xda\x05\x82\xf7\x62\xc8\x99\x72\x91\x19\x23\xeb\x68\x11\x3a\x27\x84\xf8\x24\x7d\x90\x42\x58\x5e\xe8\xc1\x20\xf8\xe8\x76\xbb\x7f\x65\xbb\x60\x9d\xfd\x3d\x43\xb3\x2f\xae\xff\xc0\x76\x36\xb4\xaf\x6e\xb8\x35\xee\x37\xc4\x17\x05\x43\x15\x41\x1d\x0a\x31\xb0\x75\xbe\x8f\x5a\xa2\x6a\x2e\xf5\x37\x30\xbe\xe6\x52\x7f\xd3\xda\xc0\x9d\xb0\xda\x1f\xb6\x80\x51\xa8\x2a\x21\xb2\x6a\x20\xae\xb9\xd7\x50\xe7\x8c\x4e\x8c\x1b\x34\xe8\x72\x16\x31\x45\x72\xa6\xa9\x91\x79\x97\x06\xf1\x82\xd1\x32\xed\x87\xc1\x80\x7a\xde\xfc\xe6\x3b\x7c\xd5\x3f\xb4\xfb\x7f\x05\x00\xab\x82\x25\x4b\x21\x53\x30\x20\x9f\xdb\x7f\x76\x8b\x1a\xba\x3f\x68\xaa\x2b\xb5\xdc\x4a\xa5\x6f\xef\x82\x40\xed\xc3\x85\x4c\x6f\xef\x02\x51\x29\x11\x25\x0e\x23\x5a\x83\xc5\x36\x04\xc3\x55\x5b\x3f\x52\x1b\xb0\x88\x7b\x1c\xd1\xf2\x0b\xdb\xe8\xeb\xa0\x79\x17\x62\xe1\x51\xed\xbd\x8e\x5e\x89\x0c\xd7\xc0\x0b\x79\x9d\xe3\x5a\xe3\xc4\x37\xc4\x01\x47\x5b\x60\x8f\xf0\x6d\x70\xf6\xda\xdb\x04\xe0\xba\x87\x59\xb1\x65\x39\x2b\x69\xb6\x70\xe6\xdd\x6e\x5b\x9c\xf3\xfd\x9e\x38\xa1\x7b\xd7\xee\xa2\x73\x00\xfb\xd5\xc4\x46\x39\xf8\x7b\x1f\xd9\x14\x07\xdf\x0a\xa7\xae\xde\x84\xb8\x01\x13\x1b\xe0\x44\x5c\x75\x74\xb3\x1b\x6c\x8b\x9b\xbd\xb6\x35\x88\x45\xf6\x37\xb6\x41\x35\xab\x89\x58\x28\xbe\x31\xcd\x31\xdb\xd1\x1c\x9d\x2a\xa1\x1a\xce\x44\x75\x63\x39\x86\x0e\x71\x18\x9d\xa6\x90\xfd\x3e\x3f\x87\x5a\xd1\x0d\xa1\x6b\x58\xd2\xba\x94\xf9\x92\x60\xbb\xc1\xf9\xa0\x61\x9e\x7a\x48\x0f\x6c\x44\x93\xf3\x63\x56\x54\x7e\xdd\x8a\xca\xd7\x55\x93\xfc\xb3\x6a\x29\xc1\x87\xc6\x67\xb3\x00\x84\x1f\x31\x6c\x0f\x42\x1e\x33\x6c\x37\xa6\xe3\xbe\xaf\x86\xc8\x8d\xb7\x36\x0f\xed\x1f\x86\x5c\x0d\xb9\xbb\xfc\x78\x9e\xdb\x6b\xf4\xd8\xae\xde\x5e\x4f\x72\x7f\x8d\x02\x1d\x32\xe5\x62\xdc\x60\xa3\x80\x3b\xd6\x56\xb4\x4d\x75\x14\x64\x9f\xab\x2c\x6c\x55\x1d\x05\x39\xe6\x32\x1b\xb7\xab\x06\x6e\x6a\xc8\x75\xd6\x6f\x59\x1d\xbf\xb6\x51\x2e\x34\x4c\x29\x1b\x32\x5e\xa6\xef\xa4\xae\xb4\x31\x92\x8f\x68\x21\x85\xe4\x07\x98\x9e\x21\x03\xde\x32\x3f\x3a\x37\x3a\xc2\x69\x36\x8e\x77\xb5\x8f\x09\xeb\xfd\xb4\x03\xb1\x33\xd3\x1c\x63\x01\x36\xd5\x4a\xf4\x0b\x3a\xc8\x9a\x77\xb0\xd2\xdf\x04\xd9\x08\xe7\x38\xc3\x4a\x7e\x38\xd7\x9a\x1f\x11\xb2\x48\xc0\xd5\xd6\xbb\x34\x8c\xcb\x0d\xb1\xb0\x1e\x4a\x3e\xe6\x7a\x43\x40\xdc\x77\xce\xe1\x5c\x70\x31\x80\x97\x38\xb6\x81\xd2\x3b\x11\x71\x16\x2d\xe6\x81\x91\x7d\x8f\x14\x75\xd1\x1d\xc7\x75\xde\xf9\x11\xe9\xc4\x43\xa1\x53\x87\xe1\xa0\x9d\x79\x7e\xc4\x5e\x9a\x71\xe7\x9e\x1f\xf1\x4e\x3e\x14\x3a\x42\x82\xf6\xf3\x9c\x7d\x7e\xc4\x75\x19\x8c\x72\xfe\xf5\x6f\xc2\x64\x27\xe0\xb4\x19\x93\xb8\xce\x88\xcf\x77\x0e\xfa\x31\xa1\x05\x30\x8e\xcf\xf4\x4e\x34\xa8\x8b\xa3\xc1\xe2\x2a\x23\x1f\x55\x6b\xf7\x03\xaf\xbd\x47\x00\xc5\xe5\xc1\x74\xc7\x84\xb3\xc3\x6b\xf5\x7e\xe0\xdd\x90\x11\xab\x6d\x4c\x01\xd1\x8a\xbe\x1f\x78\x85\xdf\x8f\xb8\xd6\xd5\xd8\x2e\x7d\xd1\x1d\xab\x71\x6e\x4b\x3f\xe2\xdd\x97\xc8\x1d\xec\x3a\x39\x51\x6e\xcc\x58\xc8\x6d\x67\x27\xd6\x9d\x89\xfc\x46\xd7\xe9\x19\xe3\xd6\xf4\x23\x9e\x3e\xc7\xb8\x39\xfd\x88\x75\x77\x46\xdc\x21\xae\x8e\xe5\xf6\xf4\x63\x02\x3d\x89\x70\x83\xfa\x11\xe1\x0e\x8d\xd8\x8d\x6e\xe9\x96\x28\xb7\x68\x0d\x22\x76\xf9\xb1\x04\x05\xe7\x2e\xed\x4e\x27\xa2\x11\x7e\x8c\xfb\xd4\x8f\x78\x37\x2a\x96\xd1\x88\x6c\x17\xe1\x4e\x45\x42\xed\x3a\x5d\xb1\x6e\x55\x24\xf0\x3d\xe7\x6b\xc8\xbd\x8a\xa5\x1a\x93\x9c\xb0\x7e\xc4\x53\xa9\x48\xa7\xac\x1f\x78\xe7\x6c\xc4\xa5\xac\x9b\xf0\x4c\x74\xd2\xfa\x31\x81\x30\xa1\x9d\xb6\xf5\x0b\x78\xe7\x6d\x24\x59\x72\x6e\xde\xe7\x38\x71\x6b\x70\xf1\x1b\x81\x77\xea\xfa\x71\x4c\xe7\xee\xe4\x89\xc7\xd2\x56\x94\xd3\xb7\x3b\x1b\x34\x69\xc5\x3b\x81\xfd\x88\x72\x06\x23\x37\x31\xc6\x65\x5c\xbf\xf3\x05\x94\xd0\x01\x57\x72\xc4\xa5\x69\x39\x9d\xa7\xba\x94\xfd\x98\xd5\xdb\x59\xbd\x1d\x1d\x78\xe7\x75\x8c\x68\xfe\x8f\xa9\xdb\xa2\x1f\xc6\xba\xe0\x07\x9d\xdf\x91\x5f\xc4\xf8\xaf\x8c\x58\x86\x76\x60\xdd\xc9\x52\x13\x51\xe5\x2b\x56\x36\x86\x52\xe7\x17\x27\x8a\xa7\x8c\x24\x74\xd4\xaf\x83\x2d\xf9\x86\x2b\xf8\x56\x4b\x16\x78\x9f\xfa\x95\xcc\x8b\x4a\x33\xf2\xa1\x16\xd1\x6b\x19\x6f\xb5\x6b\xd6\x12\x48\x59\xf3\x63\xd4\x71\x8a\x22\x65\xbe\xc0\xb3\xf5\x8a\xe6\x90\xb2\xbe\x48\xec\x24\x17\xf5\xfa\x5a\x6e\xd1\x31\x3a\x82\x65\x7b\x56\x7f\x08\x86\x37\xa7\x29\xb7\x64\xe5\x2e\x82\x9d\xc6\x04\x18\xee\x65\x14\x82\xaa\x64\x7f\x5c\x39\x11\x34\xa7\x9f\x78\x5e\xe5\x84\xba\x7e\x81\x61\x19\xd4\xed\x5d\x4b\x07\x83\xf2\x28\x5f\xfa\x68\x48\x2c\x9d\x30\xda\xd7\x57\x76\x42\x1f\xbc\x06\xbb\x77\x46\x5c\xb4\xce\x28\xf8\x79\xb9\xee\x39\x23\x7f\x09\xc1\x85\x57\x7f\x87\x2b\x22\x73\xae\xc7\xda\x69\xfa\x61\x6b\xdb\xd7\x67\x71\x4e\xb8\xee\x68\x1b\x0e\xbb\x20\xf2\x05\x4a\x8d\x07\x21\xb2\x4f\x75\x35\x8f\x56\x41\xac\xa6\x3d\x3f\x94\xb6\x21\x3c\x2f\x6c\x85\x46\xc0\x92\x05\x96\xe3\x39\x27\xd1\x2f\x04\x23\x51\x8f\x29\x96\x54\x25\xd7\x3b\xa3\x43\xb3\x4f\x78\x9e\x72\x76\xef\x5e\x6c\x15\x31\x05\xd3\xae\xaf\x6e\x5e\x56\xb6\xe9\xc2\x38\x29\x8e\xdc\xca\x02\x2a\x85\x5c\xf8\x49\xc3\x9e\xb1\x4f\xfa\xe2\x08\xdf\xb0\x81\x2f\x75\xe5\xfe\x45\x21\xd3\xd6\x91\x1c\x7c\xf1\x18\x04\x1d\x48\xdc\x5d\xc9\x1f\x79\xc6\x36\xec\x46\x25\x34\x03\x1c\x09\x11\x83\xbd\x78\xb3\x01\x28\x70\xad\x4a\x99\x29\x54\xa0\x11\xcc\xc7\xcc\x1c\x3a\xfb\x26\x54\x90\x0d\xe5\x82\xe4\x66\xef\x0a\x0f\x5c\xd9\x2e\xfe\xe6\x4a\x16\xb4\xc4\xf8\xf9\x1d\x40\x57\x2d\xd7\xc8\x88\x24\x85\x22\xec\xd9\xae\x99\x1f\xb7\x2a\x88\x90\x3f\x0b\xf6\xf4\xb3\xf9\x5a\xf8\x9e\xaf\x33\xda\xb8\xf4\x15\xab\x9b\xd2\x36\xe1\x09\xf5\xa7\x87\x36\x28\xf8\x0d\xae\x88\x2e\x2b\x46\x68\xf6\x44\x77\xb0\x8d\xfb\xdf\xe0\xea\x0d\x79\xfd\x0a\x70\x9d\x2a\x52\x7f\x23\x4c\x49\x7e\xff\x8a\x6c\xa9\x22\x57\x97\x77\x3f\xdf\xff\xdb\xfd\xcf\x97\xd7\x6f\x6f\xdf\xe1\xae\x3d\x46\xce\x4e\x68\x41\x57\x3c\xe3\x18\xce\x72\xa0\x15\xb7\x5f\x06\x72\x99\xa6\x17\x69\x29\x0b\xbb\x7e\x17\xde\x85\x60\xe8\x6e\x8f\xf6\xfa\x1b\xb6\x4b\x88\xc1\xb1\xad\x3b\x1f\x0c\xc2\xdd\x94\x54\xb4\xca\x40\x35\x47\x51\x56\x02\xda\x0b\x07\x20\xc4\xd8\x18\x68\x8a\xd2\x50\x3a\x3b\x78\x99\xa6\x2c\x8d\x5b\x12\x2a\xc2\xab\xf7\x63\x57\xfe\x33\xad\x0e\xf1\xe4\xee\xfd\xfd\xed\xff\x8e\x9d\x01\x71\xf8\x15\xa1\x66\xa1\x55\x5d\x8c\x3e\x53\x2f\xaf\x94\x45\xf4\x9e\x7f\x60\xb9\x7c\x9c\x77\xbd\xef\x71\xcc\xae\xa3\x05\xdc\x9a\x0f\x04\xaf\x45\xf7\x78\x2a\xd1\x26\x99\xa2\x05\x07\x6a\x24\x2d\xc9\x9d\x25\xd5\x88\x3d\xeb\xbe\xdd\x10\x19\x1b\xc7\xac\x94\xad\x8a\x9a\xed\x88\x91\x4c\x1f\x69\x86\xe1\x51\x5a\x92\x52\xca\x4e\x5b\xf3\xbe\x9e\xac\x47\xa3\xce\x86\x31\x41\x35\xda\xa8\x5d\xac\xdf\x22\x29\x13\x52\x3b\x29\xde\x37\x2a\x37\x7f\x25\x38\x49\xbe\x55\x7b\xb6\x43\x41\x95\x8b\x4e\x6f\x6a\x66\xb9\x3d\xb8\xf3\x5f\x0e\x82\xb6\x7d\x22\x2a\xe5\x26\x77\x40\x9c\x1b\xd9\xde\x7c\xbd\x64\x34\x45\x64\x39\xda\xfa\xf0\xca\xf5\x77\x50\x0f\xbe\xd7\x85\x93\x29\x9c\x0e\x62\xbf\x58\x4f\xf5\x23\xe6\x56\xad\x19\xd5\x55\xc9\xac\x2c\x61\x4b\xfe\xd9\x3e\x62\xc1\xd0\xc0\x88\x2c\x30\x5b\x8f\xf8\x83\x94\xba\xa9\x87\x18\x75\xf0\x3f\xd5\xe6\x3d\xae\x5a\x5b\xba\xa5\xd6\xf3\x49\xd3\x05\x6a\x13\x01\xc5\x9b\x72\x8b\x9d\x1e\x60\x47\x46\xf0\xb2\x12\x97\xb6\x27\x41\xb4\xf0\xf1\xdd\xed\x35\xdc\xc7\x4a\xec\xa5\x4e\x1c\xb8\x76\xf1\xa2\xe7\x0f\x06\x1f\xf7\x30\xd0\x15\x75\x64\xda\x56\xe7\xa7\x99\x92\x63\xc5\x41\xfd\x70\x91\xde\x77\x32\xbd\xef\xea\x4d\xb6\x62\xac\xfb\xf3\x4a\xea\x2d\xd9\x7b\x20\x2c\x6c\x88\xb4\x07\xee\xb9\x0b\xd9\xcc\xaa\x76\xc0\x00\x17\xd1\xe0\x35\x7d\x60\x8a\x14\x25\x4b\x58\xca\xc4\x70\xa5\x5e\x3f\x5a\x26\xbf\x3f\xfd\x11\x85\x19\xe1\x3e\x0f\x0e\x33\xde\x49\x61\xae\x43\x14\x6e\xf4\xd4\x21\x6c\xae\x02\x18\xae\xad\x0c\x8e\xd0\x71\x84\x14\x0b\xb8\x0c\x95\x6f\x33\x6d\x84\xfc\xf3\xba\x10\x6f\xe6\x7b\x06\x81\x1f\x87\xea\x30\x56\x40\xa8\x31\x74\xf5\xa7\xba\x46\x34\x68\x4a\xa8\x0c\x79\xb1\xa6\x0b\x4d\x52\xc9\x6c\x14\x69\x59\x85\x75\x0f\xaa\xc8\x0f\xb7\xd7\xe4\x1b\xf2\xd2\xcc\xf5\x15\xa0\xc7\x9a\xf2\x0c\x5c\x54\x50\x69\x70\x4f\x13\x09\xdb\xd8\xdc\x14\x96\xae\xf1\x92\xcd\x71\x83\xab\x7f\x4e\x84\x24\xaa\x4a\xb6\x7e\xcd\xbe\x3b\x66\x10\xe6\x8a\x91\x82\x95\x06\x59\xc0\x54\xd7\x5c\xa5\xc0\x55\xc1\xde\xb4\xbe\xab\x34\x74\x55\x50\xe7\x14\xbe\x4a\xd1\x57\x25\x92\x30\xfe\x30\xd2\xbf\xda\x8f\x03\xba\xf8\xc3\x09\xe8\x62\x5b\xc4\x81\x8e\xab\x9d\x5d\xb1\x08\xed\xa3\xe3\xc2\xc8\xd5\x2d\x92\xfb\x0f\x8a\x0a\xa7\xa1\x9a\x8a\x7d\xcf\x45\xf5\xc9\x36\x4c\x8a\x57\xe8\xef\x6f\xe0\x75\x92\xf8\x45\xc1\xa1\x40\x5a\x97\x2d\x75\x8c\xf1\xea\xb7\x92\x97\xf6\xfb\xb6\xf5\x8b\x7a\x28\xf2\x41\xb3\x4c\x1a\xb2\x6e\x24\x19\x2a\x52\x99\x1f\x4c\x16\x42\x70\x68\xb2\x6d\x4f\xc0\x20\x17\x02\x34\x06\xf9\xda\xc8\x15\x04\x89\x44\xbe\x06\xb9\xc2\xa8\x7d\x4c\xe4\x8b\x31\x6d\x64\xec\x91\xa1\xfc\xce\xdd\x4c\x38\xf3\x96\x11\x18\xfd\x29\x01\x18\x02\x01\xb7\xae\x89\x15\x60\x15\x4e\xf7\x75\xd6\x20\xa4\xd3\xce\xbd\x13\xa3\x04\x97\x32\x43\xc5\x46\x74\xb5\x55\x99\x41\xba\x07\xad\x17\x69\xc0\x7c\xb5\x6b\xd4\x23\xd5\xd8\x07\xd7\x68\xb4\xa3\xee\x1a\x41\x8f\xfc\x5a\xd7\x58\x21\x38\xe6\xc1\x1a\x0d\x9b\xed\xae\x11\x78\xdc\xd7\xb9\x46\xb4\x09\xe6\x89\x8b\x54\x3e\xa9\xa9\xac\xe0\x27\xfb\xba\xa7\x3b\x89\x6f\x93\xa3\x5a\xec\x00\x43\xb4\x3b\x56\x83\x3e\x7e\xe0\x9d\x42\xeb\x52\xe6\x28\xfe\x72\x48\x47\xf7\x9a\x66\xfc\xba\xd4\xab\x18\x5a\xbd\xc9\x15\xbd\xaa\x3b\xfe\xdc\x17\x2c\x89\xbe\x0c\xdf\xbd\xbd\xbf\xec\x82\x80\x80\x7c\xa8\x5a\x6f\x76\xc0\xfc\x1d\x75\x0f\x68\x9a\x73\x05\x69\x01\x4f\x6c\xb5\x95\xf2\x81\xbc\xf4\x3e\xb5\x0d\xd7\xdb\x6a\xb5\x4c\x64\xde\x72\xaf\x2d\x14\xdf\xa8\x0b\x87\xb5\x0b\xb3\x12\x5c\x24\x32\x17\x19\x17\x2d\x33\x12\xa4\x31\x3b\x51\xd7\x4c\xb6\xd5\x02\x09\x0e\x0e\x05\x54\xd0\xbc\xf1\x1c\x1c\x6e\x09\x84\xc3\x41\xe0\x98\x35\x2d\xa1\x60\xda\x34\x00\x68\xe7\x52\x6c\xe9\xc2\x32\x44\x83\x6c\x5c\xd9\xa8\xf2\xad\x14\xd2\xc5\xa9\xb8\x72\xf1\x38\x82\x63\x28\x94\xb5\x46\xc1\x74\xdd\xcd\x85\xb5\xb7\xed\x56\x47\x27\xb6\x87\xd8\x86\x0d\xcd\x0e\x60\x5c\xbb\x39\x51\x30\x54\xca\x8f\x91\x23\x77\x6a\x8b\x33\x03\xc2\x39\xe0\x50\xeb\xd7\x73\x56\xb5\x3e\x39\xe9\x88\x40\xaf\x74\x2f\x1b\x9a\xe7\x99\x43\xa3\x67\xa2\x56\x3f\xa2\x8b\x1e\xea\x9a\x31\xcc\x36\xa4\x93\x22\x1b\xb3\x74\x07\x52\x2f\xb5\xdc\x06\x49\xaa\x8e\xab\x9a\x92\xd3\xa9\xa7\x76\x34\xf7\xa5\xf7\x2e\xe8\xfd\xeb\x80\x02\xda\x5c\x99\xa1\xeb\xf0\xa1\x8d\xac\x38\xda\x7a\xba\xbb\x73\xbc\x10\x9a\xe0\x23\x46\xc3\x2f\x1f\x91\x8d\x4d\xcf\x6e\xdd\xd3\x84\x6a\xe7\x4e\xc9\x99\x2e\x79\xa2\x7c\x5c\x8d\xc1\xdb\xa4\x84\x42\x01\xad\x22\xfb\x83\x6b\xf0\x42\x54\xe9\x7c\xa4\x50\xcc\x63\x5d\xc1\xbe\x96\x2c\x63\x54\xb1\x89\x5d\x40\x89\x95\xa5\x07\x05\x98\xb8\x30\x37\xc4\xd9\xed\x05\x1e\xc2\xc7\xc1\xef\xf7\xc0\x76\xa4\xe9\x19\xaf\x7c\xac\x98\x4d\xe1\x0f\x87\xf4\xdf\xd5\x05\xa6\xea\x0e\x2a\xe4\x91\x53\x72\x6f\xf3\x3d\x7d\xdb\x15\xbb\xda\xe5\xe7\xd9\xf5\x11\x7c\x12\x51\x4d\xf2\xce\x9a\xfe\x78\x72\xdd\x5a\xea\xd2\x2f\xcf\xb7\x91\x51\xe3\x16\x9b\x15\xf3\x1d\xd2\x6c\x1e\x08\x6f\x25\x77\x74\xf6\x64\x7f\xed\x83\x10\x8f\x89\x89\x63\xe1\xd0\xdd\xed\xc0\xc5\x42\xa3\x0e\xb9\x52\xcd\xab\x4b\xf3\x7f\x43\xd3\xc7\x84\x4f\x87\xac\x81\xa3\x68\x31\x1a\x51\x7d\x8a\x48\xea\x2f\x10\x41\xdd\x3b\x0f\x4c\x9b\x91\x1a\x58\xdf\xf1\x84\xf4\xb0\xf1\x98\xeb\x53\x93\x38\x54\x6c\xb5\x8f\xcb\x1d\xfc\xee\x57\x14\x53\x8d\x2a\x30\x38\x16\x43\x7d\xe2\x1d\x47\xc5\x4a\xc7\xed\x79\x28\x46\xfa\x20\x06\x7a\x98\x60\x06\x62\xa3\x43\xb1\xcf\xc3\xdb\x34\x12\x13\xfd\xa5\x63\x9e\x51\x85\x23\x87\x5a\x91\x87\x63\x9b\x27\xc6\x34\x87\x92\xe4\x9e\x13\xcb\x0c\xb0\x07\x24\xc9\xe3\xc6\x30\x4f\x26\xa9\x7b\x1b\x3b\x85\xb0\xc6\xc6\x3e\x4f\x8c\x79\x6e\x62\x9a\x07\xb1\x1f\x1b\xeb\xdc\x13\xcb\x3c\x08\x13\x15\xe3\xdc\x17\xc3\x3c\x7c\x47\xe3\x62\x9b\xf7\x62\x97\x87\x05\x55\x7c\x4c\x73\x54\xcc\x72\xd8\x27\x8e\x89\x51\x9e\x16\x9b\xdc\x36\x4e\x0f\x2e\x3c\x22\x26\x79\x2f\xe6\x78\x18\x91\xb0\xb1\xc8\xa8\x9a\xb3\xe3\xb1\xc7\xd3\x63\x8e\x63\xab\x49\x22\xa3\x5d\xc3\x71\xac\x47\xac\xde\x19\x8a\x12\x7e\x4e\x74\xf0\x2f\x7f\x7f\x82\x42\x56\x38\x8e\x77\x6a\xfc\xee\x58\x15\x9c\xd8\xb8\xdd\x56\x5c\xee\x28\x55\x8c\x8c\xd7\x0d\x53\xa6\x60\x7c\xee\xa4\xb8\x5c\x67\xae\x1e\x5c\xca\x84\x78\x5c\x6b\x20\x1a\xd3\x4f\xa3\xe2\x70\x9b\x38\xdb\x41\x90\x51\xf1\xb7\x1d\xfb\xdd\x98\xf0\x19\x8e\xbb\x0d\xde\x8d\xb8\x38\xdb\x09\xf1\xb5\x07\xf1\xb3\x21\xce\x12\x8c\xab\x0d\x23\x62\x38\x8e\xf6\x14\xf1\xb3\x13\xe2\x66\x9d\x25\x7d\xd8\xc2\x16\x1f\x2f\x1b\x6d\x3e\x3f\xb2\xc9\x1c\x13\xc9\x15\x8e\xe0\xc2\xc4\xbb\x4e\x8a\x73\x6d\xc5\xb1\x8e\xdd\x7f\x54\x7c\x6b\x6f\xfc\xea\xd8\x7d\x1d\x89\x6b\x1d\x8b\x5b\x1d\x04\xd9\x1f\xcf\x8a\x89\x57\x1d\x04\xb9\x17\xc7\x7a\xfc\x38\xd5\x09\xa8\x8b\x88\x0b\x3b\x0a\xea\x22\x09\xcb\x58\x1c\xea\x29\xe2\x4f\x27\xc5\x9d\xa2\x7d\x7c\xf8\x23\x9d\x14\x46\x72\xa2\xf0\x91\xcf\x4b\x8d\x70\x71\xa4\x93\xe2\x47\x31\x91\x51\xf8\xb8\xd1\xc3\xb8\xd0\x41\xa0\xd8\x78\xd1\x5f\xf1\x7d\xc7\xa8\x93\xc1\x78\xcf\x69\x71\x9e\xa1\x70\x31\x74\xcc\x1c\x4a\xf9\x09\xc5\x73\x4e\x8b\xe3\xfc\xbc\x6b\x08\xc5\x6b\x4e\x8b\xd3\xfc\xbc\x6b\x08\xc5\x63\x4e\x8b\xc3\xfc\x9c\x6b\x08\xaa\xc8\xb8\x38\xcb\x49\xf1\x95\xfb\xf1\x93\x51\xf4\x72\x3f\xae\x72\x28\x6e\x72\xcc\x8f\x8b\x89\xa7\xfc\xd2\xe2\x37\x86\xa6\xc5\xc5\x45\x46\xc7\x43\x36\xb1\x8e\xa3\x68\x79\x9a\x38\xc8\xd8\xf8\x47\x1b\xdb\x38\x0a\x12\x1d\xf7\xd8\x1b\x1b\x34\x0a\x7a\x3c\x86\x6e\x2c\x3e\x6e\x14\x2c\x36\xfe\x07\x45\xb4\xe2\xe3\x1a\x23\xe3\x19\xdb\xc7\x33\xba\xac\x70\x1c\x63\x4f\x5c\xd6\x38\xb6\x7c\xe5\x7b\x8f\x8e\x53\x8c\x8c\x4f\x6c\xe9\x21\xa3\x8b\x09\xc7\x25\xf6\xc7\x1c\x06\xae\x68\x40\x57\x41\x8a\x9d\xa3\x1f\x39\x32\x95\x26\xa7\x8a\x2d\x8c\x8d\x29\xc4\x86\xd8\x62\x62\x09\x8f\x89\xab\xd3\xdd\xcd\x83\x7f\x2a\xa8\x61\xb8\xfb\x58\x1f\xb2\xfa\x18\x84\x5a\x51\x05\x14\xc6\x42\x80\x9d\x74\xfe\xc4\x8c\x95\xfd\x6c\x5e\x48\x4d\xd4\x4e\x24\xd0\x98\xc9\xf6\x39\x52\x24\xa7\x29\xb3\x08\xce\xad\x68\xb2\xbf\x49\xc3\x16\x83\x42\xa6\x1f\x59\x5e\x64\x54\x1f\xdc\xdb\xbd\x12\x93\xf5\x73\x80\x00\xa2\x29\xa2\xdd\x09\x05\x00\xfd\xac\x90\xa9\x0d\xce\x3b\x98\xbe\x96\xae\xfe\x74\xbd\xfe\xbd\x47\xc6\xe4\x82\x66\x6f\xc2\x9e\xfe\x9f\x64\xf9\x90\x49\xda\xde\xd0\xb3\xb3\x56\x2f\xfd\xbe\x78\x87\x0d\xd7\xcb\x87\x3f\x83\xb7\x3d\x91\x79\x5e\x09\xae\x77\x17\xf0\x3e\x5f\x55\x5a\x96\xea\x22\x35\x18\x7f\x41\x0b\xbe\x48\xa4\x78\x34\x34\x5e\x0a\xb5\xcc\xd3\xdf\x7a\xb8\x93\x3c\xe5\x4d\x5f\x8a\x2f\x14\x15\x73\xd9\xcc\xc0\x1d\x6e\x25\x94\x2e\xab\xc4\xdc\xba\xb4\x15\x7e\x99\xd3\x82\x28\x3d\x1a\x33\xec\x5a\x65\x35\xd5\xb9\x0d\xc2\xe7\x74\xe7\x69\x24\x04\xa1\x69\x56\x1a\xcc\xd1\x52\x66\xb6\xc1\x9e\x1e\x0a\x89\x20\x75\x63\x71\x5d\x72\xf6\xc8\x08\x2d\x57\x5c\x97\xb4\xdc\xb5\xce\xf2\xe3\x96\xed\xc0\xd1\x64\x6e\xc7\xdf\x2a\x56\xee\x80\x9e\x8c\x71\xd5\x26\xd8\x16\x5c\x7a\xe5\x23\x4b\xad\x8f\x39\x97\x29\x5f\xef\xb8\xd8\xb8\xab\xae\x0e\x50\xa5\x3f\x34\xc3\x30\x96\xc5\xa6\xe2\x29\xbb\x68\x1d\xe8\x29\xa2\x5e\xfc\xba\x11\xe1\x2e\x9a\x8a\x94\x96\xa9\x83\x34\x5f\x80\xa1\x8d\x9a\x2f\xc0\x2f\xe9\x02\xa8\x01\x4d\x70\x0f\xf9\x9d\x8a\x6e\xd9\x92\x93\x10\x53\xa6\x6c\x28\x2c\xdb\xd2\x47\x2e\xcb\x56\xcb\xa2\x7e\xc1\xe2\xb8\xb7\xc4\xcc\x7c\x41\x45\xba\xb0\x1d\x82\x26\x5d\x96\xf5\x9a\x9b\x2f\xe2\xbc\x4d\x6b\xb2\x67\x5f\xb0\x65\xfb\x55\xb2\x65\x69\x95\xb9\x58\x1a\xa5\x4b\xca\xc5\x60\xee\x0e\x46\x55\x17\x32\x65\x97\x81\x99\x1d\xcc\xee\xba\x8e\xc1\x34\xaf\xd7\x2b\x6b\xcf\xae\xac\x32\xa6\x82\x6d\x3e\x46\x4f\x10\xbf\x08\xfb\x1c\x5b\xb3\xb2\x64\xe9\x75\x65\xa8\xc7\x7d\x3d\x95\xdb\x0d\xc8\xb5\xf6\xe7\x9b\x4f\x2c\xa9\xa2\x2b\x79\x7e\x74\x5d\x96\xd2\xca\x8b\x77\xee\x73\x40\x01\xdc\x1f\x40\x78\x0a\x40\x05\x39\xca\xec\x99\x93\x27\x15\xd5\x5c\xad\xad\xfa\x5f\xef\x22\xfb\x64\x2e\xb6\x02\x9a\x86\x53\x78\x88\x37\x22\x78\x51\xff\x9c\xac\x2a\xf0\x00\x1a\xf2\x95\x6c\xa5\x91\xdb\xa8\x3d\x2c\xf8\xee\x23\x97\x46\x20\x0c\x4f\x57\x0a\x46\x64\x69\x03\xf0\x7c\x7f\xd7\x66\x7a\x36\x0e\xa2\x01\xcb\x15\xc9\x25\xa2\xcf\x6b\x7d\x56\x5e\x4b\x37\x9f\x01\xf2\x6b\xfe\xb1\x81\x6c\x06\xa5\x89\xaa\x72\x68\x91\xc9\xf8\x66\xab\x11\x6d\xc3\xf8\x92\x2d\x1b\x37\x43\x33\xad\x9c\x31\x0d\x21\xd6\xed\x8e\x59\x16\x39\x82\x30\x5d\x10\x85\x6d\x1b\xfe\xb2\xe6\x0d\x2e\x1a\xfa\xbc\x0e\x22\xde\xc7\xba\x20\xe0\xbe\xe3\x3e\x27\x4c\x27\xcb\x57\xe7\x75\x41\x67\x0a\x7b\xb0\xda\x11\xae\x99\x11\xd3\x31\x65\x07\xb6\xa5\xac\x36\x76\x27\x59\xe6\x26\x2e\xd7\x2d\xe4\xb0\xed\x61\xd3\xd4\x5c\xd3\x17\x76\x73\xc3\x9d\x63\x9c\x16\x6e\xa6\x53\x07\x4c\xa6\x86\xad\xea\x64\x5b\x5b\xc3\xca\x92\xa9\x42\x0a\x80\x0c\x7f\xb9\x69\xd6\xf6\x3f\x10\x33\xb7\x40\x5f\xaa\x57\x0d\x32\x6c\xf9\x66\xeb\x71\x81\x3a\x1b\xa0\xc1\xb1\x06\x87\x42\xf9\x67\xc8\x62\x92\xdd\xb8\x3d\x61\x1b\x8a\xb6\x30\xb5\x45\xdb\x34\x2b\x73\xbf\xf2\x20\x5c\x9b\x95\xef\x38\xb2\x5d\x17\xcf\x6d\x34\xb8\xc3\x6c\xf2\x0d\x79\x09\xa8\xcb\xf5\x99\x22\xe1\x82\x3e\x86\x68\x2f\x64\xf1\x6a\x49\x2e\x89\xa8\x6a\x5a\xf4\xbc\x49\x0a\x59\xcf\xd1\x4d\x46\x59\x0b\x09\xf5\x5f\x43\xdc\xea\x98\x26\x31\x45\xdd\x4c\x77\x42\xa1\xcf\x4b\x8b\x7d\x36\x7d\x4c\x96\xb0\xd8\x73\x42\x95\x92\x09\xa7\x98\xf2\xe6\x76\xd4\x58\xd6\x45\x5d\x7b\x2c\xa7\x6a\xcf\xba\x7f\x31\x26\xf6\x18\xb9\x24\x99\xeb\x7e\xde\xdd\x8a\x36\xc1\x42\x43\x06\xf6\x61\xe0\x9c\x29\x9f\x4d\x87\x7e\x37\xa2\x58\x6b\xef\x32\x06\xa7\x1f\x01\xd2\xe6\x8e\xb7\xf0\xc1\x90\x7d\x67\x54\x54\x56\x03\x50\xe7\xa8\xab\xd5\x8c\x07\xb6\x3b\x77\x9d\xb4\x89\x39\x63\x5a\x03\x2e\x59\xe6\x4c\x42\xd8\x9e\x4b\x35\x44\x00\x68\xe7\x83\xdf\xe1\x29\x58\x56\x7f\x31\xee\x85\x1e\xc1\xc7\xfa\x03\xa1\x2d\xb0\x33\x81\x45\x42\x24\xcd\xb9\x34\x0e\xc5\x98\xd5\x93\x69\x4d\x7c\xec\xf0\x47\xf7\xac\x7d\xf8\xd0\xea\xd8\x6f\xb6\xe2\x4c\x59\x24\x30\xf7\x77\xcb\x63\x3a\xd6\xda\xa1\x25\x60\x2b\x5c\x5f\x87\x0d\xe4\x47\x68\x4e\xe5\xa7\x1b\x73\x77\xed\x30\xdc\xf1\x56\x9c\x93\x77\x52\x9b\xff\xbb\x81\x0e\xe1\xe7\xe4\x5a\x32\xf5\x4e\x6a\xf8\x67\xec\xa6\x13\xf2\x9d\xb6\x77\xe0\xfb\xe8\x77\x27\x1f\x98\xdd\x8f\x67\x1d\xd7\xa5\xb0\x61\xd8\x66\x7b\x5d\x8f\xf9\xf8\x3b\x67\xc7\xed\xda\x79\x77\x1d\x01\xe0\x8a\xdc\x0a\x23\x12\xbb\x6d\x9e\x72\x1d\xec\x5c\xdc\x14\x7d\x6f\x27\x21\xc5\xc2\x36\x31\xc7\x54\xde\xdb\x1f\xfb\x73\xbc\xa9\xfb\xc3\xb7\xcf\x3f\xa6\xd3\x56\x03\xb7\x77\xba\xc7\x9b\xea\x77\x10\x3d\xf8\x7d\x3b\x2a\x67\x0a\xf2\xd7\x93\xdb\xd2\x47\x10\x9c\xb9\xd8\x64\xb5\x08\x1c\xbf\x72\x9b\xe2\xef\x43\x14\xa1\x54\x40\x51\x32\xcd\x52\x88\xf1\x14\x3e\x9c\x2b\x1e\xa3\xc0\x21\x63\xe7\x0b\x41\xda\x45\x46\x13\x96\x92\x14\x14\x08\x33\x71\x5d\x52\xcd\x36\x1c\x57\x39\xa7\x3d\x72\x56\x6e\x18\x29\x8c\x7c\x11\x3b\xad\x68\x26\x6e\xc7\xe4\x4b\x1e\x57\x7b\xbe\x19\x71\xfd\xc9\xec\xc0\x77\x29\xf3\xcf\x7b\xf4\x8c\x78\x29\xb2\x15\x64\xfb\xa5\x98\x3d\x00\xe1\x11\x5a\xf3\x7e\x75\x72\xa3\x6b\xec\x37\xcb\x8d\xb3\xdc\x38\xcb\x8d\xb3\xdc\x38\xcb\x8d\xb3\xdc\x38\xcb\x8d\xb3\xdc\xd8\x3b\x66\xb9\xd1\x8f\xcf\x22\x37\x46\x7e\xc4\xda\x3f\x27\x98\x65\x7f\xb2\xf6\xec\xc6\x0e\x6b\x2d\xac\x20\xb4\x82\x4d\x1a\x4d\xf4\xba\x06\x59\x23\xea\xdd\x3b\x59\xe0\x23\x98\x7a\x6d\xc7\x73\x52\x52\xb1\xc1\x82\x7c\xbd\x78\xfd\xcd\x37\x38\xfc\xc6\x76\xd5\x6d\x06\xbe\x64\x3c\x89\xc2\xc6\x45\xcb\x4e\x8e\x78\xd8\x9e\x5c\xd8\xd3\x82\xc7\x07\x2c\xaa\x0d\xf9\xc1\x8e\xe0\x7d\x75\xac\xb4\x76\x98\x75\x5c\x72\x13\x1d\xa4\x75\xcc\x45\xce\x34\xa1\xba\xe3\x38\xe1\x39\xc3\xf1\xe7\x42\xa6\x96\xd0\xbb\x8a\x5b\xde\x13\x9c\x12\x29\x9c\xbf\x4c\x40\x16\xfe\xde\x0a\xe2\x9c\x8e\x4d\x2c\x68\x77\x05\x09\xa3\xb6\x6b\xea\x0a\x02\x5d\xc3\x0e\x47\x4d\x94\xcc\x19\xb1\xc9\x81\x8e\x6d\x98\x25\x30\x7f\x2a\xe4\x25\x5b\x6e\x96\x24\xad\x5c\x33\xd6\x20\x48\x5b\x62\xec\x95\xe5\xc0\x36\xfb\x1a\x3c\xce\xb2\x84\xff\x33\xdb\xa2\xcb\x1d\xc4\x0e\x3e\x32\xa1\x2b\x9a\x21\xda\x21\xb1\x47\x9e\xe8\xba\xbe\x0f\xa4\x53\x70\x6d\x23\x0d\x8e\x59\xbb\x79\x9f\xa6\xa0\xb8\xd8\x9e\x70\xef\xeb\x47\x0d\xe9\xd4\xda\xc0\xc5\x96\xfe\x64\xf6\x71\xc0\xcc\xf7\x1f\x70\x55\x53\xa7\x36\xca\x73\x8e\x43\x59\x3a\x37\xe7\xe1\xb4\x63\xec\x11\x10\x07\xd2\x04\x1d\x99\xa5\x74\x30\xd8\x7a\xdd\xb1\x20\xcd\xfa\x2f\xdf\x5d\xb3\xd4\x42\xfa\x28\x0b\x99\xc9\xcd\xae\x7d\x56\x36\xd9\xaa\x2e\x8b\x85\x15\xfb\x28\x51\xd5\xca\x69\x4f\x06\xbf\xde\xed\xa1\xc0\xec\xf1\xc3\x8d\xd9\x72\x13\x01\x71\xb6\xdc\xcc\x96\x9b\xd9\x72\x33\x3a\x66\xcb\xcd\x6c\xb9\x99\x2d\x37\xb3\xe5\xa6\x77\xfc\x63\x5b\x6e\x66\x8f\xdf\x2c\x37\xce\x72\x63\xd4\x98\xe5\xc6\xd0\x98\xe5\xc6\x59\x6e\x9c\xe5\xc6\x59\x6e\x9c\xe5\xc6\xbd\xf1\xeb\x91\x1b\x23\x3f\x82\x07\x8f\xdd\xd6\xc5\xa1\x81\x1d\xe5\x69\x3a\x46\xe3\x27\xf0\xcc\x3c\x23\xa9\xb1\x90\xe9\x48\x4e\x23\x38\x49\x46\xd7\x92\xc8\x85\x2b\x92\x07\xee\x1a\x03\xce\xf9\x2b\x15\xcd\xad\x4f\xe8\x9c\xfc\x5d\x0a\x66\xf3\xbd\x0c\x99\x50\x32\xd0\x79\x0b\x7a\x45\x18\x50\x2f\xd5\xab\xd1\x5c\x9c\x39\x5f\x72\xce\x97\x9c\xf3\x25\xbf\xd6\x7c\xc9\x2d\x55\xb6\xc8\x8a\xeb\x20\xd7\xa4\x4f\x06\x21\x76\x43\x22\x5a\x14\xce\x10\xd7\xff\xd1\x9b\x3d\x19\x84\xf9\x65\xb2\x2b\xcd\x25\x70\x48\x6a\x76\xba\x85\x68\x76\x3f\x52\x17\x48\xc2\xd2\xbb\xee\x2a\x11\x9c\xcc\xda\x24\x60\x31\x14\x9a\x2f\x14\xac\x5c\x58\xd4\x96\x64\xcd\x45\xda\xb3\x46\x04\x58\xb7\xb3\x88\x9b\x1a\x95\x03\xd9\x5d\xde\x04\x47\x6e\xdb\x07\xdd\x61\x5b\xbf\xa4\x8c\x48\xb0\x1b\x78\x51\x61\xba\x91\x0b\xac\x0f\x50\x43\x83\xc8\x47\x68\x30\xe3\xf4\xe6\xba\xab\x51\x8c\x6c\xef\x7b\xe9\x25\x54\x59\x56\x85\x17\x94\xa7\xd9\x60\xa6\x7b\x89\xc9\xfe\x66\xec\x83\xb2\x36\xaf\x8c\x23\x58\x4d\x77\xc8\xb5\xdb\xd6\x5e\xa3\x21\xb0\xb3\x48\x88\x1d\xfe\xd0\xb8\xfa\xe3\x2c\x78\x53\x54\x90\x5e\x6c\x79\xb6\x31\x91\xe0\x0c\x8a\xf1\x5a\x6a\xd8\xa8\x38\x49\x9d\x9e\x6e\x58\x24\xcf\x30\x2e\x92\x69\x06\x46\xb2\x7f\x6c\x66\xf6\x4e\x02\xaa\x6d\x8d\x13\x60\x92\xa6\x98\xdb\x11\xec\x8d\xe4\x79\xda\xed\x74\xbb\x23\xd9\xdf\x9e\x1a\x4d\xea\x76\x37\xf1\x48\x42\x3c\xf2\xed\x19\x2e\x6b\x43\xe4\x24\x88\xc3\xc6\x4b\x43\x03\x26\x81\x3c\x30\x60\x02\x5e\x3f\xcf\x86\xf9\xcc\x83\x9c\x66\x8f\x24\xfb\xc7\xe8\xac\x68\xb6\x9c\x55\xac\xd9\xa3\x19\x07\x16\xcd\x7d\x0b\xe5\x24\xa8\x3d\x56\xcd\x8e\xd9\x6f\x12\xd0\x5e\xcb\xe6\x51\xe6\x3a\x60\xdd\x9c\x64\x8c\x25\x43\x06\x59\x37\xe5\x8f\x5b\x3e\xf1\xbe\x9d\xc2\xc4\x47\x9e\x67\xe6\x23\xd3\x4d\x7d\xe4\xb9\xf7\x68\xaa\xc9\x8f\x4c\x34\xfb\x91\x09\xa6\x3f\x32\xd5\xfc\x47\xa6\x9a\x00\xc9\xe4\x7d\x01\x71\xf0\xfb\xd1\x96\xe0\xfd\x23\xae\x78\xdf\xd8\x94\x27\x60\xc2\xa1\x44\xeb\x1a\x8b\x83\xbc\x95\xd3\xc2\x50\xb8\xff\x34\x62\x12\x5c\xca\xff\x8a\x95\x65\x28\x2f\x95\x51\x9b\x9c\xf9\xbf\x05\xc9\x5b\xeb\x5a\x1f\x8d\x04\x6e\x66\xc7\xd5\x5e\xcb\x34\x2a\xbc\x81\xc1\xcc\x7c\x5f\x46\x8f\x95\x11\x9f\xb6\x52\x59\x79\xae\x2e\xee\xfb\xe2\x81\xed\x5e\x9c\x3f\x87\x6e\x1a\x20\xb7\xe2\x85\x15\x3c\x0f\x3c\x3a\x5e\xaa\x8d\x55\x22\x44\xb6\x23\x2f\x00\xd2\x8b\x9e\xe8\xe0\x89\x4a\xc0\x33\xcc\xe8\x51\x2f\xd5\xbd\xd4\xa7\x86\x5f\x34\x00\x6a\xeb\xa4\x37\xff\x34\x7f\x8a\xf1\x1f\x78\xe9\xf7\xfe\x50\x76\x25\x2f\xbd\x45\x89\x6e\xcc\x49\xe9\x57\xe1\xb2\x5b\xad\xa5\x76\x62\xc2\x21\x68\x24\x67\x54\x28\xf2\xc2\xdb\xb1\xcf\x5a\xbd\xe5\xc3\x36\x30\x3f\xa2\xf9\xc8\x24\x9a\x11\x4f\x1b\xb5\x0b\x2d\xff\x6b\x8c\x6a\xb2\x67\xc9\x72\xf6\xfd\xa6\x28\x67\x6d\xfc\xc7\x9a\x5c\xcc\x78\xe9\xed\x36\xaf\xcc\xfe\x0b\xa9\x5b\x60\xc8\x4b\x2a\x34\x5f\xd4\x4f\x44\x80\xad\xad\x39\x60\x72\x6c\xa7\x61\x75\x31\x28\xd6\x2c\xd2\x2e\x50\xde\xe0\xf0\xb9\x6b\xd3\x30\x69\x07\xb8\x22\xbe\xaf\x35\x55\x75\xbf\x58\x29\xbc\x19\xde\x92\xbb\xf1\x9e\x3d\x87\xc3\x99\x15\xad\xb2\x08\xbb\x01\xd1\x29\xcd\xb9\x47\x54\x48\xf3\x03\x74\x47\xb9\x86\x3a\xde\x30\x35\x29\xdc\x75\x36\xbf\x78\x8b\x39\xec\x6c\xd4\x0e\xc0\x19\xf1\x7a\xed\x4b\x72\x03\xd7\xb0\x3d\x59\x0e\xdd\xdc\x22\x60\xfa\xb6\xf2\x91\x97\x28\xe2\xe6\xc5\xc9\x5b\x8b\xf6\x72\x4e\xe1\xc8\x9c\x9c\xba\xf8\x74\xa2\xd4\xc5\x3d\x13\xef\x3f\x54\xe6\x62\xa4\xf1\x7e\x4e\x5f\x1c\x1b\x73\xfa\x62\x64\xfa\x22\x6a\xfd\x96\x33\xa0\xf3\x18\x83\x30\x9b\x3c\xc7\xd1\x3c\x46\xf2\x93\xeb\xee\x8e\x30\x7e\x99\xa3\xce\xab\x4c\xf3\xa2\x09\x52\x52\x76\xaa\x99\x35\x6e\xac\x9d\x8b\xbc\x43\x79\x30\x1e\x4a\xf0\xfb\xee\x5d\x53\xf8\x1e\x04\x31\x29\xe0\x60\xe7\xd6\x4d\x4c\x47\x3a\x57\xd5\x10\x21\x7f\xd1\x5b\x45\xac\xaf\x7e\xb4\x35\xa4\x1d\x53\x5c\x88\xd7\x20\x2b\xa8\xc6\xc7\x03\xdc\xf3\xa5\x11\x46\x32\x83\x66\x46\x58\xf0\xb4\x1b\x41\x06\x0f\x65\x6a\x6b\xfb\x7c\x64\xde\x91\xbb\xe1\x8f\x4c\x34\xc2\xce\x4b\xf5\x0a\x23\x88\x39\x3b\xf3\x88\x90\xd8\x15\xfd\x50\x9e\xc8\x31\xe1\x10\xb8\xd6\x24\x41\x2c\x42\x00\x73\x42\x0e\x02\xe8\x9e\xe0\xf5\xcf\x2d\xee\xff\x2f\x2d\xe7\x77\x2d\x50\x21\x3d\xb1\x2d\x91\x0b\x36\xb6\x16\xba\x1a\x54\x68\x04\xa9\x23\xfb\x6c\x27\x38\x2b\x4f\xe7\xa8\x9c\xe8\xa4\xfc\x62\x29\xac\xc3\x8e\x49\x22\x63\xe2\x43\x43\x4e\xc9\xa9\xb9\x0d\x13\x6c\x11\xcf\x4d\x6a\x38\x92\x23\x72\xce\x6a\x18\xf8\xe2\xb3\xfc\xc4\x7d\x0e\x47\xd8\x83\x49\xce\xd7\x5f\x7c\x72\x43\x8f\x83\xd1\x3b\x0b\xa3\x37\xa4\xd7\xb9\x78\xe0\x28\x9c\xec\x4c\x55\xfd\x59\x0e\xc1\x86\x7d\x7d\xe3\x39\x4e\xc5\x2f\x99\xdc\x70\xe8\x48\x6c\x9c\x82\x13\x9d\x9b\x07\x8e\xb9\x7d\x87\xe0\xa4\x8b\x11\x48\x73\x88\x86\xd9\x33\xc7\xcf\x95\xe6\x30\xc9\x09\x38\xc7\xf8\xcf\x31\xfe\x93\x73\x43\x63\x1d\x7b\xcf\x75\xea\x4d\x3a\xe5\x13\x3a\xf3\x4e\xe6\xc8\x3b\xb1\x13\x0f\xe7\xc0\x23\x51\xe4\x04\xe1\xbc\x03\x77\x5c\x0c\xc8\x63\x3a\xee\xa2\xef\x45\xe4\x0b\xb1\xce\xba\x93\x39\xea\x4e\xe3\xa4\x3b\x85\x83\x2e\x8a\xd6\x47\xdf\xfd\x38\x9a\x16\xed\x90\xc3\x3b\xe3\x5a\x76\x16\xe4\x5a\x83\x8e\xb8\xae\x7b\x2d\x86\x64\xf7\x3a\xe1\x0e\x5c\x6b\xd1\x0e\xea\x43\xbb\x4f\xbf\x55\x07\xbb\x01\x23\xb6\x9f\x3d\xcb\x4e\xbc\xc3\xb5\xcf\xfa\xd3\xb5\xed\x20\x61\xf6\x38\xdd\x10\xae\x34\xac\x7d\x05\x1c\x6e\x71\x6e\xb4\xa8\x3b\x12\xe3\x4f\x89\x99\xfe\xd1\x5d\x24\xe8\xb4\x3b\xa1\xf9\x73\x53\xef\xda\xb7\xec\x20\xff\x6e\x74\x35\xd6\x03\x40\x1f\x25\x4f\x49\x51\x69\x6d\x2f\x1a\x22\x07\x6f\x14\xaa\xcb\xcf\x9b\x73\xf0\x0e\x73\xf0\x3a\x47\xd5\xca\xcc\x0a\xc2\x1c\x70\x0b\x0d\x27\xe2\x85\x67\xd9\x4e\xd4\xc3\x24\xe2\x05\x21\x1e\x24\xea\x21\x13\xf1\xc2\x8b\xef\x26\xea\x85\x13\xf1\x82\x10\x0f\x12\xf5\x42\x89\x78\x68\xca\xb4\x8f\x9a\xc3\x67\x1e\x86\x19\xcc\xd6\xeb\xcd\xc6\xc3\x2d\x7e\x2c\x5b\xef\x30\x1b\x0f\x77\xf6\xc3\xd9\x7a\x81\x6c\x3c\x04\xb2\x7e\x35\xbd\x0e\xe7\x6c\x3c\xff\xf4\x9c\x8d\x47\xe6\x6c\x3c\x37\xe6\x6c\x3c\xec\x98\xb3\xf1\xe6\x6c\xbc\x39\x1b\x0f\xc6\x9c\x8d\x37\x67\xe3\x0d\x8c\x39\x1b\x6f\xce\xc6\x9b\xb3\xf1\xb0\x63\xce\xc6\xeb\x19\x73\x36\xde\x9c\x8d\x37\x67\xe3\xcd\xd9\x78\x73\x36\x5e\x33\xe6\x6c\xbc\x39\x1b\x6f\xce\xc6\xab\xc7\x9c\x8d\xb7\x3f\xe6\x6c\x3c\x18\x73\x36\xde\x5e\x36\x5e\xc7\x89\xf5\xcb\x4d\xc9\x6b\x2f\x03\x8b\x2e\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xd5\x63\xce\xcb\x9b\xf3\xf2\xe6\xbc\xbc\x39\x2f\x2f\x30\xe6\xbc\xbc\x39\x2f\x6f\xce\xcb\x1b\x1f\x73\x5e\xde\x9c\x97\x37\xe7\xe5\xb5\xc6\x9c\x97\x37\xe7\xe5\xcd\x79\x79\x73\x5e\xde\x9c\x97\x37\xe7\xe5\x7d\xf6\xbc\xbc\xe0\x23\xb4\xdc\x0c\x52\x9a\xce\x4d\x3e\xbb\x2c\x37\x95\x65\x32\xce\xfc\xca\x84\x2e\x77\x60\xfa\xb7\x8c\x28\x95\xc9\x03\x2b\x09\xcf\xe9\x86\x9d\x8d\x68\x9f\x57\x6f\xaf\xcd\x21\x56\xca\xdc\x05\x97\xbe\xe3\x0e\xb5\x28\xe5\x23\x4f\x59\x6a\x34\xcd\x92\xd3\x55\x66\xd8\xdb\x9a\x95\x4c\x18\x0e\xf0\xbb\x97\x3f\x5e\x7e\xf8\xf9\xdd\xe5\xdb\x9b\x61\x7a\x61\x18\x20\xfb\x54\x50\x91\xb2\x94\x54\xca\xdf\x6a\xc7\x69\x59\x79\x76\xa6\x08\x13\x8f\xbc\x94\xc2\x2c\x06\x74\x27\x4a\x1e\xdd\xd7\x06\xc1\x26\x54\x38\xb7\x4c\xc9\x94\xcc\x1e\x59\x6a\x45\x82\x7a\x76\x9e\x52\x70\x51\x54\xda\x87\x7b\x3e\xf1\x11\x0b\xfd\x8a\x91\x4a\x24\x5b\x2a\x36\x66\xbd\x66\x03\x5b\xeb\x23\x6a\x27\x34\xfd\x64\xbe\x0b\x8a\x8c\x4a\x68\xe1\x3d\xa1\xc3\x26\xa3\x54\x56\x66\xcb\x7e\xf7\xbb\x73\xc2\xd9\x1b\xf2\xbb\x16\xc0\x25\xb9\x71\x30\x5a\x1b\x6a\xdd\x4d\xec\x71\xc4\xdd\xb8\x6a\xb6\xf3\x9c\x94\x6c\x43\xcb\x34\x63\x0a\x1c\x1c\x4f\x5b\x06\x49\x91\x56\xac\x71\xc7\xc5\xbc\x4e\x37\x08\x51\x48\xbd\x24\x57\xf5\x7e\x5a\x3f\x4f\xba\x24\x6f\x25\x38\x39\xd6\xf2\x0d\xd9\x6a\x5d\xa8\x37\x17\x17\x0f\xd5\x8a\x95\x82\x69\xa6\x96\x5c\x5e\xa4\x32\x51\x17\x9a\xaa\x07\x75\xc1\x85\x41\xe8\x45\x4a\x35\x5d\x00\x13\x4f\xc0\x6e\x71\x61\xe9\xea\x22\x91\x79\x4e\x45\xba\xa0\x0e\x65\x17\xf5\xf1\x5f\xfc\xd6\xd1\x9f\x05\xad\x9f\xe2\x62\x41\x17\x6a\xcb\xb2\xec\x6c\x60\xd2\x01\x7e\x8c\xa0\x2e\xa1\x0b\xcd\xc4\x23\xea\x16\x7e\xef\xba\xb9\xb7\x50\xb8\xde\x7b\xb8\x98\x8a\x69\x8f\x8a\xf5\xa2\x87\x69\xe4\xe1\x31\x4c\xdb\x81\xce\x1c\x6f\xc4\xe3\x8f\xb4\x6b\x8f\x12\xbd\x13\x26\xee\x81\x11\x12\xc7\x0d\xbf\xbb\x0a\x2f\x04\x67\x8c\x34\x6c\x79\x9c\xaa\x77\x16\xf2\x8e\xe6\x4d\x02\x69\xcf\xfc\x97\xe4\xad\x35\x34\x04\xa8\x39\x25\x57\x3f\xdf\x5e\xdf\xbc\xfb\x78\xfb\xed\xed\xcd\x87\x71\x8e\x85\xe4\x54\xc0\xf7\x23\x96\x72\x16\xa0\xa7\x1d\xba\x19\x58\x4e\x43\x55\x8b\x92\x3d\x72\x59\x35\xf2\x4c\x3f\x5a\x72\x11\x62\x77\x6d\x6c\x75\xf6\xed\x1d\x51\xac\x7c\xe4\x49\xff\xd6\x07\x2d\xd5\x1d\xb2\x8e\x26\xdf\x21\xaf\xe8\x3e\x71\x47\x11\xf1\x00\xd0\x5e\x12\x8f\x22\xe5\x01\xc0\xbd\x84\x1e\x41\xd0\x11\x87\x75\x48\xee\x2d\x59\xbf\x66\x6b\x5a\x65\x56\x44\x78\xf1\x62\x39\x44\x4f\x1d\xa0\x08\x54\xff\xb6\x94\x81\xa4\xcc\x0e\xba\xdf\xdb\x84\xe7\xb5\x2c\x07\x2f\xef\x99\xf3\xc1\x84\x10\xa9\x45\x22\x9d\xc0\x62\x65\x6e\x27\xb1\x20\xac\xa1\x78\x47\x49\x22\xc5\x9a\x6f\xde\xd2\xe2\xaf\x6c\xf7\x81\xad\x23\xfd\xef\x56\x69\x71\xd6\x7f\x10\xdf\x0d\xe5\xb4\x00\xc3\x62\x72\x9c\x3b\x07\xed\xc4\x39\x48\x37\xb6\x61\x7f\x4e\x2f\x38\x81\xf4\x8e\xa1\xf2\xbd\x93\x3b\x6b\x93\x7b\x77\x77\x74\x5b\x2c\x41\xea\x27\x23\xc2\x4b\x22\x45\xc2\x0a\xad\x2e\xe4\xa3\xa1\x6d\xec\xe9\xe2\x49\x96\x0f\x46\x1a\x31\xb7\x7e\x61\xc5\x74\x75\x01\xda\xe3\xc5\x6f\xe1\xff\x90\x1f\xfd\xf8\xfe\xfa\xfd\x1b\x72\x99\xa6\xae\x50\x45\xa5\xd8\xba\xca\x5c\x0e\xf6\x92\xd0\x82\xff\xc8\x4a\xc5\xa5\x38\x27\x0f\x5c\xa4\x58\x9b\x58\xc5\xd3\xff\x39\x7e\x89\xfd\x88\x3c\x23\x59\x58\x73\xe7\x84\x73\xba\x07\x5d\x7c\xd7\x11\x3f\x6b\x3c\xc7\xc5\x6b\x10\x90\x68\x14\xe0\xa2\xf7\x15\x38\x16\x16\xb1\xd8\x95\x94\x19\xa3\x21\xde\x16\xa7\x4f\x62\xf4\xf6\x08\x3d\x12\xce\x3f\x9e\x92\x9c\x35\xa4\xc4\xda\x41\xdd\xad\x28\x64\xfa\x86\xa8\xaa\x28\x64\x89\x72\xe1\xe7\x4c\x53\x23\xa3\x2f\x0d\x2a\x9f\x77\xff\x09\xe6\x91\xd6\x6f\x60\xbc\x40\x19\x6b\xeb\x57\x80\x32\x5b\x87\xe5\x39\x98\x68\x96\x42\xa6\xec\x1d\x7c\x0b\xfe\xe9\x24\x88\xcb\x24\x91\x95\xd0\xf0\x07\x04\x7c\xa5\xa9\xae\xd4\x72\x2b\x95\xbe\xbd\x3b\xf7\xff\x2c\x64\x7a\x7b\x17\xe0\x68\x24\x9a\x8e\x36\x17\x73\xc2\x4d\x70\x6f\xb6\x0b\x80\xe4\x14\xfe\xf3\x5b\x73\x6a\x77\x54\x63\x0d\x36\x5c\x91\xa7\x92\x6b\xcd\x04\x08\x42\x10\x33\x26\xd7\xe7\xe6\x52\x34\xfc\xfc\xf1\xf5\x8b\x93\xd0\xeb\xb5\x9f\xec\x84\x2d\x30\xaf\xf9\xf5\x5b\x54\xad\x79\x0b\x4e\xa4\xf3\xa3\x09\x89\xbc\xbc\xbb\x25\x8f\x76\x67\xbf\xb0\x71\x69\x8d\x3e\xc5\x08\x92\xe0\xe3\x99\xbe\x7d\x36\x69\xa8\xeb\xca\xb8\xfd\xaf\x25\x78\xcc\x39\x42\x2a\x52\x1d\x5b\x45\x32\x9e\x73\x97\x38\xec\xaa\xd4\x28\xf2\xd2\xfe\xb8\x4c\x8a\x0a\x73\x6d\xdd\xd3\x39\xcb\x65\xb9\x3b\xf7\xff\x64\xc5\x96\xe5\xac\xa4\xd9\x42\x69\x59\xd2\x0d\x3b\xaf\x3f\x80\x05\x5c\x3f\x6f\x41\x77\x26\x79\x08\x1f\x63\xca\x36\xca\x56\x52\x95\x46\xc0\xc8\x76\x9e\xa0\xb2\xf4\xe8\xd4\xa5\x3e\x91\x77\x13\x45\xa2\x5a\xf3\xb6\x42\x55\x8d\xbd\x20\x59\x3f\xca\xac\xca\xf1\x71\x71\x9e\xe5\xdb\x62\x47\xe2\xd1\x48\xe2\xea\x24\xc2\x45\xca\x1f\xb9\x9a\x14\x08\x78\x5f\xfb\x98\xc0\xdf\x57\x69\xa3\xef\xd9\x48\x7e\x7c\x80\xa5\x19\xec\x53\x21\x15\x18\xdb\x7c\xf4\x60\x97\x96\xbe\xc6\x39\x82\x22\x17\xee\xbf\x36\xe5\xa8\x7d\xfd\x9a\x37\xcd\xbd\xae\x49\xe9\x09\x4e\x29\x86\x0e\xfa\x09\x1d\x93\x0c\x2a\x96\x94\x4c\x1f\x4b\xcf\xb2\xd0\xbc\xe1\x0d\x7c\x7e\x31\x9e\xd1\xaf\x4a\x39\xab\x1d\x37\xb0\xa4\x86\x9d\xae\x4b\x99\x2f\x09\x98\xbc\x90\x97\x60\xc5\xc0\x06\x93\xf1\xd4\x43\x7b\x60\xc8\xc8\xa1\x59\xe5\x0b\x8e\x7f\x70\x95\xef\xde\x62\x94\x2c\x8d\x26\x87\x5c\xdb\xaf\x5c\xdf\x43\x3d\x18\x9e\xdd\x02\xae\x53\xc0\xdb\x81\xf0\x3a\x0e\x7b\x3b\xc0\x45\x78\x57\x65\x99\x3d\x44\x9c\x03\xf2\x76\xef\x25\x17\x43\x59\x8b\x15\x2e\x62\xbd\x65\xf6\x1c\x5e\x82\x74\x04\x49\x75\x0b\x83\x7a\x7a\x6c\x1e\xa8\x94\xb5\x1f\x16\x55\xe6\x4a\x1f\xee\xc6\xe2\xe1\xc1\xf7\x67\x66\xe8\x1c\x9b\x3e\xb1\xea\x4e\xa6\x06\x7b\xc1\xcf\x58\xeb\x18\x60\x7c\x56\x9e\xc6\x0e\xcf\xd3\x9b\x98\x0b\xaa\x0c\x4c\x2d\x09\x17\x46\xb8\x49\x2b\x9a\xc1\xc4\xc0\xdd\x5a\xd8\xd8\x27\xab\x08\x7b\x9b\xe7\x70\x92\x9f\x5d\xdb\x31\x1c\x3d\xdf\xcb\x84\x66\xef\x01\x11\x3e\xd4\x86\xf4\x3a\xa6\x89\x09\xa8\xe6\x68\xe8\xa8\x91\x9f\xb8\x1c\xbb\x39\x5a\x92\x8c\x69\xb2\x93\x15\xb1\x61\x12\x5d\xf3\x7c\xea\xf0\x8d\x70\xa1\x78\xca\xea\x23\x0b\xf8\x7a\xe0\x30\x3f\xb3\xd3\x28\xc8\x53\x3e\x2f\xb7\x88\xe5\x12\x08\xfa\x8f\xa2\xfb\xc7\xa0\x12\x82\xeb\x5a\x01\x41\x06\x29\x78\xff\xa8\x79\x97\xd3\x8c\xff\x1d\x10\xaf\x51\x84\x14\x59\xb1\x4c\x8a\x0d\x78\xb0\x86\x53\x07\x9d\x14\xb7\x24\xb7\x82\xeb\xf6\xdb\xd6\x4d\xc6\x92\x0a\x02\x79\x04\x91\x65\xca\x4a\x52\x94\x5c\x42\x6d\xdd\xe6\xc9\x41\xd0\x2b\x66\xbe\xad\x34\x05\x8d\x0f\xfc\x54\x62\x07\xf3\x6d\xb9\xc0\xd6\x94\x67\x2e\x9f\x10\xaa\x17\x2b\xf3\x37\x83\xf9\x63\x35\x32\xb5\x24\x5b\xfa\xc8\xe0\x65\x66\x6b\xa1\x72\x45\xb6\x54\xa4\xf0\xcf\x24\x91\x65\x6a\xd7\x0d\xc6\xcf\x92\xc1\x24\xee\x64\xc6\x93\x11\xa9\xcc\x88\x85\x06\xd1\x80\xb0\x50\xb1\x3f\x53\xf0\xfc\x94\x39\xcd\x5a\xbf\xe5\x01\xaf\x68\x25\xf8\xdf\x2a\x46\x68\x2e\x0d\x5d\xcd\x5a\xaf\xaa\xc3\x1d\xf7\xc9\x9e\x66\x69\x83\x10\xbf\xe7\x6b\x96\xec\x92\x8c\x11\x9a\x38\x7b\xe0\x07\x46\x53\x2e\x98\x52\xe6\x9a\xaf\x8c\x02\x26\x4b\xf2\x3d\x7f\x64\xad\xdf\xc6\xcb\x26\x7a\xb5\xe3\x43\x3b\xc0\x12\xa2\xa2\xf6\x37\x01\x0a\xb6\xd2\x07\xb0\x9e\x69\x09\x5b\x5d\x8d\xb8\xb5\x5d\x20\x79\x2b\x4b\x78\xb5\x83\x8a\xa8\xde\xaf\xea\x8b\xc1\x3a\x2b\xc3\x05\xd8\x32\xcc\x01\x0c\x82\x84\xac\xd1\x46\x71\xdb\x15\xac\x0e\x39\x15\x2d\x87\x6d\x4e\x3f\x99\x15\x00\x75\xa2\x3a\x50\xc4\xc1\x39\xcf\x5c\xc1\x62\x9b\x7f\xdc\x3d\x69\xb5\x24\xdf\x3b\xc3\x4d\xc9\x5c\x34\x65\x3a\x76\xaf\xf8\xde\xe1\x82\x7b\x5f\xf1\x9c\x67\xd4\x20\xbd\xda\x72\x29\x0e\x51\xc0\x7a\x6f\x07\x81\x36\x96\x94\x95\x2f\x35\x0b\xe9\x30\xb9\x7c\x34\x37\x6c\x34\xd4\x64\x10\x28\x86\x48\x1b\xda\x9c\x49\x9a\xaa\x8b\x42\xa6\xea\xc2\x2c\xae\x89\x34\x51\x17\x13\xa3\x49\xf6\x72\xd1\x5c\x04\x75\x2b\xca\xa5\x85\x78\x70\x8a\x86\x69\x3e\xd1\xd1\x30\x0a\x2d\x49\x59\x09\xf0\x2d\xc3\x96\x1b\xda\xf6\x4c\xb6\x38\x16\x38\xd6\xb3\x10\x6c\xf8\x58\x80\x9d\xf9\xe0\xb2\xb8\x20\xb2\xa0\x49\x34\x18\x12\x31\x10\x4a\x16\x00\x3c\x1c\x68\x16\x8e\x48\x08\x6d\xc4\x40\xb8\xd9\x78\x44\x42\xc8\x28\x32\x12\x74\x36\x1a\x91\x10\x80\x3b\x1a\x7a\x36\x14\x91\x10\x80\x19\x0c\x40\x1b\x0a\x34\x0b\xc0\xfd\x8a\xc3\xd0\xec\x40\x05\x87\xa3\x75\x73\x5c\xa4\xa9\x9b\x63\xcc\x7d\xbf\xa9\xaf\xb7\x85\xbe\x24\xef\xa4\x6e\x64\x27\x4f\x8a\x42\x18\x69\xf6\xa3\x37\xbc\x94\xdc\xbc\xfb\xf8\xe1\xdf\xee\xde\xdf\xbe\xfb\xb8\x4f\x08\x42\x57\x27\x32\xd6\x14\x51\x18\xf5\x04\x11\xa7\x76\x4c\x8a\x3b\x0d\xc0\x44\x07\x2e\xed\x11\x82\x20\x58\x74\xe0\x12\x46\x47\x6f\xcd\x15\x1b\xb8\xd4\x21\x04\xc1\x13\x0b\x90\x89\x99\x10\xf4\x6e\xdb\x70\x9c\xaa\x1d\x53\xa3\x55\x43\xf7\xa0\x0e\x01\x8d\xa5\xe8\xa8\x5d\x9a\x16\xbf\x8a\x30\xdb\x03\x00\x74\x14\xab\x7f\x0b\x6f\xec\xc7\x1a\xbe\x27\xc4\xb5\xa2\x2c\xa3\x60\xe2\xc7\x47\xb7\xda\x11\x65\x38\x46\x44\xba\xf6\x2c\x11\x13\xef\x8a\x5a\x60\x0f\x65\x1f\x8b\x7a\x45\xc1\x6c\x47\xc6\xe2\x63\x5f\xe3\x40\x23\xe5\x4d\x14\xd0\x70\x92\x43\x97\x9d\xa0\x80\xc6\x24\x3c\x38\xa6\x82\x82\x1b\x95\xfc\x80\x82\x78\x0a\xf6\x63\xc7\x73\xa2\x67\xed\x88\xbf\x4a\xe1\x48\x5a\x3b\xe2\xe3\x69\x91\x08\x9a\x55\x6c\x79\x84\xa8\x5a\x3b\x62\x8b\x90\x44\x47\xd8\xda\x71\xc4\x38\xdb\x69\xf3\x26\xf1\x85\x53\x8e\x11\x79\x6b\xc7\xa4\xec\x72\xbc\x4b\xb6\x67\xba\x23\x46\xf4\x08\x90\xe4\x4b\x18\xdc\xbb\x03\x6f\x7e\x8f\x02\x8b\x35\xd5\x77\xc7\xa4\x73\x8c\x73\xdb\xda\x81\x8f\xd7\x8d\x5a\xb5\xf5\xf5\x4e\xf6\xe2\xda\x11\xe7\xcb\xb5\x23\xb6\xa6\x45\x4c\x3d\x8b\xe8\xf4\x7b\x7c\x4c\xaf\x1d\x27\x89\xec\xb5\xe3\x34\xf1\xbd\x7b\xb0\x4f\x14\xe5\x6b\xc7\xf3\x62\x7d\xed\x98\x42\xcb\x63\xe3\x7e\xed\x38\x51\xf4\xaf\x1d\xc7\x8d\x01\xb6\x63\x12\xc5\x89\x8c\x07\xb6\x03\x1b\x15\x1c\xc9\x3e\xf6\x4a\x6c\x47\xc7\x06\xdb\x31\x61\x1b\xe2\x49\x0e\x3e\x5a\xb8\x3d\xa9\x08\xc2\x13\x1f\x39\x6c\xc7\x49\xe2\x87\xed\x38\x7e\x14\xb1\x1d\x27\x8b\x25\xb6\xe3\xf8\x11\xc5\x76\x4c\x8f\x2b\xb6\x63\x0a\x25\x9b\x10\x63\x6c\x07\x3e\xd2\x38\xea\xce\xfa\xa8\xe4\xe7\xc4\x1b\xdb\x31\xad\xa8\x52\x4c\xec\xb1\x7b\x05\x19\x81\x1c\x27\x2b\xd5\x7d\x6f\x47\xe2\x90\xa3\x20\x62\x63\x96\xed\x98\xb4\x79\x71\xf1\xcb\x76\x1c\x3b\x8a\x79\xf2\xf4\xe3\x29\x36\x3a\xae\xb9\x3d\xa7\x08\x82\x1d\x17\xe3\x6c\x47\x54\xa4\x33\x7a\x43\xf7\xaa\x20\x7d\xe5\x4a\xf2\x40\x04\x74\xd4\x6d\x69\x45\x4b\x3f\x27\x0e\xda\x8e\x59\x01\x9f\x15\xf0\xe3\x2a\xe0\x36\x86\x76\xd6\xbe\x23\x69\x6a\x54\x9e\x1d\x6e\xd6\x81\x68\xeb\xc8\xef\xa2\xbd\x78\x91\x05\x15\xbc\x27\xcf\x4b\xda\x5a\x92\x42\x16\x55\x46\xf5\x40\x7d\x8e\x90\x0f\x7e\xbf\x44\x8d\x27\xbe\x8d\x57\xa5\x0e\x56\x72\x7c\x3c\x0f\xfb\xa4\x0e\xbd\x51\xe4\x32\xcb\x08\x17\x96\xf8\x02\x78\xef\xae\x28\x99\x15\x8e\x03\x20\xa9\xf5\xfe\x3d\x9a\xc5\x3d\xb9\x06\x11\x2d\x7f\x0d\x57\x36\x94\x13\x2a\x9a\x41\x03\x09\x8a\xc0\x3e\x67\xf7\xe7\xa2\x69\x22\x51\x8b\x67\x75\x91\xc8\xfd\x0e\x38\x21\x14\x81\x02\x70\x4a\xfb\xed\x82\x75\x6a\xfa\x00\xfe\xaa\x84\xa5\x4c\x24\x0c\x0a\x38\x57\x4c\x21\x2f\xee\xca\x68\x26\xe4\x46\x3c\xd6\x6e\x98\xca\xba\xb6\x2d\x9b\xec\xfd\x42\x00\xe4\xe7\x70\xde\x1a\xd4\x76\x0e\x8b\x96\x0f\x17\x38\xba\xd7\x37\x83\x57\xbd\xae\x7c\x5d\x5b\x2a\x43\x18\x1d\x23\xac\xd4\x5e\x08\xa4\x60\x76\x20\xa5\x34\xf5\x0e\xba\xf9\x59\x27\xf0\x98\xc4\x88\x11\x27\x49\xae\xfa\x42\xe9\x55\x27\x11\x1d\xe2\xc5\x86\x68\x91\x21\x56\x5c\x88\xa8\xad\x81\xa0\xc0\xcd\x88\x16\x0f\x62\x45\x83\x28\xd6\x5d\x94\x6c\xcd\x3f\x45\xdf\xb5\xcb\x56\x7e\x11\x4f\x99\xd0\x46\x35\x87\x48\xff\xa2\x64\x05\x13\xa3\xc1\xce\xed\x01\xf1\xd9\xd0\xb9\x40\x74\x37\x75\xd9\x52\x11\x4e\x1a\x47\x61\x35\x8f\xa9\x04\xe7\xbe\x2f\x1b\x74\xa6\x36\x33\xb5\x39\x36\xb5\x71\x88\xf6\x8b\x25\x35\x47\x96\xd4\x21\xda\x35\x26\xec\xf6\xba\x15\x25\x0b\xb7\x29\x3a\xf5\xac\x95\xc1\x60\x13\x1a\x03\x2b\xfe\xd8\xf4\x8f\xe3\xaa\x21\x97\x5a\xda\x12\xbd\x36\x99\xa5\x24\x19\x7b\x64\x99\x93\x7c\x02\x10\x73\x2a\xe8\xc6\xd6\x73\xd7\xd2\xdb\x2b\x8d\xfe\x69\xae\x5d\xc9\xd3\x8e\x00\x6e\x73\x2e\x83\x25\x06\x7d\xae\x06\xbc\x5a\xca\x2c\x63\xa5\x22\x19\x7f\x60\xe4\x9a\x15\x99\xdc\xb9\xf2\xe9\x22\x25\xf7\x9a\x6a\x73\xf5\xee\x99\x56\xc7\xa9\x60\x57\xa7\xbb\xda\x5c\xab\x98\xe3\x84\xa4\x57\x48\xf5\x24\x85\x4d\xd4\x22\xef\x05\xd0\xb9\xcb\xec\x89\xee\xd4\x39\x79\xc7\x1e\x59\x19\xa2\x09\xb7\xeb\x77\x52\xdf\x59\x51\xb8\x1b\x67\x64\xc1\x10\xbe\x26\x6f\xa0\x81\x90\x26\x9a\x6e\x40\xad\xa9\x93\x55\x03\xb0\x65\xd9\x01\x6f\xc9\xd7\x13\x57\x6c\x6a\xea\x8d\x1d\x93\x50\xf5\xb7\xf0\x1d\x43\x90\xed\xbf\x8f\x72\x7c\x99\x4f\x2e\x8b\x38\xb8\x4b\x9b\x86\xe6\x9b\xcd\xb1\x36\x4e\xbb\x66\x86\xb6\x22\x7a\x88\x9c\x18\xf5\x8a\x0b\x62\x7b\x08\xda\xe6\x8c\x0d\xf2\xd7\x33\xb3\x0a\xaa\xf2\x3b\x1e\x56\x93\x51\xda\x17\x9e\x79\x17\x52\xe9\x7b\xa3\x07\xc7\x56\x13\xba\xf3\x2f\x42\x8e\x23\xcd\x32\x96\x12\x9e\xe7\x2c\x35\x7a\x6f\xb6\x23\x74\xad\x11\xbd\x50\x8d\xbe\xd6\xd1\xc9\x93\x92\x51\x9f\x5e\x09\x09\x75\x90\x04\xd9\xce\xab\x44\xc0\xec\x40\xd4\xac\xcc\xb9\x00\x65\xdc\x7a\xeb\x5c\x06\x67\x93\x57\x89\xe1\x23\x9d\xcc\xcb\xe6\x46\x03\xf7\x6b\x61\xc8\xbe\x43\x14\x01\x7a\x95\xc9\xe4\x41\x91\x4a\x68\x9e\xd9\x25\x4b\xf9\x40\x12\x99\x17\x19\xdc\x9d\x67\x70\x81\xfa\x3f\x17\x35\xbe\x2d\x0c\x74\x75\xf1\xdb\xe6\x4f\xf0\xc3\xb1\xeb\x17\xb1\x4f\x2c\x99\x50\x2e\xc2\x50\x48\x73\x48\xe0\x1d\x96\xa2\x16\x0b\xd7\xd2\x30\x24\xbc\xed\xb5\xe9\x59\x50\x13\xc3\x25\xb9\xf9\xc4\x92\x56\x2f\x0a\xe8\xc4\x9a\x04\xb2\xdb\xdb\x43\x4b\xb8\xd4\xa7\x6a\x0a\x88\xca\xd4\x69\x8f\xce\xce\x5d\xd9\xb7\x7d\x7f\x35\x07\x8c\x64\x5c\xb0\x38\x77\xa1\xcb\xf3\x69\xe7\xeb\xd7\xb8\x62\x6d\x5c\x4e\x72\x8e\x31\x6a\xf3\x12\x9a\x32\xec\xea\x38\x54\x3f\x3f\xe8\x2b\x20\xa5\x26\x2f\xcf\x2e\xce\x62\xda\xb2\xef\x9b\x21\xcf\x8c\x24\x93\x31\x4b\xa1\xad\x4d\xd2\x7d\x23\x06\xa8\x22\x8a\xe7\x45\xb6\x83\x5d\x38\x4b\xcf\x09\xd7\x3e\xb0\xb5\xac\x84\xdf\x93\x98\xce\x7f\x90\x0d\x72\x4e\x94\x24\xba\xa4\xbe\x55\x90\xfd\xd5\x80\xd3\x65\x65\xf9\x4d\x04\xc8\x97\x67\xff\xdf\xd9\x39\x61\x3a\x79\x45\x9e\xa4\x38\xd3\x70\x20\x4b\xf2\xd1\x56\xbe\xa0\xfe\x93\x3b\x59\x45\x00\x15\xcc\x96\xa9\x60\x9f\x8a\x8c\x27\x5c\x67\x3b\x20\xea\x44\x56\xda\xa6\x7d\x52\xed\x52\xba\x22\x80\xde\x7c\xe2\xda\x45\x66\x99\x9b\xfc\x0d\x60\xa7\x25\xf0\x84\x1a\x21\xee\x91\x5d\x6c\x19\xcd\xf4\x36\xa6\x87\x8e\xc1\x1b\x21\xc5\xe2\xef\xac\x94\x90\x40\x26\x1c\x8c\x13\xb6\x99\x9c\xe4\xff\x89\x6d\x41\x15\xe9\xd2\x30\xcc\xe0\x3b\x36\xa5\x51\xfb\xbf\x7e\xfc\x78\xf7\x1d\xd3\x7b\xc4\xd0\xc0\xf3\xc1\x2c\x78\x92\x58\xb0\x72\x2d\xcb\xfc\x54\x54\x71\x2b\x15\x72\x85\xe4\x60\x95\x52\x69\x5b\x00\xc1\x8a\x5e\x82\x25\x06\x97\x9b\x38\x8a\x98\xf3\x97\x75\x49\x87\xdb\xbb\x25\xf9\x37\x59\x41\x21\x02\xba\xca\x76\x90\xc1\xed\x52\xa2\x22\x20\xbe\x30\xd3\x7b\x61\xe8\x98\xd9\xf7\x7f\x65\x34\xb5\x69\xf5\x4a\x33\x1a\xdd\x03\x2a\x0a\x31\x5b\xdf\x9b\xca\x6c\x2a\xa5\x65\x4e\xb6\x6e\xd2\x31\xe9\x60\xed\xe1\x70\x6d\x09\xf8\x68\x75\x4e\x68\xda\x67\x09\x84\x83\xfe\xb9\x7a\xc7\x9a\x39\xd8\x5d\x71\xbf\xaf\xa0\x21\x76\x02\x4b\x8d\x72\xb7\xda\x89\xbb\x66\xec\x36\x49\x42\xd8\x25\xda\xda\x15\x11\xc0\xa6\x76\x6a\x8d\x8d\x20\x20\x7d\x96\x43\xb7\x0e\x6b\x20\x40\xb8\x3a\xf7\xc7\xf3\x9a\x75\x1e\x77\xfa\xe3\xf5\x32\x8e\x3a\xff\x69\x6d\x14\x23\xf7\x77\x11\xbd\xa2\xcf\xd4\x44\xb1\x88\x8a\xfe\x3d\x8c\xfd\xb5\x45\x58\x20\x3d\xcb\x4a\x78\x70\x71\x14\x2b\x1f\xc3\xe9\x97\xfb\xf3\x8e\x3a\xba\x42\x62\x74\x60\x3f\xa8\xd8\xbd\x47\x47\x66\x41\xbb\x29\x98\x11\x17\x9a\x6d\x50\x5a\x61\xf7\xbd\xe7\xf4\x87\xb4\xe6\xf5\x92\x88\x2a\x5f\xb1\xb2\x49\x1b\x28\x75\x9c\x62\xd0\x3d\x96\x96\xff\xff\x9d\x05\x1c\xaa\x1d\x74\x38\x9c\x0c\x5f\x52\xb1\x61\xe4\xb5\x39\xfa\x3f\xfd\xd3\x3f\xfd\xe1\x9f\x96\x76\xca\x3e\x54\x05\x1d\x6d\x62\xc6\xed\xe5\xbb\xcb\x9f\xef\x7f\xbc\x82\xec\x41\x3c\xbe\x7c\x5a\x34\x1a\xf5\x82\x0b\xbd\x90\xe5\xc2\xee\xf9\x1b\xa2\x4b\xf4\x3d\x83\x48\xfe\x08\xca\xd5\xb5\xa9\xc3\xcb\xed\x02\x76\x4e\x66\x89\x23\x3f\x4e\x52\x31\x72\x53\xd7\x5e\x68\x2e\xd2\x09\x6f\x50\x1c\xd9\x5b\x00\x02\x9e\x42\x2a\xd6\x49\x71\x2f\x93\x87\x49\x72\xf1\xd9\xc7\xab\x3b\xfb\x72\x4b\x34\xa6\xc2\x99\x09\x08\x17\x8f\x32\x7b\xc4\x1f\x07\x25\x1f\xaf\xee\x60\xa1\x4b\xf8\x2f\xb0\xb4\x80\x32\xb9\x33\x5f\xf0\x41\xde\xd6\x81\x84\x84\x59\x17\x0d\x84\x30\x7c\x9a\x71\xa5\x79\x02\xd0\x1b\x93\xa2\xf9\x0e\xce\x6f\xf4\x59\xe5\xf1\xb3\xf7\xde\xe5\xd4\x2b\x9a\x47\xe1\x78\x37\xb9\xa5\x25\x9a\xe3\x83\xfa\x66\x1e\xd1\xe2\x11\x8e\x37\xd8\x18\xfe\x99\x47\xf4\x8d\xa3\xf0\x88\xaf\x83\x4a\x46\x3c\x5c\x94\xec\x5e\xcb\x22\xda\x3b\x60\x5f\x1b\xf0\x0d\xac\xd8\x1a\x17\x8e\x4c\x07\x4d\xf9\x69\xc5\x5c\x03\xe9\xcb\xbb\xdb\x08\xab\x85\xec\x98\xeb\x6d\x74\xa0\xaa\x92\xad\xb7\x47\x09\xa6\xd4\x05\x18\xf9\xab\xc2\xea\x6b\x08\xa0\x6b\xca\xb3\xaa\x64\xe7\x66\xb7\x58\x0e\x7b\x70\xde\xa4\x31\x98\x25\x30\x61\x7f\x64\x3a\x19\x2f\x5d\xd8\x0c\xef\xf9\x70\xf6\x47\xbf\x8d\x7b\x0e\x06\x92\x94\x54\x6d\xd9\x68\xdf\xc6\x66\xb0\x4f\x5c\x2b\xdf\x7c\x9a\x2a\x29\xac\x41\xd6\x6d\x2b\xf0\x38\xd5\xaa\x59\x8b\x53\xe7\xdd\x44\x2d\xd8\x3b\x99\x9e\x9d\xa9\x0e\xc8\x4d\x49\x13\x46\x0a\x56\x72\x99\x12\xc8\xf4\x4c\xe5\x13\xe6\xc2\xae\xd8\x86\x0b\xe5\xb0\x05\x96\xed\xd1\xca\x70\x38\xdb\x8f\xd7\x97\xa5\x5a\x92\x0f\xd8\xfa\x63\xa4\x49\xb2\x91\x95\x4e\x64\x43\xf0\xdc\x4a\xce\xf7\xb6\x18\x59\x6f\x02\x90\xa9\xa2\x59\xb6\x6b\x10\xd5\xc7\xc2\xea\xde\xad\x41\x00\x6d\x6f\xde\x67\xf1\x37\x99\x1b\xd2\xfc\x6d\xfa\x64\xc1\xb2\xcf\x68\xb2\xc5\x57\x64\x9a\x5d\x58\xad\x31\xbb\xb0\x66\x17\xd6\xec\xc2\x9a\x5d\x58\x43\x63\x76\x61\xcd\x2e\xac\xd9\x85\x35\xbb\xb0\x66\x17\x56\x33\x66\x17\xd6\x71\xe6\x3f\xbb\xb0\x66\x17\xd6\xfe\x98\x5d\x58\x7d\xe3\x57\x66\x9e\x9c\x5d\x58\x5f\xde\x38\x3b\xbb\xb0\x66\x17\x16\x16\xc8\xcc\x23\x66\x17\xd6\xec\xc2\x1a\x7d\x18\xf9\xa0\xf7\xfd\xdc\x19\xfd\x26\x26\xcf\xeb\x0e\xac\xdd\x3c\xb1\x9a\x91\xc1\xbb\x76\x96\x8f\x05\xba\x6c\x4a\xc8\x07\x16\xd6\xd4\xb8\xf0\x59\x2a\xce\xe1\x63\xa1\x43\x16\xcc\xc9\x5a\xa3\x0c\xb5\x47\x2a\x64\xda\x58\xdf\x5b\x66\x77\xab\x0b\x8e\x93\x2b\x3c\x79\xc6\xd9\xdb\xe3\x6c\xed\xb8\x54\x2d\x62\x33\xab\x30\x76\x76\xbc\x05\x3d\xb6\xdf\x77\x84\xe5\x3c\xc2\x6a\xee\x6d\xe1\x58\xd6\x1c\xb2\x98\x37\x76\x70\x24\xc4\x71\x6b\x79\x8f\x0d\x1c\x0b\xb7\xdf\x52\xde\x6b\xff\xc6\x2e\xfe\xd0\x4a\x3e\x66\xfb\xc6\x6f\x69\x6d\x21\x0f\xd9\xbd\xd1\xae\x21\x6f\x1d\xc7\xd8\xbc\x63\x80\x2e\x4f\x60\xef\x7e\xa6\xad\x3b\xca\x24\x16\x2d\x46\xc4\x58\x07\x22\xf8\x93\x0b\x08\xf8\xb8\x2d\x99\xda\xca\x0c\x71\xaf\x3b\x77\xfa\x2d\x17\x3c\xaf\x72\x68\x1d\x69\xae\x2f\x77\xbd\x21\xab\x92\xd5\x6d\x62\x11\xcb\xb3\x3c\xc3\x1a\xf1\x9a\x2e\x94\x75\x97\xc9\xb5\x66\x25\xd9\xd2\x47\xa0\x93\x55\x92\x30\x96\xe2\x5a\x40\xb4\x55\xb2\x3f\x2c\xeb\xd9\xd6\x7d\x00\x5e\x87\x81\xd8\xba\x98\x20\x29\xfe\xe1\xf7\xc8\x9d\xc7\x49\x95\x68\x97\x42\xa4\x3b\x01\x27\x45\xa2\x5d\x09\x71\xec\x01\xaf\xb2\x9c\xc4\x7d\x80\x74\x1d\x38\x87\x00\x9a\x30\x4e\x77\x1b\x44\xde\xf3\x68\x77\x01\xda\x55\x50\x3b\x00\x90\x8b\x7e\xbe\x9b\x20\x8a\x1e\xe2\xdd\x03\x6e\x12\x78\xd5\xf3\x99\xae\x81\x29\x6e\x81\x67\xd5\xc5\x7c\xae\x3b\x60\x92\x86\x1a\xed\x06\x38\xae\x0b\xe0\xb3\xd4\xc2\x8d\xd8\xc7\x38\x93\x7f\xb4\xb9\x3f\xce\xd4\x8f\x37\xf3\x9f\xc2\xc4\x1f\x79\x34\x78\xb3\x4d\x84\xc9\x66\x8a\xb9\x66\x82\xa9\x06\x6f\xca\x77\x9b\x8a\xc4\x8f\x90\x89\xa6\x63\x78\x41\xc2\x1c\x31\xcf\x4c\x31\xba\x1c\xc1\xe0\x12\x63\x90\x47\x1b\xe3\xf1\xc1\x9d\xc4\x49\x1f\x53\x0d\xf1\x51\xd8\x82\x27\x3e\x48\xb3\x52\x04\x09\x71\x7d\xe7\xaf\x59\x46\x77\xf7\x2c\x91\x22\x45\x70\xa6\xbd\x42\x66\x35\x4e\x2b\x0b\xc0\xc9\xd8\xb1\x11\x9a\x5b\xaa\x7c\x9b\x79\x1f\xfc\x9a\x75\xdb\x9f\x43\xbf\x00\x3b\x63\x84\xf5\x87\x7c\x51\x0b\x10\x39\xa9\xb8\x6f\x83\x4d\xa7\x1d\xd8\xbf\xca\x27\x22\xd7\x9a\x09\xf2\x92\x0b\x7f\x66\xaf\x5a\x11\x41\x31\x7a\x56\x7d\x41\xcc\xfb\xaf\xbf\xf1\xe0\xbe\x36\xf5\x08\x14\x3d\xa5\x8e\xa9\x99\x3a\x90\xc7\x50\x4d\x1d\xa8\x75\x95\x75\xd5\x53\xab\xb2\xc6\xea\xa6\xaf\x9b\x12\x8d\xaf\x61\x6e\xf5\x2d\xa2\x22\x25\x2e\xc8\x1f\x75\x79\xbe\xaa\x23\x8c\x70\x0f\x9e\xca\x35\x18\xe5\x16\x6c\x1c\x7e\x28\xc8\xcf\x73\x09\x7e\x16\xbd\x3a\xe0\x06\x34\x2a\x36\x5a\x41\x7b\x86\x0b\xf0\x1f\x56\x86\x1c\x73\xf5\xcd\x32\xe4\xfe\xf8\x92\x52\x95\xe6\x39\x93\x95\x3e\xb2\x40\xf5\xb4\xe5\xc9\xb6\x71\x8b\x21\xb6\xd1\xcc\x43\x11\x59\xed\xc9\xb1\xaf\x1d\xe0\x43\x2e\x8d\x80\xf9\x3a\x3a\xaf\xe5\x17\x22\x55\x21\xcf\x37\x6c\x8e\x19\xec\x5d\xdd\xb8\x48\x9b\x0e\x6d\x54\x11\x4a\xae\xdf\xdd\xff\xfc\xfd\xe5\x5f\x6e\xbe\x0f\xdd\x8d\x1b\x9a\x6c\xdb\xc9\x81\x82\x50\x20\x9e\x70\xd7\xb6\xf4\x91\x11\x4a\x2a\xc1\xff\x56\xd9\x5a\xaa\xe4\x65\x0d\xf9\xd5\x91\x2b\xdd\x23\x69\x19\xf4\x67\x9c\xd0\xb7\x01\xde\x73\x2e\x1e\x69\x14\xb9\x52\xe6\x7b\x34\x2b\xb4\x55\xe6\x45\x23\x45\x51\x4b\x23\xb7\xac\x64\x64\xc3\x1f\x9d\x91\xdb\x15\xb5\xa4\x69\xed\xde\x32\x08\x6d\x30\x2b\x9c\x57\x44\x57\xe0\x68\xda\x32\x22\x98\x36\xd8\x5d\xeb\x98\x52\xa8\x4e\xf6\x66\xa5\x98\x3a\x27\xab\x2a\xa8\x86\x19\x15\x87\xe7\xb4\xe4\xd9\xae\x3d\x11\x9a\x2d\xc9\x3b\xe9\x25\x97\xdd\xde\x72\x02\x40\xaf\xdf\xdf\xdc\x93\x77\xef\x3f\x42\x03\x70\x28\x4e\xbb\xa5\xda\xbe\x0d\xdb\xb9\x62\x06\x9e\xeb\xb8\xb5\x24\x97\x62\x87\x21\x84\x96\x0a\x71\x45\x8c\xb8\xc2\x84\x01\xe1\xd8\x89\x2f\x7c\xfb\xe2\x9b\x25\xfc\xef\x85\xd9\xdd\x32\xcc\x95\x6a\xb7\x63\x37\xf7\x10\x78\x07\x70\x35\xbe\xca\x5a\x18\xe0\xf6\xfc\x8b\x77\x6e\xa8\x83\x1b\xee\xcc\x8e\xb6\xbb\xef\xd7\x68\x81\xe2\x2b\xb6\x67\x08\x17\x9b\x2c\x02\xbb\x23\xbb\x37\x34\x13\x8d\xae\xa6\xde\x70\x23\x2f\x6a\xb8\x2b\xe9\x4e\x1d\x5a\x65\xa1\x58\xfa\xed\x9d\x47\x88\xa5\x2d\xc2\x9c\xef\x35\x9b\x82\x0f\x58\x13\x19\x4e\x92\xfc\x86\xfc\x33\xf9\x44\xfe\x19\xc4\x8e\x3f\x61\xe4\x8a\x38\xde\x11\xa7\xa0\x58\xb9\xfa\xf6\x2e\x7a\x87\x7f\x32\xd7\xd2\xbc\x6b\x76\xc8\x28\x87\x5c\xa4\xae\x19\x9e\x66\xa5\x21\x4d\xf8\x60\x22\x79\xf4\x3a\xfc\x66\x62\x27\x41\x1c\xb0\xaf\xe1\x10\x67\xdd\xaa\xee\x4c\xf4\x09\x50\xc7\x7c\xc2\xe8\x34\xef\xdc\xc5\xed\xd4\x93\x86\x2f\xa2\x80\xc2\xac\x72\xaa\x93\x6d\x97\x3a\x18\x91\x49\xe9\xe6\x22\x2a\x92\x4a\x12\xae\x7b\x6c\x87\x0d\x76\xd8\x72\x94\xa7\xec\xb4\x08\x8e\x75\x45\x75\xf0\x60\xec\xf4\xf6\x54\x03\xa4\x9a\x96\x7a\x19\xa7\x95\x66\x5e\xc8\x74\x69\xc5\x23\x33\x49\x87\x10\xc1\x2a\xeb\x0e\xe2\x98\x0c\xe5\xb4\x19\x1f\xd1\x83\xbf\x8a\xe6\x56\x27\x54\xd8\xb8\xb6\x35\x2b\x4b\x1b\xb3\xb2\xda\x11\xd7\x00\x1a\x75\xa0\x51\x77\xb5\x28\xa5\x96\x89\x44\x75\x37\xe8\xba\x77\xdc\x8b\xb0\x4c\x6b\xe0\xf0\x36\xa4\x1f\xae\xef\xce\xc9\xc7\xab\x3b\xdc\xb5\x92\x25\xb9\xbf\xfa\x78\xd7\xd5\x37\x5e\x7c\xbc\xba\x43\xb5\x61\x8e\x58\x2c\xbe\x5d\x59\x87\xfd\x85\x14\xb7\xe3\x76\x43\x28\x19\x4d\xf9\xd1\xe3\x2b\x1d\xfa\x34\xd0\x83\xa2\xd0\x81\x5c\x55\xb2\x5c\x3e\xb2\xd4\x0a\x55\x1e\x1e\x13\x69\x21\xb9\x91\x60\x78\xa8\xe1\x14\x22\x36\x73\x8e\xbe\x0c\x8e\x39\xfa\x92\xcc\xd1\x97\x73\xf4\xe5\x1c\x7d\x19\x7a\x76\x8e\xbe\x9c\xa3\x2f\x87\xc7\x1c\x7d\x39\x47\x5f\x8e\x8d\x39\xfa\xd2\x8d\x39\xfa\x72\xc2\x94\xe7\xe8\x4b\xc4\x0b\x73\xf4\xe5\x57\xed\x39\x9f\xa3\x2f\xe7\xe8\xcb\xa1\x31\x47\x5f\xc2\x98\xa3\x2f\xe7\xe8\xcb\x39\xfa\x72\x8e\xbe\x1c\x7a\x76\x8e\xbe\x1c\x1e\x73\xf4\xe5\xe0\xf8\xf5\xc8\x90\x73\xf4\xe5\x1c\x7d\x39\x47\x5f\x7e\xe9\xe8\x4b\xdf\x5e\x20\x26\xa6\xf0\xec\x4a\xe6\x45\xa5\x19\xf9\xe0\x5f\xae\xd1\x93\xac\x76\x36\x22\x01\x1d\x78\xf5\x7c\x47\xa7\x6d\x29\x5f\x95\x10\xe0\x77\x61\xab\xda\x2f\x12\x3b\xc5\x45\xbd\xbe\x45\x3d\xa3\x8b\x63\x39\x3b\x33\x9e\xf3\x50\x30\xa6\x19\x4d\x4c\xe4\x5d\x14\x63\x8b\x22\xb0\xdd\x13\xfa\x1e\xa6\xd6\x32\x11\xda\x16\xe4\x9f\xe0\x7a\xd0\x5c\x56\x28\x3e\x0e\x5e\x72\x7b\xd4\xf5\x3e\x5a\xc3\xe7\x97\x3f\x26\x12\x47\xc3\x9c\x89\xf7\xeb\x3c\xad\x0f\x6e\x72\xfb\xe7\xe5\xc8\xd9\xf3\xce\xcb\x5f\x4d\x88\xc9\xaa\xbf\xc4\x15\x91\x39\xd7\x9a\x61\xfc\xea\x46\xec\xa6\x6d\x67\x32\xd7\x1d\xa1\xc7\x61\x1b\xd4\x98\xa2\x1a\x47\x78\x5b\xce\xce\x56\x34\x93\xd4\x5b\x56\x3e\x71\xe5\xbb\xb2\xd4\x52\x27\x60\xcd\x22\x65\x6b\x2e\x50\x53\x06\x16\xf0\x8b\xc2\x51\xe4\x83\x46\x63\x2b\xb9\xde\x5d\x49\xa1\xd9\xa7\x80\x2c\xd8\x45\xb3\x7b\xf7\x2a\x91\x85\xf5\x64\x7b\x61\xd5\x35\x89\x28\x2b\x01\x11\x60\x47\x2e\x03\x66\xbb\xdc\x5f\xf8\x89\xc3\xee\xb1\x4f\xfa\xe2\x28\x5f\xd1\x54\x3d\x34\xe7\xc6\x16\x86\x1d\x37\xc7\x73\xf0\xcd\x63\x91\x7e\x20\x82\x77\x25\x7f\xe4\x19\xdb\xb0\x1b\x95\xd0\x0c\x70\x26\x56\x38\xba\x1c\x80\x03\x97\xad\x94\x99\x22\x4f\x5b\x66\xee\x04\x4a\xeb\x2a\x4a\x09\xf6\xec\x84\x0a\xb2\xa1\x5c\x90\xdc\xec\x61\xe1\xc1\x9b\x03\x37\x77\x4a\x2b\x52\xd0\x12\xa7\xca\x39\x90\x2e\xc0\x78\x25\x65\xe6\xa2\x47\xb2\x5d\x33\x47\x57\x5c\x4e\xc8\x9f\x05\x7b\xfa\xd9\x7c\x0f\x43\x01\xd6\x19\xdd\xd4\x01\x54\x8a\xe9\x03\x39\xbe\xf9\xf8\xd0\x36\x21\xbe\x02\xa1\x0f\x15\x23\x34\x7b\xa2\x3b\xd8\xce\xfd\xaf\x70\xf5\x86\xbc\x7e\x05\xd8\x4f\x31\xf3\xae\xe7\x91\x92\xdf\xbf\x02\x3b\xdf\xd5\xe5\xdd\xcf\xf7\xff\x76\xff\xf3\xe5\xf5\xdb\xdb\x77\x58\x92\x60\xf6\x92\x05\xcb\x35\x26\xb4\xa0\x2b\x9e\x71\x1c\x17\x3a\xf0\x3c\xb5\x5f\x07\x92\x9a\xa6\x17\x69\x29\x0b\xbb\x0f\x65\x25\x04\x4e\x79\x6b\x22\x6d\xbb\xb2\x77\x3b\x4d\x01\x8e\x70\xdd\xf9\x24\x02\xf2\xa6\xa4\x42\x7b\xc1\xb1\x7d\x2c\x65\x25\x8c\xc0\x7f\x6c\x2f\x3c\x4d\xa7\x04\x68\x5d\xa6\x29\x4b\x63\x97\xf6\x1c\x3f\xef\x95\xff\xd4\xae\xc9\x84\x20\x77\xef\xef\x6f\xff\x77\xfc\x2c\x88\xc3\xb9\x28\x97\xdd\x89\xe2\x6f\x08\x31\xe8\x37\xe1\x04\x3e\xb8\x08\xcb\xf9\x0c\x46\x5e\x38\x7a\x0c\x54\xcd\x3b\x62\x6d\xcc\x1f\x2a\xd1\xcd\xab\x6b\x20\x91\x5c\xa6\x6c\x49\xee\x2c\x71\x47\xed\x5f\xf7\xfd\x56\xd8\x3f\x2d\x19\x31\x40\x84\xe6\xd0\x31\xcd\xc8\xba\x8f\x34\xc3\xf1\x36\x2d\x6d\x14\x63\x3b\x7f\xa2\x43\xdd\xd6\x34\x53\x08\x02\x14\x43\xcf\x0d\x4b\x7b\x6b\xc4\xf9\xc8\xfd\xac\xdf\x23\x29\x13\x52\x3b\x0d\xc1\x7c\x19\x12\x42\x4a\x99\x10\xac\x96\xd0\x72\x26\x76\x28\xae\xeb\xe8\xe7\xc9\x39\x57\x7e\x2f\xee\xfc\xb7\x11\xc0\xad\x55\xa7\x52\x4c\xf5\x93\xf3\x46\x6f\x30\xdf\x2f\x19\x4d\xa5\xc8\xb0\x9e\x7e\x6b\xf3\xcf\xa9\x7a\x60\xa9\xfd\xc1\xc9\x25\x4e\xc7\x51\xae\xbb\x9f\x9b\xee\x47\xdc\x7d\x5b\x33\xaa\xab\x92\x59\x79\xc4\x7a\x33\x98\xa0\x2b\x94\xaf\x22\x2a\xc0\x9e\xa6\xef\x45\xb6\xfb\x20\xa5\xfe\xb6\x0e\x7c\x8d\x44\x83\x9f\xac\x34\xb8\x67\x63\x01\x21\x04\x8c\xee\xe9\x02\xb9\x9d\x80\xf8\xed\xf8\xdb\xeb\xe6\xd8\x4f\x80\xf6\x65\x25\x2e\xd5\x77\xa5\xac\x62\x5b\x80\x1a\x8c\xfc\xee\xf6\x1a\xee\x6a\x65\xef\x29\x13\xba\xdc\x41\x60\xbd\xb3\x1a\xc7\xc8\x2f\x8d\x4c\xf9\x83\xc1\xd1\x3d\xac\x34\x92\x6c\x25\x14\x43\x85\x82\xbd\xa5\x3b\x42\x33\x25\xbd\xf8\xca\x05\xb9\x03\x2f\x66\x5b\x3f\x5b\xda\x6c\x2b\x86\xcc\x9d\x59\x49\xbd\x25\x7b\x20\x00\xe9\x0f\x21\x9f\x23\x97\x6e\x8d\xa1\x4d\x82\x34\x17\x07\x1f\xd0\xf4\x81\x29\x52\x94\x2c\x61\x29\x13\x09\xe2\xec\x5b\x56\xcb\x3f\xfd\xf1\xa8\x8e\x31\xc0\x94\x77\x52\x98\x6b\x12\x89\x2b\xb7\x22\xe5\x09\xb5\xb4\x91\xea\x3d\xfa\x03\xf6\xfb\xb2\xc2\x1c\x02\x5c\x26\x21\xc5\x02\x2e\x49\xa5\x58\x09\xb6\x13\xa3\x46\xd8\x38\xfa\xbf\x56\x2b\x96\x31\x6d\x95\x17\xc8\x97\xa3\xa8\xe8\x7c\xf3\x2e\xcf\xe9\x86\x11\xaa\x6b\xd4\xd3\x92\x30\xa1\x2a\x68\x4d\x4a\x35\x98\x56\x24\x53\xc8\x6c\x36\xab\xb4\x90\x1f\x6e\xaf\xc9\x37\xe4\xa5\x99\xef\x2b\x40\x97\x35\xe5\x19\x04\x39\x6a\x5a\xea\xe8\xd8\x05\xbe\xf6\xd3\x80\x85\xc3\x8d\x20\xb2\xb4\x84\xe1\x9c\x08\x69\x7b\xdd\xba\x95\xe3\xf4\x30\xaf\xe8\x39\xaf\x3c\x18\x10\xd1\x17\x08\x01\xdf\x01\x88\xb9\x40\xc8\x13\x3b\xc9\x05\x8a\x26\x9e\x3f\x28\x56\x4e\xa0\x9d\x3f\x9c\x84\x76\xb6\x85\x24\x73\x3f\x3a\xbb\x83\x41\x30\xb8\x04\x39\xd3\x34\xa5\x9a\x3a\xaa\xdb\x64\xee\x1c\x22\x06\x46\x2d\x1f\xa5\xbd\xbd\x88\x81\xa1\x05\xc3\xb4\x17\x81\x18\x18\x0c\xfb\x8a\x68\xaf\x62\xdf\x73\x51\x7d\xb2\x8e\xf1\x29\xe6\x86\xfb\x1b\x00\x40\x12\x7f\x2f\xe0\x08\x69\x51\x64\x1c\x52\x5c\x90\x37\xae\xe5\xc9\xbd\xed\xa0\xc6\x7e\x4b\x65\x47\x43\xb1\xe4\x87\x66\x99\x34\x0c\xc2\xc8\x4a\x54\xa4\x32\x3f\x98\xb0\x11\x4a\x19\x4d\xb6\x31\xd7\x62\x19\x23\x0a\xfc\xfa\x28\x59\x9c\xf9\x25\x63\x8f\x0c\x95\x4e\xbb\x5f\xc7\xc4\xbc\x67\x84\x53\x7f\x62\x00\x88\x64\x74\xc5\xb2\x98\x0c\x29\x8b\x8b\xb5\xed\x0a\xed\xa6\xb4\x23\x52\x2d\x2f\x65\x36\x25\xe8\xf3\x83\xcc\x20\x40\x89\xd6\x8b\x35\x80\xbe\xf2\xb5\xc2\xe3\xf1\x6b\x35\x3a\x5a\x77\xad\xa0\xd3\x7e\xdd\x6b\xad\x50\xbc\x98\xec\xaf\xd5\xb0\xf0\xee\x5a\x81\x77\x7e\xcd\x6b\x8d\x30\x15\x3d\x71\x91\xca\x27\x35\x9d\x79\xfc\x64\x01\x78\xfa\x94\x18\x42\xa8\xb9\xd8\x28\xcf\x40\x70\xb6\x0d\x9a\x65\x1d\x9b\x46\x1f\x07\xf1\x0e\xb0\x75\x89\xea\x68\xea\xda\xee\xef\xd3\x4a\x2f\xd2\x56\xca\x79\x57\x5b\x94\x1b\x01\x35\x42\xcd\x43\xa7\x5c\x7c\x51\xda\xbe\xc9\x15\xbd\x2a\x0d\x6c\xcd\x69\x76\x5f\x4c\x6a\x7c\xff\xdd\xdb\xfb\xcb\x2e\x10\x73\x65\x9e\xa0\xda\x94\xd9\x09\xf3\x77\xec\x3d\x49\x73\xae\x14\x97\x82\x3c\xb1\xd5\x56\xca\x07\xf2\xd2\x7b\x12\x37\x5c\x6f\xab\xd5\x32\x91\x79\xcb\xa9\xb8\x50\x7c\xa3\x2e\x1c\x1e\x2f\xcc\x6a\xb0\x7d\xd8\xb9\xc8\xb8\x68\x99\xbc\xa0\x6c\x91\x0b\x69\x33\x13\x26\x49\xbd\x22\x24\x44\x73\x90\xae\xf2\x86\xf3\x8c\x1c\x6e\x8c\xad\xa3\xc1\x59\x86\xee\x92\x0c\xc6\x32\x9b\x86\x64\xe8\x50\x56\x6c\xe9\xc2\x32\x52\x97\x76\x0d\x49\xf8\x5b\x29\x64\x89\xba\x6e\x66\xb8\xfa\x1b\x90\x55\x67\x14\x58\x6b\x3b\x83\x29\xbb\x1b\x0d\x3b\xe0\xac\x6c\x48\xa0\xeb\x8c\x6e\x4e\x42\xba\x0f\x71\xf4\x1d\x3a\x21\x2d\x80\xa7\x70\x1c\x2e\x83\x3f\x22\x9f\xaa\x1f\x4d\x2c\x02\x58\xf5\x6a\xd9\x3a\x37\x2c\x42\x06\x4f\xb7\x75\x6e\x58\x9f\x44\xf8\x74\x4f\x77\x6e\xb5\x0e\x3c\xf1\xb8\x40\x17\x76\xaf\x1b\xda\xe8\x99\x4d\xa3\x1b\x23\x77\xe1\x40\x83\x1e\xd3\x8f\xb1\x3b\x6b\x19\xf9\x81\x26\x1d\xd0\x93\x91\xd0\x91\xca\x89\xe5\x5f\x68\x82\x77\x6c\xfd\x84\x44\xea\x28\x48\x90\x2d\x6e\x17\xa2\x7e\x11\x25\x26\x06\x2e\xd2\xd0\x15\xf9\xd0\x46\x5e\x2c\x05\x3c\xed\x8d\x3a\x7a\x58\x92\x4d\xc4\x88\xae\xcb\x73\xdf\x7a\x8f\xf0\x43\x03\xee\x9d\x4c\xc9\x36\x18\x96\xd1\xa4\x9c\x40\xb9\x47\x48\x02\xe3\x7f\xf7\x52\x59\x23\xfb\x09\x69\x23\xcc\x70\x69\xce\xe0\x5c\xb4\xa5\x57\x52\x52\x09\xcd\x33\xef\x77\xc9\x8b\xcc\x08\x0c\x9d\xef\x5a\x1b\x71\xb8\xb2\x59\xab\xcc\xcf\x79\xbd\xc4\x83\x86\x8d\xe7\xe4\x3f\x2a\xa5\x09\xf5\xc1\x35\x01\xa0\x9d\xbe\x93\x3e\xd3\xc6\x22\xbc\x2b\x99\x05\x59\xde\x5a\x9a\xcf\x3f\xf2\x94\x91\x94\xaf\xd7\x0c\x11\x04\x64\xa7\x5b\xd0\x92\xe6\x4c\x83\xcb\xd5\x1e\xcc\x8a\x6d\xb8\xb0\xd5\x2a\xd7\x84\x9a\x45\x9c\x9d\xa9\x26\xd3\x23\x74\xe5\x21\xfe\x84\x6b\x92\xf3\xcd\xd6\xde\x68\x42\x49\x26\xc5\x86\x78\xa3\x78\x26\x69\x4a\x80\xec\xc9\x92\x3c\xd1\x32\x24\xa8\x53\x92\xd0\x64\x0b\x16\x7a\x2a\x48\x5a\x95\x50\x12\x43\x33\x9a\xee\x16\x4a\x53\x6d\xa4\x7e\x66\x23\xfb\x9a\x9d\x09\x5b\xd9\xdb\x81\xc9\xf0\x16\xb7\xf9\x36\x86\x7a\xd4\x97\xd4\xf9\x0b\x9d\xa8\x16\x80\xd8\x41\xf9\xce\x35\x9f\x4b\x3c\x05\xc7\x5c\xe2\x89\xcc\x25\x9e\xe6\x12\x4f\x73\x89\xa7\xd0\xb3\x73\x89\xa7\xb9\xc4\xd3\xf0\x98\x4b\x3c\xcd\x25\x9e\xc6\xc6\x5c\xe2\xc9\x8d\xb9\xc4\xd3\x84\x29\xcf\x25\x9e\x10\x2f\xcc\x25\x9e\xbe\xea\xf4\xfc\xb9\xc4\xd3\x5c\xe2\x69\x68\xcc\x25\x9e\x60\xcc\x25\x9e\xe6\x12\x4f\x73\x89\xa7\xb9\xc4\xd3\xd0\xb3\x73\x89\xa7\xe1\x31\x97\x78\x1a\x1c\xbf\x1e\x19\x72\x2e\xf1\x34\x97\x78\x9a\x4b\x3c\x7d\xe9\x12\x4f\x4a\xa7\x3c\x50\x98\x02\x93\x63\xe8\x8a\x84\x34\x31\xf4\x21\xc7\x69\xb5\x5e\xb3\x12\xf8\x39\xcc\xe0\xc0\x87\x54\x67\xf8\x7b\xc7\x79\xf8\x38\x0d\xe7\x52\x4c\x9f\x43\xaa\xa3\x72\xdd\x76\xfa\x81\xbb\x80\xff\x27\xba\x0b\x01\x2d\x99\x82\xd4\x3f\x41\x6e\xde\x7f\x1b\x9b\x08\x89\xcd\xe3\x81\x59\xbe\x17\x49\x4c\x70\x44\x73\x10\x7d\x89\xb4\xee\x3c\x92\x4c\xaa\xd0\xcd\x82\xfe\x9c\xb0\x4d\xc9\x96\x0a\xc1\xbc\xd4\xc6\x35\xe8\x30\x2b\xc6\x04\x91\x05\x13\xd6\x83\xed\x9b\x27\x86\xfc\xed\x5a\xd3\x64\xbb\x34\xb3\x14\xfe\x10\x5c\xad\x8d\xe6\x7b\x4a\x97\x8c\xe6\xf6\x30\x4a\x96\xd3\x60\x26\x8f\x99\x06\xa1\x49\x29\x95\x22\x79\x95\x69\x5e\x64\xcc\x7d\x8a\x28\x06\xd1\x9c\x36\xa6\xb7\xde\xd0\x30\xd6\x28\x66\x9d\x6c\x90\xbf\x57\xcf\xd4\x2d\x58\xb6\xf3\xd4\x41\xd6\x3c\x0f\x43\x64\x79\xa1\x77\x75\x48\x08\x23\x6b\x5e\x2a\x4d\x92\x8c\x33\xa1\xdd\x6c\x6d\x7c\x36\x7c\xed\xdc\xc8\xb1\xe1\x23\x12\x6e\x87\x94\xdb\x04\x91\x02\x8f\x2c\xb4\xb2\x61\x10\xcd\xe7\xec\x87\x02\x10\x53\xae\x9c\x9c\xa3\xce\x09\xd5\x9e\x18\x03\xea\xf8\x3d\x00\xe4\x49\xe1\x53\xee\xdb\x01\xa0\xee\x85\xd6\x54\x5a\x65\x54\x9a\xe8\x95\xe6\x4a\xaf\x33\x1a\x92\x1c\xfc\x45\x3b\xef\x74\x2c\x2d\x7c\x79\x00\x1b\x0b\xb4\x7f\xe1\x03\x30\x01\xe1\x04\x7b\x34\xf7\x85\x25\xcc\xa8\x3f\x74\xe0\x7e\x1f\xe5\x7a\x6b\x56\xe6\x5c\x40\x70\xc9\x5b\xa6\x14\xdd\xb0\xbb\xa0\xd9\x72\x48\x54\x05\xcb\x65\x73\x60\x80\x5e\x19\xc8\xad\xf0\x0b\xe2\xae\x37\x6e\xfa\x33\xd5\x9e\x1a\xc9\xed\xdc\xea\x70\xa3\xa7\x92\x6b\xcd\x42\x9b\xc9\x95\xad\x2d\x00\x3e\x84\xfd\xa4\x03\xf3\x89\xb6\x93\xdf\x2d\x3f\x74\x3e\xf6\xc3\x06\xb4\xe1\x74\x22\x75\xbd\xfc\x18\x59\x95\x9c\xad\xc9\x9a\x83\xff\x1e\xfc\xdb\xe7\x36\xdb\x34\x18\x04\x66\x54\x24\xa5\x8c\x52\x21\x85\x77\xc3\xfa\x15\x2f\xc9\x4f\x6e\xc9\xba\xac\x44\x42\x35\x36\x58\x47\xc8\x94\x11\xbe\x26\x1b\xf0\xad\x97\x36\xb8\xe8\x8f\xdf\xfc\xf7\x3f\x91\xd5\xce\xc8\x0e\x60\xfc\xd7\x52\xd3\xac\xde\xdc\x8c\x89\x4d\x30\x01\xc0\x91\xb8\x6e\xb2\x42\x7d\x2e\x50\x59\xd0\x6e\xc9\xeb\xdf\x3f\xac\xd0\x01\xa5\x5a\x92\x8b\x94\x3d\x5e\xb4\xce\x7c\x91\xc9\x4d\x5f\x3b\xb9\x71\xb1\x05\x29\xf8\xf7\xa0\x3d\x14\xfb\x8a\x40\x7c\x9f\xb4\x4d\xb6\xf2\xc9\xd6\xb4\xe8\xc1\x57\x54\x78\xd0\xca\xe8\x16\x45\x95\xd9\x58\xad\x6f\xcd\x9d\x81\xfd\xac\x14\x3b\x0c\xcc\xef\xbd\xaf\xe1\xdd\xf5\x1f\xd8\x6f\x3f\x6e\x03\x31\xfc\x74\xa5\x8b\x8e\x75\x66\x92\x20\xde\xa6\x1e\x5d\x97\xe4\x5b\x9a\x65\x2b\x9a\x3c\x7c\x94\xdf\xcb\x8d\x7a\x2f\x6e\xca\x52\x96\xdd\x75\x64\x54\x85\x68\x7f\xb2\xad\xc4\x43\xb7\xc9\x61\x26\x37\x46\xae\x2e\x2a\xed\xcb\x75\xf5\x6c\x74\x00\x2c\xd0\x21\xae\x1c\xfb\xa3\xae\xab\x6e\xf3\x0d\xf6\x09\xb0\xf6\x89\x1b\x02\x26\x08\x33\x73\x0f\x29\x4f\xe6\xfe\xb4\xe7\xa6\xda\xc8\xff\xfb\x6f\xfe\xf8\x67\x7b\xd1\x8c\x16\xf9\xe7\x6f\x20\x5c\x4a\x85\x63\x0b\x79\xb2\x05\xda\xcf\x15\x51\x39\xcd\x32\xa3\x30\xb6\xf5\x09\x83\x1c\x7d\x97\xe2\x28\x77\x42\xc7\xa0\xff\x91\x84\xed\x8f\x1f\xff\x0d\x24\x6d\xae\x15\xcb\xd6\xe7\x36\xde\xbb\xae\x8a\x72\x06\x2c\xf3\xcc\x51\x58\x23\x07\xd5\xdb\x81\xe4\xcd\xc7\x11\x82\x1f\x65\x56\xe5\xec\x9a\x41\xb3\xd6\x88\x4d\xea\xbc\xe7\x23\xe8\x32\xd7\xd9\x7e\x95\xc9\xe4\x81\xa4\xf6\x8f\xe1\x1b\xec\xbd\xe1\xfb\xf5\xc6\x5a\xd1\x9d\x64\xc5\x74\x1d\xdb\x79\xec\x2e\xe7\xed\xb5\x74\xfc\xfb\x39\x2d\x8a\x3a\x9c\xb6\xa4\x4f\x41\x45\xb1\xbd\x70\xdf\xb9\x97\x9e\xa6\xe3\xb9\xfd\x48\x58\xa4\xe9\x59\x6f\xf3\xaa\x3f\xb8\x02\xfe\xdb\x46\xee\xa1\x8b\x10\xb4\xcb\x10\xd4\xc1\xe1\xf5\xda\x2d\xd7\x34\x3b\x08\x74\xe3\xe8\x7d\x80\x27\xf5\x69\x16\xb5\x4d\xc9\x76\xb0\xf6\x79\x41\xf6\x84\x0b\x56\x2a\x68\xf8\xaf\x7f\x04\x8c\xb8\xca\x28\xc7\xe4\x22\x12\xd2\x34\x68\x3e\xee\x32\xf1\x1d\x80\x9b\x33\x0d\x3e\x8a\x88\x3a\x38\x72\x8f\x60\x7b\xc1\xa0\x00\x54\x0c\x8d\xb9\x93\xa9\x7b\x15\x38\x04\x08\xbc\x7d\xe2\x6e\x88\xc4\xb4\x65\xe1\x48\x06\x13\x4f\x4c\x7e\x6c\xd6\xda\xa5\x25\xe6\x97\x9a\x98\xd8\xa7\x82\xc8\x72\x5a\x12\x02\x53\x9a\x44\x41\x80\x76\xb4\x3a\x93\x37\x84\xc0\x2b\x49\x38\x2b\xfc\x96\xb9\x03\xf6\xdc\xd5\x90\x0c\xab\xd7\x2c\x89\xf5\x40\x99\xd3\x72\xe0\x51\x30\xcf\xde\x9c\x1d\x9d\xd6\xd8\x8d\x2a\x65\x41\x37\xc8\x92\xb2\x7b\xfb\xb5\x0f\x80\xa4\xcc\x8a\x7a\x4c\x81\x90\x0d\x7f\xc7\x19\xde\x29\x94\x8f\xb5\x90\x7c\x77\x6b\x5f\x2a\xcf\x39\x52\xfc\x51\x04\x2d\x1c\x6e\x2b\xb6\xcc\xa5\xe0\x3c\xd1\x1d\xa1\xa5\xac\x44\xea\x6c\x48\xb5\x71\xef\xed\xde\x02\xde\x49\x81\x63\x11\x5c\xb9\x5c\xec\x6e\xa6\x17\xb0\x73\x2e\xc8\xeb\xe5\xeb\x6f\xbe\x0e\xd6\xf0\xb1\x6e\xda\xdf\xb0\x86\x77\x35\x6b\xb0\xf7\xf5\xe8\x33\xf5\x05\xe8\xa2\x67\xfb\xd6\x29\xff\x75\x7d\x39\xd0\x20\xc0\x9a\x06\x3f\x19\x65\x1e\x77\x40\x4d\x79\xef\x97\x20\x56\x1a\xa9\xbe\x95\xd1\xf8\xaa\x23\xa5\xa3\x20\x22\x6b\xd5\xc5\x15\x5c\x22\x44\x55\xab\xa3\xd0\x2a\x47\x70\xe0\xe2\xd4\xf6\x9c\x38\x71\xe7\x4c\x8d\x90\xad\xa8\x44\x53\x2d\xc9\x8b\x17\xe4\xa5\x85\x76\x66\xf3\x3b\x5e\x1d\x1d\xcd\xdc\xd6\xdd\x7c\x2a\x50\x35\x32\x3a\xdb\x77\xf3\xa9\xa0\x60\x0b\x2a\x86\xf7\x11\xb5\xd4\xc6\x76\x86\xda\x47\x14\xcc\xbf\xb0\x2d\x7d\x64\x90\xb7\xc2\x33\x5a\x66\x3b\xb3\xa1\xf7\x76\xb5\x64\x55\x69\xc2\xc4\x23\x2f\xa5\xc8\x99\xd0\xe4\x91\x96\x9c\xae\x82\x46\x74\x3b\x4a\x06\xa9\x78\x46\xb9\xf9\xdd\xcb\x1f\x2f\x3f\x80\xd7\xf1\x95\xcb\x3f\x74\x3b\x52\x29\x88\x07\x9b\x80\x3d\xad\x69\x75\xb5\xe0\x36\x32\xe0\xe6\x09\x08\xe3\xd7\x6c\x4e\x18\x8c\x00\x7e\x0f\xcc\x7c\xf3\x4a\x57\xb6\x12\xeb\xa7\x24\xab\x14\x7f\x44\x5d\xce\xfd\xca\x04\x2d\x8a\xfd\x4f\x47\x46\x50\xbc\x94\x5b\x4b\x2c\x5f\xa1\x90\xeb\xd2\xbc\xae\x79\xe0\x8e\xed\xa5\xa0\x35\x48\x71\x90\x27\x06\x26\x7b\x60\xc1\x75\xba\x6c\x8c\xa5\xd9\xbb\xa5\xce\x54\x5d\x4b\xb3\x5d\x1e\xe5\x1c\x25\xa8\xd9\x64\x50\x1b\x6a\x64\xeb\xf9\xa7\x87\x8e\x3d\xc8\x89\x6f\xc9\xd6\x01\x98\xc7\x33\xed\x84\x31\x27\x80\x09\x08\x1c\x08\x9d\x7e\xed\x86\x1e\x9a\x44\xb7\x6a\x79\xe2\xfb\x3c\x38\x85\xd9\x76\xb4\x00\x02\x65\x75\x14\x4f\x0b\x35\x7d\x18\x9e\x37\x17\xa4\x64\xaa\x90\x42\xb1\xae\xd0\xd7\x04\xfd\xb0\x47\x26\xb4\x8a\xd0\x78\x30\xaa\x43\x21\x95\x86\x64\xd9\x31\x1c\xef\x7a\x51\xee\xfc\x2b\xe0\xdd\xa2\x59\x66\x30\x28\xcf\x59\xca\xa9\x66\xd9\xce\xf9\x3d\x29\x32\xcc\xd3\xc0\xb0\x39\x75\xce\xa1\xc5\xc8\x96\x8a\x34\x63\x65\x3b\x7f\xbb\xe3\x02\xf3\x46\xd5\x40\xf9\x14\xeb\x71\xf3\xc1\xa3\x34\x49\x64\x99\xba\x78\x5f\xae\x6b\x47\x1a\xb1\xad\x33\x96\xe4\x3d\x48\xcc\xcd\xe9\x8d\xc2\x3e\x28\x4b\x01\x86\x22\xd5\x72\xda\x41\x2d\x9c\x3a\x8b\xdd\x86\x47\x8c\x6f\x44\x4c\x07\x15\xe7\xcc\x68\xfe\xb3\x09\x9e\x58\x40\x00\xda\x45\x2b\x86\x02\x7e\x18\xf3\x45\x60\x75\x4c\x4c\x5a\xf2\x69\x92\x92\x8f\x9c\x92\x1c\xa3\x54\x47\xa4\x23\x9f\x2a\x19\x39\x22\x15\x99\xac\x25\x2e\xf0\xec\xf8\x89\xc8\x31\x69\xc8\xb8\xa8\x22\x12\x95\x84\xdc\x49\x2f\x46\x41\x0f\xa4\x20\xef\x27\x17\x63\x15\x80\x91\x04\xe4\x9e\xd4\x62\x9c\x52\x37\x9e\x7e\xbc\x9f\x58\x8c\x82\x19\x95\x7c\x1c\x91\x6a\x37\xa5\xa8\x21\x2a\x53\x09\x2d\xdf\x21\xf3\x5e\xe3\xb3\x5e\xb1\x39\xad\x31\xf4\x05\x1b\x77\x1b\x97\xcd\x8a\xd5\xed\x23\x72\x59\x71\x25\x82\xc9\xd4\x4c\xd6\x28\xb4\x89\xcc\x62\x3d\x51\x0e\xeb\x73\x33\x58\x23\x2e\xd5\xa9\xb2\x57\x9f\x97\xbb\x1a\x9f\xb9\x1a\x97\xb7\x7a\xc4\xac\xd5\x09\xf9\x9f\x91\x19\xab\xc7\xcc\x57\x8d\x9e\x6d\x5c\xae\x6a\x44\xa6\x6a\x4c\x9e\x6a\x64\x96\x6a\x4c\x8e\x2a\x36\x43\xf5\xf8\xf9\xa9\x51\x47\x81\xcd\x2b\x40\x67\x15\xc4\xe7\x14\x44\x67\x14\x9c\x26\x27\xf5\xf8\xd9\x04\x47\xcd\x25\x78\x76\x26\x01\x3e\x17\xf5\x24\x99\xa8\xd3\xf3\x50\x4f\x62\xc7\x43\xe4\x4a\xe0\xad\x73\xd8\x9c\xae\xd3\x64\x74\x9d\x2a\x9f\xeb\x79\xd9\x5c\x27\x97\x28\x8f\x95\xc7\xf5\x8c\x2c\xae\x7f\x30\x4a\x7b\xac\xcc\xad\x5f\x37\xa5\xfd\x12\x34\x08\xf5\x58\x51\xb2\x7b\x3d\xde\x66\x71\xcf\x6e\x6a\x5f\x18\xb0\x9a\xba\xe4\xf6\x08\xb3\x69\x63\x06\x25\x69\xe5\x9b\x39\x5f\xde\xdd\xd6\xfa\xaa\x6c\x9b\x33\xad\xf9\x78\x14\xa6\x0b\x01\xaf\x53\x83\x2f\x5c\x5a\x70\xab\x9c\x66\x55\xb2\x73\xb3\x72\x96\xc3\xaa\xce\xeb\x1e\xd8\xa3\x80\x5d\x54\x30\xbc\xc0\x74\x62\xcd\x43\xde\xca\xeb\x4a\xcd\xf9\x2d\x59\x47\x94\x08\x48\x4a\xaa\xb6\x36\x6e\x95\x7d\xe2\xda\x45\x8a\x97\x8c\x2a\x29\x6c\x02\x76\x2b\xfc\x96\x2b\x52\x50\xa5\x02\x66\x1c\x47\xb5\xdc\xe4\x2c\x40\x57\x77\xb3\x0d\x6c\x53\xd2\x84\xb9\x84\x7b\x92\xc8\x4a\xe8\x54\x3e\x8d\xab\xc7\x50\xcc\x53\xf9\x73\xb6\x4d\xf4\x2c\x42\x18\xfa\xcf\xc0\x4e\xe6\x2b\xa1\x2e\xc9\x07\xb6\xa1\x65\x9a\x85\x68\x80\xa3\x1a\xb2\xd2\x89\x6c\x88\x88\x9b\xfd\xbe\xe9\x1c\x9c\x45\x80\x06\xe0\x3e\x1c\xdf\x07\x8f\x5c\x6d\x0f\x71\x60\x23\xc6\xa9\xc1\xbe\x7d\x1d\x69\x43\x0f\x20\x96\xaf\x12\x0b\x41\x0e\xfe\xbd\xc1\x93\x82\xfc\x19\x9a\x6c\x43\xbe\xaa\xf8\x96\xe6\xb3\x41\x7e\x36\xc8\xcf\x06\xf9\xd9\x20\x3f\x1b\xe4\xfb\xc6\x6c\x90\x9f\x0d\xf2\x9d\x31\x1b\xe4\x87\xc6\x6c\x90\x1f\x1e\xb3\x41\x7e\x36\xc8\xff\xc3\x99\x89\x66\x83\xfc\x6c\x90\xf7\x63\x36\xc8\xcf\x06\xf9\xd9\x20\x1f\x7c\x63\x36\xc8\x8f\x8d\x5f\xa7\x41\x3e\xf8\x48\xa7\x7d\x13\x2a\xb4\xfb\xec\x0e\xac\x86\x3c\x71\x06\xf0\x6e\xad\x07\x07\x6e\xd9\x84\xfc\x0f\x2e\xe0\xa0\xf3\x94\x37\x73\xb7\xfa\x54\x59\x38\xa5\xcc\x32\xa3\x03\xe5\x74\x37\xda\x29\xce\xc7\xff\x7f\xdf\xe9\x49\xc5\xd7\x44\xc8\xbd\xfa\xb8\x60\xf7\xb6\xfd\xa8\xd2\x25\xf9\x38\xac\x84\xf2\x8d\x90\x25\xf3\x90\xb9\xd8\x9c\xdb\xa2\x4e\x75\xbf\x38\x2d\x5d\x51\x8a\xee\x47\x5f\xfc\xe7\x7f\xbd\x18\x46\xbb\xc3\x60\xf5\x2f\x52\x28\x0e\x43\xad\x43\xc6\xd4\x49\x86\xd4\x50\xf2\xc4\xb1\x8c\xa8\x58\x76\x84\x34\x9e\x9e\xc2\x70\x1a\x69\x34\x45\x49\x5e\x68\x83\x69\xdb\x18\x1a\x84\x8a\x30\x96\xee\x19\x42\x11\xc2\x06\xd6\x50\xda\x32\x82\x06\xa1\x62\x8c\xa4\x5d\x03\x68\x78\x47\xc3\x06\xd2\x7d\xe3\x67\x78\xf1\xe3\xc6\x51\xbc\xe1\x13\x69\x9f\x89\x90\x02\x70\x2a\x2f\x8a\x4d\xc5\x34\x3a\x8a\x6e\x71\x84\xa8\xee\x19\xd9\xdc\x08\x97\xd7\x3a\xa5\xad\x11\xb6\x16\x27\x4e\xbc\x43\xd8\x8e\x4f\x63\x37\xc6\x92\x54\x8c\x74\x1f\x6d\x2b\x46\x51\x3f\xbc\x9d\xb8\x6d\x9f\xc5\x10\x6a\x8c\x8d\x18\x7d\xcb\x22\x6c\xc3\xf1\x76\x61\x38\xef\x30\x05\x9a\x66\x13\x46\xd2\x9b\x53\xd8\x82\xa7\xdb\x81\xe3\x6c\xc0\x78\xfb\xef\x91\x6c\xbf\x91\x2a\x5a\x84\xcd\xf7\x58\xf6\xde\x93\xf5\xe9\x40\xed\x11\xd6\xbe\x1b\x53\x79\x1a\x69\xd7\xc5\xd8\x74\x8f\x6b\xcf\x45\x6f\x35\xc6\xba\x80\xb2\x2c\xc4\x59\x15\xa2\x2c\x0a\xd1\x76\x5b\x22\xc3\x0e\x3c\xbc\x25\xa1\x6d\x25\x08\x82\x7d\x96\x15\xe1\x59\x16\x04\x9c\x9d\x36\xd6\x46\x6b\xed\xaf\xc1\x65\xc7\xda\x67\x91\xa7\x8f\x21\x02\x41\x7b\x08\xea\x42\x47\xb6\xe6\x99\xd0\x94\x27\xd8\x0a\x3c\xaa\x1d\x4f\x4b\xdb\x0f\xca\x08\x9f\xad\x64\xfc\x71\x05\x54\x74\xdb\x9d\xf8\x86\x3b\xae\x9d\xce\xe8\xce\x1d\xa5\xd5\xce\x71\x77\x24\xa6\xb1\x4e\x7c\x4b\x9d\x29\xaa\x50\xa0\x99\x0e\x5a\x17\xc2\xb5\xd1\xe9\x6e\xfe\x28\xcc\xcf\x7b\x30\x28\x4f\xce\x24\x2f\x4e\xa0\x7a\xea\xf1\x3d\x38\xd3\xbd\x37\x27\xd3\xeb\x10\x1e\x1b\x7c\xb7\xd9\x38\x6f\xcd\xaf\x58\x8e\x42\x78\x65\xfe\x01\xe5\xa8\xcf\x27\x71\xe0\xdb\xd6\x4c\x6a\x58\x63\xdb\xd1\x8c\x6e\x54\x44\xab\x9a\x6e\x23\x9a\x5f\xa7\xc4\x11\x3c\x35\x21\x53\x76\xcf\x32\x30\xa5\x0f\xed\x01\x4d\xbd\x09\xfa\x0e\x41\x0e\x11\x97\xf7\xff\x67\xef\x6a\x7b\xe4\xb6\x91\xf4\xf7\xfb\x15\x44\x2f\xb0\x63\x03\xd3\x6d\xe7\x76\xb1\x58\xdc\x6e\x02\x4c\x6c\x27\xd7\x88\xe3\xcc\x79\x6c\x2f\x70\x38\xe0\xc0\x96\xd8\xdd\xbc\x91\x44\x85\xa4\x66\xdc\x38\xdc\x7f\x3f\xb0\x8a\x6f\x52\x4b\xa4\x7a\x3c\x93\x78\x81\x9e\x2f\xbb\x71\x4b\x14\x5f\x8a\xc5\x7a\x79\xea\xe1\x60\xf1\xa3\x2e\x20\xdf\xb3\x72\xff\x85\xeb\xef\xb6\x4c\x52\xcc\xfd\x81\x2f\x20\x8a\xbd\xe5\xda\xb8\x98\x14\x06\xb8\x22\x37\x23\x2d\x22\xd5\xe3\xf4\x59\x64\xde\xbc\xb8\x50\xa4\xa2\x1b\x56\xa9\xe1\x07\x36\x0c\xbc\x93\xb2\xab\xf0\xd2\x12\x88\x7f\xe3\xc7\x92\xf4\x3d\x27\x55\x0a\x00\xe9\x16\xd4\x26\xbc\xa0\x4a\xf1\x5d\xb3\x34\x62\x65\xbe\xf2\x62\x4a\x82\xb2\x2b\xde\x4a\x2e\x24\x9f\x26\x45\x3f\x8a\x8c\xb8\x17\x70\xe3\xac\xc8\x27\x2a\xb9\xe8\x94\x63\xac\x2a\x44\xdd\x8a\x06\x88\xfc\xbb\xc4\xed\x1d\x3a\x10\xca\xc1\xf2\x58\xb2\x7a\xdf\xb8\x57\xd6\x8e\x7e\xf4\xda\xfe\x32\xd9\xe2\x55\x59\x73\xb8\x80\x26\xca\x86\x42\x61\x4c\x43\x37\x15\xc3\xe4\x4b\x2b\x91\x09\xcb\x74\x4d\xba\xfb\x4a\x98\xd6\xa9\x83\x25\xf4\x14\xa1\xf0\xd4\x7f\xa7\x08\xdf\x71\x17\x0f\xa8\xe8\xf1\x69\xd9\x34\x9f\x75\xe3\x79\x55\x51\xa5\xcc\x51\x60\x4b\x9b\xf8\xce\xdd\x29\x04\xf3\x8b\x59\xae\xf0\xaf\xd3\xae\x84\x6d\x6f\xea\xe0\x98\xa3\x46\xf2\x2a\xa4\x1d\xf6\x7a\x96\xd8\xac\xb7\x11\x6d\x1d\xe1\xf6\x4a\x09\xe5\x56\xf8\x42\x85\xde\x93\x05\xca\x11\x48\xf5\xb2\x90\x5c\xf3\x82\x56\xd3\x97\xe1\x1b\xdb\xd9\xbd\x52\x54\x9d\xd2\x4c\x86\xb7\xc0\xa1\xd4\xf7\x02\xbf\x4e\x2b\x72\xcb\x0e\xf7\x42\x96\x2a\x43\x77\xe7\x7a\x18\xe6\x5e\x69\xd7\x45\x63\xc4\xc2\x0d\x0a\x98\xb2\x95\x35\x93\x64\xc3\x72\xe4\x8f\x83\x46\x0e\x2b\x72\xd5\x1c\x2c\xd3\x6e\x13\xdb\x01\x25\xdb\x72\x7b\xd1\x13\x70\x9b\xa5\x24\x93\xf6\x85\xc8\xee\x72\xd7\x3b\x8a\x56\xe4\x08\x71\x60\x5a\x8e\x44\x19\x76\xa1\x43\x1f\x38\xcc\x80\x90\x04\x13\x6f\xb0\x3b\x25\xc3\x6c\xa6\xfb\x79\x4a\xf4\xb2\x47\x80\x64\xb4\xe4\x8f\x08\xb0\x50\x4c\x02\xf3\xbc\x6f\x37\x01\x32\xe8\x97\xb8\x01\xd2\xa2\x16\x77\x8e\x4d\xd9\xb5\xc4\x9a\xb2\x15\xdc\x68\x8e\x18\x7e\x91\xcc\xe7\x8d\xd2\xed\x8d\x21\x35\xfc\xec\xbe\xef\x4d\xc3\xb4\x74\x02\x54\xc3\x8c\xed\x30\x8d\xd5\x98\xc0\x64\x24\xb4\xdc\x11\x56\xe3\xbd\xfb\x42\x04\xd6\x38\x23\x30\xe2\xbf\x33\x02\xe3\x8c\xc0\x38\x23\x30\xce\x08\x8c\x33\x02\x63\xea\xa9\x33\x02\x63\xba\x87\x67\x04\xc6\x19\x81\x71\xf4\x77\x46\x60\x9c\x11\x18\x63\x8f\x9e\x11\x18\xe4\x8c\xc0\x70\x7f\x67\x04\xc6\x19\x81\x71\x46\x60\x9c\x11\x18\x4f\x32\x23\x67\x04\xc6\x19\x81\xd1\xff\x3b\x23\x30\xce\x08\x8c\x33\x02\x63\xf8\x77\x46\x60\x9c\x11\x18\x83\xc9\x7e\x0c\x04\x86\x63\xc5\x9c\x5c\xac\x61\x74\xbf\xed\x34\x23\xef\xdd\x5b\x5e\xb6\xdc\x0d\xda\xe6\x10\x2d\xa8\xcc\xdf\x1a\x3b\x47\xb3\xc2\xdd\xef\x49\x31\x3a\x0d\x1c\x42\xe6\x6b\xbf\xbe\x7c\xbe\x85\x8e\x44\x31\x1a\xbc\x3e\xeb\x33\xc8\x13\xc5\xdb\x81\x21\x25\x08\xd3\x93\xfc\xbe\x9f\x70\x8c\x33\x3d\xa0\xcc\xb8\x8f\xcc\x40\x9a\xca\xa5\xfd\xf4\xd2\x37\xbf\xf4\x2b\x30\x09\xd6\x20\x73\xb7\xb5\x8d\x9f\x7d\x0d\x2b\xf1\xde\x76\x65\xb8\x16\x76\x6f\x3f\x74\x2d\x9c\x18\x43\xfa\xda\x7f\x83\x2b\x22\x6a\xae\xe1\xb2\x5b\xd1\xbb\x28\x2c\x4d\x68\xc1\x75\x2f\x3c\x6b\xa5\x07\x52\xb9\x54\x23\x7b\xaa\xa7\xf9\x9b\x79\xc1\x5e\xb8\x2b\x15\xd9\x73\xbd\xe1\x03\x52\xb0\x74\x79\x7c\x0b\x92\x79\x44\xb5\xf6\x5b\x4b\x5b\xf6\x11\x87\x7b\x92\x0f\xc4\x83\x38\x4b\xc9\x83\x0d\xb8\x6a\xa9\x36\x8d\x1a\x1d\xe6\x1f\x9c\x76\x58\xdc\xf7\x27\xa0\x0e\xd3\x8d\x4f\x36\xe9\x32\xf2\xa1\xe9\xe4\xe4\x24\xb6\x8c\xf1\x84\x00\xa1\x21\x1a\xcd\x3e\x4f\x5a\x6f\xfd\x3d\x75\xd3\x7f\x89\x18\x37\x4c\x11\x38\xc0\xd8\x1d\xab\x7c\xa3\x84\x6a\x2d\xf9\xa6\xd3\x89\x33\xd8\xb8\x36\x85\xa8\x6b\x8b\x57\x72\x00\x09\xc0\x3c\xa9\x15\x09\x56\x6f\x7c\x46\x03\x00\x60\x45\xc8\x0d\x4b\x5f\x97\x18\xf7\x1b\x76\xa4\x9b\x38\x10\x7b\xc8\x35\x32\x5a\xec\x2d\x7c\xea\x4b\xf2\xfb\x5b\xf5\xa3\x14\xdd\x7c\xca\xec\xc5\x95\x07\xfd\x18\x17\xc5\x6e\xcd\x8a\xec\x4c\x2b\xb8\xed\x69\xdb\x56\x3c\x63\xbd\x98\xbd\x5d\x55\x61\xe6\x14\x81\x2b\xd8\x01\x96\x76\x23\x6a\x7f\xf3\xad\x99\x0c\x7b\x80\x64\x93\x3f\x3f\x75\x1b\x56\x31\xbc\xa0\x7b\x0f\x36\x2b\xf0\x30\xdf\x9b\xe6\xf7\xbc\x45\x2b\x99\x6a\xdf\x34\xb8\xc3\xe6\xe7\x74\xae\xd6\x9e\xf7\xad\x28\xff\x8d\xfc\x57\x63\x6c\xa9\x0f\xd8\xac\x71\xf0\x7e\x5c\xbf\xf6\x5b\xc0\x3c\xf5\xc3\x0d\x4c\x27\xf9\xd7\xb4\x95\x6b\x5a\x50\x4c\xef\x78\x49\x36\x98\x39\x57\x4c\x93\x67\x0d\xbb\xc7\x94\xbc\xbb\x7f\x91\xf4\xee\x01\x4e\x36\xe9\x7a\x01\x03\x32\x9d\xb6\x5d\x79\x4e\xfe\x84\x3d\x6e\x99\x74\x00\xbb\x8d\xd1\xd2\x54\x32\xf2\xcb\xfb\x8b\xf4\xe0\x01\xf3\x24\xef\x97\xf2\x7e\xb9\x5c\x2e\xcd\xf8\xd7\x5b\xd2\x35\x70\x5f\xb9\xe9\x98\x9b\x73\xf8\xba\x51\x11\xb5\x28\xf9\x36\xc3\x63\xdd\x5b\x15\xb3\x8f\x42\xd7\x40\xb4\x69\x73\xb0\x23\x5e\x4d\x03\xd4\x7a\xe6\xe3\x5f\xfe\xfc\xc5\x51\x00\xd9\x35\x57\x27\xee\x05\x33\xab\x46\x00\xb4\x00\xd0\x83\x19\x17\x6b\xb4\x3c\x00\xa2\xe9\x88\x4b\x3b\xed\x81\x4a\x51\x00\x73\xcd\x47\x65\x0e\x69\xbc\x54\xd6\xef\x7a\x6e\xe7\x7c\x45\x7e\xa6\x07\x42\x2b\x85\xb8\xd8\x04\xec\x88\xe0\xfd\xa5\x03\x85\xb7\x22\x70\x44\x60\xbe\x70\x23\xf4\x7e\xf8\x40\xf6\x3e\xfb\x6b\x88\xe9\xc5\xaf\x5c\x46\x10\x27\x7f\x3e\x8c\x7c\x3b\x2d\x12\xf4\x96\x29\xd2\x4a\x56\xb0\x92\x35\x05\xb3\x51\x2d\xaa\xf3\xe6\x35\x79\x1a\x49\x78\x27\x9a\xf7\x42\xcc\x0f\x09\xad\x23\xf0\xa5\xbd\x75\x36\x1c\x0b\xe0\x0a\x1b\x11\xa1\x2a\x13\x12\x6a\x44\xb3\x04\xc8\x4e\xa7\xec\xb9\x8b\x17\xce\x1f\xed\xb5\x3b\x5a\xf1\xd2\x42\x29\xd3\x52\x50\xd3\x1d\x23\x54\x7b\xa1\x32\xc7\x50\xa3\x3a\x20\xbc\x37\x46\x9a\x26\xa5\x60\x01\xba\x43\x15\xf9\xb8\x7e\x9d\x6c\xf2\x25\x79\x06\x57\x62\xc3\xde\xdd\x52\x5e\x41\x16\x1a\x6e\x6e\x1d\x5c\x0c\xbb\x75\xcd\x9b\xa1\x24\xdb\x04\xf9\x26\x42\xe2\xcd\xf6\x97\xa4\x11\x78\xf7\x81\x1d\xa7\xd1\x5a\x4e\xc3\xd9\x50\x70\x96\x30\xbe\xbf\x55\x1e\xb2\x1d\xd2\xb1\xb6\xa6\xfc\xad\xb6\x43\x6a\xa0\xf3\x2e\xf8\x07\x99\xfe\xa8\x58\xf2\xde\xec\x23\xe5\xf6\xf1\x91\x95\x5b\x6c\x0a\x19\x01\xef\xcf\x10\x4a\x6a\xcd\x34\x2d\xa9\x4e\x6f\x13\x54\x88\x01\x25\x38\x73\xad\xd3\x19\x9c\xb4\x5a\x9c\x5a\xeb\x64\x9b\x79\x39\x18\x55\x7d\x99\xe3\xf3\xf7\x51\x8b\x8a\xbd\xe5\x4d\xf7\x19\x0d\xdb\xf9\x21\x2f\x23\x47\x37\x6f\xe0\x55\xbc\x74\xe4\xb3\xb6\xa6\x17\xda\x89\xe5\xb1\x2d\x98\xde\xd7\xeb\xde\xda\x0f\x2f\xd4\x70\x5a\x0e\x94\x85\xb1\x1b\x01\x6f\x9e\x96\x26\x49\x9b\x52\xd4\x47\xbd\x34\x67\x10\x58\xd9\x51\x84\x34\x96\xb4\x39\xd2\xf4\xcf\xaa\x71\x4e\x3c\x80\xe7\x66\x0f\xc0\xcd\x3a\x29\x7d\xf0\x16\x1c\x33\xae\xfc\xea\xa0\xa7\x06\xc5\x42\xf3\xdd\x0d\x12\x72\x07\xb3\xc6\x43\x4e\xc9\x1e\x48\x31\x7d\x2f\xfd\xe8\x98\xde\x8b\x8a\x61\x05\x96\x1b\x94\x69\xe2\xab\x1a\x13\x3c\x78\xca\x98\x3e\x18\xaf\xb5\x37\x26\xf0\x63\xbf\xa6\x31\x75\x99\xe3\xef\x68\x4c\xe6\xbc\xec\x8f\x09\x0e\xad\xaf\x67\x4c\xb3\x62\x9a\xb1\x9b\x0e\xfe\xcd\x7c\xdd\x7d\x45\x2a\xae\xe0\xb0\x07\xf7\x5e\xc5\x2a\x1b\x70\xfd\x5c\x42\xed\x8d\xc8\xf2\xb0\x22\x28\x7c\xa0\x4e\x2f\xc1\xe9\xb7\xe1\xd4\xa3\x39\xca\xdc\xa8\xd2\x4a\x5e\x53\x79\x30\x0e\xd8\xea\xf8\x50\x68\x84\xeb\xb2\xb3\x1a\x69\x59\xe6\xef\x99\x32\x9e\xe7\xac\x45\x9a\x81\x81\x9c\x7b\xfa\xce\x3d\x7f\xe7\x21\xd6\xd4\x41\x15\xba\x9a\xbf\xc4\x37\xf8\x3c\x84\xc2\x08\xf5\xeb\xdd\xd0\x9a\xa9\x96\x16\xac\x74\x2d\x02\xea\x32\x37\xe0\x50\x5b\x78\x2d\x4a\x5b\xcf\xd5\x35\x21\x97\xed\xda\x7a\x66\x83\x2a\xf3\xec\x47\x7b\xa6\x3f\x27\x35\xdf\xed\xb5\xf7\x38\x2a\xda\x35\xc5\xfe\x0b\x57\x69\x64\x32\x6c\xad\x98\xd9\xf7\xb7\x4c\x36\xac\x22\x2d\x95\xb4\x66\x00\x0a\x9a\xe5\x79\xcf\x07\x9b\xce\x03\x9a\x8e\x60\xe8\xb6\x84\xba\xcf\x1c\x2c\x08\x38\xaf\x85\xe6\x67\x9b\x67\x02\x4c\x7b\x1d\xfb\x04\x26\xc8\xd3\xf6\x6c\x1e\xb0\x74\x06\xa8\x74\x0e\xa0\xf4\x24\x26\xe4\xf4\xb6\xbc\xe7\x4d\x29\xee\xd5\x43\x8c\xe7\x7f\xe0\xab\xce\xb6\x2b\x7c\x90\x79\x60\x40\x27\x87\x12\x19\xd7\xa3\x06\xb4\xc0\x8e\xb9\x9b\xe5\xe8\x6c\x35\x3c\x74\x67\x9c\xba\x35\xda\x62\xf5\x4f\x62\xec\x3e\x86\x65\xbb\xab\x15\x7d\x25\x4d\x7b\x9a\xd3\xea\xa6\x3d\xf1\x12\xb8\x1f\x7f\xbe\xb9\xea\xbf\x6e\x0c\x8f\x7b\xa8\x05\x35\x23\x36\xbf\x87\x0a\xe9\xec\x7e\xba\x67\x9b\xbd\x10\xb7\xe4\x99\x4b\x7c\xed\xb8\xde\x77\x9b\x55\x21\xea\x28\x07\xb6\x54\x7c\xa7\x5e\x58\xd1\x5c\x9a\x11\xe4\x8b\xab\x78\x53\x81\x6e\x74\xda\x1b\xaa\xbe\x6d\x34\x00\x3a\x59\xf8\x51\xc0\x02\xc1\x4e\x9c\x71\x77\xdd\xc1\xb7\xd0\x9f\x06\xd0\x76\xbe\x4a\xdc\xd7\xb6\xcf\xb8\xbe\x8b\x56\xed\x9e\xda\xc4\x8e\xad\x59\x83\xba\xc4\xbd\x68\x84\xcd\xe3\x23\x1c\xdb\x86\xec\xb0\x9e\x3d\xaf\xaa\xc2\x96\x84\xf1\x6e\x19\xd5\x9d\x64\x64\x5b\xd1\xdd\xa3\x99\xaa\xc7\xd2\x94\xca\x01\xba\xbf\x8c\x44\xc1\x54\xda\x72\xc5\x08\x36\x94\x1d\xf1\xe8\xb2\x62\x04\x67\xb0\x26\xf1\x9c\xe7\xd7\x67\xf6\x9a\x0c\xe7\x3c\xdb\xf4\x93\xac\x89\x0f\xa1\x9d\xbc\x14\x10\x4a\xb3\x2f\x1a\x5d\xe5\x34\xfa\x68\x68\x2d\x3b\xb8\xa3\x3b\x3a\x47\xc3\x6b\xe6\x91\x7e\x88\x6d\xc6\xd6\x1e\x84\xe0\x72\x61\xb6\x39\x2d\x1e\xab\xf0\x2f\x3a\x15\xc8\xd3\x9e\x0c\x64\xec\x74\x98\x96\x71\x94\xe1\x19\xf3\x70\xb2\x98\xbf\x8f\x85\xed\xf7\x90\xf7\x47\x01\x30\x60\x91\xff\x55\x01\xb7\xf1\xce\x46\x31\x5c\xdc\x1c\xbd\x37\xa2\xb6\x48\xff\xa9\xe9\x74\x3a\xd6\x47\xf8\xbd\xc6\x15\x3a\x28\xf3\xb0\x48\x9a\xaa\xdb\x00\x0d\x61\xc0\x0b\x13\x10\x20\xe1\xdf\xed\x50\x97\x14\x7b\x93\xa1\x8d\x49\xcc\xbe\x16\x15\x43\x08\xca\x3c\xa0\xda\x28\xe4\xe3\x42\xc5\xed\x4c\x49\x44\xc6\x3b\x3a\x26\xa8\x11\x25\xce\xdf\x07\xdf\x36\xec\x07\xad\xe1\xfa\x5e\xd0\x3a\xf8\x4b\x32\x22\x62\x7c\x6c\x33\x7f\x1a\x65\x1f\xe8\x81\xac\x41\xa1\x25\x6f\x2b\x46\xfe\x7e\xcb\x0e\x97\xc8\xd2\xc2\xb6\x5b\x56\xe8\xef\x48\xa7\x32\xe2\x0a\x30\x35\x5d\xec\x79\xb3\x23\xc6\x62\xa3\x5a\x48\xf2\x77\xf7\xff\xbe\x9b\xde\x15\xf3\x0c\x3c\xec\xc7\x09\xae\xe4\x1b\x78\x61\xc0\xc9\x82\xc3\xc6\xb6\xcc\x74\x41\x8f\x73\x1b\xf6\x0d\x90\x46\xd4\x8c\x36\xca\x71\x29\x55\x55\xaf\x29\x65\xa9\x7c\x66\x22\xac\x88\x03\xe4\x39\x34\x09\x95\x8c\xbc\x13\x37\x16\x93\x73\x49\xae\x25\xdb\x32\x19\xfe\x25\x9b\x15\x26\xe4\x9d\x78\x83\x84\x07\xe9\xd1\xcc\x54\x3e\xb7\x6c\x92\x36\x09\xff\x7a\x53\xfd\x13\x3b\x38\xfd\x80\xb3\x72\xcb\x0e\x21\x0b\x1b\x36\x42\x6e\x52\x30\x96\x47\xb4\x58\x25\xe7\xfc\x96\x1d\xd0\x89\xca\xdb\x4e\xb7\xd8\x33\x40\xfd\x5c\x06\xb1\x74\xc8\xe8\x37\x9f\xb9\xd2\xea\x6f\xb8\xa9\x0a\x51\x6f\xec\x05\xd9\x99\x56\xb1\x5b\x4e\x7c\xa0\x67\x6e\x21\x9b\x12\xfe\x13\xba\xf8\x18\x0b\xe1\xba\x7c\xc2\x6a\xfc\xe2\x46\x29\x59\x2b\x99\x02\xff\x80\x9a\x1e\x5d\x28\x22\x59\x85\x2a\x69\xcf\xdb\xdc\x31\x25\xc2\x79\xbe\x22\x9f\x68\xc5\x4b\xdf\x1b\x94\x58\x9c\x3d\x18\xf3\x9b\x5f\x3b\x5a\xe5\xf6\x51\x6c\x1d\xe1\x0b\xae\x09\xb3\x44\xbf\x76\xfc\x8e\x56\x0c\xab\xc4\xef\x79\x55\x16\x54\xe6\x84\x7e\x2b\xa4\x23\x93\x52\x96\x17\x02\x20\x4c\xa4\xa0\x8d\x57\x85\x41\x72\x8c\x9f\x94\x93\x41\xd2\x52\xa9\x79\xd1\x55\x54\x12\xa3\x37\x76\x42\x66\xf8\x1f\xe6\x9e\xe7\x7e\x1b\xcc\xc0\xac\x0f\x95\xff\xf0\xdd\x78\x6d\xf5\xde\x5f\xe5\x9e\x1d\x1e\xe2\x0f\x7a\x9b\x92\x3c\xeb\x93\xcf\x89\xad\xd3\x8f\x5e\xa5\xe4\xb4\x59\x84\x18\xed\x19\x6a\xc8\xd4\x53\x3e\x0f\xa7\x52\xd0\x11\x39\x61\xf9\xfe\xe0\xc0\x37\x31\xb5\x09\xc0\x9e\x6c\x7f\xed\x26\xb4\x8b\x9c\xd7\x05\xa8\x3c\xb6\x42\xb2\x3b\x26\xc9\xb3\x52\x40\x8b\xec\x8e\x17\xfa\xf9\x8a\xfc\x27\x93\x02\x19\x40\xd8\x8e\x42\x85\x17\x6e\xe9\x4c\xa3\x1e\x7a\x16\xae\xbc\x7e\x49\x9e\x41\xa3\x84\xd7\x35\x2b\x39\xd5\xac\x3a\x3c\xf7\xa0\xf5\x19\x5c\x2f\x8f\x1f\xb7\x9e\x11\x4c\x1c\x09\x24\xf6\x54\xba\xa5\x50\xea\x8b\x8e\x35\x1d\xb2\x9a\xc4\x69\xeb\xa0\x81\xb9\xb2\x7b\xbf\xe7\x35\x38\x6e\x22\xab\xb0\x67\x8b\xdd\xff\x18\xd9\xa5\x44\xb2\x1d\xec\x5b\xdc\x8b\x8f\xb0\x6b\x67\xdb\xe0\x53\xb1\xc7\x44\x03\x93\x3f\x49\xd6\x56\xbc\xa0\x47\xfa\x61\xb4\xfe\x68\x0b\xb4\x18\xb4\x29\xe0\xdc\x24\x25\x6b\x2b\x71\xb0\x10\xf2\x9f\x0f\x37\xff\xf1\x96\x18\x3f\x72\x43\xd5\x91\x5d\x90\xaa\xfd\x98\x96\x2b\x6b\x66\x7f\x60\x75\x5b\x51\x7d\x24\x53\xfd\x60\x7e\xff\x59\x30\x55\x1b\x1b\xe8\xa4\x00\x37\x08\x70\x6f\xe8\xb2\x6d\xfc\x68\x1e\x81\x6e\x02\xf9\x82\x84\x62\x7e\x44\x83\xe7\x52\x76\xa4\x73\xa8\xc7\xf6\xc0\xc0\xf5\xd1\xb4\x29\xa9\x2c\xed\xca\x5c\x5c\x28\xff\xf2\xa8\xcb\xb2\xe3\x7a\x75\xfb\x57\xf0\x57\x0a\x51\xd7\x5d\xc3\xf5\xe1\x05\xf0\x27\xf2\x4d\x67\x8e\xca\x17\xa5\x71\x54\x5f\xd0\x96\x1b\xbf\xe5\x8e\x35\xe8\x12\xd4\xe5\x1f\x5c\xbb\x63\xae\x4a\xce\x28\x06\xfe\xb5\xb4\x97\xf2\xc4\x6c\xa6\x57\xa1\x07\x76\x65\x3b\x4b\x17\xd5\x19\x0f\xdb\x58\x5e\xb8\xab\x6b\xda\x12\xa5\xcd\x41\x90\x08\xce\xeb\x3d\xec\x5f\xc4\xf8\x3b\xbf\xe4\xe0\xd0\x44\x9b\x03\x61\x9f\x35\x93\x46\x6c\xb4\x10\x15\xb2\xae\xe8\x14\xfd\xa8\x51\xe5\x92\x69\xc9\xd9\x1d\x23\x54\x6e\xb8\x96\x54\x1e\xa2\xb5\xfc\xb0\x67\x07\x30\x63\xcc\x29\xf0\x6b\xc7\xe4\x01\x42\x00\x29\x4b\x3b\xe8\x27\x38\x7c\xe5\x1d\x2b\xc9\xbd\xb1\xfb\x11\x73\x0b\x9e\x0f\x48\x8d\x3a\x12\x95\x71\xe7\xb6\x53\x4c\x2e\x77\x1d\x2f\xd9\x8b\x68\x41\x1f\xc8\x78\x9a\xfc\x59\x4d\xc4\xc3\x07\xc2\x6f\x33\x1c\xb8\x25\xad\x9b\x5f\x32\x85\x65\x57\x6c\x4f\xef\xb8\xf0\xa4\x11\x76\xb7\x8e\xab\xd9\xc7\xdd\x29\xa6\xf7\x4b\xda\x94\x4b\x64\xfa\x7a\xc8\x86\xb1\x14\x9a\xeb\xeb\x79\x11\x10\xff\xb8\x3b\x05\xd7\xd7\x66\x43\x49\x28\xeb\xec\x8d\x3f\x29\x31\x5c\x91\x4e\x75\xb4\xaa\x0e\x04\x79\x6d\x59\x69\xc1\x4e\xd5\xc1\x99\x04\x35\x35\x5f\x82\x23\x92\x36\xee\x23\xa9\x16\x43\x70\xad\xa6\x8d\x6d\x1c\x43\xb9\x46\x94\x79\x03\xe1\x96\x8d\x25\xe1\x54\x60\x3e\x19\x33\x65\xb2\xc9\x0d\xf3\x38\x2d\x0f\x2c\xb0\x83\xfb\x5b\x38\x64\x2f\x2d\x6d\x67\x10\x8c\x29\x75\xed\xfe\xc0\x36\xda\x52\x5e\xf5\x02\x78\xc6\x34\xb7\xdc\x91\x58\x24\x50\x12\xbd\x97\xa2\xdb\xed\x2d\x97\x64\xc2\x71\x42\x2f\x24\x72\x9a\x17\xef\x44\xc3\x16\x97\x96\xd7\x11\xb5\x17\x79\xb6\x58\x3c\xbf\x24\x70\x04\x02\x78\x95\xac\xa7\x99\x98\xec\x74\xaf\x6c\x4b\xd0\xbb\x4d\x1c\xbf\x34\xe7\xd2\x9e\xd1\xb2\x32\x2b\x6f\x47\x0c\x79\xa1\x69\x27\xb1\x95\xe2\x33\x28\x03\xc7\xc7\xe7\x2b\xbe\x7e\x69\xcc\x5a\x79\x37\xd7\x16\x57\xbc\x72\xb2\x36\x6d\xf0\xbc\x13\x25\xbb\x16\x52\x5f\xc2\x4a\xbf\x15\xb4\xfc\x9e\x56\xe6\xd4\x37\x72\x83\x56\x36\x14\x7d\x59\x0c\xd0\x1b\xab\x2c\x81\x7d\x77\xb2\xd1\x13\x8b\x01\xdd\xe0\x97\x0d\xd3\x96\x1a\xd1\xfd\xdb\x8b\x3f\xdc\x71\xa9\x3b\x5a\x2d\x79\xab\x70\xa3\xda\x70\x9c\x99\x0b\x3e\x5d\x84\x9a\x3d\x75\x9c\xda\x5f\x5f\xcf\x8b\xc6\x45\xcf\x23\x70\xc8\xe1\x29\xc2\xfe\xb5\x94\x0d\x69\xa2\xdc\x46\x94\x4c\x79\xc2\x46\x5c\x20\x07\x69\x54\x58\xe0\xdd\x6a\xa2\x25\xdd\x6e\x79\x61\x81\x17\xdc\x0b\xc8\x0a\x0a\x4c\x12\x24\xd1\xa6\x7b\xee\xec\xc1\x42\x37\x88\x49\xff\x14\xa6\x1f\x4b\x54\x3a\x0b\x80\x92\x4c\xb5\xa2\x51\x3c\x95\x1f\x03\xb4\x64\xa3\x3a\x89\x94\xbd\x34\x74\x8f\x4a\xc9\xef\xcc\x8e\xd1\x96\x27\xdc\x31\xe9\x72\x05\x44\x6d\x64\x3a\xa1\x63\x0b\xac\xd8\x67\x5a\xb7\x88\x99\xf3\x07\x71\x25\x68\xb9\xdc\x58\x31\xb4\x71\x74\x37\x26\xe3\x44\x4f\xb6\x69\xd5\x47\x18\x6c\xc6\x2b\xca\x84\x49\x67\x58\x2e\x39\x80\x80\x1b\xd3\x07\x9c\xb0\x6b\x51\xf1\x62\x1e\x6f\xf8\xe8\x9b\xa4\x64\x8d\x30\xe3\x82\x3a\x4c\xae\x9c\x25\x6c\x8f\xd2\x69\xe5\xae\x05\x91\xa2\xd3\x2c\xb2\x76\xec\x12\x6a\x01\x0b\xb7\x34\x6a\xba\x32\xba\xcd\x51\x42\xdf\xf3\x32\x22\xf1\x9d\xde\xec\x8b\xb7\x02\x88\xa3\x9d\xe5\x62\x13\xc8\x15\x67\x8d\x26\xd6\xec\x32\x7b\xa4\x29\x09\xbd\x13\xbc\x44\x7a\xfa\x42\x24\x0e\xb7\xbd\x68\x41\xe8\x62\x75\x04\x0d\x18\x6d\x85\x54\x08\x46\x1f\x39\xbd\x71\x49\x36\x9d\x26\x92\xab\xdb\xe9\x09\x68\x85\xc6\x1c\x67\x75\x20\xbc\xb6\xc2\x55\xfa\x59\x50\x2d\x12\x1f\xef\x56\x64\x61\xb5\xe6\x82\x88\x8d\x2a\xba\xe4\xac\x4e\x0d\xd4\x58\x98\x05\xb5\xf4\xa4\x30\x56\x18\x13\xc0\xd0\xe0\xdc\x4b\xaa\x07\x1c\x8f\xb5\x09\xf7\xf4\x8e\x91\x9d\x10\x25\x11\x77\x4c\xd2\xca\x6e\x8f\xd0\xe1\x87\x2a\x40\xa4\x20\x7d\xb5\x67\xc5\xad\x3b\x04\x66\x09\xe6\xc8\x7b\x43\xee\x49\x78\xa2\x30\x4f\xc0\x78\xae\x53\xac\x0c\x0e\x5a\xe6\x15\xdc\x71\x41\xea\xbf\x8f\x7c\x31\x81\x12\x70\x05\x76\x2e\x30\xe2\xac\xa9\x96\x93\x0d\x2d\x6e\x59\x53\x06\x36\xf2\x60\x9e\xb8\x8e\x4e\x0b\xfa\x3f\x8c\x92\x36\x6b\x0a\xc6\x75\x38\xc8\xdd\x9b\x8e\x94\x21\x4a\xdb\xd8\x3e\x4c\x77\x15\x84\xc7\x1e\xdf\x36\xe2\x8f\x86\xbf\x03\xdd\x2a\xac\x7a\x1c\xee\x84\xc9\x16\xdf\x8c\xaa\x8d\xb8\xa1\x62\x3a\x9e\xfa\x38\x84\xf7\x55\xd4\xd7\xb9\x56\xf1\xd0\x7e\x71\x7a\xed\x03\x7c\xad\x37\xfa\xf8\x3f\xd2\x16\xe2\x8e\x69\x2f\x0c\x7e\xc5\xd7\xd7\xfd\x1c\x72\xff\xae\x82\x84\x58\xb9\x4c\x6c\xc9\x5a\xd6\x94\x40\xfe\x77\xbf\x67\xda\x5d\x3d\xd0\x35\x25\x93\x15\x58\x67\x45\x25\xba\x72\x69\xa9\xc5\xa5\xe3\xfb\x99\x6e\x19\xfb\x73\xb0\x84\xf8\x83\xf9\x43\x71\xa0\xf0\xaf\xc4\x1d\x8a\x66\x41\xed\xc8\xa6\xe5\x35\x32\x8d\x5d\x30\x91\x47\x16\x1d\xe8\xae\x5e\x47\x5d\xb1\xd8\x74\x47\x71\x24\x08\x10\xc6\xe9\x98\xac\x50\xce\xea\x9f\x78\x98\x37\xa0\x3d\xdf\x1b\xa3\x7d\x9e\x35\x76\x11\x27\x47\x91\x8b\xca\x23\x51\x5d\x55\x6f\x45\xb5\x11\xe8\x4b\x58\xe2\xb4\xa4\x48\x66\x3a\x5a\x04\xc3\xc6\x39\x0e\x23\xb3\xd4\xb3\x4e\xd2\xcd\x02\x35\x3e\xb6\x1c\x39\x40\xbe\xdb\xf6\xe8\x58\x5f\xab\xd8\x8f\xc9\x36\x39\x6f\x11\xe3\xc5\xca\xc9\xf4\x6a\x71\x52\xce\x1c\x49\x88\x96\xb0\x5d\xd1\xa3\x77\xf7\x48\x44\x69\xf3\x7e\xb7\x96\x5b\x2e\xd9\x3d\xad\xaa\xc9\xf4\xf9\xd3\xdb\x62\xb0\x09\xe7\x49\x97\xb1\x90\x9d\x7d\x0f\xaf\x05\x23\x14\x43\x85\x56\xca\x22\xc3\xfc\x6b\x76\x86\x4e\x81\x03\x58\xcd\x0b\x07\x9a\x85\x43\x28\xe8\xbe\x39\x1a\xc0\x47\x6f\xdc\x98\x93\xf8\xd1\x36\x79\x96\xce\x4b\xcd\xe7\x21\xd4\x47\x48\x86\x00\x23\x01\x34\x88\xd4\x0e\xf7\x9a\x0d\x2c\x85\x3f\xd8\x8b\x9e\xe3\x8a\xbc\x7e\x77\xf3\xdf\x6f\xaf\xbe\x7f\xf3\x76\x45\xae\xaa\xca\xca\x83\x47\xd3\xda\xf9\xba\x69\x59\x91\x4b\xee\x9a\x16\xc1\x9c\xeb\x1a\xfe\x6b\x87\x7d\x75\x5b\xbf\xa6\xad\x07\x77\x5d\x18\xef\xfa\x22\xa3\x0d\xf0\x8f\x37\xe4\x8d\x35\xd1\x61\xc5\x7c\x94\xd0\x91\x54\x18\x2d\xe1\xef\x6c\x88\xd6\x36\xd7\xae\xf2\xd7\xaa\x88\x66\xa6\xa0\x93\xf9\x29\xcb\x26\x63\x70\xe2\xdf\xf1\x9e\x84\x05\x15\xb6\xd8\x04\xfc\x4d\x38\x85\x91\x60\x2b\xf4\x31\x3f\x38\xb7\x8b\xe1\x70\x35\x9d\xfe\xd6\x5b\x96\x03\xbf\x63\x45\x3e\x62\x9c\x2d\x97\xdf\x75\x51\xb8\x7e\x3e\x6e\x78\x91\x4f\x80\x51\x7b\xd3\x73\x5e\xba\xdc\x99\xb1\x00\xdc\x83\xbc\x85\xf1\xca\x2b\xc5\x4e\x8e\x9e\xe1\x5f\x14\x43\x73\x8c\x9a\x1c\x24\x90\x76\x5a\x2c\x43\x79\x25\xce\x39\x9f\x83\x89\x70\x69\x19\x63\xba\x8a\x81\x83\x6a\x43\x55\xc6\x6c\x9a\xcf\xed\x33\x8f\xdd\x27\xa9\x31\xcd\xda\xc2\xc5\x48\x66\x18\x69\x56\xc1\xb9\x9c\x65\xf3\xb3\xa3\x79\xf2\xc1\x11\x24\x96\xb4\xe8\x29\x27\x27\x27\x1f\x38\x4f\x31\x96\x7c\x71\x46\x86\x7c\xef\x8b\x13\x9e\x84\x28\x06\x08\xf9\xab\xed\x96\x37\x08\xfa\xdc\xf2\xdd\xac\xf3\x7c\xf4\xcd\x70\xba\x59\xcc\x6d\xc8\x19\x4e\x9f\x6b\xc0\xee\x87\x4c\x2b\xd4\xb6\xf6\x25\xe4\x70\x68\x01\x4e\x3b\x49\x47\x23\x71\x2f\xa4\x3a\x6f\x3a\xf9\x0a\x9e\x4b\x2e\xfc\xfa\x9a\x6c\xa8\x11\xac\xb9\x03\x9a\x3b\x28\x72\x12\x89\xe2\xd1\x10\xfb\xaf\x0e\x42\x0b\x8e\x5a\x31\x8b\x47\x21\x76\x0a\xd6\xd7\x2e\x56\x84\x83\x54\x9a\x17\xb7\x07\xf8\x08\x72\xe7\xd8\x54\x62\xa7\xf2\x58\xdf\x0d\x23\xdf\xbd\x24\x7f\xfc\x23\xf9\xfb\xb7\x7f\xfd\xcb\x9f\x5f\xbe\x7c\xb6\x15\x92\x7c\x43\x4a\x7a\x78\x6e\x14\xa4\x43\xad\xda\x69\x24\xdf\x7e\x9b\x6d\x71\xe1\x3a\xb9\x08\x5a\x38\x50\x3b\xbe\xfc\xab\xfd\xc6\x9f\xc8\x5e\x74\x52\x3d\xcf\x19\x2e\xf3\x77\xfd\xa9\x95\x89\x5f\x86\x16\x4e\x95\x1c\xf7\x0f\x79\xcb\x90\xa5\x99\xac\xa1\x16\x65\x8f\xe4\x50\xfe\x18\x09\x47\xf7\x0c\x0e\x63\x2d\x42\x06\x24\x00\xcd\x70\x8f\x20\xcc\x2c\x24\x33\x2e\xa3\x64\x49\x48\x8a\x24\x93\xc0\x7d\x2b\x61\x11\xb7\xb6\xe8\xd9\x73\xc1\xe3\x63\xb3\xd2\x27\x0b\xdf\x95\x85\xb7\x12\xe0\x4a\x0d\x1b\x99\x35\x8b\x06\x31\xdc\x28\x75\x08\xdc\xcc\xc1\x33\x4d\x62\x4f\x44\x14\xd6\xf5\xe6\x23\x4e\x89\x9f\xfa\x28\x7c\x66\xef\xfd\x4c\x70\x57\x44\xac\x80\x83\xd0\xdd\xe6\x60\x53\x89\x40\x4e\xed\xee\x7c\x42\x26\xa8\xf0\xe9\x69\x75\x0b\x32\x05\x46\x54\x2f\x6f\xea\xb2\x73\x8d\x20\xd6\x25\x22\xf8\x43\xde\xa8\xa2\xf6\xda\x4c\xd6\x1b\x77\xdb\x6d\x2a\xae\xf6\x88\xb3\xa2\x10\x2c\x13\xdb\xe8\x19\x49\x93\x51\x5b\xbd\xa7\xc6\x17\x50\x1a\x32\xfd\x46\xda\x16\x4e\x86\x16\x64\xd3\xf1\x0a\xe3\x45\x7e\x5d\x1d\x9c\x13\x97\x76\xba\xaf\xc1\xe0\xbd\x63\xf2\x60\x33\x2c\x60\xee\x42\x34\xdf\x4b\x58\x11\xc4\x7c\x11\x8b\xe5\x34\xc7\x56\xe8\x94\x37\x7c\x81\xf6\x0e\x82\x4a\x00\xba\x18\x4f\xc7\x90\x67\x7c\x5a\xf5\x86\x18\x8c\xcb\x6f\x75\x52\xb2\x46\x63\x8c\xe2\x79\xa6\xeb\xbf\x89\x07\x6d\x17\x9a\x37\xbb\xa5\x7f\x6e\xe9\xfd\x68\x48\x9b\x3e\x30\xa2\xf5\x10\x44\x96\xd2\x42\xd2\x5d\x06\xec\x84\xcf\xf8\xda\x2c\x1b\x2d\x04\xd5\xa8\xdc\x6f\x7b\x1a\xd5\x66\x0e\x5a\x4b\x9d\xd9\x18\xca\xf9\x59\x94\xe3\x07\xfa\x00\x98\x13\x1e\xee\xdb\x1f\x0e\xc8\x61\xd9\xa9\x6b\x78\x62\xca\x5f\xb0\x1c\x7d\x51\x7a\xe3\x64\xf6\x58\x3b\xec\x17\x2d\x93\x8a\x2b\xcd\x1a\xbd\xc4\x56\xd5\x1f\x6c\x6c\x0a\xba\xb0\xfc\x66\x6c\x29\x13\xc1\x90\x59\x2b\x3c\x6e\xa0\x96\x54\x53\x8c\x62\x66\xe7\x31\x8a\xcb\x7a\xaf\xc8\xcc\xe2\x27\x18\xc2\x4d\x43\x5b\xb5\x17\xfa\xb5\x6f\x10\xcb\x92\x46\x3b\xec\x62\xd2\x3b\x00\xaa\x42\xf1\x96\xbd\xbb\x17\x77\x33\x6e\xbf\xea\x30\x68\xdb\x42\x4f\x46\x9b\x84\x60\x41\xd8\xc8\x50\x2c\x86\xc9\x2d\x8f\xb5\x84\xa0\x9e\xb1\xa6\x98\x04\x58\x83\x8b\x34\xf6\x3f\x32\xda\x7a\xd4\x5c\x70\x86\x51\xe9\x10\x4a\x1a\x76\xef\xc4\xc3\x74\x1f\x1e\x8e\x03\xa9\x93\x50\x2f\x07\x29\xb7\xef\x62\x84\x5a\x01\x1d\x3d\xaf\xc7\x3b\x3e\x8c\x93\x8e\xb6\x3b\x98\xb6\x5e\xef\xed\xc7\x3c\x3d\xe2\x86\xf9\x64\x83\x3d\x63\xc6\x97\x0c\x2f\xba\x8b\xc6\x65\x67\x9a\xa2\xd6\xbd\x83\x84\xd0\x1a\xf5\xe7\xb6\x33\xcb\x7b\x49\xee\x21\x9c\xdd\x10\x2d\xc6\x3d\x23\xbb\x00\x35\x5c\x5f\x1a\x3a\xe9\x38\x36\xed\x91\x37\xc4\x59\x45\xd3\x31\xda\x2c\x64\x31\x01\x49\x33\xa6\x9b\xb3\x40\xc2\x96\x27\x39\x17\xfb\x74\x24\xd7\x6b\x64\xd7\xb4\xa0\x28\xe4\x1c\x75\xb9\x41\x0f\xdf\xc3\x5b\x83\xa1\x86\x85\x35\x45\x2a\xf9\xb1\xde\xf6\xda\x1c\xa1\xb8\x0d\x56\xd9\x4f\xbc\x29\x23\x66\xfc\x74\xba\xd7\x4c\xf1\xd5\xf5\x1a\x7b\xb8\x22\x3f\x08\x09\x65\x4f\xc2\x26\x82\xb8\x2c\x97\x2d\x05\x7e\x04\x33\xf7\x97\xbe\x17\xd3\xc6\x53\xc4\xdc\xfc\xd0\x5c\xca\x2d\x9f\xbe\xe2\xb4\x5f\x50\xc3\xc3\xbd\xa6\xda\xc6\x69\x26\x67\xf7\xa1\xbd\x49\x85\x6d\x8f\xf9\x2e\x06\xf5\x7f\x8f\xdc\x9b\x54\xe0\x62\x09\xf3\x36\xfa\xc3\x04\xc9\x44\xd2\xd3\x49\xd2\xd0\x0f\x19\xc0\x03\x69\x77\xaf\xdc\xc2\x71\x80\x07\x56\xef\x0c\x47\xec\x13\x1d\xa3\xfe\xfb\x0f\x41\x44\xa6\x29\xef\x9f\x18\x3d\xfc\x48\x34\xf7\x5f\x11\xc5\xfd\x8c\xfb\x0f\xd2\xd4\xf6\x4f\x3c\xe3\x8f\x46\x67\xff\x14\x54\xf6\x0f\xa3\xb1\x0f\xe0\xd4\x94\x17\x7d\x02\x85\xfd\x57\x25\x31\x69\x3c\xb7\xf5\xf7\xb3\x4a\xec\xca\xb2\xa5\x01\xc2\x1d\xc0\x49\x56\x4f\x29\x7b\x07\x10\xdc\x45\x05\x2b\xb5\xe1\xcd\x14\x54\x29\xa7\x4b\xa0\x10\xe8\xcd\x67\xa3\x24\xd5\xec\xca\xe9\xe1\x4b\x7d\xc0\x26\x76\xdb\xc7\x35\xac\xac\x99\x45\x4c\xa0\xdc\x3e\xec\x59\xef\x49\x88\x1a\x5c\xbd\x7b\x3d\x7d\x68\x9f\x92\x74\xbd\x4a\x74\x0a\x3b\xef\x7f\x31\x72\x9b\x08\xd7\x79\xbf\x0c\xb1\xcc\x97\x58\xa0\x89\xe8\x5e\xa8\x91\xb1\x65\x52\x20\xfe\x50\xb4\x99\x70\xd5\xf0\xef\x96\x21\x0c\x1c\x5b\xfc\xd2\x9c\xee\x69\x05\xc0\xb7\xa1\x00\x18\x67\xa8\x57\x00\xec\x27\x65\x1e\x59\x9f\x16\xbf\x57\xe5\xac\x78\xb4\xca\x59\x1f\x9b\xb2\xab\x31\x5a\x3f\xbb\x6e\x2e\xc9\x3b\xa1\xcd\xff\x60\x2d\x5c\x2e\x77\xd9\x94\xe4\xb5\x60\xea\x9d\xd0\xf0\xfc\xa3\x4c\x13\x76\xf0\x84\x49\xb2\xe8\x7b\x2c\xf9\x01\x2f\x1b\xd2\x2d\x08\xbd\x77\xc3\x9d\x55\x9c\x1d\x17\x03\xae\x1b\x22\xa4\x9b\x0d\x5f\x11\xa8\xec\x07\x9c\xd5\xdf\x88\x66\x89\x37\x38\x64\x9a\x9e\x2c\x37\x34\x5f\x89\xe7\x30\xfe\x58\x6e\xfa\x7b\x5d\xb1\x17\x49\x40\x94\x00\x7f\x01\x0f\xa1\xad\x80\xb2\xaf\x44\x14\x76\x9a\xf5\x96\x98\x59\xa3\x9a\xed\x78\x41\x6a\x26\x77\x8c\xb4\x79\x3a\x82\x59\x77\x3f\x9f\xc6\x32\x9a\x61\x4e\x9b\x93\x54\xbc\x65\xd3\xef\x2f\xfd\x32\x3c\x65\xda\x11\x0e\x93\xb7\x46\xf9\xfc\x4e\x06\x56\xd4\x01\x3c\x0b\x6a\x0a\x37\x5e\xfc\xaf\xe7\xd2\xf8\x3f\xd2\x52\x2e\xd5\x8a\x5c\x11\xc5\x9b\x5d\x02\xca\x1f\xbf\x63\x63\xb4\x71\xf3\xa6\xe5\xa3\x92\x79\xda\x10\x96\xb9\xa0\x50\x6c\x8f\xce\xdc\x4b\x72\xbf\x17\x8a\x81\xc2\xf6\x75\xdb\x8b\x5b\x76\x58\x5c\xf6\x76\x50\xca\x2f\x5e\xac\x9b\xc5\xa5\x0f\x5f\xf4\x36\xae\x3f\xe7\x20\x5e\xb5\x80\xdf\x16\xab\xa3\x63\x7a\x3a\xb4\x9e\x3b\xbe\xbf\xc8\x86\x42\xc7\xea\x55\x45\x95\x9a\xe2\xc6\x19\x5c\x1e\x17\xb3\xdf\x44\x6f\x1f\xdd\x4d\x56\x54\x94\xd7\x68\x59\x8e\x76\xfc\x51\xbc\xbf\xc2\x7c\x7a\x3c\x7a\x9a\x14\x5e\x7c\xff\x67\x51\xe6\x47\x1c\x1e\xf5\x9c\x9c\xf7\x70\xac\xdb\xa0\x84\x8d\xae\x45\xc1\x91\xd1\xe1\xf6\x67\xc5\xd3\x54\xfe\xc0\x2b\x86\x00\x1c\x60\x0b\xa8\x91\x4c\x11\xc0\x3e\x58\xc9\x56\x54\xdd\x14\x67\x2c\x6f\xb0\x39\x70\x07\xac\x1e\x86\x6d\xb7\x61\x9a\x7a\xc4\xe4\xc3\xa6\x66\x96\x30\x7c\xf2\x8f\x3a\xd3\xc7\xda\xcf\x21\x18\xe2\x02\x9e\xd7\x7e\xed\x3e\x4d\x87\x08\x36\xb4\xb8\x45\x6c\x31\x57\x76\xa6\x4e\xeb\x7d\x2e\x7d\xf1\x61\x24\xbd\x3b\x96\xc2\x00\x60\x90\xad\x83\x2b\x3b\x09\xb9\xb2\x67\xd6\x3b\x7b\x0e\x70\xa6\x76\xcf\x6a\x26\xe9\xb0\xa2\x70\xb2\x6f\x98\xac\x04\xf3\x69\xbc\xb4\xa6\x1f\x78\x1f\x3e\x0d\x5a\x44\x42\xd5\x2f\x64\x31\x2a\xa6\x9d\x62\xf2\xb7\x33\x8d\x97\x84\x4f\xf6\x08\x2b\x0d\x6f\xf0\xf8\x4d\x77\xa7\xff\xe8\x80\x4f\xe8\x46\x53\xcd\xb6\x5d\x75\xc3\xf4\xc7\xde\x73\x47\x4b\xd7\x07\x0b\xd5\x6d\x25\x0e\x08\x36\xc6\xf6\x91\xae\xd7\xea\xfa\xa8\x55\x87\x2b\x97\x0c\x63\xc0\x47\xed\x02\x28\xb1\x04\x51\x73\x85\xf6\xa7\x64\x96\xa4\xa8\x2a\xde\xec\xb0\xf3\x59\x99\x7f\x1f\x3f\x8d\xc5\xad\x38\x08\x5b\xd0\x0b\x58\x34\xcf\xd5\x9b\x28\x93\x74\x75\x13\xbd\x06\xa3\x61\xbb\x69\x34\xcf\x3d\xc4\x1f\x05\x12\x17\xe8\xf3\x9c\xa3\xfb\xda\x3d\x3d\x58\x5d\x21\x4b\xde\xd0\x8a\x98\x95\xf3\xd7\x83\x46\xbd\x9c\x3c\xb6\xa2\x42\x71\xd7\x74\x04\x85\x08\xd8\x91\x97\x4f\x59\xe2\x91\x3c\xfb\xa6\xb0\x1e\x23\x94\xf2\x7d\x02\x2d\x8f\x1a\x4c\x08\xff\xf8\xa8\x22\xfc\x62\x6f\xd9\x1f\x4b\xcd\xdd\x19\x2d\x7b\xbc\xe2\x7d\xa5\x8d\xcf\x98\x11\xbc\x67\x25\x22\x29\x37\xcc\xd2\x66\x1c\x5b\x19\x13\xdd\x18\xb3\x88\x97\xee\xfb\xff\x92\xe9\x2a\x96\xb0\xc7\xaf\x4e\x09\xb3\xd8\x20\xc7\xc0\x8f\xac\xb1\xba\x2e\x39\xb6\xe3\xc7\xdd\xc1\x54\x0b\xa5\x89\x64\x85\xb1\x14\x77\xe1\x57\xf7\xc2\xd1\xfc\xfb\x72\x56\x17\xcd\x5a\x91\xb5\x26\x85\x90\x58\x86\x5a\x7a\x54\x80\xfb\xfd\x42\x45\xed\x5e\x4e\x94\xd6\x1a\x75\x01\x0b\x0e\x60\xe5\xba\xc3\x60\x9c\xb3\x0d\xae\xae\xd7\x00\x1f\x3a\x66\x7d\x4f\xd1\xe1\x4c\xef\x81\x76\x4f\xd5\x91\x84\x4f\x8a\x95\x64\x54\x1d\x4f\xef\xc4\xe3\x23\xcb\x3a\xf8\x27\x27\x8a\xe4\xee\x1b\xc8\x0a\x7f\x13\xfe\x0d\xd6\x18\x33\x17\xbd\x9f\x91\x5a\x85\x95\xd1\x15\xcb\x0e\x76\x80\xff\xf2\xff\x01\x00\x00\xff\xff\x47\x33\xc3\xa3\xfc\x69\x04\x00") func kubedbCom_redisesYamlBytes() ([]byte, error) { return bindataRead( @@ -744,27 +722,7 @@ func kubedbCom_redisesYaml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "kubedb.com_redises.yaml", size: 90687, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} - a := &asset{bytes: bytes, info: info} - return a, nil -} - -var _kubedbCom_snapshotsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3d\x5d\x73\xdb\x38\x92\xef\xfe\x15\xf8\x03\xca\xd5\xec\x6c\x6d\x5d\xf9\xcd\x67\x27\x73\xb9\xc9\x87\x2b\x4a\x66\x9f\x21\xb2\x25\xe1\x4c\x01\x0c\x00\xca\xd6\x5e\xdd\x7f\xdf\x22\x29\x4a\xb2\x44\x02\xdd\x20\x69\xc9\x31\xf0\x26\x11\x6c\x34\x1a\x8d\xfe\x42\xa3\xc9\x73\xf1\x17\x68\x23\x94\xbc\x66\x3c\x17\xf0\x64\x41\x96\xbf\xcc\xbb\x87\xff\x34\xef\x84\xfa\x8f\xf5\x6f\x33\xb0\xfc\xb7\xab\x07\x21\xd3\x6b\x76\x5b\x18\xab\x56\xdf\xc0\xa8\x42\x27\x70\x07\x73\x21\x85\x15\x4a\x5e\xad\xc0\xf2\x94\x5b\x7e\x7d\xc5\x58\xa2\x81\x97\x7f\x7e\x17\x2b\x30\x96\xaf\xf2\x6b\x26\x8b\x2c\xbb\x62\x2c\xe3\x33\xc8\x4c\xd9\x87\x31\x9e\xe7\xd7\xec\xa1\x98\x41\x3a\xbb\x62\x4c\xf2\x15\x5c\x33\x23\x79\x6e\x96\xca\x9a\x77\xf5\x83\x77\x89\x5a\x5d\x99\x1c\x92\xf2\x15\x9e\xa6\xd5\x58\x3c\xbb\xd7\x42\x5a\xd0\xb7\x2a\x2b\x56\xb2\x02\x37\x61\xff\x33\xfd\xfa\xe5\x9e\xdb\xe5\x35\x7b\x57\xbe\xf0\xae\x44\x66\xc6\x0d\x7c\xe1\x2b\xa8\xc6\xab\x47\xb8\x3b\xfe\xdb\x6e\xf2\x72\x60\xab\x85\x5c\x9c\x00\xb2\xdc\x16\xe6\x5d\xbe\xe4\xe6\x10\xc6\xb4\xfa\xdb\xfb\x76\x43\x92\x77\x27\xf4\x38\x80\x75\xb3\x38\x44\x23\xe5\xb6\xfc\xb9\xd0\xaa\xd8\x11\xa7\xa2\x41\xdd\x7d\x4b\xb9\x84\x5b\x58\x28\x2d\x9a\xdf\x93\xf2\x3d\x6e\xac\xd2\xb0\xfd\xbd\x23\x6b\xf9\x83\xe7\xb9\x49\x54\xda\x3c\xe3\xd5\x4a\x30\x56\x2f\xe8\x74\x4b\xf1\xea\xaf\x4c\x18\xfb\xe7\xb3\xbf\x3f\x09\x53\x3f\xca\xb3\x42\xf3\xec\x60\x85\xaa\x7f\xcd\x52\x69\xfb\x65\x8f\xd9\xa4\x7a\x5e\x3f\x12\x72\x51\x64\x5c\xef\x5f\xb9\x62\x2c\xd7\x60\x40\xaf\xe1\x87\x7c\x90\xea\x51\x7e\x10\x90\xa5\xe6\x9a\xcd\x79\x56\x11\xd8\x24\xaa\xa4\x42\x05\x30\xe7\x09\xa4\xe5\x7f\xc5\x4c\x6f\xd9\x6d\x3b\x48\xbd\x2a\xd7\xec\xff\xfe\xff\x8a\xb1\x35\xcf\x44\x5a\x51\xb7\x7e\xa8\x72\x90\x37\xf7\x1f\xff\xfa\x7d\x9a\x2c\x61\xc5\xeb\x3f\xcb\x81\x55\x0e\xda\xee\x48\x56\x33\xe0\x8e\xf5\x77\xff\x9d\xac\x68\xdd\x2a\x5a\xf9\x3a\x1d\x6e\x81\xe7\x1d\xd5\xec\x7f\x21\xb1\xbb\xbf\x1b\x86\x6e\x5a\x1b\x72\x15\x82\xff\x2a\x34\x3c\xff\xab\xbb\x73\xc5\x18\x4a\x5a\x2e\x24\xe8\xd3\x47\x1d\x38\xef\x70\xe7\x4f\xb7\x4a\x4a\x48\x4a\x4a\xb6\x40\x66\x6c\xae\xf4\x8a\xdb\x6b\x26\xa4\xfd\xc7\xdf\x3b\xc1\x97\xfb\x72\x01\xfa\xe4\x79\xae\x61\x2e\x9e\x88\x68\xb5\x12\xaf\x6c\xb3\xbf\x51\xa8\x32\x2b\x92\x07\xb0\xbf\x38\x49\x0e\xc5\xdd\x31\xcc\x4e\x78\x8b\xe4\x64\x5e\x6f\x9e\x90\x99\x4a\x78\x46\xa1\x0a\x7f\x34\xef\x33\x6e\xac\x48\xfe\x2b\x53\xc9\xc3\xb4\x14\xc3\x6d\xc8\xb8\x60\x54\x44\x30\xdf\x4b\x9c\x5a\x9f\x79\x28\x5c\x81\xe7\xda\x0a\x7b\x24\xcc\x9e\xc1\xdf\x13\xf9\xf7\xbf\x39\x47\xe9\x22\x74\xd9\x34\xf0\xf4\xab\xcc\x36\x6e\x3c\x67\x4a\x65\xc0\x65\x6b\x9f\x75\xa9\xb5\xe1\xe3\x5d\xe0\x4c\x35\xfc\x2c\x84\x86\xb4\xed\xf5\xc9\x0e\x78\x27\x33\xb4\xac\x38\x6b\x44\xed\x9d\x30\x0f\x21\x2b\x97\xf0\x64\x29\xe4\xe2\xb3\x4a\xc3\x97\x2f\x15\xe6\xa1\x6d\xef\x92\x00\xfc\xf8\xf6\x31\xf8\xfd\x9e\xec\x77\xac\x21\x49\x2f\xf7\x65\x2a\x37\x4f\x34\xa4\xed\x7c\xf8\xe3\xdb\xc7\x20\x7e\xf9\x20\xb2\xa0\x9d\xde\x7f\x0f\x19\x48\x34\xd8\x5e\xfc\x62\x96\x5c\xb7\x6a\x0b\x24\x04\x37\xcd\xf7\x08\xb6\x3f\x6e\x06\xa7\xd2\x3d\x81\x7c\x39\x6f\x25\xab\x8f\xe8\x2b\x25\x85\x55\xba\xe3\x29\x63\xc2\xc2\xaa\xf3\x21\x82\x9e\x4d\x17\xae\x35\xdf\x74\x48\x68\xbb\x3c\xdb\x16\x69\x78\xa6\x8b\x67\x51\x48\xd4\x20\xbe\xc1\xbc\x0b\x82\x6f\x11\x58\xe3\xf7\x74\x3e\x25\x50\xba\x83\x45\xca\x56\x98\x76\x1b\x18\x01\xdf\xcd\xd7\x0d\x17\x91\xf9\x56\xc8\xb4\x1d\xa5\x91\xcd\x82\xa1\xf8\xe6\x15\x2c\xfa\x45\x1a\x16\x89\x92\x73\xb1\xf8\xcc\xf3\x90\xb5\x4f\x61\xce\x8b\xcc\xba\x0c\x8b\x61\xac\x3a\xa7\xf0\xf3\x48\x46\xcc\xf2\x33\xf6\x00\x9d\x2c\x78\x88\xa4\x93\x03\x58\x25\xc6\xbb\x69\x51\x37\x0c\x45\x0e\x87\x74\xd1\xa5\x6e\x2e\xc1\x4d\x40\xde\xc5\x60\x75\x9b\x94\x64\x72\x3c\x2d\x11\xf1\x68\x28\xc7\xfe\xf0\x6b\x28\xd7\x2e\xf5\x4e\x51\xe5\x75\x70\x2e\x54\xd2\xb8\xb7\x91\x11\x41\x1b\x48\x8b\x75\xb0\x26\xe8\x2d\x7b\xa5\x4a\xe1\xbe\x98\x65\xc2\x2c\xa7\xaf\x45\x88\x0e\xe5\xdf\xdd\x58\xab\xc5\xac\xb0\xdd\xf3\x39\x0c\xe7\xfa\xe7\xde\x7f\x6e\x1e\x27\xa1\xe2\x14\x2a\x5b\xa6\xea\x51\x3e\x72\x9d\xde\xdc\xb7\x3a\x5e\x6f\x48\xbe\xcf\x05\x64\xa9\x83\xbf\x29\xb0\x58\x67\x70\xb6\xbd\x21\x55\xc7\x0e\xcd\x7b\xaf\x3c\x27\x41\xf5\xcb\x75\x56\xb1\xd8\x6e\x6c\x84\x2a\x71\x8a\x71\xf6\xba\xf5\x60\x49\xb1\x3a\xa0\xff\x61\x60\xa6\xd9\xc5\xbf\x5d\x7e\x2d\x19\x5b\x56\x45\x57\xd6\xc2\xa8\x4e\x4d\x12\x04\xb3\xa1\xc2\x19\x58\xb1\x19\xba\x3f\x27\x62\x8c\x9a\x71\xcd\x16\x27\x00\x58\xe5\x76\x73\x27\x82\x3c\xaf\x15\xa4\xa2\x58\x85\x3b\xcb\xe2\x5f\xf0\x49\xac\x44\x6b\xc0\x1c\x01\xc1\x39\xaf\x79\x72\x06\x5f\x32\x2b\x2e\x3e\xb8\x6c\xb9\x5e\x80\xfd\xe7\x3f\xbf\x9c\x31\xce\xf3\xf8\x28\xd2\xb3\x0d\xef\xe6\x9a\x0c\x9e\xfe\xaa\xcc\xb3\xd7\x67\x4c\xd7\xee\xc5\xc5\x58\x93\x6f\x28\xb2\x32\x86\xe1\x3c\xcf\x54\xf2\x10\x16\x10\xab\x72\x1d\x7a\x06\xbf\xb7\x30\x7e\xfc\x08\x8e\x16\x39\x67\xb7\x48\xe0\xbe\x34\x5e\x8d\x05\x69\x43\x4f\x95\x5e\xc7\x79\x60\x9e\xf6\x5a\x88\x71\x4f\x7e\x6a\xe4\xc8\xab\x27\xec\x37\xc8\x55\x10\x6f\x0a\x0d\x89\x55\xda\x33\x1f\x27\x41\x72\x65\x44\x4f\x10\x6b\xe1\x72\x9c\x7a\xc5\x41\xf7\xf8\x91\xc9\x9a\x15\xc6\x82\x0e\x3b\xbd\x01\x99\xe6\x4a\x48\xdb\x29\x08\x11\xfb\xe1\x8c\xa7\x2f\x6e\x9a\xee\x26\xd7\xce\xc4\xed\xd6\xb3\x93\xd6\x4b\x65\x6c\x97\x97\xeb\x23\x75\x2f\x42\xd9\x70\x91\xe5\xd9\xca\x01\x54\x10\x26\x30\x6c\x98\x2c\x79\x7e\x53\xd8\xe5\x9d\x30\x89\x5a\x83\x6f\x2f\xba\x74\x7c\x03\x6a\x0a\xc6\xbf\x27\x5d\x80\x7a\xaa\x83\x2a\x4f\x93\x5b\xe5\x74\x8d\xfd\x50\x7e\x86\x4a\x95\xed\x6a\x7c\x94\xa5\x08\xe0\xdd\x4e\xef\xf9\x9d\x90\x5c\x69\xcb\xb3\x33\xfa\x0f\x6f\xc6\xb0\x6c\xdc\xb5\xfb\x8a\xe2\xa3\x88\x0d\xf1\xb3\x8d\x42\x93\x92\x8b\x5a\xff\x3f\x44\x88\x2a\x6e\x56\xaa\x90\x9d\x52\xd7\x39\x0b\x19\xa6\x14\xcf\x9e\x50\xa0\xc3\xfd\xc1\x20\x69\x3f\xd9\x8e\x49\x5d\x99\x7c\x67\x8c\xd7\xde\xef\x6d\xc6\x45\x6b\x60\xc7\xab\x18\xca\x17\x2f\xd8\xe0\xdd\xe1\x47\xa6\xd0\x52\x59\x25\xcf\xef\xb4\xa4\x23\x1d\xdf\x97\x80\xc9\x34\x51\xda\x3e\x2a\xdd\x23\x62\x72\xf6\xdc\x8d\x8b\x4c\x89\xc8\xb5\x2a\xff\x6f\x07\x7b\x31\x47\x66\xcf\xae\x1c\x9c\xb6\x41\x0e\xcd\x9c\xc9\x21\x54\x60\x08\xac\x88\xdd\x28\x23\xd7\xcd\x9b\xe5\xb1\x6f\x84\x83\x92\xba\xf9\x4f\xbc\xf6\x0d\x7f\xf6\x75\x8c\x90\xff\x14\x6c\xdf\xfc\xe7\x61\xc7\xd0\xd1\xd3\xc5\x1d\xe4\xd4\xcd\x9d\x35\x72\xd8\xcf\x79\x10\x73\x8c\xab\xf7\x08\xf2\xb0\x73\xb7\x35\xbb\x6f\x3e\x83\xf2\x10\x1e\x8a\x50\xbe\x8c\x93\x63\xa0\x2e\x49\xf9\xbc\xa7\x77\xee\x9e\x83\xff\x7d\x7b\x3d\x7b\x17\x77\x82\x1f\x0e\x9f\x11\x4f\xf5\xf7\x8d\x2c\x2a\x18\xed\xa4\xbf\xd7\x48\x94\x9d\xca\x08\x79\x00\xc7\x48\x21\xb7\x23\x7b\x6b\x92\x92\x9a\x4d\x70\x80\x54\x00\x03\x13\x33\x0c\xf6\x2d\x88\x87\xd1\x59\x07\x3d\xc7\xc1\x67\x22\xf4\x1a\x88\xbe\x55\x50\x79\x0a\xc7\x38\xa1\x77\x0a\x4d\xc9\x9e\x53\x79\x22\x81\xd6\x71\x9f\x5f\x45\x21\x45\x63\xd2\x0d\x3d\x1a\x93\xbf\x88\x31\x69\x40\xaf\x45\x02\x37\x49\xa2\x0a\x69\xbf\xab\x07\xf0\x98\x47\x84\x34\xca\x22\x15\x20\x07\xcd\x31\x63\x0c\x9e\x72\xa1\xab\x3b\xf7\x53\x48\x94\xec\x4e\x76\xd9\x37\xdf\x0d\xdf\x36\x5c\x70\xbb\x07\xb7\x6f\x06\xcf\xa0\xf3\x72\x3f\x6a\xed\x7b\x27\xbf\x79\x6e\xe1\xd5\x31\x0c\x6a\x80\xe6\x67\xa1\x66\x1b\x1b\x14\xf1\xaa\x2b\x57\x9c\x2f\xe0\xa5\x61\x21\x8c\xed\x71\x78\x6e\x41\x72\x19\x9a\xb2\xd7\xeb\xe2\x59\x13\xad\x1b\xe9\xd8\xbe\xa6\x8b\x23\x90\x47\xe5\x12\x3d\x0b\x0a\xe0\xf5\x3d\xc7\x5c\xf1\x45\x8f\x5b\xca\xb0\x29\x9f\x05\xbf\x7f\x01\x97\x48\x95\x0a\x3d\x29\x7b\x53\x27\x8b\xa3\xdd\x00\xad\x18\xb0\xf5\x49\xe8\xdd\x50\x93\xf0\x0c\x3e\x7e\x3d\xc3\x66\x5a\x70\x0b\x8f\x3c\x5c\x58\xe6\x5a\xd9\xba\xac\xc7\x9d\x5a\x71\x11\x9e\x1b\xf0\x86\x18\xd3\x98\xec\xbd\xe4\xb3\xac\xdb\xc4\x40\x4c\xd6\x2a\xcd\x17\xd0\xab\xe0\xc4\x16\xc6\x7d\x1f\x79\x62\x36\xc6\x42\x78\x86\x7c\xad\x77\x46\xab\x41\xb0\xe5\xee\x76\xcb\xa8\x61\x97\xf6\xa7\xd5\xbc\xc8\xfb\xb8\xd3\xfb\xbe\x98\x43\xad\x78\xcf\x37\xde\xf3\x1d\xe0\xaa\xee\x00\x05\x48\xdc\x3b\xa9\x96\x4d\x2a\x28\x2b\xe6\xec\x87\xee\xaf\x46\x15\xf5\x96\xbf\x87\x20\xaa\x82\x7d\xa3\x30\x43\x31\x0b\x4a\xaa\x5a\x9b\x7c\x09\x1a\xce\x96\xbd\xb1\x53\xb0\x99\x48\x36\xc1\x29\x18\x47\x70\x06\x58\x2c\xd7\x99\xd8\x00\xf9\x20\x1d\x07\x5b\x8e\x25\xee\x7c\x94\xab\xf4\x3b\xac\xf2\x8c\x9f\xc6\x22\x7c\x55\x10\xb5\xca\xb2\xb0\xeb\x25\x5c\x4a\x65\xf9\x45\xdd\x35\x72\x67\x1d\xb6\x54\x9d\xfc\x55\xe7\x7a\x5c\x38\x13\x3d\xcf\x79\x55\xa7\xb6\x53\xa6\xa3\x04\xb2\x4a\xe1\xc6\x03\x07\x0b\x8b\x6d\xab\x16\x82\xd6\x90\xde\x15\x25\xb5\xa6\xc9\x12\xd2\x22\x13\x72\xf1\x71\x21\xd5\xee\xef\xf7\x4f\x90\x14\xae\x5b\x3c\x4d\x43\x9e\xc2\xd0\xce\x60\x6a\x1c\x71\xf1\x63\x3a\x74\x56\xd5\x86\xb4\xc9\xf2\xfd\x53\xae\xeb\xf4\x78\xc2\x49\x2c\xfa\xd8\x29\x1c\xb9\xba\x11\x8e\xa1\x9a\x16\x74\x08\xcb\xea\xea\xb5\x9a\x5b\xda\x89\x6f\xaf\x01\xd7\x3c\x2b\xa8\x04\x09\xa0\x7d\xdd\x82\xb1\xa4\x1c\x0c\x1d\x36\xea\x81\x33\x23\x1c\x80\xed\xfb\x37\x8b\x46\x78\x89\x9c\xd2\xc1\x82\x68\x50\xed\xae\x6d\x91\xe5\xb8\xb1\xe2\xc6\xea\x7c\x35\x6e\x2c\x0a\x0d\x88\x83\x3c\x82\x58\x2c\x3d\x59\x19\x4d\xa3\xe7\x1a\xd0\x32\x0d\xf0\x0b\x37\x39\xd0\xfe\x88\xce\xf5\x24\xbd\x1d\x09\xa4\xc3\xae\x4a\x33\xa5\x61\xec\x28\x8a\x30\x2b\x4d\xc2\x29\x64\xd5\x8d\xdf\xef\xa0\x71\x3b\x97\xb0\xc5\xa3\x39\x55\xb7\x28\xf5\x5b\x5b\x94\xfa\x4d\x8b\xe6\x54\xdc\x58\x6d\x2d\x6e\xac\xc3\xfe\x97\xba\xb1\x88\x83\xe0\xc1\x63\xc9\x3a\x39\xd5\xe4\x28\xdb\xc4\x8b\x32\xaa\x5b\xae\xd2\x37\x17\x57\xda\x4f\xb9\xa4\xf6\x58\xd6\x50\xf5\xb5\xa9\x66\x59\xf1\x7b\x2b\x4c\x00\x87\x9b\x5e\x2c\x54\x52\x85\x6a\x0a\x16\xa6\x2d\x58\x3f\xd1\x18\xae\x35\x7a\x0f\x1c\xa6\x3d\x58\xb8\x06\x61\x7d\x31\x0e\xd5\x24\x2c\x50\x9b\xb0\x00\x8d\xc2\x42\xb5\x0a\x0b\xd5\x2c\x2c\x98\x2e\xd5\xee\xfc\x74\xf0\xf5\x39\x6c\xa3\x9d\x7f\xb8\x50\x0e\xe0\x84\x1e\xea\x97\xf4\x92\x6c\xce\x6f\xc7\xb4\x6b\x83\xa8\x40\x5f\x6d\xab\x72\x95\xa9\xc5\xe6\x4f\x8a\x80\x0b\xb8\x73\x46\xd9\x63\x93\x43\xac\x62\x88\xa9\x69\x93\x63\x43\xe0\x0d\xc5\x99\x46\xb1\xab\x02\x0c\x9e\x18\x63\xaa\x5b\x74\x85\x5b\x5b\x74\x85\x9b\xf6\x92\x31\x26\xaa\xa1\xd2\xd7\x48\xe9\xa1\x9a\x09\x04\x21\xbe\x40\x35\x4a\x48\x1c\x4e\x9e\x31\x6d\x25\xc9\x46\x08\x09\x1f\x8a\x86\xa5\x18\x1e\x83\x2b\x4d\x74\xfc\x43\x5a\x11\x63\x20\x88\x16\x63\x20\xc3\x20\x5a\xb7\x18\x03\x41\xb5\x18\x03\xf1\xbd\x13\x63\x20\x48\x94\x63\x0c\x24\xc6\x40\x62\x0c\xe4\xb0\xc5\x18\x48\x8c\x81\x0c\x8c\x5c\xdd\x62\x0c\xe4\xa4\xc5\x18\xc8\x61\xff\x18\x03\x69\x41\x33\xc6\x40\xbc\x2f\xc4\x18\xc8\xb3\xae\x03\xc4\x40\xbc\x5d\xb8\x5e\x9c\xb1\xe4\x08\xc8\x75\xe0\xe0\x38\xdd\xe5\x2f\xe5\x85\xe4\x8c\x4a\x2b\x0c\x07\xe9\x83\x56\x9e\xb0\x0c\xe9\xcb\x94\x75\xa5\xe7\x3f\x61\x83\x2a\x51\x49\x53\xfb\x68\x65\x4f\xdc\xf3\xb8\x2a\x6b\x01\x80\xf1\xd5\xd6\x18\xea\xce\xf5\x61\xa3\x88\x06\x8c\xd2\x24\x88\x04\x7c\x0d\x5d\xda\xfa\x52\xeb\xe6\x12\x57\x83\x58\x2b\x77\x34\x41\x8d\xaf\x8c\x4b\x58\x13\x7a\x79\x58\xda\xda\x04\x94\x84\x25\x2e\x0f\xa9\x0c\x2c\x11\x36\xad\xf4\xeb\x68\x2b\x8f\x2e\xf4\x4a\x58\xf8\xba\x0e\x43\x14\xb8\x55\xfb\x25\x05\x2e\xaa\x23\xa6\x1c\x8b\x6c\xff\x64\x0a\x7a\x14\x9f\x09\x55\x15\x0d\xbb\x2f\xb2\x6c\x5a\xf1\xe4\xb8\x25\x78\x06\xb2\xa7\x86\x98\xb6\x14\xf6\xb6\x11\x8f\xe3\x4e\xda\x65\x22\xa3\x86\xa9\x1b\x7a\x57\xe1\x8c\xff\x44\xad\x56\x5c\x7a\x36\xc6\x39\x10\x73\xd8\xf4\x04\xa4\x48\x97\xe5\x90\x92\x8d\x24\xd7\x10\x16\x7f\x28\x54\xbf\xf5\x5f\x37\x6a\x7c\x8e\xec\x09\x84\x0d\xc3\xe8\x21\xc0\xa0\x08\x08\x5e\x61\xf5\x18\x84\xa6\xbc\x0e\x07\xc2\xaa\xb0\xba\xd1\x0b\xd4\xe3\x83\x6e\xe4\x50\x51\xfc\x1e\x47\xd0\x48\x17\xf8\x3d\x8e\xf8\x81\x8a\xbe\xe3\xbc\xd1\x0f\x54\x50\x7d\x98\xba\x45\x55\xf1\xb6\x54\x05\x29\x16\x82\xbe\x11\xe9\xf2\x88\x88\xe3\xa2\x4d\x52\xbf\xcd\x35\xb8\x59\xba\x33\xc7\x90\x1b\x8c\xba\xb9\x28\x4c\x4f\x66\x78\x2a\xb3\x53\x19\x9d\xc4\x88\xb9\x86\xb9\x78\x1a\xdc\x18\xf7\x56\xd3\x7c\x8e\x43\x5c\x9d\x5e\x5d\x71\x5b\xd5\x59\x84\xff\x10\x90\x97\x5a\xbb\xc0\x48\x5d\xde\x72\x10\x98\x99\x98\x43\xb2\x49\x32\x0f\x86\x78\x5e\xc9\x95\xb1\x53\xcb\x35\x22\xb9\x88\xc6\x80\xf0\xd4\x5e\xcf\xb0\x2f\x5c\x86\x0d\x3d\x1c\xb6\xcb\x4c\x66\x23\xea\xc2\xa5\xb5\xf9\x1f\xbe\x4f\x60\x35\x8d\x4e\xd4\xa5\x32\x48\xd8\x2c\x8c\x40\x25\xfe\xff\x0d\x3c\x75\x84\xcb\x4e\xdb\x8b\xe5\x14\x51\x2d\x38\xd6\x3b\xc7\xe7\x85\x46\x0b\xcb\xb8\x41\xd8\x48\xcf\x5f\xa8\xa6\x44\xde\x61\xa3\xe7\xdb\x50\x3e\x3d\x16\x44\xe2\x5c\x61\x64\x67\xd3\xb8\xdc\x7c\x45\x3b\x3b\x55\x7e\x07\x29\x37\xf3\xf8\x3d\x22\xb3\x3c\x4d\x1e\x8a\x19\x68\x09\x16\xcc\x44\x48\x3b\x51\x7a\x52\x83\xb8\x66\x56\xa3\x97\xd7\x24\x4b\xa0\x6c\xa6\xd1\xb3\x73\xcb\x35\x1a\x43\x22\xdb\x24\x9f\xaa\xe4\xe1\x15\xcb\xe4\xc8\xbd\x47\xed\x32\x58\x8b\xd0\x39\xd7\x30\xb5\xca\xf3\x95\x75\x16\xcd\x37\xec\x4b\xd1\x7c\xeb\x1a\x20\x9a\x6f\x4d\x8b\xe6\x5b\x34\xdf\x30\xed\x35\x2a\xc0\x68\xbe\x75\xb5\x0b\x94\xc9\x91\x7b\x8f\xda\x65\xb0\xd6\xb0\x49\x5e\x8c\x65\x62\x0d\x12\x8c\xb9\xd7\x6a\x36\x58\xe4\x0f\x67\xe1\x51\xf3\x45\x09\x96\xdd\xe5\x5c\xe8\xa0\x64\x41\x73\x91\x15\x1a\xbe\x2f\x35\x98\xa5\xca\x10\x53\xa5\xdd\xc7\xa4\x6c\x39\xb4\x45\x49\x5b\x44\xbc\xd4\x22\x2e\x0a\xd9\x82\x24\x71\x48\x88\xe5\xf8\x22\xc7\xb6\x64\x6b\xf1\x45\x4e\xf7\x09\x16\x22\xcd\x3a\x0c\xbc\x37\x86\xb5\x0a\xf1\x16\x21\x91\x8c\x78\x5d\x4a\xd0\xa3\x21\x3a\x34\x40\x7f\x0e\xa0\x3b\x29\x56\xdf\x68\xa9\xf2\x28\x75\x4c\x60\x30\x21\x85\x15\x3c\xbb\x83\x8c\x6f\x42\xbe\xe7\x3f\xb0\xc0\xce\x41\x0b\x95\x5e\x00\x22\xa6\x48\x12\x30\xe6\x22\xb4\x18\xc1\x0a\xbf\x10\x3d\xf6\xa6\x25\xc5\x39\xb7\xb3\x15\x2b\x50\x85\x3d\xfb\x06\x42\xa2\x3c\xd8\xe5\xcf\x92\x8e\x43\xdc\x00\x20\x26\x0f\xd5\xc9\x96\xf7\x48\x6e\xa7\xd6\x1d\xa1\xb1\x7b\xb9\x99\x3f\xde\x0f\x9e\x81\x53\x82\xbd\x8c\x09\x8e\x72\x87\x20\xd7\xca\xaa\xa4\xfb\x2b\xe8\x81\x80\xf1\xa9\x76\xcf\xb8\xc8\xb7\xbb\x87\x4d\xe4\xd1\xc0\x53\x11\xbd\xe6\xe8\x35\x1f\xb5\xe8\x35\x1f\xb6\xe8\x35\x47\xaf\xb9\x05\x6e\xb4\x85\xa3\xd7\x1c\xbd\xe6\xa3\x16\xbd\xe6\x16\x74\xa3\xa4\x88\x5e\xf3\xa0\x5e\x73\x73\xed\xcc\x5b\x07\x1b\xcb\xd5\x99\x58\x09\x9f\xfb\xcc\x7a\x54\x59\x23\x71\x13\xf1\x42\x13\x98\xd7\x87\x39\xb2\xa3\x81\xa4\xd0\xc2\x6e\x6e\x95\xb4\xf0\xe4\x11\x0d\xf8\xd5\xe6\x59\xa6\x1e\xef\xb5\x58\x8b\x0c\x16\xf0\xde\x24\x3c\xe3\x98\x82\x9d\xb4\x3b\x2a\x09\xcf\xf9\x4c\x64\x02\x47\x69\x62\x41\xa4\xf4\xd5\xb9\x82\x8c\xa5\x1a\x93\x83\xc8\x2e\x0a\x6b\x52\x96\xe5\x96\xa1\x10\x4b\x43\xe1\xa3\x5c\xab\xe4\xb3\x2a\x24\x42\x33\x92\xe2\x33\x3c\xfd\x2a\xb3\xcd\x37\xa5\xec\x07\x91\x81\xd9\x18\x0b\x88\x8a\x0f\x14\xcc\x75\x21\x6f\xcc\x1f\x5a\x15\x88\x65\x3f\xd0\x28\xff\xf8\xfb\xa0\x66\x50\x85\xc5\x17\x25\xcb\x99\x8e\x30\xbf\x1f\x06\x10\x17\xc0\xc7\x9b\x9e\x81\x4f\x42\x16\x4f\x5f\xab\xdb\x76\xc3\x97\x13\x86\x35\x90\x8a\x26\xe1\x2b\x6f\x29\xdf\x0d\xb5\x40\xc0\x55\xf7\x31\x00\x17\xa8\x95\x26\x03\x26\x88\x98\x47\x21\x53\xf5\x68\x46\x5a\xeb\xc5\xca\xf0\x5b\x0d\x29\xc8\xd2\xb5\x9b\xe6\xd8\xec\x6e\x22\x19\x4f\x87\x19\xad\x72\xdc\x6e\x83\x8e\x34\xc2\xe0\xf6\x8e\xe5\xda\x16\x79\x8c\x46\x9f\x5d\x99\xc7\x68\xf4\x09\xb2\x31\x1a\xed\x6e\x31\x1a\x8d\x79\x21\x46\xa3\x8f\xdf\x89\xd1\x68\xd7\xe8\x31\x1a\xdd\x03\x91\x18\x8d\x6e\x41\x37\x4a\x8a\x18\x8d\x1e\x34\x1a\x6d\x6c\x2a\x3c\xb1\x43\x6c\x54\xa1\x02\xf5\x55\xfa\x2a\xbd\x61\xc1\x59\xd0\x2b\x21\xab\xd8\xe6\x67\x30\x86\x2f\xc0\x5f\x81\x10\xc9\x6a\x2d\xa0\x87\x2b\x61\x63\xdd\xdf\xc1\xc4\x13\x60\xad\xb2\x62\x05\x77\xb0\x16\xde\xc3\x82\xc1\xb3\xe3\xd2\x6a\x54\x6c\xc9\x47\xd2\x0e\x1f\x21\x11\x0c\x9f\xaf\xb5\x9f\x97\xb7\xeb\xcb\x57\x51\xab\x17\xbc\x0a\x97\xbe\xf4\x7a\xaf\xca\x41\x47\x59\xee\x1a\xb2\x56\x39\x5f\x20\xcf\x29\xce\xcf\x4f\xfb\x08\x33\x1e\x30\xb6\xf6\x97\x29\x66\xa3\xd0\x79\x0b\xf7\xfd\x53\x8e\x8a\xf3\x8d\xb2\xbb\x76\x5c\x74\x81\x9b\xeb\x51\xe9\x07\x21\x17\x77\xc2\x43\x1e\x14\x61\x2e\xa1\x2e\xbd\xb7\x54\x1a\x66\xff\xa3\xca\xa3\x61\x05\x09\x26\x5a\x47\x4b\xd1\x46\x47\xea\x08\x51\x98\x90\x88\x3c\xca\xf3\x47\x33\x2c\x32\x26\x46\x21\x15\xd6\x8f\xa0\x25\x8f\xd3\x62\x61\x84\x35\xa0\xc7\xc1\x68\x51\xb0\x80\xe8\x14\x31\x02\x46\x1e\x81\x7a\x73\x1b\x1d\xfb\xa2\x44\xbe\x88\x71\x2f\x4a\xd4\x0b\x1b\xf3\xa2\xe5\xf7\x23\xbd\x58\xb4\x0f\x4b\xf7\x60\xc9\xfe\x6b\x6f\xef\x15\x1f\xe5\x1a\x45\x89\x23\x1c\x62\xbc\x6a\xc6\xc6\x4d\xce\x2e\xeb\xde\x20\xa7\x9d\x83\x25\x50\xdd\x10\x25\xbf\xa2\x49\x12\x4d\x92\x68\x92\xf4\x1c\x21\x9a\x24\x87\x30\xa3\xa2\xe8\x6e\xd1\x24\x71\xb7\x68\x92\x6c\xdb\xaf\x69\x92\x78\xbb\xa0\x0a\x58\x61\x18\xca\x67\xaf\x60\x99\x12\x69\xa7\x20\xf5\x23\x81\x09\x70\xf2\x19\xb5\x34\x94\x34\x26\xec\x29\x1a\x6e\x03\x20\xac\x21\xec\x42\x60\x24\x03\x9a\xbc\x04\xeb\x07\xb9\xb2\x34\xab\x67\xb4\x2f\x9c\x12\x2c\x9d\xd1\xf2\x3a\x50\xd6\x0d\xd6\xb2\xa1\x1c\x18\x23\x2d\x1a\x8c\x35\x83\x26\x0e\x46\xb7\xa0\xf4\x0a\x4d\xa7\x90\xf4\x49\x2f\x5d\x82\xb3\x58\x90\xd8\x60\xd8\xc8\xab\x92\x50\x2c\x41\x4c\x06\x1a\x56\xec\xa1\x53\x7f\x86\x1d\x96\x92\xe8\x33\xec\xc8\x28\x5b\xf0\x2c\x92\xfe\x17\xdf\x9f\x2f\xb7\xa1\xf0\xe9\x38\x43\xb2\x96\x17\x35\xa9\x52\x98\x42\x06\x89\xed\xfe\x02\x23\xed\xd6\x23\x62\xe1\xbc\x58\xe5\x5a\x28\x2d\xba\xf3\x57\x30\x24\xf2\x93\xa7\x19\xe5\x36\xe3\xc6\xb8\x2e\x37\x78\xa7\x84\x2b\x81\x13\xed\xee\xa3\x5e\xd1\xee\x3e\x44\x2a\xda\xdd\xd1\xee\x76\xf5\x8b\x76\x77\xb4\xbb\x8f\x5b\xb4\xbb\x7b\x8d\x1c\xed\xee\x8e\xde\xd1\xee\xf6\x0d\xdb\xd3\xee\xf6\x16\x5f\xc1\x70\x9d\xbf\xe0\x0a\xbd\x60\x09\x36\xb9\x1c\x43\x7b\x4c\x61\x95\x73\x62\xe8\xed\x52\x2a\x91\xb4\xc8\xdc\x57\x9f\xbd\xf8\x20\x0b\xb0\x60\x56\x7c\xee\xaf\x04\x81\x2d\x92\x80\x13\x0b\xb8\xea\x13\x23\x8c\x89\xa8\x35\x81\xcb\x77\x46\xd5\x97\x18\x76\x02\xf8\x6a\x12\x58\xdd\x82\xaa\x20\x81\x16\xdd\x98\xaa\x11\x68\x60\x55\xc7\xa1\x80\x61\xaa\x43\x0c\x29\xa1\x4c\x91\xe7\x19\xac\x40\x5a\x9e\x55\x5c\xee\x5c\x07\x84\x4f\x85\x2f\x51\x82\x55\xcb\x18\xf7\xc0\x6c\x4c\x62\xb3\xbe\xb8\xe3\x7d\x41\x9c\x1f\x48\x30\x25\x90\xfe\x1f\x9e\xc3\x51\x7e\x1f\xc2\xe7\xc3\xf8\x7b\xa4\xf3\x5d\xf7\x42\xe2\x6b\x93\x60\x17\x8b\x5e\x8f\x04\x4d\xe4\xb0\x1a\x24\xf8\x35\xa4\xd4\x1d\x79\x49\xa3\x00\xf4\x5a\x24\x70\x93\x24\xaa\x90\xb6\x97\x65\x60\x55\x06\x9a\x3b\xd7\xda\xb3\x6f\x71\x6c\x00\xf3\x39\x24\x1e\x7f\x02\x49\xc1\x07\x18\xe6\x76\x62\x89\x36\x77\x04\x9d\x49\xc0\xf6\x74\x44\x5d\x77\x1d\x5e\x48\x23\xe4\x17\x6a\x2a\xbd\xaf\xe3\x38\x00\x74\x3e\xca\x55\xfa\x57\x75\xe3\xef\x36\xe3\x62\xd5\x26\x22\x5c\x5c\xc6\x2b\xe7\xfd\xb3\x4a\xdb\x59\xd0\xc1\xbf\x1e\x8a\xb8\x26\x9a\x72\xcb\xa7\x95\x03\xd5\x06\xda\xb7\x29\x78\x2e\x9c\x26\xad\x77\xa9\x1e\x44\x77\x68\xdd\xfb\xb2\x4b\x79\x7a\x5e\x76\xa9\xb5\x49\x85\x55\xeb\x83\x0e\x2d\xe7\x64\x36\xa7\x83\xea\x23\xb0\xdb\x31\x7d\xf9\xf3\x24\x9f\x23\xfa\xd2\x18\x39\x1f\x1b\xc7\x71\x9c\x8f\xf0\x2b\x6e\x93\xea\xea\x25\x18\x33\xba\x56\xb9\x48\x55\x50\x49\xe2\x21\x6e\x2d\xd3\x1c\x20\x8f\x5d\x87\xb9\xa7\xf9\x00\xdd\xef\x4f\x76\x44\x1a\x4f\x75\x6c\xb9\xe7\x13\x9f\x41\xb7\x2b\x71\x59\x3b\xc5\x2a\xcd\x17\xe0\x3c\xbf\x75\xa2\xd0\x5c\x74\x4f\x43\x5f\x0d\x18\xb5\x73\x46\x1a\x4e\xe3\xc7\xae\x8d\x58\xe8\xd6\x88\x40\xc8\xd0\xe6\x77\xca\xc0\xb3\xa2\x2b\x64\xee\xa4\x18\xc8\x34\x57\xa2\xbd\x02\xab\xf3\xc5\x5c\xc3\x5c\x3c\x91\x5f\xd3\xb0\xe8\xb8\xe6\x1f\x44\xa2\x9a\xd7\xa6\x90\x68\x68\x35\xfa\x3b\x81\x6e\xdf\xfc\xde\x12\x27\xe9\x7e\xe7\x51\xcc\x49\xcc\xb0\xfb\xfe\xcf\xcb\x50\xb7\x83\x4c\x6d\x62\x6e\x52\x19\x6b\x33\x6e\xaa\xcd\x72\xe5\x81\x61\x2c\xb7\xc5\xb3\xf9\x75\xcd\x3a\x51\xab\x3c\x83\x52\x16\x7d\x17\xa7\xab\xd1\x98\xf8\x29\xb7\x30\xb1\xe2\xc4\xfe\xe9\x9c\x9b\x9a\x95\xfe\x1d\xa4\x7f\x80\xdc\xba\x14\x5d\xa0\xdb\xbc\x87\x6e\x7f\x21\x5f\x72\x83\x5f\x7f\x0d\xdc\x9c\x8e\xec\x60\x31\xae\xed\x80\x64\x68\x59\x9a\xa3\xbf\xd6\xa0\x4b\x03\xe3\x9a\xad\x7f\xe3\x59\xbe\xe4\xbf\xed\xff\xab\xd6\xa9\x36\x3a\x9f\x3d\xae\x3d\x67\x48\x0f\x0e\x87\xb6\x5b\x63\xfb\xcf\xbf\x03\x00\x00\xff\xff\xe8\x02\x80\xc0\x47\x34\x01\x00") - -func kubedbCom_snapshotsYamlBytes() ([]byte, error) { - return bindataRead( - _kubedbCom_snapshotsYaml, - "kubedb.com_snapshots.yaml", - ) -} - -func kubedbCom_snapshotsYaml() (*asset, error) { - bytes, err := kubedbCom_snapshotsYamlBytes() - if err != nil { - return nil, err - } - - info := bindataFileInfo{name: "kubedb.com_snapshots.yaml", size: 78919, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} + info := bindataFileInfo{name: "kubedb.com_redises.yaml", size: 289276, mode: os.FileMode(420), modTime: time.Unix(1573722179, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -841,7 +799,6 @@ var _bindata = map[string]func() (*asset, error){ "dba.kubedb.com_postgresmodificationrequests.yaml": dbaKubedbCom_postgresmodificationrequestsYaml, "dba.kubedb.com_proxysqlmodificationrequests.yaml": dbaKubedbCom_proxysqlmodificationrequestsYaml, "dba.kubedb.com_redismodificationrequests.yaml": dbaKubedbCom_redismodificationrequestsYaml, - "kubedb.com_dormantdatabases.yaml": kubedbCom_dormantdatabasesYaml, "kubedb.com_elasticsearches.yaml": kubedbCom_elasticsearchesYaml, "kubedb.com_etcds.yaml": kubedbCom_etcdsYaml, "kubedb.com_mariadbs.yaml": kubedbCom_mariadbsYaml, @@ -853,7 +810,6 @@ var _bindata = map[string]func() (*asset, error){ "kubedb.com_postgreses.yaml": kubedbCom_postgresesYaml, "kubedb.com_proxysqls.yaml": kubedbCom_proxysqlsYaml, "kubedb.com_redises.yaml": kubedbCom_redisesYaml, - "kubedb.com_snapshots.yaml": kubedbCom_snapshotsYaml, } // AssetDir returns the file names below a certain @@ -917,7 +873,6 @@ var _bintree = &bintree{nil, map[string]*bintree{ "dba.kubedb.com_postgresmodificationrequests.yaml": {dbaKubedbCom_postgresmodificationrequestsYaml, map[string]*bintree{}}, "dba.kubedb.com_proxysqlmodificationrequests.yaml": {dbaKubedbCom_proxysqlmodificationrequestsYaml, map[string]*bintree{}}, "dba.kubedb.com_redismodificationrequests.yaml": {dbaKubedbCom_redismodificationrequestsYaml, map[string]*bintree{}}, - "kubedb.com_dormantdatabases.yaml": {kubedbCom_dormantdatabasesYaml, map[string]*bintree{}}, "kubedb.com_elasticsearches.yaml": {kubedbCom_elasticsearchesYaml, map[string]*bintree{}}, "kubedb.com_etcds.yaml": {kubedbCom_etcdsYaml, map[string]*bintree{}}, "kubedb.com_mariadbs.yaml": {kubedbCom_mariadbsYaml, map[string]*bintree{}}, @@ -929,7 +884,6 @@ var _bintree = &bintree{nil, map[string]*bintree{ "kubedb.com_postgreses.yaml": {kubedbCom_postgresesYaml, map[string]*bintree{}}, "kubedb.com_proxysqls.yaml": {kubedbCom_proxysqlsYaml, map[string]*bintree{}}, "kubedb.com_redises.yaml": {kubedbCom_redisesYaml, map[string]*bintree{}}, - "kubedb.com_snapshots.yaml": {kubedbCom_snapshotsYaml, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory diff --git a/api/crds/catalog.kubedb.com_elasticsearchversions.yaml b/api/crds/catalog.kubedb.com_elasticsearchversions.yaml index 86fa5c0655..6c70aa5a67 100644 --- a/api/crds/catalog.kubedb.com_elasticsearchversions.yaml +++ b/api/crds/catalog.kubedb.com_elasticsearchversions.yaml @@ -41,16 +41,25 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: ElasticsearchVersionSpec is the spec for elasticsearch version properties: authPlugin: + description: Authentication plugin used by Elasticsearch cluster. type: string db: + description: Database Image properties: image: type: string @@ -58,8 +67,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -67,6 +79,7 @@ spec: - image type: object initContainer: + description: Init container Image properties: image: type: string @@ -77,16 +90,15 @@ spec: - yqImage type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string - snapshotterPolicyName: - type: string required: - databasePolicyName - - snapshotterPolicyName type: object tools: + description: Tools Image properties: image: type: string @@ -94,6 +106,7 @@ spec: - image type: object version: + description: Version type: string required: - authPlugin diff --git a/api/crds/catalog.kubedb.com_etcdversions.yaml b/api/crds/catalog.kubedb.com_etcdversions.yaml index bb23c171d1..7e2c681a20 100644 --- a/api/crds/catalog.kubedb.com_etcdversions.yaml +++ b/api/crds/catalog.kubedb.com_etcdversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: EtcdVersionSpec is the spec for postgres version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object tools: + description: Tools Image properties: image: type: string @@ -69,6 +81,7 @@ spec: - image type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_memcachedversions.yaml b/api/crds/catalog.kubedb.com_memcachedversions.yaml index 60b95c36f7..32aba0b9fa 100644 --- a/api/crds/catalog.kubedb.com_memcachedversions.yaml +++ b/api/crds/catalog.kubedb.com_memcachedversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MemcachedVersionSpec is the spec for memcached version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string @@ -69,6 +81,7 @@ spec: - databasePolicyName type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_mongodbversions.yaml b/api/crds/catalog.kubedb.com_mongodbversions.yaml index 7ad3c7966c..79c63b276e 100644 --- a/api/crds/catalog.kubedb.com_mongodbversions.yaml +++ b/api/crds/catalog.kubedb.com_mongodbversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MongoDBVersionSpec is the spec for mongodb version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object initContainer: + description: Init container Image properties: image: type: string @@ -69,16 +81,15 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string - snapshotterPolicyName: - type: string required: - databasePolicyName - - snapshotterPolicyName type: object tools: + description: Tools Image properties: image: type: string @@ -86,6 +97,7 @@ spec: - image type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_mysqlversions.yaml b/api/crds/catalog.kubedb.com_mysqlversions.yaml index b1adc3052a..27c20848a9 100644 --- a/api/crds/catalog.kubedb.com_mysqlversions.yaml +++ b/api/crds/catalog.kubedb.com_mysqlversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MySQLVersionSpec is the spec for postgres version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object initContainer: + description: Init container Image properties: image: type: string @@ -69,16 +81,15 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string - snapshotterPolicyName: - type: string required: - databasePolicyName - - snapshotterPolicyName type: object tools: + description: Tools Image properties: image: type: string @@ -86,6 +97,7 @@ spec: - image type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_perconaxtradbversions.yaml b/api/crds/catalog.kubedb.com_perconaxtradbversions.yaml index 521ae70044..16a935c5da 100644 --- a/api/crds/catalog.kubedb.com_perconaxtradbversions.yaml +++ b/api/crds/catalog.kubedb.com_perconaxtradbversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PerconaXtraDBVersionSpec is the spec for PerconaXtraDB version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object initContainer: + description: 'Init container Image TODO: remove if not needed' properties: image: type: string @@ -69,6 +81,7 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string @@ -76,6 +89,7 @@ spec: - databasePolicyName type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_pgbouncerversions.yaml b/api/crds/catalog.kubedb.com_pgbouncerversions.yaml index b11c873b35..a6539e2ac1 100644 --- a/api/crds/catalog.kubedb.com_pgbouncerversions.yaml +++ b/api/crds/catalog.kubedb.com_pgbouncerversions.yaml @@ -38,16 +38,26 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PgBouncerVersionSpec is the spec for pgbouncer version properties: deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -55,6 +65,7 @@ spec: - image type: object server: + description: Database Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object version: + description: Version type: string required: - exporter diff --git a/api/crds/catalog.kubedb.com_postgresversions.yaml b/api/crds/catalog.kubedb.com_postgresversions.yaml index e3175747c7..9bdece6bd9 100644 --- a/api/crds/catalog.kubedb.com_postgresversions.yaml +++ b/api/crds/catalog.kubedb.com_postgresversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PostgresVersionSpec is the spec for postgres version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,16 +73,15 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string - snapshotterPolicyName: - type: string required: - databasePolicyName - - snapshotterPolicyName type: object tools: + description: Tools Image properties: image: type: string @@ -79,6 +89,7 @@ spec: - image type: object version: + description: Version type: string required: - db diff --git a/api/crds/catalog.kubedb.com_proxysqlversions.yaml b/api/crds/catalog.kubedb.com_proxysqlversions.yaml index 79bcf4c6c5..83d52c5606 100644 --- a/api/crds/catalog.kubedb.com_proxysqlversions.yaml +++ b/api/crds/catalog.kubedb.com_proxysqlversions.yaml @@ -36,16 +36,26 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: ProxySQLVersionSpec is the spec for ProxySQL version properties: deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -53,6 +63,7 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string @@ -60,6 +71,7 @@ spec: - databasePolicyName type: object proxysql: + description: Proxysql Image properties: image: type: string @@ -67,6 +79,7 @@ spec: - image type: object version: + description: Version type: string required: - exporter diff --git a/api/crds/catalog.kubedb.com_redisversions.yaml b/api/crds/catalog.kubedb.com_redisversions.yaml index 8398b966b6..cb16cd6f62 100644 --- a/api/crds/catalog.kubedb.com_redisversions.yaml +++ b/api/crds/catalog.kubedb.com_redisversions.yaml @@ -38,14 +38,22 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: RedisVersionSpec is the spec for redis version properties: db: + description: Database Image properties: image: type: string @@ -53,8 +61,11 @@ spec: - image type: object deprecated: + description: Deprecated versions usable but regarded as obsolete and + best avoided, typically due to having been superseded. type: boolean exporter: + description: Exporter Image properties: image: type: string @@ -62,6 +73,7 @@ spec: - image type: object podSecurityPolicies: + description: PSP names properties: databasePolicyName: type: string @@ -69,6 +81,7 @@ spec: - databasePolicyName type: object version: + description: Version type: string required: - db diff --git a/api/crds/dba.kubedb.com_elasticsearchmodificationrequests.yaml b/api/crds/dba.kubedb.com_elasticsearchmodificationrequests.yaml index eb20108b5d..0966fd7ee1 100644 --- a/api/crds/dba.kubedb.com_elasticsearchmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_elasticsearchmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: ElasticsearchModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: ElasticsearchModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_etcdmodificationrequests.yaml b/api/crds/dba.kubedb.com_etcdmodificationrequests.yaml index a546edb7de..822dd5d339 100644 --- a/api/crds/dba.kubedb.com_etcdmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_etcdmodificationrequests.yaml @@ -24,26 +24,42 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: EtcdModificationRequestSpec is the spec for elasticsearch version type: object status: + description: EtcdModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_memcachedmodificationrequests.yaml b/api/crds/dba.kubedb.com_memcachedmodificationrequests.yaml index 01f08e89f7..662d4444de 100644 --- a/api/crds/dba.kubedb.com_memcachedmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_memcachedmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MemcachedModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: MemcachedModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_mongodbmodificationrequests.yaml b/api/crds/dba.kubedb.com_mongodbmodificationrequests.yaml index 1723ba5978..f1b98d534c 100644 --- a/api/crds/dba.kubedb.com_mongodbmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_mongodbmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MongoDBModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: MongoDBModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_mysqlmodificationrequests.yaml b/api/crds/dba.kubedb.com_mysqlmodificationrequests.yaml index 6f881e019c..8f85e963d4 100644 --- a/api/crds/dba.kubedb.com_mysqlmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_mysqlmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: MySQLModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: MySQLModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_perconaxtradbmodificationrequests.yaml b/api/crds/dba.kubedb.com_perconaxtradbmodificationrequests.yaml index e029ed9db5..d26251d73e 100644 --- a/api/crds/dba.kubedb.com_perconaxtradbmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_perconaxtradbmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PerconaXtraDBModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: PerconaXtraDBModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_pgbouncermodificationrequests.yaml b/api/crds/dba.kubedb.com_pgbouncermodificationrequests.yaml index ab2c6cb4f3..ad291b138a 100644 --- a/api/crds/dba.kubedb.com_pgbouncermodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_pgbouncermodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PgBouncerModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: PgBouncerModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_postgresmodificationrequests.yaml b/api/crds/dba.kubedb.com_postgresmodificationrequests.yaml index 8ca597f63f..a6d77ff0f5 100644 --- a/api/crds/dba.kubedb.com_postgresmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_postgresmodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: PostgresModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: PostgresModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_proxysqlmodificationrequests.yaml b/api/crds/dba.kubedb.com_proxysqlmodificationrequests.yaml index 9833323597..0f913c1252 100644 --- a/api/crds/dba.kubedb.com_proxysqlmodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_proxysqlmodificationrequests.yaml @@ -22,26 +22,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: ProxySQLModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: ProxySQLModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/dba.kubedb.com_redismodificationrequests.yaml b/api/crds/dba.kubedb.com_redismodificationrequests.yaml index e9d6c1214d..cf80caba1c 100644 --- a/api/crds/dba.kubedb.com_redismodificationrequests.yaml +++ b/api/crds/dba.kubedb.com_redismodificationrequests.yaml @@ -24,26 +24,43 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: + description: RedisModificationRequestSpec is the spec for elasticsearch + version type: object status: + description: RedisModificationRequestStatus is the status for elasticsearch + version properties: conditions: + description: Conditions applied to the request, such as approval or + denial. items: properties: lastUpdateTime: + description: timestamp for the last update to this condition format: date-time type: string message: + description: human readable message with details about the request + state type: string reason: + description: brief reason for the request state type: string type: + description: request approval state, currently Approved or Denied. type: string required: - type diff --git a/api/crds/kubedb.com_dormantdatabases.yaml b/api/crds/kubedb.com_dormantdatabases.yaml deleted file mode 100644 index 7c4a057d41..0000000000 --- a/api/crds/kubedb.com_dormantdatabases.yaml +++ /dev/null @@ -1,44070 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - app: kubedb - name: dormantdatabases.kubedb.com -spec: - additionalPrinterColumns: - - JSONPath: .status.phase - name: Status - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: kubedb.com - names: - categories: - - datastore - - kubedb - - appscode - - all - kind: DormantDatabase - listKind: DormantDatabaseList - plural: dormantdatabases - shortNames: - - drmn - singular: dormantdatabase - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - origin: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - generateName: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - namespace: - type: string - ownerReferences: - items: - properties: - apiVersion: - type: string - blockOwnerDeletion: - type: boolean - controller: - type: boolean - kind: - type: string - name: - type: string - uid: - type: string - required: - - apiVersion - - kind - - name - - uid - type: object - type: array - type: object - spec: - properties: - elasticsearch: - properties: - authPlugin: - type: string - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - certificateSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - disableSecurity: - type: boolean - enableSSL: - type: boolean - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - topology: - properties: - client: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - prefix: - type: string - replicas: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - data: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - prefix: - type: string - replicas: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - master: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - prefix: - type: string - replicas: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - required: - - client - - data - - master - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - etcd: - properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - tls: - properties: - member: - properties: - peerSecret: - type: string - serverSecret: - type: string - type: object - operatorSecret: - type: string - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - mariadb: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - memcached: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - halted: - type: boolean - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - strategy: - properties: - rollingUpdate: - properties: - maxSurge: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - terminationPolicy: - type: string - version: - type: string - required: - - version - type: object - mongodb: - properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - certificateSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - clusterAuthMode: - type: string - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicaSet: - properties: - keyFile: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - name: - type: string - required: - - name - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - shardTopology: - properties: - configServer: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - prefix: - type: string - replicas: - format: int32 - type: integer - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - replicas - type: object - mongos: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - prefix: - type: string - replicas: - format: int32 - type: integer - strategy: - properties: - rollingUpdate: - properties: - maxSurge: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - required: - - replicas - type: object - shard: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - prefix: - type: string - replicas: - format: int32 - type: integer - shards: - format: int32 - type: integer - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - replicas - - shards - type: object - required: - - configServer - - mongos - - shard - type: object - sslMode: - type: string - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - mysql: - properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - topology: - properties: - group: - properties: - baseServerID: - format: int64 - type: integer - mode: - type: string - name: - type: string - type: object - mode: - type: string - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - perconaxtradb: - properties: - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - postgres: - properties: - archiver: - properties: - storage: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - type: object - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - databaseSecret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - halted: - type: boolean - init: - properties: - postgresWAL: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - backupName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - pitr: - properties: - targetInclusive: - type: boolean - targetTime: - type: string - targetTimeline: - type: string - targetXID: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object - scriptSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - scriptPath: - type: string - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object - stashRestoreSession: - properties: - name: - type: string - type: object - type: object - leaderElection: - properties: - leaseDurationSeconds: - format: int32 - type: integer - renewDeadlineSeconds: - format: int32 - type: integer - retryPeriodSeconds: - format: int32 - type: integer - required: - - leaseDurationSeconds - - renewDeadlineSeconds - - retryPeriodSeconds - type: object - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicaServiceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - standbyMode: - type: string - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - streamingMode: - type: string - terminationPolicy: - type: string - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - redis: - properties: - cluster: - properties: - master: - format: int32 - type: integer - replicas: - format: int32 - type: integer - type: object - configSource: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - halted: - type: boolean - mode: - type: string - monitor: - properties: - agent: - type: string - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - prometheus: - properties: - exporter: - properties: - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - port: - format: int32 - type: integer - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - interval: - type: string - labels: - additionalProperties: - type: string - type: object - namespace: - type: string - port: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - type: object - paused: - type: boolean - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - replicas: - format: int32 - type: integer - serviceTemplate: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - required: - - port - type: object - type: array - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - type: - type: string - type: object - type: object - storage: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - storageType: - type: string - terminationPolicy: - type: string - updateStrategy: - properties: - rollingUpdate: - properties: - partition: - format: int32 - type: integer - type: object - type: - type: string - type: object - version: - type: string - required: - - version - type: object - type: object - required: - - spec - type: object - wipeOut: - type: boolean - required: - - origin - type: object - status: - properties: - observedGeneration: - format: int64 - type: integer - pausingTime: - format: date-time - type: string - phase: - type: string - reason: - type: string - wipeOutTime: - format: date-time - type: string - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/api/crds/kubedb.com_elasticsearches.yaml b/api/crds/kubedb.com_elasticsearches.yaml index 91e1f5a3e3..ba69c8e081 100644 --- a/api/crds/kubedb.com_elasticsearches.yaml +++ b/api/crds/kubedb.com_elasticsearches.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,1914 +56,48 @@ spec: spec: properties: authPlugin: + description: 'Authentication plugin used by Elasticsearch cluster. If + unset, defaults to SearchGuard. Deprecated: Use elasticsearchVersion.Spec.AuthPlugin + instead' type: string - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object certificateSecret: + description: Secret with SSL certificates properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -1965,108 +105,216 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database. If specified, this file will be used as configuration + file otherwise default configuration file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2074,59 +322,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2137,132 +446,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -2270,65 +711,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2336,36 +843,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2376,16 +922,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2393,18 +963,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -2415,74 +1007,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -2490,19 +1147,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2510,54 +1196,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -2565,17 +1311,27 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object disableSecurity: + description: disable security of authPlugin (ie, xpack or searchguard). + It disables authentication security of user. If unset, default is + false type: boolean enableSSL: + description: To enable ssl in transport & http layer type: boolean halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -2614,101 +1370,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -2716,59 +1584,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2779,132 +1715,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -2914,65 +1995,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -2980,36 +2138,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -3020,16 +2226,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -3037,18 +2273,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -3059,74 +2322,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -3134,19 +2471,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -3154,37 +2522,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -3193,12 +2602,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -3230,101 +2649,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3332,59 +2854,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -3395,132 +2982,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -3528,65 +3253,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3594,36 +3390,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -3634,16 +3475,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3651,18 +3519,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -3673,74 +3567,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -3750,19 +3713,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3770,57 +3762,84 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object @@ -3828,62 +3847,124 @@ spec: anyOf: - type: integer - type: string + description: An eviction is allowed if at most "maxUnavailable" pods + selected by "selector" are unavailable after the eviction, i.e. even + in absence of the evicted pod. For example, one can prevent all voluntary + evictions by specifying 0. This is a mutually exclusive setting with + "minAvailable". x-kubernetes-int-or-string: true monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -3898,56 +3979,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -3958,181 +4101,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4142,13 +4532,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4159,6 +4571,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -4167,18 +4582,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4188,13 +4638,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4210,22 +4682,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4237,18 +4752,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4257,18 +4793,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4280,13 +4855,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4294,22 +4886,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4321,18 +4956,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4341,18 +4997,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4364,13 +5059,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4379,56 +5091,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -4439,70 +5211,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -4513,51 +5383,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4565,49 +5501,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4615,25 +5604,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4641,27 +5646,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4669,85 +5702,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4755,125 +5871,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4881,58 +6153,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -4940,19 +6280,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -4960,32 +6325,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4993,49 +6390,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5043,25 +6487,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5069,27 +6527,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5097,73 +6583,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5171,90 +6727,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -5262,75 +6909,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a Elasticsearch database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -5338,57 +7103,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -5400,20 +7228,35 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string topology: + description: Elasticsearch topology for node specification properties: client: properties: @@ -5421,62 +7264,123 @@ spec: anyOf: - type: integer - type: string + description: An eviction is allowed if at most "maxUnavailable" + pods selected by "selector" are unavailable after the eviction, + i.e. even in absence of the evicted pod. For example, one + can prevent all voluntary evictions by specifying 0. This + is a mutually exclusive setting with "minAvailable". x-kubernetes-int-or-string: true prefix: type: string replicas: + description: Replicas represents number of replica for this + specific type of node format: int32 type: integer resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume at + the same time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the + provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, the + specified Kind must be in the core API group. For + any other third-party types, APIGroup is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -5488,13 +7392,25 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not + included in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string type: object type: object @@ -5504,62 +7420,123 @@ spec: anyOf: - type: integer - type: string + description: An eviction is allowed if at most "maxUnavailable" + pods selected by "selector" are unavailable after the eviction, + i.e. even in absence of the evicted pod. For example, one + can prevent all voluntary evictions by specifying 0. This + is a mutually exclusive setting with "minAvailable". x-kubernetes-int-or-string: true prefix: type: string replicas: + description: Replicas represents number of replica for this + specific type of node format: int32 type: integer resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume at + the same time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the + provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, the + specified Kind must be in the core API group. For + any other third-party types, APIGroup is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -5571,13 +7548,25 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not + included in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string type: object type: object @@ -5587,62 +7576,123 @@ spec: anyOf: - type: integer - type: string + description: An eviction is allowed if at most "maxUnavailable" + pods selected by "selector" are unavailable after the eviction, + i.e. even in absence of the evicted pod. For example, one + can prevent all voluntary evictions by specifying 0. This + is a mutually exclusive setting with "minAvailable". x-kubernetes-int-or-string: true prefix: type: string replicas: + description: Replicas represents number of replica for this + specific type of node format: int32 type: integer resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume at + the same time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the + provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, the + specified Kind must be in the core API group. For + any other third-party types, APIGroup is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -5654,13 +7704,25 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not + included in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string type: object type: object @@ -5670,17 +7732,27 @@ spec: - master type: object updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of Elasticsearch to be deployed. type: string required: - version @@ -5688,6 +7760,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_etcds.yaml b/api/crds/kubedb.com_etcds.yaml index 7d6fd661aa..ebbab2a3de 100644 --- a/api/crds/kubedb.com_etcds.yaml +++ b/api/crds/kubedb.com_etcds.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -49,1913 +55,44 @@ spec: type: object spec: properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -1963,13 +100,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -2008,101 +151,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -2110,59 +365,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2173,132 +496,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -2308,65 +776,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -2374,36 +919,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -2414,16 +1007,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -2431,18 +1054,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -2453,74 +1103,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -2528,19 +1252,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -2548,37 +1303,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -2587,12 +1383,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -2624,101 +1430,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -2726,59 +1635,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2789,132 +1763,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -2922,65 +2034,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -2988,36 +2171,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -3028,16 +2256,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3045,18 +2300,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -3067,74 +2348,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -3144,19 +2494,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3164,115 +2543,199 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -3287,56 +2750,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -3347,181 +2872,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -3531,13 +3303,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -3548,6 +3342,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -3556,18 +3353,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -3577,13 +3409,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -3599,22 +3453,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -3626,18 +3523,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -3646,18 +3564,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -3669,13 +3626,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -3683,22 +3657,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -3710,18 +3727,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -3730,18 +3768,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -3753,13 +3830,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -3768,56 +3862,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -3828,70 +3982,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -3902,51 +4154,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3954,49 +4272,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4004,25 +4375,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4030,27 +4417,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4058,85 +4473,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4144,125 +4642,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4270,58 +4924,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -4329,19 +5051,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -4349,32 +5096,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4382,49 +5161,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4432,25 +5258,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4458,27 +5298,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4486,73 +5354,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4560,90 +5498,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -4651,75 +5680,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a Etcd database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -4727,57 +5874,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -4789,43 +5999,74 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string tls: + description: etcd cluster TLS configuration properties: member: properties: peerSecret: + description: PeerSecret is the secret containing TLS certs used + by each etcd member pod for the communication between etcd + peers. type: string serverSecret: + description: ServerSecret is the secret containing TLS certs + used by each etcd member pod for the communication between + etcd server and its clients. type: string type: object operatorSecret: type: string type: object updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of Etcd to be deployed. type: string required: - version @@ -4833,6 +6074,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_mariadbs.yaml b/api/crds/kubedb.com_mariadbs.yaml index 958b2c7efc..d434f48609 100644 --- a/api/crds/kubedb.com_mariadbs.yaml +++ b/api/crds/kubedb.com_mariadbs.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,103 +56,209 @@ spec: spec: properties: configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e custom-mysql.cnf). If specified, this file + will be used as configuration file otherwise default configuration + file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -154,59 +266,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -217,132 +390,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -350,65 +655,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -416,36 +787,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -456,16 +866,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -473,18 +907,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -495,74 +951,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -570,19 +1091,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -590,54 +1140,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -645,13 +1255,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -690,101 +1306,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -792,59 +1520,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -855,132 +1651,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -990,65 +1931,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -1056,36 +2074,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -1096,16 +2162,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -1113,18 +2209,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -1135,74 +2258,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -1210,19 +2407,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -1230,37 +2458,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -1269,12 +2538,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -1306,101 +2585,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -1408,59 +2790,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -1471,132 +2918,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -1604,65 +3189,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -1670,36 +3326,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -1710,16 +3411,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -1727,18 +3455,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -1749,74 +3503,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -1826,19 +3649,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -1846,115 +3698,199 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -1969,56 +3905,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -2029,181 +4027,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2213,13 +4458,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2230,6 +4497,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -2238,18 +4508,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2259,13 +4564,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2281,22 +4608,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2308,18 +4678,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -2328,18 +4719,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2351,13 +4781,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -2365,22 +4812,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2392,18 +4882,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -2412,18 +4923,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2435,13 +4985,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -2450,56 +5017,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -2510,70 +5137,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -2584,51 +5309,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2636,49 +5427,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2686,25 +5530,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -2712,27 +5572,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2740,85 +5628,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2826,125 +5797,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2952,58 +6079,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -3011,19 +6206,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -3031,32 +6251,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3064,49 +6316,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3114,25 +6413,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -3140,27 +6453,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3168,73 +6509,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3242,90 +6653,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -3333,75 +6835,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a MariaDB database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -3409,57 +7029,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -3471,31 +7154,55 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of MariaDB to be deployed. type: string required: - version @@ -3503,6 +7210,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_memcacheds.yaml b/api/crds/kubedb.com_memcacheds.yaml index 9b84bb1b90..66d9fdc8d4 100644 --- a/api/crds/kubedb.com_memcacheds.yaml +++ b/api/crds/kubedb.com_memcacheds.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,103 +56,208 @@ spec: spec: properties: configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database. If specified, this file will be used as configuration + file otherwise default configuration file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -154,59 +265,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -217,132 +389,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -350,65 +654,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -416,36 +786,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -456,16 +865,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -473,18 +906,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -495,74 +950,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -570,19 +1090,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -590,97 +1139,192 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -695,56 +1339,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -755,181 +1461,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -939,13 +1892,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -956,6 +1931,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -964,18 +1942,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -985,13 +1998,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -1007,22 +2042,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1034,18 +2112,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1054,18 +2153,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1077,13 +2215,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1091,22 +2246,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1118,18 +2316,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1138,18 +2357,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1161,13 +2419,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1176,56 +2451,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -1236,70 +2571,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -1310,51 +2743,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1362,49 +2861,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1412,25 +2964,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1438,27 +3006,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1466,85 +3062,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1552,125 +3231,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1678,58 +3513,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -1737,19 +3640,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -1757,32 +3685,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1790,49 +3750,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1840,25 +3847,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1866,27 +3887,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1894,73 +3943,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1968,90 +4087,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -2059,75 +4269,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a Memcached database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -2135,39 +4463,92 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object strategy: + description: The deployment strategy to use to replace existing pods + with new ones. properties: rollingUpdate: + description: 'Rolling update config params. Present only if DeploymentStrategyType + = RollingUpdate. --- TODO: Update this to follow our convention + for oneOf, whatever we decide it to be.' properties: maxSurge: anyOf: - type: integer - type: string + description: 'The maximum number of pods that can be scheduled + above the desired number of pods. Value can be an absolute + number (ex: 5) or a percentage of desired pods (ex: 10%). + This can not be 0 if MaxUnavailable is 0. Absolute number + is calculated from percentage by rounding up. Defaults to + 25%. Example: when this is set to 30%, the new ReplicaSet + can be scaled up immediately when the rolling update starts, + such that the total number of old and new pods do not exceed + 130% of desired pods. Once old pods have been killed, new + ReplicaSet can be scaled up further, ensuring that total number + of pods running at any time during the update is at most 130% + of desired pods.' x-kubernetes-int-or-string: true maxUnavailable: anyOf: - type: integer - type: string + description: 'The maximum number of pods that can be unavailable + during the update. Value can be an absolute number (ex: 5) + or a percentage of desired pods (ex: 10%). Absolute number + is calculated from percentage by rounding down. This can not + be 0 if MaxSurge is 0. Defaults to 25%. Example: when this + is set to 30%, the old ReplicaSet can be scaled down to 70% + of desired pods immediately when the rolling update starts. + Once new pods are ready, old ReplicaSet can be scaled down + further, followed by scaling up the new ReplicaSet, ensuring + that the total number of pods available at all times during + the update is at least 70% of desired pods.' x-kubernetes-int-or-string: true type: object type: + description: Type of deployment. Can be "Recreate" or "RollingUpdate". + Default is RollingUpdate. type: string type: object terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string version: + description: Version of Memcached to be deployed. type: string required: - version @@ -2175,6 +4556,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_mongodbs.yaml b/api/crds/kubedb.com_mongodbs.yaml index 71223e03bb..55a3a0ebaf 100644 --- a/api/crds/kubedb.com_mongodbs.yaml +++ b/api/crds/kubedb.com_mongodbs.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -49,1913 +55,45 @@ spec: type: object spec: properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object certificateSecret: + description: Secret for KeyFile or SSL certificates. Contains `tls.pem` + or keyfile `key.txt` depending on enableSSL. properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -1963,110 +101,222 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object clusterAuthMode: + description: 'ClusterAuthMode for replicaset or sharding. (default will + be x509 if sslmode is not `disabled`.) See available ClusterAuthMode: + https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-clusterauthmode' type: string configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e mongod.cnf). If specified, this file will be + used as configuration file otherwise default configuration file will + be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2074,59 +324,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2137,132 +448,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -2270,65 +713,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2336,36 +845,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2376,16 +924,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2393,18 +965,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -2415,74 +1009,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -2490,19 +1149,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2510,54 +1198,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -2565,13 +1313,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -2610,101 +1364,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -2712,59 +1578,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2775,132 +1709,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -2910,65 +1989,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -2976,36 +2132,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -3016,16 +2220,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -3033,18 +2267,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -3055,74 +2316,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -3130,19 +2465,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -3150,37 +2516,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -3189,12 +2596,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -3226,101 +2643,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3328,59 +2848,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -3391,132 +2976,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -3524,65 +3247,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3590,36 +3384,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -3630,16 +3469,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3647,18 +3513,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -3669,74 +3561,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -3746,19 +3707,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3766,115 +3756,199 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -3889,56 +3963,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -3949,181 +4085,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4133,13 +4516,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4150,6 +4555,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -4158,18 +4566,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4179,13 +4622,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4201,22 +4666,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4228,18 +4736,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4248,18 +4777,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4271,13 +4839,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4285,22 +4870,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4312,18 +4940,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4332,18 +4981,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4355,13 +5043,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4370,56 +5075,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -4430,70 +5195,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -4504,51 +5367,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4556,49 +5485,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4606,25 +5588,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4632,27 +5630,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4660,85 +5686,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4746,125 +5855,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4872,58 +6137,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -4931,19 +6264,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -4951,32 +6309,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4984,49 +6374,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5034,25 +6471,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5060,27 +6511,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5088,73 +6567,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5162,90 +6711,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -5253,51 +6893,131 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicaSet: + description: MongoDB replica set properties: keyFile: + description: 'Deprecated: Use spec.certificateSecret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -5305,55 +7025,127 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object name: + description: Name of replicaset type: string required: - name type: object replicas: + description: Number of instances to deploy for a MongoDB database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -5361,120 +7153,260 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object shardTopology: + description: MongoDB sharding topology. properties: configServer: + description: 'Config Server (metadata) component of mongodb. More + info: https://docs.mongodb.com/manual/core/sharded-cluster-config-servers/' properties: configSource: + description: ConfigSource is an optional field to provide custom + configuration file for database (i.e mongod.cnf). If specified, + this file will be used as configuration file otherwise default + configuration file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -5482,59 +7414,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -5545,132 +7545,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -5678,65 +7823,142 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -5744,36 +7966,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -5784,16 +8054,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -5801,18 +8101,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -5823,74 +8150,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -5898,19 +8299,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -5918,75 +8350,182 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object podTemplate: + description: PodTemplate is an optional configuration for pods + used to expose database properties: controller: + description: 'Workload controller''s metadata. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the + pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling + rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most + preferred. items: + description: An empty preferred scheduling + term matches all objects with implicit weight + 0 (i.e. it's a no-op). A null preferred + scheduling term matches no objects (i.e. + is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -5996,13 +8535,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -6013,6 +8577,9 @@ spec: type: array type: object weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, + in the range 1-100. format: int32 type: integer required: @@ -6021,18 +8588,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to an update), the + system may or may not try to eventually evict + the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. items: + description: A null or empty node selector + term matches no objects. The requirements + of them are ANDed. The TopologySelectorTerm + type implements a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -6042,13 +8648,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -6064,22 +8695,74 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules + (e.g. co-locate this pod in the same node, zone, + etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest + sum are the most preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -6091,18 +8774,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -6111,18 +8821,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to a pod label update), + the system may or may not try to eventually + evict the pod from its node. When there are + multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. + all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -6134,13 +8890,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -6148,22 +8925,75 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling + rules (e.g. avoid putting this pod in the same + node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the anti-affinity + expressions specified by this field, but it + may choose a node that violates one or more + of the expressions. The node that is most + preferred is the one with the greatest sum + of weights, i.e. for each node that meets + all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity + expressions, etc.), compute a sum by iterating + through the elements of this field and adding + "weight" to the sum if the node has pods which + matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most + preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -6175,18 +9005,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -6195,18 +9052,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements + specified by this field are not met at scheduling + time, the pod will not be scheduled onto the + node. If the anti-affinity requirements specified + by this field cease to be met at some point + during pod execution (e.g. due to a pod label + update), the system may or may not try to + eventually evict the pod from its node. When + there are multiple elements, the lists of + nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -6218,13 +9121,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -6233,56 +9157,122 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the + reference in the input string will be unchanged. The + $(VAR_NAME) syntax can be escaped with a double $$, + ie: $$(VAR_NAME). Escaped references will never be + expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in + the container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: + supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, spec.nodeName, + spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, defaults + to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, + requests.cpu, requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in + the pod's namespace properties: key: + description: The key of the secret to + select from. Must be a valid secret + key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -6293,70 +9283,184 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of + references to secrets in the same namespace to use + for pulling any of the images used by this PodSpec. + If specified, these secrets will be passed to individual + puller implementations for them to use. items: + description: LocalObjectReference contains enough + information to let you locate the referenced object + inside the same namespace. properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging + to the pod. Init containers are executed in order + prior to containers being started. If any init container + fails, the pod is considered to have failed and is + handled according to its restartPolicy. The name for + an init container or normal container must be unique + among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. + The resourceRequirements of an init container are + taken into account during scheduling by finding the + highest request/limit for each resource type, and + then using the max of of that value or the sum of + the normal containers. Limits are applied to init + containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you + want to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The + docker image''s CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded + using the container''s environment. If a variable + cannot be resolved, the reference in the input + string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot + be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within + a shell. The docker image''s ENTRYPOINT is used + if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to + set in the container. Cannot be updated. items: + description: EnvVar represents an environment + variable present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined + environment variables in the container + and any service environment variables. + If a variable cannot be resolved, the + reference in the input string will be + unchanged. The $(VAR_NAME) syntax can + be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, + regardless of whether the variable exists + or not. Defaults to "".' type: string valueFrom: + description: Source for the environment + variable's value. Cannot be used if value + is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the + pod: supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret + in the pod's namespace properties: key: + description: The key of the secret + to select from. Must be a valid + secret key. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + Secret or its key must be defined type: boolean required: - key @@ -6367,51 +9471,127 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment + variables in the container. The keys defined + within a source must be a C_IDENTIFIER. All + invalid keys will be reported as an event when + the container is starting. When a key exists + in multiple sources, the value associated with + the last source will take precedence. Values + defined by an Env with a duplicate key will + take precedence. Cannot be updated. items: + description: EnvFromSource represents the source + of a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + must be defined type: boolean type: object prefix: + description: An optional identifier to prepend + to each key in the ConfigMap. Must be + a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + must be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level + config management to default or override container + images in workload controllers like Deployments + and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, + Never, IfNotPresent. Defaults to Always if :latest + tag is specified, or IfNotPresent otherwise. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system + should take in response to container lifecycle + events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately + after a container is created. If the handler + fails, the container is terminated and restarted + according to its restart policy. Other management + of the container blocks until the hook completes. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -6419,49 +9599,114 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately + before a container is terminated due to + an API request or management event such + as liveness/startup probe failure, preemption, + resource contention, etc. The handler is + not called if the container crashes or exits. + The reason for termination is passed to + the handler. The Pod''s termination grace + period countdown begins before the PreStop + hooked is executed. Regardless of the outcome + of the handler, the container will eventually + terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until + the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -6469,25 +9714,44 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -6495,27 +9759,59 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6523,85 +9819,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as + a DNS_LABEL. Each container in a pod must have + a unique name (DNS_LABEL). Cannot be updated. type: string ports: + description: List of ports to expose from the + container. Exposing a port here gives the system + additional information about the network connections + a container uses, but is primarily informational. + Not specifying a port here DOES NOT prevent + that port from being exposed. Any port which + is listening on the default "0.0.0.0" address + inside a container will be accessible from the + network. Cannot be updated. items: + description: ContainerPort represents a network + port in a single container. properties: containerPort: + description: Number of port to expose on + the pod's IP address. This must be a valid + port number, 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external + port to. type: string hostPort: + description: Number of port to expose on + the host. If specified, this must be a + valid port number, 0 < x < 65536. If HostNetwork + is specified, this must match ContainerPort. + Most containers do not need this. format: int32 type: integer name: + description: If specified, this must be + an IANA_SVC_NAME and unique within the + pod. Each named port in a pod must have + a unique name. Name for the port that + can be referred to by services. type: string protocol: + description: Protocol for port. Must be + UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service + readiness. Container will be removed from service + endpoints if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6609,125 +10001,308 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this + container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum + amount of compute resources allowed. More + info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum + amount of compute resources required. If + Requests is omitted for a container, it + defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should + run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls + whether a process can gain more privileges + than its parent process. This bool directly + controls if the no_new_privs flag will be + set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) + run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop + when running containers. Defaults to the + default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. + Processes in privileged containers are essentially + equivalent to root on the host. Defaults + to false. type: boolean procMount: + description: procMount denotes the type of + proc mount to use for the containers. The + default is DefaultProcMount which uses the + container runtime defaults for readonly + paths and masked paths. This requires the + ProcMountType feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a + read-only root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint + of the container process. Uses runtime default + if unset. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container + must run as a non-root user. If true, the + Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 + (root) and fail to start the container if + it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. type: boolean runAsUser: + description: The UID to run the entrypoint + of the container process. Defaults to user + specified in image metadata if unspecified. + May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied + to the container. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label + that applies to the container. type: string role: + description: Role is a SELinux role label + that applies to the container. type: string type: + description: Type is a SELinux type label + that applies to the container. type: string user: + description: User is a SELinux user label + that applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings + applied to all containers. If unspecified, + the options from the PodSecurityContext + will be used. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where + the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName + field. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is + the name of the GMSA credential spec + to use. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to + run the entrypoint of the container + process. Defaults to the user specified + in image metadata if unspecified. May + also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext + takes precedence. This field is alpha-level + and it is only honored by servers that + enable the WindowsRunAsUserName feature + flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the + Pod has successfully initialized. If specified, + no other probes are executed until this completes + successfully. If this probe fails, the Pod will + be restarted, just as if the livenessProbe failed. + This can be used to provide different probe + parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data + or warm a cache, than during steady-state operation. + This cannot be updated. This is an alpha feature + enabled by the StartupProbe feature flag. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6735,58 +10310,140 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate + a buffer for stdin in the container runtime. + If this is not set, reads from stdin in the + container will always result in EOF. Default + is false. type: boolean stdinOnce: + description: Whether the container runtime should + close the stdin channel after it has been opened + by a single attach. When stdin is true the stdin + stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until + the first client attaches to stdin, and then + remains open and accepts data until the client + disconnects, at which time stdin is closed and + remains closed until the container is restarted. + If this flag is false, a container processes + that reads from stdin will never receive an + EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file + to which the container''s termination message + will be written is mounted into the container''s + filesystem. Message written is intended to be + brief final status, such as an assertion failure + message. Will be truncated by the node if greater + than 4096 bytes. The total message length across + all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message + should be populated. File will use the contents + of terminationMessagePath to populate the container + status message on both success and failure. + FallbackToLogsOnError will use the last chunk + of container log output if the termination message + file is empty and the container exited with + an error. The log output is limited to 2048 + bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. type: string tty: + description: Whether this container should allocate + a TTY for itself, also requires 'stdin' to be + true. Default is false. type: boolean volumeDevices: + description: volumeDevices is the list of block + devices to be used by the container. This is + a beta feature. items: + description: volumeDevice describes a mapping + of a raw block device within a container. properties: devicePath: + description: devicePath is the path inside + of the container that the device will + be mapped to. type: string name: + description: name must match the name of + a persistentVolumeClaim in the pod type: string required: - devicePath @@ -6794,19 +10451,47 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting + of a Volume within a container. properties: mountPath: + description: Path within the container at + which the volume should be mounted. Must + not contain ':'. type: string mountPropagation: + description: mountPropagation determines + how mounts are propagated from the host + to container and the other way around. + When not set, MountPropagationNone is + used. This field is beta in 1.10. type: string name: + description: This must match the Name of + a Volume. type: string readOnly: + description: Mounted read-only if true, + read-write otherwise (false or unspecified). + Defaults to false. type: boolean subPath: + description: Path within the volume from + which the container's volume should be + mounted. Defaults to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume + from which the container's volume should + be mounted. Behaves similarly to SubPath + but environment variable references $(VAR_NAME) + are expanded using the container's environment. + Defaults to "" (volume's root). SubPathExpr + and SubPath are mutually exclusive. This + field is beta in 1.15. type: string required: - mountPath @@ -6814,32 +10499,69 @@ spec: type: object type: array workingDir: + description: Container's working directory. If + not specified, the container runtime's default + will be used, which might be configured in the + container image. Cannot be updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, + the container is terminated and restarted according + to its restart policy. Other management of the + container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6847,49 +10569,105 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. + The handler is not called if the container crashes + or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period + countdown begins before the PreStop hooked is + executed. Regardless of the outcome of the handler, + the container will eventually terminate within + the Pod''s termination grace period. Other management + of the container blocks until the hook completes + or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6897,25 +10675,43 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -6923,27 +10719,58 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. Controllers + may set default LivenessProbe if no liveness probe + is provided. To ignore defaulting, set the value to + empty LivenessProbe "{}". Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -6951,73 +10778,148 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must + be true for the pod to fit on a node. Selector which + must match a node''s labels for the pod to be scheduled + on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components + use this field to find the priority of the pod. When + Priority Admission Controller is enabled, it prevents + users from setting this field. The admission controller + populates this field from PriorityClassName. The higher + the value, the higher the priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. + "system-node-critical" and "system-cluster-critical" + are two special keywords which indicate the highest + priorities with the former being the highest priority. + Any other name must be defined by creating a PriorityClass + object with that name. If not specified, the pod priority + will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. Controllers may + set default ReadinessProbe if no readyness probe is + provided. To ignore defaulting, set the value to empty + ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -7025,90 +10927,189 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar + container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is + omitted for a container, it defaults to Limits + if that is explicitly specified, otherwise to + an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched + by specified scheduler. If not specified, the pod + will be dispatched by default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security + attributes and common container settings. Optional: + Defaults to empty. See type description for default + values of each field.' properties: fsGroup: + description: "A special supplemental group that + applies to all containers in a pod. Some volume + types allow the Kubelet to change the ownership + of that volume to be owned by the pod: \n 1. The + owning GID will be the FSGroup 2. The setgid bit + is set (new files created in the volume will be + owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not + modify the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in SecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence + for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will + validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start + the container if it does. If unset or false, no + such validation will be performed. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified + in image metadata if unspecified. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence for that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + all containers. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence + for that container. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first + process run in each container, in addition to + the container's primary GID. If unspecified, + no groups will be added to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls + used for the pod. Pods with unsupported sysctls + (by the container runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter + to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -7116,79 +11117,185 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options + within a container's SecurityContext will be used. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the + GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run + the entrypoint of the container process. Defaults + to the user specified in image metadata if + unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and + it is only honored by servers that enable + the WindowsRunAsUserName feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the + ServiceAccount to use to run this pod. More info: + https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to + tolerates any taint that matches the triple + using the matching operator . properties: effect: + description: Effect indicates the taint effect + to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, + PreferNoSchedule and NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; + this combination means to match all values and + all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and + Equal. Defaults to Equal. Exists is equivalent + to wildcard for value, so that a pod can tolerate + all taints of a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the + period of time the toleration (which must be + of effect NoExecute, otherwise this field is + ignored) tolerates the taint. By default, it + is not set, which means tolerate the taint forever + (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. type: string type: object type: array type: object type: object prefix: + description: Prefix is the name prefix of this node. type: string replicas: + description: Replicas represents number of replicas of this + specific node. If current node has replicaset enabled, then + replicas is the amount of replicaset nodes. format: int32 type: integer storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume at + the same time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the + provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, the + specified Kind must be in the core API group. For + any other third-party types, APIGroup is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -7200,118 +11307,247 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not + included in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string type: object required: - replicas type: object mongos: + description: 'Mongos (router) component of mongodb. More info: https://docs.mongodb.com/manual/core/sharded-cluster-query-router/' properties: configSource: + description: ConfigSource is an optional field to provide custom + configuration file for database (i.e mongod.cnf). If specified, + this file will be used as configuration file otherwise default + configuration file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -7319,59 +11555,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -7382,132 +11686,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -7515,65 +11964,142 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -7581,36 +12107,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -7621,16 +12195,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -7638,18 +12242,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -7660,74 +12291,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -7735,19 +12440,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -7755,75 +12491,182 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object podTemplate: + description: PodTemplate is an optional configuration for pods + used to expose database properties: controller: + description: 'Workload controller''s metadata. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the + pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling + rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most + preferred. items: + description: An empty preferred scheduling + term matches all objects with implicit weight + 0 (i.e. it's a no-op). A null preferred + scheduling term matches no objects (i.e. + is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -7833,13 +12676,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -7850,6 +12718,9 @@ spec: type: array type: object weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, + in the range 1-100. format: int32 type: integer required: @@ -7858,18 +12729,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to an update), the + system may or may not try to eventually evict + the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. items: + description: A null or empty node selector + term matches no objects. The requirements + of them are ANDed. The TopologySelectorTerm + type implements a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -7879,13 +12789,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -7901,22 +12836,74 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules + (e.g. co-locate this pod in the same node, zone, + etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest + sum are the most preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -7928,18 +12915,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -7948,18 +12962,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to a pod label update), + the system may or may not try to eventually + evict the pod from its node. When there are + multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. + all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -7971,13 +13031,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -7985,22 +13066,75 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling + rules (e.g. avoid putting this pod in the same + node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the anti-affinity + expressions specified by this field, but it + may choose a node that violates one or more + of the expressions. The node that is most + preferred is the one with the greatest sum + of weights, i.e. for each node that meets + all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity + expressions, etc.), compute a sum by iterating + through the elements of this field and adding + "weight" to the sum if the node has pods which + matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most + preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -8012,18 +13146,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -8032,18 +13193,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements + specified by this field are not met at scheduling + time, the pod will not be scheduled onto the + node. If the anti-affinity requirements specified + by this field cease to be met at some point + during pod execution (e.g. due to a pod label + update), the system may or may not try to + eventually evict the pod from its node. When + there are multiple elements, the lists of + nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -8055,13 +13262,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -8070,56 +13298,122 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the + reference in the input string will be unchanged. The + $(VAR_NAME) syntax can be escaped with a double $$, + ie: $$(VAR_NAME). Escaped references will never be + expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in + the container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: + supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, spec.nodeName, + spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, defaults + to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, + requests.cpu, requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in + the pod's namespace properties: key: + description: The key of the secret to + select from. Must be a valid secret + key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -8130,70 +13424,184 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of + references to secrets in the same namespace to use + for pulling any of the images used by this PodSpec. + If specified, these secrets will be passed to individual + puller implementations for them to use. items: + description: LocalObjectReference contains enough + information to let you locate the referenced object + inside the same namespace. properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging + to the pod. Init containers are executed in order + prior to containers being started. If any init container + fails, the pod is considered to have failed and is + handled according to its restartPolicy. The name for + an init container or normal container must be unique + among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. + The resourceRequirements of an init container are + taken into account during scheduling by finding the + highest request/limit for each resource type, and + then using the max of of that value or the sum of + the normal containers. Limits are applied to init + containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you + want to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The + docker image''s CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded + using the container''s environment. If a variable + cannot be resolved, the reference in the input + string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot + be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within + a shell. The docker image''s ENTRYPOINT is used + if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to + set in the container. Cannot be updated. items: + description: EnvVar represents an environment + variable present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined + environment variables in the container + and any service environment variables. + If a variable cannot be resolved, the + reference in the input string will be + unchanged. The $(VAR_NAME) syntax can + be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, + regardless of whether the variable exists + or not. Defaults to "".' type: string valueFrom: + description: Source for the environment + variable's value. Cannot be used if value + is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the + pod: supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret + in the pod's namespace properties: key: + description: The key of the secret + to select from. Must be a valid + secret key. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + Secret or its key must be defined type: boolean required: - key @@ -8204,51 +13612,127 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment + variables in the container. The keys defined + within a source must be a C_IDENTIFIER. All + invalid keys will be reported as an event when + the container is starting. When a key exists + in multiple sources, the value associated with + the last source will take precedence. Values + defined by an Env with a duplicate key will + take precedence. Cannot be updated. items: + description: EnvFromSource represents the source + of a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + must be defined type: boolean type: object prefix: + description: An optional identifier to prepend + to each key in the ConfigMap. Must be + a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + must be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level + config management to default or override container + images in workload controllers like Deployments + and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, + Never, IfNotPresent. Defaults to Always if :latest + tag is specified, or IfNotPresent otherwise. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system + should take in response to container lifecycle + events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately + after a container is created. If the handler + fails, the container is terminated and restarted + according to its restart policy. Other management + of the container blocks until the hook completes. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -8256,49 +13740,114 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately + before a container is terminated due to + an API request or management event such + as liveness/startup probe failure, preemption, + resource contention, etc. The handler is + not called if the container crashes or exits. + The reason for termination is passed to + the handler. The Pod''s termination grace + period countdown begins before the PreStop + hooked is executed. Regardless of the outcome + of the handler, the container will eventually + terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until + the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -8306,25 +13855,44 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -8332,27 +13900,59 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8360,85 +13960,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as + a DNS_LABEL. Each container in a pod must have + a unique name (DNS_LABEL). Cannot be updated. type: string ports: + description: List of ports to expose from the + container. Exposing a port here gives the system + additional information about the network connections + a container uses, but is primarily informational. + Not specifying a port here DOES NOT prevent + that port from being exposed. Any port which + is listening on the default "0.0.0.0" address + inside a container will be accessible from the + network. Cannot be updated. items: + description: ContainerPort represents a network + port in a single container. properties: containerPort: + description: Number of port to expose on + the pod's IP address. This must be a valid + port number, 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external + port to. type: string hostPort: + description: Number of port to expose on + the host. If specified, this must be a + valid port number, 0 < x < 65536. If HostNetwork + is specified, this must match ContainerPort. + Most containers do not need this. format: int32 type: integer name: + description: If specified, this must be + an IANA_SVC_NAME and unique within the + pod. Each named port in a pod must have + a unique name. Name for the port that + can be referred to by services. type: string protocol: + description: Protocol for port. Must be + UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service + readiness. Container will be removed from service + endpoints if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8446,125 +14142,308 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this + container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum + amount of compute resources allowed. More + info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum + amount of compute resources required. If + Requests is omitted for a container, it + defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should + run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls + whether a process can gain more privileges + than its parent process. This bool directly + controls if the no_new_privs flag will be + set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) + run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop + when running containers. Defaults to the + default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. + Processes in privileged containers are essentially + equivalent to root on the host. Defaults + to false. type: boolean procMount: + description: procMount denotes the type of + proc mount to use for the containers. The + default is DefaultProcMount which uses the + container runtime defaults for readonly + paths and masked paths. This requires the + ProcMountType feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a + read-only root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint + of the container process. Uses runtime default + if unset. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container + must run as a non-root user. If true, the + Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 + (root) and fail to start the container if + it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. type: boolean runAsUser: + description: The UID to run the entrypoint + of the container process. Defaults to user + specified in image metadata if unspecified. + May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied + to the container. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label + that applies to the container. type: string role: + description: Role is a SELinux role label + that applies to the container. type: string type: + description: Type is a SELinux type label + that applies to the container. type: string user: + description: User is a SELinux user label + that applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings + applied to all containers. If unspecified, + the options from the PodSecurityContext + will be used. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where + the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName + field. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is + the name of the GMSA credential spec + to use. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to + run the entrypoint of the container + process. Defaults to the user specified + in image metadata if unspecified. May + also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext + takes precedence. This field is alpha-level + and it is only honored by servers that + enable the WindowsRunAsUserName feature + flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the + Pod has successfully initialized. If specified, + no other probes are executed until this completes + successfully. If this probe fails, the Pod will + be restarted, just as if the livenessProbe failed. + This can be used to provide different probe + parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data + or warm a cache, than during steady-state operation. + This cannot be updated. This is an alpha feature + enabled by the StartupProbe feature flag. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8572,58 +14451,140 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate + a buffer for stdin in the container runtime. + If this is not set, reads from stdin in the + container will always result in EOF. Default + is false. type: boolean stdinOnce: + description: Whether the container runtime should + close the stdin channel after it has been opened + by a single attach. When stdin is true the stdin + stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until + the first client attaches to stdin, and then + remains open and accepts data until the client + disconnects, at which time stdin is closed and + remains closed until the container is restarted. + If this flag is false, a container processes + that reads from stdin will never receive an + EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file + to which the container''s termination message + will be written is mounted into the container''s + filesystem. Message written is intended to be + brief final status, such as an assertion failure + message. Will be truncated by the node if greater + than 4096 bytes. The total message length across + all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message + should be populated. File will use the contents + of terminationMessagePath to populate the container + status message on both success and failure. + FallbackToLogsOnError will use the last chunk + of container log output if the termination message + file is empty and the container exited with + an error. The log output is limited to 2048 + bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. type: string tty: + description: Whether this container should allocate + a TTY for itself, also requires 'stdin' to be + true. Default is false. type: boolean volumeDevices: + description: volumeDevices is the list of block + devices to be used by the container. This is + a beta feature. items: + description: volumeDevice describes a mapping + of a raw block device within a container. properties: devicePath: + description: devicePath is the path inside + of the container that the device will + be mapped to. type: string name: + description: name must match the name of + a persistentVolumeClaim in the pod type: string required: - devicePath @@ -8631,19 +14592,47 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting + of a Volume within a container. properties: mountPath: + description: Path within the container at + which the volume should be mounted. Must + not contain ':'. type: string mountPropagation: + description: mountPropagation determines + how mounts are propagated from the host + to container and the other way around. + When not set, MountPropagationNone is + used. This field is beta in 1.10. type: string name: + description: This must match the Name of + a Volume. type: string readOnly: + description: Mounted read-only if true, + read-write otherwise (false or unspecified). + Defaults to false. type: boolean subPath: + description: Path within the volume from + which the container's volume should be + mounted. Defaults to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume + from which the container's volume should + be mounted. Behaves similarly to SubPath + but environment variable references $(VAR_NAME) + are expanded using the container's environment. + Defaults to "" (volume's root). SubPathExpr + and SubPath are mutually exclusive. This + field is beta in 1.15. type: string required: - mountPath @@ -8651,32 +14640,69 @@ spec: type: object type: array workingDir: + description: Container's working directory. If + not specified, the container runtime's default + will be used, which might be configured in the + container image. Cannot be updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, + the container is terminated and restarted according + to its restart policy. Other management of the + container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8684,49 +14710,105 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. + The handler is not called if the container crashes + or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period + countdown begins before the PreStop hooked is + executed. Regardless of the outcome of the handler, + the container will eventually terminate within + the Pod''s termination grace period. Other management + of the container blocks until the hook completes + or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8734,25 +14816,43 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -8760,27 +14860,58 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. Controllers + may set default LivenessProbe if no liveness probe + is provided. To ignore defaulting, set the value to + empty LivenessProbe "{}". Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8788,73 +14919,148 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must + be true for the pod to fit on a node. Selector which + must match a node''s labels for the pod to be scheduled + on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components + use this field to find the priority of the pod. When + Priority Admission Controller is enabled, it prevents + users from setting this field. The admission controller + populates this field from PriorityClassName. The higher + the value, the higher the priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. + "system-node-critical" and "system-cluster-critical" + are two special keywords which indicate the highest + priorities with the former being the highest priority. + Any other name must be defined by creating a PriorityClass + object with that name. If not specified, the pod priority + will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. Controllers may + set default ReadinessProbe if no readyness probe is + provided. To ignore defaulting, set the value to empty + ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -8862,90 +15068,189 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar + container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is + omitted for a container, it defaults to Limits + if that is explicitly specified, otherwise to + an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched + by specified scheduler. If not specified, the pod + will be dispatched by default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security + attributes and common container settings. Optional: + Defaults to empty. See type description for default + values of each field.' properties: fsGroup: + description: "A special supplemental group that + applies to all containers in a pod. Some volume + types allow the Kubelet to change the ownership + of that volume to be owned by the pod: \n 1. The + owning GID will be the FSGroup 2. The setgid bit + is set (new files created in the volume will be + owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not + modify the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in SecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence + for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will + validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start + the container if it does. If unset or false, no + such validation will be performed. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified + in image metadata if unspecified. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence for that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + all containers. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence + for that container. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first + process run in each container, in addition to + the container's primary GID. If unspecified, + no groups will be added to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls + used for the pod. Pods with unsupported sysctls + (by the container runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter + to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -8953,161 +15258,372 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options + within a container's SecurityContext will be used. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the + GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run + the entrypoint of the container process. Defaults + to the user specified in image metadata if + unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and + it is only honored by servers that enable + the WindowsRunAsUserName feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the + ServiceAccount to use to run this pod. More info: + https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to + tolerates any taint that matches the triple + using the matching operator . properties: effect: + description: Effect indicates the taint effect + to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, + PreferNoSchedule and NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; + this combination means to match all values and + all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and + Equal. Defaults to Equal. Exists is equivalent + to wildcard for value, so that a pod can tolerate + all taints of a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the + period of time the toleration (which must be + of effect NoExecute, otherwise this field is + ignored) tolerates the taint. By default, it + is not set, which means tolerate the taint forever + (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. type: string type: object type: array type: object type: object prefix: + description: Prefix is the name prefix of this node. type: string replicas: + description: Replicas represents number of replicas of this + specific node. If current node has replicaset enabled, then + replicas is the amount of replicaset nodes. format: int32 type: integer strategy: + description: The deployment strategy to use to replace existing + pods with new ones. properties: rollingUpdate: + description: 'Rolling update config params. Present only + if DeploymentStrategyType = RollingUpdate. --- TODO: Update + this to follow our convention for oneOf, whatever we decide + it to be.' properties: maxSurge: anyOf: - type: integer - type: string + description: 'The maximum number of pods that can be + scheduled above the desired number of pods. Value + can be an absolute number (ex: 5) or a percentage + of desired pods (ex: 10%). This can not be 0 if MaxUnavailable + is 0. Absolute number is calculated from percentage + by rounding up. Defaults to 25%. Example: when this + is set to 30%, the new ReplicaSet can be scaled up + immediately when the rolling update starts, such that + the total number of old and new pods do not exceed + 130% of desired pods. Once old pods have been killed, + new ReplicaSet can be scaled up further, ensuring + that total number of pods running at any time during + the update is at most 130% of desired pods.' x-kubernetes-int-or-string: true maxUnavailable: anyOf: - type: integer - type: string + description: 'The maximum number of pods that can be + unavailable during the update. Value can be an absolute + number (ex: 5) or a percentage of desired pods (ex: + 10%). Absolute number is calculated from percentage + by rounding down. This can not be 0 if MaxSurge is + 0. Defaults to 25%. Example: when this is set to 30%, + the old ReplicaSet can be scaled down to 70% of desired + pods immediately when the rolling update starts. Once + new pods are ready, old ReplicaSet can be scaled down + further, followed by scaling up the new ReplicaSet, + ensuring that the total number of pods available at + all times during the update is at least 70% of desired + pods.' x-kubernetes-int-or-string: true type: object type: + description: Type of deployment. Can be "Recreate" or "RollingUpdate". + Default is RollingUpdate. type: string type: object required: - replicas type: object shard: + description: 'Shard component of mongodb. More info: https://docs.mongodb.com/manual/core/sharded-cluster-shards/' properties: configSource: + description: ConfigSource is an optional field to provide custom + configuration file for database (i.e mongod.cnf). If specified, + this file will be used as configuration file otherwise default + configuration file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -9115,59 +15631,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -9178,132 +15762,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -9311,65 +16040,142 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -9377,36 +16183,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -9417,16 +16271,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -9434,18 +16318,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -9456,74 +16367,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -9531,19 +16516,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -9551,75 +16567,182 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object podTemplate: + description: PodTemplate is an optional configuration for pods + used to expose database properties: controller: + description: 'Workload controller''s metadata. More info: + https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value + map stored with a resource that may be set by external + tools to store and retrieve arbitrary metadata. They + are not queryable and should be preserved when modifying + objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the + pod. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling + rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most + preferred. items: + description: An empty preferred scheduling + term matches all objects with implicit weight + 0 (i.e. it's a no-op). A null preferred + scheduling term matches no objects (i.e. + is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -9629,13 +16752,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -9646,6 +16794,9 @@ spec: type: array type: object weight: + description: Weight associated with matching + the corresponding nodeSelectorTerm, + in the range 1-100. format: int32 type: integer required: @@ -9654,18 +16805,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to an update), the + system may or may not try to eventually evict + the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector + terms. The terms are ORed. items: + description: A null or empty node selector + term matches no objects. The requirements + of them are ANDed. The TopologySelectorTerm + type implements a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector + requirements by node's labels. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -9675,13 +16865,38 @@ spec: type: object type: array matchFields: + description: A list of node selector + requirements by node's fields. items: + description: A node selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: The label key that + the selector applies to. type: string operator: + description: Represents a key's + relationship to a set of values. + Valid operators are In, NotIn, + Exists, DoesNotExist. Gt, + and Lt. type: string values: + description: An array of string + values. If the operator is + In or NotIn, the values array + must be non-empty. If the + operator is Exists or DoesNotExist, + the values array must be empty. + If the operator is Gt or Lt, + the values array must have + a single element, which will + be interpreted as an integer. + This array is replaced during + a strategic merge patch. items: type: string type: array @@ -9697,22 +16912,74 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules + (e.g. co-locate this pod in the same node, zone, + etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the affinity expressions + specified by this field, but it may choose + a node that violates one or more of the expressions. + The node that is most preferred is the one + with the greatest sum of weights, i.e. for + each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum + by iterating through the elements of this + field and adding "weight" to the sum if the + node has pods which matches the corresponding + podAffinityTerm; the node(s) with the highest + sum are the most preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -9724,18 +16991,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -9744,18 +17038,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, + the pod will not be scheduled onto the node. + If the affinity requirements specified by + this field cease to be met at some point during + pod execution (e.g. due to a pod label update), + the system may or may not try to eventually + evict the pod from its node. When there are + multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. + all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -9767,13 +17107,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -9781,22 +17142,75 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling + rules (e.g. avoid putting this pod in the same + node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule + pods to nodes that satisfy the anti-affinity + expressions specified by this field, but it + may choose a node that violates one or more + of the expressions. The node that is most + preferred is the one with the greatest sum + of weights, i.e. for each node that meets + all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity + expressions, etc.), compute a sum by iterating + through the elements of this field and adding + "weight" to the sum if the node has pods which + matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most + preferred. items: + description: The weights of all of the matched + WeightedPodAffinityTerm fields are added + per-node to find the most preferred node(s) properties: podAffinityTerm: + description: Required. A pod affinity + term, associated with the corresponding + weight. properties: labelSelector: + description: A label query over a + set of resources, in this case pods. properties: matchExpressions: + description: matchExpressions + is a list of label selector + requirements. The requirements + are ANDed. items: + description: A label selector + requirement is a selector + that contains values, a key, + and an operator that relates + the key and values. properties: key: + description: key is the + label key that the selector + applies to. type: string operator: + description: operator represents + a key's relationship to + a set of values. Valid + operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is an + array of string values. + If the operator is In + or NotIn, the values array + must be non-empty. If + the operator is Exists + or DoesNotExist, the values + array must be empty. This + array is replaced during + a strategic merge patch. items: type: string type: array @@ -9808,18 +17222,45 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a + map of {key,value} pairs. A + single {key,value} in the matchLabels + map is equivalent to an element + of matchExpressions, whose key + field is "key", the operator + is "In", and the values array + contains only "value". The requirements + are ANDed. type: object type: object namespaces: + description: namespaces specifies + which namespaces the labelSelector + applies to (matches against); null + or empty list means "this pod's + namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where + co-located is defined as running + on a node whose value of the label + with key topologyKey matches that + of any node on which any of the + selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching + the corresponding podAffinityTerm, in + the range 1-100. format: int32 type: integer required: @@ -9828,18 +17269,64 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements + specified by this field are not met at scheduling + time, the pod will not be scheduled onto the + node. If the anti-affinity requirements specified + by this field cease to be met at some point + during pod execution (e.g. due to a pod label + update), the system may or may not try to + eventually evict the pod from its node. When + there are multiple elements, the lists of + nodes corresponding to each podAffinityTerm + are intersected, i.e. all terms must be satisfied. items: + description: Defines a set of pods (namely + those matching the labelSelector relative + to the given namespace(s)) that this pod + should be co-located (affinity) or not co-located + (anti-affinity) with, where co-located is + defined as running on a node whose value + of the label with key matches + that of any node on which a pod of the set + of pods is running properties: labelSelector: + description: A label query over a set + of resources, in this case pods. properties: matchExpressions: + description: matchExpressions is a + list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label + key that the selector applies + to. type: string operator: + description: operator represents + a key's relationship to a + set of values. Valid operators + are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values + array must be non-empty. If + the operator is Exists or + DoesNotExist, the values array + must be empty. This array + is replaced during a strategic + merge patch. items: type: string type: array @@ -9851,13 +17338,34 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map + of {key,value} pairs. A single {key,value} + in the matchLabels map is equivalent + to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are + ANDed. type: object type: object namespaces: + description: namespaces specifies which + namespaces the labelSelector applies + to (matches against); null or empty + list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose + value of the label with key topologyKey + matches that of any node on which any + of the selected pods is running. Empty + topologyKey is not allowed. type: string required: - topologyKey @@ -9866,56 +17374,122 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the + reference in the input string will be unchanged. The + $(VAR_NAME) syntax can be escaped with a double $$, + ie: $$(VAR_NAME). Escaped references will never be + expanded, regardless of whether the variable exists + or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in + the container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: + supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, spec.nodeName, + spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, defaults + to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, + requests.cpu, requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in + the pod's namespace properties: key: + description: The key of the secret to + select from. Must be a valid secret + key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -9926,70 +17500,184 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of + references to secrets in the same namespace to use + for pulling any of the images used by this PodSpec. + If specified, these secrets will be passed to individual + puller implementations for them to use. items: + description: LocalObjectReference contains enough + information to let you locate the referenced object + inside the same namespace. properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging + to the pod. Init containers are executed in order + prior to containers being started. If any init container + fails, the pod is considered to have failed and is + handled according to its restartPolicy. The name for + an init container or normal container must be unique + among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. + The resourceRequirements of an init container are + taken into account during scheduling by finding the + highest request/limit for each resource type, and + then using the max of of that value or the sum of + the normal containers. Limits are applied to init + containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you + want to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The + docker image''s CMD is used if this is not provided. + Variable references $(VAR_NAME) are expanded + using the container''s environment. If a variable + cannot be resolved, the reference in the input + string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot + be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within + a shell. The docker image''s ENTRYPOINT is used + if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, + the reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to + set in the container. Cannot be updated. items: + description: EnvVar represents an environment + variable present in a Container. properties: name: + description: Name of the environment variable. + Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) + are expanded using the previous defined + environment variables in the container + and any service environment variables. + If a variable cannot be resolved, the + reference in the input string will be + unchanged. The $(VAR_NAME) syntax can + be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, + regardless of whether the variable exists + or not. Defaults to "".' type: string valueFrom: + description: Source for the environment + variable's value. Cannot be used if value + is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + ConfigMap or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the + pod: supports metadata.name, metadata.namespace, + metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret + in the pod's namespace properties: key: + description: The key of the secret + to select from. Must be a valid + secret key. type: string name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. + apiVersion, kind, uid?' type: string optional: + description: Specify whether the + Secret or its key must be defined type: boolean required: - key @@ -10000,51 +17688,127 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment + variables in the container. The keys defined + within a source must be a C_IDENTIFIER. All + invalid keys will be reported as an event when + the container is starting. When a key exists + in multiple sources, the value associated with + the last source will take precedence. Values + defined by an Env with a duplicate key will + take precedence. Cannot be updated. items: + description: EnvFromSource represents the source + of a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + must be defined type: boolean type: object prefix: + description: An optional identifier to prepend + to each key in the ConfigMap. Must be + a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + must be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level + config management to default or override container + images in workload controllers like Deployments + and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, + Never, IfNotPresent. Defaults to Always if :latest + tag is specified, or IfNotPresent otherwise. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system + should take in response to container lifecycle + events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately + after a container is created. If the handler + fails, the container is terminated and restarted + according to its restart policy. Other management + of the container blocks until the hook completes. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -10052,49 +17816,114 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately + before a container is terminated due to + an API request or management event such + as liveness/startup probe failure, preemption, + resource contention, etc. The handler is + not called if the container crashes or exits. + The reason for termination is passed to + the handler. The Pod''s termination grace + period countdown begins before the PreStop + hooked is executed. Regardless of the outcome + of the handler, the container will eventually + terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until + the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies + the action to take. properties: command: + description: Command is the command + line to execute inside the container, + the working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it + is not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to + explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http + request to perform. properties: host: + description: Host name to connect + to, defaults to the pod IP. You + probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set + in the request. HTTP allows repeated + headers. items: + description: HTTPHeader describes + a custom header to be used in + HTTP probes properties: name: + description: The header field + name type: string value: + description: The header field + value type: string required: - name @@ -10102,25 +17931,44 @@ spec: type: object type: array path: + description: Path to access on the + HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not + yet supported TODO: implement a realistic + TCP lifecycle hook' properties: host: + description: 'Optional: Host name + to connect to, defaults to the pod + IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the + port to access on the container. + Number must be in the range 1 to + 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -10128,27 +17976,59 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10156,85 +18036,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as + a DNS_LABEL. Each container in a pod must have + a unique name (DNS_LABEL). Cannot be updated. type: string ports: + description: List of ports to expose from the + container. Exposing a port here gives the system + additional information about the network connections + a container uses, but is primarily informational. + Not specifying a port here DOES NOT prevent + that port from being exposed. Any port which + is listening on the default "0.0.0.0" address + inside a container will be accessible from the + network. Cannot be updated. items: + description: ContainerPort represents a network + port in a single container. properties: containerPort: + description: Number of port to expose on + the pod's IP address. This must be a valid + port number, 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external + port to. type: string hostPort: + description: Number of port to expose on + the host. If specified, this must be a + valid port number, 0 < x < 65536. If HostNetwork + is specified, this must match ContainerPort. + Most containers do not need this. format: int32 type: integer name: + description: If specified, this must be + an IANA_SVC_NAME and unique within the + pod. Each named port in a pod must have + a unique name. Name for the port that + can be referred to by services. type: string protocol: + description: Protocol for port. Must be + UDP, TCP, or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service + readiness. Container will be removed from service + endpoints if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10242,125 +18218,308 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this + container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum + amount of compute resources allowed. More + info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum + amount of compute resources required. If + Requests is omitted for a container, it + defaults to Limits if that is explicitly + specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should + run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls + whether a process can gain more privileges + than its parent process. This bool directly + controls if the no_new_privs flag will be + set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) + run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop + when running containers. Defaults to the + default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX + capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. + Processes in privileged containers are essentially + equivalent to root on the host. Defaults + to false. type: boolean procMount: + description: procMount denotes the type of + proc mount to use for the containers. The + default is DefaultProcMount which uses the + container runtime defaults for readonly + paths and masked paths. This requires the + ProcMountType feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a + read-only root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint + of the container process. Uses runtime default + if unset. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container + must run as a non-root user. If true, the + Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 + (root) and fail to start the container if + it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. type: boolean runAsUser: + description: The UID to run the entrypoint + of the container process. Defaults to user + specified in image metadata if unspecified. + May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied + to the container. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label + that applies to the container. type: string role: + description: Role is a SELinux role label + that applies to the container. type: string type: + description: Type is a SELinux type label + that applies to the container. type: string user: + description: User is a SELinux user label + that applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings + applied to all containers. If unspecified, + the options from the PodSecurityContext + will be used. If set in both SecurityContext + and PodSecurityContext, the value specified + in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where + the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName + field. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is + the name of the GMSA credential spec + to use. This field is alpha-level and + is only honored by servers that enable + the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to + run the entrypoint of the container + process. Defaults to the user specified + in image metadata if unspecified. May + also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext + takes precedence. This field is alpha-level + and it is only honored by servers that + enable the WindowsRunAsUserName feature + flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the + Pod has successfully initialized. If specified, + no other probes are executed until this completes + successfully. If this probe fails, the Pod will + be restarted, just as if the livenessProbe failed. + This can be used to provide different probe + parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data + or warm a cache, than during steady-state operation. + This cannot be updated. This is an alpha feature + enabled by the StartupProbe feature flag. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the + action to take. properties: command: + description: Command is the command line + to execute inside the container, the + working directory for the command is + root ('/') in the container's filesystem. + The command is simply exec'd, it is + not run inside a shell, so traditional + shell instructions ('|', etc) won't + work. To use a shell, you need to explicitly + call out to that shell. Exit status + of 0 is treated as live/healthy and + non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures + for the probe to be considered failed after + having succeeded. Defaults to 3. Minimum + value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, + defaults to the pod IP. You probably + want to set "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in + the request. HTTP allows repeated headers. items: + description: HTTPHeader describes a + custom header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10368,58 +18527,140 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the + container has started before liveness probes + are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform + the probe. Default to 10 seconds. Minimum + value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes + for the probe to be considered successful + after having failed. Defaults to 1. Must + be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet + supported TODO: implement a realistic TCP + lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which + the probe times out. Defaults to 1 second. + Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate + a buffer for stdin in the container runtime. + If this is not set, reads from stdin in the + container will always result in EOF. Default + is false. type: boolean stdinOnce: + description: Whether the container runtime should + close the stdin channel after it has been opened + by a single attach. When stdin is true the stdin + stream will remain open across multiple attach + sessions. If stdinOnce is set to true, stdin + is opened on container start, is empty until + the first client attaches to stdin, and then + remains open and accepts data until the client + disconnects, at which time stdin is closed and + remains closed until the container is restarted. + If this flag is false, a container processes + that reads from stdin will never receive an + EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file + to which the container''s termination message + will be written is mounted into the container''s + filesystem. Message written is intended to be + brief final status, such as an assertion failure + message. Will be truncated by the node if greater + than 4096 bytes. The total message length across + all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message + should be populated. File will use the contents + of terminationMessagePath to populate the container + status message on both success and failure. + FallbackToLogsOnError will use the last chunk + of container log output if the termination message + file is empty and the container exited with + an error. The log output is limited to 2048 + bytes or 80 lines, whichever is smaller. Defaults + to File. Cannot be updated. type: string tty: + description: Whether this container should allocate + a TTY for itself, also requires 'stdin' to be + true. Default is false. type: boolean volumeDevices: + description: volumeDevices is the list of block + devices to be used by the container. This is + a beta feature. items: + description: volumeDevice describes a mapping + of a raw block device within a container. properties: devicePath: + description: devicePath is the path inside + of the container that the device will + be mapped to. type: string name: + description: name must match the name of + a persistentVolumeClaim in the pod type: string required: - devicePath @@ -10427,19 +18668,47 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting + of a Volume within a container. properties: mountPath: + description: Path within the container at + which the volume should be mounted. Must + not contain ':'. type: string mountPropagation: + description: mountPropagation determines + how mounts are propagated from the host + to container and the other way around. + When not set, MountPropagationNone is + used. This field is beta in 1.10. type: string name: + description: This must match the Name of + a Volume. type: string readOnly: + description: Mounted read-only if true, + read-write otherwise (false or unspecified). + Defaults to false. type: boolean subPath: + description: Path within the volume from + which the container's volume should be + mounted. Defaults to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume + from which the container's volume should + be mounted. Behaves similarly to SubPath + but environment variable references $(VAR_NAME) + are expanded using the container's environment. + Defaults to "" (volume's root). SubPathExpr + and SubPath are mutually exclusive. This + field is beta in 1.15. type: string required: - mountPath @@ -10447,32 +18716,69 @@ spec: type: object type: array workingDir: + description: Container's working directory. If + not specified, the container runtime's default + will be used, which might be configured in the + container image. Cannot be updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, + the container is terminated and restarted according + to its restart policy. Other management of the + container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10480,49 +18786,105 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. + The handler is not called if the container crashes + or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period + countdown begins before the PreStop hooked is + executed. Regardless of the outcome of the handler, + the container will eventually terminate within + the Pod''s termination grace period. Other management + of the container blocks until the hook completes + or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line + to execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside + a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, + you need to explicitly call out to that + shell. Exit status of 0 is treated as + live/healthy and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10530,25 +18892,43 @@ spec: type: object type: array path: + description: Path to access on the HTTP + server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action + involving a TCP port. TCP hooks not yet supported + TODO: implement a realistic TCP lifecycle + hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port + to access on the container. Number must + be in the range 1 to 65535. Name must + be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -10556,27 +18936,58 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. + Container will be restarted if the probe fails. Controllers + may set default LivenessProbe if no liveness probe + is provided. To ignore defaulting, set the value to + empty LivenessProbe "{}". Cannot be updated. More + info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10584,73 +18995,148 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must + be true for the pod to fit on a node. Selector which + must match a node''s labels for the pod to be scheduled + on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components + use this field to find the priority of the pod. When + Priority Admission Controller is enabled, it prevents + users from setting this field. The admission controller + populates this field from PriorityClassName. The higher + the value, the higher the priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. + "system-node-critical" and "system-cluster-critical" + are two special keywords which indicate the highest + priorities with the former being the highest priority. + Any other name must be defined by creating a PriorityClass + object with that name. If not specified, the pod priority + will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. Controllers may + set default ReadinessProbe if no readyness probe is + provided. To ignore defaulting, set the value to empty + ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') in + the container's filesystem. The command is + simply exec'd, it is not run inside a shell, + so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is + treated as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -10658,90 +19144,189 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to + the host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is + 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having + failed. Defaults to 1. Must be 1 for liveness + and startup. Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the + probe times out. Defaults to 1 second. Minimum + value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar + container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is + omitted for a container, it defaults to Limits + if that is explicitly specified, otherwise to + an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched + by specified scheduler. If not specified, the pod + will be dispatched by default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security + attributes and common container settings. Optional: + Defaults to empty. See type description for default + values of each field.' properties: fsGroup: + description: "A special supplemental group that + applies to all containers in a pod. Some volume + types allow the Kubelet to change the ownership + of that volume to be owned by the pod: \n 1. The + owning GID will be the FSGroup 2. The setgid bit + is set (new files created in the volume will be + owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not + modify the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in SecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence + for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will + validate the image at runtime to ensure that it + does not run as UID 0 (root) and fail to start + the container if it does. If unset or false, no + such validation will be performed. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified + in image metadata if unspecified. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in + SecurityContext takes precedence for that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + all containers. If unspecified, the container + runtime will allocate a random SELinux context + for each container. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence + for that container. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first + process run in each container, in addition to + the container's primary GID. If unspecified, + no groups will be added to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls + used for the pod. Pods with unsupported sysctls + (by the container runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter + to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -10749,82 +19334,190 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options + within a container's SecurityContext will be used. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the + GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run + the entrypoint of the container process. Defaults + to the user specified in image metadata if + unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and + it is only honored by servers that enable + the WindowsRunAsUserName feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the + ServiceAccount to use to run this pod. More info: + https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to + tolerates any taint that matches the triple + using the matching operator . properties: effect: + description: Effect indicates the taint effect + to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, + PreferNoSchedule and NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; + this combination means to match all values and + all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and + Equal. Defaults to Equal. Exists is equivalent + to wildcard for value, so that a pod can tolerate + all taints of a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the + period of time the toleration (which must be + of effect NoExecute, otherwise this field is + ignored) tolerates the taint. By default, it + is not set, which means tolerate the taint forever + (do not evict). Zero and negative values will + be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration + matches to. If the operator is Exists, the value + should be empty, otherwise just a regular string. type: string type: object type: array type: object type: object prefix: + description: Prefix is the name prefix of this node. type: string replicas: + description: Replicas represents number of replicas of this + specific node. If current node has replicaset enabled, then + replicas is the amount of replicaset nodes. format: int32 type: integer shards: + description: 'Shards represents number of shards for shard type + of node More info: https://docs.mongodb.com/manual/core/sharded-cluster-shards/' format: int32 type: integer storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume at + the same time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the + provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, the + specified Kind must be in the core API group. For + any other third-party types, APIGroup is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is an array of string values. + If the operator is In or NotIn, the values array + must be non-empty. If the operator is Exists + or DoesNotExist, the values array must be empty. + This array is replaced during a strategic merge + patch. items: type: string type: array @@ -10836,13 +19529,25 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not + included in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string type: object required: @@ -10855,46 +19560,90 @@ spec: - shard type: object sslMode: + description: 'SSLMode for both standalone and clusters. (default, disabled.) + See more options: https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-sslmode' type: string storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -10906,31 +19655,55 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of MongoDB to be deployed. type: string required: - version @@ -10938,6 +19711,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_mysqls.yaml b/api/crds/kubedb.com_mysqls.yaml index 3a3b963441..855e0e4d2d 100644 --- a/api/crds/kubedb.com_mysqls.yaml +++ b/api/crds/kubedb.com_mysqls.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -49,1997 +55,210 @@ spec: type: object spec: properties: - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e custom-mysql.cnf). If specified, this file + will be used as configuration file otherwise default configuration + file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2047,59 +266,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2110,132 +390,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -2243,65 +655,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2309,36 +787,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2349,16 +866,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2366,18 +907,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -2388,74 +951,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -2463,19 +1091,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2483,54 +1140,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -2538,13 +1255,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -2583,101 +1306,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -2685,59 +1520,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2748,132 +1651,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -2883,65 +1931,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -2949,36 +2074,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -2989,16 +2162,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -3006,18 +2209,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -3028,74 +2258,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -3103,19 +2407,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -3123,37 +2458,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -3162,12 +2538,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -3199,101 +2585,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3301,59 +2790,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -3364,132 +2918,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -3497,65 +3189,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3563,36 +3326,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -3603,16 +3411,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -3620,18 +3455,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -3642,74 +3503,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -3719,19 +3649,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3739,115 +3698,199 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -3862,56 +3905,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -3922,181 +4027,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4106,13 +4458,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4123,6 +4497,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -4131,18 +4508,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4152,13 +4564,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4174,22 +4608,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4201,18 +4678,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4221,18 +4719,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4244,13 +4781,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4258,22 +4812,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4285,18 +4882,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4305,18 +4923,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4328,13 +4985,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4343,56 +5017,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -4403,70 +5137,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -4477,51 +5309,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4529,49 +5427,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4579,25 +5530,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4605,27 +5572,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4633,85 +5628,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4719,125 +5797,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4845,58 +6079,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -4904,19 +6206,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -4924,32 +6251,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -4957,49 +6316,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5007,25 +6413,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5033,27 +6453,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5061,73 +6509,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5135,90 +6653,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -5226,75 +6835,195 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: 'Number of instances to deploy for a MySQL database. In + case of MySQL group replication, max allowed value is 9 (default 3). + (see ref: https://dev.mysql.com/doc/refman/5.7/en/group-replication-frequently-asked-questions.html)' format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -5302,57 +7031,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -5364,46 +7156,85 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string topology: + description: MySQL cluster topology properties: group: + description: Group replication info for MySQL properties: baseServerID: + description: "On a replication master and each replication slave, + the --server-id option must be specified to establish a unique + replication ID in the range from 1 to 2^32 − 1. “Unique”, + means that each ID must be different from every other ID in + use by any other replication master or slave. ref: https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_server_id + \n So, BaseServerID is needed to calculate a unique server_id + for each member." format: int64 type: integer mode: + description: 'TODO: "Multi-Primary" needs to be implemented + Group Replication can be deployed in either "Single-Primary" + or "Multi-Primary" mode' type: string name: + description: 'Group name is a version 4 UUID ref: https://dev.mysql.com/doc/refman/5.7/en/group-replication-options.html#sysvar_group_replication_group_name' type: string type: object mode: + description: If set to - "GroupReplication", GroupSpec is required + and MySQL servers will start a replication group type: string type: object updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of MySQL to be deployed. type: string required: - version @@ -5411,6 +7242,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_perconaxtradbs.yaml b/api/crds/kubedb.com_perconaxtradbs.yaml index 16baf121bf..254d2024f2 100644 --- a/api/crds/kubedb.com_perconaxtradbs.yaml +++ b/api/crds/kubedb.com_perconaxtradbs.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,103 +56,209 @@ spec: spec: properties: configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e custom-mysql.cnf). If specified, this file + will be used as configuration file otherwise default configuration + file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -154,59 +266,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -217,132 +390,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -350,65 +655,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -416,36 +787,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -456,16 +866,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -473,18 +907,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -495,74 +951,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -570,19 +1091,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -590,54 +1140,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -645,13 +1255,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -690,101 +1306,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -792,59 +1520,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -855,132 +1651,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -990,65 +1931,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -1056,36 +2074,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -1096,16 +2162,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -1113,18 +2209,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -1135,74 +2258,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -1210,19 +2407,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -1230,37 +2458,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -1269,12 +2538,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -1306,101 +2585,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -1408,59 +2790,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -1471,132 +2918,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -1604,65 +3189,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -1670,36 +3326,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -1710,16 +3411,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -1727,18 +3455,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -1749,74 +3503,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -1826,19 +3649,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -1846,115 +3698,199 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -1969,56 +3905,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -2029,181 +4027,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2213,13 +4458,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2230,6 +4497,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -2238,18 +4508,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2259,13 +4564,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -2281,22 +4608,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2308,18 +4678,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -2328,18 +4719,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2351,13 +4781,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -2365,22 +4812,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2392,18 +4882,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -2412,18 +4923,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -2435,13 +4985,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -2450,56 +5017,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -2510,70 +5137,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -2584,51 +5309,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2636,49 +5427,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2686,25 +5530,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -2712,27 +5572,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2740,85 +5628,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2826,125 +5797,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -2952,58 +6079,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -3011,19 +6206,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -3031,32 +6251,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3064,49 +6316,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3114,25 +6413,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -3140,27 +6453,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3168,73 +6509,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -3242,90 +6653,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -3333,75 +6835,195 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: "Number of instances to deploy for PerconaXtraDB. Replicas: + 1\t\t-->\t\tDeploy standalone PerconaXtraDB Replicas: > 1\t-->\t\tDeploy + PerconaXtraDB cluster with specified number of masters" format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -3409,57 +7031,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -3471,31 +7156,55 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of PerconaXtraDB to be deployed. type: string required: - version @@ -3503,6 +7212,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_pgbouncers.yaml b/api/crds/kubedb.com_pgbouncers.yaml index 71412b4b64..97b9894afb 100644 --- a/api/crds/kubedb.com_pgbouncers.yaml +++ b/api/crds/kubedb.com_pgbouncers.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,61 +56,107 @@ spec: spec: properties: connectionPool: + description: ConnectionPoolConfig defines Connection pool configuration. properties: adminUsers: + description: AdminUsers specifies an array of users who can act + as PgBouncer administrators. items: type: string type: array authType: + description: 'AuthType specifies how to authenticate users. Default: + md5 (md5+plain text).' type: string authUser: + description: 'AuthUser looks up any user not specified in auth_file + from pg_shadow. Default: not set.' type: string defaultPoolSize: + description: 'DefaultPoolSize specifies how many server connections + to allow per user/database pair. Default: 20.' format: int64 type: integer ignoreStartupParameters: + description: IgnoreStartupParameters specifies comma-separated startup + parameters that pgbouncer knows are handled by admin and it can + ignore them. type: string maxClientConnections: + description: 'MaxClientConnections is the maximum number of allowed + client connections. Default: 100.' format: int64 type: integer maxDBConnections: + description: 'MaxDBConnections is the maximum number of connections + allowed per-database. Default: unlimited.' format: int64 type: integer maxUserConnections: + description: 'MaxUserConnections is the maximum number of users + allowed per-database. Default: unlimited.' format: int64 type: integer minPoolSize: + description: 'MinPoolSize is used to add more server connections + to pool if below this number. Default: 0 (disabled).' format: int64 type: integer poolMode: + description: 'PoolMode is the pooling mechanism type. Default: session.' type: string port: + description: 'Port is the port number on which PgBouncer listens + to clients. Default: 5432.' format: int32 type: integer reservePoolSize: + description: 'ReservePoolSize specifies how many additional connections + to allow to a pool. 0 disables. Default: 0 (disabled).' format: int64 type: integer reservePoolTimeoutSeconds: + description: 'ReservePoolTimeoutSeconds is the number of seconds + in which if a client has not been serviced, pgbouncer enables + use of additional connections from reserve pool. 0 disables. Default: + 5.0.' format: int64 type: integer statsPeriodSeconds: + description: StatsPeriodSeconds sets how often the averages shown + in various SHOW commands are updated and how often aggregated + statistics are written to the log. format: int64 type: integer type: object databases: + description: Databases to proxy by connection pooling. items: properties: alias: + description: Alias to uniquely identify a target database running + inside a specific Postgres instance. type: string databaseName: + description: DatabaseName is the name of the target database inside + a Postgres instance. type: string databaseRef: + description: DatabaseRef specifies the database appbinding reference + in any namespace. properties: name: + description: '`name` is the name of the app. Required' type: string namespace: + description: '`namespace` is the namespace of the app. Required' type: string parameters: + description: "Parameters is a set of the parameters to be + used to override default parameters. The inline YAML/JSON + payload to be translated into equivalent JSON object. \n + The Parameters field is NOT secret or secured in any way + and should NEVER be used to hold sensitive information." type: object x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true @@ -113,8 +165,14 @@ spec: - namespace type: object databaseSecretRef: + description: DatabaseSecretRef points to a secret that contains + the credentials (username and password) of an existing user + of this database. It is used to bind a single user to this specific + database connection. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: @@ -124,60 +182,117 @@ spec: type: object type: array monitor: + description: Monitor is used monitor database instance. properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -192,56 +307,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -252,181 +429,427 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods. properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -436,13 +859,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -453,6 +898,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -461,18 +909,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -482,13 +965,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -504,22 +1009,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -531,18 +1079,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -551,18 +1120,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -574,13 +1182,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -588,22 +1213,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -615,18 +1283,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -635,18 +1324,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -658,13 +1386,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -673,56 +1418,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -733,70 +1538,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -807,51 +1710,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -859,49 +1828,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -909,25 +1931,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -935,27 +1973,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -963,85 +2029,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1049,125 +2198,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1175,58 +2480,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -1234,19 +2607,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -1254,32 +2652,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1287,49 +2717,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1337,25 +2814,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1363,27 +2854,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1391,73 +2910,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1465,90 +3054,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -1556,75 +3236,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a PgBouncer instance. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database. properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -1632,50 +3430,92 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object tls: + description: TLS contains tls configurations for client and server. properties: certificate: + description: 'Certificate provides server certificate options used + by PgBouncer pods. These options are passed to a cert-manager + Certificate object. xref: https://github.com/jetstack/cert-manager/blob/v0.12.0/pkg/apis/certmanager/v1alpha2/types_certificate.go#L71-L146' properties: dnsNames: + description: DNSNames is a list of subject alt names to be used + on the Certificate. items: type: string type: array duration: + description: Certificate default Duration type: string ipAddresses: + description: IPAddresses is a list of IP addresses to be used + on the Certificate items: type: string type: array organization: + description: Organization is the organization to be used on + the Certificate items: type: string type: array renewBefore: + description: Certificate renew before expiration duration type: string uriSANs: + description: URISANs is a list of URI Subject Alternative Names + to be set on this Certificate. items: type: string type: array type: object issuerRef: + description: IssuerRef is a reference to a Certificate Issuer. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind @@ -1685,11 +3525,16 @@ spec: - issuerRef type: object userListSecretRef: + description: UserListSecretRef is a secret with a list of PgBouncer + user and passwords. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object version: + description: Version of PgBouncer to be deployed. type: string required: - version @@ -1697,11 +3542,16 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: + description: Phase specifies the current state of PgBouncer server. type: string reason: + description: Reason is used to explain phases of interest of the server. type: string type: object type: object diff --git a/api/crds/kubedb.com_postgreses.yaml b/api/crds/kubedb.com_postgreses.yaml index 9d09efa9f1..655f553ab1 100644 --- a/api/crds/kubedb.com_postgreses.yaml +++ b/api/crds/kubedb.com_postgreses.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,6 +56,7 @@ spec: spec: properties: archiver: + description: Archive for wal files properties: storage: properties: @@ -86,101 +93,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -188,59 +307,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -251,132 +438,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -386,65 +718,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -452,36 +861,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -492,16 +949,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -509,18 +996,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -531,74 +1045,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -606,19 +1194,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -626,37 +1245,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -689,1997 +1349,210 @@ spec: type: object type: object type: object - backupSchedule: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - cronExpression: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - type: object configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e postgresql.conf). If specified, this file will + be used as configuration file otherwise default configuration file + will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -2687,59 +1560,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2750,132 +1684,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -2883,65 +1949,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -2949,36 +2081,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -2989,16 +2160,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -3006,18 +2201,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -3028,74 +2245,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -3103,19 +2385,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -3123,54 +2434,114 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object databaseSecret: + description: Database authentication secret properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -3178,13 +2549,19 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean init: + description: Init is used to initialize database properties: postgresWAL: properties: @@ -3223,101 +2600,213 @@ spec: local: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk + resource that is attached to a kubelet''s host machine + and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the + default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount + on the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read + Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string kind: + description: 'Expected values Shared: multiple blob + disks per storage account Dedicated: single blob + disk per storage account Managed: azure managed data + disk (only in managed availability set). defaults + to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service + mount on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure + Storage Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host + that shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of + Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key + ring for User, default is /etc/ceph/user.secret More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the + authentication secret for User, default is empty. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'Optional: User is the rados user name, + default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached + and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume + in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should + populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will be + projected into the volume as a file whose name is + the key and content is the value. If specified, the + listed keys will be projected into the specified paths, + and unlisted keys will not be present. If a key is + specified which is not present in the ConfigMap, the + volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -3325,59 +2814,127 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys + must be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents + storage that is handled by an external CSI driver (Alpha + feature). properties: driver: + description: Driver is the name of the CSI driver that + handles this volume. Consult with your admin for the + correct name as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed + to the associated CSI driver which will determine + the default filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to + the secret object containing sensitive information + to pass to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the + secret object contains more than one secret, all secret + references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for + the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific + properties that are passed to the CSI driver. Consult + your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the + pod that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must not + be absolute or contain the ''..'' path. Must + be utf-8 encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -3388,132 +2945,277 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory + that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back + this directory. The default is "" which means to use + the node''s default medium. Must be an empty string + (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required + for this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all + containers in a pod. The default is nil which means + that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that + is attached to a kubelet's host machine and then exposed + to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. TODO: how do we prevent errors in the + filesystem from compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs + and lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use + for this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the + secret object containing sensitive information to + pass to the plugin scripts. This may be empty if no + secret object is specified. If the secret object contains + more than one secret, all secrets are passed to the + plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached + to a kubelet's host machine. This depends on the Flocker + control service being running properties: datasetName: + description: Name of the dataset stored as metadata + -> name on the dataset for Flocker should be considered + as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then + exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify + the partition as "1". Similarly, the volume partition + for /dev/sda is "0" (or you can leave the property + empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. + Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an + InitContainer that clones the repo using git, then mount + the EmptyDir into the Pod''s container.' properties: directory: + description: Target directory name. Must not contain + or start with '..'. If '.' is supplied, the volume + directory will be the git repository. Otherwise, + if specified, the volume will contain the git repository + in the subdirectory with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on + the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that + details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More + info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs + volume to be mounted with read-only permissions. Defaults + to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or + directory on the host machine that is directly exposed + to the container. This is generally used for system agents + or other privileged things that are allowed to see the + host machine. Most containers will NOT need this. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host + directory mounts and who can/can not mount host directories + as read/write.' properties: path: + description: 'Path of the directory on the host. If + the path is a symlink, it will follow the link to + the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" + More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that + is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new + iSCSI interface : will + be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI + transport. Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is + either an IP or ip_addr:port if the port is other + than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). type: string required: - iqn @@ -3523,65 +3225,142 @@ spec: mountPath: type: string nfs: + description: 'NFS represents an NFS mount on the host that + shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export + to be mounted with read-only permissions. Defaults + to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of + the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents + a reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host + machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume + attached and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to + mount Must be a filesystem type supported by the host + operating system. Ex. "ext4", "xfs". Implicitly inferred + to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx + volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along + with other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + ConfigMap will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the ConfigMap, the volume setup will + error unless it is marked optional. Paths + must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -3589,36 +3368,84 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI + data to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema + the FieldPath is written in terms + of, defaults to "v1". type: string fieldPath: + description: Path of the field to + select in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the + relative path name of the file to + be created. Must not be absolute or + contain the ''..'' path. Must be utf-8 + encoded. The first item of the relative + path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of + the container: only resources limits + and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env + vars' type: string divisor: + description: Specifies the output + format of the exposed resources, + defaults to "1" type: string resource: + description: 'Required: resource + to select' type: string required: - resource @@ -3629,16 +3456,46 @@ spec: type: array type: object secret: + description: information about the secret data + to project properties: items: + description: If unspecified, each key-value + pair in the Data field of the referenced + Secret will be projected into the volume + as a file whose name is the key and content + is the value. If specified, the listed keys + will be projected into the specified paths, + and unlisted keys will not be present. If + a key is specified which is not present + in the Secret, the volume setup will error + unless it is marked optional. Paths must + be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path + within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to + use on this file, must be a value + between 0 and 0777. If not specified, + the volume defaultMode will be used. + This might be in conflict with other + options that affect the file mode, + like fsGroup, and the result can be + other mode bits set.' format: int32 type: integer path: + description: The relative path of the + file to map the key to. May not be + an absolute path. May not contain + the path element '..'. May not start + with the string '..'. type: string required: - key @@ -3646,18 +3503,45 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must + identify itself with an identifier specified + in the audience of the token, and otherwise + should reject the token. The audience defaults + to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, + the kubelet volume plugin will proactively + rotate the service account token. The kubelet + will start trying to rotate the token if + the token is older than 80 percent of its + time to live or if the token is older than + 24 hours.Defaults to 1 hour and must be + at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to + the mount point of the file to project the + token into. type: string required: - path @@ -3668,74 +3552,148 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is + no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults + to false. type: boolean registry: + description: Registry represents a single or multiple + Quobyte Registry services specified as a string as + host:port pair (multiple entries are separated with + commas) which acts as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume + in the Backend Used with dynamically provisioned Quobyte + volumes, value is set by the plugin type: string user: + description: User to map volume access to Defaults to + serivceaccount user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount + on the host that shares a pod''s lifetime. More info: + https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you + want to mount. Tip: Ensure that the filesystem type + is supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly + setting in VolumeMounts. Defaults to false. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication + secret for RBDUser. If provided overrides keyring. + Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object user: + description: 'The rados user name. Default is admin. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain + for the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for + ScaleIO user and other sensitive information. If this + is not provided, Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication + with Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with + the protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in + the ScaleIO system that is associated with this volume + source. type: string required: - gateway @@ -3743,19 +3701,50 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created + files by default. Must be a value between 0 and 0777. + Defaults to 0644. Directories within the path are + not affected by this setting. This might be in conflict + with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and + content is the value. If specified, the listed keys + will be projected into the specified paths, and unlisted + keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will + error unless it is marked optional. Paths must be + relative and may not contain the '..' path or start + with '..'. items: + description: Maps a string key to a path within a + volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this + file, must be a value between 0 and 0777. If + not specified, the volume defaultMode will be + used. This might be in conflict with other options + that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May not + start with the string '..'. type: string required: - key @@ -3763,37 +3752,78 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys + must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for + obtaining the StorageOS API credentials. If not specified, + default values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of + the StorageOS volume. Volume names are only unique + within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of + the volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows + the Kubernetes name scoping to be mirrored within + StorageOS for tighter integration. Set VolumeName + to any name to override the default behaviour. Set + to "default" if you are not using namespaces within + StorageOS. Namespaces that do not pre-exist within + StorageOS will be created. type: string type: object subPath: type: string vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if + unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) + profile ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) + profile name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath @@ -3802,12 +3832,22 @@ spec: pitr: properties: targetInclusive: + description: TargetInclusive specifies whether to include + ongoing transaction in given target point. type: boolean targetTime: + description: TargetTime specifies the time stamp up to which + recovery will proceed. type: string targetTimeline: + description: TargetTimeline specifies recovering into a + particular timeline. The default is to recover along the + same timeline that was current when the base backup was + taken. type: string targetXID: + description: TargetXID specifies the transaction ID up to + which recovery will proceed. type: string type: object rest: @@ -3839,101 +3879,204 @@ spec: scriptSource: properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly + property in VolumeMounts to "true". If omitted, the default + is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource + in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on + the host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks + per storage account Dedicated: single blob disk per storage + account Managed: azure managed data disk (only in managed + availability set). defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount + on the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph + monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather + than the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring + for User, default is /etc/ceph/user.secret More info: + https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and + mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: + "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" + if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced ConfigMap will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the ConfigMap, the volume setup will error unless it is + marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -3941,59 +4084,124 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", + "ntfs". If not provided, the empty value is passed to + the associated CSI driver which will determine the default + filesystem to apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the + secret object containing sensitive information to pass + to the CSI driver to complete the CSI NodePublishVolume + and NodeUnpublishVolume calls. This field is optional, + and may be empty if no secret is required. If the secret + object contains more than one secret, all secret references + are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the + volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's + documentation for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod + that should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: + only annotations, labels, name and namespace are + supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative path + name of the file to be created. Must not be absolute + or contain the ''..'' path. Must be utf-8 encoded. + The first item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -4004,132 +4212,270 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that + shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this + directory. The default is "" which means to use the node''s + default medium. Must be an empty string (default) or Memory. + More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for + this EmptyDir volume. The size limit is also applicable + for memory medium. The maximum usage on memory medium + EmptyDir would be the minimum value between the SizeLimit + specified here and the sum of memory limits of all containers + in a pod. The default is nil which means that the limit + is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is + attached to a kubelet's host machine and then exposed to the + pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers + (wwids) Either wwids or combination of targetWWNs and + lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource + that is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for + this volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". The default filesystem depends on FlexVolume + script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). + ReadOnly here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the + plugin scripts. This may be empty if no secret object + is specified. If the secret object contains more than + one secret, all secrets are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to + a kubelet's host machine. This depends on the Flocker control + service being running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string partition: + description: 'The partition in the volume that you want + to mount. If omitted, the default is to mount by volume + name. Examples: For volume /dev/sda1, you specify the + partition as "1". Similarly, the volume partition for + /dev/sda is "0" (or you can leave the property empty). + More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used + to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision + a container with a git repo, mount an EmptyDir into an InitContainer + that clones the repo using git, then mount the EmptyDir into + the Pod''s container.' properties: directory: + description: Target directory name. Must not contain or + start with '..'. If '.' is supplied, the volume directory + will be the git repository. Otherwise, if specified, + the volume will contain the git repository in the subdirectory + with the given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to + false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged + things that are allowed to see the host machine. Most containers + will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the + path is a symlink, it will follow the link to the real + path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is + attached to a kubelet''s host machine and then exposed to + the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName + is specified with iscsiInterface simultaneously, new iSCSI + interface : will be created + for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default + (typically TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator + authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an + IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -4137,65 +4483,136 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to + be mounted with read-only permissions. Defaults to false. + More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the + NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a + reference to a PersistentVolumeClaim in the same namespace. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. + Must be a value between 0 and 0777. Directories within + the path are not affected by this setting. This might + be in conflict with other options that affect the file + mode, like fsGroup, and the result can be other mode bits + set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with + other supported volume types properties: configMap: + description: information about the configMap data + to project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced ConfigMap + will be projected into the volume as a file + whose name is the key and content is the value. + If specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the ConfigMap, the volume + setup will error unless it is marked optional. + Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -4203,36 +4620,81 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data + to project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents + information to create the file containing + the pod field properties: fieldRef: + description: 'Required: Selects a field + of the pod: only annotations, labels, + name and namespace are supported.' properties: apiVersion: + description: Version of the schema the + FieldPath is written in terms of, + defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' + path. Must be utf-8 encoded. The first + item of the relative path must not start + with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the + container: only resources limits and requests + (limits.cpu, limits.memory, requests.cpu + and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required + for volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults + to "1" type: string resource: + description: 'Required: resource to + select' type: string required: - resource @@ -4243,16 +4705,43 @@ spec: type: array type: object secret: + description: information about the secret data to + project properties: items: + description: If unspecified, each key-value pair + in the Data field of the referenced Secret will + be projected into the volume as a file whose + name is the key and content is the value. If + specified, the listed keys will be projected + into the specified paths, and unlisted keys + will not be present. If a key is specified which + is not present in the Secret, the volume setup + will error unless it is marked optional. Paths + must be relative and may not contain the '..' + path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use + on this file, must be a value between + 0 and 0777. If not specified, the volume + defaultMode will be used. This might be + in conflict with other options that affect + the file mode, like fsGroup, and the result + can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file + to map the key to. May not be an absolute + path. May not contain the path element + '..'. May not start with the string '..'. type: string required: - key @@ -4260,18 +4749,44 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience + of the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the + token. The audience defaults to the identifier + of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested + duration of validity of the service account + token. As the token approaches expiration, the + kubelet volume plugin will proactively rotate + the service account token. The kubelet will + start trying to rotate the token if the token + is older than 80 percent of its time to live + or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the + mount point of the file to project the token + into. type: string required: - path @@ -4282,74 +4797,143 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host + that shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no + group type: string readOnly: + description: ReadOnly here will force the Quobyte volume + to be mounted with read-only permissions. Defaults to + false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts + as the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the + Backend Used with dynamically provisioned Quobyte volumes, + value is set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already + created Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the + host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want + to mount. Tip: Ensure that the filesystem type is supported + by the host operating system. Examples: "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd + TODO: how do we prevent errors in the filesystem from + compromising the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. + Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is + nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More + info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume + attached and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for + the configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with + Gateway, default false type: boolean storageMode: + description: Indicates whether the storage for a volume + should be ThickProvisioned or ThinProvisioned. Default + is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the + protection domain. type: string system: + description: The name of the storage system as configured + in ScaleIO. type: string volumeName: + description: The name of a volume already created in the + ScaleIO system that is associated with this volume source. type: string required: - gateway @@ -4359,19 +4943,48 @@ spec: scriptPath: type: string secret: + description: 'Secret represents a secret that should populate + this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files + by default. Must be a value between 0 and 0777. Defaults + to 0644. Directories within the path are not affected + by this setting. This might be in conflict with other + options that affect the file mode, like fsGroup, and the + result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the + Data field of the referenced Secret will be projected + into the volume as a file whose name is the key and content + is the value. If specified, the listed keys will be projected + into the specified paths, and unlisted keys will not be + present. If a key is specified which is not present in + the Secret, the volume setup will error unless it is marked + optional. Paths must be relative and may not contain the + '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might + be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other + mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map + the key to. May not be an absolute path. May not + contain the path element '..'. May not start with + the string '..'. type: string required: - key @@ -4379,69 +4992,106 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must + be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace + to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here + will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the + StorageOS volume. Volume names are only unique within + a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the + volume within StorageOS. If no namespace is specified + then the Pod's namespace will be used. This allows the + Kubernetes name scoping to be mirrored within StorageOS + for tighter integration. Set VolumeName to any name to + override the default behaviour. Set to "default" if you + are not using namespaces within StorageOS. Namespaces + that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object - snapshotSource: - properties: - args: - items: - type: string - type: array - name: - type: string - namespace: - type: string - required: - - name - - namespace - type: object stashRestoreSession: + description: 'Name of stash restoreSession in same namespace of + kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: object leaderElection: + description: Leader election configuration properties: leaseDurationSeconds: + description: LeaseDuration is the duration in second that non-leader + candidates will wait to force acquire leadership. This is measured + against time of last observed ack. Default 15 format: int32 type: integer renewDeadlineSeconds: + description: RenewDeadline is the duration in second that the acting + master will retry refreshing leadership before giving up. Normally, + LeaseDuration * 2 / 3. Default 10 format: int32 type: integer retryPeriodSeconds: + description: RetryPeriod is the duration in second the LeaderElector + clients should wait between tries of actions. Normally, LeaseDuration + / 3. Default 2 format: int32 type: integer required: @@ -4450,60 +5100,117 @@ spec: - retryPeriodSeconds type: object monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -4518,56 +5225,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -4578,181 +5347,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4762,13 +5778,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4779,6 +5817,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -4787,18 +5828,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4808,13 +5884,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -4830,22 +5928,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4857,18 +5998,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4877,18 +6039,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4900,13 +6101,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4914,22 +6132,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4941,18 +6202,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -4961,18 +6243,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -4984,13 +6305,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -4999,56 +6337,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -5059,70 +6457,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -5133,51 +6629,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5185,49 +6747,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5235,25 +6850,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5261,27 +6892,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5289,85 +6948,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5375,125 +7117,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5501,58 +7399,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -5560,19 +7526,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -5580,32 +7571,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5613,49 +7636,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5663,25 +7733,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5689,27 +7773,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5717,73 +7829,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -5791,90 +7973,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -5882,72 +8155,189 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicaServiceTemplate: + description: ReplicaServiceTemplate is an optional configuration for + service used to expose postgres replicas properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -5955,58 +8345,146 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object replicas: + description: Number of instances to deploy for a Postgres database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -6014,59 +8492,123 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object standbyMode: + description: Standby mode type: string storage: + description: Storage to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -6078,33 +8620,58 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string streamingMode: + description: Streaming mode type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of Postgres to be deployed. type: string required: - version @@ -6112,6 +8679,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_proxysqls.yaml b/api/crds/kubedb.com_proxysqls.yaml index 24d7c9cfdf..c462aa1e2f 100644 --- a/api/crds/kubedb.com_proxysqls.yaml +++ b/api/crds/kubedb.com_proxysqls.yaml @@ -35,8 +35,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -48,121 +54,239 @@ spec: spec: properties: backend: + description: Backend specifies the information about backend MySQL/Percona-XtraDB/MariaDB + servers properties: ref: + description: Ref lets one to locate the typed referenced object + (in our case, it is the MySQL/Percona-XtraDB/MariaDB object) inside + the same namespace. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object replicas: + description: Number of backend servers. format: int32 type: integer type: object configSource: + description: ConfigSource is an optional field to provide custom configuration + file for proxysql (i.e custom-proxysql.cnf). If specified, this file + will be used as configuration file otherwise default configuration + file will be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -170,59 +294,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -233,132 +418,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -366,65 +683,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -432,36 +815,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -472,16 +894,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -489,18 +935,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -511,74 +979,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -586,19 +1119,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -606,97 +1168,193 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object mode: + description: Mode specifies the type of MySQL/Percona-XtraDB/MariaDB + cluster for which proxysql will be configured. It must be either "Galera" + or "GroupReplication" type: string monitor: + description: Monitor is used monitor proxysql instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -711,56 +1369,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -771,181 +1491,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose proxysql properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -955,13 +1922,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -972,6 +1961,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -980,18 +1972,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -1001,13 +2028,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -1023,22 +2072,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1050,18 +2142,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1070,18 +2183,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1093,13 +2245,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1107,22 +2276,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1134,18 +2346,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1154,18 +2387,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1177,13 +2449,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1192,56 +2481,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -1252,70 +2601,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -1326,51 +2773,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1378,49 +2891,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1428,25 +2994,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1454,27 +3036,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1482,85 +3092,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1568,125 +3261,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1694,58 +3543,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -1753,19 +3670,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -1773,32 +3715,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1806,49 +3780,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1856,25 +3877,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1882,27 +3917,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1910,73 +3973,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1984,90 +4117,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -2075,49 +4299,125 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object proxysqlSecret: + description: ProxySQL secret containing username and password for root + user and proxysql user properties: defaultMode: + description: 'Optional: mode bits to use on created files by default. + Must be a value between 0 and 0777. Defaults to 0644. Directories + within the path are not affected by this setting. This might be + in conflict with other options that affect the file mode, like + fsGroup, and the result can be other mode bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data field + of the referenced Secret will be projected into the volume as + a file whose name is the key and content is the value. If specified, + the listed keys will be projected into the specified paths, and + unlisted keys will not be present. If a key is specified which + is not present in the Secret, the volume setup will error unless + it is marked optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, must + be a value between 0 and 0777. If not specified, the volume + defaultMode will be used. This might be in conflict with + other options that affect the file mode, like fsGroup, and + the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to map the key + to. May not be an absolute path. May not contain the path + element '..'. May not start with the string '..'. type: string required: - key @@ -2125,50 +4425,122 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to use. + More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object replicas: + description: 'Number of instances to deploy for ProxySQL. Currently + we support only replicas = 1. TODO: If replicas > 1, proxysql will + be clustered' format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose proxysql properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -2176,30 +4548,61 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of ProxySQL to be deployed. type: string required: - version @@ -2207,6 +4610,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_redises.yaml b/api/crds/kubedb.com_redises.yaml index c9c7da62be..2d4fd2b23f 100644 --- a/api/crds/kubedb.com_redises.yaml +++ b/api/crds/kubedb.com_redises.yaml @@ -37,8 +37,14 @@ spec: openAPIV3Schema: properties: apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: properties: @@ -50,112 +56,224 @@ spec: spec: properties: cluster: + description: Redis cluster configuration for running redis servers in + cluster mode. Required if Mode is set to "Cluster" properties: master: + description: Number of master nodes. It must be >= 3. If not specified, + defaults to 3. format: int32 type: integer replicas: + description: Number of replica(s) per master node. If not specified, + defaults to 1. format: int32 type: integer type: object configSource: + description: ConfigSource is an optional field to provide custom configuration + file for database (i.e redis.conf). If specified, this file will be + used as configuration file otherwise default configuration file will + be used. properties: awsElasticBlockStore: + description: 'AWSElasticBlockStore represents an AWS Disk resource + that is attached to a kubelet''s host machine and then exposed + to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty).' format: int32 type: integer readOnly: + description: 'Specify "true" to force and set the ReadOnly property + in VolumeMounts to "true". If omitted, the default is "false". + More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: + description: 'Unique ID of the persistent disk resource in AWS + (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: + description: AzureDisk represents an Azure Data Disk mount on the + host and bind mount to the pod. properties: cachingMode: + description: 'Host Caching mode: None, Read Only, Read Write.' type: string diskName: + description: The Name of the data disk in the blob storage type: string diskURI: + description: The URI the data disk in the blob storage type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: + description: 'Expected values Shared: multiple blob disks per + storage account Dedicated: single blob disk per storage account Managed: + azure managed data disk (only in managed availability set). + defaults to shared' type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: + description: AzureFile represents an Azure File Service mount on + the host and bind mount to the pod. properties: readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretName: + description: the name of secret that contains Azure Storage + Account Name and Key type: string shareName: + description: Share Name type: string required: - secretName - shareName type: object cephfs: + description: CephFS represents a Ceph FS mount on the host that + shares a pod's lifetime properties: monitors: + description: 'Required: Monitors is a collection of Ceph monitors + More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: + description: 'Optional: Used as the mounted root, rather than + the full Ceph tree, default is /' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: + description: 'Optional: SecretFile is the path to key ring for + User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: + description: 'Optional: SecretRef is reference to the authentication + secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'Optional: User is the rados user name, default + is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: + description: 'Cinder represents a cinder volume attached and mounted + on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Examples: "ext4", + "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts. More + info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: + description: 'Optional: points to a secret object containing + parameters used to connect to OpenStack.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeID: + description: 'volume id used to identify the volume in cinder. + More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: + description: ConfigMap represents a configMap that should populate + this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced ConfigMap will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -163,59 +281,120 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: + description: Specify whether the ConfigMap or its keys must + be defined type: boolean type: object csi: + description: CSI (Container Storage Interface) represents storage + that is handled by an external CSI driver (Alpha feature). properties: driver: + description: Driver is the name of the CSI driver that handles + this volume. Consult with your admin for the correct name + as registered in the cluster. type: string fsType: + description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". + If not provided, the empty value is passed to the associated + CSI driver which will determine the default filesystem to + apply. type: string nodePublishSecretRef: + description: NodePublishSecretRef is a reference to the secret + object containing sensitive information to pass to the CSI + driver to complete the CSI NodePublishVolume and NodeUnpublishVolume + calls. This field is optional, and may be empty if no secret + is required. If the secret object contains more than one secret, + all secret references are passed. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object readOnly: + description: Specifies a read-only configuration for the volume. + Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string + description: VolumeAttributes stores driver-specific properties + that are passed to the CSI driver. Consult your driver's documentation + for supported values. type: object required: - driver type: object downwardAPI: + description: DownwardAPI represents downward API about the pod that + should populate this volume properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: Items is a list of downward API volume file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the pod: only + annotations, labels, name and namespace are supported.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: 'Required: Path is the relative path name + of the file to be created. Must not be absolute or contain + the ''..'' path. Must be utf-8 encoded. The first item + of the relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + requests.cpu and requests.memory) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -226,132 +405,264 @@ spec: type: array type: object emptyDir: + description: 'EmptyDir represents a temporary directory that shares + a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: + description: 'What type of storage medium should back this directory. + The default is "" which means to use the node''s default medium. + Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: + description: 'Total amount of local storage required for this + EmptyDir volume. The size limit is also applicable for memory + medium. The maximum usage on memory medium EmptyDir would + be the minimum value between the SizeLimit specified here + and the sum of memory limits of all containers in a pod. The + default is nil which means that the limit is undefined. More + info: http://kubernetes.io/docs/user-guide/volumes#emptydir' type: string type: object fc: + description: FC represents a Fibre Channel resource that is attached + to a kubelet's host machine and then exposed to the pod. properties: fsType: + description: 'Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string lun: + description: 'Optional: FC target lun number' format: int32 type: integer readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean targetWWNs: + description: 'Optional: FC target worldwide names (WWNs)' items: type: string type: array wwids: + description: 'Optional: FC volume world wide identifiers (wwids) + Either wwids or combination of targetWWNs and lun must be + set, but not both simultaneously.' items: type: string type: array type: object flexVolume: + description: FlexVolume represents a generic volume resource that + is provisioned/attached using an exec based plugin. properties: driver: + description: Driver is the name of the driver to use for this + volume. type: string fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". The default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string + description: 'Optional: Extra command options if any.' type: object readOnly: + description: 'Optional: Defaults to false (read/write). ReadOnly + here will force the ReadOnly setting in VolumeMounts.' type: boolean secretRef: + description: 'Optional: SecretRef is reference to the secret + object containing sensitive information to pass to the plugin + scripts. This may be empty if no secret object is specified. + If the secret object contains more than one secret, all secrets + are passed to the plugin scripts.' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object required: - driver type: object flocker: + description: Flocker represents a Flocker volume attached to a kubelet's + host machine. This depends on the Flocker control service being + running properties: datasetName: + description: Name of the dataset stored as metadata -> name + on the dataset for Flocker should be considered as deprecated type: string datasetUUID: + description: UUID of the dataset. This is unique identifier + of a Flocker dataset type: string type: object gcePersistentDisk: + description: 'GCEPersistentDisk represents a GCE Disk resource that + is attached to a kubelet''s host machine and then exposed to the + pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string partition: + description: 'The partition in the volume that you want to mount. + If omitted, the default is to mount by volume name. Examples: + For volume /dev/sda1, you specify the partition as "1". Similarly, + the volume partition for /dev/sda is "0" (or you can leave + the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: + description: 'Unique name of the PD resource in GCE. Used to + identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: + description: 'GitRepo represents a git repository at a particular + revision. DEPRECATED: GitRepo is deprecated. To provision a container + with a git repo, mount an EmptyDir into an InitContainer that + clones the repo using git, then mount the EmptyDir into the Pod''s + container.' properties: directory: + description: Target directory name. Must not contain or start + with '..'. If '.' is supplied, the volume directory will + be the git repository. Otherwise, if specified, the volume + will contain the git repository in the subdirectory with the + given name. type: string repository: + description: Repository URL type: string revision: + description: Commit hash for the specified revision. type: string required: - repository type: object glusterfs: + description: 'Glusterfs represents a Glusterfs mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: + description: 'EndpointsName is the endpoint name that details + Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: + description: 'Path is the Glusterfs volume path. More info: + https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: + description: 'ReadOnly here will force the Glusterfs volume + to be mounted with read-only permissions. Defaults to false. + More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: + description: 'HostPath represents a pre-existing file or directory + on the host machine that is directly exposed to the container. + This is generally used for system agents or other privileged things + that are allowed to see the host machine. Most containers will + NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + --- TODO(jonesdl) We need to restrict who can use host directory + mounts and who can/can not mount host directories as read/write.' properties: path: + description: 'Path of the directory on the host. If the path + is a symlink, it will follow the link to the real path. More + info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: + description: 'Type for HostPath Volume Defaults to "" More info: + https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: + description: 'ISCSI represents an ISCSI Disk resource that is attached + to a kubelet''s host machine and then exposed to the pod. More + info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: + description: whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: + description: whether support iSCSI Session CHAP authentication type: boolean fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#iscsi + TODO: how do we prevent errors in the filesystem from compromising + the machine' type: string initiatorName: + description: Custom iSCSI Initiator Name. If initiatorName is + specified with iscsiInterface simultaneously, new iSCSI interface + : will be created for the connection. type: string iqn: + description: Target iSCSI Qualified Name. type: string iscsiInterface: + description: iSCSI Interface Name that uses an iSCSI transport. + Defaults to 'default' (tcp). type: string lun: + description: iSCSI Target Lun number. format: int32 type: integer portals: + description: iSCSI Target Portal List. The portal is either + an IP or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). items: type: string type: array readOnly: + description: ReadOnly here will force the ReadOnly setting in + VolumeMounts. Defaults to false. type: boolean secretRef: + description: CHAP Secret for iSCSI target and initiator authentication properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object targetPortal: + description: iSCSI Target Portal. The Portal is either an IP + or ip_addr:port if the port is other than default (typically + TCP ports 860 and 3260). type: string required: - iqn @@ -359,65 +670,131 @@ spec: - targetPortal type: object nfs: + description: 'NFS represents an NFS mount on the host that shares + a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: + description: 'Path that is exported by the NFS server. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: + description: 'ReadOnly here will force the NFS export to be + mounted with read-only permissions. Defaults to false. More + info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: + description: 'Server is the hostname or IP address of the NFS + server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: + description: 'PersistentVolumeClaimVolumeSource represents a reference + to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace as the pod using this volume. More info: + https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. type: boolean required: - claimName type: object photonPersistentDisk: + description: PhotonPersistentDisk represents a PhotonController + persistent disk attached and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: + description: ID that identifies Photon Controller persistent + disk type: string required: - pdID type: object portworxVolume: + description: PortworxVolume represents a portworx volume attached + and mounted on kubelets host machine properties: fsType: + description: FSType represents the filesystem type to mount + Must be a filesystem type supported by the host operating + system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" + if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean volumeID: + description: VolumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: + description: Items for all in one resources secrets, configmaps, + and downward API properties: defaultMode: + description: Mode bits to use on created files by default. Must + be a value between 0 and 0777. Directories within the path + are not affected by this setting. This might be in conflict + with other options that affect the file mode, like fsGroup, + and the result can be other mode bits set. format: int32 type: integer sources: + description: list of volume projections items: + description: Projection that may be projected along with other + supported volume types properties: configMap: + description: information about the configMap data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced ConfigMap will + be projected into the volume as a file whose name + is the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the ConfigMap, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -425,36 +802,75 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + keys must be defined type: boolean type: object downwardAPI: + description: information about the downwardAPI data to + project properties: items: + description: Items is a list of DownwardAPIVolume + file items: + description: DownwardAPIVolumeFile represents information + to create the file containing the pod field properties: fieldRef: + description: 'Required: Selects a field of the + pod: only annotations, labels, name and namespace + are supported.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: 'Required: Path is the relative + path name of the file to be created. Must + not be absolute or contain the ''..'' path. + Must be utf-8 encoded. The first item of the + relative path must not start with ''..''' type: string resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, requests.cpu and requests.memory) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource @@ -465,16 +881,40 @@ spec: type: array type: object secret: + description: information about the secret data to project properties: items: + description: If unspecified, each key-value pair in + the Data field of the referenced Secret will be + projected into the volume as a file whose name is + the key and content is the value. If specified, + the listed keys will be projected into the specified + paths, and unlisted keys will not be present. If + a key is specified which is not present in the Secret, + the volume setup will error unless it is marked + optional. Paths must be relative and may not contain + the '..' path or start with '..'. items: + description: Maps a string key to a path within + a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on + this file, must be a value between 0 and 0777. + If not specified, the volume defaultMode will + be used. This might be in conflict with other + options that affect the file mode, like fsGroup, + and the result can be other mode bits set.' format: int32 type: integer path: + description: The relative path of the file to + map the key to. May not be an absolute path. + May not contain the path element '..'. May + not start with the string '..'. type: string required: - key @@ -482,18 +922,40 @@ spec: type: object type: array name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean type: object serviceAccountToken: + description: information about the serviceAccountToken + data to project properties: audience: + description: Audience is the intended audience of + the token. A recipient of a token must identify + itself with an identifier specified in the audience + of the token, and otherwise should reject the token. + The audience defaults to the identifier of the apiserver. type: string expirationSeconds: + description: ExpirationSeconds is the requested duration + of validity of the service account token. As the + token approaches expiration, the kubelet volume + plugin will proactively rotate the service account + token. The kubelet will start trying to rotate the + token if the token is older than 80 percent of its + time to live or if the token is older than 24 hours.Defaults + to 1 hour and must be at least 10 minutes. format: int64 type: integer path: + description: Path is the path relative to the mount + point of the file to project the token into. type: string required: - path @@ -504,74 +966,139 @@ spec: - sources type: object quobyte: + description: Quobyte represents a Quobyte mount on the host that + shares a pod's lifetime properties: group: + description: Group to map volume access to Default is no group type: string readOnly: + description: ReadOnly here will force the Quobyte volume to + be mounted with read-only permissions. Defaults to false. type: boolean registry: + description: Registry represents a single or multiple Quobyte + Registry services specified as a string as host:port pair + (multiple entries are separated with commas) which acts as + the central registry for volumes type: string tenant: + description: Tenant owning the given Quobyte volume in the Backend + Used with dynamically provisioned Quobyte volumes, value is + set by the plugin type: string user: + description: User to map volume access to Defaults to serivceaccount + user type: string volume: + description: Volume is a string that references an already created + Quobyte volume by name. type: string required: - registry - volume type: object rbd: + description: 'RBD represents a Rados Block Device mount on the host + that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: + description: 'Filesystem type of the volume that you want to + mount. Tip: Ensure that the filesystem type is supported by + the host operating system. Examples: "ext4", "xfs", "ntfs". + Implicitly inferred to be "ext4" if unspecified. More info: + https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: + how do we prevent errors in the filesystem from compromising + the machine' type: string image: + description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: + description: 'Keyring is the path to key ring for RBDUser. Default + is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: + description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: + description: 'The rados pool name. Default is rbd. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: + description: 'ReadOnly here will force the ReadOnly setting + in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: + description: 'SecretRef is name of the authentication secret + for RBDUser. If provided overrides keyring. Default is nil. + More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object user: + description: 'The rados user name. Default is admin. More info: + https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: + description: ScaleIO represents a ScaleIO persistent volume attached + and mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Default is "xfs". type: string gateway: + description: The host address of the ScaleIO API Gateway. type: string protectionDomain: + description: The name of the ScaleIO Protection Domain for the + configured storage. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef references to the secret for ScaleIO + user and other sensitive information. If this is not provided, + Login operation will fail. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object sslEnabled: + description: Flag to enable/disable SSL communication with Gateway, + default false type: boolean storageMode: + description: Indicates whether the storage for a volume should + be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. type: string storagePool: + description: The ScaleIO Storage Pool associated with the protection + domain. type: string system: + description: The name of the storage system as configured in + ScaleIO. type: string volumeName: + description: The name of a volume already created in the ScaleIO + system that is associated with this volume source. type: string required: - gateway @@ -579,19 +1106,48 @@ spec: - system type: object secret: + description: 'Secret represents a secret that should populate this + volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: + description: 'Optional: mode bits to use on created files by + default. Must be a value between 0 and 0777. Defaults to 0644. + Directories within the path are not affected by this setting. + This might be in conflict with other options that affect the + file mode, like fsGroup, and the result can be other mode + bits set.' format: int32 type: integer items: + description: If unspecified, each key-value pair in the Data + field of the referenced Secret will be projected into the + volume as a file whose name is the key and content is the + value. If specified, the listed keys will be projected into + the specified paths, and unlisted keys will not be present. + If a key is specified which is not present in the Secret, + the volume setup will error unless it is marked optional. + Paths must be relative and may not contain the '..' path or + start with '..'. items: + description: Maps a string key to a path within a volume. properties: key: + description: The key to project. type: string mode: + description: 'Optional: mode bits to use on this file, + must be a value between 0 and 0777. If not specified, + the volume defaultMode will be used. This might be in + conflict with other options that affect the file mode, + like fsGroup, and the result can be other mode bits + set.' format: int32 type: integer path: + description: The relative path of the file to map the + key to. May not be an absolute path. May not contain + the path element '..'. May not start with the string + '..'. type: string required: - key @@ -599,99 +1155,196 @@ spec: type: object type: array optional: + description: Specify whether the Secret or its keys must be + defined type: boolean secretName: + description: 'Name of the secret in the pod''s namespace to + use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: + description: StorageOS represents a StorageOS volume attached and + mounted on Kubernetes nodes. properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string readOnly: + description: Defaults to false (read/write). ReadOnly here will + force the ReadOnly setting in VolumeMounts. type: boolean secretRef: + description: SecretRef specifies the secret to use for obtaining + the StorageOS API credentials. If not specified, default + values will be attempted. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object volumeName: + description: VolumeName is the human-readable name of the StorageOS + volume. Volume names are only unique within a namespace. type: string volumeNamespace: + description: VolumeNamespace specifies the scope of the volume + within StorageOS. If no namespace is specified then the Pod's + namespace will be used. This allows the Kubernetes name scoping + to be mirrored within StorageOS for tighter integration. Set + VolumeName to any name to override the default behaviour. + Set to "default" if you are not using namespaces within StorageOS. + Namespaces that do not pre-exist within StorageOS will be + created. type: string type: object vsphereVolume: + description: VsphereVolume represents a vSphere volume attached + and mounted on kubelets host machine properties: fsType: + description: Filesystem type to mount. Must be a filesystem + type supported by the host operating system. Ex. "ext4", "xfs", + "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: + description: Storage Policy Based Management (SPBM) profile + ID associated with the StoragePolicyName. type: string storagePolicyName: + description: Storage Policy Based Management (SPBM) profile + name. type: string volumePath: + description: Path that identifies vSphere volume vmdk type: string required: - volumePath type: object type: object halted: + description: Indicates that the database is halted and all offshoot + Kubernetes resources except PVCs are deleted. type: boolean mode: + description: Default is "Standalone". If set to "Cluster", ClusterSpec + is required and redis servers will start in cluster mode type: string monitor: + description: Monitor is used monitor database instance properties: agent: type: string args: + description: 'Arguments to the entrypoint. The docker image''s CMD + is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will be + unchanged. The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never be expanded, + regardless of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + Deprecated: use prometheus.exporter.args' items: type: string type: array env: + description: 'List of environment variables to set in the container. + Cannot be updated. Deprecated Deprecated: use prometheus.exporter.env' items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in the + container and any service environment variables. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with + a double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or its + key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports metadata.name, + metadata.namespace, metadata.labels, metadata.annotations, + spec.nodeName, spec.serviceAccountName, status.hostIP, + status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the specified + API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: only + resources limits and requests (limits.cpu, limits.memory, + limits.ephemeral-storage, requests.cpu, requests.memory + and requests.ephemeral-storage) are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the exposed + resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its key + must be defined type: boolean required: - key @@ -706,56 +1359,118 @@ spec: exporter: properties: args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references + $(VAR_NAME) are expanded using the container''s environment. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Cannot be updated. More info: + https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in + the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format of + the exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret or + its key must be defined type: boolean required: - key @@ -766,181 +1481,428 @@ spec: type: object type: array port: + description: Port number for the exporter side car. format: int32 type: integer resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of + compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as Privileged + 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be + set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as + a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not run + as UID 0 (root) and fail to start the container if + it does. If unset or false, no such validation will + be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the + container. If unspecified, the container runtime will + allocate a random SELinux context for each container. May + also be set in PodSecurityContext. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to + all containers. If unspecified, the options from the + PodSecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec + named by the GMSACredentialSpecName field. This + field is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored + by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object type: object interval: + description: 'Interval at which metrics should be scraped Deprecated: + will be removed in a future release' type: string labels: additionalProperties: type: string + description: 'Labels are key value pairs that is used to select + Prometheus instance via ServiceMonitor labels. Deprecated: + will be removed in a future release' type: object namespace: + description: 'Namespace of Prometheus. Service monitors will + be created in this namespace. Deprecated: will be removed + in a future release' type: string port: + description: 'Port number for the exporter side car. Deprecated: + use exporter.port' format: int32 type: integer type: object resources: + description: 'Compute Resources required by exporter container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ + Deprecated: use prometheus.exporter.resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. More info: + https://kubernetes.io/docs/concepts/policy/security-context/ More + info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + Deprecated: use prometheus.exporter.securityContext' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether a process + can gain more privileges than its parent process. This bool + directly controls if the no_new_privs flag will be set on + the container process. AllowPrivilegeEscalation is true always + when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running containers. + Defaults to the default set of capabilities granted by the + container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes in + privileged containers are essentially equivalent to root on + the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount to use + for the containers. The default is DefaultProcMount which + uses the container runtime defaults for readonly paths and + masked paths. This requires the ProcMountType feature flag + to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only root filesystem. + Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set in + PodSecurityContext. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a non-root + user. If true, the Kubelet will validate the image at runtime + to ensure that it does not run as UID 0 (root) and fail to + start the container if it does. If unset or false, no such + validation will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to the container. + If unspecified, the container runtime will allocate a random + SELinux context for each container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that applies to + the container. type: string role: + description: Role is a SELinux role label that applies to + the container. type: string type: + description: Type is a SELinux type label that applies to + the container. type: string user: + description: User is a SELinux user label that applies to + the container. type: string type: object windowsOptions: + description: The Windows specific settings applied to all containers. + If unspecified, the options from the PodSecurityContext will + be used. If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the GMSA + credential spec to use. This field is alpha-level and + is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set in PodSecurityContext. + If set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. + This field is alpha-level and it is only honored by servers + that enable the WindowsRunAsUserName feature flag. type: string type: object type: object type: object paused: + description: Indicates that the database is paused and controller will + not sync any changes made to this spec. type: boolean podTemplate: + description: PodTemplate is an optional configuration for pods used + to expose database properties: controller: + description: 'Workload controller''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the pod. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: affinity: + description: If specified, the pod's scheduling constraints properties: nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node matches the corresponding matchExpressions; + the node(s) with the highest sum are the most preferred. items: + description: An empty preferred scheduling term matches + all objects with implicit weight 0 (i.e. it's a + no-op). A null preferred scheduling term matches + no objects (i.e. is also a no-op). properties: preference: + description: A node selector term, associated + with the corresponding weight. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -950,13 +1912,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -967,6 +1951,9 @@ spec: type: array type: object weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range + 1-100. format: int32 type: integer required: @@ -975,18 +1962,53 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an + update), the system may or may not try to eventually + evict the pod from its node. properties: nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. items: + description: A null or empty node selector term + matches no objects. The requirements of them + are ANDed. The TopologySelectorTerm type implements + a subset of the NodeSelectorTerm. properties: matchExpressions: + description: A list of node selector requirements + by node's labels. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -996,13 +2018,35 @@ spec: type: object type: array matchFields: + description: A list of node selector requirements + by node's fields. items: + description: A node selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: The label key that the + selector applies to. type: string operator: + description: Represents a key's relationship + to a set of values. Valid operators + are In, NotIn, Exists, DoesNotExist. + Gt, and Lt. type: string values: + description: An array of string values. + If the operator is In or NotIn, the + values array must be non-empty. If + the operator is Exists or DoesNotExist, + the values array must be empty. If + the operator is Gt or Lt, the values + array must have a single element, + which will be interpreted as an integer. + This array is replaced during a strategic + merge patch. items: type: string type: array @@ -1018,22 +2062,65 @@ spec: type: object type: object podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the affinity expressions specified + by this field, but it may choose a node that violates + one or more of the expressions. The node that is most + preferred is the one with the greatest sum of weights, + i.e. for each node that meets all of the scheduling + requirements (resource request, requiredDuringScheduling + affinity expressions, etc.), compute a sum by iterating + through the elements of this field and adding "weight" + to the sum if the node has pods which matches the + corresponding podAffinityTerm; the node(s) with the + highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1045,18 +2132,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1065,18 +2173,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1088,13 +2235,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1102,22 +2266,65 @@ spec: type: array type: object podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: + description: The scheduler will prefer to schedule pods + to nodes that satisfy the anti-affinity expressions + specified by this field, but it may choose a node + that violates one or more of the expressions. The + node that is most preferred is the one with the greatest + sum of weights, i.e. for each node that meets all + of the scheduling requirements (resource request, + requiredDuringScheduling anti-affinity expressions, + etc.), compute a sum by iterating through the elements + of this field and adding "weight" to the sum if the + node has pods which matches the corresponding podAffinityTerm; + the node(s) with the highest sum are the most preferred. items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) properties: podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list + of label selector requirements. The + requirements are ANDed. items: + description: A label selector requirement + is a selector that contains values, + a key, and an operator that relates + the key and values. properties: key: + description: key is the label key + that the selector applies to. type: string operator: + description: operator represents + a key's relationship to a set + of values. Valid operators are + In, NotIn, Exists and DoesNotExist. type: string values: + description: values is an array + of string values. If the operator + is In or NotIn, the values array + must be non-empty. If the operator + is Exists or DoesNotExist, the + values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1129,18 +2336,39 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator + is "In", and the values array contains + only "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located + (affinity) or not co-located (anti-affinity) + with the pods matching the labelSelector + in the specified namespaces, where co-located + is defined as running on a node whose value + of the label with key topologyKey matches + that of any node on which any of the selected + pods is running. Empty topologyKey is not + allowed. type: string required: - topologyKey type: object weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range + 1-100. format: int32 type: integer required: @@ -1149,18 +2377,57 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: + description: If the anti-affinity requirements specified + by this field are not met at scheduling time, the + pod will not be scheduled onto the node. If the anti-affinity + requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a + pod label update), the system may or may not try to + eventually evict the pod from its node. When there + are multiple elements, the lists of nodes corresponding + to each podAffinityTerm are intersected, i.e. all + terms must be satisfied. items: + description: Defines a set of pods (namely those matching + the labelSelector relative to the given namespace(s)) + that this pod should be co-located (affinity) or + not co-located (anti-affinity) with, where co-located + is defined as running on a node whose value of the + label with key matches that of any + node on which a pod of the set of pods is running properties: labelSelector: + description: A label query over a set of resources, + in this case pods. properties: matchExpressions: + description: matchExpressions is a list of + label selector requirements. The requirements + are ANDed. items: + description: A label selector requirement + is a selector that contains values, a + key, and an operator that relates the + key and values. properties: key: + description: key is the label key that + the selector applies to. type: string operator: + description: operator represents a key's + relationship to a set of values. Valid + operators are In, NotIn, Exists and + DoesNotExist. type: string values: + description: values is an array of string + values. If the operator is In or NotIn, + the values array must be non-empty. + If the operator is Exists or DoesNotExist, + the values array must be empty. This + array is replaced during a strategic + merge patch. items: type: string type: array @@ -1172,13 +2439,30 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, + whose key field is "key", the operator is + "In", and the values array contains only + "value". The requirements are ANDed. type: object type: object namespaces: + description: namespaces specifies which namespaces + the labelSelector applies to (matches against); + null or empty list means "this pod's namespace" items: type: string type: array topologyKey: + description: This pod should be co-located (affinity) + or not co-located (anti-affinity) with the pods + matching the labelSelector in the specified + namespaces, where co-located is defined as running + on a node whose value of the label with key + topologyKey matches that of any node on which + any of the selected pods is running. Empty topologyKey + is not allowed. type: string required: - topologyKey @@ -1187,56 +2471,116 @@ spec: type: object type: object args: + description: 'Arguments to the entrypoint. The docker image''s + CMD is used if this is not provided. Variable references $(VAR_NAME) + are expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string will + be unchanged. The $(VAR_NAME) syntax can be escaped with a + double $$, ie: $$(VAR_NAME). Escaped references will never + be expanded, regardless of whether the variable exists or + not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the container. + Cannot be updated. items: + description: EnvVar represents an environment variable present + in a Container. properties: name: + description: Name of the environment variable. Must be + a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are expanded + using the previous defined environment variables in + the container and any service environment variables. + If a variable cannot be resolved, the reference in the + input string will be unchanged. The $(VAR_NAME) syntax + can be escaped with a double $$, ie: $$(VAR_NAME). Escaped + references will never be expanded, regardless of whether + the variable exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's value. + Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the ConfigMap or + its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select in the + specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for volumes, + optional for env vars' type: string divisor: + description: Specifies the output format of the + exposed resources, defaults to "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the pod's + namespace properties: key: + description: The key of the secret to select from. Must + be a valid secret key. type: string name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, + uid?' type: string optional: + description: Specify whether the Secret or its + key must be defined type: boolean required: - key @@ -1247,70 +2591,168 @@ spec: type: object type: array imagePullSecrets: + description: ImagePullSecrets is an optional list of references + to secrets in the same namespace to use for pulling any of + the images used by this PodSpec. If specified, these secrets + will be passed to individual puller implementations for them + to use. items: + description: LocalObjectReference contains enough information + to let you locate the referenced object inside the same + namespace. properties: name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object type: array initContainers: + description: 'List of initialization containers belonging to + the pod. Init containers are executed in order prior to containers + being started. If any init container fails, the pod is considered + to have failed and is handled according to its restartPolicy. + The name for an init container or normal container must be + unique among all containers. Init containers may not have + Lifecycle actions, Readiness probes, or Liveness probes. The + resourceRequirements of an init container are taken into account + during scheduling by finding the highest request/limit for + each resource type, and then using the max of of that value + or the sum of the normal containers. Limits are applied to + init containers in a similar fashion. Init containers cannot + currently be added or removed. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: + description: A single application container that you want + to run within a pod. properties: args: + description: 'Arguments to the entrypoint. The docker + image''s CMD is used if this is not provided. Variable + references $(VAR_NAME) are expanded using the container''s + environment. If a variable cannot be resolved, the reference + in the input string will be unchanged. The $(VAR_NAME) + syntax can be escaped with a double $$, ie: $$(VAR_NAME). + Escaped references will never be expanded, regardless + of whether the variable exists or not. Cannot be updated. + More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: + description: 'Entrypoint array. Not executed within a + shell. The docker image''s ENTRYPOINT is used if this + is not provided. Variable references $(VAR_NAME) are + expanded using the container''s environment. If a variable + cannot be resolved, the reference in the input string + will be unchanged. The $(VAR_NAME) syntax can be escaped + with a double $$, ie: $$(VAR_NAME). Escaped references + will never be expanded, regardless of whether the variable + exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: + description: List of environment variables to set in the + container. Cannot be updated. items: + description: EnvVar represents an environment variable + present in a Container. properties: name: + description: Name of the environment variable. Must + be a C_IDENTIFIER. type: string value: + description: 'Variable references $(VAR_NAME) are + expanded using the previous defined environment + variables in the container and any service environment + variables. If a variable cannot be resolved, the + reference in the input string will be unchanged. + The $(VAR_NAME) syntax can be escaped with a double + $$, ie: $$(VAR_NAME). Escaped references will + never be expanded, regardless of whether the variable + exists or not. Defaults to "".' type: string valueFrom: + description: Source for the environment variable's + value. Cannot be used if value is not empty. properties: configMapKeyRef: + description: Selects a key of a ConfigMap. properties: key: + description: The key to select. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap + or its key must be defined type: boolean required: - key type: object fieldRef: + description: 'Selects a field of the pod: supports + metadata.name, metadata.namespace, metadata.labels, + metadata.annotations, spec.nodeName, spec.serviceAccountName, + status.hostIP, status.podIP.' properties: apiVersion: + description: Version of the schema the FieldPath + is written in terms of, defaults to "v1". type: string fieldPath: + description: Path of the field to select + in the specified API version. type: string required: - fieldPath type: object resourceFieldRef: + description: 'Selects a resource of the container: + only resources limits and requests (limits.cpu, + limits.memory, limits.ephemeral-storage, requests.cpu, + requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: + description: 'Container name: required for + volumes, optional for env vars' type: string divisor: + description: Specifies the output format + of the exposed resources, defaults to + "1" type: string resource: + description: 'Required: resource to select' type: string required: - resource type: object secretKeyRef: + description: Selects a key of a secret in the + pod's namespace properties: key: + description: The key of the secret to select + from. Must be a valid secret key. type: string name: + description: 'Name of the referent. More + info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret + or its key must be defined type: boolean required: - key @@ -1321,51 +2763,117 @@ spec: type: object type: array envFrom: + description: List of sources to populate environment variables + in the container. The keys defined within a source must + be a C_IDENTIFIER. All invalid keys will be reported + as an event when the container is starting. When a key + exists in multiple sources, the value associated with + the last source will take precedence. Values defined + by an Env with a duplicate key will take precedence. + Cannot be updated. items: + description: EnvFromSource represents the source of + a set of ConfigMaps properties: configMapRef: + description: The ConfigMap to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the ConfigMap must + be defined type: boolean type: object prefix: + description: An optional identifier to prepend to + each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: + description: The Secret to select from properties: name: + description: 'Name of the referent. More info: + https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, + kind, uid?' type: string optional: + description: Specify whether the Secret must + be defined type: boolean type: object type: object type: array image: + description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images + This field is optional to allow higher level config + management to default or override container images in + workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: + description: 'Image pull policy. One of Always, Never, + IfNotPresent. Defaults to Always if :latest tag is specified, + or IfNotPresent otherwise. Cannot be updated. More info: + https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: + description: Actions that the management system should + take in response to container lifecycle events. Cannot + be updated. properties: postStart: + description: 'PostStart is called immediately after + a container is created. If the handler fails, the + container is terminated and restarted according + to its restart policy. Other management of the container + blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1373,49 +2881,102 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before + a container is terminated due to an API request + or management event such as liveness/startup probe + failure, preemption, resource contention, etc. The + handler is not called if the container crashes or + exits. The reason for termination is passed to the + handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will + eventually terminate within the Pod''s termination + grace period. Other management of the container + blocks until the hook completes or until the termination + grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following + should be specified. Exec specifies the action + to take. properties: command: + description: Command is the command line to + execute inside the container, the working + directory for the command is root ('/') + in the container's filesystem. The command + is simply exec'd, it is not run inside a + shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you + need to explicitly call out to that shell. + Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request + to perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set + "Host" in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the + request. HTTP allows repeated headers. items: + description: HTTPHeader describes a custom + header to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1423,25 +2984,41 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting + to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: + implement a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect + to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to + access on the container. Number must be + in the range 1 to 65535. Name must be an + IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1449,27 +3026,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Cannot be updated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1477,85 +3082,168 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: + description: Name of the container specified as a DNS_LABEL. + Each container in a pod must have a unique name (DNS_LABEL). + Cannot be updated. type: string ports: + description: List of ports to expose from the container. + Exposing a port here gives the system additional information + about the network connections a container uses, but + is primarily informational. Not specifying a port here + DOES NOT prevent that port from being exposed. Any port + which is listening on the default "0.0.0.0" address + inside a container will be accessible from the network. + Cannot be updated. items: + description: ContainerPort represents a network port + in a single container. properties: containerPort: + description: Number of port to expose on the pod's + IP address. This must be a valid port number, + 0 < x < 65536. format: int32 type: integer hostIP: + description: What host IP to bind the external port + to. type: string hostPort: + description: Number of port to expose on the host. + If specified, this must be a valid port number, + 0 < x < 65536. If HostNetwork is specified, this + must match ContainerPort. Most containers do not + need this. format: int32 type: integer name: + description: If specified, this must be an IANA_SVC_NAME + and unique within the pod. Each named port in + a pod must have a unique name. Name for the port + that can be referred to by services. type: string protocol: + description: Protocol for port. Must be UDP, TCP, + or SCTP. Defaults to "TCP". type: string required: - containerPort type: object type: array readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if + the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1563,125 +3251,281 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: 'Compute Resources required by this container. + Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount + of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount + of compute resources required. If Requests is omitted + for a container, it defaults to Limits if that is + explicitly specified, otherwise to an implementation-defined + value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object securityContext: + description: 'Security options the pod should run with. + More info: https://kubernetes.io/docs/concepts/policy/security-context/ + More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: + description: 'AllowPrivilegeEscalation controls whether + a process can gain more privileges than its parent + process. This bool directly controls if the no_new_privs + flag will be set on the container process. AllowPrivilegeEscalation + is true always when the container is: 1) run as + Privileged 2) has CAP_SYS_ADMIN' type: boolean capabilities: + description: The capabilities to add/drop when running + containers. Defaults to the default set of capabilities + granted by the container runtime. properties: add: + description: Added capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array drop: + description: Removed capabilities items: + description: Capability represent POSIX capabilities + type type: string type: array type: object privileged: + description: Run container in privileged mode. Processes + in privileged containers are essentially equivalent + to root on the host. Defaults to false. type: boolean procMount: + description: procMount denotes the type of proc mount + to use for the containers. The default is DefaultProcMount + which uses the container runtime defaults for readonly + paths and masked paths. This requires the ProcMountType + feature flag to be enabled. type: string readOnlyRootFilesystem: + description: Whether this container has a read-only + root filesystem. Default is false. type: boolean runAsGroup: + description: The GID to run the entrypoint of the + container process. Uses runtime default if unset. + May also be set in PodSecurityContext. If set in + both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run + as a non-root user. If true, the Kubelet will validate + the image at runtime to ensure that it does not + run as UID 0 (root) and fail to start the container + if it does. If unset or false, no such validation + will be performed. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the + container process. Defaults to user specified in + image metadata if unspecified. May also be set in + PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to + the container. If unspecified, the container runtime + will allocate a random SELinux context for each + container. May also be set in PodSecurityContext. If + set in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes precedence. properties: level: + description: Level is SELinux level label that + applies to the container. type: string role: + description: Role is a SELinux role label that + applies to the container. type: string type: + description: Type is a SELinux type label that + applies to the container. type: string user: + description: User is a SELinux user label that + applies to the container. type: string type: object windowsOptions: + description: The Windows specific settings applied + to all containers. If unspecified, the options from + the PodSecurityContext will be used. If set in both + SecurityContext and PodSecurityContext, the value + specified in SecurityContext takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA + admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential + spec named by the GMSACredentialSpecName field. + This field is alpha-level and is only honored + by servers that enable the WindowsGMSA feature + flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name + of the GMSA credential spec to use. This field + is alpha-level and is only honored by servers + that enable the WindowsGMSA feature flag. type: string runAsUserName: + description: The UserName in Windows to run the + entrypoint of the container process. Defaults + to the user specified in image metadata if unspecified. + May also be set in PodSecurityContext. If set + in both SecurityContext and PodSecurityContext, + the value specified in SecurityContext takes + precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object startupProbe: + description: 'StartupProbe indicates that the Pod has + successfully initialized. If specified, no other probes + are executed until this completes successfully. If this + probe fails, the Pod will be restarted, just as if the + livenessProbe failed. This can be used to provide different + probe parameters at the beginning of a Pod''s lifecycle, + when it might take a long time to load data or warm + a cache, than during steady-state operation. This cannot + be updated. This is an alpha feature enabled by the + StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory + for the command is root ('/') in the container's + filesystem. The command is simply exec'd, it + is not run inside a shell, so traditional shell + instructions ('|', etc) won't work. To use a + shell, you need to explicitly call out to that + shell. Exit status of 0 is treated as live/healthy + and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the + probe to be considered failed after having succeeded. + Defaults to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to + perform. properties: host: + description: Host name to connect to, defaults + to the pod IP. You probably want to set "Host" + in httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1689,58 +3533,126 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container + has started before liveness probes are initiated. + More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the + probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the + probe to be considered successful after having failed. + Defaults to 1. Must be 1 for liveness and startup. + Minimum value is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe + times out. Defaults to 1 second. Minimum value is + 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: + description: Whether this container should allocate a + buffer for stdin in the container runtime. If this is + not set, reads from stdin in the container will always + result in EOF. Default is false. type: boolean stdinOnce: + description: Whether the container runtime should close + the stdin channel after it has been opened by a single + attach. When stdin is true the stdin stream will remain + open across multiple attach sessions. If stdinOnce is + set to true, stdin is opened on container start, is + empty until the first client attaches to stdin, and + then remains open and accepts data until the client + disconnects, at which time stdin is closed and remains + closed until the container is restarted. If this flag + is false, a container processes that reads from stdin + will never receive an EOF. Default is false type: boolean terminationMessagePath: + description: 'Optional: Path at which the file to which + the container''s termination message will be written + is mounted into the container''s filesystem. Message + written is intended to be brief final status, such as + an assertion failure message. Will be truncated by the + node if greater than 4096 bytes. The total message length + across all containers will be limited to 12kb. Defaults + to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: + description: Indicate how the termination message should + be populated. File will use the contents of terminationMessagePath + to populate the container status message on both success + and failure. FallbackToLogsOnError will use the last + chunk of container log output if the termination message + file is empty and the container exited with an error. + The log output is limited to 2048 bytes or 80 lines, + whichever is smaller. Defaults to File. Cannot be updated. type: string tty: + description: Whether this container should allocate a + TTY for itself, also requires 'stdin' to be true. Default + is false. type: boolean volumeDevices: + description: volumeDevices is the list of block devices + to be used by the container. This is a beta feature. items: + description: volumeDevice describes a mapping of a raw + block device within a container. properties: devicePath: + description: devicePath is the path inside of the + container that the device will be mapped to. type: string name: + description: name must match the name of a persistentVolumeClaim + in the pod type: string required: - devicePath @@ -1748,19 +3660,44 @@ spec: type: object type: array volumeMounts: + description: Pod volumes to mount into the container's + filesystem. Cannot be updated. items: + description: VolumeMount describes a mounting of a Volume + within a container. properties: mountPath: + description: Path within the container at which + the volume should be mounted. Must not contain + ':'. type: string mountPropagation: + description: mountPropagation determines how mounts + are propagated from the host to container and + the other way around. When not set, MountPropagationNone + is used. This field is beta in 1.10. type: string name: + description: This must match the Name of a Volume. type: string readOnly: + description: Mounted read-only if true, read-write + otherwise (false or unspecified). Defaults to + false. type: boolean subPath: + description: Path within the volume from which the + container's volume should be mounted. Defaults + to "" (volume's root). type: string subPathExpr: + description: Expanded path within the volume from + which the container's volume should be mounted. + Behaves similarly to SubPath but environment variable + references $(VAR_NAME) are expanded using the + container's environment. Defaults to "" (volume's + root). SubPathExpr and SubPath are mutually exclusive. + This field is beta in 1.15. type: string required: - mountPath @@ -1768,32 +3705,64 @@ spec: type: object type: array workingDir: + description: Container's working directory. If not specified, + the container runtime's default will be used, which + might be configured in the container image. Cannot be + updated. type: string required: - name type: object type: array lifecycle: + description: Actions that the management system should take + in response to container lifecycle events. Cannot be updated. properties: postStart: + description: 'PostStart is called immediately after a container + is created. If the handler fails, the container is terminated + and restarted according to its restart policy. Other management + of the container blocks until the hook completes. More + info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1801,49 +3770,96 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: + description: 'PreStop is called immediately before a container + is terminated due to an API request or management event + such as liveness/startup probe failure, preemption, resource + contention, etc. The handler is not called if the container + crashes or exits. The reason for termination is passed + to the handler. The Pod''s termination grace period countdown + begins before the PreStop hooked is executed. Regardless + of the outcome of the handler, the container will eventually + terminate within the Pod''s termination grace period. + Other management of the container blocks until the hook + completes or until the termination grace period is reached. + More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: + description: One and only one of the following should + be specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for + the command is root ('/') in the container's + filesystem. The command is simply exec'd, it is + not run inside a shell, so traditional shell instructions + ('|', etc) won't work. To use a shell, you need + to explicitly call out to that shell. Exit status + of 0 is treated as live/healthy and non-zero is + unhealthy. items: type: string type: array type: object httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to + the pod IP. You probably want to set "Host" in + httpHeaders instead. type: string httpHeaders: + description: Custom headers to set in the request. + HTTP allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1851,25 +3867,39 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the + host. Defaults to HTTP. type: string required: - port type: object tcpSocket: + description: 'TCPSocket specifies an action involving + a TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, + defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access + on the container. Number must be in the range + 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1877,27 +3907,55 @@ spec: type: object type: object livenessProbe: + description: 'Periodic probe of container liveness. Container + will be restarted if the probe fails. Controllers may set + default LivenessProbe if no liveness probe is provided. To + ignore defaulting, set the value to empty LivenessProbe "{}". + Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1905,73 +3963,143 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object nodeSelector: additionalProperties: type: string + description: 'NodeSelector is a selector which must be true + for the pod to fit on a node. Selector which must match a + node''s labels for the pod to be scheduled on that node. More + info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object priority: + description: The priority value. Various system components use + this field to find the priority of the pod. When Priority + Admission Controller is enabled, it prevents users from setting + this field. The admission controller populates this field + from PriorityClassName. The higher the value, the higher the + priority. format: int32 type: integer priorityClassName: + description: If specified, indicates the pod's priority. "system-node-critical" + and "system-cluster-critical" are two special keywords which + indicate the highest priorities with the former being the + highest priority. Any other name must be defined by creating + a PriorityClass object with that name. If not specified, the + pod priority will be default or zero if there is no default. type: string readinessProbe: + description: 'Periodic probe of container service readiness. + Container will be removed from service endpoints if the probe + fails. Cannot be updated. Controllers may set default ReadinessProbe + if no readyness probe is provided. To ignore defaulting, set + the value to empty ReadynessProbe "{}". More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: + description: One and only one of the following should be + specified. Exec specifies the action to take. properties: command: + description: Command is the command line to execute + inside the container, the working directory for the + command is root ('/') in the container's filesystem. + The command is simply exec'd, it is not run inside + a shell, so traditional shell instructions ('|', etc) + won't work. To use a shell, you need to explicitly + call out to that shell. Exit status of 0 is treated + as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: + description: Minimum consecutive failures for the probe + to be considered failed after having succeeded. Defaults + to 3. Minimum value is 1. format: int32 type: integer httpGet: + description: HTTPGet specifies the http request to perform. properties: host: + description: Host name to connect to, defaults to the + pod IP. You probably want to set "Host" in httpHeaders + instead. type: string httpHeaders: + description: Custom headers to set in the request. HTTP + allows repeated headers. items: + description: HTTPHeader describes a custom header + to be used in HTTP probes properties: name: + description: The header field name type: string value: + description: The header field value type: string required: - name @@ -1979,90 +4107,181 @@ spec: type: object type: array path: + description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string + description: Name or number of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: + description: Scheme to use for connecting to the host. + Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: + description: 'Number of seconds after the container has + started before liveness probes are initiated. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: + description: How often (in seconds) to perform the probe. + Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: + description: Minimum consecutive successes for the probe + to be considered successful after having failed. Defaults + to 1. Must be 1 for liveness and startup. Minimum value + is 1. format: int32 type: integer tcpSocket: + description: 'TCPSocket specifies an action involving a + TCP port. TCP hooks not yet supported TODO: implement + a realistic TCP lifecycle hook' properties: host: + description: 'Optional: Host name to connect to, defaults + to the pod IP.' type: string port: anyOf: - type: integer - type: string + description: Number or name of the port to access on + the container. Number must be in the range 1 to 65535. + Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object timeoutSeconds: + description: 'Number of seconds after which the probe times + out. Defaults to 1 second. Minimum value is 1. More info: + https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: + description: Compute Resources required by the sidecar container. properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. More info: + https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object schedulerName: + description: If specified, the pod will be dispatched by specified + scheduler. If not specified, the pod will be dispatched by + default scheduler. type: string securityContext: + description: 'SecurityContext holds pod-level security attributes + and common container settings. Optional: Defaults to empty. See + type description for default values of each field.' properties: fsGroup: + description: "A special supplemental group that applies + to all containers in a pod. Some volume types allow the + Kubelet to change the ownership of that volume to be owned + by the pod: \n 1. The owning GID will be the FSGroup 2. + The setgid bit is set (new files created in the volume + will be owned by FSGroup) 3. The permission bits are OR'd + with rw-rw---- \n If unset, the Kubelet will not modify + the ownership and permissions of any volume." format: int64 type: integer runAsGroup: + description: The GID to run the entrypoint of the container + process. Uses runtime default if unset. May also be set + in SecurityContext. If set in both SecurityContext and + PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. format: int64 type: integer runAsNonRoot: + description: Indicates that the container must run as a + non-root user. If true, the Kubelet will validate the + image at runtime to ensure that it does not run as UID + 0 (root) and fail to start the container if it does. If + unset or false, no such validation will be performed. + May also be set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. type: boolean runAsUser: + description: The UID to run the entrypoint of the container + process. Defaults to user specified in image metadata + if unspecified. May also be set in SecurityContext. If + set in both SecurityContext and PodSecurityContext, the + value specified in SecurityContext takes precedence for + that container. format: int64 type: integer seLinuxOptions: + description: The SELinux context to be applied to all containers. + If unspecified, the container runtime will allocate a + random SELinux context for each container. May also be + set in SecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence for that container. properties: level: + description: Level is SELinux level label that applies + to the container. type: string role: + description: Role is a SELinux role label that applies + to the container. type: string type: + description: Type is a SELinux type label that applies + to the container. type: string user: + description: User is a SELinux user label that applies + to the container. type: string type: object supplementalGroups: + description: A list of groups applied to the first process + run in each container, in addition to the container's + primary GID. If unspecified, no groups will be added + to any container. items: format: int64 type: integer type: array sysctls: + description: Sysctls hold a list of namespaced sysctls used + for the pod. Pods with unsupported sysctls (by the container + runtime) might fail to launch. items: + description: Sysctl defines a kernel parameter to be set properties: name: + description: Name of a property to set type: string value: + description: Value of a property to set type: string required: - name @@ -2070,75 +4289,193 @@ spec: type: object type: array windowsOptions: + description: The Windows specific settings applied to all + containers. If unspecified, the options within a container's + SecurityContext will be used. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. properties: gmsaCredentialSpec: + description: GMSACredentialSpec is where the GMSA admission + webhook (https://github.com/kubernetes-sigs/windows-gmsa) + inlines the contents of the GMSA credential spec named + by the GMSACredentialSpecName field. This field is + alpha-level and is only honored by servers that enable + the WindowsGMSA feature flag. type: string gmsaCredentialSpecName: + description: GMSACredentialSpecName is the name of the + GMSA credential spec to use. This field is alpha-level + and is only honored by servers that enable the WindowsGMSA + feature flag. type: string runAsUserName: + description: The UserName in Windows to run the entrypoint + of the container process. Defaults to the user specified + in image metadata if unspecified. May also be set + in PodSecurityContext. If set in both SecurityContext + and PodSecurityContext, the value specified in SecurityContext + takes precedence. This field is alpha-level and it + is only honored by servers that enable the WindowsRunAsUserName + feature flag. type: string type: object type: object serviceAccountName: + description: 'ServiceAccountName is the name of the ServiceAccount + to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string tolerations: + description: If specified, the pod's tolerations. items: + description: The pod this Toleration is attached to tolerates + any taint that matches the triple using + the matching operator . properties: effect: + description: Effect indicates the taint effect to match. + Empty means match all taint effects. When specified, + allowed values are NoSchedule, PreferNoSchedule and + NoExecute. type: string key: + description: Key is the taint key that the toleration + applies to. Empty means match all taint keys. If the + key is empty, operator must be Exists; this combination + means to match all values and all keys. type: string operator: + description: Operator represents a key's relationship + to the value. Valid operators are Exists and Equal. + Defaults to Equal. Exists is equivalent to wildcard + for value, so that a pod can tolerate all taints of + a particular category. type: string tolerationSeconds: + description: TolerationSeconds represents the period of + time the toleration (which must be of effect NoExecute, + otherwise this field is ignored) tolerates the taint. + By default, it is not set, which means tolerate the + taint forever (do not evict). Zero and negative values + will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: + description: Value is the taint value the toleration matches + to. If the operator is Exists, the value should be empty, + otherwise just a regular string. type: string type: object type: array type: object type: object replicas: + description: Number of instances to deploy for a MySQL database. format: int32 type: integer serviceTemplate: + description: ServiceTemplate is an optional configuration for service + used to expose database properties: metadata: + description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata' properties: annotations: additionalProperties: type: string + description: 'Annotations is an unstructured key value map stored + with a resource that may be set by external tools to store + and retrieve arbitrary metadata. They are not queryable and + should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' type: object type: object spec: + description: 'Specification of the desired behavior of the service. + More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status' properties: clusterIP: + description: 'clusterIP is the IP address of the service and + is usually assigned randomly by the master. If an address + is specified manually and is not in use by others, it will + be allocated to the service; otherwise, creation of the service + will fail. This field can not be changed through updates. + Valid values are "None", empty string (""), or a valid IP + address. "None" can be specified for headless services when + proxying is not required. Only applies to types ClusterIP, + NodePort, and LoadBalancer. Ignored if type is ExternalName. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' type: string externalIPs: + description: externalIPs is a list of IP addresses for which + nodes in the cluster will also accept traffic for this service. These + IPs are not managed by Kubernetes. The user is responsible + for ensuring that traffic arrives at a node with this IP. A + common example is external load-balancers that are not part + of the Kubernetes system. items: type: string type: array externalTrafficPolicy: + description: externalTrafficPolicy denotes if this Service desires + to route external traffic to node-local or cluster-wide endpoints. + "Local" preserves the client source IP and avoids a second + hop for LoadBalancer and Nodeport type services, but risks + potentially imbalanced traffic spreading. "Cluster" obscures + the client source IP and may cause a second hop to another + node, but should have good overall load-spreading. type: string healthCheckNodePort: + description: healthCheckNodePort specifies the healthcheck nodePort + for the service. If not specified, HealthCheckNodePort is + created by the service api backend with the allocated nodePort. + Will use user-specified nodePort value if specified by the + client. Only effects when Type is set to LoadBalancer and + ExternalTrafficPolicy is set to Local. format: int32 type: integer loadBalancerIP: + description: 'Only applies to Service Type: LoadBalancer LoadBalancer + will get created with the IP specified in this field. This + feature depends on whether the underlying cloud-provider supports + specifying the loadBalancerIP when a load balancer is created. + This field will be ignored if the cloud-provider does not + support the feature.' type: string loadBalancerSourceRanges: + description: 'If specified and supported by the platform, this + will restrict traffic through the cloud-provider load-balancer + will be restricted to the specified client IPs. This field + will be ignored if the cloud-provider does not support the + feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/' items: type: string type: array ports: + description: 'The list of ports that are exposed by this service. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies' items: + description: ServicePort contains information on service's + port. properties: name: + description: The name of this port within the service. + This must be a DNS_LABEL. All ports within a ServiceSpec + must have unique names. This maps to the 'Name' field + in EndpointPort objects. Optional if only one ServicePort + is defined on this service. type: string nodePort: + description: 'The port on each node on which this service + is exposed when type=NodePort or LoadBalancer. Usually + assigned by the system. If specified, it will be allocated + to the service if unused or else creation of the service + will fail. Default is to auto-allocate a port if the + ServiceType of this Service requires one. More info: + https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport' format: int32 type: integer port: + description: The port that will be exposed by this service. format: int32 type: integer required: @@ -2146,57 +4483,120 @@ spec: type: object type: array sessionAffinityConfig: + description: sessionAffinityConfig contains the configurations + of session affinity. properties: clientIP: + description: clientIP contains the configurations of Client + IP based session affinity. properties: timeoutSeconds: + description: timeoutSeconds specifies the seconds of + ClientIP type session sticky time. The value must + be >0 && <=86400(for 1 day) if ServiceAffinity == + "ClientIP". Default value is 10800(for 3 hours). format: int32 type: integer type: object type: object type: + description: 'type determines how the Service is exposed. Defaults + to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, + and LoadBalancer. "ExternalName" maps to the specified externalName. + "ClusterIP" allocates a cluster-internal IP address for load-balancing + to endpoints. Endpoints are determined by the selector or + if that is not specified, by manual construction of an Endpoints + object. If clusterIP is "None", no virtual IP is allocated + and the endpoints are published as a set of endpoints rather + than a stable IP. "NodePort" builds on ClusterIP and allocates + a port on every node which routes to the clusterIP. "LoadBalancer" + builds on NodePort and creates an external load-balancer (if + supported in the current cloud) which routes to the clusterIP. + More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types' type: string type: object type: object storage: + description: Storage spec to specify how storage shall be used. properties: accessModes: + description: 'AccessModes contains the desired access modes the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: + description: This field requires the VolumeSnapshotDataSource alpha + feature gate to be enabled and currently VolumeSnapshot is the + only supported data source. If the provisioner can support VolumeSnapshot + data source, it will create a new volume and data will be restored + to the volume at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created and the + failure will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being referenced. + If APIGroup is not specified, the specified Kind must be in + the core API group. For any other third-party types, APIGroup + is required. type: string kind: + description: Kind is the type of resource being referenced type: string name: + description: Name is the name of resource being referenced type: string required: - kind - name type: object resources: + description: 'Resources represents the minimum resources the volume + should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: additionalProperties: type: string + description: 'Limits describes the maximum amount of compute + resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object requests: additionalProperties: type: string + description: 'Requests describes the minimum amount of compute + resources required. If Requests is omitted for a container, + it defaults to Limits if that is explicitly specified, otherwise + to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' type: object type: object selector: + description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector requirements. + The requirements are ANDed. items: + description: A label selector requirement is a selector that + contains values, a key, and an operator that relates the + key and values. properties: key: + description: key is the label key that the selector applies + to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, Exists + and DoesNotExist. type: string values: + description: values is an array of string values. If the + operator is In or NotIn, the values array must be non-empty. + If the operator is Exists or DoesNotExist, the values + array must be empty. This array is replaced during a + strategic merge patch. items: type: string type: array @@ -2208,31 +4608,55 @@ spec: matchLabels: additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels map is equivalent to an element + of matchExpressions, whose key field is "key", the operator + is "In", and the values array contains only "value". The requirements + are ANDed. type: object type: object storageClassName: + description: 'Name of the StorageClass required by the claim. More + info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string type: object storageType: + description: StorageType can be durable (default) or ephemeral type: string terminationPolicy: + description: TerminationPolicy controls the delete operation for database type: string updateStrategy: + description: updateStrategy indicates the StatefulSetUpdateStrategy + that will be employed to update Pods in the StatefulSet when a revision + is made to Template. properties: rollingUpdate: + description: RollingUpdate is used to communicate parameters when + Type is RollingUpdateStatefulSetStrategyType. properties: partition: + description: Partition indicates the ordinal at which the StatefulSet + should be partitioned. Default value is 0. format: int32 type: integer type: object type: + description: Type indicates the type of the StatefulSetUpdateStrategy. + Default is RollingUpdate. type: string type: object version: + description: Version of Redis to be deployed. type: string required: - version @@ -2240,6 +4664,9 @@ spec: status: properties: observedGeneration: + description: observedGeneration is the most recent generation observed + for this resource. It corresponds to the resource's generation, which + is updated on mutation by the API Server. format: int64 type: integer phase: diff --git a/api/crds/kubedb.com_snapshots.yaml b/api/crds/kubedb.com_snapshots.yaml deleted file mode 100644 index e777c95b9b..0000000000 --- a/api/crds/kubedb.com_snapshots.yaml +++ /dev/null @@ -1,1961 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - app: kubedb - name: snapshots.kubedb.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.databaseName - name: DatabaseName - type: string - - JSONPath: .status.phase - name: Status - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: kubedb.com - names: - categories: - - datastore - - kubedb - - appscode - - all - kind: Snapshot - listKind: SnapshotList - plural: snapshots - shortNames: - - snap - singular: snapshot - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - azure: - properties: - container: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - b2: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - databaseName: - type: string - gcs: - properties: - bucket: - type: string - maxConnections: - format: int64 - type: integer - prefix: - type: string - type: object - local: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - mountPath: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - subPath: - type: string - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - type: object - podTemplate: - properties: - controller: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - args: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - type: object - podVolumeClaimSpec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - rest: - properties: - url: - type: string - type: object - s3: - properties: - bucket: - type: string - endpoint: - type: string - prefix: - type: string - region: - type: string - type: object - storageSecretName: - type: string - storageType: - type: string - swift: - properties: - container: - type: string - prefix: - type: string - type: object - required: - - databaseName - type: object - status: - properties: - completionTime: - format: date-time - type: string - observedGeneration: - format: int64 - type: integer - phase: - type: string - reason: - type: string - startTime: - format: date-time - type: string - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 451227d492..fbc6bc1770 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -7940,107 +7940,6 @@ } } }, - "/apis/kubedb.com/v1alpha1/dormantdatabases": { - "get": { - "description": "list or watch objects of kind DormantDatabase", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1DormantDatabaseForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "DormantDatabase" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, "/apis/kubedb.com/v1alpha1/elasticsearches": { "get": { "description": "list or watch objects of kind Elasticsearch", @@ -8647,9 +8546,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/dormantdatabases": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/elasticsearches": { "get": { - "description": "list or watch objects of kind DormantDatabase", + "description": "list or watch objects of kind Elasticsearch", "consumes": [ "*/*" ], @@ -8666,7 +8565,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "listKubedbComV1alpha1NamespacedElasticsearch", "parameters": [ { "uniqueItems": true, @@ -8729,7 +8628,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ElasticsearchList" } } }, @@ -8737,11 +8636,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "post": { - "description": "create a DormantDatabase", + "description": "create an Elasticsearch", "consumes": [ "*/*" ], @@ -8756,14 +8655,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "createKubedbComV1alpha1NamespacedElasticsearch", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } }, { @@ -8785,19 +8684,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } } }, @@ -8805,11 +8704,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "delete": { - "description": "delete collection of DormantDatabase", + "description": "delete collection of Elasticsearch", "consumes": [ "*/*" ], @@ -8824,7 +8723,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedDormantDatabase", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedElasticsearch", "parameters": [ { "uniqueItems": true, @@ -8930,7 +8829,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "parameters": [ @@ -8951,9 +8850,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/dormantdatabases/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/elasticsearches/{name}": { "get": { - "description": "read the specified DormantDatabase", + "description": "read the specified Elasticsearch", "consumes": [ "*/*" ], @@ -8968,12 +8867,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "readKubedbComV1alpha1NamespacedElasticsearch", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } } }, @@ -8981,11 +8880,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "put": { - "description": "replace the specified DormantDatabase", + "description": "replace the specified Elasticsearch", "consumes": [ "*/*" ], @@ -9000,14 +8899,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "replaceKubedbComV1alpha1NamespacedElasticsearch", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } }, { @@ -9029,13 +8928,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } } }, @@ -9043,11 +8942,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "delete": { - "description": "delete a DormantDatabase", + "description": "delete an Elasticsearch", "consumes": [ "*/*" ], @@ -9062,7 +8961,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "deleteKubedbComV1alpha1NamespacedElasticsearch", "parameters": [ { "name": "body", @@ -9118,11 +9017,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "patch": { - "description": "partially update the specified DormantDatabase", + "description": "partially update the specified Elasticsearch", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -9140,7 +9039,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "patchKubedbComV1alpha1NamespacedElasticsearch", "parameters": [ { "name": "body", @@ -9176,7 +9075,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" } } }, @@ -9184,14 +9083,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Elasticsearch" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the DormantDatabase", + "description": "name of the Elasticsearch", "name": "name", "in": "path", "required": true @@ -9213,9 +9112,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/elasticsearches": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/etcds": { "get": { - "description": "list or watch objects of kind Elasticsearch", + "description": "list or watch objects of kind Etcd", "consumes": [ "*/*" ], @@ -9232,7 +9131,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "listKubedbComV1alpha1NamespacedEtcd", "parameters": [ { "uniqueItems": true, @@ -9295,7 +9194,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ElasticsearchList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.EtcdList" } } }, @@ -9303,11 +9202,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "post": { - "description": "create an Elasticsearch", + "description": "create an Etcd", "consumes": [ "*/*" ], @@ -9322,14 +9221,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "createKubedbComV1alpha1NamespacedEtcd", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } }, { @@ -9351,19 +9250,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } } }, @@ -9371,11 +9270,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "delete": { - "description": "delete collection of Elasticsearch", + "description": "delete collection of Etcd", "consumes": [ "*/*" ], @@ -9390,7 +9289,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedElasticsearch", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedEtcd", "parameters": [ { "uniqueItems": true, @@ -9496,7 +9395,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "parameters": [ @@ -9517,9 +9416,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/elasticsearches/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/etcds/{name}": { "get": { - "description": "read the specified Elasticsearch", + "description": "read the specified Etcd", "consumes": [ "*/*" ], @@ -9534,12 +9433,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "readKubedbComV1alpha1NamespacedEtcd", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } } }, @@ -9547,11 +9446,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "put": { - "description": "replace the specified Elasticsearch", + "description": "replace the specified Etcd", "consumes": [ "*/*" ], @@ -9566,14 +9465,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "replaceKubedbComV1alpha1NamespacedEtcd", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } }, { @@ -9595,13 +9494,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } } }, @@ -9609,11 +9508,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "delete": { - "description": "delete an Elasticsearch", + "description": "delete an Etcd", "consumes": [ "*/*" ], @@ -9628,7 +9527,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "deleteKubedbComV1alpha1NamespacedEtcd", "parameters": [ { "name": "body", @@ -9684,11 +9583,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "patch": { - "description": "partially update the specified Elasticsearch", + "description": "partially update the specified Etcd", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -9706,7 +9605,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "patchKubedbComV1alpha1NamespacedEtcd", "parameters": [ { "name": "body", @@ -9742,7 +9641,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Elasticsearch" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" } } }, @@ -9750,14 +9649,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "Etcd" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the Elasticsearch", + "description": "name of the Etcd", "name": "name", "in": "path", "required": true @@ -9779,9 +9678,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/etcds": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mariadbs": { "get": { - "description": "list or watch objects of kind Etcd", + "description": "list or watch objects of kind MariaDB", "consumes": [ "*/*" ], @@ -9798,7 +9697,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedEtcd", + "operationId": "listKubedbComV1alpha1NamespacedMariaDB", "parameters": [ { "uniqueItems": true, @@ -9861,7 +9760,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.EtcdList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDBList" } } }, @@ -9869,11 +9768,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "post": { - "description": "create an Etcd", + "description": "create a MariaDB", "consumes": [ "*/*" ], @@ -9888,14 +9787,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedEtcd", + "operationId": "createKubedbComV1alpha1NamespacedMariaDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } }, { @@ -9917,19 +9816,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } } }, @@ -9937,11 +9836,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "delete": { - "description": "delete collection of Etcd", + "description": "delete collection of MariaDB", "consumes": [ "*/*" ], @@ -9956,7 +9855,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedEtcd", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMariaDB", "parameters": [ { "uniqueItems": true, @@ -10062,7 +9961,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "parameters": [ @@ -10083,9 +9982,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/etcds/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mariadbs/{name}": { "get": { - "description": "read the specified Etcd", + "description": "read the specified MariaDB", "consumes": [ "*/*" ], @@ -10100,12 +9999,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedEtcd", + "operationId": "readKubedbComV1alpha1NamespacedMariaDB", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } } }, @@ -10113,11 +10012,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "put": { - "description": "replace the specified Etcd", + "description": "replace the specified MariaDB", "consumes": [ "*/*" ], @@ -10132,14 +10031,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedEtcd", + "operationId": "replaceKubedbComV1alpha1NamespacedMariaDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } }, { @@ -10161,13 +10060,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } } }, @@ -10175,11 +10074,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "delete": { - "description": "delete an Etcd", + "description": "delete a MariaDB", "consumes": [ "*/*" ], @@ -10194,7 +10093,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedEtcd", + "operationId": "deleteKubedbComV1alpha1NamespacedMariaDB", "parameters": [ { "name": "body", @@ -10250,11 +10149,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "patch": { - "description": "partially update the specified Etcd", + "description": "partially update the specified MariaDB", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -10272,7 +10171,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedEtcd", + "operationId": "patchKubedbComV1alpha1NamespacedMariaDB", "parameters": [ { "name": "body", @@ -10308,7 +10207,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Etcd" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" } } }, @@ -10316,14 +10215,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "MariaDB" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the Etcd", + "description": "name of the MariaDB", "name": "name", "in": "path", "required": true @@ -10345,9 +10244,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mariadbs": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/memcacheds": { "get": { - "description": "list or watch objects of kind MariaDB", + "description": "list or watch objects of kind Memcached", "consumes": [ "*/*" ], @@ -10364,7 +10263,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedMariaDB", + "operationId": "listKubedbComV1alpha1NamespacedMemcached", "parameters": [ { "uniqueItems": true, @@ -10427,7 +10326,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDBList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MemcachedList" } } }, @@ -10435,11 +10334,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "post": { - "description": "create a MariaDB", + "description": "create a Memcached", "consumes": [ "*/*" ], @@ -10454,14 +10353,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedMariaDB", + "operationId": "createKubedbComV1alpha1NamespacedMemcached", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } }, { @@ -10483,19 +10382,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } } }, @@ -10503,11 +10402,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "delete": { - "description": "delete collection of MariaDB", + "description": "delete collection of Memcached", "consumes": [ "*/*" ], @@ -10522,7 +10421,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMariaDB", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMemcached", "parameters": [ { "uniqueItems": true, @@ -10628,7 +10527,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "parameters": [ @@ -10649,9 +10548,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mariadbs/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/memcacheds/{name}": { "get": { - "description": "read the specified MariaDB", + "description": "read the specified Memcached", "consumes": [ "*/*" ], @@ -10666,12 +10565,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedMariaDB", + "operationId": "readKubedbComV1alpha1NamespacedMemcached", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } } }, @@ -10679,11 +10578,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "put": { - "description": "replace the specified MariaDB", + "description": "replace the specified Memcached", "consumes": [ "*/*" ], @@ -10698,14 +10597,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedMariaDB", + "operationId": "replaceKubedbComV1alpha1NamespacedMemcached", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } }, { @@ -10727,13 +10626,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } } }, @@ -10741,11 +10640,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "delete": { - "description": "delete a MariaDB", + "description": "delete a Memcached", "consumes": [ "*/*" ], @@ -10760,7 +10659,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedMariaDB", + "operationId": "deleteKubedbComV1alpha1NamespacedMemcached", "parameters": [ { "name": "body", @@ -10816,11 +10715,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "patch": { - "description": "partially update the specified MariaDB", + "description": "partially update the specified Memcached", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -10838,7 +10737,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedMariaDB", + "operationId": "patchKubedbComV1alpha1NamespacedMemcached", "parameters": [ { "name": "body", @@ -10874,7 +10773,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" } } }, @@ -10882,14 +10781,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Memcached" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the MariaDB", + "description": "name of the Memcached", "name": "name", "in": "path", "required": true @@ -10911,9 +10810,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/memcacheds": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mongodbs": { "get": { - "description": "list or watch objects of kind Memcached", + "description": "list or watch objects of kind MongoDB", "consumes": [ "*/*" ], @@ -10930,7 +10829,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedMemcached", + "operationId": "listKubedbComV1alpha1NamespacedMongoDB", "parameters": [ { "uniqueItems": true, @@ -10993,7 +10892,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MemcachedList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDBList" } } }, @@ -11001,11 +10900,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "post": { - "description": "create a Memcached", + "description": "create a MongoDB", "consumes": [ "*/*" ], @@ -11020,14 +10919,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedMemcached", + "operationId": "createKubedbComV1alpha1NamespacedMongoDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } }, { @@ -11049,19 +10948,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } } }, @@ -11069,11 +10968,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "delete": { - "description": "delete collection of Memcached", + "description": "delete collection of MongoDB", "consumes": [ "*/*" ], @@ -11088,7 +10987,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMemcached", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMongoDB", "parameters": [ { "uniqueItems": true, @@ -11194,7 +11093,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "parameters": [ @@ -11215,9 +11114,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/memcacheds/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mongodbs/{name}": { "get": { - "description": "read the specified Memcached", + "description": "read the specified MongoDB", "consumes": [ "*/*" ], @@ -11232,12 +11131,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedMemcached", + "operationId": "readKubedbComV1alpha1NamespacedMongoDB", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } } }, @@ -11245,11 +11144,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "put": { - "description": "replace the specified Memcached", + "description": "replace the specified MongoDB", "consumes": [ "*/*" ], @@ -11264,14 +11163,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedMemcached", + "operationId": "replaceKubedbComV1alpha1NamespacedMongoDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } }, { @@ -11293,13 +11192,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } } }, @@ -11307,11 +11206,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "delete": { - "description": "delete a Memcached", + "description": "delete a MongoDB", "consumes": [ "*/*" ], @@ -11326,7 +11225,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedMemcached", + "operationId": "deleteKubedbComV1alpha1NamespacedMongoDB", "parameters": [ { "name": "body", @@ -11382,11 +11281,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "patch": { - "description": "partially update the specified Memcached", + "description": "partially update the specified MongoDB", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -11404,7 +11303,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedMemcached", + "operationId": "patchKubedbComV1alpha1NamespacedMongoDB", "parameters": [ { "name": "body", @@ -11440,7 +11339,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Memcached" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" } } }, @@ -11448,14 +11347,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MongoDB" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the Memcached", + "description": "name of the MongoDB", "name": "name", "in": "path", "required": true @@ -11477,9 +11376,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mongodbs": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mysqls": { "get": { - "description": "list or watch objects of kind MongoDB", + "description": "list or watch objects of kind MySQL", "consumes": [ "*/*" ], @@ -11496,7 +11395,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedMongoDB", + "operationId": "listKubedbComV1alpha1NamespacedMySQL", "parameters": [ { "uniqueItems": true, @@ -11559,7 +11458,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDBList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQLList" } } }, @@ -11567,11 +11466,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "post": { - "description": "create a MongoDB", + "description": "create a MySQL", "consumes": [ "*/*" ], @@ -11586,14 +11485,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedMongoDB", + "operationId": "createKubedbComV1alpha1NamespacedMySQL", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } }, { @@ -11615,19 +11514,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } } }, @@ -11635,11 +11534,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "delete": { - "description": "delete collection of MongoDB", + "description": "delete collection of MySQL", "consumes": [ "*/*" ], @@ -11654,7 +11553,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMongoDB", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMySQL", "parameters": [ { "uniqueItems": true, @@ -11760,7 +11659,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "parameters": [ @@ -11781,9 +11680,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mongodbs/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mysqls/{name}": { "get": { - "description": "read the specified MongoDB", + "description": "read the specified MySQL", "consumes": [ "*/*" ], @@ -11798,12 +11697,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedMongoDB", + "operationId": "readKubedbComV1alpha1NamespacedMySQL", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } } }, @@ -11811,11 +11710,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "put": { - "description": "replace the specified MongoDB", + "description": "replace the specified MySQL", "consumes": [ "*/*" ], @@ -11830,14 +11729,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedMongoDB", + "operationId": "replaceKubedbComV1alpha1NamespacedMySQL", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } }, { @@ -11859,13 +11758,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } } }, @@ -11873,11 +11772,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "delete": { - "description": "delete a MongoDB", + "description": "delete a MySQL", "consumes": [ "*/*" ], @@ -11892,7 +11791,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedMongoDB", + "operationId": "deleteKubedbComV1alpha1NamespacedMySQL", "parameters": [ { "name": "body", @@ -11948,11 +11847,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "patch": { - "description": "partially update the specified MongoDB", + "description": "partially update the specified MySQL", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -11970,7 +11869,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedMongoDB", + "operationId": "patchKubedbComV1alpha1NamespacedMySQL", "parameters": [ { "name": "body", @@ -12006,7 +11905,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" } } }, @@ -12014,14 +11913,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "MySQL" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the MongoDB", + "description": "name of the MySQL", "name": "name", "in": "path", "required": true @@ -12043,9 +11942,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mysqls": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/perconaxtradbs": { "get": { - "description": "list or watch objects of kind MySQL", + "description": "list or watch objects of kind PerconaXtraDB", "consumes": [ "*/*" ], @@ -12062,7 +11961,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedMySQL", + "operationId": "listKubedbComV1alpha1NamespacedPerconaXtraDB", "parameters": [ { "uniqueItems": true, @@ -12125,7 +12024,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQLList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBList" } } }, @@ -12133,11 +12032,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "post": { - "description": "create a MySQL", + "description": "create a PerconaXtraDB", "consumes": [ "*/*" ], @@ -12152,14 +12051,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedMySQL", + "operationId": "createKubedbComV1alpha1NamespacedPerconaXtraDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } }, { @@ -12181,19 +12080,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } } }, @@ -12201,11 +12100,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "delete": { - "description": "delete collection of MySQL", + "description": "delete collection of PerconaXtraDB", "consumes": [ "*/*" ], @@ -12220,7 +12119,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedMySQL", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPerconaXtraDB", "parameters": [ { "uniqueItems": true, @@ -12326,7 +12225,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "parameters": [ @@ -12347,9 +12246,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/mysqls/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/perconaxtradbs/{name}": { "get": { - "description": "read the specified MySQL", + "description": "read the specified PerconaXtraDB", "consumes": [ "*/*" ], @@ -12364,12 +12263,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedMySQL", + "operationId": "readKubedbComV1alpha1NamespacedPerconaXtraDB", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } } }, @@ -12377,11 +12276,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "put": { - "description": "replace the specified MySQL", + "description": "replace the specified PerconaXtraDB", "consumes": [ "*/*" ], @@ -12396,14 +12295,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedMySQL", + "operationId": "replaceKubedbComV1alpha1NamespacedPerconaXtraDB", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } }, { @@ -12425,13 +12324,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } } }, @@ -12439,11 +12338,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "delete": { - "description": "delete a MySQL", + "description": "delete a PerconaXtraDB", "consumes": [ "*/*" ], @@ -12458,7 +12357,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedMySQL", + "operationId": "deleteKubedbComV1alpha1NamespacedPerconaXtraDB", "parameters": [ { "name": "body", @@ -12514,11 +12413,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "patch": { - "description": "partially update the specified MySQL", + "description": "partially update the specified PerconaXtraDB", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -12536,7 +12435,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedMySQL", + "operationId": "patchKubedbComV1alpha1NamespacedPerconaXtraDB", "parameters": [ { "name": "body", @@ -12572,7 +12471,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" } } }, @@ -12580,14 +12479,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "PerconaXtraDB" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the MySQL", + "description": "name of the PerconaXtraDB", "name": "name", "in": "path", "required": true @@ -12609,9 +12508,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/perconaxtradbs": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/pgbouncers": { "get": { - "description": "list or watch objects of kind PerconaXtraDB", + "description": "list or watch objects of kind PgBouncer", "consumes": [ "*/*" ], @@ -12628,7 +12527,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "listKubedbComV1alpha1NamespacedPgBouncer", "parameters": [ { "uniqueItems": true, @@ -12691,7 +12590,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncerList" } } }, @@ -12699,11 +12598,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "post": { - "description": "create a PerconaXtraDB", + "description": "create a PgBouncer", "consumes": [ "*/*" ], @@ -12718,14 +12617,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "createKubedbComV1alpha1NamespacedPgBouncer", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } }, { @@ -12747,19 +12646,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } } }, @@ -12767,11 +12666,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "delete": { - "description": "delete collection of PerconaXtraDB", + "description": "delete collection of PgBouncer", "consumes": [ "*/*" ], @@ -12786,7 +12685,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPerconaXtraDB", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPgBouncer", "parameters": [ { "uniqueItems": true, @@ -12892,7 +12791,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "parameters": [ @@ -12913,9 +12812,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/perconaxtradbs/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/pgbouncers/{name}": { "get": { - "description": "read the specified PerconaXtraDB", + "description": "read the specified PgBouncer", "consumes": [ "*/*" ], @@ -12930,12 +12829,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "readKubedbComV1alpha1NamespacedPgBouncer", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } } }, @@ -12943,11 +12842,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "put": { - "description": "replace the specified PerconaXtraDB", + "description": "replace the specified PgBouncer", "consumes": [ "*/*" ], @@ -12962,14 +12861,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "replaceKubedbComV1alpha1NamespacedPgBouncer", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } }, { @@ -12991,13 +12890,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } } }, @@ -13005,11 +12904,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "delete": { - "description": "delete a PerconaXtraDB", + "description": "delete a PgBouncer", "consumes": [ "*/*" ], @@ -13024,7 +12923,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "deleteKubedbComV1alpha1NamespacedPgBouncer", "parameters": [ { "name": "body", @@ -13080,11 +12979,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "patch": { - "description": "partially update the specified PerconaXtraDB", + "description": "partially update the specified PgBouncer", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -13102,7 +13001,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "patchKubedbComV1alpha1NamespacedPgBouncer", "parameters": [ { "name": "body", @@ -13138,7 +13037,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" } } }, @@ -13146,14 +13045,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "PgBouncer" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the PerconaXtraDB", + "description": "name of the PgBouncer", "name": "name", "in": "path", "required": true @@ -13175,9 +13074,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/pgbouncers": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/postgreses": { "get": { - "description": "list or watch objects of kind PgBouncer", + "description": "list or watch objects of kind Postgres", "consumes": [ "*/*" ], @@ -13194,7 +13093,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "listKubedbComV1alpha1NamespacedPostgres", "parameters": [ { "uniqueItems": true, @@ -13257,7 +13156,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncerList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresList" } } }, @@ -13265,11 +13164,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "post": { - "description": "create a PgBouncer", + "description": "create Postgres", "consumes": [ "*/*" ], @@ -13284,14 +13183,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "createKubedbComV1alpha1NamespacedPostgres", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } }, { @@ -13313,19 +13212,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } } }, @@ -13333,11 +13232,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "delete": { - "description": "delete collection of PgBouncer", + "description": "delete collection of Postgres", "consumes": [ "*/*" ], @@ -13352,7 +13251,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPgBouncer", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPostgres", "parameters": [ { "uniqueItems": true, @@ -13458,7 +13357,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "parameters": [ @@ -13479,9 +13378,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/pgbouncers/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/postgreses/{name}": { "get": { - "description": "read the specified PgBouncer", + "description": "read the specified Postgres", "consumes": [ "*/*" ], @@ -13496,12 +13395,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "readKubedbComV1alpha1NamespacedPostgres", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } } }, @@ -13509,11 +13408,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "put": { - "description": "replace the specified PgBouncer", + "description": "replace the specified Postgres", "consumes": [ "*/*" ], @@ -13528,14 +13427,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "replaceKubedbComV1alpha1NamespacedPostgres", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } }, { @@ -13557,13 +13456,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } } }, @@ -13571,11 +13470,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "delete": { - "description": "delete a PgBouncer", + "description": "delete Postgres", "consumes": [ "*/*" ], @@ -13590,7 +13489,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "deleteKubedbComV1alpha1NamespacedPostgres", "parameters": [ { "name": "body", @@ -13646,11 +13545,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "patch": { - "description": "partially update the specified PgBouncer", + "description": "partially update the specified Postgres", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -13668,7 +13567,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "patchKubedbComV1alpha1NamespacedPostgres", "parameters": [ { "name": "body", @@ -13704,7 +13603,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncer" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" } } }, @@ -13712,14 +13611,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "Postgres" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the PgBouncer", + "description": "name of the Postgres", "name": "name", "in": "path", "required": true @@ -13741,9 +13640,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/postgreses": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/proxysqls": { "get": { - "description": "list or watch objects of kind Postgres", + "description": "list or watch objects of kind ProxySQL", "consumes": [ "*/*" ], @@ -13760,7 +13659,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedPostgres", + "operationId": "listKubedbComV1alpha1NamespacedProxySQL", "parameters": [ { "uniqueItems": true, @@ -13823,7 +13722,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQLList" } } }, @@ -13831,11 +13730,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "post": { - "description": "create Postgres", + "description": "create a ProxySQL", "consumes": [ "*/*" ], @@ -13850,14 +13749,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedPostgres", + "operationId": "createKubedbComV1alpha1NamespacedProxySQL", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } }, { @@ -13879,19 +13778,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } } }, @@ -13899,11 +13798,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "delete": { - "description": "delete collection of Postgres", + "description": "delete collection of ProxySQL", "consumes": [ "*/*" ], @@ -13918,7 +13817,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedPostgres", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedProxySQL", "parameters": [ { "uniqueItems": true, @@ -14024,7 +13923,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "parameters": [ @@ -14045,9 +13944,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/postgreses/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/proxysqls/{name}": { "get": { - "description": "read the specified Postgres", + "description": "read the specified ProxySQL", "consumes": [ "*/*" ], @@ -14062,12 +13961,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedPostgres", + "operationId": "readKubedbComV1alpha1NamespacedProxySQL", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } } }, @@ -14075,11 +13974,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "put": { - "description": "replace the specified Postgres", + "description": "replace the specified ProxySQL", "consumes": [ "*/*" ], @@ -14094,14 +13993,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedPostgres", + "operationId": "replaceKubedbComV1alpha1NamespacedProxySQL", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } }, { @@ -14123,13 +14022,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } } }, @@ -14137,11 +14036,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "delete": { - "description": "delete Postgres", + "description": "delete a ProxySQL", "consumes": [ "*/*" ], @@ -14156,7 +14055,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedPostgres", + "operationId": "deleteKubedbComV1alpha1NamespacedProxySQL", "parameters": [ { "name": "body", @@ -14212,11 +14111,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "patch": { - "description": "partially update the specified Postgres", + "description": "partially update the specified ProxySQL", "consumes": [ "application/json-patch+json", "application/merge-patch+json", @@ -14234,7 +14133,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "patchKubedbComV1alpha1NamespacedPostgres", + "operationId": "patchKubedbComV1alpha1NamespacedProxySQL", "parameters": [ { "name": "body", @@ -14270,7 +14169,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Postgres" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" } } }, @@ -14278,14 +14177,14 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "ProxySQL" } }, "parameters": [ { "uniqueItems": true, "type": "string", - "description": "name of the Postgres", + "description": "name of the ProxySQL", "name": "name", "in": "path", "required": true @@ -14307,9 +14206,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/proxysqls": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/redises": { "get": { - "description": "list or watch objects of kind ProxySQL", + "description": "list or watch objects of kind Redis", "consumes": [ "*/*" ], @@ -14326,7 +14225,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1NamespacedProxySQL", + "operationId": "listKubedbComV1alpha1NamespacedRedis", "parameters": [ { "uniqueItems": true, @@ -14389,7 +14288,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQLList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.RedisList" } } }, @@ -14397,11 +14296,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Redis" } }, "post": { - "description": "create a ProxySQL", + "description": "create Redis", "consumes": [ "*/*" ], @@ -14416,14 +14315,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "createKubedbComV1alpha1NamespacedProxySQL", + "operationId": "createKubedbComV1alpha1NamespacedRedis", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } }, { @@ -14445,19 +14344,19 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } }, "202": { "description": "Accepted", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } } }, @@ -14465,11 +14364,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Redis" } }, "delete": { - "description": "delete collection of ProxySQL", + "description": "delete collection of Redis", "consumes": [ "*/*" ], @@ -14484,7 +14383,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedProxySQL", + "operationId": "deleteKubedbComV1alpha1CollectionNamespacedRedis", "parameters": [ { "uniqueItems": true, @@ -14590,7 +14489,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Redis" } }, "parameters": [ @@ -14611,9 +14510,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/proxysqls/{name}": { + "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/redises/{name}": { "get": { - "description": "read the specified ProxySQL", + "description": "read the specified Redis", "consumes": [ "*/*" ], @@ -14628,12 +14527,12 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "readKubedbComV1alpha1NamespacedProxySQL", + "operationId": "readKubedbComV1alpha1NamespacedRedis", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } } }, @@ -14641,11 +14540,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Redis" } }, "put": { - "description": "replace the specified ProxySQL", + "description": "replace the specified Redis", "consumes": [ "*/*" ], @@ -14660,14 +14559,14 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "replaceKubedbComV1alpha1NamespacedProxySQL", + "operationId": "replaceKubedbComV1alpha1NamespacedRedis", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } }, { @@ -14689,13 +14588,13 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } }, "201": { "description": "Created", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } } }, @@ -14703,11 +14602,11 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Redis" } }, "delete": { - "description": "delete a ProxySQL", + "description": "delete Redis", "consumes": [ "*/*" ], @@ -14722,7 +14621,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "deleteKubedbComV1alpha1NamespacedProxySQL", + "operationId": "deleteKubedbComV1alpha1NamespacedRedis", "parameters": [ { "name": "body", @@ -14775,1753 +14674,24 @@ } }, "x-kubernetes-action": "delete", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "ProxySQL" - } - }, - "patch": { - "description": "partially update the specified ProxySQL", - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json", - "application/apply-patch+yaml" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "patchKubedbComV1alpha1NamespacedProxySQL", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", - "name": "fieldManager", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", - "name": "force", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQL" - } - } - }, - "x-kubernetes-action": "patch", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "ProxySQL" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "string", - "description": "name of the ProxySQL", - "name": "name", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/redises": { - "get": { - "description": "list or watch objects of kind Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1NamespacedRedis", - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.RedisList" - } - } - }, - "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", "kind": "Redis" } - }, - "post": { - "description": "create Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "createKubedbComV1alpha1NamespacedRedis", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", - "name": "fieldManager", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - }, - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - }, - "202": { - "description": "Accepted", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - } - }, - "x-kubernetes-action": "post", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "delete": { - "description": "delete collection of Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedRedis", - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "name": "gracePeriodSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "name": "orphanDependents", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", - "name": "propagationPolicy", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - } - }, - "x-kubernetes-action": "deletecollection", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/redises/{name}": { - "get": { - "description": "read the specified Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "readKubedbComV1alpha1NamespacedRedis", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - } - }, - "x-kubernetes-action": "get", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "put": { - "description": "replace the specified Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "replaceKubedbComV1alpha1NamespacedRedis", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", - "name": "fieldManager", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - }, - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - } - }, - "x-kubernetes-action": "put", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "delete": { - "description": "delete Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "deleteKubedbComV1alpha1NamespacedRedis", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "name": "gracePeriodSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "name": "orphanDependents", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", - "name": "propagationPolicy", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - }, - "202": { - "description": "Accepted", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - } - }, - "x-kubernetes-action": "delete", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "patch": { - "description": "partially update the specified Redis", - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json", - "application/apply-patch+yaml" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "patchKubedbComV1alpha1NamespacedRedis", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", - "name": "fieldManager", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", - "name": "force", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" - } - } - }, - "x-kubernetes-action": "patch", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "string", - "description": "name of the Redis", - "name": "name", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/snapshots": { - "get": { - "description": "list or watch objects of kind Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1NamespacedSnapshot", - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "post": { - "description": "create a Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "createKubedbComV1alpha1NamespacedSnapshot", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", - "name": "fieldManager", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - "202": { - "description": "Accepted", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - } - }, - "x-kubernetes-action": "post", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "delete": { - "description": "delete collection of Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "deleteKubedbComV1alpha1CollectionNamespacedSnapshot", - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "name": "gracePeriodSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "name": "orphanDependents", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", - "name": "propagationPolicy", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - } - }, - "x-kubernetes-action": "deletecollection", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/namespaces/{namespace}/snapshots/{name}": { - "get": { - "description": "read the specified Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "readKubedbComV1alpha1NamespacedSnapshot", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - } - }, - "x-kubernetes-action": "get", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "put": { - "description": "replace the specified Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "replaceKubedbComV1alpha1NamespacedSnapshot", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.", - "name": "fieldManager", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - "201": { - "description": "Created", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - } - }, - "x-kubernetes-action": "put", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "delete": { - "description": "delete a Snapshot", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "deleteKubedbComV1alpha1NamespacedSnapshot", - "parameters": [ - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.", - "name": "gracePeriodSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.", - "name": "orphanDependents", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.", - "name": "propagationPolicy", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - }, - "202": { - "description": "Accepted", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Status" - } - } - }, - "x-kubernetes-action": "delete", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "patch": { - "description": "partially update the specified Snapshot", - "consumes": [ - "application/json-patch+json", - "application/merge-patch+json", - "application/strategic-merge-patch+json", - "application/apply-patch+yaml" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "patchKubedbComV1alpha1NamespacedSnapshot", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" - } - }, - { - "uniqueItems": true, - "type": "string", - "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", - "name": "dryRun", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", - "name": "fieldManager", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", - "name": "force", - "in": "query" - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - } - }, - "x-kubernetes-action": "patch", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Snapshot" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "string", - "description": "name of the Snapshot", - "name": "name", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/perconaxtradbs": { - "get": { - "description": "list or watch objects of kind PerconaXtraDB", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1PerconaXtraDBForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "PerconaXtraDB" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/pgbouncers": { - "get": { - "description": "list or watch objects of kind PgBouncer", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1PgBouncerForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncerList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "PgBouncer" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/postgreses": { - "get": { - "description": "list or watch objects of kind Postgres", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1PostgresForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Postgres" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/proxysqls": { - "get": { - "description": "list or watch objects of kind ProxySQL", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1ProxySQLForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQLList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "ProxySQL" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/redises": { - "get": { - "description": "list or watch objects of kind Redis", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "listKubedbComV1alpha1RedisForAllNamespaces", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.RedisList" - } - } - }, - "x-kubernetes-action": "list", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "Redis" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/snapshots": { - "get": { - "description": "list or watch objects of kind Snapshot", + }, + "patch": { + "description": "partially update the specified Redis", "consumes": [ - "*/*" + "application/json-patch+json", + "application/merge-patch+json", + "application/strategic-merge-patch+json", + "application/apply-patch+yaml" ], "produces": [ "application/json", "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" + "application/vnd.kubernetes.protobuf" ], "schemes": [ "https" @@ -16529,57 +14699,69 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "listKubedbComV1alpha1SnapshotForAllNamespaces", + "operationId": "patchKubedbComV1alpha1NamespacedRedis", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Patch" + } + }, + { + "uniqueItems": true, + "type": "string", + "description": "When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed", + "name": "dryRun", + "in": "query" + }, + { + "uniqueItems": true, + "type": "string", + "description": "fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. This field is required for apply requests (application/apply-patch) but optional for non-apply patch types (JsonPatch, MergePatch, StrategicMergePatch).", + "name": "fieldManager", + "in": "query" + }, + { + "uniqueItems": true, + "type": "boolean", + "description": "Force is going to \"force\" Apply requests. It means user will re-acquire conflicting fields owned by other people. Force flag must be unset for non-apply patch requests.", + "name": "force", + "in": "query" + } + ], "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotList" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Redis" } } }, - "x-kubernetes-action": "list", + "x-kubernetes-action": "patch", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Snapshot" + "kind": "Redis" } }, "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, { "uniqueItems": true, "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" + "description": "name of the Redis", + "name": "name", + "in": "path", + "required": true }, { "uniqueItems": true, "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" + "description": "object name and auth scope, such as for teams and projects", + "name": "namespace", + "in": "path", + "required": true }, { "uniqueItems": true, @@ -16587,33 +14769,12 @@ "description": "If 'true', then the output is pretty printed.", "name": "pretty", "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" } ] }, - "/apis/kubedb.com/v1alpha1/watch/dormantdatabases": { + "/apis/kubedb.com/v1alpha1/perconaxtradbs": { "get": { - "description": "watch individual changes to a list of DormantDatabase. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "list or watch objects of kind PerconaXtraDB", "consumes": [ "*/*" ], @@ -16630,20 +14791,20 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1DormantDatabaseListForAllNamespaces", + "operationId": "listKubedbComV1alpha1PerconaXtraDBForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBList" } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "PerconaXtraDB" } }, "parameters": [ @@ -16712,9 +14873,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/elasticsearches": { + "/apis/kubedb.com/v1alpha1/pgbouncers": { "get": { - "description": "watch individual changes to a list of Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "list or watch objects of kind PgBouncer", "consumes": [ "*/*" ], @@ -16731,20 +14892,20 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1ElasticsearchListForAllNamespaces", + "operationId": "listKubedbComV1alpha1PgBouncerForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PgBouncerList" } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "PgBouncer" } }, "parameters": [ @@ -16813,9 +14974,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/etcds": { + "/apis/kubedb.com/v1alpha1/postgreses": { "get": { - "description": "watch individual changes to a list of Etcd. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "list or watch objects of kind Postgres", "consumes": [ "*/*" ], @@ -16832,20 +14993,20 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1EtcdListForAllNamespaces", + "operationId": "listKubedbComV1alpha1PostgresForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresList" } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "Postgres" } }, "parameters": [ @@ -16914,9 +15075,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/mariadbs": { + "/apis/kubedb.com/v1alpha1/proxysqls": { "get": { - "description": "watch individual changes to a list of MariaDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "list or watch objects of kind ProxySQL", "consumes": [ "*/*" ], @@ -16933,20 +15094,20 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1MariaDBListForAllNamespaces", + "operationId": "listKubedbComV1alpha1ProxySQLForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ProxySQLList" } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "ProxySQL" } }, "parameters": [ @@ -17015,9 +15176,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/memcacheds": { + "/apis/kubedb.com/v1alpha1/redises": { "get": { - "description": "watch individual changes to a list of Memcached. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "list or watch objects of kind Redis", "consumes": [ "*/*" ], @@ -17034,20 +15195,20 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1MemcachedListForAllNamespaces", + "operationId": "listKubedbComV1alpha1RedisForAllNamespaces", "responses": { "200": { "description": "OK", "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" + "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.RedisList" } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "list", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "Redis" } }, "parameters": [ @@ -17116,9 +15277,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/mongodbs": { + "/apis/kubedb.com/v1alpha1/watch/elasticsearches": { "get": { - "description": "watch individual changes to a list of MongoDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17135,7 +15296,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1MongoDBListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1ElasticsearchListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17148,7 +15309,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "Elasticsearch" } }, "parameters": [ @@ -17217,9 +15378,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/mysqls": { + "/apis/kubedb.com/v1alpha1/watch/etcds": { "get": { - "description": "watch individual changes to a list of MySQL. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Etcd. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17236,7 +15397,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1MySQLListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1EtcdListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17249,7 +15410,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "Etcd" } }, "parameters": [ @@ -17318,9 +15479,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/dormantdatabases": { + "/apis/kubedb.com/v1alpha1/watch/mariadbs": { "get": { - "description": "watch individual changes to a list of DormantDatabase. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of MariaDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17337,7 +15498,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedDormantDatabaseList", + "operationId": "watchKubedbComV1alpha1MariaDBListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17350,7 +15511,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "MariaDB" } }, "parameters": [ @@ -17389,14 +15550,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -17427,9 +15580,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/dormantdatabases/{name}": { + "/apis/kubedb.com/v1alpha1/watch/memcacheds": { "get": { - "description": "watch changes to an object of kind DormantDatabase. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch individual changes to a list of Memcached. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17446,7 +15599,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedDormantDatabase", + "operationId": "watchKubedbComV1alpha1MemcachedListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17455,11 +15608,11 @@ } } }, - "x-kubernetes-action": "watch", + "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "DormantDatabase" + "kind": "Memcached" } }, "parameters": [ @@ -17498,22 +15651,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "name of the DormantDatabase", - "name": "name", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -17544,9 +15681,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/elasticsearches": { + "/apis/kubedb.com/v1alpha1/watch/mongodbs": { "get": { - "description": "watch individual changes to a list of Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of MongoDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17563,7 +15700,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedElasticsearchList", + "operationId": "watchKubedbComV1alpha1MongoDBListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17576,7 +15713,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "MongoDB" } }, "parameters": [ @@ -17615,14 +15752,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -17653,9 +15782,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/elasticsearches/{name}": { + "/apis/kubedb.com/v1alpha1/watch/mysqls": { "get": { - "description": "watch changes to an object of kind Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch individual changes to a list of MySQL. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17672,7 +15801,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedElasticsearch", + "operationId": "watchKubedbComV1alpha1MySQLListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -17681,11 +15810,11 @@ } } }, - "x-kubernetes-action": "watch", + "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Elasticsearch" + "kind": "MySQL" } }, "parameters": [ @@ -17724,22 +15853,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "name of the Elasticsearch", - "name": "name", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -17770,9 +15883,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/etcds": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/elasticsearches": { "get": { - "description": "watch individual changes to a list of Etcd. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -17789,7 +15902,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedEtcdList", + "operationId": "watchKubedbComV1alpha1NamespacedElasticsearchList", "responses": { "200": { "description": "OK", @@ -17802,7 +15915,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "Elasticsearch" } }, "parameters": [ @@ -17879,9 +15992,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/etcds/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/elasticsearches/{name}": { "get": { - "description": "watch changes to an object of kind Etcd. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind Elasticsearch. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -17898,7 +16011,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedEtcd", + "operationId": "watchKubedbComV1alpha1NamespacedElasticsearch", "responses": { "200": { "description": "OK", @@ -17911,7 +16024,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Etcd" + "kind": "Elasticsearch" } }, "parameters": [ @@ -17953,7 +16066,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Etcd", + "description": "name of the Elasticsearch", "name": "name", "in": "path", "required": true @@ -17996,9 +16109,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mariadbs": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/etcds": { "get": { - "description": "watch individual changes to a list of MariaDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Etcd. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -18015,7 +16128,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMariaDBList", + "operationId": "watchKubedbComV1alpha1NamespacedEtcdList", "responses": { "200": { "description": "OK", @@ -18028,7 +16141,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Etcd" } }, "parameters": [ @@ -18105,9 +16218,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mariadbs/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/etcds/{name}": { "get": { - "description": "watch changes to an object of kind MariaDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind Etcd. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -18124,7 +16237,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMariaDB", + "operationId": "watchKubedbComV1alpha1NamespacedEtcd", "responses": { "200": { "description": "OK", @@ -18137,7 +16250,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MariaDB" + "kind": "Etcd" } }, "parameters": [ @@ -18179,7 +16292,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the MariaDB", + "description": "name of the Etcd", "name": "name", "in": "path", "required": true @@ -18222,9 +16335,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/memcacheds": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mariadbs": { "get": { - "description": "watch individual changes to a list of Memcached. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of MariaDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -18241,7 +16354,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMemcachedList", + "operationId": "watchKubedbComV1alpha1NamespacedMariaDBList", "responses": { "200": { "description": "OK", @@ -18254,7 +16367,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MariaDB" } }, "parameters": [ @@ -18331,9 +16444,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/memcacheds/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mariadbs/{name}": { "get": { - "description": "watch changes to an object of kind Memcached. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind MariaDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -18350,7 +16463,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMemcached", + "operationId": "watchKubedbComV1alpha1NamespacedMariaDB", "responses": { "200": { "description": "OK", @@ -18363,7 +16476,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Memcached" + "kind": "MariaDB" } }, "parameters": [ @@ -18405,7 +16518,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Memcached", + "description": "name of the MariaDB", "name": "name", "in": "path", "required": true @@ -18448,9 +16561,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mongodbs": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/memcacheds": { "get": { - "description": "watch individual changes to a list of MongoDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Memcached. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -18467,7 +16580,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMongoDBList", + "operationId": "watchKubedbComV1alpha1NamespacedMemcachedList", "responses": { "200": { "description": "OK", @@ -18480,7 +16593,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "Memcached" } }, "parameters": [ @@ -18557,9 +16670,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mongodbs/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/memcacheds/{name}": { "get": { - "description": "watch changes to an object of kind MongoDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind Memcached. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -18576,7 +16689,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMongoDB", + "operationId": "watchKubedbComV1alpha1NamespacedMemcached", "responses": { "200": { "description": "OK", @@ -18589,7 +16702,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MongoDB" + "kind": "Memcached" } }, "parameters": [ @@ -18631,7 +16744,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the MongoDB", + "description": "name of the Memcached", "name": "name", "in": "path", "required": true @@ -18674,9 +16787,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mysqls": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mongodbs": { "get": { - "description": "watch individual changes to a list of MySQL. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of MongoDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -18693,7 +16806,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMySQLList", + "operationId": "watchKubedbComV1alpha1NamespacedMongoDBList", "responses": { "200": { "description": "OK", @@ -18706,7 +16819,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "MongoDB" } }, "parameters": [ @@ -18783,9 +16896,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mysqls/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mongodbs/{name}": { "get": { - "description": "watch changes to an object of kind MySQL. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind MongoDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -18802,7 +16915,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedMySQL", + "operationId": "watchKubedbComV1alpha1NamespacedMongoDB", "responses": { "200": { "description": "OK", @@ -18815,7 +16928,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "MySQL" + "kind": "MongoDB" } }, "parameters": [ @@ -18857,7 +16970,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the MySQL", + "description": "name of the MongoDB", "name": "name", "in": "path", "required": true @@ -18900,9 +17013,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/perconaxtradbs": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mysqls": { "get": { - "description": "watch individual changes to a list of PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of MySQL. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -18919,7 +17032,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPerconaXtraDBList", + "operationId": "watchKubedbComV1alpha1NamespacedMySQLList", "responses": { "200": { "description": "OK", @@ -18932,7 +17045,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "MySQL" } }, "parameters": [ @@ -19009,9 +17122,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/perconaxtradbs/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/mysqls/{name}": { "get": { - "description": "watch changes to an object of kind PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind MySQL. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -19028,7 +17141,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPerconaXtraDB", + "operationId": "watchKubedbComV1alpha1NamespacedMySQL", "responses": { "200": { "description": "OK", @@ -19041,7 +17154,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "MySQL" } }, "parameters": [ @@ -19083,7 +17196,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the PerconaXtraDB", + "description": "name of the MySQL", "name": "name", "in": "path", "required": true @@ -19126,9 +17239,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/pgbouncers": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/perconaxtradbs": { "get": { - "description": "watch individual changes to a list of PgBouncer. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -19145,7 +17258,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPgBouncerList", + "operationId": "watchKubedbComV1alpha1NamespacedPerconaXtraDBList", "responses": { "200": { "description": "OK", @@ -19158,7 +17271,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "PerconaXtraDB" } }, "parameters": [ @@ -19235,9 +17348,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/pgbouncers/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/perconaxtradbs/{name}": { "get": { - "description": "watch changes to an object of kind PgBouncer. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -19254,7 +17367,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPgBouncer", + "operationId": "watchKubedbComV1alpha1NamespacedPerconaXtraDB", "responses": { "200": { "description": "OK", @@ -19267,7 +17380,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "PerconaXtraDB" } }, "parameters": [ @@ -19309,7 +17422,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the PgBouncer", + "description": "name of the PerconaXtraDB", "name": "name", "in": "path", "required": true @@ -19352,9 +17465,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/postgreses": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/pgbouncers": { "get": { - "description": "watch individual changes to a list of Postgres. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of PgBouncer. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -19371,7 +17484,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPostgresList", + "operationId": "watchKubedbComV1alpha1NamespacedPgBouncerList", "responses": { "200": { "description": "OK", @@ -19384,7 +17497,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "PgBouncer" } }, "parameters": [ @@ -19461,9 +17574,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/postgreses/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/pgbouncers/{name}": { "get": { - "description": "watch changes to an object of kind Postgres. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch changes to an object of kind PgBouncer. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -19480,7 +17593,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedPostgres", + "operationId": "watchKubedbComV1alpha1NamespacedPgBouncer", "responses": { "200": { "description": "OK", @@ -19493,7 +17606,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "PgBouncer" } }, "parameters": [ @@ -19535,7 +17648,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Postgres", + "description": "name of the PgBouncer", "name": "name", "in": "path", "required": true @@ -19578,9 +17691,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/proxysqls": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/postgreses": { "get": { - "description": "watch individual changes to a list of ProxySQL. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Postgres. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -19597,7 +17710,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedProxySQLList", + "operationId": "watchKubedbComV1alpha1NamespacedPostgresList", "responses": { "200": { "description": "OK", @@ -19610,116 +17723,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" - } - }, - "parameters": [ - { - "uniqueItems": true, - "type": "boolean", - "description": "allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. If the feature gate WatchBookmarks is not enabled in apiserver, this field is ignored.\n\nThis field is beta.", - "name": "allowWatchBookmarks", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".\n\nThis field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.", - "name": "continue", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.", - "name": "fieldSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.", - "name": "labelSelector", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.\n\nThe server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.", - "name": "limit", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "object name and auth scope, such as for teams and projects", - "name": "namespace", - "in": "path", - "required": true - }, - { - "uniqueItems": true, - "type": "string", - "description": "If 'true', then the output is pretty printed.", - "name": "pretty", - "in": "query" - }, - { - "uniqueItems": true, - "type": "string", - "description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history. When specified for list: - if unset, then the result is returned from remote storage based on quorum-read flag; - if it's 0, then we simply return what we currently have in cache, no guarantee; - if set to non zero, then the result is at least as fresh as given rv.", - "name": "resourceVersion", - "in": "query" - }, - { - "uniqueItems": true, - "type": "integer", - "description": "Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.", - "name": "timeoutSeconds", - "in": "query" - }, - { - "uniqueItems": true, - "type": "boolean", - "description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.", - "name": "watch", - "in": "query" - } - ] - }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/proxysqls/{name}": { - "get": { - "description": "watch changes to an object of kind ProxySQL. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", - "consumes": [ - "*/*" - ], - "produces": [ - "application/json", - "application/yaml", - "application/vnd.kubernetes.protobuf", - "application/json;stream=watch", - "application/vnd.kubernetes.protobuf;stream=watch" - ], - "schemes": [ - "https" - ], - "tags": [ - "kubedbCom_v1alpha1" - ], - "operationId": "watchKubedbComV1alpha1NamespacedProxySQL", - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.WatchEvent" - } - } - }, - "x-kubernetes-action": "watch", - "x-kubernetes-group-version-kind": { - "group": "kubedb.com", - "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Postgres" } }, "parameters": [ @@ -19758,14 +17762,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "name of the ProxySQL", - "name": "name", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -19804,9 +17800,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/redises": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/postgreses/{name}": { "get": { - "description": "watch individual changes to a list of Redis. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch changes to an object of kind Postgres. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -19823,7 +17819,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedRedisList", + "operationId": "watchKubedbComV1alpha1NamespacedPostgres", "responses": { "200": { "description": "OK", @@ -19832,11 +17828,11 @@ } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Redis" + "kind": "Postgres" } }, "parameters": [ @@ -19875,6 +17871,14 @@ "name": "limit", "in": "query" }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the Postgres", + "name": "name", + "in": "path", + "required": true + }, { "uniqueItems": true, "type": "string", @@ -19913,9 +17917,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/redises/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/proxysqls": { "get": { - "description": "watch changes to an object of kind Redis. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch individual changes to a list of ProxySQL. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -19932,7 +17936,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedRedis", + "operationId": "watchKubedbComV1alpha1NamespacedProxySQLList", "responses": { "200": { "description": "OK", @@ -19941,11 +17945,11 @@ } } }, - "x-kubernetes-action": "watch", + "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Redis" + "kind": "ProxySQL" } }, "parameters": [ @@ -19984,14 +17988,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "name of the Redis", - "name": "name", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -20030,9 +18026,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/snapshots": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/proxysqls/{name}": { "get": { - "description": "watch individual changes to a list of Snapshot. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch changes to an object of kind ProxySQL. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -20049,7 +18045,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedSnapshotList", + "operationId": "watchKubedbComV1alpha1NamespacedProxySQL", "responses": { "200": { "description": "OK", @@ -20058,11 +18054,11 @@ } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Snapshot" + "kind": "ProxySQL" } }, "parameters": [ @@ -20101,6 +18097,14 @@ "name": "limit", "in": "query" }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the ProxySQL", + "name": "name", + "in": "path", + "required": true + }, { "uniqueItems": true, "type": "string", @@ -20139,9 +18143,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/snapshots/{name}": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/redises": { "get": { - "description": "watch changes to an object of kind Snapshot. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", + "description": "watch individual changes to a list of Redis. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20158,7 +18162,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1NamespacedSnapshot", + "operationId": "watchKubedbComV1alpha1NamespacedRedisList", "responses": { "200": { "description": "OK", @@ -20167,11 +18171,11 @@ } } }, - "x-kubernetes-action": "watch", + "x-kubernetes-action": "watchlist", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Snapshot" + "kind": "Redis" } }, "parameters": [ @@ -20210,14 +18214,6 @@ "name": "limit", "in": "query" }, - { - "uniqueItems": true, - "type": "string", - "description": "name of the Snapshot", - "name": "name", - "in": "path", - "required": true - }, { "uniqueItems": true, "type": "string", @@ -20256,9 +18252,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/perconaxtradbs": { + "/apis/kubedb.com/v1alpha1/watch/namespaces/{namespace}/redises/{name}": { "get": { - "description": "watch individual changes to a list of PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch changes to an object of kind Redis. deprecated: use the 'watch' parameter with a list operation instead, filtered to a single item with the 'fieldSelector' parameter.", "consumes": [ "*/*" ], @@ -20275,7 +18271,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1PerconaXtraDBListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1NamespacedRedis", "responses": { "200": { "description": "OK", @@ -20284,11 +18280,11 @@ } } }, - "x-kubernetes-action": "watchlist", + "x-kubernetes-action": "watch", "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PerconaXtraDB" + "kind": "Redis" } }, "parameters": [ @@ -20327,6 +18323,22 @@ "name": "limit", "in": "query" }, + { + "uniqueItems": true, + "type": "string", + "description": "name of the Redis", + "name": "name", + "in": "path", + "required": true + }, + { + "uniqueItems": true, + "type": "string", + "description": "object name and auth scope, such as for teams and projects", + "name": "namespace", + "in": "path", + "required": true + }, { "uniqueItems": true, "type": "string", @@ -20357,9 +18369,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/pgbouncers": { + "/apis/kubedb.com/v1alpha1/watch/perconaxtradbs": { "get": { - "description": "watch individual changes to a list of PgBouncer. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of PerconaXtraDB. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20376,7 +18388,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1PgBouncerListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1PerconaXtraDBListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -20389,7 +18401,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "PgBouncer" + "kind": "PerconaXtraDB" } }, "parameters": [ @@ -20458,9 +18470,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/postgreses": { + "/apis/kubedb.com/v1alpha1/watch/pgbouncers": { "get": { - "description": "watch individual changes to a list of Postgres. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of PgBouncer. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20477,7 +18489,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1PostgresListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1PgBouncerListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -20490,7 +18502,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Postgres" + "kind": "PgBouncer" } }, "parameters": [ @@ -20559,9 +18571,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/proxysqls": { + "/apis/kubedb.com/v1alpha1/watch/postgreses": { "get": { - "description": "watch individual changes to a list of ProxySQL. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Postgres. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20578,7 +18590,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1ProxySQLListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1PostgresListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -20591,7 +18603,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "ProxySQL" + "kind": "Postgres" } }, "parameters": [ @@ -20660,9 +18672,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/redises": { + "/apis/kubedb.com/v1alpha1/watch/proxysqls": { "get": { - "description": "watch individual changes to a list of Redis. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of ProxySQL. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20679,7 +18691,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1RedisListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1ProxySQLListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -20692,7 +18704,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Redis" + "kind": "ProxySQL" } }, "parameters": [ @@ -20761,9 +18773,9 @@ } ] }, - "/apis/kubedb.com/v1alpha1/watch/snapshots": { + "/apis/kubedb.com/v1alpha1/watch/redises": { "get": { - "description": "watch individual changes to a list of Snapshot. deprecated: use the 'watch' parameter with a list operation instead.", + "description": "watch individual changes to a list of Redis. deprecated: use the 'watch' parameter with a list operation instead.", "consumes": [ "*/*" ], @@ -20780,7 +18792,7 @@ "tags": [ "kubedbCom_v1alpha1" ], - "operationId": "watchKubedbComV1alpha1SnapshotListForAllNamespaces", + "operationId": "watchKubedbComV1alpha1RedisListForAllNamespaces", "responses": { "200": { "description": "OK", @@ -20793,7 +18805,7 @@ "x-kubernetes-group-version-kind": { "group": "kubedb.com", "version": "v1alpha1", - "kind": "Snapshot" + "kind": "Redis" } }, "parameters": [ @@ -20965,15 +18977,11 @@ "description": "ElasticsearchVersionPodSecurityPolicy is the Elasticsearch pod security policies", "type": "object", "required": [ - "databasePolicyName", - "snapshotterPolicyName" + "databasePolicyName" ], "properties": { "databasePolicyName": { "type": "string" - }, - "snapshotterPolicyName": { - "type": "string" } } }, @@ -21383,15 +19391,11 @@ "description": "MongoDBVersionPodSecurityPolicy is the MongoDB pod security policies", "type": "object", "required": [ - "databasePolicyName", - "snapshotterPolicyName" + "databasePolicyName" ], "properties": { "databasePolicyName": { "type": "string" - }, - "snapshotterPolicyName": { - "type": "string" } } }, @@ -21546,15 +19550,11 @@ "description": "MySQLVersionPodSecurityPolicy is the MySQL pod security policies", "type": "object", "required": [ - "databasePolicyName", - "snapshotterPolicyName" + "databasePolicyName" ], "properties": { "databasePolicyName": { "type": "string" - }, - "snapshotterPolicyName": { - "type": "string" } } }, @@ -21839,15 +19839,11 @@ "description": "PostgresVersionPodSecurityPolicy is the Postgres pod security policies", "type": "object", "required": [ - "databasePolicyName", - "snapshotterPolicyName" + "databasePolicyName" ], "properties": { "databasePolicyName": { "type": "string" - }, - "snapshotterPolicyName": { - "type": "string" } } }, @@ -22150,50 +20146,6 @@ } } }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec": { - "type": "object", - "properties": { - "azure": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.AzureSpec" - }, - "b2": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.B2Spec" - }, - "cronExpression": { - "type": "string" - }, - "gcs": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.GCSSpec" - }, - "local": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.LocalSpec" - }, - "podTemplate": { - "description": "PodTemplate is an optional configuration for pods used to take database snapshots", - "$ref": "#/definitions/xyz.kmodules.offshoot-api.api.v1.PodTemplateSpec" - }, - "podVolumeClaimSpec": { - "description": "PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. If not given, database's PvcSpec will be used. If storageType is durable, then a PVC will be created using this PVCSpec. If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage].", - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" - }, - "rest": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.RestServerSpec" - }, - "s3": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.S3Spec" - }, - "storageSecretName": { - "type": "string" - }, - "storageType": { - "description": "StorageType can be durable or ephemeral. If not given, database storage type will be used.", - "type": "string" - }, - "swift": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.SwiftSpec" - } - } - }, "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.CertificateSpec": { "type": "object", "properties": { @@ -22301,134 +20253,36 @@ "type": "integer", "format": "int64" }, - "statsPeriodSeconds": { - "description": "StatsPeriodSeconds sets how often the averages shown in various SHOW commands are updated and how often aggregated statistics are written to the log.", - "type": "integer", - "format": "int64" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Databases": { - "type": "object", - "required": [ - "alias", - "databaseRef", - "databaseName" - ], - "properties": { - "alias": { - "description": "Alias to uniquely identify a target database running inside a specific Postgres instance.", - "type": "string" - }, - "databaseName": { - "description": "DatabaseName is the name of the target database inside a Postgres instance.", - "type": "string" - }, - "databaseRef": { - "description": "DatabaseRef specifies the database appbinding reference in any namespace.", - "$ref": "#/definitions/xyz.kmodules.custom-resources.apis.appcatalog.v1alpha1.AppReference" - }, - "databaseSecretRef": { - "description": "DatabaseSecretRef points to a secret that contains the credentials (username and password) of an existing user of this database. It is used to bind a single user to this specific database connection.", - "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase": { - "description": "Deprecated", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseSpec" - }, - "status": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseStatus" - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "kubedb.com", - "kind": "DormantDatabase", - "version": "v1alpha1" - } - ] - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseList": { - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "items": { - "description": "Items is a list of DormantDatabase CRD objects", - "type": "array", - "items": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabase" - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "kubedb.com", - "kind": "DormantDatabaseList", - "version": "v1alpha1" + "statsPeriodSeconds": { + "description": "StatsPeriodSeconds sets how often the averages shown in various SHOW commands are updated and how often aggregated statistics are written to the log.", + "type": "integer", + "format": "int64" } - ] + } }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseSpec": { + "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Databases": { "type": "object", "required": [ - "origin" + "alias", + "databaseRef", + "databaseName" ], "properties": { - "origin": { - "description": "Origin to store original database information", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Origin" - }, - "wipeOut": { - "description": "If true, invoke wipe out operation", - "type": "boolean" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseStatus": { - "type": "object", - "properties": { - "observedGeneration": { - "description": "observedGeneration is the most recent generation observed for this resource. It corresponds to the resource's generation, which is updated on mutation by the API Server.", - "type": "integer", - "format": "int64" - }, - "pausingTime": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" - }, - "phase": { + "alias": { + "description": "Alias to uniquely identify a target database running inside a specific Postgres instance.", "type": "string" }, - "reason": { + "databaseName": { + "description": "DatabaseName is the name of the target database inside a Postgres instance.", "type": "string" }, - "wipeOutTime": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + "databaseRef": { + "description": "DatabaseRef specifies the database appbinding reference in any namespace.", + "$ref": "#/definitions/xyz.kmodules.custom-resources.apis.appcatalog.v1alpha1.AppReference" + }, + "databaseSecretRef": { + "description": "DatabaseSecretRef points to a secret that contains the credentials (username and password) of an existing user of this database. It is used to bind a single user to this specific database connection.", + "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" } } }, @@ -22545,10 +20399,6 @@ "description": "Authentication plugin used by Elasticsearch cluster. If unset, defaults to SearchGuard. Deprecated: Use elasticsearchVersion.Spec.AuthPlugin instead", "type": "string" }, - "backupSchedule": { - "description": "BackupSchedule spec to specify how database backup will be taken", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec" - }, "certificateSecret": { "description": "Secret with SSL certificates", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" @@ -22709,10 +20559,6 @@ "version" ], "properties": { - "backupSchedule": { - "description": "BackupSchedule spec to specify how database backup will be taken", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec" - }, "databaseSecret": { "description": "Database authentication secret", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" @@ -22797,10 +20643,6 @@ "scriptSource": { "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ScriptSourceSpec" }, - "snapshotSource": { - "description": "Deprecated", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotSourceSpec" - }, "stashRestoreSession": { "description": "Name of stash restoreSession in same namespace of kubedb object. ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22", "$ref": "#/definitions/io.k8s.api.core.v1.LocalObjectReference" @@ -23306,10 +21148,6 @@ "version" ], "properties": { - "backupSchedule": { - "description": "BackupSchedule spec to specify how database backup will be taken", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec" - }, "certificateSecret": { "description": "Secret for KeyFile or SSL certificates. Contains `tls.pem` or keyfile `key.txt` depending on enableSSL.", "$ref": "#/definitions/io.k8s.api.core.v1.SecretVolumeSource" @@ -23501,10 +21339,6 @@ "version" ], "properties": { - "backupSchedule": { - "description": "BackupSchedule spec to specify how database backup will be taken", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec" - }, "configSource": { "description": "ConfigSource is an optional field to provide custom configuration file for database (i.e custom-mysql.cnf). If specified, this file will be used as configuration file otherwise default configuration file will be used.", "$ref": "#/definitions/io.k8s.api.core.v1.VolumeSource" @@ -23584,62 +21418,6 @@ } } }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Origin": { - "type": "object", - "required": [ - "spec" - ], - "properties": { - "metadata": { - "$ref": "#/definitions/xyz.kmodules.offshoot-api.api.v1.PartialObjectMeta" - }, - "spec": { - "description": "Origin Spec to store original database Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.OriginSpec" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.OriginSpec": { - "type": "object", - "properties": { - "elasticsearch": { - "description": "Elasticsearch Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.ElasticsearchSpec" - }, - "etcd": { - "description": "Etcd Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.EtcdSpec" - }, - "mariadb": { - "description": "MariaDB Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MariaDBSpec" - }, - "memcached": { - "description": "Memcached Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MemcachedSpec" - }, - "mongodb": { - "description": "MongoDB Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MongoDBSpec" - }, - "mysql": { - "description": "MySQL Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.MySQLSpec" - }, - "perconaxtradb": { - "description": "PerconaXtraDB Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBSpec" - }, - "postgres": { - "description": "Postgres Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresSpec" - }, - "redis": { - "description": "Redis Spec", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.RedisSpec" - } - } - }, "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB": { "type": "object", "properties": { @@ -23986,10 +21764,6 @@ "description": "Archive for wal files", "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.PostgresArchiverSpec" }, - "backupSchedule": { - "description": "BackupSchedule spec to specify how database backup will be taken", - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec" - }, "configSource": { "description": "ConfigSource is an optional field to provide custom configuration file for database (i.e postgresql.conf). If specified, this file will be used as configuration file otherwise default configuration file will be used.", "$ref": "#/definitions/io.k8s.api.core.v1.VolumeSource" @@ -24554,158 +22328,6 @@ } } }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot": { - "description": "Deprecated", - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta" - }, - "spec": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotSpec" - }, - "status": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotStatus" - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "kubedb.com", - "kind": "Snapshot", - "version": "v1alpha1" - } - ] - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotList": { - "type": "object", - "properties": { - "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - "type": "string" - }, - "items": { - "description": "Items is a list of Snapshot CRD objects", - "type": "array", - "items": { - "$ref": "#/definitions/dev.kubedb.apimachinery.apis.kubedb.v1alpha1.Snapshot" - } - }, - "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - "type": "string" - }, - "metadata": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta" - } - }, - "x-kubernetes-group-version-kind": [ - { - "group": "kubedb.com", - "kind": "SnapshotList", - "version": "v1alpha1" - } - ] - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotSourceSpec": { - "type": "object", - "required": [ - "namespace", - "name" - ], - "properties": { - "args": { - "description": "Arguments to the restore job", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotSpec": { - "type": "object", - "required": [ - "databaseName" - ], - "properties": { - "azure": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.AzureSpec" - }, - "b2": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.B2Spec" - }, - "databaseName": { - "description": "Database name", - "type": "string" - }, - "gcs": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.GCSSpec" - }, - "local": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.LocalSpec" - }, - "podTemplate": { - "description": "PodTemplate is an optional configuration for pods used to take database snapshots", - "$ref": "#/definitions/xyz.kmodules.offshoot-api.api.v1.PodTemplateSpec" - }, - "podVolumeClaimSpec": { - "description": "PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. If not given, database's PvcSpec will be used. If storageType is durable, then a PVC will be created using this PVCSpec. If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage].", - "$ref": "#/definitions/io.k8s.api.core.v1.PersistentVolumeClaimSpec" - }, - "rest": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.RestServerSpec" - }, - "s3": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.S3Spec" - }, - "storageSecretName": { - "type": "string" - }, - "storageType": { - "description": "StorageType can be durable or ephemeral. If not given, database storage type will be used.", - "type": "string" - }, - "swift": { - "$ref": "#/definitions/xyz.kmodules.objectstore-api.api.v1.SwiftSpec" - } - } - }, - "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.SnapshotStatus": { - "type": "object", - "properties": { - "completionTime": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" - }, - "observedGeneration": { - "description": "observedGeneration is the most recent generation observed for this resource. It corresponds to the resource's generation, which is updated on mutation by the API Server.", - "type": "integer", - "format": "int64" - }, - "phase": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "startTime": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" - } - } - }, "dev.kubedb.apimachinery.apis.kubedb.v1alpha1.TLSConfig": { "type": "object", "required": [ @@ -27904,47 +25526,6 @@ } } }, - "xyz.kmodules.offshoot-api.api.v1.PartialObjectMeta": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.", - "type": "object", - "properties": { - "annotations": { - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency", - "type": "string" - }, - "labels": { - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names", - "type": "string" - }, - "namespace": { - "description": "Namespace defines the space within each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces", - "type": "string" - }, - "ownerReferences": { - "description": "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller.", - "type": "array", - "items": { - "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference" - }, - "x-kubernetes-patch-merge-key": "uid", - "x-kubernetes-patch-strategy": "merge" - } - } - }, "xyz.kmodules.offshoot-api.api.v1.PodSpec": { "type": "object", "properties": { diff --git a/apis/catalog/v1alpha1/elasticsearch_version_types.go b/apis/catalog/v1alpha1/elasticsearch_version_types.go index c9e1a2a21d..40bc8a98aa 100644 --- a/apis/catalog/v1alpha1/elasticsearch_version_types.go +++ b/apis/catalog/v1alpha1/elasticsearch_version_types.go @@ -90,8 +90,7 @@ type ElasticsearchVersionInitContainer struct { // ElasticsearchVersionPodSecurityPolicy is the Elasticsearch pod security policies type ElasticsearchVersionPodSecurityPolicy struct { - DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` - SnapshotterPolicyName string `json:"snapshotterPolicyName" protobuf:"bytes,2,opt,name=snapshotterPolicyName"` + DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/apis/catalog/v1alpha1/generated.pb.go b/apis/catalog/v1alpha1/generated.pb.go index 94dd49ee9d..e288ecaa1c 100644 --- a/apis/catalog/v1alpha1/generated.pb.go +++ b/apis/catalog/v1alpha1/generated.pb.go @@ -1992,116 +1992,114 @@ func init() { } var fileDescriptor_d642f2ffe8fdeecc = []byte{ - // 1743 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0x4b, 0x6f, 0xdc, 0x54, - 0x14, 0xce, 0x4d, 0x32, 0x69, 0x7a, 0xfa, 0x0a, 0x4e, 0xda, 0x4e, 0x53, 0x3a, 0x49, 0x07, 0x55, - 0x2a, 0x8b, 0x7a, 0x68, 0x85, 0xa0, 0x6a, 0x95, 0x3e, 0x9c, 0x84, 0xbe, 0x92, 0x76, 0xea, 0x54, - 0x08, 0x10, 0xa2, 0xbd, 0x63, 0x5f, 0x3c, 0x26, 0x33, 0xe3, 0xa9, 0xed, 0x89, 0x9a, 0x1d, 0x2c, - 0x10, 0x2b, 0x24, 0x24, 0x96, 0x15, 0x65, 0xc1, 0x86, 0x9f, 0x81, 0x60, 0x93, 0x65, 0x1f, 0x12, - 0xb4, 0x54, 0x8a, 0xe8, 0xe4, 0x27, 0xb0, 0x63, 0x85, 0xfc, 0x98, 0x19, 0x5f, 0x3f, 0xa6, 0xbe, - 0xb6, 0x33, 0x6a, 0x76, 0xb1, 0x7d, 0x1e, 0xdf, 0x9c, 0x73, 0xef, 0xf7, 0xdd, 0x47, 0x60, 0x6e, - 0xb5, 0x55, 0x21, 0x72, 0x85, 0x97, 0xc9, 0x5a, 0x09, 0x37, 0xd5, 0x3a, 0x96, 0xaa, 0x6a, 0x83, - 0xe8, 0xeb, 0xd6, 0x83, 0x51, 0x92, 0xb0, 0x89, 0x6b, 0x9a, 0x52, 0x5a, 0x3b, 0x8d, 0x6b, 0xcd, - 0x2a, 0x3e, 0x5d, 0x52, 0x48, 0x83, 0xe8, 0xd8, 0x24, 0x32, 0xdf, 0xd4, 0x35, 0x53, 0xe3, 0x4e, - 0xf5, 0xdc, 0x79, 0xaf, 0xbb, 0xf5, 0x60, 0xf0, 0xae, 0x3b, 0xdf, 0x71, 0x9f, 0x3e, 0xa5, 0xa8, - 0x66, 0xb5, 0x55, 0xe1, 0x25, 0xad, 0x5e, 0x52, 0x34, 0x45, 0x2b, 0xd9, 0x51, 0x2a, 0xad, 0x2f, - 0xed, 0x27, 0xfb, 0xc1, 0xfe, 0xcb, 0x89, 0x3e, 0xfd, 0xfe, 0xea, 0x59, 0x83, 0x57, 0x35, 0x1a, - 0x58, 0x73, 0x55, 0x71, 0xc0, 0xd5, 0x89, 0x89, 0x4b, 0x6b, 0x01, 0x4c, 0xd3, 0xa5, 0x28, 0x2f, - 0xbd, 0xd5, 0x30, 0xd5, 0x3a, 0x09, 0x38, 0x7c, 0xf0, 0x3a, 0x07, 0x43, 0xaa, 0x92, 0x3a, 0xf6, - 0xfb, 0x15, 0xb7, 0x10, 0x4c, 0x2d, 0xd6, 0xb0, 0x61, 0xaa, 0x92, 0x41, 0xb0, 0x2e, 0x55, 0x3f, - 0x26, 0xba, 0xa1, 0x6a, 0x0d, 0xee, 0x1e, 0x8c, 0x5b, 0xe0, 0x64, 0x6c, 0xe2, 0x3c, 0x9a, 0x45, - 0x27, 0xf7, 0x9c, 0x79, 0x8f, 0x77, 0x72, 0xd0, 0x45, 0x6a, 0xae, 0x2a, 0x4e, 0xa1, 0x2c, 0x6b, - 0x7e, 0xed, 0x34, 0x7f, 0xab, 0xf2, 0x15, 0x91, 0xcc, 0x65, 0x62, 0x62, 0x81, 0xdb, 0xd8, 0x9c, - 0x19, 0x6a, 0x6f, 0xce, 0x40, 0xef, 0x9d, 0xd8, 0x8d, 0xca, 0xa9, 0x30, 0x6a, 0x34, 0x89, 0x94, - 0x1f, 0xb6, 0xa3, 0x5f, 0xe1, 0x99, 0xda, 0xc0, 0x87, 0x81, 0x5e, 0x69, 0x12, 0x49, 0xd8, 0xeb, - 0x26, 0x1d, 0xb5, 0x9e, 0x44, 0x3b, 0x45, 0x71, 0x1e, 0xde, 0x0e, 0xb3, 0x5f, 0xc0, 0x26, 0xae, - 0x60, 0x83, 0x70, 0xef, 0x40, 0x4e, 0xad, 0x63, 0x85, 0xd8, 0xbf, 0x74, 0xb7, 0xb0, 0xcf, 0x0d, - 0x91, 0xbb, 0x66, 0xbd, 0x14, 0x9d, 0x6f, 0x51, 0x41, 0x16, 0x1f, 0x34, 0x35, 0xdd, 0x24, 0x7a, - 0xbc, 0x20, 0x06, 0x1c, 0x0f, 0x0b, 0x72, 0xad, 0xa1, 0x9a, 0xf3, 0x5a, 0xc3, 0xc4, 0xd6, 0x4f, - 0x8e, 0x15, 0x89, 0x7b, 0x17, 0x76, 0xad, 0xdf, 0xb7, 0xdf, 0xd8, 0x15, 0xdc, 0x2d, 0x1c, 0x70, - 0xcd, 0x76, 0x7d, 0x7a, 0xdb, 0x31, 0xec, 0x7c, 0x2f, 0xb6, 0x11, 0xe4, 0xc3, 0xb2, 0x2e, 0xa9, - 0x86, 0xc9, 0x7d, 0x1e, 0x68, 0x34, 0x1f, 0xaf, 0xd1, 0x96, 0xb7, 0xdd, 0xe6, 0x09, 0x37, 0xf1, - 0x78, 0xe7, 0x8d, 0xa7, 0xc9, 0x55, 0xc8, 0xa9, 0x26, 0xa9, 0x1b, 0xf9, 0xe1, 0xd9, 0x91, 0x93, - 0x7b, 0xce, 0xcc, 0x67, 0xd0, 0x65, 0x4f, 0x3d, 0xac, 0xc8, 0xa2, 0x93, 0xa0, 0xb8, 0x81, 0xe0, - 0x44, 0x98, 0x79, 0x59, 0x93, 0x57, 0x88, 0xd4, 0xd2, 0x55, 0x73, 0xbd, 0xac, 0xd5, 0x54, 0x69, - 0x9d, 0xbb, 0x0e, 0x9c, 0xec, 0x76, 0xde, 0x79, 0x73, 0x13, 0xd7, 0x3b, 0xb5, 0x9e, 0x76, 0x63, - 0x73, 0x0b, 0x01, 0x0b, 0x31, 0xc4, 0x8b, 0x5b, 0x81, 0x83, 0x46, 0x03, 0x37, 0x8d, 0xaa, 0x66, - 0x9a, 0x44, 0xf7, 0x84, 0x73, 0x7a, 0x72, 0xcc, 0x0d, 0x77, 0x70, 0x25, 0xcc, 0x48, 0x0c, 0xf7, - 0x2d, 0x3e, 0x19, 0x0b, 0xef, 0x97, 0x35, 0xa2, 0xad, 0xbe, 0xaf, 0x39, 0x8f, 0x2e, 0xe4, 0x6e, - 0xdf, 0x5d, 0x2b, 0xb1, 0xf3, 0x9d, 0x5b, 0x06, 0xc0, 0x2d, 0xb3, 0x5a, 0xae, 0xb5, 0x14, 0xb5, - 0xe1, 0x22, 0x3a, 0xd5, 0x99, 0x93, 0x97, 0xbb, 0x5f, 0xfe, 0xdb, 0x9c, 0x39, 0x4c, 0xa5, 0xeb, - 0x7d, 0x12, 0x3d, 0x01, 0x38, 0x05, 0x86, 0xe5, 0x4a, 0x7e, 0xc4, 0x1e, 0x23, 0x37, 0x32, 0x68, - 0x64, 0xa7, 0xc4, 0x02, 0xb8, 0x98, 0x86, 0x17, 0x04, 0x71, 0x58, 0xae, 0x70, 0xeb, 0x30, 0x4e, - 0xdc, 0x59, 0x95, 0x1f, 0xcd, 0x2c, 0x5d, 0x67, 0xa2, 0xf6, 0xc6, 0x6b, 0xe7, 0x8d, 0xd8, 0x4d, - 0xc7, 0xd5, 0x21, 0x67, 0x6a, 0x5a, 0xcd, 0xc8, 0xe7, 0xec, 0xbc, 0x57, 0x33, 0xc8, 0x7b, 0xc7, - 0x8a, 0xd7, 0x1b, 0xb4, 0xf6, 0xa3, 0xe8, 0x64, 0xe1, 0xce, 0x00, 0xc8, 0xa4, 0xa9, 0x13, 0xc9, - 0xa2, 0xe4, 0xfc, 0xd8, 0x2c, 0x3a, 0x39, 0xde, 0x63, 0xcd, 0x85, 0xee, 0x17, 0xd1, 0x63, 0xc5, - 0x7d, 0x8f, 0x60, 0x9f, 0xea, 0xe5, 0x8b, 0xfc, 0x2e, 0x1b, 0x6b, 0x39, 0x03, 0xac, 0x14, 0x0f, - 0x09, 0x07, 0x5d, 0x24, 0xfb, 0xa8, 0xd7, 0x22, 0x9d, 0x9d, 0xfb, 0x05, 0xc1, 0x64, 0xd3, 0x37, - 0xc9, 0x54, 0x62, 0xe4, 0xc7, 0x6d, 0x54, 0x77, 0x32, 0x40, 0x15, 0x98, 0xc2, 0xc2, 0x51, 0x17, - 0xd9, 0x64, 0x39, 0x98, 0x58, 0x0c, 0x43, 0x53, 0xbc, 0x04, 0x47, 0x22, 0x9b, 0x13, 0x8f, 0xba, - 0x9f, 0x20, 0xd8, 0xb3, 0x68, 0x4a, 0xf2, 0xe0, 0x14, 0xf2, 0x1e, 0xa5, 0x90, 0x17, 0x58, 0x2b, - 0xd9, 0xc3, 0x1a, 0x29, 0x8c, 0xe7, 0x60, 0xd2, 0x63, 0xc6, 0xa6, 0x87, 0xb4, 0x2f, 0x9b, 0x0c, - 0x3e, 0x46, 0x70, 0xc0, 0xe3, 0x3c, 0x00, 0x21, 0xba, 0x4b, 0x0b, 0xd1, 0xb9, 0xe4, 0xc5, 0x8c, - 0xd0, 0x9f, 0x5f, 0x47, 0xa8, 0x9f, 0xc4, 0xca, 0xd5, 0x5f, 0xd8, 0xe4, 0xea, 0x74, 0x5a, 0x48, - 0x0e, 0x2e, 0x92, 0x53, 0x9b, 0x1e, 0x4e, 0x1d, 0x49, 0x9b, 0x25, 0x16, 0x95, 0xca, 0x1d, 0x2a, - 0x75, 0x28, 0xfc, 0x62, 0xf2, 0x74, 0xf1, 0x19, 0x34, 0x17, 0x87, 0x41, 0x8b, 0x1f, 0xc2, 0x84, - 0x3f, 0x7a, 0xbc, 0x61, 0xfb, 0x12, 0xc1, 0xc4, 0x32, 0xa9, 0x4b, 0x58, 0xaa, 0x92, 0x01, 0xf2, - 0x00, 0xa1, 0x78, 0x80, 0x75, 0x0d, 0xe5, 0x07, 0x1c, 0x49, 0x06, 0x17, 0x21, 0xef, 0xb7, 0x65, - 0x63, 0x84, 0x90, 0x00, 0x6c, 0xb4, 0xf0, 0x37, 0x82, 0x29, 0x7f, 0x84, 0x01, 0x70, 0x83, 0x4c, - 0x73, 0xc3, 0xc5, 0x94, 0x05, 0x8e, 0x20, 0x08, 0x0d, 0x8e, 0xfb, 0x2d, 0xb7, 0x75, 0x6d, 0x5a, - 0xfc, 0x77, 0x24, 0x58, 0x4d, 0x56, 0x5a, 0x92, 0x3c, 0xb4, 0x74, 0x25, 0x65, 0x5d, 0x22, 0xb9, - 0xa9, 0x15, 0xe0, 0xa6, 0xb4, 0xa9, 0x62, 0x11, 0x14, 0x4d, 0x1d, 0xa3, 0xb1, 0x16, 0x5f, 0x3f, - 0x47, 0x2c, 0x76, 0x72, 0x89, 0x96, 0x60, 0xaf, 0x1d, 0x0f, 0x09, 0x16, 0x3a, 0x7f, 0x21, 0xd8, - 0xbf, 0xac, 0x35, 0x14, 0x6d, 0x41, 0x18, 0x1c, 0x43, 0x49, 0x14, 0x43, 0x5d, 0x66, 0x2d, 0x03, - 0x05, 0x37, 0x92, 0x9f, 0xe6, 0xe0, 0x10, 0x6d, 0xc9, 0xc6, 0x4e, 0x01, 0x77, 0x36, 0x6e, 0x12, - 0xe0, 0x28, 0xed, 0xce, 0xbe, 0x67, 0x2f, 0xfe, 0x89, 0x80, 0xa3, 0x83, 0x0c, 0x80, 0xdd, 0x2a, - 0x34, 0xbb, 0xcd, 0xa5, 0x6a, 0x4e, 0x04, 0xb7, 0xfd, 0x8e, 0x60, 0x86, 0x36, 0xdc, 0x81, 0xdb, - 0xee, 0xcd, 0x9c, 0xbf, 0x3b, 0xac, 0x6c, 0x89, 0x3d, 0x6c, 0xb9, 0x98, 0xaa, 0xce, 0x91, 0x5c, - 0x69, 0x04, 0xb8, 0x32, 0x5d, 0xa2, 0x58, 0x4c, 0xa9, 0xd0, 0x4b, 0x39, 0x21, 0x55, 0xc6, 0x8c, - 0x57, 0x73, 0xdc, 0x77, 0x81, 0xfd, 0xf0, 0x98, 0x8d, 0xf2, 0x7a, 0x2a, 0x94, 0x49, 0x76, 0xc2, - 0x3f, 0x45, 0x88, 0x83, 0xb3, 0x3f, 0xbf, 0x99, 0x0a, 0x4f, 0x16, 0xd2, 0x70, 0x0e, 0x26, 0x43, - 0x5a, 0x11, 0x8f, 0xba, 0x9e, 0x21, 0xd8, 0xbb, 0xbc, 0xbe, 0x72, 0x7b, 0x69, 0x70, 0xa2, 0x82, - 0x29, 0x51, 0x61, 0x5e, 0x95, 0x79, 0xc0, 0x46, 0x4a, 0xca, 0x79, 0x98, 0xf2, 0xda, 0xb1, 0x09, - 0x8a, 0xcf, 0x99, 0x4d, 0x4e, 0x2e, 0xc1, 0x11, 0xaf, 0x73, 0x02, 0x31, 0x79, 0x6a, 0x6d, 0x46, - 0x3c, 0x21, 0x06, 0x20, 0x25, 0xf7, 0x68, 0x29, 0x39, 0x9f, 0xa2, 0x25, 0x11, 0x42, 0xf2, 0x1b, - 0x82, 0x63, 0x5e, 0xb3, 0x1d, 0x28, 0x23, 0x4f, 0x73, 0x74, 0x5f, 0x58, 0x45, 0xe4, 0xae, 0x47, - 0x44, 0xe6, 0x53, 0x54, 0x38, 0x52, 0x42, 0xee, 0x07, 0x24, 0x24, 0x4d, 0x9a, 0x58, 0x02, 0x42, - 0x68, 0x01, 0xb9, 0x94, 0x22, 0x5f, 0xd6, 0xf2, 0xf1, 0x6d, 0x84, 0x7c, 0x5c, 0x4d, 0x81, 0x31, - 0x89, 0x78, 0x3c, 0xec, 0x2b, 0x1e, 0x4b, 0x29, 0xd0, 0x64, 0x21, 0x1d, 0x67, 0xe1, 0xad, 0x40, - 0x13, 0xe2, 0xd1, 0xd4, 0x16, 0x82, 0xa9, 0x32, 0xd1, 0x25, 0xad, 0x81, 0x3f, 0x31, 0x75, 0x3c, - 0xc8, 0x5d, 0x49, 0xba, 0x1b, 0xc6, 0x30, 0xd0, 0xfd, 0x6e, 0x18, 0xc3, 0xec, 0x99, 0x6f, 0x18, - 0xc3, 0x82, 0xb0, 0x09, 0xcb, 0x55, 0x38, 0x1e, 0x16, 0x24, 0x81, 0xc0, 0xb4, 0x11, 0xe4, 0xc3, - 0x42, 0xbd, 0xf9, 0xd7, 0x86, 0x61, 0xa8, 0x23, 0x04, 0xc7, 0x80, 0x13, 0x61, 0xd6, 0xdb, 0x7b, - 0x32, 0xf3, 0x63, 0x2e, 0xbc, 0xb2, 0xac, 0x52, 0xa1, 0x78, 0xa4, 0xe2, 0x46, 0x06, 0x35, 0x8a, - 0x75, 0x23, 0x37, 0x92, 0x59, 0xba, 0x6d, 0x3b, 0xa5, 0x09, 0x5e, 0x91, 0x25, 0x3b, 0x9f, 0x79, - 0xed, 0x44, 0x4a, 0x79, 0x45, 0x36, 0x96, 0xe8, 0x8a, 0x2c, 0xd6, 0x78, 0x4d, 0xc0, 0xf1, 0x73, - 0x70, 0xa8, 0xac, 0x08, 0x5a, 0xab, 0x21, 0x11, 0x7d, 0x85, 0xe8, 0x6b, 0x44, 0xef, 0x50, 0x75, - 0xec, 0xc3, 0xf1, 0xae, 0xff, 0x4e, 0x39, 0x1c, 0xf7, 0x03, 0xee, 0x77, 0x38, 0xee, 0xb7, 0x65, - 0x3f, 0xdb, 0xf6, 0x47, 0x78, 0xf3, 0xcf, 0xb6, 0xfd, 0x88, 0x23, 0x58, 0xf4, 0xe5, 0x70, 0xf0, - 0xc7, 0xb1, 0x92, 0x59, 0x1d, 0xc6, 0x0c, 0x7b, 0xd4, 0x25, 0x3c, 0x40, 0x09, 0x1f, 0xbb, 0xc2, - 0x7e, 0x37, 0xe1, 0x98, 0xf3, 0x5a, 0x74, 0x93, 0x64, 0x70, 0xe8, 0x1c, 0x35, 0x1e, 0xb2, 0xa6, - 0xb3, 0xe2, 0x0b, 0x04, 0x07, 0xca, 0x9a, 0x61, 0x2a, 0x3a, 0x31, 0x06, 0x37, 0xb1, 0x64, 0x6a, - 0x62, 0xb1, 0x9e, 0xf9, 0xf8, 0xf0, 0x46, 0xce, 0xab, 0x0b, 0x70, 0xd8, 0x67, 0xca, 0xb6, 0x66, - 0x0a, 0xfa, 0xb3, 0x4d, 0xcb, 0xe7, 0x08, 0x26, 0x7d, 0x01, 0x06, 0x30, 0x2b, 0x25, 0x7a, 0x56, - 0x5e, 0x48, 0x57, 0xdc, 0x88, 0x49, 0xf9, 0x07, 0x82, 0x59, 0x9f, 0xe5, 0x0e, 0xdc, 0x4e, 0xbf, - 0x18, 0x0d, 0x34, 0x88, 0x95, 0x59, 0x2a, 0x9e, 0x65, 0xd2, 0x47, 0xe9, 0x4a, 0x1d, 0xb9, 0x42, - 0x32, 0x03, 0x74, 0x92, 0x32, 0x53, 0x2c, 0x36, 0xa9, 0xd2, 0xfb, 0xea, 0xf9, 0x74, 0x29, 0xb3, - 0xde, 0x5a, 0x3f, 0xea, 0xbb, 0xec, 0xb9, 0x95, 0x0e, 0x6c, 0x16, 0x2b, 0x9e, 0xf3, 0x30, 0x15, - 0x56, 0x82, 0x78, 0xcc, 0x61, 0xb3, 0xb2, 0xae, 0x3d, 0x18, 0xec, 0xa1, 0x68, 0x4a, 0x56, 0xa6, - 0xf1, 0xf6, 0x65, 0x65, 0xda, 0x34, 0x01, 0xab, 0xd2, 0x01, 0x76, 0x00, 0xab, 0xd2, 0x80, 0x23, - 0x58, 0xb5, 0x01, 0xb3, 0x3e, 0xc3, 0xed, 0xdd, 0x2b, 0x06, 0x5b, 0x61, 0x3f, 0x1a, 0xf7, 0x6b, - 0xf1, 0x5a, 0xf1, 0xcd, 0x68, 0xa0, 0x15, 0xac, 0xfc, 0x69, 0xc2, 0x78, 0xd3, 0xcd, 0x99, 0x94, - 0x45, 0xc3, 0x7f, 0x41, 0xaf, 0x9b, 0x9d, 0x37, 0x62, 0x37, 0x53, 0x16, 0x8c, 0x1a, 0x3e, 0x84, - 0x33, 0xdf, 0x6e, 0x3e, 0xea, 0xfb, 0x4f, 0x01, 0xb7, 0x52, 0xd6, 0x2a, 0x03, 0x9e, 0x7b, 0x86, - 0x60, 0xaf, 0x48, 0x64, 0xd5, 0xd8, 0x29, 0x97, 0x37, 0x5e, 0xb0, 0xfd, 0x2e, 0x6f, 0xbc, 0x76, - 0xcc, 0x97, 0x37, 0x5e, 0x67, 0x36, 0x7a, 0x7b, 0x8a, 0x60, 0xc2, 0xeb, 0xfd, 0xe6, 0x5f, 0xbd, - 0x78, 0xd1, 0x46, 0x10, 0xdb, 0x2a, 0x1c, 0xf3, 0x5a, 0x6d, 0x2f, 0xab, 0x6d, 0x8d, 0xd0, 0x15, - 0x1c, 0xe4, 0x25, 0x49, 0xd8, 0xa0, 0xd9, 0x86, 0x4b, 0x92, 0xb0, 0xe1, 0x95, 0x39, 0xf5, 0x3c, - 0xec, 0x4b, 0x3d, 0x4b, 0x29, 0x20, 0x67, 0xc0, 0x3b, 0x02, 0xbf, 0xf1, 0xaa, 0x30, 0xf4, 0xf8, - 0x55, 0x61, 0xe8, 0xf9, 0xab, 0xc2, 0xd0, 0xd7, 0xed, 0x02, 0xda, 0x68, 0x17, 0xd0, 0xe3, 0x76, - 0x01, 0x3d, 0x6f, 0x17, 0xd0, 0x3f, 0xed, 0x02, 0xfa, 0x61, 0xab, 0x30, 0xf4, 0xd9, 0x78, 0x27, - 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x49, 0x74, 0x31, 0xcb, 0xca, 0x35, 0x00, 0x00, + // 1697 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x99, 0xc9, 0x6f, 0xdb, 0x46, + 0x17, 0xc0, 0x4d, 0xcb, 0x72, 0x94, 0x97, 0xcd, 0x1f, 0xed, 0x2f, 0x51, 0x9c, 0xef, 0x93, 0x1d, + 0x15, 0x05, 0xd2, 0x43, 0xa8, 0x26, 0x28, 0xda, 0x20, 0x81, 0xb3, 0xd0, 0x76, 0xb3, 0xd9, 0x89, + 0x42, 0x07, 0x45, 0x5b, 0x14, 0x4d, 0x46, 0xe4, 0x94, 0x62, 0x2d, 0x89, 0x0a, 0x49, 0x19, 0xf1, + 0xad, 0x3d, 0x14, 0x3d, 0x15, 0x28, 0xd0, 0x63, 0xd0, 0xf4, 0xd0, 0x4b, 0xff, 0x94, 0x1c, 0xb3, + 0x00, 0x6d, 0xd2, 0x00, 0x46, 0x23, 0xff, 0x09, 0xbd, 0xf5, 0x54, 0x70, 0x91, 0xc4, 0xe1, 0xa2, + 0x70, 0x38, 0x94, 0x90, 0xdc, 0xc4, 0xe1, 0xdb, 0xf4, 0xde, 0xcc, 0x6f, 0x86, 0xf3, 0x60, 0x69, + 0xb3, 0x53, 0xc3, 0x4a, 0x4d, 0x50, 0xf0, 0x56, 0x05, 0xb5, 0xb5, 0x26, 0x92, 0xeb, 0x5a, 0x0b, + 0x1b, 0xdb, 0xf6, 0x83, 0x59, 0x91, 0x91, 0x85, 0x1a, 0xba, 0x5a, 0xd9, 0x3a, 0x85, 0x1a, 0xed, + 0x3a, 0x3a, 0x55, 0x51, 0x71, 0x0b, 0x1b, 0xc8, 0xc2, 0x8a, 0xd0, 0x36, 0x74, 0x4b, 0xe7, 0x4f, + 0x0e, 0xd4, 0x05, 0xbf, 0xba, 0xfd, 0x60, 0x0a, 0x9e, 0xba, 0xd0, 0x53, 0x9f, 0x3f, 0xa9, 0x6a, + 0x56, 0xbd, 0x53, 0x13, 0x64, 0xbd, 0x59, 0x51, 0x75, 0x55, 0xaf, 0x38, 0x56, 0x6a, 0x9d, 0xaf, + 0x9c, 0x27, 0xe7, 0xc1, 0xf9, 0xe5, 0x5a, 0x9f, 0xff, 0x60, 0xf3, 0x8c, 0x29, 0x68, 0x3a, 0x19, + 0x58, 0x7b, 0x53, 0x75, 0x83, 0x6b, 0x62, 0x0b, 0x55, 0xb6, 0x42, 0x31, 0xcd, 0x57, 0xe2, 0xb4, + 0x8c, 0x4e, 0xcb, 0xd2, 0x9a, 0x38, 0xa4, 0xf0, 0xe1, 0xeb, 0x14, 0x4c, 0xb9, 0x8e, 0x9b, 0x28, + 0xa8, 0x57, 0xde, 0xe5, 0x60, 0x6e, 0xb5, 0x81, 0x4c, 0x4b, 0x93, 0x4d, 0x8c, 0x0c, 0xb9, 0xfe, + 0x09, 0x36, 0x4c, 0x4d, 0x6f, 0xf1, 0x77, 0xa1, 0x60, 0x07, 0xa7, 0x20, 0x0b, 0x15, 0xb9, 0x45, + 0xee, 0xc4, 0xbe, 0xd3, 0xef, 0x0b, 0xae, 0x0f, 0x32, 0x49, 0xed, 0x4d, 0xd5, 0x4d, 0x94, 0x2d, + 0x2d, 0x6c, 0x9d, 0x12, 0x6e, 0xd6, 0xbe, 0xc6, 0xb2, 0xb5, 0x8e, 0x2d, 0x24, 0xf2, 0x8f, 0x76, + 0x16, 0x26, 0xba, 0x3b, 0x0b, 0x30, 0x18, 0x93, 0xfa, 0x56, 0x79, 0x0d, 0xa6, 0xcc, 0x36, 0x96, + 0x8b, 0x93, 0x8e, 0xf5, 0xcb, 0x02, 0x55, 0x19, 0x84, 0xa8, 0xa0, 0x37, 0xda, 0x58, 0x16, 0xf7, + 0x7b, 0x4e, 0xa7, 0xec, 0x27, 0xc9, 0x71, 0x51, 0x5e, 0x86, 0xff, 0x45, 0xc9, 0xaf, 0x20, 0x0b, + 0xd5, 0x90, 0x89, 0xf9, 0x77, 0x20, 0xaf, 0x35, 0x91, 0x8a, 0x9d, 0x7f, 0xba, 0x57, 0x3c, 0xe0, + 0x99, 0xc8, 0x5f, 0xb5, 0x07, 0x25, 0xf7, 0x5d, 0x9c, 0x91, 0xd5, 0xfb, 0x6d, 0xdd, 0xb0, 0xb0, + 0x91, 0xcc, 0x88, 0x09, 0xc7, 0xa3, 0x8c, 0x5c, 0x6d, 0x69, 0xd6, 0xb2, 0xde, 0xb2, 0x90, 0xfd, + 0x97, 0x13, 0x59, 0xe2, 0xdf, 0x83, 0x3d, 0xdb, 0xf7, 0x9c, 0x11, 0x27, 0x83, 0x7b, 0xc5, 0x43, + 0x9e, 0xd8, 0x9e, 0xcf, 0x6e, 0xb9, 0x82, 0xbd, 0xf7, 0xe5, 0x2e, 0x07, 0xc5, 0x28, 0xaf, 0x6b, + 0x9a, 0x69, 0xf1, 0x5f, 0x84, 0x0a, 0x2d, 0x24, 0x2b, 0xb4, 0xad, 0xed, 0x94, 0x79, 0xc6, 0x73, + 0x5c, 0xe8, 0x8d, 0xf8, 0x8a, 0x5c, 0x87, 0xbc, 0x66, 0xe1, 0xa6, 0x59, 0x9c, 0x5c, 0xcc, 0x9d, + 0xd8, 0x77, 0x7a, 0x39, 0x83, 0x2a, 0xfb, 0xf2, 0x61, 0x5b, 0x96, 0x5c, 0x07, 0x65, 0x13, 0xde, + 0x8d, 0x92, 0xae, 0xea, 0xca, 0x06, 0x96, 0x3b, 0x86, 0x66, 0x6d, 0x57, 0xf5, 0x86, 0x26, 0x6f, + 0xf3, 0xd7, 0x80, 0x57, 0xbc, 0xc2, 0xbb, 0x23, 0x37, 0x50, 0xb3, 0x97, 0xea, 0x79, 0xcf, 0x34, + 0xbf, 0x12, 0x92, 0x90, 0x22, 0xb4, 0xca, 0x4f, 0xa6, 0xa3, 0x33, 0x6b, 0xcf, 0x3d, 0xbb, 0x42, + 0x5b, 0xee, 0xa3, 0x67, 0xbd, 0x5f, 0x21, 0x4f, 0x4a, 0xea, 0xbd, 0xe7, 0xd7, 0x01, 0x50, 0xc7, + 0xaa, 0x57, 0x1b, 0x1d, 0x55, 0x6b, 0x79, 0xf5, 0x3c, 0xd9, 0x5b, 0x3d, 0x97, 0xfa, 0x6f, 0xfe, + 0xd9, 0x59, 0x38, 0x42, 0xb8, 0x1b, 0xbc, 0x92, 0x7c, 0x06, 0x78, 0x15, 0x26, 0x95, 0x5a, 0x31, + 0xe7, 0x54, 0xf3, 0x7a, 0x06, 0x29, 0xef, 0x65, 0x43, 0x04, 0x2f, 0xa6, 0xc9, 0x15, 0x51, 0x9a, + 0x54, 0x6a, 0xfc, 0x36, 0x14, 0xb0, 0x37, 0xff, 0x8b, 0x53, 0x99, 0xb9, 0xeb, 0x2d, 0xa9, 0xc1, + 0xcc, 0xea, 0x8d, 0x48, 0x7d, 0x77, 0x7c, 0x13, 0xf2, 0x96, 0xae, 0x37, 0xcc, 0x62, 0xde, 0xf1, + 0x7b, 0x25, 0x03, 0xbf, 0xb7, 0x6d, 0x7b, 0x83, 0xe9, 0xe5, 0x3c, 0x4a, 0xae, 0x17, 0xfe, 0x34, + 0x80, 0x82, 0xdb, 0x06, 0x96, 0x6d, 0x78, 0x16, 0xa7, 0x17, 0xb9, 0x13, 0x85, 0x01, 0xdf, 0x56, + 0xfa, 0x6f, 0x24, 0x9f, 0x14, 0xff, 0x03, 0x07, 0x07, 0x34, 0xff, 0xca, 0x2e, 0xee, 0x71, 0x62, + 0xad, 0x66, 0x10, 0x2b, 0x41, 0x0c, 0xf1, 0xbf, 0x5e, 0x24, 0x07, 0x88, 0x61, 0x89, 0xf4, 0xce, + 0xff, 0xca, 0xc1, 0x6c, 0x3b, 0xb0, 0x1e, 0x34, 0x6c, 0x16, 0x0b, 0x4e, 0x54, 0xb7, 0x33, 0x88, + 0x2a, 0xb4, 0xda, 0xc4, 0x63, 0x5e, 0x64, 0xb3, 0xd5, 0xb0, 0x63, 0x29, 0x2a, 0x9a, 0xf2, 0x45, + 0x38, 0x1a, 0x5b, 0x9c, 0x64, 0x90, 0x7d, 0xc2, 0xc1, 0xbe, 0x55, 0x4b, 0x56, 0xc6, 0xb7, 0x97, + 0xdd, 0x25, 0xf6, 0xb2, 0xf3, 0xb4, 0x99, 0x1c, 0xc4, 0x1a, 0xbb, 0x85, 0x9d, 0x85, 0x59, 0x9f, + 0x18, 0xdd, 0xce, 0x45, 0xea, 0xd2, 0x6d, 0x58, 0x8f, 0x39, 0x38, 0xe4, 0x53, 0x1e, 0xc3, 0x96, + 0x71, 0x87, 0xdc, 0x32, 0xce, 0xa6, 0x4f, 0x66, 0xcc, 0x4e, 0xf1, 0x5b, 0x8e, 0xf8, 0x4b, 0xb4, + 0xac, 0xfe, 0xd2, 0x81, 0xab, 0x5b, 0x69, 0x31, 0x7d, 0x70, 0xb1, 0x4c, 0x6d, 0xfb, 0x98, 0x9a, + 0x63, 0xf5, 0x92, 0x08, 0xa5, 0x4a, 0x0f, 0xa5, 0x2e, 0xc2, 0x2f, 0xa4, 0x77, 0x97, 0x9c, 0xa0, + 0xf9, 0x24, 0x04, 0x2d, 0x7f, 0x04, 0x33, 0x41, 0xeb, 0xc9, 0xa6, 0xed, 0x4b, 0x0e, 0x66, 0xd6, + 0x71, 0x53, 0x46, 0x72, 0x1d, 0x8f, 0x91, 0x03, 0x98, 0xe0, 0x00, 0xed, 0x69, 0x27, 0x18, 0x70, + 0x2c, 0x0c, 0x2e, 0x40, 0x31, 0x28, 0x4b, 0x47, 0x84, 0x08, 0x03, 0x74, 0x58, 0xf8, 0x93, 0x83, + 0xb9, 0xa0, 0x85, 0x31, 0xb0, 0x41, 0x21, 0xd9, 0x70, 0x81, 0x31, 0xc1, 0x31, 0x80, 0xd0, 0xe1, + 0x78, 0x50, 0x72, 0xb4, 0xc7, 0xc8, 0xbf, 0x73, 0xe1, 0x6c, 0xd2, 0x62, 0x49, 0xf6, 0x61, 0xe9, + 0x32, 0x63, 0x5e, 0x62, 0xd9, 0xd4, 0x09, 0xb1, 0x89, 0xd5, 0x55, 0x22, 0x40, 0x91, 0xe8, 0x98, + 0x4a, 0x74, 0xf8, 0xfa, 0x25, 0xe6, 0xb0, 0x93, 0x4f, 0x75, 0x04, 0x7b, 0xed, 0x7c, 0x48, 0x71, + 0xd0, 0xf9, 0x83, 0x83, 0x83, 0xeb, 0x7a, 0x4b, 0xd5, 0x57, 0xc4, 0xf1, 0x11, 0x4a, 0x26, 0x08, + 0x75, 0x89, 0x36, 0x0d, 0x44, 0xb8, 0xb1, 0x7c, 0x5a, 0x82, 0xc3, 0xa4, 0x24, 0x1d, 0x9d, 0x42, + 0xea, 0x74, 0x6c, 0x12, 0xe1, 0x18, 0xa9, 0x4e, 0xff, 0x75, 0x5d, 0xfe, 0x9d, 0x03, 0x9e, 0x34, + 0x32, 0x06, 0xba, 0xd5, 0x48, 0xba, 0x2d, 0x31, 0x15, 0x27, 0x86, 0x6d, 0x4d, 0x58, 0x20, 0xe5, + 0x46, 0x4b, 0xb6, 0x9d, 0x7c, 0x30, 0x8f, 0xb4, 0x5c, 0x43, 0x3e, 0xae, 0xad, 0x32, 0x65, 0x24, + 0x96, 0x6a, 0x66, 0x88, 0x6a, 0x6c, 0x8e, 0x12, 0x31, 0x4d, 0x25, 0x0f, 0x5d, 0x22, 0x93, 0xc7, + 0x8c, 0xcf, 0x5d, 0xfc, 0xf7, 0xa1, 0x2f, 0xd7, 0x69, 0x27, 0xca, 0x6b, 0x4c, 0x51, 0xa6, 0xf9, + 0x66, 0xfd, 0x39, 0x06, 0xe3, 0xee, 0x97, 0xf4, 0x0d, 0xa6, 0x78, 0xb2, 0x80, 0xf8, 0x59, 0x98, + 0x8d, 0x28, 0x45, 0x32, 0xc8, 0x3c, 0xe3, 0x60, 0xff, 0xfa, 0xf6, 0xc6, 0xad, 0xb5, 0xf1, 0xe1, + 0x1f, 0x11, 0xf8, 0xa7, 0x3e, 0x3f, 0xf9, 0x82, 0x8d, 0x85, 0xff, 0x39, 0x98, 0xf3, 0xcb, 0xd1, + 0xa1, 0x3f, 0xa0, 0x4c, 0x07, 0xfe, 0x8b, 0x70, 0xd4, 0xaf, 0x9c, 0x02, 0xfb, 0x4f, 0xed, 0xcf, + 0x06, 0x9f, 0x89, 0x31, 0x40, 0xff, 0x2e, 0x09, 0xfd, 0x73, 0x0c, 0x25, 0x89, 0x41, 0xfe, 0x26, + 0xfc, 0xdf, 0x2f, 0x35, 0x5a, 0xe0, 0x3f, 0xcd, 0x93, 0x19, 0xa4, 0xc5, 0xfd, 0x1d, 0x1f, 0xee, + 0x97, 0x19, 0x72, 0x11, 0x0b, 0xfb, 0x7b, 0x21, 0xd8, 0xb3, 0xb8, 0x49, 0x84, 0x7a, 0x4c, 0xa2, + 0xfe, 0x22, 0x83, 0xbf, 0xac, 0x41, 0xff, 0x5d, 0x0c, 0xe8, 0xaf, 0x30, 0xc4, 0x98, 0x06, 0xf3, + 0x0f, 0x86, 0x62, 0x7e, 0x8d, 0x21, 0x9a, 0x2c, 0x20, 0x7f, 0x06, 0xfe, 0x13, 0x2a, 0x42, 0x32, + 0xa0, 0xec, 0x72, 0x30, 0x57, 0xc5, 0x86, 0xac, 0xb7, 0xd0, 0xa7, 0x96, 0x81, 0xc6, 0x79, 0xd2, + 0x67, 0xeb, 0xaf, 0x45, 0x05, 0x3d, 0xac, 0xbf, 0x16, 0x25, 0x4f, 0xdd, 0x5f, 0x8b, 0x32, 0x42, + 0xb7, 0x05, 0x5c, 0x81, 0xe3, 0x51, 0x46, 0x52, 0x6c, 0x05, 0x5d, 0x0e, 0x8a, 0x51, 0xa6, 0xde, + 0xfc, 0xa6, 0x59, 0x54, 0xd4, 0xf1, 0x4d, 0xb3, 0x28, 0xe9, 0xd1, 0x6e, 0x11, 0x3f, 0xe5, 0xa3, + 0x33, 0x4b, 0xbb, 0x55, 0xa8, 0xbe, 0xad, 0xe2, 0x7a, 0x06, 0x39, 0x4a, 0xd4, 0xe5, 0xca, 0x65, + 0xe6, 0x6e, 0x64, 0x37, 0x1f, 0xe1, 0xb6, 0x53, 0xba, 0x3b, 0x8f, 0xd7, 0x2e, 0x24, 0xc6, 0xb6, + 0xd3, 0x74, 0xaa, 0xb6, 0x53, 0xa2, 0xf9, 0x9a, 0x82, 0xf1, 0x4b, 0x70, 0xb8, 0xaa, 0x8a, 0x7a, + 0xa7, 0x25, 0x63, 0x63, 0x03, 0x1b, 0x5b, 0xd8, 0xe8, 0xa1, 0x3a, 0xf1, 0x85, 0x73, 0x5f, 0xff, + 0x6d, 0xb9, 0x70, 0x0e, 0x06, 0x3c, 0xec, 0xc2, 0x39, 0x28, 0x4b, 0x7f, 0x5f, 0x1c, 0xb4, 0xf0, + 0xe6, 0xdf, 0x17, 0x07, 0x23, 0x8e, 0xa1, 0xe8, 0xcb, 0xc9, 0xf0, 0x9f, 0xa3, 0x85, 0x59, 0x13, + 0xa6, 0x4d, 0x67, 0xd6, 0xa5, 0xbc, 0xea, 0x88, 0x9e, 0xbb, 0xe2, 0x41, 0xcf, 0xe1, 0xb4, 0x3b, + 0x2c, 0x79, 0x4e, 0x32, 0xb8, 0xc8, 0x8d, 0x9b, 0x0f, 0x59, 0xe3, 0xac, 0xfc, 0x82, 0x83, 0x43, + 0x55, 0xdd, 0xb4, 0x54, 0x03, 0x9b, 0xe3, 0x5b, 0x58, 0x0a, 0xb1, 0xb0, 0x68, 0x6f, 0x67, 0x02, + 0xf1, 0xc6, 0xae, 0xab, 0xf3, 0x70, 0x24, 0x20, 0x4a, 0x77, 0x66, 0x0a, 0xeb, 0xd3, 0x2d, 0xcb, + 0xe7, 0x1c, 0xcc, 0x06, 0x0c, 0x8c, 0x61, 0x55, 0xca, 0xe4, 0xaa, 0x3c, 0xcf, 0x96, 0xdc, 0x98, + 0x45, 0xd9, 0x82, 0xc5, 0x80, 0xe0, 0x68, 0x4f, 0x35, 0x2f, 0xa6, 0x42, 0xa9, 0xa4, 0x65, 0x40, + 0xcd, 0x77, 0xa0, 0xf9, 0x98, 0x2d, 0x29, 0xb1, 0x67, 0x19, 0x2b, 0xb4, 0xf0, 0x19, 0x3d, 0x25, + 0x5a, 0xf7, 0x75, 0xf2, 0x0b, 0x78, 0x99, 0xcd, 0x65, 0xd6, 0x1f, 0xc1, 0x0f, 0x87, 0x1e, 0x50, + 0x6e, 0xb2, 0x05, 0x9b, 0xc5, 0xd9, 0xe4, 0x1c, 0xcc, 0x45, 0xa5, 0x20, 0xd9, 0x1a, 0x77, 0xf8, + 0x69, 0xe8, 0xf7, 0xc7, 0x7b, 0xd1, 0xc8, 0xc8, 0x4f, 0x32, 0xde, 0xa1, 0xfc, 0x24, 0x45, 0x53, + 0xf0, 0x8f, 0x34, 0xf0, 0x16, 0xf0, 0x8f, 0x0c, 0x78, 0x08, 0xff, 0x48, 0xc1, 0xd1, 0xf2, 0x2f, + 0x5c, 0x0a, 0xe7, 0xd1, 0xbc, 0xd7, 0x48, 0x56, 0x8a, 0x6f, 0xa7, 0x42, 0xa5, 0xa0, 0xe5, 0xa7, + 0x05, 0x85, 0xb6, 0xe7, 0x33, 0x2d, 0x45, 0xa3, 0xff, 0xc1, 0xa0, 0x9a, 0xbd, 0x11, 0xa9, 0xef, + 0x29, 0x0b, 0xa2, 0x46, 0x4f, 0xe1, 0xcc, 0x3f, 0x0c, 0x1f, 0x0e, 0x6d, 0x89, 0xdf, 0x64, 0xcc, + 0x55, 0x06, 0x9c, 0x7b, 0xc6, 0xc1, 0x7e, 0x09, 0x2b, 0x9a, 0xf9, 0xb6, 0x34, 0x44, 0xfc, 0xc1, + 0x0e, 0x6b, 0x88, 0xf8, 0xe5, 0xa8, 0x1b, 0x22, 0x7e, 0x65, 0x3a, 0xbc, 0x3d, 0xe5, 0x60, 0xc6, + 0xaf, 0xfd, 0xe6, 0xb7, 0x33, 0xfc, 0xd1, 0xc6, 0xb7, 0x33, 0xfc, 0x52, 0xa3, 0xa5, 0xda, 0x6e, + 0x8e, 0xcc, 0xe0, 0x38, 0xdb, 0x19, 0x51, 0x93, 0x66, 0x04, 0xed, 0x8c, 0xa8, 0xe9, 0x95, 0x39, + 0x7a, 0x1e, 0x0c, 0x45, 0xcf, 0x1a, 0x43, 0xc8, 0x19, 0x70, 0x47, 0x14, 0x1e, 0xbd, 0x2a, 0x4d, + 0x3c, 0x7e, 0x55, 0x9a, 0x78, 0xfe, 0xaa, 0x34, 0xf1, 0x4d, 0xb7, 0xc4, 0x3d, 0xea, 0x96, 0xb8, + 0xc7, 0xdd, 0x12, 0xf7, 0xbc, 0x5b, 0xe2, 0xfe, 0xea, 0x96, 0xb8, 0x1f, 0x77, 0x4b, 0x13, 0x9f, + 0x17, 0x7a, 0xfe, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x85, 0x3b, 0x82, 0xd6, 0x72, 0x34, 0x00, + 0x00, } func (m *ElasticsearchVersion) Marshal() (dAtA []byte, err error) { @@ -2303,11 +2301,6 @@ func (m *ElasticsearchVersionPodSecurityPolicy) MarshalToSizedBuffer(dAtA []byte _ = i var l int _ = l - i -= len(m.SnapshotterPolicyName) - copy(dAtA[i:], m.SnapshotterPolicyName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SnapshotterPolicyName))) - i-- - dAtA[i] = 0x12 i -= len(m.DatabasePolicyName) copy(dAtA[i:], m.DatabasePolicyName) i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatabasePolicyName))) @@ -3109,11 +3102,6 @@ func (m *MongoDBVersionPodSecurityPolicy) MarshalToSizedBuffer(dAtA []byte) (int _ = i var l int _ = l - i -= len(m.SnapshotterPolicyName) - copy(dAtA[i:], m.SnapshotterPolicyName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SnapshotterPolicyName))) - i-- - dAtA[i] = 0x12 i -= len(m.DatabasePolicyName) copy(dAtA[i:], m.DatabasePolicyName) i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatabasePolicyName))) @@ -3430,11 +3418,6 @@ func (m *MySQLVersionPodSecurityPolicy) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l - i -= len(m.SnapshotterPolicyName) - copy(dAtA[i:], m.SnapshotterPolicyName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SnapshotterPolicyName))) - i-- - dAtA[i] = 0x12 i -= len(m.DatabasePolicyName) copy(dAtA[i:], m.DatabasePolicyName) i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatabasePolicyName))) @@ -4203,11 +4186,6 @@ func (m *PostgresVersionPodSecurityPolicy) MarshalToSizedBuffer(dAtA []byte) (in _ = i var l int _ = l - i -= len(m.SnapshotterPolicyName) - copy(dAtA[i:], m.SnapshotterPolicyName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.SnapshotterPolicyName))) - i-- - dAtA[i] = 0x12 i -= len(m.DatabasePolicyName) copy(dAtA[i:], m.DatabasePolicyName) i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatabasePolicyName))) @@ -4884,8 +4862,6 @@ func (m *ElasticsearchVersionPodSecurityPolicy) Size() (n int) { _ = l l = len(m.DatabasePolicyName) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SnapshotterPolicyName) - n += 1 + l + sovGenerated(uint64(l)) return n } @@ -5157,8 +5133,6 @@ func (m *MongoDBVersionPodSecurityPolicy) Size() (n int) { _ = l l = len(m.DatabasePolicyName) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SnapshotterPolicyName) - n += 1 + l + sovGenerated(uint64(l)) return n } @@ -5266,8 +5240,6 @@ func (m *MySQLVersionPodSecurityPolicy) Size() (n int) { _ = l l = len(m.DatabasePolicyName) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SnapshotterPolicyName) - n += 1 + l + sovGenerated(uint64(l)) return n } @@ -5526,8 +5498,6 @@ func (m *PostgresVersionPodSecurityPolicy) Size() (n int) { _ = l l = len(m.DatabasePolicyName) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.SnapshotterPolicyName) - n += 1 + l + sovGenerated(uint64(l)) return n } @@ -5794,7 +5764,6 @@ func (this *ElasticsearchVersionPodSecurityPolicy) String() string { } s := strings.Join([]string{`&ElasticsearchVersionPodSecurityPolicy{`, `DatabasePolicyName:` + fmt.Sprintf("%v", this.DatabasePolicyName) + `,`, - `SnapshotterPolicyName:` + fmt.Sprintf("%v", this.SnapshotterPolicyName) + `,`, `}`, }, "") return s @@ -6031,7 +6000,6 @@ func (this *MongoDBVersionPodSecurityPolicy) String() string { } s := strings.Join([]string{`&MongoDBVersionPodSecurityPolicy{`, `DatabasePolicyName:` + fmt.Sprintf("%v", this.DatabasePolicyName) + `,`, - `SnapshotterPolicyName:` + fmt.Sprintf("%v", this.SnapshotterPolicyName) + `,`, `}`, }, "") return s @@ -6125,7 +6093,6 @@ func (this *MySQLVersionPodSecurityPolicy) String() string { } s := strings.Join([]string{`&MySQLVersionPodSecurityPolicy{`, `DatabasePolicyName:` + fmt.Sprintf("%v", this.DatabasePolicyName) + `,`, - `SnapshotterPolicyName:` + fmt.Sprintf("%v", this.SnapshotterPolicyName) + `,`, `}`, }, "") return s @@ -6351,7 +6318,6 @@ func (this *PostgresVersionPodSecurityPolicy) String() string { } s := strings.Join([]string{`&PostgresVersionPodSecurityPolicy{`, `DatabasePolicyName:` + fmt.Sprintf("%v", this.DatabasePolicyName) + `,`, - `SnapshotterPolicyName:` + fmt.Sprintf("%v", this.SnapshotterPolicyName) + `,`, `}`, }, "") return s @@ -7118,38 +7084,6 @@ func (m *ElasticsearchVersionPodSecurityPolicy) Unmarshal(dAtA []byte) error { } m.DatabasePolicyName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapshotterPolicyName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SnapshotterPolicyName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -9512,38 +9446,6 @@ func (m *MongoDBVersionPodSecurityPolicy) Unmarshal(dAtA []byte) error { } m.DatabasePolicyName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapshotterPolicyName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SnapshotterPolicyName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -10478,38 +10380,6 @@ func (m *MySQLVersionPodSecurityPolicy) Unmarshal(dAtA []byte) error { } m.DatabasePolicyName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapshotterPolicyName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SnapshotterPolicyName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -12755,38 +12625,6 @@ func (m *PostgresVersionPodSecurityPolicy) Unmarshal(dAtA []byte) error { } m.DatabasePolicyName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapshotterPolicyName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SnapshotterPolicyName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/apis/catalog/v1alpha1/generated.proto b/apis/catalog/v1alpha1/generated.proto index 1089135964..8119c3b94a 100644 --- a/apis/catalog/v1alpha1/generated.proto +++ b/apis/catalog/v1alpha1/generated.proto @@ -69,8 +69,6 @@ message ElasticsearchVersionList { // ElasticsearchVersionPodSecurityPolicy is the Elasticsearch pod security policies message ElasticsearchVersionPodSecurityPolicy { optional string databasePolicyName = 1; - - optional string snapshotterPolicyName = 2; } // ElasticsearchVersionSpec is the spec for elasticsearch version @@ -252,8 +250,6 @@ message MongoDBVersionList { // MongoDBVersionPodSecurityPolicy is the MongoDB pod security policies message MongoDBVersionPodSecurityPolicy { optional string databasePolicyName = 1; - - optional string snapshotterPolicyName = 2; } // MongoDBVersionSpec is the spec for mongodb version @@ -324,8 +320,6 @@ message MySQLVersionList { // MySQLVersionPodSecurityPolicy is the MySQL pod security policies message MySQLVersionPodSecurityPolicy { optional string databasePolicyName = 1; - - optional string snapshotterPolicyName = 2; } // MySQLVersionSpec is the spec for postgres version @@ -500,8 +494,6 @@ message PostgresVersionList { // PostgresVersionPodSecurityPolicy is the Postgres pod security policies message PostgresVersionPodSecurityPolicy { optional string databasePolicyName = 1; - - optional string snapshotterPolicyName = 2; } // PostgresVersionSpec is the spec for postgres version diff --git a/apis/catalog/v1alpha1/mongodb_version_types.go b/apis/catalog/v1alpha1/mongodb_version_types.go index 01050a9f47..a5e9c06d33 100644 --- a/apis/catalog/v1alpha1/mongodb_version_types.go +++ b/apis/catalog/v1alpha1/mongodb_version_types.go @@ -86,8 +86,7 @@ type MongoDBVersionInitContainer struct { // MongoDBVersionPodSecurityPolicy is the MongoDB pod security policies type MongoDBVersionPodSecurityPolicy struct { - DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` - SnapshotterPolicyName string `json:"snapshotterPolicyName" protobuf:"bytes,2,opt,name=snapshotterPolicyName"` + DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/apis/catalog/v1alpha1/mysql_version_types.go b/apis/catalog/v1alpha1/mysql_version_types.go index e09acd8336..97d5acb600 100644 --- a/apis/catalog/v1alpha1/mysql_version_types.go +++ b/apis/catalog/v1alpha1/mysql_version_types.go @@ -86,8 +86,7 @@ type MySQLVersionInitContainer struct { // MySQLVersionPodSecurityPolicy is the MySQL pod security policies type MySQLVersionPodSecurityPolicy struct { - DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` - SnapshotterPolicyName string `json:"snapshotterPolicyName" protobuf:"bytes,2,opt,name=snapshotterPolicyName"` + DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/apis/catalog/v1alpha1/openapi_generated.go b/apis/catalog/v1alpha1/openapi_generated.go index e7c15c3513..51f2c20d23 100644 --- a/apis/catalog/v1alpha1/openapi_generated.go +++ b/apis/catalog/v1alpha1/openapi_generated.go @@ -17614,14 +17614,8 @@ func schema_apimachinery_apis_catalog_v1alpha1_ElasticsearchVersionPodSecurityPo Format: "", }, }, - "snapshotterPolicyName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, }, - Required: []string{"databasePolicyName", "snapshotterPolicyName"}, + Required: []string{"databasePolicyName"}, }, }, } @@ -18258,14 +18252,8 @@ func schema_apimachinery_apis_catalog_v1alpha1_MongoDBVersionPodSecurityPolicy(r Format: "", }, }, - "snapshotterPolicyName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, }, - Required: []string{"databasePolicyName", "snapshotterPolicyName"}, + Required: []string{"databasePolicyName"}, }, }, } @@ -18509,14 +18497,8 @@ func schema_apimachinery_apis_catalog_v1alpha1_MySQLVersionPodSecurityPolicy(ref Format: "", }, }, - "snapshotterPolicyName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, }, - Required: []string{"databasePolicyName", "snapshotterPolicyName"}, + Required: []string{"databasePolicyName"}, }, }, } @@ -19126,14 +19108,8 @@ func schema_apimachinery_apis_catalog_v1alpha1_PostgresVersionPodSecurityPolicy( Format: "", }, }, - "snapshotterPolicyName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, }, - Required: []string{"databasePolicyName", "snapshotterPolicyName"}, + Required: []string{"databasePolicyName"}, }, }, } diff --git a/apis/catalog/v1alpha1/postgres_version_types.go b/apis/catalog/v1alpha1/postgres_version_types.go index f341a77ccb..5b4f913010 100644 --- a/apis/catalog/v1alpha1/postgres_version_types.go +++ b/apis/catalog/v1alpha1/postgres_version_types.go @@ -79,8 +79,7 @@ type PostgresVersionTools struct { // PostgresVersionPodSecurityPolicy is the Postgres pod security policies type PostgresVersionPodSecurityPolicy struct { - DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` - SnapshotterPolicyName string `json:"snapshotterPolicyName" protobuf:"bytes,2,opt,name=snapshotterPolicyName"` + DatabasePolicyName string `json:"databasePolicyName" protobuf:"bytes,1,opt,name=databasePolicyName"` } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/apis/kubedb/fuzzer/fuzzer.go b/apis/kubedb/fuzzer/fuzzer.go index f21dc2b452..afd4b9077a 100644 --- a/apis/kubedb/fuzzer/fuzzer.go +++ b/apis/kubedb/fuzzer/fuzzer.go @@ -26,9 +26,6 @@ import ( // Funcs returns the fuzzer functions for this api group. var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} { return []interface{}{ - func(s *v1alpha1.DormantDatabase, c fuzz.Continue) { - c.FuzzNoCustom(s) // fuzz self without calling this function again - }, func(s *v1alpha1.Elasticsearch, c fuzz.Continue) { c.FuzzNoCustom(s) // fuzz self without calling this function again }, @@ -62,8 +59,5 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} { func(s *v1alpha1.Redis, c fuzz.Continue) { c.FuzzNoCustom(s) // fuzz self without calling this function again }, - func(s *v1alpha1.Snapshot, c fuzz.Continue) { - c.FuzzNoCustom(s) // fuzz self without calling this function again - }, } } diff --git a/apis/kubedb/install/pruning_test.go b/apis/kubedb/install/pruning_test.go index 87921555ba..0e358e0bc6 100644 --- a/apis/kubedb/install/pruning_test.go +++ b/apis/kubedb/install/pruning_test.go @@ -28,7 +28,6 @@ import ( func TestPruneTypes(t *testing.T) { Install(clientsetscheme.Scheme) - crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.DormantDatabase{}.CustomResourceDefinition(), fuzzer.Funcs) crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.Elasticsearch{}.CustomResourceDefinition(), fuzzer.Funcs) crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.Etcd{}.CustomResourceDefinition(), fuzzer.Funcs) crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.MariaDB{}.CustomResourceDefinition(), fuzzer.Funcs) @@ -40,5 +39,4 @@ func TestPruneTypes(t *testing.T) { crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.Postgres{}.CustomResourceDefinition(), fuzzer.Funcs) crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.ProxySQL{}.CustomResourceDefinition(), fuzzer.Funcs) crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.Redis{}.CustomResourceDefinition(), fuzzer.Funcs) - crdfuzz.SchemaFuzzTestForV1beta1CRD(t, clientsetscheme.Scheme, v1alpha1.Snapshot{}.CustomResourceDefinition(), fuzzer.Funcs) } diff --git a/apis/kubedb/v1alpha1/constants.go b/apis/kubedb/v1alpha1/constants.go index a0bc6548c8..ce372e1ac4 100644 --- a/apis/kubedb/v1alpha1/constants.go +++ b/apis/kubedb/v1alpha1/constants.go @@ -29,17 +29,15 @@ const ( RoleStats = "stats" DefaultStatsPath = "/metrics" - PostgresKey = ResourceSingularPostgres + "." + GenericKey - ElasticsearchKey = ResourceSingularElasticsearch + "." + GenericKey - MySQLKey = ResourceSingularMySQL + "." + GenericKey - PerconaXtraDBKey = ResourceSingularPerconaXtraDB + "." + GenericKey - MongoDBKey = ResourceSingularMongoDB + "." + GenericKey - RedisKey = ResourceSingularRedis + "." + GenericKey - MemcachedKey = ResourceSingularMemcached + "." + GenericKey - EtcdKey = ResourceSingularEtcd + "." + GenericKey - ProxySQLKey = ResourceSingularProxySQL + "." + GenericKey - SnapshotKey = ResourceSingularSnapshot + "." + GenericKey - LabelSnapshotStatus = SnapshotKey + "/status" + PostgresKey = ResourceSingularPostgres + "." + GenericKey + ElasticsearchKey = ResourceSingularElasticsearch + "." + GenericKey + MySQLKey = ResourceSingularMySQL + "." + GenericKey + PerconaXtraDBKey = ResourceSingularPerconaXtraDB + "." + GenericKey + MongoDBKey = ResourceSingularMongoDB + "." + GenericKey + RedisKey = ResourceSingularRedis + "." + GenericKey + MemcachedKey = ResourceSingularMemcached + "." + GenericKey + EtcdKey = ResourceSingularEtcd + "." + GenericKey + ProxySQLKey = ResourceSingularProxySQL + "." + GenericKey AnnotationInitialized = GenericKey + "/initialized" AnnotationJobType = GenericKey + "/job-type" diff --git a/apis/kubedb/v1alpha1/dormant_database_helpers.go b/apis/kubedb/v1alpha1/dormant_database_helpers.go deleted file mode 100644 index 04972756a8..0000000000 --- a/apis/kubedb/v1alpha1/dormant_database_helpers.go +++ /dev/null @@ -1,116 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -import ( - "kubedb.dev/apimachinery/api/crds" - "kubedb.dev/apimachinery/apis" - "kubedb.dev/apimachinery/apis/catalog/v1alpha1" - - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - meta_util "kmodules.xyz/client-go/meta" -) - -func (_ DormantDatabase) CustomResourceDefinition() *apiextensions.CustomResourceDefinition { - return crds.MustCustomResourceDefinition(SchemeGroupVersion.WithResource(ResourcePluralDormantDatabase)) -} - -var _ apis.ResourceInfo = &DormantDatabase{} - -func (d DormantDatabase) OffshootSelectors() map[string]string { - selector := map[string]string{ - LabelDatabaseName: d.Name, - } - switch { - case d.Spec.Origin.Spec.Etcd != nil: - selector[LabelDatabaseKind] = ResourceKindEtcd - case d.Spec.Origin.Spec.Elasticsearch != nil: - selector[LabelDatabaseKind] = ResourceKindElasticsearch - case d.Spec.Origin.Spec.Memcached != nil: - selector[LabelDatabaseKind] = ResourceKindMemcached - case d.Spec.Origin.Spec.MongoDB != nil: - selector[LabelDatabaseKind] = ResourceKindMongoDB - case d.Spec.Origin.Spec.MySQL != nil: - selector[LabelDatabaseKind] = ResourceKindMySQL - case d.Spec.Origin.Spec.PerconaXtraDB != nil: - selector[LabelDatabaseKind] = ResourceKindPerconaXtraDB - case d.Spec.Origin.Spec.MariaDB != nil: - selector[LabelDatabaseKind] = ResourceKindMariaDB - case d.Spec.Origin.Spec.Postgres != nil: - selector[LabelDatabaseKind] = ResourceKindPostgres - case d.Spec.Origin.Spec.Redis != nil: - selector[LabelDatabaseKind] = ResourceKindRedis - } - return selector -} - -func (d DormantDatabase) OffshootLabels() map[string]string { - return meta_util.FilterKeys(GenericKey, d.OffshootSelectors(), d.Spec.Origin.Labels) -} - -func (d DormantDatabase) OffshootName() string { - return d.Name -} - -func (d DormantDatabase) ResourceShortCode() string { - return ResourceCodeDormantDatabase -} - -func (d DormantDatabase) ResourceKind() string { - return ResourceKindDormantDatabase -} - -func (d DormantDatabase) ResourceSingular() string { - return ResourceSingularDormantDatabase -} - -func (d DormantDatabase) ResourcePlural() string { - return ResourcePluralDormantDatabase -} - -func (d *DormantDatabase) SetDefaults() { - if d == nil { - return - } - d.Spec.Origin.Spec.Elasticsearch.SetDefaults() - d.Spec.Origin.Spec.Postgres.SetDefaults() - d.Spec.Origin.Spec.MySQL.SetDefaults() - d.Spec.Origin.Spec.PerconaXtraDB.SetDefaults() - d.Spec.Origin.Spec.MariaDB.SetDefaults() - d.Spec.Origin.Spec.MongoDB.SetDefaults(&v1alpha1.MongoDBVersion{}) - d.Spec.Origin.Spec.Redis.SetDefaults() - d.Spec.Origin.Spec.Memcached.SetDefaults() - d.Spec.Origin.Spec.Etcd.SetDefaults() -} - -func (d *DormantDatabase) GetDatabaseSecrets() []string { - if d == nil { - return nil - } - - var secrets []string - secrets = append(secrets, d.Spec.Origin.Spec.Elasticsearch.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.Postgres.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.MySQL.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.PerconaXtraDB.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.MariaDB.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.MongoDB.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.Redis.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.Memcached.GetSecrets()...) - secrets = append(secrets, d.Spec.Origin.Spec.Etcd.GetSecrets()...) - return secrets -} diff --git a/apis/kubedb/v1alpha1/dormant_database_types.go b/apis/kubedb/v1alpha1/dormant_database_types.go deleted file mode 100644 index 9b7292b359..0000000000 --- a/apis/kubedb/v1alpha1/dormant_database_types.go +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - ofst "kmodules.xyz/offshoot-api/api/v1" -) - -const ( - ResourceCodeDormantDatabase = "drmn" - ResourceKindDormantDatabase = "DormantDatabase" - ResourceSingularDormantDatabase = "dormantdatabase" - ResourcePluralDormantDatabase = "dormantdatabases" -) - -// +genclient -// +k8s:openapi-gen=true -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object - -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=dormantdatabases,singular=dormantdatabase,shortName=drmn,categories={datastore,kubedb,appscode,all} -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" -// Deprecated -type DormantDatabase struct { - metav1.TypeMeta `json:",inline,omitempty"` - metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` - Spec DormantDatabaseSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` - Status DormantDatabaseStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` -} - -type DormantDatabaseSpec struct { - // If true, invoke wipe out operation - // +optional - WipeOut bool `json:"wipeOut,omitempty" protobuf:"varint,1,opt,name=wipeOut"` - // Origin to store original database information - Origin Origin `json:"origin" protobuf:"bytes,2,opt,name=origin"` -} - -type Origin struct { - ofst.PartialObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` - // Origin Spec to store original database Spec - Spec OriginSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` -} - -type OriginSpec struct { - // Elasticsearch Spec - // +optional - Elasticsearch *ElasticsearchSpec `json:"elasticsearch,omitempty" protobuf:"bytes,1,opt,name=elasticsearch"` - // Postgres Spec - // +optional - Postgres *PostgresSpec `json:"postgres,omitempty" protobuf:"bytes,2,opt,name=postgres"` - // MySQL Spec - // +optional - MySQL *MySQLSpec `json:"mysql,omitempty" protobuf:"bytes,3,opt,name=mysql"` - // PerconaXtraDB Spec - // +optional - PerconaXtraDB *PerconaXtraDBSpec `json:"perconaxtradb,omitempty" protobuf:"bytes,4,opt,name=perconaxtradb"` - // MariaDB Spec - // +optional - MariaDB *MariaDBSpec `json:"mariadb,omitempty" protobuf:"bytes,5,opt,name=mariadb"` - // MongoDB Spec - // +optional - MongoDB *MongoDBSpec `json:"mongodb,omitempty" protobuf:"bytes,6,opt,name=mongodb"` - // Redis Spec - // +optional - Redis *RedisSpec `json:"redis,omitempty" protobuf:"bytes,7,opt,name=redis"` - // Memcached Spec - // +optional - Memcached *MemcachedSpec `json:"memcached,omitempty" protobuf:"bytes,8,opt,name=memcached"` - // Etcd Spec - // +optional - Etcd *EtcdSpec `json:"etcd,omitempty" protobuf:"bytes,9,opt,name=etcd"` -} - -type DormantDatabasePhase string - -const ( - // used for Databases that are paused - DormantDatabasePhasePaused DormantDatabasePhase = "Paused" - // used for Databases that are currently pausing - DormantDatabasePhasePausing DormantDatabasePhase = "Pausing" - // used for Databases that are wiped out - DormantDatabasePhaseWipedOut DormantDatabasePhase = "WipedOut" - // used for Databases that are currently wiping out - DormantDatabasePhaseWipingOut DormantDatabasePhase = "WipingOut" - // used for Databases that are currently recovering - DormantDatabasePhaseResuming DormantDatabasePhase = "Resuming" -) - -type DormantDatabaseStatus struct { - PausingTime *metav1.Time `json:"pausingTime,omitempty" protobuf:"bytes,1,opt,name=pausingTime"` - WipeOutTime *metav1.Time `json:"wipeOutTime,omitempty" protobuf:"bytes,2,opt,name=wipeOutTime"` - Phase DormantDatabasePhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=DormantDatabasePhase"` - Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` - // observedGeneration is the most recent generation observed for this resource. It corresponds to the - // resource's generation, which is updated on mutation by the API Server. - // +optional - ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,5,opt,name=observedGeneration"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object - -type DormantDatabaseList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` - // Items is a list of DormantDatabase CRD objects - Items []DormantDatabase `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` -} diff --git a/apis/kubedb/v1alpha1/elasticsearch_helpers.go b/apis/kubedb/v1alpha1/elasticsearch_helpers.go index 229c24a92a..7e41cfb454 100644 --- a/apis/kubedb/v1alpha1/elasticsearch_helpers.go +++ b/apis/kubedb/v1alpha1/elasticsearch_helpers.go @@ -82,11 +82,6 @@ func (e *Elasticsearch) MasterServiceName() string { return fmt.Sprintf("%v-master", e.ServiceName()) } -// Snapshot service account name. -func (e Elasticsearch) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", e.OffshootName()) -} - func (e *Elasticsearch) GetConnectionScheme() string { scheme := "http" if e.Spec.EnableSSL { @@ -172,9 +167,6 @@ func (e *ElasticsearchSpec) SetDefaults() { return } - // perform defaulting - e.BackupSchedule.SetDefaults() - if !e.DisableSecurity && e.AuthPlugin == v1alpha1.ElasticsearchAuthPluginNone { e.DisableSecurity = true } diff --git a/apis/kubedb/v1alpha1/elasticsearch_types.go b/apis/kubedb/v1alpha1/elasticsearch_types.go index f15211d941..4cefaa88e6 100644 --- a/apis/kubedb/v1alpha1/elasticsearch_types.go +++ b/apis/kubedb/v1alpha1/elasticsearch_types.go @@ -90,10 +90,6 @@ type ElasticsearchSpec struct { // +optional Init *InitSpec `json:"init,omitempty" protobuf:"bytes,11,opt,name=init"` - // BackupSchedule spec to specify how database backup will be taken - // +optional - BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty" protobuf:"bytes,12,opt,name=backupSchedule"` - // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty" protobuf:"bytes,13,opt,name=monitor"` diff --git a/apis/kubedb/v1alpha1/etcd_helpers.go b/apis/kubedb/v1alpha1/etcd_helpers.go index 4e2c53e73c..584b7b657a 100644 --- a/apis/kubedb/v1alpha1/etcd_helpers.go +++ b/apis/kubedb/v1alpha1/etcd_helpers.go @@ -81,11 +81,6 @@ func (e Etcd) PeerServiceName() string { return e.OffshootName() } -// Snapshot service account name. -func (e Etcd) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", e.OffshootName()) -} - type etcdApp struct { *Etcd } diff --git a/apis/kubedb/v1alpha1/etcd_types.go b/apis/kubedb/v1alpha1/etcd_types.go index 2dab6af4af..69baad0124 100644 --- a/apis/kubedb/v1alpha1/etcd_types.go +++ b/apis/kubedb/v1alpha1/etcd_types.go @@ -70,10 +70,6 @@ type EtcdSpec struct { // +optional Init *InitSpec `json:"init,omitempty" protobuf:"bytes,6,opt,name=init"` - // BackupSchedule spec to specify how database backup will be taken - // +optional - BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty" protobuf:"bytes,7,opt,name=backupSchedule"` - // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty" protobuf:"bytes,8,opt,name=monitor"` diff --git a/apis/kubedb/v1alpha1/generated.pb.go b/apis/kubedb/v1alpha1/generated.pb.go index 2ec7a712c4..633462e823 100644 --- a/apis/kubedb/v1alpha1/generated.pb.go +++ b/apis/kubedb/v1alpha1/generated.pb.go @@ -30,12 +30,12 @@ import ( kubedb_dev_apimachinery_apis_catalog_v1alpha1 "kubedb.dev/apimachinery/apis/catalog/v1alpha1" proto "github.com/gogo/protobuf/proto" - v12 "k8s.io/api/core/v1" - v13 "k8s.io/apimachinery/pkg/apis/meta/v1" + v11 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" intstr "k8s.io/apimachinery/pkg/util/intstr" - v14 "kmodules.xyz/monitoring-agent-api/api/v1" - v1 "kmodules.xyz/objectstore-api/api/v1" - v11 "kmodules.xyz/offshoot-api/api/v1" + v12 "kmodules.xyz/monitoring-agent-api/api/v1" + v15 "kmodules.xyz/objectstore-api/api/v1" + v13 "kmodules.xyz/offshoot-api/api/v1" ) // Reference imports to suppress errors if they are not otherwise used. @@ -49,38 +49,10 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package -func (m *BackupScheduleSpec) Reset() { *m = BackupScheduleSpec{} } -func (*BackupScheduleSpec) ProtoMessage() {} -func (*BackupScheduleSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{0} -} -func (m *BackupScheduleSpec) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *BackupScheduleSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *BackupScheduleSpec) XXX_Merge(src proto.Message) { - xxx_messageInfo_BackupScheduleSpec.Merge(m, src) -} -func (m *BackupScheduleSpec) XXX_Size() int { - return m.Size() -} -func (m *BackupScheduleSpec) XXX_DiscardUnknown() { - xxx_messageInfo_BackupScheduleSpec.DiscardUnknown(m) -} - -var xxx_messageInfo_BackupScheduleSpec proto.InternalMessageInfo - func (m *CertificateSpec) Reset() { *m = CertificateSpec{} } func (*CertificateSpec) ProtoMessage() {} func (*CertificateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{1} + return fileDescriptor_4b6da5d4bb63aef7, []int{0} } func (m *CertificateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -108,7 +80,7 @@ var xxx_messageInfo_CertificateSpec proto.InternalMessageInfo func (m *ConnectionPoolConfig) Reset() { *m = ConnectionPoolConfig{} } func (*ConnectionPoolConfig) ProtoMessage() {} func (*ConnectionPoolConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{2} + return fileDescriptor_4b6da5d4bb63aef7, []int{1} } func (m *ConnectionPoolConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -136,7 +108,7 @@ var xxx_messageInfo_ConnectionPoolConfig proto.InternalMessageInfo func (m *Databases) Reset() { *m = Databases{} } func (*Databases) ProtoMessage() {} func (*Databases) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{3} + return fileDescriptor_4b6da5d4bb63aef7, []int{2} } func (m *Databases) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -161,122 +133,10 @@ func (m *Databases) XXX_DiscardUnknown() { var xxx_messageInfo_Databases proto.InternalMessageInfo -func (m *DormantDatabase) Reset() { *m = DormantDatabase{} } -func (*DormantDatabase) ProtoMessage() {} -func (*DormantDatabase) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{4} -} -func (m *DormantDatabase) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DormantDatabase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *DormantDatabase) XXX_Merge(src proto.Message) { - xxx_messageInfo_DormantDatabase.Merge(m, src) -} -func (m *DormantDatabase) XXX_Size() int { - return m.Size() -} -func (m *DormantDatabase) XXX_DiscardUnknown() { - xxx_messageInfo_DormantDatabase.DiscardUnknown(m) -} - -var xxx_messageInfo_DormantDatabase proto.InternalMessageInfo - -func (m *DormantDatabaseList) Reset() { *m = DormantDatabaseList{} } -func (*DormantDatabaseList) ProtoMessage() {} -func (*DormantDatabaseList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{5} -} -func (m *DormantDatabaseList) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DormantDatabaseList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *DormantDatabaseList) XXX_Merge(src proto.Message) { - xxx_messageInfo_DormantDatabaseList.Merge(m, src) -} -func (m *DormantDatabaseList) XXX_Size() int { - return m.Size() -} -func (m *DormantDatabaseList) XXX_DiscardUnknown() { - xxx_messageInfo_DormantDatabaseList.DiscardUnknown(m) -} - -var xxx_messageInfo_DormantDatabaseList proto.InternalMessageInfo - -func (m *DormantDatabaseSpec) Reset() { *m = DormantDatabaseSpec{} } -func (*DormantDatabaseSpec) ProtoMessage() {} -func (*DormantDatabaseSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{6} -} -func (m *DormantDatabaseSpec) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DormantDatabaseSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *DormantDatabaseSpec) XXX_Merge(src proto.Message) { - xxx_messageInfo_DormantDatabaseSpec.Merge(m, src) -} -func (m *DormantDatabaseSpec) XXX_Size() int { - return m.Size() -} -func (m *DormantDatabaseSpec) XXX_DiscardUnknown() { - xxx_messageInfo_DormantDatabaseSpec.DiscardUnknown(m) -} - -var xxx_messageInfo_DormantDatabaseSpec proto.InternalMessageInfo - -func (m *DormantDatabaseStatus) Reset() { *m = DormantDatabaseStatus{} } -func (*DormantDatabaseStatus) ProtoMessage() {} -func (*DormantDatabaseStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{7} -} -func (m *DormantDatabaseStatus) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DormantDatabaseStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *DormantDatabaseStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_DormantDatabaseStatus.Merge(m, src) -} -func (m *DormantDatabaseStatus) XXX_Size() int { - return m.Size() -} -func (m *DormantDatabaseStatus) XXX_DiscardUnknown() { - xxx_messageInfo_DormantDatabaseStatus.DiscardUnknown(m) -} - -var xxx_messageInfo_DormantDatabaseStatus proto.InternalMessageInfo - func (m *Elasticsearch) Reset() { *m = Elasticsearch{} } func (*Elasticsearch) ProtoMessage() {} func (*Elasticsearch) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{8} + return fileDescriptor_4b6da5d4bb63aef7, []int{3} } func (m *Elasticsearch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -304,7 +164,7 @@ var xxx_messageInfo_Elasticsearch proto.InternalMessageInfo func (m *ElasticsearchClusterTopology) Reset() { *m = ElasticsearchClusterTopology{} } func (*ElasticsearchClusterTopology) ProtoMessage() {} func (*ElasticsearchClusterTopology) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{9} + return fileDescriptor_4b6da5d4bb63aef7, []int{4} } func (m *ElasticsearchClusterTopology) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -332,7 +192,7 @@ var xxx_messageInfo_ElasticsearchClusterTopology proto.InternalMessageInfo func (m *ElasticsearchList) Reset() { *m = ElasticsearchList{} } func (*ElasticsearchList) ProtoMessage() {} func (*ElasticsearchList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{10} + return fileDescriptor_4b6da5d4bb63aef7, []int{5} } func (m *ElasticsearchList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -360,7 +220,7 @@ var xxx_messageInfo_ElasticsearchList proto.InternalMessageInfo func (m *ElasticsearchNode) Reset() { *m = ElasticsearchNode{} } func (*ElasticsearchNode) ProtoMessage() {} func (*ElasticsearchNode) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{11} + return fileDescriptor_4b6da5d4bb63aef7, []int{6} } func (m *ElasticsearchNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -388,7 +248,7 @@ var xxx_messageInfo_ElasticsearchNode proto.InternalMessageInfo func (m *ElasticsearchSpec) Reset() { *m = ElasticsearchSpec{} } func (*ElasticsearchSpec) ProtoMessage() {} func (*ElasticsearchSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{12} + return fileDescriptor_4b6da5d4bb63aef7, []int{7} } func (m *ElasticsearchSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -416,7 +276,7 @@ var xxx_messageInfo_ElasticsearchSpec proto.InternalMessageInfo func (m *ElasticsearchStatus) Reset() { *m = ElasticsearchStatus{} } func (*ElasticsearchStatus) ProtoMessage() {} func (*ElasticsearchStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{13} + return fileDescriptor_4b6da5d4bb63aef7, []int{8} } func (m *ElasticsearchStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -444,7 +304,7 @@ var xxx_messageInfo_ElasticsearchStatus proto.InternalMessageInfo func (m *Etcd) Reset() { *m = Etcd{} } func (*Etcd) ProtoMessage() {} func (*Etcd) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{14} + return fileDescriptor_4b6da5d4bb63aef7, []int{9} } func (m *Etcd) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -472,7 +332,7 @@ var xxx_messageInfo_Etcd proto.InternalMessageInfo func (m *EtcdList) Reset() { *m = EtcdList{} } func (*EtcdList) ProtoMessage() {} func (*EtcdList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{15} + return fileDescriptor_4b6da5d4bb63aef7, []int{10} } func (m *EtcdList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -500,7 +360,7 @@ var xxx_messageInfo_EtcdList proto.InternalMessageInfo func (m *EtcdSpec) Reset() { *m = EtcdSpec{} } func (*EtcdSpec) ProtoMessage() {} func (*EtcdSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{16} + return fileDescriptor_4b6da5d4bb63aef7, []int{11} } func (m *EtcdSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -528,7 +388,7 @@ var xxx_messageInfo_EtcdSpec proto.InternalMessageInfo func (m *EtcdStatus) Reset() { *m = EtcdStatus{} } func (*EtcdStatus) ProtoMessage() {} func (*EtcdStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{17} + return fileDescriptor_4b6da5d4bb63aef7, []int{12} } func (m *EtcdStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -556,7 +416,7 @@ var xxx_messageInfo_EtcdStatus proto.InternalMessageInfo func (m *InitSpec) Reset() { *m = InitSpec{} } func (*InitSpec) ProtoMessage() {} func (*InitSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{18} + return fileDescriptor_4b6da5d4bb63aef7, []int{13} } func (m *InitSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -584,7 +444,7 @@ var xxx_messageInfo_InitSpec proto.InternalMessageInfo func (m *LeaderElectionConfig) Reset() { *m = LeaderElectionConfig{} } func (*LeaderElectionConfig) ProtoMessage() {} func (*LeaderElectionConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{19} + return fileDescriptor_4b6da5d4bb63aef7, []int{14} } func (m *LeaderElectionConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -612,7 +472,7 @@ var xxx_messageInfo_LeaderElectionConfig proto.InternalMessageInfo func (m *MariaDB) Reset() { *m = MariaDB{} } func (*MariaDB) ProtoMessage() {} func (*MariaDB) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{20} + return fileDescriptor_4b6da5d4bb63aef7, []int{15} } func (m *MariaDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -640,7 +500,7 @@ var xxx_messageInfo_MariaDB proto.InternalMessageInfo func (m *MariaDBList) Reset() { *m = MariaDBList{} } func (*MariaDBList) ProtoMessage() {} func (*MariaDBList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{21} + return fileDescriptor_4b6da5d4bb63aef7, []int{16} } func (m *MariaDBList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -668,7 +528,7 @@ var xxx_messageInfo_MariaDBList proto.InternalMessageInfo func (m *MariaDBSpec) Reset() { *m = MariaDBSpec{} } func (*MariaDBSpec) ProtoMessage() {} func (*MariaDBSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{22} + return fileDescriptor_4b6da5d4bb63aef7, []int{17} } func (m *MariaDBSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -696,7 +556,7 @@ var xxx_messageInfo_MariaDBSpec proto.InternalMessageInfo func (m *MariaDBStatus) Reset() { *m = MariaDBStatus{} } func (*MariaDBStatus) ProtoMessage() {} func (*MariaDBStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{23} + return fileDescriptor_4b6da5d4bb63aef7, []int{18} } func (m *MariaDBStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -724,7 +584,7 @@ var xxx_messageInfo_MariaDBStatus proto.InternalMessageInfo func (m *MemberSecret) Reset() { *m = MemberSecret{} } func (*MemberSecret) ProtoMessage() {} func (*MemberSecret) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{24} + return fileDescriptor_4b6da5d4bb63aef7, []int{19} } func (m *MemberSecret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -752,7 +612,7 @@ var xxx_messageInfo_MemberSecret proto.InternalMessageInfo func (m *Memcached) Reset() { *m = Memcached{} } func (*Memcached) ProtoMessage() {} func (*Memcached) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{25} + return fileDescriptor_4b6da5d4bb63aef7, []int{20} } func (m *Memcached) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -780,7 +640,7 @@ var xxx_messageInfo_Memcached proto.InternalMessageInfo func (m *MemcachedList) Reset() { *m = MemcachedList{} } func (*MemcachedList) ProtoMessage() {} func (*MemcachedList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{26} + return fileDescriptor_4b6da5d4bb63aef7, []int{21} } func (m *MemcachedList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -808,7 +668,7 @@ var xxx_messageInfo_MemcachedList proto.InternalMessageInfo func (m *MemcachedSpec) Reset() { *m = MemcachedSpec{} } func (*MemcachedSpec) ProtoMessage() {} func (*MemcachedSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{27} + return fileDescriptor_4b6da5d4bb63aef7, []int{22} } func (m *MemcachedSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -836,7 +696,7 @@ var xxx_messageInfo_MemcachedSpec proto.InternalMessageInfo func (m *MemcachedStatus) Reset() { *m = MemcachedStatus{} } func (*MemcachedStatus) ProtoMessage() {} func (*MemcachedStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{28} + return fileDescriptor_4b6da5d4bb63aef7, []int{23} } func (m *MemcachedStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -864,7 +724,7 @@ var xxx_messageInfo_MemcachedStatus proto.InternalMessageInfo func (m *MongoDB) Reset() { *m = MongoDB{} } func (*MongoDB) ProtoMessage() {} func (*MongoDB) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{29} + return fileDescriptor_4b6da5d4bb63aef7, []int{24} } func (m *MongoDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -892,7 +752,7 @@ var xxx_messageInfo_MongoDB proto.InternalMessageInfo func (m *MongoDBConfigNode) Reset() { *m = MongoDBConfigNode{} } func (*MongoDBConfigNode) ProtoMessage() {} func (*MongoDBConfigNode) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{30} + return fileDescriptor_4b6da5d4bb63aef7, []int{25} } func (m *MongoDBConfigNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -920,7 +780,7 @@ var xxx_messageInfo_MongoDBConfigNode proto.InternalMessageInfo func (m *MongoDBList) Reset() { *m = MongoDBList{} } func (*MongoDBList) ProtoMessage() {} func (*MongoDBList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{31} + return fileDescriptor_4b6da5d4bb63aef7, []int{26} } func (m *MongoDBList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -948,7 +808,7 @@ var xxx_messageInfo_MongoDBList proto.InternalMessageInfo func (m *MongoDBMongosNode) Reset() { *m = MongoDBMongosNode{} } func (*MongoDBMongosNode) ProtoMessage() {} func (*MongoDBMongosNode) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{32} + return fileDescriptor_4b6da5d4bb63aef7, []int{27} } func (m *MongoDBMongosNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -976,7 +836,7 @@ var xxx_messageInfo_MongoDBMongosNode proto.InternalMessageInfo func (m *MongoDBNode) Reset() { *m = MongoDBNode{} } func (*MongoDBNode) ProtoMessage() {} func (*MongoDBNode) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{33} + return fileDescriptor_4b6da5d4bb63aef7, []int{28} } func (m *MongoDBNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1004,7 +864,7 @@ var xxx_messageInfo_MongoDBNode proto.InternalMessageInfo func (m *MongoDBReplicaSet) Reset() { *m = MongoDBReplicaSet{} } func (*MongoDBReplicaSet) ProtoMessage() {} func (*MongoDBReplicaSet) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{34} + return fileDescriptor_4b6da5d4bb63aef7, []int{29} } func (m *MongoDBReplicaSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1032,7 +892,7 @@ var xxx_messageInfo_MongoDBReplicaSet proto.InternalMessageInfo func (m *MongoDBShardNode) Reset() { *m = MongoDBShardNode{} } func (*MongoDBShardNode) ProtoMessage() {} func (*MongoDBShardNode) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{35} + return fileDescriptor_4b6da5d4bb63aef7, []int{30} } func (m *MongoDBShardNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1060,7 +920,7 @@ var xxx_messageInfo_MongoDBShardNode proto.InternalMessageInfo func (m *MongoDBShardingTopology) Reset() { *m = MongoDBShardingTopology{} } func (*MongoDBShardingTopology) ProtoMessage() {} func (*MongoDBShardingTopology) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{36} + return fileDescriptor_4b6da5d4bb63aef7, []int{31} } func (m *MongoDBShardingTopology) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1088,7 +948,7 @@ var xxx_messageInfo_MongoDBShardingTopology proto.InternalMessageInfo func (m *MongoDBSpec) Reset() { *m = MongoDBSpec{} } func (*MongoDBSpec) ProtoMessage() {} func (*MongoDBSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{37} + return fileDescriptor_4b6da5d4bb63aef7, []int{32} } func (m *MongoDBSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1116,7 +976,7 @@ var xxx_messageInfo_MongoDBSpec proto.InternalMessageInfo func (m *MongoDBStatus) Reset() { *m = MongoDBStatus{} } func (*MongoDBStatus) ProtoMessage() {} func (*MongoDBStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{38} + return fileDescriptor_4b6da5d4bb63aef7, []int{33} } func (m *MongoDBStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1144,7 +1004,7 @@ var xxx_messageInfo_MongoDBStatus proto.InternalMessageInfo func (m *MySQL) Reset() { *m = MySQL{} } func (*MySQL) ProtoMessage() {} func (*MySQL) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{39} + return fileDescriptor_4b6da5d4bb63aef7, []int{34} } func (m *MySQL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1172,7 +1032,7 @@ var xxx_messageInfo_MySQL proto.InternalMessageInfo func (m *MySQLClusterTopology) Reset() { *m = MySQLClusterTopology{} } func (*MySQLClusterTopology) ProtoMessage() {} func (*MySQLClusterTopology) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{40} + return fileDescriptor_4b6da5d4bb63aef7, []int{35} } func (m *MySQLClusterTopology) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1200,7 +1060,7 @@ var xxx_messageInfo_MySQLClusterTopology proto.InternalMessageInfo func (m *MySQLGroupSpec) Reset() { *m = MySQLGroupSpec{} } func (*MySQLGroupSpec) ProtoMessage() {} func (*MySQLGroupSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{41} + return fileDescriptor_4b6da5d4bb63aef7, []int{36} } func (m *MySQLGroupSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1228,7 +1088,7 @@ var xxx_messageInfo_MySQLGroupSpec proto.InternalMessageInfo func (m *MySQLList) Reset() { *m = MySQLList{} } func (*MySQLList) ProtoMessage() {} func (*MySQLList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{42} + return fileDescriptor_4b6da5d4bb63aef7, []int{37} } func (m *MySQLList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1256,7 +1116,7 @@ var xxx_messageInfo_MySQLList proto.InternalMessageInfo func (m *MySQLSpec) Reset() { *m = MySQLSpec{} } func (*MySQLSpec) ProtoMessage() {} func (*MySQLSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{43} + return fileDescriptor_4b6da5d4bb63aef7, []int{38} } func (m *MySQLSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1284,7 +1144,7 @@ var xxx_messageInfo_MySQLSpec proto.InternalMessageInfo func (m *MySQLStatus) Reset() { *m = MySQLStatus{} } func (*MySQLStatus) ProtoMessage() {} func (*MySQLStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{44} + return fileDescriptor_4b6da5d4bb63aef7, []int{39} } func (m *MySQLStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1309,66 +1169,10 @@ func (m *MySQLStatus) XXX_DiscardUnknown() { var xxx_messageInfo_MySQLStatus proto.InternalMessageInfo -func (m *Origin) Reset() { *m = Origin{} } -func (*Origin) ProtoMessage() {} -func (*Origin) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{45} -} -func (m *Origin) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Origin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *Origin) XXX_Merge(src proto.Message) { - xxx_messageInfo_Origin.Merge(m, src) -} -func (m *Origin) XXX_Size() int { - return m.Size() -} -func (m *Origin) XXX_DiscardUnknown() { - xxx_messageInfo_Origin.DiscardUnknown(m) -} - -var xxx_messageInfo_Origin proto.InternalMessageInfo - -func (m *OriginSpec) Reset() { *m = OriginSpec{} } -func (*OriginSpec) ProtoMessage() {} -func (*OriginSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{46} -} -func (m *OriginSpec) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *OriginSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *OriginSpec) XXX_Merge(src proto.Message) { - xxx_messageInfo_OriginSpec.Merge(m, src) -} -func (m *OriginSpec) XXX_Size() int { - return m.Size() -} -func (m *OriginSpec) XXX_DiscardUnknown() { - xxx_messageInfo_OriginSpec.DiscardUnknown(m) -} - -var xxx_messageInfo_OriginSpec proto.InternalMessageInfo - func (m *PerconaXtraDB) Reset() { *m = PerconaXtraDB{} } func (*PerconaXtraDB) ProtoMessage() {} func (*PerconaXtraDB) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{47} + return fileDescriptor_4b6da5d4bb63aef7, []int{40} } func (m *PerconaXtraDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1396,7 +1200,7 @@ var xxx_messageInfo_PerconaXtraDB proto.InternalMessageInfo func (m *PerconaXtraDBList) Reset() { *m = PerconaXtraDBList{} } func (*PerconaXtraDBList) ProtoMessage() {} func (*PerconaXtraDBList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{48} + return fileDescriptor_4b6da5d4bb63aef7, []int{41} } func (m *PerconaXtraDBList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1228,7 @@ var xxx_messageInfo_PerconaXtraDBList proto.InternalMessageInfo func (m *PerconaXtraDBSpec) Reset() { *m = PerconaXtraDBSpec{} } func (*PerconaXtraDBSpec) ProtoMessage() {} func (*PerconaXtraDBSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{49} + return fileDescriptor_4b6da5d4bb63aef7, []int{42} } func (m *PerconaXtraDBSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1452,7 +1256,7 @@ var xxx_messageInfo_PerconaXtraDBSpec proto.InternalMessageInfo func (m *PerconaXtraDBStatus) Reset() { *m = PerconaXtraDBStatus{} } func (*PerconaXtraDBStatus) ProtoMessage() {} func (*PerconaXtraDBStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{50} + return fileDescriptor_4b6da5d4bb63aef7, []int{43} } func (m *PerconaXtraDBStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1480,7 +1284,7 @@ var xxx_messageInfo_PerconaXtraDBStatus proto.InternalMessageInfo func (m *PgBouncer) Reset() { *m = PgBouncer{} } func (*PgBouncer) ProtoMessage() {} func (*PgBouncer) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{51} + return fileDescriptor_4b6da5d4bb63aef7, []int{44} } func (m *PgBouncer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1508,7 +1312,7 @@ var xxx_messageInfo_PgBouncer proto.InternalMessageInfo func (m *PgBouncerList) Reset() { *m = PgBouncerList{} } func (*PgBouncerList) ProtoMessage() {} func (*PgBouncerList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{52} + return fileDescriptor_4b6da5d4bb63aef7, []int{45} } func (m *PgBouncerList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1536,7 +1340,7 @@ var xxx_messageInfo_PgBouncerList proto.InternalMessageInfo func (m *PgBouncerSpec) Reset() { *m = PgBouncerSpec{} } func (*PgBouncerSpec) ProtoMessage() {} func (*PgBouncerSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{53} + return fileDescriptor_4b6da5d4bb63aef7, []int{46} } func (m *PgBouncerSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1564,7 +1368,7 @@ var xxx_messageInfo_PgBouncerSpec proto.InternalMessageInfo func (m *PgBouncerStatus) Reset() { *m = PgBouncerStatus{} } func (*PgBouncerStatus) ProtoMessage() {} func (*PgBouncerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{54} + return fileDescriptor_4b6da5d4bb63aef7, []int{47} } func (m *PgBouncerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1592,7 +1396,7 @@ var xxx_messageInfo_PgBouncerStatus proto.InternalMessageInfo func (m *Postgres) Reset() { *m = Postgres{} } func (*Postgres) ProtoMessage() {} func (*Postgres) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{55} + return fileDescriptor_4b6da5d4bb63aef7, []int{48} } func (m *Postgres) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1620,7 +1424,7 @@ var xxx_messageInfo_Postgres proto.InternalMessageInfo func (m *PostgresArchiverSpec) Reset() { *m = PostgresArchiverSpec{} } func (*PostgresArchiverSpec) ProtoMessage() {} func (*PostgresArchiverSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{56} + return fileDescriptor_4b6da5d4bb63aef7, []int{49} } func (m *PostgresArchiverSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1648,7 +1452,7 @@ var xxx_messageInfo_PostgresArchiverSpec proto.InternalMessageInfo func (m *PostgresList) Reset() { *m = PostgresList{} } func (*PostgresList) ProtoMessage() {} func (*PostgresList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{57} + return fileDescriptor_4b6da5d4bb63aef7, []int{50} } func (m *PostgresList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1676,7 +1480,7 @@ var xxx_messageInfo_PostgresList proto.InternalMessageInfo func (m *PostgresSpec) Reset() { *m = PostgresSpec{} } func (*PostgresSpec) ProtoMessage() {} func (*PostgresSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{58} + return fileDescriptor_4b6da5d4bb63aef7, []int{51} } func (m *PostgresSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1704,7 +1508,7 @@ var xxx_messageInfo_PostgresSpec proto.InternalMessageInfo func (m *PostgresStatus) Reset() { *m = PostgresStatus{} } func (*PostgresStatus) ProtoMessage() {} func (*PostgresStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{59} + return fileDescriptor_4b6da5d4bb63aef7, []int{52} } func (m *PostgresStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1732,7 +1536,7 @@ var xxx_messageInfo_PostgresStatus proto.InternalMessageInfo func (m *PostgresWALSourceSpec) Reset() { *m = PostgresWALSourceSpec{} } func (*PostgresWALSourceSpec) ProtoMessage() {} func (*PostgresWALSourceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{60} + return fileDescriptor_4b6da5d4bb63aef7, []int{53} } func (m *PostgresWALSourceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1760,7 +1564,7 @@ var xxx_messageInfo_PostgresWALSourceSpec proto.InternalMessageInfo func (m *ProxySQL) Reset() { *m = ProxySQL{} } func (*ProxySQL) ProtoMessage() {} func (*ProxySQL) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{61} + return fileDescriptor_4b6da5d4bb63aef7, []int{54} } func (m *ProxySQL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1788,7 +1592,7 @@ var xxx_messageInfo_ProxySQL proto.InternalMessageInfo func (m *ProxySQLBackendSpec) Reset() { *m = ProxySQLBackendSpec{} } func (*ProxySQLBackendSpec) ProtoMessage() {} func (*ProxySQLBackendSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{62} + return fileDescriptor_4b6da5d4bb63aef7, []int{55} } func (m *ProxySQLBackendSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1816,7 +1620,7 @@ var xxx_messageInfo_ProxySQLBackendSpec proto.InternalMessageInfo func (m *ProxySQLList) Reset() { *m = ProxySQLList{} } func (*ProxySQLList) ProtoMessage() {} func (*ProxySQLList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{63} + return fileDescriptor_4b6da5d4bb63aef7, []int{56} } func (m *ProxySQLList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1844,7 +1648,7 @@ var xxx_messageInfo_ProxySQLList proto.InternalMessageInfo func (m *ProxySQLSpec) Reset() { *m = ProxySQLSpec{} } func (*ProxySQLSpec) ProtoMessage() {} func (*ProxySQLSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{64} + return fileDescriptor_4b6da5d4bb63aef7, []int{57} } func (m *ProxySQLSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1872,7 +1676,7 @@ var xxx_messageInfo_ProxySQLSpec proto.InternalMessageInfo func (m *ProxySQLStatus) Reset() { *m = ProxySQLStatus{} } func (*ProxySQLStatus) ProtoMessage() {} func (*ProxySQLStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{65} + return fileDescriptor_4b6da5d4bb63aef7, []int{58} } func (m *ProxySQLStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1900,7 +1704,7 @@ var xxx_messageInfo_ProxySQLStatus proto.InternalMessageInfo func (m *RecoveryTarget) Reset() { *m = RecoveryTarget{} } func (*RecoveryTarget) ProtoMessage() {} func (*RecoveryTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{66} + return fileDescriptor_4b6da5d4bb63aef7, []int{59} } func (m *RecoveryTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1928,7 +1732,7 @@ var xxx_messageInfo_RecoveryTarget proto.InternalMessageInfo func (m *Redis) Reset() { *m = Redis{} } func (*Redis) ProtoMessage() {} func (*Redis) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{67} + return fileDescriptor_4b6da5d4bb63aef7, []int{60} } func (m *Redis) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1956,7 +1760,7 @@ var xxx_messageInfo_Redis proto.InternalMessageInfo func (m *RedisClusterSpec) Reset() { *m = RedisClusterSpec{} } func (*RedisClusterSpec) ProtoMessage() {} func (*RedisClusterSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{68} + return fileDescriptor_4b6da5d4bb63aef7, []int{61} } func (m *RedisClusterSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1984,7 +1788,7 @@ var xxx_messageInfo_RedisClusterSpec proto.InternalMessageInfo func (m *RedisList) Reset() { *m = RedisList{} } func (*RedisList) ProtoMessage() {} func (*RedisList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{69} + return fileDescriptor_4b6da5d4bb63aef7, []int{62} } func (m *RedisList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2012,7 +1816,7 @@ var xxx_messageInfo_RedisList proto.InternalMessageInfo func (m *RedisSpec) Reset() { *m = RedisSpec{} } func (*RedisSpec) ProtoMessage() {} func (*RedisSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{70} + return fileDescriptor_4b6da5d4bb63aef7, []int{63} } func (m *RedisSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2040,7 +1844,7 @@ var xxx_messageInfo_RedisSpec proto.InternalMessageInfo func (m *RedisStatus) Reset() { *m = RedisStatus{} } func (*RedisStatus) ProtoMessage() {} func (*RedisStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{71} + return fileDescriptor_4b6da5d4bb63aef7, []int{64} } func (m *RedisStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2068,7 +1872,7 @@ var xxx_messageInfo_RedisStatus proto.InternalMessageInfo func (m *ScriptSourceSpec) Reset() { *m = ScriptSourceSpec{} } func (*ScriptSourceSpec) ProtoMessage() {} func (*ScriptSourceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{72} + return fileDescriptor_4b6da5d4bb63aef7, []int{65} } func (m *ScriptSourceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2093,15 +1897,15 @@ func (m *ScriptSourceSpec) XXX_DiscardUnknown() { var xxx_messageInfo_ScriptSourceSpec proto.InternalMessageInfo -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (*Snapshot) ProtoMessage() {} -func (*Snapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{73} +func (m *TLSConfig) Reset() { *m = TLSConfig{} } +func (*TLSConfig) ProtoMessage() {} +func (*TLSConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_4b6da5d4bb63aef7, []int{66} } -func (m *Snapshot) XXX_Unmarshal(b []byte) error { +func (m *TLSConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *TLSConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) if err != nil { @@ -2109,150 +1913,10 @@ func (m *Snapshot) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { } return b[:n], nil } -func (m *Snapshot) XXX_Merge(src proto.Message) { - xxx_messageInfo_Snapshot.Merge(m, src) +func (m *TLSConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_TLSConfig.Merge(m, src) } -func (m *Snapshot) XXX_Size() int { - return m.Size() -} -func (m *Snapshot) XXX_DiscardUnknown() { - xxx_messageInfo_Snapshot.DiscardUnknown(m) -} - -var xxx_messageInfo_Snapshot proto.InternalMessageInfo - -func (m *SnapshotList) Reset() { *m = SnapshotList{} } -func (*SnapshotList) ProtoMessage() {} -func (*SnapshotList) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{74} -} -func (m *SnapshotList) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *SnapshotList) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotList.Merge(m, src) -} -func (m *SnapshotList) XXX_Size() int { - return m.Size() -} -func (m *SnapshotList) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotList.DiscardUnknown(m) -} - -var xxx_messageInfo_SnapshotList proto.InternalMessageInfo - -func (m *SnapshotSourceSpec) Reset() { *m = SnapshotSourceSpec{} } -func (*SnapshotSourceSpec) ProtoMessage() {} -func (*SnapshotSourceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{75} -} -func (m *SnapshotSourceSpec) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotSourceSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *SnapshotSourceSpec) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotSourceSpec.Merge(m, src) -} -func (m *SnapshotSourceSpec) XXX_Size() int { - return m.Size() -} -func (m *SnapshotSourceSpec) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotSourceSpec.DiscardUnknown(m) -} - -var xxx_messageInfo_SnapshotSourceSpec proto.InternalMessageInfo - -func (m *SnapshotSpec) Reset() { *m = SnapshotSpec{} } -func (*SnapshotSpec) ProtoMessage() {} -func (*SnapshotSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{76} -} -func (m *SnapshotSpec) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *SnapshotSpec) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotSpec.Merge(m, src) -} -func (m *SnapshotSpec) XXX_Size() int { - return m.Size() -} -func (m *SnapshotSpec) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotSpec.DiscardUnknown(m) -} - -var xxx_messageInfo_SnapshotSpec proto.InternalMessageInfo - -func (m *SnapshotStatus) Reset() { *m = SnapshotStatus{} } -func (*SnapshotStatus) ProtoMessage() {} -func (*SnapshotStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{77} -} -func (m *SnapshotStatus) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *SnapshotStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *SnapshotStatus) XXX_Merge(src proto.Message) { - xxx_messageInfo_SnapshotStatus.Merge(m, src) -} -func (m *SnapshotStatus) XXX_Size() int { - return m.Size() -} -func (m *SnapshotStatus) XXX_DiscardUnknown() { - xxx_messageInfo_SnapshotStatus.DiscardUnknown(m) -} - -var xxx_messageInfo_SnapshotStatus proto.InternalMessageInfo - -func (m *TLSConfig) Reset() { *m = TLSConfig{} } -func (*TLSConfig) ProtoMessage() {} -func (*TLSConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{78} -} -func (m *TLSConfig) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *TLSConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil -} -func (m *TLSConfig) XXX_Merge(src proto.Message) { - xxx_messageInfo_TLSConfig.Merge(m, src) -} -func (m *TLSConfig) XXX_Size() int { +func (m *TLSConfig) XXX_Size() int { return m.Size() } func (m *TLSConfig) XXX_DiscardUnknown() { @@ -2264,7 +1928,7 @@ var xxx_messageInfo_TLSConfig proto.InternalMessageInfo func (m *TLSPolicy) Reset() { *m = TLSPolicy{} } func (*TLSPolicy) ProtoMessage() {} func (*TLSPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_4b6da5d4bb63aef7, []int{79} + return fileDescriptor_4b6da5d4bb63aef7, []int{67} } func (m *TLSPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2290,14 +1954,9 @@ func (m *TLSPolicy) XXX_DiscardUnknown() { var xxx_messageInfo_TLSPolicy proto.InternalMessageInfo func init() { - proto.RegisterType((*BackupScheduleSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.BackupScheduleSpec") proto.RegisterType((*CertificateSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.CertificateSpec") proto.RegisterType((*ConnectionPoolConfig)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.ConnectionPoolConfig") proto.RegisterType((*Databases)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.Databases") - proto.RegisterType((*DormantDatabase)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.DormantDatabase") - proto.RegisterType((*DormantDatabaseList)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseList") - proto.RegisterType((*DormantDatabaseSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseSpec") - proto.RegisterType((*DormantDatabaseStatus)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.DormantDatabaseStatus") proto.RegisterType((*Elasticsearch)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.Elasticsearch") proto.RegisterType((*ElasticsearchClusterTopology)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.ElasticsearchClusterTopology") proto.RegisterType((*ElasticsearchList)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.ElasticsearchList") @@ -2335,8 +1994,6 @@ func init() { proto.RegisterType((*MySQLList)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.MySQLList") proto.RegisterType((*MySQLSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.MySQLSpec") proto.RegisterType((*MySQLStatus)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.MySQLStatus") - proto.RegisterType((*Origin)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.Origin") - proto.RegisterType((*OriginSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.OriginSpec") proto.RegisterType((*PerconaXtraDB)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDB") proto.RegisterType((*PerconaXtraDBList)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBList") proto.RegisterType((*PerconaXtraDBSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.PerconaXtraDBSpec") @@ -2363,11 +2020,6 @@ func init() { proto.RegisterType((*RedisSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.RedisSpec") proto.RegisterType((*RedisStatus)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.RedisStatus") proto.RegisterType((*ScriptSourceSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.ScriptSourceSpec") - proto.RegisterType((*Snapshot)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.Snapshot") - proto.RegisterType((*SnapshotList)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.SnapshotList") - proto.RegisterType((*SnapshotSourceSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.SnapshotSourceSpec") - proto.RegisterType((*SnapshotSpec)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.SnapshotSpec") - proto.RegisterType((*SnapshotStatus)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.SnapshotStatus") proto.RegisterType((*TLSConfig)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.TLSConfig") proto.RegisterType((*TLSPolicy)(nil), "kubedb.dev.apimachinery.apis.kubedb.v1alpha1.TLSPolicy") } @@ -2377,388 +2029,277 @@ func init() { } var fileDescriptor_4b6da5d4bb63aef7 = []byte{ - // 5010 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5d, 0x6c, 0x23, 0xd7, - 0x75, 0xbf, 0x49, 0x4a, 0x22, 0x79, 0x28, 0x51, 0xab, 0x2b, 0xd9, 0x96, 0xfd, 0xf7, 0x5f, 0x34, - 0x58, 0xc4, 0xd8, 0x1a, 0x5e, 0xca, 0x5e, 0x6f, 0x9c, 0x4d, 0xfc, 0x51, 0x8b, 0xd2, 0x3a, 0xde, - 0x54, 0xda, 0x55, 0x2f, 0x65, 0xaf, 0xbd, 0xb6, 0xeb, 0xbd, 0x1a, 0x5e, 0x91, 0x13, 0xcd, 0x97, - 0x67, 0x86, 0x8a, 0xe4, 0x04, 0x41, 0x50, 0xa4, 0x46, 0xfb, 0x50, 0xa0, 0x7d, 0xeb, 0x53, 0x1e, - 0x8a, 0x16, 0x79, 0x28, 0x0a, 0x14, 0x30, 0xd0, 0xa0, 0xed, 0x83, 0x51, 0xb4, 0x45, 0x5c, 0xf4, - 0xc5, 0x45, 0x80, 0x26, 0x45, 0x01, 0xa2, 0x66, 0xfb, 0x56, 0xf4, 0xa9, 0x05, 0x8a, 0x6e, 0x5f, - 0x8a, 0xfb, 0x31, 0x1f, 0x77, 0xf8, 0xb1, 0x22, 0x25, 0x72, 0x25, 0x40, 0x4f, 0xd2, 0xdc, 0x7b, - 0xce, 0xef, 0x7e, 0xce, 0x39, 0xbf, 0x73, 0xe7, 0xcc, 0x10, 0x5e, 0xd9, 0x6f, 0xed, 0xd2, 0xfa, - 0x6e, 0xa5, 0x4e, 0x0f, 0x56, 0x89, 0xa3, 0x9b, 0x44, 0x6b, 0xea, 0x16, 0x75, 0x8f, 0xd8, 0x85, - 0xb7, 0x2a, 0x2a, 0x57, 0x0f, 0x5e, 0x20, 0x86, 0xd3, 0x24, 0x2f, 0xac, 0x36, 0xa8, 0x45, 0x5d, - 0xe2, 0xd3, 0x7a, 0xc5, 0x71, 0x6d, 0xdf, 0x46, 0xcf, 0x45, 0xda, 0x95, 0xb8, 0x36, 0xbb, 0xf0, - 0x2a, 0xb2, 0x32, 0xd0, 0x7e, 0xf2, 0x4a, 0x43, 0xf7, 0x9b, 0xad, 0xdd, 0x8a, 0x66, 0x9b, 0xab, - 0x0d, 0xbb, 0x61, 0xaf, 0x72, 0x90, 0xdd, 0xd6, 0x1e, 0xbf, 0xe2, 0x17, 0xfc, 0x3f, 0x01, 0xfe, - 0x64, 0x79, 0xff, 0xba, 0x57, 0xd1, 0x6d, 0xd6, 0x93, 0x55, 0xe2, 0x38, 0xde, 0xea, 0x41, 0x57, - 0x07, 0x14, 0x19, 0xcd, 0x76, 0x69, 0x2f, 0x99, 0x6b, 0x91, 0x4c, 0x34, 0x3c, 0x67, 0xbf, 0x21, - 0x86, 0x68, 0x52, 0x9f, 0xf4, 0xd2, 0x5a, 0xed, 0xa7, 0xe5, 0xb6, 0x2c, 0x5f, 0x37, 0x69, 0x97, - 0xc2, 0x4b, 0x0f, 0x52, 0xf0, 0xb4, 0x26, 0x35, 0x49, 0x97, 0xde, 0x8b, 0xfd, 0xf4, 0x5a, 0xbe, - 0x6e, 0xac, 0xea, 0x96, 0xef, 0xf9, 0x6e, 0x97, 0xd2, 0x1b, 0xfb, 0xa6, 0x5d, 0x6f, 0x19, 0xd4, - 0xab, 0x1c, 0x1e, 0x7d, 0xbc, 0xaa, 0xb5, 0x3c, 0xdf, 0x36, 0xaf, 0xb8, 0xd4, 0xb3, 0x5b, 0xae, - 0x46, 0x3d, 0x31, 0x32, 0xe2, 0x38, 0x1a, 0xf1, 0x89, 0x61, 0x37, 0xfa, 0x2e, 0xe0, 0x93, 0xd7, - 0x15, 0x1c, 0xd3, 0xb6, 0x74, 0xdf, 0x76, 0x75, 0xab, 0x71, 0x85, 0x34, 0xa8, 0xe5, 0x5f, 0x11, - 0x53, 0xaf, 0xf7, 0x9a, 0x9f, 0x17, 0x15, 0x4d, 0x7b, 0xf7, 0xdb, 0x54, 0xf3, 0x3d, 0xdf, 0x76, - 0xe9, 0x20, 0xa5, 0xe7, 0x55, 0xa5, 0xbd, 0x3d, 0xaf, 0x69, 0xdb, 0x83, 0x9a, 0x29, 0x7f, 0x91, - 0x01, 0x54, 0x25, 0xda, 0x7e, 0xcb, 0xa9, 0x69, 0x4d, 0xca, 0x74, 0x6b, 0x0e, 0xd5, 0xd0, 0x6b, - 0x50, 0xd4, 0x5c, 0xdb, 0xba, 0x71, 0xe8, 0xb8, 0xd4, 0xf3, 0x74, 0xdb, 0x5a, 0x4e, 0x3d, 0x9d, - 0xba, 0x9c, 0xaf, 0x3e, 0xf6, 0x79, 0xbb, 0xf4, 0x48, 0xa7, 0x5d, 0x2a, 0xae, 0x2b, 0xb5, 0x38, - 0x21, 0x8d, 0xee, 0x40, 0x76, 0x97, 0x68, 0xfb, 0xd4, 0xaa, 0x2f, 0xa7, 0x9f, 0x4e, 0x5d, 0x2e, - 0x5c, 0x7d, 0xae, 0x12, 0xef, 0x5a, 0x25, 0x36, 0x9e, 0x0f, 0x89, 0xa3, 0xb3, 0xfd, 0x5c, 0x39, - 0x78, 0xa1, 0x52, 0x15, 0x3a, 0xd5, 0x79, 0xd9, 0x4c, 0x56, 0x16, 0xe0, 0x00, 0x0d, 0xbd, 0x0e, - 0x05, 0xa6, 0x45, 0x1a, 0x74, 0xe7, 0xc8, 0xa1, 0xcb, 0x19, 0xde, 0xab, 0x95, 0x4e, 0xbb, 0x54, - 0xa8, 0x45, 0xc5, 0xf7, 0xd5, 0x4b, 0x1c, 0x57, 0x41, 0x4d, 0x28, 0x38, 0x76, 0x7d, 0x87, 0x9a, - 0x8e, 0x41, 0x7c, 0xba, 0x3c, 0xc5, 0xbb, 0xf7, 0x42, 0xa2, 0x7b, 0x72, 0xe6, 0xe2, 0x7d, 0xdb, - 0x8e, 0x94, 0xd8, 0x14, 0x55, 0x17, 0x65, 0x1f, 0x0b, 0xb1, 0x0a, 0x1c, 0x87, 0x46, 0x2d, 0x40, - 0x8e, 0x5d, 0x7f, 0xdb, 0x36, 0x5a, 0x26, 0x5d, 0x37, 0x88, 0x6e, 0x32, 0xbd, 0xe5, 0x69, 0xde, - 0xe0, 0x95, 0x8a, 0xd8, 0x96, 0x1c, 0x9d, 0xdd, 0x59, 0xbc, 0x09, 0xea, 0x7a, 0xba, 0xe7, 0x53, - 0xcb, 0x4f, 0x28, 0x55, 0x1f, 0xeb, 0xb4, 0x4b, 0x68, 0xbb, 0x0b, 0x0c, 0xf7, 0x68, 0xa0, 0xfc, - 0x5b, 0x19, 0x98, 0x5f, 0xa7, 0xae, 0xaf, 0xef, 0xe9, 0x9a, 0xec, 0x2c, 0xba, 0x06, 0xb3, 0xb6, - 0xdb, 0x20, 0x96, 0xfe, 0x31, 0xf1, 0xc5, 0x6a, 0x66, 0x2e, 0xe7, 0xab, 0x97, 0x3a, 0xed, 0xd2, - 0xec, 0xed, 0x58, 0x39, 0x56, 0xa4, 0xd0, 0x3b, 0x90, 0xab, 0xb7, 0x5c, 0xa1, 0x21, 0x96, 0xb1, - 0x12, 0xeb, 0x76, 0x64, 0x8d, 0x9c, 0xfd, 0x86, 0xb0, 0x48, 0xec, 0x66, 0x67, 0x03, 0xd9, 0x90, - 0x5a, 0xd5, 0xd9, 0x4e, 0xbb, 0x94, 0x0b, 0xae, 0x70, 0x88, 0x86, 0x08, 0x14, 0x5c, 0x6a, 0xd1, - 0xef, 0x54, 0xe9, 0x9e, 0xed, 0x8a, 0x65, 0x1c, 0x1e, 0x7c, 0x9e, 0xcd, 0x3e, 0x8e, 0x60, 0x70, - 0x1c, 0x13, 0x5d, 0x86, 0x5c, 0xdd, 0xf2, 0x6e, 0x11, 0x93, 0x7a, 0xcb, 0x53, 0x7c, 0xb8, 0xa2, - 0x33, 0xb7, 0x6a, 0xbc, 0x0c, 0x87, 0xb5, 0xe8, 0x05, 0x28, 0xe8, 0xce, 0x5a, 0xbd, 0xce, 0x36, - 0x2f, 0xf5, 0x96, 0xa7, 0xb9, 0x30, 0x07, 0xbf, 0xb9, 0x1d, 0x16, 0xe3, 0xb8, 0x0c, 0xfa, 0x0a, - 0x64, 0x5b, 0xae, 0x5e, 0x5b, 0xbb, 0xe5, 0x2d, 0xcf, 0x70, 0xf1, 0x02, 0xdb, 0xad, 0x6f, 0xe1, - 0x9b, 0xac, 0x08, 0x07, 0x75, 0xe5, 0xff, 0x9e, 0x81, 0xa5, 0x75, 0xdb, 0xb2, 0xa8, 0xc6, 0x3a, - 0xbc, 0x6d, 0xdb, 0xc6, 0xba, 0x6d, 0xed, 0xe9, 0x0d, 0xf4, 0x14, 0x4c, 0x39, 0xb6, 0xeb, 0xf3, - 0xbb, 0x6a, 0xba, 0x9a, 0xeb, 0xb4, 0x4b, 0x53, 0xdb, 0xb6, 0xeb, 0x63, 0x5e, 0x8a, 0x9e, 0x83, - 0x9c, 0x63, 0xdb, 0xc6, 0x96, 0x5d, 0xa7, 0x7c, 0xde, 0xf3, 0xd5, 0x4b, 0x72, 0xb3, 0xe5, 0xb6, - 0x65, 0x39, 0x0e, 0x25, 0xd0, 0x26, 0x2c, 0x99, 0xe4, 0x70, 0xdd, 0xd0, 0xa9, 0xe5, 0x47, 0x8d, - 0x79, 0x7c, 0x52, 0x33, 0xd5, 0xe5, 0x4e, 0xbb, 0xb4, 0xb4, 0xd5, 0xa3, 0x1e, 0xf7, 0xd4, 0x42, - 0xaf, 0xc2, 0x7c, 0x9d, 0xee, 0x91, 0x96, 0xe1, 0xb3, 0xa6, 0x6a, 0xfa, 0xc7, 0xe2, 0x16, 0xc9, - 0x54, 0x17, 0x3b, 0xed, 0xd2, 0xfc, 0x86, 0x5a, 0x85, 0x93, 0xb2, 0x6c, 0x2e, 0x4d, 0xdd, 0x0a, - 0x55, 0xa7, 0xb9, 0x2a, 0x9f, 0xcb, 0xad, 0xa8, 0x18, 0xc7, 0x65, 0x58, 0x8b, 0x2e, 0xf5, 0xa8, - 0x7b, 0x40, 0x43, 0xb5, 0x99, 0xa8, 0x45, 0xac, 0x56, 0xe1, 0xa4, 0x2c, 0x7a, 0x0f, 0x9e, 0x88, - 0x15, 0xed, 0xe8, 0x26, 0xb5, 0x5b, 0x7e, 0x8d, 0x6a, 0xb6, 0x55, 0xf7, 0x96, 0xb3, 0x1c, 0xe8, - 0xff, 0x77, 0xda, 0xa5, 0x27, 0x70, 0x3f, 0x21, 0xdc, 0x5f, 0x1f, 0xbd, 0x0e, 0x97, 0x4c, 0x72, - 0xb8, 0x51, 0x8d, 0xcf, 0x6b, 0x8e, 0x63, 0x2e, 0x75, 0xda, 0xa5, 0x4b, 0x5b, 0x89, 0x3a, 0xdc, - 0x25, 0x8d, 0xde, 0x00, 0x64, 0x92, 0xc3, 0xb7, 0x3c, 0xea, 0xc6, 0x31, 0xf2, 0x1c, 0x83, 0xdf, - 0xd5, 0x5b, 0x5d, 0xb5, 0xb8, 0x87, 0x06, 0xc3, 0xf1, 0x7c, 0xe2, 0x7b, 0xdb, 0xd4, 0xd5, 0xed, - 0x7a, 0x30, 0x3e, 0x88, 0x70, 0x6a, 0x5d, 0xb5, 0xb8, 0x87, 0x06, 0xaa, 0x00, 0x90, 0xba, 0xa9, - 0x5b, 0x0c, 0xdf, 0x5b, 0x2e, 0xf0, 0xcd, 0x5b, 0xec, 0xb4, 0x4b, 0xb0, 0x16, 0x96, 0xe2, 0x98, - 0x04, 0xdb, 0x8b, 0xa4, 0xe5, 0x37, 0xb9, 0xb5, 0x9d, 0x55, 0xf7, 0xe2, 0x9a, 0x2c, 0xc7, 0xa1, - 0x44, 0x20, 0xcd, 0x54, 0x97, 0xe7, 0xba, 0xa5, 0x59, 0x39, 0x0e, 0x25, 0xd0, 0xbb, 0xf0, 0xb8, - 0xde, 0xb0, 0x6c, 0x97, 0xd6, 0x7c, 0xe2, 0xfa, 0x2d, 0x67, 0x9b, 0xb8, 0xc4, 0xa4, 0x3e, 0xeb, - 0x58, 0x91, 0x2b, 0x97, 0xa4, 0xf2, 0xe3, 0x37, 0x7b, 0x8b, 0xe1, 0x7e, 0xfa, 0xe5, 0x7f, 0x4c, - 0x43, 0x7e, 0x83, 0xf8, 0x64, 0x97, 0xb0, 0xdb, 0xf5, 0x97, 0x60, 0x9a, 0x18, 0x3a, 0xf1, 0xa4, - 0x17, 0x9b, 0x93, 0xb0, 0xd3, 0x6b, 0xac, 0x10, 0x8b, 0x3a, 0xf4, 0x5d, 0x28, 0xd4, 0xa5, 0x06, - 0xa6, 0x7b, 0xd2, 0xe0, 0x6d, 0xa8, 0x8e, 0x41, 0x30, 0x81, 0x0f, 0x43, 0x26, 0x20, 0x2c, 0x53, - 0xc4, 0x04, 0x42, 0x32, 0x56, 0x59, 0x73, 0x1c, 0x4c, 0xf7, 0xa8, 0x4b, 0x2d, 0x8d, 0x46, 0xbe, - 0x62, 0x23, 0x6a, 0x00, 0xc7, 0x5b, 0x43, 0xd7, 0x61, 0x36, 0xb8, 0x64, 0x46, 0x49, 0x3a, 0xb6, - 0x25, 0xa9, 0x37, 0xbb, 0x11, 0xab, 0xc3, 0x8a, 0x24, 0x32, 0x61, 0x21, 0xb8, 0xae, 0x51, 0xcd, - 0xa5, 0x3e, 0xeb, 0xbc, 0xf0, 0x6a, 0x97, 0x7b, 0x39, 0x99, 0x4d, 0x5b, 0x23, 0xc6, 0x6d, 0xee, - 0x7f, 0xa3, 0x0e, 0x3e, 0xda, 0x69, 0x97, 0x16, 0x36, 0x92, 0x30, 0xb8, 0x1b, 0xb9, 0xfc, 0xb7, - 0x69, 0x98, 0xdf, 0xb0, 0x5d, 0x93, 0x58, 0x7e, 0x20, 0x8f, 0xee, 0x41, 0x8e, 0x19, 0x67, 0x26, - 0xcc, 0x67, 0xb8, 0x70, 0xf5, 0xf9, 0xe3, 0x99, 0x72, 0xd1, 0x8d, 0x2d, 0xea, 0x93, 0x2a, 0x92, - 0x43, 0x85, 0xa8, 0x0c, 0x87, 0xa8, 0x48, 0x83, 0x29, 0x8f, 0x39, 0x4f, 0xb1, 0x28, 0x6b, 0x95, - 0x61, 0x78, 0x71, 0x25, 0xd1, 0x5d, 0xee, 0x50, 0x67, 0x65, 0x73, 0x53, 0xdc, 0x8d, 0x72, 0x70, - 0xb4, 0x0f, 0x33, 0xec, 0x86, 0x69, 0x79, 0xd2, 0x1f, 0xad, 0x9f, 0xac, 0x19, 0x0e, 0x55, 0x2d, - 0xca, 0x86, 0x66, 0xc4, 0x35, 0x96, 0x4d, 0x94, 0x7f, 0x9e, 0x82, 0xc5, 0x84, 0xc6, 0xa6, 0xee, - 0xf9, 0xe8, 0xfd, 0xae, 0xb9, 0x3c, 0xa6, 0x5b, 0x64, 0xda, 0x7c, 0x26, 0xc3, 0x3b, 0x2e, 0x28, - 0x89, 0xcd, 0xe3, 0x2e, 0x4c, 0xeb, 0x3e, 0x35, 0xbd, 0xe5, 0xf4, 0xd3, 0x99, 0xcb, 0x85, 0xab, - 0xaf, 0x9e, 0x68, 0x84, 0xd1, 0x7d, 0x74, 0x93, 0x61, 0x62, 0x01, 0x5d, 0xfe, 0x51, 0xf7, 0xc8, - 0x38, 0x07, 0xf9, 0x65, 0xc8, 0x7e, 0x47, 0x77, 0xe8, 0xed, 0x96, 0x70, 0x7b, 0xb9, 0x88, 0xe5, - 0xdd, 0x11, 0xc5, 0x38, 0xa8, 0x47, 0xef, 0xc3, 0x8c, 0xed, 0xea, 0x0d, 0x3d, 0xa0, 0x1d, 0xd7, - 0x86, 0xeb, 0xe7, 0x6d, 0xae, 0x1b, 0x4d, 0xbd, 0xb8, 0xc6, 0x12, 0xb3, 0xfc, 0x49, 0x06, 0x1e, - 0xed, 0xb9, 0x58, 0xe8, 0x03, 0x28, 0x38, 0xa4, 0xe5, 0xe9, 0x56, 0x83, 0xf9, 0x01, 0x39, 0xff, - 0xcf, 0x1e, 0x6f, 0xfe, 0x99, 0x86, 0xf0, 0x74, 0xdb, 0x11, 0x04, 0x8e, 0xe3, 0x31, 0x78, 0x39, - 0x42, 0x0e, 0x9f, 0x1e, 0x0d, 0xfe, 0x4e, 0x04, 0x81, 0xe3, 0x78, 0xe8, 0x65, 0x98, 0x76, 0x9a, - 0xc4, 0x0b, 0x8c, 0xc7, 0x57, 0x82, 0xd5, 0xd9, 0x66, 0x85, 0xf7, 0xdb, 0xa5, 0xa5, 0xc4, 0xa0, - 0x79, 0x39, 0x16, 0x3a, 0xe8, 0x19, 0x98, 0x71, 0x29, 0xf1, 0x6c, 0x8b, 0xdb, 0x8e, 0x7c, 0x34, - 0x79, 0x98, 0x97, 0x62, 0x59, 0x8b, 0xbe, 0x05, 0xc8, 0xde, 0xe5, 0xee, 0xb2, 0xfe, 0x4d, 0x11, - 0x4b, 0x30, 0x76, 0x28, 0xfc, 0xfc, 0x93, 0x52, 0x07, 0xdd, 0xee, 0x92, 0xc0, 0x3d, 0xb4, 0xca, - 0x9f, 0xa5, 0x61, 0xee, 0x86, 0x41, 0x3c, 0x5f, 0xd7, 0x3c, 0x4a, 0x5c, 0xad, 0x39, 0x01, 0x4b, - 0x42, 0x14, 0x4b, 0xf2, 0x2b, 0xc3, 0x6d, 0x2c, 0xa5, 0xb3, 0x7d, 0xed, 0x88, 0x9e, 0xb0, 0x23, - 0x6b, 0x27, 0x69, 0x64, 0xb0, 0x15, 0xf9, 0x59, 0x1a, 0x9e, 0x52, 0xe4, 0xd7, 0x8d, 0x96, 0xe7, - 0x53, 0x77, 0xc7, 0x76, 0x6c, 0xc3, 0x6e, 0x1c, 0xa1, 0x06, 0xcc, 0x98, 0x84, 0x95, 0xc8, 0xe9, - 0x3c, 0xc9, 0x80, 0x6f, 0xd9, 0x75, 0x1a, 0xf5, 0x64, 0x8b, 0xc3, 0x62, 0x09, 0xcf, 0xe6, 0x95, - 0xaf, 0x5a, 0xfa, 0x74, 0x9a, 0x09, 0xe7, 0x95, 0x6d, 0x56, 0xcc, 0xa1, 0xd9, 0x58, 0x34, 0xce, - 0x57, 0xe5, 0xbc, 0x9e, 0xde, 0x58, 0x04, 0x0d, 0xc6, 0x12, 0xbe, 0xfc, 0xb3, 0x14, 0x2c, 0x28, - 0xd2, 0x13, 0xb0, 0xcc, 0xf7, 0x54, 0xcb, 0xfc, 0xf2, 0x09, 0xc6, 0xd6, 0xc7, 0x2e, 0xff, 0x30, - 0x93, 0x18, 0x15, 0x9b, 0x03, 0x16, 0x26, 0xb9, 0xd4, 0x31, 0x74, 0x4d, 0xb2, 0xa3, 0x69, 0x11, - 0x26, 0x61, 0x59, 0x86, 0xc3, 0x5a, 0x66, 0x21, 0x1c, 0x97, 0xee, 0xe9, 0x87, 0x32, 0x26, 0x09, - 0x67, 0x6f, 0x9b, 0x97, 0x62, 0x59, 0x8b, 0x76, 0x20, 0x2b, 0xe3, 0x6d, 0xb9, 0x4e, 0x43, 0xc6, - 0xba, 0x3c, 0x94, 0x92, 0xe1, 0x3b, 0x0e, 0xa0, 0xd0, 0xbb, 0x90, 0x0f, 0x59, 0xd7, 0x20, 0x7a, - 0x83, 0xa5, 0x10, 0xa6, 0x1f, 0xb5, 0x74, 0x97, 0x9a, 0xd4, 0xf2, 0xbd, 0xea, 0x82, 0xec, 0x6a, - 0x3e, 0xa8, 0xf5, 0x70, 0x84, 0x86, 0x0c, 0x28, 0x32, 0xc2, 0x6d, 0x91, 0x03, 0xa2, 0x1b, 0x64, - 0xd7, 0xa0, 0x32, 0x46, 0xef, 0x6f, 0x7a, 0x5a, 0xbe, 0x6e, 0x54, 0xc4, 0xd1, 0x51, 0xe5, 0xa6, - 0xe5, 0xdf, 0x76, 0x6b, 0xbe, 0xab, 0x5b, 0x8d, 0x2a, 0xea, 0xb4, 0x4b, 0xc5, 0x2d, 0x05, 0x0b, - 0x27, 0xb0, 0xcb, 0x9f, 0x16, 0x13, 0xcb, 0x10, 0x38, 0xc7, 0x03, 0x36, 0x23, 0xe1, 0x49, 0x4b, - 0xe8, 0x1c, 0xdf, 0x16, 0xc5, 0x38, 0xa8, 0x57, 0x56, 0x2c, 0x3d, 0x70, 0xc5, 0x7c, 0xc8, 0xf9, - 0xd2, 0x10, 0xc8, 0xa5, 0xf8, 0xd6, 0x09, 0xb6, 0x55, 0xc2, 0xb4, 0x88, 0x56, 0x83, 0x2b, 0x1c, - 0xb6, 0x84, 0x56, 0x21, 0x4f, 0x2d, 0x36, 0xd4, 0x5a, 0x6d, 0x93, 0xaf, 0x54, 0x2e, 0x9a, 0xff, - 0x1b, 0x41, 0x05, 0x8e, 0x64, 0xd0, 0x3e, 0x2c, 0x68, 0xb1, 0xf3, 0x0a, 0x4e, 0x35, 0xe5, 0x12, - 0x3c, 0xd3, 0x6b, 0x89, 0x85, 0x84, 0xd8, 0x36, 0x35, 0xbe, 0x86, 0x82, 0xbf, 0xae, 0x27, 0x41, - 0x70, 0x37, 0x2e, 0x5a, 0x83, 0xf9, 0xba, 0xee, 0xf1, 0xa6, 0xa9, 0xd6, 0x72, 0x75, 0xff, 0x88, - 0x47, 0x9b, 0xb9, 0xea, 0xe3, 0xb2, 0x8f, 0xf3, 0x1b, 0x6a, 0x35, 0x4e, 0xca, 0xa3, 0xef, 0x02, - 0xb0, 0x10, 0x66, 0xdb, 0x68, 0x31, 0x86, 0x92, 0xe5, 0xcb, 0xf5, 0x5e, 0xe0, 0x74, 0xd6, 0xc2, - 0x9a, 0xfb, 0xed, 0xd2, 0x8d, 0x81, 0xa7, 0xbf, 0xc9, 0xd3, 0x43, 0x75, 0xba, 0x23, 0x20, 0x1c, - 0x6b, 0x0e, 0xed, 0x42, 0x51, 0x25, 0xe5, 0x3c, 0x1e, 0x3d, 0xfe, 0x4c, 0xf1, 0x2d, 0x9a, 0x60, - 0xfa, 0x09, 0x44, 0xb4, 0xa1, 0x1e, 0xb2, 0xe5, 0xf9, 0x08, 0xcb, 0x41, 0x0c, 0x73, 0xdc, 0x83, - 0xb6, 0x98, 0x1d, 0x80, 0xd3, 0xb3, 0x03, 0x3b, 0x30, 0xa5, 0x5b, 0xba, 0xbf, 0x5c, 0xe0, 0x90, - 0x2f, 0x0d, 0xb7, 0x9f, 0x6f, 0x5a, 0xba, 0xcf, 0xb1, 0xf9, 0x89, 0x0b, 0xbb, 0xc2, 0x1c, 0x0d, - 0x7d, 0x0f, 0x8a, 0xbb, 0xca, 0x29, 0x28, 0x8f, 0x75, 0x0b, 0x57, 0x5f, 0x1f, 0x0e, 0xbf, 0xfb, - 0x24, 0x55, 0xcc, 0xb7, 0x5a, 0x8e, 0x13, 0x6d, 0xa1, 0xbb, 0x90, 0x95, 0x47, 0xc3, 0x3c, 0x68, - 0x2e, 0x5c, 0x7d, 0x51, 0x8d, 0x3a, 0xa3, 0x73, 0xe3, 0x0f, 0xf9, 0xb9, 0x71, 0xfc, 0x58, 0x72, - 0x8d, 0x15, 0x44, 0xf3, 0xb5, 0x25, 0x44, 0x71, 0x00, 0x88, 0xde, 0x86, 0x59, 0x8d, 0x9f, 0x39, - 0x89, 0xf5, 0xe7, 0x81, 0x75, 0xe1, 0xea, 0xd3, 0xbd, 0x96, 0x42, 0xd9, 0x27, 0xfc, 0x6c, 0x70, - 0x3d, 0xa6, 0x89, 0x15, 0x9c, 0xe4, 0x31, 0xea, 0xfc, 0xf8, 0x8e, 0x51, 0x0f, 0x61, 0x9e, 0x31, - 0x47, 0x5d, 0xa3, 0x61, 0x6b, 0x97, 0x78, 0x6b, 0x5f, 0x7d, 0x70, 0x6b, 0x35, 0x55, 0x91, 0xb7, - 0x18, 0xde, 0xe8, 0x89, 0x4a, 0x9c, 0x6c, 0xa6, 0x87, 0x63, 0x58, 0x18, 0x9f, 0x63, 0x40, 0x26, - 0x14, 0x5b, 0x4e, 0x9d, 0xf5, 0xd2, 0x77, 0x89, 0x4f, 0x1b, 0x47, 0xcb, 0xa8, 0xfb, 0xb6, 0x21, - 0x8e, 0xe3, 0xf1, 0x81, 0xf9, 0xc4, 0xa7, 0x7b, 0x2d, 0xa3, 0x46, 0xfd, 0xb7, 0x14, 0xa5, 0xe8, - 0x88, 0x5e, 0x2d, 0xc7, 0x09, 0x70, 0xee, 0xce, 0x49, 0xcb, 0xa3, 0xf5, 0xe5, 0x45, 0x6e, 0xff, - 0x22, 0x77, 0xce, 0x4b, 0xb1, 0xac, 0x65, 0x72, 0x4d, 0x62, 0xf8, 0xb4, 0xbe, 0xbc, 0xa4, 0xca, - 0xbd, 0xc9, 0x4b, 0xb1, 0xac, 0x45, 0xef, 0xc3, 0x82, 0x4f, 0x5d, 0x53, 0xb7, 0x88, 0x38, 0xeb, - 0x34, 0x74, 0xed, 0x68, 0xf9, 0x51, 0x6e, 0x3a, 0x2a, 0x52, 0x65, 0x61, 0x27, 0x29, 0x70, 0xbf, - 0x57, 0x21, 0xee, 0x06, 0x2a, 0x7f, 0x96, 0x82, 0xc5, 0x1e, 0xc4, 0x18, 0x5d, 0x0b, 0x62, 0x1e, - 0xe1, 0x35, 0x57, 0x92, 0x31, 0xcf, 0xdc, 0x03, 0x82, 0x9d, 0xf4, 0x08, 0xc1, 0x4e, 0x66, 0xa4, - 0x60, 0xe7, 0x0f, 0xd3, 0x30, 0x75, 0xc3, 0xd7, 0xea, 0x13, 0x88, 0x71, 0xde, 0x51, 0x62, 0x9c, - 0x21, 0x6d, 0x24, 0xeb, 0x63, 0xdf, 0xd0, 0xe6, 0x5e, 0x22, 0xb4, 0xb9, 0x3e, 0x02, 0xf6, 0xe0, - 0x88, 0xe6, 0xaf, 0x52, 0x90, 0x63, 0x62, 0x13, 0xa0, 0xdc, 0x77, 0x54, 0xca, 0x7d, 0x75, 0xf8, - 0xb1, 0xf4, 0x61, 0xda, 0xff, 0x96, 0x17, 0x63, 0x18, 0x1f, 0xb3, 0xdb, 0xe8, 0xf5, 0x18, 0xec, - 0x24, 0x1e, 0x7a, 0xea, 0xf4, 0x3c, 0x74, 0x37, 0x43, 0x99, 0x3e, 0x75, 0x86, 0x12, 0xb0, 0x80, - 0x99, 0x31, 0xb3, 0x80, 0xec, 0xc3, 0x61, 0x01, 0xb9, 0xd3, 0x66, 0x01, 0x18, 0x32, 0xbe, 0x21, - 0x1e, 0x3b, 0x14, 0xae, 0x7e, 0x6d, 0xb8, 0xe1, 0xec, 0x6c, 0xd6, 0x84, 0x11, 0xae, 0x66, 0x3b, - 0xed, 0x52, 0x66, 0x67, 0xb3, 0x86, 0x19, 0x58, 0x92, 0x01, 0xc0, 0x44, 0x19, 0x40, 0x61, 0x32, - 0x0c, 0xa0, 0xdb, 0x27, 0xcf, 0x4e, 0xc6, 0x27, 0xcf, 0x1d, 0xd3, 0x27, 0x17, 0x87, 0xf7, 0xc9, - 0xf3, 0xa7, 0xe5, 0x93, 0xff, 0x2c, 0x05, 0x10, 0x59, 0xf4, 0x73, 0xe4, 0x8a, 0xff, 0x3d, 0x03, - 0xb9, 0xc0, 0x08, 0x20, 0x1f, 0x66, 0x3d, 0xcd, 0xd5, 0x1d, 0x5f, 0x12, 0x64, 0xe1, 0x67, 0x5e, - 0x1b, 0xee, 0x1e, 0xa9, 0xc5, 0x10, 0xf8, 0x16, 0xe3, 0xf4, 0x39, 0x5e, 0x8a, 0x95, 0x56, 0x98, - 0xa9, 0xf1, 0x2c, 0xe2, 0x78, 0x4d, 0x3b, 0x68, 0x37, 0x3d, 0x8a, 0xa9, 0xa9, 0x29, 0x18, 0x91, - 0xa9, 0x51, 0xcb, 0x71, 0xa2, 0x2d, 0x74, 0xc0, 0x6e, 0x5d, 0xcf, 0x6f, 0xb8, 0xd4, 0xbb, 0xb3, - 0xb6, 0x39, 0xda, 0xe3, 0x8e, 0xed, 0x08, 0x20, 0xd6, 0xba, 0x38, 0x00, 0x8f, 0xaa, 0x70, 0xbc, - 0x21, 0xe4, 0xc1, 0xa2, 0xe7, 0x13, 0xaf, 0x89, 0x29, 0x4f, 0xfd, 0xa8, 0xc9, 0xdc, 0x92, 0x61, - 0x9f, 0x56, 0x3d, 0xde, 0x69, 0x97, 0x16, 0x6b, 0xdd, 0x40, 0xb8, 0x17, 0x7a, 0xf9, 0x93, 0x34, - 0x2c, 0x6d, 0x52, 0x52, 0xa7, 0xee, 0x0d, 0x43, 0x3c, 0x4d, 0x95, 0x0f, 0xe1, 0xb7, 0x61, 0xc9, - 0xa0, 0xc4, 0xa3, 0x41, 0x42, 0x41, 0xf0, 0x50, 0x55, 0x1c, 0x83, 0x3d, 0x25, 0x37, 0x15, 0xd3, - 0xed, 0x92, 0xc1, 0x3d, 0x35, 0x19, 0x22, 0x4f, 0x41, 0xd8, 0xa0, 0xa4, 0x6e, 0xe8, 0x16, 0x0d, - 0x10, 0xd3, 0x2a, 0x22, 0xee, 0x21, 0x83, 0x7b, 0x6a, 0xb2, 0x6d, 0xef, 0x52, 0xdf, 0x3d, 0x52, - 0x1f, 0xfb, 0x66, 0x38, 0x5e, 0xb8, 0xed, 0x71, 0x97, 0x04, 0xee, 0xa1, 0x55, 0xfe, 0x93, 0x34, - 0x64, 0xb7, 0x88, 0xab, 0x93, 0x8d, 0xea, 0x04, 0x48, 0xe8, 0x7b, 0x0a, 0x09, 0xfd, 0xfa, 0x70, - 0x9b, 0x4b, 0x76, 0xb3, 0x2f, 0x0f, 0xd5, 0x12, 0x3c, 0xf4, 0xe5, 0xd1, 0xe0, 0x07, 0x53, 0xd1, - 0x9f, 0xa6, 0xa0, 0x20, 0x25, 0x27, 0xc0, 0x46, 0xef, 0xaa, 0x6c, 0xf4, 0xab, 0x23, 0x8d, 0xa8, - 0x0f, 0x21, 0xfd, 0x8f, 0x5c, 0x38, 0x92, 0x0b, 0x4e, 0x7a, 0xbe, 0x38, 0x69, 0x8c, 0x15, 0x66, - 0xc7, 0x7d, 0x36, 0x94, 0x1b, 0xcf, 0xd9, 0x50, 0x7e, 0xa2, 0xcc, 0x10, 0x1e, 0x16, 0x33, 0x2c, - 0x4c, 0x86, 0x19, 0xce, 0x1e, 0x93, 0x19, 0xce, 0x0d, 0xcf, 0x0c, 0x8b, 0xa7, 0xc5, 0x0c, 0xff, - 0x3c, 0x05, 0x73, 0x8a, 0x8d, 0x3d, 0x47, 0xe4, 0xf0, 0x7b, 0x30, 0xbb, 0x45, 0xcd, 0x5d, 0xea, - 0xca, 0xdb, 0xfa, 0x2a, 0x80, 0x43, 0x83, 0x2b, 0xd9, 0xfd, 0xd0, 0xf3, 0x6d, 0x87, 0x35, 0x38, - 0x26, 0x85, 0xae, 0xc3, 0x2c, 0xc7, 0x0d, 0xb4, 0xd2, 0x6a, 0x36, 0x4f, 0x2d, 0x56, 0x87, 0x15, - 0xc9, 0xf2, 0xa7, 0x69, 0xc8, 0x6f, 0x51, 0x53, 0x23, 0x2c, 0x2a, 0x9c, 0x80, 0x97, 0xfe, 0x40, - 0xf1, 0xd2, 0xc3, 0xba, 0xd1, 0xa0, 0xa3, 0x7d, 0xfd, 0x34, 0x4d, 0xf8, 0xe9, 0x57, 0x47, 0x6d, - 0x60, 0xb0, 0xa7, 0xfe, 0x7b, 0xb6, 0xdf, 0x02, 0xd9, 0x09, 0xf8, 0xea, 0xf7, 0x55, 0x5f, 0xfd, - 0xb5, 0x11, 0x47, 0xd5, 0xc7, 0x5b, 0x7f, 0x32, 0x13, 0x1b, 0x4d, 0xd2, 0x5f, 0x4f, 0x0f, 0xe1, - 0xaf, 0x67, 0x06, 0xfa, 0xeb, 0x0b, 0xcf, 0x72, 0x36, 0x3d, 0xcb, 0x5d, 0xc8, 0x79, 0x81, 0x4f, - 0x99, 0xea, 0x66, 0x29, 0x81, 0x4f, 0xd9, 0xa0, 0x8e, 0x61, 0x1f, 0x99, 0x6c, 0x1d, 0x1e, 0xe4, - 0x4c, 0x42, 0xbc, 0x98, 0x1b, 0x29, 0x1c, 0xd3, 0x8d, 0xcc, 0x0e, 0xef, 0x46, 0xe6, 0x4e, 0xcb, - 0x8d, 0xfc, 0x65, 0x0a, 0xe6, 0x13, 0x26, 0xe0, 0x1c, 0x39, 0x12, 0x1e, 0x6e, 0xd9, 0x56, 0xc3, - 0x3e, 0x07, 0xe1, 0x96, 0xe8, 0xe6, 0xd8, 0xc2, 0x2d, 0x09, 0x3f, 0xd8, 0x88, 0xff, 0x73, 0x0a, - 0x16, 0xa4, 0xa4, 0xb0, 0x00, 0x3c, 0x3f, 0xc5, 0x81, 0x82, 0x29, 0x0a, 0xd9, 0xa5, 0x9c, 0xbc, - 0xd1, 0x86, 0xc7, 0x73, 0x7e, 0xc2, 0x3b, 0x3f, 0x56, 0x88, 0xe3, 0x4d, 0xc4, 0x23, 0x90, 0xf4, - 0xa9, 0x45, 0x20, 0x22, 0x98, 0x14, 0xad, 0x9c, 0xfd, 0x60, 0x52, 0xf4, 0xb3, 0x8f, 0x7b, 0x8a, - 0xad, 0x13, 0xff, 0xe3, 0xf5, 0x5a, 0xa7, 0xe9, 0x49, 0xac, 0xd3, 0xa8, 0x76, 0x32, 0x9c, 0xb9, - 0x6e, 0x0b, 0x59, 0xfe, 0xa3, 0x34, 0xc4, 0x9b, 0x44, 0xcf, 0x75, 0xe5, 0x47, 0x85, 0xda, 0x27, - 0xc8, 0x91, 0x4a, 0xfa, 0xc7, 0xcc, 0x78, 0xfc, 0xe3, 0xf8, 0x5e, 0x6e, 0x2a, 0xff, 0x30, 0xda, - 0x05, 0x72, 0x1e, 0x6a, 0xd4, 0x47, 0x4f, 0xc3, 0x94, 0x45, 0xcc, 0xc0, 0x38, 0x87, 0xa6, 0x84, - 0xa7, 0xad, 0xf3, 0x1a, 0xb4, 0x05, 0xd9, 0x7d, 0x7a, 0xf4, 0x86, 0x6e, 0x04, 0x77, 0xd7, 0x71, - 0x43, 0x70, 0x7e, 0x5b, 0xfd, 0xaa, 0x50, 0xc5, 0x01, 0x46, 0xf9, 0x37, 0xd2, 0x70, 0x29, 0x30, - 0x2f, 0x4d, 0xe2, 0xd6, 0xf9, 0x9a, 0x3d, 0x03, 0x33, 0x1e, 0xbb, 0x08, 0x56, 0x2c, 0xb2, 0x38, - 0xbc, 0x14, 0xcb, 0xda, 0xe4, 0x9e, 0x4d, 0x4f, 0xd4, 0xb6, 0x9c, 0x5e, 0x6e, 0x5c, 0xb9, 0x93, - 0x86, 0xc7, 0xe3, 0x93, 0xa0, 0x5b, 0x8d, 0x30, 0x01, 0x54, 0x83, 0x69, 0x3e, 0xda, 0xd1, 0xce, - 0xb5, 0x93, 0x53, 0x1b, 0x99, 0x04, 0x5e, 0x84, 0x05, 0x36, 0x3a, 0x0a, 0xb7, 0x33, 0x8f, 0x65, - 0x46, 0x4b, 0x02, 0xed, 0xb2, 0xfd, 0x51, 0xc0, 0xb4, 0x1e, 0x03, 0xc7, 0x4a, 0x53, 0x3c, 0xc1, - 0x95, 0x5b, 0xa1, 0xd1, 0x92, 0x42, 0xbb, 0x0c, 0x59, 0x2c, 0xc1, 0x95, 0x97, 0x61, 0x09, 0x5f, - 0xfe, 0x87, 0xb9, 0xd0, 0x30, 0x8c, 0xef, 0x0c, 0xcd, 0x06, 0x70, 0xc3, 0xbb, 0xe9, 0x44, 0x23, - 0x8a, 0x6e, 0x4a, 0xf1, 0x7a, 0x4f, 0x74, 0x8d, 0x63, 0x4d, 0xa0, 0xef, 0xc3, 0x1c, 0x5f, 0xc2, - 0x60, 0xbf, 0x48, 0x93, 0x71, 0x63, 0xf4, 0x6d, 0x12, 0xdb, 0x7c, 0xd5, 0x85, 0x4e, 0xbb, 0x34, - 0x57, 0x8b, 0xe3, 0x63, 0xb5, 0xb9, 0xe4, 0xa1, 0xe1, 0xf4, 0x89, 0x0f, 0x0d, 0x67, 0xc6, 0x79, - 0x68, 0x98, 0x3d, 0xf5, 0x43, 0xc3, 0x9e, 0xb9, 0x8f, 0xb9, 0x31, 0xe5, 0x3e, 0xee, 0xc0, 0xbc, - 0x26, 0x92, 0x38, 0xd7, 0x5a, 0x7e, 0x93, 0xbf, 0x5e, 0x28, 0x72, 0xfb, 0x9e, 0x0d, 0x82, 0x93, - 0x75, 0xb5, 0xfa, 0x7e, 0x77, 0x11, 0x4e, 0x42, 0xa0, 0x6b, 0x90, 0xf5, 0x3c, 0xf1, 0xb2, 0x22, - 0x70, 0xb4, 0x80, 0x28, 0x67, 0x6b, 0xb5, 0x4d, 0x89, 0x12, 0xfc, 0x8b, 0x03, 0xd1, 0x8b, 0x3c, - 0xbe, 0x33, 0x92, 0xc7, 0x57, 0x3f, 0xa5, 0x3c, 0xbe, 0xf9, 0x33, 0x9a, 0xc3, 0xd7, 0x7d, 0x4e, - 0xbb, 0x30, 0x99, 0x73, 0x5a, 0x74, 0xcc, 0x00, 0x7b, 0x71, 0xf8, 0x00, 0x7b, 0xe9, 0x54, 0xcf, - 0x69, 0xe3, 0xc1, 0xd9, 0x39, 0x0a, 0xaf, 0x7f, 0x9c, 0x86, 0xe9, 0xad, 0xa3, 0xda, 0xaf, 0x6d, - 0x4e, 0x20, 0xb8, 0x7e, 0x57, 0x09, 0xae, 0x87, 0x3d, 0xee, 0x63, 0x9d, 0xec, 0x1b, 0x5a, 0x93, - 0x44, 0x68, 0xfd, 0xf5, 0x51, 0xc0, 0x07, 0x07, 0xd6, 0x3f, 0x4e, 0xc1, 0x12, 0x97, 0x4b, 0xbe, - 0x1c, 0xf4, 0x3c, 0x4c, 0x99, 0x41, 0x50, 0x9d, 0xaf, 0x3e, 0xc5, 0x7a, 0x26, 0xed, 0xf5, 0xa5, - 0xb8, 0x3c, 0x37, 0xdc, 0x5c, 0x12, 0x7d, 0x00, 0xd3, 0x0d, 0xd7, 0x6e, 0x39, 0x72, 0x26, 0x5e, - 0x19, 0xa1, 0xb3, 0xdf, 0x64, 0xfa, 0x7c, 0x3a, 0xf2, 0x6c, 0x63, 0xf1, 0x4b, 0x2c, 0x50, 0xcb, - 0xbf, 0x9f, 0x82, 0xa2, 0x2a, 0x84, 0x2a, 0x4a, 0x1f, 0x9f, 0x8c, 0xf5, 0x31, 0x26, 0x19, 0xeb, - 0x61, 0x10, 0x81, 0xa4, 0xfb, 0x46, 0x20, 0xd7, 0x60, 0x56, 0x38, 0x60, 0xc6, 0x1f, 0x6f, 0x6e, - 0xc8, 0xed, 0xc7, 0xed, 0x64, 0x35, 0x56, 0x8e, 0x15, 0xa9, 0xf2, 0x5f, 0xa7, 0x20, 0xcf, 0x1b, - 0x9c, 0x40, 0xf4, 0xfe, 0x8e, 0x1a, 0xbd, 0xbf, 0x38, 0xc2, 0x2c, 0xf7, 0x89, 0xdd, 0x7f, 0x0e, - 0x72, 0x14, 0xe3, 0xa3, 0xb0, 0x46, 0xd7, 0x4b, 0x27, 0xd5, 0x11, 0xfa, 0x7f, 0xdc, 0x97, 0x4d, - 0x12, 0xfc, 0x71, 0xea, 0xc4, 0xfc, 0x71, 0x7a, 0x9c, 0xfc, 0x71, 0x66, 0x6c, 0x0f, 0x9d, 0xb3, - 0x63, 0xa6, 0x51, 0xb9, 0x87, 0x43, 0xa3, 0xf2, 0xe3, 0xa6, 0x51, 0x30, 0x9e, 0x83, 0x97, 0xc2, - 0x44, 0x1f, 0x4c, 0xcc, 0x3e, 0x2c, 0x2a, 0x35, 0x37, 0x19, 0x2a, 0x55, 0x3c, 0x26, 0x95, 0x9a, - 0x1f, 0x9e, 0x4a, 0x5d, 0x3a, 0x2d, 0x2a, 0xf5, 0x93, 0x14, 0x14, 0x62, 0xce, 0xf8, 0x1c, 0x11, - 0xa9, 0x2f, 0x52, 0x20, 0xdf, 0x90, 0x47, 0xdf, 0xee, 0x72, 0x6b, 0x2f, 0x1e, 0x63, 0x0b, 0x13, - 0xd7, 0xd7, 0x83, 0x24, 0x3d, 0xee, 0xdb, 0x9e, 0x08, 0xa6, 0xb3, 0xab, 0x4a, 0x39, 0xa2, 0x8e, - 0x73, 0xaa, 0xeb, 0xa3, 0xbc, 0xe1, 0xdf, 0x8f, 0x54, 0x95, 0x7f, 0x94, 0x05, 0x88, 0x44, 0xd0, - 0x21, 0xcc, 0xd1, 0xf8, 0xbb, 0x23, 0xa7, 0xf0, 0x2e, 0x34, 0x6f, 0x9a, 0x1f, 0x6f, 0x28, 0xc5, - 0x58, 0x6d, 0x08, 0xd5, 0x21, 0x17, 0xe4, 0x3f, 0xca, 0x81, 0x7e, 0x63, 0xb4, 0x2c, 0x4b, 0x31, - 0x54, 0xf1, 0x05, 0x20, 0x51, 0x82, 0x43, 0x64, 0xc6, 0x17, 0xcc, 0x23, 0xef, 0x23, 0x43, 0xfa, - 0xdb, 0x91, 0xf9, 0x29, 0x27, 0x64, 0xfc, 0x12, 0x0b, 0x40, 0x36, 0x73, 0x0e, 0x75, 0x35, 0xdb, - 0x22, 0x87, 0xbe, 0x4b, 0xea, 0xbb, 0xf2, 0x78, 0x68, 0xc8, 0x99, 0xdb, 0x16, 0x10, 0xef, 0xf8, - 0x6e, 0x90, 0xd3, 0xc7, 0x67, 0x4e, 0x29, 0xc6, 0x6a, 0x43, 0xe8, 0x1e, 0x64, 0x4d, 0xe2, 0xea, - 0xac, 0xcd, 0xe9, 0x93, 0x66, 0x10, 0x0a, 0x57, 0x20, 0x0a, 0x70, 0x00, 0xcb, 0x5b, 0x60, 0xb1, - 0x4f, 0x7d, 0x57, 0xfa, 0xe5, 0x13, 0x3c, 0x34, 0x0b, 0x9c, 0x0d, 0x3f, 0x79, 0x0b, 0x60, 0xd9, - 0xba, 0xb8, 0xb4, 0xae, 0x7b, 0xd2, 0x3b, 0x0f, 0xb9, 0x2e, 0x98, 0xa9, 0x46, 0xeb, 0xc2, 0x2f, - 0xb1, 0x00, 0x44, 0x4d, 0xc8, 0x9b, 0xc1, 0x83, 0x51, 0xe9, 0x9b, 0x4f, 0x94, 0xbb, 0x31, 0xd7, - 0x69, 0x97, 0xa2, 0xbc, 0x13, 0x1c, 0x81, 0x33, 0x82, 0x41, 0x7d, 0xad, 0x2e, 0x3d, 0xf1, 0xa8, - 0xef, 0x12, 0x71, 0x82, 0xc1, 0xae, 0x30, 0x47, 0xe3, 0x5f, 0x7e, 0x50, 0x96, 0xff, 0xac, 0x7f, - 0xf9, 0xa1, 0x7b, 0x0b, 0x8f, 0xe1, 0xcb, 0x0f, 0x6a, 0x23, 0x0f, 0xf8, 0xf2, 0x43, 0x0a, 0x16, - 0x14, 0xf9, 0x33, 0xff, 0x8d, 0x02, 0xa5, 0xb7, 0x7d, 0xe2, 0x93, 0xff, 0xcc, 0x25, 0x46, 0x75, - 0x91, 0xae, 0x7a, 0x91, 0xae, 0x7a, 0x91, 0x54, 0x74, 0x91, 0xae, 0x3a, 0xd6, 0x74, 0xd5, 0xcf, - 0x52, 0xb0, 0xd8, 0xc3, 0xf6, 0x9e, 0x23, 0x0e, 0xff, 0x69, 0x1a, 0xf2, 0xdb, 0x8d, 0xaa, 0xdd, - 0xb2, 0x34, 0xea, 0x9e, 0xf5, 0xb4, 0xd1, 0xb0, 0xa3, 0xe3, 0x4a, 0x1b, 0x8d, 0x1a, 0x78, 0x70, - 0xda, 0x68, 0x28, 0x7b, 0xe6, 0xd3, 0x46, 0xc3, 0x9e, 0xf6, 0xf1, 0x9d, 0xff, 0x33, 0x13, 0x1b, - 0xcd, 0xf8, 0xfc, 0x66, 0x0f, 0x1b, 0x96, 0x99, 0x8c, 0x0d, 0x9b, 0xdc, 0x97, 0x7b, 0x9b, 0x90, - 0x0f, 0xbc, 0xa5, 0xf8, 0x1e, 0xec, 0xd0, 0x8b, 0x15, 0x7e, 0x7b, 0x32, 0xfa, 0xf6, 0x4d, 0x58, - 0x84, 0x23, 0x70, 0xf4, 0x7d, 0x28, 0x6a, 0xca, 0x07, 0x62, 0xa5, 0x3f, 0x1e, 0xf2, 0xcc, 0xb4, - 0xd7, 0x47, 0x66, 0x05, 0x0b, 0x50, 0x6b, 0x70, 0xa2, 0x35, 0x64, 0xc2, 0x42, 0xcb, 0x13, 0x9b, - 0x3f, 0xfa, 0x7a, 0x64, 0x76, 0x94, 0xaf, 0x47, 0xbe, 0x95, 0x84, 0xc1, 0xdd, 0xc8, 0x67, 0xf9, - 0x1d, 0x67, 0x39, 0x69, 0xea, 0x3b, 0xce, 0x91, 0x1f, 0x83, 0x41, 0x7e, 0x8c, 0x67, 0xaa, 0x26, - 0xac, 0xce, 0x39, 0xf2, 0x1e, 0x7f, 0x9a, 0x86, 0xf0, 0x58, 0x61, 0x02, 0xce, 0xe3, 0x7d, 0xc5, - 0x79, 0x9c, 0xe8, 0x40, 0xa4, 0x87, 0xef, 0xa8, 0x27, 0x7c, 0xc7, 0x2b, 0x23, 0xe2, 0x0f, 0x76, - 0x1d, 0xfb, 0xb0, 0x14, 0x48, 0xae, 0xb9, 0x5a, 0x53, 0x3f, 0x90, 0x26, 0xb7, 0x16, 0xc5, 0x03, - 0xa9, 0x11, 0x3e, 0x7c, 0xde, 0x3b, 0xbf, 0xeb, 0xef, 0x52, 0x30, 0x1b, 0xb4, 0x36, 0x01, 0x37, - 0xf5, 0x9e, 0xea, 0xa6, 0x5e, 0x1a, 0x6d, 0x02, 0xfb, 0xbd, 0xdc, 0x50, 0x8c, 0xc6, 0x32, 0x3e, - 0x27, 0xf5, 0x26, 0x0b, 0xee, 0x88, 0x55, 0xdf, 0x3d, 0xe2, 0x79, 0x29, 0x22, 0xb8, 0x7b, 0x46, - 0x04, 0x76, 0x61, 0xf1, 0xfd, 0x76, 0x69, 0x31, 0xb6, 0xdc, 0x41, 0x31, 0x8e, 0xab, 0xa2, 0x6d, - 0x98, 0xf3, 0x7c, 0x97, 0x12, 0x53, 0xb7, 0x1a, 0x1c, 0x4b, 0x3c, 0x62, 0x7a, 0x96, 0x67, 0x36, - 0xc5, 0x2b, 0xee, 0xb7, 0x4b, 0x8f, 0x46, 0x68, 0xb1, 0x0a, 0xac, 0x02, 0x20, 0x03, 0x72, 0x44, - 0x6e, 0x19, 0x19, 0xd6, 0x55, 0x47, 0x9b, 0xe1, 0xf8, 0xc6, 0x13, 0x33, 0x11, 0x94, 0xe0, 0xb0, - 0x05, 0xe6, 0x60, 0x0c, 0xe5, 0xe5, 0xe7, 0xd1, 0x1c, 0x4c, 0xaf, 0x17, 0xa8, 0x85, 0x83, 0x51, - 0x6b, 0x70, 0xa2, 0xb5, 0x89, 0x24, 0x51, 0x25, 0x42, 0xf9, 0xdc, 0x89, 0x43, 0xf9, 0xfc, 0xe9, - 0x7f, 0xaf, 0x0c, 0xc6, 0xfc, 0x80, 0xae, 0xf0, 0x70, 0x1e, 0xd0, 0xcd, 0x8e, 0x3b, 0xc8, 0x9f, - 0x1b, 0x4f, 0x90, 0x5f, 0x9c, 0x68, 0x90, 0x3f, 0x3f, 0x19, 0x82, 0xfc, 0x3b, 0x29, 0x78, 0x2c, - 0xcc, 0xed, 0x3c, 0xc5, 0x6c, 0xab, 0x80, 0xba, 0x3c, 0x86, 0x7b, 0x82, 0xe3, 0x3e, 0x8d, 0x5e, - 0xe4, 0x5e, 0x0d, 0x3a, 0x74, 0xf8, 0x8b, 0x14, 0x14, 0x55, 0xb2, 0x71, 0x8e, 0x18, 0xe3, 0x0f, - 0xd2, 0xf0, 0x68, 0xcf, 0x0f, 0x80, 0xa0, 0xab, 0x00, 0xc2, 0x5a, 0xdc, 0x8a, 0xde, 0x03, 0x08, - 0xe9, 0x60, 0x35, 0xac, 0xc1, 0x31, 0x29, 0x74, 0x17, 0xa6, 0x1c, 0xdd, 0x77, 0x47, 0x4b, 0x2a, - 0xc2, 0x54, 0xb3, 0x0f, 0xa8, 0x7b, 0xb4, 0x43, 0xdc, 0x06, 0xf5, 0xe5, 0x6f, 0x69, 0xdc, 0xdc, - 0xc1, 0x98, 0x63, 0xc6, 0x7f, 0x89, 0x26, 0x73, 0x9a, 0xbf, 0x44, 0x23, 0x48, 0xb3, 0x6b, 0x1f, - 0x4e, 0x28, 0x05, 0xed, 0x64, 0xa4, 0x59, 0xf6, 0x73, 0x6c, 0xa4, 0x39, 0xc0, 0x1f, 0x4c, 0x9a, - 0x7f, 0x3b, 0x05, 0x8b, 0x81, 0xa8, 0x9c, 0x4f, 0xbe, 0x67, 0xde, 0x84, 0x8c, 0x1b, 0x86, 0x9d, - 0x3d, 0xbd, 0x2e, 0x73, 0xd0, 0xf5, 0x9e, 0xb1, 0x27, 0x8f, 0xd7, 0x58, 0xb4, 0xc9, 0x20, 0x14, - 0x86, 0x98, 0x1b, 0xc4, 0x10, 0x05, 0xa7, 0x96, 0x7d, 0x39, 0xfb, 0x9c, 0x3a, 0x98, 0xb4, 0xde, - 0x9c, 0xfa, 0xf7, 0xb2, 0xd1, 0x58, 0xc6, 0xc7, 0xa9, 0x57, 0x65, 0x26, 0x9e, 0x20, 0xd3, 0xff, - 0x2f, 0x96, 0x89, 0x37, 0xbf, 0x69, 0x93, 0x7a, 0x95, 0x18, 0xc4, 0xd2, 0x68, 0x2c, 0x15, 0xaf, - 0x19, 0xdd, 0x7a, 0x53, 0x23, 0x3d, 0x0e, 0xeb, 0xde, 0x2a, 0x82, 0x34, 0x74, 0xfd, 0x2a, 0xd4, - 0x2e, 0x14, 0x1d, 0x26, 0xec, 0x7d, 0x64, 0x8c, 0xfe, 0xbc, 0x24, 0x9c, 0x41, 0x49, 0x32, 0x55, - 0xc4, 0x38, 0xe9, 0x99, 0x19, 0x37, 0xe9, 0xc9, 0x8e, 0x87, 0xf4, 0xe4, 0x26, 0x4a, 0x7a, 0xf2, - 0x0f, 0xeb, 0xc9, 0x06, 0x4c, 0x86, 0x64, 0x0c, 0x7c, 0x83, 0x5a, 0xb8, 0x77, 0xc5, 0x2c, 0x9e, - 0x23, 0xf7, 0xfe, 0x5f, 0x29, 0x28, 0xaa, 0x7e, 0x95, 0xf9, 0x75, 0x9f, 0xff, 0x17, 0xfe, 0x32, - 0x46, 0xcc, 0xaf, 0xef, 0x84, 0x35, 0x38, 0x26, 0x85, 0x5e, 0x83, 0x62, 0x74, 0x65, 0xe8, 0x56, - 0x90, 0x95, 0x1b, 0xce, 0xf5, 0x8e, 0x52, 0x8b, 0x13, 0xd2, 0x68, 0x15, 0xf2, 0xa2, 0xe4, 0x1d, - 0x99, 0xa6, 0x9b, 0x8f, 0x4e, 0x53, 0x77, 0x82, 0x0a, 0x1c, 0xc9, 0xa0, 0x57, 0x61, 0x5e, 0x5c, - 0xdc, 0xb4, 0x34, 0xa3, 0xe5, 0xe9, 0x07, 0x54, 0x7e, 0x80, 0x9c, 0xff, 0x94, 0xd4, 0x8e, 0x5a, - 0x85, 0x93, 0xb2, 0x3c, 0xa5, 0x9c, 0xa7, 0x59, 0x9c, 0xf5, 0x94, 0xf2, 0x28, 0x35, 0x64, 0x0c, - 0x29, 0xe5, 0x02, 0x7c, 0xb0, 0x27, 0xbf, 0x07, 0x97, 0xb8, 0x98, 0x4c, 0xd3, 0xe5, 0x4e, 0xa7, - 0xac, 0xfc, 0xd4, 0xc4, 0x74, 0x15, 0x7a, 0xfc, 0x4a, 0xc4, 0xb1, 0xbd, 0x0d, 0xcf, 0xb7, 0xe6, - 0x4d, 0x9c, 0xf9, 0x7c, 0x6b, 0xde, 0xcb, 0x3e, 0x9e, 0xf9, 0xa7, 0x39, 0x39, 0x8a, 0xf1, 0xb9, - 0xe5, 0x2b, 0x8a, 0x5b, 0x0e, 0x52, 0xef, 0x02, 0xd7, 0x2c, 0x5a, 0x8f, 0x39, 0x65, 0x0a, 0x59, - 0xf9, 0x02, 0x97, 0x74, 0xca, 0xaf, 0x8d, 0x30, 0xda, 0xd8, 0xb2, 0x0b, 0x8f, 0x26, 0x0b, 0x70, - 0x80, 0x7d, 0xa6, 0xdf, 0xeb, 0xbb, 0xc8, 0x51, 0xb8, 0xc8, 0x51, 0x38, 0x77, 0x39, 0x0a, 0x3f, - 0x49, 0x41, 0x21, 0x66, 0x99, 0xcf, 0x11, 0x99, 0xf8, 0x83, 0x14, 0x5c, 0x4a, 0x7e, 0x1f, 0x95, - 0xd1, 0x09, 0xf1, 0x3d, 0xd4, 0x6d, 0xe2, 0x37, 0x93, 0x74, 0xa2, 0x16, 0xd6, 0xe0, 0x98, 0x14, - 0xba, 0x0b, 0xb3, 0x07, 0xb1, 0x7b, 0x46, 0xba, 0xce, 0x07, 0xdf, 0x5b, 0xe1, 0x6b, 0xe4, 0xf1, - 0x52, 0xac, 0x60, 0xf1, 0x68, 0x3e, 0xf8, 0x68, 0xea, 0x59, 0x8f, 0xe6, 0xc3, 0x8f, 0xbb, 0x8e, - 0x29, 0x9a, 0x0f, 0xf1, 0x07, 0x73, 0x00, 0x16, 0x41, 0x07, 0xa2, 0x67, 0x3e, 0x82, 0x0e, 0x3a, - 0xda, 0xc7, 0x4f, 0xff, 0x66, 0x0a, 0x50, 0xf7, 0xb7, 0x74, 0x19, 0x01, 0xb5, 0x88, 0x49, 0x3d, - 0x87, 0x68, 0xc1, 0x8d, 0x16, 0x12, 0xd0, 0x5b, 0x41, 0x05, 0x8e, 0x64, 0x8e, 0xf1, 0xf6, 0xd9, - 0x53, 0x30, 0x45, 0xdc, 0x06, 0x5b, 0x99, 0xcc, 0xe5, 0xbc, 0x38, 0xad, 0x5a, 0x73, 0x1b, 0x1e, - 0xe6, 0xa5, 0xe5, 0xbf, 0xc9, 0x44, 0x73, 0xca, 0x7b, 0x90, 0xfc, 0x5d, 0xc8, 0xd4, 0xb1, 0x7f, - 0x17, 0xf2, 0xe2, 0x27, 0x98, 0x1f, 0xde, 0x4f, 0x30, 0xff, 0x6f, 0x1a, 0x8a, 0xea, 0x5d, 0x84, - 0xee, 0x40, 0xde, 0xf3, 0x89, 0xeb, 0x8f, 0xf8, 0xc3, 0x82, 0x3c, 0x41, 0xbb, 0x16, 0x00, 0xe0, - 0x08, 0x0b, 0xed, 0x41, 0x51, 0xb3, 0x4d, 0xc7, 0xa0, 0xcc, 0xd8, 0x8e, 0xf8, 0xbb, 0x82, 0x32, - 0x53, 0x24, 0x8e, 0x82, 0x13, 0xa8, 0x91, 0xc3, 0xc9, 0xf4, 0x71, 0x38, 0xc1, 0x80, 0x1f, 0xfa, - 0xcf, 0x0a, 0xfe, 0x53, 0x0a, 0xf2, 0x61, 0x42, 0x07, 0xba, 0x0b, 0x79, 0xdd, 0xf3, 0x5a, 0xd4, - 0xc5, 0x74, 0x4f, 0x4e, 0xfc, 0x90, 0x47, 0x8c, 0x7c, 0xee, 0x6f, 0x06, 0x18, 0x38, 0x82, 0x43, - 0x0e, 0x14, 0x62, 0x5f, 0x59, 0x90, 0x13, 0x3f, 0x64, 0xb2, 0x5a, 0xe2, 0xa7, 0xba, 0xc5, 0x8b, - 0xf4, 0xb1, 0x42, 0x1c, 0x6f, 0xa2, 0xfc, 0xc7, 0x62, 0x6c, 0x82, 0x14, 0xa0, 0x5f, 0x87, 0x19, - 0x93, 0x7f, 0xab, 0x52, 0x0e, 0xec, 0x1b, 0x43, 0xbf, 0x03, 0x10, 0x7e, 0xe7, 0x52, 0x86, 0x6b, - 0xbc, 0x04, 0x4b, 0x54, 0x16, 0xc0, 0xdb, 0x0e, 0x9b, 0x56, 0x5b, 0xfd, 0x92, 0x65, 0x48, 0xb1, - 0x6e, 0x2b, 0xb5, 0x38, 0x21, 0x5d, 0xad, 0x7c, 0xfe, 0xe5, 0xca, 0x23, 0x5f, 0x7c, 0xb9, 0xf2, - 0xc8, 0x2f, 0xbe, 0x5c, 0x79, 0xe4, 0x07, 0x9d, 0x95, 0xd4, 0xe7, 0x9d, 0x95, 0xd4, 0x17, 0x9d, - 0x95, 0xd4, 0x2f, 0x3a, 0x2b, 0xa9, 0x7f, 0xe9, 0xac, 0xa4, 0x7e, 0xf7, 0x5f, 0x57, 0x1e, 0xb9, - 0x9b, 0x0b, 0x3a, 0xf4, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x15, 0xa1, 0x28, 0x55, 0x2e, 0x81, - 0x00, 0x00, -} - -func (m *BackupScheduleSpec) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *BackupScheduleSpec) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *BackupScheduleSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.PodVolumeClaimSpec != nil { - { - size, err := m.PodVolumeClaimSpec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - { - size, err := m.PodTemplate.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - if m.StorageType != nil { - i -= len(*m.StorageType) - copy(dAtA[i:], *m.StorageType) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StorageType))) - i-- - dAtA[i] = 0x1a - } - { - size, err := m.Backend.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - i -= len(m.CronExpression) - copy(dAtA[i:], m.CronExpression) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.CronExpression))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil + // 4312 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5d, 0x5d, 0x6c, 0x23, 0xd7, + 0x75, 0x36, 0xa9, 0x1f, 0x92, 0x87, 0x94, 0x28, 0x5d, 0xc9, 0x5e, 0x7a, 0xeb, 0x8a, 0x0b, 0x16, + 0x35, 0xb6, 0x81, 0x97, 0xf2, 0xca, 0x1b, 0x67, 0x93, 0xd8, 0x6e, 0x45, 0x69, 0x1d, 0x2b, 0x95, + 0x76, 0xd9, 0x4b, 0xd9, 0x5e, 0xaf, 0x9d, 0xda, 0x57, 0xc3, 0x2b, 0x72, 0xaa, 0xe1, 0xcc, 0x64, + 0x66, 0xa8, 0xae, 0x9c, 0x22, 0x08, 0x8a, 0x20, 0x48, 0x1f, 0x0a, 0xb4, 0x6f, 0x7d, 0x2e, 0x5a, + 0xe4, 0xa1, 0x28, 0x50, 0x20, 0x68, 0x83, 0xb6, 0x0f, 0x46, 0xd1, 0x87, 0xb8, 0xe8, 0x4b, 0x00, + 0x03, 0x45, 0x82, 0x02, 0x44, 0xcd, 0x02, 0x7d, 0xcb, 0x53, 0x0b, 0x14, 0xdd, 0xa7, 0xe2, 0xfe, + 0xcc, 0xcf, 0x1d, 0xfe, 0xac, 0x48, 0x89, 0xb4, 0x04, 0xe8, 0x61, 0xb1, 0x9c, 0x7b, 0xcf, 0x39, + 0xf7, 0x77, 0xce, 0xf7, 0x9d, 0x3b, 0x67, 0x46, 0xf0, 0xda, 0x51, 0xfb, 0x80, 0xd6, 0x0f, 0xca, + 0x75, 0x7a, 0xbc, 0x4e, 0x6c, 0xbd, 0x45, 0xb4, 0xa6, 0x6e, 0x52, 0xe7, 0x84, 0x5d, 0xb8, 0xeb, + 0xa2, 0x72, 0xfd, 0xf8, 0x36, 0x31, 0xec, 0x26, 0xb9, 0xbd, 0xde, 0xa0, 0x26, 0x75, 0x88, 0x47, + 0xeb, 0x65, 0xdb, 0xb1, 0x3c, 0x0b, 0xbd, 0x14, 0x6a, 0x97, 0xa3, 0xda, 0xec, 0xc2, 0x2d, 0xcb, + 0x4a, 0x5f, 0xfb, 0xfa, 0xad, 0x86, 0xee, 0x35, 0xdb, 0x07, 0x65, 0xcd, 0x6a, 0xad, 0x37, 0xac, + 0x86, 0xb5, 0xce, 0x8d, 0x1c, 0xb4, 0x0f, 0xf9, 0x15, 0xbf, 0xe0, 0xbf, 0x84, 0xf1, 0xeb, 0xa5, + 0xa3, 0xbb, 0x6e, 0x59, 0xb7, 0x58, 0x4f, 0xd6, 0x89, 0x6d, 0xbb, 0xeb, 0xc7, 0x3d, 0x1d, 0x50, + 0x64, 0x34, 0xcb, 0xa1, 0xfd, 0x64, 0xee, 0x84, 0x32, 0xe1, 0xf0, 0xec, 0xa3, 0x86, 0x18, 0x62, + 0x8b, 0x7a, 0xa4, 0x9f, 0xd6, 0xfa, 0x20, 0x2d, 0xa7, 0x6d, 0x7a, 0x7a, 0x8b, 0xf6, 0x28, 0xbc, + 0xfa, 0x34, 0x05, 0x57, 0x6b, 0xd2, 0x16, 0xe9, 0xd1, 0x7b, 0x65, 0x90, 0x5e, 0xdb, 0xd3, 0x8d, + 0x75, 0xdd, 0xf4, 0x5c, 0xcf, 0xe9, 0x51, 0x7a, 0xf3, 0xa8, 0x65, 0xd5, 0xdb, 0x06, 0x75, 0xcb, + 0x8f, 0x4f, 0x3e, 0x5e, 0xd7, 0xda, 0xae, 0x67, 0xb5, 0x6e, 0x39, 0xd4, 0xb5, 0xda, 0x8e, 0x46, + 0x5d, 0x31, 0x32, 0x62, 0xdb, 0x1a, 0xf1, 0x88, 0x61, 0x35, 0x06, 0x2e, 0xe0, 0xf5, 0xbb, 0x8a, + 0x9d, 0x96, 0x65, 0xea, 0x9e, 0xe5, 0xe8, 0x66, 0xe3, 0x16, 0x69, 0x50, 0xd3, 0xbb, 0x25, 0xa6, + 0x5e, 0xef, 0x37, 0x3f, 0xaf, 0x28, 0x9a, 0xd6, 0xc1, 0xef, 0x51, 0xcd, 0x73, 0x3d, 0xcb, 0xa1, + 0xc3, 0x94, 0x5e, 0x56, 0x95, 0x0e, 0x0f, 0xdd, 0xa6, 0x65, 0x0d, 0x6b, 0xa6, 0xf4, 0xc3, 0x19, + 0xc8, 0x6f, 0x51, 0xc7, 0xd3, 0x0f, 0x75, 0x8d, 0x78, 0xb4, 0x66, 0x53, 0x0d, 0xdd, 0x81, 0x9c, + 0xe5, 0x34, 0x88, 0xa9, 0x7f, 0x4c, 0x3c, 0xdd, 0x32, 0x0b, 0x89, 0x1b, 0x33, 0x37, 0x33, 0x95, + 0xa5, 0x6e, 0xa7, 0x98, 0x7b, 0x10, 0x29, 0xc7, 0x8a, 0x14, 0x7a, 0x08, 0xe9, 0x7a, 0xdb, 0x11, + 0x1a, 0xc9, 0x1b, 0x89, 0x9b, 0xd9, 0x8d, 0x72, 0x59, 0x4c, 0xbd, 0xba, 0x75, 0xed, 0xa3, 0x86, + 0xd8, 0xbe, 0x6c, 0x67, 0x94, 0x8f, 0x6f, 0x97, 0xb7, 0xa5, 0x56, 0x25, 0xd7, 0xed, 0x14, 0xd3, + 0xfe, 0x15, 0x0e, 0xac, 0x21, 0x02, 0x59, 0x87, 0x9a, 0xf4, 0xf7, 0x2b, 0xf4, 0xd0, 0x72, 0x68, + 0x61, 0x66, 0x2c, 0xe3, 0xf9, 0x6e, 0xa7, 0x98, 0xc5, 0xa1, 0x19, 0x1c, 0xb5, 0x89, 0x6e, 0x42, + 0xba, 0x6e, 0xba, 0xf7, 0x49, 0x8b, 0xba, 0x85, 0x59, 0x3e, 0x5c, 0xd1, 0x99, 0xfb, 0x35, 0x5e, + 0x86, 0x83, 0x5a, 0x74, 0x1b, 0xb2, 0xba, 0xbd, 0x59, 0xaf, 0x3b, 0xd4, 0x75, 0xa9, 0x5b, 0x98, + 0xe3, 0xc2, 0xdc, 0xf8, 0x4e, 0x35, 0x28, 0xc6, 0x51, 0x19, 0xf4, 0xeb, 0x90, 0x6a, 0x3b, 0x7a, + 0x6d, 0xf3, 0xbe, 0x5b, 0x98, 0xe7, 0xe2, 0xd9, 0x6e, 0xa7, 0x98, 0x7a, 0x1b, 0xef, 0xb0, 0x22, + 0xec, 0xd7, 0x95, 0xfe, 0x77, 0x1e, 0x56, 0xb7, 0x2c, 0xd3, 0xa4, 0x1a, 0xeb, 0x70, 0xd5, 0xb2, + 0x8c, 0x2d, 0xcb, 0x3c, 0xd4, 0x1b, 0xe8, 0x05, 0x98, 0xb5, 0x2d, 0xc7, 0x2b, 0x24, 0x6e, 0x24, + 0x6e, 0xce, 0x55, 0xd2, 0xdd, 0x4e, 0x71, 0xb6, 0x6a, 0x39, 0x1e, 0xe6, 0xa5, 0xe8, 0x25, 0x48, + 0xdb, 0x96, 0x65, 0xec, 0x59, 0x75, 0xca, 0xe7, 0x3d, 0x53, 0x59, 0xfa, 0xb4, 0x53, 0x7c, 0x86, + 0x75, 0xbf, 0x2a, 0xcb, 0x71, 0x20, 0x81, 0x76, 0x61, 0xb5, 0x45, 0x1e, 0x6f, 0x19, 0x3a, 0x35, + 0xbd, 0xb0, 0x31, 0x97, 0x4f, 0xea, 0x4c, 0xa5, 0xd0, 0xed, 0x14, 0x57, 0xf7, 0xfa, 0xd4, 0xe3, + 0xbe, 0x5a, 0xe8, 0x75, 0xc8, 0xd7, 0xe9, 0x21, 0x69, 0x1b, 0x1e, 0x6b, 0xaa, 0xa6, 0x7f, 0x4c, + 0x0b, 0xb3, 0xdc, 0xd0, 0x4a, 0xb7, 0x53, 0xcc, 0x6f, 0xab, 0x55, 0x38, 0x2e, 0xcb, 0xe6, 0xb2, + 0xa5, 0x9b, 0x81, 0xea, 0x1c, 0x57, 0xe5, 0x73, 0xb9, 0x17, 0x16, 0xe3, 0xa8, 0x0c, 0x6b, 0xd1, + 0xa1, 0x2e, 0x75, 0x8e, 0x69, 0xa0, 0x36, 0x1f, 0xb6, 0x88, 0xd5, 0x2a, 0x1c, 0x97, 0x45, 0xef, + 0xc3, 0xf3, 0x91, 0xa2, 0x7d, 0xbd, 0x45, 0xad, 0xb6, 0x57, 0xa3, 0x9a, 0x65, 0xd6, 0xdd, 0x42, + 0x8a, 0x1b, 0xfa, 0xd5, 0x6e, 0xa7, 0xf8, 0x3c, 0x1e, 0x24, 0x84, 0x07, 0xeb, 0xa3, 0xdf, 0x82, + 0xa5, 0x16, 0x79, 0xbc, 0x5d, 0x89, 0xce, 0x6b, 0x9a, 0xdb, 0x5c, 0xed, 0x76, 0x8a, 0x4b, 0x7b, + 0xb1, 0x3a, 0xdc, 0x23, 0x8d, 0xde, 0x04, 0xd4, 0x22, 0x8f, 0xdf, 0x76, 0xa9, 0x13, 0xb5, 0x91, + 0xe1, 0x36, 0x9e, 0xeb, 0x76, 0x8a, 0x68, 0xaf, 0xa7, 0x16, 0xf7, 0xd1, 0x60, 0x76, 0x5c, 0x8f, + 0x78, 0x6e, 0x95, 0x3a, 0xba, 0x55, 0xf7, 0xc7, 0x07, 0xa1, 0x9d, 0x5a, 0x4f, 0x2d, 0xee, 0xa3, + 0x81, 0xca, 0x00, 0xa4, 0xde, 0xd2, 0x4d, 0x66, 0xdf, 0x2d, 0x64, 0xf9, 0xe6, 0x5d, 0xec, 0x76, + 0x8a, 0xb0, 0x19, 0x94, 0xe2, 0x88, 0x04, 0xdb, 0x8b, 0xa4, 0xed, 0x35, 0xf7, 0x4f, 0x6c, 0x5a, + 0xc8, 0xa9, 0x7b, 0x71, 0x53, 0x96, 0xe3, 0x40, 0xc2, 0x97, 0x66, 0xaa, 0x85, 0x85, 0x5e, 0x69, + 0x56, 0x8e, 0x03, 0x09, 0xf4, 0x1e, 0x5c, 0xd3, 0x1b, 0xa6, 0xe5, 0xd0, 0x9a, 0x47, 0x1c, 0xaf, + 0x6d, 0x57, 0x89, 0x43, 0x5a, 0xd4, 0x63, 0x1d, 0x5b, 0xe4, 0xca, 0x45, 0xa9, 0x7c, 0x6d, 0xa7, + 0xbf, 0x18, 0x1e, 0xa4, 0x5f, 0xfa, 0xb7, 0x24, 0x64, 0xb6, 0x89, 0x47, 0x0e, 0x08, 0xbb, 0x5d, + 0x7f, 0x0d, 0xe6, 0x88, 0xa1, 0x13, 0x97, 0xdf, 0x6f, 0x99, 0xca, 0x82, 0x34, 0x3b, 0xb7, 0xc9, + 0x0a, 0xb1, 0xa8, 0x43, 0xdf, 0x81, 0x6c, 0x5d, 0x6a, 0x60, 0x7a, 0x28, 0x1d, 0xde, 0x76, 0x39, + 0xea, 0x7f, 0xcb, 0x02, 0x36, 0x3e, 0x0c, 0x60, 0x43, 0x78, 0xa6, 0x10, 0x36, 0x02, 0xe4, 0x2e, + 0x6f, 0xda, 0x36, 0xa6, 0x87, 0xd4, 0xa1, 0xa6, 0x46, 0x2b, 0x2b, 0xb2, 0xc1, 0xec, 0x76, 0xd8, + 0x00, 0x8e, 0xb6, 0x86, 0xee, 0x42, 0xce, 0xbf, 0x64, 0x4e, 0x89, 0xdf, 0xbc, 0x99, 0xca, 0xaa, + 0xd4, 0xcb, 0x6d, 0x47, 0xea, 0xb0, 0x22, 0x89, 0x5a, 0xb0, 0xec, 0x5f, 0xd7, 0xa8, 0xe6, 0x50, + 0x8f, 0x75, 0x7e, 0x96, 0x77, 0xfe, 0x66, 0xc4, 0xa1, 0x96, 0x19, 0xd6, 0x33, 0xf7, 0xb9, 0x6b, + 0x69, 0xc4, 0x78, 0xc0, 0xc1, 0x27, 0xec, 0xe0, 0xb3, 0xdd, 0x4e, 0x71, 0x79, 0x3b, 0x6e, 0x06, + 0xf7, 0x5a, 0x2e, 0x7d, 0x92, 0x84, 0x85, 0x7b, 0x06, 0x71, 0x3d, 0x5d, 0x73, 0x29, 0x71, 0xb4, + 0x26, 0xfa, 0x08, 0xd2, 0xcc, 0x35, 0x33, 0x51, 0x3e, 0xbf, 0xd9, 0x8d, 0x97, 0x4f, 0xe7, 0xc8, + 0x45, 0x27, 0xf6, 0xa8, 0x47, 0x2a, 0x48, 0x0e, 0x14, 0xc2, 0x32, 0x1c, 0x58, 0x45, 0x04, 0x66, + 0x5d, 0x9b, 0x6a, 0x72, 0x49, 0x7e, 0xb3, 0x3c, 0x0a, 0x85, 0x2a, 0x2b, 0x9d, 0x65, 0x60, 0x58, + 0xc9, 0xc9, 0xc6, 0x66, 0xd9, 0x15, 0xe6, 0xa6, 0x91, 0x0e, 0xf3, 0xec, 0x66, 0x69, 0xbb, 0x12, + 0x8b, 0x36, 0xcf, 0xd2, 0x08, 0x37, 0x54, 0x59, 0x94, 0xcd, 0xcc, 0x8b, 0x6b, 0x2c, 0x1b, 0x28, + 0x7d, 0x96, 0x84, 0x17, 0x14, 0xf9, 0x2d, 0xa3, 0xed, 0x7a, 0xd4, 0xd9, 0xb7, 0x6c, 0xcb, 0xb0, + 0x1a, 0x27, 0xa8, 0x01, 0xf3, 0x2d, 0xc2, 0x4a, 0xe4, 0x74, 0x9e, 0x65, 0xc0, 0xf7, 0xad, 0x3a, + 0x0d, 0x7b, 0xb2, 0xc7, 0xcd, 0x62, 0x69, 0x9e, 0xcd, 0x2b, 0x5f, 0xb5, 0xe4, 0xf9, 0x34, 0x13, + 0xcc, 0x2b, 0xdb, 0x48, 0x98, 0x9b, 0x66, 0x63, 0xd1, 0x38, 0xc6, 0xc8, 0x79, 0x3d, 0xbf, 0xb1, + 0x08, 0xe8, 0xc2, 0xd2, 0x7c, 0xe9, 0xb3, 0x04, 0x2c, 0x2b, 0xd2, 0xbb, 0xba, 0xeb, 0xa1, 0x0f, + 0x7a, 0xf6, 0xe6, 0x29, 0x49, 0x06, 0xd3, 0xe6, 0x3b, 0x33, 0xf0, 0x5f, 0x7e, 0x49, 0x64, 0x5f, + 0x7e, 0x04, 0x73, 0xba, 0x47, 0x5b, 0x6e, 0x21, 0x79, 0x63, 0xe6, 0x66, 0x76, 0xe3, 0xeb, 0x67, + 0x18, 0x5b, 0xe8, 0x93, 0x76, 0x98, 0x45, 0x2c, 0x0c, 0x97, 0xbe, 0x3f, 0x13, 0x1b, 0x15, 0x9b, + 0x03, 0x46, 0x6d, 0x1c, 0x6a, 0x1b, 0xba, 0x26, 0x3d, 0xda, 0x9c, 0xa0, 0x36, 0x58, 0x96, 0xe1, + 0xa0, 0x16, 0xbd, 0x08, 0xf3, 0xb6, 0x43, 0x0f, 0xf5, 0xc7, 0x92, 0x47, 0x04, 0xb3, 0x57, 0xe5, + 0xa5, 0x58, 0xd6, 0xa2, 0x7d, 0x48, 0x31, 0x26, 0x4a, 0x1a, 0x3e, 0x17, 0xbb, 0xd5, 0xcf, 0x75, + 0x54, 0xa9, 0xe3, 0xea, 0xae, 0x47, 0x4d, 0xef, 0x1d, 0xcb, 0x68, 0xb7, 0xe8, 0x96, 0x41, 0xf4, + 0x16, 0xbf, 0xa5, 0x38, 0xfd, 0xa9, 0x09, 0x0b, 0xd8, 0x37, 0x85, 0xde, 0x83, 0x4c, 0xe0, 0x29, + 0x87, 0xb9, 0x24, 0x2c, 0x85, 0x30, 0xfd, 0x76, 0x5b, 0x77, 0x68, 0x8b, 0x9a, 0x9e, 0x5b, 0x59, + 0x96, 0x5d, 0xcd, 0xf8, 0xb5, 0x2e, 0x0e, 0xad, 0x21, 0x03, 0x16, 0x19, 0x48, 0x9a, 0xe4, 0x98, + 0xe8, 0x06, 0x39, 0x30, 0x04, 0xd5, 0x18, 0xe6, 0x7a, 0x58, 0x6c, 0x50, 0x16, 0xb1, 0x41, 0x79, + 0xc7, 0xf4, 0x1e, 0x38, 0x35, 0x8f, 0xd1, 0xf6, 0x0a, 0xea, 0x76, 0x8a, 0x8b, 0x7b, 0x8a, 0x2d, + 0x1c, 0xb3, 0x5d, 0xfa, 0xdb, 0x85, 0xd8, 0x32, 0x70, 0x52, 0xfd, 0x1b, 0x90, 0x3a, 0x66, 0x33, + 0xc2, 0xf9, 0x34, 0x9b, 0xdd, 0xbc, 0xec, 0x72, 0xea, 0x1d, 0x51, 0x8c, 0xfd, 0x7a, 0x65, 0xc5, + 0x92, 0x43, 0x57, 0xcc, 0x83, 0xb4, 0x27, 0x1d, 0x81, 0x5c, 0x8a, 0x6f, 0x9e, 0x61, 0x5b, 0xc5, + 0x5c, 0x8b, 0x68, 0xd5, 0xbf, 0xc2, 0x41, 0x4b, 0x68, 0x1d, 0x32, 0xd4, 0x64, 0x43, 0xad, 0xd5, + 0x76, 0xf9, 0x4a, 0xa5, 0xc3, 0xf9, 0xbf, 0xe7, 0x57, 0xe0, 0x50, 0x06, 0x1d, 0xc1, 0xb2, 0x16, + 0x89, 0x31, 0x38, 0x3c, 0xc8, 0x25, 0x78, 0xb1, 0xdf, 0x12, 0x0b, 0x09, 0xb1, 0x6d, 0x6a, 0x7c, + 0x0d, 0x05, 0xe6, 0x6c, 0xc5, 0x8d, 0xe0, 0x5e, 0xbb, 0x68, 0x13, 0xf2, 0x75, 0xdd, 0xe5, 0x4d, + 0x53, 0xad, 0xed, 0xe8, 0xde, 0x09, 0x67, 0x88, 0xe9, 0xca, 0x35, 0xd9, 0xc7, 0xfc, 0xb6, 0x5a, + 0x8d, 0xe3, 0xf2, 0xe8, 0x3b, 0x00, 0x8c, 0x76, 0x54, 0x8d, 0x76, 0x43, 0x37, 0x39, 0x2d, 0xcc, + 0x54, 0xde, 0xf7, 0x41, 0x67, 0x33, 0xa8, 0x79, 0xd2, 0x29, 0xde, 0x1b, 0x1a, 0xde, 0xc7, 0xc3, + 0x43, 0x75, 0xba, 0x43, 0x43, 0x38, 0xd2, 0x1c, 0x3a, 0x80, 0x45, 0x15, 0x48, 0x39, 0x87, 0x3c, + 0xfd, 0x4c, 0xf1, 0x2d, 0x1a, 0x43, 0xe7, 0x98, 0x45, 0xb4, 0x0d, 0x59, 0x79, 0xdb, 0x71, 0xaa, + 0x96, 0xe1, 0x23, 0x2c, 0xf9, 0xbc, 0xa3, 0x16, 0x56, 0x3d, 0x51, 0x2f, 0x71, 0x54, 0x2d, 0xea, + 0x07, 0xe0, 0xfc, 0xfc, 0xc0, 0x3e, 0xcc, 0xea, 0xa6, 0xee, 0x15, 0xb2, 0xdc, 0xe4, 0xab, 0xa3, + 0xed, 0xe7, 0x1d, 0x53, 0xf7, 0xb8, 0x6d, 0x1e, 0x25, 0xb1, 0x2b, 0xcc, 0xad, 0xa1, 0x47, 0x90, + 0x92, 0xd1, 0x37, 0xa7, 0x9a, 0xd9, 0x8d, 0x57, 0x54, 0xae, 0x16, 0x86, 0xe6, 0x1f, 0xf2, 0xd0, + 0xfc, 0x43, 0x36, 0x04, 0xf6, 0xef, 0xf8, 0x76, 0x79, 0x93, 0x15, 0x84, 0x3d, 0xde, 0x13, 0xa2, + 0xd8, 0x37, 0x88, 0xde, 0x81, 0x9c, 0xc6, 0x23, 0x35, 0xb1, 0x02, 0x9c, 0x8e, 0x66, 0x37, 0x6e, + 0xf4, 0x9b, 0x0c, 0x65, 0xa5, 0x78, 0x44, 0xbd, 0x15, 0xd1, 0xc4, 0x8a, 0x1d, 0xd4, 0x84, 0xac, + 0x6d, 0xd5, 0xf7, 0x69, 0xcb, 0x36, 0x88, 0x47, 0x0b, 0x79, 0x6e, 0xf6, 0xb6, 0xda, 0x6f, 0x3f, + 0xc6, 0x8f, 0xf6, 0xb7, 0x1a, 0x2a, 0xf1, 0x5e, 0x07, 0x84, 0x32, 0x52, 0x81, 0xa3, 0xa6, 0xd1, + 0x63, 0xc8, 0xb3, 0xa0, 0x46, 0xd7, 0x68, 0xd0, 0xda, 0x12, 0x6f, 0xed, 0xcb, 0x4f, 0x6f, 0xad, + 0xa6, 0x2a, 0xf2, 0x16, 0x83, 0x5b, 0x2d, 0x56, 0x89, 0xe3, 0xcd, 0xf4, 0x71, 0xcd, 0xcb, 0x93, + 0x73, 0xcd, 0xa8, 0x05, 0x8b, 0x6d, 0xbb, 0xce, 0x7a, 0xe9, 0x39, 0xc4, 0xa3, 0x8d, 0x93, 0x02, + 0xea, 0xdd, 0xb8, 0xc4, 0xb6, 0x5d, 0x3e, 0x30, 0x8f, 0x78, 0xf4, 0xb0, 0x6d, 0xd4, 0xa8, 0xf7, + 0xb6, 0xa2, 0x54, 0x79, 0x4e, 0x0e, 0x6f, 0x51, 0x2d, 0xc7, 0x31, 0xe3, 0x1c, 0x50, 0x49, 0xdb, + 0xa5, 0xf5, 0xc2, 0x0a, 0xf7, 0x40, 0x21, 0xa0, 0xf2, 0x52, 0x2c, 0x6b, 0x99, 0x5c, 0x93, 0x18, + 0x1e, 0xad, 0x17, 0x56, 0x55, 0xb9, 0xb7, 0x78, 0x29, 0x96, 0xb5, 0xe8, 0x03, 0x58, 0xf6, 0xa8, + 0xd3, 0xd2, 0x4d, 0x22, 0x4e, 0x08, 0x0c, 0x5d, 0x3b, 0x29, 0x3c, 0xcb, 0x6f, 0xde, 0xb2, 0x54, + 0x59, 0xde, 0x8f, 0x0b, 0x3c, 0xe9, 0x57, 0x88, 0x7b, 0x0d, 0x95, 0x3e, 0x49, 0xc0, 0x4a, 0x1f, + 0x6a, 0x8a, 0xee, 0xc0, 0x9c, 0xdd, 0x24, 0x2e, 0x95, 0xb8, 0xb5, 0xe6, 0x73, 0x8f, 0x2a, 0x2b, + 0x7c, 0xd2, 0x29, 0x2e, 0xf8, 0xce, 0x86, 0x17, 0x60, 0x21, 0xcc, 0xc6, 0xe4, 0x50, 0xe2, 0xca, + 0xc3, 0xa0, 0x08, 0x99, 0xc0, 0xbc, 0x14, 0xcb, 0x5a, 0xf4, 0x4d, 0x40, 0xd6, 0x01, 0x8f, 0xa8, + 0xeb, 0xdf, 0x10, 0x67, 0x53, 0x0c, 0x22, 0xc5, 0x71, 0xc4, 0x75, 0xa9, 0x83, 0x1e, 0xf4, 0x48, + 0xe0, 0x3e, 0x5a, 0xa5, 0xbf, 0x48, 0xc2, 0xec, 0x3d, 0x4f, 0xab, 0x4f, 0x21, 0xca, 0x78, 0xa8, + 0x44, 0x19, 0x23, 0x7a, 0x29, 0xd6, 0xc7, 0x81, 0xc1, 0xc5, 0x47, 0xb1, 0xe0, 0xe2, 0xee, 0x18, + 0xb6, 0x87, 0xc7, 0x14, 0xff, 0x94, 0x80, 0x34, 0x13, 0x9b, 0x02, 0xe9, 0x7d, 0x57, 0x25, 0xbd, + 0x1b, 0xa3, 0x8f, 0x65, 0x00, 0xd7, 0xfd, 0xaf, 0xb4, 0x18, 0xc3, 0xe4, 0xb8, 0x55, 0x0c, 0x23, + 0x67, 0xce, 0x8c, 0x91, 0xb3, 0xe7, 0x87, 0x91, 0xbd, 0x1c, 0x61, 0xee, 0xdc, 0x39, 0x82, 0x8f, + 0xc3, 0xf3, 0x93, 0xc2, 0xe1, 0xf4, 0x79, 0xe3, 0x30, 0x86, 0x19, 0xcf, 0x10, 0xc7, 0x65, 0xd9, + 0x8d, 0xaf, 0x8c, 0xd6, 0xe1, 0xfd, 0xdd, 0x9a, 0x70, 0x83, 0x95, 0x54, 0xb7, 0x53, 0x9c, 0xd9, + 0xdf, 0xad, 0x61, 0x66, 0x2c, 0x8e, 0xc1, 0x30, 0x55, 0x0c, 0xce, 0x4e, 0x07, 0x83, 0x7b, 0x51, + 0x31, 0x37, 0x1d, 0x54, 0x5c, 0x38, 0x25, 0x2a, 0x2e, 0x8e, 0x8e, 0x8a, 0xf9, 0xf3, 0x42, 0xc5, + 0xbf, 0x4b, 0x00, 0x84, 0x3e, 0xf5, 0x12, 0x81, 0xe1, 0x2f, 0x93, 0x90, 0xf6, 0x6f, 0x43, 0xe4, + 0x41, 0xce, 0xd5, 0x1c, 0xdd, 0xf6, 0x24, 0x45, 0x15, 0x9e, 0xfe, 0x8d, 0xd1, 0xee, 0x91, 0x5a, + 0xc4, 0x02, 0xdf, 0x62, 0x9c, 0xc0, 0x46, 0x4b, 0xb1, 0xd2, 0x0a, 0x3a, 0x66, 0x37, 0x8f, 0xeb, + 0x35, 0x1c, 0xea, 0xbe, 0xbb, 0xb9, 0x2b, 0xf1, 0x6c, 0x6b, 0xb4, 0x46, 0xab, 0xa1, 0x81, 0x48, + 0xcb, 0x79, 0x71, 0x2b, 0x05, 0x55, 0x38, 0xda, 0x10, 0x72, 0x61, 0xc5, 0xf5, 0x88, 0xdb, 0xc4, + 0x94, 0x3f, 0x31, 0xab, 0x51, 0x97, 0x63, 0xc3, 0xa8, 0xe7, 0x9c, 0xd7, 0xba, 0x9d, 0xe2, 0x4a, + 0xad, 0xd7, 0x10, 0xee, 0x67, 0xbd, 0xf4, 0x83, 0x24, 0xac, 0xee, 0x52, 0x52, 0xa7, 0xce, 0x3d, + 0x43, 0x9c, 0xc3, 0xcb, 0xc7, 0x37, 0x55, 0x58, 0x35, 0x28, 0x71, 0xa9, 0xff, 0x28, 0xca, 0x3f, + 0x8e, 0x17, 0x87, 0x31, 0x2f, 0xc8, 0x65, 0x65, 0xba, 0x3d, 0x32, 0xb8, 0xaf, 0x26, 0xb3, 0xc8, + 0x1f, 0x5e, 0x6d, 0x53, 0x52, 0x37, 0x74, 0x93, 0xfa, 0x16, 0x93, 0xaa, 0x45, 0xdc, 0x47, 0x06, + 0xf7, 0xd5, 0x64, 0x1b, 0xcf, 0xa1, 0x9e, 0x73, 0xa2, 0x3e, 0x30, 0x98, 0xe1, 0xf6, 0x82, 0x8d, + 0x87, 0x7b, 0x24, 0x70, 0x1f, 0xad, 0xd2, 0x5f, 0x27, 0x21, 0xb5, 0x47, 0x1c, 0x9d, 0x6c, 0x57, + 0xa6, 0x40, 0xc4, 0xde, 0x57, 0x88, 0xd8, 0x57, 0x47, 0xdb, 0x5c, 0xb2, 0x9b, 0x03, 0xb9, 0x98, + 0x16, 0xe3, 0x62, 0x5f, 0x1f, 0xcf, 0xfc, 0x70, 0x3a, 0xf6, 0xd3, 0x04, 0x64, 0xa5, 0xe4, 0x14, + 0x18, 0xd9, 0x23, 0x95, 0x91, 0x7d, 0x79, 0xac, 0x11, 0x0d, 0x20, 0x65, 0xbf, 0x4c, 0x07, 0x23, + 0xb9, 0xe2, 0x65, 0x97, 0x96, 0x97, 0xa5, 0x26, 0x7d, 0x3e, 0x92, 0x9e, 0xcc, 0xf9, 0x48, 0x66, + 0xaa, 0xdc, 0x0c, 0xbe, 0x28, 0x6e, 0x96, 0x9d, 0x0e, 0x37, 0xcb, 0x9d, 0x92, 0x9b, 0x2d, 0x8c, + 0xce, 0xcd, 0x16, 0xcf, 0x8b, 0x9b, 0xfd, 0x7d, 0x02, 0x16, 0x14, 0x1f, 0x7b, 0x89, 0xe8, 0xd9, + 0x1f, 0x40, 0x6e, 0x8f, 0xb6, 0x0e, 0xa8, 0x23, 0x6f, 0xeb, 0x0d, 0x00, 0x9b, 0xfa, 0x57, 0xb2, + 0xfb, 0x01, 0xf2, 0x55, 0x83, 0x1a, 0x1c, 0x91, 0x42, 0x77, 0x21, 0xc7, 0xed, 0xfa, 0x5a, 0x49, + 0xf5, 0x39, 0x70, 0x2d, 0x52, 0x87, 0x15, 0xc9, 0xd2, 0x8f, 0x93, 0x90, 0xd9, 0xa3, 0x2d, 0x8d, + 0x68, 0x4d, 0x3a, 0x8d, 0xe3, 0x92, 0x6f, 0x29, 0x28, 0x3d, 0x2a, 0x8c, 0xfa, 0x1d, 0x1d, 0x88, + 0xd3, 0x34, 0x86, 0xd3, 0xaf, 0x8f, 0xdb, 0xc0, 0x70, 0xa4, 0xfe, 0x57, 0xb6, 0xdf, 0x7c, 0xd9, + 0x29, 0x60, 0xf5, 0x07, 0x2a, 0x56, 0x7f, 0x65, 0xcc, 0x51, 0x0d, 0x40, 0xeb, 0x1f, 0xcc, 0x47, + 0x46, 0x13, 0xc7, 0xeb, 0xb9, 0x11, 0xf0, 0x7a, 0x7e, 0x28, 0x5e, 0x5f, 0x21, 0xcb, 0xc5, 0x44, + 0x96, 0x47, 0x90, 0x76, 0x7d, 0x4c, 0x99, 0xed, 0x65, 0x29, 0x3e, 0xa6, 0x6c, 0x53, 0xdb, 0xb0, + 0x4e, 0x5a, 0x6c, 0x1d, 0x9e, 0x06, 0x26, 0x81, 0xbd, 0x08, 0x8c, 0x64, 0x4f, 0x09, 0x23, 0xb9, + 0xd1, 0x61, 0x64, 0xe1, 0xbc, 0x60, 0xe4, 0x1f, 0x13, 0x90, 0x8f, 0xb9, 0x80, 0x4b, 0x04, 0x24, + 0x3c, 0xdc, 0xb2, 0xcc, 0x86, 0x75, 0x09, 0xc2, 0x2d, 0xd1, 0xcd, 0x89, 0x85, 0x5b, 0xd2, 0xfc, + 0x70, 0x27, 0xfe, 0xef, 0x09, 0x58, 0x96, 0x92, 0xc2, 0x03, 0xf0, 0x2c, 0x09, 0x1b, 0xb2, 0x2d, + 0x51, 0xc8, 0x2e, 0xe5, 0xe4, 0x8d, 0x37, 0x3c, 0x9e, 0x79, 0x12, 0xdc, 0xf9, 0x91, 0x42, 0x1c, + 0x6d, 0x22, 0x1a, 0x81, 0x24, 0xcf, 0x2d, 0x02, 0x11, 0xc1, 0xa4, 0x68, 0xe5, 0xe2, 0x07, 0x93, + 0xa2, 0x9f, 0x03, 0xe0, 0x29, 0xb2, 0x4e, 0xfc, 0x3f, 0xb7, 0xdf, 0x3a, 0xcd, 0x4d, 0x63, 0x9d, + 0xc6, 0xf5, 0x93, 0xc1, 0xcc, 0xf5, 0x7a, 0xc8, 0xd2, 0x5f, 0x26, 0x21, 0xda, 0x24, 0x7a, 0xa9, + 0x27, 0x4b, 0x27, 0xd0, 0x3e, 0x43, 0xa6, 0x4e, 0x1c, 0x1f, 0x67, 0x26, 0x83, 0x8f, 0xb3, 0x13, + 0xc3, 0xc7, 0xd2, 0xf7, 0xc3, 0x5d, 0x20, 0xe7, 0xa1, 0x46, 0x3d, 0x74, 0x03, 0x66, 0x4d, 0xd2, + 0xf2, 0x9d, 0x73, 0xe0, 0x4a, 0x78, 0xc2, 0x23, 0xaf, 0x41, 0x7b, 0x90, 0x3a, 0xa2, 0x27, 0x6f, + 0xea, 0x86, 0x7f, 0x77, 0x9d, 0x36, 0x04, 0xe7, 0xb7, 0xd5, 0x6f, 0x0b, 0x55, 0xec, 0xdb, 0x28, + 0xfd, 0x61, 0x12, 0x96, 0x7c, 0xf7, 0xd2, 0x24, 0x4e, 0x9d, 0xaf, 0xd9, 0x8b, 0x30, 0xef, 0xb2, + 0x0b, 0x7f, 0xc5, 0x42, 0x8f, 0xc3, 0x4b, 0xb1, 0xac, 0x8d, 0xef, 0xd9, 0xe4, 0x54, 0x7d, 0xcb, + 0xf9, 0x65, 0x68, 0x95, 0xba, 0x49, 0xb8, 0x16, 0x9d, 0x04, 0xdd, 0x6c, 0x04, 0x69, 0x88, 0x1a, + 0xcc, 0xf1, 0xd1, 0x8e, 0x77, 0xb2, 0x1c, 0x9f, 0xda, 0xd0, 0x25, 0xf0, 0x22, 0x2c, 0x6c, 0xa3, + 0x93, 0x60, 0x3b, 0xf3, 0x58, 0x66, 0xbc, 0x54, 0xc4, 0x1e, 0xdf, 0x1f, 0x06, 0x4c, 0x5b, 0x11, + 0xe3, 0x58, 0x69, 0x8a, 0xa7, 0x59, 0x72, 0x2f, 0x34, 0x5e, 0x6a, 0x62, 0x8f, 0x23, 0x8b, 0xa4, + 0x59, 0xf2, 0x32, 0x2c, 0xcd, 0x97, 0x3e, 0xcb, 0x05, 0x8e, 0x61, 0x72, 0x67, 0x68, 0x16, 0x80, + 0x13, 0xdc, 0x4d, 0x67, 0x1a, 0x51, 0x78, 0x53, 0x8a, 0xc4, 0xf0, 0xf0, 0x1a, 0x47, 0x9a, 0x40, + 0xdf, 0x85, 0x05, 0xbe, 0x84, 0xfe, 0x7e, 0x91, 0x2e, 0xe3, 0xde, 0xf8, 0xdb, 0x24, 0xb2, 0xf9, + 0x2a, 0xcb, 0xdd, 0x4e, 0x71, 0xa1, 0x16, 0xb5, 0x8f, 0xd5, 0xe6, 0xe2, 0x87, 0x86, 0x73, 0x67, + 0x3e, 0x34, 0x9c, 0x9f, 0xe4, 0xa1, 0x61, 0xea, 0xdc, 0x0f, 0x0d, 0xfb, 0x66, 0xe0, 0xa5, 0x27, + 0x94, 0x81, 0xb7, 0x0f, 0x79, 0x4d, 0xa4, 0x12, 0x6e, 0xb6, 0xbd, 0x26, 0x7f, 0x31, 0x45, 0x64, + 0x98, 0x7d, 0xc9, 0x0f, 0x4e, 0xb6, 0xd4, 0xea, 0x27, 0xbd, 0x45, 0x38, 0x6e, 0x02, 0xdd, 0x81, + 0x94, 0xeb, 0x8a, 0xd7, 0x5c, 0x80, 0x5b, 0xf3, 0x89, 0x72, 0xaa, 0x56, 0xdb, 0x95, 0x56, 0xfc, + 0x9f, 0xd8, 0x17, 0xbd, 0xca, 0x26, 0x0b, 0x30, 0xbb, 0x7e, 0x4e, 0xd9, 0x64, 0xf9, 0x0b, 0x9a, + 0x49, 0xd6, 0x7b, 0x52, 0xba, 0x3c, 0x9d, 0x93, 0x52, 0x74, 0xca, 0x10, 0x77, 0x65, 0xf4, 0x10, + 0x77, 0xf5, 0x5c, 0x4f, 0x4a, 0xa3, 0xe1, 0xd1, 0x25, 0x0a, 0x70, 0x7f, 0x94, 0x84, 0xb9, 0xbd, + 0x93, 0xda, 0xef, 0xec, 0x4e, 0x21, 0xbc, 0x7d, 0x4f, 0x09, 0x6f, 0x47, 0x3d, 0x70, 0x63, 0x9d, + 0x1c, 0x18, 0xdc, 0x92, 0x58, 0x70, 0xfb, 0xd5, 0x71, 0x8c, 0x0f, 0x0f, 0x6d, 0x7f, 0x94, 0x80, + 0x55, 0x2e, 0x17, 0x7f, 0x49, 0xe4, 0x65, 0x98, 0x6d, 0xf9, 0x61, 0x6d, 0xa6, 0xf2, 0x02, 0xeb, + 0x99, 0xf4, 0x98, 0x4b, 0x51, 0x79, 0xee, 0x3a, 0xb9, 0x24, 0xfa, 0x16, 0xcc, 0x35, 0x1c, 0xab, + 0x6d, 0xcb, 0x99, 0x78, 0x6d, 0x8c, 0xce, 0x7e, 0x83, 0xe9, 0xf3, 0xe9, 0xc8, 0xb0, 0x8d, 0xc5, + 0x2f, 0xb1, 0xb0, 0x5a, 0xfa, 0xb3, 0x04, 0x2c, 0xaa, 0x42, 0xa8, 0xac, 0xf4, 0xf1, 0x7a, 0xa4, + 0x8f, 0x11, 0xc9, 0x48, 0x0f, 0xfd, 0x18, 0x20, 0x39, 0x30, 0x06, 0xb8, 0x03, 0x39, 0x01, 0x81, + 0x8c, 0xc1, 0xed, 0x6c, 0xcb, 0xed, 0xc7, 0xfd, 0x64, 0x25, 0x52, 0x8e, 0x15, 0xa9, 0xd2, 0x3f, + 0x27, 0x20, 0xc3, 0x1b, 0x9c, 0x42, 0xfc, 0xfc, 0x50, 0x8d, 0x9f, 0x5f, 0x19, 0x63, 0x96, 0x07, + 0x44, 0xcf, 0xbf, 0xc8, 0xc8, 0x51, 0x4c, 0x8e, 0x44, 0x1a, 0x3d, 0x2f, 0x1f, 0x54, 0xc6, 0xe8, + 0xff, 0x69, 0x5f, 0x3a, 0x88, 0x31, 0xb8, 0xd9, 0x33, 0x33, 0xb8, 0xb9, 0x49, 0x32, 0xb8, 0xf9, + 0x89, 0x3d, 0xf6, 0x4d, 0x4d, 0x8a, 0xc8, 0x64, 0x26, 0x4d, 0x64, 0x60, 0x32, 0x87, 0x0f, 0xd9, + 0xa9, 0x1e, 0xce, 0xe7, 0xbe, 0x28, 0x32, 0xb3, 0x30, 0x1d, 0x32, 0xb3, 0x78, 0x4a, 0x32, 0x93, + 0x1f, 0x9d, 0xcc, 0x2c, 0x9d, 0x17, 0x99, 0xf9, 0x49, 0x02, 0xb2, 0x11, 0x38, 0xbc, 0x44, 0x54, + 0xe6, 0x93, 0x24, 0x2c, 0x54, 0xa9, 0xa3, 0x59, 0x26, 0x79, 0xe8, 0x39, 0xd3, 0x49, 0x90, 0x3a, + 0xd3, 0xfb, 0xb0, 0x4a, 0x67, 0x27, 0xf5, 0x3e, 0xac, 0xda, 0xc8, 0x53, 0xde, 0x87, 0x4d, 0xc0, + 0xb2, 0x22, 0x7f, 0xe1, 0xdf, 0xdc, 0x54, 0x7a, 0x3b, 0x00, 0xad, 0xff, 0x3b, 0x1d, 0x1b, 0xd5, + 0x55, 0xfa, 0xd4, 0x55, 0xfa, 0xd4, 0xd5, 0x43, 0xee, 0xab, 0xf4, 0xa9, 0x89, 0xa6, 0x4f, 0x7d, + 0x92, 0x80, 0x95, 0x3e, 0xbe, 0xf7, 0x12, 0xe1, 0xe9, 0x8f, 0x93, 0x90, 0xa9, 0x36, 0x2a, 0x56, + 0xdb, 0xd4, 0xa8, 0x73, 0xd1, 0xd3, 0x98, 0x82, 0x8e, 0x4e, 0x2a, 0x8d, 0x29, 0x6c, 0xe0, 0xe9, + 0x69, 0x4c, 0x81, 0xec, 0x85, 0x4f, 0x63, 0x0a, 0x7a, 0x3a, 0x00, 0x3b, 0xff, 0x6f, 0x3e, 0x32, + 0x9a, 0xc9, 0xe1, 0x66, 0x1f, 0x1f, 0x36, 0x33, 0x1d, 0x1f, 0x36, 0xb5, 0x87, 0xad, 0xa8, 0x09, + 0x19, 0x1f, 0x2d, 0xc5, 0x97, 0xad, 0x46, 0x5e, 0xac, 0xe0, 0x2b, 0x3a, 0xe1, 0x17, 0x01, 0x82, + 0x22, 0x1c, 0x1a, 0x47, 0xdf, 0x85, 0x45, 0x4d, 0xf9, 0xd4, 0x95, 0xc4, 0xe3, 0x11, 0x4f, 0x10, + 0xfa, 0x7d, 0x2e, 0x4b, 0xb0, 0x00, 0xb5, 0x06, 0xc7, 0x5a, 0x43, 0x2d, 0x58, 0x6e, 0xbb, 0x62, + 0xf3, 0x87, 0xdf, 0xc1, 0x49, 0x8d, 0xf3, 0x1d, 0x9c, 0xb7, 0xe3, 0x66, 0x70, 0xaf, 0xe5, 0x8b, + 0xfc, 0xd6, 0x9b, 0x9c, 0x34, 0xf5, 0xad, 0xb7, 0x10, 0xc7, 0x60, 0x18, 0x8e, 0xf1, 0xcc, 0xa9, + 0x98, 0xd7, 0xb9, 0x44, 0xe8, 0xf1, 0x37, 0x49, 0x48, 0xfb, 0xef, 0x10, 0x4d, 0x01, 0x3c, 0x3e, + 0x50, 0xc0, 0xe3, 0x6b, 0xe3, 0xbd, 0x06, 0x35, 0x10, 0x3b, 0xea, 0x31, 0xec, 0x78, 0x6d, 0x4c, + 0xfb, 0xc3, 0xa1, 0xe3, 0x08, 0x56, 0x7d, 0xc9, 0x4d, 0x47, 0x6b, 0xea, 0xc7, 0xd2, 0xe5, 0xd6, + 0xc2, 0x78, 0x40, 0x4c, 0xde, 0x4b, 0x31, 0xff, 0x14, 0x7e, 0xbf, 0x30, 0xba, 0xb7, 0x2b, 0x44, + 0x3b, 0xa2, 0x66, 0x7d, 0x40, 0xbe, 0xc1, 0xbf, 0x24, 0x20, 0xe7, 0xb7, 0x36, 0x05, 0x98, 0x7a, + 0x5f, 0x85, 0xa9, 0x57, 0xc7, 0x9b, 0xc0, 0x01, 0x28, 0xf5, 0xc3, 0x85, 0x70, 0x2c, 0x93, 0x03, + 0xa9, 0xb7, 0x58, 0x70, 0x47, 0xcc, 0xfa, 0xc1, 0x09, 0x7f, 0x4e, 0x2a, 0x82, 0xbb, 0x17, 0x45, + 0x60, 0x17, 0x14, 0x3f, 0xe9, 0x14, 0x57, 0x22, 0xcb, 0xed, 0x17, 0xe3, 0xa8, 0x2a, 0xaa, 0xc2, + 0x82, 0xeb, 0x39, 0x94, 0xb4, 0x74, 0xb3, 0xc1, 0x6d, 0x89, 0x03, 0xd7, 0x2f, 0xf1, 0x27, 0xed, + 0xd1, 0x8a, 0x27, 0x9d, 0xe2, 0xb3, 0xa1, 0xb5, 0x48, 0x05, 0x56, 0x0d, 0x20, 0x03, 0xd2, 0x44, + 0x6e, 0x19, 0x19, 0xd6, 0x55, 0xc6, 0x9b, 0xe1, 0xe8, 0xc6, 0x13, 0x33, 0xe1, 0x97, 0xe0, 0xa0, + 0x05, 0x06, 0x30, 0x86, 0xf2, 0x32, 0xde, 0x78, 0x00, 0xd3, 0xef, 0x85, 0x3e, 0x01, 0x30, 0x6a, + 0x0d, 0x8e, 0xb5, 0x36, 0x95, 0x87, 0xfa, 0xb1, 0x50, 0x3e, 0x7d, 0xe6, 0x50, 0x3e, 0x73, 0xfe, + 0x5f, 0x71, 0x81, 0x49, 0x85, 0xd9, 0xb9, 0x49, 0x87, 0xd9, 0x0b, 0x93, 0x09, 0xb3, 0x17, 0xa7, + 0x1a, 0x66, 0xe7, 0xa7, 0x43, 0x51, 0xff, 0x38, 0x01, 0xcf, 0x05, 0xd9, 0x3e, 0xe7, 0xf8, 0xf4, + 0xdf, 0x27, 0x0f, 0xcf, 0xe1, 0xbe, 0xc6, 0xf1, 0x80, 0x46, 0xaf, 0x72, 0x01, 0x86, 0x85, 0xfd, + 0xff, 0x90, 0x80, 0x45, 0x15, 0xee, 0x2f, 0x11, 0x67, 0xfb, 0x5e, 0x12, 0x9e, 0xed, 0xfb, 0x4a, + 0x38, 0xda, 0x00, 0x38, 0x20, 0xda, 0x51, 0xdb, 0xbe, 0x1f, 0x66, 0x86, 0x06, 0x84, 0xac, 0x12, + 0xd4, 0xe0, 0x88, 0x14, 0x7a, 0x04, 0xb3, 0xb6, 0xee, 0x39, 0xe3, 0x3d, 0xe4, 0xc6, 0x54, 0xb3, + 0x8e, 0xa9, 0x73, 0xb2, 0x4f, 0x9c, 0x06, 0xf5, 0xe4, 0x77, 0x79, 0x77, 0xf6, 0x31, 0xe6, 0x36, + 0xd1, 0xbb, 0x90, 0x3a, 0x10, 0xf4, 0x46, 0x32, 0xb2, 0xd1, 0x28, 0x51, 0x40, 0x07, 0x64, 0x01, + 0xf6, 0xad, 0x09, 0xda, 0xea, 0x58, 0x8f, 0xa7, 0x94, 0x12, 0x71, 0x36, 0xda, 0x2a, 0xfb, 0x39, + 0x31, 0xda, 0xea, 0xdb, 0x1f, 0x4e, 0x5b, 0xff, 0x28, 0x01, 0x2b, 0xbe, 0xa8, 0x9c, 0x4f, 0xbe, + 0x67, 0xde, 0x82, 0x19, 0x27, 0x08, 0xfc, 0xfa, 0xe2, 0x1e, 0x83, 0xc8, 0x7a, 0xdf, 0xe8, 0x8f, + 0x47, 0x4c, 0x2c, 0xde, 0x63, 0x26, 0x14, 0x8e, 0x96, 0x1e, 0xc6, 0xd1, 0x04, 0xab, 0x95, 0x7d, + 0xb9, 0xf8, 0xac, 0xd6, 0x9f, 0xb4, 0xfe, 0xac, 0xf6, 0x4f, 0x53, 0xe1, 0x58, 0x26, 0xc7, 0x6a, + 0xd7, 0x65, 0x66, 0x88, 0xa0, 0xb3, 0xbf, 0x12, 0xc9, 0x0c, 0xc9, 0xef, 0x5a, 0xa4, 0x5e, 0x21, + 0x06, 0x31, 0x35, 0x1a, 0x49, 0x0d, 0x69, 0x86, 0xb7, 0xde, 0xec, 0x58, 0x0f, 0xa4, 0x7a, 0xb7, + 0x8a, 0x20, 0x0d, 0xf1, 0x7b, 0x91, 0xd1, 0x3c, 0x9b, 0x09, 0xbb, 0xdf, 0x36, 0xc6, 0x7f, 0x62, + 0x11, 0xcc, 0xa0, 0xa4, 0x79, 0xaa, 0xc5, 0x28, 0xe9, 0x99, 0x9f, 0x34, 0xe9, 0x49, 0x4d, 0x86, + 0xf4, 0xa4, 0xa7, 0x4a, 0x7a, 0x32, 0x5f, 0xd4, 0xb3, 0x05, 0x98, 0x0e, 0xc9, 0x18, 0xfa, 0x4e, + 0x9d, 0x80, 0x77, 0xc5, 0x2d, 0x5e, 0x22, 0x78, 0xff, 0x9f, 0x04, 0x2c, 0xaa, 0xb8, 0xca, 0x70, + 0xdd, 0xe3, 0xbf, 0xf6, 0xf5, 0x5e, 0x5c, 0xdf, 0x0f, 0x6a, 0x70, 0x44, 0x0a, 0xbd, 0x01, 0x8b, + 0xe1, 0x95, 0xa1, 0x9b, 0x7e, 0x96, 0x58, 0x30, 0xd7, 0xfb, 0x4a, 0x2d, 0x8e, 0x49, 0xa3, 0x75, + 0xc8, 0x88, 0x92, 0x87, 0x32, 0x6d, 0x2c, 0x13, 0x9e, 0x67, 0xee, 0xfb, 0x15, 0x38, 0x94, 0x41, + 0xaf, 0x43, 0x5e, 0x5c, 0xec, 0x98, 0x9a, 0xd1, 0x76, 0xf5, 0x63, 0x2a, 0x3f, 0x8c, 0xca, 0x3f, + 0x4b, 0xbf, 0xaf, 0x56, 0xe1, 0xb8, 0x2c, 0x4f, 0x71, 0xc4, 0xb4, 0xae, 0xbb, 0x17, 0x3d, 0xc5, + 0x91, 0x77, 0x72, 0x52, 0x29, 0x8e, 0xc2, 0xf8, 0x70, 0x24, 0xff, 0x08, 0x96, 0xb8, 0x98, 0x4c, + 0x1b, 0xe3, 0xa0, 0x53, 0x52, 0x3e, 0x81, 0x3d, 0x57, 0x81, 0x3e, 0x5f, 0xaf, 0x3e, 0x35, 0xda, + 0xf0, 0xfc, 0x3f, 0xde, 0xc4, 0x85, 0xcf, 0xff, 0xe3, 0xbd, 0x1c, 0x80, 0xcc, 0x3f, 0x4d, 0xcb, + 0x51, 0x4c, 0x0e, 0x96, 0x6f, 0x29, 0xb0, 0xfc, 0xbc, 0xbf, 0x1f, 0x24, 0x34, 0x8b, 0xd6, 0x23, + 0xa0, 0x4c, 0x21, 0x25, 0x53, 0xfa, 0x25, 0x28, 0xbf, 0x31, 0xc6, 0x68, 0x23, 0xcb, 0x2e, 0x10, + 0x4d, 0x16, 0x60, 0xdf, 0xf6, 0x85, 0x7e, 0xd3, 0xe3, 0x2a, 0x4b, 0xe0, 0x2a, 0x4b, 0xe0, 0xd2, + 0x65, 0x09, 0xfc, 0x24, 0x01, 0xd9, 0x88, 0x67, 0xbe, 0x44, 0x64, 0xe2, 0xcf, 0x13, 0xb0, 0x14, + 0xff, 0x66, 0x1d, 0xa3, 0x13, 0xe2, 0x1b, 0x75, 0x55, 0xe2, 0x35, 0xe3, 0x74, 0xa2, 0x16, 0xd4, + 0xe0, 0x88, 0x14, 0x7a, 0x04, 0xb9, 0xe3, 0xc8, 0x3d, 0x23, 0xa1, 0xf3, 0xe9, 0xf7, 0x56, 0xf0, + 0x62, 0x61, 0xb4, 0x14, 0x2b, 0xb6, 0x4a, 0xbf, 0x48, 0x40, 0x26, 0x78, 0x0c, 0x87, 0x1e, 0x41, + 0x46, 0x77, 0xdd, 0x36, 0x75, 0x30, 0x3d, 0x94, 0x78, 0x33, 0x62, 0x58, 0xba, 0xc0, 0x38, 0xca, + 0x8e, 0x6f, 0x03, 0x87, 0xe6, 0x90, 0x0d, 0xd9, 0xc8, 0xbb, 0x5a, 0x72, 0x10, 0x23, 0xa6, 0x18, + 0xc4, 0xfe, 0x54, 0x94, 0x78, 0x19, 0x28, 0x52, 0x88, 0xa3, 0x4d, 0x94, 0xfe, 0x4a, 0x8c, 0x4d, + 0x6c, 0x24, 0xf4, 0xbb, 0x30, 0xdf, 0xe2, 0x5f, 0xbc, 0x91, 0x03, 0xfb, 0xda, 0xc8, 0x9f, 0x33, + 0x09, 0xbe, 0x96, 0x23, 0x21, 0x9e, 0x97, 0x60, 0x69, 0x95, 0x91, 0x3e, 0xcb, 0x66, 0x6b, 0x6f, + 0xa9, 0xdf, 0xc3, 0x09, 0x6e, 0xcb, 0x07, 0x4a, 0x2d, 0x8e, 0x49, 0x57, 0xca, 0x9f, 0x7e, 0xbe, + 0xf6, 0xcc, 0xcf, 0x3e, 0x5f, 0x7b, 0xe6, 0xe7, 0x9f, 0xaf, 0x3d, 0xf3, 0xbd, 0xee, 0x5a, 0xe2, + 0xd3, 0xee, 0x5a, 0xe2, 0x67, 0xdd, 0xb5, 0xc4, 0xcf, 0xbb, 0x6b, 0x89, 0xff, 0xe8, 0xae, 0x25, + 0xfe, 0xe4, 0x3f, 0xd7, 0x9e, 0x79, 0x94, 0xf6, 0x3b, 0xf4, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, + 0xd1, 0x22, 0x0e, 0xaf, 0xdb, 0x6d, 0x00, 0x00, } func (m *CertificateSpec) Marshal() (dAtA []byte, err error) { @@ -2996,7 +2537,7 @@ func (m *Databases) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DormantDatabase) Marshal() (dAtA []byte, err error) { +func (m *Elasticsearch) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3006,12 +2547,12 @@ func (m *DormantDatabase) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DormantDatabase) MarshalTo(dAtA []byte) (int, error) { +func (m *Elasticsearch) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DormantDatabase) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *Elasticsearch) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -3049,7 +2590,7 @@ func (m *DormantDatabase) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DormantDatabaseList) Marshal() (dAtA []byte, err error) { +func (m *ElasticsearchClusterTopology) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3059,32 +2600,38 @@ func (m *DormantDatabaseList) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DormantDatabaseList) MarshalTo(dAtA []byte) (int, error) { +func (m *ElasticsearchClusterTopology) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DormantDatabaseList) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ElasticsearchClusterTopology) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Items) > 0 { - for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 + { + size, err := m.Client.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a { - size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.Master.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -3096,7 +2643,7 @@ func (m *DormantDatabaseList) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DormantDatabaseSpec) Marshal() (dAtA []byte, err error) { +func (m *ElasticsearchList) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3106,18 +2653,32 @@ func (m *DormantDatabaseSpec) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DormantDatabaseSpec) MarshalTo(dAtA []byte) (int, error) { +func (m *ElasticsearchList) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DormantDatabaseSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ElasticsearchList) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l + if len(m.Items) > 0 { + for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } { - size, err := m.Origin.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -3125,19 +2686,11 @@ func (m *DormantDatabaseSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 - i-- - if m.WipeOut { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 + dAtA[i] = 0xa return len(dAtA) - i, nil } -func (m *DormantDatabaseStatus) Marshal() (dAtA []byte, err error) { +func (m *ElasticsearchNode) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3147,32 +2700,19 @@ func (m *DormantDatabaseStatus) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DormantDatabaseStatus) MarshalTo(dAtA []byte) (int, error) { +func (m *ElasticsearchNode) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DormantDatabaseStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ElasticsearchNode) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) - i-- - dAtA[i] = 0x28 - i -= len(m.Reason) - copy(dAtA[i:], m.Reason) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) - i-- - dAtA[i] = 0x22 - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0x1a - if m.WipeOutTime != nil { + if m.MaxUnavailable != nil { { - size, err := m.WipeOutTime.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.MaxUnavailable.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -3180,11 +2720,21 @@ func (m *DormantDatabaseStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x12 + dAtA[i] = 0x2a + } + { + size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - if m.PausingTime != nil { + i-- + dAtA[i] = 0x22 + if m.Storage != nil { { - size, err := m.PausingTime.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Storage.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -3192,12 +2742,22 @@ func (m *DormantDatabaseStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x1a + } + i -= len(m.Prefix) + copy(dAtA[i:], m.Prefix) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) + i-- + dAtA[i] = 0x12 + if m.Replicas != nil { + i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) + i-- + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *Elasticsearch) Marshal() (dAtA []byte, err error) { +func (m *ElasticsearchSpec) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -3207,232 +2767,12 @@ func (m *Elasticsearch) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Elasticsearch) MarshalTo(dAtA []byte) (int, error) { +func (m *ElasticsearchSpec) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Elasticsearch) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - { - size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - { - size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *ElasticsearchClusterTopology) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ElasticsearchClusterTopology) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ElasticsearchClusterTopology) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Client.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - { - size, err := m.Data.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - { - size, err := m.Master.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *ElasticsearchList) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ElasticsearchList) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ElasticsearchList) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Items) > 0 { - for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - { - size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *ElasticsearchNode) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ElasticsearchNode) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ElasticsearchNode) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.MaxUnavailable != nil { - { - size, err := m.MaxUnavailable.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - { - size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - if m.Storage != nil { - { - size, err := m.Storage.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - i -= len(m.Prefix) - copy(dAtA[i:], m.Prefix) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Prefix))) - i-- - dAtA[i] = 0x12 - if m.Replicas != nil { - i = encodeVarintGenerated(dAtA, i, uint64(*m.Replicas)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func (m *ElasticsearchSpec) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ElasticsearchSpec) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ElasticsearchSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ElasticsearchSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -3536,18 +2876,6 @@ func (m *ElasticsearchSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x6a } - if m.BackupSchedule != nil { - { - size, err := m.BackupSchedule.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x62 - } if m.Init != nil { { size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) @@ -3878,18 +3206,6 @@ func (m *EtcdSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x42 } - if m.BackupSchedule != nil { - { - size, err := m.BackupSchedule.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } if m.Init != nil { { size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) @@ -4024,18 +3340,6 @@ func (m *InitSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if m.SnapshotSource != nil { - { - size, err := m.SnapshotSource.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } if m.ScriptSource != nil { { size, err := m.ScriptSource.MarshalToSizedBuffer(dAtA[:i]) @@ -5134,9 +4438,9 @@ func (m *MongoDBSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x6a } - if m.BackupSchedule != nil { + if m.Init != nil { { - size, err := m.BackupSchedule.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -5144,19 +4448,7 @@ func (m *MongoDBSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x62 - } - if m.Init != nil { - { - size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x5a + dAtA[i] = 0x5a } i -= len(m.SSLMode) copy(dAtA[i:], m.SSLMode) @@ -5561,18 +4853,6 @@ func (m *MySQLSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x4a } - if m.BackupSchedule != nil { - { - size, err := m.BackupSchedule.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x42 - } if m.Init != nil { { size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) @@ -5675,180 +4955,6 @@ func (m *MySQLStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *Origin) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Origin) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Origin) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - { - size, err := m.PartialObjectMeta.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *OriginSpec) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *OriginSpec) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *OriginSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Etcd != nil { - { - size, err := m.Etcd.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4a - } - if m.Memcached != nil { - { - size, err := m.Memcached.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x42 - } - if m.Redis != nil { - { - size, err := m.Redis.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - if m.MongoDB != nil { - { - size, err := m.MongoDB.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if m.MariaDB != nil { - { - size, err := m.MariaDB.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - if m.PerconaXtraDB != nil { - { - size, err := m.PerconaXtraDB.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.MySQL != nil { - { - size, err := m.MySQL.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if m.Postgres != nil { - { - size, err := m.Postgres.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.Elasticsearch != nil { - { - size, err := m.Elasticsearch.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *PerconaXtraDB) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -6643,18 +5749,6 @@ func (m *PostgresSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x62 } - if m.BackupSchedule != nil { - { - size, err := m.BackupSchedule.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x5a - } if m.Init != nil { { size, err := m.Init.MarshalToSizedBuffer(dAtA[:i]) @@ -7532,7 +6626,7 @@ func (m *ScriptSourceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *Snapshot) Marshal() (dAtA []byte, err error) { +func (m *TLSConfig) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -7542,50 +6636,44 @@ func (m *Snapshot) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *Snapshot) MarshalTo(dAtA []byte) (int, error) { +func (m *TLSConfig) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *Snapshot) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *TLSConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - { - size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - { - size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.Certificate != nil { + { + size, err := m.Certificate.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 } - i-- - dAtA[i] = 0x12 - { - size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if m.IssuerRef != nil { + { + size, err := m.IssuerRef.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0xa } - i-- - dAtA[i] = 0xa return len(dAtA) - i, nil } -func (m *SnapshotList) Marshal() (dAtA []byte, err error) { +func (m *TLSPolicy) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -7595,295 +6683,32 @@ func (m *SnapshotList) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *SnapshotList) MarshalTo(dAtA []byte) (int, error) { +func (m *TLSPolicy) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *SnapshotList) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *TLSPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Items) > 0 { - for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) + i -= len(m.OperatorSecret) + copy(dAtA[i:], m.OperatorSecret) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.OperatorSecret))) + i-- + dAtA[i] = 0x12 + if m.Member != nil { + { + size, err := m.Member.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } - i-- - dAtA[i] = 0x12 + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) } - } - { - size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *SnapshotSourceSpec) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SnapshotSourceSpec) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotSourceSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Args) > 0 { - for iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Args[iNdEx]) - copy(dAtA[i:], m.Args[iNdEx]) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Args[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - i -= len(m.Name) - copy(dAtA[i:], m.Name) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) - i-- - dAtA[i] = 0x12 - i -= len(m.Namespace) - copy(dAtA[i:], m.Namespace) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Namespace))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *SnapshotSpec) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SnapshotSpec) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.PodVolumeClaimSpec != nil { - { - size, err := m.PodVolumeClaimSpec.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - { - size, err := m.PodTemplate.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - if m.StorageType != nil { - i -= len(*m.StorageType) - copy(dAtA[i:], *m.StorageType) - i = encodeVarintGenerated(dAtA, i, uint64(len(*m.StorageType))) - i-- - dAtA[i] = 0x1a - } - { - size, err := m.Backend.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - i -= len(m.DatabaseName) - copy(dAtA[i:], m.DatabaseName) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.DatabaseName))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *SnapshotStatus) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *SnapshotStatus) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *SnapshotStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - i = encodeVarintGenerated(dAtA, i, uint64(m.ObservedGeneration)) - i-- - dAtA[i] = 0x28 - i -= len(m.Reason) - copy(dAtA[i:], m.Reason) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Reason))) - i-- - dAtA[i] = 0x22 - i -= len(m.Phase) - copy(dAtA[i:], m.Phase) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Phase))) - i-- - dAtA[i] = 0x1a - if m.CompletionTime != nil { - { - size, err := m.CompletionTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.StartTime != nil { - { - size, err := m.StartTime.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *TLSConfig) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *TLSConfig) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TLSConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Certificate != nil { - { - size, err := m.Certificate.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if m.IssuerRef != nil { - { - size, err := m.IssuerRef.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *TLSPolicy) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *TLSPolicy) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *TLSPolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - i -= len(m.OperatorSecret) - copy(dAtA[i:], m.OperatorSecret) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.OperatorSecret))) - i-- - dAtA[i] = 0x12 - if m.Member != nil { - { - size, err := m.Member.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa + i-- + dAtA[i] = 0xa } return len(dAtA) - i, nil } @@ -7899,29 +6724,6 @@ func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *BackupScheduleSpec) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.CronExpression) - n += 1 + l + sovGenerated(uint64(l)) - l = m.Backend.Size() - n += 1 + l + sovGenerated(uint64(l)) - if m.StorageType != nil { - l = len(*m.StorageType) - n += 1 + l + sovGenerated(uint64(l)) - } - l = m.PodTemplate.Size() - n += 1 + l + sovGenerated(uint64(l)) - if m.PodVolumeClaimSpec != nil { - l = m.PodVolumeClaimSpec.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *CertificateSpec) Size() (n int) { if m == nil { return 0 @@ -8032,7 +6834,7 @@ func (m *Databases) Size() (n int) { return n } -func (m *DormantDatabase) Size() (n int) { +func (m *Elasticsearch) Size() (n int) { if m == nil { return 0 } @@ -8047,73 +6849,7 @@ func (m *DormantDatabase) Size() (n int) { return n } -func (m *DormantDatabaseList) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ListMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - if len(m.Items) > 0 { - for _, e := range m.Items { - l = e.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - } - return n -} - -func (m *DormantDatabaseSpec) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - n += 2 - l = m.Origin.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *DormantDatabaseStatus) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.PausingTime != nil { - l = m.PausingTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.WipeOutTime != nil { - l = m.WipeOutTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Reason) - n += 1 + l + sovGenerated(uint64(l)) - n += 1 + sovGenerated(uint64(m.ObservedGeneration)) - return n -} - -func (m *Elasticsearch) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ObjectMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Spec.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Status.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *ElasticsearchClusterTopology) Size() (n int) { +func (m *ElasticsearchClusterTopology) Size() (n int) { if m == nil { return 0 } @@ -8206,10 +6942,6 @@ func (m *ElasticsearchSpec) Size() (n int) { l = m.Init.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.BackupSchedule != nil { - l = m.BackupSchedule.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.Monitor != nil { l = m.Monitor.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -8306,10 +7038,6 @@ func (m *EtcdSpec) Size() (n int) { l = m.Init.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.BackupSchedule != nil { - l = m.BackupSchedule.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.Monitor != nil { l = m.Monitor.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -8355,10 +7083,6 @@ func (m *InitSpec) Size() (n int) { l = m.ScriptSource.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.SnapshotSource != nil { - l = m.SnapshotSource.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.PostgresWAL != nil { l = m.PostgresWAL.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -8730,10 +7454,6 @@ func (m *MongoDBSpec) Size() (n int) { l = m.Init.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.BackupSchedule != nil { - l = m.BackupSchedule.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.Monitor != nil { l = m.Monitor.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -8867,10 +7587,6 @@ func (m *MySQLSpec) Size() (n int) { l = m.Init.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.BackupSchedule != nil { - l = m.BackupSchedule.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.Monitor != nil { l = m.Monitor.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -8906,64 +7622,6 @@ func (m *MySQLStatus) Size() (n int) { return n } -func (m *Origin) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.PartialObjectMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Spec.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *OriginSpec) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Elasticsearch != nil { - l = m.Elasticsearch.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Postgres != nil { - l = m.Postgres.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.MySQL != nil { - l = m.MySQL.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.PerconaXtraDB != nil { - l = m.PerconaXtraDB.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.MariaDB != nil { - l = m.MariaDB.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.MongoDB != nil { - l = m.MongoDB.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Redis != nil { - l = m.Redis.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Memcached != nil { - l = m.Memcached.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.Etcd != nil { - l = m.Etcd.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *PerconaXtraDB) Size() (n int) { if m == nil { return 0 @@ -9229,10 +7887,6 @@ func (m *PostgresSpec) Size() (n int) { l = m.Init.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.BackupSchedule != nil { - l = m.BackupSchedule.Size() - n += 1 + l + sovGenerated(uint64(l)) - } if m.Monitor != nil { l = m.Monitor.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -9526,102 +8180,6 @@ func (m *ScriptSourceSpec) Size() (n int) { return n } -func (m *Snapshot) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ObjectMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Spec.Size() - n += 1 + l + sovGenerated(uint64(l)) - l = m.Status.Size() - n += 1 + l + sovGenerated(uint64(l)) - return n -} - -func (m *SnapshotList) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.ListMeta.Size() - n += 1 + l + sovGenerated(uint64(l)) - if len(m.Items) > 0 { - for _, e := range m.Items { - l = e.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - } - return n -} - -func (m *SnapshotSourceSpec) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Namespace) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Name) - n += 1 + l + sovGenerated(uint64(l)) - if len(m.Args) > 0 { - for _, s := range m.Args { - l = len(s) - n += 1 + l + sovGenerated(uint64(l)) - } - } - return n -} - -func (m *SnapshotSpec) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.DatabaseName) - n += 1 + l + sovGenerated(uint64(l)) - l = m.Backend.Size() - n += 1 + l + sovGenerated(uint64(l)) - if m.StorageType != nil { - l = len(*m.StorageType) - n += 1 + l + sovGenerated(uint64(l)) - } - l = m.PodTemplate.Size() - n += 1 + l + sovGenerated(uint64(l)) - if m.PodVolumeClaimSpec != nil { - l = m.PodVolumeClaimSpec.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - -func (m *SnapshotStatus) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.StartTime != nil { - l = m.StartTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - if m.CompletionTime != nil { - l = m.CompletionTime.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - l = len(m.Phase) - n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Reason) - n += 1 + l + sovGenerated(uint64(l)) - n += 1 + sovGenerated(uint64(m.ObservedGeneration)) - return n -} - func (m *TLSConfig) Size() (n int) { if m == nil { return 0 @@ -9660,28 +8218,14 @@ func sovGenerated(x uint64) (n int) { func sozGenerated(x uint64) (n int) { return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (this *BackupScheduleSpec) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&BackupScheduleSpec{`, - `CronExpression:` + fmt.Sprintf("%v", this.CronExpression) + `,`, - `Backend:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Backend), "Backend", "v1.Backend", 1), `&`, ``, 1) + `,`, - `StorageType:` + valueToStringGenerated(this.StorageType) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `PodVolumeClaimSpec:` + strings.Replace(fmt.Sprintf("%v", this.PodVolumeClaimSpec), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `}`, - }, "") - return s -} func (this *CertificateSpec) String() string { if this == nil { return "nil" } s := strings.Join([]string{`&CertificateSpec{`, `Organization:` + fmt.Sprintf("%v", this.Organization) + `,`, - `Duration:` + strings.Replace(fmt.Sprintf("%v", this.Duration), "Duration", "v13.Duration", 1) + `,`, - `RenewBefore:` + strings.Replace(fmt.Sprintf("%v", this.RenewBefore), "Duration", "v13.Duration", 1) + `,`, + `Duration:` + strings.Replace(fmt.Sprintf("%v", this.Duration), "Duration", "v1.Duration", 1) + `,`, + `RenewBefore:` + strings.Replace(fmt.Sprintf("%v", this.RenewBefore), "Duration", "v1.Duration", 1) + `,`, `DNSNames:` + fmt.Sprintf("%v", this.DNSNames) + `,`, `IPAddresses:` + fmt.Sprintf("%v", this.IPAddresses) + `,`, `URISANs:` + fmt.Sprintf("%v", this.URISANs) + `,`, @@ -9720,60 +8264,7 @@ func (this *Databases) String() string { `Alias:` + fmt.Sprintf("%v", this.Alias) + `,`, `DatabaseRef:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.DatabaseRef), "AppReference", "v1alpha1.AppReference", 1), `&`, ``, 1) + `,`, `DatabaseName:` + fmt.Sprintf("%v", this.DatabaseName) + `,`, - `DatabaseSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecretRef), "LocalObjectReference", "v12.LocalObjectReference", 1) + `,`, - `}`, - }, "") - return s -} -func (this *DormantDatabase) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&DormantDatabase{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "DormantDatabaseSpec", "DormantDatabaseSpec", 1), `&`, ``, 1) + `,`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "DormantDatabaseStatus", "DormantDatabaseStatus", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func (this *DormantDatabaseList) String() string { - if this == nil { - return "nil" - } - repeatedStringForItems := "[]DormantDatabase{" - for _, f := range this.Items { - repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "DormantDatabase", "DormantDatabase", 1), `&`, ``, 1) + "," - } - repeatedStringForItems += "}" - s := strings.Join([]string{`&DormantDatabaseList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, - `Items:` + repeatedStringForItems + `,`, - `}`, - }, "") - return s -} -func (this *DormantDatabaseSpec) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&DormantDatabaseSpec{`, - `WipeOut:` + fmt.Sprintf("%v", this.WipeOut) + `,`, - `Origin:` + strings.Replace(strings.Replace(this.Origin.String(), "Origin", "Origin", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func (this *DormantDatabaseStatus) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&DormantDatabaseStatus{`, - `PausingTime:` + strings.Replace(fmt.Sprintf("%v", this.PausingTime), "Time", "v13.Time", 1) + `,`, - `WipeOutTime:` + strings.Replace(fmt.Sprintf("%v", this.WipeOutTime), "Time", "v13.Time", 1) + `,`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, - `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, + `DatabaseSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecretRef), "LocalObjectReference", "v11.LocalObjectReference", 1) + `,`, `}`, }, "") return s @@ -9783,7 +8274,7 @@ func (this *Elasticsearch) String() string { return "nil" } s := strings.Join([]string{`&Elasticsearch{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ElasticsearchSpec", "ElasticsearchSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ElasticsearchStatus", "ElasticsearchStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -9812,7 +8303,7 @@ func (this *ElasticsearchList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&ElasticsearchList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -9825,8 +8316,8 @@ func (this *ElasticsearchNode) String() string { s := strings.Join([]string{`&ElasticsearchNode{`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `Prefix:` + fmt.Sprintf("%v", this.Prefix) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `Resources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Resources), "ResourceRequirements", "v12.ResourceRequirements", 1), `&`, ``, 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `Resources:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Resources), "ResourceRequirements", "v11.ResourceRequirements", 1), `&`, ``, 1) + `,`, `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "intstr.IntOrString", 1) + `,`, `}`, }, "") @@ -9841,20 +8332,19 @@ func (this *ElasticsearchSpec) String() string { `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `Topology:` + strings.Replace(this.Topology.String(), "ElasticsearchClusterTopology", "ElasticsearchClusterTopology", 1) + `,`, `EnableSSL:` + fmt.Sprintf("%v", this.EnableSSL) + `,`, - `CertificateSecret:` + strings.Replace(fmt.Sprintf("%v", this.CertificateSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `CertificateSecret:` + strings.Replace(fmt.Sprintf("%v", this.CertificateSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `DisableSecurity:` + fmt.Sprintf("%v", this.DisableSecurity) + `,`, `AuthPlugin:` + fmt.Sprintf("%v", this.AuthPlugin) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `BackupSchedule:` + strings.Replace(this.BackupSchedule.String(), "BackupScheduleSpec", "BackupScheduleSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, `MaxUnavailable:` + strings.Replace(fmt.Sprintf("%v", this.MaxUnavailable), "IntOrString", "intstr.IntOrString", 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -9879,7 +8369,7 @@ func (this *Etcd) String() string { return "nil" } s := strings.Join([]string{`&Etcd{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "EtcdSpec", "EtcdSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "EtcdStatus", "EtcdStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -9896,7 +8386,7 @@ func (this *EtcdList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&EtcdList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -9910,15 +8400,14 @@ func (this *EtcdSpec) String() string { `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `BackupSchedule:` + strings.Replace(this.BackupSchedule.String(), "BackupScheduleSpec", "BackupScheduleSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, `TLS:` + strings.Replace(this.TLS.String(), "TLSPolicy", "TLSPolicy", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -9944,9 +8433,8 @@ func (this *InitSpec) String() string { } s := strings.Join([]string{`&InitSpec{`, `ScriptSource:` + strings.Replace(this.ScriptSource.String(), "ScriptSourceSpec", "ScriptSourceSpec", 1) + `,`, - `SnapshotSource:` + strings.Replace(this.SnapshotSource.String(), "SnapshotSourceSpec", "SnapshotSourceSpec", 1) + `,`, `PostgresWAL:` + strings.Replace(this.PostgresWAL.String(), "PostgresWALSourceSpec", "PostgresWALSourceSpec", 1) + `,`, - `StashRestoreSession:` + strings.Replace(fmt.Sprintf("%v", this.StashRestoreSession), "LocalObjectReference", "v12.LocalObjectReference", 1) + `,`, + `StashRestoreSession:` + strings.Replace(fmt.Sprintf("%v", this.StashRestoreSession), "LocalObjectReference", "v11.LocalObjectReference", 1) + `,`, `}`, }, "") return s @@ -9968,7 +8456,7 @@ func (this *MariaDB) String() string { return "nil" } s := strings.Join([]string{`&MariaDB{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MariaDBSpec", "MariaDBSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "MariaDBStatus", "MariaDBStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -9985,7 +8473,7 @@ func (this *MariaDBList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&MariaDBList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -9999,14 +8487,14 @@ func (this *MariaDBSpec) String() string { `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10042,7 +8530,7 @@ func (this *Memcached) String() string { return "nil" } s := strings.Join([]string{`&Memcached{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MemcachedSpec", "MemcachedSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "MemcachedStatus", "MemcachedStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10059,7 +8547,7 @@ func (this *MemcachedList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&MemcachedList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10070,13 +8558,13 @@ func (this *MemcachedSpec) String() string { return "nil" } s := strings.Join([]string{`&MemcachedSpec{`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "DeploymentStrategy", "v15.DeploymentStrategy", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "DeploymentStrategy", "v14.DeploymentStrategy", 1), `&`, ``, 1) + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10101,7 +8589,7 @@ func (this *MongoDB) String() string { return "nil" } s := strings.Join([]string{`&MongoDB{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MongoDBSpec", "MongoDBSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "MongoDBStatus", "MongoDBStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10114,7 +8602,7 @@ func (this *MongoDBConfigNode) String() string { } s := strings.Join([]string{`&MongoDBConfigNode{`, `MongoDBNode:` + strings.Replace(strings.Replace(this.MongoDBNode.String(), "MongoDBNode", "MongoDBNode", 1), `&`, ``, 1) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, `}`, }, "") return s @@ -10129,7 +8617,7 @@ func (this *MongoDBList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&MongoDBList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10140,7 +8628,7 @@ func (this *MongoDBMongosNode) String() string { return "nil" } s := strings.Join([]string{`&MongoDBMongosNode{`, - `Strategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Strategy), "DeploymentStrategy", "v15.DeploymentStrategy", 1), `&`, ``, 1) + `,`, + `Strategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Strategy), "DeploymentStrategy", "v14.DeploymentStrategy", 1), `&`, ``, 1) + `,`, `MongoDBNode:` + strings.Replace(strings.Replace(this.MongoDBNode.String(), "MongoDBNode", "MongoDBNode", 1), `&`, ``, 1) + `,`, `}`, }, "") @@ -10153,8 +8641,8 @@ func (this *MongoDBNode) String() string { s := strings.Join([]string{`&MongoDBNode{`, `Replicas:` + fmt.Sprintf("%v", this.Replicas) + `,`, `Prefix:` + fmt.Sprintf("%v", this.Prefix) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -10165,7 +8653,7 @@ func (this *MongoDBReplicaSet) String() string { } s := strings.Join([]string{`&MongoDBReplicaSet{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `KeyFile:` + strings.Replace(fmt.Sprintf("%v", this.KeyFile), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `KeyFile:` + strings.Replace(fmt.Sprintf("%v", this.KeyFile), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `}`, }, "") return s @@ -10177,7 +8665,7 @@ func (this *MongoDBShardNode) String() string { s := strings.Join([]string{`&MongoDBShardNode{`, `Shards:` + fmt.Sprintf("%v", this.Shards) + `,`, `MongoDBNode:` + strings.Replace(strings.Replace(this.MongoDBNode.String(), "MongoDBNode", "MongoDBNode", 1), `&`, ``, 1) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, `}`, }, "") return s @@ -10204,18 +8692,17 @@ func (this *MongoDBSpec) String() string { `ReplicaSet:` + strings.Replace(this.ReplicaSet.String(), "MongoDBReplicaSet", "MongoDBReplicaSet", 1) + `,`, `ShardTopology:` + strings.Replace(this.ShardTopology.String(), "MongoDBShardingTopology", "MongoDBShardingTopology", 1) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, - `CertificateSecret:` + strings.Replace(fmt.Sprintf("%v", this.CertificateSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, + `CertificateSecret:` + strings.Replace(fmt.Sprintf("%v", this.CertificateSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `ClusterAuthMode:` + fmt.Sprintf("%v", this.ClusterAuthMode) + `,`, `SSLMode:` + fmt.Sprintf("%v", this.SSLMode) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `BackupSchedule:` + strings.Replace(this.BackupSchedule.String(), "BackupScheduleSpec", "BackupScheduleSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10240,7 +8727,7 @@ func (this *MySQL) String() string { return "nil" } s := strings.Join([]string{`&MySQL{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "MySQLSpec", "MySQLSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "MySQLStatus", "MySQLStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10280,7 +8767,7 @@ func (this *MySQLList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&MySQLList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10295,15 +8782,14 @@ func (this *MySQLSpec) String() string { `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `Topology:` + strings.Replace(this.Topology.String(), "MySQLClusterTopology", "MySQLClusterTopology", 1) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `BackupSchedule:` + strings.Replace(this.BackupSchedule.String(), "BackupScheduleSpec", "BackupScheduleSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10323,41 +8809,12 @@ func (this *MySQLStatus) String() string { }, "") return s } -func (this *Origin) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&Origin{`, - `PartialObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PartialObjectMeta), "PartialObjectMeta", "v11.PartialObjectMeta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "OriginSpec", "OriginSpec", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s -} -func (this *OriginSpec) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&OriginSpec{`, - `Elasticsearch:` + strings.Replace(this.Elasticsearch.String(), "ElasticsearchSpec", "ElasticsearchSpec", 1) + `,`, - `Postgres:` + strings.Replace(this.Postgres.String(), "PostgresSpec", "PostgresSpec", 1) + `,`, - `MySQL:` + strings.Replace(this.MySQL.String(), "MySQLSpec", "MySQLSpec", 1) + `,`, - `PerconaXtraDB:` + strings.Replace(this.PerconaXtraDB.String(), "PerconaXtraDBSpec", "PerconaXtraDBSpec", 1) + `,`, - `MariaDB:` + strings.Replace(this.MariaDB.String(), "MariaDBSpec", "MariaDBSpec", 1) + `,`, - `MongoDB:` + strings.Replace(this.MongoDB.String(), "MongoDBSpec", "MongoDBSpec", 1) + `,`, - `Redis:` + strings.Replace(this.Redis.String(), "RedisSpec", "RedisSpec", 1) + `,`, - `Memcached:` + strings.Replace(this.Memcached.String(), "MemcachedSpec", "MemcachedSpec", 1) + `,`, - `Etcd:` + strings.Replace(this.Etcd.String(), "EtcdSpec", "EtcdSpec", 1) + `,`, - `}`, - }, "") - return s -} func (this *PerconaXtraDB) String() string { if this == nil { return "nil" } s := strings.Join([]string{`&PerconaXtraDB{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PerconaXtraDBSpec", "PerconaXtraDBSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PerconaXtraDBStatus", "PerconaXtraDBStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10374,7 +8831,7 @@ func (this *PerconaXtraDBList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&PerconaXtraDBList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10388,14 +8845,14 @@ func (this *PerconaXtraDBSpec) String() string { `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10420,7 +8877,7 @@ func (this *PgBouncer) String() string { return "nil" } s := strings.Join([]string{`&PgBouncer{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PgBouncerSpec", "PgBouncerSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PgBouncerStatus", "PgBouncerStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10437,7 +8894,7 @@ func (this *PgBouncerList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&PgBouncerList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10455,12 +8912,12 @@ func (this *PgBouncerSpec) String() string { s := strings.Join([]string{`&PgBouncerSpec{`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, `Databases:` + repeatedStringForDatabases + `,`, `ConnectionPool:` + strings.Replace(this.ConnectionPool.String(), "ConnectionPoolConfig", "ConnectionPoolConfig", 1) + `,`, - `UserListSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.UserListSecretRef), "LocalObjectReference", "v12.LocalObjectReference", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, + `UserListSecretRef:` + strings.Replace(fmt.Sprintf("%v", this.UserListSecretRef), "LocalObjectReference", "v11.LocalObjectReference", 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, `TLS:` + strings.Replace(this.TLS.String(), "TLSConfig", "TLSConfig", 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `}`, @@ -10484,7 +8941,7 @@ func (this *Postgres) String() string { return "nil" } s := strings.Join([]string{`&Postgres{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "PostgresSpec", "PostgresSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "PostgresStatus", "PostgresStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10496,7 +8953,7 @@ func (this *PostgresArchiverSpec) String() string { return "nil" } s := strings.Join([]string{`&PostgresArchiverSpec{`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "Backend", "v1.Backend", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "Backend", "v15.Backend", 1) + `,`, `}`, }, "") return s @@ -10511,7 +8968,7 @@ func (this *PostgresList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&PostgresList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10528,17 +8985,16 @@ func (this *PostgresSpec) String() string { `StreamingMode:` + valueToStringGenerated(this.StreamingMode) + `,`, `Archiver:` + strings.Replace(this.Archiver.String(), "PostgresArchiverSpec", "PostgresArchiverSpec", 1) + `,`, `LeaderElection:` + strings.Replace(this.LeaderElection.String(), "LeaderElectionConfig", "LeaderElectionConfig", 1) + `,`, - `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, + `DatabaseSecret:` + strings.Replace(fmt.Sprintf("%v", this.DatabaseSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, `Init:` + strings.Replace(this.Init.String(), "InitSpec", "InitSpec", 1) + `,`, - `BackupSchedule:` + strings.Replace(this.BackupSchedule.String(), "BackupScheduleSpec", "BackupScheduleSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `ReplicaServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ReplicaServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `ReplicaServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ReplicaServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10565,7 +9021,7 @@ func (this *PostgresWALSourceSpec) String() string { s := strings.Join([]string{`&PostgresWALSourceSpec{`, `BackupName:` + fmt.Sprintf("%v", this.BackupName) + `,`, `PITR:` + strings.Replace(this.PITR.String(), "RecoveryTarget", "RecoveryTarget", 1) + `,`, - `Backend:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Backend), "Backend", "v1.Backend", 1), `&`, ``, 1) + `,`, + `Backend:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Backend), "Backend", "v15.Backend", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -10575,7 +9031,7 @@ func (this *ProxySQL) String() string { return "nil" } s := strings.Join([]string{`&ProxySQL{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ProxySQLSpec", "ProxySQLSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "ProxySQLStatus", "ProxySQLStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10587,7 +9043,7 @@ func (this *ProxySQLBackendSpec) String() string { return "nil" } s := strings.Join([]string{`&ProxySQLBackendSpec{`, - `Ref:` + strings.Replace(fmt.Sprintf("%v", this.Ref), "TypedLocalObjectReference", "v12.TypedLocalObjectReference", 1) + `,`, + `Ref:` + strings.Replace(fmt.Sprintf("%v", this.Ref), "TypedLocalObjectReference", "v11.TypedLocalObjectReference", 1) + `,`, `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `}`, }, "") @@ -10603,7 +9059,7 @@ func (this *ProxySQLList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&ProxySQLList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10618,12 +9074,12 @@ func (this *ProxySQLSpec) String() string { `Replicas:` + valueToStringGenerated(this.Replicas) + `,`, `Mode:` + valueToStringGenerated(this.Mode) + `,`, `Backend:` + strings.Replace(this.Backend.String(), "ProxySQLBackendSpec", "ProxySQLBackendSpec", 1) + `,`, - `ProxySQLSecret:` + strings.Replace(fmt.Sprintf("%v", this.ProxySQLSecret), "SecretVolumeSource", "v12.SecretVolumeSource", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `ProxySQLSecret:` + strings.Replace(fmt.Sprintf("%v", this.ProxySQLSecret), "SecretVolumeSource", "v11.SecretVolumeSource", 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `}`, }, "") @@ -10659,7 +9115,7 @@ func (this *Redis) String() string { return "nil" } s := strings.Join([]string{`&Redis{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "RedisSpec", "RedisSpec", 1), `&`, ``, 1) + `,`, `Status:` + strings.Replace(strings.Replace(this.Status.String(), "RedisStatus", "RedisStatus", 1), `&`, ``, 1) + `,`, `}`, @@ -10687,7 +9143,7 @@ func (this *RedisList) String() string { } repeatedStringForItems += "}" s := strings.Join([]string{`&RedisList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, `Items:` + repeatedStringForItems + `,`, `}`, }, "") @@ -10703,12 +9159,12 @@ func (this *RedisSpec) String() string { `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Cluster:` + strings.Replace(this.Cluster.String(), "RedisClusterSpec", "RedisClusterSpec", 1) + `,`, `StorageType:` + fmt.Sprintf("%v", this.StorageType) + `,`, - `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v14.AgentSpec", 1) + `,`, - `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v12.VolumeSource", 1) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v11.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, - `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v15.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, + `Storage:` + strings.Replace(fmt.Sprintf("%v", this.Storage), "PersistentVolumeClaimSpec", "v11.PersistentVolumeClaimSpec", 1) + `,`, + `Monitor:` + strings.Replace(fmt.Sprintf("%v", this.Monitor), "AgentSpec", "v12.AgentSpec", 1) + `,`, + `ConfigSource:` + strings.Replace(fmt.Sprintf("%v", this.ConfigSource), "VolumeSource", "v11.VolumeSource", 1) + `,`, + `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v13.PodTemplateSpec", 1), `&`, ``, 1) + `,`, + `ServiceTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ServiceTemplate), "ServiceTemplateSpec", "v13.ServiceTemplateSpec", 1), `&`, ``, 1) + `,`, + `UpdateStrategy:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.UpdateStrategy), "StatefulSetUpdateStrategy", "v14.StatefulSetUpdateStrategy", 1), `&`, ``, 1) + `,`, `Paused:` + fmt.Sprintf("%v", this.Paused) + `,`, `Halted:` + fmt.Sprintf("%v", this.Halted) + `,`, `TerminationPolicy:` + fmt.Sprintf("%v", this.TerminationPolicy) + `,`, @@ -10734,97 +9190,29 @@ func (this *ScriptSourceSpec) String() string { } s := strings.Join([]string{`&ScriptSourceSpec{`, `ScriptPath:` + fmt.Sprintf("%v", this.ScriptPath) + `,`, - `VolumeSource:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeSource), "VolumeSource", "v12.VolumeSource", 1), `&`, ``, 1) + `,`, + `VolumeSource:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.VolumeSource), "VolumeSource", "v11.VolumeSource", 1), `&`, ``, 1) + `,`, `}`, }, "") return s } -func (this *Snapshot) String() string { +func (this *TLSConfig) String() string { if this == nil { return "nil" } - s := strings.Join([]string{`&Snapshot{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v13.ObjectMeta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "SnapshotSpec", "SnapshotSpec", 1), `&`, ``, 1) + `,`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "SnapshotStatus", "SnapshotStatus", 1), `&`, ``, 1) + `,`, + s := strings.Join([]string{`&TLSConfig{`, + `IssuerRef:` + strings.Replace(fmt.Sprintf("%v", this.IssuerRef), "TypedLocalObjectReference", "v11.TypedLocalObjectReference", 1) + `,`, + `Certificate:` + strings.Replace(this.Certificate.String(), "CertificateSpec", "CertificateSpec", 1) + `,`, `}`, }, "") return s } -func (this *SnapshotList) String() string { +func (this *TLSPolicy) String() string { if this == nil { return "nil" } - repeatedStringForItems := "[]Snapshot{" - for _, f := range this.Items { - repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "Snapshot", "Snapshot", 1), `&`, ``, 1) + "," - } - repeatedStringForItems += "}" - s := strings.Join([]string{`&SnapshotList{`, - `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v13.ListMeta", 1), `&`, ``, 1) + `,`, - `Items:` + repeatedStringForItems + `,`, - `}`, - }, "") - return s -} -func (this *SnapshotSourceSpec) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SnapshotSourceSpec{`, - `Namespace:` + fmt.Sprintf("%v", this.Namespace) + `,`, - `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Args:` + fmt.Sprintf("%v", this.Args) + `,`, - `}`, - }, "") - return s -} -func (this *SnapshotSpec) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SnapshotSpec{`, - `DatabaseName:` + fmt.Sprintf("%v", this.DatabaseName) + `,`, - `Backend:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Backend), "Backend", "v1.Backend", 1), `&`, ``, 1) + `,`, - `StorageType:` + valueToStringGenerated(this.StorageType) + `,`, - `PodTemplate:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.PodTemplate), "PodTemplateSpec", "v11.PodTemplateSpec", 1), `&`, ``, 1) + `,`, - `PodVolumeClaimSpec:` + strings.Replace(fmt.Sprintf("%v", this.PodVolumeClaimSpec), "PersistentVolumeClaimSpec", "v12.PersistentVolumeClaimSpec", 1) + `,`, - `}`, - }, "") - return s -} -func (this *SnapshotStatus) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&SnapshotStatus{`, - `StartTime:` + strings.Replace(fmt.Sprintf("%v", this.StartTime), "Time", "v13.Time", 1) + `,`, - `CompletionTime:` + strings.Replace(fmt.Sprintf("%v", this.CompletionTime), "Time", "v13.Time", 1) + `,`, - `Phase:` + fmt.Sprintf("%v", this.Phase) + `,`, - `Reason:` + fmt.Sprintf("%v", this.Reason) + `,`, - `ObservedGeneration:` + fmt.Sprintf("%v", this.ObservedGeneration) + `,`, - `}`, - }, "") - return s -} -func (this *TLSConfig) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&TLSConfig{`, - `IssuerRef:` + strings.Replace(fmt.Sprintf("%v", this.IssuerRef), "TypedLocalObjectReference", "v12.TypedLocalObjectReference", 1) + `,`, - `Certificate:` + strings.Replace(this.Certificate.String(), "CertificateSpec", "CertificateSpec", 1) + `,`, - `}`, - }, "") - return s -} -func (this *TLSPolicy) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&TLSPolicy{`, - `Member:` + strings.Replace(this.Member.String(), "MemberSecret", "MemberSecret", 1) + `,`, - `OperatorSecret:` + fmt.Sprintf("%v", this.OperatorSecret) + `,`, + s := strings.Join([]string{`&TLSPolicy{`, + `Member:` + strings.Replace(this.Member.String(), "MemberSecret", "MemberSecret", 1) + `,`, + `OperatorSecret:` + fmt.Sprintf("%v", this.OperatorSecret) + `,`, `}`, }, "") return s @@ -10837,226 +9225,6 @@ func valueToStringGenerated(v interface{}) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("*%v", pv) } -func (m *BackupScheduleSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: BackupScheduleSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: BackupScheduleSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CronExpression", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.CronExpression = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - s := StorageType(dAtA[iNdEx:postIndex]) - m.StorageType = &s - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodVolumeClaimSpec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PodVolumeClaimSpec == nil { - m.PodVolumeClaimSpec = &v12.PersistentVolumeClaimSpec{} - } - if err := m.PodVolumeClaimSpec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *CertificateSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -11148,7 +9316,7 @@ func (m *CertificateSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Duration == nil { - m.Duration = &v13.Duration{} + m.Duration = &v1.Duration{} } if err := m.Duration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err @@ -11156,2864 +9324,7 @@ func (m *CertificateSpec) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RenewBefore", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.RenewBefore == nil { - m.RenewBefore = &v13.Duration{} - } - if err := m.RenewBefore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DNSNames", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DNSNames = append(m.DNSNames, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IPAddresses", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IPAddresses = append(m.IPAddresses, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field URISANs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.URISANs = append(m.URISANs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ConnectionPoolConfig) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ConnectionPoolConfig: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ConnectionPoolConfig: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Port = &v - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolMode", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PoolMode = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxClientConnections", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.MaxClientConnections = &v - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DefaultPoolSize", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.DefaultPoolSize = &v - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MinPoolSize", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.MinPoolSize = &v - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolSize", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ReservePoolSize = &v - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolTimeoutSeconds", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ReservePoolTimeoutSeconds = &v - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxDBConnections", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.MaxDBConnections = &v - case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxUserConnections", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.MaxUserConnections = &v - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field StatsPeriodSeconds", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.StatsPeriodSeconds = &v - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AdminUsers", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AdminUsers = append(m.AdminUsers, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AuthType = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthUser", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AuthUser = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IgnoreStartupParameters", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.IgnoreStartupParameters = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Databases) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Databases: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Databases: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Alias = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseRef", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.DatabaseRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseName", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DatabaseName = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecretRef", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DatabaseSecretRef == nil { - m.DatabaseSecretRef = &v12.LocalObjectReference{} - } - if err := m.DatabaseSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DormantDatabase) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DormantDatabase: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DormantDatabase: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DormantDatabaseList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DormantDatabaseList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DormantDatabaseList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Items = append(m.Items, DormantDatabase{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DormantDatabaseSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DormantDatabaseSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DormantDatabaseSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field WipeOut", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.WipeOut = bool(v != 0) - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Origin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DormantDatabaseStatus) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DormantDatabaseStatus: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DormantDatabaseStatus: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PausingTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PausingTime == nil { - m.PausingTime = &v13.Time{} - } - if err := m.PausingTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WipeOutTime", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.WipeOutTime == nil { - m.WipeOutTime = &v13.Time{} - } - if err := m.WipeOutTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Phase = DormantDatabasePhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Reason = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) - } - m.ObservedGeneration = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Elasticsearch) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Elasticsearch: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Elasticsearch: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ElasticsearchClusterTopology) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ElasticsearchClusterTopology: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ElasticsearchClusterTopology: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Master.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Client", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Client.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ElasticsearchList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ElasticsearchList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ElasticsearchList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Items = append(m.Items, Elasticsearch{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ElasticsearchNode) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ElasticsearchNode: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ElasticsearchNode: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Prefix = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MaxUnavailable == nil { - m.MaxUnavailable = &intstr.IntOrString{} - } - if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ElasticsearchSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ElasticsearchSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ElasticsearchSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Topology", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Topology == nil { - m.Topology = &ElasticsearchClusterTopology{} - } - if err := m.Topology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field EnableSSL", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.EnableSSL = bool(v != 0) - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateSecret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.CertificateSecret == nil { - m.CertificateSecret = &v12.SecretVolumeSource{} - } - if err := m.CertificateSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field DisableSecurity", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.DisableSecurity = bool(v != 0) - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthPlugin", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AuthPlugin = kubedb_dev_apimachinery_apis_catalog_v1alpha1.ElasticsearchAuthPlugin(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} - } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupSchedule", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.BackupSchedule == nil { - m.BackupSchedule = &BackupScheduleSpec{} - } - if err := m.BackupSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} - } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 15: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 16: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 17: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MaxUnavailable == nil { - m.MaxUnavailable = &intstr.IntOrString{} - } - if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 18: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 19: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Paused = bool(v != 0) - case 20: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Halted = bool(v != 0) - case 21: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ElasticsearchStatus) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ElasticsearchStatus: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ElasticsearchStatus: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Reason = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) - } - m.ObservedGeneration = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Etcd) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Etcd: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Etcd: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RenewBefore", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -14040,15 +9351,18 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.RenewBefore == nil { + m.RenewBefore = &v1.Duration{} + } + if err := m.RenewBefore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DNSNames", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14058,83 +9372,29 @@ func (m *Etcd) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.DNSNames = append(m.DNSNames, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *EtcdList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EtcdList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EtcdList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IPAddresses", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14144,30 +9404,29 @@ func (m *EtcdList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.IPAddresses = append(m.IPAddresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 2: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field URISANs", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14177,25 +9436,23 @@ func (m *EtcdList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Etcd{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.URISANs = append(m.URISANs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -14221,7 +9478,7 @@ func (m *EtcdList) Unmarshal(dAtA []byte) error { } return nil } -func (m *EtcdSpec) Unmarshal(dAtA []byte) error { +func (m *ConnectionPoolConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14244,15 +9501,35 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EtcdSpec: wiretype end group for non-group") + return fmt.Errorf("proto: ConnectionPoolConfig: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EtcdSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ConnectionPoolConfig: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Port = &v + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolMode", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -14280,13 +9557,13 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.PoolMode = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: + case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MaxClientConnections", wireType) } - var v int32 + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14296,17 +9573,17 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int32(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } - m.Replicas = &v - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + m.MaxClientConnections = &v + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultPoolSize", wireType) } - var stringLen uint64 + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14316,29 +9593,97 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated + m.DefaultPoolSize = &v + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MinPoolSize", wireType) } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } } - if postIndex > l { - return io.ErrUnexpectedEOF + m.MinPoolSize = &v + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolSize", wireType) } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } } - var msglen int + m.ReservePoolSize = &v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReservePoolTimeoutSeconds", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ReservePoolTimeoutSeconds = &v + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxDBConnections", wireType) + } + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MaxDBConnections = &v + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUserConnections", wireType) + } + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14348,33 +9693,17 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + m.MaxUserConnections = &v + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StatsPeriodSeconds", wireType) } - var msglen int + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14384,33 +9713,17 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} - } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: + m.StatsPeriodSeconds = &v + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AdminUsers", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14420,33 +9733,29 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AdminUsers = append(m.AdminUsers, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 7: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuthType", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14456,33 +9765,29 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.BackupSchedule == nil { - m.BackupSchedule = &BackupScheduleSpec{} - } - if err := m.BackupSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AuthType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 8: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuthUser", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14492,33 +9797,29 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AuthUser = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IgnoreStartupParameters", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14528,33 +9829,82 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.TLS == nil { - m.TLS = &TLSPolicy{} - } - if err := m.TLS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.IgnoreStartupParameters = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 10: + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Databases) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Databases: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Databases: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14564,28 +9914,27 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Alias = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 11: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseRef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -14612,15 +9961,15 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.DatabaseRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14630,70 +9979,29 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.DatabaseName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Paused = bool(v != 0) - case 14: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Halted = bool(v != 0) - case 15: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecretRef", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14703,23 +10011,27 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + if m.DatabaseSecretRef == nil { + m.DatabaseSecretRef = &v11.LocalObjectReference{} + } + if err := m.DatabaseSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -14745,7 +10057,7 @@ func (m *EtcdSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *EtcdStatus) Unmarshal(dAtA []byte) error { +func (m *Elasticsearch) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14768,17 +10080,17 @@ func (m *EtcdStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: EtcdStatus: wiretype end group for non-group") + return fmt.Errorf("proto: Elasticsearch: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: EtcdStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Elasticsearch: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14788,29 +10100,30 @@ func (m *EtcdStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14820,29 +10133,30 @@ func (m *EtcdStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Reason = string(dAtA[iNdEx:postIndex]) + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } - m.ObservedGeneration = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -14852,11 +10166,25 @@ func (m *EtcdStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -14881,7 +10209,7 @@ func (m *EtcdStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *InitSpec) Unmarshal(dAtA []byte) error { +func (m *ElasticsearchClusterTopology) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -14904,15 +10232,15 @@ func (m *InitSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: InitSpec: wiretype end group for non-group") + return fmt.Errorf("proto: ElasticsearchClusterTopology: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: InitSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ElasticsearchClusterTopology: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ScriptSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -14939,16 +10267,13 @@ func (m *InitSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ScriptSource == nil { - m.ScriptSource = &ScriptSourceSpec{} - } - if err := m.ScriptSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Master.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SnapshotSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -14975,52 +10300,13 @@ func (m *InitSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.SnapshotSource == nil { - m.SnapshotSource = &SnapshotSourceSpec{} - } - if err := m.SnapshotSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Data.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresWAL", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.PostgresWAL == nil { - m.PostgresWAL = &PostgresWALSourceSpec{} - } - if err := m.PostgresWAL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StashRestoreSession", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Client", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15047,10 +10333,7 @@ func (m *InitSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.StashRestoreSession == nil { - m.StashRestoreSession = &v12.LocalObjectReference{} - } - if err := m.StashRestoreSession.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Client.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -15078,7 +10361,7 @@ func (m *InitSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { +func (m *ElasticsearchList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -15101,17 +10384,17 @@ func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: LeaderElectionConfig: wiretype end group for non-group") + return fmt.Errorf("proto: ElasticsearchList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: LeaderElectionConfig: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ElasticsearchList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaseDurationSeconds", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } - m.LeaseDurationSeconds = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -15121,16 +10404,30 @@ func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.LeaseDurationSeconds |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RenewDeadlineSeconds", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } - m.RenewDeadlineSeconds = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -15140,30 +10437,26 @@ func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.RenewDeadlineSeconds |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field RetryPeriodSeconds", wireType) + if msglen < 0 { + return ErrInvalidLengthGenerated } - m.RetryPeriodSeconds = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.RetryPeriodSeconds |= int32(b&0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF } + m.Items = append(m.Items, Elasticsearch{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -15188,7 +10481,7 @@ func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { } return nil } -func (m *MariaDB) Unmarshal(dAtA []byte) error { +func (m *ElasticsearchNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -15207,19 +10500,71 @@ func (m *MariaDB) Unmarshal(dAtA []byte) error { if b < 0x80 { break } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MariaDB: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MariaDB: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ElasticsearchNode: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ElasticsearchNode: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Prefix = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15246,13 +10591,16 @@ func (m *MariaDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} + } + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15279,13 +10627,13 @@ func (m *MariaDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15312,7 +10660,10 @@ func (m *MariaDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.MaxUnavailable == nil { + m.MaxUnavailable = &intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -15340,7 +10691,7 @@ func (m *MariaDB) Unmarshal(dAtA []byte) error { } return nil } -func (m *MariaDBList) Unmarshal(dAtA []byte) error { +func (m *ElasticsearchSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -15363,17 +10714,17 @@ func (m *MariaDBList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MariaDBList: wiretype end group for non-group") + return fmt.Errorf("proto: ElasticsearchSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MariaDBList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ElasticsearchSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -15383,28 +10734,47 @@ func (m *MariaDBList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Topology", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15431,67 +10801,92 @@ func (m *MariaDBList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, MariaDB{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Topology == nil { + m.Topology = &ElasticsearchClusterTopology{} + } + if err := m.Topology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field EnableSSL", wireType) } - if skippy < 0 { + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.EnableSSL = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CertificateSecret", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + if m.CertificateSecret == nil { + m.CertificateSecret = &v11.SecretVolumeSource{} } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if err := m.CertificateSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DisableSecurity", wireType) } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MariaDBSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MariaDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DisableSecurity = bool(v != 0) + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuthPlugin", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -15519,13 +10914,13 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.AuthPlugin = kubedb_dev_apimachinery_apis_catalog_v1alpha1.ElasticsearchAuthPlugin(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } - var v int32 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -15535,13 +10930,29 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Replicas = &v - case 3: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } @@ -15573,7 +10984,7 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { } m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } @@ -15603,15 +11014,15 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} + m.Storage = &v11.PersistentVolumeClaimSpec{} } if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15638,16 +11049,16 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} + if m.Init == nil { + m.Init = &InitSpec{} } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15674,16 +11085,16 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15710,16 +11121,16 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15746,16 +11157,13 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} - } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15782,13 +11190,13 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: + case 17: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MaxUnavailable", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -15815,11 +11223,14 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.MaxUnavailable == nil { + m.MaxUnavailable = &intstr.IntOrString{} + } + if err := m.MaxUnavailable.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 11: + case 18: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } @@ -15852,7 +11263,7 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 12: + case 19: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } @@ -15872,7 +11283,7 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { } } m.Paused = bool(v != 0) - case 13: + case 20: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) } @@ -15892,7 +11303,7 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { } } m.Halted = bool(v != 0) - case 14: + case 21: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } @@ -15948,7 +11359,7 @@ func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *MariaDBStatus) Unmarshal(dAtA []byte) error { +func (m *ElasticsearchStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -15971,10 +11382,10 @@ func (m *MariaDBStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MariaDBStatus: wiretype end group for non-group") + return fmt.Errorf("proto: ElasticsearchStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MariaDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ElasticsearchStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -16084,124 +11495,7 @@ func (m *MariaDBStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *MemberSecret) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MemberSecret: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MemberSecret: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerSecret", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.PeerSecret = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServerSecret", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ServerSecret = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Memcached) Unmarshal(dAtA []byte) error { +func (m *Etcd) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16224,10 +11518,10 @@ func (m *Memcached) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Memcached: wiretype end group for non-group") + return fmt.Errorf("proto: Etcd: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Memcached: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Etcd: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -16353,7 +11647,7 @@ func (m *Memcached) Unmarshal(dAtA []byte) error { } return nil } -func (m *MemcachedList) Unmarshal(dAtA []byte) error { +func (m *EtcdList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16376,10 +11670,10 @@ func (m *MemcachedList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MemcachedList: wiretype end group for non-group") + return fmt.Errorf("proto: EtcdList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MemcachedList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EtcdList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -16444,7 +11738,7 @@ func (m *MemcachedList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Memcached{}) + m.Items = append(m.Items, Etcd{}) if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -16473,7 +11767,7 @@ func (m *MemcachedList) Unmarshal(dAtA []byte) error { } return nil } -func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { +func (m *EtcdSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16496,15 +11790,99 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MemcachedSpec: wiretype end group for non-group") + return fmt.Errorf("proto: EtcdSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MemcachedSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EtcdSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -16531,15 +11909,18 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} + } + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -16549,29 +11930,33 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } - var v int32 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -16581,13 +11966,29 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Replicas = &v - case 7: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Init == nil { + m.Init = &InitSpec{} + } + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } @@ -16617,15 +12018,15 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} + m.Monitor = &v12.AgentSpec{} } if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -16652,14 +12053,14 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} + if m.TLS == nil { + m.TLS = &TLSPolicy{} } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.TLS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } @@ -16692,7 +12093,7 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 10: + case 11: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } @@ -16725,7 +12126,40 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 11: + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } @@ -16745,7 +12179,7 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { } } m.Paused = bool(v != 0) - case 12: + case 14: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) } @@ -16765,7 +12199,7 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { } } m.Halted = bool(v != 0) - case 13: + case 15: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } @@ -16821,7 +12255,7 @@ func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *MemcachedStatus) Unmarshal(dAtA []byte) error { +func (m *EtcdStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16844,10 +12278,10 @@ func (m *MemcachedStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MemcachedStatus: wiretype end group for non-group") + return fmt.Errorf("proto: EtcdStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MemcachedStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: EtcdStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -16957,7 +12391,7 @@ func (m *MemcachedStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDB) Unmarshal(dAtA []byte) error { +func (m *InitSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -16980,15 +12414,15 @@ func (m *MongoDB) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDB: wiretype end group for non-group") + return fmt.Errorf("proto: InitSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDB: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: InitSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ScriptSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17015,13 +12449,16 @@ func (m *MongoDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ScriptSource == nil { + m.ScriptSource = &ScriptSourceSpec{} + } + if err := m.ScriptSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresWAL", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17048,13 +12485,16 @@ func (m *MongoDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.PostgresWAL == nil { + m.PostgresWAL = &PostgresWALSourceSpec{} + } + if err := m.PostgresWAL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StashRestoreSession", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17081,7 +12521,10 @@ func (m *MongoDB) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.StashRestoreSession == nil { + m.StashRestoreSession = &v11.LocalObjectReference{} + } + if err := m.StashRestoreSession.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -17109,7 +12552,7 @@ func (m *MongoDB) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { +func (m *LeaderElectionConfig) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17132,17 +12575,17 @@ func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBConfigNode: wiretype end group for non-group") + return fmt.Errorf("proto: LeaderElectionConfig: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBConfigNode: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: LeaderElectionConfig: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LeaseDurationSeconds", wireType) } - var msglen int + m.LeaseDurationSeconds = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17152,30 +12595,16 @@ func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.LeaseDurationSeconds |= int32(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RenewDeadlineSeconds", wireType) } - var msglen int + m.RenewDeadlineSeconds = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17185,28 +12614,30 @@ func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.RenewDeadlineSeconds |= int32(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RetryPeriodSeconds", wireType) } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.RetryPeriodSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.RetryPeriodSeconds |= int32(b&0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -17231,7 +12662,7 @@ func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBList) Unmarshal(dAtA []byte) error { +func (m *MariaDB) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17254,15 +12685,15 @@ func (m *MongoDBList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBList: wiretype end group for non-group") + return fmt.Errorf("proto: MariaDB: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MariaDB: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17289,13 +12720,13 @@ func (m *MongoDBList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17322,8 +12753,40 @@ func (m *MongoDBList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, MongoDB{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -17351,7 +12814,7 @@ func (m *MongoDBList) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { +func (m *MariaDBList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17374,15 +12837,15 @@ func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBMongosNode: wiretype end group for non-group") + return fmt.Errorf("proto: MariaDBList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBMongosNode: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MariaDBList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 4: + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17409,13 +12872,13 @@ func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Strategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17442,7 +12905,8 @@ func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, MariaDB{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -17470,7 +12934,7 @@ func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBNode) Unmarshal(dAtA []byte) error { +func (m *MariaDBSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17493,17 +12957,49 @@ func (m *MongoDBNode) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBNode: wiretype end group for non-group") + return fmt.Errorf("proto: MariaDBSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBNode: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MariaDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } - m.Replicas = 0 + var v int32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17513,14 +13009,15 @@ func (m *MongoDBNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Replicas |= int32(b&0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } } - case 2: + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -17548,11 +13045,11 @@ func (m *MongoDBNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Prefix = string(dAtA[iNdEx:postIndex]) + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17579,16 +13076,16 @@ func (m *MongoDBNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17615,68 +13112,54 @@ func (m *MongoDBNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } - if skippy < 0 { + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MongoDBReplicaSet) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.Init == nil { + m.Init = &InitSpec{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MongoDBReplicaSet: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBReplicaSet: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17686,27 +13169,31 @@ func (m *MongoDBReplicaSet) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} + } + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KeyFile", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17733,71 +13220,51 @@ func (m *MongoDBReplicaSet) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.KeyFile == nil { - m.KeyFile = &v12.SecretVolumeSource{} + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - if err := m.KeyFile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } - if skippy < 0 { - return ErrInvalidLengthGenerated + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - if (iNdEx + skippy) < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MongoDBShardNode: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBShardNode: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType) + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Shards = 0 + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + } + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17807,14 +13274,28 @@ func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Shards |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - case 2: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -17841,15 +13322,55 @@ func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17859,27 +13380,23 @@ func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -17905,7 +13422,7 @@ func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { +func (m *MariaDBStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -17928,17 +13445,17 @@ func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBShardingTopology: wiretype end group for non-group") + return fmt.Errorf("proto: MariaDBStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBShardingTopology: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MariaDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17948,30 +13465,29 @@ func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Shard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigServer", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -17981,30 +13497,29 @@ func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConfigServer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Mongos", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - var msglen int + m.ObservedGeneration = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18014,25 +13529,11 @@ func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.ObservedGeneration |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Mongos.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -18057,7 +13558,7 @@ func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { +func (m *MemberSecret) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -18080,15 +13581,15 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBSpec: wiretype end group for non-group") + return fmt.Errorf("proto: MemberSecret: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MemberSecret: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PeerSecret", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -18116,33 +13617,13 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.PeerSecret = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReplicaSet", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServerSecret", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18152,69 +13633,82 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.ReplicaSet == nil { - m.ReplicaSet = &MongoDBReplicaSet{} - } - if err := m.ReplicaSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ServerSecret = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ShardTopology", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.ShardTopology == nil { - m.ShardTopology = &MongoDBShardingTopology{} + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Memcached) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - if err := m.ShardTopology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + if iNdEx >= l { + return io.ErrUnexpectedEOF } - iNdEx = postIndex - case 5: + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Memcached: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Memcached: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18224,27 +13718,28 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18271,16 +13766,13 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18307,16 +13799,66 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} - } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MemcachedList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MemcachedList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MemcachedList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18343,18 +13885,15 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.CertificateSecret == nil { - m.CertificateSecret = &v12.SecretVolumeSource{} - } - if err := m.CertificateSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterAuthMode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18364,59 +13903,82 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.ClusterAuthMode = ClusterAuthMode(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSLMode", wireType) + m.Items = append(m.Items, Memcached{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.SSLMode = SSLMode(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 11: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MemcachedSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MemcachedSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MemcachedSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18443,18 +14005,15 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18464,33 +14023,29 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.BackupSchedule == nil { - m.BackupSchedule = &BackupScheduleSpec{} - } - if err := m.BackupSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 13: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } - var msglen int + var v int32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -18500,31 +14055,15 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 14: + m.Replicas = &v + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18551,16 +14090,16 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 15: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18587,16 +14126,16 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PodTemplate == nil { - m.PodTemplate = &v11.PodTemplateSpec{} + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 16: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18623,13 +14162,13 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 17: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -18656,11 +14195,11 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 18: + case 11: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } @@ -18680,7 +14219,7 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } } m.Paused = bool(v != 0) - case 19: + case 12: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) } @@ -18700,7 +14239,7 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } } m.Halted = bool(v != 0) - case 20: + case 13: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } @@ -18756,7 +14295,7 @@ func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *MongoDBStatus) Unmarshal(dAtA []byte) error { +func (m *MemcachedStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -18779,10 +14318,10 @@ func (m *MongoDBStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MongoDBStatus: wiretype end group for non-group") + return fmt.Errorf("proto: MemcachedStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MongoDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MemcachedStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -18892,7 +14431,7 @@ func (m *MongoDBStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQL) Unmarshal(dAtA []byte) error { +func (m *MongoDB) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -18915,10 +14454,10 @@ func (m *MySQL) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQL: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDB: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQL: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDB: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -19044,7 +14583,7 @@ func (m *MySQL) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { +func (m *MongoDBConfigNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -19067,17 +14606,17 @@ func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQLClusterTopology: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDBConfigNode: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQLClusterTopology: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDBConfigNode: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19087,28 +14626,28 @@ func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := MySQLClusterMode(dAtA[iNdEx:postIndex]) - m.Mode = &s + if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19135,10 +14674,10 @@ func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Group == nil { - m.Group = &MySQLGroupSpec{} + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - if err := m.Group.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -19166,7 +14705,7 @@ func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { +func (m *MongoDBList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -19189,17 +14728,17 @@ func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQLGroupSpec: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDBList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQLGroupSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDBList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19209,30 +14748,30 @@ func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := MySQLGroupMode(dAtA[iNdEx:postIndex]) - m.Mode = &s + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19242,44 +14781,26 @@ func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field BaseServerID", wireType) - } - var v int64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int64(b&0x7F) << shift - if b < 0x80 { - break - } + m.Items = append(m.Items, MongoDB{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.BaseServerID = &v + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -19304,7 +14825,7 @@ func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQLList) Unmarshal(dAtA []byte) error { +func (m *MongoDBMongosNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -19327,15 +14848,15 @@ func (m *MySQLList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQLList: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDBMongosNode: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQLList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDBMongosNode: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19362,13 +14883,13 @@ func (m *MySQLList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Strategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19395,8 +14916,7 @@ func (m *MySQLList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, MySQL{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -19424,7 +14944,7 @@ func (m *MySQLList) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQLSpec) Unmarshal(dAtA []byte) error { +func (m *MongoDBNode) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -19447,105 +14967,17 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQLSpec: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDBNode: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQLSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDBNode: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Version = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Topology", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Topology == nil { - m.Topology = &MySQLClusterTopology{} - } - if err := m.Topology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) - } - var stringLen uint64 + m.Replicas = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19555,29 +14987,16 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.Replicas |= int32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Prefix", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19587,31 +15006,27 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Prefix = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 6: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19638,16 +15053,16 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19674,18 +15089,68 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MongoDBReplicaSet) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MongoDBReplicaSet: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MongoDBReplicaSet: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19695,31 +15160,27 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.BackupSchedule == nil { - m.BackupSchedule = &BackupScheduleSpec{} - } - if err := m.BackupSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KeyFile", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19746,18 +15207,71 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} + if m.KeyFile == nil { + m.KeyFile = &v11.SecretVolumeSource{} } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.KeyFile.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - var msglen int + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MongoDBShardNode) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MongoDBShardNode: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MongoDBShardNode: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType) + } + m.Shards = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19767,31 +15281,14 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.Shards |= int32(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} - } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 11: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MongoDBNode", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19818,13 +15315,13 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.MongoDBNode.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 12: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19851,13 +15348,69 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} + } + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 13: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MongoDBShardingTopology) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MongoDBShardingTopology: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MongoDBShardingTopology: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -19884,15 +15437,15 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Shard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 14: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigServer", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19902,37 +15455,30 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Paused = bool(v != 0) - case 15: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + if msglen < 0 { + return ErrInvalidLengthGenerated } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated } - m.Halted = bool(v != 0) - case 16: + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ConfigServer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Mongos", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -19942,23 +15488,24 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + if err := m.Mongos.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -19984,7 +15531,7 @@ func (m *MySQLSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *MySQLStatus) Unmarshal(dAtA []byte) error { +func (m *MongoDBSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -20007,15 +15554,15 @@ func (m *MySQLStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MySQLStatus: wiretype end group for non-group") + return fmt.Errorf("proto: MongoDBSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MySQLStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MongoDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -20043,11 +15590,103 @@ func (m *MySQLStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ReplicaSet", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ReplicaSet == nil { + m.ReplicaSet = &MongoDBReplicaSet{} + } + if err := m.ReplicaSet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShardTopology", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ShardTopology == nil { + m.ShardTopology = &MongoDBShardingTopology{} + } + if err := m.ShardTopology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -20075,13 +15714,13 @@ func (m *MySQLStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Reason = string(dAtA[iNdEx:postIndex]) + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } - m.ObservedGeneration = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20091,67 +15730,67 @@ func (m *MySQLStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Origin) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Origin: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Origin: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PartialObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateSecret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20178,15 +15817,18 @@ func (m *Origin) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PartialObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.CertificateSecret == nil { + m.CertificateSecret = &v11.SecretVolumeSource{} + } + if err := m.CertificateSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClusterAuthMode", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20196,81 +15838,59 @@ func (m *Origin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ClusterAuthMode = ClusterAuthMode(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SSLMode", wireType) } - if skippy < 0 { - return ErrInvalidLengthGenerated + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } - if (iNdEx + skippy) < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *OriginSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: OriginSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: OriginSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + m.SSLMode = SSLMode(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Elasticsearch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20297,16 +15917,16 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Elasticsearch == nil { - m.Elasticsearch = &ElasticsearchSpec{} + if m.Init == nil { + m.Init = &InitSpec{} } - if err := m.Elasticsearch.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Postgres", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20333,16 +15953,16 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Postgres == nil { - m.Postgres = &PostgresSpec{} + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} } - if err := m.Postgres.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQL", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20369,16 +15989,16 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MySQL == nil { - m.MySQL = &MySQLSpec{} + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - if err := m.MySQL.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PerconaXtraDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20405,16 +16025,16 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PerconaXtraDB == nil { - m.PerconaXtraDB = &PerconaXtraDBSpec{} + if m.PodTemplate == nil { + m.PodTemplate = &v13.PodTemplateSpec{} } - if err := m.PerconaXtraDB.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MariaDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20441,16 +16061,13 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MariaDB == nil { - m.MariaDB = &MariaDBSpec{} - } - if err := m.MariaDB.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 17: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MongoDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20477,18 +16094,55 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.MongoDB == nil { - m.MongoDB = &MongoDBSpec{} - } - if err := m.MongoDB.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 20: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Redis", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20498,33 +16152,82 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Redis == nil { - m.Redis = &RedisSpec{} - } - if err := m.Redis.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 8: + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MongoDBStatus) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MongoDBStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MongoDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Memcached", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20534,33 +16237,29 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Memcached == nil { - m.Memcached = &MemcachedSpec{} - } - if err := m.Memcached.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Etcd", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20570,28 +16269,43 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.Etcd == nil { - m.Etcd = &EtcdSpec{} + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - if err := m.Etcd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + m.ObservedGeneration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ObservedGeneration |= int64(b&0x7F) << shift + if b < 0x80 { + break + } } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -20616,7 +16330,7 @@ func (m *OriginSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *PerconaXtraDB) Unmarshal(dAtA []byte) error { +func (m *MySQL) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -20639,10 +16353,10 @@ func (m *PerconaXtraDB) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PerconaXtraDB: wiretype end group for non-group") + return fmt.Errorf("proto: MySQL: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PerconaXtraDB: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MySQL: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -20768,7 +16482,7 @@ func (m *PerconaXtraDB) Unmarshal(dAtA []byte) error { } return nil } -func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { +func (m *MySQLClusterTopology) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -20791,17 +16505,17 @@ func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PerconaXtraDBList: wiretype end group for non-group") + return fmt.Errorf("proto: MySQLClusterTopology: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PerconaXtraDBList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MySQLClusterTopology: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -20811,28 +16525,28 @@ func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + s := MySQLClusterMode(dAtA[iNdEx:postIndex]) + m.Mode = &s iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Group", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -20859,8 +16573,10 @@ func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, PerconaXtraDB{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Group == nil { + m.Group = &MySQLGroupSpec{} + } + if err := m.Group.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -20888,7 +16604,7 @@ func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { } return nil } -func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { +func (m *MySQLGroupSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -20911,15 +16627,15 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PerconaXtraDBSpec: wiretype end group for non-group") + return fmt.Errorf("proto: MySQLGroupSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PerconaXtraDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MySQLGroupSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -20947,31 +16663,12 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + s := MySQLGroupMode(dAtA[iNdEx:postIndex]) + m.Mode = &s iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -20999,49 +16696,13 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BaseServerID", wireType) } - var msglen int + var v int64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21051,103 +16712,68 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} - } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.BaseServerID = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { return err } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MySQLList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - iNdEx = postIndex - case 8: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MySQLList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MySQLList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21174,16 +16800,13 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} - } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21210,48 +16833,69 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, MySQL{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - if msglen < 0 { + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MySQLSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - iNdEx = postIndex - case 11: + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MySQLSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MySQLSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21261,30 +16905,29 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: + case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } - var v int + var v int32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21294,17 +16937,17 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } } - m.Paused = bool(v != 0) - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + m.Replicas = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Topology", wireType) } - var v int + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21314,15 +16957,31 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Halted = bool(v != 0) - case 14: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Topology == nil { + m.Topology = &MySQLClusterTopology{} + } + if err := m.Topology.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -21350,66 +17009,49 @@ func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } - if skippy < 0 { + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PerconaXtraDBStatus) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PerconaXtraDBStatus: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PerconaXtraDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21419,29 +17061,33 @@ func (m *PerconaXtraDBStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21451,29 +17097,33 @@ func (m *PerconaXtraDBStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Reason = string(dAtA[iNdEx:postIndex]) + if m.Init == nil { + m.Init = &InitSpec{} + } + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } - m.ObservedGeneration = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21483,67 +17133,31 @@ func (m *PerconaXtraDBStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PgBouncer) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PgBouncer: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PgBouncer: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21570,13 +17184,16 @@ func (m *PgBouncer) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} + } + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21603,13 +17220,13 @@ func (m *PgBouncer) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21636,66 +17253,13 @@ func (m *PgBouncer) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PgBouncerList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PgBouncerList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PgBouncerList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21722,15 +17286,55 @@ func (m *PgBouncerList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21740,25 +17344,23 @@ func (m *PgBouncerList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, PgBouncer{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -21784,7 +17386,7 @@ func (m *PgBouncerList) Unmarshal(dAtA []byte) error { } return nil } -func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { +func (m *MySQLStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -21807,15 +17409,15 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PgBouncerSpec: wiretype end group for non-group") + return fmt.Errorf("proto: MySQLStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PgBouncerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MySQLStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -21843,33 +17445,13 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21879,30 +17461,29 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - var msglen int + m.ObservedGeneration = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -21912,28 +17493,67 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.ObservedGeneration |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PerconaXtraDB) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated } - iNdEx = postIndex - case 5: + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PerconaXtraDB: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PerconaXtraDB: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Databases", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21960,14 +17580,13 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Databases = append(m.Databases, Databases{}) - if err := m.Databases[len(m.Databases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionPool", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -21994,16 +17613,13 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConnectionPool == nil { - m.ConnectionPool = &ConnectionPoolConfig{} - } - if err := m.ConnectionPool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserListSecretRef", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22030,16 +17646,66 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.UserListSecretRef == nil { - m.UserListSecretRef = &v12.LocalObjectReference{} - } - if err := m.UserListSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PerconaXtraDBList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PerconaXtraDBList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PerconaXtraDBList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22066,16 +17732,13 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22102,33 +17765,11 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TLS == nil { - m.TLS = &TLSConfig{} - } - if err := m.TLS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, PerconaXtraDB{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Paused = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -22153,7 +17794,7 @@ func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { +func (m *PerconaXtraDBSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -22176,15 +17817,15 @@ func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PgBouncerStatus: wiretype end group for non-group") + return fmt.Errorf("proto: PerconaXtraDBSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PgBouncerStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PerconaXtraDBSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -22212,11 +17853,31 @@ func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -22244,13 +17905,13 @@ func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Reason = string(dAtA[iNdEx:postIndex]) + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } - m.ObservedGeneration = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -22260,67 +17921,31 @@ func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Postgres) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Postgres: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Postgres: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22347,13 +17972,16 @@ func (m *Postgres) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22380,13 +18008,16 @@ func (m *Postgres) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Init == nil { + m.Init = &InitSpec{} + } + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22413,66 +18044,52 @@ func (m *Postgres) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} + } + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } - if skippy < 0 { + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + msglen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PostgresArchiverSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PostgresArchiverSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PostgresArchiverSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22499,69 +18116,46 @@ func (m *PostgresArchiverSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v1.Backend{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } - if skippy < 0 { - return ErrInvalidLengthGenerated + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - if (iNdEx + skippy) < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PostgresList) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated } - if iNdEx >= l { + if postIndex > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PostgresList: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PostgresList: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22588,15 +18182,55 @@ func (m *PostgresList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -22606,25 +18240,23 @@ func (m *PostgresList) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Postgres{}) - if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -22650,7 +18282,7 @@ func (m *PostgresList) Unmarshal(dAtA []byte) error { } return nil } -func (m *PostgresSpec) Unmarshal(dAtA []byte) error { +func (m *PerconaXtraDBStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -22673,15 +18305,15 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PostgresSpec: wiretype end group for non-group") + return fmt.Errorf("proto: PerconaXtraDBStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PostgresSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PerconaXtraDBStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -22709,31 +18341,11 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v - case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StandbyMode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -22761,14 +18373,13 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := PostgresStandbyMode(dAtA[iNdEx:postIndex]) - m.StandbyMode = &s + m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StreamingMode", wireType) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - var stringLen uint64 + m.ObservedGeneration = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -22778,28 +18389,67 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.ObservedGeneration |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - s := PostgresStreamingMode(dAtA[iNdEx:postIndex]) - m.StreamingMode = &s - iNdEx = postIndex - case 5: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PgBouncer) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PgBouncer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PgBouncer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Archiver", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22826,16 +18476,13 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Archiver == nil { - m.Archiver = &PostgresArchiverSpec{} - } - if err := m.Archiver.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LeaderElection", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22862,16 +18509,13 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.LeaderElection == nil { - m.LeaderElection = &LeaderElectionConfig{} - } - if err := m.LeaderElection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22898,48 +18542,66 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.DatabaseSecret == nil { - m.DatabaseSecret = &v12.SecretVolumeSource{} - } - if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 9: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PgBouncerList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PgBouncerList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PgBouncerList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -22966,16 +18628,13 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} - } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 10: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23002,18 +18661,69 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Init == nil { - m.Init = &InitSpec{} - } - if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Items = append(m.Items, PgBouncer{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 11: + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PgBouncerSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PgBouncerSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PgBouncerSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupSchedule", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23023,33 +18733,29 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.BackupSchedule == nil { - m.BackupSchedule = &BackupScheduleSpec{} - } - if err := m.BackupSchedule.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 12: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } - var msglen int + var v int32 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23059,31 +18765,15 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int32(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} - } - if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 13: + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23110,14 +18800,11 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} - } - if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 14: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } @@ -23150,9 +18837,9 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 15: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Databases", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23179,13 +18866,14 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Databases = append(m.Databases, Databases{}) + if err := m.Databases[len(m.Databases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 16: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ReplicaServiceTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionPool", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23212,13 +18900,16 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ReplicaServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ConnectionPool == nil { + m.ConnectionPool = &ConnectionPoolConfig{} + } + if err := m.ConnectionPool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 17: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserListSecretRef", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23245,55 +18936,18 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.UserListSecretRef == nil { + m.UserListSecretRef = &v11.LocalObjectReference{} + } + if err := m.UserListSecretRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 18: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Paused = bool(v != 0) - case 19: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Halted = bool(v != 0) - case 20: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23303,82 +18957,33 @@ func (m *PostgresSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthGenerated - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PostgresStatus) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PostgresStatus: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PostgresStatus: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + iNdEx = postIndex + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TLS", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23388,61 +18993,33 @@ func (m *PostgresStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated + if m.TLS == nil { + m.TLS = &TLSConfig{} } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.TLS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 10: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } - m.ObservedGeneration = 0 + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23452,11 +19029,12 @@ func (m *PostgresStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } + m.Paused = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -23481,7 +19059,7 @@ func (m *PostgresStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { +func (m *PgBouncerStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -23504,15 +19082,15 @@ func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PostgresWALSourceSpec: wiretype end group for non-group") + return fmt.Errorf("proto: PgBouncerStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PostgresWALSourceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PgBouncerStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BackupName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -23540,13 +19118,13 @@ func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.BackupName = string(dAtA[iNdEx:postIndex]) + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PITR", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23556,33 +19134,29 @@ func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.PITR == nil { - m.PITR = &RecoveryTarget{} - } - if err := m.PITR.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - var msglen int + m.ObservedGeneration = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -23592,25 +19166,11 @@ func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + m.ObservedGeneration |= int64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -23635,7 +19195,7 @@ func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *ProxySQL) Unmarshal(dAtA []byte) error { +func (m *Postgres) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -23658,10 +19218,10 @@ func (m *ProxySQL) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ProxySQL: wiretype end group for non-group") + return fmt.Errorf("proto: Postgres: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ProxySQL: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Postgres: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -23787,7 +19347,7 @@ func (m *ProxySQL) Unmarshal(dAtA []byte) error { } return nil } -func (m *ProxySQLBackendSpec) Unmarshal(dAtA []byte) error { +func (m *PostgresArchiverSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -23810,15 +19370,15 @@ func (m *ProxySQLBackendSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ProxySQLBackendSpec: wiretype end group for non-group") + return fmt.Errorf("proto: PostgresArchiverSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ProxySQLBackendSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PostgresArchiverSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 7: + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -23845,33 +19405,13 @@ func (m *ProxySQLBackendSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Ref == nil { - m.Ref = &v12.TypedLocalObjectReference{} + if m.Storage == nil { + m.Storage = &v15.Backend{} } - if err := m.Ref.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) - } - var v int32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Replicas = &v default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -23896,7 +19436,7 @@ func (m *ProxySQLBackendSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *ProxySQLList) Unmarshal(dAtA []byte) error { +func (m *PostgresList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -23919,10 +19459,10 @@ func (m *ProxySQLList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ProxySQLList: wiretype end group for non-group") + return fmt.Errorf("proto: PostgresList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ProxySQLList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PostgresList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -23987,7 +19527,7 @@ func (m *ProxySQLList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, ProxySQL{}) + m.Items = append(m.Items, Postgres{}) if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -24016,7 +19556,7 @@ func (m *ProxySQLList) Unmarshal(dAtA []byte) error { } return nil } -func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { +func (m *PostgresSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24029,27 +19569,181 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { if iNdEx >= l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PostgresSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PostgresSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StandbyMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := PostgresStandbyMode(dAtA[iNdEx:postIndex]) + m.StandbyMode = &s + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StreamingMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := PostgresStreamingMode(dAtA[iNdEx:postIndex]) + m.StreamingMode = &s + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Archiver", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Archiver == nil { + m.Archiver = &PostgresArchiverSpec{} } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ProxySQLSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ProxySQLSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + if err := m.Archiver.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LeaderElection", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -24059,29 +19753,33 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Version = string(dAtA[iNdEx:postIndex]) + if m.LeaderElection == nil { + m.LeaderElection = &LeaderElectionConfig{} + } + if err := m.LeaderElection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSecret", wireType) } - var v int32 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -24091,15 +19789,31 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Replicas = &v - case 3: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DatabaseSecret == nil { + m.DatabaseSecret = &v11.SecretVolumeSource{} + } + if err := m.DatabaseSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -24127,12 +19841,11 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := LoadBalanceMode(dAtA[iNdEx:postIndex]) - m.Mode = &s + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -24159,16 +19872,16 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Backend == nil { - m.Backend = &ProxySQLBackendSpec{} + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} } - if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProxySQLSecret", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Init", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -24195,14 +19908,14 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ProxySQLSecret == nil { - m.ProxySQLSecret = &v12.SecretVolumeSource{} + if m.Init == nil { + m.Init = &InitSpec{} } - if err := m.ProxySQLSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Init.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 6: + case 12: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } @@ -24232,13 +19945,13 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} + m.Monitor = &v12.AgentSpec{} } if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 13: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } @@ -24268,13 +19981,13 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} + m.ConfigSource = &v11.VolumeSource{} } if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 14: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } @@ -24307,7 +20020,7 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 9: + case 15: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } @@ -24340,7 +20053,40 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 10: + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReplicaServiceTemplate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ReplicaServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } @@ -24373,7 +20119,7 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 11: + case 18: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } @@ -24393,6 +20139,58 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { } } m.Paused = bool(v != 0) + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -24417,7 +20215,7 @@ func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *ProxySQLStatus) Unmarshal(dAtA []byte) error { +func (m *PostgresStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24440,10 +20238,10 @@ func (m *ProxySQLStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ProxySQLStatus: wiretype end group for non-group") + return fmt.Errorf("proto: PostgresStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ProxySQLStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PostgresStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -24553,7 +20351,7 @@ func (m *ProxySQLStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { +func (m *PostgresWALSourceSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24576,15 +20374,15 @@ func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RecoveryTarget: wiretype end group for non-group") + return fmt.Errorf("proto: PostgresWALSourceSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RecoveryTarget: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PostgresWALSourceSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BackupName", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -24612,13 +20410,13 @@ func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TargetTime = string(dAtA[iNdEx:postIndex]) + m.BackupName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetTimeline", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PITR", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -24628,29 +20426,33 @@ func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.TargetTimeline = string(dAtA[iNdEx:postIndex]) + if m.PITR == nil { + m.PITR = &RecoveryTarget{} + } + if err := m.PITR.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetXID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -24660,45 +20462,25 @@ func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.TargetXID = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetInclusive", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - b := bool(v != 0) - m.TargetInclusive = &b + if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -24723,7 +20505,7 @@ func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { } return nil } -func (m *Redis) Unmarshal(dAtA []byte) error { +func (m *ProxySQL) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24746,10 +20528,10 @@ func (m *Redis) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Redis: wiretype end group for non-group") + return fmt.Errorf("proto: ProxySQL: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Redis: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ProxySQL: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -24875,7 +20657,7 @@ func (m *Redis) Unmarshal(dAtA []byte) error { } return nil } -func (m *RedisClusterSpec) Unmarshal(dAtA []byte) error { +func (m *ProxySQLBackendSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24898,17 +20680,17 @@ func (m *RedisClusterSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RedisClusterSpec: wiretype end group for non-group") + return fmt.Errorf("proto: ProxySQLBackendSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RedisClusterSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ProxySQLBackendSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType) } - var v int32 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -24918,13 +20700,29 @@ func (m *RedisClusterSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - m.Master = &v - case 2: + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Ref == nil { + m.Ref = &v11.TypedLocalObjectReference{} + } + if err := m.Ref.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) } @@ -24968,7 +20766,7 @@ func (m *RedisClusterSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *RedisList) Unmarshal(dAtA []byte) error { +func (m *ProxySQLList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -24991,10 +20789,10 @@ func (m *RedisList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RedisList: wiretype end group for non-group") + return fmt.Errorf("proto: ProxySQLList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RedisList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ProxySQLList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25059,7 +20857,7 @@ func (m *RedisList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Redis{}) + m.Items = append(m.Items, ProxySQL{}) if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -25088,7 +20886,7 @@ func (m *RedisList) Unmarshal(dAtA []byte) error { } return nil } -func (m *RedisSpec) Unmarshal(dAtA []byte) error { +func (m *ProxySQLSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25111,10 +20909,10 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RedisSpec: wiretype end group for non-group") + return fmt.Errorf("proto: ProxySQLSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RedisSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ProxySQLSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25199,11 +20997,12 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Mode = RedisMode(dAtA[iNdEx:postIndex]) + s := LoadBalanceMode(dAtA[iNdEx:postIndex]) + m.Mode = &s iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -25230,48 +21029,16 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Cluster == nil { - m.Cluster = &RedisClusterSpec{} + if m.Backend == nil { + m.Backend = &ProxySQLBackendSpec{} } - if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.StorageType = StorageType(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProxySQLSecret", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -25298,14 +21065,14 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Storage == nil { - m.Storage = &v12.PersistentVolumeClaimSpec{} + if m.ProxySQLSecret == nil { + m.ProxySQLSecret = &v11.SecretVolumeSource{} } - if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ProxySQLSecret.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 7: + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } @@ -25335,13 +21102,13 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.Monitor == nil { - m.Monitor = &v14.AgentSpec{} + m.Monitor = &v12.AgentSpec{} } if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 8: + case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } @@ -25371,13 +21138,13 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.ConfigSource == nil { - m.ConfigSource = &v12.VolumeSource{} + m.ConfigSource = &v11.VolumeSource{} } if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 9: + case 8: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } @@ -25410,7 +21177,7 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 10: + case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } @@ -25443,7 +21210,7 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 11: + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } @@ -25476,7 +21243,7 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 12: + case 11: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) } @@ -25496,58 +21263,6 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { } } m.Paused = bool(v != 0) - case 13: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Halted = bool(v != 0) - case 14: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -25572,7 +21287,7 @@ func (m *RedisSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *RedisStatus) Unmarshal(dAtA []byte) error { +func (m *ProxySQLStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25595,10 +21310,10 @@ func (m *RedisStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: RedisStatus: wiretype end group for non-group") + return fmt.Errorf("proto: ProxySQLStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: RedisStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ProxySQLStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25708,7 +21423,7 @@ func (m *RedisStatus) Unmarshal(dAtA []byte) error { } return nil } -func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { +func (m *RecoveryTarget) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25731,15 +21446,15 @@ func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ScriptSourceSpec: wiretype end group for non-group") + return fmt.Errorf("proto: RecoveryTarget: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ScriptSourceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RecoveryTarget: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ScriptPath", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TargetTime", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -25767,13 +21482,77 @@ func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ScriptPath = string(dAtA[iNdEx:postIndex]) + m.TargetTime = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TargetTimeline", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetTimeline = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetXID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TargetXID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TargetInclusive", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -25783,25 +21562,13 @@ func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLengthGenerated - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenerated - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.VolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + b := bool(v != 0) + m.TargetInclusive = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -25826,7 +21593,7 @@ func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *Snapshot) Unmarshal(dAtA []byte) error { +func (m *Redis) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -25849,10 +21616,10 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Snapshot: wiretype end group for non-group") + return fmt.Errorf("proto: Redis: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Snapshot: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Redis: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -25978,7 +21745,100 @@ func (m *Snapshot) Unmarshal(dAtA []byte) error { } return nil } -func (m *SnapshotList) Unmarshal(dAtA []byte) error { +func (m *RedisClusterSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: RedisClusterSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RedisClusterSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Master", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Master = &v + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RedisList) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26001,10 +21861,10 @@ func (m *SnapshotList) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SnapshotList: wiretype end group for non-group") + return fmt.Errorf("proto: RedisList: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotList: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RedisList: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -26069,7 +21929,7 @@ func (m *SnapshotList) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Items = append(m.Items, Snapshot{}) + m.Items = append(m.Items, Redis{}) if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } @@ -26098,7 +21958,7 @@ func (m *SnapshotList) Unmarshal(dAtA []byte) error { } return nil } -func (m *SnapshotSourceSpec) Unmarshal(dAtA []byte) error { +func (m *RedisSpec) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26121,15 +21981,15 @@ func (m *SnapshotSourceSpec) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SnapshotSourceSpec: wiretype end group for non-group") + return fmt.Errorf("proto: RedisSpec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotSourceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RedisSpec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -26157,11 +22017,31 @@ func (m *SnapshotSourceSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Namespace = string(dAtA[iNdEx:postIndex]) + m.Version = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Replicas", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Replicas = &v + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -26189,13 +22069,13 @@ func (m *SnapshotSourceSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.Mode = RedisMode(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26205,82 +22085,101 @@ func (m *SnapshotSourceSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Args = append(m.Args, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenerated(dAtA[iNdEx:]) - if err != nil { + if m.Cluster == nil { + m.Cluster = &RedisClusterSpec{} + } + if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - if skippy < 0 { + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) < 0 { + postIndex := iNdEx + intStringLen + if postIndex < 0 { return ErrInvalidLengthGenerated } - if (iNdEx + skippy) > l { + if postIndex > l { return io.ErrUnexpectedEOF } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated + m.StorageType = StorageType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Storage", wireType) } - if iNdEx >= l { - return io.ErrUnexpectedEOF + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break + if msglen < 0 { + return ErrInvalidLengthGenerated } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: SnapshotSpec: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotSpec: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Storage == nil { + m.Storage = &v11.PersistentVolumeClaimSpec{} + } + if err := m.Storage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Monitor", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26290,27 +22189,31 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.DatabaseName = string(dAtA[iNdEx:postIndex]) + if m.Monitor == nil { + m.Monitor = &v12.AgentSpec{} + } + if err := m.Monitor.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 2: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Backend", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConfigSource", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -26337,15 +22240,18 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Backend.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.ConfigSource == nil { + m.ConfigSource = &v11.VolumeSource{} + } + if err := m.ConfigSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StorageType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26355,28 +22261,28 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - s := StorageType(dAtA[iNdEx:postIndex]) - m.StorageType = &s + if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 4: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodTemplate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServiceTemplate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -26403,13 +22309,13 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.PodTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServiceTemplate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PodVolumeClaimSpec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -26436,13 +22342,82 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.PodVolumeClaimSpec == nil { - m.PodVolumeClaimSpec = &v12.PersistentVolumeClaimSpec{} - } - if err := m.PodVolumeClaimSpec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UpdateStrategy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Paused = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Halted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Halted = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TerminationPolicy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TerminationPolicy = TerminationPolicy(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -26467,7 +22442,7 @@ func (m *SnapshotSpec) Unmarshal(dAtA []byte) error { } return nil } -func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { +func (m *RedisStatus) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -26490,17 +22465,17 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SnapshotStatus: wiretype end group for non-group") + return fmt.Errorf("proto: RedisStatus: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SnapshotStatus: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: RedisStatus: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26510,33 +22485,29 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.StartTime == nil { - m.StartTime = &v13.Time{} - } - if err := m.StartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Phase = DatabasePhase(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CompletionTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26546,33 +22517,29 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - if m.CompletionTime == nil { - m.CompletionTime = &v13.Time{} - } - if err := m.CompletionTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Reason = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Phase", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) } - var stringLen uint64 + m.ObservedGeneration = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26582,27 +22549,67 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.ObservedGeneration |= int64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen - if postIndex < 0 { + if (iNdEx + skippy) < 0 { return ErrInvalidLengthGenerated } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - m.Phase = SnapshotPhase(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ScriptSourceSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ScriptSourceSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ScriptSourceSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ScriptPath", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -26630,13 +22637,13 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Reason = string(dAtA[iNdEx:postIndex]) + m.ScriptPath = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ObservedGeneration", wireType) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VolumeSource", wireType) } - m.ObservedGeneration = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -26646,11 +22653,25 @@ func (m *SnapshotStatus) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ObservedGeneration |= int64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.VolumeSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -26734,7 +22755,7 @@ func (m *TLSConfig) Unmarshal(dAtA []byte) error { return io.ErrUnexpectedEOF } if m.IssuerRef == nil { - m.IssuerRef = &v12.TypedLocalObjectReference{} + m.IssuerRef = &v11.TypedLocalObjectReference{} } if err := m.IssuerRef.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err diff --git a/apis/kubedb/v1alpha1/generated.proto b/apis/kubedb/v1alpha1/generated.proto index dfe40aa72f..5301a2958e 100644 --- a/apis/kubedb/v1alpha1/generated.proto +++ b/apis/kubedb/v1alpha1/generated.proto @@ -35,29 +35,6 @@ import "kmodules.xyz/offshoot-api/api/v1/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; -message BackupScheduleSpec { - optional string cronExpression = 1; - - // Snapshot Spec - optional kmodules.xyz.objectstore_api.api.v1.Backend backend = 2; - - // StorageType can be durable or ephemeral. - // If not given, database storage type will be used. - // +optional - optional string storageType = 3; - - // PodTemplate is an optional configuration for pods used to take database snapshots - // +optional - optional kmodules.xyz.offshoot_api.api.v1.PodTemplateSpec podTemplate = 4; - - // PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. - // If not given, database's PvcSpec will be used. - // If storageType is durable, then a PVC will be created using this PVCSpec. - // If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage]. - // +optional - optional k8s.io.api.core.v1.PersistentVolumeClaimSpec podVolumeClaimSpec = 5; -} - message CertificateSpec { // Organization is the organization to be used on the Certificate // +optional @@ -163,51 +140,6 @@ message Databases { optional k8s.io.api.core.v1.LocalObjectReference databaseSecretRef = 4; } -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=dormantdatabases,singular=dormantdatabase,shortName=drmn,categories={datastore,kubedb,appscode,all} -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" -// Deprecated -message DormantDatabase { - optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; - - optional DormantDatabaseSpec spec = 2; - - optional DormantDatabaseStatus status = 3; -} - -message DormantDatabaseList { - optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; - - // Items is a list of DormantDatabase CRD objects - repeated DormantDatabase items = 2; -} - -message DormantDatabaseSpec { - // If true, invoke wipe out operation - // +optional - optional bool wipeOut = 1; - - // Origin to store original database information - optional Origin origin = 2; -} - -message DormantDatabaseStatus { - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time pausingTime = 1; - - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time wipeOutTime = 2; - - optional string phase = 3; - - optional string reason = 4; - - // observedGeneration is the most recent generation observed for this resource. It corresponds to the - // resource's generation, which is updated on mutation by the API Server. - // +optional - optional int64 observedGeneration = 5; -} - // +kubebuilder:object:root=true // +kubebuilder:resource:path=elasticsearches,singular=elasticsearch,shortName=es,categories={datastore,kubedb,appscode,all} // +kubebuilder:subresource:status @@ -294,10 +226,6 @@ message ElasticsearchSpec { // +optional optional InitSpec init = 11; - // BackupSchedule spec to specify how database backup will be taken - // +optional - optional BackupScheduleSpec backupSchedule = 12; - // Monitor is used monitor database instance // +optional optional kmodules.xyz.monitoring_agent_api.api.v1.AgentSpec monitor = 13; @@ -391,10 +319,6 @@ message EtcdSpec { // +optional optional InitSpec init = 6; - // BackupSchedule spec to specify how database backup will be taken - // +optional - optional BackupScheduleSpec backupSchedule = 7; - // Monitor is used monitor database instance // +optional optional kmodules.xyz.monitoring_agent_api.api.v1.AgentSpec monitor = 8; @@ -442,9 +366,6 @@ message EtcdStatus { message InitSpec { optional ScriptSourceSpec scriptSource = 1; - // Deprecated - optional SnapshotSourceSpec snapshotSource = 2; - optional PostgresWALSourceSpec postgresWAL = 3; // Name of stash restoreSession in same namespace of kubedb object. @@ -765,10 +686,6 @@ message MongoDBSpec { // +optional optional InitSpec init = 11; - // BackupSchedule spec to specify how database backup will be taken - // +optional - optional BackupScheduleSpec backupSchedule = 12; - // Monitor is used monitor database instance // +optional optional kmodules.xyz.monitoring_agent_api.api.v1.AgentSpec monitor = 13; @@ -888,10 +805,6 @@ message MySQLSpec { // +optional optional InitSpec init = 7; - // BackupSchedule spec to specify how database backup will be taken - // +optional - optional BackupScheduleSpec backupSchedule = 8; - // Monitor is used monitor database instance // +optional optional kmodules.xyz.monitoring_agent_api.api.v1.AgentSpec monitor = 9; @@ -937,51 +850,6 @@ message MySQLStatus { optional int64 observedGeneration = 3; } -message Origin { - optional kmodules.xyz.offshoot_api.api.v1.PartialObjectMeta metadata = 1; - - // Origin Spec to store original database Spec - optional OriginSpec spec = 2; -} - -message OriginSpec { - // Elasticsearch Spec - // +optional - optional ElasticsearchSpec elasticsearch = 1; - - // Postgres Spec - // +optional - optional PostgresSpec postgres = 2; - - // MySQL Spec - // +optional - optional MySQLSpec mysql = 3; - - // PerconaXtraDB Spec - // +optional - optional PerconaXtraDBSpec perconaxtradb = 4; - - // MariaDB Spec - // +optional - optional MariaDBSpec mariadb = 5; - - // MongoDB Spec - // +optional - optional MongoDBSpec mongodb = 6; - - // Redis Spec - // +optional - optional RedisSpec redis = 7; - - // Memcached Spec - // +optional - optional MemcachedSpec memcached = 8; - - // Etcd Spec - // +optional - optional EtcdSpec etcd = 9; -} - // +kubebuilder:object:root=true // +kubebuilder:resource:path=perconaxtradbs,singular=perconaxtradb,shortName=px,categories={datastore,kubedb,appscode,all} // +kubebuilder:subresource:status @@ -1204,10 +1072,6 @@ message PostgresSpec { // +optional optional InitSpec init = 10; - // BackupSchedule spec to specify how database backup will be taken - // +optional - optional BackupScheduleSpec backupSchedule = 11; - // Monitor is used monitor database instance // +optional optional kmodules.xyz.monitoring_agent_api.api.v1.AgentSpec monitor = 12; @@ -1466,76 +1330,6 @@ message ScriptSourceSpec { optional k8s.io.api.core.v1.VolumeSource volumeSource = 2; } -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=snapshots,singular=snapshot,shortName=snap,categories={datastore,kubedb,appscode,all} -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="DatabaseName",type="string",JSONPath=".spec.databaseName" -// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" -// Deprecated -message Snapshot { - optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; - - optional SnapshotSpec spec = 2; - - optional SnapshotStatus status = 3; -} - -message SnapshotList { - optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; - - // Items is a list of Snapshot CRD objects - repeated Snapshot items = 2; -} - -message SnapshotSourceSpec { - optional string namespace = 1; - - optional string name = 2; - - // Arguments to the restore job - repeated string args = 3; -} - -message SnapshotSpec { - // Database name - optional string databaseName = 1; - - // Snapshot Spec - optional kmodules.xyz.objectstore_api.api.v1.Backend backend = 2; - - // StorageType can be durable or ephemeral. - // If not given, database storage type will be used. - // +optional - optional string storageType = 3; - - // PodTemplate is an optional configuration for pods used to take database snapshots - // +optional - optional kmodules.xyz.offshoot_api.api.v1.PodTemplateSpec podTemplate = 4; - - // PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. - // If not given, database's PvcSpec will be used. - // If storageType is durable, then a PVC will be created using this PVCSpec. - // If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage]. - // +optional - optional k8s.io.api.core.v1.PersistentVolumeClaimSpec podVolumeClaimSpec = 5; -} - -message SnapshotStatus { - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 1; - - optional k8s.io.apimachinery.pkg.apis.meta.v1.Time completionTime = 2; - - optional string phase = 3; - - optional string reason = 4; - - // observedGeneration is the most recent generation observed for this resource. It corresponds to the - // resource's generation, which is updated on mutation by the API Server. - // +optional - optional int64 observedGeneration = 5; -} - message TLSConfig { // IssuerRef is a reference to a Certificate Issuer. optional k8s.io.api.core.v1.TypedLocalObjectReference issuerRef = 1; diff --git a/apis/kubedb/v1alpha1/helpers.go b/apis/kubedb/v1alpha1/helpers.go deleted file mode 100644 index a37e8e0637..0000000000 --- a/apis/kubedb/v1alpha1/helpers.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -func (e *BackupScheduleSpec) SetDefaults() { - if e == nil { - return - } - // Add BackupScheduleSpec defaulting here -} diff --git a/apis/kubedb/v1alpha1/mongodb_helpers.go b/apis/kubedb/v1alpha1/mongodb_helpers.go index 166170838e..27623314d7 100644 --- a/apis/kubedb/v1alpha1/mongodb_helpers.go +++ b/apis/kubedb/v1alpha1/mongodb_helpers.go @@ -179,11 +179,6 @@ func (m MongoDB) GvrSvcName(name string) string { return name + "-gvr" } -// Snapshot service account name. -func (m MongoDB) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", m.OffshootName()) -} - // HostAddress returns serviceName for standalone mongodb. // and, for replica set = /,, // Here, host1 = . @@ -327,9 +322,6 @@ func (m *MongoDBSpec) SetDefaults(mgVersion *v1alpha1.MongoDBVersion) { return } - // perform defaulting - m.BackupSchedule.SetDefaults() - if m.StorageType == "" { m.StorageType = StorageTypeDurable } diff --git a/apis/kubedb/v1alpha1/mongodb_types.go b/apis/kubedb/v1alpha1/mongodb_types.go index ced101147d..93634201dc 100644 --- a/apis/kubedb/v1alpha1/mongodb_types.go +++ b/apis/kubedb/v1alpha1/mongodb_types.go @@ -87,10 +87,6 @@ type MongoDBSpec struct { // +optional Init *InitSpec `json:"init,omitempty" protobuf:"bytes,11,opt,name=init"` - // BackupSchedule spec to specify how database backup will be taken - // +optional - BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty" protobuf:"bytes,12,opt,name=backupSchedule"` - // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty" protobuf:"bytes,13,opt,name=monitor"` diff --git a/apis/kubedb/v1alpha1/mysql_helpers.go b/apis/kubedb/v1alpha1/mysql_helpers.go index 2265cc97e8..230ff17585 100644 --- a/apis/kubedb/v1alpha1/mysql_helpers.go +++ b/apis/kubedb/v1alpha1/mysql_helpers.go @@ -83,11 +83,6 @@ func (m MySQL) GoverningServiceName() string { return m.OffshootName() + "-gvr" } -// Snapshot service account name. -func (m MySQL) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", m.OffshootName()) -} - func (m MySQL) PeerName(idx int) string { return fmt.Sprintf("%s-%d.%s.%s", m.OffshootName(), idx, m.GoverningServiceName(), m.Namespace) } @@ -169,9 +164,6 @@ func (m *MySQLSpec) SetDefaults() { return } - // perform defaulting - m.BackupSchedule.SetDefaults() - if m.StorageType == "" { m.StorageType = StorageTypeDurable } diff --git a/apis/kubedb/v1alpha1/mysql_types.go b/apis/kubedb/v1alpha1/mysql_types.go index 6879571494..50b99229f3 100644 --- a/apis/kubedb/v1alpha1/mysql_types.go +++ b/apis/kubedb/v1alpha1/mysql_types.go @@ -88,10 +88,6 @@ type MySQLSpec struct { // +optional Init *InitSpec `json:"init,omitempty" protobuf:"bytes,7,opt,name=init"` - // BackupSchedule spec to specify how database backup will be taken - // +optional - BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty" protobuf:"bytes,8,opt,name=backupSchedule"` - // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty" protobuf:"bytes,9,opt,name=monitor"` diff --git a/apis/kubedb/v1alpha1/openapi_generated.go b/apis/kubedb/v1alpha1/openapi_generated.go index 5b5ed287c5..a6faa711c3 100644 --- a/apis/kubedb/v1alpha1/openapi_generated.go +++ b/apis/kubedb/v1alpha1/openapi_generated.go @@ -368,14 +368,9 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kmodules.xyz/offshoot-api/api/v1.ServicePort": schema_kmodulesxyz_offshoot_api_api_v1_ServicePort(ref), "kmodules.xyz/offshoot-api/api/v1.ServiceSpec": schema_kmodulesxyz_offshoot_api_api_v1_ServiceSpec(ref), "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec": schema_kmodulesxyz_offshoot_api_api_v1_ServiceTemplateSpec(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec": schema_apimachinery_apis_kubedb_v1alpha1_BackupScheduleSpec(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.CertificateSpec": schema_apimachinery_apis_kubedb_v1alpha1_CertificateSpec(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ConnectionPoolConfig": schema_apimachinery_apis_kubedb_v1alpha1_ConnectionPoolConfig(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Databases": schema_apimachinery_apis_kubedb_v1alpha1_Databases(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabase": schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabase(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseList": schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseList(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseSpec": schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseSpec(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseStatus": schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseStatus(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Elasticsearch": schema_apimachinery_apis_kubedb_v1alpha1_Elasticsearch(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchClusterTopology": schema_apimachinery_apis_kubedb_v1alpha1_ElasticsearchClusterTopology(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchList": schema_apimachinery_apis_kubedb_v1alpha1_ElasticsearchList(ref), @@ -413,8 +408,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLList": schema_apimachinery_apis_kubedb_v1alpha1_MySQLList(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLSpec": schema_apimachinery_apis_kubedb_v1alpha1_MySQLSpec(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLStatus": schema_apimachinery_apis_kubedb_v1alpha1_MySQLStatus(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Origin": schema_apimachinery_apis_kubedb_v1alpha1_Origin(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.OriginSpec": schema_apimachinery_apis_kubedb_v1alpha1_OriginSpec(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDB": schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDB(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBList": schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDBList(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec": schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDBSpec(ref), @@ -441,11 +434,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.RedisSpec": schema_apimachinery_apis_kubedb_v1alpha1_RedisSpec(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.RedisStatus": schema_apimachinery_apis_kubedb_v1alpha1_RedisStatus(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ScriptSourceSpec": schema_apimachinery_apis_kubedb_v1alpha1_ScriptSourceSpec(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Snapshot": schema_apimachinery_apis_kubedb_v1alpha1_Snapshot(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotList": schema_apimachinery_apis_kubedb_v1alpha1_SnapshotList(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSourceSpec": schema_apimachinery_apis_kubedb_v1alpha1_SnapshotSourceSpec(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSpec": schema_apimachinery_apis_kubedb_v1alpha1_SnapshotSpec(ref), - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotStatus": schema_apimachinery_apis_kubedb_v1alpha1_SnapshotStatus(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.TLSConfig": schema_apimachinery_apis_kubedb_v1alpha1_TLSConfig(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.TLSPolicy": schema_apimachinery_apis_kubedb_v1alpha1_TLSPolicy(ref), "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.elasticsearchApp": schema_apimachinery_apis_kubedb_v1alpha1_elasticsearchApp(ref), @@ -17485,86 +17473,6 @@ func schema_kmodulesxyz_offshoot_api_api_v1_ServiceTemplateSpec(ref common.Refer } } -func schema_apimachinery_apis_kubedb_v1alpha1_BackupScheduleSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "cronExpression": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "storageSecretName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "local": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.LocalSpec"), - }, - }, - "s3": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.S3Spec"), - }, - }, - "gcs": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.GCSSpec"), - }, - }, - "azure": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.AzureSpec"), - }, - }, - "swift": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.SwiftSpec"), - }, - }, - "b2": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.B2Spec"), - }, - }, - "rest": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.RestServerSpec"), - }, - }, - "storageType": { - SchemaProps: spec.SchemaProps{ - Description: "StorageType can be durable or ephemeral. If not given, database storage type will be used.", - Type: []string{"string"}, - Format: "", - }, - }, - "podTemplate": { - SchemaProps: spec.SchemaProps{ - Description: "PodTemplate is an optional configuration for pods used to take database snapshots", - Ref: ref("kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec"), - }, - }, - "podVolumeClaimSpec": { - SchemaProps: spec.SchemaProps{ - Description: "PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. If not given, database's PvcSpec will be used. If storageType is durable, then a PVC will be created using this PVCSpec. If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage].", - Ref: ref("k8s.io/api/core/v1.PersistentVolumeClaimSpec"), - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "kmodules.xyz/objectstore-api/api/v1.AzureSpec", "kmodules.xyz/objectstore-api/api/v1.B2Spec", "kmodules.xyz/objectstore-api/api/v1.GCSSpec", "kmodules.xyz/objectstore-api/api/v1.LocalSpec", "kmodules.xyz/objectstore-api/api/v1.RestServerSpec", "kmodules.xyz/objectstore-api/api/v1.S3Spec", "kmodules.xyz/objectstore-api/api/v1.SwiftSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec"}, - } -} - func schema_apimachinery_apis_kubedb_v1alpha1_CertificateSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -17805,167 +17713,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_Databases(ref common.ReferenceCall } } -func schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabase(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "Deprecated", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), - }, - }, - "spec": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseSpec"), - }, - }, - "status": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseStatus"), - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabaseStatus"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseList(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"), - }, - }, - "items": { - SchemaProps: spec.SchemaProps{ - Description: "Items is a list of DormantDatabase CRD objects", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabase"), - }, - }, - }, - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.DormantDatabase"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "wipeOut": { - SchemaProps: spec.SchemaProps{ - Description: "If true, invoke wipe out operation", - Type: []string{"boolean"}, - Format: "", - }, - }, - "origin": { - SchemaProps: spec.SchemaProps{ - Description: "Origin to store original database information", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Origin"), - }, - }, - }, - Required: []string{"origin"}, - }, - }, - Dependencies: []string{ - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Origin"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_DormantDatabaseStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "pausingTime": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), - }, - }, - "wipeOutTime": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), - }, - }, - "phase": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "reason": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "observedGeneration": { - SchemaProps: spec.SchemaProps{ - Description: "observedGeneration is the most recent generation observed for this resource. It corresponds to the resource's generation, which is updated on mutation by the API Server.", - Type: []string{"integer"}, - Format: "int64", - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.Time"}, - } -} - func schema_apimachinery_apis_kubedb_v1alpha1_Elasticsearch(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -18208,12 +17955,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_ElasticsearchSpec(ref common.Refer Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"), }, }, - "backupSchedule": { - SchemaProps: spec.SchemaProps{ - Description: "BackupSchedule spec to specify how database backup will be taken", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec"), - }, - }, "monitor": { SchemaProps: spec.SchemaProps{ Description: "Monitor is used monitor database instance", @@ -18276,7 +18017,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_ElasticsearchSpec(ref common.Refer }, }, Dependencies: []string{ - "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "k8s.io/apimachinery/pkg/util/intstr.IntOrString", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchClusterTopology", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"}, + "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "k8s.io/apimachinery/pkg/util/intstr.IntOrString", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchClusterTopology", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"}, } } @@ -18445,12 +18186,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_EtcdSpec(ref common.ReferenceCallb Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"), }, }, - "backupSchedule": { - SchemaProps: spec.SchemaProps{ - Description: "BackupSchedule spec to specify how database backup will be taken", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec"), - }, - }, "monitor": { SchemaProps: spec.SchemaProps{ Description: "Monitor is used monitor database instance", @@ -18507,7 +18242,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_EtcdSpec(ref common.ReferenceCallb }, }, Dependencies: []string{ - "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.TLSPolicy"}, + "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.TLSPolicy"}, } } @@ -18553,12 +18288,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_InitSpec(ref common.ReferenceCallb Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ScriptSourceSpec"), }, }, - "snapshotSource": { - SchemaProps: spec.SchemaProps{ - Description: "Deprecated", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSourceSpec"), - }, - }, "postgresWAL": { SchemaProps: spec.SchemaProps{ Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresWALSourceSpec"), @@ -18574,7 +18303,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_InitSpec(ref common.ReferenceCallb }, }, Dependencies: []string{ - "k8s.io/api/core/v1.LocalObjectReference", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresWALSourceSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ScriptSourceSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSourceSpec"}, + "k8s.io/api/core/v1.LocalObjectReference", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresWALSourceSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ScriptSourceSpec"}, } } @@ -19480,12 +19209,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_MongoDBSpec(ref common.ReferenceCa Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"), }, }, - "backupSchedule": { - SchemaProps: spec.SchemaProps{ - Description: "BackupSchedule spec to specify how database backup will be taken", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec"), - }, - }, "monitor": { SchemaProps: spec.SchemaProps{ Description: "Monitor is used monitor database instance", @@ -19542,7 +19265,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_MongoDBSpec(ref common.ReferenceCa }, }, Dependencies: []string{ - "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBReplicaSet", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBShardingTopology"}, + "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBReplicaSet", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBShardingTopology"}, } } @@ -19777,12 +19500,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_MySQLSpec(ref common.ReferenceCall Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"), }, }, - "backupSchedule": { - SchemaProps: spec.SchemaProps{ - Description: "BackupSchedule spec to specify how database backup will be taken", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec"), - }, - }, "monitor": { SchemaProps: spec.SchemaProps{ Description: "Monitor is used monitor database instance", @@ -19839,7 +19556,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_MySQLSpec(ref common.ReferenceCall }, }, Dependencies: []string{ - "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLClusterTopology"}, + "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLClusterTopology"}, } } @@ -19874,150 +19591,56 @@ func schema_apimachinery_apis_kubedb_v1alpha1_MySQLStatus(ref common.ReferenceCa } } -func schema_apimachinery_apis_kubedb_v1alpha1_Origin(ref common.ReferenceCallback) common.OpenAPIDefinition { +func schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDB(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ + "kind": { + SchemaProps: spec.SchemaProps{ + Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + Type: []string{"string"}, + Format: "", + }, + }, + "apiVersion": { + SchemaProps: spec.SchemaProps{ + Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + Type: []string{"string"}, + Format: "", + }, + }, "metadata": { SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta"), + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), }, }, "spec": { SchemaProps: spec.SchemaProps{ - Description: "Origin Spec to store original database Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.OriginSpec"), + Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec"), + }, + }, + "status": { + SchemaProps: spec.SchemaProps{ + Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBStatus"), }, }, }, - Required: []string{"spec"}, }, }, Dependencies: []string{ - "kmodules.xyz/offshoot-api/api/v1.PartialObjectMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.OriginSpec"}, + "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBStatus"}, } } -func schema_apimachinery_apis_kubedb_v1alpha1_OriginSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { +func schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDBList(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ Type: []string{"object"}, Properties: map[string]spec.Schema{ - "elasticsearch": { - SchemaProps: spec.SchemaProps{ - Description: "Elasticsearch Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchSpec"), - }, - }, - "postgres": { - SchemaProps: spec.SchemaProps{ - Description: "Postgres Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresSpec"), - }, - }, - "mysql": { - SchemaProps: spec.SchemaProps{ - Description: "MySQL Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLSpec"), - }, - }, - "perconaxtradb": { - SchemaProps: spec.SchemaProps{ - Description: "PerconaXtraDB Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec"), - }, - }, - "mariadb": { - SchemaProps: spec.SchemaProps{ - Description: "MariaDB Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MariaDBSpec"), - }, - }, - "mongodb": { - SchemaProps: spec.SchemaProps{ - Description: "MongoDB Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBSpec"), - }, - }, - "redis": { - SchemaProps: spec.SchemaProps{ - Description: "Redis Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.RedisSpec"), - }, - }, - "memcached": { - SchemaProps: spec.SchemaProps{ - Description: "Memcached Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MemcachedSpec"), - }, - }, - "etcd": { - SchemaProps: spec.SchemaProps{ - Description: "Etcd Spec", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.EtcdSpec"), - }, - }, - }, - }, - }, - Dependencies: []string{ - "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.ElasticsearchSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.EtcdSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MariaDBSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MemcachedSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MongoDBSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.MySQLSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.RedisSpec"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDB(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), - }, - }, - "spec": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec"), - }, - }, - "status": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBStatus"), - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PerconaXtraDBStatus"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_PerconaXtraDBList(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { + "kind": { SchemaProps: spec.SchemaProps{ Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", Type: []string{"string"}, @@ -20579,12 +20202,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_PostgresSpec(ref common.ReferenceC Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec"), }, }, - "backupSchedule": { - SchemaProps: spec.SchemaProps{ - Description: "BackupSchedule spec to specify how database backup will be taken", - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec"), - }, - }, "monitor": { SchemaProps: spec.SchemaProps{ Description: "Monitor is used monitor database instance", @@ -20647,7 +20264,7 @@ func schema_apimachinery_apis_kubedb_v1alpha1_PostgresSpec(ref common.ReferenceC }, }, Dependencies: []string{ - "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.BackupScheduleSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.LeaderElectionConfig", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresArchiverSpec"}, + "k8s.io/api/apps/v1.StatefulSetUpdateStrategy", "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "k8s.io/api/core/v1.SecretVolumeSource", "k8s.io/api/core/v1.VolumeSource", "kmodules.xyz/monitoring-agent-api/api/v1.AgentSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec", "kmodules.xyz/offshoot-api/api/v1.ServiceTemplateSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.InitSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.LeaderElectionConfig", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.PostgresArchiverSpec"}, } } @@ -21460,260 +21077,6 @@ func schema_apimachinery_apis_kubedb_v1alpha1_ScriptSourceSpec(ref common.Refere } } -func schema_apimachinery_apis_kubedb_v1alpha1_Snapshot(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Description: "Deprecated", - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"), - }, - }, - "spec": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSpec"), - }, - }, - "status": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotStatus"), - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotSpec", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.SnapshotStatus"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_SnapshotList(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "kind": { - SchemaProps: spec.SchemaProps{ - Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", - Type: []string{"string"}, - Format: "", - }, - }, - "apiVersion": { - SchemaProps: spec.SchemaProps{ - Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", - Type: []string{"string"}, - Format: "", - }, - }, - "metadata": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"), - }, - }, - "items": { - SchemaProps: spec.SchemaProps{ - Description: "Items is a list of Snapshot CRD objects", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Ref: ref("kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Snapshot"), - }, - }, - }, - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta", "kubedb.dev/apimachinery/apis/kubedb/v1alpha1.Snapshot"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_SnapshotSourceSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "namespace": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "name": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "args": { - SchemaProps: spec.SchemaProps{ - Description: "Arguments to the restore job", - Type: []string{"array"}, - Items: &spec.SchemaOrArray{ - Schema: &spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - }, - }, - }, - }, - Required: []string{"namespace", "name"}, - }, - }, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_SnapshotSpec(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "databaseName": { - SchemaProps: spec.SchemaProps{ - Description: "Database name", - Type: []string{"string"}, - Format: "", - }, - }, - "storageSecretName": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "local": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.LocalSpec"), - }, - }, - "s3": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.S3Spec"), - }, - }, - "gcs": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.GCSSpec"), - }, - }, - "azure": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.AzureSpec"), - }, - }, - "swift": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.SwiftSpec"), - }, - }, - "b2": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.B2Spec"), - }, - }, - "rest": { - SchemaProps: spec.SchemaProps{ - Ref: ref("kmodules.xyz/objectstore-api/api/v1.RestServerSpec"), - }, - }, - "storageType": { - SchemaProps: spec.SchemaProps{ - Description: "StorageType can be durable or ephemeral. If not given, database storage type will be used.", - Type: []string{"string"}, - Format: "", - }, - }, - "podTemplate": { - SchemaProps: spec.SchemaProps{ - Description: "PodTemplate is an optional configuration for pods used to take database snapshots", - Ref: ref("kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec"), - }, - }, - "podVolumeClaimSpec": { - SchemaProps: spec.SchemaProps{ - Description: "PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. If not given, database's PvcSpec will be used. If storageType is durable, then a PVC will be created using this PVCSpec. If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage].", - Ref: ref("k8s.io/api/core/v1.PersistentVolumeClaimSpec"), - }, - }, - }, - Required: []string{"databaseName"}, - }, - }, - Dependencies: []string{ - "k8s.io/api/core/v1.PersistentVolumeClaimSpec", "kmodules.xyz/objectstore-api/api/v1.AzureSpec", "kmodules.xyz/objectstore-api/api/v1.B2Spec", "kmodules.xyz/objectstore-api/api/v1.GCSSpec", "kmodules.xyz/objectstore-api/api/v1.LocalSpec", "kmodules.xyz/objectstore-api/api/v1.RestServerSpec", "kmodules.xyz/objectstore-api/api/v1.S3Spec", "kmodules.xyz/objectstore-api/api/v1.SwiftSpec", "kmodules.xyz/offshoot-api/api/v1.PodTemplateSpec"}, - } -} - -func schema_apimachinery_apis_kubedb_v1alpha1_SnapshotStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, - Properties: map[string]spec.Schema{ - "startTime": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), - }, - }, - "completionTime": { - SchemaProps: spec.SchemaProps{ - Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), - }, - }, - "phase": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "reason": { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - "observedGeneration": { - SchemaProps: spec.SchemaProps{ - Description: "observedGeneration is the most recent generation observed for this resource. It corresponds to the resource's generation, which is updated on mutation by the API Server.", - Type: []string{"integer"}, - Format: "int64", - }, - }, - }, - }, - }, - Dependencies: []string{ - "k8s.io/apimachinery/pkg/apis/meta/v1.Time"}, - } -} - func schema_apimachinery_apis_kubedb_v1alpha1_TLSConfig(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/apis/kubedb/v1alpha1/pgbouncer_helpers.go b/apis/kubedb/v1alpha1/pgbouncer_helpers.go index c2e93a8830..0dc2f952e0 100644 --- a/apis/kubedb/v1alpha1/pgbouncer_helpers.go +++ b/apis/kubedb/v1alpha1/pgbouncer_helpers.go @@ -76,11 +76,6 @@ func (p PgBouncer) ServiceName() string { return p.OffshootName() } -// Snapshot service account name. -func (p PgBouncer) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", p.OffshootName()) -} - type pgbouncerApp struct { *PgBouncer } diff --git a/apis/kubedb/v1alpha1/postgres_helpers.go b/apis/kubedb/v1alpha1/postgres_helpers.go index b4b5070298..760ef1618b 100644 --- a/apis/kubedb/v1alpha1/postgres_helpers.go +++ b/apis/kubedb/v1alpha1/postgres_helpers.go @@ -78,11 +78,6 @@ func (p Postgres) ServiceName() string { return p.OffshootName() } -// Snapshot service account name. -func (p Postgres) SnapshotSAName() string { - return fmt.Sprintf("%v-snapshot", p.OffshootName()) -} - type postgresApp struct { *Postgres } @@ -160,9 +155,6 @@ func (p *PostgresSpec) SetDefaults() { return } - // perform defaulting - p.BackupSchedule.SetDefaults() - if p.StorageType == "" { p.StorageType = StorageTypeDurable } diff --git a/apis/kubedb/v1alpha1/postgres_types.go b/apis/kubedb/v1alpha1/postgres_types.go index bbb57c569e..99c2e5a8dd 100644 --- a/apis/kubedb/v1alpha1/postgres_types.go +++ b/apis/kubedb/v1alpha1/postgres_types.go @@ -84,10 +84,6 @@ type PostgresSpec struct { // +optional Init *InitSpec `json:"init,omitempty" protobuf:"bytes,10,opt,name=init"` - // BackupSchedule spec to specify how database backup will be taken - // +optional - BackupSchedule *BackupScheduleSpec `json:"backupSchedule,omitempty" protobuf:"bytes,11,opt,name=backupSchedule"` - // Monitor is used monitor database instance // +optional Monitor *mona.AgentSpec `json:"monitor,omitempty" protobuf:"bytes,12,opt,name=monitor"` diff --git a/apis/kubedb/v1alpha1/register.go b/apis/kubedb/v1alpha1/register.go index dca8c70cd4..ddacd65f3a 100644 --- a/apis/kubedb/v1alpha1/register.go +++ b/apis/kubedb/v1alpha1/register.go @@ -54,8 +54,6 @@ func Resource(resource string) schema.GroupResource { // Adds the list of known types to api.Scheme. func addKnownTypes(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, - &DormantDatabase{}, - &DormantDatabaseList{}, &Elasticsearch{}, &ElasticsearchList{}, &Etcd{}, @@ -78,8 +76,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { &ProxySQLList{}, &Redis{}, &RedisList{}, - &SnapshotList{}, - &Snapshot{}, ) scheme.AddKnownTypes(SchemeGroupVersion, diff --git a/apis/kubedb/v1alpha1/snapshot_helpers.go b/apis/kubedb/v1alpha1/snapshot_helpers.go deleted file mode 100644 index fd55da1111..0000000000 --- a/apis/kubedb/v1alpha1/snapshot_helpers.go +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -import ( - "fmt" - "path/filepath" - - "kubedb.dev/apimachinery/api/crds" - "kubedb.dev/apimachinery/apis" - - "github.com/pkg/errors" - apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" -) - -func (_ Snapshot) CustomResourceDefinition() *apiextensions.CustomResourceDefinition { - return crds.MustCustomResourceDefinition(SchemeGroupVersion.WithResource(ResourcePluralSnapshot)) -} - -var _ apis.ResourceInfo = &Snapshot{} - -func (s Snapshot) OffshootName() string { - return s.Name -} - -func (s Snapshot) Location() (string, error) { - spec := s.Spec.Backend - if spec.S3 != nil { - return filepath.Join(spec.S3.Prefix, DatabaseNamePrefix, s.Namespace, s.Spec.DatabaseName), nil - } else if spec.GCS != nil { - return filepath.Join(spec.GCS.Prefix, DatabaseNamePrefix, s.Namespace, s.Spec.DatabaseName), nil - } else if spec.Azure != nil { - return filepath.Join(spec.Azure.Prefix, DatabaseNamePrefix, s.Namespace, s.Spec.DatabaseName), nil - } else if spec.Local != nil { - return filepath.Join(DatabaseNamePrefix, s.Namespace, s.Spec.DatabaseName), nil - } else if spec.Swift != nil { - return filepath.Join(spec.Swift.Prefix, DatabaseNamePrefix, s.Namespace, s.Spec.DatabaseName), nil - } - return "", errors.New("no storage provider is configured") -} - -func (s Snapshot) ResourceShortCode() string { - return ResourceCodeSnapshot -} - -func (s Snapshot) ResourceKind() string { - return ResourceKindSnapshot -} - -func (s Snapshot) ResourceSingular() string { - return ResourceSingularSnapshot -} - -func (s Snapshot) ResourcePlural() string { - return ResourcePluralSnapshot -} - -func (s Snapshot) OSMSecretName() string { - return fmt.Sprintf("osm-%v", s.Name) -} - -func (s *Snapshot) SetDefaults() { - if s == nil { - return - } - // Add snapshot defaulting here -} diff --git a/apis/kubedb/v1alpha1/snapshot_types.go b/apis/kubedb/v1alpha1/snapshot_types.go deleted file mode 100644 index ba64873610..0000000000 --- a/apis/kubedb/v1alpha1/snapshot_types.go +++ /dev/null @@ -1,104 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package v1alpha1 - -import ( - core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - store "kmodules.xyz/objectstore-api/api/v1" - ofst "kmodules.xyz/offshoot-api/api/v1" -) - -const ( - ResourceCodeSnapshot = "snap" - ResourceKindSnapshot = "Snapshot" - ResourceSingularSnapshot = "snapshot" - ResourcePluralSnapshot = "snapshots" -) - -// +genclient -// +k8s:openapi-gen=true -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object - -// +kubebuilder:object:root=true -// +kubebuilder:resource:path=snapshots,singular=snapshot,shortName=snap,categories={datastore,kubedb,appscode,all} -// +kubebuilder:subresource:status -// +kubebuilder:printcolumn:name="DatabaseName",type="string",JSONPath=".spec.databaseName" -// +kubebuilder:printcolumn:name="Status",type="string",JSONPath=".status.phase" -// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" -// Deprecated -type Snapshot struct { - metav1.TypeMeta `json:",inline,omitempty"` - metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` - Spec SnapshotSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` - Status SnapshotStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` -} - -type SnapshotSpec struct { - // Database name - DatabaseName string `json:"databaseName" protobuf:"bytes,1,opt,name=databaseName"` - - // Snapshot Spec - store.Backend `json:",inline" protobuf:"bytes,2,opt,name=backend"` - - // StorageType can be durable or ephemeral. - // If not given, database storage type will be used. - // +optional - StorageType *StorageType `json:"storageType,omitempty" protobuf:"bytes,3,opt,name=storageType,casttype=StorageType"` - - // PodTemplate is an optional configuration for pods used to take database snapshots - // +optional - PodTemplate ofst.PodTemplateSpec `json:"podTemplate,omitempty" protobuf:"bytes,4,opt,name=podTemplate"` - - // PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. - // If not given, database's PvcSpec will be used. - // If storageType is durable, then a PVC will be created using this PVCSpec. - // If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage]. - // +optional - PodVolumeClaimSpec *core.PersistentVolumeClaimSpec `json:"podVolumeClaimSpec,omitempty" protobuf:"bytes,5,opt,name=podVolumeClaimSpec"` -} - -type SnapshotPhase string - -const ( - // used for Snapshots that are currently running - SnapshotPhaseRunning SnapshotPhase = "Running" - // used for Snapshots that are Succeeded - SnapshotPhaseSucceeded SnapshotPhase = "Succeeded" - // used for Snapshots that are Failed - SnapshotPhaseFailed SnapshotPhase = "Failed" -) - -type SnapshotStatus struct { - StartTime *metav1.Time `json:"startTime,omitempty" protobuf:"bytes,1,opt,name=startTime"` - CompletionTime *metav1.Time `json:"completionTime,omitempty" protobuf:"bytes,2,opt,name=completionTime"` - Phase SnapshotPhase `json:"phase,omitempty" protobuf:"bytes,3,opt,name=phase,casttype=SnapshotPhase"` - Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"` - // observedGeneration is the most recent generation observed for this resource. It corresponds to the - // resource's generation, which is updated on mutation by the API Server. - // +optional - ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,5,opt,name=observedGeneration"` -} - -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object - -type SnapshotList struct { - metav1.TypeMeta `json:",inline"` - metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` - // Items is a list of Snapshot CRD objects - Items []Snapshot `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` -} diff --git a/apis/kubedb/v1alpha1/types.go b/apis/kubedb/v1alpha1/types.go index fb4ab28e4f..6f915c27b5 100644 --- a/apis/kubedb/v1alpha1/types.go +++ b/apis/kubedb/v1alpha1/types.go @@ -19,15 +19,11 @@ package v1alpha1 import ( core "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - store "kmodules.xyz/objectstore-api/api/v1" - ofst "kmodules.xyz/offshoot-api/api/v1" ) type InitSpec struct { - ScriptSource *ScriptSourceSpec `json:"scriptSource,omitempty" protobuf:"bytes,1,opt,name=scriptSource"` - // Deprecated - SnapshotSource *SnapshotSourceSpec `json:"snapshotSource,omitempty" protobuf:"bytes,2,opt,name=snapshotSource"` - PostgresWAL *PostgresWALSourceSpec `json:"postgresWAL,omitempty" protobuf:"bytes,3,opt,name=postgresWAL"` + ScriptSource *ScriptSourceSpec `json:"scriptSource,omitempty" protobuf:"bytes,1,opt,name=scriptSource"` + PostgresWAL *PostgresWALSourceSpec `json:"postgresWAL,omitempty" protobuf:"bytes,3,opt,name=postgresWAL"` // Name of stash restoreSession in same namespace of kubedb object. // ref: https://github.com/stashed/stash/blob/09af5d319bb5be889186965afb04045781d6f926/apis/stash/v1beta1/restore_session_types.go#L22 StashRestoreSession *core.LocalObjectReference `json:"stashRestoreSession,omitempty" protobuf:"bytes,4,opt,name=stashRestoreSession"` @@ -38,36 +34,6 @@ type ScriptSourceSpec struct { core.VolumeSource `json:",inline,omitempty" protobuf:"bytes,2,opt,name=volumeSource"` } -type SnapshotSourceSpec struct { - Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"` - Name string `json:"name" protobuf:"bytes,2,opt,name=name"` - // Arguments to the restore job - Args []string `json:"args,omitempty" protobuf:"bytes,3,rep,name=args"` -} - -type BackupScheduleSpec struct { - CronExpression string `json:"cronExpression,omitempty" protobuf:"bytes,1,opt,name=cronExpression"` - - // Snapshot Spec - store.Backend `json:",inline" protobuf:"bytes,2,opt,name=backend"` - - // StorageType can be durable or ephemeral. - // If not given, database storage type will be used. - // +optional - StorageType *StorageType `json:"storageType,omitempty" protobuf:"bytes,3,opt,name=storageType,casttype=StorageType"` - - // PodTemplate is an optional configuration for pods used to take database snapshots - // +optional - PodTemplate ofst.PodTemplateSpec `json:"podTemplate,omitempty" protobuf:"bytes,4,opt,name=podTemplate"` - - // PodVolumeClaimSpec is used to specify temporary storage for backup/restore Job. - // If not given, database's PvcSpec will be used. - // If storageType is durable, then a PVC will be created using this PVCSpec. - // If storageType is ephemeral, then an empty directory will be created of size PvcSpec.Resources.Requests[core.ResourceStorage]. - // +optional - PodVolumeClaimSpec *core.PersistentVolumeClaimSpec `json:"podVolumeClaimSpec,omitempty" protobuf:"bytes,5,opt,name=podVolumeClaimSpec"` -} - // LeaderElectionConfig contains essential attributes of leader election. // ref: https://github.com/kubernetes/client-go/blob/6134db91200ea474868bc6775e62cc294a74c6c6/tools/leaderelection/leaderelection.go#L105-L114 type LeaderElectionConfig struct { @@ -94,7 +60,11 @@ const ( DatabasePhaseCreating DatabasePhase = "Creating" // used for Databases that are currently initializing DatabasePhaseInitializing DatabasePhase = "Initializing" - // used for Databases that are Failed + // used for Databases that are paused + DatabasePhasePaused DatabasePhase = "Paused" + // used for Databases that are halted + DatabasePhaseHalted DatabasePhase = "Halted" + // used for Databases that are failed DatabasePhaseFailed DatabasePhase = "Failed" ) @@ -113,11 +83,11 @@ const ( // Pauses database into a DormantDatabase // Deprecated: Use spec.halted = true TerminationPolicyPause TerminationPolicy = "Pause" - // Deletes database pods, service but leave the PVCs and snapshot data intact. + // Deletes database pods, service but leave the PVCs and stash backup data intact. TerminationPolicyHalt TerminationPolicy = "Halt" - // Deletes database pods, service, pvcs but leave the snapshot data intact. + // Deletes database pods, service, pvcs but leave the stash backup data intact. TerminationPolicyDelete TerminationPolicy = "Delete" - // Deletes database pods, service, pvcs and snapshot data. + // Deletes database pods, service, pvcs and stash backup data. TerminationPolicyWipeOut TerminationPolicy = "WipeOut" // Rejects attempt to delete database using ValidationWebhook. This replaces spec.doNotPause = true TerminationPolicyDoNotTerminate TerminationPolicy = "DoNotTerminate" diff --git a/apis/kubedb/v1alpha1/zz_generated.deepcopy.go b/apis/kubedb/v1alpha1/zz_generated.deepcopy.go index 79520efc3e..9e54c7b729 100644 --- a/apis/kubedb/v1alpha1/zz_generated.deepcopy.go +++ b/apis/kubedb/v1alpha1/zz_generated.deepcopy.go @@ -21,8 +21,8 @@ limitations under the License. package v1alpha1 import ( - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + corev1 "k8s.io/api/core/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" apiv1 "kmodules.xyz/monitoring-agent-api/api/v1" @@ -30,34 +30,6 @@ import ( offshootapiapiv1 "kmodules.xyz/offshoot-api/api/v1" ) -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *BackupScheduleSpec) DeepCopyInto(out *BackupScheduleSpec) { - *out = *in - in.Backend.DeepCopyInto(&out.Backend) - if in.StorageType != nil { - in, out := &in.StorageType, &out.StorageType - *out = new(StorageType) - **out = **in - } - in.PodTemplate.DeepCopyInto(&out.PodTemplate) - if in.PodVolumeClaimSpec != nil { - in, out := &in.PodVolumeClaimSpec, &out.PodVolumeClaimSpec - *out = new(v1.PersistentVolumeClaimSpec) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupScheduleSpec. -func (in *BackupScheduleSpec) DeepCopy() *BackupScheduleSpec { - if in == nil { - return nil - } - out := new(BackupScheduleSpec) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { *out = *in @@ -68,12 +40,12 @@ func (in *CertificateSpec) DeepCopyInto(out *CertificateSpec) { } if in.Duration != nil { in, out := &in.Duration, &out.Duration - *out = new(metav1.Duration) + *out = new(v1.Duration) **out = **in } if in.RenewBefore != nil { in, out := &in.RenewBefore, &out.RenewBefore - *out = new(metav1.Duration) + *out = new(v1.Duration) **out = **in } if in.DNSNames != nil { @@ -176,7 +148,7 @@ func (in *Databases) DeepCopyInto(out *Databases) { in.DatabaseRef.DeepCopyInto(&out.DatabaseRef) if in.DatabaseSecretRef != nil { in, out := &in.DatabaseSecretRef, &out.DatabaseSecretRef - *out = new(v1.LocalObjectReference) + *out = new(corev1.LocalObjectReference) **out = **in } return @@ -192,108 +164,6 @@ func (in *Databases) DeepCopy() *Databases { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DormantDatabase) DeepCopyInto(out *DormantDatabase) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DormantDatabase. -func (in *DormantDatabase) DeepCopy() *DormantDatabase { - if in == nil { - return nil - } - out := new(DormantDatabase) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DormantDatabase) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DormantDatabaseList) DeepCopyInto(out *DormantDatabaseList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]DormantDatabase, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DormantDatabaseList. -func (in *DormantDatabaseList) DeepCopy() *DormantDatabaseList { - if in == nil { - return nil - } - out := new(DormantDatabaseList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *DormantDatabaseList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DormantDatabaseSpec) DeepCopyInto(out *DormantDatabaseSpec) { - *out = *in - in.Origin.DeepCopyInto(&out.Origin) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DormantDatabaseSpec. -func (in *DormantDatabaseSpec) DeepCopy() *DormantDatabaseSpec { - if in == nil { - return nil - } - out := new(DormantDatabaseSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *DormantDatabaseStatus) DeepCopyInto(out *DormantDatabaseStatus) { - *out = *in - if in.PausingTime != nil { - in, out := &in.PausingTime, &out.PausingTime - *out = (*in).DeepCopy() - } - if in.WipeOutTime != nil { - in, out := &in.WipeOutTime, &out.WipeOutTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DormantDatabaseStatus. -func (in *DormantDatabaseStatus) DeepCopy() *DormantDatabaseStatus { - if in == nil { - return nil - } - out := new(DormantDatabaseStatus) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Elasticsearch) DeepCopyInto(out *Elasticsearch) { *out = *in @@ -384,7 +254,7 @@ func (in *ElasticsearchNode) DeepCopyInto(out *ElasticsearchNode) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } in.Resources.DeepCopyInto(&out.Resources) @@ -421,17 +291,17 @@ func (in *ElasticsearchSpec) DeepCopyInto(out *ElasticsearchSpec) { } if in.CertificateSecret != nil { in, out := &in.CertificateSecret, &out.CertificateSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -439,11 +309,6 @@ func (in *ElasticsearchSpec) DeepCopyInto(out *ElasticsearchSpec) { *out = new(InitSpec) (*in).DeepCopyInto(*out) } - if in.BackupSchedule != nil { - in, out := &in.BackupSchedule, &out.BackupSchedule - *out = new(BackupScheduleSpec) - (*in).DeepCopyInto(*out) - } if in.Monitor != nil { in, out := &in.Monitor, &out.Monitor *out = new(apiv1.AgentSpec) @@ -451,7 +316,7 @@ func (in *ElasticsearchSpec) DeepCopyInto(out *ElasticsearchSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -562,12 +427,12 @@ func (in *EtcdSpec) DeepCopyInto(out *EtcdSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -575,11 +440,6 @@ func (in *EtcdSpec) DeepCopyInto(out *EtcdSpec) { *out = new(InitSpec) (*in).DeepCopyInto(*out) } - if in.BackupSchedule != nil { - in, out := &in.BackupSchedule, &out.BackupSchedule - *out = new(BackupScheduleSpec) - (*in).DeepCopyInto(*out) - } if in.Monitor != nil { in, out := &in.Monitor, &out.Monitor *out = new(apiv1.AgentSpec) @@ -630,11 +490,6 @@ func (in *InitSpec) DeepCopyInto(out *InitSpec) { *out = new(ScriptSourceSpec) (*in).DeepCopyInto(*out) } - if in.SnapshotSource != nil { - in, out := &in.SnapshotSource, &out.SnapshotSource - *out = new(SnapshotSourceSpec) - (*in).DeepCopyInto(*out) - } if in.PostgresWAL != nil { in, out := &in.PostgresWAL, &out.PostgresWAL *out = new(PostgresWALSourceSpec) @@ -642,7 +497,7 @@ func (in *InitSpec) DeepCopyInto(out *InitSpec) { } if in.StashRestoreSession != nil { in, out := &in.StashRestoreSession, &out.StashRestoreSession - *out = new(v1.LocalObjectReference) + *out = new(corev1.LocalObjectReference) **out = **in } return @@ -745,12 +600,12 @@ func (in *MariaDBSpec) DeepCopyInto(out *MariaDBSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -765,7 +620,7 @@ func (in *MariaDBSpec) DeepCopyInto(out *MariaDBSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -892,7 +747,7 @@ func (in *MemcachedSpec) DeepCopyInto(out *MemcachedSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -961,7 +816,7 @@ func (in *MongoDBConfigNode) DeepCopyInto(out *MongoDBConfigNode) { in.MongoDBNode.DeepCopyInto(&out.MongoDBNode) if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } return @@ -1033,7 +888,7 @@ func (in *MongoDBNode) DeepCopyInto(out *MongoDBNode) { *out = *in if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -1055,7 +910,7 @@ func (in *MongoDBReplicaSet) DeepCopyInto(out *MongoDBReplicaSet) { *out = *in if in.KeyFile != nil { in, out := &in.KeyFile, &out.KeyFile - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } return @@ -1077,7 +932,7 @@ func (in *MongoDBShardNode) DeepCopyInto(out *MongoDBShardNode) { in.MongoDBNode.DeepCopyInto(&out.MongoDBNode) if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } return @@ -1132,17 +987,17 @@ func (in *MongoDBSpec) DeepCopyInto(out *MongoDBSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.CertificateSecret != nil { in, out := &in.CertificateSecret, &out.CertificateSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -1150,11 +1005,6 @@ func (in *MongoDBSpec) DeepCopyInto(out *MongoDBSpec) { *out = new(InitSpec) (*in).DeepCopyInto(*out) } - if in.BackupSchedule != nil { - in, out := &in.BackupSchedule, &out.BackupSchedule - *out = new(BackupScheduleSpec) - (*in).DeepCopyInto(*out) - } if in.Monitor != nil { in, out := &in.Monitor, &out.Monitor *out = new(apiv1.AgentSpec) @@ -1162,7 +1012,7 @@ func (in *MongoDBSpec) DeepCopyInto(out *MongoDBSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } if in.PodTemplate != nil { @@ -1329,12 +1179,12 @@ func (in *MySQLSpec) DeepCopyInto(out *MySQLSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -1342,11 +1192,6 @@ func (in *MySQLSpec) DeepCopyInto(out *MySQLSpec) { *out = new(InitSpec) (*in).DeepCopyInto(*out) } - if in.BackupSchedule != nil { - in, out := &in.BackupSchedule, &out.BackupSchedule - *out = new(BackupScheduleSpec) - (*in).DeepCopyInto(*out) - } if in.Monitor != nil { in, out := &in.Monitor, &out.Monitor *out = new(apiv1.AgentSpec) @@ -1354,7 +1199,7 @@ func (in *MySQLSpec) DeepCopyInto(out *MySQLSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -1389,85 +1234,6 @@ func (in *MySQLStatus) DeepCopy() *MySQLStatus { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Origin) DeepCopyInto(out *Origin) { - *out = *in - in.PartialObjectMeta.DeepCopyInto(&out.PartialObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Origin. -func (in *Origin) DeepCopy() *Origin { - if in == nil { - return nil - } - out := new(Origin) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *OriginSpec) DeepCopyInto(out *OriginSpec) { - *out = *in - if in.Elasticsearch != nil { - in, out := &in.Elasticsearch, &out.Elasticsearch - *out = new(ElasticsearchSpec) - (*in).DeepCopyInto(*out) - } - if in.Postgres != nil { - in, out := &in.Postgres, &out.Postgres - *out = new(PostgresSpec) - (*in).DeepCopyInto(*out) - } - if in.MySQL != nil { - in, out := &in.MySQL, &out.MySQL - *out = new(MySQLSpec) - (*in).DeepCopyInto(*out) - } - if in.PerconaXtraDB != nil { - in, out := &in.PerconaXtraDB, &out.PerconaXtraDB - *out = new(PerconaXtraDBSpec) - (*in).DeepCopyInto(*out) - } - if in.MariaDB != nil { - in, out := &in.MariaDB, &out.MariaDB - *out = new(MariaDBSpec) - (*in).DeepCopyInto(*out) - } - if in.MongoDB != nil { - in, out := &in.MongoDB, &out.MongoDB - *out = new(MongoDBSpec) - (*in).DeepCopyInto(*out) - } - if in.Redis != nil { - in, out := &in.Redis, &out.Redis - *out = new(RedisSpec) - (*in).DeepCopyInto(*out) - } - if in.Memcached != nil { - in, out := &in.Memcached, &out.Memcached - *out = new(MemcachedSpec) - (*in).DeepCopyInto(*out) - } - if in.Etcd != nil { - in, out := &in.Etcd, &out.Etcd - *out = new(EtcdSpec) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OriginSpec. -func (in *OriginSpec) DeepCopy() *OriginSpec { - if in == nil { - return nil - } - out := new(OriginSpec) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PerconaXtraDB) DeepCopyInto(out *PerconaXtraDB) { *out = *in @@ -1539,12 +1305,12 @@ func (in *PerconaXtraDBSpec) DeepCopyInto(out *PerconaXtraDBSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -1559,7 +1325,7 @@ func (in *PerconaXtraDBSpec) DeepCopyInto(out *PerconaXtraDBSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -1679,7 +1445,7 @@ func (in *PgBouncerSpec) DeepCopyInto(out *PgBouncerSpec) { } if in.UserListSecretRef != nil { in, out := &in.UserListSecretRef, &out.UserListSecretRef - *out = new(v1.LocalObjectReference) + *out = new(corev1.LocalObjectReference) **out = **in } if in.Monitor != nil { @@ -1833,12 +1599,12 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) { } if in.DatabaseSecret != nil { in, out := &in.DatabaseSecret, &out.DatabaseSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.Init != nil { @@ -1846,11 +1612,6 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) { *out = new(InitSpec) (*in).DeepCopyInto(*out) } - if in.BackupSchedule != nil { - in, out := &in.BackupSchedule, &out.BackupSchedule - *out = new(BackupScheduleSpec) - (*in).DeepCopyInto(*out) - } if in.Monitor != nil { in, out := &in.Monitor, &out.Monitor *out = new(apiv1.AgentSpec) @@ -1858,7 +1619,7 @@ func (in *PostgresSpec) DeepCopyInto(out *PostgresSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -1949,7 +1710,7 @@ func (in *ProxySQLBackendSpec) DeepCopyInto(out *ProxySQLBackendSpec) { *out = *in if in.Ref != nil { in, out := &in.Ref, &out.Ref - *out = new(v1.TypedLocalObjectReference) + *out = new(corev1.TypedLocalObjectReference) (*in).DeepCopyInto(*out) } if in.Replicas != nil { @@ -2023,7 +1784,7 @@ func (in *ProxySQLSpec) DeepCopyInto(out *ProxySQLSpec) { } if in.ProxySQLSecret != nil { in, out := &in.ProxySQLSecret, &out.ProxySQLSecret - *out = new(v1.SecretVolumeSource) + *out = new(corev1.SecretVolumeSource) (*in).DeepCopyInto(*out) } if in.Monitor != nil { @@ -2033,7 +1794,7 @@ func (in *ProxySQLSpec) DeepCopyInto(out *ProxySQLSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -2191,7 +1952,7 @@ func (in *RedisSpec) DeepCopyInto(out *RedisSpec) { } if in.Storage != nil { in, out := &in.Storage, &out.Storage - *out = new(v1.PersistentVolumeClaimSpec) + *out = new(corev1.PersistentVolumeClaimSpec) (*in).DeepCopyInto(*out) } if in.Monitor != nil { @@ -2201,7 +1962,7 @@ func (in *RedisSpec) DeepCopyInto(out *RedisSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(v1.VolumeSource) + *out = new(corev1.VolumeSource) (*in).DeepCopyInto(*out) } in.PodTemplate.DeepCopyInto(&out.PodTemplate) @@ -2253,146 +2014,12 @@ func (in *ScriptSourceSpec) DeepCopy() *ScriptSourceSpec { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Snapshot) DeepCopyInto(out *Snapshot) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) - in.Spec.DeepCopyInto(&out.Spec) - in.Status.DeepCopyInto(&out.Status) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Snapshot. -func (in *Snapshot) DeepCopy() *Snapshot { - if in == nil { - return nil - } - out := new(Snapshot) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *Snapshot) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SnapshotList) DeepCopyInto(out *SnapshotList) { - *out = *in - out.TypeMeta = in.TypeMeta - in.ListMeta.DeepCopyInto(&out.ListMeta) - if in.Items != nil { - in, out := &in.Items, &out.Items - *out = make([]Snapshot, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotList. -func (in *SnapshotList) DeepCopy() *SnapshotList { - if in == nil { - return nil - } - out := new(SnapshotList) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *SnapshotList) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SnapshotSourceSpec) DeepCopyInto(out *SnapshotSourceSpec) { - *out = *in - if in.Args != nil { - in, out := &in.Args, &out.Args - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotSourceSpec. -func (in *SnapshotSourceSpec) DeepCopy() *SnapshotSourceSpec { - if in == nil { - return nil - } - out := new(SnapshotSourceSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SnapshotSpec) DeepCopyInto(out *SnapshotSpec) { - *out = *in - in.Backend.DeepCopyInto(&out.Backend) - if in.StorageType != nil { - in, out := &in.StorageType, &out.StorageType - *out = new(StorageType) - **out = **in - } - in.PodTemplate.DeepCopyInto(&out.PodTemplate) - if in.PodVolumeClaimSpec != nil { - in, out := &in.PodVolumeClaimSpec, &out.PodVolumeClaimSpec - *out = new(v1.PersistentVolumeClaimSpec) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotSpec. -func (in *SnapshotSpec) DeepCopy() *SnapshotSpec { - if in == nil { - return nil - } - out := new(SnapshotSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *SnapshotStatus) DeepCopyInto(out *SnapshotStatus) { - *out = *in - if in.StartTime != nil { - in, out := &in.StartTime, &out.StartTime - *out = (*in).DeepCopy() - } - if in.CompletionTime != nil { - in, out := &in.CompletionTime, &out.CompletionTime - *out = (*in).DeepCopy() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SnapshotStatus. -func (in *SnapshotStatus) DeepCopy() *SnapshotStatus { - if in == nil { - return nil - } - out := new(SnapshotStatus) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TLSConfig) DeepCopyInto(out *TLSConfig) { *out = *in if in.IssuerRef != nil { in, out := &in.IssuerRef, &out.IssuerRef - *out = new(v1.TypedLocalObjectReference) + *out = new(corev1.TypedLocalObjectReference) (*in).DeepCopyInto(*out) } if in.Certificate != nil { diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/dormantdatabase.go b/client/clientset/versioned/typed/kubedb/v1alpha1/dormantdatabase.go deleted file mode 100644 index d531522bec..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/dormantdatabase.go +++ /dev/null @@ -1,192 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - "time" - - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - scheme "kubedb.dev/apimachinery/client/clientset/versioned/scheme" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" -) - -// DormantDatabasesGetter has a method to return a DormantDatabaseInterface. -// A group's client should implement this interface. -type DormantDatabasesGetter interface { - DormantDatabases(namespace string) DormantDatabaseInterface -} - -// DormantDatabaseInterface has methods to work with DormantDatabase resources. -type DormantDatabaseInterface interface { - Create(*v1alpha1.DormantDatabase) (*v1alpha1.DormantDatabase, error) - Update(*v1alpha1.DormantDatabase) (*v1alpha1.DormantDatabase, error) - UpdateStatus(*v1alpha1.DormantDatabase) (*v1alpha1.DormantDatabase, error) - Delete(name string, options *v1.DeleteOptions) error - DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error - Get(name string, options v1.GetOptions) (*v1alpha1.DormantDatabase, error) - List(opts v1.ListOptions) (*v1alpha1.DormantDatabaseList, error) - Watch(opts v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.DormantDatabase, err error) - DormantDatabaseExpansion -} - -// dormantDatabases implements DormantDatabaseInterface -type dormantDatabases struct { - client rest.Interface - ns string -} - -// newDormantDatabases returns a DormantDatabases -func newDormantDatabases(c *KubedbV1alpha1Client, namespace string) *dormantDatabases { - return &dormantDatabases{ - client: c.RESTClient(), - ns: namespace, - } -} - -// Get takes name of the dormantDatabase, and returns the corresponding dormantDatabase object, and an error if there is any. -func (c *dormantDatabases) Get(name string, options v1.GetOptions) (result *v1alpha1.DormantDatabase, err error) { - result = &v1alpha1.DormantDatabase{} - err = c.client.Get(). - Namespace(c.ns). - Resource("dormantdatabases"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of DormantDatabases that match those selectors. -func (c *dormantDatabases) List(opts v1.ListOptions) (result *v1alpha1.DormantDatabaseList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1alpha1.DormantDatabaseList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("dormantdatabases"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested dormantDatabases. -func (c *dormantDatabases) Watch(opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("dormantdatabases"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch() -} - -// Create takes the representation of a dormantDatabase and creates it. Returns the server's representation of the dormantDatabase, and an error, if there is any. -func (c *dormantDatabases) Create(dormantDatabase *v1alpha1.DormantDatabase) (result *v1alpha1.DormantDatabase, err error) { - result = &v1alpha1.DormantDatabase{} - err = c.client.Post(). - Namespace(c.ns). - Resource("dormantdatabases"). - Body(dormantDatabase). - Do(). - Into(result) - return -} - -// Update takes the representation of a dormantDatabase and updates it. Returns the server's representation of the dormantDatabase, and an error, if there is any. -func (c *dormantDatabases) Update(dormantDatabase *v1alpha1.DormantDatabase) (result *v1alpha1.DormantDatabase, err error) { - result = &v1alpha1.DormantDatabase{} - err = c.client.Put(). - Namespace(c.ns). - Resource("dormantdatabases"). - Name(dormantDatabase.Name). - Body(dormantDatabase). - Do(). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). - -func (c *dormantDatabases) UpdateStatus(dormantDatabase *v1alpha1.DormantDatabase) (result *v1alpha1.DormantDatabase, err error) { - result = &v1alpha1.DormantDatabase{} - err = c.client.Put(). - Namespace(c.ns). - Resource("dormantdatabases"). - Name(dormantDatabase.Name). - SubResource("status"). - Body(dormantDatabase). - Do(). - Into(result) - return -} - -// Delete takes name of the dormantDatabase and deletes it. Returns an error if one occurs. -func (c *dormantDatabases) Delete(name string, options *v1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("dormantdatabases"). - Name(name). - Body(options). - Do(). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *dormantDatabases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - var timeout time.Duration - if listOptions.TimeoutSeconds != nil { - timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Namespace(c.ns). - Resource("dormantdatabases"). - VersionedParams(&listOptions, scheme.ParameterCodec). - Timeout(timeout). - Body(options). - Do(). - Error() -} - -// Patch applies the patch and returns the patched dormantDatabase. -func (c *dormantDatabases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.DormantDatabase, err error) { - result = &v1alpha1.DormantDatabase{} - err = c.client.Patch(pt). - Namespace(c.ns). - Resource("dormantdatabases"). - SubResource(subresources...). - Name(name). - Body(data). - Do(). - Into(result) - return -} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_dormantdatabase.go b/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_dormantdatabase.go deleted file mode 100644 index 7fdc65d380..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_dormantdatabase.go +++ /dev/null @@ -1,141 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDormantDatabases implements DormantDatabaseInterface -type FakeDormantDatabases struct { - Fake *FakeKubedbV1alpha1 - ns string -} - -var dormantdatabasesResource = schema.GroupVersionResource{Group: "kubedb.com", Version: "v1alpha1", Resource: "dormantdatabases"} - -var dormantdatabasesKind = schema.GroupVersionKind{Group: "kubedb.com", Version: "v1alpha1", Kind: "DormantDatabase"} - -// Get takes name of the dormantDatabase, and returns the corresponding dormantDatabase object, and an error if there is any. -func (c *FakeDormantDatabases) Get(name string, options v1.GetOptions) (result *v1alpha1.DormantDatabase, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(dormantdatabasesResource, c.ns, name), &v1alpha1.DormantDatabase{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.DormantDatabase), err -} - -// List takes label and field selectors, and returns the list of DormantDatabases that match those selectors. -func (c *FakeDormantDatabases) List(opts v1.ListOptions) (result *v1alpha1.DormantDatabaseList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(dormantdatabasesResource, dormantdatabasesKind, c.ns, opts), &v1alpha1.DormantDatabaseList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.DormantDatabaseList{ListMeta: obj.(*v1alpha1.DormantDatabaseList).ListMeta} - for _, item := range obj.(*v1alpha1.DormantDatabaseList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested dormantDatabases. -func (c *FakeDormantDatabases) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(dormantdatabasesResource, c.ns, opts)) - -} - -// Create takes the representation of a dormantDatabase and creates it. Returns the server's representation of the dormantDatabase, and an error, if there is any. -func (c *FakeDormantDatabases) Create(dormantDatabase *v1alpha1.DormantDatabase) (result *v1alpha1.DormantDatabase, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(dormantdatabasesResource, c.ns, dormantDatabase), &v1alpha1.DormantDatabase{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.DormantDatabase), err -} - -// Update takes the representation of a dormantDatabase and updates it. Returns the server's representation of the dormantDatabase, and an error, if there is any. -func (c *FakeDormantDatabases) Update(dormantDatabase *v1alpha1.DormantDatabase) (result *v1alpha1.DormantDatabase, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(dormantdatabasesResource, c.ns, dormantDatabase), &v1alpha1.DormantDatabase{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.DormantDatabase), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDormantDatabases) UpdateStatus(dormantDatabase *v1alpha1.DormantDatabase) (*v1alpha1.DormantDatabase, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(dormantdatabasesResource, "status", c.ns, dormantDatabase), &v1alpha1.DormantDatabase{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.DormantDatabase), err -} - -// Delete takes name of the dormantDatabase and deletes it. Returns an error if one occurs. -func (c *FakeDormantDatabases) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(dormantdatabasesResource, c.ns, name), &v1alpha1.DormantDatabase{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDormantDatabases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(dormantdatabasesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.DormantDatabaseList{}) - return err -} - -// Patch applies the patch and returns the patched dormantDatabase. -func (c *FakeDormantDatabases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.DormantDatabase, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(dormantdatabasesResource, c.ns, name, pt, data, subresources...), &v1alpha1.DormantDatabase{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.DormantDatabase), err -} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_kubedb_client.go b/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_kubedb_client.go index 52528c0a8f..1b43af39e5 100644 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_kubedb_client.go +++ b/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_kubedb_client.go @@ -29,10 +29,6 @@ type FakeKubedbV1alpha1 struct { *testing.Fake } -func (c *FakeKubedbV1alpha1) DormantDatabases(namespace string) v1alpha1.DormantDatabaseInterface { - return &FakeDormantDatabases{c, namespace} -} - func (c *FakeKubedbV1alpha1) Elasticsearches(namespace string) v1alpha1.ElasticsearchInterface { return &FakeElasticsearches{c, namespace} } @@ -77,10 +73,6 @@ func (c *FakeKubedbV1alpha1) Redises(namespace string) v1alpha1.RedisInterface { return &FakeRedises{c, namespace} } -func (c *FakeKubedbV1alpha1) Snapshots(namespace string) v1alpha1.SnapshotInterface { - return &FakeSnapshots{c, namespace} -} - // RESTClient returns a RESTClient that is used to communicate // with API server by this client implementation. func (c *FakeKubedbV1alpha1) RESTClient() rest.Interface { diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_snapshot.go b/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_snapshot.go deleted file mode 100644 index e3f919e6ef..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/fake/fake_snapshot.go +++ /dev/null @@ -1,141 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeSnapshots implements SnapshotInterface -type FakeSnapshots struct { - Fake *FakeKubedbV1alpha1 - ns string -} - -var snapshotsResource = schema.GroupVersionResource{Group: "kubedb.com", Version: "v1alpha1", Resource: "snapshots"} - -var snapshotsKind = schema.GroupVersionKind{Group: "kubedb.com", Version: "v1alpha1", Kind: "Snapshot"} - -// Get takes name of the snapshot, and returns the corresponding snapshot object, and an error if there is any. -func (c *FakeSnapshots) Get(name string, options v1.GetOptions) (result *v1alpha1.Snapshot, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(snapshotsResource, c.ns, name), &v1alpha1.Snapshot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Snapshot), err -} - -// List takes label and field selectors, and returns the list of Snapshots that match those selectors. -func (c *FakeSnapshots) List(opts v1.ListOptions) (result *v1alpha1.SnapshotList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(snapshotsResource, snapshotsKind, c.ns, opts), &v1alpha1.SnapshotList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.SnapshotList{ListMeta: obj.(*v1alpha1.SnapshotList).ListMeta} - for _, item := range obj.(*v1alpha1.SnapshotList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested snapshots. -func (c *FakeSnapshots) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(snapshotsResource, c.ns, opts)) - -} - -// Create takes the representation of a snapshot and creates it. Returns the server's representation of the snapshot, and an error, if there is any. -func (c *FakeSnapshots) Create(snapshot *v1alpha1.Snapshot) (result *v1alpha1.Snapshot, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(snapshotsResource, c.ns, snapshot), &v1alpha1.Snapshot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Snapshot), err -} - -// Update takes the representation of a snapshot and updates it. Returns the server's representation of the snapshot, and an error, if there is any. -func (c *FakeSnapshots) Update(snapshot *v1alpha1.Snapshot) (result *v1alpha1.Snapshot, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(snapshotsResource, c.ns, snapshot), &v1alpha1.Snapshot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Snapshot), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeSnapshots) UpdateStatus(snapshot *v1alpha1.Snapshot) (*v1alpha1.Snapshot, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(snapshotsResource, "status", c.ns, snapshot), &v1alpha1.Snapshot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Snapshot), err -} - -// Delete takes name of the snapshot and deletes it. Returns an error if one occurs. -func (c *FakeSnapshots) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(snapshotsResource, c.ns, name), &v1alpha1.Snapshot{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeSnapshots) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(snapshotsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.SnapshotList{}) - return err -} - -// Patch applies the patch and returns the patched snapshot. -func (c *FakeSnapshots) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Snapshot, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(snapshotsResource, c.ns, name, pt, data, subresources...), &v1alpha1.Snapshot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Snapshot), err -} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/generated_expansion.go b/client/clientset/versioned/typed/kubedb/v1alpha1/generated_expansion.go index 3264304944..8491fd32ab 100644 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/generated_expansion.go +++ b/client/clientset/versioned/typed/kubedb/v1alpha1/generated_expansion.go @@ -18,8 +18,6 @@ limitations under the License. package v1alpha1 -type DormantDatabaseExpansion interface{} - type ElasticsearchExpansion interface{} type EtcdExpansion interface{} @@ -41,5 +39,3 @@ type PostgresExpansion interface{} type ProxySQLExpansion interface{} type RedisExpansion interface{} - -type SnapshotExpansion interface{} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/kubedb_client.go b/client/clientset/versioned/typed/kubedb/v1alpha1/kubedb_client.go index c5aa10d00b..dfdf36cc46 100644 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/kubedb_client.go +++ b/client/clientset/versioned/typed/kubedb/v1alpha1/kubedb_client.go @@ -27,7 +27,6 @@ import ( type KubedbV1alpha1Interface interface { RESTClient() rest.Interface - DormantDatabasesGetter ElasticsearchesGetter EtcdsGetter MariaDBsGetter @@ -39,7 +38,6 @@ type KubedbV1alpha1Interface interface { PostgresesGetter ProxySQLsGetter RedisesGetter - SnapshotsGetter } // KubedbV1alpha1Client is used to interact with features provided by the kubedb.com group. @@ -47,10 +45,6 @@ type KubedbV1alpha1Client struct { restClient rest.Interface } -func (c *KubedbV1alpha1Client) DormantDatabases(namespace string) DormantDatabaseInterface { - return newDormantDatabases(c, namespace) -} - func (c *KubedbV1alpha1Client) Elasticsearches(namespace string) ElasticsearchInterface { return newElasticsearches(c, namespace) } @@ -95,10 +89,6 @@ func (c *KubedbV1alpha1Client) Redises(namespace string) RedisInterface { return newRedises(c, namespace) } -func (c *KubedbV1alpha1Client) Snapshots(namespace string) SnapshotInterface { - return newSnapshots(c, namespace) -} - // NewForConfig creates a new KubedbV1alpha1Client for the given config. func NewForConfig(c *rest.Config) (*KubedbV1alpha1Client, error) { config := *c diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/snapshot.go b/client/clientset/versioned/typed/kubedb/v1alpha1/snapshot.go deleted file mode 100644 index be7ab10279..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/snapshot.go +++ /dev/null @@ -1,192 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - "time" - - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - scheme "kubedb.dev/apimachinery/client/clientset/versioned/scheme" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - rest "k8s.io/client-go/rest" -) - -// SnapshotsGetter has a method to return a SnapshotInterface. -// A group's client should implement this interface. -type SnapshotsGetter interface { - Snapshots(namespace string) SnapshotInterface -} - -// SnapshotInterface has methods to work with Snapshot resources. -type SnapshotInterface interface { - Create(*v1alpha1.Snapshot) (*v1alpha1.Snapshot, error) - Update(*v1alpha1.Snapshot) (*v1alpha1.Snapshot, error) - UpdateStatus(*v1alpha1.Snapshot) (*v1alpha1.Snapshot, error) - Delete(name string, options *v1.DeleteOptions) error - DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error - Get(name string, options v1.GetOptions) (*v1alpha1.Snapshot, error) - List(opts v1.ListOptions) (*v1alpha1.SnapshotList, error) - Watch(opts v1.ListOptions) (watch.Interface, error) - Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Snapshot, err error) - SnapshotExpansion -} - -// snapshots implements SnapshotInterface -type snapshots struct { - client rest.Interface - ns string -} - -// newSnapshots returns a Snapshots -func newSnapshots(c *KubedbV1alpha1Client, namespace string) *snapshots { - return &snapshots{ - client: c.RESTClient(), - ns: namespace, - } -} - -// Get takes name of the snapshot, and returns the corresponding snapshot object, and an error if there is any. -func (c *snapshots) Get(name string, options v1.GetOptions) (result *v1alpha1.Snapshot, err error) { - result = &v1alpha1.Snapshot{} - err = c.client.Get(). - Namespace(c.ns). - Resource("snapshots"). - Name(name). - VersionedParams(&options, scheme.ParameterCodec). - Do(). - Into(result) - return -} - -// List takes label and field selectors, and returns the list of Snapshots that match those selectors. -func (c *snapshots) List(opts v1.ListOptions) (result *v1alpha1.SnapshotList, err error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - result = &v1alpha1.SnapshotList{} - err = c.client.Get(). - Namespace(c.ns). - Resource("snapshots"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Do(). - Into(result) - return -} - -// Watch returns a watch.Interface that watches the requested snapshots. -func (c *snapshots) Watch(opts v1.ListOptions) (watch.Interface, error) { - var timeout time.Duration - if opts.TimeoutSeconds != nil { - timeout = time.Duration(*opts.TimeoutSeconds) * time.Second - } - opts.Watch = true - return c.client.Get(). - Namespace(c.ns). - Resource("snapshots"). - VersionedParams(&opts, scheme.ParameterCodec). - Timeout(timeout). - Watch() -} - -// Create takes the representation of a snapshot and creates it. Returns the server's representation of the snapshot, and an error, if there is any. -func (c *snapshots) Create(snapshot *v1alpha1.Snapshot) (result *v1alpha1.Snapshot, err error) { - result = &v1alpha1.Snapshot{} - err = c.client.Post(). - Namespace(c.ns). - Resource("snapshots"). - Body(snapshot). - Do(). - Into(result) - return -} - -// Update takes the representation of a snapshot and updates it. Returns the server's representation of the snapshot, and an error, if there is any. -func (c *snapshots) Update(snapshot *v1alpha1.Snapshot) (result *v1alpha1.Snapshot, err error) { - result = &v1alpha1.Snapshot{} - err = c.client.Put(). - Namespace(c.ns). - Resource("snapshots"). - Name(snapshot.Name). - Body(snapshot). - Do(). - Into(result) - return -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). - -func (c *snapshots) UpdateStatus(snapshot *v1alpha1.Snapshot) (result *v1alpha1.Snapshot, err error) { - result = &v1alpha1.Snapshot{} - err = c.client.Put(). - Namespace(c.ns). - Resource("snapshots"). - Name(snapshot.Name). - SubResource("status"). - Body(snapshot). - Do(). - Into(result) - return -} - -// Delete takes name of the snapshot and deletes it. Returns an error if one occurs. -func (c *snapshots) Delete(name string, options *v1.DeleteOptions) error { - return c.client.Delete(). - Namespace(c.ns). - Resource("snapshots"). - Name(name). - Body(options). - Do(). - Error() -} - -// DeleteCollection deletes a collection of objects. -func (c *snapshots) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - var timeout time.Duration - if listOptions.TimeoutSeconds != nil { - timeout = time.Duration(*listOptions.TimeoutSeconds) * time.Second - } - return c.client.Delete(). - Namespace(c.ns). - Resource("snapshots"). - VersionedParams(&listOptions, scheme.ParameterCodec). - Timeout(timeout). - Body(options). - Do(). - Error() -} - -// Patch applies the patch and returns the patched snapshot. -func (c *snapshots) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Snapshot, err error) { - result = &v1alpha1.Snapshot{} - err = c.client.Patch(pt). - Namespace(c.ns). - Resource("snapshots"). - SubResource(subresources...). - Name(name). - Body(data). - Do(). - Into(result) - return -} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/util/dormant_database.go b/client/clientset/versioned/typed/kubedb/v1alpha1/util/dormant_database.go deleted file mode 100644 index e54320124d..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/util/dormant_database.go +++ /dev/null @@ -1,157 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package util - -import ( - "fmt" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1" - - jsonpatch "github.com/evanphx/json-patch" - "github.com/golang/glog" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/wait" - kutil "kmodules.xyz/client-go" -) - -func CreateOrPatchDormantDatabase(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta, transform func(*api.DormantDatabase) *api.DormantDatabase) (*api.DormantDatabase, kutil.VerbType, error) { - cur, err := c.DormantDatabases(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(err) { - glog.V(3).Infof("Creating DormantDatabase %s/%s.", meta.Namespace, meta.Name) - out, err := c.DormantDatabases(meta.Namespace).Create(transform(&api.DormantDatabase{ - TypeMeta: metav1.TypeMeta{ - Kind: "DormantDatabase", - APIVersion: api.SchemeGroupVersion.String(), - }, - ObjectMeta: meta, - })) - return out, kutil.VerbCreated, err - } else if err != nil { - return nil, kutil.VerbUnchanged, err - } - return PatchDormantDatabase(c, cur, transform) -} - -func PatchDormantDatabase(c cs.KubedbV1alpha1Interface, cur *api.DormantDatabase, transform func(*api.DormantDatabase) *api.DormantDatabase) (*api.DormantDatabase, kutil.VerbType, error) { - return PatchDormantDatabaseObject(c, cur, transform(cur.DeepCopy())) -} - -func PatchDormantDatabaseObject(c cs.KubedbV1alpha1Interface, cur, mod *api.DormantDatabase) (*api.DormantDatabase, kutil.VerbType, error) { - curJson, err := json.Marshal(cur) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - modJson, err := json.Marshal(mod) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - patch, err := jsonpatch.CreateMergePatch(curJson, modJson) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - if len(patch) == 0 || string(patch) == "{}" { - return cur, kutil.VerbUnchanged, nil - } - glog.V(3).Infof("Patching DormantDatabase %s/%s with %s.", cur.Namespace, cur.Name, string(patch)) - out, err := c.DormantDatabases(cur.Namespace).Patch(cur.Name, types.MergePatchType, patch) - return out, kutil.VerbPatched, err -} - -func TryUpdateDormantDatabase(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta, transform func(*api.DormantDatabase) *api.DormantDatabase) (result *api.DormantDatabase, err error) { - attempt := 0 - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - cur, e2 := c.DormantDatabases(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(e2) { - return false, e2 - } else if e2 == nil { - result, e2 = c.DormantDatabases(cur.Namespace).Update(transform(cur.DeepCopy())) - return e2 == nil, nil - } - glog.Errorf("Attempt %d failed to update DormantDatabase %s/%s due to %v.", attempt, cur.Namespace, cur.Name, e2) - return false, nil - }) - - if err != nil { - err = fmt.Errorf("failed to update DormantDatabase %s/%s after %d attempts due to %v", meta.Namespace, meta.Name, attempt, err) - } - return -} - -func DeleteDormantDatabase(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta) (err error) { - err = c.DormantDatabases(meta.Namespace).Delete(meta.Name, nil) - if err != nil { - return - } - return wait.PollImmediate(kutil.RetryInterval, kutil.ReadinessTimeout, func() (bool, error) { - _, err := c.DormantDatabases(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if err != nil { - if kerr.IsNotFound(err) { - return true, nil - } - } - return false, nil - }) -} - -func UpdateDormantDatabaseStatus( - c cs.KubedbV1alpha1Interface, - in *api.DormantDatabase, - transform func(*api.DormantDatabaseStatus) *api.DormantDatabaseStatus, -) (result *api.DormantDatabase, err error) { - apply := func(x *api.DormantDatabase) *api.DormantDatabase { - return &api.DormantDatabase{ - TypeMeta: x.TypeMeta, - ObjectMeta: x.ObjectMeta, - Spec: x.Spec, - Status: *transform(in.Status.DeepCopy()), - } - } - - attempt := 0 - cur := in.DeepCopy() - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - var e2 error - result, e2 = c.DormantDatabases(in.Namespace).UpdateStatus(apply(cur)) - if kerr.IsConflict(e2) { - latest, e3 := c.DormantDatabases(in.Namespace).Get(in.Name, metav1.GetOptions{}) - switch { - case e3 == nil: - cur = latest - return false, nil - case kutil.IsRequestRetryable(e3): - return false, nil - default: - return false, e3 - } - } else if err != nil && !kutil.IsRequestRetryable(e2) { - return false, e2 - } - return e2 == nil, nil - }) - - if err != nil { - err = fmt.Errorf("failed to update status of DormantDatabase %s/%s after %d attempts due to %v", in.Namespace, in.Name, attempt, err) - } - return -} diff --git a/client/clientset/versioned/typed/kubedb/v1alpha1/util/snapshot.go b/client/clientset/versioned/typed/kubedb/v1alpha1/util/snapshot.go deleted file mode 100644 index f746a373b0..0000000000 --- a/client/clientset/versioned/typed/kubedb/v1alpha1/util/snapshot.go +++ /dev/null @@ -1,169 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package util - -import ( - "fmt" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1" - - jsonpatch "github.com/evanphx/json-patch" - "github.com/golang/glog" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/wait" - kutil "kmodules.xyz/client-go" -) - -func CreateOrPatchSnapshot(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta, transform func(*api.Snapshot) *api.Snapshot) (*api.Snapshot, kutil.VerbType, error) { - cur, err := c.Snapshots(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(err) { - glog.V(3).Infof("Creating Snapshot %s/%s.", meta.Namespace, meta.Name) - out, err := c.Snapshots(meta.Namespace).Create(transform(&api.Snapshot{ - TypeMeta: metav1.TypeMeta{ - Kind: "Snapshot", - APIVersion: api.SchemeGroupVersion.String(), - }, - ObjectMeta: meta, - })) - return out, kutil.VerbCreated, err - } else if err != nil { - return nil, kutil.VerbUnchanged, err - } - return PatchSnapshot(c, cur, transform) -} - -func PatchSnapshot(c cs.KubedbV1alpha1Interface, cur *api.Snapshot, transform func(*api.Snapshot) *api.Snapshot) (*api.Snapshot, kutil.VerbType, error) { - return PatchSnapshotObject(c, cur, transform(cur.DeepCopy())) -} - -func PatchSnapshotObject(c cs.KubedbV1alpha1Interface, cur, mod *api.Snapshot) (*api.Snapshot, kutil.VerbType, error) { - curJson, err := json.Marshal(cur) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - modJson, err := json.Marshal(mod) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - patch, err := jsonpatch.CreateMergePatch(curJson, modJson) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - if len(patch) == 0 || string(patch) == "{}" { - return cur, kutil.VerbUnchanged, nil - } - glog.V(3).Infof("Patching Snapshot %s/%s with %s.", cur.Namespace, cur.Name, string(patch)) - out, err := c.Snapshots(cur.Namespace).Patch(cur.Name, types.MergePatchType, patch) - return out, kutil.VerbPatched, err -} - -func TryUpdateSnapshot(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta, transform func(*api.Snapshot) *api.Snapshot) (result *api.Snapshot, err error) { - attempt := 0 - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - cur, e2 := c.Snapshots(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(e2) { - return false, e2 - } else if e2 == nil { - result, e2 = c.Snapshots(cur.Namespace).Update(transform(cur.DeepCopy())) - return e2 == nil, nil - } - glog.Errorf("Attempt %d failed to update Snapshot %s/%s due to %v.", attempt, cur.Namespace, cur.Name, e2) - return false, nil - }) - - if err != nil { - err = fmt.Errorf("failed to update Snapshot %s/%s after %d attempts due to %v", meta.Namespace, meta.Name, attempt, err) - } - return -} - -func WaitUntilSnapshotCompletion(c cs.KubedbV1alpha1Interface, meta metav1.ObjectMeta) (result *api.Snapshot, err error) { - err = wait.PollImmediate(kutil.RetryInterval, kutil.ReadinessTimeout, func() (bool, error) { - result, err = c.Snapshots(meta.Namespace).Get(meta.Name, metav1.GetOptions{}) - if err != nil { - return false, err - } - if result.Status.CompletionTime != nil { - return true, nil - } - return false, nil - }) - return -} - -func UpdateSnapshotStatus( - c cs.KubedbV1alpha1Interface, - in *api.Snapshot, - transform func(*api.SnapshotStatus) *api.SnapshotStatus, -) (result *api.Snapshot, err error) { - apply := func(x *api.Snapshot) *api.Snapshot { - return &api.Snapshot{ - TypeMeta: x.TypeMeta, - ObjectMeta: x.ObjectMeta, - Spec: x.Spec, - Status: *transform(in.Status.DeepCopy()), - } - } - - attempt := 0 - cur := in.DeepCopy() - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - var e2 error - result, e2 = c.Snapshots(in.Namespace).UpdateStatus(apply(cur)) - if kerr.IsConflict(e2) { - latest, e3 := c.Snapshots(in.Namespace).Get(in.Name, metav1.GetOptions{}) - switch { - case e3 == nil: - cur = latest - return false, nil - case kutil.IsRequestRetryable(e3): - return false, nil - default: - return false, e3 - } - } else if err != nil && !kutil.IsRequestRetryable(e2) { - return false, e2 - } - return e2 == nil, nil - }) - - if err != nil { - err = fmt.Errorf("failed to update status of Snapshot %s/%s after %d attempts due to %v", in.Namespace, in.Name, attempt, err) - } - return -} - -func MarkAsFailedSnapshot( - c cs.KubedbV1alpha1Interface, - cur *api.Snapshot, - reason string, -) (*api.Snapshot, error) { - return UpdateSnapshotStatus(c, cur, func(in *api.SnapshotStatus) *api.SnapshotStatus { - t := metav1.Now() - in.CompletionTime = &t - in.Phase = api.SnapshotPhaseFailed - in.Reason = reason - return in - }) -} diff --git a/client/informers/externalversions/generic.go b/client/informers/externalversions/generic.go index e8681ce7c6..e1a0d463f5 100644 --- a/client/informers/externalversions/generic.go +++ b/client/informers/externalversions/generic.go @@ -100,8 +100,6 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Dba().V1alpha1().RedisModificationRequests().Informer()}, nil // Group=kubedb.com, Version=v1alpha1 - case kubedbv1alpha1.SchemeGroupVersion.WithResource("dormantdatabases"): - return &genericInformer{resource: resource.GroupResource(), informer: f.Kubedb().V1alpha1().DormantDatabases().Informer()}, nil case kubedbv1alpha1.SchemeGroupVersion.WithResource("elasticsearches"): return &genericInformer{resource: resource.GroupResource(), informer: f.Kubedb().V1alpha1().Elasticsearches().Informer()}, nil case kubedbv1alpha1.SchemeGroupVersion.WithResource("etcds"): @@ -124,8 +122,6 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource return &genericInformer{resource: resource.GroupResource(), informer: f.Kubedb().V1alpha1().ProxySQLs().Informer()}, nil case kubedbv1alpha1.SchemeGroupVersion.WithResource("redises"): return &genericInformer{resource: resource.GroupResource(), informer: f.Kubedb().V1alpha1().Redises().Informer()}, nil - case kubedbv1alpha1.SchemeGroupVersion.WithResource("snapshots"): - return &genericInformer{resource: resource.GroupResource(), informer: f.Kubedb().V1alpha1().Snapshots().Informer()}, nil } diff --git a/client/informers/externalversions/kubedb/v1alpha1/dormantdatabase.go b/client/informers/externalversions/kubedb/v1alpha1/dormantdatabase.go deleted file mode 100644 index 0f25ecb034..0000000000 --- a/client/informers/externalversions/kubedb/v1alpha1/dormantdatabase.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by informer-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - time "time" - - kubedbv1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - versioned "kubedb.dev/apimachinery/client/clientset/versioned" - internalinterfaces "kubedb.dev/apimachinery/client/informers/externalversions/internalinterfaces" - v1alpha1 "kubedb.dev/apimachinery/client/listers/kubedb/v1alpha1" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - watch "k8s.io/apimachinery/pkg/watch" - cache "k8s.io/client-go/tools/cache" -) - -// DormantDatabaseInformer provides access to a shared informer and lister for -// DormantDatabases. -type DormantDatabaseInformer interface { - Informer() cache.SharedIndexInformer - Lister() v1alpha1.DormantDatabaseLister -} - -type dormantDatabaseInformer struct { - factory internalinterfaces.SharedInformerFactory - tweakListOptions internalinterfaces.TweakListOptionsFunc - namespace string -} - -// NewDormantDatabaseInformer constructs a new informer for DormantDatabase type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewDormantDatabaseInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return NewFilteredDormantDatabaseInformer(client, namespace, resyncPeriod, indexers, nil) -} - -// NewFilteredDormantDatabaseInformer constructs a new informer for DormantDatabase type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewFilteredDormantDatabaseInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { - return cache.NewSharedIndexInformer( - &cache.ListWatch{ - ListFunc: func(options v1.ListOptions) (runtime.Object, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.KubedbV1alpha1().DormantDatabases(namespace).List(options) - }, - WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.KubedbV1alpha1().DormantDatabases(namespace).Watch(options) - }, - }, - &kubedbv1alpha1.DormantDatabase{}, - resyncPeriod, - indexers, - ) -} - -func (f *dormantDatabaseInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewFilteredDormantDatabaseInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) -} - -func (f *dormantDatabaseInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&kubedbv1alpha1.DormantDatabase{}, f.defaultInformer) -} - -func (f *dormantDatabaseInformer) Lister() v1alpha1.DormantDatabaseLister { - return v1alpha1.NewDormantDatabaseLister(f.Informer().GetIndexer()) -} diff --git a/client/informers/externalversions/kubedb/v1alpha1/interface.go b/client/informers/externalversions/kubedb/v1alpha1/interface.go index 4e261c0445..d646da6cd0 100644 --- a/client/informers/externalversions/kubedb/v1alpha1/interface.go +++ b/client/informers/externalversions/kubedb/v1alpha1/interface.go @@ -24,8 +24,6 @@ import ( // Interface provides access to all the informers in this group version. type Interface interface { - // DormantDatabases returns a DormantDatabaseInformer. - DormantDatabases() DormantDatabaseInformer // Elasticsearches returns a ElasticsearchInformer. Elasticsearches() ElasticsearchInformer // Etcds returns a EtcdInformer. @@ -48,8 +46,6 @@ type Interface interface { ProxySQLs() ProxySQLInformer // Redises returns a RedisInformer. Redises() RedisInformer - // Snapshots returns a SnapshotInformer. - Snapshots() SnapshotInformer } type version struct { @@ -63,11 +59,6 @@ func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakList return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} } -// DormantDatabases returns a DormantDatabaseInformer. -func (v *version) DormantDatabases() DormantDatabaseInformer { - return &dormantDatabaseInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} -} - // Elasticsearches returns a ElasticsearchInformer. func (v *version) Elasticsearches() ElasticsearchInformer { return &elasticsearchInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} @@ -122,8 +113,3 @@ func (v *version) ProxySQLs() ProxySQLInformer { func (v *version) Redises() RedisInformer { return &redisInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} } - -// Snapshots returns a SnapshotInformer. -func (v *version) Snapshots() SnapshotInformer { - return &snapshotInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions} -} diff --git a/client/informers/externalversions/kubedb/v1alpha1/snapshot.go b/client/informers/externalversions/kubedb/v1alpha1/snapshot.go deleted file mode 100644 index ca47c8edd1..0000000000 --- a/client/informers/externalversions/kubedb/v1alpha1/snapshot.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by informer-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - time "time" - - kubedbv1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - versioned "kubedb.dev/apimachinery/client/clientset/versioned" - internalinterfaces "kubedb.dev/apimachinery/client/informers/externalversions/internalinterfaces" - v1alpha1 "kubedb.dev/apimachinery/client/listers/kubedb/v1alpha1" - - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - watch "k8s.io/apimachinery/pkg/watch" - cache "k8s.io/client-go/tools/cache" -) - -// SnapshotInformer provides access to a shared informer and lister for -// Snapshots. -type SnapshotInformer interface { - Informer() cache.SharedIndexInformer - Lister() v1alpha1.SnapshotLister -} - -type snapshotInformer struct { - factory internalinterfaces.SharedInformerFactory - tweakListOptions internalinterfaces.TweakListOptionsFunc - namespace string -} - -// NewSnapshotInformer constructs a new informer for Snapshot type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewSnapshotInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { - return NewFilteredSnapshotInformer(client, namespace, resyncPeriod, indexers, nil) -} - -// NewFilteredSnapshotInformer constructs a new informer for Snapshot type. -// Always prefer using an informer factory to get a shared informer instead of getting an independent -// one. This reduces memory footprint and number of connections to the server. -func NewFilteredSnapshotInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { - return cache.NewSharedIndexInformer( - &cache.ListWatch{ - ListFunc: func(options v1.ListOptions) (runtime.Object, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.KubedbV1alpha1().Snapshots(namespace).List(options) - }, - WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { - if tweakListOptions != nil { - tweakListOptions(&options) - } - return client.KubedbV1alpha1().Snapshots(namespace).Watch(options) - }, - }, - &kubedbv1alpha1.Snapshot{}, - resyncPeriod, - indexers, - ) -} - -func (f *snapshotInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return NewFilteredSnapshotInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) -} - -func (f *snapshotInformer) Informer() cache.SharedIndexInformer { - return f.factory.InformerFor(&kubedbv1alpha1.Snapshot{}, f.defaultInformer) -} - -func (f *snapshotInformer) Lister() v1alpha1.SnapshotLister { - return v1alpha1.NewSnapshotLister(f.Informer().GetIndexer()) -} diff --git a/client/listers/kubedb/v1alpha1/dormantdatabase.go b/client/listers/kubedb/v1alpha1/dormantdatabase.go deleted file mode 100644 index d3939a0e52..0000000000 --- a/client/listers/kubedb/v1alpha1/dormantdatabase.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by lister-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// DormantDatabaseLister helps list DormantDatabases. -type DormantDatabaseLister interface { - // List lists all DormantDatabases in the indexer. - List(selector labels.Selector) (ret []*v1alpha1.DormantDatabase, err error) - // DormantDatabases returns an object that can list and get DormantDatabases. - DormantDatabases(namespace string) DormantDatabaseNamespaceLister - DormantDatabaseListerExpansion -} - -// dormantDatabaseLister implements the DormantDatabaseLister interface. -type dormantDatabaseLister struct { - indexer cache.Indexer -} - -// NewDormantDatabaseLister returns a new DormantDatabaseLister. -func NewDormantDatabaseLister(indexer cache.Indexer) DormantDatabaseLister { - return &dormantDatabaseLister{indexer: indexer} -} - -// List lists all DormantDatabases in the indexer. -func (s *dormantDatabaseLister) List(selector labels.Selector) (ret []*v1alpha1.DormantDatabase, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1alpha1.DormantDatabase)) - }) - return ret, err -} - -// DormantDatabases returns an object that can list and get DormantDatabases. -func (s *dormantDatabaseLister) DormantDatabases(namespace string) DormantDatabaseNamespaceLister { - return dormantDatabaseNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// DormantDatabaseNamespaceLister helps list and get DormantDatabases. -type DormantDatabaseNamespaceLister interface { - // List lists all DormantDatabases in the indexer for a given namespace. - List(selector labels.Selector) (ret []*v1alpha1.DormantDatabase, err error) - // Get retrieves the DormantDatabase from the indexer for a given namespace and name. - Get(name string) (*v1alpha1.DormantDatabase, error) - DormantDatabaseNamespaceListerExpansion -} - -// dormantDatabaseNamespaceLister implements the DormantDatabaseNamespaceLister -// interface. -type dormantDatabaseNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all DormantDatabases in the indexer for a given namespace. -func (s dormantDatabaseNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.DormantDatabase, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1alpha1.DormantDatabase)) - }) - return ret, err -} - -// Get retrieves the DormantDatabase from the indexer for a given namespace and name. -func (s dormantDatabaseNamespaceLister) Get(name string) (*v1alpha1.DormantDatabase, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1alpha1.Resource("dormantdatabase"), name) - } - return obj.(*v1alpha1.DormantDatabase), nil -} diff --git a/client/listers/kubedb/v1alpha1/expansion_generated.go b/client/listers/kubedb/v1alpha1/expansion_generated.go index 7baf82f299..665b7e52b0 100644 --- a/client/listers/kubedb/v1alpha1/expansion_generated.go +++ b/client/listers/kubedb/v1alpha1/expansion_generated.go @@ -18,14 +18,6 @@ limitations under the License. package v1alpha1 -// DormantDatabaseListerExpansion allows custom methods to be added to -// DormantDatabaseLister. -type DormantDatabaseListerExpansion interface{} - -// DormantDatabaseNamespaceListerExpansion allows custom methods to be added to -// DormantDatabaseNamespaceLister. -type DormantDatabaseNamespaceListerExpansion interface{} - // ElasticsearchListerExpansion allows custom methods to be added to // ElasticsearchLister. type ElasticsearchListerExpansion interface{} @@ -113,11 +105,3 @@ type RedisListerExpansion interface{} // RedisNamespaceListerExpansion allows custom methods to be added to // RedisNamespaceLister. type RedisNamespaceListerExpansion interface{} - -// SnapshotListerExpansion allows custom methods to be added to -// SnapshotLister. -type SnapshotListerExpansion interface{} - -// SnapshotNamespaceListerExpansion allows custom methods to be added to -// SnapshotNamespaceLister. -type SnapshotNamespaceListerExpansion interface{} diff --git a/client/listers/kubedb/v1alpha1/snapshot.go b/client/listers/kubedb/v1alpha1/snapshot.go deleted file mode 100644 index fce8103aed..0000000000 --- a/client/listers/kubedb/v1alpha1/snapshot.go +++ /dev/null @@ -1,95 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by lister-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - v1alpha1 "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" -) - -// SnapshotLister helps list Snapshots. -type SnapshotLister interface { - // List lists all Snapshots in the indexer. - List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) - // Snapshots returns an object that can list and get Snapshots. - Snapshots(namespace string) SnapshotNamespaceLister - SnapshotListerExpansion -} - -// snapshotLister implements the SnapshotLister interface. -type snapshotLister struct { - indexer cache.Indexer -} - -// NewSnapshotLister returns a new SnapshotLister. -func NewSnapshotLister(indexer cache.Indexer) SnapshotLister { - return &snapshotLister{indexer: indexer} -} - -// List lists all Snapshots in the indexer. -func (s *snapshotLister) List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) { - err = cache.ListAll(s.indexer, selector, func(m interface{}) { - ret = append(ret, m.(*v1alpha1.Snapshot)) - }) - return ret, err -} - -// Snapshots returns an object that can list and get Snapshots. -func (s *snapshotLister) Snapshots(namespace string) SnapshotNamespaceLister { - return snapshotNamespaceLister{indexer: s.indexer, namespace: namespace} -} - -// SnapshotNamespaceLister helps list and get Snapshots. -type SnapshotNamespaceLister interface { - // List lists all Snapshots in the indexer for a given namespace. - List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) - // Get retrieves the Snapshot from the indexer for a given namespace and name. - Get(name string) (*v1alpha1.Snapshot, error) - SnapshotNamespaceListerExpansion -} - -// snapshotNamespaceLister implements the SnapshotNamespaceLister -// interface. -type snapshotNamespaceLister struct { - indexer cache.Indexer - namespace string -} - -// List lists all Snapshots in the indexer for a given namespace. -func (s snapshotNamespaceLister) List(selector labels.Selector) (ret []*v1alpha1.Snapshot, err error) { - err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*v1alpha1.Snapshot)) - }) - return ret, err -} - -// Get retrieves the Snapshot from the indexer for a given namespace and name. -func (s snapshotNamespaceLister) Get(name string) (*v1alpha1.Snapshot, error) { - obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) - if err != nil { - return nil, err - } - if !exists { - return nil, errors.NewNotFound(v1alpha1.Resource("snapshot"), name) - } - return obj.(*v1alpha1.Snapshot), nil -} diff --git a/go.mod b/go.mod index 4d432c245f..78ead4217d 100644 --- a/go.mod +++ b/go.mod @@ -13,9 +13,8 @@ require ( github.com/google/gofuzz v1.0.0 github.com/jetstack/cert-manager v0.12.0 github.com/json-iterator/go v1.1.8 - github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 github.com/pkg/errors v0.8.1 - github.com/robfig/cron/v3 v3.0.1 + github.com/robfig/cron/v3 v3.0.1 // indirect gomodules.xyz/stow v0.2.4 gomodules.xyz/version v0.1.0 k8s.io/api v0.0.0-20191122220107-b5267f2975e0 diff --git a/go.sum b/go.sum index a439f37d8c..1e2930beb0 100644 --- a/go.sum +++ b/go.sum @@ -464,8 +464,6 @@ github.com/opencontainers/runc v1.0.0-rc2.0.20190611121236-6cc515888830/go.mod h github.com/opencontainers/runtime-spec v1.0.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.2.2/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= github.com/openshift/prom-label-proxy v0.1.1-0.20191016113035-b8153a7f39f1/go.mod h1:p5MuxzsYP1JPsNGwtjtcgRHHlGziCJJfztff91nNixw= -github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 h1:lNCW6THrCKBiJBpz8kbVGjC7MgdCGKwuvBgc7LoD6sw= -github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI= github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= diff --git a/hack/gencrd/main.go b/hack/gencrd/main.go index e86d952d3a..7a68f4c722 100644 --- a/hack/gencrd/main.go +++ b/hack/gencrd/main.go @@ -66,7 +66,6 @@ func generateSwaggerJson() { }, //nolint:govet Resources: []openapi.TypeInfo{ - {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralDormantDatabase, kubedbv1alpha1.ResourceKindDormantDatabase, true}, {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralElasticsearch, kubedbv1alpha1.ResourceKindElasticsearch, true}, {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralEtcd, kubedbv1alpha1.ResourceKindEtcd, true}, {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralMariaDB, kubedbv1alpha1.ResourceKindMariaDB, true}, @@ -78,7 +77,6 @@ func generateSwaggerJson() { {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralPostgres, kubedbv1alpha1.ResourceKindPostgres, true}, {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralProxySQL, kubedbv1alpha1.ResourceKindProxySQL, true}, {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralRedis, kubedbv1alpha1.ResourceKindRedis, true}, - {kubedbv1alpha1.SchemeGroupVersion, kubedbv1alpha1.ResourcePluralSnapshot, kubedbv1alpha1.ResourceKindSnapshot, true}, {catalogv1alpha1.SchemeGroupVersion, catalogv1alpha1.ResourcePluralElasticsearchVersion, catalogv1alpha1.ResourceKindElasticsearchVersion, true}, {catalogv1alpha1.SchemeGroupVersion, catalogv1alpha1.ResourcePluralEtcdVersion, catalogv1alpha1.ResourceKindEtcdVersion, false}, diff --git a/pkg/admission/dormantdatabase/admission.go b/pkg/admission/dormantdatabase/admission.go deleted file mode 100644 index 60bb1ba092..0000000000 --- a/pkg/admission/dormantdatabase/admission.go +++ /dev/null @@ -1,214 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dormantdatabase - -import ( - "sync" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned" - plugin "kubedb.dev/apimachinery/pkg/admission" - - admission "k8s.io/api/admission/v1beta1" - core "k8s.io/api/core/v1" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/dynamic" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" - dynamic_util "kmodules.xyz/client-go/dynamic" - meta_util "kmodules.xyz/client-go/meta" - hookapi "kmodules.xyz/webhook-runtime/admission/v1beta1" -) - -type DormantDatabaseValidator struct { - client kubernetes.Interface - dc dynamic.Interface - extClient cs.Interface - lock sync.RWMutex - initialized bool -} - -var _ hookapi.AdmissionHook = &DormantDatabaseValidator{} - -func (a *DormantDatabaseValidator) Resource() (plural schema.GroupVersionResource, singular string) { - return schema.GroupVersionResource{ - Group: "validators.kubedb.com", - Version: "v1alpha1", - Resource: "dormantdatabasevalidators", - }, - "dormantdatabasevalidator" -} - -func (a *DormantDatabaseValidator) Initialize(config *rest.Config, stopCh <-chan struct{}) error { - a.lock.Lock() - defer a.lock.Unlock() - - a.initialized = true - - var err error - if a.client, err = kubernetes.NewForConfig(config); err != nil { - return err - } - if a.dc, err = dynamic.NewForConfig(config); err != nil { - return err - } - if a.extClient, err = cs.NewForConfig(config); err != nil { - return err - } - return err -} - -func (a *DormantDatabaseValidator) Admit(req *admission.AdmissionRequest) *admission.AdmissionResponse { - status := &admission.AdmissionResponse{} - - // No validation on CREATE - if (req.Operation != admission.Update && req.Operation != admission.Delete) || - len(req.SubResource) != 0 || - req.Kind.Group != api.SchemeGroupVersion.Group || - req.Kind.Kind != api.ResourceKindDormantDatabase { - status.Allowed = true - return status - } - - a.lock.RLock() - defer a.lock.RUnlock() - if !a.initialized { - return hookapi.StatusUninitialized() - } - - switch req.Operation { - case admission.Delete: - if req.Name != "" { - // req.Object.Raw = nil, so read from kubernetes - obj, err := a.extClient.KubedbV1alpha1().DormantDatabases(req.Namespace).Get(req.Name, metav1.GetOptions{}) - if err != nil && !kerr.IsNotFound(err) { - return hookapi.StatusInternalServerError(err) - } else if kerr.IsNotFound(err) { - break - } - if err := a.handleOwnerReferences(obj); err != nil { - return hookapi.StatusInternalServerError(err) - } - } - case admission.Update: - // validate the operation made by User - obj, err := meta_util.UnmarshalFromJSON(req.Object.Raw, api.SchemeGroupVersion) - if err != nil { - return hookapi.StatusBadRequest(err) - } - OldObj, err := meta_util.UnmarshalFromJSON(req.OldObject.Raw, api.SchemeGroupVersion) - if err != nil { - return hookapi.StatusBadRequest(err) - } - if err := plugin.ValidateUpdate(obj, OldObj, req.Kind.Kind); err != nil { - return hookapi.StatusBadRequest(err) - } - } - - status.Allowed = true - return status -} - -func (a *DormantDatabaseValidator) handleOwnerReferences(dormantDatabase *api.DormantDatabase) error { - if dormantDatabase.Spec.WipeOut { - if err := a.setOwnerReferenceToObjects(dormantDatabase); err != nil { - return err - } - } else { - if err := a.removeOwnerReferenceFromObjects(dormantDatabase); err != nil { - return err - } - } - return nil -} - -func (a *DormantDatabaseValidator) setOwnerReferenceToObjects(dormantDatabase *api.DormantDatabase) error { - // Get LabelSelector for Other Components first - dbKind, err := meta_util.GetStringValue(dormantDatabase.ObjectMeta.Labels, api.LabelDatabaseKind) - if err != nil { - return err - } - labelMap := map[string]string{ - api.LabelDatabaseName: dormantDatabase.Name, - api.LabelDatabaseKind: dbKind, - } - selector := labels.SelectorFromSet(labelMap) - - // Get controller owner reference of dormant database - owner := metav1.NewControllerRef(dormantDatabase, api.SchemeGroupVersion.WithKind(api.ResourceKindDormantDatabase)) - if err := dynamic_util.EnsureOwnerReferenceForSelector( - a.dc, - api.SchemeGroupVersion.WithResource(api.ResourcePluralSnapshot), - dormantDatabase.Namespace, - selector, - owner); err != nil { - return err - } - if err := dynamic_util.EnsureOwnerReferenceForSelector( - a.dc, - core.SchemeGroupVersion.WithResource("persistentvolumeclaims"), - dormantDatabase.Namespace, - selector, - owner); err != nil { - return err - } - // Delete secrets in operator after checking if existing DBs are using this secret. - return nil -} - -func (a *DormantDatabaseValidator) removeOwnerReferenceFromObjects(dormantDatabase *api.DormantDatabase) error { - // First, Get LabelSelector for Other Components - dbKind, err := meta_util.GetStringValue(dormantDatabase.ObjectMeta.Labels, api.LabelDatabaseKind) - if err != nil { - return err - } - labelMap := map[string]string{ - api.LabelDatabaseName: dormantDatabase.Name, - api.LabelDatabaseKind: dbKind, - } - selector := labels.SelectorFromSet(labelMap) - - if err := dynamic_util.RemoveOwnerReferenceForSelector( - a.dc, - api.SchemeGroupVersion.WithResource(api.ResourcePluralSnapshot), - dormantDatabase.Namespace, - selector, - dormantDatabase); err != nil { - return err - } - if err := dynamic_util.RemoveOwnerReferenceForSelector( - a.dc, - core.SchemeGroupVersion.WithResource("persistentvolumeclaims"), - dormantDatabase.Namespace, - selector, - dormantDatabase); err != nil { - return err - } - // It's okay to remove owner reference of secrets on webhook - if err := dynamic_util.RemoveOwnerReferenceForItems( - a.dc, - core.SchemeGroupVersion.WithResource("secrets"), - dormantDatabase.Namespace, - dormantDatabase.GetDatabaseSecrets(), - dormantDatabase); err != nil { - return err - } - return nil -} diff --git a/pkg/admission/dormantdatabase/admission_test.go b/pkg/admission/dormantdatabase/admission_test.go deleted file mode 100644 index faaa5eed56..0000000000 --- a/pkg/admission/dormantdatabase/admission_test.go +++ /dev/null @@ -1,241 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dormantdatabase - -import ( - "net/http" - "testing" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - fake_ext "kubedb.dev/apimachinery/client/clientset/versioned/fake" - "kubedb.dev/apimachinery/client/clientset/versioned/scheme" - - admission "k8s.io/api/admission/v1beta1" - authenticationv1 "k8s.io/api/authentication/v1" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - fake_dynamic "k8s.io/client-go/dynamic/fake" - "k8s.io/client-go/kubernetes/fake" - clientsetscheme "k8s.io/client-go/kubernetes/scheme" - "kmodules.xyz/client-go/meta" - ofst "kmodules.xyz/offshoot-api/api/v1" -) - -func init() { - utilruntime.Must(scheme.AddToScheme(clientsetscheme.Scheme)) -} - -var requestKind = metav1.GroupVersionKind{ - Group: api.SchemeGroupVersion.Group, - Version: api.SchemeGroupVersion.Version, - Kind: api.ResourceKindDormantDatabase, -} - -func TestDormantDatabaseValidator_Admit(t *testing.T) { - for _, c := range cases { - t.Run(c.testName, func(t *testing.T) { - validator := DormantDatabaseValidator{} - validator.initialized = true - validator.client = fake.NewSimpleClientset() - validator.dc = fake_dynamic.NewSimpleDynamicClient(clientsetscheme.Scheme) - validator.extClient = fake_ext.NewSimpleClientset() - - objJS, err := meta.MarshalToJson(&c.object, api.SchemeGroupVersion) - if err != nil { - panic(err) - } - oldObjJS, err := meta.MarshalToJson(&c.oldObject, api.SchemeGroupVersion) - if err != nil { - panic(err) - } - - req := new(admission.AdmissionRequest) - - req.Kind = c.kind - req.Name = c.objectName - req.Namespace = c.namespace - req.Operation = c.operation - req.UserInfo = authenticationv1.UserInfo{} - req.Object.Raw = objJS - req.OldObject.Raw = oldObjJS - - if c.heatUp { - if _, err := validator.extClient.KubedbV1alpha1().DormantDatabases(c.namespace).Create(&c.object); err != nil && !kerr.IsAlreadyExists(err) { - t.Errorf(err.Error()) - } - } - if c.operation == admission.Delete { - req.Object = runtime.RawExtension{} - } - if c.operation != admission.Update { - req.OldObject = runtime.RawExtension{} - } - - response := validator.Admit(req) - if c.result == true { - if response.Allowed != true { - t.Errorf("expected: 'Allowed=true'. but got response: %v", response) - } - } else if c.result == false { - if response.Allowed == true || response.Result.Code == http.StatusInternalServerError { - t.Errorf("expected: 'Allowed=false', but got response: %v", response) - } - } - }) - } - -} - -var cases = []struct { - testName string - kind metav1.GroupVersionKind - objectName string - namespace string - operation admission.Operation - object api.DormantDatabase - oldObject api.DormantDatabase - heatUp bool - result bool -}{ - {"Create Dormant Database", - requestKind, - "foo", - "default", - admission.Create, - sampleDormantDatabase(), - api.DormantDatabase{}, - false, - true, - }, - {"Edit Status", - requestKind, - "foo", - "default", - admission.Update, - editStatus(sampleDormantDatabase()), - sampleDormantDatabase(), - false, - true, - }, - {"Edit Spec.Origin ", - requestKind, - "foo", - "default", - admission.Update, - editSpecOrigin(sampleDormantDatabase()), - sampleDormantDatabase(), - false, - false, - }, - {"Edit Spec.WipeOut", - requestKind, - "foo", - "default", - admission.Update, - editSpecWipeOut(sampleDormantDatabase()), - sampleDormantDatabase(), - false, - true, - }, - {"Delete Without Wiping Out", - requestKind, - "foo", - "default", - admission.Delete, - sampleDormantDatabase(), - api.DormantDatabase{}, - true, - true, - }, - {"Delete With Wiping Out ", - requestKind, - "foo", - "default", - admission.Delete, - editStatusWipedOut(sampleDormantDatabase()), - api.DormantDatabase{}, - true, - true, - }, - {"Delete Non Existing Dormant", - requestKind, - "foo", - "default", - admission.Delete, - api.DormantDatabase{}, - api.DormantDatabase{}, - false, - true, - }, -} - -func sampleDormantDatabase() api.DormantDatabase { - return api.DormantDatabase{ - TypeMeta: metav1.TypeMeta{ - Kind: api.ResourceKindDormantDatabase, - APIVersion: api.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "foo", - Namespace: "default", - Labels: map[string]string{ - api.LabelDatabaseKind: api.ResourceKindMongoDB, - }, - }, - Spec: api.DormantDatabaseSpec{ - Origin: api.Origin{ - PartialObjectMeta: ofst.PartialObjectMeta{ - Name: "foo", - Labels: map[string]string{ - api.LabelDatabaseKind: api.ResourceKindMongoDB, - }, - Annotations: map[string]string{ - api.AnnotationInitialized: "", - }, - }, - Spec: api.OriginSpec{ - MongoDB: &api.MongoDBSpec{}, - }, - }, - }, - } -} - -func editSpecOrigin(old api.DormantDatabase) api.DormantDatabase { - old.Spec.Origin.Annotations = nil - return old -} - -func editStatus(old api.DormantDatabase) api.DormantDatabase { - old.Status = api.DormantDatabaseStatus{ - Phase: api.DormantDatabasePhasePaused, - } - return old -} - -func editSpecWipeOut(old api.DormantDatabase) api.DormantDatabase { - old.Spec.WipeOut = true - return old -} - -func editStatusWipedOut(old api.DormantDatabase) api.DormantDatabase { - old.Spec.WipeOut = true - old.Status.Phase = api.DormantDatabasePhaseWipedOut - return old -} diff --git a/pkg/admission/snapshot/admission.go b/pkg/admission/snapshot/admission.go deleted file mode 100644 index b6cbc85cba..0000000000 --- a/pkg/admission/snapshot/admission.go +++ /dev/null @@ -1,226 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - "fmt" - "sync" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned" - plugin "kubedb.dev/apimachinery/pkg/admission" - amv "kubedb.dev/apimachinery/pkg/validator" - - admission "k8s.io/api/admission/v1beta1" - core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" - "kmodules.xyz/client-go/meta" - meta_util "kmodules.xyz/client-go/meta" - hookapi "kmodules.xyz/webhook-runtime/admission/v1beta1" -) - -type SnapshotValidator struct { - client kubernetes.Interface - extClient cs.Interface - lock sync.RWMutex - initialized bool -} - -var _ hookapi.AdmissionHook = &SnapshotValidator{} - -func (a *SnapshotValidator) Resource() (plural schema.GroupVersionResource, singular string) { - return schema.GroupVersionResource{ - Group: "validators.kubedb.com", - Version: "v1alpha1", - Resource: "snapshotvalidators", - }, - "snapshotvalidator" -} - -func (a *SnapshotValidator) Initialize(config *rest.Config, stopCh <-chan struct{}) error { - a.lock.Lock() - defer a.lock.Unlock() - - a.initialized = true - - var err error - if a.client, err = kubernetes.NewForConfig(config); err != nil { - return err - } - if a.extClient, err = cs.NewForConfig(config); err != nil { - return err - } - return err -} - -func (a *SnapshotValidator) Admit(req *admission.AdmissionRequest) *admission.AdmissionResponse { - status := &admission.AdmissionResponse{} - - if (req.Operation != admission.Create && req.Operation != admission.Update) || - len(req.SubResource) != 0 || - req.Kind.Group != api.SchemeGroupVersion.Group || - req.Kind.Kind != api.ResourceKindSnapshot { - status.Allowed = true - return status - } - - a.lock.RLock() - defer a.lock.RUnlock() - if !a.initialized { - return hookapi.StatusUninitialized() - } - - obj, err := meta.UnmarshalFromJSON(req.Object.Raw, api.SchemeGroupVersion) - if err != nil { - return hookapi.StatusBadRequest(err) - } - if req.Operation == admission.Update { - oldObject, err := meta.UnmarshalFromJSON(req.OldObject.Raw, api.SchemeGroupVersion) - if err != nil { - return hookapi.StatusBadRequest(err) - } - if err := plugin.ValidateUpdate(obj, oldObject, req.Kind.Kind); err != nil { - return hookapi.StatusBadRequest(err) - } - // Skip checking validation if Spec is not changed - if meta_util.Equal(obj.(*api.Snapshot).Spec, oldObject.(*api.Snapshot).Spec) { - status.Allowed = true - return status - } - } - // validates if database of particular kind exists - if err := a.validateSnapshot(obj.(*api.Snapshot)); err != nil { - return hookapi.StatusForbidden(err) - } - // validates Snapshot Spec - if err := amv.ValidateSnapshotSpec(obj.(*api.Snapshot).Spec.Backend); err != nil { - return hookapi.StatusForbidden(err) - } - if req.Operation == admission.Create { - // isSnapshotRunning checks if a snapshot is already running. Check this only when creating snapshot, - // because Snapshot.Status will be needed to edit later and this method will give error for that update. - if err := a.isSnapshotRunning(obj.(*api.Snapshot)); err != nil { - return hookapi.StatusForbidden(err) - } - } - - status.Allowed = true - return status -} - -// validateSnapshot checks if the database of the particular kind actually exists. -func (a *SnapshotValidator) validateSnapshot(snapshot *api.Snapshot) error { - // Database name can't empty - databaseName := snapshot.Spec.DatabaseName - if databaseName == "" { - return fmt.Errorf(`object 'DatabaseName' is missing in '%v'`, snapshot.Spec) - } - - // - - kind, err := meta_util.GetStringValue(snapshot.Labels, api.LabelDatabaseKind) - if err != nil { - return fmt.Errorf("'%v:XDB' label is missing", api.LabelDatabaseKind) - } - - // Check if DB exists - switch kind { - case api.ResourceKindElasticsearch: - es, err := a.extClient.KubedbV1alpha1().Elasticsearches(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}) - if err != nil { - return err - } - storage := es.Spec.Storage - if es.Spec.Topology != nil { - storage = es.Spec.Topology.Data.Storage - } - if err := verifyStorageType(snapshot, storage); err != nil { - return err - } - case api.ResourceKindPostgres: - pg, err := a.extClient.KubedbV1alpha1().Postgreses(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}) - if err != nil { - return err - } - if err := verifyStorageType(snapshot, pg.Spec.Storage); err != nil { - return err - } - case api.ResourceKindMongoDB: - mg, err := a.extClient.KubedbV1alpha1().MongoDBs(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}) - if err != nil { - return err - } - if err := verifyStorageType(snapshot, mg.Spec.Storage); err != nil { - return err - } - - case api.ResourceKindMySQL: - my, err := a.extClient.KubedbV1alpha1().MySQLs(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}) - if err != nil { - return err - } - if err := verifyStorageType(snapshot, my.Spec.Storage); err != nil { - return err - } - case api.ResourceKindRedis: - if _, err := a.extClient.KubedbV1alpha1().Redises(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}); err != nil { - return err - } - case api.ResourceKindMemcached: - if _, err := a.extClient.KubedbV1alpha1().Memcacheds(snapshot.Namespace).Get(databaseName, metav1.GetOptions{}); err != nil { - return err - } - } - - return nil -} - -func verifyStorageType(snapshot *api.Snapshot, dbPvcSpec *core.PersistentVolumeClaimSpec) error { - if snapshot.Spec.StorageType != nil && - *snapshot.Spec.StorageType == api.StorageTypeDurable && - snapshot.Spec.PodVolumeClaimSpec == nil && - dbPvcSpec == nil { - return fmt.Errorf("snapshot storagetype is durable but, " + - "pvc Spec is not specified in either PodVolumeClaimSpec or db.Spec.Storage") - } - return nil -} - -func (a *SnapshotValidator) isSnapshotRunning(snapshot *api.Snapshot) error { - labelMap := map[string]string{ - api.LabelDatabaseKind: snapshot.Labels[api.LabelDatabaseKind], - api.LabelDatabaseName: snapshot.Spec.DatabaseName, - api.LabelSnapshotStatus: string(api.SnapshotPhaseRunning), - } - - snapshotList, err := a.extClient.KubedbV1alpha1().Snapshots(snapshot.Namespace).List(metav1.ListOptions{ - LabelSelector: labels.SelectorFromSet(labelMap).String(), - }) - if err != nil { - return err - } - - if len(snapshotList.Items) > 0 { - return fmt.Errorf("one Snapshot is already running") - } - - return nil -} diff --git a/pkg/admission/snapshot/admission_test.go b/pkg/admission/snapshot/admission_test.go deleted file mode 100644 index 11f634691d..0000000000 --- a/pkg/admission/snapshot/admission_test.go +++ /dev/null @@ -1,255 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - "net/http" - "testing" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - extFake "kubedb.dev/apimachinery/client/clientset/versioned/fake" - "kubedb.dev/apimachinery/client/clientset/versioned/scheme" - - "github.com/appscode/go/types" - admission "k8s.io/api/admission/v1beta1" - authenticationV1 "k8s.io/api/authentication/v1" - core "k8s.io/api/core/v1" - kerr "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/resource" - metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "k8s.io/client-go/kubernetes/fake" - clientsetscheme "k8s.io/client-go/kubernetes/scheme" - "kmodules.xyz/client-go/meta" - store "kmodules.xyz/objectstore-api/api/v1" -) - -func init() { - utilruntime.Must(scheme.AddToScheme(clientsetscheme.Scheme)) -} - -var requestKind = metaV1.GroupVersionKind{ - Group: api.SchemeGroupVersion.Group, - Version: api.SchemeGroupVersion.Version, - Kind: api.ResourceKindSnapshot, -} - -func TestSnapshotValidator_Admit(t *testing.T) { - for _, c := range cases { - t.Run(c.testName, func(t *testing.T) { - validator := SnapshotValidator{} - - validator.initialized = true - validator.client = fake.NewSimpleClientset() - validator.extClient = extFake.NewSimpleClientset() - - objJS, err := meta.MarshalToJson(&c.object, api.SchemeGroupVersion) - if err != nil { - panic(err) - } - oldObjJS, err := meta.MarshalToJson(&c.oldObject, api.SchemeGroupVersion) - if err != nil { - panic(err) - } - - req := new(admission.AdmissionRequest) - - req.Kind = c.kind - req.Name = c.objectName - req.Namespace = c.namespace - req.Operation = c.operation - req.UserInfo = authenticationV1.UserInfo{} - req.Object.Raw = objJS - req.OldObject.Raw = oldObjJS - - if c.operation == admission.Delete { - req.Object = runtime.RawExtension{} - } - if c.operation != admission.Update { - req.OldObject = runtime.RawExtension{} - } - - if c.heatUp { - if _, err := validator.extClient.KubedbV1alpha1().MongoDBs(c.namespace).Create(sampleMongoDB()); err != nil && !kerr.IsAlreadyExists(err) { - t.Errorf(err.Error()) - } - } - - response := validator.Admit(req) - if c.result == true { - if response.Allowed != true { - t.Errorf("expected: 'Allowed=true'. but got response: %v", response) - } - } else if c.result == false { - if response.Allowed == true || response.Result.Code == http.StatusInternalServerError { - t.Errorf("expected: 'Allowed=false', but got response: %v", response) - } - } - }) - } - -} - -var cases = []struct { - testName string - kind metaV1.GroupVersionKind - objectName string - namespace string - operation admission.Operation - object api.Snapshot - oldObject api.Snapshot - heatUp bool - result bool -}{ - {"Create Valid Snapshot", - requestKind, - "foo", - "default", - admission.Create, - sampleSnapshot(), - api.Snapshot{}, - true, - true, - }, - {"Create Invalid Snapshot", - requestKind, - "foo", - "default", - admission.Create, - getAwkwardSnapshot(), - api.Snapshot{}, - false, - false, - }, - {"Edit Status", - requestKind, - "foo", - "default", - admission.Update, - editStatus(sampleSnapshot()), - sampleSnapshot(), - false, - true, - }, - {"Delete Snapshot", - requestKind, - "foo", - "default", - admission.Delete, - sampleSnapshot(), - api.Snapshot{}, - false, - true, - }, - {"Delete Non Existing Snapshot", - requestKind, - "foo", - "default", - admission.Delete, - api.Snapshot{}, - api.Snapshot{}, - false, - true, - }, -} - -func sampleSnapshot() api.Snapshot { - return api.Snapshot{ - TypeMeta: metaV1.TypeMeta{ - Kind: api.ResourceKindSnapshot, - APIVersion: api.SchemeGroupVersion.String(), - }, - ObjectMeta: metaV1.ObjectMeta{ - Name: "bar", - Namespace: "default", - Labels: map[string]string{ - api.LabelDatabaseKind: api.ResourceKindMongoDB, - }, - }, - Spec: api.SnapshotSpec{ - DatabaseName: "foo", - Backend: store.Backend{ - Local: &store.LocalSpec{ - MountPath: "/repo", - VolumeSource: core.VolumeSource{ - EmptyDir: &core.EmptyDirVolumeSource{}, - }, - }, - }, - }, - } -} - -func getAwkwardSnapshot() api.Snapshot { - redis := sampleSnapshot() - redis.Spec = api.SnapshotSpec{ - DatabaseName: "foo", - Backend: store.Backend{ - StorageSecretName: "foo-secret", - GCS: &store.GCSSpec{ - Bucket: "bar", - }, - }, - } - return redis -} - -func editStatus(old api.Snapshot) api.Snapshot { - old.Status = api.SnapshotStatus{ - Phase: api.SnapshotPhaseRunning, - } - return old -} - -func sampleMongoDB() *api.MongoDB { - return &api.MongoDB{ - TypeMeta: metaV1.TypeMeta{ - Kind: api.ResourceKindMongoDB, - APIVersion: api.SchemeGroupVersion.String(), - }, - ObjectMeta: metaV1.ObjectMeta{ - Name: "foo", - Namespace: "default", - Labels: map[string]string{ - api.LabelDatabaseKind: api.ResourceKindMongoDB, - }, - }, - Spec: api.MongoDBSpec{ - Version: "3.4", - TerminationPolicy: api.TerminationPolicyDoNotTerminate, - Storage: &core.PersistentVolumeClaimSpec{ - StorageClassName: types.StringP("standard"), - Resources: core.ResourceRequirements{ - Requests: core.ResourceList{ - core.ResourceStorage: resource.MustParse("100Mi"), - }, - }, - }, - Init: &api.InitSpec{ - ScriptSource: &api.ScriptSourceSpec{ - VolumeSource: core.VolumeSource{ - GitRepo: &core.GitRepoVolumeSource{ - Repository: "https://github.com/kubedb/mongodb-init-scripts.git", - Directory: ".", - }, - }, - }, - }, - }, - } -} diff --git a/pkg/admission/util.go b/pkg/admission/util.go deleted file mode 100644 index 1281e0e20a..0000000000 --- a/pkg/admission/util.go +++ /dev/null @@ -1,75 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package admission - -import ( - "fmt" - "strings" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/mergepatch" - meta_util "kmodules.xyz/client-go/meta" -) - -func ValidateUpdate(obj, oldObj runtime.Object, kind string) error { - preconditions := getPreconditionFunc(kind) - _, err := meta_util.CreateStrategicPatch(oldObj, obj, preconditions...) - if err != nil { - if mergepatch.IsPreconditionFailed(err) { - return fmt.Errorf("%v.%v", err, preconditionFailedError(kind)) - } - return err - } - return nil -} - -func getPreconditionFunc(kind string) []mergepatch.PreconditionFunc { - preconditions := []mergepatch.PreconditionFunc{ - mergepatch.RequireKeyUnchanged("apiVersion"), - mergepatch.RequireKeyUnchanged("kind"), - mergepatch.RequireMetadataKeyUnchanged("name"), - mergepatch.RequireMetadataKeyUnchanged("namespace"), - } - - if fields, found := preconditionSpecField[kind]; found { - for _, field := range fields { - preconditions = append(preconditions, - meta_util.RequireChainKeyUnchanged(field), - ) - } - } - return preconditions -} - -var preconditionSpecField = map[string][]string{ - api.ResourceKindDormantDatabase: { - "spec.origin", - }, -} - -func preconditionFailedError(kind string) error { - str := preconditionSpecField[kind] - strList := strings.Join(str, "\n\t") - return fmt.Errorf(strings.Join([]string{`At least one of the following was changed: - apiVersion - kind - name - namespace - status`, strList}, "\n\t")) -} diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index c58c3d0886..ef6611f54b 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -26,7 +26,6 @@ import ( "github.com/appscode/go/log/golog" cm "github.com/jetstack/cert-manager/pkg/client/clientset/versioned" cmInformers "github.com/jetstack/cert-manager/pkg/client/informers/externalversions" - batch "k8s.io/api/batch/v1" ext_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" crd_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" externalInformers "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions" @@ -73,15 +72,6 @@ type Config struct { ExternalInformerFactory externalInformers.SharedInformerFactory CertManagerInformerFactory cmInformers.SharedInformerFactory - // DormantDb queue - DrmnQueue *queue.Worker - DrmnInformer cache.SharedIndexInformer - // job queue - JobQueue *queue.Worker - JobInformer cache.SharedIndexInformer - // snapshot queue - SnapQueue *queue.Worker - SnapInformer cache.SharedIndexInformer // restoreSession queue RSQueue *queue.Worker RSInformer cache.SharedIndexInformer @@ -99,20 +89,8 @@ type Config struct { EnableMutatingWebhook bool } -type Snapshotter interface { - ValidateSnapshot(*api.Snapshot) error +type DBHelper interface { GetDatabase(metav1.ObjectMeta) (runtime.Object, error) - GetSnapshotter(*api.Snapshot) (*batch.Job, error) - WipeOutSnapshot(*api.Snapshot) error SetDatabaseStatus(metav1.ObjectMeta, api.DatabasePhase, string) error UpsertDatabaseAnnotation(metav1.ObjectMeta, map[string]string) error } - -type Deleter interface { - // WaitUntilPaused will block until db pods and service are deleted. PV/PVC will remain intact. - WaitUntilPaused(*api.DormantDatabase) error - // WipeOutDatabase won't need to handle snapshots and PVCs. - // All other elements of database will be Wipedout on WipeOutDatabase function. - // Ex: secrets, wal-g data and other staff that is required. - WipeOutDatabase(*api.DormantDatabase) error -} diff --git a/pkg/controller/dormantdatabase/controller.go b/pkg/controller/dormantdatabase/controller.go deleted file mode 100644 index 3c59c9019a..0000000000 --- a/pkg/controller/dormantdatabase/controller.go +++ /dev/null @@ -1,90 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dormantdatabase - -import ( - "time" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned" - kubedb_informers "kubedb.dev/apimachinery/client/informers/externalversions/kubedb/v1alpha1" - api_listers "kubedb.dev/apimachinery/client/listers/kubedb/v1alpha1" - amc "kubedb.dev/apimachinery/pkg/controller" - - crd_api "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/record" - crdutils "kmodules.xyz/client-go/apiextensions/v1beta1" - "kmodules.xyz/client-go/tools/queue" -) - -type Controller struct { - *amc.Controller - amc.Config - // Deleter interface - deleter amc.Deleter - // tweakListOptions for watcher - tweakListOptions func(*metav1.ListOptions) - // Event Recorder - recorder record.EventRecorder - // DormantDatabase - ddbLister api_listers.DormantDatabaseLister -} - -// NewController creates a new DormantDatabase Controller -func NewController( - controller *amc.Controller, - deleter amc.Deleter, - config amc.Config, - tweakListOptions func(*metav1.ListOptions), - recorder record.EventRecorder, -) *Controller { - // return new DormantDatabase Controller - return &Controller{ - Controller: controller, - deleter: deleter, - Config: config, - tweakListOptions: tweakListOptions, - recorder: recorder, - } -} - -func (c *Controller) EnsureCustomResourceDefinitions() error { - crd := []*crd_api.CustomResourceDefinition{ - api.DormantDatabase{}.CustomResourceDefinition(), - } - return crdutils.RegisterCRDs(c.Client.Discovery(), c.ApiExtKubeClient, crd) -} - -func (c *Controller) InitInformer() cache.SharedIndexInformer { - return c.KubedbInformerFactory.InformerFor(&api.DormantDatabase{}, func(client cs.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return kubedb_informers.NewFilteredDormantDatabaseInformer( - client, - c.WatchNamespace, - resyncPeriod, - cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, - c.tweakListOptions, - ) - }) -} - -func (c *Controller) AddEventHandlerFunc(selector labels.Selector) *queue.Worker { - c.addEventHandler(selector) - return c.DrmnQueue -} diff --git a/pkg/controller/dormantdatabase/dormant_database.go b/pkg/controller/dormantdatabase/dormant_database.go deleted file mode 100644 index fc712ef2f6..0000000000 --- a/pkg/controller/dormantdatabase/dormant_database.go +++ /dev/null @@ -1,86 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dormantdatabase - -import ( - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1/util" - "kubedb.dev/apimachinery/pkg/eventer" - - core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func (c *Controller) create(ddb *api.DormantDatabase) error { - if ddb.Status.Phase == api.DormantDatabasePhasePaused { - return nil - } - - drmn, err := util.UpdateDormantDatabaseStatus(c.ExtClient.KubedbV1alpha1(), ddb, func(in *api.DormantDatabaseStatus) *api.DormantDatabaseStatus { - in.Phase = api.DormantDatabasePhasePausing - return in - }) - if err != nil { - c.recorder.Eventf(ddb, core.EventTypeWarning, eventer.EventReasonFailedToUpdate, err.Error()) - return err - } - *ddb = *drmn - - c.recorder.Event(ddb, core.EventTypeNormal, eventer.EventReasonPausing, "Pausing Database") - - // Pause Database workload - if err := c.deleter.WaitUntilPaused(ddb); err != nil { - c.recorder.Eventf( - ddb, - core.EventTypeWarning, - eventer.EventReasonFailedToDelete, - "Failed to pause. Reason: %v", - err, - ) - return err - } - - c.recorder.Event( - ddb, - core.EventTypeNormal, - eventer.EventReasonSuccessfulPause, - "Successfully paused Database workload", - ) - - _, err = util.UpdateDormantDatabaseStatus(c.ExtClient.KubedbV1alpha1(), ddb, func(in *api.DormantDatabaseStatus) *api.DormantDatabaseStatus { - t := metav1.Now() - in.PausingTime = &t - in.Phase = api.DormantDatabasePhasePaused - in.ObservedGeneration = ddb.Generation - return in - }) - if err != nil { - c.recorder.Eventf(ddb, core.EventTypeWarning, eventer.EventReasonFailedToUpdate, err.Error()) - return err - } - - return nil -} - -func (c *Controller) delete(dormantDb *api.DormantDatabase) error { - if dormantDb.Spec.WipeOut { - if err := c.deleter.WipeOutDatabase(dormantDb); err != nil { - return err - } - } - return nil -} diff --git a/pkg/controller/dormantdatabase/workqueue.go b/pkg/controller/dormantdatabase/workqueue.go deleted file mode 100644 index d41a58863c..0000000000 --- a/pkg/controller/dormantdatabase/workqueue.go +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dormantdatabase - -import ( - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1/util" - - "github.com/appscode/go/log" - "k8s.io/apimachinery/pkg/labels" - core_util "kmodules.xyz/client-go/core/v1" - "kmodules.xyz/client-go/tools/queue" -) - -func (c *Controller) addEventHandler(selector labels.Selector) { - c.DrmnQueue = queue.New("DormantDatabase", c.MaxNumRequeues, c.NumThreads, c.runDormantDatabase) - c.DrmnInformer.AddEventHandler(queue.NewFilteredHandler(queue.NewReconcilableHandler(c.DrmnQueue.GetQueue()), selector)) - c.ddbLister = c.KubedbInformerFactory.Kubedb().V1alpha1().DormantDatabases().Lister() -} - -func (c *Controller) runDormantDatabase(key string) error { - log.Debugf("started processing, key: %v", key) - obj, exists, err := c.DrmnInformer.GetIndexer().GetByKey(key) - if err != nil { - log.Errorf("Fetching object with key %s from store failed with %v", key, err) - return err - } - - if !exists { - log.Debugf("DormantDatabase %s does not exist anymore", key) - } else { - // Note that you also have to check the uid if you have a local controlled resource, which - // is dependent on the actual instance, to detect that a DormantDatabase was recreated with the same name - dormantDatabase := obj.(*api.DormantDatabase).DeepCopy() - if dormantDatabase.DeletionTimestamp != nil { - if core_util.HasFinalizer(dormantDatabase.ObjectMeta, api.GenericKey) { - if err := c.delete(dormantDatabase); err != nil { - log.Errorln(err) - return err - } - _, _, err = util.PatchDormantDatabase(c.ExtClient.KubedbV1alpha1(), dormantDatabase, func(in *api.DormantDatabase) *api.DormantDatabase { - in.ObjectMeta = core_util.RemoveFinalizer(in.ObjectMeta, api.GenericKey) - return in - }) - return err - } - } else { - dormantDatabase, _, err = util.PatchDormantDatabase(c.ExtClient.KubedbV1alpha1(), dormantDatabase, func(in *api.DormantDatabase) *api.DormantDatabase { - in.ObjectMeta = core_util.AddFinalizer(in.ObjectMeta, api.GenericKey) - return in - }) - if err != nil { - log.Errorln(err) - return err - } - if err := c.create(dormantDatabase); err != nil { - log.Errorln(err) - return err - } - } - } - return nil -} diff --git a/pkg/controller/job/controller.go b/pkg/controller/job/controller.go deleted file mode 100644 index 59f8483324..0000000000 --- a/pkg/controller/job/controller.go +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package job - -import ( - "time" - - amc "kubedb.dev/apimachinery/pkg/controller" - - batch "k8s.io/api/batch/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - batchinformer "k8s.io/client-go/informers/batch/v1" - "k8s.io/client-go/kubernetes" - batch_listers "k8s.io/client-go/listers/batch/v1" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/record" - "kmodules.xyz/client-go/tools/queue" -) - -type Controller struct { - *amc.Controller - amc.Config - // SnapshotDoer interface - snapshotter amc.Snapshotter - // tweakListOptions for watcher - tweakListOptions func(*metav1.ListOptions) - // Event Recorder - eventRecorder record.EventRecorder - // Job - jobLister batch_listers.JobLister -} - -// NewController creates a new Controller -func NewController( - controller *amc.Controller, - snapshotter amc.Snapshotter, - config amc.Config, - tweakListOptions func(*metav1.ListOptions), - eventRecorder record.EventRecorder, -) *Controller { - // return new DormantDatabase Controller - return &Controller{ - Controller: controller, - snapshotter: snapshotter, - Config: config, - tweakListOptions: tweakListOptions, - eventRecorder: eventRecorder, - } -} - -func (c *Controller) InitInformer() cache.SharedIndexInformer { - return c.KubeInformerFactory.InformerFor(&batch.Job{}, func(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return batchinformer.NewFilteredJobInformer( - client, - c.WatchNamespace, - resyncPeriod, - cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, - c.tweakListOptions, - ) - }) -} - -func (c *Controller) AddEventHandlerFunc(selector labels.Selector) *queue.Worker { - c.addEventHandler(selector) - return c.JobQueue -} diff --git a/pkg/controller/job/job.go b/pkg/controller/job/job.go deleted file mode 100644 index 24bfa1c061..0000000000 --- a/pkg/controller/job/job.go +++ /dev/null @@ -1,183 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package job - -import ( - "fmt" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1/util" - "kubedb.dev/apimachinery/pkg/eventer" - - "github.com/appscode/go/log" - batch "k8s.io/api/batch/v1" - core "k8s.io/api/core/v1" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func (c *Controller) completeJob(job *batch.Job) error { - deletePolicy := metav1.DeletePropagationBackground - err := c.Client.BatchV1().Jobs(job.Namespace).Delete(job.Name, &metav1.DeleteOptions{ - PropagationPolicy: &deletePolicy, - }) - - if err != nil && !kerr.IsNotFound(err) { - return fmt.Errorf("failed to delete job: %s, reason: %s", job.Name, err) - } - - jobType := job.Labels[api.AnnotationJobType] - if jobType == api.JobTypeBackup { - return c.handleBackupJob(job) - } else if jobType == api.JobTypeRestore { - return c.handleRestoreJob(job) - } - - return nil -} - -func (c *Controller) handleBackupJob(job *batch.Job) error { - for _, o := range job.OwnerReferences { - if o.Kind == api.ResourceKindSnapshot { - snapshot, err := c.ExtClient.KubedbV1alpha1().Snapshots(job.Namespace).Get(o.Name, metav1.GetOptions{}) - if err != nil { - return err - } - - jobSucceeded := job.Status.Succeeded > 0 - - if _, err := util.UpdateSnapshotStatus(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.SnapshotStatus) *api.SnapshotStatus { - if jobSucceeded { - in.Phase = api.SnapshotPhaseSucceeded - } else { - in.Phase = api.SnapshotPhaseFailed - } - t := metav1.Now() - in.CompletionTime = &t - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonFailedToUpdate, - err.Error(), - ) - return err - } - - if _, _, err := util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - delete(in.Labels, api.LabelSnapshotStatus) - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonFailedToUpdate, - err.Error(), - ) - return err - } - - runtimeObj, err := c.snapshotter.GetDatabase(metav1.ObjectMeta{Name: snapshot.Spec.DatabaseName, Namespace: snapshot.Namespace}) - if err != nil { - return nil - } - if jobSucceeded { - c.eventRecorder.Event( - runtimeObj, - core.EventTypeNormal, - eventer.EventReasonSuccessfulSnapshot, - "Successfully completed snapshot", - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeNormal, - eventer.EventReasonSuccessfulSnapshot, - "Successfully completed snapshot", - ) - } else { - c.eventRecorder.Event( - runtimeObj, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - "Failed to complete snapshot", - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - "Failed to complete snapshot", - ) - } - - return nil - } - } - - log.Errorf(`resource Job "%s/%s" doesn't have OwnerReference for Snapshot`, job.Namespace, job.Name) - return nil -} - -func (c *Controller) handleRestoreJob(job *batch.Job) error { - for _, o := range job.OwnerReferences { - if o.Kind == job.Labels[api.LabelDatabaseKind] { - jobSucceeded := job.Status.Succeeded > 0 - - var phase api.DatabasePhase - var reason string - objectMeta := metav1.ObjectMeta{Name: o.Name, Namespace: job.Namespace} - - if jobSucceeded { - phase = api.DatabasePhaseRunning - if err := c.snapshotter.UpsertDatabaseAnnotation(objectMeta, map[string]string{ - api.AnnotationInitialized: "", - }); err != nil { - return err - } - } else { - phase = api.DatabasePhaseFailed - reason = "Failed to complete initialization" - } - if err := c.snapshotter.SetDatabaseStatus(objectMeta, phase, reason); err != nil { - return err - } - runtimeObj, err := c.snapshotter.GetDatabase(objectMeta) - if err != nil { - log.Errorln(err) - return nil - } - if jobSucceeded { - c.eventRecorder.Event( - runtimeObj, - core.EventTypeNormal, - eventer.EventReasonSuccessfulInitialize, - "Successfully completed initialization", - ) - } else { - c.eventRecorder.Event( - runtimeObj, - core.EventTypeWarning, - eventer.EventReasonFailedToInitialize, - "Failed to complete initialization", - ) - } - return nil - } - } - log.Errorf(`resource Job "%s/%s" doesn't have OwnerReference for %s`, job.Namespace, job.Name, job.Labels[api.LabelDatabaseKind]) - return nil -} diff --git a/pkg/controller/job/workqueue.go b/pkg/controller/job/workqueue.go deleted file mode 100644 index c489bcb7a7..0000000000 --- a/pkg/controller/job/workqueue.go +++ /dev/null @@ -1,88 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package job - -import ( - "github.com/appscode/go/log" - "github.com/appscode/go/types" - batch "k8s.io/api/batch/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" - "kmodules.xyz/client-go/tools/queue" -) - -func (c *Controller) addEventHandler(selector labels.Selector) { - c.JobQueue = queue.New("Job", c.MaxNumRequeues, c.NumThreads, c.runJob) - c.jobLister = c.KubeInformerFactory.Batch().V1().Jobs().Lister() - c.JobInformer.AddEventHandler(queue.NewFilteredHandler(cache.ResourceEventHandlerFuncs{ - AddFunc: func(obj interface{}) { - job := obj.(*batch.Job) - if job.Status.Succeeded > 0 || job.Status.Failed > types.Int32(job.Spec.BackoffLimit) { - queue.Enqueue(c.JobQueue.GetQueue(), obj) - } - }, - UpdateFunc: func(old interface{}, new interface{}) { - oldObj := old.(*batch.Job) - newObj := new.(*batch.Job) - if isJobCompleted(oldObj, newObj) { - queue.Enqueue(c.JobQueue.GetQueue(), new) - } - }, - DeleteFunc: func(obj interface{}) { - job, ok := obj.(*batch.Job) - if !ok { - log.Warningln("Invalid Job object") - return - } - if job.Status.Succeeded == 0 && job.Status.Failed <= types.Int32(job.Spec.BackoffLimit) { - queue.Enqueue(c.JobQueue.GetQueue(), obj) - } - }, - }, selector)) -} - -func isJobCompleted(old, new *batch.Job) bool { - if old.Status.Succeeded == 0 && new.Status.Succeeded > 0 { - return true - } - if old.Status.Failed < types.Int32(old.Spec.BackoffLimit) && new.Status.Failed >= types.Int32(new.Spec.BackoffLimit) { - return true - } - return false -} - -func (c *Controller) runJob(key string) error { - log.Debugf("started processing, key: %v", key) - obj, exists, err := c.JobInformer.GetIndexer().GetByKey(key) - if err != nil { - log.Errorf("Fetching object with key %s from store failed with %v", key, err) - return err - } - - if !exists { - log.Debugf("Job %s does not exist anymore", key) - } else { - // Note that you also have to check the uid if you have a local controlled resource, which - // is dependent on the actual instance, to detect that a Job was recreated with the same name - job := obj.(*batch.Job).DeepCopy() - if err := c.completeJob(job); err != nil { - log.Errorln(err) - return err - } - } - return nil -} diff --git a/pkg/controller/lib.go b/pkg/controller/lib.go index d75d055b4c..61c1664935 100644 --- a/pkg/controller/lib.go +++ b/pkg/controller/lib.go @@ -18,18 +18,15 @@ package controller import ( "math" - "path/filepath" "time" api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" "github.com/appscode/go/log" - "gomodules.xyz/stow" _ "gomodules.xyz/stow/azure" _ "gomodules.xyz/stow/google" _ "gomodules.xyz/stow/s3" appsv1 "k8s.io/api/apps/v1" - batch "k8s.io/api/batch/v1" core "k8s.io/api/core/v1" policyv1beta1 "k8s.io/api/policy/v1beta1" crd_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" @@ -39,54 +36,11 @@ import ( "k8s.io/apimachinery/pkg/util/wait" core_util "kmodules.xyz/client-go/core/v1" policy_util "kmodules.xyz/client-go/policy/v1beta1" - "kmodules.xyz/objectstore-api/osm" "stash.appscode.dev/stash/apis/stash/v1beta1" ) const UtilVolumeName = "util-volume" -func (c *Controller) DeleteSnapshotData(snapshot *api.Snapshot) error { - cfg, err := osm.NewOSMContext(c.Client, snapshot.Spec.Backend, snapshot.Namespace) - if err != nil { - return err - } - - loc, err := stow.Dial(cfg.Provider, cfg.Config) - if err != nil { - return err - } - bucket, err := snapshot.Spec.Backend.Container() - if err != nil { - return err - } - container, err := loc.Container(bucket) - if err != nil { - return err - } - - prefixLocation, _ := snapshot.Location() // error checked by .Container() - prefix := filepath.Join(prefixLocation, snapshot.Name) - prefix += "/" // A separator after prefix to prevent multiple snapshot's prefix matching. ref: https://github.com/kubedb/project/issues/377 - cursor := stow.CursorStart - for { - items, next, err := container.Items(prefix, cursor, 50) - if err != nil { - return err - } - for _, item := range items { - if err := container.RemoveItem(item.ID()); err != nil { - return err - } - } - cursor = next - if stow.IsCursorEnd(cursor) { - break - } - } - - return nil -} - func (c *Controller) checkGoverningService(name, namespace string) (bool, error) { _, err := c.Client.CoreV1().Services(namespace).Get(name, metav1.GetOptions{}) if err != nil { @@ -123,53 +77,6 @@ func (c *Controller) CreateGoverningService(name, namespace string) error { return err } -func (c *Controller) SetJobOwnerReference(snapshot *api.Snapshot, job *batch.Job) error { - secret, err := c.Client.CoreV1().Secrets(snapshot.Namespace).Get(snapshot.OSMSecretName(), metav1.GetOptions{}) - if err != nil { - if !kerr.IsNotFound(err) { - return err - } - } else { - _, _, err := core_util.PatchSecret(c.Client, secret, func(in *core.Secret) *core.Secret { - in.SetOwnerReferences([]metav1.OwnerReference{ - { - APIVersion: batch.SchemeGroupVersion.String(), - Kind: "Job", - Name: job.Name, - UID: job.UID, - }, - }) - return in - }) - if err != nil { - return err - } - } - - pvc, err := c.Client.CoreV1().PersistentVolumeClaims(snapshot.Namespace).Get(job.Name, metav1.GetOptions{}) - if err != nil { - if !kerr.IsNotFound(err) { - return err - } - } else { - _, _, err := core_util.PatchPVC(c.Client, pvc, func(in *core.PersistentVolumeClaim) *core.PersistentVolumeClaim { - in.SetOwnerReferences([]metav1.OwnerReference{ - { - APIVersion: batch.SchemeGroupVersion.String(), - Kind: "Job", - Name: job.Name, - UID: job.UID, - }, - }) - return in - }) - if err != nil { - return err - } - } - return nil -} - // GetVolumeForSnapshot returns pvc or empty directory depending on StorageType. // In case of PVC, this function will create a PVC then returns the volume. func (c *Controller) GetVolumeForSnapshot(st api.StorageType, pvcSpec *core.PersistentVolumeClaimSpec, jobName, namespace string) (*core.Volume, error) { diff --git a/pkg/controller/restoresession/controller.go b/pkg/controller/restoresession/controller.go index 12d982a63e..2563046019 100644 --- a/pkg/controller/restoresession/controller.go +++ b/pkg/controller/restoresession/controller.go @@ -36,7 +36,7 @@ type Controller struct { *amc.Controller amc.Config // SnapshotDoer interface - snapshotter amc.Snapshotter + snapshotter amc.DBHelper // tweakListOptions for watcher tweakListOptions func(*metav1.ListOptions) // Event Recorder @@ -48,12 +48,11 @@ type Controller struct { // NewController creates a new Controller func NewController( controller *amc.Controller, - snapshotter amc.Snapshotter, + snapshotter amc.DBHelper, config amc.Config, tweakListOptions func(*metav1.ListOptions), eventRecorder record.EventRecorder, ) *Controller { - // return new DormantDatabase Controller return &Controller{ Controller: controller, snapshotter: snapshotter, diff --git a/pkg/controller/snapshot/controller.go b/pkg/controller/snapshot/controller.go deleted file mode 100644 index a90714c27c..0000000000 --- a/pkg/controller/snapshot/controller.go +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - "time" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned" - kubedb_informers "kubedb.dev/apimachinery/client/informers/externalversions/kubedb/v1alpha1" - api_listers "kubedb.dev/apimachinery/client/listers/kubedb/v1alpha1" - amc "kubedb.dev/apimachinery/pkg/controller" - jobc "kubedb.dev/apimachinery/pkg/controller/job" - - crd_api "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/client-go/tools/cache" - "k8s.io/client-go/tools/record" - crdutils "kmodules.xyz/client-go/apiextensions/v1beta1" - "kmodules.xyz/client-go/tools/queue" -) - -type Controller struct { - *amc.Controller - amc.Config - // Snapshotter interface - snapshotter amc.Snapshotter - // tweakListOptions for watcher - tweakListOptions func(*metav1.ListOptions) - // Event Recorder - eventRecorder record.EventRecorder - // Snapshot - snLister api_listers.SnapshotLister -} - -// NewController creates a new Controller -func NewController( - controller *amc.Controller, - snapshotter amc.Snapshotter, - config amc.Config, - tweakListOptions func(*metav1.ListOptions), - eventRecorder record.EventRecorder, -) *Controller { - // return new DormantDatabase Controller - return &Controller{ - Controller: controller, - snapshotter: snapshotter, - Config: config, - tweakListOptions: tweakListOptions, - eventRecorder: eventRecorder, - } -} - -func (c *Controller) EnsureCustomResourceDefinitions() error { - crd := []*crd_api.CustomResourceDefinition{ - api.Snapshot{}.CustomResourceDefinition(), - } - return crdutils.RegisterCRDs(c.Client.Discovery(), c.ApiExtKubeClient, crd) -} - -// InitInformer ensures snapshot watcher and returns queue.Worker. -// So, it is possible to start queue.run from other package/repositories -// Return type: snapshotInformer, JobInformer -func (c *Controller) InitInformer() (cache.SharedIndexInformer, cache.SharedIndexInformer) { - c.SnapInformer = c.KubedbInformerFactory.InformerFor(&api.Snapshot{}, func(client cs.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { - return kubedb_informers.NewFilteredSnapshotInformer( - client, - c.WatchNamespace, - resyncPeriod, - cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, - c.tweakListOptions, - ) - }) - c.JobInformer = jobc.NewController(c.Controller, c.snapshotter, c.Config, c.tweakListOptions, c.eventRecorder).InitInformer() - return c.SnapInformer, c.JobInformer -} - -// AddEventHandlerFunc adds EventHandler func. Before calling this, -// controller.Informer needs to be initialized -// Return type: Snapshot queue as 1st parameter and Job.Queue as 2nd. -func (c *Controller) AddEventHandlerFunc(selector labels.Selector) (*queue.Worker, *queue.Worker) { - c.addEventHandler(selector) - c.JobQueue = jobc.NewController(c.Controller, c.snapshotter, c.Config, c.tweakListOptions, c.eventRecorder).AddEventHandlerFunc(selector) - return c.SnapQueue, c.JobQueue -} diff --git a/pkg/controller/snapshot/cron.go b/pkg/controller/snapshot/cron.go deleted file mode 100644 index ba87546b72..0000000000 --- a/pkg/controller/snapshot/cron.go +++ /dev/null @@ -1,248 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - "errors" - "fmt" - "sync" - "time" - - apiCatalog "kubedb.dev/apimachinery/apis/catalog/v1alpha1" - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - cs "kubedb.dev/apimachinery/client/clientset/versioned" - "kubedb.dev/apimachinery/pkg/eventer" - - "github.com/appscode/go/log" - cmap "github.com/orcaman/concurrent-map" - cron "github.com/robfig/cron/v3" - core "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/client-go/dynamic" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/tools/record" - discovery_util "kmodules.xyz/client-go/discovery" - meta_util "kmodules.xyz/client-go/meta" -) - -type CronControllerInterface interface { - StartCron() - // ScheduleBackup takes parameter DB-runtime object, DB.scheduleSpec.BackupSchedule and DB-Version-Catalog - ScheduleBackup(db runtime.Object, scheduleSpec *api.BackupScheduleSpec, catalog runtime.Object) error - StopBackupScheduling(metav1.ObjectMeta) - StopCron() -} - -type cronController struct { - // kube client - kubeClient kubernetes.Interface - // ThirdPartyExtension client - extClient cs.Interface - // dynamic client - dynamicClient dynamic.Interface - // For Internal Cron Job - cron *cron.Cron - // Store Cron Job EntryID for further use - cronEntryIDs cmap.ConcurrentMap - // Event Recorder - eventRecorder record.EventRecorder - // To perform start operation once - once sync.Once -} - -/* - NewCronController returns CronControllerInterface. - Need to call StartCron() method to start Cron. -*/ -func NewCronController(client kubernetes.Interface, extClient cs.Interface, dc dynamic.Interface) CronControllerInterface { - return &cronController{ - kubeClient: client, - extClient: extClient, - dynamicClient: dc, - cron: cron.New(), - cronEntryIDs: cmap.New(), - eventRecorder: eventer.NewEventRecorder(client, "Cron controller"), - } -} - -func (c *cronController) StartCron() { - c.once.Do(func() { - c.cron.Start() - }) -} - -func (c *cronController) ScheduleBackup( - // Runtime Object to push event - db runtime.Object, - // BackupScheduleSpec - scheduleSpec *api.BackupScheduleSpec, - // DBVersion catalog - catalog runtime.Object, -) error { - dbObjectMeta, err := meta.Accessor(db) - if err != nil { - return err - } - // cronEntry name - cronEntryName := fmt.Sprintf("%v@%v", dbObjectMeta.GetName(), dbObjectMeta.GetNamespace()) - - invoker := &snapshotInvoker{ - kubeClient: c.kubeClient, - extClient: c.extClient, - dynamicClient: c.dynamicClient, - db: db, - dbMetaObject: dbObjectMeta, - scheduleSpec: scheduleSpec, - catalog: catalog, - eventRecorder: c.eventRecorder, - } - - // Remove previous cron job if exist - if id, exists := c.cronEntryIDs.Pop(cronEntryName); exists { - c.cron.Remove(id.(cron.EntryID)) - } - - // Set cron job - entryID, err := c.cron.AddFunc(scheduleSpec.CronExpression, func() { - if err := invoker.createScheduledSnapshot(); err != nil { - invoker.eventRecorder.Eventf( - invoker.db, - core.EventTypeWarning, - eventer.EventReasonFailedToList, - err.Error(), - ) - log.Errorf(err.Error()) - } - }) - if err != nil { - return err - } - - // Add job entryID - c.cronEntryIDs.Set(cronEntryName, entryID) - - return nil -} - -func (c *cronController) StopBackupScheduling(om metav1.ObjectMeta) { - // cronEntry name - cronEntryName := fmt.Sprintf("%v@%v", om.Name, om.Namespace) - - if id, exists := c.cronEntryIDs.Pop(cronEntryName); exists { - c.cron.Remove(id.(cron.EntryID)) - } -} - -func (c *cronController) StopCron() { - c.cron.Stop() -} - -type snapshotInvoker struct { - kubeClient kubernetes.Interface - extClient cs.Interface - dynamicClient dynamic.Interface - db runtime.Object - dbMetaObject metav1.Object - scheduleSpec *api.BackupScheduleSpec - catalog runtime.Object - eventRecorder record.EventRecorder -} - -func (s *snapshotInvoker) createScheduledSnapshot() error { - dbKind := meta_util.GetKind(s.db) - catalogKind := meta_util.GetKind(s.catalog) - catalogMetaObject, err := meta.Accessor(s.catalog) - if err != nil { - return err - } - - gvkCatalog := apiCatalog.SchemeGroupVersion.WithKind(catalogKind) - gvrCatalog, err := discovery_util.ResourceForGVK(s.kubeClient.Discovery(), gvkCatalog) - if err != nil { - return fmt.Errorf("failed to get 'gvrCatalog' for %v/%v. Reason: %v", catalogKind, catalogMetaObject, err) - } - - updatedCatalog, err := s.dynamicClient.Resource(gvrCatalog).Get(catalogMetaObject.GetName(), metav1.GetOptions{}) - if err != nil { - return fmt.Errorf("failed to get DB Catalog %v/%v. Reason: %v", catalogKind, catalogMetaObject, err) - } - - if deprecated, found, err := unstructured.NestedBool(updatedCatalog.UnstructuredContent(), "scheduleSpec", "deprecated"); err != nil { - return fmt.Errorf("failed to get scheduleSpec.Deprecated value. Reason: %v", err) - } else if found && deprecated { - return fmt.Errorf("%v %s/%s is using deprecated version %v. Skipped processing scheduler", - dbKind, s.dbMetaObject.GetNamespace(), s.dbMetaObject.GetName(), catalogMetaObject) - } - - labelMap := map[string]string{ - api.LabelDatabaseKind: dbKind, - api.LabelDatabaseName: s.dbMetaObject.GetName(), - api.LabelSnapshotStatus: string(api.SnapshotPhaseRunning), - } - - snapshotList, err := s.extClient.KubedbV1alpha1().Snapshots(s.dbMetaObject.GetNamespace()).List(metav1.ListOptions{ - LabelSelector: labels.Set(labelMap).AsSelector().String(), - }) - if err != nil { - return fmt.Errorf("failed to list Snapshots. Reason: %v", err) - } - - if len(snapshotList.Items) > 0 { - return errors.New("skipping scheduled Backup. One is still active") - } - - now := time.Now().UTC() - snapshotName := fmt.Sprintf("%v-%v", s.dbMetaObject.GetName(), now.Format("20060102-150405")) - - if _, err = s.createSnapshot(snapshotName); err != nil { - return err - } - return nil -} - -func (s *snapshotInvoker) createSnapshot(snapshotName string) (*api.Snapshot, error) { - labelMap := map[string]string{ - api.LabelDatabaseKind: meta_util.GetKind(s.db), - api.LabelDatabaseName: s.dbMetaObject.GetName(), - } - - snapshot := &api.Snapshot{ - ObjectMeta: metav1.ObjectMeta{ - Name: snapshotName, - Namespace: s.dbMetaObject.GetNamespace(), - Labels: labelMap, - }, - Spec: api.SnapshotSpec{ - DatabaseName: s.dbMetaObject.GetName(), - Backend: s.scheduleSpec.Backend, - StorageType: s.scheduleSpec.StorageType, - PodTemplate: s.scheduleSpec.PodTemplate, - PodVolumeClaimSpec: s.scheduleSpec.PodVolumeClaimSpec, - }, - } - - snapshot, err := s.extClient.KubedbV1alpha1().Snapshots(snapshot.Namespace).Create(snapshot) - if err != nil { - return nil, fmt.Errorf("failed to create Snapshot. Reason: %v", err) - } - - return snapshot, nil -} diff --git a/pkg/controller/snapshot/snapshot.go b/pkg/controller/snapshot/snapshot.go deleted file mode 100644 index f826204ac1..0000000000 --- a/pkg/controller/snapshot/snapshot.go +++ /dev/null @@ -1,354 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - "fmt" - - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1/util" - "kubedb.dev/apimachinery/pkg/eventer" - - "github.com/appscode/go/log" - core "k8s.io/api/core/v1" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/labels" - kutil "kmodules.xyz/client-go" - "kmodules.xyz/objectstore-api/osm" -) - -func (c *Controller) create(snapshot *api.Snapshot) error { - if snapshot.Status.StartTime == nil { - snap, err := util.UpdateSnapshotStatus(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.SnapshotStatus) *api.SnapshotStatus { - t := metav1.Now() - in.StartTime = &t - return in - }) - if err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - *snapshot = *snap - } - - // Do not process "completed", aka "failed" or "succeeded", snapshots. - if snapshot.Status.Phase == api.SnapshotPhaseFailed || snapshot.Status.Phase == api.SnapshotPhaseSucceeded { - // Although the snapshot is "completed", yet the snapshot CRD can contain annotation "snapshot.kubedb.com/status: Running", - // due to failure of operator in critical moment. So, Make sure the "completed" snapshot doesn't have - // annotation "snapshot.kubedb.com/status: Running". - // Error may occur when the operator just restarted and the Webhooks is not in working state yet. So retry for "InternalError". - if _, _, err := util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - delete(in.Labels, api.LabelSnapshotStatus) - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - return nil - } - - if _, _, err := util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - in.Labels[api.LabelDatabaseName] = snapshot.Spec.DatabaseName - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - - // Validate DatabaseSnapshot - if err := c.snapshotter.ValidateSnapshot(snapshot); err != nil { - if kutil.IsRequestRetryable(err) { - return err - } - - if _, e2 := util.MarkAsFailedSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, err.Error()); e2 != nil { - return e2 // retry if retryable error - } - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - err.Error(), - ) - return nil // stop retry - } - - // Check running snapshot - running, err := c.isSnapshotRunning(snapshot) - if err != nil { - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - if running { - msg := "One Snapshot is already Running" - if _, e2 := util.MarkAsFailedSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, msg); e2 != nil { - return e2 // retry if retryable error - } - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - msg, - ) - return nil - } - - db, err := c.snapshotter.GetDatabase(metav1.ObjectMeta{Name: snapshot.Spec.DatabaseName, Namespace: snapshot.Namespace}) - if err != nil { - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - - secret, err := osm.NewOSMSecret(c.Client, snapshot.OSMSecretName(), snapshot.Namespace, snapshot.Spec.Backend) - if err != nil { - msg := fmt.Sprintf("Failed to generate osm secret. Reason: %v", err) - if _, e2 := util.MarkAsFailedSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, msg); e2 != nil { - return e2 // retry if retryable error - } - c.eventRecorder.Event( - db, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - msg, - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - msg, - ) - return nil // don't retry - } - - if _, err = c.Client.CoreV1().Secrets(secret.Namespace).Create(secret); err != nil && !kerr.IsAlreadyExists(err) { - message := fmt.Sprintf("Failed to create osm secret. Reason: %v", err) - c.eventRecorder.Event( - db, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - return err - } - - // Do not check bucket access for local volume - if snapshot.Spec.Local == nil { - if err := osm.CheckBucketAccess(c.Client, snapshot.Spec.Backend, snapshot.Namespace); err != nil { - if _, e2 := util.MarkAsFailedSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, err.Error()); e2 != nil { - return e2 // retry if retryable error - } - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotFailed, - err.Error(), - ) - return nil // don't retry - } - } - - job, err := c.snapshotter.GetSnapshotter(snapshot) - if err != nil { - message := fmt.Sprintf("Failed to create Snapshotter Job. Reason: %v", err) - c.eventRecorder.Event( - db, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - - // If error is not retryable then mark the snapshot as failed and don't retry - if !kutil.IsRequestRetryable(err) { - if _, e2 := util.MarkAsFailedSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, err.Error()); e2 != nil { - return e2 // retry if retryable error - } - return nil // don't retry - } - - return err - } - - if _, err := util.UpdateSnapshotStatus(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.SnapshotStatus) *api.SnapshotStatus { - in.Phase = api.SnapshotPhaseRunning - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - - if _, _, err = util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - in.Labels[api.LabelDatabaseName] = snapshot.Spec.DatabaseName - in.Labels[api.LabelSnapshotStatus] = string(api.SnapshotPhaseRunning) - return in - }); err != nil { - c.eventRecorder.Eventf( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - - c.eventRecorder.Event( - db, - core.EventTypeNormal, - eventer.EventReasonStarting, - "Backup running", - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeNormal, - eventer.EventReasonStarting, - "Backup running", - ) - - job, err = c.Client.BatchV1().Jobs(snapshot.Namespace).Create(job) - if err != nil { - message := fmt.Sprintf("Failed to create snapshot job. Reason: %v", err) - c.eventRecorder.Event( - db, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - message, - ) - return err - } - - if err := c.SetJobOwnerReference(snapshot, job); err != nil { - log.Errorln(err) - } - - return nil -} - -func (c *Controller) delete(snapshot *api.Snapshot) error { - db, err := c.snapshotter.GetDatabase(metav1.ObjectMeta{Name: snapshot.Spec.DatabaseName, Namespace: snapshot.Namespace}) - // Database may not exists while dormantdb is deleted and wipedout. - // So, skip error if not found. But process the rest. - if err != nil && !kerr.IsNotFound(err) { - c.eventRecorder.Event( - snapshot, - core.EventTypeWarning, - eventer.EventReasonSnapshotError, - err.Error(), - ) - return err - } - - if db != nil { - c.eventRecorder.Eventf( - db, - core.EventTypeNormal, - eventer.EventReasonWipingOut, - "Wiping out Snapshot: %v", - snapshot.Name, - ) - } - - if err := c.snapshotter.WipeOutSnapshot(snapshot); err != nil { - if db != nil { - c.eventRecorder.Eventf( - db, - core.EventTypeWarning, - eventer.EventReasonFailedToWipeOut, - "Failed to wipeOut. Reason: %v", - err, - ) - } - return err - } - - if db != nil { - c.eventRecorder.Eventf( - db, - core.EventTypeNormal, - eventer.EventReasonSuccessfulWipeOut, - "Successfully wiped out Snapshot: %v", - snapshot.Name, - ) - } - return nil -} - -func (c *Controller) isSnapshotRunning(snapshot *api.Snapshot) (bool, error) { - labelMap := map[string]string{ - api.LabelDatabaseKind: snapshot.Labels[api.LabelDatabaseKind], - api.LabelDatabaseName: snapshot.Spec.DatabaseName, - api.LabelSnapshotStatus: string(api.SnapshotPhaseRunning), - } - - snapshotList, err := c.snLister.Snapshots(snapshot.Namespace).List(labels.SelectorFromSet(labelMap)) - if err != nil { - return false, err - } - - if len(snapshotList) > 0 { - return true, nil - } - - return false, nil -} diff --git a/pkg/controller/snapshot/workqueue.go b/pkg/controller/snapshot/workqueue.go deleted file mode 100644 index 096bd2041e..0000000000 --- a/pkg/controller/snapshot/workqueue.go +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright The KubeDB Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package snapshot - -import ( - api "kubedb.dev/apimachinery/apis/kubedb/v1alpha1" - "kubedb.dev/apimachinery/client/clientset/versioned/typed/kubedb/v1alpha1/util" - - "github.com/appscode/go/log" - "k8s.io/apimachinery/pkg/labels" - kutil "kmodules.xyz/client-go" - core_util "kmodules.xyz/client-go/core/v1" - "kmodules.xyz/client-go/tools/queue" -) - -func (c *Controller) addEventHandler(selector labels.Selector) { - c.SnapQueue = queue.New("Snapshot", c.MaxNumRequeues, c.NumThreads, c.runSnapshot) - c.snLister = c.KubedbInformerFactory.Kubedb().V1alpha1().Snapshots().Lister() - c.SnapInformer.AddEventHandler(queue.NewFilteredHandler(queue.NewEventHandler(c.SnapQueue.GetQueue(), func(old interface{}, new interface{}) bool { - snapshot := new.(*api.Snapshot) - return snapshot.DeletionTimestamp != nil - }), selector)) -} - -func (c *Controller) runSnapshot(key string) error { - log.Debugf("started processing, key: %v", key) - obj, exists, err := c.SnapInformer.GetIndexer().GetByKey(key) - if err != nil { - log.Errorf("Fetching object with key %s from store failed with %v", key, err) - return err - } - - if !exists { - log.Debugf("Snapshot %s does not exist anymore", key) - } else { - // Note that you also have to check the uid if you have a local controlled resource, which - // is dependent on the actual instance, to detect that a Snapshot was recreated with the same name - snapshot := obj.(*api.Snapshot).DeepCopy() - if snapshot.DeletionTimestamp != nil { - if core_util.HasFinalizer(snapshot.ObjectMeta, api.GenericKey) { - if err := c.delete(snapshot); kutil.IsRequestRetryable(err) { - log.Errorln(err) - return err - } - _, _, err = util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - in.ObjectMeta = core_util.RemoveFinalizer(in.ObjectMeta, api.GenericKey) - return in - }) - return err - } - } else { - snapshot, _, err = util.PatchSnapshot(c.ExtClient.KubedbV1alpha1(), snapshot, func(in *api.Snapshot) *api.Snapshot { - in.ObjectMeta = core_util.AddFinalizer(in.ObjectMeta, api.GenericKey) - return in - }) - if err != nil { - log.Errorln(err) - return err - } - if err := c.create(snapshot); kutil.IsRequestRetryable(err) { - log.Errorln(err) - return err - } - } - } - return nil -} diff --git a/pkg/validator/validate.go b/pkg/validator/validate.go index c938189a58..6142e2b754 100644 --- a/pkg/validator/validate.go +++ b/pkg/validator/validate.go @@ -30,7 +30,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" mona "kmodules.xyz/monitoring-agent-api/api/v1" - store "kmodules.xyz/objectstore-api/api/v1" ) func ValidateStorage(client kubernetes.Interface, storageType api.StorageType, spec *core.PersistentVolumeClaimSpec, storageSpecPath ...string) error { @@ -67,39 +66,6 @@ func ValidateStorage(client kubernetes.Interface, storageType api.StorageType, s return nil } -func ValidateBackupSchedule(client kubernetes.Interface, spec *api.BackupScheduleSpec, namespace string) error { - if spec == nil { - return nil - } - // CronExpression can't be empty - if spec.CronExpression == "" { - return errors.New("invalid cron expression") - } - - return ValidateSnapshotSpec(spec.Backend) -} - -func ValidateSnapshotSpec(spec store.Backend) error { - // BucketName can't be empty - if spec.S3 == nil && spec.GCS == nil && spec.Azure == nil && spec.Swift == nil && spec.Local == nil { - return errors.New("no storage provider is configured") - } - - if spec.Local != nil { - return nil - } - - // Note: S3 & GCS bucket can be accessed with default IAM account credential. So do not require secret - // Must provide Storage credentials for Azure & Swift - if spec.Azure != nil || spec.Swift != nil { - if spec.StorageSecretName == "" { - return fmt.Errorf(`object 'SecretName' is missing in '%v'`, spec) - } - } - - return nil -} - // ValidateMonitorSpec validates the Monitoring spec after all the defaulting is done. func ValidateMonitorSpec(monitorSpec *mona.AgentSpec) error { specData, err := json.Marshal(monitorSpec) diff --git a/vendor/github.com/appscode/go/encoding/yaml/yaml.go b/vendor/github.com/appscode/go/encoding/yaml/yaml.go deleted file mode 100644 index 0755822786..0000000000 --- a/vendor/github.com/appscode/go/encoding/yaml/yaml.go +++ /dev/null @@ -1,88 +0,0 @@ -package yaml - -import ( - "bytes" - "encoding/json" - "unicode" - - "sigs.k8s.io/yaml" -) - -// ToJSON converts a single YAML document into a JSON document -// or returns an error. If the document appears to be JSON the -// YAML decoding path is not used (so that error messages are) -// JSON specific. -func ToJSON(data []byte) ([]byte, error) { - if hasJSONPrefix(data) { - return data, nil - } - b, err := yaml.YAMLToJSON(data) - if err != nil { - return b, err - } - return b, nil - -} - -var jsonPrefix = []byte("{") - -// hasJSONPrefix returns true if the provided buffer appears to start with -// a JSON open brace. -func hasJSONPrefix(buf []byte) bool { - trim := bytes.TrimLeftFunc(buf, unicode.IsSpace) - return bytes.HasPrefix(trim, jsonPrefix) -} - -func Marshal(o interface{}) ([]byte, error) { - data, err := yaml.Marshal(o) - if err != nil { - return nil, err - } - - allFields := make(map[string]interface{}) - err = yaml.Unmarshal(data, &allFields) - if err != nil { - return nil, err - } - nonDefaultFields := make(map[string]interface{}) - for k, v := range allFields { - switch u := v.(type) { - case int, int32, int64: - if u != 0 { - nonDefaultFields[k] = u - } - case string: - if u != "" { - nonDefaultFields[k] = u - } - case bool: - if u != false { - nonDefaultFields[k] = u - } - default: - nonDefaultFields[k] = v - } - } - - data, err = yaml.Marshal(nonDefaultFields) - if err != nil { - return nil, err - } - return data, nil -} - -func Unmarshal(b []byte, i interface{}) error { - return yaml.Unmarshal(b, i) -} - -func ToString(v interface{}) string { - b, err := json.Marshal(v) - if err != nil { - return "" - } - res, err := yaml.JSONToYAML(b) - if err != nil { - return "" - } - return string(res) -} diff --git a/vendor/github.com/appscode/go/strings/fmt.go b/vendor/github.com/appscode/go/strings/fmt.go deleted file mode 100644 index 20474bcb9e..0000000000 --- a/vendor/github.com/appscode/go/strings/fmt.go +++ /dev/null @@ -1,60 +0,0 @@ -package strings - -import ( - "strings" -) - -func Fmt(s string) string { - stripper := &Stripe{ - Result: "", - } - stripper.Write(s) - return stripper.Result -} - -// Striplines wraps an output stream, stripping runs of consecutive empty lines. -// You must call Flush before the output stream will be complete. -// Implements io.WriteCloser, Writer, Closer. -type Stripe struct { - Result string - lastLine []byte - currentLine []byte -} - -func (w *Stripe) Write(p string) (int, error) { - totalN := 0 - s := string(p) - if !strings.Contains(s, "\n") { - w.currentLine = append(w.currentLine, p...) - return 0, nil - } - cur := string(append(w.currentLine, p...)) - lastN := strings.LastIndex(cur, "\n") - s = cur[:lastN] - for _, line := range strings.Split(s, "\n") { - n, err := w.writeLn(line + "\n") - w.lastLine = []byte(line) - if err != nil { - return totalN, err - } - totalN += n - } - rem := cur[(lastN + 1):] - w.currentLine = []byte(rem) - return totalN, nil -} - -// Close flushes the last of the output into the underlying writer. -func (w *Stripe) Close() error { - _, err := w.writeLn(string(w.currentLine)) - return err -} - -func (w *Stripe) writeLn(line string) (n int, err error) { - if strings.TrimSpace(string(w.lastLine)) == "" && strings.TrimSpace(line) == "" { - return 0, nil - } else { - w.Result = w.Result + line - return len(line), nil - } -} diff --git a/vendor/github.com/appscode/go/strings/optionals.go b/vendor/github.com/appscode/go/strings/optionals.go deleted file mode 100644 index 68e9dad085..0000000000 --- a/vendor/github.com/appscode/go/strings/optionals.go +++ /dev/null @@ -1,14 +0,0 @@ -package strings - -import "log" - -func VString(def string, args ...string) string { - v := def - if len(args) == 1 { - v = args[0] - } else if len(args) > 1 { - v = args[0] - log.Printf("Found more than 1 argument when expected 1 %v", args) - } - return v -} diff --git a/vendor/github.com/appscode/go/strings/preconditions.go b/vendor/github.com/appscode/go/strings/preconditions.go deleted file mode 100644 index 36b290fb6d..0000000000 --- a/vendor/github.com/appscode/go/strings/preconditions.go +++ /dev/null @@ -1,11 +0,0 @@ -package strings - -import "strings" - -func Val(v string, def string) string { - trimmed := strings.TrimSpace(v) - if trimmed == "" { - return def - } - return trimmed -} diff --git a/vendor/github.com/appscode/go/strings/strings.go b/vendor/github.com/appscode/go/strings/strings.go deleted file mode 100644 index 71a0f79b40..0000000000 --- a/vendor/github.com/appscode/go/strings/strings.go +++ /dev/null @@ -1,112 +0,0 @@ -package strings - -import ( - "sort" - "strings" - "unicode/utf8" -) - -// Benchmark 19246 ns/op. -func Reverse(s string) string { - size := len(s) - buf := make([]byte, size) - for start := 0; start < size; { - r, n := utf8.DecodeRuneInString(s[start:]) - start += n - utf8.EncodeRune(buf[size-start:], r) - } - return string(buf) -} - -func PrefixFold(s, prefix string) bool { - return len(s) >= len(prefix) && strings.EqualFold(prefix, s[:len(prefix)]) -} - -func IsEmpty(s *string) bool { - return s == nil || *s == "" -} - -func IsBothAlphaNum(a string) bool { - alpha := false - num := false - for _, c := range a { - if (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') { - alpha = true - } else if c >= '0' && c <= '9' { - num = true - } - if alpha && num { - return true - } - } - return false -} - -func Contains(a []string, e string) bool { - for _, s := range a { - if s == e { - return true - } - } - return false -} - -// Allowed char: [a-z0-9]([a-z0-9-]*[a-z0-9])? -// Makes it safe as a subdomain -func DomainForm(s string) string { - runes := make([]rune, len(s)) - for i, r := range strings.ToLower(s) { - if (r >= '0' && r <= '9') || (r >= 'a' && r <= 'z') || (r == '-') || (r == '.') { - runes[i] = r - } else if r == '_' { - runes[i] = '-' // _ --> - - } - } - return strings.Trim(string(runes), "-") -} - -func Filter(s []string, f func(string) bool) []string { - ret := make([]string, 0) - for _, elm := range s { - if !f(elm) { - ret = append(ret, elm) - } - } - return ret -} - -func Join(a []*string, sep string) string { - b := make([]string, len(a)) - for i, s := range a { - b[i] = *s - } - return strings.Join(b, sep) -} - -func EqualSlice(a, b []string) bool { - if a == nil && b == nil { - return true - } - - if a == nil || b == nil { - return false - } - - if len(a) != len(b) { - return false - } - - // Copy slices - aCopy := append([]string(nil), a...) - bCopy := append([]string(nil), b...) - - sort.Strings(aCopy) - sort.Strings(bCopy) - - for i := range aCopy { - if aCopy[i] != bCopy[i] { - return false - } - } - return true -} diff --git a/vendor/github.com/appscode/osm/LICENSE b/vendor/github.com/appscode/osm/LICENSE deleted file mode 100644 index 8dada3edaf..0000000000 --- a/vendor/github.com/appscode/osm/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/appscode/osm/context/lib.go b/vendor/github.com/appscode/osm/context/lib.go deleted file mode 100644 index 5fab0e5d39..0000000000 --- a/vendor/github.com/appscode/osm/context/lib.go +++ /dev/null @@ -1,91 +0,0 @@ -package context - -import ( - "encoding/json" - "errors" - "io/ioutil" - "os" - "path/filepath" - - yc "github.com/appscode/go/encoding/yaml" - "github.com/appscode/go/log" - "github.com/ghodss/yaml" - "github.com/spf13/cobra" - "gomodules.xyz/stow" -) - -type Context struct { - Name string `json:"name"` - Provider string `json:"provider"` - Config stow.ConfigMap `json:"config"` -} - -type OSMConfig struct { - Contexts []*Context `json:"contexts"` - CurrentContext string `json:"current-context"` -} - -func GetConfigPath(cmd *cobra.Command) string { - s, err := cmd.Flags().GetString("osmconfig") - if err != nil { - log.Fatalf("error accessing flag osmconfig for command %s: %v", cmd.Name(), err) - } - return s -} - -func LoadConfig(configPath string) (*OSMConfig, error) { - if _, err := os.Stat(configPath); err != nil { - return nil, err - } - os.Chmod(configPath, 0600) - - config := &OSMConfig{} - bytes, err := ioutil.ReadFile(configPath) - if err != nil { - return nil, err - } - jsonData, err := yc.ToJSON(bytes) - if err != nil { - return nil, err - } - err = json.Unmarshal(jsonData, config) - return config, err -} - -func (config *OSMConfig) Save(configPath string) error { - data, err := yaml.Marshal(config) - if err != nil { - return err - } - os.MkdirAll(filepath.Dir(configPath), 0755) - if err := ioutil.WriteFile(configPath, data, 0600); err != nil { - return err - } - return nil -} - -func (config *OSMConfig) Dial(cliCtx string) (stow.Location, error) { - ctx := config.CurrentContext - if cliCtx != "" { - ctx = cliCtx - } - for _, osmCtx := range config.Contexts { - if osmCtx.Name == ctx { - return stow.Dial(osmCtx.Provider, osmCtx.Config) - } - } - return nil, errors.New("failed to determine context") -} - -func (config *OSMConfig) Context(cliCtx string) (*Context, error) { - ctx := config.CurrentContext - if cliCtx != "" { - ctx = cliCtx - } - for _, osmCtx := range config.Contexts { - if osmCtx.Name == ctx { - return osmCtx, nil - } - } - return nil, errors.New("failed to determine context") -} diff --git a/vendor/github.com/ghodss/yaml/.gitignore b/vendor/github.com/ghodss/yaml/.gitignore deleted file mode 100644 index e256a31e00..0000000000 --- a/vendor/github.com/ghodss/yaml/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# OSX leaves these everywhere on SMB shares -._* - -# Eclipse files -.classpath -.project -.settings/** - -# Emacs save files -*~ - -# Vim-related files -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -*.un~ -Session.vim -.netrwhist - -# Go test binaries -*.test diff --git a/vendor/github.com/ghodss/yaml/.travis.yml b/vendor/github.com/ghodss/yaml/.travis.yml deleted file mode 100644 index 0e9d6edc01..0000000000 --- a/vendor/github.com/ghodss/yaml/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go -go: - - 1.3 - - 1.4 -script: - - go test - - go build diff --git a/vendor/github.com/ghodss/yaml/LICENSE b/vendor/github.com/ghodss/yaml/LICENSE deleted file mode 100644 index 7805d36de7..0000000000 --- a/vendor/github.com/ghodss/yaml/LICENSE +++ /dev/null @@ -1,50 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Sam Ghods - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/ghodss/yaml/README.md b/vendor/github.com/ghodss/yaml/README.md deleted file mode 100644 index 0200f75b4d..0000000000 --- a/vendor/github.com/ghodss/yaml/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# YAML marshaling and unmarshaling support for Go - -[![Build Status](https://travis-ci.org/ghodss/yaml.svg)](https://travis-ci.org/ghodss/yaml) - -## Introduction - -A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs. - -In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/). - -## Compatibility - -This package uses [go-yaml](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility). - -## Caveats - -**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example: - -``` -BAD: - exampleKey: !!binary gIGC - -GOOD: - exampleKey: gIGC -... and decode the base64 data in your code. -``` - -**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys. - -## Installation and usage - -To install, run: - -``` -$ go get github.com/ghodss/yaml -``` - -And import using: - -``` -import "github.com/ghodss/yaml" -``` - -Usage is very similar to the JSON library: - -```go -package main - -import ( - "fmt" - - "github.com/ghodss/yaml" -) - -type Person struct { - Name string `json:"name"` // Affects YAML field names too. - Age int `json:"age"` -} - -func main() { - // Marshal a Person struct to YAML. - p := Person{"John", 30} - y, err := yaml.Marshal(p) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - age: 30 - name: John - */ - - // Unmarshal the YAML back into a Person struct. - var p2 Person - err = yaml.Unmarshal(y, &p2) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(p2) - /* Output: - {John 30} - */ -} -``` - -`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available: - -```go -package main - -import ( - "fmt" - - "github.com/ghodss/yaml" -) - -func main() { - j := []byte(`{"name": "John", "age": 30}`) - y, err := yaml.JSONToYAML(j) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - name: John - age: 30 - */ - j2, err := yaml.YAMLToJSON(y) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(j2)) - /* Output: - {"age":30,"name":"John"} - */ -} -``` diff --git a/vendor/github.com/ghodss/yaml/fields.go b/vendor/github.com/ghodss/yaml/fields.go deleted file mode 100644 index 5860074026..0000000000 --- a/vendor/github.com/ghodss/yaml/fields.go +++ /dev/null @@ -1,501 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. -package yaml - -import ( - "bytes" - "encoding" - "encoding/json" - "reflect" - "sort" - "strings" - "sync" - "unicode" - "unicode/utf8" -) - -// indirect walks down v allocating pointers as needed, -// until it gets to a non-pointer. -// if it encounters an Unmarshaler, indirect stops and returns that. -// if decodingNull is true, indirect stops at the last pointer so it can be set to nil. -func indirect(v reflect.Value, decodingNull bool) (json.Unmarshaler, encoding.TextUnmarshaler, reflect.Value) { - // If v is a named type and is addressable, - // start with its address, so that if the type has pointer methods, - // we find them. - if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { - v = v.Addr() - } - for { - // Load value from interface, but only if the result will be - // usefully addressable. - if v.Kind() == reflect.Interface && !v.IsNil() { - e := v.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { - v = e - continue - } - } - - if v.Kind() != reflect.Ptr { - break - } - - if v.Elem().Kind() != reflect.Ptr && decodingNull && v.CanSet() { - break - } - if v.IsNil() { - if v.CanSet() { - v.Set(reflect.New(v.Type().Elem())) - } else { - v = reflect.New(v.Type().Elem()) - } - } - if v.Type().NumMethod() > 0 { - if u, ok := v.Interface().(json.Unmarshaler); ok { - return u, nil, reflect.Value{} - } - if u, ok := v.Interface().(encoding.TextUnmarshaler); ok { - return nil, u, reflect.Value{} - } - } - v = v.Elem() - } - return nil, nil, v -} - -// A field represents a single field found in a struct. -type field struct { - name string - nameBytes []byte // []byte(name) - equalFold func(s, t []byte) bool // bytes.EqualFold or equivalent - - tag bool - index []int - typ reflect.Type - omitEmpty bool - quoted bool -} - -func fillField(f field) field { - f.nameBytes = []byte(f.name) - f.equalFold = foldFunc(f.nameBytes) - return f -} - -// byName sorts field by name, breaking ties with depth, -// then breaking ties with "name came from json tag", then -// breaking ties with index sequence. -type byName []field - -func (x byName) Len() int { return len(x) } - -func (x byName) Swap(i, j int) { x[i], x[j] = x[j], x[i] } - -func (x byName) Less(i, j int) bool { - if x[i].name != x[j].name { - return x[i].name < x[j].name - } - if len(x[i].index) != len(x[j].index) { - return len(x[i].index) < len(x[j].index) - } - if x[i].tag != x[j].tag { - return x[i].tag - } - return byIndex(x).Less(i, j) -} - -// byIndex sorts field by index sequence. -type byIndex []field - -func (x byIndex) Len() int { return len(x) } - -func (x byIndex) Swap(i, j int) { x[i], x[j] = x[j], x[i] } - -func (x byIndex) Less(i, j int) bool { - for k, xik := range x[i].index { - if k >= len(x[j].index) { - return false - } - if xik != x[j].index[k] { - return xik < x[j].index[k] - } - } - return len(x[i].index) < len(x[j].index) -} - -// typeFields returns a list of fields that JSON should recognize for the given type. -// The algorithm is breadth-first search over the set of structs to include - the top struct -// and then any reachable anonymous structs. -func typeFields(t reflect.Type) []field { - // Anonymous fields to explore at the current level and the next. - current := []field{} - next := []field{{typ: t}} - - // Count of queued names for current level and the next. - count := map[reflect.Type]int{} - nextCount := map[reflect.Type]int{} - - // Types already visited at an earlier level. - visited := map[reflect.Type]bool{} - - // Fields found. - var fields []field - - for len(next) > 0 { - current, next = next, current[:0] - count, nextCount = nextCount, map[reflect.Type]int{} - - for _, f := range current { - if visited[f.typ] { - continue - } - visited[f.typ] = true - - // Scan f.typ for fields to include. - for i := 0; i < f.typ.NumField(); i++ { - sf := f.typ.Field(i) - if sf.PkgPath != "" { // unexported - continue - } - tag := sf.Tag.Get("json") - if tag == "-" { - continue - } - name, opts := parseTag(tag) - if !isValidTag(name) { - name = "" - } - index := make([]int, len(f.index)+1) - copy(index, f.index) - index[len(f.index)] = i - - ft := sf.Type - if ft.Name() == "" && ft.Kind() == reflect.Ptr { - // Follow pointer. - ft = ft.Elem() - } - - // Record found field and index sequence. - if name != "" || !sf.Anonymous || ft.Kind() != reflect.Struct { - tagged := name != "" - if name == "" { - name = sf.Name - } - fields = append(fields, fillField(field{ - name: name, - tag: tagged, - index: index, - typ: ft, - omitEmpty: opts.Contains("omitempty"), - quoted: opts.Contains("string"), - })) - if count[f.typ] > 1 { - // If there were multiple instances, add a second, - // so that the annihilation code will see a duplicate. - // It only cares about the distinction between 1 or 2, - // so don't bother generating any more copies. - fields = append(fields, fields[len(fields)-1]) - } - continue - } - - // Record new anonymous struct to explore in next round. - nextCount[ft]++ - if nextCount[ft] == 1 { - next = append(next, fillField(field{name: ft.Name(), index: index, typ: ft})) - } - } - } - } - - sort.Sort(byName(fields)) - - // Delete all fields that are hidden by the Go rules for embedded fields, - // except that fields with JSON tags are promoted. - - // The fields are sorted in primary order of name, secondary order - // of field index length. Loop over names; for each name, delete - // hidden fields by choosing the one dominant field that survives. - out := fields[:0] - for advance, i := 0, 0; i < len(fields); i += advance { - // One iteration per name. - // Find the sequence of fields with the name of this first field. - fi := fields[i] - name := fi.name - for advance = 1; i+advance < len(fields); advance++ { - fj := fields[i+advance] - if fj.name != name { - break - } - } - if advance == 1 { // Only one field with this name - out = append(out, fi) - continue - } - dominant, ok := dominantField(fields[i : i+advance]) - if ok { - out = append(out, dominant) - } - } - - fields = out - sort.Sort(byIndex(fields)) - - return fields -} - -// dominantField looks through the fields, all of which are known to -// have the same name, to find the single field that dominates the -// others using Go's embedding rules, modified by the presence of -// JSON tags. If there are multiple top-level fields, the boolean -// will be false: This condition is an error in Go and we skip all -// the fields. -func dominantField(fields []field) (field, bool) { - // The fields are sorted in increasing index-length order. The winner - // must therefore be one with the shortest index length. Drop all - // longer entries, which is easy: just truncate the slice. - length := len(fields[0].index) - tagged := -1 // Index of first tagged field. - for i, f := range fields { - if len(f.index) > length { - fields = fields[:i] - break - } - if f.tag { - if tagged >= 0 { - // Multiple tagged fields at the same level: conflict. - // Return no field. - return field{}, false - } - tagged = i - } - } - if tagged >= 0 { - return fields[tagged], true - } - // All remaining fields have the same length. If there's more than one, - // we have a conflict (two fields named "X" at the same level) and we - // return no field. - if len(fields) > 1 { - return field{}, false - } - return fields[0], true -} - -var fieldCache struct { - sync.RWMutex - m map[reflect.Type][]field -} - -// cachedTypeFields is like typeFields but uses a cache to avoid repeated work. -func cachedTypeFields(t reflect.Type) []field { - fieldCache.RLock() - f := fieldCache.m[t] - fieldCache.RUnlock() - if f != nil { - return f - } - - // Compute fields without lock. - // Might duplicate effort but won't hold other computations back. - f = typeFields(t) - if f == nil { - f = []field{} - } - - fieldCache.Lock() - if fieldCache.m == nil { - fieldCache.m = map[reflect.Type][]field{} - } - fieldCache.m[t] = f - fieldCache.Unlock() - return f -} - -func isValidTag(s string) bool { - if s == "" { - return false - } - for _, c := range s { - switch { - case strings.ContainsRune("!#$%&()*+-./:<=>?@[]^_{|}~ ", c): - // Backslash and quote chars are reserved, but - // otherwise any punctuation chars are allowed - // in a tag name. - default: - if !unicode.IsLetter(c) && !unicode.IsDigit(c) { - return false - } - } - } - return true -} - -const ( - caseMask = ^byte(0x20) // Mask to ignore case in ASCII. - kelvin = '\u212a' - smallLongEss = '\u017f' -) - -// foldFunc returns one of four different case folding equivalence -// functions, from most general (and slow) to fastest: -// -// 1) bytes.EqualFold, if the key s contains any non-ASCII UTF-8 -// 2) equalFoldRight, if s contains special folding ASCII ('k', 'K', 's', 'S') -// 3) asciiEqualFold, no special, but includes non-letters (including _) -// 4) simpleLetterEqualFold, no specials, no non-letters. -// -// The letters S and K are special because they map to 3 runes, not just 2: -// * S maps to s and to U+017F 'ſ' Latin small letter long s -// * k maps to K and to U+212A 'K' Kelvin sign -// See http://play.golang.org/p/tTxjOc0OGo -// -// The returned function is specialized for matching against s and -// should only be given s. It's not curried for performance reasons. -func foldFunc(s []byte) func(s, t []byte) bool { - nonLetter := false - special := false // special letter - for _, b := range s { - if b >= utf8.RuneSelf { - return bytes.EqualFold - } - upper := b & caseMask - if upper < 'A' || upper > 'Z' { - nonLetter = true - } else if upper == 'K' || upper == 'S' { - // See above for why these letters are special. - special = true - } - } - if special { - return equalFoldRight - } - if nonLetter { - return asciiEqualFold - } - return simpleLetterEqualFold -} - -// equalFoldRight is a specialization of bytes.EqualFold when s is -// known to be all ASCII (including punctuation), but contains an 's', -// 'S', 'k', or 'K', requiring a Unicode fold on the bytes in t. -// See comments on foldFunc. -func equalFoldRight(s, t []byte) bool { - for _, sb := range s { - if len(t) == 0 { - return false - } - tb := t[0] - if tb < utf8.RuneSelf { - if sb != tb { - sbUpper := sb & caseMask - if 'A' <= sbUpper && sbUpper <= 'Z' { - if sbUpper != tb&caseMask { - return false - } - } else { - return false - } - } - t = t[1:] - continue - } - // sb is ASCII and t is not. t must be either kelvin - // sign or long s; sb must be s, S, k, or K. - tr, size := utf8.DecodeRune(t) - switch sb { - case 's', 'S': - if tr != smallLongEss { - return false - } - case 'k', 'K': - if tr != kelvin { - return false - } - default: - return false - } - t = t[size:] - - } - if len(t) > 0 { - return false - } - return true -} - -// asciiEqualFold is a specialization of bytes.EqualFold for use when -// s is all ASCII (but may contain non-letters) and contains no -// special-folding letters. -// See comments on foldFunc. -func asciiEqualFold(s, t []byte) bool { - if len(s) != len(t) { - return false - } - for i, sb := range s { - tb := t[i] - if sb == tb { - continue - } - if ('a' <= sb && sb <= 'z') || ('A' <= sb && sb <= 'Z') { - if sb&caseMask != tb&caseMask { - return false - } - } else { - return false - } - } - return true -} - -// simpleLetterEqualFold is a specialization of bytes.EqualFold for -// use when s is all ASCII letters (no underscores, etc) and also -// doesn't contain 'k', 'K', 's', or 'S'. -// See comments on foldFunc. -func simpleLetterEqualFold(s, t []byte) bool { - if len(s) != len(t) { - return false - } - for i, b := range s { - if b&caseMask != t[i]&caseMask { - return false - } - } - return true -} - -// tagOptions is the string following a comma in a struct field's "json" -// tag, or the empty string. It does not include the leading comma. -type tagOptions string - -// parseTag splits a struct field's json tag into its name and -// comma-separated options. -func parseTag(tag string) (string, tagOptions) { - if idx := strings.Index(tag, ","); idx != -1 { - return tag[:idx], tagOptions(tag[idx+1:]) - } - return tag, tagOptions("") -} - -// Contains reports whether a comma-separated list of options -// contains a particular substr flag. substr must be surrounded by a -// string boundary or commas. -func (o tagOptions) Contains(optionName string) bool { - if len(o) == 0 { - return false - } - s := string(o) - for s != "" { - var next string - i := strings.Index(s, ",") - if i >= 0 { - s, next = s[:i], s[i+1:] - } - if s == optionName { - return true - } - s = next - } - return false -} diff --git a/vendor/github.com/ghodss/yaml/yaml.go b/vendor/github.com/ghodss/yaml/yaml.go deleted file mode 100644 index 4fb4054a8b..0000000000 --- a/vendor/github.com/ghodss/yaml/yaml.go +++ /dev/null @@ -1,277 +0,0 @@ -package yaml - -import ( - "bytes" - "encoding/json" - "fmt" - "reflect" - "strconv" - - "gopkg.in/yaml.v2" -) - -// Marshals the object into JSON then converts JSON to YAML and returns the -// YAML. -func Marshal(o interface{}) ([]byte, error) { - j, err := json.Marshal(o) - if err != nil { - return nil, fmt.Errorf("error marshaling into JSON: %v", err) - } - - y, err := JSONToYAML(j) - if err != nil { - return nil, fmt.Errorf("error converting JSON to YAML: %v", err) - } - - return y, nil -} - -// Converts YAML to JSON then uses JSON to unmarshal into an object. -func Unmarshal(y []byte, o interface{}) error { - vo := reflect.ValueOf(o) - j, err := yamlToJSON(y, &vo) - if err != nil { - return fmt.Errorf("error converting YAML to JSON: %v", err) - } - - err = json.Unmarshal(j, o) - if err != nil { - return fmt.Errorf("error unmarshaling JSON: %v", err) - } - - return nil -} - -// Convert JSON to YAML. -func JSONToYAML(j []byte) ([]byte, error) { - // Convert the JSON to an object. - var jsonObj interface{} - // We are using yaml.Unmarshal here (instead of json.Unmarshal) because the - // Go JSON library doesn't try to pick the right number type (int, float, - // etc.) when unmarshalling to interface{}, it just picks float64 - // universally. go-yaml does go through the effort of picking the right - // number type, so we can preserve number type throughout this process. - err := yaml.Unmarshal(j, &jsonObj) - if err != nil { - return nil, err - } - - // Marshal this object into YAML. - return yaml.Marshal(jsonObj) -} - -// Convert YAML to JSON. Since JSON is a subset of YAML, passing JSON through -// this method should be a no-op. -// -// Things YAML can do that are not supported by JSON: -// * In YAML you can have binary and null keys in your maps. These are invalid -// in JSON. (int and float keys are converted to strings.) -// * Binary data in YAML with the !!binary tag is not supported. If you want to -// use binary data with this library, encode the data as base64 as usual but do -// not use the !!binary tag in your YAML. This will ensure the original base64 -// encoded data makes it all the way through to the JSON. -func YAMLToJSON(y []byte) ([]byte, error) { - return yamlToJSON(y, nil) -} - -func yamlToJSON(y []byte, jsonTarget *reflect.Value) ([]byte, error) { - // Convert the YAML to an object. - var yamlObj interface{} - err := yaml.Unmarshal(y, &yamlObj) - if err != nil { - return nil, err - } - - // YAML objects are not completely compatible with JSON objects (e.g. you - // can have non-string keys in YAML). So, convert the YAML-compatible object - // to a JSON-compatible object, failing with an error if irrecoverable - // incompatibilties happen along the way. - jsonObj, err := convertToJSONableObject(yamlObj, jsonTarget) - if err != nil { - return nil, err - } - - // Convert this object to JSON and return the data. - return json.Marshal(jsonObj) -} - -func convertToJSONableObject(yamlObj interface{}, jsonTarget *reflect.Value) (interface{}, error) { - var err error - - // Resolve jsonTarget to a concrete value (i.e. not a pointer or an - // interface). We pass decodingNull as false because we're not actually - // decoding into the value, we're just checking if the ultimate target is a - // string. - if jsonTarget != nil { - ju, tu, pv := indirect(*jsonTarget, false) - // We have a JSON or Text Umarshaler at this level, so we can't be trying - // to decode into a string. - if ju != nil || tu != nil { - jsonTarget = nil - } else { - jsonTarget = &pv - } - } - - // If yamlObj is a number or a boolean, check if jsonTarget is a string - - // if so, coerce. Else return normal. - // If yamlObj is a map or array, find the field that each key is - // unmarshaling to, and when you recurse pass the reflect.Value for that - // field back into this function. - switch typedYAMLObj := yamlObj.(type) { - case map[interface{}]interface{}: - // JSON does not support arbitrary keys in a map, so we must convert - // these keys to strings. - // - // From my reading of go-yaml v2 (specifically the resolve function), - // keys can only have the types string, int, int64, float64, binary - // (unsupported), or null (unsupported). - strMap := make(map[string]interface{}) - for k, v := range typedYAMLObj { - // Resolve the key to a string first. - var keyString string - switch typedKey := k.(type) { - case string: - keyString = typedKey - case int: - keyString = strconv.Itoa(typedKey) - case int64: - // go-yaml will only return an int64 as a key if the system - // architecture is 32-bit and the key's value is between 32-bit - // and 64-bit. Otherwise the key type will simply be int. - keyString = strconv.FormatInt(typedKey, 10) - case float64: - // Stolen from go-yaml to use the same conversion to string as - // the go-yaml library uses to convert float to string when - // Marshaling. - s := strconv.FormatFloat(typedKey, 'g', -1, 32) - switch s { - case "+Inf": - s = ".inf" - case "-Inf": - s = "-.inf" - case "NaN": - s = ".nan" - } - keyString = s - case bool: - if typedKey { - keyString = "true" - } else { - keyString = "false" - } - default: - return nil, fmt.Errorf("Unsupported map key of type: %s, key: %+#v, value: %+#v", - reflect.TypeOf(k), k, v) - } - - // jsonTarget should be a struct or a map. If it's a struct, find - // the field it's going to map to and pass its reflect.Value. If - // it's a map, find the element type of the map and pass the - // reflect.Value created from that type. If it's neither, just pass - // nil - JSON conversion will error for us if it's a real issue. - if jsonTarget != nil { - t := *jsonTarget - if t.Kind() == reflect.Struct { - keyBytes := []byte(keyString) - // Find the field that the JSON library would use. - var f *field - fields := cachedTypeFields(t.Type()) - for i := range fields { - ff := &fields[i] - if bytes.Equal(ff.nameBytes, keyBytes) { - f = ff - break - } - // Do case-insensitive comparison. - if f == nil && ff.equalFold(ff.nameBytes, keyBytes) { - f = ff - } - } - if f != nil { - // Find the reflect.Value of the most preferential - // struct field. - jtf := t.Field(f.index[0]) - strMap[keyString], err = convertToJSONableObject(v, &jtf) - if err != nil { - return nil, err - } - continue - } - } else if t.Kind() == reflect.Map { - // Create a zero value of the map's element type to use as - // the JSON target. - jtv := reflect.Zero(t.Type().Elem()) - strMap[keyString], err = convertToJSONableObject(v, &jtv) - if err != nil { - return nil, err - } - continue - } - } - strMap[keyString], err = convertToJSONableObject(v, nil) - if err != nil { - return nil, err - } - } - return strMap, nil - case []interface{}: - // We need to recurse into arrays in case there are any - // map[interface{}]interface{}'s inside and to convert any - // numbers to strings. - - // If jsonTarget is a slice (which it really should be), find the - // thing it's going to map to. If it's not a slice, just pass nil - // - JSON conversion will error for us if it's a real issue. - var jsonSliceElemValue *reflect.Value - if jsonTarget != nil { - t := *jsonTarget - if t.Kind() == reflect.Slice { - // By default slices point to nil, but we need a reflect.Value - // pointing to a value of the slice type, so we create one here. - ev := reflect.Indirect(reflect.New(t.Type().Elem())) - jsonSliceElemValue = &ev - } - } - - // Make and use a new array. - arr := make([]interface{}, len(typedYAMLObj)) - for i, v := range typedYAMLObj { - arr[i], err = convertToJSONableObject(v, jsonSliceElemValue) - if err != nil { - return nil, err - } - } - return arr, nil - default: - // If the target type is a string and the YAML type is a number, - // convert the YAML type to a string. - if jsonTarget != nil && (*jsonTarget).Kind() == reflect.String { - // Based on my reading of go-yaml, it may return int, int64, - // float64, or uint64. - var s string - switch typedVal := typedYAMLObj.(type) { - case int: - s = strconv.FormatInt(int64(typedVal), 10) - case int64: - s = strconv.FormatInt(typedVal, 10) - case float64: - s = strconv.FormatFloat(typedVal, 'g', -1, 32) - case uint64: - s = strconv.FormatUint(typedVal, 10) - case bool: - if typedVal { - s = "true" - } else { - s = "false" - } - } - if len(s) > 0 { - yamlObj = interface{}(s) - } - } - return yamlObj, nil - } - - return nil, nil -} diff --git a/vendor/github.com/inconshreveable/mousetrap/LICENSE b/vendor/github.com/inconshreveable/mousetrap/LICENSE deleted file mode 100644 index 5f0d1fb6a7..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014 Alan Shreve - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/vendor/github.com/inconshreveable/mousetrap/README.md b/vendor/github.com/inconshreveable/mousetrap/README.md deleted file mode 100644 index 7a950d1774..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# mousetrap - -mousetrap is a tiny library that answers a single question. - -On a Windows machine, was the process invoked by someone double clicking on -the executable file while browsing in explorer? - -### Motivation - -Windows developers unfamiliar with command line tools will often "double-click" -the executable for a tool. Because most CLI tools print the help and then exit -when invoked without arguments, this is often very frustrating for those users. - -mousetrap provides a way to detect these invocations so that you can provide -more helpful behavior and instructions on how to run the CLI tool. To see what -this looks like, both from an organizational and a technical perspective, see -https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ - -### The interface - -The library exposes a single interface: - - func StartedByExplorer() (bool) diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_others.go b/vendor/github.com/inconshreveable/mousetrap/trap_others.go deleted file mode 100644 index 9d2d8a4bab..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_others.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build !windows - -package mousetrap - -// StartedByExplorer returns true if the program was invoked by the user -// double-clicking on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -// -// On non-Windows platforms, it always returns false. -func StartedByExplorer() bool { - return false -} diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows.go deleted file mode 100644 index 336142a5e3..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows.go +++ /dev/null @@ -1,98 +0,0 @@ -// +build windows -// +build !go1.4 - -package mousetrap - -import ( - "fmt" - "os" - "syscall" - "unsafe" -) - -const ( - // defined by the Win32 API - th32cs_snapprocess uintptr = 0x2 -) - -var ( - kernel = syscall.MustLoadDLL("kernel32.dll") - CreateToolhelp32Snapshot = kernel.MustFindProc("CreateToolhelp32Snapshot") - Process32First = kernel.MustFindProc("Process32FirstW") - Process32Next = kernel.MustFindProc("Process32NextW") -) - -// ProcessEntry32 structure defined by the Win32 API -type processEntry32 struct { - dwSize uint32 - cntUsage uint32 - th32ProcessID uint32 - th32DefaultHeapID int - th32ModuleID uint32 - cntThreads uint32 - th32ParentProcessID uint32 - pcPriClassBase int32 - dwFlags uint32 - szExeFile [syscall.MAX_PATH]uint16 -} - -func getProcessEntry(pid int) (pe *processEntry32, err error) { - snapshot, _, e1 := CreateToolhelp32Snapshot.Call(th32cs_snapprocess, uintptr(0)) - if snapshot == uintptr(syscall.InvalidHandle) { - err = fmt.Errorf("CreateToolhelp32Snapshot: %v", e1) - return - } - defer syscall.CloseHandle(syscall.Handle(snapshot)) - - var processEntry processEntry32 - processEntry.dwSize = uint32(unsafe.Sizeof(processEntry)) - ok, _, e1 := Process32First.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32First: %v", e1) - return - } - - for { - if processEntry.th32ProcessID == uint32(pid) { - pe = &processEntry - return - } - - ok, _, e1 = Process32Next.Call(snapshot, uintptr(unsafe.Pointer(&processEntry))) - if ok == 0 { - err = fmt.Errorf("Process32Next: %v", e1) - return - } - } -} - -func getppid() (pid int, err error) { - pe, err := getProcessEntry(os.Getpid()) - if err != nil { - return - } - - pid = int(pe.th32ParentProcessID) - return -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - ppid, err := getppid() - if err != nil { - return false - } - - pe, err := getProcessEntry(ppid) - if err != nil { - return false - } - - name := syscall.UTF16ToString(pe.szExeFile[:]) - return name == "explorer.exe" -} diff --git a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go b/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go deleted file mode 100644 index 9a28e57c3c..0000000000 --- a/vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go +++ /dev/null @@ -1,46 +0,0 @@ -// +build windows -// +build go1.4 - -package mousetrap - -import ( - "os" - "syscall" - "unsafe" -) - -func getProcessEntry(pid int) (*syscall.ProcessEntry32, error) { - snapshot, err := syscall.CreateToolhelp32Snapshot(syscall.TH32CS_SNAPPROCESS, 0) - if err != nil { - return nil, err - } - defer syscall.CloseHandle(snapshot) - var procEntry syscall.ProcessEntry32 - procEntry.Size = uint32(unsafe.Sizeof(procEntry)) - if err = syscall.Process32First(snapshot, &procEntry); err != nil { - return nil, err - } - for { - if procEntry.ProcessID == uint32(pid) { - return &procEntry, nil - } - err = syscall.Process32Next(snapshot, &procEntry) - if err != nil { - return nil, err - } - } -} - -// StartedByExplorer returns true if the program was invoked by the user double-clicking -// on the executable from explorer.exe -// -// It is conservative and returns false if any of the internal calls fail. -// It does not guarantee that the program was run from a terminal. It only can tell you -// whether it was launched from explorer.exe -func StartedByExplorer() bool { - pe, err := getProcessEntry(os.Getppid()) - if err != nil { - return false - } - return "explorer.exe" == syscall.UTF16ToString(pe.ExeFile[:]) -} diff --git a/vendor/github.com/ncw/swift/.gitignore b/vendor/github.com/ncw/swift/.gitignore deleted file mode 100644 index 5cdbab7947..0000000000 --- a/vendor/github.com/ncw/swift/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*~ -*.pyc -test-env* -junk/ \ No newline at end of file diff --git a/vendor/github.com/ncw/swift/.travis.yml b/vendor/github.com/ncw/swift/.travis.yml deleted file mode 100644 index e0a61643b0..0000000000 --- a/vendor/github.com/ncw/swift/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -language: go -sudo: false - -go: - - 1.2.x - - 1.3.x - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - 1.10.x - - 1.11.x - - 1.12.x - - master - -matrix: - include: - - go: 1.12.x - env: TEST_REAL_SERVER=rackspace - - go: 1.12.x - env: TEST_REAL_SERVER=memset - allow_failures: - - go: 1.12.x - env: TEST_REAL_SERVER=rackspace - - go: 1.12.x - env: TEST_REAL_SERVER=memset -install: go test -i ./... -script: - - test -z "$(go fmt ./...)" - - go test - - ./travis_realserver.sh diff --git a/vendor/github.com/ncw/swift/COPYING b/vendor/github.com/ncw/swift/COPYING deleted file mode 100644 index 8c27c67fd0..0000000000 --- a/vendor/github.com/ncw/swift/COPYING +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (C) 2012 by Nick Craig-Wood http://www.craig-wood.com/nick/ - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/vendor/github.com/ncw/swift/README.md b/vendor/github.com/ncw/swift/README.md deleted file mode 100644 index 7e678592bb..0000000000 --- a/vendor/github.com/ncw/swift/README.md +++ /dev/null @@ -1,159 +0,0 @@ -Swift -===== - -This package provides an easy to use library for interfacing with -Swift / Openstack Object Storage / Rackspace cloud files from the Go -Language - -See here for package docs - - http://godoc.org/github.com/ncw/swift - -[![Build Status](https://api.travis-ci.org/ncw/swift.svg?branch=master)](https://travis-ci.org/ncw/swift) [![GoDoc](https://godoc.org/github.com/ncw/swift?status.svg)](https://godoc.org/github.com/ncw/swift) - -Install -------- - -Use go to install the library - - go get github.com/ncw/swift - -Usage ------ - -See here for full package docs - -- http://godoc.org/github.com/ncw/swift - -Here is a short example from the docs -```go -import "github.com/ncw/swift" - -// Create a connection -c := swift.Connection{ - UserName: "user", - ApiKey: "key", - AuthUrl: "auth_url", - Domain: "domain", // Name of the domain (v3 auth only) - Tenant: "tenant", // Name of the tenant (v2 auth only) -} -// Authenticate -err := c.Authenticate() -if err != nil { - panic(err) -} -// List all the containers -containers, err := c.ContainerNames(nil) -fmt.Println(containers) -// etc... -``` - -Additions ---------- - -The `rs` sub project contains a wrapper for the Rackspace specific CDN Management interface. - -Testing -------- - -To run the tests you can either use an embedded fake Swift server -either use a real Openstack Swift server or a Rackspace Cloud files account. - -When using a real Swift server, you need to set these environment variables -before running the tests - - export SWIFT_API_USER='user' - export SWIFT_API_KEY='key' - export SWIFT_AUTH_URL='https://url.of.auth.server/v1.0' - -And optionally these if using v2 authentication - - export SWIFT_TENANT='TenantName' - export SWIFT_TENANT_ID='TenantId' - -And optionally these if using v3 authentication - - export SWIFT_TENANT='TenantName' - export SWIFT_TENANT_ID='TenantId' - export SWIFT_API_DOMAIN_ID='domain id' - export SWIFT_API_DOMAIN='domain name' - -And optionally these if using v3 trust - - export SWIFT_TRUST_ID='TrustId' - -And optionally this if you want to skip server certificate validation - - export SWIFT_AUTH_INSECURE=1 - -And optionally this to configure the connect channel timeout, in seconds - - export SWIFT_CONNECTION_CHANNEL_TIMEOUT=60 - -And optionally this to configure the data channel timeout, in seconds - - export SWIFT_DATA_CHANNEL_TIMEOUT=60 - -Then run the tests with `go test` - -License -------- - -This is free software under the terms of MIT license (check COPYING file -included in this package). - -Contact and support -------------------- - -The project website is at: - -- https://github.com/ncw/swift - -There you can file bug reports, ask for help or contribute patches. - -Authors -------- - -- Nick Craig-Wood - -Contributors ------------- - -- Brian "bojo" Jones -- Janika Liiv -- Yamamoto, Hirotaka -- Stephen -- platformpurple -- Paul Querna -- Livio Soares -- thesyncim -- lsowen -- Sylvain Baubeau -- Chris Kastorff -- Dai HaoJun -- Hua Wang -- Fabian Ruff -- Arturo Reuschenbach Puncernau -- Petr Kotek -- Stefan Majewsky -- Cezar Sa Espinola -- Sam Gunaratne -- Richard Scothern -- Michel Couillard -- Christopher Waldon -- dennis -- hag -- Alexander Neumann -- eclipseo <30413512+eclipseo@users.noreply.github.com> -- Yuri Per -- Falk Reimann -- Arthur Paim Arnold -- Bruno Michel -- Charles Hsu -- Omar Ali -- Andreas Andersen -- kayrus -- CodeLingo Bot -- Jérémy Clerc -- 4xicom <37339705+4xicom@users.noreply.github.com> -- Bo diff --git a/vendor/github.com/ncw/swift/auth.go b/vendor/github.com/ncw/swift/auth.go deleted file mode 100644 index 25654f429c..0000000000 --- a/vendor/github.com/ncw/swift/auth.go +++ /dev/null @@ -1,335 +0,0 @@ -package swift - -import ( - "bytes" - "encoding/json" - "net/http" - "net/url" - "strings" - "time" -) - -// Auth defines the operations needed to authenticate with swift -// -// This encapsulates the different authentication schemes in use -type Authenticator interface { - // Request creates an http.Request for the auth - return nil if not needed - Request(*Connection) (*http.Request, error) - // Response parses the http.Response - Response(resp *http.Response) error - // The public storage URL - set Internal to true to read - // internal/service net URL - StorageUrl(Internal bool) string - // The access token - Token() string - // The CDN url if available - CdnUrl() string -} - -// Expireser is an optional interface to read the expiration time of the token -type Expireser interface { - Expires() time.Time -} - -type CustomEndpointAuthenticator interface { - StorageUrlForEndpoint(endpointType EndpointType) string -} - -type EndpointType string - -const ( - // Use public URL as storage URL - EndpointTypePublic = EndpointType("public") - - // Use internal URL as storage URL - EndpointTypeInternal = EndpointType("internal") - - // Use admin URL as storage URL - EndpointTypeAdmin = EndpointType("admin") -) - -// newAuth - create a new Authenticator from the AuthUrl -// -// A hint for AuthVersion can be provided -func newAuth(c *Connection) (Authenticator, error) { - AuthVersion := c.AuthVersion - if AuthVersion == 0 { - if strings.Contains(c.AuthUrl, "v3") { - AuthVersion = 3 - } else if strings.Contains(c.AuthUrl, "v2") { - AuthVersion = 2 - } else if strings.Contains(c.AuthUrl, "v1") { - AuthVersion = 1 - } else { - return nil, newErrorf(500, "Can't find AuthVersion in AuthUrl - set explicitly") - } - } - switch AuthVersion { - case 1: - return &v1Auth{}, nil - case 2: - return &v2Auth{ - // Guess as to whether using API key or - // password it will try both eventually so - // this is just an optimization. - useApiKey: len(c.ApiKey) >= 32, - }, nil - case 3: - return &v3Auth{}, nil - } - return nil, newErrorf(500, "Auth Version %d not supported", AuthVersion) -} - -// ------------------------------------------------------------ - -// v1 auth -type v1Auth struct { - Headers http.Header // V1 auth: the authentication headers so extensions can access them -} - -// v1 Authentication - make request -func (auth *v1Auth) Request(c *Connection) (*http.Request, error) { - req, err := http.NewRequest("GET", c.AuthUrl, nil) - if err != nil { - return nil, err - } - req.Header.Set("User-Agent", c.UserAgent) - req.Header.Set("X-Auth-Key", c.ApiKey) - req.Header.Set("X-Auth-User", c.UserName) - return req, nil -} - -// v1 Authentication - read response -func (auth *v1Auth) Response(resp *http.Response) error { - auth.Headers = resp.Header - return nil -} - -// v1 Authentication - read storage url -func (auth *v1Auth) StorageUrl(Internal bool) string { - storageUrl := auth.Headers.Get("X-Storage-Url") - if Internal { - newUrl, err := url.Parse(storageUrl) - if err != nil { - return storageUrl - } - newUrl.Host = "snet-" + newUrl.Host - storageUrl = newUrl.String() - } - return storageUrl -} - -// v1 Authentication - read auth token -func (auth *v1Auth) Token() string { - return auth.Headers.Get("X-Auth-Token") -} - -// v1 Authentication - read cdn url -func (auth *v1Auth) CdnUrl() string { - return auth.Headers.Get("X-CDN-Management-Url") -} - -// ------------------------------------------------------------ - -// v2 Authentication -type v2Auth struct { - Auth *v2AuthResponse - Region string - useApiKey bool // if set will use API key not Password - useApiKeyOk bool // if set won't change useApiKey any more - notFirst bool // set after first run -} - -// v2 Authentication - make request -func (auth *v2Auth) Request(c *Connection) (*http.Request, error) { - auth.Region = c.Region - // Toggle useApiKey if not first run and not OK yet - if auth.notFirst && !auth.useApiKeyOk { - auth.useApiKey = !auth.useApiKey - } - auth.notFirst = true - // Create a V2 auth request for the body of the connection - var v2i interface{} - if !auth.useApiKey { - // Normal swift authentication - v2 := v2AuthRequest{} - v2.Auth.PasswordCredentials.UserName = c.UserName - v2.Auth.PasswordCredentials.Password = c.ApiKey - v2.Auth.Tenant = c.Tenant - v2.Auth.TenantId = c.TenantId - v2i = v2 - } else { - // Rackspace special with API Key - v2 := v2AuthRequestRackspace{} - v2.Auth.ApiKeyCredentials.UserName = c.UserName - v2.Auth.ApiKeyCredentials.ApiKey = c.ApiKey - v2.Auth.Tenant = c.Tenant - v2.Auth.TenantId = c.TenantId - v2i = v2 - } - body, err := json.Marshal(v2i) - if err != nil { - return nil, err - } - url := c.AuthUrl - if !strings.HasSuffix(url, "/") { - url += "/" - } - url += "tokens" - req, err := http.NewRequest("POST", url, bytes.NewBuffer(body)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") - req.Header.Set("User-Agent", c.UserAgent) - return req, nil -} - -// v2 Authentication - read response -func (auth *v2Auth) Response(resp *http.Response) error { - auth.Auth = new(v2AuthResponse) - err := readJson(resp, auth.Auth) - // If successfully read Auth then no need to toggle useApiKey any more - if err == nil { - auth.useApiKeyOk = true - } - return err -} - -// Finds the Endpoint Url of "type" from the v2AuthResponse using the -// Region if set or defaulting to the first one if not -// -// Returns "" if not found -func (auth *v2Auth) endpointUrl(Type string, endpointType EndpointType) string { - for _, catalog := range auth.Auth.Access.ServiceCatalog { - if catalog.Type == Type { - for _, endpoint := range catalog.Endpoints { - if auth.Region == "" || (auth.Region == endpoint.Region) { - switch endpointType { - case EndpointTypeInternal: - return endpoint.InternalUrl - case EndpointTypePublic: - return endpoint.PublicUrl - case EndpointTypeAdmin: - return endpoint.AdminUrl - default: - return "" - } - } - } - } - } - return "" -} - -// v2 Authentication - read storage url -// -// If Internal is true then it reads the private (internal / service -// net) URL. -func (auth *v2Auth) StorageUrl(Internal bool) string { - endpointType := EndpointTypePublic - if Internal { - endpointType = EndpointTypeInternal - } - return auth.StorageUrlForEndpoint(endpointType) -} - -// v2 Authentication - read storage url -// -// Use the indicated endpointType to choose a URL. -func (auth *v2Auth) StorageUrlForEndpoint(endpointType EndpointType) string { - return auth.endpointUrl("object-store", endpointType) -} - -// v2 Authentication - read auth token -func (auth *v2Auth) Token() string { - return auth.Auth.Access.Token.Id -} - -// v2 Authentication - read expires -func (auth *v2Auth) Expires() time.Time { - t, err := time.Parse(time.RFC3339, auth.Auth.Access.Token.Expires) - if err != nil { - return time.Time{} // return Zero if not parsed - } - return t -} - -// v2 Authentication - read cdn url -func (auth *v2Auth) CdnUrl() string { - return auth.endpointUrl("rax:object-cdn", EndpointTypePublic) -} - -// ------------------------------------------------------------ - -// V2 Authentication request -// -// http://docs.openstack.org/developer/keystone/api_curl_examples.html -// http://docs.rackspace.com/servers/api/v2/cs-gettingstarted/content/curl_auth.html -// http://docs.openstack.org/api/openstack-identity-service/2.0/content/POST_authenticate_v2.0_tokens_.html -type v2AuthRequest struct { - Auth struct { - PasswordCredentials struct { - UserName string `json:"username"` - Password string `json:"password"` - } `json:"passwordCredentials"` - Tenant string `json:"tenantName,omitempty"` - TenantId string `json:"tenantId,omitempty"` - } `json:"auth"` -} - -// V2 Authentication request - Rackspace variant -// -// http://docs.openstack.org/developer/keystone/api_curl_examples.html -// http://docs.rackspace.com/servers/api/v2/cs-gettingstarted/content/curl_auth.html -// http://docs.openstack.org/api/openstack-identity-service/2.0/content/POST_authenticate_v2.0_tokens_.html -type v2AuthRequestRackspace struct { - Auth struct { - ApiKeyCredentials struct { - UserName string `json:"username"` - ApiKey string `json:"apiKey"` - } `json:"RAX-KSKEY:apiKeyCredentials"` - Tenant string `json:"tenantName,omitempty"` - TenantId string `json:"tenantId,omitempty"` - } `json:"auth"` -} - -// V2 Authentication reply -// -// http://docs.openstack.org/developer/keystone/api_curl_examples.html -// http://docs.rackspace.com/servers/api/v2/cs-gettingstarted/content/curl_auth.html -// http://docs.openstack.org/api/openstack-identity-service/2.0/content/POST_authenticate_v2.0_tokens_.html -type v2AuthResponse struct { - Access struct { - ServiceCatalog []struct { - Endpoints []struct { - InternalUrl string - PublicUrl string - AdminUrl string - Region string - TenantId string - } - Name string - Type string - } - Token struct { - Expires string - Id string - Tenant struct { - Id string - Name string - } - } - User struct { - DefaultRegion string `json:"RAX-AUTH:defaultRegion"` - Id string - Name string - Roles []struct { - Description string - Id string - Name string - TenantId string - } - } - } -} diff --git a/vendor/github.com/ncw/swift/auth_v3.go b/vendor/github.com/ncw/swift/auth_v3.go deleted file mode 100644 index 1e34ad8146..0000000000 --- a/vendor/github.com/ncw/swift/auth_v3.go +++ /dev/null @@ -1,300 +0,0 @@ -package swift - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "strings" - "time" -) - -const ( - v3AuthMethodToken = "token" - v3AuthMethodPassword = "password" - v3AuthMethodApplicationCredential = "application_credential" - v3CatalogTypeObjectStore = "object-store" -) - -// V3 Authentication request -// http://docs.openstack.org/developer/keystone/api_curl_examples.html -// http://developer.openstack.org/api-ref-identity-v3.html -type v3AuthRequest struct { - Auth struct { - Identity struct { - Methods []string `json:"methods"` - Password *v3AuthPassword `json:"password,omitempty"` - Token *v3AuthToken `json:"token,omitempty"` - ApplicationCredential *v3AuthApplicationCredential `json:"application_credential,omitempty"` - } `json:"identity"` - Scope *v3Scope `json:"scope,omitempty"` - } `json:"auth"` -} - -type v3Scope struct { - Project *v3Project `json:"project,omitempty"` - Domain *v3Domain `json:"domain,omitempty"` - Trust *v3Trust `json:"OS-TRUST:trust,omitempty"` -} - -type v3Domain struct { - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` -} - -type v3Project struct { - Name string `json:"name,omitempty"` - Id string `json:"id,omitempty"` - Domain *v3Domain `json:"domain,omitempty"` -} - -type v3Trust struct { - Id string `json:"id"` -} - -type v3User struct { - Domain *v3Domain `json:"domain,omitempty"` - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Password string `json:"password,omitempty"` -} - -type v3AuthToken struct { - Id string `json:"id"` -} - -type v3AuthPassword struct { - User v3User `json:"user"` -} - -type v3AuthApplicationCredential struct { - Id string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - Secret string `json:"secret,omitempty"` - User *v3User `json:"user,omitempty"` -} - -// V3 Authentication response -type v3AuthResponse struct { - Token struct { - ExpiresAt string `json:"expires_at"` - IssuedAt string `json:"issued_at"` - Methods []string - Roles []struct { - Id, Name string - Links struct { - Self string - } - } - - Project struct { - Domain struct { - Id, Name string - } - Id, Name string - } - - Catalog []struct { - Id, Namem, Type string - Endpoints []struct { - Id, Region_Id, Url, Region string - Interface EndpointType - } - } - - User struct { - Id, Name string - Domain struct { - Id, Name string - Links struct { - Self string - } - } - } - - Audit_Ids []string - } -} - -type v3Auth struct { - Region string - Auth *v3AuthResponse - Headers http.Header -} - -func (auth *v3Auth) Request(c *Connection) (*http.Request, error) { - auth.Region = c.Region - - var v3i interface{} - - v3 := v3AuthRequest{} - - if (c.ApplicationCredentialId != "" || c.ApplicationCredentialName != "") && c.ApplicationCredentialSecret != "" { - var user *v3User - - if c.ApplicationCredentialId != "" { - c.ApplicationCredentialName = "" - user = &v3User{} - } - - if user == nil && c.UserId != "" { - // UserID could be used without the domain information - user = &v3User{ - Id: c.UserId, - } - } - - if user == nil && c.UserName == "" { - // Make sure that Username or UserID are provided - return nil, fmt.Errorf("UserID or Name should be provided") - } - - if user == nil && c.DomainId != "" { - user = &v3User{ - Name: c.UserName, - Domain: &v3Domain{ - Id: c.DomainId, - }, - } - } - - if user == nil && c.Domain != "" { - user = &v3User{ - Name: c.UserName, - Domain: &v3Domain{ - Name: c.Domain, - }, - } - } - - // Make sure that DomainID or DomainName are provided among Username - if user == nil { - return nil, fmt.Errorf("DomainID or Domain should be provided") - } - - v3.Auth.Identity.Methods = []string{v3AuthMethodApplicationCredential} - v3.Auth.Identity.ApplicationCredential = &v3AuthApplicationCredential{ - Id: c.ApplicationCredentialId, - Name: c.ApplicationCredentialName, - Secret: c.ApplicationCredentialSecret, - User: user, - } - } else if c.UserName == "" && c.UserId == "" { - v3.Auth.Identity.Methods = []string{v3AuthMethodToken} - v3.Auth.Identity.Token = &v3AuthToken{Id: c.ApiKey} - } else { - v3.Auth.Identity.Methods = []string{v3AuthMethodPassword} - v3.Auth.Identity.Password = &v3AuthPassword{ - User: v3User{ - Name: c.UserName, - Id: c.UserId, - Password: c.ApiKey, - }, - } - - var domain *v3Domain - - if c.Domain != "" { - domain = &v3Domain{Name: c.Domain} - } else if c.DomainId != "" { - domain = &v3Domain{Id: c.DomainId} - } - v3.Auth.Identity.Password.User.Domain = domain - } - - if v3.Auth.Identity.Methods[0] != v3AuthMethodApplicationCredential { - if c.TrustId != "" { - v3.Auth.Scope = &v3Scope{Trust: &v3Trust{Id: c.TrustId}} - } else if c.TenantId != "" || c.Tenant != "" { - - v3.Auth.Scope = &v3Scope{Project: &v3Project{}} - - if c.TenantId != "" { - v3.Auth.Scope.Project.Id = c.TenantId - } else if c.Tenant != "" { - v3.Auth.Scope.Project.Name = c.Tenant - switch { - case c.TenantDomain != "": - v3.Auth.Scope.Project.Domain = &v3Domain{Name: c.TenantDomain} - case c.TenantDomainId != "": - v3.Auth.Scope.Project.Domain = &v3Domain{Id: c.TenantDomainId} - case c.Domain != "": - v3.Auth.Scope.Project.Domain = &v3Domain{Name: c.Domain} - case c.DomainId != "": - v3.Auth.Scope.Project.Domain = &v3Domain{Id: c.DomainId} - default: - v3.Auth.Scope.Project.Domain = &v3Domain{Name: "Default"} - } - } - } - } - - v3i = v3 - - body, err := json.Marshal(v3i) - - if err != nil { - return nil, err - } - - url := c.AuthUrl - if !strings.HasSuffix(url, "/") { - url += "/" - } - url += "auth/tokens" - req, err := http.NewRequest("POST", url, bytes.NewBuffer(body)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") - req.Header.Set("User-Agent", c.UserAgent) - return req, nil -} - -func (auth *v3Auth) Response(resp *http.Response) error { - auth.Auth = &v3AuthResponse{} - auth.Headers = resp.Header - err := readJson(resp, auth.Auth) - return err -} - -func (auth *v3Auth) endpointUrl(Type string, endpointType EndpointType) string { - for _, catalog := range auth.Auth.Token.Catalog { - if catalog.Type == Type { - for _, endpoint := range catalog.Endpoints { - if endpoint.Interface == endpointType && (auth.Region == "" || (auth.Region == endpoint.Region)) { - return endpoint.Url - } - } - } - } - return "" -} - -func (auth *v3Auth) StorageUrl(Internal bool) string { - endpointType := EndpointTypePublic - if Internal { - endpointType = EndpointTypeInternal - } - return auth.StorageUrlForEndpoint(endpointType) -} - -func (auth *v3Auth) StorageUrlForEndpoint(endpointType EndpointType) string { - return auth.endpointUrl("object-store", endpointType) -} - -func (auth *v3Auth) Token() string { - return auth.Headers.Get("X-Subject-Token") -} - -func (auth *v3Auth) Expires() time.Time { - t, err := time.Parse(time.RFC3339, auth.Auth.Token.ExpiresAt) - if err != nil { - return time.Time{} // return Zero if not parsed - } - return t -} - -func (auth *v3Auth) CdnUrl() string { - return "" -} diff --git a/vendor/github.com/ncw/swift/compatibility_1_0.go b/vendor/github.com/ncw/swift/compatibility_1_0.go deleted file mode 100644 index 7b69a757a1..0000000000 --- a/vendor/github.com/ncw/swift/compatibility_1_0.go +++ /dev/null @@ -1,28 +0,0 @@ -// Go 1.0 compatibility functions - -// +build !go1.1 - -package swift - -import ( - "log" - "net/http" - "time" -) - -// Cancel the request - doesn't work under < go 1.1 -func cancelRequest(transport http.RoundTripper, req *http.Request) { - log.Printf("Tried to cancel a request but couldn't - recompile with go 1.1") -} - -// Reset a timer - Doesn't work properly < go 1.1 -// -// This is quite hard to do properly under go < 1.1 so we do a crude -// approximation and hope that everyone upgrades to go 1.1 quickly -func resetTimer(t *time.Timer, d time.Duration) { - t.Stop() - // Very likely this doesn't actually work if we are already - // selecting on t.C. However we've stopped the original timer - // so won't break transfers but may not time them out :-( - *t = *time.NewTimer(d) -} diff --git a/vendor/github.com/ncw/swift/compatibility_1_1.go b/vendor/github.com/ncw/swift/compatibility_1_1.go deleted file mode 100644 index a4f9c3ab24..0000000000 --- a/vendor/github.com/ncw/swift/compatibility_1_1.go +++ /dev/null @@ -1,24 +0,0 @@ -// Go 1.1 and later compatibility functions -// -// +build go1.1 - -package swift - -import ( - "net/http" - "time" -) - -// Cancel the request -func cancelRequest(transport http.RoundTripper, req *http.Request) { - if tr, ok := transport.(interface { - CancelRequest(*http.Request) - }); ok { - tr.CancelRequest(req) - } -} - -// Reset a timer -func resetTimer(t *time.Timer, d time.Duration) { - t.Reset(d) -} diff --git a/vendor/github.com/ncw/swift/compatibility_1_6.go b/vendor/github.com/ncw/swift/compatibility_1_6.go deleted file mode 100644 index b443d01d2a..0000000000 --- a/vendor/github.com/ncw/swift/compatibility_1_6.go +++ /dev/null @@ -1,23 +0,0 @@ -// +build go1.6 - -package swift - -import ( - "net/http" - "time" -) - -const IS_AT_LEAST_GO_16 = true - -func SetExpectContinueTimeout(tr *http.Transport, t time.Duration) { - tr.ExpectContinueTimeout = t -} - -func AddExpectAndTransferEncoding(req *http.Request, hasContentLength bool) { - if req.Body != nil { - req.Header.Add("Expect", "100-continue") - } - if !hasContentLength { - req.TransferEncoding = []string{"chunked"} - } -} diff --git a/vendor/github.com/ncw/swift/compatibility_not_1_6.go b/vendor/github.com/ncw/swift/compatibility_not_1_6.go deleted file mode 100644 index aabb44e2b7..0000000000 --- a/vendor/github.com/ncw/swift/compatibility_not_1_6.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !go1.6 - -package swift - -import ( - "net/http" - "time" -) - -const IS_AT_LEAST_GO_16 = false - -func SetExpectContinueTimeout(tr *http.Transport, t time.Duration) {} -func AddExpectAndTransferEncoding(req *http.Request, hasContentLength bool) {} diff --git a/vendor/github.com/ncw/swift/dlo.go b/vendor/github.com/ncw/swift/dlo.go deleted file mode 100644 index 05a1927b39..0000000000 --- a/vendor/github.com/ncw/swift/dlo.go +++ /dev/null @@ -1,149 +0,0 @@ -package swift - -import ( - "os" - "strings" -) - -// DynamicLargeObjectCreateFile represents an open static large object -type DynamicLargeObjectCreateFile struct { - largeObjectCreateFile -} - -// DynamicLargeObjectCreateFile creates a dynamic large object -// returning an object which satisfies io.Writer, io.Seeker, io.Closer -// and io.ReaderFrom. The flags are as passes to the -// largeObjectCreate method. -func (c *Connection) DynamicLargeObjectCreateFile(opts *LargeObjectOpts) (LargeObjectFile, error) { - lo, err := c.largeObjectCreate(opts) - if err != nil { - return nil, err - } - - return withBuffer(opts, &DynamicLargeObjectCreateFile{ - largeObjectCreateFile: *lo, - }), nil -} - -// DynamicLargeObjectCreate creates or truncates an existing dynamic -// large object returning a writeable object. This sets opts.Flags to -// an appropriate value before calling DynamicLargeObjectCreateFile -func (c *Connection) DynamicLargeObjectCreate(opts *LargeObjectOpts) (LargeObjectFile, error) { - opts.Flags = os.O_TRUNC | os.O_CREATE - return c.DynamicLargeObjectCreateFile(opts) -} - -// DynamicLargeObjectDelete deletes a dynamic large object and all of its segments. -func (c *Connection) DynamicLargeObjectDelete(container string, path string) error { - return c.LargeObjectDelete(container, path) -} - -// DynamicLargeObjectMove moves a dynamic large object from srcContainer, srcObjectName to dstContainer, dstObjectName -func (c *Connection) DynamicLargeObjectMove(srcContainer string, srcObjectName string, dstContainer string, dstObjectName string) error { - info, headers, err := c.Object(srcContainer, srcObjectName) - if err != nil { - return err - } - - segmentContainer, segmentPath := parseFullPath(headers["X-Object-Manifest"]) - if err := c.createDLOManifest(dstContainer, dstObjectName, segmentContainer+"/"+segmentPath, info.ContentType, sanitizeLargeObjectMoveHeaders(headers)); err != nil { - return err - } - - if err := c.ObjectDelete(srcContainer, srcObjectName); err != nil { - return err - } - - return nil -} - -func sanitizeLargeObjectMoveHeaders(headers Headers) Headers { - sanitizedHeaders := make(map[string]string, len(headers)) - for k, v := range headers { - if strings.HasPrefix(k, "X-") { //Some of the fields does not effect the request e,g, X-Timestamp, X-Trans-Id, X-Openstack-Request-Id. Open stack will generate new ones anyway. - sanitizedHeaders[k] = v - } - } - return sanitizedHeaders -} - -// createDLOManifest creates a dynamic large object manifest -func (c *Connection) createDLOManifest(container string, objectName string, prefix string, contentType string, headers Headers) error { - if headers == nil { - headers = make(Headers) - } - headers["X-Object-Manifest"] = prefix - manifest, err := c.ObjectCreate(container, objectName, false, "", contentType, headers) - if err != nil { - return err - } - - if err := manifest.Close(); err != nil { - return err - } - - return nil -} - -// Close satisfies the io.Closer interface -func (file *DynamicLargeObjectCreateFile) Close() error { - return file.Flush() -} - -func (file *DynamicLargeObjectCreateFile) Flush() error { - err := file.conn.createDLOManifest(file.container, file.objectName, file.segmentContainer+"/"+file.prefix, file.contentType, file.headers) - if err != nil { - return err - } - return file.conn.waitForSegmentsToShowUp(file.container, file.objectName, file.Size()) -} - -func (c *Connection) getAllDLOSegments(segmentContainer, segmentPath string) ([]Object, error) { - //a simple container listing works 99.9% of the time - segments, err := c.ObjectsAll(segmentContainer, &ObjectsOpts{Prefix: segmentPath}) - if err != nil { - return nil, err - } - - hasObjectName := make(map[string]struct{}) - for _, segment := range segments { - hasObjectName[segment.Name] = struct{}{} - } - - //The container listing might be outdated (i.e. not contain all existing - //segment objects yet) because of temporary inconsistency (Swift is only - //eventually consistent!). Check its completeness. - segmentNumber := 0 - for { - segmentNumber++ - segmentName := getSegment(segmentPath, segmentNumber) - if _, seen := hasObjectName[segmentName]; seen { - continue - } - - //This segment is missing in the container listing. Use a more reliable - //request to check its existence. (HEAD requests on segments are - //guaranteed to return the correct metadata, except for the pathological - //case of an outage of large parts of the Swift cluster or its network, - //since every segment is only written once.) - segment, _, err := c.Object(segmentContainer, segmentName) - switch err { - case nil: - //found new segment -> add it in the correct position and keep - //going, more might be missing - if segmentNumber <= len(segments) { - segments = append(segments[:segmentNumber], segments[segmentNumber-1:]...) - segments[segmentNumber-1] = segment - } else { - segments = append(segments, segment) - } - continue - case ObjectNotFound: - //This segment is missing. Since we upload segments sequentially, - //there won't be any more segments after it. - return segments, nil - default: - return nil, err //unexpected error - } - } -} diff --git a/vendor/github.com/ncw/swift/doc.go b/vendor/github.com/ncw/swift/doc.go deleted file mode 100644 index 44efde7bf8..0000000000 --- a/vendor/github.com/ncw/swift/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -/* -Package swift provides an easy to use interface to Swift / Openstack Object Storage / Rackspace Cloud Files - -Standard Usage - -Most of the work is done through the Container*() and Object*() methods. - -All methods are safe to use concurrently in multiple go routines. - -Object Versioning - -As defined by http://docs.openstack.org/api/openstack-object-storage/1.0/content/Object_Versioning-e1e3230.html#d6e983 one can create a container which allows for version control of files. The suggested method is to create a version container for holding all non-current files, and a current container for holding the latest version that the file points to. The container and objects inside it can be used in the standard manner, however, pushing a file multiple times will result in it being copied to the version container and the new file put in it's place. If the current file is deleted, the previous file in the version container will replace it. This means that if a file is updated 5 times, it must be deleted 5 times to be completely removed from the system. - -Rackspace Sub Module - -This module specifically allows the enabling/disabling of Rackspace Cloud File CDN management on a container. This is specific to the Rackspace API and not Swift/Openstack, therefore it has been placed in a submodule. One can easily create a RsConnection and use it like the standard Connection to access and manipulate containers and objects. - -*/ -package swift diff --git a/vendor/github.com/ncw/swift/go.mod b/vendor/github.com/ncw/swift/go.mod deleted file mode 100644 index 29f6ee2cb8..0000000000 --- a/vendor/github.com/ncw/swift/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/ncw/swift diff --git a/vendor/github.com/ncw/swift/largeobjects.go b/vendor/github.com/ncw/swift/largeobjects.go deleted file mode 100644 index bec640b00e..0000000000 --- a/vendor/github.com/ncw/swift/largeobjects.go +++ /dev/null @@ -1,448 +0,0 @@ -package swift - -import ( - "bufio" - "bytes" - "crypto/rand" - "crypto/sha1" - "encoding/hex" - "errors" - "fmt" - "io" - "os" - gopath "path" - "strconv" - "strings" - "time" -) - -// NotLargeObject is returned if an operation is performed on an object which isn't large. -var NotLargeObject = errors.New("Not a large object") - -// readAfterWriteTimeout defines the time we wait before an object appears after having been uploaded -var readAfterWriteTimeout = 15 * time.Second - -// readAfterWriteWait defines the time to sleep between two retries -var readAfterWriteWait = 200 * time.Millisecond - -// largeObjectCreateFile represents an open static or dynamic large object -type largeObjectCreateFile struct { - conn *Connection - container string - objectName string - currentLength int64 - filePos int64 - chunkSize int64 - segmentContainer string - prefix string - contentType string - checkHash bool - segments []Object - headers Headers - minChunkSize int64 -} - -func swiftSegmentPath(path string) (string, error) { - checksum := sha1.New() - random := make([]byte, 32) - if _, err := rand.Read(random); err != nil { - return "", err - } - path = hex.EncodeToString(checksum.Sum(append([]byte(path), random...))) - return strings.TrimLeft(strings.TrimRight("segments/"+path[0:3]+"/"+path[3:], "/"), "/"), nil -} - -func getSegment(segmentPath string, partNumber int) string { - return fmt.Sprintf("%s/%016d", segmentPath, partNumber) -} - -func parseFullPath(manifest string) (container string, prefix string) { - components := strings.SplitN(manifest, "/", 2) - container = components[0] - if len(components) > 1 { - prefix = components[1] - } - return container, prefix -} - -func (headers Headers) IsLargeObjectDLO() bool { - _, isDLO := headers["X-Object-Manifest"] - return isDLO -} - -func (headers Headers) IsLargeObjectSLO() bool { - _, isSLO := headers["X-Static-Large-Object"] - return isSLO -} - -func (headers Headers) IsLargeObject() bool { - return headers.IsLargeObjectSLO() || headers.IsLargeObjectDLO() -} - -func (c *Connection) getAllSegments(container string, path string, headers Headers) (string, []Object, error) { - if manifest, isDLO := headers["X-Object-Manifest"]; isDLO { - segmentContainer, segmentPath := parseFullPath(manifest) - segments, err := c.getAllDLOSegments(segmentContainer, segmentPath) - return segmentContainer, segments, err - } - if headers.IsLargeObjectSLO() { - return c.getAllSLOSegments(container, path) - } - return "", nil, NotLargeObject -} - -// LargeObjectOpts describes how a large object should be created -type LargeObjectOpts struct { - Container string // Name of container to place object - ObjectName string // Name of object - Flags int // Creation flags - CheckHash bool // If set Check the hash - Hash string // If set use this hash to check - ContentType string // Content-Type of the object - Headers Headers // Additional headers to upload the object with - ChunkSize int64 // Size of chunks of the object, defaults to 10MB if not set - MinChunkSize int64 // Minimum chunk size, automatically set for SLO's based on info - SegmentContainer string // Name of the container to place segments - SegmentPrefix string // Prefix to use for the segments - NoBuffer bool // Prevents using a bufio.Writer to write segments -} - -type LargeObjectFile interface { - io.Writer - io.Seeker - io.Closer - Size() int64 - Flush() error -} - -// largeObjectCreate creates a large object at opts.Container, opts.ObjectName. -// -// opts.Flags can have the following bits set -// os.TRUNC - remove the contents of the large object if it exists -// os.APPEND - write at the end of the large object -func (c *Connection) largeObjectCreate(opts *LargeObjectOpts) (*largeObjectCreateFile, error) { - var ( - segmentPath string - segmentContainer string - segments []Object - currentLength int64 - err error - ) - - if opts.SegmentPrefix != "" { - segmentPath = opts.SegmentPrefix - } else if segmentPath, err = swiftSegmentPath(opts.ObjectName); err != nil { - return nil, err - } - - if info, headers, err := c.Object(opts.Container, opts.ObjectName); err == nil { - if opts.Flags&os.O_TRUNC != 0 { - c.LargeObjectDelete(opts.Container, opts.ObjectName) - } else { - currentLength = info.Bytes - if headers.IsLargeObject() { - segmentContainer, segments, err = c.getAllSegments(opts.Container, opts.ObjectName, headers) - if err != nil { - return nil, err - } - if len(segments) > 0 { - segmentPath = gopath.Dir(segments[0].Name) - } - } else { - if err = c.ObjectMove(opts.Container, opts.ObjectName, opts.Container, getSegment(segmentPath, 1)); err != nil { - return nil, err - } - segments = append(segments, info) - } - } - } else if err != ObjectNotFound { - return nil, err - } - - // segmentContainer is not empty when the manifest already existed - if segmentContainer == "" { - if opts.SegmentContainer != "" { - segmentContainer = opts.SegmentContainer - } else { - segmentContainer = opts.Container + "_segments" - } - } - - file := &largeObjectCreateFile{ - conn: c, - checkHash: opts.CheckHash, - container: opts.Container, - objectName: opts.ObjectName, - chunkSize: opts.ChunkSize, - minChunkSize: opts.MinChunkSize, - headers: opts.Headers, - segmentContainer: segmentContainer, - prefix: segmentPath, - segments: segments, - currentLength: currentLength, - } - - if file.chunkSize == 0 { - file.chunkSize = 10 * 1024 * 1024 - } - - if file.minChunkSize > file.chunkSize { - file.chunkSize = file.minChunkSize - } - - if opts.Flags&os.O_APPEND != 0 { - file.filePos = currentLength - } - - return file, nil -} - -// LargeObjectDelete deletes the large object named by container, path -func (c *Connection) LargeObjectDelete(container string, objectName string) error { - _, headers, err := c.Object(container, objectName) - if err != nil { - return err - } - - var objects [][]string - if headers.IsLargeObject() { - segmentContainer, segments, err := c.getAllSegments(container, objectName, headers) - if err != nil { - return err - } - for _, obj := range segments { - objects = append(objects, []string{segmentContainer, obj.Name}) - } - } - objects = append(objects, []string{container, objectName}) - - info, err := c.cachedQueryInfo() - if err == nil && info.SupportsBulkDelete() && len(objects) > 0 { - filenames := make([]string, len(objects)) - for i, obj := range objects { - filenames[i] = obj[0] + "/" + obj[1] - } - _, err = c.doBulkDelete(filenames) - // Don't fail on ObjectNotFound because eventual consistency - // makes this situation normal. - if err != nil && err != Forbidden && err != ObjectNotFound { - return err - } - } else { - for _, obj := range objects { - if err := c.ObjectDelete(obj[0], obj[1]); err != nil { - return err - } - } - } - - return nil -} - -// LargeObjectGetSegments returns all the segments that compose an object -// If the object is a Dynamic Large Object (DLO), it just returns the objects -// that have the prefix as indicated by the manifest. -// If the object is a Static Large Object (SLO), it retrieves the JSON content -// of the manifest and return all the segments of it. -func (c *Connection) LargeObjectGetSegments(container string, path string) (string, []Object, error) { - _, headers, err := c.Object(container, path) - if err != nil { - return "", nil, err - } - - return c.getAllSegments(container, path, headers) -} - -// Seek sets the offset for the next write operation -func (file *largeObjectCreateFile) Seek(offset int64, whence int) (int64, error) { - switch whence { - case 0: - file.filePos = offset - case 1: - file.filePos += offset - case 2: - file.filePos = file.currentLength + offset - default: - return -1, fmt.Errorf("invalid value for whence") - } - if file.filePos < 0 { - return -1, fmt.Errorf("negative offset") - } - return file.filePos, nil -} - -func (file *largeObjectCreateFile) Size() int64 { - return file.currentLength -} - -func withLORetry(expectedSize int64, fn func() (Headers, int64, error)) (err error) { - endTimer := time.NewTimer(readAfterWriteTimeout) - defer endTimer.Stop() - waitingTime := readAfterWriteWait - for { - var headers Headers - var sz int64 - if headers, sz, err = fn(); err == nil { - if !headers.IsLargeObjectDLO() || (expectedSize == 0 && sz > 0) || expectedSize == sz { - return - } - } else { - return - } - waitTimer := time.NewTimer(waitingTime) - select { - case <-endTimer.C: - waitTimer.Stop() - err = fmt.Errorf("Timeout expired while waiting for object to have size == %d, got: %d", expectedSize, sz) - return - case <-waitTimer.C: - waitingTime *= 2 - } - } -} - -func (c *Connection) waitForSegmentsToShowUp(container, objectName string, expectedSize int64) (err error) { - err = withLORetry(expectedSize, func() (Headers, int64, error) { - var info Object - var headers Headers - info, headers, err = c.objectBase(container, objectName) - if err != nil { - return headers, 0, err - } - return headers, info.Bytes, nil - }) - return -} - -// Write satisfies the io.Writer interface -func (file *largeObjectCreateFile) Write(buf []byte) (int, error) { - var sz int64 - var relativeFilePos int - writeSegmentIdx := 0 - for i, obj := range file.segments { - if file.filePos < sz+obj.Bytes || (i == len(file.segments)-1 && file.filePos < sz+file.minChunkSize) { - relativeFilePos = int(file.filePos - sz) - break - } - writeSegmentIdx++ - sz += obj.Bytes - } - sizeToWrite := len(buf) - for offset := 0; offset < sizeToWrite; { - newSegment, n, err := file.writeSegment(buf[offset:], writeSegmentIdx, relativeFilePos) - if err != nil { - return 0, err - } - if writeSegmentIdx < len(file.segments) { - file.segments[writeSegmentIdx] = *newSegment - } else { - file.segments = append(file.segments, *newSegment) - } - offset += n - writeSegmentIdx++ - relativeFilePos = 0 - } - file.filePos += int64(sizeToWrite) - file.currentLength = 0 - for _, obj := range file.segments { - file.currentLength += obj.Bytes - } - return sizeToWrite, nil -} - -func (file *largeObjectCreateFile) writeSegment(buf []byte, writeSegmentIdx int, relativeFilePos int) (*Object, int, error) { - var ( - readers []io.Reader - existingSegment *Object - segmentSize int - ) - segmentName := getSegment(file.prefix, writeSegmentIdx+1) - sizeToRead := int(file.chunkSize) - if writeSegmentIdx < len(file.segments) { - existingSegment = &file.segments[writeSegmentIdx] - if writeSegmentIdx != len(file.segments)-1 { - sizeToRead = int(existingSegment.Bytes) - } - if relativeFilePos > 0 { - headers := make(Headers) - headers["Range"] = "bytes=0-" + strconv.FormatInt(int64(relativeFilePos-1), 10) - existingSegmentReader, _, err := file.conn.ObjectOpen(file.segmentContainer, segmentName, true, headers) - if err != nil { - return nil, 0, err - } - defer existingSegmentReader.Close() - sizeToRead -= relativeFilePos - segmentSize += relativeFilePos - readers = []io.Reader{existingSegmentReader} - } - } - if sizeToRead > len(buf) { - sizeToRead = len(buf) - } - segmentSize += sizeToRead - readers = append(readers, bytes.NewReader(buf[:sizeToRead])) - if existingSegment != nil && segmentSize < int(existingSegment.Bytes) { - headers := make(Headers) - headers["Range"] = "bytes=" + strconv.FormatInt(int64(segmentSize), 10) + "-" - tailSegmentReader, _, err := file.conn.ObjectOpen(file.segmentContainer, segmentName, true, headers) - if err != nil { - return nil, 0, err - } - defer tailSegmentReader.Close() - segmentSize = int(existingSegment.Bytes) - readers = append(readers, tailSegmentReader) - } - segmentReader := io.MultiReader(readers...) - headers, err := file.conn.ObjectPut(file.segmentContainer, segmentName, segmentReader, true, "", file.contentType, nil) - if err != nil { - return nil, 0, err - } - return &Object{Name: segmentName, Bytes: int64(segmentSize), Hash: headers["Etag"]}, sizeToRead, nil -} - -func withBuffer(opts *LargeObjectOpts, lo LargeObjectFile) LargeObjectFile { - if !opts.NoBuffer { - return &bufferedLargeObjectFile{ - LargeObjectFile: lo, - bw: bufio.NewWriterSize(lo, int(opts.ChunkSize)), - } - } - return lo -} - -type bufferedLargeObjectFile struct { - LargeObjectFile - bw *bufio.Writer -} - -func (blo *bufferedLargeObjectFile) Close() error { - err := blo.bw.Flush() - if err != nil { - return err - } - return blo.LargeObjectFile.Close() -} - -func (blo *bufferedLargeObjectFile) Write(p []byte) (n int, err error) { - return blo.bw.Write(p) -} - -func (blo *bufferedLargeObjectFile) Seek(offset int64, whence int) (int64, error) { - err := blo.bw.Flush() - if err != nil { - return 0, err - } - return blo.LargeObjectFile.Seek(offset, whence) -} - -func (blo *bufferedLargeObjectFile) Size() int64 { - return blo.LargeObjectFile.Size() + int64(blo.bw.Buffered()) -} - -func (blo *bufferedLargeObjectFile) Flush() error { - err := blo.bw.Flush() - if err != nil { - return err - } - return blo.LargeObjectFile.Flush() -} diff --git a/vendor/github.com/ncw/swift/meta.go b/vendor/github.com/ncw/swift/meta.go deleted file mode 100644 index 7e149e1390..0000000000 --- a/vendor/github.com/ncw/swift/meta.go +++ /dev/null @@ -1,174 +0,0 @@ -// Metadata manipulation in and out of Headers - -package swift - -import ( - "fmt" - "net/http" - "strconv" - "strings" - "time" -) - -// Metadata stores account, container or object metadata. -type Metadata map[string]string - -// Metadata gets the Metadata starting with the metaPrefix out of the Headers. -// -// The keys in the Metadata will be converted to lower case -func (h Headers) Metadata(metaPrefix string) Metadata { - m := Metadata{} - metaPrefix = http.CanonicalHeaderKey(metaPrefix) - for key, value := range h { - if strings.HasPrefix(key, metaPrefix) { - metaKey := strings.ToLower(key[len(metaPrefix):]) - m[metaKey] = value - } - } - return m -} - -// AccountMetadata converts Headers from account to a Metadata. -// -// The keys in the Metadata will be converted to lower case. -func (h Headers) AccountMetadata() Metadata { - return h.Metadata("X-Account-Meta-") -} - -// ContainerMetadata converts Headers from container to a Metadata. -// -// The keys in the Metadata will be converted to lower case. -func (h Headers) ContainerMetadata() Metadata { - return h.Metadata("X-Container-Meta-") -} - -// ObjectMetadata converts Headers from object to a Metadata. -// -// The keys in the Metadata will be converted to lower case. -func (h Headers) ObjectMetadata() Metadata { - return h.Metadata("X-Object-Meta-") -} - -// Headers convert the Metadata starting with the metaPrefix into a -// Headers. -// -// The keys in the Metadata will be converted from lower case to http -// Canonical (see http.CanonicalHeaderKey). -func (m Metadata) Headers(metaPrefix string) Headers { - h := Headers{} - for key, value := range m { - key = http.CanonicalHeaderKey(metaPrefix + key) - h[key] = value - } - return h -} - -// AccountHeaders converts the Metadata for the account. -func (m Metadata) AccountHeaders() Headers { - return m.Headers("X-Account-Meta-") -} - -// ContainerHeaders converts the Metadata for the container. -func (m Metadata) ContainerHeaders() Headers { - return m.Headers("X-Container-Meta-") -} - -// ObjectHeaders converts the Metadata for the object. -func (m Metadata) ObjectHeaders() Headers { - return m.Headers("X-Object-Meta-") -} - -// Turns a number of ns into a floating point string in seconds -// -// Trims trailing zeros and guaranteed to be perfectly accurate -func nsToFloatString(ns int64) string { - if ns < 0 { - return "-" + nsToFloatString(-ns) - } - result := fmt.Sprintf("%010d", ns) - split := len(result) - 9 - result, decimals := result[:split], result[split:] - decimals = strings.TrimRight(decimals, "0") - if decimals != "" { - result += "." - result += decimals - } - return result -} - -// Turns a floating point string in seconds into a ns integer -// -// Guaranteed to be perfectly accurate -func floatStringToNs(s string) (int64, error) { - const zeros = "000000000" - if point := strings.IndexRune(s, '.'); point >= 0 { - tail := s[point+1:] - if fill := 9 - len(tail); fill < 0 { - tail = tail[:9] - } else { - tail += zeros[:fill] - } - s = s[:point] + tail - } else if len(s) > 0 { // Make sure empty string produces an error - s += zeros - } - return strconv.ParseInt(s, 10, 64) -} - -// FloatStringToTime converts a floating point number string to a time.Time -// -// The string is floating point number of seconds since the epoch -// (Unix time). The number should be in fixed point format (not -// exponential), eg "1354040105.123456789" which represents the time -// "2012-11-27T18:15:05.123456789Z" -// -// Some care is taken to preserve all the accuracy in the time.Time -// (which wouldn't happen with a naive conversion through float64) so -// a round trip conversion won't change the data. -// -// If an error is returned then time will be returned as the zero time. -func FloatStringToTime(s string) (t time.Time, err error) { - ns, err := floatStringToNs(s) - if err != nil { - return - } - t = time.Unix(0, ns) - return -} - -// TimeToFloatString converts a time.Time object to a floating point string -// -// The string is floating point number of seconds since the epoch -// (Unix time). The number is in fixed point format (not -// exponential), eg "1354040105.123456789" which represents the time -// "2012-11-27T18:15:05.123456789Z". Trailing zeros will be dropped -// from the output. -// -// Some care is taken to preserve all the accuracy in the time.Time -// (which wouldn't happen with a naive conversion through float64) so -// a round trip conversion won't change the data. -func TimeToFloatString(t time.Time) string { - return nsToFloatString(t.UnixNano()) -} - -// GetModTime reads a modification time (mtime) from a Metadata object -// -// This is a defacto standard (used in the official python-swiftclient -// amongst others) for storing the modification time (as read using -// os.Stat) for an object. It is stored using the key 'mtime', which -// for example when written to an object will be 'X-Object-Meta-Mtime'. -// -// If an error is returned then time will be returned as the zero time. -func (m Metadata) GetModTime() (t time.Time, err error) { - return FloatStringToTime(m["mtime"]) -} - -// SetModTime writes an modification time (mtime) to a Metadata object -// -// This is a defacto standard (used in the official python-swiftclient -// amongst others) for storing the modification time (as read using -// os.Stat) for an object. It is stored using the key 'mtime', which -// for example when written to an object will be 'X-Object-Meta-Mtime'. -func (m Metadata) SetModTime(t time.Time) { - m["mtime"] = TimeToFloatString(t) -} diff --git a/vendor/github.com/ncw/swift/notes.txt b/vendor/github.com/ncw/swift/notes.txt deleted file mode 100644 index f738552cd8..0000000000 --- a/vendor/github.com/ncw/swift/notes.txt +++ /dev/null @@ -1,55 +0,0 @@ -Notes on Go Swift -================= - -Make a builder style interface like the Google Go APIs? Advantages -are that it is easy to add named methods to the service object to do -specific things. Slightly less efficient. Not sure about how to -return extra stuff though - in an object? - -Make a container struct so these could be methods on it? - -Make noResponse check for 204? - -Make storage public so it can be extended easily? - -Rename to go-swift to match user agent string? - -Reconnect on auth error - 401 when token expires isn't tested - -Make more api compatible with python cloudfiles? - -Retry operations on timeout / network errors? -- also 408 error -- GET requests only? - -Make Connection thread safe - whenever it is changed take a write lock whenever it is read from a read lock - -Add extra headers field to Connection (for via etc) - -Make errors use an error heirachy then can catch them with a type assertion - - Error(...) - ObjectCorrupted{ Error } - -Make a Debug flag in connection for logging stuff - -Object If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since etc - -Object range - -Object create, update with X-Delete-At or X-Delete-After - -Large object support -- check uploads are less than 5GB in normal mode? - -Access control CORS? - -Swift client retries and backs off for all types of errors - -Implement net error interface? - -type Error interface { - error - Timeout() bool // Is the error a timeout? - Temporary() bool // Is the error temporary? -} diff --git a/vendor/github.com/ncw/swift/slo.go b/vendor/github.com/ncw/swift/slo.go deleted file mode 100644 index 6a10ddfc05..0000000000 --- a/vendor/github.com/ncw/swift/slo.go +++ /dev/null @@ -1,171 +0,0 @@ -package swift - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io/ioutil" - "net/url" - "os" -) - -// StaticLargeObjectCreateFile represents an open static large object -type StaticLargeObjectCreateFile struct { - largeObjectCreateFile -} - -var SLONotSupported = errors.New("SLO not supported") - -type swiftSegment struct { - Path string `json:"path,omitempty"` - Etag string `json:"etag,omitempty"` - Size int64 `json:"size_bytes,omitempty"` - // When uploading a manifest, the attributes must be named `path`, `etag` and `size_bytes` - // but when querying the JSON content of a manifest with the `multipart-manifest=get` - // parameter, Swift names those attributes `name`, `hash` and `bytes`. - // We use all the different attributes names in this structure to be able to use - // the same structure for both uploading and retrieving. - Name string `json:"name,omitempty"` - Hash string `json:"hash,omitempty"` - Bytes int64 `json:"bytes,omitempty"` - ContentType string `json:"content_type,omitempty"` - LastModified string `json:"last_modified,omitempty"` -} - -// StaticLargeObjectCreateFile creates a static large object returning -// an object which satisfies io.Writer, io.Seeker, io.Closer and -// io.ReaderFrom. The flags are as passed to the largeObjectCreate -// method. -func (c *Connection) StaticLargeObjectCreateFile(opts *LargeObjectOpts) (LargeObjectFile, error) { - info, err := c.cachedQueryInfo() - if err != nil || !info.SupportsSLO() { - return nil, SLONotSupported - } - realMinChunkSize := info.SLOMinSegmentSize() - if realMinChunkSize > opts.MinChunkSize { - opts.MinChunkSize = realMinChunkSize - } - lo, err := c.largeObjectCreate(opts) - if err != nil { - return nil, err - } - return withBuffer(opts, &StaticLargeObjectCreateFile{ - largeObjectCreateFile: *lo, - }), nil -} - -// StaticLargeObjectCreate creates or truncates an existing static -// large object returning a writeable object. This sets opts.Flags to -// an appropriate value before calling StaticLargeObjectCreateFile -func (c *Connection) StaticLargeObjectCreate(opts *LargeObjectOpts) (LargeObjectFile, error) { - opts.Flags = os.O_TRUNC | os.O_CREATE - return c.StaticLargeObjectCreateFile(opts) -} - -// StaticLargeObjectDelete deletes a static large object and all of its segments. -func (c *Connection) StaticLargeObjectDelete(container string, path string) error { - info, err := c.cachedQueryInfo() - if err != nil || !info.SupportsSLO() { - return SLONotSupported - } - return c.LargeObjectDelete(container, path) -} - -// StaticLargeObjectMove moves a static large object from srcContainer, srcObjectName to dstContainer, dstObjectName -func (c *Connection) StaticLargeObjectMove(srcContainer string, srcObjectName string, dstContainer string, dstObjectName string) error { - swiftInfo, err := c.cachedQueryInfo() - if err != nil || !swiftInfo.SupportsSLO() { - return SLONotSupported - } - info, headers, err := c.Object(srcContainer, srcObjectName) - if err != nil { - return err - } - - container, segments, err := c.getAllSegments(srcContainer, srcObjectName, headers) - if err != nil { - return err - } - - //copy only metadata during move (other headers might not be safe for copying) - headers = headers.ObjectMetadata().ObjectHeaders() - - if err := c.createSLOManifest(dstContainer, dstObjectName, info.ContentType, container, segments, headers); err != nil { - return err - } - - if err := c.ObjectDelete(srcContainer, srcObjectName); err != nil { - return err - } - - return nil -} - -// createSLOManifest creates a static large object manifest -func (c *Connection) createSLOManifest(container string, path string, contentType string, segmentContainer string, segments []Object, h Headers) error { - sloSegments := make([]swiftSegment, len(segments)) - for i, segment := range segments { - sloSegments[i].Path = fmt.Sprintf("%s/%s", segmentContainer, segment.Name) - sloSegments[i].Etag = segment.Hash - sloSegments[i].Size = segment.Bytes - } - - content, err := json.Marshal(sloSegments) - if err != nil { - return err - } - - values := url.Values{} - values.Set("multipart-manifest", "put") - if _, err := c.objectPut(container, path, bytes.NewBuffer(content), false, "", contentType, h, values); err != nil { - return err - } - - return nil -} - -func (file *StaticLargeObjectCreateFile) Close() error { - return file.Flush() -} - -func (file *StaticLargeObjectCreateFile) Flush() error { - if err := file.conn.createSLOManifest(file.container, file.objectName, file.contentType, file.segmentContainer, file.segments, file.headers); err != nil { - return err - } - return file.conn.waitForSegmentsToShowUp(file.container, file.objectName, file.Size()) -} - -func (c *Connection) getAllSLOSegments(container, path string) (string, []Object, error) { - var ( - segmentList []swiftSegment - segments []Object - segPath string - segmentContainer string - ) - - values := url.Values{} - values.Set("multipart-manifest", "get") - - file, _, err := c.objectOpen(container, path, true, nil, values) - if err != nil { - return "", nil, err - } - - content, err := ioutil.ReadAll(file) - if err != nil { - return "", nil, err - } - - json.Unmarshal(content, &segmentList) - for _, segment := range segmentList { - segmentContainer, segPath = parseFullPath(segment.Name[1:]) - segments = append(segments, Object{ - Name: segPath, - Bytes: segment.Bytes, - Hash: segment.Hash, - }) - } - - return segmentContainer, segments, nil -} diff --git a/vendor/github.com/ncw/swift/swift.go b/vendor/github.com/ncw/swift/swift.go deleted file mode 100644 index cdb79d908f..0000000000 --- a/vendor/github.com/ncw/swift/swift.go +++ /dev/null @@ -1,2248 +0,0 @@ -package swift - -import ( - "bufio" - "bytes" - "crypto/hmac" - "crypto/md5" - "crypto/sha1" - "encoding/hex" - "encoding/json" - "fmt" - "hash" - "io" - "io/ioutil" - "mime" - "net/http" - "net/url" - "os" - "path" - "strconv" - "strings" - "sync" - "time" -) - -const ( - DefaultUserAgent = "goswift/1.0" // Default user agent - DefaultRetries = 3 // Default number of retries on token expiry - TimeFormat = "2006-01-02T15:04:05" // Python date format for json replies parsed as UTC - UploadTar = "tar" // Data format specifier for Connection.BulkUpload(). - UploadTarGzip = "tar.gz" // Data format specifier for Connection.BulkUpload(). - UploadTarBzip2 = "tar.bz2" // Data format specifier for Connection.BulkUpload(). - allContainersLimit = 10000 // Number of containers to fetch at once - allObjectsLimit = 10000 // Number objects to fetch at once - allObjectsChanLimit = 1000 // ...when fetching to a channel -) - -// ObjectType is the type of the swift object, regular, static large, -// or dynamic large. -type ObjectType int - -// Values that ObjectType can take -const ( - RegularObjectType ObjectType = iota - StaticLargeObjectType - DynamicLargeObjectType -) - -// Connection holds the details of the connection to the swift server. -// -// You need to provide UserName, ApiKey and AuthUrl when you create a -// connection then call Authenticate on it. -// -// The auth version in use will be detected from the AuthURL - you can -// override this with the AuthVersion parameter. -// -// If using v2 auth you can also set Region in the Connection -// structure. If you don't set Region you will get the default region -// which may not be what you want. -// -// For reference some common AuthUrls looks like this: -// -// Rackspace US https://auth.api.rackspacecloud.com/v1.0 -// Rackspace UK https://lon.auth.api.rackspacecloud.com/v1.0 -// Rackspace v2 https://identity.api.rackspacecloud.com/v2.0 -// Memset Memstore UK https://auth.storage.memset.com/v1.0 -// Memstore v2 https://auth.storage.memset.com/v2.0 -// -// When using Google Appengine you must provide the Connection with an -// appengine-specific Transport: -// -// import ( -// "appengine/urlfetch" -// "fmt" -// "github.com/ncw/swift" -// ) -// -// func handler(w http.ResponseWriter, r *http.Request) { -// ctx := appengine.NewContext(r) -// tr := urlfetch.Transport{Context: ctx} -// c := swift.Connection{ -// UserName: "user", -// ApiKey: "key", -// AuthUrl: "auth_url", -// Transport: tr, -// } -// _ := c.Authenticate() -// containers, _ := c.ContainerNames(nil) -// fmt.Fprintf(w, "containers: %q", containers) -// } -// -// If you don't supply a Transport, one is made which relies on -// http.ProxyFromEnvironment (http://golang.org/pkg/net/http/#ProxyFromEnvironment). -// This means that the connection will respect the HTTP proxy specified by the -// environment variables $HTTP_PROXY and $NO_PROXY. -type Connection struct { - // Parameters - fill these in before calling Authenticate - // They are all optional except UserName, ApiKey and AuthUrl - Domain string // User's domain name - DomainId string // User's domain Id - UserName string // UserName for api - UserId string // User Id - ApiKey string // Key for api access - ApplicationCredentialId string // Application Credential ID - ApplicationCredentialName string // Application Credential Name - ApplicationCredentialSecret string // Application Credential Secret - AuthUrl string // Auth URL - Retries int // Retries on error (default is 3) - UserAgent string // Http User agent (default goswift/1.0) - ConnectTimeout time.Duration // Connect channel timeout (default 10s) - Timeout time.Duration // Data channel timeout (default 60s) - Region string // Region to use eg "LON", "ORD" - default is use first region (v2,v3 auth only) - AuthVersion int // Set to 1, 2 or 3 or leave at 0 for autodetect - Internal bool // Set this to true to use the the internal / service network - Tenant string // Name of the tenant (v2,v3 auth only) - TenantId string // Id of the tenant (v2,v3 auth only) - EndpointType EndpointType // Endpoint type (v2,v3 auth only) (default is public URL unless Internal is set) - TenantDomain string // Name of the tenant's domain (v3 auth only), only needed if it differs from the user domain - TenantDomainId string // Id of the tenant's domain (v3 auth only), only needed if it differs the from user domain - TrustId string // Id of the trust (v3 auth only) - Transport http.RoundTripper `json:"-" xml:"-"` // Optional specialised http.Transport (eg. for Google Appengine) - // These are filled in after Authenticate is called as are the defaults for above - StorageUrl string - AuthToken string - Expires time.Time // time the token expires, may be Zero if unknown - client *http.Client - Auth Authenticator `json:"-" xml:"-"` // the current authenticator - authLock sync.Mutex // lock when R/W StorageUrl, AuthToken, Auth - // swiftInfo is filled after QueryInfo is called - swiftInfo SwiftInfo -} - -// setFromEnv reads the value that param points to (it must be a -// pointer), if it isn't the zero value then it reads the environment -// variable name passed in, parses it according to the type and writes -// it to the pointer. -func setFromEnv(param interface{}, name string) (err error) { - val := os.Getenv(name) - if val == "" { - return - } - switch result := param.(type) { - case *string: - if *result == "" { - *result = val - } - case *int: - if *result == 0 { - *result, err = strconv.Atoi(val) - } - case *bool: - if *result == false { - *result, err = strconv.ParseBool(val) - } - case *time.Duration: - if *result == 0 { - *result, err = time.ParseDuration(val) - } - case *EndpointType: - if *result == EndpointType("") { - *result = EndpointType(val) - } - default: - return newErrorf(0, "can't set var of type %T", param) - } - return err -} - -// ApplyEnvironment reads environment variables and applies them to -// the Connection structure. It won't overwrite any parameters which -// are already set in the Connection struct. -// -// To make a new Connection object entirely from the environment you -// would do: -// -// c := new(Connection) -// err := c.ApplyEnvironment() -// if err != nil { log.Fatal(err) } -// -// The naming of these variables follows the official Openstack naming -// scheme so it should be compatible with OpenStack rc files. -// -// For v1 authentication (obsolete) -// ST_AUTH - Auth URL -// ST_USER - UserName for api -// ST_KEY - Key for api access -// -// For v2 authentication -// OS_AUTH_URL - Auth URL -// OS_USERNAME - UserName for api -// OS_PASSWORD - Key for api access -// OS_TENANT_NAME - Name of the tenant -// OS_TENANT_ID - Id of the tenant -// OS_REGION_NAME - Region to use - default is use first region -// -// For v3 authentication -// OS_AUTH_URL - Auth URL -// OS_USERNAME - UserName for api -// OS_USER_ID - User Id -// OS_PASSWORD - Key for api access -// OS_APPLICATION_CREDENTIAL_ID - Application Credential ID -// OS_APPLICATION_CREDENTIAL_NAME - Application Credential Name -// OS_APPLICATION_CREDENTIAL_SECRET - Application Credential Secret -// OS_USER_DOMAIN_NAME - User's domain name -// OS_USER_DOMAIN_ID - User's domain Id -// OS_PROJECT_NAME - Name of the project -// OS_PROJECT_DOMAIN_NAME - Name of the tenant's domain, only needed if it differs from the user domain -// OS_PROJECT_DOMAIN_ID - Id of the tenant's domain, only needed if it differs the from user domain -// OS_TRUST_ID - If of the trust -// OS_REGION_NAME - Region to use - default is use first region -// -// Other -// OS_ENDPOINT_TYPE - Endpoint type public, internal or admin -// ST_AUTH_VERSION - Choose auth version - 1, 2 or 3 or leave at 0 for autodetect -// -// For manual authentication -// OS_STORAGE_URL - storage URL from alternate authentication -// OS_AUTH_TOKEN - Auth Token from alternate authentication -// -// Library specific -// GOSWIFT_RETRIES - Retries on error (default is 3) -// GOSWIFT_USER_AGENT - HTTP User agent (default goswift/1.0) -// GOSWIFT_CONNECT_TIMEOUT - Connect channel timeout with unit, eg "10s", "100ms" (default "10s") -// GOSWIFT_TIMEOUT - Data channel timeout with unit, eg "10s", "100ms" (default "60s") -// GOSWIFT_INTERNAL - Set this to "true" to use the the internal network (obsolete - use OS_ENDPOINT_TYPE) -func (c *Connection) ApplyEnvironment() (err error) { - for _, item := range []struct { - result interface{} - name string - }{ - // Environment variables - keep in same order as Connection - {&c.Domain, "OS_USER_DOMAIN_NAME"}, - {&c.DomainId, "OS_USER_DOMAIN_ID"}, - {&c.UserName, "OS_USERNAME"}, - {&c.UserId, "OS_USER_ID"}, - {&c.ApiKey, "OS_PASSWORD"}, - {&c.ApplicationCredentialId, "OS_APPLICATION_CREDENTIAL_ID"}, - {&c.ApplicationCredentialName, "OS_APPLICATION_CREDENTIAL_NAME"}, - {&c.ApplicationCredentialSecret, "OS_APPLICATION_CREDENTIAL_SECRET"}, - {&c.AuthUrl, "OS_AUTH_URL"}, - {&c.Retries, "GOSWIFT_RETRIES"}, - {&c.UserAgent, "GOSWIFT_USER_AGENT"}, - {&c.ConnectTimeout, "GOSWIFT_CONNECT_TIMEOUT"}, - {&c.Timeout, "GOSWIFT_TIMEOUT"}, - {&c.Region, "OS_REGION_NAME"}, - {&c.AuthVersion, "ST_AUTH_VERSION"}, - {&c.Internal, "GOSWIFT_INTERNAL"}, - {&c.Tenant, "OS_TENANT_NAME"}, //v2 - {&c.Tenant, "OS_PROJECT_NAME"}, // v3 - {&c.TenantId, "OS_TENANT_ID"}, - {&c.EndpointType, "OS_ENDPOINT_TYPE"}, - {&c.TenantDomain, "OS_PROJECT_DOMAIN_NAME"}, - {&c.TenantDomainId, "OS_PROJECT_DOMAIN_ID"}, - {&c.TrustId, "OS_TRUST_ID"}, - {&c.StorageUrl, "OS_STORAGE_URL"}, - {&c.AuthToken, "OS_AUTH_TOKEN"}, - // v1 auth alternatives - {&c.ApiKey, "ST_KEY"}, - {&c.UserName, "ST_USER"}, - {&c.AuthUrl, "ST_AUTH"}, - } { - err = setFromEnv(item.result, item.name) - if err != nil { - return newErrorf(0, "failed to read env var %q: %v", item.name, err) - } - } - return nil -} - -// Error - all errors generated by this package are of this type. Other error -// may be passed on from library functions though. -type Error struct { - StatusCode int // HTTP status code if relevant or 0 if not - Text string -} - -// Error satisfy the error interface. -func (e *Error) Error() string { - return e.Text -} - -// newError make a new error from a string. -func newError(StatusCode int, Text string) *Error { - return &Error{ - StatusCode: StatusCode, - Text: Text, - } -} - -// newErrorf makes a new error from sprintf parameters. -func newErrorf(StatusCode int, Text string, Parameters ...interface{}) *Error { - return newError(StatusCode, fmt.Sprintf(Text, Parameters...)) -} - -// errorMap defines http error codes to error mappings. -type errorMap map[int]error - -var ( - // Specific Errors you might want to check for equality - NotModified = newError(304, "Not Modified") - BadRequest = newError(400, "Bad Request") - AuthorizationFailed = newError(401, "Authorization Failed") - ContainerNotFound = newError(404, "Container Not Found") - ContainerNotEmpty = newError(409, "Container Not Empty") - ObjectNotFound = newError(404, "Object Not Found") - ObjectCorrupted = newError(422, "Object Corrupted") - TimeoutError = newError(408, "Timeout when reading or writing data") - Forbidden = newError(403, "Operation forbidden") - TooLargeObject = newError(413, "Too Large Object") - RateLimit = newError(498, "Rate Limit") - TooManyRequests = newError(429, "TooManyRequests") - - // Mappings for authentication errors - authErrorMap = errorMap{ - 400: BadRequest, - 401: AuthorizationFailed, - 403: Forbidden, - } - - // Mappings for container errors - ContainerErrorMap = errorMap{ - 400: BadRequest, - 403: Forbidden, - 404: ContainerNotFound, - 409: ContainerNotEmpty, - 498: RateLimit, - } - - // Mappings for object errors - objectErrorMap = errorMap{ - 304: NotModified, - 400: BadRequest, - 403: Forbidden, - 404: ObjectNotFound, - 413: TooLargeObject, - 422: ObjectCorrupted, - 429: TooManyRequests, - 498: RateLimit, - } -) - -// checkClose is used to check the return from Close in a defer -// statement. -func checkClose(c io.Closer, err *error) { - cerr := c.Close() - if *err == nil { - *err = cerr - } -} - -// drainAndClose discards all data from rd and closes it. -// If an error occurs during Read, it is discarded. -func drainAndClose(rd io.ReadCloser, err *error) { - if rd == nil { - return - } - - _, _ = io.Copy(ioutil.Discard, rd) - cerr := rd.Close() - if err != nil && *err == nil { - *err = cerr - } -} - -// parseHeaders checks a response for errors and translates into -// standard errors if necessary. If an error is returned, resp.Body -// has been drained and closed. -func (c *Connection) parseHeaders(resp *http.Response, errorMap errorMap) error { - if errorMap != nil { - if err, ok := errorMap[resp.StatusCode]; ok { - drainAndClose(resp.Body, nil) - return err - } - } - if resp.StatusCode < 200 || resp.StatusCode > 299 { - drainAndClose(resp.Body, nil) - return newErrorf(resp.StatusCode, "HTTP Error: %d: %s", resp.StatusCode, resp.Status) - } - return nil -} - -// readHeaders returns a Headers object from the http.Response. -// -// If it receives multiple values for a key (which should never -// happen) it will use the first one -func readHeaders(resp *http.Response) Headers { - headers := Headers{} - for key, values := range resp.Header { - headers[key] = values[0] - } - return headers -} - -// Headers stores HTTP headers (can only have one of each header like Swift). -type Headers map[string]string - -// Does an http request using the running timer passed in -func (c *Connection) doTimeoutRequest(timer *time.Timer, req *http.Request) (*http.Response, error) { - // Do the request in the background so we can check the timeout - type result struct { - resp *http.Response - err error - } - done := make(chan result, 1) - go func() { - resp, err := c.client.Do(req) - done <- result{resp, err} - }() - // Wait for the read or the timeout - select { - case r := <-done: - return r.resp, r.err - case <-timer.C: - // Kill the connection on timeout so we don't leak sockets or goroutines - cancelRequest(c.Transport, req) - return nil, TimeoutError - } - panic("unreachable") // For Go 1.0 -} - -// Set defaults for any unset values -// -// Call with authLock held -func (c *Connection) setDefaults() { - if c.UserAgent == "" { - c.UserAgent = DefaultUserAgent - } - if c.Retries == 0 { - c.Retries = DefaultRetries - } - if c.ConnectTimeout == 0 { - c.ConnectTimeout = 10 * time.Second - } - if c.Timeout == 0 { - c.Timeout = 60 * time.Second - } - if c.Transport == nil { - t := &http.Transport{ - // TLSClientConfig: &tls.Config{RootCAs: pool}, - // DisableCompression: true, - Proxy: http.ProxyFromEnvironment, - // Half of linux's default open files limit (1024). - MaxIdleConnsPerHost: 512, - } - SetExpectContinueTimeout(t, 5*time.Second) - c.Transport = t - } - if c.client == nil { - c.client = &http.Client{ - // CheckRedirect: redirectPolicyFunc, - Transport: c.Transport, - } - } -} - -// Authenticate connects to the Swift server. -// -// If you don't call it before calling one of the connection methods -// then it will be called for you on the first access. -func (c *Connection) Authenticate() (err error) { - c.authLock.Lock() - defer c.authLock.Unlock() - return c.authenticate() -} - -// Internal implementation of Authenticate -// -// Call with authLock held -func (c *Connection) authenticate() (err error) { - c.setDefaults() - - // Flush the keepalives connection - if we are - // re-authenticating then stuff has gone wrong - flushKeepaliveConnections(c.Transport) - - if c.Auth == nil { - c.Auth, err = newAuth(c) - if err != nil { - return - } - } - - retries := 1 -again: - var req *http.Request - req, err = c.Auth.Request(c) - if err != nil { - return - } - if req != nil { - timer := time.NewTimer(c.ConnectTimeout) - defer timer.Stop() - var resp *http.Response - resp, err = c.doTimeoutRequest(timer, req) - if err != nil { - return - } - defer func() { - drainAndClose(resp.Body, &err) - // Flush the auth connection - we don't want to keep - // it open if keepalives were enabled - flushKeepaliveConnections(c.Transport) - }() - if err = c.parseHeaders(resp, authErrorMap); err != nil { - // Try again for a limited number of times on - // AuthorizationFailed or BadRequest. This allows us - // to try some alternate forms of the request - if (err == AuthorizationFailed || err == BadRequest) && retries > 0 { - retries-- - goto again - } - return - } - err = c.Auth.Response(resp) - if err != nil { - return - } - } - if customAuth, isCustom := c.Auth.(CustomEndpointAuthenticator); isCustom && c.EndpointType != "" { - c.StorageUrl = customAuth.StorageUrlForEndpoint(c.EndpointType) - } else { - c.StorageUrl = c.Auth.StorageUrl(c.Internal) - } - c.AuthToken = c.Auth.Token() - if do, ok := c.Auth.(Expireser); ok { - c.Expires = do.Expires() - } else { - c.Expires = time.Time{} - } - - if !c.authenticated() { - err = newError(0, "Response didn't have storage url and auth token") - return - } - return -} - -// Get an authToken and url -// -// The Url may be updated if it needed to authenticate using the OnReAuth function -func (c *Connection) getUrlAndAuthToken(targetUrlIn string, OnReAuth func() (string, error)) (targetUrlOut, authToken string, err error) { - c.authLock.Lock() - defer c.authLock.Unlock() - targetUrlOut = targetUrlIn - if !c.authenticated() { - err = c.authenticate() - if err != nil { - return - } - if OnReAuth != nil { - targetUrlOut, err = OnReAuth() - if err != nil { - return - } - } - } - authToken = c.AuthToken - return -} - -// flushKeepaliveConnections is called to flush pending requests after an error. -func flushKeepaliveConnections(transport http.RoundTripper) { - if tr, ok := transport.(interface { - CloseIdleConnections() - }); ok { - tr.CloseIdleConnections() - } -} - -// UnAuthenticate removes the authentication from the Connection. -func (c *Connection) UnAuthenticate() { - c.authLock.Lock() - c.StorageUrl = "" - c.AuthToken = "" - c.authLock.Unlock() -} - -// Authenticated returns a boolean to show if the current connection -// is authenticated. -// -// Doesn't actually check the credentials against the server. -func (c *Connection) Authenticated() bool { - c.authLock.Lock() - defer c.authLock.Unlock() - return c.authenticated() -} - -// Internal version of Authenticated() -// -// Call with authLock held -func (c *Connection) authenticated() bool { - if c.StorageUrl == "" || c.AuthToken == "" { - return false - } - if c.Expires.IsZero() { - return true - } - timeUntilExpiry := c.Expires.Sub(time.Now()) - return timeUntilExpiry >= 60*time.Second -} - -// SwiftInfo contains the JSON object returned by Swift when the /info -// route is queried. The object contains, among others, the Swift version, -// the enabled middlewares and their configuration -type SwiftInfo map[string]interface{} - -func (i SwiftInfo) SupportsBulkDelete() bool { - _, val := i["bulk_delete"] - return val -} - -func (i SwiftInfo) SupportsSLO() bool { - _, val := i["slo"] - return val -} - -func (i SwiftInfo) SLOMinSegmentSize() int64 { - if slo, ok := i["slo"].(map[string]interface{}); ok { - val, _ := slo["min_segment_size"].(float64) - return int64(val) - } - return 1 -} - -// Discover Swift configuration by doing a request against /info -func (c *Connection) QueryInfo() (infos SwiftInfo, err error) { - infoUrl, err := url.Parse(c.StorageUrl) - if err != nil { - return nil, err - } - infoUrl.Path = path.Join(infoUrl.Path, "..", "..", "info") - resp, err := c.client.Get(infoUrl.String()) - if err == nil { - if resp.StatusCode != http.StatusOK { - drainAndClose(resp.Body, nil) - return nil, fmt.Errorf("Invalid status code for info request: %d", resp.StatusCode) - } - err = readJson(resp, &infos) - if err == nil { - c.authLock.Lock() - c.swiftInfo = infos - c.authLock.Unlock() - } - return infos, err - } - return nil, err -} - -func (c *Connection) cachedQueryInfo() (infos SwiftInfo, err error) { - c.authLock.Lock() - infos = c.swiftInfo - c.authLock.Unlock() - if infos == nil { - infos, err = c.QueryInfo() - if err != nil { - return - } - } - return infos, nil -} - -// RequestOpts contains parameters for Connection.storage. -type RequestOpts struct { - Container string - ObjectName string - Operation string - Parameters url.Values - Headers Headers - ErrorMap errorMap - NoResponse bool - Body io.Reader - Retries int - // if set this is called on re-authentication to refresh the targetUrl - OnReAuth func() (string, error) -} - -// Call runs a remote command on the targetUrl, returns a -// response, headers and possible error. -// -// operation is GET, HEAD etc -// container is the name of a container -// Any other parameters (if not None) are added to the targetUrl -// -// Returns a response or an error. If response is returned then -// the resp.Body must be read completely and -// resp.Body.Close() must be called on it, unless noResponse is set in -// which case the body will be closed in this function -// -// If "Content-Length" is set in p.Headers it will be used - this can -// be used to override the default chunked transfer encoding for -// uploads. -// -// This will Authenticate if necessary, and re-authenticate if it -// receives a 401 error which means the token has expired -// -// This method is exported so extensions can call it. -func (c *Connection) Call(targetUrl string, p RequestOpts) (resp *http.Response, headers Headers, err error) { - c.authLock.Lock() - c.setDefaults() - c.authLock.Unlock() - retries := p.Retries - if retries == 0 { - retries = c.Retries - } - var req *http.Request - for { - var authToken string - if targetUrl, authToken, err = c.getUrlAndAuthToken(targetUrl, p.OnReAuth); err != nil { - return //authentication failure - } - var URL *url.URL - URL, err = url.Parse(targetUrl) - if err != nil { - return - } - if p.Container != "" { - URL.Path += "/" + p.Container - if p.ObjectName != "" { - URL.Path += "/" + p.ObjectName - } - } - if p.Parameters != nil { - URL.RawQuery = p.Parameters.Encode() - } - timer := time.NewTimer(c.ConnectTimeout) - defer timer.Stop() - reader := p.Body - if reader != nil { - reader = newWatchdogReader(reader, c.Timeout, timer) - } - req, err = http.NewRequest(p.Operation, URL.String(), reader) - if err != nil { - return - } - if p.Headers != nil { - for k, v := range p.Headers { - // Set ContentLength in req if the user passed it in in the headers - if k == "Content-Length" { - req.ContentLength, err = strconv.ParseInt(v, 10, 64) - if err != nil { - err = fmt.Errorf("Invalid %q header %q: %v", k, v, err) - return - } - } else { - req.Header.Add(k, v) - } - } - } - req.Header.Add("User-Agent", c.UserAgent) - req.Header.Add("X-Auth-Token", authToken) - - _, hasCL := p.Headers["Content-Length"] - AddExpectAndTransferEncoding(req, hasCL) - - resp, err = c.doTimeoutRequest(timer, req) - if err != nil { - if (p.Operation == "HEAD" || p.Operation == "GET") && retries > 0 { - retries-- - continue - } - return - } - // Check to see if token has expired - if resp.StatusCode == 401 && retries > 0 { - drainAndClose(resp.Body, nil) - c.UnAuthenticate() - retries-- - } else { - break - } - } - - headers = readHeaders(resp) - if err = c.parseHeaders(resp, p.ErrorMap); err != nil { - return - } - if p.NoResponse { - drainAndClose(resp.Body, &err) - if err != nil { - return - } - } else { - // Cancel the request on timeout - cancel := func() { - cancelRequest(c.Transport, req) - } - // Wrap resp.Body to make it obey an idle timeout - resp.Body = newTimeoutReader(resp.Body, c.Timeout, cancel) - } - return -} - -// storage runs a remote command on a the storage url, returns a -// response, headers and possible error. -// -// operation is GET, HEAD etc -// container is the name of a container -// Any other parameters (if not None) are added to the storage url -// -// Returns a response or an error. If response is returned then -// resp.Body.Close() must be called on it, unless noResponse is set in -// which case the body will be closed in this function -// -// This will Authenticate if necessary, and re-authenticate if it -// receives a 401 error which means the token has expired -func (c *Connection) storage(p RequestOpts) (resp *http.Response, headers Headers, err error) { - p.OnReAuth = func() (string, error) { - return c.StorageUrl, nil - } - c.authLock.Lock() - url := c.StorageUrl - c.authLock.Unlock() - return c.Call(url, p) -} - -// readLines reads the response into an array of strings. -// -// Closes the response when done -func readLines(resp *http.Response) (lines []string, err error) { - defer drainAndClose(resp.Body, &err) - reader := bufio.NewReader(resp.Body) - buffer := bytes.NewBuffer(make([]byte, 0, 128)) - var part []byte - var prefix bool - for { - if part, prefix, err = reader.ReadLine(); err != nil { - break - } - buffer.Write(part) - if !prefix { - lines = append(lines, buffer.String()) - buffer.Reset() - } - } - if err == io.EOF { - err = nil - } - return -} - -// readJson reads the response into the json type passed in -// -// Closes the response when done -func readJson(resp *http.Response, result interface{}) (err error) { - defer drainAndClose(resp.Body, &err) - decoder := json.NewDecoder(resp.Body) - return decoder.Decode(result) -} - -/* ------------------------------------------------------------ */ - -// ContainersOpts is options for Containers() and ContainerNames() -type ContainersOpts struct { - Limit int // For an integer value n, limits the number of results to at most n values. - Prefix string // Given a string value x, return container names matching the specified prefix. - Marker string // Given a string value x, return container names greater in value than the specified marker. - EndMarker string // Given a string value x, return container names less in value than the specified marker. - Headers Headers // Any additional HTTP headers - can be nil -} - -// parse the ContainerOpts -func (opts *ContainersOpts) parse() (url.Values, Headers) { - v := url.Values{} - var h Headers - if opts != nil { - if opts.Limit > 0 { - v.Set("limit", strconv.Itoa(opts.Limit)) - } - if opts.Prefix != "" { - v.Set("prefix", opts.Prefix) - } - if opts.Marker != "" { - v.Set("marker", opts.Marker) - } - if opts.EndMarker != "" { - v.Set("end_marker", opts.EndMarker) - } - h = opts.Headers - } - return v, h -} - -// ContainerNames returns a slice of names of containers in this account. -func (c *Connection) ContainerNames(opts *ContainersOpts) ([]string, error) { - v, h := opts.parse() - resp, _, err := c.storage(RequestOpts{ - Operation: "GET", - Parameters: v, - ErrorMap: ContainerErrorMap, - Headers: h, - }) - if err != nil { - return nil, err - } - lines, err := readLines(resp) - return lines, err -} - -// Container contains information about a container -type Container struct { - Name string // Name of the container - Count int64 // Number of objects in the container - Bytes int64 // Total number of bytes used in the container -} - -// Containers returns a slice of structures with full information as -// described in Container. -func (c *Connection) Containers(opts *ContainersOpts) ([]Container, error) { - v, h := opts.parse() - v.Set("format", "json") - resp, _, err := c.storage(RequestOpts{ - Operation: "GET", - Parameters: v, - ErrorMap: ContainerErrorMap, - Headers: h, - }) - if err != nil { - return nil, err - } - var containers []Container - err = readJson(resp, &containers) - return containers, err -} - -// containersAllOpts makes a copy of opts if set or makes a new one and -// overrides Limit and Marker -func containersAllOpts(opts *ContainersOpts) *ContainersOpts { - var newOpts ContainersOpts - if opts != nil { - newOpts = *opts - } - if newOpts.Limit == 0 { - newOpts.Limit = allContainersLimit - } - newOpts.Marker = "" - return &newOpts -} - -// ContainersAll is like Containers but it returns all the Containers -// -// It calls Containers multiple times using the Marker parameter -// -// It has a default Limit parameter but you may pass in your own -func (c *Connection) ContainersAll(opts *ContainersOpts) ([]Container, error) { - opts = containersAllOpts(opts) - containers := make([]Container, 0) - for { - newContainers, err := c.Containers(opts) - if err != nil { - return nil, err - } - containers = append(containers, newContainers...) - if len(newContainers) < opts.Limit { - break - } - opts.Marker = newContainers[len(newContainers)-1].Name - } - return containers, nil -} - -// ContainerNamesAll is like ContainerNamess but it returns all the Containers -// -// It calls ContainerNames multiple times using the Marker parameter -// -// It has a default Limit parameter but you may pass in your own -func (c *Connection) ContainerNamesAll(opts *ContainersOpts) ([]string, error) { - opts = containersAllOpts(opts) - containers := make([]string, 0) - for { - newContainers, err := c.ContainerNames(opts) - if err != nil { - return nil, err - } - containers = append(containers, newContainers...) - if len(newContainers) < opts.Limit { - break - } - opts.Marker = newContainers[len(newContainers)-1] - } - return containers, nil -} - -/* ------------------------------------------------------------ */ - -// ObjectOpts is options for Objects() and ObjectNames() -type ObjectsOpts struct { - Limit int // For an integer value n, limits the number of results to at most n values. - Marker string // Given a string value x, return object names greater in value than the specified marker. - EndMarker string // Given a string value x, return object names less in value than the specified marker - Prefix string // For a string value x, causes the results to be limited to object names beginning with the substring x. - Path string // For a string value x, return the object names nested in the pseudo path - Delimiter rune // For a character c, return all the object names nested in the container - Headers Headers // Any additional HTTP headers - can be nil - KeepMarker bool // Do not reset Marker when using ObjectsAll or ObjectNamesAll -} - -// parse reads values out of ObjectsOpts -func (opts *ObjectsOpts) parse() (url.Values, Headers) { - v := url.Values{} - var h Headers - if opts != nil { - if opts.Limit > 0 { - v.Set("limit", strconv.Itoa(opts.Limit)) - } - if opts.Marker != "" { - v.Set("marker", opts.Marker) - } - if opts.EndMarker != "" { - v.Set("end_marker", opts.EndMarker) - } - if opts.Prefix != "" { - v.Set("prefix", opts.Prefix) - } - if opts.Path != "" { - v.Set("path", opts.Path) - } - if opts.Delimiter != 0 { - v.Set("delimiter", string(opts.Delimiter)) - } - h = opts.Headers - } - return v, h -} - -// ObjectNames returns a slice of names of objects in a given container. -func (c *Connection) ObjectNames(container string, opts *ObjectsOpts) ([]string, error) { - v, h := opts.parse() - resp, _, err := c.storage(RequestOpts{ - Container: container, - Operation: "GET", - Parameters: v, - ErrorMap: ContainerErrorMap, - Headers: h, - }) - if err != nil { - return nil, err - } - return readLines(resp) -} - -// Object contains information about an object -type Object struct { - Name string `json:"name"` // object name - ContentType string `json:"content_type"` // eg application/directory - Bytes int64 `json:"bytes"` // size in bytes - ServerLastModified string `json:"last_modified"` // Last modified time, eg '2011-06-30T08:20:47.736680' as a string supplied by the server - LastModified time.Time // Last modified time converted to a time.Time - Hash string `json:"hash"` // MD5 hash, eg "d41d8cd98f00b204e9800998ecf8427e" - SLOHash string `json:"slo_etag"` // MD5 hash of all segments' MD5 hash, eg "d41d8cd98f00b204e9800998ecf8427e" - PseudoDirectory bool // Set when using delimiter to show that this directory object does not really exist - SubDir string `json:"subdir"` // returned only when using delimiter to mark "pseudo directories" - ObjectType ObjectType // type of this object -} - -// Objects returns a slice of Object with information about each -// object in the container. -// -// If Delimiter is set in the opts then PseudoDirectory may be set, -// with ContentType 'application/directory'. These are not real -// objects but represent directories of objects which haven't had an -// object created for them. -func (c *Connection) Objects(container string, opts *ObjectsOpts) ([]Object, error) { - v, h := opts.parse() - v.Set("format", "json") - resp, _, err := c.storage(RequestOpts{ - Container: container, - Operation: "GET", - Parameters: v, - ErrorMap: ContainerErrorMap, - Headers: h, - }) - if err != nil { - return nil, err - } - var objects []Object - err = readJson(resp, &objects) - // Convert Pseudo directories and dates - for i := range objects { - object := &objects[i] - if object.SubDir != "" { - object.Name = object.SubDir - object.PseudoDirectory = true - object.ContentType = "application/directory" - } - if object.ServerLastModified != "" { - // 2012-11-11T14:49:47.887250 - // - // Remove fractional seconds if present. This - // then keeps it consistent with Object - // which can only return timestamps accurate - // to 1 second - // - // The TimeFormat will parse fractional - // seconds if desired though - datetime := strings.SplitN(object.ServerLastModified, ".", 2)[0] - object.LastModified, err = time.Parse(TimeFormat, datetime) - if err != nil { - return nil, err - } - } - if object.SLOHash != "" { - object.ObjectType = StaticLargeObjectType - } - } - return objects, err -} - -// objectsAllOpts makes a copy of opts if set or makes a new one and -// overrides Limit and Marker -// Marker is not overriden if KeepMarker is set -func objectsAllOpts(opts *ObjectsOpts, Limit int) *ObjectsOpts { - var newOpts ObjectsOpts - if opts != nil { - newOpts = *opts - } - if newOpts.Limit == 0 { - newOpts.Limit = Limit - } - if !newOpts.KeepMarker { - newOpts.Marker = "" - } - return &newOpts -} - -// A closure defined by the caller to iterate through all objects -// -// Call Objects or ObjectNames from here with the *ObjectOpts passed in -// -// Do whatever is required with the results then return them -type ObjectsWalkFn func(*ObjectsOpts) (interface{}, error) - -// ObjectsWalk is uses to iterate through all the objects in chunks as -// returned by Objects or ObjectNames using the Marker and Limit -// parameters in the ObjectsOpts. -// -// Pass in a closure `walkFn` which calls Objects or ObjectNames with -// the *ObjectsOpts passed to it and does something with the results. -// -// Errors will be returned from this function -// -// It has a default Limit parameter but you may pass in your own -func (c *Connection) ObjectsWalk(container string, opts *ObjectsOpts, walkFn ObjectsWalkFn) error { - opts = objectsAllOpts(opts, allObjectsChanLimit) - for { - objects, err := walkFn(opts) - if err != nil { - return err - } - var n int - var last string - switch objects := objects.(type) { - case []string: - n = len(objects) - if n > 0 { - last = objects[len(objects)-1] - } - case []Object: - n = len(objects) - if n > 0 { - last = objects[len(objects)-1].Name - } - default: - panic("Unknown type returned to ObjectsWalk") - } - if n < opts.Limit { - break - } - opts.Marker = last - } - return nil -} - -// ObjectsAll is like Objects but it returns an unlimited number of Objects in a slice -// -// It calls Objects multiple times using the Marker parameter -func (c *Connection) ObjectsAll(container string, opts *ObjectsOpts) ([]Object, error) { - objects := make([]Object, 0) - err := c.ObjectsWalk(container, opts, func(opts *ObjectsOpts) (interface{}, error) { - newObjects, err := c.Objects(container, opts) - if err == nil { - objects = append(objects, newObjects...) - } - return newObjects, err - }) - return objects, err -} - -// ObjectNamesAll is like ObjectNames but it returns all the Objects -// -// It calls ObjectNames multiple times using the Marker parameter. Marker is -// reset unless KeepMarker is set -// -// It has a default Limit parameter but you may pass in your own -func (c *Connection) ObjectNamesAll(container string, opts *ObjectsOpts) ([]string, error) { - objects := make([]string, 0) - err := c.ObjectsWalk(container, opts, func(opts *ObjectsOpts) (interface{}, error) { - newObjects, err := c.ObjectNames(container, opts) - if err == nil { - objects = append(objects, newObjects...) - } - return newObjects, err - }) - return objects, err -} - -// Account contains information about this account. -type Account struct { - BytesUsed int64 // total number of bytes used - Containers int64 // total number of containers - Objects int64 // total number of objects -} - -// getInt64FromHeader is a helper function to decode int64 from header. -func getInt64FromHeader(resp *http.Response, header string) (result int64, err error) { - value := resp.Header.Get(header) - result, err = strconv.ParseInt(value, 10, 64) - if err != nil { - err = newErrorf(0, "Bad Header '%s': '%s': %s", header, value, err) - } - return -} - -// Account returns info about the account in an Account struct. -func (c *Connection) Account() (info Account, headers Headers, err error) { - var resp *http.Response - resp, headers, err = c.storage(RequestOpts{ - Operation: "HEAD", - ErrorMap: ContainerErrorMap, - NoResponse: true, - }) - if err != nil { - return - } - // Parse the headers into a dict - // - // {'Accept-Ranges': 'bytes', - // 'Content-Length': '0', - // 'Date': 'Tue, 05 Jul 2011 16:37:06 GMT', - // 'X-Account-Bytes-Used': '316598182', - // 'X-Account-Container-Count': '4', - // 'X-Account-Object-Count': '1433'} - if info.BytesUsed, err = getInt64FromHeader(resp, "X-Account-Bytes-Used"); err != nil { - return - } - if info.Containers, err = getInt64FromHeader(resp, "X-Account-Container-Count"); err != nil { - return - } - if info.Objects, err = getInt64FromHeader(resp, "X-Account-Object-Count"); err != nil { - return - } - return -} - -// AccountUpdate adds, replaces or remove account metadata. -// -// Add or update keys by mentioning them in the Headers. -// -// Remove keys by setting them to an empty string. -func (c *Connection) AccountUpdate(h Headers) error { - _, _, err := c.storage(RequestOpts{ - Operation: "POST", - ErrorMap: ContainerErrorMap, - NoResponse: true, - Headers: h, - }) - return err -} - -// ContainerCreate creates a container. -// -// If you don't want to add Headers just pass in nil -// -// No error is returned if it already exists but the metadata if any will be updated. -func (c *Connection) ContainerCreate(container string, h Headers) error { - _, _, err := c.storage(RequestOpts{ - Container: container, - Operation: "PUT", - ErrorMap: ContainerErrorMap, - NoResponse: true, - Headers: h, - }) - return err -} - -// ContainerDelete deletes a container. -// -// May return ContainerDoesNotExist or ContainerNotEmpty -func (c *Connection) ContainerDelete(container string) error { - _, _, err := c.storage(RequestOpts{ - Container: container, - Operation: "DELETE", - ErrorMap: ContainerErrorMap, - NoResponse: true, - }) - return err -} - -// Container returns info about a single container including any -// metadata in the headers. -func (c *Connection) Container(container string) (info Container, headers Headers, err error) { - var resp *http.Response - resp, headers, err = c.storage(RequestOpts{ - Container: container, - Operation: "HEAD", - ErrorMap: ContainerErrorMap, - NoResponse: true, - }) - if err != nil { - return - } - // Parse the headers into the struct - info.Name = container - if info.Bytes, err = getInt64FromHeader(resp, "X-Container-Bytes-Used"); err != nil { - return - } - if info.Count, err = getInt64FromHeader(resp, "X-Container-Object-Count"); err != nil { - return - } - return -} - -// ContainerUpdate adds, replaces or removes container metadata. -// -// Add or update keys by mentioning them in the Metadata. -// -// Remove keys by setting them to an empty string. -// -// Container metadata can only be read with Container() not with Containers(). -func (c *Connection) ContainerUpdate(container string, h Headers) error { - _, _, err := c.storage(RequestOpts{ - Container: container, - Operation: "POST", - ErrorMap: ContainerErrorMap, - NoResponse: true, - Headers: h, - }) - return err -} - -// ------------------------------------------------------------ - -// ObjectCreateFile represents a swift object open for writing -type ObjectCreateFile struct { - checkHash bool // whether we are checking the hash - pipeReader *io.PipeReader // pipe for the caller to use - pipeWriter *io.PipeWriter - hash hash.Hash // hash being build up as we go along - done chan struct{} // signals when the upload has finished - resp *http.Response // valid when done has signalled - err error // ditto - headers Headers // ditto -} - -// Write bytes to the object - see io.Writer -func (file *ObjectCreateFile) Write(p []byte) (n int, err error) { - n, err = file.pipeWriter.Write(p) - if err == io.ErrClosedPipe { - if file.err != nil { - return 0, file.err - } - return 0, newError(500, "Write on closed file") - } - if err == nil && file.checkHash { - _, _ = file.hash.Write(p) - } - return -} - -// Close the object and checks the md5sum if it was required. -// -// Also returns any other errors from the server (eg container not -// found) so it is very important to check the errors on this method. -func (file *ObjectCreateFile) Close() error { - // Close the body - err := file.pipeWriter.Close() - if err != nil { - return err - } - - // Wait for the HTTP operation to complete - <-file.done - - // Check errors - if file.err != nil { - return file.err - } - if file.checkHash { - receivedMd5 := strings.ToLower(file.headers["Etag"]) - calculatedMd5 := fmt.Sprintf("%x", file.hash.Sum(nil)) - if receivedMd5 != calculatedMd5 { - return ObjectCorrupted - } - } - return nil -} - -// Headers returns the response headers from the created object if the upload -// has been completed. The Close() method must be called on an ObjectCreateFile -// before this method. -func (file *ObjectCreateFile) Headers() (Headers, error) { - // error out if upload is not complete. - select { - case <-file.done: - default: - return nil, fmt.Errorf("Cannot get metadata, object upload failed or has not yet completed.") - } - return file.headers, nil -} - -// Check it satisfies the interface -var _ io.WriteCloser = &ObjectCreateFile{} - -// objectPutHeaders create a set of headers for a PUT -// -// It guesses the contentType from the objectName if it isn't set -// -// checkHash may be changed -func objectPutHeaders(objectName string, checkHash *bool, Hash string, contentType string, h Headers) Headers { - if contentType == "" { - contentType = mime.TypeByExtension(path.Ext(objectName)) - if contentType == "" { - contentType = "application/octet-stream" - } - } - // Meta stuff - extraHeaders := map[string]string{ - "Content-Type": contentType, - } - for key, value := range h { - extraHeaders[key] = value - } - if Hash != "" { - extraHeaders["Etag"] = Hash - *checkHash = false // the server will do it - } - return extraHeaders -} - -// ObjectCreate creates or updates the object in the container. It -// returns an io.WriteCloser you should write the contents to. You -// MUST call Close() on it and you MUST check the error return from -// Close(). -// -// If checkHash is True then it will calculate the MD5 Hash of the -// file as it is being uploaded and check it against that returned -// from the server. If it is wrong then it will return -// ObjectCorrupted on Close() -// -// If you know the MD5 hash of the object ahead of time then set the -// Hash parameter and it will be sent to the server (as an Etag -// header) and the server will check the MD5 itself after the upload, -// and this will return ObjectCorrupted on Close() if it is incorrect. -// -// If you don't want any error protection (not recommended) then set -// checkHash to false and Hash to "". -// -// If contentType is set it will be used, otherwise one will be -// guessed from objectName using mime.TypeByExtension -func (c *Connection) ObjectCreate(container string, objectName string, checkHash bool, Hash string, contentType string, h Headers) (file *ObjectCreateFile, err error) { - extraHeaders := objectPutHeaders(objectName, &checkHash, Hash, contentType, h) - pipeReader, pipeWriter := io.Pipe() - file = &ObjectCreateFile{ - hash: md5.New(), - checkHash: checkHash, - pipeReader: pipeReader, - pipeWriter: pipeWriter, - done: make(chan struct{}), - } - // Run the PUT in the background piping it data - go func() { - opts := RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "PUT", - Headers: extraHeaders, - Body: pipeReader, - NoResponse: true, - ErrorMap: objectErrorMap, - } - file.resp, file.headers, file.err = c.storage(opts) - // Signal finished - pipeReader.Close() - close(file.done) - }() - return -} - -func (c *Connection) objectPut(container string, objectName string, contents io.Reader, checkHash bool, Hash string, contentType string, h Headers, parameters url.Values) (headers Headers, err error) { - extraHeaders := objectPutHeaders(objectName, &checkHash, Hash, contentType, h) - hash := md5.New() - var body io.Reader = contents - if checkHash { - body = io.TeeReader(contents, hash) - } - _, headers, err = c.storage(RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "PUT", - Headers: extraHeaders, - Body: body, - NoResponse: true, - ErrorMap: objectErrorMap, - Parameters: parameters, - }) - if err != nil { - return - } - if checkHash { - receivedMd5 := strings.ToLower(headers["Etag"]) - calculatedMd5 := fmt.Sprintf("%x", hash.Sum(nil)) - if receivedMd5 != calculatedMd5 { - err = ObjectCorrupted - return - } - } - return -} - -// ObjectPut creates or updates the path in the container from -// contents. contents should be an open io.Reader which will have all -// its contents read. -// -// This is a low level interface. -// -// If checkHash is True then it will calculate the MD5 Hash of the -// file as it is being uploaded and check it against that returned -// from the server. If it is wrong then it will return -// ObjectCorrupted. -// -// If you know the MD5 hash of the object ahead of time then set the -// Hash parameter and it will be sent to the server (as an Etag -// header) and the server will check the MD5 itself after the upload, -// and this will return ObjectCorrupted if it is incorrect. -// -// If you don't want any error protection (not recommended) then set -// checkHash to false and Hash to "". -// -// If contentType is set it will be used, otherwise one will be -// guessed from objectName using mime.TypeByExtension -func (c *Connection) ObjectPut(container string, objectName string, contents io.Reader, checkHash bool, Hash string, contentType string, h Headers) (headers Headers, err error) { - return c.objectPut(container, objectName, contents, checkHash, Hash, contentType, h, nil) -} - -// ObjectPutBytes creates an object from a []byte in a container. -// -// This is a simplified interface which checks the MD5. -func (c *Connection) ObjectPutBytes(container string, objectName string, contents []byte, contentType string) (err error) { - buf := bytes.NewBuffer(contents) - h := Headers{"Content-Length": strconv.Itoa(len(contents))} - _, err = c.ObjectPut(container, objectName, buf, true, "", contentType, h) - return -} - -// ObjectPutString creates an object from a string in a container. -// -// This is a simplified interface which checks the MD5 -func (c *Connection) ObjectPutString(container string, objectName string, contents string, contentType string) (err error) { - buf := strings.NewReader(contents) - h := Headers{"Content-Length": strconv.Itoa(len(contents))} - _, err = c.ObjectPut(container, objectName, buf, true, "", contentType, h) - return -} - -// ObjectOpenFile represents a swift object open for reading -type ObjectOpenFile struct { - connection *Connection // stored copy of Connection used in Open - container string // stored copy of container used in Open - objectName string // stored copy of objectName used in Open - headers Headers // stored copy of headers used in Open - resp *http.Response // http connection - body io.Reader // read data from this - checkHash bool // true if checking MD5 - hash hash.Hash // currently accumulating MD5 - bytes int64 // number of bytes read on this connection - eof bool // whether we have read end of file - pos int64 // current position when reading - lengthOk bool // whether length is valid - length int64 // length of the object if read - seeked bool // whether we have seeked this file or not - overSeeked bool // set if we have seeked to the end or beyond -} - -// Read bytes from the object - see io.Reader -func (file *ObjectOpenFile) Read(p []byte) (n int, err error) { - if file.overSeeked { - return 0, io.EOF - } - n, err = file.body.Read(p) - file.bytes += int64(n) - file.pos += int64(n) - if err == io.EOF { - file.eof = true - } - return -} - -// Seek sets the offset for the next Read to offset, interpreted -// according to whence: 0 means relative to the origin of the file, 1 -// means relative to the current offset, and 2 means relative to the -// end. Seek returns the new offset and an Error, if any. -// -// Seek uses HTTP Range headers which, if the file pointer is moved, -// will involve reopening the HTTP connection. -// -// Note that you can't seek to the end of a file or beyond; HTTP Range -// requests don't support the file pointer being outside the data, -// unlike os.File -// -// Seek(0, 1) will return the current file pointer. -func (file *ObjectOpenFile) Seek(offset int64, whence int) (newPos int64, err error) { - file.overSeeked = false - switch whence { - case 0: // relative to start - newPos = offset - case 1: // relative to current - newPos = file.pos + offset - case 2: // relative to end - if !file.lengthOk { - return file.pos, newError(0, "Length of file unknown so can't seek from end") - } - newPos = file.length + offset - if offset >= 0 { - file.overSeeked = true - return - } - default: - panic("Unknown whence in ObjectOpenFile.Seek") - } - // If at correct position (quite likely), do nothing - if newPos == file.pos { - return - } - // Close the file... - file.seeked = true - err = file.Close() - if err != nil { - return - } - // ...and re-open with a Range header - if file.headers == nil { - file.headers = Headers{} - } - if newPos > 0 { - file.headers["Range"] = fmt.Sprintf("bytes=%d-", newPos) - } else { - delete(file.headers, "Range") - } - newFile, _, err := file.connection.ObjectOpen(file.container, file.objectName, false, file.headers) - if err != nil { - return - } - // Update the file - file.resp = newFile.resp - file.body = newFile.body - file.checkHash = false - file.pos = newPos - return -} - -// Length gets the objects content length either from a cached copy or -// from the server. -func (file *ObjectOpenFile) Length() (int64, error) { - if !file.lengthOk { - info, _, err := file.connection.Object(file.container, file.objectName) - file.length = info.Bytes - file.lengthOk = (err == nil) - return file.length, err - } - return file.length, nil -} - -// Close the object and checks the length and md5sum if it was -// required and all the object was read -func (file *ObjectOpenFile) Close() (err error) { - // Close the body at the end - defer checkClose(file.resp.Body, &err) - - // If not end of file or seeked then can't check anything - if !file.eof || file.seeked { - return - } - - // Check the MD5 sum if requested - if file.checkHash { - receivedMd5 := strings.ToLower(file.resp.Header.Get("Etag")) - calculatedMd5 := fmt.Sprintf("%x", file.hash.Sum(nil)) - if receivedMd5 != calculatedMd5 { - err = ObjectCorrupted - return - } - } - - // Check to see we read the correct number of bytes - if file.lengthOk && file.length != file.bytes { - err = ObjectCorrupted - return - } - return -} - -// Check it satisfies the interfaces -var _ io.ReadCloser = &ObjectOpenFile{} -var _ io.Seeker = &ObjectOpenFile{} - -func (c *Connection) objectOpenBase(container string, objectName string, checkHash bool, h Headers, parameters url.Values) (file *ObjectOpenFile, headers Headers, err error) { - var resp *http.Response - opts := RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "GET", - ErrorMap: objectErrorMap, - Headers: h, - Parameters: parameters, - } - resp, headers, err = c.storage(opts) - if err != nil { - return - } - // Can't check MD5 on an object with X-Object-Manifest or X-Static-Large-Object set - if checkHash && headers.IsLargeObject() { - // log.Printf("swift: turning off md5 checking on object with manifest %v", objectName) - checkHash = false - } - file = &ObjectOpenFile{ - connection: c, - container: container, - objectName: objectName, - headers: h, - resp: resp, - checkHash: checkHash, - body: resp.Body, - } - if checkHash { - file.hash = md5.New() - file.body = io.TeeReader(resp.Body, file.hash) - } - // Read Content-Length - if resp.Header.Get("Content-Length") != "" { - file.length, err = getInt64FromHeader(resp, "Content-Length") - file.lengthOk = (err == nil) - } - return -} - -func (c *Connection) objectOpen(container string, objectName string, checkHash bool, h Headers, parameters url.Values) (file *ObjectOpenFile, headers Headers, err error) { - err = withLORetry(0, func() (Headers, int64, error) { - file, headers, err = c.objectOpenBase(container, objectName, checkHash, h, parameters) - if err != nil { - return headers, 0, err - } - return headers, file.length, nil - }) - return -} - -// ObjectOpen returns an ObjectOpenFile for reading the contents of -// the object. This satisfies the io.ReadCloser and the io.Seeker -// interfaces. -// -// You must call Close() on contents when finished -// -// Returns the headers of the response. -// -// If checkHash is true then it will calculate the md5sum of the file -// as it is being received and check it against that returned from the -// server. If it is wrong then it will return ObjectCorrupted. It -// will also check the length returned. No checking will be done if -// you don't read all the contents. -// -// Note that objects with X-Object-Manifest or X-Static-Large-Object -// set won't ever have their md5sum's checked as the md5sum reported -// on the object is actually the md5sum of the md5sums of the -// parts. This isn't very helpful to detect a corrupted download as -// the size of the parts aren't known without doing more operations. -// If you want to ensure integrity of an object with a manifest then -// you will need to download everything in the manifest separately. -// -// headers["Content-Type"] will give the content type if desired. -func (c *Connection) ObjectOpen(container string, objectName string, checkHash bool, h Headers) (file *ObjectOpenFile, headers Headers, err error) { - return c.objectOpen(container, objectName, checkHash, h, nil) -} - -// ObjectGet gets the object into the io.Writer contents. -// -// Returns the headers of the response. -// -// If checkHash is true then it will calculate the md5sum of the file -// as it is being received and check it against that returned from the -// server. If it is wrong then it will return ObjectCorrupted. -// -// headers["Content-Type"] will give the content type if desired. -func (c *Connection) ObjectGet(container string, objectName string, contents io.Writer, checkHash bool, h Headers) (headers Headers, err error) { - file, headers, err := c.ObjectOpen(container, objectName, checkHash, h) - if err != nil { - return - } - defer checkClose(file, &err) - _, err = io.Copy(contents, file) - return -} - -// ObjectGetBytes returns an object as a []byte. -// -// This is a simplified interface which checks the MD5 -func (c *Connection) ObjectGetBytes(container string, objectName string) (contents []byte, err error) { - var buf bytes.Buffer - _, err = c.ObjectGet(container, objectName, &buf, true, nil) - contents = buf.Bytes() - return -} - -// ObjectGetString returns an object as a string. -// -// This is a simplified interface which checks the MD5 -func (c *Connection) ObjectGetString(container string, objectName string) (contents string, err error) { - var buf bytes.Buffer - _, err = c.ObjectGet(container, objectName, &buf, true, nil) - contents = buf.String() - return -} - -// ObjectDelete deletes the object. -// -// May return ObjectNotFound if the object isn't found -func (c *Connection) ObjectDelete(container string, objectName string) error { - _, _, err := c.storage(RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "DELETE", - ErrorMap: objectErrorMap, - }) - return err -} - -// ObjectTempUrl returns a temporary URL for an object -func (c *Connection) ObjectTempUrl(container string, objectName string, secretKey string, method string, expires time.Time) string { - mac := hmac.New(sha1.New, []byte(secretKey)) - prefix, _ := url.Parse(c.StorageUrl) - body := fmt.Sprintf("%s\n%d\n%s/%s/%s", method, expires.Unix(), prefix.Path, container, objectName) - mac.Write([]byte(body)) - sig := hex.EncodeToString(mac.Sum(nil)) - return fmt.Sprintf("%s/%s/%s?temp_url_sig=%s&temp_url_expires=%d", c.StorageUrl, container, objectName, sig, expires.Unix()) -} - -// parseResponseStatus parses string like "200 OK" and returns Error. -// -// For status codes beween 200 and 299, this returns nil. -func parseResponseStatus(resp string, errorMap errorMap) error { - code := 0 - reason := resp - t := strings.SplitN(resp, " ", 2) - if len(t) == 2 { - ncode, err := strconv.Atoi(t[0]) - if err == nil { - code = ncode - reason = t[1] - } - } - if errorMap != nil { - if err, ok := errorMap[code]; ok { - return err - } - } - if 200 <= code && code <= 299 { - return nil - } - return newError(code, reason) -} - -// BulkDeleteResult stores results of BulkDelete(). -// -// Individual errors may (or may not) be returned by Errors. -// Errors is a map whose keys are a full path of where the object was -// to be deleted, and whose values are Error objects. A full path of -// object looks like "/API_VERSION/USER_ACCOUNT/CONTAINER/OBJECT_PATH". -type BulkDeleteResult struct { - NumberNotFound int64 // # of objects not found. - NumberDeleted int64 // # of deleted objects. - Errors map[string]error // Mapping between object name and an error. - Headers Headers // Response HTTP headers. -} - -func (c *Connection) doBulkDelete(objects []string) (result BulkDeleteResult, err error) { - var buffer bytes.Buffer - for _, s := range objects { - u := url.URL{Path: s} - buffer.WriteString(u.String() + "\n") - } - resp, headers, err := c.storage(RequestOpts{ - Operation: "DELETE", - Parameters: url.Values{"bulk-delete": []string{"1"}}, - Headers: Headers{ - "Accept": "application/json", - "Content-Type": "text/plain", - "Content-Length": strconv.Itoa(buffer.Len()), - }, - ErrorMap: ContainerErrorMap, - Body: &buffer, - }) - if err != nil { - return - } - var jsonResult struct { - NotFound int64 `json:"Number Not Found"` - Status string `json:"Response Status"` - Errors [][]string - Deleted int64 `json:"Number Deleted"` - } - err = readJson(resp, &jsonResult) - if err != nil { - return - } - - err = parseResponseStatus(jsonResult.Status, objectErrorMap) - result.NumberNotFound = jsonResult.NotFound - result.NumberDeleted = jsonResult.Deleted - result.Headers = headers - el := make(map[string]error, len(jsonResult.Errors)) - for _, t := range jsonResult.Errors { - if len(t) != 2 { - continue - } - el[t[0]] = parseResponseStatus(t[1], objectErrorMap) - } - result.Errors = el - return -} - -// BulkDelete deletes multiple objectNames from container in one operation. -// -// Some servers may not accept bulk-delete requests since bulk-delete is -// an optional feature of swift - these will return the Forbidden error. -// -// See also: -// * http://docs.openstack.org/trunk/openstack-object-storage/admin/content/object-storage-bulk-delete.html -// * http://docs.rackspace.com/files/api/v1/cf-devguide/content/Bulk_Delete-d1e2338.html -func (c *Connection) BulkDelete(container string, objectNames []string) (result BulkDeleteResult, err error) { - if len(objectNames) == 0 { - result.Errors = make(map[string]error) - return - } - fullPaths := make([]string, len(objectNames)) - for i, name := range objectNames { - fullPaths[i] = fmt.Sprintf("/%s/%s", container, name) - } - return c.doBulkDelete(fullPaths) -} - -// BulkUploadResult stores results of BulkUpload(). -// -// Individual errors may (or may not) be returned by Errors. -// Errors is a map whose keys are a full path of where an object was -// to be created, and whose values are Error objects. A full path of -// object looks like "/API_VERSION/USER_ACCOUNT/CONTAINER/OBJECT_PATH". -type BulkUploadResult struct { - NumberCreated int64 // # of created objects. - Errors map[string]error // Mapping between object name and an error. - Headers Headers // Response HTTP headers. -} - -// BulkUpload uploads multiple files in one operation. -// -// uploadPath can be empty, a container name, or a pseudo-directory -// within a container. If uploadPath is empty, new containers may be -// automatically created. -// -// Files are read from dataStream. The format of the stream is specified -// by the format parameter. Available formats are: -// * UploadTar - Plain tar stream. -// * UploadTarGzip - Gzip compressed tar stream. -// * UploadTarBzip2 - Bzip2 compressed tar stream. -// -// Some servers may not accept bulk-upload requests since bulk-upload is -// an optional feature of swift - these will return the Forbidden error. -// -// See also: -// * http://docs.openstack.org/trunk/openstack-object-storage/admin/content/object-storage-extract-archive.html -// * http://docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.html -func (c *Connection) BulkUpload(uploadPath string, dataStream io.Reader, format string, h Headers) (result BulkUploadResult, err error) { - extraHeaders := Headers{"Accept": "application/json"} - for key, value := range h { - extraHeaders[key] = value - } - // The following code abuses Container parameter intentionally. - // The best fix might be to rename Container to UploadPath. - resp, headers, err := c.storage(RequestOpts{ - Container: uploadPath, - Operation: "PUT", - Parameters: url.Values{"extract-archive": []string{format}}, - Headers: extraHeaders, - ErrorMap: ContainerErrorMap, - Body: dataStream, - }) - if err != nil { - return - } - // Detect old servers which don't support this feature - if headers["Content-Type"] != "application/json" { - err = Forbidden - return - } - var jsonResult struct { - Created int64 `json:"Number Files Created"` - Status string `json:"Response Status"` - Errors [][]string - } - err = readJson(resp, &jsonResult) - if err != nil { - return - } - - err = parseResponseStatus(jsonResult.Status, objectErrorMap) - result.NumberCreated = jsonResult.Created - result.Headers = headers - el := make(map[string]error, len(jsonResult.Errors)) - for _, t := range jsonResult.Errors { - if len(t) != 2 { - continue - } - el[t[0]] = parseResponseStatus(t[1], objectErrorMap) - } - result.Errors = el - return -} - -// Object returns info about a single object including any metadata in the header. -// -// May return ObjectNotFound. -// -// Use headers.ObjectMetadata() to read the metadata in the Headers. -func (c *Connection) Object(container string, objectName string) (info Object, headers Headers, err error) { - err = withLORetry(0, func() (Headers, int64, error) { - info, headers, err = c.objectBase(container, objectName) - if err != nil { - return headers, 0, err - } - return headers, info.Bytes, nil - }) - return -} - -func (c *Connection) objectBase(container string, objectName string) (info Object, headers Headers, err error) { - var resp *http.Response - resp, headers, err = c.storage(RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "HEAD", - ErrorMap: objectErrorMap, - NoResponse: true, - }) - if err != nil { - return - } - // Parse the headers into the struct - // HTTP/1.1 200 OK - // Date: Thu, 07 Jun 2010 20:59:39 GMT - // Server: Apache - // Last-Modified: Fri, 12 Jun 2010 13:40:18 GMT - // ETag: 8a964ee2a5e88be344f36c22562a6486 - // Content-Length: 512000 - // Content-Type: text/plain; charset=UTF-8 - // X-Object-Meta-Meat: Bacon - // X-Object-Meta-Fruit: Bacon - // X-Object-Meta-Veggie: Bacon - // X-Object-Meta-Dairy: Bacon - info.Name = objectName - info.ContentType = resp.Header.Get("Content-Type") - if resp.Header.Get("Content-Length") != "" { - if info.Bytes, err = getInt64FromHeader(resp, "Content-Length"); err != nil { - return - } - } - // Currently ceph doesn't return a Last-Modified header for DLO manifests without any segments - // See ceph http://tracker.ceph.com/issues/15812 - if resp.Header.Get("Last-Modified") != "" { - info.ServerLastModified = resp.Header.Get("Last-Modified") - if info.LastModified, err = time.Parse(http.TimeFormat, info.ServerLastModified); err != nil { - return - } - } - - info.Hash = resp.Header.Get("Etag") - if resp.Header.Get("X-Object-Manifest") != "" { - info.ObjectType = DynamicLargeObjectType - } else if resp.Header.Get("X-Static-Large-Object") != "" { - info.ObjectType = StaticLargeObjectType - } - - return -} - -// ObjectUpdate adds, replaces or removes object metadata. -// -// Add or Update keys by mentioning them in the Metadata. Use -// Metadata.ObjectHeaders and Headers.ObjectMetadata to convert your -// Metadata to and from normal HTTP headers. -// -// This removes all metadata previously added to the object and -// replaces it with that passed in so to delete keys, just don't -// mention them the headers you pass in. -// -// Object metadata can only be read with Object() not with Objects(). -// -// This can also be used to set headers not already assigned such as -// X-Delete-At or X-Delete-After for expiring objects. -// -// You cannot use this to change any of the object's other headers -// such as Content-Type, ETag, etc. -// -// Refer to copying an object when you need to update metadata or -// other headers such as Content-Type or CORS headers. -// -// May return ObjectNotFound. -func (c *Connection) ObjectUpdate(container string, objectName string, h Headers) error { - _, _, err := c.storage(RequestOpts{ - Container: container, - ObjectName: objectName, - Operation: "POST", - ErrorMap: objectErrorMap, - NoResponse: true, - Headers: h, - }) - return err -} - -// urlPathEscape escapes URL path the in string using URL escaping rules -// -// This mimics url.PathEscape which only available from go 1.8 -func urlPathEscape(in string) string { - var u url.URL - u.Path = in - return u.String() -} - -// ObjectCopy does a server side copy of an object to a new position -// -// All metadata is preserved. If metadata is set in the headers then -// it overrides the old metadata on the copied object. -// -// The destination container must exist before the copy. -// -// You can use this to copy an object to itself - this is the only way -// to update the content type of an object. -func (c *Connection) ObjectCopy(srcContainer string, srcObjectName string, dstContainer string, dstObjectName string, h Headers) (headers Headers, err error) { - // Meta stuff - extraHeaders := map[string]string{ - "Destination": urlPathEscape(dstContainer + "/" + dstObjectName), - } - for key, value := range h { - extraHeaders[key] = value - } - _, headers, err = c.storage(RequestOpts{ - Container: srcContainer, - ObjectName: srcObjectName, - Operation: "COPY", - ErrorMap: objectErrorMap, - NoResponse: true, - Headers: extraHeaders, - }) - return -} - -// ObjectMove does a server side move of an object to a new position -// -// This is a convenience method which calls ObjectCopy then ObjectDelete -// -// All metadata is preserved. -// -// The destination container must exist before the copy. -func (c *Connection) ObjectMove(srcContainer string, srcObjectName string, dstContainer string, dstObjectName string) (err error) { - _, err = c.ObjectCopy(srcContainer, srcObjectName, dstContainer, dstObjectName, nil) - if err != nil { - return - } - return c.ObjectDelete(srcContainer, srcObjectName) -} - -// ObjectUpdateContentType updates the content type of an object -// -// This is a convenience method which calls ObjectCopy -// -// All other metadata is preserved. -func (c *Connection) ObjectUpdateContentType(container string, objectName string, contentType string) (err error) { - h := Headers{"Content-Type": contentType} - _, err = c.ObjectCopy(container, objectName, container, objectName, h) - return -} - -// ------------------------------------------------------------ - -// VersionContainerCreate is a helper method for creating and enabling version controlled containers. -// -// It builds the current object container, the non-current object version container, and enables versioning. -// -// If the server doesn't support versioning then it will return -// Forbidden however it will have created both the containers at that point. -func (c *Connection) VersionContainerCreate(current, version string) error { - if err := c.ContainerCreate(version, nil); err != nil { - return err - } - if err := c.ContainerCreate(current, nil); err != nil { - return err - } - if err := c.VersionEnable(current, version); err != nil { - return err - } - return nil -} - -// VersionEnable enables versioning on the current container with version as the tracking container. -// -// May return Forbidden if this isn't supported by the server -func (c *Connection) VersionEnable(current, version string) error { - h := Headers{"X-Versions-Location": version} - if err := c.ContainerUpdate(current, h); err != nil { - return err - } - // Check to see if the header was set properly - _, headers, err := c.Container(current) - if err != nil { - return err - } - // If failed to set versions header, return Forbidden as the server doesn't support this - if headers["X-Versions-Location"] != version { - return Forbidden - } - return nil -} - -// VersionDisable disables versioning on the current container. -func (c *Connection) VersionDisable(current string) error { - h := Headers{"X-Versions-Location": ""} - if err := c.ContainerUpdate(current, h); err != nil { - return err - } - return nil -} - -// VersionObjectList returns a list of older versions of the object. -// -// Objects are returned in the format / -func (c *Connection) VersionObjectList(version, object string) ([]string, error) { - opts := &ObjectsOpts{ - // <3-character zero-padded hexadecimal character length>/ - Prefix: fmt.Sprintf("%03x", len(object)) + object + "/", - } - return c.ObjectNames(version, opts) -} diff --git a/vendor/github.com/ncw/swift/timeout_reader.go b/vendor/github.com/ncw/swift/timeout_reader.go deleted file mode 100644 index 88ae733281..0000000000 --- a/vendor/github.com/ncw/swift/timeout_reader.go +++ /dev/null @@ -1,59 +0,0 @@ -package swift - -import ( - "io" - "time" -) - -// An io.ReadCloser which obeys an idle timeout -type timeoutReader struct { - reader io.ReadCloser - timeout time.Duration - cancel func() -} - -// Returns a wrapper around the reader which obeys an idle -// timeout. The cancel function is called if the timeout happens -func newTimeoutReader(reader io.ReadCloser, timeout time.Duration, cancel func()) *timeoutReader { - return &timeoutReader{ - reader: reader, - timeout: timeout, - cancel: cancel, - } -} - -// Read reads up to len(p) bytes into p -// -// Waits at most for timeout for the read to complete otherwise returns a timeout -func (t *timeoutReader) Read(p []byte) (int, error) { - // FIXME limit the amount of data read in one chunk so as to not exceed the timeout? - // Do the read in the background - type result struct { - n int - err error - } - done := make(chan result, 1) - go func() { - n, err := t.reader.Read(p) - done <- result{n, err} - }() - // Wait for the read or the timeout - timer := time.NewTimer(t.timeout) - defer timer.Stop() - select { - case r := <-done: - return r.n, r.err - case <-timer.C: - t.cancel() - return 0, TimeoutError - } - panic("unreachable") // for Go 1.0 -} - -// Close the channel -func (t *timeoutReader) Close() error { - return t.reader.Close() -} - -// Check it satisfies the interface -var _ io.ReadCloser = &timeoutReader{} diff --git a/vendor/github.com/ncw/swift/travis_realserver.sh b/vendor/github.com/ncw/swift/travis_realserver.sh deleted file mode 100644 index 970e94c0d1..0000000000 --- a/vendor/github.com/ncw/swift/travis_realserver.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -set -e - -if [ "${TRAVIS_PULL_REQUEST}" = "true" ]; then - exit 0 -fi - -if [ "${TEST_REAL_SERVER}" = "rackspace" ] && [ ! -z "${RACKSPACE_APIKEY}" ]; then - echo "Running tests pointing to Rackspace" - export SWIFT_API_KEY=$RACKSPACE_APIKEY - export SWIFT_API_USER=$RACKSPACE_USER - export SWIFT_AUTH_URL=$RACKSPACE_AUTH - go test ./... -fi - -if [ "${TEST_REAL_SERVER}" = "memset" ] && [ ! -z "${MEMSET_APIKEY}" ]; then - echo "Running tests pointing to Memset" - export SWIFT_API_KEY=$MEMSET_APIKEY - export SWIFT_API_USER=$MEMSET_USER - export SWIFT_AUTH_URL=$MEMSET_AUTH - go test -fi diff --git a/vendor/github.com/ncw/swift/watchdog_reader.go b/vendor/github.com/ncw/swift/watchdog_reader.go deleted file mode 100644 index 2714c9e1a4..0000000000 --- a/vendor/github.com/ncw/swift/watchdog_reader.go +++ /dev/null @@ -1,55 +0,0 @@ -package swift - -import ( - "io" - "time" -) - -var watchdogChunkSize = 1 << 20 // 1 MiB - -// An io.Reader which resets a watchdog timer whenever data is read -type watchdogReader struct { - timeout time.Duration - reader io.Reader - timer *time.Timer - chunkSize int -} - -// Returns a new reader which will kick the watchdog timer whenever data is read -func newWatchdogReader(reader io.Reader, timeout time.Duration, timer *time.Timer) *watchdogReader { - return &watchdogReader{ - timeout: timeout, - reader: reader, - timer: timer, - chunkSize: watchdogChunkSize, - } -} - -// Read reads up to len(p) bytes into p -func (t *watchdogReader) Read(p []byte) (int, error) { - //read from underlying reader in chunks not larger than t.chunkSize - //while resetting the watchdog timer before every read; the small chunk - //size ensures that the timer does not fire when reading a large amount of - //data from a slow connection - start := 0 - end := len(p) - for start < end { - length := end - start - if length > t.chunkSize { - length = t.chunkSize - } - - resetTimer(t.timer, t.timeout) - n, err := t.reader.Read(p[start : start+length]) - start += n - if n == 0 || err != nil { - return start, err - } - } - - resetTimer(t.timer, t.timeout) - return start, nil -} - -// Check it satisfies the interface -var _ io.Reader = &watchdogReader{} diff --git a/vendor/github.com/orcaman/concurrent-map/.gitignore b/vendor/github.com/orcaman/concurrent-map/.gitignore deleted file mode 100644 index 780010228f..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/.gitignore +++ /dev/null @@ -1 +0,0 @@ -go.mod \ No newline at end of file diff --git a/vendor/github.com/orcaman/concurrent-map/.travis.yml b/vendor/github.com/orcaman/concurrent-map/.travis.yml deleted file mode 100644 index 145bede041..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -# This is a weird way of telling Travis to use the fast container-based test -# runner instead of the slow VM-based runner. -sudo: false - -language: go - -# You don't need to test on very old version of the Go compiler. It's the user's -# responsibility to keep their compilers up to date. -go: - - 1.12.x - -# Only clone the most recent commit. -git: - depth: 1 - -# Skip the install step. Don't `go get` dependencies. Only build with the code -# in vendor/ -install: true - -# Don't email me the results of the test runs. -notifications: - email: false - -before_script: - - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin latest - -# script always runs to completion (set +e). If we have linter issues AND a -# failing test, we want to see both. Configure golangci-lint with a -# .golangci.yml file at the top level of your repo. -script: - - golangci-lint run # run a bunch of code checkers/linters in parallel - - go test -v -race ./... # Run all the tests with the race detector enabled \ No newline at end of file diff --git a/vendor/github.com/orcaman/concurrent-map/LICENSE b/vendor/github.com/orcaman/concurrent-map/LICENSE deleted file mode 100644 index ea2fec0c51..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 streamrail - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/orcaman/concurrent-map/README-zh.md b/vendor/github.com/orcaman/concurrent-map/README-zh.md deleted file mode 100644 index 10ba2e4c5c..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/README-zh.md +++ /dev/null @@ -1,64 +0,0 @@ -# concurrent map [![Build Status](https://travis-ci.com/orcaman/concurrent-map.svg?branch=master)](https://travis-ci.com/orcaman/concurrent-map) - -正如 [这里](http://golang.org/doc/faq#atomic_maps) 和 [这里](http://blog.golang.org/go-maps-in-action)所描述的, Go语言原生的`map`类型并不支持并发读写。`concurrent-map`提供了一种高性能的解决方案:通过对内部`map`进行分片,降低锁粒度,从而达到最少的锁等待时间(锁冲突) - -在Go 1.9之前,go语言标准库中并没有实现并发`map`。在Go 1.9中,引入了`sync.Map`。新的`sync.Map`与此`concurrent-map`有几个关键区别。标准库中的`sync.Map`是专为`append-only`场景设计的。因此,如果您想将`Map`用于一个类似内存数据库,那么使用我们的版本可能会受益。你可以在golang repo上读到更多,[这里](https://github.com/golang/go/issues/21035) and [这里](https://stackoverflow.com/questions/11063473/map-with-concurrent-access) -***译注:`sync.Map`在读多写少性能比较好,否则并发性能很差*** - -## 用法 - -导入包: - -```go -import ( - "github.com/orcaman/concurrent-map" -) - -``` - -```bash -go get "github.com/orcaman/concurrent-map" -``` - -现在包被导入到了`cmap`命名空间下 -***译注:通常包的限定前缀(命名空间)是和目录名一致的,但是这个包有点典型😂,不一致!!!所以用的时候注意*** - -## 示例 - -```go - - // 创建一个新的 map. - m := cmap.New() - - // 设置变量m一个键为“foo”值为“bar”键值对 - m.Set("foo", "bar") - - // 从m中获取指定键值. - if tmp, ok := m.Get("foo"); ok { - bar := tmp.(string) - } - - // 删除键为“foo”的项 - m.Remove("foo") - -``` - -更多使用示例请查看`concurrent_map_test.go`. - -运行测试: - -```bash -go test "github.com/orcaman/concurrent-map" -``` - -## 贡献说明 - -我们非常欢迎大家的贡献。如欲合并贡献,请遵循以下指引: -- 新建一个issue,并且叙述为什么这么做(解决一个bug,增加一个功能,等等) -- 根据核心团队对上述问题的反馈,提交一个PR,描述变更并链接到该问题。 -- 新代码必须具有测试覆盖率。 -- 如果代码是关于性能问题的,则必须在流程中包括基准测试(无论是在问题中还是在PR中)。 -- 一般来说,我们希望`concurrent-map`尽可能简单,且与原生的`map`有相似的操作。当你新建issue时请注意这一点。 - -## 许可证 -MIT (see [LICENSE](https://github.com/orcaman/concurrent-map/blob/master/LICENSE) file) diff --git a/vendor/github.com/orcaman/concurrent-map/README.md b/vendor/github.com/orcaman/concurrent-map/README.md deleted file mode 100644 index b3b8fb07cd..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# concurrent map [![Build Status](https://travis-ci.com/orcaman/concurrent-map.svg?branch=master)](https://travis-ci.com/orcaman/concurrent-map) - -As explained [here](http://golang.org/doc/faq#atomic_maps) and [here](http://blog.golang.org/go-maps-in-action), the `map` type in Go doesn't support concurrent reads and writes. `concurrent-map` provides a high-performance solution to this by sharding the map with minimal time spent waiting for locks. - -Prior to Go 1.9, there was no concurrent map implementation in the stdlib. In Go 1.9, `sync.Map` was introduced. The new `sync.Map` has a few key differences from this map. The stdlib `sync.Map` is designed for append-only scenarios. So if you want to use the map for something more like in-memory db, you might benefit from using our version. You can read more about it in the golang repo, for example [here](https://github.com/golang/go/issues/21035) and [here](https://stackoverflow.com/questions/11063473/map-with-concurrent-access) - -## usage - -Import the package: - -```go -import ( - "github.com/orcaman/concurrent-map" -) - -``` - -```bash -go get "github.com/orcaman/concurrent-map" -``` - -The package is now imported under the "cmap" namespace. - -## example - -```go - - // Create a new map. - m := cmap.New() - - // Sets item within map, sets "bar" under key "foo" - m.Set("foo", "bar") - - // Retrieve item from map. - if tmp, ok := m.Get("foo"); ok { - bar := tmp.(string) - } - - // Removes item under key "foo" - m.Remove("foo") - -``` - -For more examples have a look at concurrent_map_test.go. - -Running tests: - -```bash -go test "github.com/orcaman/concurrent-map" -``` - -## guidelines for contributing - -Contributions are highly welcome. In order for a contribution to be merged, please follow these guidelines: -- Open an issue and describe what you are after (fixing a bug, adding an enhancement, etc.). -- According to the core team's feedback on the above mentioned issue, submit a pull request, describing the changes and linking to the issue. -- New code must have test coverage. -- If the code is about performance issues, you must include benchmarks in the process (either in the issue or in the PR). -- In general, we would like to keep `concurrent-map` as simple as possible and as similar to the native `map`. Please keep this in mind when opening issues. - -## language -- [中文说明](./README-zh.md) - -## license -MIT (see [LICENSE](https://github.com/orcaman/concurrent-map/blob/master/LICENSE) file) diff --git a/vendor/github.com/orcaman/concurrent-map/concurrent_map.go b/vendor/github.com/orcaman/concurrent-map/concurrent_map.go deleted file mode 100644 index 9f85b910a9..0000000000 --- a/vendor/github.com/orcaman/concurrent-map/concurrent_map.go +++ /dev/null @@ -1,335 +0,0 @@ -package cmap - -import ( - "encoding/json" - "sync" -) - -var SHARD_COUNT = 32 - -// A "thread" safe map of type string:Anything. -// To avoid lock bottlenecks this map is dived to several (SHARD_COUNT) map shards. -type ConcurrentMap []*ConcurrentMapShared - -// A "thread" safe string to anything map. -type ConcurrentMapShared struct { - items map[string]interface{} - sync.RWMutex // Read Write mutex, guards access to internal map. -} - -// Creates a new concurrent map. -func New() ConcurrentMap { - m := make(ConcurrentMap, SHARD_COUNT) - for i := 0; i < SHARD_COUNT; i++ { - m[i] = &ConcurrentMapShared{items: make(map[string]interface{})} - } - return m -} - -// GetShard returns shard under given key -func (m ConcurrentMap) GetShard(key string) *ConcurrentMapShared { - return m[uint(fnv32(key))%uint(SHARD_COUNT)] -} - -func (m ConcurrentMap) MSet(data map[string]interface{}) { - for key, value := range data { - shard := m.GetShard(key) - shard.Lock() - shard.items[key] = value - shard.Unlock() - } -} - -// Sets the given value under the specified key. -func (m ConcurrentMap) Set(key string, value interface{}) { - // Get map shard. - shard := m.GetShard(key) - shard.Lock() - shard.items[key] = value - shard.Unlock() -} - -// Callback to return new element to be inserted into the map -// It is called while lock is held, therefore it MUST NOT -// try to access other keys in same map, as it can lead to deadlock since -// Go sync.RWLock is not reentrant -type UpsertCb func(exist bool, valueInMap interface{}, newValue interface{}) interface{} - -// Insert or Update - updates existing element or inserts a new one using UpsertCb -func (m ConcurrentMap) Upsert(key string, value interface{}, cb UpsertCb) (res interface{}) { - shard := m.GetShard(key) - shard.Lock() - v, ok := shard.items[key] - res = cb(ok, v, value) - shard.items[key] = res - shard.Unlock() - return res -} - -// Sets the given value under the specified key if no value was associated with it. -func (m ConcurrentMap) SetIfAbsent(key string, value interface{}) bool { - // Get map shard. - shard := m.GetShard(key) - shard.Lock() - _, ok := shard.items[key] - if !ok { - shard.items[key] = value - } - shard.Unlock() - return !ok -} - -// Get retrieves an element from map under given key. -func (m ConcurrentMap) Get(key string) (interface{}, bool) { - // Get shard - shard := m.GetShard(key) - shard.RLock() - // Get item from shard. - val, ok := shard.items[key] - shard.RUnlock() - return val, ok -} - -// Count returns the number of elements within the map. -func (m ConcurrentMap) Count() int { - count := 0 - for i := 0; i < SHARD_COUNT; i++ { - shard := m[i] - shard.RLock() - count += len(shard.items) - shard.RUnlock() - } - return count -} - -// Looks up an item under specified key -func (m ConcurrentMap) Has(key string) bool { - // Get shard - shard := m.GetShard(key) - shard.RLock() - // See if element is within shard. - _, ok := shard.items[key] - shard.RUnlock() - return ok -} - -// Remove removes an element from the map. -func (m ConcurrentMap) Remove(key string) { - // Try to get shard. - shard := m.GetShard(key) - shard.Lock() - delete(shard.items, key) - shard.Unlock() -} - -// RemoveCb is a callback executed in a map.RemoveCb() call, while Lock is held -// If returns true, the element will be removed from the map -type RemoveCb func(key string, v interface{}, exists bool) bool - -// RemoveCb locks the shard containing the key, retrieves its current value and calls the callback with those params -// If callback returns true and element exists, it will remove it from the map -// Returns the value returned by the callback (even if element was not present in the map) -func (m ConcurrentMap) RemoveCb(key string, cb RemoveCb) bool { - // Try to get shard. - shard := m.GetShard(key) - shard.Lock() - v, ok := shard.items[key] - remove := cb(key, v, ok) - if remove && ok { - delete(shard.items, key) - } - shard.Unlock() - return remove -} - -// Pop removes an element from the map and returns it -func (m ConcurrentMap) Pop(key string) (v interface{}, exists bool) { - // Try to get shard. - shard := m.GetShard(key) - shard.Lock() - v, exists = shard.items[key] - delete(shard.items, key) - shard.Unlock() - return v, exists -} - -// IsEmpty checks if map is empty. -func (m ConcurrentMap) IsEmpty() bool { - return m.Count() == 0 -} - -// Used by the Iter & IterBuffered functions to wrap two variables together over a channel, -type Tuple struct { - Key string - Val interface{} -} - -// Iter returns an iterator which could be used in a for range loop. -// -// Deprecated: using IterBuffered() will get a better performence -func (m ConcurrentMap) Iter() <-chan Tuple { - chans := snapshot(m) - ch := make(chan Tuple) - go fanIn(chans, ch) - return ch -} - -// IterBuffered returns a buffered iterator which could be used in a for range loop. -func (m ConcurrentMap) IterBuffered() <-chan Tuple { - chans := snapshot(m) - total := 0 - for _, c := range chans { - total += cap(c) - } - ch := make(chan Tuple, total) - go fanIn(chans, ch) - return ch -} - -// Returns a array of channels that contains elements in each shard, -// which likely takes a snapshot of `m`. -// It returns once the size of each buffered channel is determined, -// before all the channels are populated using goroutines. -func snapshot(m ConcurrentMap) (chans []chan Tuple) { - chans = make([]chan Tuple, SHARD_COUNT) - wg := sync.WaitGroup{} - wg.Add(SHARD_COUNT) - // Foreach shard. - for index, shard := range m { - go func(index int, shard *ConcurrentMapShared) { - // Foreach key, value pair. - shard.RLock() - chans[index] = make(chan Tuple, len(shard.items)) - wg.Done() - for key, val := range shard.items { - chans[index] <- Tuple{key, val} - } - shard.RUnlock() - close(chans[index]) - }(index, shard) - } - wg.Wait() - return chans -} - -// fanIn reads elements from channels `chans` into channel `out` -func fanIn(chans []chan Tuple, out chan Tuple) { - wg := sync.WaitGroup{} - wg.Add(len(chans)) - for _, ch := range chans { - go func(ch chan Tuple) { - for t := range ch { - out <- t - } - wg.Done() - }(ch) - } - wg.Wait() - close(out) -} - -// Items returns all items as map[string]interface{} -func (m ConcurrentMap) Items() map[string]interface{} { - tmp := make(map[string]interface{}) - - // Insert items to temporary map. - for item := range m.IterBuffered() { - tmp[item.Key] = item.Val - } - - return tmp -} - -// Iterator callback,called for every key,value found in -// maps. RLock is held for all calls for a given shard -// therefore callback sess consistent view of a shard, -// but not across the shards -type IterCb func(key string, v interface{}) - -// Callback based iterator, cheapest way to read -// all elements in a map. -func (m ConcurrentMap) IterCb(fn IterCb) { - for idx := range m { - shard := (m)[idx] - shard.RLock() - for key, value := range shard.items { - fn(key, value) - } - shard.RUnlock() - } -} - -// Keys returns all keys as []string -func (m ConcurrentMap) Keys() []string { - count := m.Count() - ch := make(chan string, count) - go func() { - // Foreach shard. - wg := sync.WaitGroup{} - wg.Add(SHARD_COUNT) - for _, shard := range m { - go func(shard *ConcurrentMapShared) { - // Foreach key, value pair. - shard.RLock() - for key := range shard.items { - ch <- key - } - shard.RUnlock() - wg.Done() - }(shard) - } - wg.Wait() - close(ch) - }() - - // Generate keys - keys := make([]string, 0, count) - for k := range ch { - keys = append(keys, k) - } - return keys -} - -//Reviles ConcurrentMap "private" variables to json marshal. -func (m ConcurrentMap) MarshalJSON() ([]byte, error) { - // Create a temporary map, which will hold all item spread across shards. - tmp := make(map[string]interface{}) - - // Insert items to temporary map. - for item := range m.IterBuffered() { - tmp[item.Key] = item.Val - } - return json.Marshal(tmp) -} - -func fnv32(key string) uint32 { - hash := uint32(2166136261) - const prime32 = uint32(16777619) - for i := 0; i < len(key); i++ { - hash *= prime32 - hash ^= uint32(key[i]) - } - return hash -} - -// Concurrent map uses Interface{} as its value, therefor JSON Unmarshal -// will probably won't know which to type to unmarshal into, in such case -// we'll end up with a value of type map[string]interface{}, In most cases this isn't -// out value type, this is why we've decided to remove this functionality. - -// func (m *ConcurrentMap) UnmarshalJSON(b []byte) (err error) { -// // Reverse process of Marshal. - -// tmp := make(map[string]interface{}) - -// // Unmarshal into a single map. -// if err := json.Unmarshal(b, &tmp); err != nil { -// return nil -// } - -// // foreach key,value pair in temporary map insert into our concurrent map. -// for key, val := range tmp { -// m.Set(key, val) -// } -// return nil -// } diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore deleted file mode 100644 index 3b053c59ec..0000000000 --- a/vendor/github.com/spf13/cobra/.gitignore +++ /dev/null @@ -1,38 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -# Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore -# swap -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -# session -Session.vim -# temporary -.netrwhist -*~ -# auto-generated tag files -tags - -*.exe - -cobra.test - -.idea/* diff --git a/vendor/github.com/spf13/cobra/.mailmap b/vendor/github.com/spf13/cobra/.mailmap deleted file mode 100644 index 94ec53068a..0000000000 --- a/vendor/github.com/spf13/cobra/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -Steve Francia -Bjørn Erik Pedersen -Fabiano Franz diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml deleted file mode 100644 index 38b85f499c..0000000000 --- a/vendor/github.com/spf13/cobra/.travis.yml +++ /dev/null @@ -1,31 +0,0 @@ -language: go - -stages: - - diff - - test - -go: - - 1.10.x - - 1.11.x - - 1.12.x - - tip - -matrix: - allow_failures: - - go: tip - include: - - stage: diff - go: 1.12.x - script: diff -u <(echo -n) <(gofmt -d -s .) - -before_install: - - mkdir -p bin - - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.6.0/shellcheck - - chmod +x bin/shellcheck - - go get -u github.com/kyoh86/richgo -script: - - PATH=$PATH:$PWD/bin richgo test -v ./... - - go build - - if [ -z $NOVET ]; then - diff -u <(echo -n) <(go vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); - fi diff --git a/vendor/github.com/spf13/cobra/LICENSE.txt b/vendor/github.com/spf13/cobra/LICENSE.txt deleted file mode 100644 index 298f0e2665..0000000000 --- a/vendor/github.com/spf13/cobra/LICENSE.txt +++ /dev/null @@ -1,174 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md deleted file mode 100644 index 60c5a425bc..0000000000 --- a/vendor/github.com/spf13/cobra/README.md +++ /dev/null @@ -1,741 +0,0 @@ -![cobra logo](https://cloud.githubusercontent.com/assets/173412/10886352/ad566232-814f-11e5-9cd0-aa101788c117.png) - -Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. - -Many of the most widely used Go projects are built using Cobra, such as: -[Kubernetes](http://kubernetes.io/), -[Hugo](http://gohugo.io), -[rkt](https://github.com/coreos/rkt), -[etcd](https://github.com/coreos/etcd), -[Moby (former Docker)](https://github.com/moby/moby), -[Docker (distribution)](https://github.com/docker/distribution), -[OpenShift](https://www.openshift.com/), -[Delve](https://github.com/derekparker/delve), -[GopherJS](http://www.gopherjs.org/), -[CockroachDB](http://www.cockroachlabs.com/), -[Bleve](http://www.blevesearch.com/), -[ProjectAtomic (enterprise)](http://www.projectatomic.io/), -[Giant Swarm's gsctl](https://github.com/giantswarm/gsctl), -[Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack), -[rclone](http://rclone.org/), -[nehm](https://github.com/bogem/nehm), -[Pouch](https://github.com/alibaba/pouch), -[Istio](https://istio.io), -[Prototool](https://github.com/uber/prototool), -[mattermost-server](https://github.com/mattermost/mattermost-server), -[Gardener](https://github.com/gardener/gardenctl), -etc. - -[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) -[![CircleCI status](https://circleci.com/gh/spf13/cobra.png?circle-token=:circle-token "CircleCI status")](https://circleci.com/gh/spf13/cobra) -[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra) - -# Table of Contents - -- [Overview](#overview) -- [Concepts](#concepts) - * [Commands](#commands) - * [Flags](#flags) -- [Installing](#installing) -- [Getting Started](#getting-started) - * [Using the Cobra Generator](#using-the-cobra-generator) - * [Using the Cobra Library](#using-the-cobra-library) - * [Working with Flags](#working-with-flags) - * [Positional and Custom Arguments](#positional-and-custom-arguments) - * [Example](#example) - * [Help Command](#help-command) - * [Usage Message](#usage-message) - * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks) - * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens) - * [Generating documentation for your command](#generating-documentation-for-your-command) - * [Generating bash completions](#generating-bash-completions) - * [Generating zsh completions](#generating-zsh-completions) -- [Contributing](#contributing) -- [License](#license) - -# Overview - -Cobra is a library providing a simple interface to create powerful modern CLI -interfaces similar to git & go tools. - -Cobra is also an application that will generate your application scaffolding to rapidly -develop a Cobra-based application. - -Cobra provides: -* Easy subcommand-based CLIs: `app server`, `app fetch`, etc. -* Fully POSIX-compliant flags (including short & long versions) -* Nested subcommands -* Global, local and cascading flags -* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname` -* Intelligent suggestions (`app srver`... did you mean `app server`?) -* Automatic help generation for commands and flags -* Automatic help flag recognition of `-h`, `--help`, etc. -* Automatically generated bash autocomplete for your application -* Automatically generated man pages for your application -* Command aliases so you can change things without breaking them -* The flexibility to define your own help, usage, etc. -* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps - -# Concepts - -Cobra is built on a structure of commands, arguments & flags. - -**Commands** represent actions, **Args** are things and **Flags** are modifiers for those actions. - -The best applications will read like sentences when used. Users will know how -to use the application because they will natively understand how to use it. - -The pattern to follow is -`APPNAME VERB NOUN --ADJECTIVE.` - or -`APPNAME COMMAND ARG --FLAG` - -A few good real world examples may better illustrate this point. - -In the following example, 'server' is a command, and 'port' is a flag: - - hugo server --port=1313 - -In this command we are telling Git to clone the url bare. - - git clone URL --bare - -## Commands - -Command is the central point of the application. Each interaction that -the application supports will be contained in a Command. A command can -have children commands and optionally run an action. - -In the example above, 'server' is the command. - -[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command) - -## Flags - -A flag is a way to modify the behavior of a command. Cobra supports -fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/). -A Cobra command can define flags that persist through to children commands -and flags that are only available to that command. - -In the example above, 'port' is the flag. - -Flag functionality is provided by the [pflag -library](https://github.com/spf13/pflag), a fork of the flag standard library -which maintains the same interface while adding POSIX compliance. - -# Installing -Using Cobra is easy. First, use `go get` to install the latest version -of the library. This command will install the `cobra` generator executable -along with the library and its dependencies: - - go get -u github.com/spf13/cobra/cobra - -Next, include Cobra in your application: - -```go -import "github.com/spf13/cobra" -``` - -# Getting Started - -While you are welcome to provide your own organization, typically a Cobra-based -application will follow the following organizational structure: - -``` - ▾ appName/ - ▾ cmd/ - add.go - your.go - commands.go - here.go - main.go -``` - -In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -## Using the Cobra Generator - -Cobra provides its own program that will create your application and add any -commands you want. It's the easiest way to incorporate Cobra into your application. - -[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it. - -## Using the Cobra Library - -To manually implement Cobra you need to create a bare main.go file and a rootCmd file. -You will optionally provide additional commands as you see fit. - -### Create rootCmd - -Cobra doesn't require any special constructors. Simply create your commands. - -Ideally you place this in app/cmd/root.go: - -```go -var rootCmd = &cobra.Command{ - Use: "hugo", - Short: "Hugo is a very fast static site generator", - Long: `A Fast and Flexible Static Site Generator built with - love by spf13 and friends in Go. - Complete documentation is available at http://hugo.spf13.com`, - Run: func(cmd *cobra.Command, args []string) { - // Do Stuff Here - }, -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} -``` - -You will additionally define flags and handle configuration in your init() function. - -For example cmd/root.go: - -```go -import ( - "fmt" - "os" - - homedir "github.com/mitchellh/go-homedir" - "github.com/spf13/cobra" - "github.com/spf13/viper" -) - -func init() { - cobra.OnInitialize(initConfig) - rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)") - rootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/") - rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution") - rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)") - rootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) - viper.BindPFlag("projectbase", rootCmd.PersistentFlags().Lookup("projectbase")) - viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper")) - viper.SetDefault("author", "NAME HERE ") - viper.SetDefault("license", "apache") -} - -func initConfig() { - // Don't forget to read config either from cfgFile or from home directory! - if cfgFile != "" { - // Use config file from the flag. - viper.SetConfigFile(cfgFile) - } else { - // Find home directory. - home, err := homedir.Dir() - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - // Search config in home directory with name ".cobra" (without extension). - viper.AddConfigPath(home) - viper.SetConfigName(".cobra") - } - - if err := viper.ReadInConfig(); err != nil { - fmt.Println("Can't read config:", err) - os.Exit(1) - } -} -``` - -### Create your main.go - -With the root command you need to have your main function execute it. -Execute should be run on the root for clarity, though it can be called on any command. - -In a Cobra app, typically the main.go file is very bare. It serves, one purpose, to initialize Cobra. - -```go -package main - -import ( - "{pathToYourApp}/cmd" -) - -func main() { - cmd.Execute() -} -``` - -### Create additional commands - -Additional commands can be defined and typically are each given their own file -inside of the cmd/ directory. - -If you wanted to create a version command you would create cmd/version.go and -populate it with the following: - -```go -package cmd - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(versionCmd) -} - -var versionCmd = &cobra.Command{ - Use: "version", - Short: "Print the version number of Hugo", - Long: `All software has versions. This is Hugo's`, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hugo Static Site Generator v0.9 -- HEAD") - }, -} -``` - -## Working with Flags - -Flags provide modifiers to control how the action command operates. - -### Assign flags to a command - -Since the flags are defined and used in different locations, we need to -define a variable outside with the correct scope to assign the flag to -work with. - -```go -var Verbose bool -var Source string -``` - -There are two different approaches to assign a flag. - -### Persistent Flags - -A flag can be 'persistent' meaning that this flag will be available to the -command it's assigned to as well as every command under that command. For -global flags, assign a flag as a persistent flag on the root. - -```go -rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output") -``` - -### Local Flags - -A flag can also be assigned locally which will only apply to that specific command. - -```go -localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") -``` - -### Local Flag on Parent Commands - -By default Cobra only parses local flags on the target command, any local flags on -parent commands are ignored. By enabling `Command.TraverseChildren` Cobra will -parse local flags on each command before executing the target command. - -```go -command := cobra.Command{ - Use: "print [OPTIONS] [COMMANDS]", - TraverseChildren: true, -} -``` - -### Bind Flags with Config - -You can also bind your flags with [viper](https://github.com/spf13/viper): -```go -var author string - -func init() { - rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution") - viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author")) -} -``` - -In this example the persistent flag `author` is bound with `viper`. -**Note**, that the variable `author` will not be set to the value from config, -when the `--author` flag is not provided by user. - -More in [viper documentation](https://github.com/spf13/viper#working-with-flags). - -### Required flags - -Flags are optional by default. If instead you wish your command to report an error -when a flag has not been set, mark it as required: -```go -rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)") -rootCmd.MarkFlagRequired("region") -``` - -## Positional and Custom Arguments - -Validation of positional arguments can be specified using the `Args` field -of `Command`. - -The following validators are built in: - -- `NoArgs` - the command will report an error if there are any positional args. -- `ArbitraryArgs` - the command will accept any args. -- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`. -- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. -- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. -- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. -- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` -- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. - -An example of setting the custom validator: - -```go -var cmd = &cobra.Command{ - Short: "hello", - Args: func(cmd *cobra.Command, args []string) error { - if len(args) < 1 { - return errors.New("requires a color argument") - } - if myapp.IsValidColor(args[0]) { - return nil - } - return fmt.Errorf("invalid color specified: %s", args[0]) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Hello, World!") - }, -} -``` - -## Example - -In the example below, we have defined three commands. Two are at the top level -and one (cmdTimes) is a child of one of the top commands. In this case the root -is not executable meaning that a subcommand is required. This is accomplished -by not providing a 'Run' for the 'rootCmd'. - -We have only defined one flag for a single command. - -More documentation about flags is available at https://github.com/spf13/pflag - -```go -package main - -import ( - "fmt" - "strings" - - "github.com/spf13/cobra" -) - -func main() { - var echoTimes int - - var cmdPrint = &cobra.Command{ - Use: "print [string to print]", - Short: "Print anything to the screen", - Long: `print is for printing anything back to the screen. -For many years people have printed back to the screen.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdEcho = &cobra.Command{ - Use: "echo [string to echo]", - Short: "Echo anything to the screen", - Long: `echo is for echoing anything back. -Echo works a lot like print, except it has a child command.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("Print: " + strings.Join(args, " ")) - }, - } - - var cmdTimes = &cobra.Command{ - Use: "times [string to echo]", - Short: "Echo anything to the screen more times", - Long: `echo things multiple times back to the user by providing -a count and a string.`, - Args: cobra.MinimumNArgs(1), - Run: func(cmd *cobra.Command, args []string) { - for i := 0; i < echoTimes; i++ { - fmt.Println("Echo: " + strings.Join(args, " ")) - } - }, - } - - cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input") - - var rootCmd = &cobra.Command{Use: "app"} - rootCmd.AddCommand(cmdPrint, cmdEcho) - cmdEcho.AddCommand(cmdTimes) - rootCmd.Execute() -} -``` - -For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/). - -## Help Command - -Cobra automatically adds a help command to your application when you have subcommands. -This will be called when a user runs 'app help'. Additionally, help will also -support all other commands as input. Say, for instance, you have a command called -'create' without any additional configuration; Cobra will work when 'app help -create' is called. Every command will automatically have the '--help' flag added. - -### Example - -The following output is automatically generated by Cobra. Nothing beyond the -command and flag definitions are needed. - - $ cobra help - - Cobra is a CLI library for Go that empowers applications. - This application is a tool to generate the needed files - to quickly create a Cobra application. - - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - - -Help is just a command like any other. There is no special logic or behavior -around it. In fact, you can provide your own if you want. - -### Defining your own help - -You can provide your own Help command or your own template for the default command to use -with following functions: - -```go -cmd.SetHelpCommand(cmd *Command) -cmd.SetHelpFunc(f func(*Command, []string)) -cmd.SetHelpTemplate(s string) -``` - -The latter two will also apply to any children commands. - -## Usage Message - -When the user provides an invalid flag or invalid command, Cobra responds by -showing the user the 'usage'. - -### Example -You may recognize this from the help above. That's because the default help -embeds the usage as part of its output. - - $ cobra --invalid - Error: unknown flag: --invalid - Usage: - cobra [command] - - Available Commands: - add Add a command to a Cobra Application - help Help about any command - init Initialize a Cobra Application - - Flags: - -a, --author string author name for copyright attribution (default "YOUR NAME") - --config string config file (default is $HOME/.cobra.yaml) - -h, --help help for cobra - -l, --license string name of license for the project - --viper use Viper for configuration (default true) - - Use "cobra [command] --help" for more information about a command. - -### Defining your own usage -You can provide your own usage function or template for Cobra to use. -Like help, the function and template are overridable through public methods: - -```go -cmd.SetUsageFunc(f func(*Command) error) -cmd.SetUsageTemplate(s string) -``` - -## Version Flag - -Cobra adds a top-level '--version' flag if the Version field is set on the root command. -Running an application with the '--version' flag will print the version to stdout using -the version template. The template can be customized using the -`cmd.SetVersionTemplate(s string)` function. - -## PreRun and PostRun Hooks - -It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order: - -- `PersistentPreRun` -- `PreRun` -- `Run` -- `PostRun` -- `PersistentPostRun` - -An example of two commands which use all of these features is below. When the subcommand is executed, it will run the root command's `PersistentPreRun` but not the root command's `PersistentPostRun`: - -```go -package main - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func main() { - - var rootCmd = &cobra.Command{ - Use: "root [sub]", - Short: "My root command", - PersistentPreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args) - }, - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args) - }, - } - - var subCmd = &cobra.Command{ - Use: "sub [no options!]", - Short: "My subcommand", - PreRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PreRun with args: %v\n", args) - }, - Run: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd Run with args: %v\n", args) - }, - PostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PostRun with args: %v\n", args) - }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { - fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args) - }, - } - - rootCmd.AddCommand(subCmd) - - rootCmd.SetArgs([]string{""}) - rootCmd.Execute() - fmt.Println() - rootCmd.SetArgs([]string{"sub", "arg1", "arg2"}) - rootCmd.Execute() -} -``` - -Output: -``` -Inside rootCmd PersistentPreRun with args: [] -Inside rootCmd PreRun with args: [] -Inside rootCmd Run with args: [] -Inside rootCmd PostRun with args: [] -Inside rootCmd PersistentPostRun with args: [] - -Inside rootCmd PersistentPreRun with args: [arg1 arg2] -Inside subCmd PreRun with args: [arg1 arg2] -Inside subCmd Run with args: [arg1 arg2] -Inside subCmd PostRun with args: [arg1 arg2] -Inside subCmd PersistentPostRun with args: [arg1 arg2] -``` - -## Suggestions when "unknown command" happens - -Cobra will print automatic suggestions when "unknown command" errors happen. This allows Cobra to behave similarly to the `git` command when a typo happens. For example: - -``` -$ hugo srever -Error: unknown command "srever" for "hugo" - -Did you mean this? - server - -Run 'hugo --help' for usage. -``` - -Suggestions are automatic based on every subcommand registered and use an implementation of [Levenshtein distance](http://en.wikipedia.org/wiki/Levenshtein_distance). Every registered command that matches a minimum distance of 2 (ignoring case) will be displayed as a suggestion. - -If you need to disable suggestions or tweak the string distance in your command, use: - -```go -command.DisableSuggestions = true -``` - -or - -```go -command.SuggestionsMinimumDistance = 1 -``` - -You can also explicitly set names for which a given command will be suggested using the `SuggestFor` attribute. This allows suggestions for strings that are not close in terms of string distance, but makes sense in your set of commands and for some which you don't want aliases. Example: - -``` -$ kubectl remove -Error: unknown command "remove" for "kubectl" - -Did you mean this? - delete - -Run 'kubectl help' for usage. -``` - -## Generating documentation for your command - -Cobra can generate documentation based on subcommands, flags, etc. in the following formats: - -- [Markdown](doc/md_docs.md) -- [ReStructured Text](doc/rest_docs.md) -- [Man Page](doc/man_docs.md) - -## Generating bash completions - -Cobra can generate a bash-completion file. If you add more information to your command, these completions can be amazingly powerful and flexible. Read more about it in [Bash Completions](bash_completions.md). - -## Generating zsh completions - -Cobra can generate zsh-completion file. Read more about it in -[Zsh Completions](zsh_completions.md). - -# Contributing - -1. Fork it -2. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`) -3. Create your feature branch (`git checkout -b my-new-feature`) -4. Make changes and add them (`git add .`) -5. Commit your changes (`git commit -m 'Add some feature'`) -6. Push to the branch (`git push origin my-new-feature`) -7. Create new pull request - -# License - -Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt) diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go deleted file mode 100644 index c4d820b853..0000000000 --- a/vendor/github.com/spf13/cobra/args.go +++ /dev/null @@ -1,101 +0,0 @@ -package cobra - -import ( - "fmt" -) - -type PositionalArgs func(cmd *Command, args []string) error - -// Legacy arg validation has the following behaviour: -// - root commands with no subcommands can take arbitrary arguments -// - root commands with subcommands will do subcommand validity checking -// - subcommands will always accept arbitrary arguments -func legacyArgs(cmd *Command, args []string) error { - // no subcommand, always take args - if !cmd.HasSubCommands() { - return nil - } - - // root command with subcommands, do subcommand checking. - if !cmd.HasParent() && len(args) > 0 { - return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - return nil -} - -// NoArgs returns an error if any args are included. -func NoArgs(cmd *Command, args []string) error { - if len(args) > 0 { - return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath()) - } - return nil -} - -// OnlyValidArgs returns an error if any args are not in the list of ValidArgs. -func OnlyValidArgs(cmd *Command, args []string) error { - if len(cmd.ValidArgs) > 0 { - for _, v := range args { - if !stringInSlice(v, cmd.ValidArgs) { - return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0])) - } - } - } - return nil -} - -// ArbitraryArgs never returns an error. -func ArbitraryArgs(cmd *Command, args []string) error { - return nil -} - -// MinimumNArgs returns an error if there is not at least N args. -func MinimumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < n { - return fmt.Errorf("requires at least %d arg(s), only received %d", n, len(args)) - } - return nil - } -} - -// MaximumNArgs returns an error if there are more than N args. -func MaximumNArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) > n { - return fmt.Errorf("accepts at most %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactArgs returns an error if there are not exactly n args. -func ExactArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) != n { - return fmt.Errorf("accepts %d arg(s), received %d", n, len(args)) - } - return nil - } -} - -// ExactValidArgs returns an error if -// there are not exactly N positional args OR -// there are any positional args that are not in the `ValidArgs` field of `Command` -func ExactValidArgs(n int) PositionalArgs { - return func(cmd *Command, args []string) error { - if err := ExactArgs(n)(cmd, args); err != nil { - return err - } - return OnlyValidArgs(cmd, args) - } -} - -// RangeArgs returns an error if the number of args is not within the expected range. -func RangeArgs(min int, max int) PositionalArgs { - return func(cmd *Command, args []string) error { - if len(args) < min || len(args) > max { - return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args)) - } - return nil - } -} diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go deleted file mode 100644 index 57bb8e1b3f..0000000000 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ /dev/null @@ -1,547 +0,0 @@ -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "sort" - "strings" - - "github.com/spf13/pflag" -) - -// Annotations for Bash completion. -const ( - BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extensions" - BashCompCustom = "cobra_annotation_bash_completion_custom" - BashCompOneRequiredFlag = "cobra_annotation_bash_completion_one_required_flag" - BashCompSubdirsInDir = "cobra_annotation_bash_completion_subdirs_in_dir" -) - -func writePreamble(buf *bytes.Buffer, name string) { - buf.WriteString(fmt.Sprintf("# bash completion for %-36s -*- shell-script -*-\n", name)) - buf.WriteString(fmt.Sprintf(` -__%[1]s_debug() -{ - if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then - echo "$*" >> "${BASH_COMP_DEBUG_FILE}" - fi -} - -# Homebrew on Macs have version 1.3 of bash-completion which doesn't include -# _init_completion. This is a very minimal version of that function. -__%[1]s_init_completion() -{ - COMPREPLY=() - _get_comp_words_by_ref "$@" cur prev words cword -} - -__%[1]s_index_of_word() -{ - local w word=$1 - shift - index=0 - for w in "$@"; do - [[ $w = "$word" ]] && return - index=$((index+1)) - done - index=-1 -} - -__%[1]s_contains_word() -{ - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 -} - -__%[1]s_handle_reply() -{ - __%[1]s_debug "${FUNCNAME[0]}" - case $cur in - -*) - if [[ $(type -t compopt) = "builtin" ]]; then - compopt -o nospace - fi - local allflags - if [ ${#must_have_one_flag[@]} -ne 0 ]; then - allflags=("${must_have_one_flag[@]}") - else - allflags=("${flags[*]} ${two_word_flags[*]}") - fi - COMPREPLY=( $(compgen -W "${allflags[*]}" -- "$cur") ) - if [[ $(type -t compopt) = "builtin" ]]; then - [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace - fi - - # complete after --flag=abc - if [[ $cur == *=* ]]; then - if [[ $(type -t compopt) = "builtin" ]]; then - compopt +o nospace - fi - - local index flag - flag="${cur%%=*}" - __%[1]s_index_of_word "${flag}" "${flags_with_completion[@]}" - COMPREPLY=() - if [[ ${index} -ge 0 ]]; then - PREFIX="" - cur="${cur#*=}" - ${flags_completion[${index}]} - if [ -n "${ZSH_VERSION}" ]; then - # zsh completion needs --flag= prefix - eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )" - fi - fi - fi - return 0; - ;; - esac - - # check if we are handling a flag with special work handling - local index - __%[1]s_index_of_word "${prev}" "${flags_with_completion[@]}" - if [[ ${index} -ge 0 ]]; then - ${flags_completion[${index}]} - return - fi - - # we are parsing a flag and don't have a special handler, no completion - if [[ ${cur} != "${words[cword]}" ]]; then - return - fi - - local completions - completions=("${commands[@]}") - if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then - completions=("${must_have_one_noun[@]}") - fi - if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then - completions+=("${must_have_one_flag[@]}") - fi - COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") ) - - if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then - COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") ) - fi - - if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - if declare -F __%[1]s_custom_func >/dev/null; then - # try command name qualified custom func - __%[1]s_custom_func - else - # otherwise fall back to unqualified for compatibility - declare -F __custom_func >/dev/null && __custom_func - fi - fi - - # available in bash-completion >= 2, not always present on macOS - if declare -F __ltrim_colon_completions >/dev/null; then - __ltrim_colon_completions "$cur" - fi - - # If there is only 1 completion and it is a flag with an = it will be completed - # but we don't want a space after the = - if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then - compopt -o nospace - fi -} - -# The arguments should be in the form "ext1|ext2|extn" -__%[1]s_handle_filename_extension_flag() -{ - local ext="$1" - _filedir "@(${ext})" -} - -__%[1]s_handle_subdirs_in_dir_flag() -{ - local dir="$1" - pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 -} - -__%[1]s_handle_flag() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - # if a command required a flag, and we found it, unset must_have_one_flag() - local flagname=${words[c]} - local flagvalue - # if the word contained an = - if [[ ${words[c]} == *"="* ]]; then - flagvalue=${flagname#*=} # take in as flagvalue after the = - flagname=${flagname%%=*} # strip everything after the = - flagname="${flagname}=" # but put the = back - fi - __%[1]s_debug "${FUNCNAME[0]}: looking for ${flagname}" - if __%[1]s_contains_word "${flagname}" "${must_have_one_flag[@]}"; then - must_have_one_flag=() - fi - - # if you set a flag which only applies to this command, don't show subcommands - if __%[1]s_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then - commands=() - fi - - # keep flag value with flagname as flaghash - # flaghash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then - if [ -n "${flagvalue}" ] ; then - flaghash[${flagname}]=${flagvalue} - elif [ -n "${words[ $((c+1)) ]}" ] ; then - flaghash[${flagname}]=${words[ $((c+1)) ]} - else - flaghash[${flagname}]="true" # pad "true" for bool flag - fi - fi - - # skip the argument to a two word flag - if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then - __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" - c=$((c+1)) - # if we are looking for a flags value, don't show commands - if [[ $c -eq $cword ]]; then - commands=() - fi - fi - - c=$((c+1)) - -} - -__%[1]s_handle_noun() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - if __%[1]s_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then - must_have_one_noun=() - elif __%[1]s_contains_word "${words[c]}" "${noun_aliases[@]}"; then - must_have_one_noun=() - fi - - nouns+=("${words[c]}") - c=$((c+1)) -} - -__%[1]s_handle_command() -{ - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - - local next_command - if [[ -n ${last_command} ]]; then - next_command="_${last_command}_${words[c]//:/__}" - else - if [[ $c -eq 0 ]]; then - next_command="_%[1]s_root_command" - else - next_command="_${words[c]//:/__}" - fi - fi - c=$((c+1)) - __%[1]s_debug "${FUNCNAME[0]}: looking for ${next_command}" - declare -F "$next_command" >/dev/null && $next_command -} - -__%[1]s_handle_word() -{ - if [[ $c -ge $cword ]]; then - __%[1]s_handle_reply - return - fi - __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}" - if [[ "${words[c]}" == -* ]]; then - __%[1]s_handle_flag - elif __%[1]s_contains_word "${words[c]}" "${commands[@]}"; then - __%[1]s_handle_command - elif [[ $c -eq 0 ]]; then - __%[1]s_handle_command - elif __%[1]s_contains_word "${words[c]}" "${command_aliases[@]}"; then - # aliashash variable is an associative array which is only supported in bash > 3. - if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then - words[c]=${aliashash[${words[c]}]} - __%[1]s_handle_command - else - __%[1]s_handle_noun - fi - else - __%[1]s_handle_noun - fi - __%[1]s_handle_word -} - -`, name)) -} - -func writePostscript(buf *bytes.Buffer, name string) { - name = strings.Replace(name, ":", "__", -1) - buf.WriteString(fmt.Sprintf("__start_%s()\n", name)) - buf.WriteString(fmt.Sprintf(`{ - local cur prev words cword - declare -A flaghash 2>/dev/null || : - declare -A aliashash 2>/dev/null || : - if declare -F _init_completion >/dev/null 2>&1; then - _init_completion -s || return - else - __%[1]s_init_completion -n "=" || return - fi - - local c=0 - local flags=() - local two_word_flags=() - local local_nonpersistent_flags=() - local flags_with_completion=() - local flags_completion=() - local commands=("%[1]s") - local must_have_one_flag=() - local must_have_one_noun=() - local last_command - local nouns=() - - __%[1]s_handle_word -} - -`, name)) - buf.WriteString(fmt.Sprintf(`if [[ $(type -t compopt) = "builtin" ]]; then - complete -o default -F __start_%s %s -else - complete -o default -o nospace -F __start_%s %s -fi - -`, name, name, name, name)) - buf.WriteString("# ex: ts=4 sw=4 et filetype=sh\n") -} - -func writeCommands(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" commands=()\n") - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { - continue - } - buf.WriteString(fmt.Sprintf(" commands+=(%q)\n", c.Name())) - writeCmdAliases(buf, c) - } - buf.WriteString("\n") -} - -func writeFlagHandler(buf *bytes.Buffer, name string, annotations map[string][]string, cmd *Command) { - for key, value := range annotations { - switch key { - case BashCompFilenameExt: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) > 0 { - ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|") - } else { - ext = "_filedir" - } - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - case BashCompCustom: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - if len(value) > 0 { - handlers := strings.Join(value, "; ") - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", handlers)) - } else { - buf.WriteString(" flags_completion+=(:)\n") - } - case BashCompSubdirsInDir: - buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name)) - - var ext string - if len(value) == 1 { - ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0] - } else { - ext = "_filedir -d" - } - buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext)) - } - } -} - -func writeShortFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) { - name := flag.Shorthand - format := " " - if len(flag.NoOptDefVal) == 0 { - format += "two_word_" - } - format += "flags+=(\"-%s\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - writeFlagHandler(buf, "-"+name, flag.Annotations, cmd) -} - -func writeFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) { - name := flag.Name - format := " flags+=(\"--%s" - if len(flag.NoOptDefVal) == 0 { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - if len(flag.NoOptDefVal) == 0 { - format = " two_word_flags+=(\"--%s\")\n" - buf.WriteString(fmt.Sprintf(format, name)) - } - writeFlagHandler(buf, "--"+name, flag.Annotations, cmd) -} - -func writeLocalNonPersistentFlag(buf *bytes.Buffer, flag *pflag.Flag) { - name := flag.Name - format := " local_nonpersistent_flags+=(\"--%s" - if len(flag.NoOptDefVal) == 0 { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, name)) -} - -func writeFlags(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(` flags=() - two_word_flags=() - local_nonpersistent_flags=() - flags_with_completion=() - flags_completion=() - -`) - localNonPersistentFlags := cmd.LocalNonPersistentFlags() - cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - if localNonPersistentFlags.Lookup(flag.Name) != nil { - writeLocalNonPersistentFlag(buf, flag) - } - }) - cmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - writeFlag(buf, flag, cmd) - if len(flag.Shorthand) > 0 { - writeShortFlag(buf, flag, cmd) - } - }) - - buf.WriteString("\n") -} - -func writeRequiredFlag(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" must_have_one_flag=()\n") - flags := cmd.NonInheritedFlags() - flags.VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - for key := range flag.Annotations { - switch key { - case BashCompOneRequiredFlag: - format := " must_have_one_flag+=(\"--%s" - if flag.Value.Type() != "bool" { - format += "=" - } - format += "\")\n" - buf.WriteString(fmt.Sprintf(format, flag.Name)) - - if len(flag.Shorthand) > 0 { - buf.WriteString(fmt.Sprintf(" must_have_one_flag+=(\"-%s\")\n", flag.Shorthand)) - } - } - } - }) -} - -func writeRequiredNouns(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" must_have_one_noun=()\n") - sort.Sort(sort.StringSlice(cmd.ValidArgs)) - for _, value := range cmd.ValidArgs { - buf.WriteString(fmt.Sprintf(" must_have_one_noun+=(%q)\n", value)) - } -} - -func writeCmdAliases(buf *bytes.Buffer, cmd *Command) { - if len(cmd.Aliases) == 0 { - return - } - - sort.Sort(sort.StringSlice(cmd.Aliases)) - - buf.WriteString(fmt.Sprint(` if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then`, "\n")) - for _, value := range cmd.Aliases { - buf.WriteString(fmt.Sprintf(" command_aliases+=(%q)\n", value)) - buf.WriteString(fmt.Sprintf(" aliashash[%q]=%q\n", value, cmd.Name())) - } - buf.WriteString(` fi`) - buf.WriteString("\n") -} -func writeArgAliases(buf *bytes.Buffer, cmd *Command) { - buf.WriteString(" noun_aliases=()\n") - sort.Sort(sort.StringSlice(cmd.ArgAliases)) - for _, value := range cmd.ArgAliases { - buf.WriteString(fmt.Sprintf(" noun_aliases+=(%q)\n", value)) - } -} - -func gen(buf *bytes.Buffer, cmd *Command) { - for _, c := range cmd.Commands() { - if !c.IsAvailableCommand() || c == cmd.helpCommand { - continue - } - gen(buf, c) - } - commandName := cmd.CommandPath() - commandName = strings.Replace(commandName, " ", "_", -1) - commandName = strings.Replace(commandName, ":", "__", -1) - - if cmd.Root() == cmd { - buf.WriteString(fmt.Sprintf("_%s_root_command()\n{\n", commandName)) - } else { - buf.WriteString(fmt.Sprintf("_%s()\n{\n", commandName)) - } - - buf.WriteString(fmt.Sprintf(" last_command=%q\n", commandName)) - buf.WriteString("\n") - buf.WriteString(" command_aliases=()\n") - buf.WriteString("\n") - - writeCommands(buf, cmd) - writeFlags(buf, cmd) - writeRequiredFlag(buf, cmd) - writeRequiredNouns(buf, cmd) - writeArgAliases(buf, cmd) - buf.WriteString("}\n\n") -} - -// GenBashCompletion generates bash completion file and writes to the passed writer. -func (c *Command) GenBashCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - writePreamble(buf, c.Name()) - if len(c.BashCompletionFunction) > 0 { - buf.WriteString(c.BashCompletionFunction + "\n") - } - gen(buf, c) - writePostscript(buf, c.Name()) - - _, err := buf.WriteTo(w) - return err -} - -func nonCompletableFlag(flag *pflag.Flag) bool { - return flag.Hidden || len(flag.Deprecated) > 0 -} - -// GenBashCompletionFile generates bash completion file. -func (c *Command) GenBashCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenBashCompletion(outFile) -} diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md deleted file mode 100644 index 4ac61ee132..0000000000 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ /dev/null @@ -1,256 +0,0 @@ -# Generating Bash Completions For Your Own cobra.Command - -If you are using the generator you can create a completion command by running - -```bash -cobra add completion -``` - -Update the help text show how to install the bash_completion Linux show here [Kubectl docs show mac options](https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion) - -Writing the shell script to stdout allows the most flexible use. - -```go -// completionCmd represents the completion command -var completionCmd = &cobra.Command{ - Use: "completion", - Short: "Generates bash completion scripts", - Long: `To load completion run - -. <(bitbucket completion) - -To configure your bash shell to load completions for each session add to your bashrc - -# ~/.bashrc or ~/.profile -. <(bitbucket completion) -`, - Run: func(cmd *cobra.Command, args []string) { - rootCmd.GenBashCompletion(os.Stdout); - }, -} -``` - -**Note:** The cobra generator may include messages printed to stdout for example if the config file is loaded, this will break the auto complete script - - -## Example from kubectl - -Generating bash completions from a cobra command is incredibly easy. An actual program which does so for the kubernetes kubectl binary is as follows: - -```go -package main - -import ( - "io/ioutil" - "os" - - "k8s.io/kubernetes/pkg/kubectl/cmd" - "k8s.io/kubernetes/pkg/kubectl/cmd/util" -) - -func main() { - kubectl := cmd.NewKubectlCommand(util.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard) - kubectl.GenBashCompletionFile("out.sh") -} -``` - -`out.sh` will get you completions of subcommands and flags. Copy it to `/etc/bash_completion.d/` as described [here](https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1) and reset your terminal to use autocompletion. If you make additional annotations to your code, you can get even more intelligent and flexible behavior. - -## Creating your own custom functions - -Some more actual code that works in kubernetes: - -```bash -const ( - bash_completion_func = `__kubectl_parse_get() -{ - local kubectl_output out - if kubectl_output=$(kubectl get --no-headers "$1" 2>/dev/null); then - out=($(echo "${kubectl_output}" | awk '{print $1}')) - COMPREPLY=( $( compgen -W "${out[*]}" -- "$cur" ) ) - fi -} - -__kubectl_get_resource() -{ - if [[ ${#nouns[@]} -eq 0 ]]; then - return 1 - fi - __kubectl_parse_get ${nouns[${#nouns[@]} -1]} - if [[ $? -eq 0 ]]; then - return 0 - fi -} - -__kubectl_custom_func() { - case ${last_command} in - kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop) - __kubectl_get_resource - return - ;; - *) - ;; - esac -} -`) -``` - -And then I set that in my command definition: - -```go -cmds := &cobra.Command{ - Use: "kubectl", - Short: "kubectl controls the Kubernetes cluster manager", - Long: `kubectl controls the Kubernetes cluster manager. - -Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, - Run: runHelp, - BashCompletionFunction: bash_completion_func, -} -``` - -The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! - -## Have the completions code complete your 'nouns' - -In the above example "pod" was assumed to already be typed. But if you want `kubectl get [tab][tab]` to show a list of valid "nouns" you have to set them. Simplified code from `kubectl get` looks like: - -```go -validArgs []string = { "pod", "node", "service", "replicationcontroller" } - -cmd := &cobra.Command{ - Use: "get [(-o|--output=)json|yaml|template|...] (RESOURCE [NAME] | RESOURCE/NAME ...)", - Short: "Display one or many resources", - Long: get_long, - Example: get_example, - Run: func(cmd *cobra.Command, args []string) { - err := RunGet(f, out, cmd, args) - util.CheckErr(err) - }, - ValidArgs: validArgs, -} -``` - -Notice we put the "ValidArgs" on the "get" subcommand. Doing so will give results like - -```bash -# kubectl get [tab][tab] -node pod replicationcontroller service -``` - -## Plural form and shortcuts for nouns - -If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`: - -```go -argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" } - -cmd := &cobra.Command{ - ... - ValidArgs: validArgs, - ArgAliases: argAliases -} -``` - -The aliases are not shown to the user on tab completion, but they are accepted as valid nouns by -the completion algorithm if entered manually, e.g. in: - -```bash -# kubectl get rc [tab][tab] -backend frontend database -``` - -Note that without declaring `rc` as an alias, the completion algorithm would show the list of nouns -in this example again instead of the replication controllers. - -## Mark flags as required - -Most of the time completions will only show subcommands. But if a flag is required to make a subcommand work, you probably want it to show up when the user types [tab][tab]. Marking a flag as 'Required' is incredibly easy. - -```go -cmd.MarkFlagRequired("pod") -cmd.MarkFlagRequired("container") -``` - -and you'll get something like - -```bash -# kubectl exec [tab][tab][tab] --c --container= -p --pod= -``` - -# Specify valid filename extensions for flags that take a filename - -In this example we use --filename= and expect to get a json or yaml file as the argument. To make this easier we annotate the --filename flag with valid filename extensions. - -```go - annotations := []string{"json", "yaml", "yml"} - annotation := make(map[string][]string) - annotation[cobra.BashCompFilenameExt] = annotations - - flag := &pflag.Flag{ - Name: "filename", - Shorthand: "f", - Usage: usage, - Value: value, - DefValue: value.String(), - Annotations: annotation, - } - cmd.Flags().AddFlag(flag) -``` - -Now when you run a command with this filename flag you'll get something like - -```bash -# kubectl create -f -test/ example/ rpmbuild/ -hello.yml test.json -``` - -So while there are many other files in the CWD it only shows me subdirs and those with valid extensions. - -# Specify custom flag completion - -Similar to the filename completion and filtering using cobra.BashCompFilenameExt, you can specify -a custom flag completion function with cobra.BashCompCustom: - -```go - annotation := make(map[string][]string) - annotation[cobra.BashCompCustom] = []string{"__kubectl_get_namespaces"} - - flag := &pflag.Flag{ - Name: "namespace", - Usage: usage, - Annotations: annotation, - } - cmd.Flags().AddFlag(flag) -``` - -In addition add the `__handle_namespace_flag` implementation in the `BashCompletionFunction` -value, e.g.: - -```bash -__kubectl_get_namespaces() -{ - local template - template="{{ range .items }}{{ .metadata.name }} {{ end }}" - local kubectl_out - if kubectl_out=$(kubectl get -o template --template="${template}" namespace 2>/dev/null); then - COMPREPLY=( $( compgen -W "${kubectl_out}[*]" -- "$cur" ) ) - fi -} -``` -# Using bash aliases for commands - -You can also configure the `bash aliases` for the commands and they will also support completions. - -```bash -alias aliasname=origcommand -complete -o default -F __start_origcommand aliasname - -# and now when you run `aliasname` completion will make -# suggestions as it did for `origcommand`. - -$) aliasname -completion firstcommand secondcommand -``` diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go deleted file mode 100644 index 6505c070b4..0000000000 --- a/vendor/github.com/spf13/cobra/cobra.go +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Commands similar to git, go tools and other modern CLI tools -// inspired by go, go-Commander, gh and subcommand - -package cobra - -import ( - "fmt" - "io" - "reflect" - "strconv" - "strings" - "text/template" - "time" - "unicode" -) - -var templateFuncs = template.FuncMap{ - "trim": strings.TrimSpace, - "trimRightSpace": trimRightSpace, - "trimTrailingWhitespaces": trimRightSpace, - "appendIfNotPresent": appendIfNotPresent, - "rpad": rpad, - "gt": Gt, - "eq": Eq, -} - -var initializers []func() - -// EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing -// to automatically enable in CLI tools. -// Set this to true to enable it. -var EnablePrefixMatching = false - -// EnableCommandSorting controls sorting of the slice of commands, which is turned on by default. -// To disable sorting, set it to false. -var EnableCommandSorting = true - -// MousetrapHelpText enables an information splash screen on Windows -// if the CLI is started from explorer.exe. -// To disable the mousetrap, just set this variable to blank string (""). -// Works only on Microsoft Windows. -var MousetrapHelpText string = `This is a command line tool. - -You need to open cmd.exe and run it from there. -` - -// MousetrapDisplayDuration controls how long the MousetrapHelpText message is displayed on Windows -// if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. -// To disable the mousetrap, just set MousetrapHelpText to blank string (""). -// Works only on Microsoft Windows. -var MousetrapDisplayDuration time.Duration = 5 * time.Second - -// AddTemplateFunc adds a template function that's available to Usage and Help -// template generation. -func AddTemplateFunc(name string, tmplFunc interface{}) { - templateFuncs[name] = tmplFunc -} - -// AddTemplateFuncs adds multiple template functions that are available to Usage and -// Help template generation. -func AddTemplateFuncs(tmplFuncs template.FuncMap) { - for k, v := range tmplFuncs { - templateFuncs[k] = v - } -} - -// OnInitialize sets the passed functions to be run when each command's -// Execute method is called. -func OnInitialize(y ...func()) { - initializers = append(initializers, y...) -} - -// FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans, -// Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as -// ints and then compared. -func Gt(a interface{}, b interface{}) bool { - var left, right int64 - av := reflect.ValueOf(a) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - left = int64(av.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - left = av.Int() - case reflect.String: - left, _ = strconv.ParseInt(av.String(), 10, 64) - } - - bv := reflect.ValueOf(b) - - switch bv.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - right = int64(bv.Len()) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - right = bv.Int() - case reflect.String: - right, _ = strconv.ParseInt(bv.String(), 10, 64) - } - - return left > right -} - -// FIXME Eq is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic. -func Eq(a interface{}, b interface{}) bool { - av := reflect.ValueOf(a) - bv := reflect.ValueOf(b) - - switch av.Kind() { - case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice: - panic("Eq called on unsupported type") - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return av.Int() == bv.Int() - case reflect.String: - return av.String() == bv.String() - } - return false -} - -func trimRightSpace(s string) string { - return strings.TrimRightFunc(s, unicode.IsSpace) -} - -// FIXME appendIfNotPresent is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra. - -// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s. -func appendIfNotPresent(s, stringToAppend string) string { - if strings.Contains(s, stringToAppend) { - return s - } - return s + " " + stringToAppend -} - -// rpad adds padding to the right of a string. -func rpad(s string, padding int) string { - template := fmt.Sprintf("%%-%ds", padding) - return fmt.Sprintf(template, s) -} - -// tmpl executes the given template text on data, writing the result to w. -func tmpl(w io.Writer, text string, data interface{}) error { - t := template.New("top") - t.Funcs(templateFuncs) - template.Must(t.Parse(text)) - return t.Execute(w, data) -} - -// ld compares two strings and returns the levenshtein distance between them. -func ld(s, t string, ignoreCase bool) int { - if ignoreCase { - s = strings.ToLower(s) - t = strings.ToLower(t) - } - d := make([][]int, len(s)+1) - for i := range d { - d[i] = make([]int, len(t)+1) - } - for i := range d { - d[i][0] = i - } - for j := range d[0] { - d[0][j] = j - } - for j := 1; j <= len(t); j++ { - for i := 1; i <= len(s); i++ { - if s[i-1] == t[j-1] { - d[i][j] = d[i-1][j-1] - } else { - min := d[i-1][j] - if d[i][j-1] < min { - min = d[i][j-1] - } - if d[i-1][j-1] < min { - min = d[i-1][j-1] - } - d[i][j] = min + 1 - } - } - - } - return d[len(s)][len(t)] -} - -func stringInSlice(a string, list []string) bool { - for _, b := range list { - if b == a { - return true - } - } - return false -} diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go deleted file mode 100644 index c7e8983034..0000000000 --- a/vendor/github.com/spf13/cobra/command.go +++ /dev/null @@ -1,1594 +0,0 @@ -// Copyright © 2013 Steve Francia . -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces. -// In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code. -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "path/filepath" - "sort" - "strings" - - flag "github.com/spf13/pflag" -) - -// FParseErrWhitelist configures Flag parse errors to be ignored -type FParseErrWhitelist flag.ParseErrorsWhitelist - -// Command is just that, a command for your application. -// E.g. 'go run ...' - 'run' is the command. Cobra requires -// you to define the usage and description as part of your command -// definition to ensure usability. -type Command struct { - // Use is the one-line usage message. - Use string - - // Aliases is an array of aliases that can be used instead of the first word in Use. - Aliases []string - - // SuggestFor is an array of command names for which this command will be suggested - - // similar to aliases but only suggests. - SuggestFor []string - - // Short is the short description shown in the 'help' output. - Short string - - // Long is the long message shown in the 'help ' output. - Long string - - // Example is examples of how to use the command. - Example string - - // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions - ValidArgs []string - - // Expected arguments - Args PositionalArgs - - // ArgAliases is List of aliases for ValidArgs. - // These are not suggested to the user in the bash completion, - // but accepted if entered manually. - ArgAliases []string - - // BashCompletionFunction is custom functions used by the bash autocompletion generator. - BashCompletionFunction string - - // Deprecated defines, if this command is deprecated and should print this string when used. - Deprecated string - - // Hidden defines, if this command is hidden and should NOT show up in the list of available commands. - Hidden bool - - // Annotations are key/value pairs that can be used by applications to identify or - // group commands. - Annotations map[string]string - - // Version defines the version for this command. If this value is non-empty and the command does not - // define a "version" flag, a "version" boolean flag will be added to the command and, if specified, - // will print content of the "Version" variable. - Version string - - // The *Run functions are executed in the following order: - // * PersistentPreRun() - // * PreRun() - // * Run() - // * PostRun() - // * PersistentPostRun() - // All functions get the same args, the arguments after the command name. - // - // PersistentPreRun: children of this command will inherit and execute. - PersistentPreRun func(cmd *Command, args []string) - // PersistentPreRunE: PersistentPreRun but returns an error. - PersistentPreRunE func(cmd *Command, args []string) error - // PreRun: children of this command will not inherit. - PreRun func(cmd *Command, args []string) - // PreRunE: PreRun but returns an error. - PreRunE func(cmd *Command, args []string) error - // Run: Typically the actual work function. Most commands will only implement this. - Run func(cmd *Command, args []string) - // RunE: Run but returns an error. - RunE func(cmd *Command, args []string) error - // PostRun: run after the Run command. - PostRun func(cmd *Command, args []string) - // PostRunE: PostRun but returns an error. - PostRunE func(cmd *Command, args []string) error - // PersistentPostRun: children of this command will inherit and execute after PostRun. - PersistentPostRun func(cmd *Command, args []string) - // PersistentPostRunE: PersistentPostRun but returns an error. - PersistentPostRunE func(cmd *Command, args []string) error - - // SilenceErrors is an option to quiet errors down stream. - SilenceErrors bool - - // SilenceUsage is an option to silence usage when an error occurs. - SilenceUsage bool - - // DisableFlagParsing disables the flag parsing. - // If this is true all flags will be passed to the command as arguments. - DisableFlagParsing bool - - // DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...") - // will be printed by generating docs for this command. - DisableAutoGenTag bool - - // DisableFlagsInUseLine will disable the addition of [flags] to the usage - // line of a command when printing help or generating docs - DisableFlagsInUseLine bool - - // DisableSuggestions disables the suggestions based on Levenshtein distance - // that go along with 'unknown command' messages. - DisableSuggestions bool - // SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions. - // Must be > 0. - SuggestionsMinimumDistance int - - // TraverseChildren parses flags on all parents before executing child command. - TraverseChildren bool - - //FParseErrWhitelist flag parse errors to be ignored - FParseErrWhitelist FParseErrWhitelist - - // commands is the list of commands supported by this program. - commands []*Command - // parent is a parent command for this command. - parent *Command - // Max lengths of commands' string lengths for use in padding. - commandsMaxUseLen int - commandsMaxCommandPathLen int - commandsMaxNameLen int - // commandsAreSorted defines, if command slice are sorted or not. - commandsAreSorted bool - // commandCalledAs is the name or alias value used to call this command. - commandCalledAs struct { - name string - called bool - } - - // args is actual args parsed from flags. - args []string - // flagErrorBuf contains all error messages from pflag. - flagErrorBuf *bytes.Buffer - // flags is full set of flags. - flags *flag.FlagSet - // pflags contains persistent flags. - pflags *flag.FlagSet - // lflags contains local flags. - lflags *flag.FlagSet - // iflags contains inherited flags. - iflags *flag.FlagSet - // parentsPflags is all persistent flags of cmd's parents. - parentsPflags *flag.FlagSet - // globNormFunc is the global normalization function - // that we can use on every pflag set and children commands - globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName - - // usageFunc is usage func defined by user. - usageFunc func(*Command) error - // usageTemplate is usage template defined by user. - usageTemplate string - // flagErrorFunc is func defined by user and it's called when the parsing of - // flags returns an error. - flagErrorFunc func(*Command, error) error - // helpTemplate is help template defined by user. - helpTemplate string - // helpFunc is help func defined by user. - helpFunc func(*Command, []string) - // helpCommand is command with usage 'help'. If it's not defined by user, - // cobra uses default help command. - helpCommand *Command - // versionTemplate is the version template defined by user. - versionTemplate string - - // inReader is a reader defined by the user that replaces stdin - inReader io.Reader - // outWriter is a writer defined by the user that replaces stdout - outWriter io.Writer - // errWriter is a writer defined by the user that replaces stderr - errWriter io.Writer -} - -// SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden -// particularly useful when testing. -func (c *Command) SetArgs(a []string) { - c.args = a -} - -// SetOutput sets the destination for usage and error messages. -// If output is nil, os.Stderr is used. -// Deprecated: Use SetOut and/or SetErr instead -func (c *Command) SetOutput(output io.Writer) { - c.outWriter = output - c.errWriter = output -} - -// SetOut sets the destination for usage messages. -// If newOut is nil, os.Stdout is used. -func (c *Command) SetOut(newOut io.Writer) { - c.outWriter = newOut -} - -// SetErr sets the destination for error messages. -// If newErr is nil, os.Stderr is used. -func (c *Command) SetErr(newErr io.Writer) { - c.errWriter = newErr -} - -// SetOut sets the source for input data -// If newIn is nil, os.Stdin is used. -func (c *Command) SetIn(newIn io.Reader) { - c.inReader = newIn -} - -// SetUsageFunc sets usage function. Usage can be defined by application. -func (c *Command) SetUsageFunc(f func(*Command) error) { - c.usageFunc = f -} - -// SetUsageTemplate sets usage template. Can be defined by Application. -func (c *Command) SetUsageTemplate(s string) { - c.usageTemplate = s -} - -// SetFlagErrorFunc sets a function to generate an error when flag parsing -// fails. -func (c *Command) SetFlagErrorFunc(f func(*Command, error) error) { - c.flagErrorFunc = f -} - -// SetHelpFunc sets help function. Can be defined by Application. -func (c *Command) SetHelpFunc(f func(*Command, []string)) { - c.helpFunc = f -} - -// SetHelpCommand sets help command. -func (c *Command) SetHelpCommand(cmd *Command) { - c.helpCommand = cmd -} - -// SetHelpTemplate sets help template to be used. Application can use it to set custom template. -func (c *Command) SetHelpTemplate(s string) { - c.helpTemplate = s -} - -// SetVersionTemplate sets version template to be used. Application can use it to set custom template. -func (c *Command) SetVersionTemplate(s string) { - c.versionTemplate = s -} - -// SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands. -// The user should not have a cyclic dependency on commands. -func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string) flag.NormalizedName) { - c.Flags().SetNormalizeFunc(n) - c.PersistentFlags().SetNormalizeFunc(n) - c.globNormFunc = n - - for _, command := range c.commands { - command.SetGlobalNormalizationFunc(n) - } -} - -// OutOrStdout returns output to stdout. -func (c *Command) OutOrStdout() io.Writer { - return c.getOut(os.Stdout) -} - -// OutOrStderr returns output to stderr -func (c *Command) OutOrStderr() io.Writer { - return c.getOut(os.Stderr) -} - -// ErrOrStderr returns output to stderr -func (c *Command) ErrOrStderr() io.Writer { - return c.getErr(os.Stderr) -} - -// ErrOrStderr returns output to stderr -func (c *Command) InOrStdin() io.Reader { - return c.getIn(os.Stdin) -} - -func (c *Command) getOut(def io.Writer) io.Writer { - if c.outWriter != nil { - return c.outWriter - } - if c.HasParent() { - return c.parent.getOut(def) - } - return def -} - -func (c *Command) getErr(def io.Writer) io.Writer { - if c.errWriter != nil { - return c.errWriter - } - if c.HasParent() { - return c.parent.getErr(def) - } - return def -} - -func (c *Command) getIn(def io.Reader) io.Reader { - if c.inReader != nil { - return c.inReader - } - if c.HasParent() { - return c.parent.getIn(def) - } - return def -} - -// UsageFunc returns either the function set by SetUsageFunc for this command -// or a parent, or it returns a default usage function. -func (c *Command) UsageFunc() (f func(*Command) error) { - if c.usageFunc != nil { - return c.usageFunc - } - if c.HasParent() { - return c.Parent().UsageFunc() - } - return func(c *Command) error { - c.mergePersistentFlags() - err := tmpl(c.OutOrStderr(), c.UsageTemplate(), c) - if err != nil { - c.Println(err) - } - return err - } -} - -// Usage puts out the usage for the command. -// Used when a user provides invalid input. -// Can be defined by user by overriding UsageFunc. -func (c *Command) Usage() error { - return c.UsageFunc()(c) -} - -// HelpFunc returns either the function set by SetHelpFunc for this command -// or a parent, or it returns a function with default help behavior. -func (c *Command) HelpFunc() func(*Command, []string) { - if c.helpFunc != nil { - return c.helpFunc - } - if c.HasParent() { - return c.Parent().HelpFunc() - } - return func(c *Command, a []string) { - c.mergePersistentFlags() - err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c) - if err != nil { - c.Println(err) - } - } -} - -// Help puts out the help for the command. -// Used when a user calls help [command]. -// Can be defined by user by overriding HelpFunc. -func (c *Command) Help() error { - c.HelpFunc()(c, []string{}) - return nil -} - -// UsageString returns usage string. -func (c *Command) UsageString() string { - // Storing normal writers - tmpOutput := c.outWriter - tmpErr := c.errWriter - - bb := new(bytes.Buffer) - c.outWriter = bb - c.errWriter = bb - - c.Usage() - - // Setting things back to normal - c.outWriter = tmpOutput - c.errWriter = tmpErr - - return bb.String() -} - -// FlagErrorFunc returns either the function set by SetFlagErrorFunc for this -// command or a parent, or it returns a function which returns the original -// error. -func (c *Command) FlagErrorFunc() (f func(*Command, error) error) { - if c.flagErrorFunc != nil { - return c.flagErrorFunc - } - - if c.HasParent() { - return c.parent.FlagErrorFunc() - } - return func(c *Command, err error) error { - return err - } -} - -var minUsagePadding = 25 - -// UsagePadding return padding for the usage. -func (c *Command) UsagePadding() int { - if c.parent == nil || minUsagePadding > c.parent.commandsMaxUseLen { - return minUsagePadding - } - return c.parent.commandsMaxUseLen -} - -var minCommandPathPadding = 11 - -// CommandPathPadding return padding for the command path. -func (c *Command) CommandPathPadding() int { - if c.parent == nil || minCommandPathPadding > c.parent.commandsMaxCommandPathLen { - return minCommandPathPadding - } - return c.parent.commandsMaxCommandPathLen -} - -var minNamePadding = 11 - -// NamePadding returns padding for the name. -func (c *Command) NamePadding() int { - if c.parent == nil || minNamePadding > c.parent.commandsMaxNameLen { - return minNamePadding - } - return c.parent.commandsMaxNameLen -} - -// UsageTemplate returns usage template for the command. -func (c *Command) UsageTemplate() string { - if c.usageTemplate != "" { - return c.usageTemplate - } - - if c.HasParent() { - return c.parent.UsageTemplate() - } - return `Usage:{{if .Runnable}} - {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}} - {{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}} - -Aliases: - {{.NameAndAliases}}{{end}}{{if .HasExample}} - -Examples: -{{.Example}}{{end}}{{if .HasAvailableSubCommands}} - -Available Commands:{{range .Commands}}{{if (or .IsAvailableCommand (eq .Name "help"))}} - {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}} - -Flags: -{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}} - -Global Flags: -{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasHelpSubCommands}} - -Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}} - {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableSubCommands}} - -Use "{{.CommandPath}} [command] --help" for more information about a command.{{end}} -` -} - -// HelpTemplate return help template for the command. -func (c *Command) HelpTemplate() string { - if c.helpTemplate != "" { - return c.helpTemplate - } - - if c.HasParent() { - return c.parent.HelpTemplate() - } - return `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}} - -{{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}` -} - -// VersionTemplate return version template for the command. -func (c *Command) VersionTemplate() string { - if c.versionTemplate != "" { - return c.versionTemplate - } - - if c.HasParent() { - return c.parent.VersionTemplate() - } - return `{{with .Name}}{{printf "%s " .}}{{end}}{{printf "version %s" .Version}} -` -} - -func hasNoOptDefVal(name string, fs *flag.FlagSet) bool { - flag := fs.Lookup(name) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func shortHasNoOptDefVal(name string, fs *flag.FlagSet) bool { - if len(name) == 0 { - return false - } - - flag := fs.ShorthandLookup(name[:1]) - if flag == nil { - return false - } - return flag.NoOptDefVal != "" -} - -func stripFlags(args []string, c *Command) []string { - if len(args) == 0 { - return args - } - c.mergePersistentFlags() - - commands := []string{} - flags := c.Flags() - -Loop: - for len(args) > 0 { - s := args[0] - args = args[1:] - switch { - case s == "--": - // "--" terminates the flags - break Loop - case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags): - // If '--flag arg' then - // delete arg from args. - fallthrough // (do the same as below) - case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags): - // If '-f arg' then - // delete 'arg' from args or break the loop if len(args) <= 1. - if len(args) <= 1 { - break Loop - } else { - args = args[1:] - continue - } - case s != "" && !strings.HasPrefix(s, "-"): - commands = append(commands, s) - } - } - - return commands -} - -// argsMinusFirstX removes only the first x from args. Otherwise, commands that look like -// openshift admin policy add-role-to-user admin my-user, lose the admin argument (arg[4]). -func argsMinusFirstX(args []string, x string) []string { - for i, y := range args { - if x == y { - ret := []string{} - ret = append(ret, args[:i]...) - ret = append(ret, args[i+1:]...) - return ret - } - } - return args -} - -func isFlagArg(arg string) bool { - return ((len(arg) >= 3 && arg[1] == '-') || - (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-')) -} - -// Find the target command given the args and command tree -// Meant to be run on the highest node. Only searches down. -func (c *Command) Find(args []string) (*Command, []string, error) { - var innerfind func(*Command, []string) (*Command, []string) - - innerfind = func(c *Command, innerArgs []string) (*Command, []string) { - argsWOflags := stripFlags(innerArgs, c) - if len(argsWOflags) == 0 { - return c, innerArgs - } - nextSubCmd := argsWOflags[0] - - cmd := c.findNext(nextSubCmd) - if cmd != nil { - return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd)) - } - return c, innerArgs - } - - commandFound, a := innerfind(c, args) - if commandFound.Args == nil { - return commandFound, a, legacyArgs(commandFound, stripFlags(a, commandFound)) - } - return commandFound, a, nil -} - -func (c *Command) findSuggestions(arg string) string { - if c.DisableSuggestions { - return "" - } - if c.SuggestionsMinimumDistance <= 0 { - c.SuggestionsMinimumDistance = 2 - } - suggestionsString := "" - if suggestions := c.SuggestionsFor(arg); len(suggestions) > 0 { - suggestionsString += "\n\nDid you mean this?\n" - for _, s := range suggestions { - suggestionsString += fmt.Sprintf("\t%v\n", s) - } - } - return suggestionsString -} - -func (c *Command) findNext(next string) *Command { - matches := make([]*Command, 0) - for _, cmd := range c.commands { - if cmd.Name() == next || cmd.HasAlias(next) { - cmd.commandCalledAs.name = next - return cmd - } - if EnablePrefixMatching && cmd.hasNameOrAliasPrefix(next) { - matches = append(matches, cmd) - } - } - - if len(matches) == 1 { - return matches[0] - } - - return nil -} - -// Traverse the command tree to find the command, and parse args for -// each parent. -func (c *Command) Traverse(args []string) (*Command, []string, error) { - flags := []string{} - inFlag := false - - for i, arg := range args { - switch { - // A long flag with a space separated value - case strings.HasPrefix(arg, "--") && !strings.Contains(arg, "="): - // TODO: this isn't quite right, we should really check ahead for 'true' or 'false' - inFlag = !hasNoOptDefVal(arg[2:], c.Flags()) - flags = append(flags, arg) - continue - // A short flag with a space separated value - case strings.HasPrefix(arg, "-") && !strings.Contains(arg, "=") && len(arg) == 2 && !shortHasNoOptDefVal(arg[1:], c.Flags()): - inFlag = true - flags = append(flags, arg) - continue - // The value for a flag - case inFlag: - inFlag = false - flags = append(flags, arg) - continue - // A flag without a value, or with an `=` separated value - case isFlagArg(arg): - flags = append(flags, arg) - continue - } - - cmd := c.findNext(arg) - if cmd == nil { - return c, args, nil - } - - if err := c.ParseFlags(flags); err != nil { - return nil, args, err - } - return cmd.Traverse(args[i+1:]) - } - return c, args, nil -} - -// SuggestionsFor provides suggestions for the typedName. -func (c *Command) SuggestionsFor(typedName string) []string { - suggestions := []string{} - for _, cmd := range c.commands { - if cmd.IsAvailableCommand() { - levenshteinDistance := ld(typedName, cmd.Name(), true) - suggestByLevenshtein := levenshteinDistance <= c.SuggestionsMinimumDistance - suggestByPrefix := strings.HasPrefix(strings.ToLower(cmd.Name()), strings.ToLower(typedName)) - if suggestByLevenshtein || suggestByPrefix { - suggestions = append(suggestions, cmd.Name()) - } - for _, explicitSuggestion := range cmd.SuggestFor { - if strings.EqualFold(typedName, explicitSuggestion) { - suggestions = append(suggestions, cmd.Name()) - } - } - } - } - return suggestions -} - -// VisitParents visits all parents of the command and invokes fn on each parent. -func (c *Command) VisitParents(fn func(*Command)) { - if c.HasParent() { - fn(c.Parent()) - c.Parent().VisitParents(fn) - } -} - -// Root finds root command. -func (c *Command) Root() *Command { - if c.HasParent() { - return c.Parent().Root() - } - return c -} - -// ArgsLenAtDash will return the length of c.Flags().Args at the moment -// when a -- was found during args parsing. -func (c *Command) ArgsLenAtDash() int { - return c.Flags().ArgsLenAtDash() -} - -func (c *Command) execute(a []string) (err error) { - if c == nil { - return fmt.Errorf("Called Execute() on a nil Command") - } - - if len(c.Deprecated) > 0 { - c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated) - } - - // initialize help and version flag at the last point possible to allow for user - // overriding - c.InitDefaultHelpFlag() - c.InitDefaultVersionFlag() - - err = c.ParseFlags(a) - if err != nil { - return c.FlagErrorFunc()(c, err) - } - - // If help is called, regardless of other flags, return we want help. - // Also say we need help if the command isn't runnable. - helpVal, err := c.Flags().GetBool("help") - if err != nil { - // should be impossible to get here as we always declare a help - // flag in InitDefaultHelpFlag() - c.Println("\"help\" flag declared as non-bool. Please correct your code") - return err - } - - if helpVal { - return flag.ErrHelp - } - - // for back-compat, only add version flag behavior if version is defined - if c.Version != "" { - versionVal, err := c.Flags().GetBool("version") - if err != nil { - c.Println("\"version\" flag declared as non-bool. Please correct your code") - return err - } - if versionVal { - err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c) - if err != nil { - c.Println(err) - } - return err - } - } - - if !c.Runnable() { - return flag.ErrHelp - } - - c.preRun() - - argWoFlags := c.Flags().Args() - if c.DisableFlagParsing { - argWoFlags = a - } - - if err := c.ValidateArgs(argWoFlags); err != nil { - return err - } - - for p := c; p != nil; p = p.Parent() { - if p.PersistentPreRunE != nil { - if err := p.PersistentPreRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPreRun != nil { - p.PersistentPreRun(c, argWoFlags) - break - } - } - if c.PreRunE != nil { - if err := c.PreRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PreRun != nil { - c.PreRun(c, argWoFlags) - } - - if err := c.validateRequiredFlags(); err != nil { - return err - } - if c.RunE != nil { - if err := c.RunE(c, argWoFlags); err != nil { - return err - } - } else { - c.Run(c, argWoFlags) - } - if c.PostRunE != nil { - if err := c.PostRunE(c, argWoFlags); err != nil { - return err - } - } else if c.PostRun != nil { - c.PostRun(c, argWoFlags) - } - for p := c; p != nil; p = p.Parent() { - if p.PersistentPostRunE != nil { - if err := p.PersistentPostRunE(c, argWoFlags); err != nil { - return err - } - break - } else if p.PersistentPostRun != nil { - p.PersistentPostRun(c, argWoFlags) - break - } - } - - return nil -} - -func (c *Command) preRun() { - for _, x := range initializers { - x() - } -} - -// Execute uses the args (os.Args[1:] by default) -// and run through the command tree finding appropriate matches -// for commands and then corresponding flags. -func (c *Command) Execute() error { - _, err := c.ExecuteC() - return err -} - -// ExecuteC executes the command. -func (c *Command) ExecuteC() (cmd *Command, err error) { - // Regardless of what command execute is called on, run on Root only - if c.HasParent() { - return c.Root().ExecuteC() - } - - // windows hook - if preExecHookFn != nil { - preExecHookFn(c) - } - - // initialize help as the last point possible to allow for user - // overriding - c.InitDefaultHelpCmd() - - args := c.args - - // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 - if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" { - args = os.Args[1:] - } - - var flags []string - if c.TraverseChildren { - cmd, flags, err = c.Traverse(args) - } else { - cmd, flags, err = c.Find(args) - } - if err != nil { - // If found parse to a subcommand and then failed, talk about the subcommand - if cmd != nil { - c = cmd - } - if !c.SilenceErrors { - c.Println("Error:", err.Error()) - c.Printf("Run '%v --help' for usage.\n", c.CommandPath()) - } - return c, err - } - - cmd.commandCalledAs.called = true - if cmd.commandCalledAs.name == "" { - cmd.commandCalledAs.name = cmd.Name() - } - - err = cmd.execute(flags) - if err != nil { - // Always show help if requested, even if SilenceErrors is in - // effect - if err == flag.ErrHelp { - cmd.HelpFunc()(cmd, args) - return cmd, nil - } - - // If root command has SilentErrors flagged, - // all subcommands should respect it - if !cmd.SilenceErrors && !c.SilenceErrors { - c.Println("Error:", err.Error()) - } - - // If root command has SilentUsage flagged, - // all subcommands should respect it - if !cmd.SilenceUsage && !c.SilenceUsage { - c.Println(cmd.UsageString()) - } - } - return cmd, err -} - -func (c *Command) ValidateArgs(args []string) error { - if c.Args == nil { - return nil - } - return c.Args(c, args) -} - -func (c *Command) validateRequiredFlags() error { - flags := c.Flags() - missingFlagNames := []string{} - flags.VisitAll(func(pflag *flag.Flag) { - requiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag] - if !found { - return - } - if (requiredAnnotation[0] == "true") && !pflag.Changed { - missingFlagNames = append(missingFlagNames, pflag.Name) - } - }) - - if len(missingFlagNames) > 0 { - return fmt.Errorf(`required flag(s) "%s" not set`, strings.Join(missingFlagNames, `", "`)) - } - return nil -} - -// InitDefaultHelpFlag adds default help flag to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help flag, it will do nothing. -func (c *Command) InitDefaultHelpFlag() { - c.mergePersistentFlags() - if c.Flags().Lookup("help") == nil { - usage := "help for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - c.Flags().BoolP("help", "h", false, usage) - } -} - -// InitDefaultVersionFlag adds default version flag to c. -// It is called automatically by executing the c. -// If c already has a version flag, it will do nothing. -// If c.Version is empty, it will do nothing. -func (c *Command) InitDefaultVersionFlag() { - if c.Version == "" { - return - } - - c.mergePersistentFlags() - if c.Flags().Lookup("version") == nil { - usage := "version for " - if c.Name() == "" { - usage += "this command" - } else { - usage += c.Name() - } - c.Flags().Bool("version", false, usage) - } -} - -// InitDefaultHelpCmd adds default help command to c. -// It is called automatically by executing the c or by calling help and usage. -// If c already has help command or c has no subcommands, it will do nothing. -func (c *Command) InitDefaultHelpCmd() { - if !c.HasSubCommands() { - return - } - - if c.helpCommand == nil { - c.helpCommand = &Command{ - Use: "help [command]", - Short: "Help about any command", - Long: `Help provides help for any command in the application. -Simply type ` + c.Name() + ` help [path to command] for full details.`, - - Run: func(c *Command, args []string) { - cmd, _, e := c.Root().Find(args) - if cmd == nil || e != nil { - c.Printf("Unknown help topic %#q\n", args) - c.Root().Usage() - } else { - cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown - cmd.Help() - } - }, - } - } - c.RemoveCommand(c.helpCommand) - c.AddCommand(c.helpCommand) -} - -// ResetCommands delete parent, subcommand and help command from c. -func (c *Command) ResetCommands() { - c.parent = nil - c.commands = nil - c.helpCommand = nil - c.parentsPflags = nil -} - -// Sorts commands by their names. -type commandSorterByName []*Command - -func (c commandSorterByName) Len() int { return len(c) } -func (c commandSorterByName) Swap(i, j int) { c[i], c[j] = c[j], c[i] } -func (c commandSorterByName) Less(i, j int) bool { return c[i].Name() < c[j].Name() } - -// Commands returns a sorted slice of child commands. -func (c *Command) Commands() []*Command { - // do not sort commands if it already sorted or sorting was disabled - if EnableCommandSorting && !c.commandsAreSorted { - sort.Sort(commandSorterByName(c.commands)) - c.commandsAreSorted = true - } - return c.commands -} - -// AddCommand adds one or more commands to this parent command. -func (c *Command) AddCommand(cmds ...*Command) { - for i, x := range cmds { - if cmds[i] == c { - panic("Command can't be a child of itself") - } - cmds[i].parent = c - // update max lengths - usageLen := len(x.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(x.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(x.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - // If global normalization function exists, update all children - if c.globNormFunc != nil { - x.SetGlobalNormalizationFunc(c.globNormFunc) - } - c.commands = append(c.commands, x) - c.commandsAreSorted = false - } -} - -// RemoveCommand removes one or more commands from a parent command. -func (c *Command) RemoveCommand(cmds ...*Command) { - commands := []*Command{} -main: - for _, command := range c.commands { - for _, cmd := range cmds { - if command == cmd { - command.parent = nil - continue main - } - } - commands = append(commands, command) - } - c.commands = commands - // recompute all lengths - c.commandsMaxUseLen = 0 - c.commandsMaxCommandPathLen = 0 - c.commandsMaxNameLen = 0 - for _, command := range c.commands { - usageLen := len(command.Use) - if usageLen > c.commandsMaxUseLen { - c.commandsMaxUseLen = usageLen - } - commandPathLen := len(command.CommandPath()) - if commandPathLen > c.commandsMaxCommandPathLen { - c.commandsMaxCommandPathLen = commandPathLen - } - nameLen := len(command.Name()) - if nameLen > c.commandsMaxNameLen { - c.commandsMaxNameLen = nameLen - } - } -} - -// Print is a convenience method to Print to the defined output, fallback to Stderr if not set. -func (c *Command) Print(i ...interface{}) { - fmt.Fprint(c.OutOrStderr(), i...) -} - -// Println is a convenience method to Println to the defined output, fallback to Stderr if not set. -func (c *Command) Println(i ...interface{}) { - c.Print(fmt.Sprintln(i...)) -} - -// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set. -func (c *Command) Printf(format string, i ...interface{}) { - c.Print(fmt.Sprintf(format, i...)) -} - -// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErr(i ...interface{}) { - fmt.Fprint(c.ErrOrStderr(), i...) -} - -// PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrln(i ...interface{}) { - c.Print(fmt.Sprintln(i...)) -} - -// PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set. -func (c *Command) PrintErrf(format string, i ...interface{}) { - c.Print(fmt.Sprintf(format, i...)) -} - -// CommandPath returns the full path to this command. -func (c *Command) CommandPath() string { - if c.HasParent() { - return c.Parent().CommandPath() + " " + c.Name() - } - return c.Name() -} - -// UseLine puts out the full usage for a given command (including parents). -func (c *Command) UseLine() string { - var useline string - if c.HasParent() { - useline = c.parent.CommandPath() + " " + c.Use - } else { - useline = c.Use - } - if c.DisableFlagsInUseLine { - return useline - } - if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") { - useline += " [flags]" - } - return useline -} - -// DebugFlags used to determine which flags have been assigned to which commands -// and which persist. -func (c *Command) DebugFlags() { - c.Println("DebugFlags called on", c.Name()) - var debugflags func(*Command) - - debugflags = func(x *Command) { - if x.HasFlags() || x.HasPersistentFlags() { - c.Println(x.Name()) - } - if x.HasFlags() { - x.flags.VisitAll(func(f *flag.Flag) { - if x.HasPersistentFlags() && x.persistentFlag(f.Name) != nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]") - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]") - } - }) - } - if x.HasPersistentFlags() { - x.pflags.VisitAll(func(f *flag.Flag) { - if x.HasFlags() { - if x.flags.Lookup(f.Name) == nil { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - } else { - c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [P]") - } - }) - } - c.Println(x.flagErrorBuf) - if x.HasSubCommands() { - for _, y := range x.commands { - debugflags(y) - } - } - } - - debugflags(c) -} - -// Name returns the command's name: the first word in the use line. -func (c *Command) Name() string { - name := c.Use - i := strings.Index(name, " ") - if i >= 0 { - name = name[:i] - } - return name -} - -// HasAlias determines if a given string is an alias of the command. -func (c *Command) HasAlias(s string) bool { - for _, a := range c.Aliases { - if a == s { - return true - } - } - return false -} - -// CalledAs returns the command name or alias that was used to invoke -// this command or an empty string if the command has not been called. -func (c *Command) CalledAs() string { - if c.commandCalledAs.called { - return c.commandCalledAs.name - } - return "" -} - -// hasNameOrAliasPrefix returns true if the Name or any of aliases start -// with prefix -func (c *Command) hasNameOrAliasPrefix(prefix string) bool { - if strings.HasPrefix(c.Name(), prefix) { - c.commandCalledAs.name = c.Name() - return true - } - for _, alias := range c.Aliases { - if strings.HasPrefix(alias, prefix) { - c.commandCalledAs.name = alias - return true - } - } - return false -} - -// NameAndAliases returns a list of the command name and all aliases -func (c *Command) NameAndAliases() string { - return strings.Join(append([]string{c.Name()}, c.Aliases...), ", ") -} - -// HasExample determines if the command has example. -func (c *Command) HasExample() bool { - return len(c.Example) > 0 -} - -// Runnable determines if the command is itself runnable. -func (c *Command) Runnable() bool { - return c.Run != nil || c.RunE != nil -} - -// HasSubCommands determines if the command has children commands. -func (c *Command) HasSubCommands() bool { - return len(c.commands) > 0 -} - -// IsAvailableCommand determines if a command is available as a non-help command -// (this includes all non deprecated/hidden commands). -func (c *Command) IsAvailableCommand() bool { - if len(c.Deprecated) != 0 || c.Hidden { - return false - } - - if c.HasParent() && c.Parent().helpCommand == c { - return false - } - - if c.Runnable() || c.HasAvailableSubCommands() { - return true - } - - return false -} - -// IsAdditionalHelpTopicCommand determines if a command is an additional -// help topic command; additional help topic command is determined by the -// fact that it is NOT runnable/hidden/deprecated, and has no sub commands that -// are runnable/hidden/deprecated. -// Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924. -func (c *Command) IsAdditionalHelpTopicCommand() bool { - // if a command is runnable, deprecated, or hidden it is not a 'help' command - if c.Runnable() || len(c.Deprecated) != 0 || c.Hidden { - return false - } - - // if any non-help sub commands are found, the command is not a 'help' command - for _, sub := range c.commands { - if !sub.IsAdditionalHelpTopicCommand() { - return false - } - } - - // the command either has no sub commands, or no non-help sub commands - return true -} - -// HasHelpSubCommands determines if a command has any available 'help' sub commands -// that need to be shown in the usage/help default template under 'additional help -// topics'. -func (c *Command) HasHelpSubCommands() bool { - // return true on the first found available 'help' sub command - for _, sub := range c.commands { - if sub.IsAdditionalHelpTopicCommand() { - return true - } - } - - // the command either has no sub commands, or no available 'help' sub commands - return false -} - -// HasAvailableSubCommands determines if a command has available sub commands that -// need to be shown in the usage/help default template under 'available commands'. -func (c *Command) HasAvailableSubCommands() bool { - // return true on the first found available (non deprecated/help/hidden) - // sub command - for _, sub := range c.commands { - if sub.IsAvailableCommand() { - return true - } - } - - // the command either has no sub commands, or no available (non deprecated/help/hidden) - // sub commands - return false -} - -// HasParent determines if the command is a child command. -func (c *Command) HasParent() bool { - return c.parent != nil -} - -// GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist. -func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) flag.NormalizedName { - return c.globNormFunc -} - -// Flags returns the complete FlagSet that applies -// to this command (local and persistent declared here and by all parents). -func (c *Command) Flags() *flag.FlagSet { - if c.flags == nil { - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.flags.SetOutput(c.flagErrorBuf) - } - - return c.flags -} - -// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands. -func (c *Command) LocalNonPersistentFlags() *flag.FlagSet { - persistentFlags := c.PersistentFlags() - - out := flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.LocalFlags().VisitAll(func(f *flag.Flag) { - if persistentFlags.Lookup(f.Name) == nil { - out.AddFlag(f) - } - }) - return out -} - -// LocalFlags returns the local FlagSet specifically set in the current command. -func (c *Command) LocalFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.lflags == nil { - c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.lflags.SetOutput(c.flagErrorBuf) - } - c.lflags.SortFlags = c.Flags().SortFlags - if c.globNormFunc != nil { - c.lflags.SetNormalizeFunc(c.globNormFunc) - } - - addToLocal := func(f *flag.Flag) { - if c.lflags.Lookup(f.Name) == nil && c.parentsPflags.Lookup(f.Name) == nil { - c.lflags.AddFlag(f) - } - } - c.Flags().VisitAll(addToLocal) - c.PersistentFlags().VisitAll(addToLocal) - return c.lflags -} - -// InheritedFlags returns all flags which were inherited from parent commands. -func (c *Command) InheritedFlags() *flag.FlagSet { - c.mergePersistentFlags() - - if c.iflags == nil { - c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.iflags.SetOutput(c.flagErrorBuf) - } - - local := c.LocalFlags() - if c.globNormFunc != nil { - c.iflags.SetNormalizeFunc(c.globNormFunc) - } - - c.parentsPflags.VisitAll(func(f *flag.Flag) { - if c.iflags.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil { - c.iflags.AddFlag(f) - } - }) - return c.iflags -} - -// NonInheritedFlags returns all flags which were not inherited from parent commands. -func (c *Command) NonInheritedFlags() *flag.FlagSet { - return c.LocalFlags() -} - -// PersistentFlags returns the persistent FlagSet specifically set in the current command. -func (c *Command) PersistentFlags() *flag.FlagSet { - if c.pflags == nil { - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - c.pflags.SetOutput(c.flagErrorBuf) - } - return c.pflags -} - -// ResetFlags deletes all flags from command. -func (c *Command) ResetFlags() { - c.flagErrorBuf = new(bytes.Buffer) - c.flagErrorBuf.Reset() - c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.flags.SetOutput(c.flagErrorBuf) - c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.pflags.SetOutput(c.flagErrorBuf) - - c.lflags = nil - c.iflags = nil - c.parentsPflags = nil -} - -// HasFlags checks if the command contains any flags (local plus persistent from the entire structure). -func (c *Command) HasFlags() bool { - return c.Flags().HasFlags() -} - -// HasPersistentFlags checks if the command contains persistent flags. -func (c *Command) HasPersistentFlags() bool { - return c.PersistentFlags().HasFlags() -} - -// HasLocalFlags checks if the command has flags specifically declared locally. -func (c *Command) HasLocalFlags() bool { - return c.LocalFlags().HasFlags() -} - -// HasInheritedFlags checks if the command has flags inherited from its parent command. -func (c *Command) HasInheritedFlags() bool { - return c.InheritedFlags().HasFlags() -} - -// HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire -// structure) which are not hidden or deprecated. -func (c *Command) HasAvailableFlags() bool { - return c.Flags().HasAvailableFlags() -} - -// HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated. -func (c *Command) HasAvailablePersistentFlags() bool { - return c.PersistentFlags().HasAvailableFlags() -} - -// HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden -// or deprecated. -func (c *Command) HasAvailableLocalFlags() bool { - return c.LocalFlags().HasAvailableFlags() -} - -// HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are -// not hidden or deprecated. -func (c *Command) HasAvailableInheritedFlags() bool { - return c.InheritedFlags().HasAvailableFlags() -} - -// Flag climbs up the command tree looking for matching flag. -func (c *Command) Flag(name string) (flag *flag.Flag) { - flag = c.Flags().Lookup(name) - - if flag == nil { - flag = c.persistentFlag(name) - } - - return -} - -// Recursively find matching persistent flag. -func (c *Command) persistentFlag(name string) (flag *flag.Flag) { - if c.HasPersistentFlags() { - flag = c.PersistentFlags().Lookup(name) - } - - if flag == nil { - c.updateParentsPflags() - flag = c.parentsPflags.Lookup(name) - } - return -} - -// ParseFlags parses persistent flag tree and local flags. -func (c *Command) ParseFlags(args []string) error { - if c.DisableFlagParsing { - return nil - } - - if c.flagErrorBuf == nil { - c.flagErrorBuf = new(bytes.Buffer) - } - beforeErrorBufLen := c.flagErrorBuf.Len() - c.mergePersistentFlags() - - //do it here after merging all flags and just before parse - c.Flags().ParseErrorsWhitelist = flag.ParseErrorsWhitelist(c.FParseErrWhitelist) - - err := c.Flags().Parse(args) - // Print warnings if they occurred (e.g. deprecated flag messages). - if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil { - c.Print(c.flagErrorBuf.String()) - } - - return err -} - -// Parent returns a commands parent command. -func (c *Command) Parent() *Command { - return c.parent -} - -// mergePersistentFlags merges c.PersistentFlags() to c.Flags() -// and adds missing persistent flags of all parents. -func (c *Command) mergePersistentFlags() { - c.updateParentsPflags() - c.Flags().AddFlagSet(c.PersistentFlags()) - c.Flags().AddFlagSet(c.parentsPflags) -} - -// updateParentsPflags updates c.parentsPflags by adding -// new persistent flags of all parents. -// If c.parentsPflags == nil, it makes new. -func (c *Command) updateParentsPflags() { - if c.parentsPflags == nil { - c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError) - c.parentsPflags.SetOutput(c.flagErrorBuf) - c.parentsPflags.SortFlags = false - } - - if c.globNormFunc != nil { - c.parentsPflags.SetNormalizeFunc(c.globNormFunc) - } - - c.Root().PersistentFlags().AddFlagSet(flag.CommandLine) - - c.VisitParents(func(parent *Command) { - c.parentsPflags.AddFlagSet(parent.PersistentFlags()) - }) -} diff --git a/vendor/github.com/spf13/cobra/command_notwin.go b/vendor/github.com/spf13/cobra/command_notwin.go deleted file mode 100644 index 6159c1cc19..0000000000 --- a/vendor/github.com/spf13/cobra/command_notwin.go +++ /dev/null @@ -1,5 +0,0 @@ -// +build !windows - -package cobra - -var preExecHookFn func(*Command) diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go deleted file mode 100644 index 8768b1736d..0000000000 --- a/vendor/github.com/spf13/cobra/command_win.go +++ /dev/null @@ -1,26 +0,0 @@ -// +build windows - -package cobra - -import ( - "fmt" - "os" - "time" - - "github.com/inconshreveable/mousetrap" -) - -var preExecHookFn = preExecHook - -func preExecHook(c *Command) { - if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { - c.Print(MousetrapHelpText) - if MousetrapDisplayDuration > 0 { - time.Sleep(MousetrapDisplayDuration) - } else { - c.Println("Press return to continue...") - fmt.Scanln() - } - os.Exit(1) - } -} diff --git a/vendor/github.com/spf13/cobra/go.mod b/vendor/github.com/spf13/cobra/go.mod deleted file mode 100644 index 9a9eb65a37..0000000000 --- a/vendor/github.com/spf13/cobra/go.mod +++ /dev/null @@ -1,13 +0,0 @@ -module github.com/spf13/cobra - -go 1.12 - -require ( - github.com/BurntSushi/toml v0.3.1 // indirect - github.com/cpuguy83/go-md2man v1.0.10 - github.com/inconshreveable/mousetrap v1.0.0 - github.com/mitchellh/go-homedir v1.1.0 - github.com/spf13/pflag v1.0.3 - github.com/spf13/viper v1.3.2 - gopkg.in/yaml.v2 v2.2.2 -) diff --git a/vendor/github.com/spf13/cobra/go.sum b/vendor/github.com/spf13/cobra/go.sum deleted file mode 100644 index 9761f4d03f..0000000000 --- a/vendor/github.com/spf13/cobra/go.sum +++ /dev/null @@ -1,51 +0,0 @@ -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a h1:1n5lsVfiQW3yfsRGu98756EH1YthsFqr/5mxHduZW2A= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go deleted file mode 100644 index 756c61b9dc..0000000000 --- a/vendor/github.com/spf13/cobra/powershell_completions.go +++ /dev/null @@ -1,100 +0,0 @@ -// PowerShell completions are based on the amazing work from clap: -// https://github.com/clap-rs/clap/blob/3294d18efe5f264d12c9035f404c7d189d4824e1/src/completions/powershell.rs -// -// The generated scripts require PowerShell v5.0+ (which comes Windows 10, but -// can be downloaded separately for windows 7 or 8.1). - -package cobra - -import ( - "bytes" - "fmt" - "io" - "os" - "strings" - - "github.com/spf13/pflag" -) - -var powerShellCompletionTemplate = `using namespace System.Management.Automation -using namespace System.Management.Automation.Language -Register-ArgumentCompleter -Native -CommandName '%s' -ScriptBlock { - param($wordToComplete, $commandAst, $cursorPosition) - $commandElements = $commandAst.CommandElements - $command = @( - '%s' - for ($i = 1; $i -lt $commandElements.Count; $i++) { - $element = $commandElements[$i] - if ($element -isnot [StringConstantExpressionAst] -or - $element.StringConstantType -ne [StringConstantType]::BareWord -or - $element.Value.StartsWith('-')) { - break - } - $element.Value - } - ) -join ';' - $completions = @(switch ($command) {%s - }) - $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | - Sort-Object -Property ListItemText -}` - -func generatePowerShellSubcommandCases(out io.Writer, cmd *Command, previousCommandName string) { - var cmdName string - if previousCommandName == "" { - cmdName = cmd.Name() - } else { - cmdName = fmt.Sprintf("%s;%s", previousCommandName, cmd.Name()) - } - - fmt.Fprintf(out, "\n '%s' {", cmdName) - - cmd.Flags().VisitAll(func(flag *pflag.Flag) { - if nonCompletableFlag(flag) { - return - } - usage := escapeStringForPowerShell(flag.Usage) - if len(flag.Shorthand) > 0 { - fmt.Fprintf(out, "\n [CompletionResult]::new('-%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Shorthand, flag.Shorthand, usage) - } - fmt.Fprintf(out, "\n [CompletionResult]::new('--%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Name, flag.Name, usage) - }) - - for _, subCmd := range cmd.Commands() { - usage := escapeStringForPowerShell(subCmd.Short) - fmt.Fprintf(out, "\n [CompletionResult]::new('%s', '%s', [CompletionResultType]::ParameterValue, '%s')", subCmd.Name(), subCmd.Name(), usage) - } - - fmt.Fprint(out, "\n break\n }") - - for _, subCmd := range cmd.Commands() { - generatePowerShellSubcommandCases(out, subCmd, cmdName) - } -} - -func escapeStringForPowerShell(s string) string { - return strings.Replace(s, "'", "''", -1) -} - -// GenPowerShellCompletion generates PowerShell completion file and writes to the passed writer. -func (c *Command) GenPowerShellCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - - var subCommandCases bytes.Buffer - generatePowerShellSubcommandCases(&subCommandCases, c, "") - fmt.Fprintf(buf, powerShellCompletionTemplate, c.Name(), c.Name(), subCommandCases.String()) - - _, err := buf.WriteTo(w) - return err -} - -// GenPowerShellCompletionFile generates PowerShell completion file. -func (c *Command) GenPowerShellCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenPowerShellCompletion(outFile) -} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.md b/vendor/github.com/spf13/cobra/powershell_completions.md deleted file mode 100644 index afed802408..0000000000 --- a/vendor/github.com/spf13/cobra/powershell_completions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Generating PowerShell Completions For Your Own cobra.Command - -Cobra can generate PowerShell completion scripts. Users need PowerShell version 5.0 or above, which comes with Windows 10 and can be downloaded separately for Windows 7 or 8.1. They can then write the completions to a file and source this file from their PowerShell profile, which is referenced by the `$Profile` environment variable. See `Get-Help about_Profiles` for more info about PowerShell profiles. - -# What's supported - -- Completion for subcommands using their `.Short` description -- Completion for non-hidden flags using their `.Name` and `.Shorthand` - -# What's not yet supported - -- Command aliases -- Required, filename or custom flags (they will work like normal flags) -- Custom completion scripts diff --git a/vendor/github.com/spf13/cobra/shell_completions.go b/vendor/github.com/spf13/cobra/shell_completions.go deleted file mode 100644 index ba0af9cb55..0000000000 --- a/vendor/github.com/spf13/cobra/shell_completions.go +++ /dev/null @@ -1,85 +0,0 @@ -package cobra - -import ( - "github.com/spf13/pflag" -) - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkFlagRequired(name string) error { - return MarkFlagRequired(c.Flags(), name) -} - -// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkPersistentFlagRequired(name string) error { - return MarkFlagRequired(c.PersistentFlags(), name) -} - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func MarkFlagRequired(flags *pflag.FlagSet, name string) error { - return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) -} - -// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists. -// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. -func (c *Command) MarkFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.Flags(), name, extensions...) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. -// Generated bash autocompletion will call the bash function f for the flag. -func (c *Command) MarkFlagCustom(name string, f string) error { - return MarkFlagCustom(c.Flags(), name, f) -} - -// MarkPersistentFlagFilename instructs the various shell completion -// implementations to limit completions for this persistent flag to the -// specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.PersistentFlags(), name, extensions...) -} - -// MarkFlagFilename instructs the various shell completion implementations to -// limit completions for this flag to the specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { - return flags.SetAnnotation(name, BashCompFilenameExt, extensions) -} - -// MarkFlagCustom instructs the various shell completion implementations to -// limit completions for this flag to the specified extensions (patterns). -// -// Shell Completion compatibility matrix: bash, zsh -func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { - return flags.SetAnnotation(name, BashCompCustom, []string{f}) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// complete only directories with this named flag. -// -// Shell Completion compatibility matrix: zsh -func (c *Command) MarkFlagDirname(name string) error { - return MarkFlagDirname(c.Flags(), name) -} - -// MarkPersistentFlagDirname instructs the various shell completion -// implementations to complete only directories with this persistent named flag. -// -// Shell Completion compatibility matrix: zsh -func (c *Command) MarkPersistentFlagDirname(name string) error { - return MarkFlagDirname(c.PersistentFlags(), name) -} - -// MarkFlagDirname instructs the various shell completion implementations to -// complete only directories with this specified flag. -// -// Shell Completion compatibility matrix: zsh -func MarkFlagDirname(flags *pflag.FlagSet, name string) error { - zshPattern := "-(/)" - return flags.SetAnnotation(name, zshCompDirname, []string{zshPattern}) -} diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go deleted file mode 100644 index 12755482f0..0000000000 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ /dev/null @@ -1,336 +0,0 @@ -package cobra - -import ( - "encoding/json" - "fmt" - "io" - "os" - "sort" - "strings" - "text/template" - - "github.com/spf13/pflag" -) - -const ( - zshCompArgumentAnnotation = "cobra_annotations_zsh_completion_argument_annotation" - zshCompArgumentFilenameComp = "cobra_annotations_zsh_completion_argument_file_completion" - zshCompArgumentWordComp = "cobra_annotations_zsh_completion_argument_word_completion" - zshCompDirname = "cobra_annotations_zsh_dirname" -) - -var ( - zshCompFuncMap = template.FuncMap{ - "genZshFuncName": zshCompGenFuncName, - "extractFlags": zshCompExtractFlag, - "genFlagEntryForZshArguments": zshCompGenFlagEntryForArguments, - "extractArgsCompletions": zshCompExtractArgumentCompletionHintsForRendering, - } - zshCompletionText = ` -{{/* should accept Command (that contains subcommands) as parameter */}} -{{define "argumentsC" -}} -{{ $cmdPath := genZshFuncName .}} -function {{$cmdPath}} { - local -a commands - - _arguments -C \{{- range extractFlags .}} - {{genFlagEntryForZshArguments .}} \{{- end}} - "1: :->cmnds" \ - "*::arg:->args" - - case $state in - cmnds) - commands=({{range .Commands}}{{if not .Hidden}} - "{{.Name}}:{{.Short}}"{{end}}{{end}} - ) - _describe "command" commands - ;; - esac - - case "$words[1]" in {{- range .Commands}}{{if not .Hidden}} - {{.Name}}) - {{$cmdPath}}_{{.Name}} - ;;{{end}}{{end}} - esac -} -{{range .Commands}}{{if not .Hidden}} -{{template "selectCmdTemplate" .}} -{{- end}}{{end}} -{{- end}} - -{{/* should accept Command without subcommands as parameter */}} -{{define "arguments" -}} -function {{genZshFuncName .}} { -{{" _arguments"}}{{range extractFlags .}} \ - {{genFlagEntryForZshArguments . -}} -{{end}}{{range extractArgsCompletions .}} \ - {{.}}{{end}} -} -{{end}} - -{{/* dispatcher for commands with or without subcommands */}} -{{define "selectCmdTemplate" -}} -{{if .Hidden}}{{/* ignore hidden*/}}{{else -}} -{{if .Commands}}{{template "argumentsC" .}}{{else}}{{template "arguments" .}}{{end}} -{{- end}} -{{- end}} - -{{/* template entry point */}} -{{define "Main" -}} -#compdef _{{.Name}} {{.Name}} - -{{template "selectCmdTemplate" .}} -{{end}} -` -) - -// zshCompArgsAnnotation is used to encode/decode zsh completion for -// arguments to/from Command.Annotations. -type zshCompArgsAnnotation map[int]zshCompArgHint - -type zshCompArgHint struct { - // Indicates the type of the completion to use. One of: - // zshCompArgumentFilenameComp or zshCompArgumentWordComp - Tipe string `json:"type"` - - // A value for the type above (globs for file completion or words) - Options []string `json:"options"` -} - -// GenZshCompletionFile generates zsh completion file. -func (c *Command) GenZshCompletionFile(filename string) error { - outFile, err := os.Create(filename) - if err != nil { - return err - } - defer outFile.Close() - - return c.GenZshCompletion(outFile) -} - -// GenZshCompletion generates a zsh completion file and writes to the passed -// writer. The completion always run on the root command regardless of the -// command it was called from. -func (c *Command) GenZshCompletion(w io.Writer) error { - tmpl, err := template.New("Main").Funcs(zshCompFuncMap).Parse(zshCompletionText) - if err != nil { - return fmt.Errorf("error creating zsh completion template: %v", err) - } - return tmpl.Execute(w, c.Root()) -} - -// MarkZshCompPositionalArgumentFile marks the specified argument (first -// argument is 1) as completed by file selection. patterns (e.g. "*.txt") are -// optional - if not provided the completion will search for all files. -func (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error { - if argPosition < 1 { - return fmt.Errorf("Invalid argument position (%d)", argPosition) - } - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return err - } - if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { - return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) - } - annotation[argPosition] = zshCompArgHint{ - Tipe: zshCompArgumentFilenameComp, - Options: patterns, - } - return c.zshCompSetArgsAnnotations(annotation) -} - -// MarkZshCompPositionalArgumentWords marks the specified positional argument -// (first argument is 1) as completed by the provided words. At east one word -// must be provided, spaces within words will be offered completion with -// "word\ word". -func (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error { - if argPosition < 1 { - return fmt.Errorf("Invalid argument position (%d)", argPosition) - } - if len(words) == 0 { - return fmt.Errorf("Trying to set empty word list for positional argument %d", argPosition) - } - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return err - } - if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { - return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) - } - annotation[argPosition] = zshCompArgHint{ - Tipe: zshCompArgumentWordComp, - Options: words, - } - return c.zshCompSetArgsAnnotations(annotation) -} - -func zshCompExtractArgumentCompletionHintsForRendering(c *Command) ([]string, error) { - var result []string - annotation, err := c.zshCompGetArgsAnnotations() - if err != nil { - return nil, err - } - for k, v := range annotation { - s, err := zshCompRenderZshCompArgHint(k, v) - if err != nil { - return nil, err - } - result = append(result, s) - } - if len(c.ValidArgs) > 0 { - if _, positionOneExists := annotation[1]; !positionOneExists { - s, err := zshCompRenderZshCompArgHint(1, zshCompArgHint{ - Tipe: zshCompArgumentWordComp, - Options: c.ValidArgs, - }) - if err != nil { - return nil, err - } - result = append(result, s) - } - } - sort.Strings(result) - return result, nil -} - -func zshCompRenderZshCompArgHint(i int, z zshCompArgHint) (string, error) { - switch t := z.Tipe; t { - case zshCompArgumentFilenameComp: - var globs []string - for _, g := range z.Options { - globs = append(globs, fmt.Sprintf(`-g "%s"`, g)) - } - return fmt.Sprintf(`'%d: :_files %s'`, i, strings.Join(globs, " ")), nil - case zshCompArgumentWordComp: - var words []string - for _, w := range z.Options { - words = append(words, fmt.Sprintf("%q", w)) - } - return fmt.Sprintf(`'%d: :(%s)'`, i, strings.Join(words, " ")), nil - default: - return "", fmt.Errorf("Invalid zsh argument completion annotation: %s", t) - } -} - -func (c *Command) zshcompArgsAnnotationnIsDuplicatePosition(annotation zshCompArgsAnnotation, position int) bool { - _, dup := annotation[position] - return dup -} - -func (c *Command) zshCompGetArgsAnnotations() (zshCompArgsAnnotation, error) { - annotation := make(zshCompArgsAnnotation) - annotationString, ok := c.Annotations[zshCompArgumentAnnotation] - if !ok { - return annotation, nil - } - err := json.Unmarshal([]byte(annotationString), &annotation) - if err != nil { - return annotation, fmt.Errorf("Error unmarshaling zsh argument annotation: %v", err) - } - return annotation, nil -} - -func (c *Command) zshCompSetArgsAnnotations(annotation zshCompArgsAnnotation) error { - jsn, err := json.Marshal(annotation) - if err != nil { - return fmt.Errorf("Error marshaling zsh argument annotation: %v", err) - } - if c.Annotations == nil { - c.Annotations = make(map[string]string) - } - c.Annotations[zshCompArgumentAnnotation] = string(jsn) - return nil -} - -func zshCompGenFuncName(c *Command) string { - if c.HasParent() { - return zshCompGenFuncName(c.Parent()) + "_" + c.Name() - } - return "_" + c.Name() -} - -func zshCompExtractFlag(c *Command) []*pflag.Flag { - var flags []*pflag.Flag - c.LocalFlags().VisitAll(func(f *pflag.Flag) { - if !f.Hidden { - flags = append(flags, f) - } - }) - c.InheritedFlags().VisitAll(func(f *pflag.Flag) { - if !f.Hidden { - flags = append(flags, f) - } - }) - return flags -} - -// zshCompGenFlagEntryForArguments returns an entry that matches _arguments -// zsh-completion parameters. It's too complicated to generate in a template. -func zshCompGenFlagEntryForArguments(f *pflag.Flag) string { - if f.Name == "" || f.Shorthand == "" { - return zshCompGenFlagEntryForSingleOptionFlag(f) - } - return zshCompGenFlagEntryForMultiOptionFlag(f) -} - -func zshCompGenFlagEntryForSingleOptionFlag(f *pflag.Flag) string { - var option, multiMark, extras string - - if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { - multiMark = "*" - } - - option = "--" + f.Name - if option == "--" { - option = "-" + f.Shorthand - } - extras = zshCompGenFlagEntryExtras(f) - - return fmt.Sprintf(`'%s%s[%s]%s'`, multiMark, option, zshCompQuoteFlagDescription(f.Usage), extras) -} - -func zshCompGenFlagEntryForMultiOptionFlag(f *pflag.Flag) string { - var options, parenMultiMark, curlyMultiMark, extras string - - if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { - parenMultiMark = "*" - curlyMultiMark = "\\*" - } - - options = fmt.Sprintf(`'(%s-%s %s--%s)'{%s-%s,%s--%s}`, - parenMultiMark, f.Shorthand, parenMultiMark, f.Name, curlyMultiMark, f.Shorthand, curlyMultiMark, f.Name) - extras = zshCompGenFlagEntryExtras(f) - - return fmt.Sprintf(`%s'[%s]%s'`, options, zshCompQuoteFlagDescription(f.Usage), extras) -} - -func zshCompGenFlagEntryExtras(f *pflag.Flag) string { - if f.NoOptDefVal != "" { - return "" - } - - extras := ":" // allow options for flag (even without assistance) - for key, values := range f.Annotations { - switch key { - case zshCompDirname: - extras = fmt.Sprintf(":filename:_files -g %q", values[0]) - case BashCompFilenameExt: - extras = ":filename:_files" - for _, pattern := range values { - extras = extras + fmt.Sprintf(` -g "%s"`, pattern) - } - } - } - - return extras -} - -func zshCompFlagCouldBeSpecifiedMoreThenOnce(f *pflag.Flag) bool { - return strings.Contains(f.Value.Type(), "Slice") || - strings.Contains(f.Value.Type(), "Array") -} - -func zshCompQuoteFlagDescription(s string) string { - return strings.Replace(s, "'", `'\''`, -1) -} diff --git a/vendor/github.com/spf13/cobra/zsh_completions.md b/vendor/github.com/spf13/cobra/zsh_completions.md deleted file mode 100644 index df9c2eac93..0000000000 --- a/vendor/github.com/spf13/cobra/zsh_completions.md +++ /dev/null @@ -1,39 +0,0 @@ -## Generating Zsh Completion for your cobra.Command - -Cobra supports native Zsh completion generated from the root `cobra.Command`. -The generated completion script should be put somewhere in your `$fpath` named -`_`. - -### What's Supported - -* Completion for all non-hidden subcommands using their `.Short` description. -* Completion for all non-hidden flags using the following rules: - * Filename completion works by marking the flag with `cmd.MarkFlagFilename...` - family of commands. - * The requirement for argument to the flag is decided by the `.NoOptDefVal` - flag value - if it's empty then completion will expect an argument. - * Flags of one of the various `*Array` and `*Slice` types supports multiple - specifications (with or without argument depending on the specific type). -* Completion of positional arguments using the following rules: - * Argument position for all options below starts at `1`. If argument position - `0` is requested it will raise an error. - * Use `command.MarkZshCompPositionalArgumentFile` to complete filenames. Glob - patterns (e.g. `"*.log"`) are optional - if not specified it will offer to - complete all file types. - * Use `command.MarkZshCompPositionalArgumentWords` to offer specific words for - completion. At least one word is required. - * It's possible to specify completion for some arguments and leave some - unspecified (e.g. offer words for second argument but nothing for first - argument). This will cause no completion for first argument but words - completion for second argument. - * If no argument completion was specified for 1st argument (but optionally was - specified for 2nd) and the command has `ValidArgs` it will be used as - completion options for 1st argument. - * Argument completions only offered for commands with no subcommands. - -### What's not yet Supported - -* Custom completion scripts are not supported yet (We should probably create zsh - specific one, doesn't make sense to re-use the bash one as the functions will - be different). -* Whatever other feature you're looking for and doesn't exist :) diff --git a/vendor/gomodules.xyz/stow/local/container.go b/vendor/gomodules.xyz/stow/local/container.go deleted file mode 100644 index cf4fe1c217..0000000000 --- a/vendor/gomodules.xyz/stow/local/container.go +++ /dev/null @@ -1,248 +0,0 @@ -package local - -import ( - "bytes" - "errors" - "fmt" - "io" - "net/url" - "os" - "path/filepath" - "strings" - "unicode/utf8" - - "gomodules.xyz/stow" -) - -type container struct { - name string - path string -} - -func (c *container) ID() string { - return c.path -} - -func (c *container) Name() string { - return c.name -} - -func (c *container) URL() *url.URL { - return &url.URL{ - Scheme: "file", - Path: filepath.Clean(c.path), - } -} - -func (c *container) CreateItem(name string) (stow.Item, io.WriteCloser, error) { - path := filepath.Join(c.path, filepath.FromSlash(name)) - item := &item{ - path: path, - contPrefixLen: len(c.path) + 1, - } - f, err := os.Create(path) - if err != nil { - return nil, nil, err - } - return item, f, nil -} - -func (c *container) RemoveItem(id string) error { - return os.Remove(id) -} - -func (c *container) Put(name string, r io.Reader, size int64, metadata map[string]interface{}) (stow.Item, error) { - if len(metadata) > 0 { - return nil, stow.NotSupported("metadata") - } - - path := filepath.Join(c.path, filepath.FromSlash(name)) - item := &item{ - path: path, - contPrefixLen: len(c.path) + 1, - } - err := os.MkdirAll(filepath.Dir(path), 0777) - if err != nil { - return nil, err - } - f, err := os.Create(path) - if err != nil { - return nil, err - } - defer f.Close() - n, err := io.Copy(f, r) - if err != nil { - return nil, err - } - if n != size { - return nil, errors.New("bad size") - } - return item, nil -} - -func (c *container) Browse(prefix, delimiter, cursor string, count int) (*stow.ItemPage, error) { - conPrefixLen := len(c.path) + 1 - - var files []os.FileInfo - var err error - r, sz := utf8.DecodeRuneInString(delimiter) - if r == utf8.RuneError { - if sz == 0 { - prefixDir, _ := filepath.Split(filepath.FromSlash(prefix)) - dir := filepath.Join(c.path, prefixDir) - files, err = flatdirs(dir) - } else { - return nil, fmt.Errorf("bad delimiter %v", delimiter) - } - } else if sz == len(delimiter) && r == '/' { - dir := filepath.Join(c.path, filepath.FromSlash(prefix)) - files, err = readDir(dir) - } else { - return nil, fmt.Errorf("unknown delimiter %v", delimiter) - } - if err != nil { - return nil, err - } - if cursor != stow.CursorStart { - // seek to the cursor - ok := false - c := filepath.Join(c.path, cursor) - for i, file := range files { - if file.Name() == c { - files = files[i:] - ok = true - break - } - } - if !ok { - return nil, stow.ErrBadCursor - } - } - if len(files) > count { - cursor = files[count].Name()[conPrefixLen:] // next item path as cursor - files = files[:count] - } else if len(files) <= count { - cursor = "" // end - } - - var prefixes []string - for _, f := range files { - if !f.IsDir() { - continue - } - path := filepath.ToSlash(f.Name()[conPrefixLen:]) - if strings.HasPrefix(path, prefix) { - prefixes = append(prefixes, path) - } - } - - var items []stow.Item - for _, f := range files { - if f.IsDir() { - continue - } - path := filepath.ToSlash(f.Name()[conPrefixLen:]) - if strings.HasPrefix(path, prefix) { - item := &item{ - path: f.Name(), - contPrefixLen: conPrefixLen, - } - items = append(items, item) - } - } - return &stow.ItemPage{Prefixes: prefixes, Items: items, Cursor: cursor}, nil -} - -func (c *container) Items(prefix, cursor string, count int) ([]stow.Item, string, error) { - page, err := c.Browse(prefix, "", cursor, count) - if err != nil { - return nil, "", err - } - return page.Items, page.Cursor, err -} - -func (c *container) Item(id string) (stow.Item, error) { - path := id - if !filepath.IsAbs(id) { - path = filepath.Join(c.path, filepath.FromSlash(id)) - } - info, err := os.Stat(path) - if os.IsNotExist(err) { - return nil, stow.ErrNotFound - } - if info.IsDir() { - return nil, errors.New("unexpected directory") - } - _, err = filepath.Rel(c.path, path) - if err != nil { - return nil, err - } - item := &item{ - path: path, - contPrefixLen: len(c.path) + 1, - } - return item, nil -} - -// readDir reads the directory named by dirname and returns -// a list of directory entries sorted by filename. -func readDir(dirname string) ([]os.FileInfo, error) { - f, err := os.Open(dirname) - if err != nil { - return nil, err - } - list, err := f.Readdir(-1) - f.Close() - if err != nil { - return nil, err - } - - for i := range list { - info := list[i] - list[i] = fileinfo{ - FileInfo: info, - path: filepath.Join(dirname, info.Name()), - } - } - return list, nil -} - -// flatdirs walks the entire tree returning a list of -// os.FileInfo for all items encountered. -func flatdirs(path string) ([]os.FileInfo, error) { - var list []os.FileInfo - err := filepath.Walk(path, func(p string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if !info.IsDir() { - list = append(list, fileinfo{ - FileInfo: info, - path: p, - }) - } - return nil - }) - return list, err -} - -type fileinfo struct { - os.FileInfo - path string -} - -func (f fileinfo) Name() string { - return f.path -} - -func (c *container) HasWriteAccess() error { - r := bytes.NewReader([]byte("CheckBucketAccess")) - item, err := c.Put(".objectstore", r, r.Size(), nil) - if err != nil { - return err - } - if err := c.RemoveItem(item.ID()); err != nil { - return err - } - return nil -} diff --git a/vendor/gomodules.xyz/stow/local/doc.go b/vendor/gomodules.xyz/stow/local/doc.go deleted file mode 100644 index 6fdd6fa4c5..0000000000 --- a/vendor/gomodules.xyz/stow/local/doc.go +++ /dev/null @@ -1,34 +0,0 @@ -/* -Package local provides an abstraction of a general filesystem. A Stow Container is a directory, and a Stow Item is a file. - -Credentials - -The only information required in accessing a filesystem via Stow is the path of a directory. - -Usage - -Aside from providing stow.Dial with the correct Kind ("local"), a stow.Config instance is needed. This instance requires an entry with a key of stow.ConfigKeyPath and a value of the path of the directory. - -Location - -There are local.location methods which allow the retrieval of one or more directories (Container or Containers). A stow.Item representation of a file can also be achieved (ItemByURL). - -Additional methods provide capabilities to create and remove directories (CreateContainer, RemoveContainer). - -Container - -Of a directory, methods of local.container allow the retrieval of its name (ID or Name) as well as one or more files (Item or Items) that exist within. - -Additional local.container methods allow the removal of a file (RemoveItem) and the creation of one (Put). - -Item - -Methods of local.Item allow the retrieval of quite detailed information. They are: -- full path (ID) -- base file name (Name) -- size in bytes (Size) -- file metadata (path, inode, directory, permission bits, etc) -- last modified date (ETag for string, LastMod for time.Time) -- content (Open) -*/ -package local diff --git a/vendor/gomodules.xyz/stow/local/filedata_darwin.go b/vendor/gomodules.xyz/stow/local/filedata_darwin.go deleted file mode 100644 index 5eafb826fd..0000000000 --- a/vendor/gomodules.xyz/stow/local/filedata_darwin.go +++ /dev/null @@ -1,78 +0,0 @@ -package local - -import ( - "errors" - "fmt" - "os" - "path/filepath" - "syscall" - "time" -) - -func getFileMetadata(path string, info os.FileInfo) map[string]interface{} { - - hardlink := false - symlink := false - var linkTarget string - var inodedata interface{} - if inode, err := getInodeinfo(info); err != nil { - inodedata = map[string]interface{}{"error": err.Error()} - } else { - inodedata = inode - if inode.NLink > 1 { - hardlink = true - } - } - if info.Mode()&os.ModeSymlink == os.ModeSymlink { - symlink = true - linkTarget, _ = os.Readlink(path) - } - m := map[string]interface{}{ - MetadataPath: filepath.Clean(path), - MetadataIsDir: info.IsDir(), - MetadataDir: filepath.Dir(path), - MetadataName: info.Name(), - MetadataMode: fmt.Sprintf("%o", info.Mode()), - MetadataModeD: fmt.Sprintf("%v", uint32(info.Mode())), - MetadataPerm: info.Mode().String(), - MetadataINode: inodedata, - MetadataSize: info.Size(), - MetadataIsHardlink: hardlink, - MetadataIsSymlink: symlink, - MetadataLink: linkTarget, - } - - if stat := info.Sys().(*syscall.Stat_t); stat != nil { - m["atime"] = time.Unix(int64(stat.Atimespec.Sec), int64(stat.Atimespec.Nsec)).Format(time.RFC3339Nano) - m["mtime"] = time.Unix(int64(stat.Mtimespec.Sec), int64(stat.Mtimespec.Nsec)).Format(time.RFC3339Nano) - m["uid"] = stat.Uid - m["gid"] = stat.Gid - } - - ext := filepath.Ext(info.Name()) - if len(ext) > 0 { - m["ext"] = ext - } - - return m -} - -type inodeinfo struct { - // NLink is the number of times this file is linked to by - // hardlinks. - NLink uint16 - // Ino is the inode number for the file. - Ino uint64 -} - -func getInodeinfo(fi os.FileInfo) (*inodeinfo, error) { - var statT *syscall.Stat_t - var ok bool - if statT, ok = fi.Sys().(*syscall.Stat_t); !ok { - return nil, errors.New("unable to determine if file is a hardlink (expected syscall.Stat_t)") - } - return &inodeinfo{ - Ino: statT.Ino, - NLink: uint16(statT.Nlink), - }, nil -} diff --git a/vendor/gomodules.xyz/stow/local/filedata_linux.go b/vendor/gomodules.xyz/stow/local/filedata_linux.go deleted file mode 100644 index 370e0e8d9a..0000000000 --- a/vendor/gomodules.xyz/stow/local/filedata_linux.go +++ /dev/null @@ -1,78 +0,0 @@ -package local - -import ( - "errors" - "fmt" - "os" - "path/filepath" - "syscall" - "time" -) - -func getFileMetadata(path string, info os.FileInfo) map[string]interface{} { - - hardlink := false - symlink := false - var linkTarget string - var inodedata interface{} - if inode, err := getInodeinfo(info); err != nil { - inodedata = map[string]interface{}{"error": err.Error()} - } else { - inodedata = inode - if inode.NLink > 1 { - hardlink = true - } - } - if info.Mode()&os.ModeSymlink == os.ModeSymlink { - symlink = true - linkTarget, _ = os.Readlink(path) - } - m := map[string]interface{}{ - MetadataPath: filepath.Clean(path), - MetadataIsDir: info.IsDir(), - MetadataDir: filepath.Dir(path), - MetadataName: info.Name(), - MetadataMode: fmt.Sprintf("%o", info.Mode()), - MetadataModeD: fmt.Sprintf("%v", uint32(info.Mode())), - MetadataPerm: info.Mode().String(), - MetadataINode: inodedata, - MetadataSize: info.Size(), - MetadataIsHardlink: hardlink, - MetadataIsSymlink: symlink, - MetadataLink: linkTarget, - } - - if stat := info.Sys().(*syscall.Stat_t); stat != nil { - m["atime"] = time.Unix(int64(stat.Atim.Sec), int64(stat.Atim.Nsec)).Format(time.RFC3339Nano) - m["mtime"] = time.Unix(int64(stat.Mtim.Sec), int64(stat.Mtim.Nsec)).Format(time.RFC3339Nano) - m["uid"] = stat.Uid - m["gid"] = stat.Gid - } - - ext := filepath.Ext(info.Name()) - if len(ext) > 0 { - m["ext"] = ext - } - - return m -} - -type inodeinfo struct { - // NLink is the number of times this file is linked to by - // hardlinks. - NLink uint64 - // Ino is the inode number for the file. - Ino uint64 -} - -func getInodeinfo(fi os.FileInfo) (*inodeinfo, error) { - var statT *syscall.Stat_t - var ok bool - if statT, ok = fi.Sys().(*syscall.Stat_t); !ok { - return nil, errors.New("unable to determine if file is a hardlink (expected syscall.Stat_t)") - } - return &inodeinfo{ - Ino: statT.Ino, - NLink: uint64(statT.Nlink), - }, nil -} diff --git a/vendor/gomodules.xyz/stow/local/filedata_windows.go b/vendor/gomodules.xyz/stow/local/filedata_windows.go deleted file mode 100644 index 2fa0f0f62b..0000000000 --- a/vendor/gomodules.xyz/stow/local/filedata_windows.go +++ /dev/null @@ -1,42 +0,0 @@ -package local - -import ( - "fmt" - "os" - "path/filepath" - "syscall" - "time" -) - -func getFileMetadata(path string, info os.FileInfo) map[string]interface{} { - hardlink, symlink, linkTarget := false, false, "" - if info.Mode()&os.ModeSymlink == os.ModeSymlink { - symlink = true - linkTarget, _ = os.Readlink(path) - } - m := map[string]interface{}{ - MetadataPath: filepath.Clean(path), - MetadataIsDir: info.IsDir(), - MetadataDir: filepath.Dir(path), - MetadataName: info.Name(), - MetadataMode: fmt.Sprintf("%o", info.Mode()), - MetadataModeD: fmt.Sprintf("%v", uint32(info.Mode())), - MetadataPerm: info.Mode().String(), - MetadataSize: info.Size(), - MetadataIsSymlink: symlink, - MetadataIsHardlink: hardlink, - MetadataLink: linkTarget, - } - - if stat := info.Sys().(*syscall.Win32FileAttributeData); stat != nil { - m["atime"] = time.Unix(0, stat.LastAccessTime.Nanoseconds()).Format(time.RFC3339Nano) - m["mtime"] = time.Unix(0, stat.LastWriteTime.Nanoseconds()).Format(time.RFC3339Nano) - } - - ext := filepath.Ext(info.Name()) - if len(ext) > 0 { - m["ext"] = ext - } - - return m -} diff --git a/vendor/gomodules.xyz/stow/local/item.go b/vendor/gomodules.xyz/stow/local/item.go deleted file mode 100644 index e6efb1c179..0000000000 --- a/vendor/gomodules.xyz/stow/local/item.go +++ /dev/null @@ -1,107 +0,0 @@ -package local - -import ( - "io" - "net/url" - "os" - "path/filepath" - "sync" - "time" -) - -// Metadata constants describe the metadata available -// for a local Item. -const ( - MetadataPath = "path" - MetadataIsDir = "is_dir" - MetadataDir = "dir" - MetadataName = "name" - MetadataMode = "mode" - MetadataModeD = "mode_d" - MetadataPerm = "perm" - MetadataINode = "inode" - MetadataSize = "size" - MetadataIsHardlink = "is_hardlink" - MetadataIsSymlink = "is_symlink" - MetadataLink = "link" -) - -type item struct { - path string - contPrefixLen int - infoOnce sync.Once // protects info - info os.FileInfo - infoErr error - metadata map[string]interface{} -} - -func (i *item) ID() string { - return i.path -} - -func (i *item) Name() string { - return filepath.ToSlash(i.path[i.contPrefixLen:]) -} - -func (i *item) Size() (int64, error) { - err := i.ensureInfo() - if err != nil { - return 0, err - } - return i.info.Size(), nil -} - -func (i *item) URL() *url.URL { - return &url.URL{ - Scheme: "file", - Path: filepath.Clean(i.path), - } -} - -func (i *item) ETag() (string, error) { - err := i.ensureInfo() - if err != nil { - return "", nil - } - return i.info.ModTime().String(), nil -} - -// Open opens the file for reading. -func (i *item) Open() (io.ReadCloser, error) { - return os.Open(i.path) -} - -func (i *item) LastMod() (time.Time, error) { - err := i.ensureInfo() - if err != nil { - return time.Time{}, nil - } - - return i.info.ModTime(), nil -} - -func (i *item) ensureInfo() error { - i.infoOnce.Do(func() { - i.info, i.infoErr = os.Lstat(i.path) // retrieve item file info - - if i.infoErr != nil { - return - } - i.setMetadata(i.info) // merge file and metadata maps - }) - return i.infoErr -} - -func (i *item) setMetadata(info os.FileInfo) { - fileMetadata := getFileMetadata(i.path, info) // retrieve file metadata - i.metadata = fileMetadata -} - -// Metadata gets stat information for the file. -func (i *item) Metadata() (map[string]interface{}, error) { - err := i.ensureInfo() - if err != nil { - return nil, err - } - return i.metadata, nil -} diff --git a/vendor/gomodules.xyz/stow/local/local.go b/vendor/gomodules.xyz/stow/local/local.go deleted file mode 100644 index 8713c4e686..0000000000 --- a/vendor/gomodules.xyz/stow/local/local.go +++ /dev/null @@ -1,52 +0,0 @@ -package local - -import ( - "errors" - "net/url" - "os" - - "gomodules.xyz/stow" -) - -// ConfigKeys are the supported configuration items for -// local storage. -const ( - ConfigKeyPath = "path" -) - -// Kind is the kind of Location this package provides. -const Kind = "local" - -const ( - paramTypeValue = "item" -) - -func init() { - validatefn := func(config stow.Config) error { - _, ok := config.Config(ConfigKeyPath) - if !ok { - return errors.New("missing path config") - } - return nil - } - makefn := func(config stow.Config) (stow.Location, error) { - path, ok := config.Config(ConfigKeyPath) - if !ok { - return nil, errors.New("missing path config") - } - info, err := os.Stat(path) - if err != nil { - return nil, err - } - if !info.IsDir() { - return nil, errors.New("path must be directory") - } - return &location{ - config: config, - }, nil - } - kindfn := func(u *url.URL) bool { - return u.Scheme == "file" - } - stow.Register(Kind, makefn, kindfn, validatefn) -} diff --git a/vendor/gomodules.xyz/stow/local/location.go b/vendor/gomodules.xyz/stow/local/location.go deleted file mode 100644 index a8ddfc1f9a..0000000000 --- a/vendor/gomodules.xyz/stow/local/location.go +++ /dev/null @@ -1,159 +0,0 @@ -package local - -import ( - "errors" - "net/url" - "os" - "path/filepath" - - "gomodules.xyz/stow" -) - -type location struct { - // config is the configuration for this location. - config stow.Config -} - -func (l *location) Close() error { - return nil // nothing to close -} - -func (l *location) ItemByURL(u *url.URL) (stow.Item, error) { - dir, _ := filepath.Split(u.Path) - return &item{ - path: u.Path, - contPrefixLen: len(dir), - }, nil -} - -func (l *location) RemoveContainer(id string) error { - return os.RemoveAll(id) -} - -func (l *location) CreateContainer(name string) (stow.Container, error) { - path, ok := l.config.Config(ConfigKeyPath) - if !ok { - return nil, errors.New("missing " + ConfigKeyPath + " configuration") - } - fullpath := filepath.Join(path, name) - if err := os.Mkdir(fullpath, 0777); err != nil { - return nil, err - } - abspath, err := filepath.Abs(fullpath) - if err != nil { - return nil, err - } - return &container{ - name: name, - path: abspath, - }, nil -} - -func (l *location) Containers(prefix string, cursor string, count int) ([]stow.Container, string, error) { - path, ok := l.config.Config(ConfigKeyPath) - if !ok { - return nil, "", errors.New("missing " + ConfigKeyPath + " configuration") - } - files, err := filepath.Glob(filepath.Join(path, prefix+"*")) - if err != nil { - return nil, "", err - } - - var cs []stow.Container - - if prefix == stow.NoPrefix && cursor == stow.CursorStart { - allContainer := container{ - name: "All", - path: path, - } - - cs = append(cs, &allContainer) - } - - cc, err := l.filesToContainers(path, files...) - if err != nil { - return nil, "", err - } - - cs = append(cs, cc...) - - if cursor != stow.CursorStart { - // seek to the cursor - ok := false - for i, c := range cs { - if c.ID() == cursor { - ok = true - cs = cs[i:] - break - } - } - if !ok { - return nil, "", stow.ErrBadCursor - } - } - if len(cs) > count { - cursor = cs[count].ID() - cs = cs[:count] // limit cs to count - } else if len(cs) <= count { - cursor = "" - } - - return cs, cursor, err -} - -func (l *location) Container(id string) (stow.Container, error) { - path, ok := l.config.Config(ConfigKeyPath) - if !ok { - return nil, errors.New("missing " + ConfigKeyPath + " configuration") - } - var fullPath string - if filepath.IsAbs(id) { - fullPath = id - } else { - fullPath = filepath.Join(path, id) - } - - containers, err := l.filesToContainers(path, fullPath) - if err != nil { - if os.IsNotExist(err) { - return nil, stow.ErrNotFound - } - return nil, err - } - if len(containers) == 0 { - return nil, stow.ErrNotFound - } - return containers[0], nil -} - -// filesToContainers takes a list of files and turns it into a -// stow.ContainerList. -func (l *location) filesToContainers(root string, files ...string) ([]stow.Container, error) { - cs := make([]stow.Container, 0, len(files)) - for _, f := range files { - info, err := os.Stat(f) - if err != nil { - return nil, err - } - if !info.IsDir() { - continue - } - absroot, err := filepath.Abs(root) - if err != nil { - return nil, err - } - path, err := filepath.Abs(f) - if err != nil { - return nil, err - } - name, err := filepath.Rel(absroot, path) - if err != nil { - return nil, err - } - cs = append(cs, &container{ - name: name, - path: path, - }) - } - return cs, nil -} diff --git a/vendor/gomodules.xyz/stow/swift/config.go b/vendor/gomodules.xyz/stow/swift/config.go deleted file mode 100644 index 810fb8dd5f..0000000000 --- a/vendor/gomodules.xyz/stow/swift/config.go +++ /dev/null @@ -1,116 +0,0 @@ -package swift - -import ( - "errors" - "fmt" - "net/http" - "net/url" - - "github.com/ncw/swift" - "gomodules.xyz/stow" -) - -// Config key constants. -const ( - ConfigUsername = "username" - ConfigKey = "key" - ConfigTenantName = "tenant_name" - ConfigTenantAuthURL = "tenant_auth_url" - ConfigDomain = "domain" - ConfigRegion = "region" - ConfigTenantId = "tenant_id" - ConfigTenantDomain = "tenant_domain" - ConfigTrustId = "trust_id" - ConfigStorageURL = "storage_url" - ConfigAuthToken = "auth_token" -) - -// Kind is the kind of Location this package provides. -const Kind = "swift" - -func init() { - validatefn := func(config stow.Config) error { - _, ok := config.Config(ConfigUsername) - if !ok { - return errors.New("missing account username") - } - _, ok = config.Config(ConfigKey) - if !ok { - return errors.New("missing api key") - } - _, ok = config.Config(ConfigTenantName) - if !ok { - return errors.New("missing tenant name") - } - _, ok = config.Config(ConfigTenantAuthURL) - if !ok { - return errors.New("missing tenant auth url") - } - return nil - } - makefn := func(config stow.Config) (stow.Location, error) { - _, ok := config.Config(ConfigUsername) - if !ok { - return nil, errors.New("missing account username") - } - _, ok = config.Config(ConfigKey) - if !ok { - return nil, errors.New("missing api key") - } - _, ok = config.Config(ConfigTenantName) - if !ok { - return nil, errors.New("missing tenant name") - } - _, ok = config.Config(ConfigTenantAuthURL) - if !ok { - return nil, errors.New("missing tenant auth url") - } - l := &location{ - config: config, - } - var err error - l.client, err = newSwiftClient(l.config) - if err != nil { - return nil, err - } - return l, nil - } - kindfn := func(u *url.URL) bool { - return u.Scheme == Kind - } - stow.Register(Kind, makefn, kindfn, validatefn) -} - -func newSwiftClient(cfg stow.Config) (*swift.Connection, error) { - username, _ := cfg.Config(ConfigUsername) - key, _ := cfg.Config(ConfigKey) - tenantName, _ := cfg.Config(ConfigTenantName) - tenantAuthURL, _ := cfg.Config(ConfigTenantAuthURL) - domain, _ := cfg.Config(ConfigDomain) - region, _ := cfg.Config(ConfigRegion) - tenantId, _ := cfg.Config(ConfigTenantId) - tenantDomain, _ := cfg.Config(ConfigTenantDomain) - trustId, _ := cfg.Config(ConfigTrustId) - storageURL, _ := cfg.Config(ConfigStorageURL) - authToken, _ := cfg.Config(ConfigAuthToken) - client := swift.Connection{ - UserName: username, - ApiKey: key, - AuthUrl: tenantAuthURL, - Tenant: tenantName, // Name of the tenant (v2 auth only) - Domain: domain, - Region: region, - TenantId: tenantId, - TenantDomain: tenantDomain, - TrustId: trustId, - StorageUrl: storageURL, - AuthToken: authToken, - // Add Default transport - Transport: http.DefaultTransport, - } - err := client.Authenticate() - if err != nil { - return nil, fmt.Errorf("unable to authenticate, reason: %v", err) - } - return &client, nil -} diff --git a/vendor/gomodules.xyz/stow/swift/container.go b/vendor/gomodules.xyz/stow/swift/container.go deleted file mode 100644 index e895ff02b4..0000000000 --- a/vendor/gomodules.xyz/stow/swift/container.go +++ /dev/null @@ -1,178 +0,0 @@ -package swift - -import ( - "bytes" - "fmt" - "io" - "strings" - "unicode/utf8" - - "github.com/google/uuid" - "github.com/ncw/swift" - "github.com/pkg/errors" - "gomodules.xyz/stow" -) - -type container struct { - id string - client *swift.Connection -} - -var _ stow.Container = (*container)(nil) - -func (c *container) ID() string { - return c.id -} - -func (c *container) Name() string { - return c.id -} - -func (c *container) Item(id string) (stow.Item, error) { - return c.getItem(id) -} - -func (c *container) Browse(prefix, delimiter, cursor string, count int) (*stow.ItemPage, error) { - params := &swift.ObjectsOpts{ - Limit: count, - Marker: cursor, - Prefix: prefix, - } - r, sz := utf8.DecodeRuneInString(delimiter) - if r == utf8.RuneError { - if sz > 0 { - return nil, fmt.Errorf("Bad delimiter %v", delimiter) - } - } else { - params.Delimiter = r - } - objects, err := c.client.Objects(c.id, params) - if err != nil { - return nil, err - } - - var prefixes []string - for _, obj := range objects { - if obj.PseudoDirectory { - prefixes = append(prefixes, obj.Name) - } - } - - var items []stow.Item - for _, obj := range objects { - if obj.PseudoDirectory { - continue - } - items = append(items, &item{ - id: obj.Name, - container: c, - client: c.client, - hash: obj.Hash, - size: obj.Bytes, - lastModified: obj.LastModified, - }) - } - marker := "" - if len(objects) == count { - marker = objects[len(objects)-1].Name - } - return &stow.ItemPage{Prefixes: prefixes, Items: items, Cursor: marker}, nil -} - -func (c *container) Items(prefix, cursor string, count int) ([]stow.Item, string, error) { - page, err := c.Browse(prefix, "", cursor, count) - if err != nil { - return nil, "", err - } - return page.Items, page.Cursor, err -} - -func (c *container) Put(name string, r io.Reader, size int64, metadata map[string]interface{}) (stow.Item, error) { - mdPrepped, err := prepMetadata(metadata) - if err != nil { - return nil, errors.Wrap(err, "unable to create or update Item, preparing metadata") - } - - headers, err := c.client.ObjectPut(c.id, name, r, false, "", "", mdPrepped) - if err != nil { - return nil, errors.Wrap(err, "unable to create or update Item") - } - - mdParsed, err := parseMetadata(headers) - if err != nil { - return nil, errors.Wrap(err, "unable to create or update Item, parsing metadata") - } - - item := &item{ - id: name, - container: c, - client: c.client, - size: size, - metadata: mdParsed, - } - return item, nil -} - -func (c *container) RemoveItem(id string) error { - return c.client.ObjectDelete(c.id, id) -} - -func (c *container) getItem(id string) (*item, error) { - info, headers, err := c.client.Object(c.id, id) - if err != nil { - if strings.Contains(err.Error(), "Object Not Found") { - return nil, stow.ErrNotFound - } - return nil, errors.Wrap(err, "error retrieving item") - } - - md, err := parseMetadata(headers) - if err != nil { - return nil, errors.Wrap(err, "unable to retrieve Item information, parsing metadata") - } - - item := &item{ - id: id, - container: c, - client: c.client, - hash: info.Hash, - size: info.Bytes, - lastModified: info.LastModified, - metadata: md, - } - return item, nil -} - -// Keys are returned as all lowercase, dashes are allowed -func parseMetadata(md swift.Headers) (map[string]interface{}, error) { - m := make(map[string]interface{}, len(md)) - for key, value := range md.ObjectMetadata() { - m[key] = value - } - return m, nil -} - -// TODO determine invalid keys. -func prepMetadata(md map[string]interface{}) (map[string]string, error) { - m := make(map[string]string, len(md)) - for key, value := range md { - str, ok := value.(string) - if !ok { - return nil, errors.New("could not convert key value") // add a msg mentioning strings only? - } - m["X-Object-Meta-"+key] = str - } - return m, nil -} - -func (c *container) HasWriteAccess() error { - r := bytes.NewReader([]byte("CheckBucketAccess")) - item, err := c.Put(".trash/"+uuid.New().String(), r, r.Size(), nil) - if err != nil { - return err - } - if err := c.RemoveItem(item.ID()); err != nil { - return err - } - return nil -} diff --git a/vendor/gomodules.xyz/stow/swift/doc.go b/vendor/gomodules.xyz/stow/swift/doc.go deleted file mode 100644 index 5fb21163cb..0000000000 --- a/vendor/gomodules.xyz/stow/swift/doc.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Package swift provides an absraction of the Openstack Swift storage technology. An Openstack Swift Container is represented by a Stow Container, and an Openstack Swift Object is represented by a Stow Item. Note that directories may exist within a Swift Container. - -Usage and Credentials - -Four pieces of information are needed: the user's name and password which will be used to access the Swift endpoint, the tenant name used to identify the storage endpoint, and the authentication URL. - -stow.Dial requires both a string value of the particular Stow Location Kind ("swift") and a stow.Config instance. The stow.Config instance requires two entries with the specific key value attributes: - -- a key of swift.ConfigUsername with a value of the user account name -- a key of swift.ConfigKey with a value of the user account password -- a key of swift.ConfigTenantName with a value of the Swift endpoint's tenant name -- a key of swift.ConfigTenantAuthURL with a value of the Swift endpoint's authentication URL - -Location - -Methods of swift.location allow the retrieval of a Swift Container (Container or Containers). A stow.Item representation of a Swift Object can also be retrieved based on the Object's URL (ItemByURL). - -Additional swift.location methods provide capabilities to create and remove Swift Containers (CreateContainer or RemoveContainer). - -Container - -Methods of stow.container allow the retrieval of a Swift Container's: - -- name(ID or Name) -- item or complete list of items (Item or Items, respectively) - -Additional methods of swift.container allow Stow to: - -- remove a stow.Item (RemoveItem) -- update or create a stow.Item (Put) - -Item - -Methods of swift.Item allow the retrieval of a Swift Object's: -- name (ID or name) -- URL -- size in bytes -- Object specific metadata (information stored within the service) -- last modified date -- Etag -- content -*/ -package swift diff --git a/vendor/gomodules.xyz/stow/swift/item.go b/vendor/gomodules.xyz/stow/swift/item.go deleted file mode 100644 index ff8bbc2900..0000000000 --- a/vendor/gomodules.xyz/stow/swift/item.go +++ /dev/null @@ -1,122 +0,0 @@ -package swift - -import ( - "io" - "net/url" - "path" - "sync" - "time" - - "github.com/ncw/swift" - "gomodules.xyz/stow" -) - -type item struct { - id string - container *container - client *swift.Connection - //properties az.BlobProperties - hash string - size int64 - url url.URL - lastModified time.Time - metadata map[string]interface{} - infoOnce sync.Once - infoErr error -} - -var _ stow.Item = (*item)(nil) - -func (i *item) ID() string { - return i.id -} - -func (i *item) Name() string { - return i.id -} - -func (i *item) URL() *url.URL { - // StorageUrl looks like this: - // https://lax-proxy-03.storagesvc.sohonet.com/v1/AUTH_b04239c7467548678b4822e9dad96030 - // We want something like this: - // swift://lax-proxy-03.storagesvc.sohonet.com/v1/AUTH_b04239c7467548678b4822e9dad96030// - url, _ := url.Parse(i.client.StorageUrl) - url.Scheme = Kind - url.Path = path.Join(url.Path, i.container.id, i.id) - return url -} - -func (i *item) Size() (int64, error) { - return i.size, nil -} - -func (i *item) Open() (io.ReadCloser, error) { - r, _, err := i.client.ObjectOpen(i.container.id, i.id, false, nil) - return r, err -} - -func (i *item) ETag() (string, error) { - err := i.ensureInfo() - if err != nil { - return "", err - } - return i.hash, nil -} - -func (i *item) LastMod() (time.Time, error) { - err := i.ensureInfo() - if err != nil { - return time.Time{}, err - } - return i.lastModified, nil -} - -// Metadata returns a map of key value pairs representing an Item's metadata -func (i *item) Metadata() (map[string]interface{}, error) { - err := i.ensureInfo() - if err != nil { - return nil, err - } - return i.metadata, nil -} - -// ensureInfo checks the fields that may be empty when an item is PUT. -// Verify if the fields are empty, get information on the item, fill in -// the missing fields. -func (i *item) ensureInfo() error { - // If lastModified is empty, so is hash. get info on the Item and - // update the necessary fields at the same time. - if i.lastModified.IsZero() || i.hash == "" || i.metadata == nil { - i.infoOnce.Do(func() { - itemInfo, infoErr := i.getInfo() - if infoErr != nil { - i.infoErr = infoErr - return - } - i.hash, i.infoErr = itemInfo.ETag() - if infoErr != nil { - i.infoErr = infoErr - return - } - i.lastModified, i.infoErr = itemInfo.LastMod() - if infoErr != nil { - i.infoErr = infoErr - return - } - i.metadata, i.infoErr = itemInfo.Metadata() - if infoErr != nil { - i.infoErr = infoErr - return - } - }) - } - return i.infoErr -} - -func (i *item) getInfo() (stow.Item, error) { - itemInfo, err := i.container.getItem(i.ID()) - if err != nil { - return nil, err - } - return itemInfo, nil -} diff --git a/vendor/gomodules.xyz/stow/swift/location.go b/vendor/gomodules.xyz/stow/swift/location.go deleted file mode 100644 index a15a14fe85..0000000000 --- a/vendor/gomodules.xyz/stow/swift/location.go +++ /dev/null @@ -1,95 +0,0 @@ -package swift - -import ( - "errors" - "net/url" - "strings" - - "github.com/ncw/swift" - "gomodules.xyz/stow" -) - -type location struct { - config stow.Config - client *swift.Connection -} - -func (l *location) Close() error { - return nil // nothing to close -} - -func (l *location) CreateContainer(name string) (stow.Container, error) { - err := l.client.ContainerCreate(name, nil) - if err != nil { - return nil, err - } - container := &container{ - id: name, - client: l.client, - } - return container, nil -} - -func (l *location) Containers(prefix, cursor string, count int) ([]stow.Container, string, error) { - params := &swift.ContainersOpts{ - Limit: count, - Prefix: prefix, - Marker: cursor, - } - response, err := l.client.Containers(params) - if err != nil { - return nil, "", err - } - containers := make([]stow.Container, len(response)) - for i, cont := range response { - containers[i] = &container{ - id: cont.Name, - client: l.client, - // count: cont.Count, - // bytes: cont.Bytes, - } - } - marker := "" - if len(response) == count { - marker = response[len(response)-1].Name - } - return containers, marker, nil -} - -func (l *location) Container(id string) (stow.Container, error) { - _, _, err := l.client.Container(id) - // TODO: grab info + headers - if err != nil { - return nil, stow.ErrNotFound - } - - c := &container{ - id: id, - client: l.client, - } - - return c, nil -} - -func (l *location) ItemByURL(url *url.URL) (stow.Item, error) { - - if url.Scheme != Kind { - return nil, errors.New("not valid swift URL") - } - - path := strings.TrimLeft(url.Path, "/") - pieces := strings.SplitN(path, "/", 4) - - // swift://lax-proxy-03.storagesvc.sohonet.com/v1/AUTH_b04239c7467548678b4822e9dad96030// - - c, err := l.Container(pieces[2]) - if err != nil { - return nil, err - } - - return c.Item(pieces[3]) -} - -func (l *location) RemoveContainer(id string) error { - return l.client.ContainerDelete(id) -} diff --git a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go b/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go deleted file mode 100644 index e56e177341..0000000000 --- a/vendor/k8s.io/apimachinery/pkg/util/jsonmergepatch/patch.go +++ /dev/null @@ -1,160 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package jsonmergepatch - -import ( - "fmt" - "reflect" - - "github.com/evanphx/json-patch" - "k8s.io/apimachinery/pkg/util/json" - "k8s.io/apimachinery/pkg/util/mergepatch" -) - -// Create a 3-way merge patch based-on JSON merge patch. -// Calculate addition-and-change patch between current and modified. -// Calculate deletion patch between original and modified. -func CreateThreeWayJSONMergePatch(original, modified, current []byte, fns ...mergepatch.PreconditionFunc) ([]byte, error) { - if len(original) == 0 { - original = []byte(`{}`) - } - if len(modified) == 0 { - modified = []byte(`{}`) - } - if len(current) == 0 { - current = []byte(`{}`) - } - - addAndChangePatch, err := jsonpatch.CreateMergePatch(current, modified) - if err != nil { - return nil, err - } - // Only keep addition and changes - addAndChangePatch, addAndChangePatchObj, err := keepOrDeleteNullInJsonPatch(addAndChangePatch, false) - if err != nil { - return nil, err - } - - deletePatch, err := jsonpatch.CreateMergePatch(original, modified) - if err != nil { - return nil, err - } - // Only keep deletion - deletePatch, deletePatchObj, err := keepOrDeleteNullInJsonPatch(deletePatch, true) - if err != nil { - return nil, err - } - - hasConflicts, err := mergepatch.HasConflicts(addAndChangePatchObj, deletePatchObj) - if err != nil { - return nil, err - } - if hasConflicts { - return nil, mergepatch.NewErrConflict(mergepatch.ToYAMLOrError(addAndChangePatchObj), mergepatch.ToYAMLOrError(deletePatchObj)) - } - patch, err := jsonpatch.MergePatch(deletePatch, addAndChangePatch) - if err != nil { - return nil, err - } - - var patchMap map[string]interface{} - err = json.Unmarshal(patch, &patchMap) - if err != nil { - return nil, fmt.Errorf("Failed to unmarshal patch for precondition check: %s", patch) - } - meetPreconditions, err := meetPreconditions(patchMap, fns...) - if err != nil { - return nil, err - } - if !meetPreconditions { - return nil, mergepatch.NewErrPreconditionFailed(patchMap) - } - - return patch, nil -} - -// keepOrDeleteNullInJsonPatch takes a json-encoded byte array and a boolean. -// It returns a filtered object and its corresponding json-encoded byte array. -// It is a wrapper of func keepOrDeleteNullInObj -func keepOrDeleteNullInJsonPatch(patch []byte, keepNull bool) ([]byte, map[string]interface{}, error) { - var patchMap map[string]interface{} - err := json.Unmarshal(patch, &patchMap) - if err != nil { - return nil, nil, err - } - filteredMap, err := keepOrDeleteNullInObj(patchMap, keepNull) - if err != nil { - return nil, nil, err - } - o, err := json.Marshal(filteredMap) - return o, filteredMap, err -} - -// keepOrDeleteNullInObj will keep only the null value and delete all the others, -// if keepNull is true. Otherwise, it will delete all the null value and keep the others. -func keepOrDeleteNullInObj(m map[string]interface{}, keepNull bool) (map[string]interface{}, error) { - filteredMap := make(map[string]interface{}) - var err error - for key, val := range m { - switch { - case keepNull && val == nil: - filteredMap[key] = nil - case val != nil: - switch typedVal := val.(type) { - case map[string]interface{}: - // Explicitly-set empty maps are treated as values instead of empty patches - if len(typedVal) == 0 { - if !keepNull { - filteredMap[key] = typedVal - } - continue - } - - var filteredSubMap map[string]interface{} - filteredSubMap, err = keepOrDeleteNullInObj(typedVal, keepNull) - if err != nil { - return nil, err - } - - // If the returned filtered submap was empty, this is an empty patch for the entire subdict, so the key - // should not be set - if len(filteredSubMap) != 0 { - filteredMap[key] = filteredSubMap - } - - case []interface{}, string, float64, bool, int64, nil: - // Lists are always replaced in Json, no need to check each entry in the list. - if !keepNull { - filteredMap[key] = val - } - default: - return nil, fmt.Errorf("unknown type: %v", reflect.TypeOf(typedVal)) - } - } - } - return filteredMap, nil -} - -func meetPreconditions(patchObj map[string]interface{}, fns ...mergepatch.PreconditionFunc) (bool, error) { - // Apply the preconditions to the patch, and return an error if any of them fail. - for _, fn := range fns { - if !fn(patchObj) { - return false, fmt.Errorf("precondition failed for: %v", patchObj) - } - } - return true, nil -} diff --git a/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go b/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go deleted file mode 100644 index e94ed73fea..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go +++ /dev/null @@ -1,341 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/discovery" - fakediscovery "k8s.io/client-go/discovery/fake" - clientset "k8s.io/client-go/kubernetes" - admissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1" - fakeadmissionregistrationv1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake" - admissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1" - fakeadmissionregistrationv1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake" - appsv1 "k8s.io/client-go/kubernetes/typed/apps/v1" - fakeappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1/fake" - appsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" - fakeappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake" - appsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2" - fakeappsv1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake" - auditregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1" - fakeauditregistrationv1alpha1 "k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake" - authenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1" - fakeauthenticationv1 "k8s.io/client-go/kubernetes/typed/authentication/v1/fake" - authenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1" - fakeauthenticationv1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake" - authorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1" - fakeauthorizationv1 "k8s.io/client-go/kubernetes/typed/authorization/v1/fake" - authorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1" - fakeauthorizationv1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake" - autoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1" - fakeautoscalingv1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake" - autoscalingv2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1" - fakeautoscalingv2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake" - autoscalingv2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2" - fakeautoscalingv2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake" - batchv1 "k8s.io/client-go/kubernetes/typed/batch/v1" - fakebatchv1 "k8s.io/client-go/kubernetes/typed/batch/v1/fake" - batchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1" - fakebatchv1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake" - batchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" - fakebatchv2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake" - certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" - fakecertificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake" - coordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1" - fakecoordinationv1 "k8s.io/client-go/kubernetes/typed/coordination/v1/fake" - coordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1" - fakecoordinationv1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake" - corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - fakecorev1 "k8s.io/client-go/kubernetes/typed/core/v1/fake" - discoveryv1alpha1 "k8s.io/client-go/kubernetes/typed/discovery/v1alpha1" - fakediscoveryv1alpha1 "k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake" - eventsv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1" - fakeeventsv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1/fake" - extensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" - fakeextensionsv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake" - networkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1" - fakenetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1/fake" - networkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1" - fakenetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake" - nodev1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1" - fakenodev1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake" - nodev1beta1 "k8s.io/client-go/kubernetes/typed/node/v1beta1" - fakenodev1beta1 "k8s.io/client-go/kubernetes/typed/node/v1beta1/fake" - policyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" - fakepolicyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake" - rbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1" - fakerbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1/fake" - rbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1" - fakerbacv1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake" - rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" - fakerbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake" - schedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1" - fakeschedulingv1 "k8s.io/client-go/kubernetes/typed/scheduling/v1/fake" - schedulingv1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1" - fakeschedulingv1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake" - schedulingv1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1" - fakeschedulingv1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake" - settingsv1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1" - fakesettingsv1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake" - storagev1 "k8s.io/client-go/kubernetes/typed/storage/v1" - fakestoragev1 "k8s.io/client-go/kubernetes/typed/storage/v1/fake" - storagev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1" - fakestoragev1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake" - storagev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1" - fakestoragev1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake" - "k8s.io/client-go/testing" -) - -// NewSimpleClientset returns a clientset that will respond with the provided objects. -// It's backed by a very simple object tracker that processes creates, updates and deletions as-is, -// without applying any validations and/or defaults. It shouldn't be considered a replacement -// for a real clientset and is mostly useful in simple unit tests. -func NewSimpleClientset(objects ...runtime.Object) *Clientset { - o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) - for _, obj := range objects { - if err := o.Add(obj); err != nil { - panic(err) - } - } - - cs := &Clientset{tracker: o} - cs.discovery = &fakediscovery.FakeDiscovery{Fake: &cs.Fake} - cs.AddReactor("*", "*", testing.ObjectReaction(o)) - cs.AddWatchReactor("*", func(action testing.Action) (handled bool, ret watch.Interface, err error) { - gvr := action.GetResource() - ns := action.GetNamespace() - watch, err := o.Watch(gvr, ns) - if err != nil { - return false, nil, err - } - return true, watch, nil - }) - - return cs -} - -// Clientset implements clientset.Interface. Meant to be embedded into a -// struct to get a default implementation. This makes faking out just the method -// you want to test easier. -type Clientset struct { - testing.Fake - discovery *fakediscovery.FakeDiscovery - tracker testing.ObjectTracker -} - -func (c *Clientset) Discovery() discovery.DiscoveryInterface { - return c.discovery -} - -func (c *Clientset) Tracker() testing.ObjectTracker { - return c.tracker -} - -var _ clientset.Interface = &Clientset{} - -// AdmissionregistrationV1 retrieves the AdmissionregistrationV1Client -func (c *Clientset) AdmissionregistrationV1() admissionregistrationv1.AdmissionregistrationV1Interface { - return &fakeadmissionregistrationv1.FakeAdmissionregistrationV1{Fake: &c.Fake} -} - -// AdmissionregistrationV1beta1 retrieves the AdmissionregistrationV1beta1Client -func (c *Clientset) AdmissionregistrationV1beta1() admissionregistrationv1beta1.AdmissionregistrationV1beta1Interface { - return &fakeadmissionregistrationv1beta1.FakeAdmissionregistrationV1beta1{Fake: &c.Fake} -} - -// AppsV1 retrieves the AppsV1Client -func (c *Clientset) AppsV1() appsv1.AppsV1Interface { - return &fakeappsv1.FakeAppsV1{Fake: &c.Fake} -} - -// AppsV1beta1 retrieves the AppsV1beta1Client -func (c *Clientset) AppsV1beta1() appsv1beta1.AppsV1beta1Interface { - return &fakeappsv1beta1.FakeAppsV1beta1{Fake: &c.Fake} -} - -// AppsV1beta2 retrieves the AppsV1beta2Client -func (c *Clientset) AppsV1beta2() appsv1beta2.AppsV1beta2Interface { - return &fakeappsv1beta2.FakeAppsV1beta2{Fake: &c.Fake} -} - -// AuditregistrationV1alpha1 retrieves the AuditregistrationV1alpha1Client -func (c *Clientset) AuditregistrationV1alpha1() auditregistrationv1alpha1.AuditregistrationV1alpha1Interface { - return &fakeauditregistrationv1alpha1.FakeAuditregistrationV1alpha1{Fake: &c.Fake} -} - -// AuthenticationV1 retrieves the AuthenticationV1Client -func (c *Clientset) AuthenticationV1() authenticationv1.AuthenticationV1Interface { - return &fakeauthenticationv1.FakeAuthenticationV1{Fake: &c.Fake} -} - -// AuthenticationV1beta1 retrieves the AuthenticationV1beta1Client -func (c *Clientset) AuthenticationV1beta1() authenticationv1beta1.AuthenticationV1beta1Interface { - return &fakeauthenticationv1beta1.FakeAuthenticationV1beta1{Fake: &c.Fake} -} - -// AuthorizationV1 retrieves the AuthorizationV1Client -func (c *Clientset) AuthorizationV1() authorizationv1.AuthorizationV1Interface { - return &fakeauthorizationv1.FakeAuthorizationV1{Fake: &c.Fake} -} - -// AuthorizationV1beta1 retrieves the AuthorizationV1beta1Client -func (c *Clientset) AuthorizationV1beta1() authorizationv1beta1.AuthorizationV1beta1Interface { - return &fakeauthorizationv1beta1.FakeAuthorizationV1beta1{Fake: &c.Fake} -} - -// AutoscalingV1 retrieves the AutoscalingV1Client -func (c *Clientset) AutoscalingV1() autoscalingv1.AutoscalingV1Interface { - return &fakeautoscalingv1.FakeAutoscalingV1{Fake: &c.Fake} -} - -// AutoscalingV2beta1 retrieves the AutoscalingV2beta1Client -func (c *Clientset) AutoscalingV2beta1() autoscalingv2beta1.AutoscalingV2beta1Interface { - return &fakeautoscalingv2beta1.FakeAutoscalingV2beta1{Fake: &c.Fake} -} - -// AutoscalingV2beta2 retrieves the AutoscalingV2beta2Client -func (c *Clientset) AutoscalingV2beta2() autoscalingv2beta2.AutoscalingV2beta2Interface { - return &fakeautoscalingv2beta2.FakeAutoscalingV2beta2{Fake: &c.Fake} -} - -// BatchV1 retrieves the BatchV1Client -func (c *Clientset) BatchV1() batchv1.BatchV1Interface { - return &fakebatchv1.FakeBatchV1{Fake: &c.Fake} -} - -// BatchV1beta1 retrieves the BatchV1beta1Client -func (c *Clientset) BatchV1beta1() batchv1beta1.BatchV1beta1Interface { - return &fakebatchv1beta1.FakeBatchV1beta1{Fake: &c.Fake} -} - -// BatchV2alpha1 retrieves the BatchV2alpha1Client -func (c *Clientset) BatchV2alpha1() batchv2alpha1.BatchV2alpha1Interface { - return &fakebatchv2alpha1.FakeBatchV2alpha1{Fake: &c.Fake} -} - -// CertificatesV1beta1 retrieves the CertificatesV1beta1Client -func (c *Clientset) CertificatesV1beta1() certificatesv1beta1.CertificatesV1beta1Interface { - return &fakecertificatesv1beta1.FakeCertificatesV1beta1{Fake: &c.Fake} -} - -// CoordinationV1beta1 retrieves the CoordinationV1beta1Client -func (c *Clientset) CoordinationV1beta1() coordinationv1beta1.CoordinationV1beta1Interface { - return &fakecoordinationv1beta1.FakeCoordinationV1beta1{Fake: &c.Fake} -} - -// CoordinationV1 retrieves the CoordinationV1Client -func (c *Clientset) CoordinationV1() coordinationv1.CoordinationV1Interface { - return &fakecoordinationv1.FakeCoordinationV1{Fake: &c.Fake} -} - -// CoreV1 retrieves the CoreV1Client -func (c *Clientset) CoreV1() corev1.CoreV1Interface { - return &fakecorev1.FakeCoreV1{Fake: &c.Fake} -} - -// DiscoveryV1alpha1 retrieves the DiscoveryV1alpha1Client -func (c *Clientset) DiscoveryV1alpha1() discoveryv1alpha1.DiscoveryV1alpha1Interface { - return &fakediscoveryv1alpha1.FakeDiscoveryV1alpha1{Fake: &c.Fake} -} - -// EventsV1beta1 retrieves the EventsV1beta1Client -func (c *Clientset) EventsV1beta1() eventsv1beta1.EventsV1beta1Interface { - return &fakeeventsv1beta1.FakeEventsV1beta1{Fake: &c.Fake} -} - -// ExtensionsV1beta1 retrieves the ExtensionsV1beta1Client -func (c *Clientset) ExtensionsV1beta1() extensionsv1beta1.ExtensionsV1beta1Interface { - return &fakeextensionsv1beta1.FakeExtensionsV1beta1{Fake: &c.Fake} -} - -// NetworkingV1 retrieves the NetworkingV1Client -func (c *Clientset) NetworkingV1() networkingv1.NetworkingV1Interface { - return &fakenetworkingv1.FakeNetworkingV1{Fake: &c.Fake} -} - -// NetworkingV1beta1 retrieves the NetworkingV1beta1Client -func (c *Clientset) NetworkingV1beta1() networkingv1beta1.NetworkingV1beta1Interface { - return &fakenetworkingv1beta1.FakeNetworkingV1beta1{Fake: &c.Fake} -} - -// NodeV1alpha1 retrieves the NodeV1alpha1Client -func (c *Clientset) NodeV1alpha1() nodev1alpha1.NodeV1alpha1Interface { - return &fakenodev1alpha1.FakeNodeV1alpha1{Fake: &c.Fake} -} - -// NodeV1beta1 retrieves the NodeV1beta1Client -func (c *Clientset) NodeV1beta1() nodev1beta1.NodeV1beta1Interface { - return &fakenodev1beta1.FakeNodeV1beta1{Fake: &c.Fake} -} - -// PolicyV1beta1 retrieves the PolicyV1beta1Client -func (c *Clientset) PolicyV1beta1() policyv1beta1.PolicyV1beta1Interface { - return &fakepolicyv1beta1.FakePolicyV1beta1{Fake: &c.Fake} -} - -// RbacV1 retrieves the RbacV1Client -func (c *Clientset) RbacV1() rbacv1.RbacV1Interface { - return &fakerbacv1.FakeRbacV1{Fake: &c.Fake} -} - -// RbacV1beta1 retrieves the RbacV1beta1Client -func (c *Clientset) RbacV1beta1() rbacv1beta1.RbacV1beta1Interface { - return &fakerbacv1beta1.FakeRbacV1beta1{Fake: &c.Fake} -} - -// RbacV1alpha1 retrieves the RbacV1alpha1Client -func (c *Clientset) RbacV1alpha1() rbacv1alpha1.RbacV1alpha1Interface { - return &fakerbacv1alpha1.FakeRbacV1alpha1{Fake: &c.Fake} -} - -// SchedulingV1alpha1 retrieves the SchedulingV1alpha1Client -func (c *Clientset) SchedulingV1alpha1() schedulingv1alpha1.SchedulingV1alpha1Interface { - return &fakeschedulingv1alpha1.FakeSchedulingV1alpha1{Fake: &c.Fake} -} - -// SchedulingV1beta1 retrieves the SchedulingV1beta1Client -func (c *Clientset) SchedulingV1beta1() schedulingv1beta1.SchedulingV1beta1Interface { - return &fakeschedulingv1beta1.FakeSchedulingV1beta1{Fake: &c.Fake} -} - -// SchedulingV1 retrieves the SchedulingV1Client -func (c *Clientset) SchedulingV1() schedulingv1.SchedulingV1Interface { - return &fakeschedulingv1.FakeSchedulingV1{Fake: &c.Fake} -} - -// SettingsV1alpha1 retrieves the SettingsV1alpha1Client -func (c *Clientset) SettingsV1alpha1() settingsv1alpha1.SettingsV1alpha1Interface { - return &fakesettingsv1alpha1.FakeSettingsV1alpha1{Fake: &c.Fake} -} - -// StorageV1beta1 retrieves the StorageV1beta1Client -func (c *Clientset) StorageV1beta1() storagev1beta1.StorageV1beta1Interface { - return &fakestoragev1beta1.FakeStorageV1beta1{Fake: &c.Fake} -} - -// StorageV1 retrieves the StorageV1Client -func (c *Clientset) StorageV1() storagev1.StorageV1Interface { - return &fakestoragev1.FakeStorageV1{Fake: &c.Fake} -} - -// StorageV1alpha1 retrieves the StorageV1alpha1Client -func (c *Clientset) StorageV1alpha1() storagev1alpha1.StorageV1alpha1Interface { - return &fakestoragev1alpha1.FakeStorageV1alpha1{Fake: &c.Fake} -} diff --git a/vendor/k8s.io/client-go/kubernetes/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/fake/doc.go deleted file mode 100644 index 9b99e71670..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// This package has the automatically generated fake clientset. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/fake/register.go b/vendor/k8s.io/client-go/kubernetes/fake/register.go deleted file mode 100644 index 07d4456522..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/fake/register.go +++ /dev/null @@ -1,130 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" - admissionregistrationv1beta1 "k8s.io/api/admissionregistration/v1beta1" - appsv1 "k8s.io/api/apps/v1" - appsv1beta1 "k8s.io/api/apps/v1beta1" - appsv1beta2 "k8s.io/api/apps/v1beta2" - auditregistrationv1alpha1 "k8s.io/api/auditregistration/v1alpha1" - authenticationv1 "k8s.io/api/authentication/v1" - authenticationv1beta1 "k8s.io/api/authentication/v1beta1" - authorizationv1 "k8s.io/api/authorization/v1" - authorizationv1beta1 "k8s.io/api/authorization/v1beta1" - autoscalingv1 "k8s.io/api/autoscaling/v1" - autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1" - autoscalingv2beta2 "k8s.io/api/autoscaling/v2beta2" - batchv1 "k8s.io/api/batch/v1" - batchv1beta1 "k8s.io/api/batch/v1beta1" - batchv2alpha1 "k8s.io/api/batch/v2alpha1" - certificatesv1beta1 "k8s.io/api/certificates/v1beta1" - coordinationv1 "k8s.io/api/coordination/v1" - coordinationv1beta1 "k8s.io/api/coordination/v1beta1" - corev1 "k8s.io/api/core/v1" - discoveryv1alpha1 "k8s.io/api/discovery/v1alpha1" - eventsv1beta1 "k8s.io/api/events/v1beta1" - extensionsv1beta1 "k8s.io/api/extensions/v1beta1" - networkingv1 "k8s.io/api/networking/v1" - networkingv1beta1 "k8s.io/api/networking/v1beta1" - nodev1alpha1 "k8s.io/api/node/v1alpha1" - nodev1beta1 "k8s.io/api/node/v1beta1" - policyv1beta1 "k8s.io/api/policy/v1beta1" - rbacv1 "k8s.io/api/rbac/v1" - rbacv1alpha1 "k8s.io/api/rbac/v1alpha1" - rbacv1beta1 "k8s.io/api/rbac/v1beta1" - schedulingv1 "k8s.io/api/scheduling/v1" - schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1" - schedulingv1beta1 "k8s.io/api/scheduling/v1beta1" - settingsv1alpha1 "k8s.io/api/settings/v1alpha1" - storagev1 "k8s.io/api/storage/v1" - storagev1alpha1 "k8s.io/api/storage/v1alpha1" - storagev1beta1 "k8s.io/api/storage/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" -) - -var scheme = runtime.NewScheme() -var codecs = serializer.NewCodecFactory(scheme) -var parameterCodec = runtime.NewParameterCodec(scheme) -var localSchemeBuilder = runtime.SchemeBuilder{ - admissionregistrationv1.AddToScheme, - admissionregistrationv1beta1.AddToScheme, - appsv1.AddToScheme, - appsv1beta1.AddToScheme, - appsv1beta2.AddToScheme, - auditregistrationv1alpha1.AddToScheme, - authenticationv1.AddToScheme, - authenticationv1beta1.AddToScheme, - authorizationv1.AddToScheme, - authorizationv1beta1.AddToScheme, - autoscalingv1.AddToScheme, - autoscalingv2beta1.AddToScheme, - autoscalingv2beta2.AddToScheme, - batchv1.AddToScheme, - batchv1beta1.AddToScheme, - batchv2alpha1.AddToScheme, - certificatesv1beta1.AddToScheme, - coordinationv1beta1.AddToScheme, - coordinationv1.AddToScheme, - corev1.AddToScheme, - discoveryv1alpha1.AddToScheme, - eventsv1beta1.AddToScheme, - extensionsv1beta1.AddToScheme, - networkingv1.AddToScheme, - networkingv1beta1.AddToScheme, - nodev1alpha1.AddToScheme, - nodev1beta1.AddToScheme, - policyv1beta1.AddToScheme, - rbacv1.AddToScheme, - rbacv1beta1.AddToScheme, - rbacv1alpha1.AddToScheme, - schedulingv1alpha1.AddToScheme, - schedulingv1beta1.AddToScheme, - schedulingv1.AddToScheme, - settingsv1alpha1.AddToScheme, - storagev1beta1.AddToScheme, - storagev1.AddToScheme, - storagev1alpha1.AddToScheme, -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -var AddToScheme = localSchemeBuilder.AddToScheme - -func init() { - v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"}) - utilruntime.Must(AddToScheme(scheme)) -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go deleted file mode 100644 index a5a570ad15..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_admissionregistration_client.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAdmissionregistrationV1 struct { - *testing.Fake -} - -func (c *FakeAdmissionregistrationV1) MutatingWebhookConfigurations() v1.MutatingWebhookConfigurationInterface { - return &FakeMutatingWebhookConfigurations{c} -} - -func (c *FakeAdmissionregistrationV1) ValidatingWebhookConfigurations() v1.ValidatingWebhookConfigurationInterface { - return &FakeValidatingWebhookConfigurations{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAdmissionregistrationV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go deleted file mode 100644 index 6e09faf110..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_mutatingwebhookconfiguration.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface -type FakeMutatingWebhookConfigurations struct { - Fake *FakeAdmissionregistrationV1 -} - -var mutatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1", Resource: "mutatingwebhookconfigurations"} - -var mutatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "MutatingWebhookConfiguration"} - -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any. -func (c *FakeMutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &admissionregistrationv1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.MutatingWebhookConfiguration), err -} - -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors. -func (c *FakeMutatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistrationv1.MutatingWebhookConfigurationList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &admissionregistrationv1.MutatingWebhookConfigurationList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &admissionregistrationv1.MutatingWebhookConfigurationList{ListMeta: obj.(*admissionregistrationv1.MutatingWebhookConfigurationList).ListMeta} - for _, item := range obj.(*admissionregistrationv1.MutatingWebhookConfigurationList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations. -func (c *FakeMutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts)) -} - -// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any. -func (c *FakeMutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &admissionregistrationv1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.MutatingWebhookConfiguration), err -} - -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any. -func (c *FakeMutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *admissionregistrationv1.MutatingWebhookConfiguration) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &admissionregistrationv1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.MutatingWebhookConfiguration), err -} - -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs. -func (c *FakeMutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(mutatingwebhookconfigurationsResource, name), &admissionregistrationv1.MutatingWebhookConfiguration{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeMutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOptions) - - _, err := c.Fake.Invokes(action, &admissionregistrationv1.MutatingWebhookConfigurationList{}) - return err -} - -// Patch applies the patch and returns the patched mutatingWebhookConfiguration. -func (c *FakeMutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistrationv1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, pt, data, subresources...), &admissionregistrationv1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.MutatingWebhookConfiguration), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go deleted file mode 100644 index a5f8d20456..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake/fake_validatingwebhookconfiguration.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - admissionregistrationv1 "k8s.io/api/admissionregistration/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface -type FakeValidatingWebhookConfigurations struct { - Fake *FakeAdmissionregistrationV1 -} - -var validatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1", Resource: "validatingwebhookconfigurations"} - -var validatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingWebhookConfiguration"} - -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any. -func (c *FakeValidatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &admissionregistrationv1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.ValidatingWebhookConfiguration), err -} - -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors. -func (c *FakeValidatingWebhookConfigurations) List(opts v1.ListOptions) (result *admissionregistrationv1.ValidatingWebhookConfigurationList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &admissionregistrationv1.ValidatingWebhookConfigurationList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &admissionregistrationv1.ValidatingWebhookConfigurationList{ListMeta: obj.(*admissionregistrationv1.ValidatingWebhookConfigurationList).ListMeta} - for _, item := range obj.(*admissionregistrationv1.ValidatingWebhookConfigurationList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations. -func (c *FakeValidatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts)) -} - -// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any. -func (c *FakeValidatingWebhookConfigurations) Create(validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &admissionregistrationv1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.ValidatingWebhookConfiguration), err -} - -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any. -func (c *FakeValidatingWebhookConfigurations) Update(validatingWebhookConfiguration *admissionregistrationv1.ValidatingWebhookConfiguration) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &admissionregistrationv1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.ValidatingWebhookConfiguration), err -} - -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs. -func (c *FakeValidatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(validatingwebhookconfigurationsResource, name), &admissionregistrationv1.ValidatingWebhookConfiguration{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeValidatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOptions) - - _, err := c.Fake.Invokes(action, &admissionregistrationv1.ValidatingWebhookConfigurationList{}) - return err -} - -// Patch applies the patch and returns the patched validatingWebhookConfiguration. -func (c *FakeValidatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *admissionregistrationv1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, pt, data, subresources...), &admissionregistrationv1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*admissionregistrationv1.ValidatingWebhookConfiguration), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go deleted file mode 100644 index 1a988ddba1..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_admissionregistration_client.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAdmissionregistrationV1beta1 struct { - *testing.Fake -} - -func (c *FakeAdmissionregistrationV1beta1) MutatingWebhookConfigurations() v1beta1.MutatingWebhookConfigurationInterface { - return &FakeMutatingWebhookConfigurations{c} -} - -func (c *FakeAdmissionregistrationV1beta1) ValidatingWebhookConfigurations() v1beta1.ValidatingWebhookConfigurationInterface { - return &FakeValidatingWebhookConfigurations{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAdmissionregistrationV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go deleted file mode 100644 index d2177bad52..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_mutatingwebhookconfiguration.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/admissionregistration/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeMutatingWebhookConfigurations implements MutatingWebhookConfigurationInterface -type FakeMutatingWebhookConfigurations struct { - Fake *FakeAdmissionregistrationV1beta1 -} - -var mutatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1beta1", Resource: "mutatingwebhookconfigurations"} - -var mutatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1beta1", Kind: "MutatingWebhookConfiguration"} - -// Get takes name of the mutatingWebhookConfiguration, and returns the corresponding mutatingWebhookConfiguration object, and an error if there is any. -func (c *FakeMutatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1beta1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(mutatingwebhookconfigurationsResource, name), &v1beta1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.MutatingWebhookConfiguration), err -} - -// List takes label and field selectors, and returns the list of MutatingWebhookConfigurations that match those selectors. -func (c *FakeMutatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1beta1.MutatingWebhookConfigurationList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(mutatingwebhookconfigurationsResource, mutatingwebhookconfigurationsKind, opts), &v1beta1.MutatingWebhookConfigurationList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.MutatingWebhookConfigurationList{ListMeta: obj.(*v1beta1.MutatingWebhookConfigurationList).ListMeta} - for _, item := range obj.(*v1beta1.MutatingWebhookConfigurationList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested mutatingWebhookConfigurations. -func (c *FakeMutatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(mutatingwebhookconfigurationsResource, opts)) -} - -// Create takes the representation of a mutatingWebhookConfiguration and creates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any. -func (c *FakeMutatingWebhookConfigurations) Create(mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration) (result *v1beta1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1beta1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.MutatingWebhookConfiguration), err -} - -// Update takes the representation of a mutatingWebhookConfiguration and updates it. Returns the server's representation of the mutatingWebhookConfiguration, and an error, if there is any. -func (c *FakeMutatingWebhookConfigurations) Update(mutatingWebhookConfiguration *v1beta1.MutatingWebhookConfiguration) (result *v1beta1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(mutatingwebhookconfigurationsResource, mutatingWebhookConfiguration), &v1beta1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.MutatingWebhookConfiguration), err -} - -// Delete takes name of the mutatingWebhookConfiguration and deletes it. Returns an error if one occurs. -func (c *FakeMutatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(mutatingwebhookconfigurationsResource, name), &v1beta1.MutatingWebhookConfiguration{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeMutatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(mutatingwebhookconfigurationsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.MutatingWebhookConfigurationList{}) - return err -} - -// Patch applies the patch and returns the patched mutatingWebhookConfiguration. -func (c *FakeMutatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.MutatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(mutatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1beta1.MutatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.MutatingWebhookConfiguration), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go b/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go deleted file mode 100644 index 6be2b39386..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake/fake_validatingwebhookconfiguration.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/admissionregistration/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeValidatingWebhookConfigurations implements ValidatingWebhookConfigurationInterface -type FakeValidatingWebhookConfigurations struct { - Fake *FakeAdmissionregistrationV1beta1 -} - -var validatingwebhookconfigurationsResource = schema.GroupVersionResource{Group: "admissionregistration.k8s.io", Version: "v1beta1", Resource: "validatingwebhookconfigurations"} - -var validatingwebhookconfigurationsKind = schema.GroupVersionKind{Group: "admissionregistration.k8s.io", Version: "v1beta1", Kind: "ValidatingWebhookConfiguration"} - -// Get takes name of the validatingWebhookConfiguration, and returns the corresponding validatingWebhookConfiguration object, and an error if there is any. -func (c *FakeValidatingWebhookConfigurations) Get(name string, options v1.GetOptions) (result *v1beta1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(validatingwebhookconfigurationsResource, name), &v1beta1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ValidatingWebhookConfiguration), err -} - -// List takes label and field selectors, and returns the list of ValidatingWebhookConfigurations that match those selectors. -func (c *FakeValidatingWebhookConfigurations) List(opts v1.ListOptions) (result *v1beta1.ValidatingWebhookConfigurationList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(validatingwebhookconfigurationsResource, validatingwebhookconfigurationsKind, opts), &v1beta1.ValidatingWebhookConfigurationList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.ValidatingWebhookConfigurationList{ListMeta: obj.(*v1beta1.ValidatingWebhookConfigurationList).ListMeta} - for _, item := range obj.(*v1beta1.ValidatingWebhookConfigurationList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested validatingWebhookConfigurations. -func (c *FakeValidatingWebhookConfigurations) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(validatingwebhookconfigurationsResource, opts)) -} - -// Create takes the representation of a validatingWebhookConfiguration and creates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any. -func (c *FakeValidatingWebhookConfigurations) Create(validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration) (result *v1beta1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1beta1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ValidatingWebhookConfiguration), err -} - -// Update takes the representation of a validatingWebhookConfiguration and updates it. Returns the server's representation of the validatingWebhookConfiguration, and an error, if there is any. -func (c *FakeValidatingWebhookConfigurations) Update(validatingWebhookConfiguration *v1beta1.ValidatingWebhookConfiguration) (result *v1beta1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(validatingwebhookconfigurationsResource, validatingWebhookConfiguration), &v1beta1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ValidatingWebhookConfiguration), err -} - -// Delete takes name of the validatingWebhookConfiguration and deletes it. Returns an error if one occurs. -func (c *FakeValidatingWebhookConfigurations) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(validatingwebhookconfigurationsResource, name), &v1beta1.ValidatingWebhookConfiguration{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeValidatingWebhookConfigurations) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(validatingwebhookconfigurationsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.ValidatingWebhookConfigurationList{}) - return err -} - -// Patch applies the patch and returns the patched validatingWebhookConfiguration. -func (c *FakeValidatingWebhookConfigurations) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ValidatingWebhookConfiguration, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(validatingwebhookconfigurationsResource, name, pt, data, subresources...), &v1beta1.ValidatingWebhookConfiguration{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ValidatingWebhookConfiguration), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go deleted file mode 100644 index 458df0fa33..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_apps_client.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/apps/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAppsV1 struct { - *testing.Fake -} - -func (c *FakeAppsV1) ControllerRevisions(namespace string) v1.ControllerRevisionInterface { - return &FakeControllerRevisions{c, namespace} -} - -func (c *FakeAppsV1) DaemonSets(namespace string) v1.DaemonSetInterface { - return &FakeDaemonSets{c, namespace} -} - -func (c *FakeAppsV1) Deployments(namespace string) v1.DeploymentInterface { - return &FakeDeployments{c, namespace} -} - -func (c *FakeAppsV1) ReplicaSets(namespace string) v1.ReplicaSetInterface { - return &FakeReplicaSets{c, namespace} -} - -func (c *FakeAppsV1) StatefulSets(namespace string) v1.StatefulSetInterface { - return &FakeStatefulSets{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAppsV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go deleted file mode 100644 index eb38bca41b..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_controllerrevision.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeControllerRevisions implements ControllerRevisionInterface -type FakeControllerRevisions struct { - Fake *FakeAppsV1 - ns string -} - -var controllerrevisionsResource = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "controllerrevisions"} - -var controllerrevisionsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ControllerRevision"} - -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. -func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *appsv1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &appsv1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ControllerRevision), err -} - -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. -func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *appsv1.ControllerRevisionList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &appsv1.ControllerRevisionList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &appsv1.ControllerRevisionList{ListMeta: obj.(*appsv1.ControllerRevisionList).ListMeta} - for _, item := range obj.(*appsv1.ControllerRevisionList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested controllerRevisions. -func (c *FakeControllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts)) - -} - -// Create takes the representation of a controllerRevision and creates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Create(controllerRevision *appsv1.ControllerRevision) (result *appsv1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &appsv1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ControllerRevision), err -} - -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Update(controllerRevision *appsv1.ControllerRevision) (result *appsv1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &appsv1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ControllerRevision), err -} - -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. -func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &appsv1.ControllerRevision{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeControllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &appsv1.ControllerRevisionList{}) - return err -} - -// Patch applies the patch and returns the patched controllerRevision. -func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &appsv1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ControllerRevision), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go deleted file mode 100644 index c06336e970..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_daemonset.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDaemonSets implements DaemonSetInterface -type FakeDaemonSets struct { - Fake *FakeAppsV1 - ns string -} - -var daemonsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "daemonsets"} - -var daemonsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "DaemonSet"} - -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. -func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *appsv1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &appsv1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.DaemonSet), err -} - -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors. -func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *appsv1.DaemonSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &appsv1.DaemonSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &appsv1.DaemonSetList{ListMeta: obj.(*appsv1.DaemonSetList).ListMeta} - for _, item := range obj.(*appsv1.DaemonSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested daemonSets. -func (c *FakeDaemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a daemonSet and creates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Create(daemonSet *appsv1.DaemonSet) (result *appsv1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &appsv1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.DaemonSet), err -} - -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Update(daemonSet *appsv1.DaemonSet) (result *appsv1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &appsv1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.DaemonSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDaemonSets) UpdateStatus(daemonSet *appsv1.DaemonSet) (*appsv1.DaemonSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &appsv1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.DaemonSet), err -} - -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. -func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &appsv1.DaemonSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDaemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &appsv1.DaemonSetList{}) - return err -} - -// Patch applies the patch and returns the patched daemonSet. -func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &appsv1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.DaemonSet), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go deleted file mode 100644 index 6a8cb379da..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_deployment.go +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - appsv1 "k8s.io/api/apps/v1" - autoscalingv1 "k8s.io/api/autoscaling/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDeployments implements DeploymentInterface -type FakeDeployments struct { - Fake *FakeAppsV1 - ns string -} - -var deploymentsResource = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"} - -var deploymentsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"} - -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *appsv1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &appsv1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.Deployment), err -} - -// List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *FakeDeployments) List(opts v1.ListOptions) (result *appsv1.DeploymentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &appsv1.DeploymentList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &appsv1.DeploymentList{ListMeta: obj.(*appsv1.DeploymentList).ListMeta} - for _, item := range obj.(*appsv1.DeploymentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested deployments. -func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) - -} - -// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Create(deployment *appsv1.Deployment) (result *appsv1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &appsv1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.Deployment), err -} - -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Update(deployment *appsv1.Deployment) (result *appsv1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &appsv1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.Deployment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDeployments) UpdateStatus(deployment *appsv1.Deployment) (*appsv1.Deployment, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &appsv1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.Deployment), err -} - -// Delete takes name of the deployment and deletes it. Returns an error if one occurs. -func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &appsv1.Deployment{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &appsv1.DeploymentList{}) - return err -} - -// Patch applies the patch and returns the patched deployment. -func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &appsv1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.Deployment), err -} - -// GetScale takes name of the deployment, and returns the corresponding scale object, and an error if there is any. -func (c *FakeDeployments) GetScale(deploymentName string, options v1.GetOptions) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeDeployments) UpdateScale(deploymentName string, scale *autoscalingv1.Scale) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go deleted file mode 100644 index e871f82f76..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_replicaset.go +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - appsv1 "k8s.io/api/apps/v1" - autoscalingv1 "k8s.io/api/autoscaling/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeReplicaSets implements ReplicaSetInterface -type FakeReplicaSets struct { - Fake *FakeAppsV1 - ns string -} - -var replicasetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "replicasets"} - -var replicasetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ReplicaSet"} - -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. -func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *appsv1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &appsv1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ReplicaSet), err -} - -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. -func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *appsv1.ReplicaSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &appsv1.ReplicaSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &appsv1.ReplicaSetList{ListMeta: obj.(*appsv1.ReplicaSetList).ListMeta} - for _, item := range obj.(*appsv1.ReplicaSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested replicaSets. -func (c *FakeReplicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts)) - -} - -// Create takes the representation of a replicaSet and creates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Create(replicaSet *appsv1.ReplicaSet) (result *appsv1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &appsv1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ReplicaSet), err -} - -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Update(replicaSet *appsv1.ReplicaSet) (result *appsv1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &appsv1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ReplicaSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeReplicaSets) UpdateStatus(replicaSet *appsv1.ReplicaSet) (*appsv1.ReplicaSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &appsv1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ReplicaSet), err -} - -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. -func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &appsv1.ReplicaSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeReplicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &appsv1.ReplicaSetList{}) - return err -} - -// Patch applies the patch and returns the patched replicaSet. -func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &appsv1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.ReplicaSet), err -} - -// GetScale takes name of the replicaSet, and returns the corresponding scale object, and an error if there is any. -func (c *FakeReplicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeReplicaSets) UpdateScale(replicaSetName string, scale *autoscalingv1.Scale) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go deleted file mode 100644 index 83e80bff49..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1/fake/fake_statefulset.go +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - appsv1 "k8s.io/api/apps/v1" - autoscalingv1 "k8s.io/api/autoscaling/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeStatefulSets implements StatefulSetInterface -type FakeStatefulSets struct { - Fake *FakeAppsV1 - ns string -} - -var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "statefulsets"} - -var statefulsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"} - -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. -func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *appsv1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &appsv1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.StatefulSet), err -} - -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors. -func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *appsv1.StatefulSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &appsv1.StatefulSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &appsv1.StatefulSetList{ListMeta: obj.(*appsv1.StatefulSetList).ListMeta} - for _, item := range obj.(*appsv1.StatefulSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested statefulSets. -func (c *FakeStatefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a statefulSet and creates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Create(statefulSet *appsv1.StatefulSet) (result *appsv1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &appsv1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.StatefulSet), err -} - -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Update(statefulSet *appsv1.StatefulSet) (result *appsv1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &appsv1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.StatefulSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeStatefulSets) UpdateStatus(statefulSet *appsv1.StatefulSet) (*appsv1.StatefulSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &appsv1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.StatefulSet), err -} - -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. -func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &appsv1.StatefulSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeStatefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &appsv1.StatefulSetList{}) - return err -} - -// Patch applies the patch and returns the patched statefulSet. -func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *appsv1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &appsv1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*appsv1.StatefulSet), err -} - -// GetScale takes name of the statefulSet, and returns the corresponding scale object, and an error if there is any. -func (c *FakeStatefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeStatefulSets) UpdateScale(statefulSetName string, scale *autoscalingv1.Scale) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go deleted file mode 100644 index 8e65d78d29..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_apps_client.go +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAppsV1beta1 struct { - *testing.Fake -} - -func (c *FakeAppsV1beta1) ControllerRevisions(namespace string) v1beta1.ControllerRevisionInterface { - return &FakeControllerRevisions{c, namespace} -} - -func (c *FakeAppsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface { - return &FakeDeployments{c, namespace} -} - -func (c *FakeAppsV1beta1) StatefulSets(namespace string) v1beta1.StatefulSetInterface { - return &FakeStatefulSets{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAppsV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go deleted file mode 100644 index 8e339d78b0..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_controllerrevision.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/apps/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeControllerRevisions implements ControllerRevisionInterface -type FakeControllerRevisions struct { - Fake *FakeAppsV1beta1 - ns string -} - -var controllerrevisionsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "controllerrevisions"} - -var controllerrevisionsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "ControllerRevision"} - -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. -func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *v1beta1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1beta1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ControllerRevision), err -} - -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. -func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *v1beta1.ControllerRevisionList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1beta1.ControllerRevisionList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.ControllerRevisionList{ListMeta: obj.(*v1beta1.ControllerRevisionList).ListMeta} - for _, item := range obj.(*v1beta1.ControllerRevisionList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested controllerRevisions. -func (c *FakeControllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts)) - -} - -// Create takes the representation of a controllerRevision and creates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Create(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ControllerRevision), err -} - -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Update(controllerRevision *v1beta1.ControllerRevision) (result *v1beta1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ControllerRevision), err -} - -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. -func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &v1beta1.ControllerRevision{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeControllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.ControllerRevisionList{}) - return err -} - -// Patch applies the patch and returns the patched controllerRevision. -func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &v1beta1.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ControllerRevision), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go deleted file mode 100644 index c33baba589..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_deployment.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/apps/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDeployments implements DeploymentInterface -type FakeDeployments struct { - Fake *FakeAppsV1beta1 - ns string -} - -var deploymentsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "deployments"} - -var deploymentsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "Deployment"} - -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *FakeDeployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.DeploymentList{ListMeta: obj.(*v1beta1.DeploymentList).ListMeta} - for _, item := range obj.(*v1beta1.DeploymentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested deployments. -func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) - -} - -// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDeployments) UpdateStatus(deployment *v1beta1.Deployment) (*v1beta1.Deployment, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// Delete takes name of the deployment and deletes it. Returns an error if one occurs. -func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{}) - return err -} - -// Patch applies the patch and returns the patched deployment. -func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go deleted file mode 100644 index 754da5fba6..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/apps/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeStatefulSets implements StatefulSetInterface -type FakeStatefulSets struct { - Fake *FakeAppsV1beta1 - ns string -} - -var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "statefulsets"} - -var statefulsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta1", Kind: "StatefulSet"} - -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. -func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *v1beta1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1beta1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StatefulSet), err -} - -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors. -func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *v1beta1.StatefulSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1beta1.StatefulSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.StatefulSetList{ListMeta: obj.(*v1beta1.StatefulSetList).ListMeta} - for _, item := range obj.(*v1beta1.StatefulSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested statefulSets. -func (c *FakeStatefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a statefulSet and creates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Create(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StatefulSet), err -} - -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Update(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1beta1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StatefulSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeStatefulSets) UpdateStatus(statefulSet *v1beta1.StatefulSet) (*v1beta1.StatefulSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1beta1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StatefulSet), err -} - -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. -func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &v1beta1.StatefulSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeStatefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.StatefulSetList{}) - return err -} - -// Patch applies the patch and returns the patched statefulSet. -func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &v1beta1.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StatefulSet), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go deleted file mode 100644 index 0ec34a2cdb..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_apps_client.go +++ /dev/null @@ -1,56 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/client-go/kubernetes/typed/apps/v1beta2" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAppsV1beta2 struct { - *testing.Fake -} - -func (c *FakeAppsV1beta2) ControllerRevisions(namespace string) v1beta2.ControllerRevisionInterface { - return &FakeControllerRevisions{c, namespace} -} - -func (c *FakeAppsV1beta2) DaemonSets(namespace string) v1beta2.DaemonSetInterface { - return &FakeDaemonSets{c, namespace} -} - -func (c *FakeAppsV1beta2) Deployments(namespace string) v1beta2.DeploymentInterface { - return &FakeDeployments{c, namespace} -} - -func (c *FakeAppsV1beta2) ReplicaSets(namespace string) v1beta2.ReplicaSetInterface { - return &FakeReplicaSets{c, namespace} -} - -func (c *FakeAppsV1beta2) StatefulSets(namespace string) v1beta2.StatefulSetInterface { - return &FakeStatefulSets{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAppsV1beta2) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go deleted file mode 100644 index 197f190cbd..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_controllerrevision.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/api/apps/v1beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeControllerRevisions implements ControllerRevisionInterface -type FakeControllerRevisions struct { - Fake *FakeAppsV1beta2 - ns string -} - -var controllerrevisionsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta2", Resource: "controllerrevisions"} - -var controllerrevisionsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "ControllerRevision"} - -// Get takes name of the controllerRevision, and returns the corresponding controllerRevision object, and an error if there is any. -func (c *FakeControllerRevisions) Get(name string, options v1.GetOptions) (result *v1beta2.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(controllerrevisionsResource, c.ns, name), &v1beta2.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ControllerRevision), err -} - -// List takes label and field selectors, and returns the list of ControllerRevisions that match those selectors. -func (c *FakeControllerRevisions) List(opts v1.ListOptions) (result *v1beta2.ControllerRevisionList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(controllerrevisionsResource, controllerrevisionsKind, c.ns, opts), &v1beta2.ControllerRevisionList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta2.ControllerRevisionList{ListMeta: obj.(*v1beta2.ControllerRevisionList).ListMeta} - for _, item := range obj.(*v1beta2.ControllerRevisionList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested controllerRevisions. -func (c *FakeControllerRevisions) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(controllerrevisionsResource, c.ns, opts)) - -} - -// Create takes the representation of a controllerRevision and creates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Create(controllerRevision *v1beta2.ControllerRevision) (result *v1beta2.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta2.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ControllerRevision), err -} - -// Update takes the representation of a controllerRevision and updates it. Returns the server's representation of the controllerRevision, and an error, if there is any. -func (c *FakeControllerRevisions) Update(controllerRevision *v1beta2.ControllerRevision) (result *v1beta2.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(controllerrevisionsResource, c.ns, controllerRevision), &v1beta2.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ControllerRevision), err -} - -// Delete takes name of the controllerRevision and deletes it. Returns an error if one occurs. -func (c *FakeControllerRevisions) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(controllerrevisionsResource, c.ns, name), &v1beta2.ControllerRevision{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeControllerRevisions) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(controllerrevisionsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta2.ControllerRevisionList{}) - return err -} - -// Patch applies the patch and returns the patched controllerRevision. -func (c *FakeControllerRevisions) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta2.ControllerRevision, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(controllerrevisionsResource, c.ns, name, pt, data, subresources...), &v1beta2.ControllerRevision{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ControllerRevision), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go deleted file mode 100644 index b50747fdc9..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_daemonset.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/api/apps/v1beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDaemonSets implements DaemonSetInterface -type FakeDaemonSets struct { - Fake *FakeAppsV1beta2 - ns string -} - -var daemonsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta2", Resource: "daemonsets"} - -var daemonsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "DaemonSet"} - -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. -func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *v1beta2.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1beta2.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.DaemonSet), err -} - -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors. -func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *v1beta2.DaemonSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1beta2.DaemonSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta2.DaemonSetList{ListMeta: obj.(*v1beta2.DaemonSetList).ListMeta} - for _, item := range obj.(*v1beta2.DaemonSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested daemonSets. -func (c *FakeDaemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a daemonSet and creates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Create(daemonSet *v1beta2.DaemonSet) (result *v1beta2.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1beta2.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.DaemonSet), err -} - -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Update(daemonSet *v1beta2.DaemonSet) (result *v1beta2.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1beta2.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.DaemonSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDaemonSets) UpdateStatus(daemonSet *v1beta2.DaemonSet) (*v1beta2.DaemonSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1beta2.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.DaemonSet), err -} - -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. -func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &v1beta2.DaemonSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDaemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta2.DaemonSetList{}) - return err -} - -// Patch applies the patch and returns the patched daemonSet. -func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta2.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &v1beta2.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.DaemonSet), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go deleted file mode 100644 index b74d24ed7c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_deployment.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/api/apps/v1beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDeployments implements DeploymentInterface -type FakeDeployments struct { - Fake *FakeAppsV1beta2 - ns string -} - -var deploymentsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta2", Resource: "deployments"} - -var deploymentsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "Deployment"} - -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *v1beta2.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta2.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Deployment), err -} - -// List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *FakeDeployments) List(opts v1.ListOptions) (result *v1beta2.DeploymentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta2.DeploymentList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta2.DeploymentList{ListMeta: obj.(*v1beta2.DeploymentList).ListMeta} - for _, item := range obj.(*v1beta2.DeploymentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested deployments. -func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) - -} - -// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Create(deployment *v1beta2.Deployment) (result *v1beta2.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta2.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Deployment), err -} - -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Update(deployment *v1beta2.Deployment) (result *v1beta2.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta2.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Deployment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDeployments) UpdateStatus(deployment *v1beta2.Deployment) (*v1beta2.Deployment, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta2.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Deployment), err -} - -// Delete takes name of the deployment and deletes it. Returns an error if one occurs. -func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &v1beta2.Deployment{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta2.DeploymentList{}) - return err -} - -// Patch applies the patch and returns the patched deployment. -func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta2.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta2.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Deployment), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go deleted file mode 100644 index ba1de33ecf..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_replicaset.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/api/apps/v1beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeReplicaSets implements ReplicaSetInterface -type FakeReplicaSets struct { - Fake *FakeAppsV1beta2 - ns string -} - -var replicasetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta2", Resource: "replicasets"} - -var replicasetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "ReplicaSet"} - -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. -func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *v1beta2.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1beta2.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ReplicaSet), err -} - -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. -func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *v1beta2.ReplicaSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1beta2.ReplicaSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta2.ReplicaSetList{ListMeta: obj.(*v1beta2.ReplicaSetList).ListMeta} - for _, item := range obj.(*v1beta2.ReplicaSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested replicaSets. -func (c *FakeReplicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts)) - -} - -// Create takes the representation of a replicaSet and creates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Create(replicaSet *v1beta2.ReplicaSet) (result *v1beta2.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1beta2.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ReplicaSet), err -} - -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Update(replicaSet *v1beta2.ReplicaSet) (result *v1beta2.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1beta2.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ReplicaSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeReplicaSets) UpdateStatus(replicaSet *v1beta2.ReplicaSet) (*v1beta2.ReplicaSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1beta2.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ReplicaSet), err -} - -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. -func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &v1beta2.ReplicaSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeReplicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta2.ReplicaSetList{}) - return err -} - -// Patch applies the patch and returns the patched replicaSet. -func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta2.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &v1beta2.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.ReplicaSet), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go b/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go deleted file mode 100644 index 652c7cbc5d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake/fake_statefulset.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta2 "k8s.io/api/apps/v1beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeStatefulSets implements StatefulSetInterface -type FakeStatefulSets struct { - Fake *FakeAppsV1beta2 - ns string -} - -var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta2", Resource: "statefulsets"} - -var statefulsetsKind = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "StatefulSet"} - -// Get takes name of the statefulSet, and returns the corresponding statefulSet object, and an error if there is any. -func (c *FakeStatefulSets) Get(name string, options v1.GetOptions) (result *v1beta2.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(statefulsetsResource, c.ns, name), &v1beta2.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.StatefulSet), err -} - -// List takes label and field selectors, and returns the list of StatefulSets that match those selectors. -func (c *FakeStatefulSets) List(opts v1.ListOptions) (result *v1beta2.StatefulSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(statefulsetsResource, statefulsetsKind, c.ns, opts), &v1beta2.StatefulSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta2.StatefulSetList{ListMeta: obj.(*v1beta2.StatefulSetList).ListMeta} - for _, item := range obj.(*v1beta2.StatefulSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested statefulSets. -func (c *FakeStatefulSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(statefulsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a statefulSet and creates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Create(statefulSet *v1beta2.StatefulSet) (result *v1beta2.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(statefulsetsResource, c.ns, statefulSet), &v1beta2.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.StatefulSet), err -} - -// Update takes the representation of a statefulSet and updates it. Returns the server's representation of the statefulSet, and an error, if there is any. -func (c *FakeStatefulSets) Update(statefulSet *v1beta2.StatefulSet) (result *v1beta2.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(statefulsetsResource, c.ns, statefulSet), &v1beta2.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.StatefulSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeStatefulSets) UpdateStatus(statefulSet *v1beta2.StatefulSet) (*v1beta2.StatefulSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "status", c.ns, statefulSet), &v1beta2.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.StatefulSet), err -} - -// Delete takes name of the statefulSet and deletes it. Returns an error if one occurs. -func (c *FakeStatefulSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(statefulsetsResource, c.ns, name), &v1beta2.StatefulSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeStatefulSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(statefulsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta2.StatefulSetList{}) - return err -} - -// Patch applies the patch and returns the patched statefulSet. -func (c *FakeStatefulSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta2.StatefulSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(statefulsetsResource, c.ns, name, pt, data, subresources...), &v1beta2.StatefulSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.StatefulSet), err -} - -// GetScale takes name of the statefulSet, and returns the corresponding scale object, and an error if there is any. -func (c *FakeStatefulSets) GetScale(statefulSetName string, options v1.GetOptions) (result *v1beta2.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(statefulsetsResource, c.ns, "scale", statefulSetName), &v1beta2.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeStatefulSets) UpdateScale(statefulSetName string, scale *v1beta2.Scale) (result *v1beta2.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(statefulsetsResource, "scale", c.ns, scale), &v1beta2.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta2.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditregistration_client.go b/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditregistration_client.go deleted file mode 100644 index c22acabcf4..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditregistration_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAuditregistrationV1alpha1 struct { - *testing.Fake -} - -func (c *FakeAuditregistrationV1alpha1) AuditSinks() v1alpha1.AuditSinkInterface { - return &FakeAuditSinks{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAuditregistrationV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditsink.go b/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditsink.go deleted file mode 100644 index d0bb9fd000..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake/fake_auditsink.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/auditregistration/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeAuditSinks implements AuditSinkInterface -type FakeAuditSinks struct { - Fake *FakeAuditregistrationV1alpha1 -} - -var auditsinksResource = schema.GroupVersionResource{Group: "auditregistration.k8s.io", Version: "v1alpha1", Resource: "auditsinks"} - -var auditsinksKind = schema.GroupVersionKind{Group: "auditregistration.k8s.io", Version: "v1alpha1", Kind: "AuditSink"} - -// Get takes name of the auditSink, and returns the corresponding auditSink object, and an error if there is any. -func (c *FakeAuditSinks) Get(name string, options v1.GetOptions) (result *v1alpha1.AuditSink, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(auditsinksResource, name), &v1alpha1.AuditSink{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.AuditSink), err -} - -// List takes label and field selectors, and returns the list of AuditSinks that match those selectors. -func (c *FakeAuditSinks) List(opts v1.ListOptions) (result *v1alpha1.AuditSinkList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(auditsinksResource, auditsinksKind, opts), &v1alpha1.AuditSinkList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.AuditSinkList{ListMeta: obj.(*v1alpha1.AuditSinkList).ListMeta} - for _, item := range obj.(*v1alpha1.AuditSinkList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested auditSinks. -func (c *FakeAuditSinks) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(auditsinksResource, opts)) -} - -// Create takes the representation of a auditSink and creates it. Returns the server's representation of the auditSink, and an error, if there is any. -func (c *FakeAuditSinks) Create(auditSink *v1alpha1.AuditSink) (result *v1alpha1.AuditSink, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(auditsinksResource, auditSink), &v1alpha1.AuditSink{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.AuditSink), err -} - -// Update takes the representation of a auditSink and updates it. Returns the server's representation of the auditSink, and an error, if there is any. -func (c *FakeAuditSinks) Update(auditSink *v1alpha1.AuditSink) (result *v1alpha1.AuditSink, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(auditsinksResource, auditSink), &v1alpha1.AuditSink{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.AuditSink), err -} - -// Delete takes name of the auditSink and deletes it. Returns an error if one occurs. -func (c *FakeAuditSinks) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(auditsinksResource, name), &v1alpha1.AuditSink{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeAuditSinks) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(auditsinksResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.AuditSinkList{}) - return err -} - -// Patch applies the patch and returns the patched auditSink. -func (c *FakeAuditSinks) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.AuditSink, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(auditsinksResource, name, pt, data, subresources...), &v1alpha1.AuditSink{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.AuditSink), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go deleted file mode 100644 index ee06a6cdd6..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_authentication_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/authentication/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAuthenticationV1 struct { - *testing.Fake -} - -func (c *FakeAuthenticationV1) TokenReviews() v1.TokenReviewInterface { - return &FakeTokenReviews{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAuthenticationV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go deleted file mode 100644 index e2a7f72b66..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeTokenReviews implements TokenReviewInterface -type FakeTokenReviews struct { - Fake *FakeAuthenticationV1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go deleted file mode 100644 index 7008c927cd..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/fake/fake_tokenreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authenticationapi "k8s.io/api/authentication/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeTokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authenticationapi.SchemeGroupVersion.WithResource("tokenreviews"), tokenReview), &authenticationapi.TokenReview{}) - return obj.(*authenticationapi.TokenReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go deleted file mode 100644 index 7299653ca2..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_authentication_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/authentication/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAuthenticationV1beta1 struct { - *testing.Fake -} - -func (c *FakeAuthenticationV1beta1) TokenReviews() v1beta1.TokenReviewInterface { - return &FakeTokenReviews{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAuthenticationV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go deleted file mode 100644 index 63b6b6a853..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeTokenReviews implements TokenReviewInterface -type FakeTokenReviews struct { - Fake *FakeAuthenticationV1beta1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go deleted file mode 100644 index 92ef5d1a15..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake/fake_tokenreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authenticationapi "k8s.io/api/authentication/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeTokenReviews) Create(tokenReview *authenticationapi.TokenReview) (result *authenticationapi.TokenReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authenticationapi.SchemeGroupVersion.WithResource("tokenreviews"), tokenReview), &authenticationapi.TokenReview{}) - return obj.(*authenticationapi.TokenReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go deleted file mode 100644 index f7e8234509..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_authorization_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/authorization/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAuthorizationV1 struct { - *testing.Fake -} - -func (c *FakeAuthorizationV1) LocalSubjectAccessReviews(namespace string) v1.LocalSubjectAccessReviewInterface { - return &FakeLocalSubjectAccessReviews{c, namespace} -} - -func (c *FakeAuthorizationV1) SelfSubjectAccessReviews() v1.SelfSubjectAccessReviewInterface { - return &FakeSelfSubjectAccessReviews{c} -} - -func (c *FakeAuthorizationV1) SelfSubjectRulesReviews() v1.SelfSubjectRulesReviewInterface { - return &FakeSelfSubjectRulesReviews{c} -} - -func (c *FakeAuthorizationV1) SubjectAccessReviews() v1.SubjectAccessReviewInterface { - return &FakeSubjectAccessReviews{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAuthorizationV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go deleted file mode 100644 index 778ba9cea0..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface -type FakeLocalSubjectAccessReviews struct { - Fake *FakeAuthorizationV1 - ns string -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go deleted file mode 100644 index a01e415c8f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_localsubjectaccessreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeLocalSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewCreateAction(authorizationapi.SchemeGroupVersion.WithResource("localsubjectaccessreviews"), c.ns, sar), &authorizationapi.SubjectAccessReview{}) - return obj.(*authorizationapi.LocalSubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go deleted file mode 100644 index a43a980baf..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface -type FakeSelfSubjectAccessReviews struct { - Fake *FakeAuthorizationV1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go deleted file mode 100644 index 91acbe029e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectaccessreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSelfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"), sar), &authorizationapi.SelfSubjectAccessReview{}) - return obj.(*authorizationapi.SelfSubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go deleted file mode 100644 index 243f2e89ee..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface -type FakeSelfSubjectRulesReviews struct { - Fake *FakeAuthorizationV1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview_expansion.go deleted file mode 100644 index a6dc951349..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_selfsubjectrulesreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSelfSubjectRulesReviews) Create(srr *authorizationapi.SelfSubjectRulesReview) (result *authorizationapi.SelfSubjectRulesReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectrulesreviews"), srr), &authorizationapi.SelfSubjectRulesReview{}) - return obj.(*authorizationapi.SelfSubjectRulesReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go deleted file mode 100644 index d07e562546..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSubjectAccessReviews implements SubjectAccessReviewInterface -type FakeSubjectAccessReviews struct { - Fake *FakeAuthorizationV1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go deleted file mode 100644 index a2a2f0697e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/fake/fake_subjectaccessreview_expansion.go +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSubjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("subjectaccessreviews"), sar), &authorizationapi.SubjectAccessReview{}) - if obj == nil { - return nil, err - } - return obj.(*authorizationapi.SubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go deleted file mode 100644 index 8e328a57bc..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_authorization_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/authorization/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAuthorizationV1beta1 struct { - *testing.Fake -} - -func (c *FakeAuthorizationV1beta1) LocalSubjectAccessReviews(namespace string) v1beta1.LocalSubjectAccessReviewInterface { - return &FakeLocalSubjectAccessReviews{c, namespace} -} - -func (c *FakeAuthorizationV1beta1) SelfSubjectAccessReviews() v1beta1.SelfSubjectAccessReviewInterface { - return &FakeSelfSubjectAccessReviews{c} -} - -func (c *FakeAuthorizationV1beta1) SelfSubjectRulesReviews() v1beta1.SelfSubjectRulesReviewInterface { - return &FakeSelfSubjectRulesReviews{c} -} - -func (c *FakeAuthorizationV1beta1) SubjectAccessReviews() v1beta1.SubjectAccessReviewInterface { - return &FakeSubjectAccessReviews{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAuthorizationV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go deleted file mode 100644 index 8754e39d87..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_generated_expansion.go +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go deleted file mode 100644 index d02d05e5d1..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeLocalSubjectAccessReviews implements LocalSubjectAccessReviewInterface -type FakeLocalSubjectAccessReviews struct { - Fake *FakeAuthorizationV1beta1 - ns string -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go deleted file mode 100644 index 5211628f26..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_localsubjectaccessreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeLocalSubjectAccessReviews) Create(sar *authorizationapi.LocalSubjectAccessReview) (result *authorizationapi.LocalSubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewCreateAction(authorizationapi.SchemeGroupVersion.WithResource("localsubjectaccessreviews"), c.ns, sar), &authorizationapi.SubjectAccessReview{}) - return obj.(*authorizationapi.LocalSubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go deleted file mode 100644 index 8f98ce7a3c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSelfSubjectAccessReviews implements SelfSubjectAccessReviewInterface -type FakeSelfSubjectAccessReviews struct { - Fake *FakeAuthorizationV1beta1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go deleted file mode 100644 index 6e3af12a78..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectaccessreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSelfSubjectAccessReviews) Create(sar *authorizationapi.SelfSubjectAccessReview) (result *authorizationapi.SelfSubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectaccessreviews"), sar), &authorizationapi.SelfSubjectAccessReview{}) - return obj.(*authorizationapi.SelfSubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go deleted file mode 100644 index d8466b4c8d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSelfSubjectRulesReviews implements SelfSubjectRulesReviewInterface -type FakeSelfSubjectRulesReviews struct { - Fake *FakeAuthorizationV1beta1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview_expansion.go deleted file mode 100644 index f92ffd717d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_selfsubjectrulesreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSelfSubjectRulesReviews) Create(srr *authorizationapi.SelfSubjectRulesReview) (result *authorizationapi.SelfSubjectRulesReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("selfsubjectrulesreviews"), srr), &authorizationapi.SelfSubjectRulesReview{}) - return obj.(*authorizationapi.SelfSubjectRulesReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go deleted file mode 100644 index 0d0abdb72a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview.go +++ /dev/null @@ -1,24 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeSubjectAccessReviews implements SubjectAccessReviewInterface -type FakeSubjectAccessReviews struct { - Fake *FakeAuthorizationV1beta1 -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go deleted file mode 100644 index b0b18b099c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake/fake_subjectaccessreview_expansion.go +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authorizationapi "k8s.io/api/authorization/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeSubjectAccessReviews) Create(sar *authorizationapi.SubjectAccessReview) (result *authorizationapi.SubjectAccessReview, err error) { - obj, err := c.Fake.Invokes(core.NewRootCreateAction(authorizationapi.SchemeGroupVersion.WithResource("subjectaccessreviews"), sar), &authorizationapi.SubjectAccessReview{}) - return obj.(*authorizationapi.SubjectAccessReview), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go deleted file mode 100644 index 99e26fcf39..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_autoscaling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/autoscaling/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAutoscalingV1 struct { - *testing.Fake -} - -func (c *FakeAutoscalingV1) HorizontalPodAutoscalers(namespace string) v1.HorizontalPodAutoscalerInterface { - return &FakeHorizontalPodAutoscalers{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAutoscalingV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go deleted file mode 100644 index 6a4bf98810..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - autoscalingv1 "k8s.io/api/autoscaling/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface -type FakeHorizontalPodAutoscalers struct { - Fake *FakeAutoscalingV1 - ns string -} - -var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v1", Resource: "horizontalpodautoscalers"} - -var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v1", Kind: "HorizontalPodAutoscaler"} - -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. -func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &autoscalingv1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.HorizontalPodAutoscaler), err -} - -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. -func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *autoscalingv1.HorizontalPodAutoscalerList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &autoscalingv1.HorizontalPodAutoscalerList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &autoscalingv1.HorizontalPodAutoscalerList{ListMeta: obj.(*autoscalingv1.HorizontalPodAutoscalerList).ListMeta} - for _, item := range obj.(*autoscalingv1.HorizontalPodAutoscalerList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. -func (c *FakeHorizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts)) - -} - -// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.HorizontalPodAutoscaler), err -} - -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.HorizontalPodAutoscaler), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *autoscalingv1.HorizontalPodAutoscaler) (*autoscalingv1.HorizontalPodAutoscaler, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &autoscalingv1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.HorizontalPodAutoscaler), err -} - -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. -func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &autoscalingv1.HorizontalPodAutoscaler{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &autoscalingv1.HorizontalPodAutoscalerList{}) - return err -} - -// Patch applies the patch and returns the patched horizontalPodAutoscaler. -func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *autoscalingv1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &autoscalingv1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.HorizontalPodAutoscaler), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go deleted file mode 100644 index be8e0f48e5..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_autoscaling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2beta1 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAutoscalingV2beta1 struct { - *testing.Fake -} - -func (c *FakeAutoscalingV2beta1) HorizontalPodAutoscalers(namespace string) v2beta1.HorizontalPodAutoscalerInterface { - return &FakeHorizontalPodAutoscalers{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAutoscalingV2beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go deleted file mode 100644 index 514a787cb1..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake/fake_horizontalpodautoscaler.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2beta1 "k8s.io/api/autoscaling/v2beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface -type FakeHorizontalPodAutoscalers struct { - Fake *FakeAutoscalingV2beta1 - ns string -} - -var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v2beta1", Resource: "horizontalpodautoscalers"} - -var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v2beta1", Kind: "HorizontalPodAutoscaler"} - -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. -func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *v2beta1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2beta1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta1.HorizontalPodAutoscaler), err -} - -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. -func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *v2beta1.HorizontalPodAutoscalerList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2beta1.HorizontalPodAutoscalerList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v2beta1.HorizontalPodAutoscalerList{ListMeta: obj.(*v2beta1.HorizontalPodAutoscalerList).ListMeta} - for _, item := range obj.(*v2beta1.HorizontalPodAutoscalerList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. -func (c *FakeHorizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts)) - -} - -// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler) (result *v2beta1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta1.HorizontalPodAutoscaler), err -} - -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler) (result *v2beta1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta1.HorizontalPodAutoscaler), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v2beta1.HorizontalPodAutoscaler) (*v2beta1.HorizontalPodAutoscaler, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2beta1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta1.HorizontalPodAutoscaler), err -} - -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. -func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &v2beta1.HorizontalPodAutoscaler{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v2beta1.HorizontalPodAutoscalerList{}) - return err -} - -// Patch applies the patch and returns the patched horizontalPodAutoscaler. -func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2beta1.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v2beta1.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta1.HorizontalPodAutoscaler), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go deleted file mode 100644 index 8c36e0e815..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_autoscaling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2beta2 "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeAutoscalingV2beta2 struct { - *testing.Fake -} - -func (c *FakeAutoscalingV2beta2) HorizontalPodAutoscalers(namespace string) v2beta2.HorizontalPodAutoscalerInterface { - return &FakeHorizontalPodAutoscalers{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeAutoscalingV2beta2) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go b/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go deleted file mode 100644 index c0569f00ad..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake/fake_horizontalpodautoscaler.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2beta2 "k8s.io/api/autoscaling/v2beta2" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeHorizontalPodAutoscalers implements HorizontalPodAutoscalerInterface -type FakeHorizontalPodAutoscalers struct { - Fake *FakeAutoscalingV2beta2 - ns string -} - -var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v2beta2", Resource: "horizontalpodautoscalers"} - -var horizontalpodautoscalersKind = schema.GroupVersionKind{Group: "autoscaling", Version: "v2beta2", Kind: "HorizontalPodAutoscaler"} - -// Get takes name of the horizontalPodAutoscaler, and returns the corresponding horizontalPodAutoscaler object, and an error if there is any. -func (c *FakeHorizontalPodAutoscalers) Get(name string, options v1.GetOptions) (result *v2beta2.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(horizontalpodautoscalersResource, c.ns, name), &v2beta2.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta2.HorizontalPodAutoscaler), err -} - -// List takes label and field selectors, and returns the list of HorizontalPodAutoscalers that match those selectors. -func (c *FakeHorizontalPodAutoscalers) List(opts v1.ListOptions) (result *v2beta2.HorizontalPodAutoscalerList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(horizontalpodautoscalersResource, horizontalpodautoscalersKind, c.ns, opts), &v2beta2.HorizontalPodAutoscalerList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v2beta2.HorizontalPodAutoscalerList{ListMeta: obj.(*v2beta2.HorizontalPodAutoscalerList).ListMeta} - for _, item := range obj.(*v2beta2.HorizontalPodAutoscalerList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested horizontalPodAutoscalers. -func (c *FakeHorizontalPodAutoscalers) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(horizontalpodautoscalersResource, c.ns, opts)) - -} - -// Create takes the representation of a horizontalPodAutoscaler and creates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler) (result *v2beta2.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta2.HorizontalPodAutoscaler), err -} - -// Update takes the representation of a horizontalPodAutoscaler and updates it. Returns the server's representation of the horizontalPodAutoscaler, and an error, if there is any. -func (c *FakeHorizontalPodAutoscalers) Update(horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler) (result *v2beta2.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(horizontalpodautoscalersResource, c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta2.HorizontalPodAutoscaler), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeHorizontalPodAutoscalers) UpdateStatus(horizontalPodAutoscaler *v2beta2.HorizontalPodAutoscaler) (*v2beta2.HorizontalPodAutoscaler, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(horizontalpodautoscalersResource, "status", c.ns, horizontalPodAutoscaler), &v2beta2.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta2.HorizontalPodAutoscaler), err -} - -// Delete takes name of the horizontalPodAutoscaler and deletes it. Returns an error if one occurs. -func (c *FakeHorizontalPodAutoscalers) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(horizontalpodautoscalersResource, c.ns, name), &v2beta2.HorizontalPodAutoscaler{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeHorizontalPodAutoscalers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(horizontalpodautoscalersResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v2beta2.HorizontalPodAutoscalerList{}) - return err -} - -// Patch applies the patch and returns the patched horizontalPodAutoscaler. -func (c *FakeHorizontalPodAutoscalers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2beta2.HorizontalPodAutoscaler, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(horizontalpodautoscalersResource, c.ns, name, pt, data, subresources...), &v2beta2.HorizontalPodAutoscaler{}) - - if obj == nil { - return nil, err - } - return obj.(*v2beta2.HorizontalPodAutoscaler), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go deleted file mode 100644 index c90dd75616..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_batch_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/batch/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeBatchV1 struct { - *testing.Fake -} - -func (c *FakeBatchV1) Jobs(namespace string) v1.JobInterface { - return &FakeJobs{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeBatchV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go deleted file mode 100644 index 06dc25c6b4..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1/fake/fake_job.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - batchv1 "k8s.io/api/batch/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeJobs implements JobInterface -type FakeJobs struct { - Fake *FakeBatchV1 - ns string -} - -var jobsResource = schema.GroupVersionResource{Group: "batch", Version: "v1", Resource: "jobs"} - -var jobsKind = schema.GroupVersionKind{Group: "batch", Version: "v1", Kind: "Job"} - -// Get takes name of the job, and returns the corresponding job object, and an error if there is any. -func (c *FakeJobs) Get(name string, options v1.GetOptions) (result *batchv1.Job, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(jobsResource, c.ns, name), &batchv1.Job{}) - - if obj == nil { - return nil, err - } - return obj.(*batchv1.Job), err -} - -// List takes label and field selectors, and returns the list of Jobs that match those selectors. -func (c *FakeJobs) List(opts v1.ListOptions) (result *batchv1.JobList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(jobsResource, jobsKind, c.ns, opts), &batchv1.JobList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &batchv1.JobList{ListMeta: obj.(*batchv1.JobList).ListMeta} - for _, item := range obj.(*batchv1.JobList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested jobs. -func (c *FakeJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(jobsResource, c.ns, opts)) - -} - -// Create takes the representation of a job and creates it. Returns the server's representation of the job, and an error, if there is any. -func (c *FakeJobs) Create(job *batchv1.Job) (result *batchv1.Job, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(jobsResource, c.ns, job), &batchv1.Job{}) - - if obj == nil { - return nil, err - } - return obj.(*batchv1.Job), err -} - -// Update takes the representation of a job and updates it. Returns the server's representation of the job, and an error, if there is any. -func (c *FakeJobs) Update(job *batchv1.Job) (result *batchv1.Job, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(jobsResource, c.ns, job), &batchv1.Job{}) - - if obj == nil { - return nil, err - } - return obj.(*batchv1.Job), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeJobs) UpdateStatus(job *batchv1.Job) (*batchv1.Job, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(jobsResource, "status", c.ns, job), &batchv1.Job{}) - - if obj == nil { - return nil, err - } - return obj.(*batchv1.Job), err -} - -// Delete takes name of the job and deletes it. Returns an error if one occurs. -func (c *FakeJobs) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(jobsResource, c.ns, name), &batchv1.Job{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(jobsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &batchv1.JobList{}) - return err -} - -// Patch applies the patch and returns the patched job. -func (c *FakeJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *batchv1.Job, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(jobsResource, c.ns, name, pt, data, subresources...), &batchv1.Job{}) - - if obj == nil { - return nil, err - } - return obj.(*batchv1.Job), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go deleted file mode 100644 index 6f350aed9a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_batch_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/batch/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeBatchV1beta1 struct { - *testing.Fake -} - -func (c *FakeBatchV1beta1) CronJobs(namespace string) v1beta1.CronJobInterface { - return &FakeCronJobs{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeBatchV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go deleted file mode 100644 index 3985c40374..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake/fake_cronjob.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/batch/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeCronJobs implements CronJobInterface -type FakeCronJobs struct { - Fake *FakeBatchV1beta1 - ns string -} - -var cronjobsResource = schema.GroupVersionResource{Group: "batch", Version: "v1beta1", Resource: "cronjobs"} - -var cronjobsKind = schema.GroupVersionKind{Group: "batch", Version: "v1beta1", Kind: "CronJob"} - -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any. -func (c *FakeCronJobs) Get(name string, options v1.GetOptions) (result *v1beta1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(cronjobsResource, c.ns, name), &v1beta1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CronJob), err -} - -// List takes label and field selectors, and returns the list of CronJobs that match those selectors. -func (c *FakeCronJobs) List(opts v1.ListOptions) (result *v1beta1.CronJobList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(cronjobsResource, cronjobsKind, c.ns, opts), &v1beta1.CronJobList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.CronJobList{ListMeta: obj.(*v1beta1.CronJobList).ListMeta} - for _, item := range obj.(*v1beta1.CronJobList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested cronJobs. -func (c *FakeCronJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(cronjobsResource, c.ns, opts)) - -} - -// Create takes the representation of a cronJob and creates it. Returns the server's representation of the cronJob, and an error, if there is any. -func (c *FakeCronJobs) Create(cronJob *v1beta1.CronJob) (result *v1beta1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(cronjobsResource, c.ns, cronJob), &v1beta1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CronJob), err -} - -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any. -func (c *FakeCronJobs) Update(cronJob *v1beta1.CronJob) (result *v1beta1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(cronjobsResource, c.ns, cronJob), &v1beta1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CronJob), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeCronJobs) UpdateStatus(cronJob *v1beta1.CronJob) (*v1beta1.CronJob, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(cronjobsResource, "status", c.ns, cronJob), &v1beta1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CronJob), err -} - -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs. -func (c *FakeCronJobs) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(cronjobsResource, c.ns, name), &v1beta1.CronJob{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeCronJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(cronjobsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.CronJobList{}) - return err -} - -// Patch applies the patch and returns the patched cronJob. -func (c *FakeCronJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, name, pt, data, subresources...), &v1beta1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CronJob), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go deleted file mode 100644 index 3e478cde9d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_batch_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2alpha1 "k8s.io/client-go/kubernetes/typed/batch/v2alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeBatchV2alpha1 struct { - *testing.Fake -} - -func (c *FakeBatchV2alpha1) CronJobs(namespace string) v2alpha1.CronJobInterface { - return &FakeCronJobs{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeBatchV2alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go b/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go deleted file mode 100644 index 2195027d27..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v2alpha1 "k8s.io/api/batch/v2alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeCronJobs implements CronJobInterface -type FakeCronJobs struct { - Fake *FakeBatchV2alpha1 - ns string -} - -var cronjobsResource = schema.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "cronjobs"} - -var cronjobsKind = schema.GroupVersionKind{Group: "batch", Version: "v2alpha1", Kind: "CronJob"} - -// Get takes name of the cronJob, and returns the corresponding cronJob object, and an error if there is any. -func (c *FakeCronJobs) Get(name string, options v1.GetOptions) (result *v2alpha1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(cronjobsResource, c.ns, name), &v2alpha1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v2alpha1.CronJob), err -} - -// List takes label and field selectors, and returns the list of CronJobs that match those selectors. -func (c *FakeCronJobs) List(opts v1.ListOptions) (result *v2alpha1.CronJobList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(cronjobsResource, cronjobsKind, c.ns, opts), &v2alpha1.CronJobList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v2alpha1.CronJobList{ListMeta: obj.(*v2alpha1.CronJobList).ListMeta} - for _, item := range obj.(*v2alpha1.CronJobList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested cronJobs. -func (c *FakeCronJobs) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(cronjobsResource, c.ns, opts)) - -} - -// Create takes the representation of a cronJob and creates it. Returns the server's representation of the cronJob, and an error, if there is any. -func (c *FakeCronJobs) Create(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(cronjobsResource, c.ns, cronJob), &v2alpha1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v2alpha1.CronJob), err -} - -// Update takes the representation of a cronJob and updates it. Returns the server's representation of the cronJob, and an error, if there is any. -func (c *FakeCronJobs) Update(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(cronjobsResource, c.ns, cronJob), &v2alpha1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v2alpha1.CronJob), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeCronJobs) UpdateStatus(cronJob *v2alpha1.CronJob) (*v2alpha1.CronJob, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(cronjobsResource, "status", c.ns, cronJob), &v2alpha1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v2alpha1.CronJob), err -} - -// Delete takes name of the cronJob and deletes it. Returns an error if one occurs. -func (c *FakeCronJobs) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(cronjobsResource, c.ns, name), &v2alpha1.CronJob{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeCronJobs) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(cronjobsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v2alpha1.CronJobList{}) - return err -} - -// Patch applies the patch and returns the patched cronJob. -func (c *FakeCronJobs) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v2alpha1.CronJob, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(cronjobsResource, c.ns, name, pt, data, subresources...), &v2alpha1.CronJob{}) - - if obj == nil { - return nil, err - } - return obj.(*v2alpha1.CronJob), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go deleted file mode 100644 index 29d8b088ea..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificates_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeCertificatesV1beta1 struct { - *testing.Fake -} - -func (c *FakeCertificatesV1beta1) CertificateSigningRequests() v1beta1.CertificateSigningRequestInterface { - return &FakeCertificateSigningRequests{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeCertificatesV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go deleted file mode 100644 index aa45c88033..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/certificates/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeCertificateSigningRequests implements CertificateSigningRequestInterface -type FakeCertificateSigningRequests struct { - Fake *FakeCertificatesV1beta1 -} - -var certificatesigningrequestsResource = schema.GroupVersionResource{Group: "certificates.k8s.io", Version: "v1beta1", Resource: "certificatesigningrequests"} - -var certificatesigningrequestsKind = schema.GroupVersionKind{Group: "certificates.k8s.io", Version: "v1beta1", Kind: "CertificateSigningRequest"} - -// Get takes name of the certificateSigningRequest, and returns the corresponding certificateSigningRequest object, and an error if there is any. -func (c *FakeCertificateSigningRequests) Get(name string, options v1.GetOptions) (result *v1beta1.CertificateSigningRequest, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(certificatesigningrequestsResource, name), &v1beta1.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CertificateSigningRequest), err -} - -// List takes label and field selectors, and returns the list of CertificateSigningRequests that match those selectors. -func (c *FakeCertificateSigningRequests) List(opts v1.ListOptions) (result *v1beta1.CertificateSigningRequestList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(certificatesigningrequestsResource, certificatesigningrequestsKind, opts), &v1beta1.CertificateSigningRequestList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.CertificateSigningRequestList{ListMeta: obj.(*v1beta1.CertificateSigningRequestList).ListMeta} - for _, item := range obj.(*v1beta1.CertificateSigningRequestList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested certificateSigningRequests. -func (c *FakeCertificateSigningRequests) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(certificatesigningrequestsResource, opts)) -} - -// Create takes the representation of a certificateSigningRequest and creates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. -func (c *FakeCertificateSigningRequests) Create(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CertificateSigningRequest), err -} - -// Update takes the representation of a certificateSigningRequest and updates it. Returns the server's representation of the certificateSigningRequest, and an error, if there is any. -func (c *FakeCertificateSigningRequests) Update(certificateSigningRequest *v1beta1.CertificateSigningRequest) (result *v1beta1.CertificateSigningRequest, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(certificatesigningrequestsResource, certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CertificateSigningRequest), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeCertificateSigningRequests) UpdateStatus(certificateSigningRequest *v1beta1.CertificateSigningRequest) (*v1beta1.CertificateSigningRequest, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "status", certificateSigningRequest), &v1beta1.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CertificateSigningRequest), err -} - -// Delete takes name of the certificateSigningRequest and deletes it. Returns an error if one occurs. -func (c *FakeCertificateSigningRequests) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(certificatesigningrequestsResource, name), &v1beta1.CertificateSigningRequest{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeCertificateSigningRequests) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(certificatesigningrequestsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.CertificateSigningRequestList{}) - return err -} - -// Patch applies the patch and returns the patched certificateSigningRequest. -func (c *FakeCertificateSigningRequests) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CertificateSigningRequest, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(certificatesigningrequestsResource, name, pt, data, subresources...), &v1beta1.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CertificateSigningRequest), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go deleted file mode 100644 index 8af33e62ad..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake/fake_certificatesigningrequest_expansion.go +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - certificates "k8s.io/api/certificates/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeCertificateSigningRequests) UpdateApproval(certificateSigningRequest *certificates.CertificateSigningRequest) (result *certificates.CertificateSigningRequest, err error) { - obj, err := c.Fake. - Invokes(core.NewRootUpdateSubresourceAction(certificatesigningrequestsResource, "approval", certificateSigningRequest), &certificates.CertificateSigningRequest{}) - if obj == nil { - return nil, err - } - return obj.(*certificates.CertificateSigningRequest), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go deleted file mode 100644 index 6920275b20..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_coordination_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/coordination/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeCoordinationV1 struct { - *testing.Fake -} - -func (c *FakeCoordinationV1) Leases(namespace string) v1.LeaseInterface { - return &FakeLeases{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeCoordinationV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go deleted file mode 100644 index 940c738c1b..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1/fake/fake_lease.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - coordinationv1 "k8s.io/api/coordination/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeLeases implements LeaseInterface -type FakeLeases struct { - Fake *FakeCoordinationV1 - ns string -} - -var leasesResource = schema.GroupVersionResource{Group: "coordination.k8s.io", Version: "v1", Resource: "leases"} - -var leasesKind = schema.GroupVersionKind{Group: "coordination.k8s.io", Version: "v1", Kind: "Lease"} - -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any. -func (c *FakeLeases) Get(name string, options v1.GetOptions) (result *coordinationv1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(leasesResource, c.ns, name), &coordinationv1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*coordinationv1.Lease), err -} - -// List takes label and field selectors, and returns the list of Leases that match those selectors. -func (c *FakeLeases) List(opts v1.ListOptions) (result *coordinationv1.LeaseList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(leasesResource, leasesKind, c.ns, opts), &coordinationv1.LeaseList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &coordinationv1.LeaseList{ListMeta: obj.(*coordinationv1.LeaseList).ListMeta} - for _, item := range obj.(*coordinationv1.LeaseList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested leases. -func (c *FakeLeases) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(leasesResource, c.ns, opts)) - -} - -// Create takes the representation of a lease and creates it. Returns the server's representation of the lease, and an error, if there is any. -func (c *FakeLeases) Create(lease *coordinationv1.Lease) (result *coordinationv1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(leasesResource, c.ns, lease), &coordinationv1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*coordinationv1.Lease), err -} - -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any. -func (c *FakeLeases) Update(lease *coordinationv1.Lease) (result *coordinationv1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(leasesResource, c.ns, lease), &coordinationv1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*coordinationv1.Lease), err -} - -// Delete takes name of the lease and deletes it. Returns an error if one occurs. -func (c *FakeLeases) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(leasesResource, c.ns, name), &coordinationv1.Lease{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeLeases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(leasesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &coordinationv1.LeaseList{}) - return err -} - -// Patch applies the patch and returns the patched lease. -func (c *FakeLeases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *coordinationv1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, name, pt, data, subresources...), &coordinationv1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*coordinationv1.Lease), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go deleted file mode 100644 index f583b466e2..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_coordination_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/coordination/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeCoordinationV1beta1 struct { - *testing.Fake -} - -func (c *FakeCoordinationV1beta1) Leases(namespace string) v1beta1.LeaseInterface { - return &FakeLeases{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeCoordinationV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go b/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go deleted file mode 100644 index 0ebf3bffc2..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake/fake_lease.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/coordination/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeLeases implements LeaseInterface -type FakeLeases struct { - Fake *FakeCoordinationV1beta1 - ns string -} - -var leasesResource = schema.GroupVersionResource{Group: "coordination.k8s.io", Version: "v1beta1", Resource: "leases"} - -var leasesKind = schema.GroupVersionKind{Group: "coordination.k8s.io", Version: "v1beta1", Kind: "Lease"} - -// Get takes name of the lease, and returns the corresponding lease object, and an error if there is any. -func (c *FakeLeases) Get(name string, options v1.GetOptions) (result *v1beta1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(leasesResource, c.ns, name), &v1beta1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Lease), err -} - -// List takes label and field selectors, and returns the list of Leases that match those selectors. -func (c *FakeLeases) List(opts v1.ListOptions) (result *v1beta1.LeaseList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(leasesResource, leasesKind, c.ns, opts), &v1beta1.LeaseList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.LeaseList{ListMeta: obj.(*v1beta1.LeaseList).ListMeta} - for _, item := range obj.(*v1beta1.LeaseList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested leases. -func (c *FakeLeases) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(leasesResource, c.ns, opts)) - -} - -// Create takes the representation of a lease and creates it. Returns the server's representation of the lease, and an error, if there is any. -func (c *FakeLeases) Create(lease *v1beta1.Lease) (result *v1beta1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(leasesResource, c.ns, lease), &v1beta1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Lease), err -} - -// Update takes the representation of a lease and updates it. Returns the server's representation of the lease, and an error, if there is any. -func (c *FakeLeases) Update(lease *v1beta1.Lease) (result *v1beta1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(leasesResource, c.ns, lease), &v1beta1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Lease), err -} - -// Delete takes name of the lease and deletes it. Returns an error if one occurs. -func (c *FakeLeases) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(leasesResource, c.ns, name), &v1beta1.Lease{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeLeases) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(leasesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.LeaseList{}) - return err -} - -// Patch applies the patch and returns the patched lease. -func (c *FakeLeases) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Lease, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(leasesResource, c.ns, name, pt, data, subresources...), &v1beta1.Lease{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Lease), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go deleted file mode 100644 index 18beedc2d3..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_componentstatus.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeComponentStatuses implements ComponentStatusInterface -type FakeComponentStatuses struct { - Fake *FakeCoreV1 -} - -var componentstatusesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "componentstatuses"} - -var componentstatusesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ComponentStatus"} - -// Get takes name of the componentStatus, and returns the corresponding componentStatus object, and an error if there is any. -func (c *FakeComponentStatuses) Get(name string, options v1.GetOptions) (result *corev1.ComponentStatus, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(componentstatusesResource, name), &corev1.ComponentStatus{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.ComponentStatus), err -} - -// List takes label and field selectors, and returns the list of ComponentStatuses that match those selectors. -func (c *FakeComponentStatuses) List(opts v1.ListOptions) (result *corev1.ComponentStatusList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(componentstatusesResource, componentstatusesKind, opts), &corev1.ComponentStatusList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ComponentStatusList{ListMeta: obj.(*corev1.ComponentStatusList).ListMeta} - for _, item := range obj.(*corev1.ComponentStatusList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested componentStatuses. -func (c *FakeComponentStatuses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(componentstatusesResource, opts)) -} - -// Create takes the representation of a componentStatus and creates it. Returns the server's representation of the componentStatus, and an error, if there is any. -func (c *FakeComponentStatuses) Create(componentStatus *corev1.ComponentStatus) (result *corev1.ComponentStatus, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(componentstatusesResource, componentStatus), &corev1.ComponentStatus{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.ComponentStatus), err -} - -// Update takes the representation of a componentStatus and updates it. Returns the server's representation of the componentStatus, and an error, if there is any. -func (c *FakeComponentStatuses) Update(componentStatus *corev1.ComponentStatus) (result *corev1.ComponentStatus, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(componentstatusesResource, componentStatus), &corev1.ComponentStatus{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.ComponentStatus), err -} - -// Delete takes name of the componentStatus and deletes it. Returns an error if one occurs. -func (c *FakeComponentStatuses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(componentstatusesResource, name), &corev1.ComponentStatus{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeComponentStatuses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(componentstatusesResource, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.ComponentStatusList{}) - return err -} - -// Patch applies the patch and returns the patched componentStatus. -func (c *FakeComponentStatuses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ComponentStatus, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(componentstatusesResource, name, pt, data, subresources...), &corev1.ComponentStatus{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.ComponentStatus), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go deleted file mode 100644 index 2361ac3fe9..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_configmap.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeConfigMaps implements ConfigMapInterface -type FakeConfigMaps struct { - Fake *FakeCoreV1 - ns string -} - -var configmapsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} - -var configmapsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ConfigMap"} - -// Get takes name of the configMap, and returns the corresponding configMap object, and an error if there is any. -func (c *FakeConfigMaps) Get(name string, options v1.GetOptions) (result *corev1.ConfigMap, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(configmapsResource, c.ns, name), &corev1.ConfigMap{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ConfigMap), err -} - -// List takes label and field selectors, and returns the list of ConfigMaps that match those selectors. -func (c *FakeConfigMaps) List(opts v1.ListOptions) (result *corev1.ConfigMapList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(configmapsResource, configmapsKind, c.ns, opts), &corev1.ConfigMapList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ConfigMapList{ListMeta: obj.(*corev1.ConfigMapList).ListMeta} - for _, item := range obj.(*corev1.ConfigMapList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested configMaps. -func (c *FakeConfigMaps) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(configmapsResource, c.ns, opts)) - -} - -// Create takes the representation of a configMap and creates it. Returns the server's representation of the configMap, and an error, if there is any. -func (c *FakeConfigMaps) Create(configMap *corev1.ConfigMap) (result *corev1.ConfigMap, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(configmapsResource, c.ns, configMap), &corev1.ConfigMap{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ConfigMap), err -} - -// Update takes the representation of a configMap and updates it. Returns the server's representation of the configMap, and an error, if there is any. -func (c *FakeConfigMaps) Update(configMap *corev1.ConfigMap) (result *corev1.ConfigMap, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(configmapsResource, c.ns, configMap), &corev1.ConfigMap{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ConfigMap), err -} - -// Delete takes name of the configMap and deletes it. Returns an error if one occurs. -func (c *FakeConfigMaps) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(configmapsResource, c.ns, name), &corev1.ConfigMap{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeConfigMaps) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(configmapsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.ConfigMapList{}) - return err -} - -// Patch applies the patch and returns the patched configMap. -func (c *FakeConfigMaps) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ConfigMap, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(configmapsResource, c.ns, name, pt, data, subresources...), &corev1.ConfigMap{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ConfigMap), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go deleted file mode 100644 index 5ad90943c9..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_core_client.go +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/core/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeCoreV1 struct { - *testing.Fake -} - -func (c *FakeCoreV1) ComponentStatuses() v1.ComponentStatusInterface { - return &FakeComponentStatuses{c} -} - -func (c *FakeCoreV1) ConfigMaps(namespace string) v1.ConfigMapInterface { - return &FakeConfigMaps{c, namespace} -} - -func (c *FakeCoreV1) Endpoints(namespace string) v1.EndpointsInterface { - return &FakeEndpoints{c, namespace} -} - -func (c *FakeCoreV1) Events(namespace string) v1.EventInterface { - return &FakeEvents{c, namespace} -} - -func (c *FakeCoreV1) LimitRanges(namespace string) v1.LimitRangeInterface { - return &FakeLimitRanges{c, namespace} -} - -func (c *FakeCoreV1) Namespaces() v1.NamespaceInterface { - return &FakeNamespaces{c} -} - -func (c *FakeCoreV1) Nodes() v1.NodeInterface { - return &FakeNodes{c} -} - -func (c *FakeCoreV1) PersistentVolumes() v1.PersistentVolumeInterface { - return &FakePersistentVolumes{c} -} - -func (c *FakeCoreV1) PersistentVolumeClaims(namespace string) v1.PersistentVolumeClaimInterface { - return &FakePersistentVolumeClaims{c, namespace} -} - -func (c *FakeCoreV1) Pods(namespace string) v1.PodInterface { - return &FakePods{c, namespace} -} - -func (c *FakeCoreV1) PodTemplates(namespace string) v1.PodTemplateInterface { - return &FakePodTemplates{c, namespace} -} - -func (c *FakeCoreV1) ReplicationControllers(namespace string) v1.ReplicationControllerInterface { - return &FakeReplicationControllers{c, namespace} -} - -func (c *FakeCoreV1) ResourceQuotas(namespace string) v1.ResourceQuotaInterface { - return &FakeResourceQuotas{c, namespace} -} - -func (c *FakeCoreV1) Secrets(namespace string) v1.SecretInterface { - return &FakeSecrets{c, namespace} -} - -func (c *FakeCoreV1) Services(namespace string) v1.ServiceInterface { - return &FakeServices{c, namespace} -} - -func (c *FakeCoreV1) ServiceAccounts(namespace string) v1.ServiceAccountInterface { - return &FakeServiceAccounts{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeCoreV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go deleted file mode 100644 index d521af4083..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_endpoints.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeEndpoints implements EndpointsInterface -type FakeEndpoints struct { - Fake *FakeCoreV1 - ns string -} - -var endpointsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "endpoints"} - -var endpointsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Endpoints"} - -// Get takes name of the endpoints, and returns the corresponding endpoints object, and an error if there is any. -func (c *FakeEndpoints) Get(name string, options v1.GetOptions) (result *corev1.Endpoints, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(endpointsResource, c.ns, name), &corev1.Endpoints{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Endpoints), err -} - -// List takes label and field selectors, and returns the list of Endpoints that match those selectors. -func (c *FakeEndpoints) List(opts v1.ListOptions) (result *corev1.EndpointsList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(endpointsResource, endpointsKind, c.ns, opts), &corev1.EndpointsList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.EndpointsList{ListMeta: obj.(*corev1.EndpointsList).ListMeta} - for _, item := range obj.(*corev1.EndpointsList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested endpoints. -func (c *FakeEndpoints) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(endpointsResource, c.ns, opts)) - -} - -// Create takes the representation of a endpoints and creates it. Returns the server's representation of the endpoints, and an error, if there is any. -func (c *FakeEndpoints) Create(endpoints *corev1.Endpoints) (result *corev1.Endpoints, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(endpointsResource, c.ns, endpoints), &corev1.Endpoints{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Endpoints), err -} - -// Update takes the representation of a endpoints and updates it. Returns the server's representation of the endpoints, and an error, if there is any. -func (c *FakeEndpoints) Update(endpoints *corev1.Endpoints) (result *corev1.Endpoints, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(endpointsResource, c.ns, endpoints), &corev1.Endpoints{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Endpoints), err -} - -// Delete takes name of the endpoints and deletes it. Returns an error if one occurs. -func (c *FakeEndpoints) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(endpointsResource, c.ns, name), &corev1.Endpoints{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeEndpoints) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(endpointsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.EndpointsList{}) - return err -} - -// Patch applies the patch and returns the patched endpoints. -func (c *FakeEndpoints) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Endpoints, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(endpointsResource, c.ns, name, pt, data, subresources...), &corev1.Endpoints{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Endpoints), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go deleted file mode 100644 index 3444f4be96..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeEvents implements EventInterface -type FakeEvents struct { - Fake *FakeCoreV1 - ns string -} - -var eventsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "events"} - -var eventsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Event"} - -// Get takes name of the event, and returns the corresponding event object, and an error if there is any. -func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *corev1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(eventsResource, c.ns, name), &corev1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Event), err -} - -// List takes label and field selectors, and returns the list of Events that match those selectors. -func (c *FakeEvents) List(opts v1.ListOptions) (result *corev1.EventList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &corev1.EventList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.EventList{ListMeta: obj.(*corev1.EventList).ListMeta} - for _, item := range obj.(*corev1.EventList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested events. -func (c *FakeEvents) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts)) - -} - -// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any. -func (c *FakeEvents) Create(event *corev1.Event) (result *corev1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &corev1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Event), err -} - -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any. -func (c *FakeEvents) Update(event *corev1.Event) (result *corev1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &corev1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Event), err -} - -// Delete takes name of the event and deletes it. Returns an error if one occurs. -func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &corev1.Event{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeEvents) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.EventList{}) - return err -} - -// Patch applies the patch and returns the patched event. -func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, pt, data, subresources...), &corev1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Event), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go deleted file mode 100644 index 4b4c90d7d1..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go +++ /dev/null @@ -1,93 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/runtime" - types "k8s.io/apimachinery/pkg/types" - core "k8s.io/client-go/testing" -) - -func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) { - action := core.NewRootCreateAction(eventsResource, event) - if c.ns != "" { - action = core.NewCreateAction(eventsResource, c.ns, event) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1.Event), err -} - -// Update replaces an existing event. Returns the copy of the event the server returns, or an error. -func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) { - action := core.NewRootUpdateAction(eventsResource, event) - if c.ns != "" { - action = core.NewUpdateAction(eventsResource, c.ns, event) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1.Event), err -} - -// PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error. -// TODO: Should take a PatchType as an argument probably. -func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) { - // TODO: Should be configurable to support additional patch strategies. - pt := types.StrategicMergePatchType - action := core.NewRootPatchAction(eventsResource, event.Name, pt, data) - if c.ns != "" { - action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1.Event), err -} - -// Search returns a list of events matching the specified object. -func (c *FakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) { - action := core.NewRootListAction(eventsResource, eventsKind, metav1.ListOptions{}) - if c.ns != "" { - action = core.NewListAction(eventsResource, eventsKind, c.ns, metav1.ListOptions{}) - } - obj, err := c.Fake.Invokes(action, &v1.EventList{}) - if obj == nil { - return nil, err - } - - return obj.(*v1.EventList), err -} - -func (c *FakeEvents) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector { - action := core.GenericActionImpl{} - action.Verb = "get-field-selector" - action.Resource = eventsResource - - c.Fake.Invokes(action, nil) - return fields.Everything() -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go deleted file mode 100644 index d110031f83..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_limitrange.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeLimitRanges implements LimitRangeInterface -type FakeLimitRanges struct { - Fake *FakeCoreV1 - ns string -} - -var limitrangesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "limitranges"} - -var limitrangesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "LimitRange"} - -// Get takes name of the limitRange, and returns the corresponding limitRange object, and an error if there is any. -func (c *FakeLimitRanges) Get(name string, options v1.GetOptions) (result *corev1.LimitRange, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(limitrangesResource, c.ns, name), &corev1.LimitRange{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.LimitRange), err -} - -// List takes label and field selectors, and returns the list of LimitRanges that match those selectors. -func (c *FakeLimitRanges) List(opts v1.ListOptions) (result *corev1.LimitRangeList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(limitrangesResource, limitrangesKind, c.ns, opts), &corev1.LimitRangeList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.LimitRangeList{ListMeta: obj.(*corev1.LimitRangeList).ListMeta} - for _, item := range obj.(*corev1.LimitRangeList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested limitRanges. -func (c *FakeLimitRanges) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(limitrangesResource, c.ns, opts)) - -} - -// Create takes the representation of a limitRange and creates it. Returns the server's representation of the limitRange, and an error, if there is any. -func (c *FakeLimitRanges) Create(limitRange *corev1.LimitRange) (result *corev1.LimitRange, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(limitrangesResource, c.ns, limitRange), &corev1.LimitRange{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.LimitRange), err -} - -// Update takes the representation of a limitRange and updates it. Returns the server's representation of the limitRange, and an error, if there is any. -func (c *FakeLimitRanges) Update(limitRange *corev1.LimitRange) (result *corev1.LimitRange, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(limitrangesResource, c.ns, limitRange), &corev1.LimitRange{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.LimitRange), err -} - -// Delete takes name of the limitRange and deletes it. Returns an error if one occurs. -func (c *FakeLimitRanges) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(limitrangesResource, c.ns, name), &corev1.LimitRange{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeLimitRanges) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(limitrangesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.LimitRangeList{}) - return err -} - -// Patch applies the patch and returns the patched limitRange. -func (c *FakeLimitRanges) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.LimitRange, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(limitrangesResource, c.ns, name, pt, data, subresources...), &corev1.LimitRange{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.LimitRange), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go deleted file mode 100644 index 21387b5e25..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace.go +++ /dev/null @@ -1,123 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeNamespaces implements NamespaceInterface -type FakeNamespaces struct { - Fake *FakeCoreV1 -} - -var namespacesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"} - -var namespacesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Namespace"} - -// Get takes name of the namespace, and returns the corresponding namespace object, and an error if there is any. -func (c *FakeNamespaces) Get(name string, options v1.GetOptions) (result *corev1.Namespace, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(namespacesResource, name), &corev1.Namespace{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Namespace), err -} - -// List takes label and field selectors, and returns the list of Namespaces that match those selectors. -func (c *FakeNamespaces) List(opts v1.ListOptions) (result *corev1.NamespaceList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(namespacesResource, namespacesKind, opts), &corev1.NamespaceList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.NamespaceList{ListMeta: obj.(*corev1.NamespaceList).ListMeta} - for _, item := range obj.(*corev1.NamespaceList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested namespaces. -func (c *FakeNamespaces) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(namespacesResource, opts)) -} - -// Create takes the representation of a namespace and creates it. Returns the server's representation of the namespace, and an error, if there is any. -func (c *FakeNamespaces) Create(namespace *corev1.Namespace) (result *corev1.Namespace, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(namespacesResource, namespace), &corev1.Namespace{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Namespace), err -} - -// Update takes the representation of a namespace and updates it. Returns the server's representation of the namespace, and an error, if there is any. -func (c *FakeNamespaces) Update(namespace *corev1.Namespace) (result *corev1.Namespace, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(namespacesResource, namespace), &corev1.Namespace{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Namespace), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeNamespaces) UpdateStatus(namespace *corev1.Namespace) (*corev1.Namespace, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(namespacesResource, "status", namespace), &corev1.Namespace{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Namespace), err -} - -// Delete takes name of the namespace and deletes it. Returns an error if one occurs. -func (c *FakeNamespaces) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(namespacesResource, name), &corev1.Namespace{}) - return err -} - -// Patch applies the patch and returns the patched namespace. -func (c *FakeNamespaces) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Namespace, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(namespacesResource, name, pt, data, subresources...), &corev1.Namespace{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Namespace), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go deleted file mode 100644 index a0eae34904..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_namespace_expansion.go +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - "k8s.io/api/core/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeNamespaces) Finalize(namespace *v1.Namespace) (*v1.Namespace, error) { - action := core.CreateActionImpl{} - action.Verb = "create" - action.Resource = namespacesResource - action.Subresource = "finalize" - action.Object = namespace - - obj, err := c.Fake.Invokes(action, namespace) - if obj == nil { - return nil, err - } - - return obj.(*v1.Namespace), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go deleted file mode 100644 index bcde116a4e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeNodes implements NodeInterface -type FakeNodes struct { - Fake *FakeCoreV1 -} - -var nodesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"} - -var nodesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Node"} - -// Get takes name of the node, and returns the corresponding node object, and an error if there is any. -func (c *FakeNodes) Get(name string, options v1.GetOptions) (result *corev1.Node, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(nodesResource, name), &corev1.Node{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Node), err -} - -// List takes label and field selectors, and returns the list of Nodes that match those selectors. -func (c *FakeNodes) List(opts v1.ListOptions) (result *corev1.NodeList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(nodesResource, nodesKind, opts), &corev1.NodeList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.NodeList{ListMeta: obj.(*corev1.NodeList).ListMeta} - for _, item := range obj.(*corev1.NodeList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested nodes. -func (c *FakeNodes) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(nodesResource, opts)) -} - -// Create takes the representation of a node and creates it. Returns the server's representation of the node, and an error, if there is any. -func (c *FakeNodes) Create(node *corev1.Node) (result *corev1.Node, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(nodesResource, node), &corev1.Node{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Node), err -} - -// Update takes the representation of a node and updates it. Returns the server's representation of the node, and an error, if there is any. -func (c *FakeNodes) Update(node *corev1.Node) (result *corev1.Node, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(nodesResource, node), &corev1.Node{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Node), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeNodes) UpdateStatus(node *corev1.Node) (*corev1.Node, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(nodesResource, "status", node), &corev1.Node{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Node), err -} - -// Delete takes name of the node and deletes it. Returns an error if one occurs. -func (c *FakeNodes) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(nodesResource, name), &corev1.Node{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeNodes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(nodesResource, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.NodeList{}) - return err -} - -// Patch applies the patch and returns the patched node. -func (c *FakeNodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Node, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(nodesResource, name, pt, data, subresources...), &corev1.Node{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.Node), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go deleted file mode 100644 index a39022c83f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_node_expansion.go +++ /dev/null @@ -1,36 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - "k8s.io/api/core/v1" - types "k8s.io/apimachinery/pkg/types" - core "k8s.io/client-go/testing" -) - -// TODO: Should take a PatchType as an argument probably. -func (c *FakeNodes) PatchStatus(nodeName string, data []byte) (*v1.Node, error) { - // TODO: Should be configurable to support additional patch strategies. - pt := types.StrategicMergePatchType - obj, err := c.Fake.Invokes( - core.NewRootPatchSubresourceAction(nodesResource, nodeName, pt, data, "status"), &v1.Node{}) - if obj == nil { - return nil, err - } - - return obj.(*v1.Node), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go deleted file mode 100644 index 843f323075..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolume.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePersistentVolumes implements PersistentVolumeInterface -type FakePersistentVolumes struct { - Fake *FakeCoreV1 -} - -var persistentvolumesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumes"} - -var persistentvolumesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolume"} - -// Get takes name of the persistentVolume, and returns the corresponding persistentVolume object, and an error if there is any. -func (c *FakePersistentVolumes) Get(name string, options v1.GetOptions) (result *corev1.PersistentVolume, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(persistentvolumesResource, name), &corev1.PersistentVolume{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolume), err -} - -// List takes label and field selectors, and returns the list of PersistentVolumes that match those selectors. -func (c *FakePersistentVolumes) List(opts v1.ListOptions) (result *corev1.PersistentVolumeList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(persistentvolumesResource, persistentvolumesKind, opts), &corev1.PersistentVolumeList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.PersistentVolumeList{ListMeta: obj.(*corev1.PersistentVolumeList).ListMeta} - for _, item := range obj.(*corev1.PersistentVolumeList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested persistentVolumes. -func (c *FakePersistentVolumes) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(persistentvolumesResource, opts)) -} - -// Create takes the representation of a persistentVolume and creates it. Returns the server's representation of the persistentVolume, and an error, if there is any. -func (c *FakePersistentVolumes) Create(persistentVolume *corev1.PersistentVolume) (result *corev1.PersistentVolume, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(persistentvolumesResource, persistentVolume), &corev1.PersistentVolume{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolume), err -} - -// Update takes the representation of a persistentVolume and updates it. Returns the server's representation of the persistentVolume, and an error, if there is any. -func (c *FakePersistentVolumes) Update(persistentVolume *corev1.PersistentVolume) (result *corev1.PersistentVolume, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(persistentvolumesResource, persistentVolume), &corev1.PersistentVolume{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolume), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakePersistentVolumes) UpdateStatus(persistentVolume *corev1.PersistentVolume) (*corev1.PersistentVolume, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(persistentvolumesResource, "status", persistentVolume), &corev1.PersistentVolume{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolume), err -} - -// Delete takes name of the persistentVolume and deletes it. Returns an error if one occurs. -func (c *FakePersistentVolumes) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(persistentvolumesResource, name), &corev1.PersistentVolume{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePersistentVolumes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(persistentvolumesResource, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.PersistentVolumeList{}) - return err -} - -// Patch applies the patch and returns the patched persistentVolume. -func (c *FakePersistentVolumes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PersistentVolume, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(persistentvolumesResource, name, pt, data, subresources...), &corev1.PersistentVolume{}) - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolume), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go deleted file mode 100644 index d2557c4c83..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePersistentVolumeClaims implements PersistentVolumeClaimInterface -type FakePersistentVolumeClaims struct { - Fake *FakeCoreV1 - ns string -} - -var persistentvolumeclaimsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"} - -var persistentvolumeclaimsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PersistentVolumeClaim"} - -// Get takes name of the persistentVolumeClaim, and returns the corresponding persistentVolumeClaim object, and an error if there is any. -func (c *FakePersistentVolumeClaims) Get(name string, options v1.GetOptions) (result *corev1.PersistentVolumeClaim, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(persistentvolumeclaimsResource, c.ns, name), &corev1.PersistentVolumeClaim{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolumeClaim), err -} - -// List takes label and field selectors, and returns the list of PersistentVolumeClaims that match those selectors. -func (c *FakePersistentVolumeClaims) List(opts v1.ListOptions) (result *corev1.PersistentVolumeClaimList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(persistentvolumeclaimsResource, persistentvolumeclaimsKind, c.ns, opts), &corev1.PersistentVolumeClaimList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.PersistentVolumeClaimList{ListMeta: obj.(*corev1.PersistentVolumeClaimList).ListMeta} - for _, item := range obj.(*corev1.PersistentVolumeClaimList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested persistentVolumeClaims. -func (c *FakePersistentVolumeClaims) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(persistentvolumeclaimsResource, c.ns, opts)) - -} - -// Create takes the representation of a persistentVolumeClaim and creates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. -func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *corev1.PersistentVolumeClaim) (result *corev1.PersistentVolumeClaim, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolumeClaim), err -} - -// Update takes the representation of a persistentVolumeClaim and updates it. Returns the server's representation of the persistentVolumeClaim, and an error, if there is any. -func (c *FakePersistentVolumeClaims) Update(persistentVolumeClaim *corev1.PersistentVolumeClaim) (result *corev1.PersistentVolumeClaim, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(persistentvolumeclaimsResource, c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolumeClaim), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakePersistentVolumeClaims) UpdateStatus(persistentVolumeClaim *corev1.PersistentVolumeClaim) (*corev1.PersistentVolumeClaim, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(persistentvolumeclaimsResource, "status", c.ns, persistentVolumeClaim), &corev1.PersistentVolumeClaim{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolumeClaim), err -} - -// Delete takes name of the persistentVolumeClaim and deletes it. Returns an error if one occurs. -func (c *FakePersistentVolumeClaims) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(persistentvolumeclaimsResource, c.ns, name), &corev1.PersistentVolumeClaim{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePersistentVolumeClaims) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(persistentvolumeclaimsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.PersistentVolumeClaimList{}) - return err -} - -// Patch applies the patch and returns the patched persistentVolumeClaim. -func (c *FakePersistentVolumeClaims) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PersistentVolumeClaim, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(persistentvolumeclaimsResource, c.ns, name, pt, data, subresources...), &corev1.PersistentVolumeClaim{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PersistentVolumeClaim), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go deleted file mode 100644 index ebd473ac75..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePods implements PodInterface -type FakePods struct { - Fake *FakeCoreV1 - ns string -} - -var podsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} - -var podsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Pod"} - -// Get takes name of the pod, and returns the corresponding pod object, and an error if there is any. -func (c *FakePods) Get(name string, options v1.GetOptions) (result *corev1.Pod, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(podsResource, c.ns, name), &corev1.Pod{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Pod), err -} - -// List takes label and field selectors, and returns the list of Pods that match those selectors. -func (c *FakePods) List(opts v1.ListOptions) (result *corev1.PodList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(podsResource, podsKind, c.ns, opts), &corev1.PodList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.PodList{ListMeta: obj.(*corev1.PodList).ListMeta} - for _, item := range obj.(*corev1.PodList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested pods. -func (c *FakePods) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(podsResource, c.ns, opts)) - -} - -// Create takes the representation of a pod and creates it. Returns the server's representation of the pod, and an error, if there is any. -func (c *FakePods) Create(pod *corev1.Pod) (result *corev1.Pod, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(podsResource, c.ns, pod), &corev1.Pod{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Pod), err -} - -// Update takes the representation of a pod and updates it. Returns the server's representation of the pod, and an error, if there is any. -func (c *FakePods) Update(pod *corev1.Pod) (result *corev1.Pod, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(podsResource, c.ns, pod), &corev1.Pod{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Pod), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakePods) UpdateStatus(pod *corev1.Pod) (*corev1.Pod, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(podsResource, "status", c.ns, pod), &corev1.Pod{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Pod), err -} - -// Delete takes name of the pod and deletes it. Returns an error if one occurs. -func (c *FakePods) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(podsResource, c.ns, name), &corev1.Pod{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePods) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(podsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.PodList{}) - return err -} - -// Patch applies the patch and returns the patched pod. -func (c *FakePods) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Pod, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(podsResource, c.ns, name, pt, data, subresources...), &corev1.Pod{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Pod), err -} - -// GetEphemeralContainers takes name of the pod, and returns the corresponding ephemeralContainers object, and an error if there is any. -func (c *FakePods) GetEphemeralContainers(podName string, options v1.GetOptions) (result *corev1.EphemeralContainers, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(podsResource, c.ns, "ephemeralcontainers", podName), &corev1.EphemeralContainers{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.EphemeralContainers), err -} - -// UpdateEphemeralContainers takes the representation of a ephemeralContainers and updates it. Returns the server's representation of the ephemeralContainers, and an error, if there is any. -func (c *FakePods) UpdateEphemeralContainers(podName string, ephemeralContainers *corev1.EphemeralContainers) (result *corev1.EphemeralContainers, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(podsResource, "ephemeralcontainers", c.ns, ephemeralContainers), &corev1.EphemeralContainers{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.EphemeralContainers), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go deleted file mode 100644 index b35d8aaa5f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_pod_expansion.go +++ /dev/null @@ -1,70 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - "k8s.io/api/core/v1" - policy "k8s.io/api/policy/v1beta1" - restclient "k8s.io/client-go/rest" - core "k8s.io/client-go/testing" -) - -func (c *FakePods) Bind(binding *v1.Binding) error { - action := core.CreateActionImpl{} - action.Verb = "create" - action.Namespace = binding.Namespace - action.Resource = podsResource - action.Subresource = "binding" - action.Object = binding - - _, err := c.Fake.Invokes(action, binding) - return err -} - -func (c *FakePods) GetBinding(name string) (result *v1.Binding, err error) { - obj, err := c.Fake. - Invokes(core.NewGetSubresourceAction(podsResource, c.ns, "binding", name), &v1.Binding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1.Binding), err -} - -func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request { - action := core.GenericActionImpl{} - action.Verb = "get" - action.Namespace = c.ns - action.Resource = podsResource - action.Subresource = "log" - action.Value = opts - - _, _ = c.Fake.Invokes(action, &v1.Pod{}) - return &restclient.Request{} -} - -func (c *FakePods) Evict(eviction *policy.Eviction) error { - action := core.CreateActionImpl{} - action.Verb = "create" - action.Namespace = c.ns - action.Resource = podsResource - action.Subresource = "eviction" - action.Object = eviction - - _, err := c.Fake.Invokes(action, eviction) - return err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go deleted file mode 100644 index 307f30594e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_podtemplate.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePodTemplates implements PodTemplateInterface -type FakePodTemplates struct { - Fake *FakeCoreV1 - ns string -} - -var podtemplatesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "podtemplates"} - -var podtemplatesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "PodTemplate"} - -// Get takes name of the podTemplate, and returns the corresponding podTemplate object, and an error if there is any. -func (c *FakePodTemplates) Get(name string, options v1.GetOptions) (result *corev1.PodTemplate, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(podtemplatesResource, c.ns, name), &corev1.PodTemplate{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PodTemplate), err -} - -// List takes label and field selectors, and returns the list of PodTemplates that match those selectors. -func (c *FakePodTemplates) List(opts v1.ListOptions) (result *corev1.PodTemplateList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(podtemplatesResource, podtemplatesKind, c.ns, opts), &corev1.PodTemplateList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.PodTemplateList{ListMeta: obj.(*corev1.PodTemplateList).ListMeta} - for _, item := range obj.(*corev1.PodTemplateList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested podTemplates. -func (c *FakePodTemplates) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(podtemplatesResource, c.ns, opts)) - -} - -// Create takes the representation of a podTemplate and creates it. Returns the server's representation of the podTemplate, and an error, if there is any. -func (c *FakePodTemplates) Create(podTemplate *corev1.PodTemplate) (result *corev1.PodTemplate, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(podtemplatesResource, c.ns, podTemplate), &corev1.PodTemplate{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PodTemplate), err -} - -// Update takes the representation of a podTemplate and updates it. Returns the server's representation of the podTemplate, and an error, if there is any. -func (c *FakePodTemplates) Update(podTemplate *corev1.PodTemplate) (result *corev1.PodTemplate, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(podtemplatesResource, c.ns, podTemplate), &corev1.PodTemplate{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PodTemplate), err -} - -// Delete takes name of the podTemplate and deletes it. Returns an error if one occurs. -func (c *FakePodTemplates) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(podtemplatesResource, c.ns, name), &corev1.PodTemplate{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePodTemplates) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(podtemplatesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.PodTemplateList{}) - return err -} - -// Patch applies the patch and returns the patched podTemplate. -func (c *FakePodTemplates) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.PodTemplate, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(podtemplatesResource, c.ns, name, pt, data, subresources...), &corev1.PodTemplate{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.PodTemplate), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go deleted file mode 100644 index 6de94c1482..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go +++ /dev/null @@ -1,163 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - autoscalingv1 "k8s.io/api/autoscaling/v1" - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeReplicationControllers implements ReplicationControllerInterface -type FakeReplicationControllers struct { - Fake *FakeCoreV1 - ns string -} - -var replicationcontrollersResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "replicationcontrollers"} - -var replicationcontrollersKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ReplicationController"} - -// Get takes name of the replicationController, and returns the corresponding replicationController object, and an error if there is any. -func (c *FakeReplicationControllers) Get(name string, options v1.GetOptions) (result *corev1.ReplicationController, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(replicationcontrollersResource, c.ns, name), &corev1.ReplicationController{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ReplicationController), err -} - -// List takes label and field selectors, and returns the list of ReplicationControllers that match those selectors. -func (c *FakeReplicationControllers) List(opts v1.ListOptions) (result *corev1.ReplicationControllerList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(replicationcontrollersResource, replicationcontrollersKind, c.ns, opts), &corev1.ReplicationControllerList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ReplicationControllerList{ListMeta: obj.(*corev1.ReplicationControllerList).ListMeta} - for _, item := range obj.(*corev1.ReplicationControllerList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested replicationControllers. -func (c *FakeReplicationControllers) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(replicationcontrollersResource, c.ns, opts)) - -} - -// Create takes the representation of a replicationController and creates it. Returns the server's representation of the replicationController, and an error, if there is any. -func (c *FakeReplicationControllers) Create(replicationController *corev1.ReplicationController) (result *corev1.ReplicationController, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicationcontrollersResource, c.ns, replicationController), &corev1.ReplicationController{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ReplicationController), err -} - -// Update takes the representation of a replicationController and updates it. Returns the server's representation of the replicationController, and an error, if there is any. -func (c *FakeReplicationControllers) Update(replicationController *corev1.ReplicationController) (result *corev1.ReplicationController, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicationcontrollersResource, c.ns, replicationController), &corev1.ReplicationController{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ReplicationController), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeReplicationControllers) UpdateStatus(replicationController *corev1.ReplicationController) (*corev1.ReplicationController, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "status", c.ns, replicationController), &corev1.ReplicationController{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ReplicationController), err -} - -// Delete takes name of the replicationController and deletes it. Returns an error if one occurs. -func (c *FakeReplicationControllers) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicationcontrollersResource, c.ns, name), &corev1.ReplicationController{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeReplicationControllers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(replicationcontrollersResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.ReplicationControllerList{}) - return err -} - -// Patch applies the patch and returns the patched replicationController. -func (c *FakeReplicationControllers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ReplicationController, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicationcontrollersResource, c.ns, name, pt, data, subresources...), &corev1.ReplicationController{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ReplicationController), err -} - -// GetScale takes name of the replicationController, and returns the corresponding scale object, and an error if there is any. -func (c *FakeReplicationControllers) GetScale(replicationControllerName string, options v1.GetOptions) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(replicationcontrollersResource, c.ns, "scale", replicationControllerName), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeReplicationControllers) UpdateScale(replicationControllerName string, scale *autoscalingv1.Scale) (result *autoscalingv1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicationcontrollersResource, "scale", c.ns, scale), &autoscalingv1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*autoscalingv1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go deleted file mode 100644 index b521f7120b..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_resourcequota.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeResourceQuotas implements ResourceQuotaInterface -type FakeResourceQuotas struct { - Fake *FakeCoreV1 - ns string -} - -var resourcequotasResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "resourcequotas"} - -var resourcequotasKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ResourceQuota"} - -// Get takes name of the resourceQuota, and returns the corresponding resourceQuota object, and an error if there is any. -func (c *FakeResourceQuotas) Get(name string, options v1.GetOptions) (result *corev1.ResourceQuota, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(resourcequotasResource, c.ns, name), &corev1.ResourceQuota{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ResourceQuota), err -} - -// List takes label and field selectors, and returns the list of ResourceQuotas that match those selectors. -func (c *FakeResourceQuotas) List(opts v1.ListOptions) (result *corev1.ResourceQuotaList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(resourcequotasResource, resourcequotasKind, c.ns, opts), &corev1.ResourceQuotaList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ResourceQuotaList{ListMeta: obj.(*corev1.ResourceQuotaList).ListMeta} - for _, item := range obj.(*corev1.ResourceQuotaList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested resourceQuotas. -func (c *FakeResourceQuotas) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(resourcequotasResource, c.ns, opts)) - -} - -// Create takes the representation of a resourceQuota and creates it. Returns the server's representation of the resourceQuota, and an error, if there is any. -func (c *FakeResourceQuotas) Create(resourceQuota *corev1.ResourceQuota) (result *corev1.ResourceQuota, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(resourcequotasResource, c.ns, resourceQuota), &corev1.ResourceQuota{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ResourceQuota), err -} - -// Update takes the representation of a resourceQuota and updates it. Returns the server's representation of the resourceQuota, and an error, if there is any. -func (c *FakeResourceQuotas) Update(resourceQuota *corev1.ResourceQuota) (result *corev1.ResourceQuota, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(resourcequotasResource, c.ns, resourceQuota), &corev1.ResourceQuota{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ResourceQuota), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeResourceQuotas) UpdateStatus(resourceQuota *corev1.ResourceQuota) (*corev1.ResourceQuota, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(resourcequotasResource, "status", c.ns, resourceQuota), &corev1.ResourceQuota{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ResourceQuota), err -} - -// Delete takes name of the resourceQuota and deletes it. Returns an error if one occurs. -func (c *FakeResourceQuotas) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(resourcequotasResource, c.ns, name), &corev1.ResourceQuota{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeResourceQuotas) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(resourcequotasResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.ResourceQuotaList{}) - return err -} - -// Patch applies the patch and returns the patched resourceQuota. -func (c *FakeResourceQuotas) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ResourceQuota, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(resourcequotasResource, c.ns, name, pt, data, subresources...), &corev1.ResourceQuota{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ResourceQuota), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go deleted file mode 100644 index 47dba9eff4..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_secret.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeSecrets implements SecretInterface -type FakeSecrets struct { - Fake *FakeCoreV1 - ns string -} - -var secretsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"} - -var secretsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"} - -// Get takes name of the secret, and returns the corresponding secret object, and an error if there is any. -func (c *FakeSecrets) Get(name string, options v1.GetOptions) (result *corev1.Secret, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(secretsResource, c.ns, name), &corev1.Secret{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Secret), err -} - -// List takes label and field selectors, and returns the list of Secrets that match those selectors. -func (c *FakeSecrets) List(opts v1.ListOptions) (result *corev1.SecretList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(secretsResource, secretsKind, c.ns, opts), &corev1.SecretList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.SecretList{ListMeta: obj.(*corev1.SecretList).ListMeta} - for _, item := range obj.(*corev1.SecretList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested secrets. -func (c *FakeSecrets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(secretsResource, c.ns, opts)) - -} - -// Create takes the representation of a secret and creates it. Returns the server's representation of the secret, and an error, if there is any. -func (c *FakeSecrets) Create(secret *corev1.Secret) (result *corev1.Secret, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(secretsResource, c.ns, secret), &corev1.Secret{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Secret), err -} - -// Update takes the representation of a secret and updates it. Returns the server's representation of the secret, and an error, if there is any. -func (c *FakeSecrets) Update(secret *corev1.Secret) (result *corev1.Secret, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(secretsResource, c.ns, secret), &corev1.Secret{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Secret), err -} - -// Delete takes name of the secret and deletes it. Returns an error if one occurs. -func (c *FakeSecrets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(secretsResource, c.ns, name), &corev1.Secret{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeSecrets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(secretsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.SecretList{}) - return err -} - -// Patch applies the patch and returns the patched secret. -func (c *FakeSecrets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Secret, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(secretsResource, c.ns, name, pt, data, subresources...), &corev1.Secret{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Secret), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go deleted file mode 100644 index a65de49911..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service.go +++ /dev/null @@ -1,132 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeServices implements ServiceInterface -type FakeServices struct { - Fake *FakeCoreV1 - ns string -} - -var servicesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"} - -var servicesKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Service"} - -// Get takes name of the service, and returns the corresponding service object, and an error if there is any. -func (c *FakeServices) Get(name string, options v1.GetOptions) (result *corev1.Service, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(servicesResource, c.ns, name), &corev1.Service{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Service), err -} - -// List takes label and field selectors, and returns the list of Services that match those selectors. -func (c *FakeServices) List(opts v1.ListOptions) (result *corev1.ServiceList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(servicesResource, servicesKind, c.ns, opts), &corev1.ServiceList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ServiceList{ListMeta: obj.(*corev1.ServiceList).ListMeta} - for _, item := range obj.(*corev1.ServiceList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested services. -func (c *FakeServices) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(servicesResource, c.ns, opts)) - -} - -// Create takes the representation of a service and creates it. Returns the server's representation of the service, and an error, if there is any. -func (c *FakeServices) Create(service *corev1.Service) (result *corev1.Service, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(servicesResource, c.ns, service), &corev1.Service{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Service), err -} - -// Update takes the representation of a service and updates it. Returns the server's representation of the service, and an error, if there is any. -func (c *FakeServices) Update(service *corev1.Service) (result *corev1.Service, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(servicesResource, c.ns, service), &corev1.Service{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Service), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeServices) UpdateStatus(service *corev1.Service) (*corev1.Service, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(servicesResource, "status", c.ns, service), &corev1.Service{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Service), err -} - -// Delete takes name of the service and deletes it. Returns an error if one occurs. -func (c *FakeServices) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(servicesResource, c.ns, name), &corev1.Service{}) - - return err -} - -// Patch applies the patch and returns the patched service. -func (c *FakeServices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.Service, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(servicesResource, c.ns, name, pt, data, subresources...), &corev1.Service{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.Service), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go deleted file mode 100644 index 92e4930d71..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_service_expansion.go +++ /dev/null @@ -1,26 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - restclient "k8s.io/client-go/rest" - core "k8s.io/client-go/testing" -) - -func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper { - return c.Fake.InvokesProxy(core.NewProxyGetAction(servicesResource, c.ns, scheme, name, port, path, params)) -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go deleted file mode 100644 index 5b6d8f8be5..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeServiceAccounts implements ServiceAccountInterface -type FakeServiceAccounts struct { - Fake *FakeCoreV1 - ns string -} - -var serviceaccountsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"} - -var serviceaccountsKind = schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"} - -// Get takes name of the serviceAccount, and returns the corresponding serviceAccount object, and an error if there is any. -func (c *FakeServiceAccounts) Get(name string, options v1.GetOptions) (result *corev1.ServiceAccount, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(serviceaccountsResource, c.ns, name), &corev1.ServiceAccount{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ServiceAccount), err -} - -// List takes label and field selectors, and returns the list of ServiceAccounts that match those selectors. -func (c *FakeServiceAccounts) List(opts v1.ListOptions) (result *corev1.ServiceAccountList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(serviceaccountsResource, serviceaccountsKind, c.ns, opts), &corev1.ServiceAccountList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &corev1.ServiceAccountList{ListMeta: obj.(*corev1.ServiceAccountList).ListMeta} - for _, item := range obj.(*corev1.ServiceAccountList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested serviceAccounts. -func (c *FakeServiceAccounts) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(serviceaccountsResource, c.ns, opts)) - -} - -// Create takes the representation of a serviceAccount and creates it. Returns the server's representation of the serviceAccount, and an error, if there is any. -func (c *FakeServiceAccounts) Create(serviceAccount *corev1.ServiceAccount) (result *corev1.ServiceAccount, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(serviceaccountsResource, c.ns, serviceAccount), &corev1.ServiceAccount{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ServiceAccount), err -} - -// Update takes the representation of a serviceAccount and updates it. Returns the server's representation of the serviceAccount, and an error, if there is any. -func (c *FakeServiceAccounts) Update(serviceAccount *corev1.ServiceAccount) (result *corev1.ServiceAccount, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(serviceaccountsResource, c.ns, serviceAccount), &corev1.ServiceAccount{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ServiceAccount), err -} - -// Delete takes name of the serviceAccount and deletes it. Returns an error if one occurs. -func (c *FakeServiceAccounts) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(serviceaccountsResource, c.ns, name), &corev1.ServiceAccount{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeServiceAccounts) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(serviceaccountsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &corev1.ServiceAccountList{}) - return err -} - -// Patch applies the patch and returns the patched serviceAccount. -func (c *FakeServiceAccounts) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *corev1.ServiceAccount, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(serviceaccountsResource, c.ns, name, pt, data, subresources...), &corev1.ServiceAccount{}) - - if obj == nil { - return nil, err - } - return obj.(*corev1.ServiceAccount), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount_expansion.go deleted file mode 100644 index a0efbcc2fe..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_serviceaccount_expansion.go +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - authenticationv1 "k8s.io/api/authentication/v1" - core "k8s.io/client-go/testing" -) - -func (c *FakeServiceAccounts) CreateToken(name string, tr *authenticationv1.TokenRequest) (*authenticationv1.TokenRequest, error) { - obj, err := c.Fake.Invokes(core.NewCreateSubresourceAction(serviceaccountsResource, name, "token", c.ns, tr), &authenticationv1.TokenRequest{}) - - if obj == nil { - return nil, err - } - return obj.(*authenticationv1.TokenRequest), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_discovery_client.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_discovery_client.go deleted file mode 100644 index 532a10756d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_discovery_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/discovery/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeDiscoveryV1alpha1 struct { - *testing.Fake -} - -func (c *FakeDiscoveryV1alpha1) EndpointSlices(namespace string) v1alpha1.EndpointSliceInterface { - return &FakeEndpointSlices{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeDiscoveryV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_endpointslice.go b/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_endpointslice.go deleted file mode 100644 index 9d17306a46..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake/fake_endpointslice.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/discovery/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeEndpointSlices implements EndpointSliceInterface -type FakeEndpointSlices struct { - Fake *FakeDiscoveryV1alpha1 - ns string -} - -var endpointslicesResource = schema.GroupVersionResource{Group: "discovery.k8s.io", Version: "v1alpha1", Resource: "endpointslices"} - -var endpointslicesKind = schema.GroupVersionKind{Group: "discovery.k8s.io", Version: "v1alpha1", Kind: "EndpointSlice"} - -// Get takes name of the endpointSlice, and returns the corresponding endpointSlice object, and an error if there is any. -func (c *FakeEndpointSlices) Get(name string, options v1.GetOptions) (result *v1alpha1.EndpointSlice, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(endpointslicesResource, c.ns, name), &v1alpha1.EndpointSlice{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.EndpointSlice), err -} - -// List takes label and field selectors, and returns the list of EndpointSlices that match those selectors. -func (c *FakeEndpointSlices) List(opts v1.ListOptions) (result *v1alpha1.EndpointSliceList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(endpointslicesResource, endpointslicesKind, c.ns, opts), &v1alpha1.EndpointSliceList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.EndpointSliceList{ListMeta: obj.(*v1alpha1.EndpointSliceList).ListMeta} - for _, item := range obj.(*v1alpha1.EndpointSliceList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested endpointSlices. -func (c *FakeEndpointSlices) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(endpointslicesResource, c.ns, opts)) - -} - -// Create takes the representation of a endpointSlice and creates it. Returns the server's representation of the endpointSlice, and an error, if there is any. -func (c *FakeEndpointSlices) Create(endpointSlice *v1alpha1.EndpointSlice) (result *v1alpha1.EndpointSlice, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(endpointslicesResource, c.ns, endpointSlice), &v1alpha1.EndpointSlice{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.EndpointSlice), err -} - -// Update takes the representation of a endpointSlice and updates it. Returns the server's representation of the endpointSlice, and an error, if there is any. -func (c *FakeEndpointSlices) Update(endpointSlice *v1alpha1.EndpointSlice) (result *v1alpha1.EndpointSlice, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(endpointslicesResource, c.ns, endpointSlice), &v1alpha1.EndpointSlice{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.EndpointSlice), err -} - -// Delete takes name of the endpointSlice and deletes it. Returns an error if one occurs. -func (c *FakeEndpointSlices) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(endpointslicesResource, c.ns, name), &v1alpha1.EndpointSlice{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeEndpointSlices) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(endpointslicesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.EndpointSliceList{}) - return err -} - -// Patch applies the patch and returns the patched endpointSlice. -func (c *FakeEndpointSlices) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.EndpointSlice, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(endpointslicesResource, c.ns, name, pt, data, subresources...), &v1alpha1.EndpointSlice{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.EndpointSlice), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go deleted file mode 100644 index ef76ec1318..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/events/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeEvents implements EventInterface -type FakeEvents struct { - Fake *FakeEventsV1beta1 - ns string -} - -var eventsResource = schema.GroupVersionResource{Group: "events.k8s.io", Version: "v1beta1", Resource: "events"} - -var eventsKind = schema.GroupVersionKind{Group: "events.k8s.io", Version: "v1beta1", Kind: "Event"} - -// Get takes name of the event, and returns the corresponding event object, and an error if there is any. -func (c *FakeEvents) Get(name string, options v1.GetOptions) (result *v1beta1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(eventsResource, c.ns, name), &v1beta1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Event), err -} - -// List takes label and field selectors, and returns the list of Events that match those selectors. -func (c *FakeEvents) List(opts v1.ListOptions) (result *v1beta1.EventList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(eventsResource, eventsKind, c.ns, opts), &v1beta1.EventList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.EventList{ListMeta: obj.(*v1beta1.EventList).ListMeta} - for _, item := range obj.(*v1beta1.EventList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested events. -func (c *FakeEvents) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(eventsResource, c.ns, opts)) - -} - -// Create takes the representation of a event and creates it. Returns the server's representation of the event, and an error, if there is any. -func (c *FakeEvents) Create(event *v1beta1.Event) (result *v1beta1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(eventsResource, c.ns, event), &v1beta1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Event), err -} - -// Update takes the representation of a event and updates it. Returns the server's representation of the event, and an error, if there is any. -func (c *FakeEvents) Update(event *v1beta1.Event) (result *v1beta1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(eventsResource, c.ns, event), &v1beta1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Event), err -} - -// Delete takes name of the event and deletes it. Returns an error if one occurs. -func (c *FakeEvents) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(eventsResource, c.ns, name), &v1beta1.Event{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeEvents) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(eventsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.EventList{}) - return err -} - -// Patch applies the patch and returns the patched event. -func (c *FakeEvents) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Event, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(eventsResource, c.ns, name, pt, data, subresources...), &v1beta1.Event{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Event), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go deleted file mode 100644 index 19c1b44155..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_event_expansion.go +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2019 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - v1beta1 "k8s.io/api/events/v1beta1" - types "k8s.io/apimachinery/pkg/types" - core "k8s.io/client-go/testing" -) - -// CreateWithEventNamespace creats a new event. Returns the copy of the event the server returns, or an error. -func (c *FakeEvents) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) { - action := core.NewRootCreateAction(eventsResource, event) - if c.ns != "" { - action = core.NewCreateAction(eventsResource, c.ns, event) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1beta1.Event), err -} - -// UpdateWithEventNamespace replaces an existing event. Returns the copy of the event the server returns, or an error. -func (c *FakeEvents) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) { - action := core.NewRootUpdateAction(eventsResource, event) - if c.ns != "" { - action = core.NewUpdateAction(eventsResource, c.ns, event) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1beta1.Event), err -} - -// PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error. -func (c *FakeEvents) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) { - pt := types.StrategicMergePatchType - action := core.NewRootPatchAction(eventsResource, event.Name, pt, data) - if c.ns != "" { - action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data) - } - obj, err := c.Fake.Invokes(action, event) - if obj == nil { - return nil, err - } - - return obj.(*v1beta1.Event), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go b/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go deleted file mode 100644 index 875c774e38..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake/fake_events_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeEventsV1beta1 struct { - *testing.Fake -} - -func (c *FakeEventsV1beta1) Events(namespace string) v1beta1.EventInterface { - return &FakeEvents{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeEventsV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go deleted file mode 100644 index 4c98660607..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDaemonSets implements DaemonSetInterface -type FakeDaemonSets struct { - Fake *FakeExtensionsV1beta1 - ns string -} - -var daemonsetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "daemonsets"} - -var daemonsetsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "DaemonSet"} - -// Get takes name of the daemonSet, and returns the corresponding daemonSet object, and an error if there is any. -func (c *FakeDaemonSets) Get(name string, options v1.GetOptions) (result *v1beta1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(daemonsetsResource, c.ns, name), &v1beta1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.DaemonSet), err -} - -// List takes label and field selectors, and returns the list of DaemonSets that match those selectors. -func (c *FakeDaemonSets) List(opts v1.ListOptions) (result *v1beta1.DaemonSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(daemonsetsResource, daemonsetsKind, c.ns, opts), &v1beta1.DaemonSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.DaemonSetList{ListMeta: obj.(*v1beta1.DaemonSetList).ListMeta} - for _, item := range obj.(*v1beta1.DaemonSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested daemonSets. -func (c *FakeDaemonSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(daemonsetsResource, c.ns, opts)) - -} - -// Create takes the representation of a daemonSet and creates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Create(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.DaemonSet), err -} - -// Update takes the representation of a daemonSet and updates it. Returns the server's representation of the daemonSet, and an error, if there is any. -func (c *FakeDaemonSets) Update(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(daemonsetsResource, c.ns, daemonSet), &v1beta1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.DaemonSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDaemonSets) UpdateStatus(daemonSet *v1beta1.DaemonSet) (*v1beta1.DaemonSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(daemonsetsResource, "status", c.ns, daemonSet), &v1beta1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.DaemonSet), err -} - -// Delete takes name of the daemonSet and deletes it. Returns an error if one occurs. -func (c *FakeDaemonSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(daemonsetsResource, c.ns, name), &v1beta1.DaemonSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDaemonSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(daemonsetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.DaemonSetList{}) - return err -} - -// Patch applies the patch and returns the patched daemonSet. -func (c *FakeDaemonSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.DaemonSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(daemonsetsResource, c.ns, name, pt, data, subresources...), &v1beta1.DaemonSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.DaemonSet), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go deleted file mode 100644 index 7b7df45cc3..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeDeployments implements DeploymentInterface -type FakeDeployments struct { - Fake *FakeExtensionsV1beta1 - ns string -} - -var deploymentsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"} - -var deploymentsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Deployment"} - -// Get takes name of the deployment, and returns the corresponding deployment object, and an error if there is any. -func (c *FakeDeployments) Get(name string, options v1.GetOptions) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// List takes label and field selectors, and returns the list of Deployments that match those selectors. -func (c *FakeDeployments) List(opts v1.ListOptions) (result *v1beta1.DeploymentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(deploymentsResource, deploymentsKind, c.ns, opts), &v1beta1.DeploymentList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.DeploymentList{ListMeta: obj.(*v1beta1.DeploymentList).ListMeta} - for _, item := range obj.(*v1beta1.DeploymentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested deployments. -func (c *FakeDeployments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(deploymentsResource, c.ns, opts)) - -} - -// Create takes the representation of a deployment and creates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// Update takes the representation of a deployment and updates it. Returns the server's representation of the deployment, and an error, if there is any. -func (c *FakeDeployments) Update(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(deploymentsResource, c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeDeployments) UpdateStatus(deployment *v1beta1.Deployment) (*v1beta1.Deployment, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "status", c.ns, deployment), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// Delete takes name of the deployment and deletes it. Returns an error if one occurs. -func (c *FakeDeployments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(deploymentsResource, c.ns, name), &v1beta1.Deployment{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeDeployments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(deploymentsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.DeploymentList{}) - return err -} - -// Patch applies the patch and returns the patched deployment. -func (c *FakeDeployments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Deployment, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(deploymentsResource, c.ns, name, pt, data, subresources...), &v1beta1.Deployment{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Deployment), err -} - -// GetScale takes name of the deployment, and returns the corresponding scale object, and an error if there is any. -func (c *FakeDeployments) GetScale(deploymentName string, options v1.GetOptions) (result *v1beta1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(deploymentsResource, c.ns, "scale", deploymentName), &v1beta1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeDeployments) UpdateScale(deploymentName string, scale *v1beta1.Scale) (result *v1beta1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(deploymentsResource, "scale", c.ns, scale), &v1beta1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go deleted file mode 100644 index af2bc0f713..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_deployment_expansion.go +++ /dev/null @@ -1,33 +0,0 @@ -/* -Copyright 2014 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - "k8s.io/api/extensions/v1beta1" - core "k8s.io/client-go/testing" -) - -func (c *FakeDeployments) Rollback(deploymentRollback *v1beta1.DeploymentRollback) error { - action := core.CreateActionImpl{} - action.Verb = "create" - action.Resource = deploymentsResource - action.Subresource = "rollback" - action.Object = deploymentRollback - - _, err := c.Fake.Invokes(action, deploymentRollback) - return err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go deleted file mode 100644 index 36c0d51bc3..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_extensions_client.go +++ /dev/null @@ -1,60 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeExtensionsV1beta1 struct { - *testing.Fake -} - -func (c *FakeExtensionsV1beta1) DaemonSets(namespace string) v1beta1.DaemonSetInterface { - return &FakeDaemonSets{c, namespace} -} - -func (c *FakeExtensionsV1beta1) Deployments(namespace string) v1beta1.DeploymentInterface { - return &FakeDeployments{c, namespace} -} - -func (c *FakeExtensionsV1beta1) Ingresses(namespace string) v1beta1.IngressInterface { - return &FakeIngresses{c, namespace} -} - -func (c *FakeExtensionsV1beta1) NetworkPolicies(namespace string) v1beta1.NetworkPolicyInterface { - return &FakeNetworkPolicies{c, namespace} -} - -func (c *FakeExtensionsV1beta1) PodSecurityPolicies() v1beta1.PodSecurityPolicyInterface { - return &FakePodSecurityPolicies{c} -} - -func (c *FakeExtensionsV1beta1) ReplicaSets(namespace string) v1beta1.ReplicaSetInterface { - return &FakeReplicaSets{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeExtensionsV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go deleted file mode 100644 index 01c2521401..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeIngresses implements IngressInterface -type FakeIngresses struct { - Fake *FakeExtensionsV1beta1 - ns string -} - -var ingressesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "ingresses"} - -var ingressesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "Ingress"} - -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any. -func (c *FakeIngresses) Get(name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// List takes label and field selectors, and returns the list of Ingresses that match those selectors. -func (c *FakeIngresses) List(opts v1.ListOptions) (result *v1beta1.IngressList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1beta1.IngressList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.IngressList{ListMeta: obj.(*v1beta1.IngressList).ListMeta} - for _, item := range obj.(*v1beta1.IngressList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested ingresses. -func (c *FakeIngresses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts)) - -} - -// Create takes the representation of a ingress and creates it. Returns the server's representation of the ingress, and an error, if there is any. -func (c *FakeIngresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any. -func (c *FakeIngresses) Update(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeIngresses) UpdateStatus(ingress *v1beta1.Ingress) (*v1beta1.Ingress, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// Delete takes name of the ingress and deletes it. Returns an error if one occurs. -func (c *FakeIngresses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeIngresses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.IngressList{}) - return err -} - -// Patch applies the patch and returns the patched ingress. -func (c *FakeIngresses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, pt, data, subresources...), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go deleted file mode 100644 index 7f4d4a5554..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_networkpolicy.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeNetworkPolicies implements NetworkPolicyInterface -type FakeNetworkPolicies struct { - Fake *FakeExtensionsV1beta1 - ns string -} - -var networkpoliciesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "networkpolicies"} - -var networkpoliciesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "NetworkPolicy"} - -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any. -func (c *FakeNetworkPolicies) Get(name string, options v1.GetOptions) (result *v1beta1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &v1beta1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.NetworkPolicy), err -} - -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors. -func (c *FakeNetworkPolicies) List(opts v1.ListOptions) (result *v1beta1.NetworkPolicyList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &v1beta1.NetworkPolicyList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.NetworkPolicyList{ListMeta: obj.(*v1beta1.NetworkPolicyList).ListMeta} - for _, item := range obj.(*v1beta1.NetworkPolicyList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested networkPolicies. -func (c *FakeNetworkPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(networkpoliciesResource, c.ns, opts)) - -} - -// Create takes the representation of a networkPolicy and creates it. Returns the server's representation of the networkPolicy, and an error, if there is any. -func (c *FakeNetworkPolicies) Create(networkPolicy *v1beta1.NetworkPolicy) (result *v1beta1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &v1beta1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.NetworkPolicy), err -} - -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any. -func (c *FakeNetworkPolicies) Update(networkPolicy *v1beta1.NetworkPolicy) (result *v1beta1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &v1beta1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.NetworkPolicy), err -} - -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs. -func (c *FakeNetworkPolicies) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(networkpoliciesResource, c.ns, name), &v1beta1.NetworkPolicy{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeNetworkPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.NetworkPolicyList{}) - return err -} - -// Patch applies the patch and returns the patched networkPolicy. -func (c *FakeNetworkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, pt, data, subresources...), &v1beta1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.NetworkPolicy), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go deleted file mode 100644 index b97a34416e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePodSecurityPolicies implements PodSecurityPolicyInterface -type FakePodSecurityPolicies struct { - Fake *FakeExtensionsV1beta1 -} - -var podsecuritypoliciesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "podsecuritypolicies"} - -var podsecuritypoliciesKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "PodSecurityPolicy"} - -// Get takes name of the podSecurityPolicy, and returns the corresponding podSecurityPolicy object, and an error if there is any. -func (c *FakePodSecurityPolicies) Get(name string, options v1.GetOptions) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// List takes label and field selectors, and returns the list of PodSecurityPolicies that match those selectors. -func (c *FakePodSecurityPolicies) List(opts v1.ListOptions) (result *v1beta1.PodSecurityPolicyList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(podsecuritypoliciesResource, podsecuritypoliciesKind, opts), &v1beta1.PodSecurityPolicyList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.PodSecurityPolicyList{ListMeta: obj.(*v1beta1.PodSecurityPolicyList).ListMeta} - for _, item := range obj.(*v1beta1.PodSecurityPolicyList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested podSecurityPolicies. -func (c *FakePodSecurityPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(podsecuritypoliciesResource, opts)) -} - -// Create takes the representation of a podSecurityPolicy and creates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. -func (c *FakePodSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// Update takes the representation of a podSecurityPolicy and updates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. -func (c *FakePodSecurityPolicies) Update(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// Delete takes name of the podSecurityPolicy and deletes it. Returns an error if one occurs. -func (c *FakePodSecurityPolicies) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePodSecurityPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(podsecuritypoliciesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.PodSecurityPolicyList{}) - return err -} - -// Patch applies the patch and returns the patched podSecurityPolicy. -func (c *FakePodSecurityPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(podsecuritypoliciesResource, name, pt, data, subresources...), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go b/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go deleted file mode 100644 index 7ed16af904..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go +++ /dev/null @@ -1,162 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/extensions/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeReplicaSets implements ReplicaSetInterface -type FakeReplicaSets struct { - Fake *FakeExtensionsV1beta1 - ns string -} - -var replicasetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "replicasets"} - -var replicasetsKind = schema.GroupVersionKind{Group: "extensions", Version: "v1beta1", Kind: "ReplicaSet"} - -// Get takes name of the replicaSet, and returns the corresponding replicaSet object, and an error if there is any. -func (c *FakeReplicaSets) Get(name string, options v1.GetOptions) (result *v1beta1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(replicasetsResource, c.ns, name), &v1beta1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ReplicaSet), err -} - -// List takes label and field selectors, and returns the list of ReplicaSets that match those selectors. -func (c *FakeReplicaSets) List(opts v1.ListOptions) (result *v1beta1.ReplicaSetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(replicasetsResource, replicasetsKind, c.ns, opts), &v1beta1.ReplicaSetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.ReplicaSetList{ListMeta: obj.(*v1beta1.ReplicaSetList).ListMeta} - for _, item := range obj.(*v1beta1.ReplicaSetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested replicaSets. -func (c *FakeReplicaSets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(replicasetsResource, c.ns, opts)) - -} - -// Create takes the representation of a replicaSet and creates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Create(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ReplicaSet), err -} - -// Update takes the representation of a replicaSet and updates it. Returns the server's representation of the replicaSet, and an error, if there is any. -func (c *FakeReplicaSets) Update(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(replicasetsResource, c.ns, replicaSet), &v1beta1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ReplicaSet), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeReplicaSets) UpdateStatus(replicaSet *v1beta1.ReplicaSet) (*v1beta1.ReplicaSet, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "status", c.ns, replicaSet), &v1beta1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ReplicaSet), err -} - -// Delete takes name of the replicaSet and deletes it. Returns an error if one occurs. -func (c *FakeReplicaSets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(replicasetsResource, c.ns, name), &v1beta1.ReplicaSet{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeReplicaSets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(replicasetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.ReplicaSetList{}) - return err -} - -// Patch applies the patch and returns the patched replicaSet. -func (c *FakeReplicaSets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ReplicaSet, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(replicasetsResource, c.ns, name, pt, data, subresources...), &v1beta1.ReplicaSet{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ReplicaSet), err -} - -// GetScale takes name of the replicaSet, and returns the corresponding scale object, and an error if there is any. -func (c *FakeReplicaSets) GetScale(replicaSetName string, options v1.GetOptions) (result *v1beta1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetSubresourceAction(replicasetsResource, c.ns, "scale", replicaSetName), &v1beta1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Scale), err -} - -// UpdateScale takes the representation of a scale and updates it. Returns the server's representation of the scale, and an error, if there is any. -func (c *FakeReplicaSets) UpdateScale(replicaSetName string, scale *v1beta1.Scale) (result *v1beta1.Scale, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(replicasetsResource, "scale", c.ns, scale), &v1beta1.Scale{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Scale), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go deleted file mode 100644 index 6b135c6369..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networking_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/networking/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeNetworkingV1 struct { - *testing.Fake -} - -func (c *FakeNetworkingV1) NetworkPolicies(namespace string) v1.NetworkPolicyInterface { - return &FakeNetworkPolicies{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeNetworkingV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go deleted file mode 100644 index 58667c481a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1/fake/fake_networkpolicy.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - networkingv1 "k8s.io/api/networking/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeNetworkPolicies implements NetworkPolicyInterface -type FakeNetworkPolicies struct { - Fake *FakeNetworkingV1 - ns string -} - -var networkpoliciesResource = schema.GroupVersionResource{Group: "networking.k8s.io", Version: "v1", Resource: "networkpolicies"} - -var networkpoliciesKind = schema.GroupVersionKind{Group: "networking.k8s.io", Version: "v1", Kind: "NetworkPolicy"} - -// Get takes name of the networkPolicy, and returns the corresponding networkPolicy object, and an error if there is any. -func (c *FakeNetworkPolicies) Get(name string, options v1.GetOptions) (result *networkingv1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(networkpoliciesResource, c.ns, name), &networkingv1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*networkingv1.NetworkPolicy), err -} - -// List takes label and field selectors, and returns the list of NetworkPolicies that match those selectors. -func (c *FakeNetworkPolicies) List(opts v1.ListOptions) (result *networkingv1.NetworkPolicyList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(networkpoliciesResource, networkpoliciesKind, c.ns, opts), &networkingv1.NetworkPolicyList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &networkingv1.NetworkPolicyList{ListMeta: obj.(*networkingv1.NetworkPolicyList).ListMeta} - for _, item := range obj.(*networkingv1.NetworkPolicyList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested networkPolicies. -func (c *FakeNetworkPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(networkpoliciesResource, c.ns, opts)) - -} - -// Create takes the representation of a networkPolicy and creates it. Returns the server's representation of the networkPolicy, and an error, if there is any. -func (c *FakeNetworkPolicies) Create(networkPolicy *networkingv1.NetworkPolicy) (result *networkingv1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(networkpoliciesResource, c.ns, networkPolicy), &networkingv1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*networkingv1.NetworkPolicy), err -} - -// Update takes the representation of a networkPolicy and updates it. Returns the server's representation of the networkPolicy, and an error, if there is any. -func (c *FakeNetworkPolicies) Update(networkPolicy *networkingv1.NetworkPolicy) (result *networkingv1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(networkpoliciesResource, c.ns, networkPolicy), &networkingv1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*networkingv1.NetworkPolicy), err -} - -// Delete takes name of the networkPolicy and deletes it. Returns an error if one occurs. -func (c *FakeNetworkPolicies) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(networkpoliciesResource, c.ns, name), &networkingv1.NetworkPolicy{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeNetworkPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(networkpoliciesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &networkingv1.NetworkPolicyList{}) - return err -} - -// Patch applies the patch and returns the patched networkPolicy. -func (c *FakeNetworkPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *networkingv1.NetworkPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(networkpoliciesResource, c.ns, name, pt, data, subresources...), &networkingv1.NetworkPolicy{}) - - if obj == nil { - return nil, err - } - return obj.(*networkingv1.NetworkPolicy), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go deleted file mode 100644 index ee7821778e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_ingress.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/networking/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeIngresses implements IngressInterface -type FakeIngresses struct { - Fake *FakeNetworkingV1beta1 - ns string -} - -var ingressesResource = schema.GroupVersionResource{Group: "networking.k8s.io", Version: "v1beta1", Resource: "ingresses"} - -var ingressesKind = schema.GroupVersionKind{Group: "networking.k8s.io", Version: "v1beta1", Kind: "Ingress"} - -// Get takes name of the ingress, and returns the corresponding ingress object, and an error if there is any. -func (c *FakeIngresses) Get(name string, options v1.GetOptions) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// List takes label and field selectors, and returns the list of Ingresses that match those selectors. -func (c *FakeIngresses) List(opts v1.ListOptions) (result *v1beta1.IngressList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(ingressesResource, ingressesKind, c.ns, opts), &v1beta1.IngressList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.IngressList{ListMeta: obj.(*v1beta1.IngressList).ListMeta} - for _, item := range obj.(*v1beta1.IngressList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested ingresses. -func (c *FakeIngresses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(ingressesResource, c.ns, opts)) - -} - -// Create takes the representation of a ingress and creates it. Returns the server's representation of the ingress, and an error, if there is any. -func (c *FakeIngresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// Update takes the representation of a ingress and updates it. Returns the server's representation of the ingress, and an error, if there is any. -func (c *FakeIngresses) Update(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(ingressesResource, c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeIngresses) UpdateStatus(ingress *v1beta1.Ingress) (*v1beta1.Ingress, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(ingressesResource, "status", c.ns, ingress), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} - -// Delete takes name of the ingress and deletes it. Returns an error if one occurs. -func (c *FakeIngresses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(ingressesResource, c.ns, name), &v1beta1.Ingress{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeIngresses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(ingressesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.IngressList{}) - return err -} - -// Patch applies the patch and returns the patched ingress. -func (c *FakeIngresses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Ingress, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(ingressesResource, c.ns, name, pt, data, subresources...), &v1beta1.Ingress{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Ingress), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go b/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go deleted file mode 100644 index bfe6fee684..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake/fake_networking_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeNetworkingV1beta1 struct { - *testing.Fake -} - -func (c *FakeNetworkingV1beta1) Ingresses(namespace string) v1beta1.IngressInterface { - return &FakeIngresses{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeNetworkingV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go deleted file mode 100644 index 21ab9de33a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_node_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeNodeV1alpha1 struct { - *testing.Fake -} - -func (c *FakeNodeV1alpha1) RuntimeClasses() v1alpha1.RuntimeClassInterface { - return &FakeRuntimeClasses{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeNodeV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go deleted file mode 100644 index 3c8b00986f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake/fake_runtimeclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/node/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRuntimeClasses implements RuntimeClassInterface -type FakeRuntimeClasses struct { - Fake *FakeNodeV1alpha1 -} - -var runtimeclassesResource = schema.GroupVersionResource{Group: "node.k8s.io", Version: "v1alpha1", Resource: "runtimeclasses"} - -var runtimeclassesKind = schema.GroupVersionKind{Group: "node.k8s.io", Version: "v1alpha1", Kind: "RuntimeClass"} - -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any. -func (c *FakeRuntimeClasses) Get(name string, options v1.GetOptions) (result *v1alpha1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(runtimeclassesResource, name), &v1alpha1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RuntimeClass), err -} - -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors. -func (c *FakeRuntimeClasses) List(opts v1.ListOptions) (result *v1alpha1.RuntimeClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(runtimeclassesResource, runtimeclassesKind, opts), &v1alpha1.RuntimeClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.RuntimeClassList{ListMeta: obj.(*v1alpha1.RuntimeClassList).ListMeta} - for _, item := range obj.(*v1alpha1.RuntimeClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested runtimeClasses. -func (c *FakeRuntimeClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(runtimeclassesResource, opts)) -} - -// Create takes the representation of a runtimeClass and creates it. Returns the server's representation of the runtimeClass, and an error, if there is any. -func (c *FakeRuntimeClasses) Create(runtimeClass *v1alpha1.RuntimeClass) (result *v1alpha1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(runtimeclassesResource, runtimeClass), &v1alpha1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RuntimeClass), err -} - -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any. -func (c *FakeRuntimeClasses) Update(runtimeClass *v1alpha1.RuntimeClass) (result *v1alpha1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(runtimeclassesResource, runtimeClass), &v1alpha1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RuntimeClass), err -} - -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs. -func (c *FakeRuntimeClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(runtimeclassesResource, name), &v1alpha1.RuntimeClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRuntimeClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(runtimeclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.RuntimeClassList{}) - return err -} - -// Patch applies the patch and returns the patched runtimeClass. -func (c *FakeRuntimeClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, name, pt, data, subresources...), &v1alpha1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RuntimeClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go deleted file mode 100644 index 36976ce548..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_node_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/node/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeNodeV1beta1 struct { - *testing.Fake -} - -func (c *FakeNodeV1beta1) RuntimeClasses() v1beta1.RuntimeClassInterface { - return &FakeRuntimeClasses{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeNodeV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go b/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go deleted file mode 100644 index 201d742667..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/node/v1beta1/fake/fake_runtimeclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/node/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRuntimeClasses implements RuntimeClassInterface -type FakeRuntimeClasses struct { - Fake *FakeNodeV1beta1 -} - -var runtimeclassesResource = schema.GroupVersionResource{Group: "node.k8s.io", Version: "v1beta1", Resource: "runtimeclasses"} - -var runtimeclassesKind = schema.GroupVersionKind{Group: "node.k8s.io", Version: "v1beta1", Kind: "RuntimeClass"} - -// Get takes name of the runtimeClass, and returns the corresponding runtimeClass object, and an error if there is any. -func (c *FakeRuntimeClasses) Get(name string, options v1.GetOptions) (result *v1beta1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(runtimeclassesResource, name), &v1beta1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RuntimeClass), err -} - -// List takes label and field selectors, and returns the list of RuntimeClasses that match those selectors. -func (c *FakeRuntimeClasses) List(opts v1.ListOptions) (result *v1beta1.RuntimeClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(runtimeclassesResource, runtimeclassesKind, opts), &v1beta1.RuntimeClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.RuntimeClassList{ListMeta: obj.(*v1beta1.RuntimeClassList).ListMeta} - for _, item := range obj.(*v1beta1.RuntimeClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested runtimeClasses. -func (c *FakeRuntimeClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(runtimeclassesResource, opts)) -} - -// Create takes the representation of a runtimeClass and creates it. Returns the server's representation of the runtimeClass, and an error, if there is any. -func (c *FakeRuntimeClasses) Create(runtimeClass *v1beta1.RuntimeClass) (result *v1beta1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(runtimeclassesResource, runtimeClass), &v1beta1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RuntimeClass), err -} - -// Update takes the representation of a runtimeClass and updates it. Returns the server's representation of the runtimeClass, and an error, if there is any. -func (c *FakeRuntimeClasses) Update(runtimeClass *v1beta1.RuntimeClass) (result *v1beta1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(runtimeclassesResource, runtimeClass), &v1beta1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RuntimeClass), err -} - -// Delete takes name of the runtimeClass and deletes it. Returns an error if one occurs. -func (c *FakeRuntimeClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(runtimeclassesResource, name), &v1beta1.RuntimeClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRuntimeClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(runtimeclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.RuntimeClassList{}) - return err -} - -// Patch applies the patch and returns the patched runtimeClass. -func (c *FakeRuntimeClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.RuntimeClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(runtimeclassesResource, name, pt, data, subresources...), &v1beta1.RuntimeClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RuntimeClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go deleted file mode 100644 index b8f6f3eae2..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -// FakeEvictions implements EvictionInterface -type FakeEvictions struct { - Fake *FakePolicyV1beta1 - ns string -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go deleted file mode 100644 index d660d09e56..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_eviction_expansion.go +++ /dev/null @@ -1,35 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package fake - -import ( - policy "k8s.io/api/policy/v1beta1" - "k8s.io/apimachinery/pkg/runtime/schema" - core "k8s.io/client-go/testing" -) - -func (c *FakeEvictions) Evict(eviction *policy.Eviction) error { - action := core.CreateActionImpl{} - action.Verb = "create" - action.Namespace = c.ns - action.Resource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} - action.Subresource = "eviction" - action.Object = eviction - - _, err := c.Fake.Invokes(action, eviction) - return err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go deleted file mode 100644 index 5bfbbca47f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go +++ /dev/null @@ -1,140 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/policy/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePodDisruptionBudgets implements PodDisruptionBudgetInterface -type FakePodDisruptionBudgets struct { - Fake *FakePolicyV1beta1 - ns string -} - -var poddisruptionbudgetsResource = schema.GroupVersionResource{Group: "policy", Version: "v1beta1", Resource: "poddisruptionbudgets"} - -var poddisruptionbudgetsKind = schema.GroupVersionKind{Group: "policy", Version: "v1beta1", Kind: "PodDisruptionBudget"} - -// Get takes name of the podDisruptionBudget, and returns the corresponding podDisruptionBudget object, and an error if there is any. -func (c *FakePodDisruptionBudgets) Get(name string, options v1.GetOptions) (result *v1beta1.PodDisruptionBudget, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(poddisruptionbudgetsResource, c.ns, name), &v1beta1.PodDisruptionBudget{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodDisruptionBudget), err -} - -// List takes label and field selectors, and returns the list of PodDisruptionBudgets that match those selectors. -func (c *FakePodDisruptionBudgets) List(opts v1.ListOptions) (result *v1beta1.PodDisruptionBudgetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(poddisruptionbudgetsResource, poddisruptionbudgetsKind, c.ns, opts), &v1beta1.PodDisruptionBudgetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.PodDisruptionBudgetList{ListMeta: obj.(*v1beta1.PodDisruptionBudgetList).ListMeta} - for _, item := range obj.(*v1beta1.PodDisruptionBudgetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested podDisruptionBudgets. -func (c *FakePodDisruptionBudgets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(poddisruptionbudgetsResource, c.ns, opts)) - -} - -// Create takes the representation of a podDisruptionBudget and creates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. -func (c *FakePodDisruptionBudgets) Create(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodDisruptionBudget), err -} - -// Update takes the representation of a podDisruptionBudget and updates it. Returns the server's representation of the podDisruptionBudget, and an error, if there is any. -func (c *FakePodDisruptionBudgets) Update(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(poddisruptionbudgetsResource, c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodDisruptionBudget), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakePodDisruptionBudgets) UpdateStatus(podDisruptionBudget *v1beta1.PodDisruptionBudget) (*v1beta1.PodDisruptionBudget, error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(poddisruptionbudgetsResource, "status", c.ns, podDisruptionBudget), &v1beta1.PodDisruptionBudget{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodDisruptionBudget), err -} - -// Delete takes name of the podDisruptionBudget and deletes it. Returns an error if one occurs. -func (c *FakePodDisruptionBudgets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(poddisruptionbudgetsResource, c.ns, name), &v1beta1.PodDisruptionBudget{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePodDisruptionBudgets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(poddisruptionbudgetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.PodDisruptionBudgetList{}) - return err -} - -// Patch applies the patch and returns the patched podDisruptionBudget. -func (c *FakePodDisruptionBudgets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodDisruptionBudget, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(poddisruptionbudgetsResource, c.ns, name, pt, data, subresources...), &v1beta1.PodDisruptionBudget{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodDisruptionBudget), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_podsecuritypolicy.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_podsecuritypolicy.go deleted file mode 100644 index 32d1989f33..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_podsecuritypolicy.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/policy/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePodSecurityPolicies implements PodSecurityPolicyInterface -type FakePodSecurityPolicies struct { - Fake *FakePolicyV1beta1 -} - -var podsecuritypoliciesResource = schema.GroupVersionResource{Group: "policy", Version: "v1beta1", Resource: "podsecuritypolicies"} - -var podsecuritypoliciesKind = schema.GroupVersionKind{Group: "policy", Version: "v1beta1", Kind: "PodSecurityPolicy"} - -// Get takes name of the podSecurityPolicy, and returns the corresponding podSecurityPolicy object, and an error if there is any. -func (c *FakePodSecurityPolicies) Get(name string, options v1.GetOptions) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// List takes label and field selectors, and returns the list of PodSecurityPolicies that match those selectors. -func (c *FakePodSecurityPolicies) List(opts v1.ListOptions) (result *v1beta1.PodSecurityPolicyList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(podsecuritypoliciesResource, podsecuritypoliciesKind, opts), &v1beta1.PodSecurityPolicyList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.PodSecurityPolicyList{ListMeta: obj.(*v1beta1.PodSecurityPolicyList).ListMeta} - for _, item := range obj.(*v1beta1.PodSecurityPolicyList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested podSecurityPolicies. -func (c *FakePodSecurityPolicies) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(podsecuritypoliciesResource, opts)) -} - -// Create takes the representation of a podSecurityPolicy and creates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. -func (c *FakePodSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// Update takes the representation of a podSecurityPolicy and updates it. Returns the server's representation of the podSecurityPolicy, and an error, if there is any. -func (c *FakePodSecurityPolicies) Update(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(podsecuritypoliciesResource, podSecurityPolicy), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} - -// Delete takes name of the podSecurityPolicy and deletes it. Returns an error if one occurs. -func (c *FakePodSecurityPolicies) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(podsecuritypoliciesResource, name), &v1beta1.PodSecurityPolicy{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePodSecurityPolicies) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(podsecuritypoliciesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.PodSecurityPolicyList{}) - return err -} - -// Patch applies the patch and returns the patched podSecurityPolicy. -func (c *FakePodSecurityPolicies) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PodSecurityPolicy, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(podsecuritypoliciesResource, name, pt, data, subresources...), &v1beta1.PodSecurityPolicy{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PodSecurityPolicy), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go b/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go deleted file mode 100644 index 9c780bf1f0..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake/fake_policy_client.go +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakePolicyV1beta1 struct { - *testing.Fake -} - -func (c *FakePolicyV1beta1) Evictions(namespace string) v1beta1.EvictionInterface { - return &FakeEvictions{c, namespace} -} - -func (c *FakePolicyV1beta1) PodDisruptionBudgets(namespace string) v1beta1.PodDisruptionBudgetInterface { - return &FakePodDisruptionBudgets{c, namespace} -} - -func (c *FakePolicyV1beta1) PodSecurityPolicies() v1beta1.PodSecurityPolicyInterface { - return &FakePodSecurityPolicies{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakePolicyV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go deleted file mode 100644 index d57f339390..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrole.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - rbacv1 "k8s.io/api/rbac/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoles implements ClusterRoleInterface -type FakeClusterRoles struct { - Fake *FakeRbacV1 -} - -var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterroles"} - -var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRole"} - -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. -func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *rbacv1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolesResource, name), &rbacv1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRole), err -} - -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. -func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *rbacv1.ClusterRoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &rbacv1.ClusterRoleList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &rbacv1.ClusterRoleList{ListMeta: obj.(*rbacv1.ClusterRoleList).ListMeta} - for _, item := range obj.(*rbacv1.ClusterRoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoles. -func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts)) -} - -// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Create(clusterRole *rbacv1.ClusterRole) (result *rbacv1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &rbacv1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRole), err -} - -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Update(clusterRole *rbacv1.ClusterRole) (result *rbacv1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &rbacv1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRole), err -} - -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &rbacv1.ClusterRole{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) - - _, err := c.Fake.Invokes(action, &rbacv1.ClusterRoleList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRole. -func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &rbacv1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRole), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go deleted file mode 100644 index 878473ef35..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_clusterrolebinding.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - rbacv1 "k8s.io/api/rbac/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoleBindings implements ClusterRoleBindingInterface -type FakeClusterRoleBindings struct { - Fake *FakeRbacV1 -} - -var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterrolebindings"} - -var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "ClusterRoleBinding"} - -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. -func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *rbacv1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &rbacv1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRoleBinding), err -} - -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. -func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *rbacv1.ClusterRoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &rbacv1.ClusterRoleBindingList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &rbacv1.ClusterRoleBindingList{ListMeta: obj.(*rbacv1.ClusterRoleBindingList).ListMeta} - for _, item := range obj.(*rbacv1.ClusterRoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoleBindings. -func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts)) -} - -// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *rbacv1.ClusterRoleBinding) (result *rbacv1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &rbacv1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRoleBinding), err -} - -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *rbacv1.ClusterRoleBinding) (result *rbacv1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &rbacv1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRoleBinding), err -} - -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &rbacv1.ClusterRoleBinding{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) - - _, err := c.Fake.Invokes(action, &rbacv1.ClusterRoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRoleBinding. -func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &rbacv1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*rbacv1.ClusterRoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go deleted file mode 100644 index 426fd70d6c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rbac_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/rbac/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeRbacV1 struct { - *testing.Fake -} - -func (c *FakeRbacV1) ClusterRoles() v1.ClusterRoleInterface { - return &FakeClusterRoles{c} -} - -func (c *FakeRbacV1) ClusterRoleBindings() v1.ClusterRoleBindingInterface { - return &FakeClusterRoleBindings{c} -} - -func (c *FakeRbacV1) Roles(namespace string) v1.RoleInterface { - return &FakeRoles{c, namespace} -} - -func (c *FakeRbacV1) RoleBindings(namespace string) v1.RoleBindingInterface { - return &FakeRoleBindings{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeRbacV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go deleted file mode 100644 index 78ef3192f3..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_role.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - rbacv1 "k8s.io/api/rbac/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoles implements RoleInterface -type FakeRoles struct { - Fake *FakeRbacV1 - ns string -} - -var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "roles"} - -var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "Role"} - -// Get takes name of the role, and returns the corresponding role object, and an error if there is any. -func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *rbacv1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolesResource, c.ns, name), &rbacv1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.Role), err -} - -// List takes label and field selectors, and returns the list of Roles that match those selectors. -func (c *FakeRoles) List(opts v1.ListOptions) (result *rbacv1.RoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &rbacv1.RoleList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &rbacv1.RoleList{ListMeta: obj.(*rbacv1.RoleList).ListMeta} - for _, item := range obj.(*rbacv1.RoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roles. -func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts)) - -} - -// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Create(role *rbacv1.Role) (result *rbacv1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &rbacv1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.Role), err -} - -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Update(role *rbacv1.Role) (result *rbacv1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &rbacv1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.Role), err -} - -// Delete takes name of the role and deletes it. Returns an error if one occurs. -func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &rbacv1.Role{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &rbacv1.RoleList{}) - return err -} - -// Patch applies the patch and returns the patched role. -func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &rbacv1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.Role), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go deleted file mode 100644 index 6c344cadff..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/fake/fake_rolebinding.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - rbacv1 "k8s.io/api/rbac/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoleBindings implements RoleBindingInterface -type FakeRoleBindings struct { - Fake *FakeRbacV1 - ns string -} - -var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "rolebindings"} - -var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1", Kind: "RoleBinding"} - -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. -func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *rbacv1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &rbacv1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.RoleBinding), err -} - -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. -func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *rbacv1.RoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &rbacv1.RoleBindingList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &rbacv1.RoleBindingList{ListMeta: obj.(*rbacv1.RoleBindingList).ListMeta} - for _, item := range obj.(*rbacv1.RoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roleBindings. -func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts)) - -} - -// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Create(roleBinding *rbacv1.RoleBinding) (result *rbacv1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &rbacv1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.RoleBinding), err -} - -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Update(roleBinding *rbacv1.RoleBinding) (result *rbacv1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &rbacv1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.RoleBinding), err -} - -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. -func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &rbacv1.RoleBinding{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &rbacv1.RoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched roleBinding. -func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *rbacv1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &rbacv1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*rbacv1.RoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go deleted file mode 100644 index d2d1b1c74c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/rbac/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoles implements ClusterRoleInterface -type FakeClusterRoles struct { - Fake *FakeRbacV1alpha1 -} - -var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterroles"} - -var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRole"} - -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. -func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1alpha1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRole), err -} - -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. -func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1alpha1.ClusterRoleList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.ClusterRoleList{ListMeta: obj.(*v1alpha1.ClusterRoleList).ListMeta} - for _, item := range obj.(*v1alpha1.ClusterRoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoles. -func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts)) -} - -// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Create(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRole), err -} - -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Update(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1alpha1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRole), err -} - -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &v1alpha1.ClusterRole{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRole. -func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &v1alpha1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRole), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go deleted file mode 100644 index 3e23e5f657..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/rbac/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoleBindings implements ClusterRoleBindingInterface -type FakeClusterRoleBindings struct { - Fake *FakeRbacV1alpha1 -} - -var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterrolebindings"} - -var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "ClusterRoleBinding"} - -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. -func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1alpha1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRoleBinding), err -} - -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. -func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *v1alpha1.ClusterRoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1alpha1.ClusterRoleBindingList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.ClusterRoleBindingList{ListMeta: obj.(*v1alpha1.ClusterRoleBindingList).ListMeta} - for _, item := range obj.(*v1alpha1.ClusterRoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoleBindings. -func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts)) -} - -// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRoleBinding), err -} - -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1alpha1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRoleBinding), err -} - -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &v1alpha1.ClusterRoleBinding{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.ClusterRoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRoleBinding. -func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &v1alpha1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.ClusterRoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go deleted file mode 100644 index 3447e9be83..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rbac_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeRbacV1alpha1 struct { - *testing.Fake -} - -func (c *FakeRbacV1alpha1) ClusterRoles() v1alpha1.ClusterRoleInterface { - return &FakeClusterRoles{c} -} - -func (c *FakeRbacV1alpha1) ClusterRoleBindings() v1alpha1.ClusterRoleBindingInterface { - return &FakeClusterRoleBindings{c} -} - -func (c *FakeRbacV1alpha1) Roles(namespace string) v1alpha1.RoleInterface { - return &FakeRoles{c, namespace} -} - -func (c *FakeRbacV1alpha1) RoleBindings(namespace string) v1alpha1.RoleBindingInterface { - return &FakeRoleBindings{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeRbacV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go deleted file mode 100644 index 7bd52373fa..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/rbac/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoles implements RoleInterface -type FakeRoles struct { - Fake *FakeRbacV1alpha1 - ns string -} - -var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "roles"} - -var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "Role"} - -// Get takes name of the role, and returns the corresponding role object, and an error if there is any. -func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *v1alpha1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1alpha1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Role), err -} - -// List takes label and field selectors, and returns the list of Roles that match those selectors. -func (c *FakeRoles) List(opts v1.ListOptions) (result *v1alpha1.RoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1alpha1.RoleList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.RoleList{ListMeta: obj.(*v1alpha1.RoleList).ListMeta} - for _, item := range obj.(*v1alpha1.RoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roles. -func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts)) - -} - -// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Create(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1alpha1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Role), err -} - -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Update(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1alpha1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Role), err -} - -// Delete takes name of the role and deletes it. Returns an error if one occurs. -func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &v1alpha1.Role{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.RoleList{}) - return err -} - -// Patch applies the patch and returns the patched role. -func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &v1alpha1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Role), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go deleted file mode 100644 index 0150503115..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/rbac/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoleBindings implements RoleBindingInterface -type FakeRoleBindings struct { - Fake *FakeRbacV1alpha1 - ns string -} - -var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "rolebindings"} - -var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Kind: "RoleBinding"} - -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. -func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *v1alpha1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1alpha1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RoleBinding), err -} - -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. -func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *v1alpha1.RoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1alpha1.RoleBindingList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.RoleBindingList{ListMeta: obj.(*v1alpha1.RoleBindingList).ListMeta} - for _, item := range obj.(*v1alpha1.RoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roleBindings. -func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts)) - -} - -// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Create(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RoleBinding), err -} - -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Update(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1alpha1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RoleBinding), err -} - -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. -func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &v1alpha1.RoleBinding{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.RoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched roleBinding. -func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &v1alpha1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.RoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go deleted file mode 100644 index 2dbc3f6166..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrole.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/rbac/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoles implements ClusterRoleInterface -type FakeClusterRoles struct { - Fake *FakeRbacV1beta1 -} - -var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "clusterroles"} - -var clusterrolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRole"} - -// Get takes name of the clusterRole, and returns the corresponding clusterRole object, and an error if there is any. -func (c *FakeClusterRoles) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolesResource, name), &v1beta1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRole), err -} - -// List takes label and field selectors, and returns the list of ClusterRoles that match those selectors. -func (c *FakeClusterRoles) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolesResource, clusterrolesKind, opts), &v1beta1.ClusterRoleList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.ClusterRoleList{ListMeta: obj.(*v1beta1.ClusterRoleList).ListMeta} - for _, item := range obj.(*v1beta1.ClusterRoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoles. -func (c *FakeClusterRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolesResource, opts)) -} - -// Create takes the representation of a clusterRole and creates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Create(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRole), err -} - -// Update takes the representation of a clusterRole and updates it. Returns the server's representation of the clusterRole, and an error, if there is any. -func (c *FakeClusterRoles) Update(clusterRole *v1beta1.ClusterRole) (result *v1beta1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolesResource, clusterRole), &v1beta1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRole), err -} - -// Delete takes name of the clusterRole and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolesResource, name), &v1beta1.ClusterRole{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRole. -func (c *FakeClusterRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRole, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolesResource, name, pt, data, subresources...), &v1beta1.ClusterRole{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRole), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go deleted file mode 100644 index 14e20bc28c..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_clusterrolebinding.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/rbac/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeClusterRoleBindings implements ClusterRoleBindingInterface -type FakeClusterRoleBindings struct { - Fake *FakeRbacV1beta1 -} - -var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "clusterrolebindings"} - -var clusterrolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "ClusterRoleBinding"} - -// Get takes name of the clusterRoleBinding, and returns the corresponding clusterRoleBinding object, and an error if there is any. -func (c *FakeClusterRoleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(clusterrolebindingsResource, name), &v1beta1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRoleBinding), err -} - -// List takes label and field selectors, and returns the list of ClusterRoleBindings that match those selectors. -func (c *FakeClusterRoleBindings) List(opts v1.ListOptions) (result *v1beta1.ClusterRoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(clusterrolebindingsResource, clusterrolebindingsKind, opts), &v1beta1.ClusterRoleBindingList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.ClusterRoleBindingList{ListMeta: obj.(*v1beta1.ClusterRoleBindingList).ListMeta} - for _, item := range obj.(*v1beta1.ClusterRoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested clusterRoleBindings. -func (c *FakeClusterRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(clusterrolebindingsResource, opts)) -} - -// Create takes the representation of a clusterRoleBinding and creates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRoleBinding), err -} - -// Update takes the representation of a clusterRoleBinding and updates it. Returns the server's representation of the clusterRoleBinding, and an error, if there is any. -func (c *FakeClusterRoleBindings) Update(clusterRoleBinding *v1beta1.ClusterRoleBinding) (result *v1beta1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(clusterrolebindingsResource, clusterRoleBinding), &v1beta1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRoleBinding), err -} - -// Delete takes name of the clusterRoleBinding and deletes it. Returns an error if one occurs. -func (c *FakeClusterRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(clusterrolebindingsResource, name), &v1beta1.ClusterRoleBinding{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeClusterRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(clusterrolebindingsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.ClusterRoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched clusterRoleBinding. -func (c *FakeClusterRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.ClusterRoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(clusterrolebindingsResource, name, pt, data, subresources...), &v1beta1.ClusterRoleBinding{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.ClusterRoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go deleted file mode 100644 index bdbc246b7a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rbac_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeRbacV1beta1 struct { - *testing.Fake -} - -func (c *FakeRbacV1beta1) ClusterRoles() v1beta1.ClusterRoleInterface { - return &FakeClusterRoles{c} -} - -func (c *FakeRbacV1beta1) ClusterRoleBindings() v1beta1.ClusterRoleBindingInterface { - return &FakeClusterRoleBindings{c} -} - -func (c *FakeRbacV1beta1) Roles(namespace string) v1beta1.RoleInterface { - return &FakeRoles{c, namespace} -} - -func (c *FakeRbacV1beta1) RoleBindings(namespace string) v1beta1.RoleBindingInterface { - return &FakeRoleBindings{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeRbacV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go deleted file mode 100644 index e31768e4e5..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_role.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/rbac/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoles implements RoleInterface -type FakeRoles struct { - Fake *FakeRbacV1beta1 - ns string -} - -var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "roles"} - -var rolesKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "Role"} - -// Get takes name of the role, and returns the corresponding role object, and an error if there is any. -func (c *FakeRoles) Get(name string, options v1.GetOptions) (result *v1beta1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolesResource, c.ns, name), &v1beta1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Role), err -} - -// List takes label and field selectors, and returns the list of Roles that match those selectors. -func (c *FakeRoles) List(opts v1.ListOptions) (result *v1beta1.RoleList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolesResource, rolesKind, c.ns, opts), &v1beta1.RoleList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.RoleList{ListMeta: obj.(*v1beta1.RoleList).ListMeta} - for _, item := range obj.(*v1beta1.RoleList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roles. -func (c *FakeRoles) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolesResource, c.ns, opts)) - -} - -// Create takes the representation of a role and creates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Create(role *v1beta1.Role) (result *v1beta1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolesResource, c.ns, role), &v1beta1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Role), err -} - -// Update takes the representation of a role and updates it. Returns the server's representation of the role, and an error, if there is any. -func (c *FakeRoles) Update(role *v1beta1.Role) (result *v1beta1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolesResource, c.ns, role), &v1beta1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Role), err -} - -// Delete takes name of the role and deletes it. Returns an error if one occurs. -func (c *FakeRoles) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolesResource, c.ns, name), &v1beta1.Role{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoles) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolesResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.RoleList{}) - return err -} - -// Patch applies the patch and returns the patched role. -func (c *FakeRoles) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.Role, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolesResource, c.ns, name, pt, data, subresources...), &v1beta1.Role{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Role), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go b/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go deleted file mode 100644 index 06b93c93f6..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake/fake_rolebinding.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/rbac/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeRoleBindings implements RoleBindingInterface -type FakeRoleBindings struct { - Fake *FakeRbacV1beta1 - ns string -} - -var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Resource: "rolebindings"} - -var rolebindingsKind = schema.GroupVersionKind{Group: "rbac.authorization.k8s.io", Version: "v1beta1", Kind: "RoleBinding"} - -// Get takes name of the roleBinding, and returns the corresponding roleBinding object, and an error if there is any. -func (c *FakeRoleBindings) Get(name string, options v1.GetOptions) (result *v1beta1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(rolebindingsResource, c.ns, name), &v1beta1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RoleBinding), err -} - -// List takes label and field selectors, and returns the list of RoleBindings that match those selectors. -func (c *FakeRoleBindings) List(opts v1.ListOptions) (result *v1beta1.RoleBindingList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(rolebindingsResource, rolebindingsKind, c.ns, opts), &v1beta1.RoleBindingList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.RoleBindingList{ListMeta: obj.(*v1beta1.RoleBindingList).ListMeta} - for _, item := range obj.(*v1beta1.RoleBindingList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested roleBindings. -func (c *FakeRoleBindings) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(rolebindingsResource, c.ns, opts)) - -} - -// Create takes the representation of a roleBinding and creates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Create(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RoleBinding), err -} - -// Update takes the representation of a roleBinding and updates it. Returns the server's representation of the roleBinding, and an error, if there is any. -func (c *FakeRoleBindings) Update(roleBinding *v1beta1.RoleBinding) (result *v1beta1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(rolebindingsResource, c.ns, roleBinding), &v1beta1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RoleBinding), err -} - -// Delete takes name of the roleBinding and deletes it. Returns an error if one occurs. -func (c *FakeRoleBindings) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(rolebindingsResource, c.ns, name), &v1beta1.RoleBinding{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeRoleBindings) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(rolebindingsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.RoleBindingList{}) - return err -} - -// Patch applies the patch and returns the patched roleBinding. -func (c *FakeRoleBindings) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.RoleBinding, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(rolebindingsResource, c.ns, name, pt, data, subresources...), &v1beta1.RoleBinding{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.RoleBinding), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go deleted file mode 100644 index 60ad3a8db2..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_priorityclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - schedulingv1 "k8s.io/api/scheduling/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePriorityClasses implements PriorityClassInterface -type FakePriorityClasses struct { - Fake *FakeSchedulingV1 -} - -var priorityclassesResource = schema.GroupVersionResource{Group: "scheduling.k8s.io", Version: "v1", Resource: "priorityclasses"} - -var priorityclassesKind = schema.GroupVersionKind{Group: "scheduling.k8s.io", Version: "v1", Kind: "PriorityClass"} - -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any. -func (c *FakePriorityClasses) Get(name string, options v1.GetOptions) (result *schedulingv1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(priorityclassesResource, name), &schedulingv1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*schedulingv1.PriorityClass), err -} - -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors. -func (c *FakePriorityClasses) List(opts v1.ListOptions) (result *schedulingv1.PriorityClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &schedulingv1.PriorityClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &schedulingv1.PriorityClassList{ListMeta: obj.(*schedulingv1.PriorityClassList).ListMeta} - for _, item := range obj.(*schedulingv1.PriorityClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested priorityClasses. -func (c *FakePriorityClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts)) -} - -// Create takes the representation of a priorityClass and creates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Create(priorityClass *schedulingv1.PriorityClass) (result *schedulingv1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &schedulingv1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*schedulingv1.PriorityClass), err -} - -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Update(priorityClass *schedulingv1.PriorityClass) (result *schedulingv1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &schedulingv1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*schedulingv1.PriorityClass), err -} - -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs. -func (c *FakePriorityClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(priorityclassesResource, name), &schedulingv1.PriorityClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePriorityClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &schedulingv1.PriorityClassList{}) - return err -} - -// Patch applies the patch and returns the patched priorityClass. -func (c *FakePriorityClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *schedulingv1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &schedulingv1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*schedulingv1.PriorityClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go deleted file mode 100644 index a64ac945b9..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1/fake/fake_scheduling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/scheduling/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeSchedulingV1 struct { - *testing.Fake -} - -func (c *FakeSchedulingV1) PriorityClasses() v1.PriorityClassInterface { - return &FakePriorityClasses{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeSchedulingV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go deleted file mode 100644 index e592ed137f..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_priorityclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/scheduling/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePriorityClasses implements PriorityClassInterface -type FakePriorityClasses struct { - Fake *FakeSchedulingV1alpha1 -} - -var priorityclassesResource = schema.GroupVersionResource{Group: "scheduling.k8s.io", Version: "v1alpha1", Resource: "priorityclasses"} - -var priorityclassesKind = schema.GroupVersionKind{Group: "scheduling.k8s.io", Version: "v1alpha1", Kind: "PriorityClass"} - -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any. -func (c *FakePriorityClasses) Get(name string, options v1.GetOptions) (result *v1alpha1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(priorityclassesResource, name), &v1alpha1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PriorityClass), err -} - -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors. -func (c *FakePriorityClasses) List(opts v1.ListOptions) (result *v1alpha1.PriorityClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &v1alpha1.PriorityClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.PriorityClassList{ListMeta: obj.(*v1alpha1.PriorityClassList).ListMeta} - for _, item := range obj.(*v1alpha1.PriorityClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested priorityClasses. -func (c *FakePriorityClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts)) -} - -// Create takes the representation of a priorityClass and creates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Create(priorityClass *v1alpha1.PriorityClass) (result *v1alpha1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &v1alpha1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PriorityClass), err -} - -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Update(priorityClass *v1alpha1.PriorityClass) (result *v1alpha1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &v1alpha1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PriorityClass), err -} - -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs. -func (c *FakePriorityClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(priorityclassesResource, name), &v1alpha1.PriorityClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePriorityClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.PriorityClassList{}) - return err -} - -// Patch applies the patch and returns the patched priorityClass. -func (c *FakePriorityClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &v1alpha1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PriorityClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go deleted file mode 100644 index 974ba193f7..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake/fake_scheduling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeSchedulingV1alpha1 struct { - *testing.Fake -} - -func (c *FakeSchedulingV1alpha1) PriorityClasses() v1alpha1.PriorityClassInterface { - return &FakePriorityClasses{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeSchedulingV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go deleted file mode 100644 index 44ce64b5ce..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_priorityclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/scheduling/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePriorityClasses implements PriorityClassInterface -type FakePriorityClasses struct { - Fake *FakeSchedulingV1beta1 -} - -var priorityclassesResource = schema.GroupVersionResource{Group: "scheduling.k8s.io", Version: "v1beta1", Resource: "priorityclasses"} - -var priorityclassesKind = schema.GroupVersionKind{Group: "scheduling.k8s.io", Version: "v1beta1", Kind: "PriorityClass"} - -// Get takes name of the priorityClass, and returns the corresponding priorityClass object, and an error if there is any. -func (c *FakePriorityClasses) Get(name string, options v1.GetOptions) (result *v1beta1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(priorityclassesResource, name), &v1beta1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PriorityClass), err -} - -// List takes label and field selectors, and returns the list of PriorityClasses that match those selectors. -func (c *FakePriorityClasses) List(opts v1.ListOptions) (result *v1beta1.PriorityClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(priorityclassesResource, priorityclassesKind, opts), &v1beta1.PriorityClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.PriorityClassList{ListMeta: obj.(*v1beta1.PriorityClassList).ListMeta} - for _, item := range obj.(*v1beta1.PriorityClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested priorityClasses. -func (c *FakePriorityClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(priorityclassesResource, opts)) -} - -// Create takes the representation of a priorityClass and creates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Create(priorityClass *v1beta1.PriorityClass) (result *v1beta1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(priorityclassesResource, priorityClass), &v1beta1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PriorityClass), err -} - -// Update takes the representation of a priorityClass and updates it. Returns the server's representation of the priorityClass, and an error, if there is any. -func (c *FakePriorityClasses) Update(priorityClass *v1beta1.PriorityClass) (result *v1beta1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(priorityclassesResource, priorityClass), &v1beta1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PriorityClass), err -} - -// Delete takes name of the priorityClass and deletes it. Returns an error if one occurs. -func (c *FakePriorityClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(priorityclassesResource, name), &v1beta1.PriorityClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePriorityClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(priorityclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.PriorityClassList{}) - return err -} - -// Patch applies the patch and returns the patched priorityClass. -func (c *FakePriorityClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.PriorityClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(priorityclassesResource, name, pt, data, subresources...), &v1beta1.PriorityClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.PriorityClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go b/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go deleted file mode 100644 index 4a6878a45e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake/fake_scheduling_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeSchedulingV1beta1 struct { - *testing.Fake -} - -func (c *FakeSchedulingV1beta1) PriorityClasses() v1beta1.PriorityClassInterface { - return &FakePriorityClasses{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeSchedulingV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go deleted file mode 100644 index 273a027fad..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_podpreset.go +++ /dev/null @@ -1,128 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/settings/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakePodPresets implements PodPresetInterface -type FakePodPresets struct { - Fake *FakeSettingsV1alpha1 - ns string -} - -var podpresetsResource = schema.GroupVersionResource{Group: "settings.k8s.io", Version: "v1alpha1", Resource: "podpresets"} - -var podpresetsKind = schema.GroupVersionKind{Group: "settings.k8s.io", Version: "v1alpha1", Kind: "PodPreset"} - -// Get takes name of the podPreset, and returns the corresponding podPreset object, and an error if there is any. -func (c *FakePodPresets) Get(name string, options v1.GetOptions) (result *v1alpha1.PodPreset, err error) { - obj, err := c.Fake. - Invokes(testing.NewGetAction(podpresetsResource, c.ns, name), &v1alpha1.PodPreset{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PodPreset), err -} - -// List takes label and field selectors, and returns the list of PodPresets that match those selectors. -func (c *FakePodPresets) List(opts v1.ListOptions) (result *v1alpha1.PodPresetList, err error) { - obj, err := c.Fake. - Invokes(testing.NewListAction(podpresetsResource, podpresetsKind, c.ns, opts), &v1alpha1.PodPresetList{}) - - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.PodPresetList{ListMeta: obj.(*v1alpha1.PodPresetList).ListMeta} - for _, item := range obj.(*v1alpha1.PodPresetList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested podPresets. -func (c *FakePodPresets) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewWatchAction(podpresetsResource, c.ns, opts)) - -} - -// Create takes the representation of a podPreset and creates it. Returns the server's representation of the podPreset, and an error, if there is any. -func (c *FakePodPresets) Create(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { - obj, err := c.Fake. - Invokes(testing.NewCreateAction(podpresetsResource, c.ns, podPreset), &v1alpha1.PodPreset{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PodPreset), err -} - -// Update takes the representation of a podPreset and updates it. Returns the server's representation of the podPreset, and an error, if there is any. -func (c *FakePodPresets) Update(podPreset *v1alpha1.PodPreset) (result *v1alpha1.PodPreset, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateAction(podpresetsResource, c.ns, podPreset), &v1alpha1.PodPreset{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PodPreset), err -} - -// Delete takes name of the podPreset and deletes it. Returns an error if one occurs. -func (c *FakePodPresets) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewDeleteAction(podpresetsResource, c.ns, name), &v1alpha1.PodPreset{}) - - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakePodPresets) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewDeleteCollectionAction(podpresetsResource, c.ns, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.PodPresetList{}) - return err -} - -// Patch applies the patch and returns the patched podPreset. -func (c *FakePodPresets) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.PodPreset, err error) { - obj, err := c.Fake. - Invokes(testing.NewPatchSubresourceAction(podpresetsResource, c.ns, name, pt, data, subresources...), &v1alpha1.PodPreset{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.PodPreset), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go b/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go deleted file mode 100644 index a142edfed0..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake/fake_settings_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/settings/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeSettingsV1alpha1 struct { - *testing.Fake -} - -func (c *FakeSettingsV1alpha1) PodPresets(namespace string) v1alpha1.PodPresetInterface { - return &FakePodPresets{c, namespace} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeSettingsV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go deleted file mode 100644 index 967a528500..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storage_client.go +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1 "k8s.io/client-go/kubernetes/typed/storage/v1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeStorageV1 struct { - *testing.Fake -} - -func (c *FakeStorageV1) StorageClasses() v1.StorageClassInterface { - return &FakeStorageClasses{c} -} - -func (c *FakeStorageV1) VolumeAttachments() v1.VolumeAttachmentInterface { - return &FakeVolumeAttachments{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeStorageV1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go deleted file mode 100644 index c7531d8793..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_storageclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - storagev1 "k8s.io/api/storage/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeStorageClasses implements StorageClassInterface -type FakeStorageClasses struct { - Fake *FakeStorageV1 -} - -var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1", Resource: "storageclasses"} - -var storageclassesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "StorageClass"} - -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. -func (c *FakeStorageClasses) Get(name string, options v1.GetOptions) (result *storagev1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(storageclassesResource, name), &storagev1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.StorageClass), err -} - -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors. -func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *storagev1.StorageClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &storagev1.StorageClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &storagev1.StorageClassList{ListMeta: obj.(*storagev1.StorageClassList).ListMeta} - for _, item := range obj.(*storagev1.StorageClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested storageClasses. -func (c *FakeStorageClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts)) -} - -// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any. -func (c *FakeStorageClasses) Create(storageClass *storagev1.StorageClass) (result *storagev1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &storagev1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.StorageClass), err -} - -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any. -func (c *FakeStorageClasses) Update(storageClass *storagev1.StorageClass) (result *storagev1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &storagev1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.StorageClass), err -} - -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs. -func (c *FakeStorageClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &storagev1.StorageClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeStorageClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &storagev1.StorageClassList{}) - return err -} - -// Patch applies the patch and returns the patched storageClass. -func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *storagev1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, pt, data, subresources...), &storagev1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.StorageClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go deleted file mode 100644 index 58e09da46b..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1/fake/fake_volumeattachment.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - storagev1 "k8s.io/api/storage/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeVolumeAttachments implements VolumeAttachmentInterface -type FakeVolumeAttachments struct { - Fake *FakeStorageV1 -} - -var volumeattachmentsResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1", Resource: "volumeattachments"} - -var volumeattachmentsKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1", Kind: "VolumeAttachment"} - -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any. -func (c *FakeVolumeAttachments) Get(name string, options v1.GetOptions) (result *storagev1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &storagev1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.VolumeAttachment), err -} - -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors. -func (c *FakeVolumeAttachments) List(opts v1.ListOptions) (result *storagev1.VolumeAttachmentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &storagev1.VolumeAttachmentList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &storagev1.VolumeAttachmentList{ListMeta: obj.(*storagev1.VolumeAttachmentList).ListMeta} - for _, item := range obj.(*storagev1.VolumeAttachmentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested volumeAttachments. -func (c *FakeVolumeAttachments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts)) -} - -// Create takes the representation of a volumeAttachment and creates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Create(volumeAttachment *storagev1.VolumeAttachment) (result *storagev1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &storagev1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.VolumeAttachment), err -} - -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Update(volumeAttachment *storagev1.VolumeAttachment) (result *storagev1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &storagev1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.VolumeAttachment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeVolumeAttachments) UpdateStatus(volumeAttachment *storagev1.VolumeAttachment) (*storagev1.VolumeAttachment, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &storagev1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.VolumeAttachment), err -} - -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs. -func (c *FakeVolumeAttachments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(volumeattachmentsResource, name), &storagev1.VolumeAttachment{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeVolumeAttachments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOptions) - - _, err := c.Fake.Invokes(action, &storagev1.VolumeAttachmentList{}) - return err -} - -// Patch applies the patch and returns the patched volumeAttachment. -func (c *FakeVolumeAttachments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *storagev1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &storagev1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*storagev1.VolumeAttachment), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go deleted file mode 100644 index 1a4d9f56fc..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_storage_client.go +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/client-go/kubernetes/typed/storage/v1alpha1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeStorageV1alpha1 struct { - *testing.Fake -} - -func (c *FakeStorageV1alpha1) VolumeAttachments() v1alpha1.VolumeAttachmentInterface { - return &FakeVolumeAttachments{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeStorageV1alpha1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go deleted file mode 100644 index 86f53e2d4d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake/fake_volumeattachment.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1alpha1 "k8s.io/api/storage/v1alpha1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeVolumeAttachments implements VolumeAttachmentInterface -type FakeVolumeAttachments struct { - Fake *FakeStorageV1alpha1 -} - -var volumeattachmentsResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1alpha1", Resource: "volumeattachments"} - -var volumeattachmentsKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1alpha1", Kind: "VolumeAttachment"} - -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any. -func (c *FakeVolumeAttachments) Get(name string, options v1.GetOptions) (result *v1alpha1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &v1alpha1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.VolumeAttachment), err -} - -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors. -func (c *FakeVolumeAttachments) List(opts v1.ListOptions) (result *v1alpha1.VolumeAttachmentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &v1alpha1.VolumeAttachmentList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1alpha1.VolumeAttachmentList{ListMeta: obj.(*v1alpha1.VolumeAttachmentList).ListMeta} - for _, item := range obj.(*v1alpha1.VolumeAttachmentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested volumeAttachments. -func (c *FakeVolumeAttachments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts)) -} - -// Create takes the representation of a volumeAttachment and creates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Create(volumeAttachment *v1alpha1.VolumeAttachment) (result *v1alpha1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &v1alpha1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.VolumeAttachment), err -} - -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Update(volumeAttachment *v1alpha1.VolumeAttachment) (result *v1alpha1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &v1alpha1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.VolumeAttachment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeVolumeAttachments) UpdateStatus(volumeAttachment *v1alpha1.VolumeAttachment) (*v1alpha1.VolumeAttachment, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &v1alpha1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.VolumeAttachment), err -} - -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs. -func (c *FakeVolumeAttachments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(volumeattachmentsResource, name), &v1alpha1.VolumeAttachment{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeVolumeAttachments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1alpha1.VolumeAttachmentList{}) - return err -} - -// Patch applies the patch and returns the patched volumeAttachment. -func (c *FakeVolumeAttachments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1alpha1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &v1alpha1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.VolumeAttachment), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go deleted file mode 100644 index 16f4439906..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/doc.go +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -// Package fake has the automatically generated clients. -package fake diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go deleted file mode 100644 index 2446316b2d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csidriver.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/storage/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeCSIDrivers implements CSIDriverInterface -type FakeCSIDrivers struct { - Fake *FakeStorageV1beta1 -} - -var csidriversResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "csidrivers"} - -var csidriversKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1beta1", Kind: "CSIDriver"} - -// Get takes name of the cSIDriver, and returns the corresponding cSIDriver object, and an error if there is any. -func (c *FakeCSIDrivers) Get(name string, options v1.GetOptions) (result *v1beta1.CSIDriver, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(csidriversResource, name), &v1beta1.CSIDriver{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSIDriver), err -} - -// List takes label and field selectors, and returns the list of CSIDrivers that match those selectors. -func (c *FakeCSIDrivers) List(opts v1.ListOptions) (result *v1beta1.CSIDriverList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(csidriversResource, csidriversKind, opts), &v1beta1.CSIDriverList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.CSIDriverList{ListMeta: obj.(*v1beta1.CSIDriverList).ListMeta} - for _, item := range obj.(*v1beta1.CSIDriverList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested cSIDrivers. -func (c *FakeCSIDrivers) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(csidriversResource, opts)) -} - -// Create takes the representation of a cSIDriver and creates it. Returns the server's representation of the cSIDriver, and an error, if there is any. -func (c *FakeCSIDrivers) Create(cSIDriver *v1beta1.CSIDriver) (result *v1beta1.CSIDriver, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(csidriversResource, cSIDriver), &v1beta1.CSIDriver{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSIDriver), err -} - -// Update takes the representation of a cSIDriver and updates it. Returns the server's representation of the cSIDriver, and an error, if there is any. -func (c *FakeCSIDrivers) Update(cSIDriver *v1beta1.CSIDriver) (result *v1beta1.CSIDriver, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(csidriversResource, cSIDriver), &v1beta1.CSIDriver{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSIDriver), err -} - -// Delete takes name of the cSIDriver and deletes it. Returns an error if one occurs. -func (c *FakeCSIDrivers) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(csidriversResource, name), &v1beta1.CSIDriver{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeCSIDrivers) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(csidriversResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.CSIDriverList{}) - return err -} - -// Patch applies the patch and returns the patched cSIDriver. -func (c *FakeCSIDrivers) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CSIDriver, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(csidriversResource, name, pt, data, subresources...), &v1beta1.CSIDriver{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSIDriver), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go deleted file mode 100644 index 0050f4743d..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_csinode.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/storage/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeCSINodes implements CSINodeInterface -type FakeCSINodes struct { - Fake *FakeStorageV1beta1 -} - -var csinodesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "csinodes"} - -var csinodesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1beta1", Kind: "CSINode"} - -// Get takes name of the cSINode, and returns the corresponding cSINode object, and an error if there is any. -func (c *FakeCSINodes) Get(name string, options v1.GetOptions) (result *v1beta1.CSINode, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(csinodesResource, name), &v1beta1.CSINode{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSINode), err -} - -// List takes label and field selectors, and returns the list of CSINodes that match those selectors. -func (c *FakeCSINodes) List(opts v1.ListOptions) (result *v1beta1.CSINodeList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(csinodesResource, csinodesKind, opts), &v1beta1.CSINodeList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.CSINodeList{ListMeta: obj.(*v1beta1.CSINodeList).ListMeta} - for _, item := range obj.(*v1beta1.CSINodeList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested cSINodes. -func (c *FakeCSINodes) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(csinodesResource, opts)) -} - -// Create takes the representation of a cSINode and creates it. Returns the server's representation of the cSINode, and an error, if there is any. -func (c *FakeCSINodes) Create(cSINode *v1beta1.CSINode) (result *v1beta1.CSINode, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(csinodesResource, cSINode), &v1beta1.CSINode{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSINode), err -} - -// Update takes the representation of a cSINode and updates it. Returns the server's representation of the cSINode, and an error, if there is any. -func (c *FakeCSINodes) Update(cSINode *v1beta1.CSINode) (result *v1beta1.CSINode, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(csinodesResource, cSINode), &v1beta1.CSINode{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSINode), err -} - -// Delete takes name of the cSINode and deletes it. Returns an error if one occurs. -func (c *FakeCSINodes) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(csinodesResource, name), &v1beta1.CSINode{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeCSINodes) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(csinodesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.CSINodeList{}) - return err -} - -// Patch applies the patch and returns the patched cSINode. -func (c *FakeCSINodes) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.CSINode, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(csinodesResource, name, pt, data, subresources...), &v1beta1.CSINode{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.CSINode), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go deleted file mode 100644 index 7968c9003a..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storage_client.go +++ /dev/null @@ -1,52 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/client-go/kubernetes/typed/storage/v1beta1" - rest "k8s.io/client-go/rest" - testing "k8s.io/client-go/testing" -) - -type FakeStorageV1beta1 struct { - *testing.Fake -} - -func (c *FakeStorageV1beta1) CSIDrivers() v1beta1.CSIDriverInterface { - return &FakeCSIDrivers{c} -} - -func (c *FakeStorageV1beta1) CSINodes() v1beta1.CSINodeInterface { - return &FakeCSINodes{c} -} - -func (c *FakeStorageV1beta1) StorageClasses() v1beta1.StorageClassInterface { - return &FakeStorageClasses{c} -} - -func (c *FakeStorageV1beta1) VolumeAttachments() v1beta1.VolumeAttachmentInterface { - return &FakeVolumeAttachments{c} -} - -// RESTClient returns a RESTClient that is used to communicate -// with API server by this client implementation. -func (c *FakeStorageV1beta1) RESTClient() rest.Interface { - var ret *rest.RESTClient - return ret -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go deleted file mode 100644 index 9fc8ca991e..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go +++ /dev/null @@ -1,120 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/storage/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeStorageClasses implements StorageClassInterface -type FakeStorageClasses struct { - Fake *FakeStorageV1beta1 -} - -var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "storageclasses"} - -var storageclassesKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1beta1", Kind: "StorageClass"} - -// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any. -func (c *FakeStorageClasses) Get(name string, options v1.GetOptions) (result *v1beta1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(storageclassesResource, name), &v1beta1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StorageClass), err -} - -// List takes label and field selectors, and returns the list of StorageClasses that match those selectors. -func (c *FakeStorageClasses) List(opts v1.ListOptions) (result *v1beta1.StorageClassList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(storageclassesResource, storageclassesKind, opts), &v1beta1.StorageClassList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.StorageClassList{ListMeta: obj.(*v1beta1.StorageClassList).ListMeta} - for _, item := range obj.(*v1beta1.StorageClassList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested storageClasses. -func (c *FakeStorageClasses) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(storageclassesResource, opts)) -} - -// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any. -func (c *FakeStorageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StorageClass), err -} - -// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any. -func (c *FakeStorageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StorageClass), err -} - -// Delete takes name of the storageClass and deletes it. Returns an error if one occurs. -func (c *FakeStorageClasses) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(storageclassesResource, name), &v1beta1.StorageClass{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeStorageClasses) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(storageclassesResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.StorageClassList{}) - return err -} - -// Patch applies the patch and returns the patched storageClass. -func (c *FakeStorageClasses) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(storageclassesResource, name, pt, data, subresources...), &v1beta1.StorageClass{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.StorageClass), err -} diff --git a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go b/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go deleted file mode 100644 index 043098f455..0000000000 --- a/vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake/fake_volumeattachment.go +++ /dev/null @@ -1,131 +0,0 @@ -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by client-gen. DO NOT EDIT. - -package fake - -import ( - v1beta1 "k8s.io/api/storage/v1beta1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - labels "k8s.io/apimachinery/pkg/labels" - schema "k8s.io/apimachinery/pkg/runtime/schema" - types "k8s.io/apimachinery/pkg/types" - watch "k8s.io/apimachinery/pkg/watch" - testing "k8s.io/client-go/testing" -) - -// FakeVolumeAttachments implements VolumeAttachmentInterface -type FakeVolumeAttachments struct { - Fake *FakeStorageV1beta1 -} - -var volumeattachmentsResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "volumeattachments"} - -var volumeattachmentsKind = schema.GroupVersionKind{Group: "storage.k8s.io", Version: "v1beta1", Kind: "VolumeAttachment"} - -// Get takes name of the volumeAttachment, and returns the corresponding volumeAttachment object, and an error if there is any. -func (c *FakeVolumeAttachments) Get(name string, options v1.GetOptions) (result *v1beta1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootGetAction(volumeattachmentsResource, name), &v1beta1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.VolumeAttachment), err -} - -// List takes label and field selectors, and returns the list of VolumeAttachments that match those selectors. -func (c *FakeVolumeAttachments) List(opts v1.ListOptions) (result *v1beta1.VolumeAttachmentList, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootListAction(volumeattachmentsResource, volumeattachmentsKind, opts), &v1beta1.VolumeAttachmentList{}) - if obj == nil { - return nil, err - } - - label, _, _ := testing.ExtractFromListOptions(opts) - if label == nil { - label = labels.Everything() - } - list := &v1beta1.VolumeAttachmentList{ListMeta: obj.(*v1beta1.VolumeAttachmentList).ListMeta} - for _, item := range obj.(*v1beta1.VolumeAttachmentList).Items { - if label.Matches(labels.Set(item.Labels)) { - list.Items = append(list.Items, item) - } - } - return list, err -} - -// Watch returns a watch.Interface that watches the requested volumeAttachments. -func (c *FakeVolumeAttachments) Watch(opts v1.ListOptions) (watch.Interface, error) { - return c.Fake. - InvokesWatch(testing.NewRootWatchAction(volumeattachmentsResource, opts)) -} - -// Create takes the representation of a volumeAttachment and creates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Create(volumeAttachment *v1beta1.VolumeAttachment) (result *v1beta1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootCreateAction(volumeattachmentsResource, volumeAttachment), &v1beta1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.VolumeAttachment), err -} - -// Update takes the representation of a volumeAttachment and updates it. Returns the server's representation of the volumeAttachment, and an error, if there is any. -func (c *FakeVolumeAttachments) Update(volumeAttachment *v1beta1.VolumeAttachment) (result *v1beta1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateAction(volumeattachmentsResource, volumeAttachment), &v1beta1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.VolumeAttachment), err -} - -// UpdateStatus was generated because the type contains a Status member. -// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus(). -func (c *FakeVolumeAttachments) UpdateStatus(volumeAttachment *v1beta1.VolumeAttachment) (*v1beta1.VolumeAttachment, error) { - obj, err := c.Fake. - Invokes(testing.NewRootUpdateSubresourceAction(volumeattachmentsResource, "status", volumeAttachment), &v1beta1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.VolumeAttachment), err -} - -// Delete takes name of the volumeAttachment and deletes it. Returns an error if one occurs. -func (c *FakeVolumeAttachments) Delete(name string, options *v1.DeleteOptions) error { - _, err := c.Fake. - Invokes(testing.NewRootDeleteAction(volumeattachmentsResource, name), &v1beta1.VolumeAttachment{}) - return err -} - -// DeleteCollection deletes a collection of objects. -func (c *FakeVolumeAttachments) DeleteCollection(options *v1.DeleteOptions, listOptions v1.ListOptions) error { - action := testing.NewRootDeleteCollectionAction(volumeattachmentsResource, listOptions) - - _, err := c.Fake.Invokes(action, &v1beta1.VolumeAttachmentList{}) - return err -} - -// Patch applies the patch and returns the patched volumeAttachment. -func (c *FakeVolumeAttachments) Patch(name string, pt types.PatchType, data []byte, subresources ...string) (result *v1beta1.VolumeAttachment, err error) { - obj, err := c.Fake. - Invokes(testing.NewRootPatchSubresourceAction(volumeattachmentsResource, name, pt, data, subresources...), &v1beta1.VolumeAttachment{}) - if obj == nil { - return nil, err - } - return obj.(*v1beta1.VolumeAttachment), err -} diff --git a/vendor/k8s.io/client-go/tools/watch/informerwatcher.go b/vendor/k8s.io/client-go/tools/watch/informerwatcher.go deleted file mode 100644 index 4e0a400bb5..0000000000 --- a/vendor/k8s.io/client-go/tools/watch/informerwatcher.go +++ /dev/null @@ -1,150 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package watch - -import ( - "sync" - - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/tools/cache" -) - -func newEventProcessor(out chan<- watch.Event) *eventProcessor { - return &eventProcessor{ - out: out, - cond: sync.NewCond(&sync.Mutex{}), - done: make(chan struct{}), - } -} - -// eventProcessor buffers events and writes them to an out chan when a reader -// is waiting. Because of the requirement to buffer events, it synchronizes -// input with a condition, and synchronizes output with a channels. It needs to -// be able to yield while both waiting on an input condition and while blocked -// on writing to the output channel. -type eventProcessor struct { - out chan<- watch.Event - - cond *sync.Cond - buff []watch.Event - - done chan struct{} -} - -func (e *eventProcessor) run() { - for { - batch := e.takeBatch() - e.writeBatch(batch) - if e.stopped() { - return - } - } -} - -func (e *eventProcessor) takeBatch() []watch.Event { - e.cond.L.Lock() - defer e.cond.L.Unlock() - - for len(e.buff) == 0 && !e.stopped() { - e.cond.Wait() - } - - batch := e.buff - e.buff = nil - return batch -} - -func (e *eventProcessor) writeBatch(events []watch.Event) { - for _, event := range events { - select { - case e.out <- event: - case <-e.done: - return - } - } -} - -func (e *eventProcessor) push(event watch.Event) { - e.cond.L.Lock() - defer e.cond.L.Unlock() - defer e.cond.Signal() - e.buff = append(e.buff, event) -} - -func (e *eventProcessor) stopped() bool { - select { - case <-e.done: - return true - default: - return false - } -} - -func (e *eventProcessor) stop() { - close(e.done) - e.cond.Signal() -} - -// NewIndexerInformerWatcher will create an IndexerInformer and wrap it into watch.Interface -// so you can use it anywhere where you'd have used a regular Watcher returned from Watch method. -// it also returns a channel you can use to wait for the informers to fully shutdown. -func NewIndexerInformerWatcher(lw cache.ListerWatcher, objType runtime.Object) (cache.Indexer, cache.Controller, watch.Interface, <-chan struct{}) { - ch := make(chan watch.Event) - w := watch.NewProxyWatcher(ch) - e := newEventProcessor(ch) - - indexer, informer := cache.NewIndexerInformer(lw, objType, 0, cache.ResourceEventHandlerFuncs{ - AddFunc: func(obj interface{}) { - e.push(watch.Event{ - Type: watch.Added, - Object: obj.(runtime.Object), - }) - }, - UpdateFunc: func(old, new interface{}) { - e.push(watch.Event{ - Type: watch.Modified, - Object: new.(runtime.Object), - }) - }, - DeleteFunc: func(obj interface{}) { - staleObj, stale := obj.(cache.DeletedFinalStateUnknown) - if stale { - // We have no means of passing the additional information down using - // watch API based on watch.Event but the caller can filter such - // objects by checking if metadata.deletionTimestamp is set - obj = staleObj - } - - e.push(watch.Event{ - Type: watch.Deleted, - Object: obj.(runtime.Object), - }) - }, - }, cache.Indexers{}) - - go e.run() - - doneCh := make(chan struct{}) - go func() { - defer close(doneCh) - defer e.stop() - informer.Run(w.StopChan()) - }() - - return indexer, informer, w, doneCh -} diff --git a/vendor/k8s.io/client-go/tools/watch/retrywatcher.go b/vendor/k8s.io/client-go/tools/watch/retrywatcher.go deleted file mode 100644 index 47ae9df4af..0000000000 --- a/vendor/k8s.io/client-go/tools/watch/retrywatcher.go +++ /dev/null @@ -1,287 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package watch - -import ( - "context" - "errors" - "fmt" - "io" - "net/http" - "time" - - "github.com/davecgh/go-spew/spew" - - apierrors "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/net" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/tools/cache" - "k8s.io/klog" -) - -// resourceVersionGetter is an interface used to get resource version from events. -// We can't reuse an interface from meta otherwise it would be a cyclic dependency and we need just this one method -type resourceVersionGetter interface { - GetResourceVersion() string -} - -// RetryWatcher will make sure that in case the underlying watcher is closed (e.g. due to API timeout or etcd timeout) -// it will get restarted from the last point without the consumer even knowing about it. -// RetryWatcher does that by inspecting events and keeping track of resourceVersion. -// Especially useful when using watch.UntilWithoutRetry where premature termination is causing issues and flakes. -// Please note that this is not resilient to etcd cache not having the resource version anymore - you would need to -// use Informers for that. -type RetryWatcher struct { - lastResourceVersion string - watcherClient cache.Watcher - resultChan chan watch.Event - stopChan chan struct{} - doneChan chan struct{} - minRestartDelay time.Duration -} - -// NewRetryWatcher creates a new RetryWatcher. -// It will make sure that watches gets restarted in case of recoverable errors. -// The initialResourceVersion will be given to watch method when first called. -func NewRetryWatcher(initialResourceVersion string, watcherClient cache.Watcher) (*RetryWatcher, error) { - return newRetryWatcher(initialResourceVersion, watcherClient, 1*time.Second) -} - -func newRetryWatcher(initialResourceVersion string, watcherClient cache.Watcher, minRestartDelay time.Duration) (*RetryWatcher, error) { - switch initialResourceVersion { - case "", "0": - // TODO: revisit this if we ever get WATCH v2 where it means start "now" - // without doing the synthetic list of objects at the beginning (see #74022) - return nil, fmt.Errorf("initial RV %q is not supported due to issues with underlying WATCH", initialResourceVersion) - default: - break - } - - rw := &RetryWatcher{ - lastResourceVersion: initialResourceVersion, - watcherClient: watcherClient, - stopChan: make(chan struct{}), - doneChan: make(chan struct{}), - resultChan: make(chan watch.Event, 0), - minRestartDelay: minRestartDelay, - } - - go rw.receive() - return rw, nil -} - -func (rw *RetryWatcher) send(event watch.Event) bool { - // Writing to an unbuffered channel is blocking operation - // and we need to check if stop wasn't requested while doing so. - select { - case rw.resultChan <- event: - return true - case <-rw.stopChan: - return false - } -} - -// doReceive returns true when it is done, false otherwise. -// If it is not done the second return value holds the time to wait before calling it again. -func (rw *RetryWatcher) doReceive() (bool, time.Duration) { - watcher, err := rw.watcherClient.Watch(metav1.ListOptions{ - ResourceVersion: rw.lastResourceVersion, - }) - // We are very unlikely to hit EOF here since we are just establishing the call, - // but it may happen that the apiserver is just shutting down (e.g. being restarted) - // This is consistent with how it is handled for informers - switch err { - case nil: - break - - case io.EOF: - // watch closed normally - return false, 0 - - case io.ErrUnexpectedEOF: - klog.V(1).Infof("Watch closed with unexpected EOF: %v", err) - return false, 0 - - default: - msg := "Watch failed: %v" - if net.IsProbableEOF(err) { - klog.V(5).Infof(msg, err) - // Retry - return false, 0 - } - - klog.Errorf(msg, err) - // Retry - return false, 0 - } - - if watcher == nil { - klog.Error("Watch returned nil watcher") - // Retry - return false, 0 - } - - ch := watcher.ResultChan() - defer watcher.Stop() - - for { - select { - case <-rw.stopChan: - klog.V(4).Info("Stopping RetryWatcher.") - return true, 0 - case event, ok := <-ch: - if !ok { - klog.V(4).Infof("Failed to get event! Re-creating the watcher. Last RV: %s", rw.lastResourceVersion) - return false, 0 - } - - // We need to inspect the event and get ResourceVersion out of it - switch event.Type { - case watch.Added, watch.Modified, watch.Deleted, watch.Bookmark: - metaObject, ok := event.Object.(resourceVersionGetter) - if !ok { - _ = rw.send(watch.Event{ - Type: watch.Error, - Object: &apierrors.NewInternalError(errors.New("retryWatcher: doesn't support resourceVersion")).ErrStatus, - }) - // We have to abort here because this might cause lastResourceVersion inconsistency by skipping a potential RV with valid data! - return true, 0 - } - - resourceVersion := metaObject.GetResourceVersion() - if resourceVersion == "" { - _ = rw.send(watch.Event{ - Type: watch.Error, - Object: &apierrors.NewInternalError(fmt.Errorf("retryWatcher: object %#v doesn't support resourceVersion", event.Object)).ErrStatus, - }) - // We have to abort here because this might cause lastResourceVersion inconsistency by skipping a potential RV with valid data! - return true, 0 - } - - // All is fine; send the event and update lastResourceVersion - ok = rw.send(event) - if !ok { - return true, 0 - } - rw.lastResourceVersion = resourceVersion - - continue - - case watch.Error: - // This round trip allows us to handle unstructured status - errObject := apierrors.FromObject(event.Object) - statusErr, ok := errObject.(*apierrors.StatusError) - if !ok { - klog.Error(spew.Sprintf("Received an error which is not *metav1.Status but %#+v", event.Object)) - // Retry unknown errors - return false, 0 - } - - status := statusErr.ErrStatus - - statusDelay := time.Duration(0) - if status.Details != nil { - statusDelay = time.Duration(status.Details.RetryAfterSeconds) * time.Second - } - - switch status.Code { - case http.StatusGone: - // Never retry RV too old errors - _ = rw.send(event) - return true, 0 - - case http.StatusGatewayTimeout, http.StatusInternalServerError: - // Retry - return false, statusDelay - - default: - // We retry by default. RetryWatcher is meant to proceed unless it is certain - // that it can't. If we are not certain, we proceed with retry and leave it - // up to the user to timeout if needed. - - // Log here so we have a record of hitting the unexpected error - // and we can whitelist some error codes if we missed any that are expected. - klog.V(5).Info(spew.Sprintf("Retrying after unexpected error: %#+v", event.Object)) - - // Retry - return false, statusDelay - } - - default: - klog.Errorf("Failed to recognize Event type %q", event.Type) - _ = rw.send(watch.Event{ - Type: watch.Error, - Object: &apierrors.NewInternalError(fmt.Errorf("retryWatcher failed to recognize Event type %q", event.Type)).ErrStatus, - }) - // We are unable to restart the watch and have to stop the loop or this might cause lastResourceVersion inconsistency by skipping a potential RV with valid data! - return true, 0 - } - } - } -} - -// receive reads the result from a watcher, restarting it if necessary. -func (rw *RetryWatcher) receive() { - defer close(rw.doneChan) - defer close(rw.resultChan) - - klog.V(4).Info("Starting RetryWatcher.") - defer klog.V(4).Info("Stopping RetryWatcher.") - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - go func() { - select { - case <-rw.stopChan: - cancel() - return - case <-ctx.Done(): - return - } - }() - - // We use non sliding until so we don't introduce delays on happy path when WATCH call - // timeouts or gets closed and we need to reestablish it while also avoiding hot loops. - wait.NonSlidingUntilWithContext(ctx, func(ctx context.Context) { - done, retryAfter := rw.doReceive() - if done { - cancel() - return - } - - time.Sleep(retryAfter) - - klog.V(4).Infof("Restarting RetryWatcher at RV=%q", rw.lastResourceVersion) - }, rw.minRestartDelay) -} - -// ResultChan implements Interface. -func (rw *RetryWatcher) ResultChan() <-chan watch.Event { - return rw.resultChan -} - -// Stop implements Interface. -func (rw *RetryWatcher) Stop() { - close(rw.stopChan) -} - -// Done allows the caller to be notified when Retry watcher stops. -func (rw *RetryWatcher) Done() <-chan struct{} { - return rw.doneChan -} diff --git a/vendor/k8s.io/client-go/tools/watch/until.go b/vendor/k8s.io/client-go/tools/watch/until.go deleted file mode 100644 index e12d82aca4..0000000000 --- a/vendor/k8s.io/client-go/tools/watch/until.go +++ /dev/null @@ -1,236 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package watch - -import ( - "context" - "errors" - "fmt" - "time" - - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/tools/cache" - "k8s.io/klog" -) - -// PreconditionFunc returns true if the condition has been reached, false if it has not been reached yet, -// or an error if the condition failed or detected an error state. -type PreconditionFunc func(store cache.Store) (bool, error) - -// ConditionFunc returns true if the condition has been reached, false if it has not been reached yet, -// or an error if the condition cannot be checked and should terminate. In general, it is better to define -// level driven conditions over edge driven conditions (pod has ready=true, vs pod modified and ready changed -// from false to true). -type ConditionFunc func(event watch.Event) (bool, error) - -// ErrWatchClosed is returned when the watch channel is closed before timeout in UntilWithoutRetry. -var ErrWatchClosed = errors.New("watch closed before UntilWithoutRetry timeout") - -// UntilWithoutRetry reads items from the watch until each provided condition succeeds, and then returns the last watch -// encountered. The first condition that returns an error terminates the watch (and the event is also returned). -// If no event has been received, the returned event will be nil. -// Conditions are satisfied sequentially so as to provide a useful primitive for higher level composition. -// Waits until context deadline or until context is canceled. -// -// Warning: Unless you have a very specific use case (probably a special Watcher) don't use this function!!! -// Warning: This will fail e.g. on API timeouts and/or 'too old resource version' error. -// Warning: You are most probably looking for a function *Until* or *UntilWithSync* below, -// Warning: solving such issues. -// TODO: Consider making this function private to prevent misuse when the other occurrences in our codebase are gone. -func UntilWithoutRetry(ctx context.Context, watcher watch.Interface, conditions ...ConditionFunc) (*watch.Event, error) { - ch := watcher.ResultChan() - defer watcher.Stop() - var lastEvent *watch.Event - for _, condition := range conditions { - // check the next condition against the previous event and short circuit waiting for the next watch - if lastEvent != nil { - done, err := condition(*lastEvent) - if err != nil { - return lastEvent, err - } - if done { - continue - } - } - ConditionSucceeded: - for { - select { - case event, ok := <-ch: - if !ok { - return lastEvent, ErrWatchClosed - } - lastEvent = &event - - done, err := condition(event) - if err != nil { - return lastEvent, err - } - if done { - break ConditionSucceeded - } - - case <-ctx.Done(): - return lastEvent, wait.ErrWaitTimeout - } - } - } - return lastEvent, nil -} - -// Until wraps the watcherClient's watch function with RetryWatcher making sure that watcher gets restarted in case of errors. -// The initialResourceVersion will be given to watch method when first called. It shall not be "" or "0" -// given the underlying WATCH call issues (#74022). If you want the initial list ("", "0") done for you use ListWatchUntil instead. -// Remaining behaviour is identical to function UntilWithoutRetry. (See above.) -// Until can deal with API timeouts and lost connections. -// It guarantees you to see all events and in the order they happened. -// Due to this guarantee there is no way it can deal with 'Resource version too old error'. It will fail in this case. -// (See `UntilWithSync` if you'd prefer to recover from all the errors including RV too old by re-listing -// those items. In normal code you should care about being level driven so you'd not care about not seeing all the edges.) -// The most frequent usage for Until would be a test where you want to verify exact order of events ("edges"). -func Until(ctx context.Context, initialResourceVersion string, watcherClient cache.Watcher, conditions ...ConditionFunc) (*watch.Event, error) { - w, err := NewRetryWatcher(initialResourceVersion, watcherClient) - if err != nil { - return nil, err - } - - return UntilWithoutRetry(ctx, w, conditions...) -} - -// UntilWithSync creates an informer from lw, optionally checks precondition when the store is synced, -// and watches the output until each provided condition succeeds, in a way that is identical -// to function UntilWithoutRetry. (See above.) -// UntilWithSync can deal with all errors like API timeout, lost connections and 'Resource version too old'. -// It is the only function that can recover from 'Resource version too old', Until and UntilWithoutRetry will -// just fail in that case. On the other hand it can't provide you with guarantees as strong as using simple -// Watch method with Until. It can skip some intermediate events in case of watch function failing but it will -// re-list to recover and you always get an event, if there has been a change, after recovery. -// Also with the current implementation based on DeltaFIFO, order of the events you receive is guaranteed only for -// particular object, not between more of them even it's the same resource. -// The most frequent usage would be a command that needs to watch the "state of the world" and should't fail, like: -// waiting for object reaching a state, "small" controllers, ... -func UntilWithSync(ctx context.Context, lw cache.ListerWatcher, objType runtime.Object, precondition PreconditionFunc, conditions ...ConditionFunc) (*watch.Event, error) { - indexer, informer, watcher, done := NewIndexerInformerWatcher(lw, objType) - // We need to wait for the internal informers to fully stop so it's easier to reason about - // and it works with non-thread safe clients. - defer func() { <-done }() - // Proxy watcher can be stopped multiple times so it's fine to use defer here to cover alternative branches and - // let UntilWithoutRetry to stop it - defer watcher.Stop() - - if precondition != nil { - if !cache.WaitForCacheSync(ctx.Done(), informer.HasSynced) { - return nil, fmt.Errorf("UntilWithSync: unable to sync caches: %v", ctx.Err()) - } - - done, err := precondition(indexer) - if err != nil { - return nil, err - } - - if done { - return nil, nil - } - } - - return UntilWithoutRetry(ctx, watcher, conditions...) -} - -// ContextWithOptionalTimeout wraps context.WithTimeout and handles infinite timeouts expressed as 0 duration. -func ContextWithOptionalTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { - if timeout < 0 { - // This should be handled in validation - klog.Errorf("Timeout for context shall not be negative!") - timeout = 0 - } - - if timeout == 0 { - return context.WithCancel(parent) - } - - return context.WithTimeout(parent, timeout) -} - -// ListWatchUntil first lists objects, converts them into synthetic ADDED events -// and checks conditions for those synthetic events. If the conditions have not been reached so far -// it continues by calling Until which establishes a watch from resourceVersion of the list call -// to evaluate those conditions based on new events. -// ListWatchUntil provides the same guarantees as Until and replaces the old WATCH from RV "" (or "0") -// which was mixing list and watch calls internally and having severe design issues. (see #74022) -// There is no resourceVersion order guarantee for the initial list and those synthetic events. -func ListWatchUntil(ctx context.Context, lw cache.ListerWatcher, conditions ...ConditionFunc) (*watch.Event, error) { - if len(conditions) == 0 { - return nil, nil - } - - list, err := lw.List(metav1.ListOptions{}) - if err != nil { - return nil, err - } - initialItems, err := meta.ExtractList(list) - if err != nil { - return nil, err - } - - // use the initial items as simulated "adds" - var lastEvent *watch.Event - currIndex := 0 - passedConditions := 0 - for _, condition := range conditions { - // check the next condition against the previous event and short circuit waiting for the next watch - if lastEvent != nil { - done, err := condition(*lastEvent) - if err != nil { - return lastEvent, err - } - if done { - passedConditions = passedConditions + 1 - continue - } - } - - ConditionSucceeded: - for currIndex < len(initialItems) { - lastEvent = &watch.Event{Type: watch.Added, Object: initialItems[currIndex]} - currIndex++ - - done, err := condition(*lastEvent) - if err != nil { - return lastEvent, err - } - if done { - passedConditions = passedConditions + 1 - break ConditionSucceeded - } - } - } - if passedConditions == len(conditions) { - return lastEvent, nil - } - remainingConditions := conditions[passedConditions:] - - metaObj, err := meta.ListAccessor(list) - if err != nil { - return nil, err - } - currResourceVersion := metaObj.GetResourceVersion() - - return Until(ctx, currResourceVersion, lw, remainingConditions...) -} diff --git a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/README.md b/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/README.md deleted file mode 100644 index 26b09715d6..0000000000 --- a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# crd-validation - -Forked from https://github.com/ant31/crd-validation diff --git a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/cli-utils.go b/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/cli-utils.go deleted file mode 100644 index 8c2f34de61..0000000000 --- a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/cli-utils.go +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2018 -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v1beta1 - -import ( - "encoding/json" - "fmt" - "io" - "strings" - - "github.com/appscode/go/types" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/kube-openapi/pkg/common" - "sigs.k8s.io/yaml" -) - -// Config stores the user configuration input -type Config struct { - SpecDefinitionName string - EnableValidation bool - OutputFormat string - Labels Labels - Annotations Labels - ResourceScope string - Group string - Kind string - Plural string - Singular string - ShortNames []string - Categories []string - GetOpenAPIDefinitions GetAPIDefinitions - EnableStatusSubresource bool - EnableScaleSubresource bool - Versions []extensionsobj.CustomResourceDefinitionVersion - AdditionalPrinterColumns []extensionsobj.CustomResourceColumnDefinition -} - -type Labels struct { - LabelsString string - LabelsMap map[string]string -} - -func (labels *Labels) Type() string { return "Labels" } - -// Implement the flag.Value interface -func (labels *Labels) String() string { - return labels.LabelsString -} - -// Merge labels create a new map with labels merged. -func (labels *Labels) Merge(otherLabels map[string]string) map[string]string { - mergedLabels := map[string]string{} - - for key, value := range otherLabels { - mergedLabels[key] = value - } - - for key, value := range labels.LabelsMap { - mergedLabels[key] = value - } - return mergedLabels -} - -// Implement the flag.Set interface -func (labels *Labels) Set(value string) error { - m := map[string]string{} - if value != "" { - splited := strings.Split(value, ",") - for _, pair := range splited { - sp := strings.Split(pair, "=") - m[sp[0]] = sp[1] - } - } - (*labels).LabelsMap = m - (*labels).LabelsString = value - return nil -} - -func NewCustomResourceDefinition(config Config, options ...func(map[string]common.OpenAPIDefinition)) *extensionsobj.CustomResourceDefinition { - if len(config.Versions) == 0 { - panic(fmt.Sprintf("at least one version must be defined for CRD %s:%s", config.Group, config.Kind)) - } - - crd := &extensionsobj.CustomResourceDefinition{ - ObjectMeta: metav1.ObjectMeta{ - Name: config.Plural + "." + config.Group, - Labels: config.Labels.LabelsMap, - Annotations: config.Annotations.LabelsMap, - }, - TypeMeta: CustomResourceDefinitionTypeMeta, - Spec: extensionsobj.CustomResourceDefinitionSpec{ - Group: config.Group, - Scope: extensionsobj.ResourceScope(config.ResourceScope), - Names: extensionsobj.CustomResourceDefinitionNames{ - Plural: config.Plural, - Singular: config.Singular, - Kind: config.Kind, - ShortNames: config.ShortNames, - Categories: config.Categories, - }, - Versions: config.Versions, - Version: config.Versions[0].Name, - AdditionalPrinterColumns: config.AdditionalPrinterColumns, - }, - } - if config.SpecDefinitionName != "" && config.EnableValidation { - crd.Spec.Validation = GetCustomResourceValidation(config.SpecDefinitionName, config.GetOpenAPIDefinitions, options) - } - if config.EnableStatusSubresource || config.EnableScaleSubresource { - crd.Spec.Subresources = &extensionsobj.CustomResourceSubresources{} - if config.EnableStatusSubresource { - crd.Spec.Subresources.Status = &extensionsobj.CustomResourceSubresourceStatus{} - } - if config.EnableScaleSubresource { - crd.Spec.Subresources.Scale = &extensionsobj.CustomResourceSubresourceScale{ - SpecReplicasPath: ".spec.replicas", - StatusReplicasPath: ".status.replicas", - LabelSelectorPath: types.StringP(".status.labelSelector"), - } - } - } - return crd -} - -func MarshallCrd(w io.Writer, crd *extensionsobj.CustomResourceDefinition, outputFormat string) error { - jsonBytes, err := json.Marshal(crd) - if err != nil { - return err - } - - var r unstructured.Unstructured - if err := json.Unmarshal(jsonBytes, &r.Object); err != nil { - return err - } - - unstructured.RemoveNestedField(r.Object, "status") - - jsonBytes, err = json.MarshalIndent(r.Object, "", " ") - if err != nil { - return err - } - - if outputFormat == "json" { - _, err = w.Write(jsonBytes) - if err != nil { - return err - } - } else { - yamlBytes, err := yaml.JSONToYAML(jsonBytes) - if err != nil { - return err - } - - _, err = w.Write([]byte("---\n")) - if err != nil { - return err - } - - _, err = w.Write(yamlBytes) - if err != nil { - return err - } - } - - return nil -} diff --git a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/convert_types.go b/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/convert_types.go deleted file mode 100644 index 8be8127309..0000000000 --- a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/convert_types.go +++ /dev/null @@ -1,126 +0,0 @@ -package v1beta1 - -import ( - "fmt" - - "github.com/go-openapi/spec" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - "k8s.io/kube-openapi/pkg/common" -) - -// SchemaPropsToJSONPropsArray converts []Schema to []JSONSchemaProps -func SchemaPropsToJSONPropsArray(schemas []spec.Schema, openapiSpec map[string]common.OpenAPIDefinition, nested bool) []extensionsobj.JSONSchemaProps { - var s []extensionsobj.JSONSchemaProps - for _, schema := range schemas { - s = append(s, *SchemaPropsToJSONProps(&schema, openapiSpec, nested)) - } - return s -} - -// StringOrArrayToString converts StringOrArray to string -func StringOrArrayToString(strOrArray spec.StringOrArray) string { - if len(strOrArray) > 0 { - return strOrArray[0] - } - return "" -} - -// EnumJSON converts []interface{} to []JSON -func EnumJSON(enum []interface{}) []extensionsobj.JSON { - var s []extensionsobj.JSON - for _, elt := range enum { - s = append(s, extensionsobj.JSON{ - Raw: []byte(fmt.Sprintf("%v", elt)), - }) - } - return s -} - -// SchemaOrArrayToJSONItems converts *SchemaOrArray to *JSONSchemaPropsOrArray -func SchemaOrArrayToJSONItems(schemaOrArray *spec.SchemaOrArray, openapiSpec map[string]common.OpenAPIDefinition, nested bool) *extensionsobj.JSONSchemaPropsOrArray { - var array *extensionsobj.JSONSchemaPropsOrArray - if schemaOrArray == nil { - return array - } - return &extensionsobj.JSONSchemaPropsOrArray{ - Schema: SchemaPropsToJSONProps(schemaOrArray.Schema, openapiSpec, nested), - JSONSchemas: SchemaPropsToJSONPropsArray(schemaOrArray.Schemas, openapiSpec, nested), - } -} - -// SchemaOrBoolToJSONProps converts *SchemaOrBool to *JSONSchemaPropsOrBool -func SchemaOrBoolToJSONProps(schemaOrBool *spec.SchemaOrBool, openapiSpec map[string]common.OpenAPIDefinition, nested bool) *extensionsobj.JSONSchemaPropsOrBool { - var s *extensionsobj.JSONSchemaPropsOrBool - if schemaOrBool == nil { - return s - } - return &extensionsobj.JSONSchemaPropsOrBool{ - Schema: SchemaPropsToJSONProps(schemaOrBool.Schema, openapiSpec, nested), - Allows: schemaOrBool.Allows, - } -} - -// SchemPropsMapToJSONMap converts map[string]Schema to map[string]JSONSchemaProps -func SchemPropsMapToJSONMap(schemaMap map[string]spec.Schema, openapiSpec map[string]common.OpenAPIDefinition, nested bool) map[string]extensionsobj.JSONSchemaProps { - m := make(map[string]extensionsobj.JSONSchemaProps) - for key, schema := range schemaMap { - m[key] = *SchemaPropsToJSONProps(&schema, openapiSpec, nested) - } - return m -} - -// SchemaPropsToJSONProps converts a SchemaProps to a JSONProps -func SchemaPropsToJSONProps(schema *spec.Schema, openapiSpec map[string]common.OpenAPIDefinition, nested bool) *extensionsobj.JSONSchemaProps { - var props *extensionsobj.JSONSchemaProps - if schema == nil { - return props - } - schemaProps := &schema.SchemaProps - - var ref *string - if schemaProps.Ref.String() != "" { - if nested { - propref := openapiSpec[schemaProps.Ref.String()].Schema - // If nested just return a pointer to the reference - return SchemaPropsToJSONProps(&propref, openapiSpec, nested) - } - ref = new(string) - *ref = schemaProps.Ref.String() - } - - props = &extensionsobj.JSONSchemaProps{ - Ref: ref, - ID: schemaProps.ID, - Schema: extensionsobj.JSONSchemaURL(string(schema.Schema)), - Description: schemaProps.Description, - Type: StringOrArrayToString(schemaProps.Type), - Format: schemaProps.Format, - Title: schemaProps.Title, - Maximum: schemaProps.Maximum, - ExclusiveMaximum: schemaProps.ExclusiveMaximum, - Minimum: schemaProps.Minimum, - ExclusiveMinimum: schemaProps.ExclusiveMinimum, - MaxLength: schemaProps.MaxLength, - MinLength: schemaProps.MinLength, - Pattern: schemaProps.Pattern, - MaxItems: schemaProps.MaxItems, - MinItems: schemaProps.MinItems, - UniqueItems: schemaProps.UniqueItems, - MultipleOf: schemaProps.MultipleOf, - Enum: EnumJSON(schemaProps.Enum), - MaxProperties: schemaProps.MaxProperties, - MinProperties: schemaProps.MinProperties, - Required: schemaProps.Required, - Items: SchemaOrArrayToJSONItems(schemaProps.Items, openapiSpec, nested), - AllOf: SchemaPropsToJSONPropsArray(schemaProps.AllOf, openapiSpec, nested), - OneOf: SchemaPropsToJSONPropsArray(schemaProps.OneOf, openapiSpec, nested), - AnyOf: SchemaPropsToJSONPropsArray(schemaProps.AnyOf, openapiSpec, nested), - Not: SchemaPropsToJSONProps(schemaProps.Not, openapiSpec, nested), - Properties: SchemPropsMapToJSONMap(schemaProps.Properties, openapiSpec, nested), - // BUG: https://github.com/kubernetes/kubernetes/pull/61991 - // AdditionalProperties: SchemaOrBoolToJSONProps(schemaProps.AdditionalProperties, openapiSpec, nested), - PatternProperties: SchemPropsMapToJSONMap(schemaProps.PatternProperties, openapiSpec, nested), - AdditionalItems: SchemaOrBoolToJSONProps(schemaProps.AdditionalItems, openapiSpec, nested), - } - return props -} diff --git a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/crdvalidation.go b/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/crdvalidation.go deleted file mode 100644 index f85c0a39d4..0000000000 --- a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/crdvalidation.go +++ /dev/null @@ -1,95 +0,0 @@ -package v1beta1 - -import ( - "github.com/go-openapi/spec" - extensionsobj "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/kube-openapi/pkg/common" -) - -// CustomResourceDefinitionTypeMeta set the default kind/apiversion of CRD -var CustomResourceDefinitionTypeMeta = metav1.TypeMeta{ - Kind: "CustomResourceDefinition", - APIVersion: "apiextensions.k8s.io/v1beta1", -} - -// OpenAPIRefCallBack returns a jsonref using the input string without modification -func OpenAPIRefCallBack(name string) spec.Ref { - return spec.MustCreateRef(name) -} - -// GetAPIDefinition is a function returning a map with all Definition -type GetAPIDefinitions func(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition - -// GetCustomResourceValidations returns a CRD validation spec map. It took the openapi generated definition from kube-openapi as argument -func GetCustomResourceValidations(fn GetAPIDefinitions) map[string]*extensionsobj.CustomResourceValidation { - openapiSpec := fn(OpenAPIRefCallBack) - definitions := make(map[string]*extensionsobj.CustomResourceValidation) - for key, definition := range openapiSpec { - schema := definition.Schema - definitions[key] = &extensionsobj.CustomResourceValidation{ - OpenAPIV3Schema: SchemaPropsToJSONProps(&schema, openapiSpec, true), - } - } - return definitions -} - -// GetCustomResourceValidation returns the validation definition for a CRD name -func GetCustomResourceValidation(name string, fn func(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition, options []func(map[string]common.OpenAPIDefinition)) *extensionsobj.CustomResourceValidation { - openapiSpec := fn(OpenAPIRefCallBack) - options = append(options, fixKnownTypes) - for _, f := range options { - f(openapiSpec) - } - schema := openapiSpec[name].Schema - crv := &extensionsobj.CustomResourceValidation{ - OpenAPIV3Schema: SchemaPropsToJSONProps(&schema, openapiSpec, true), - } - crv.OpenAPIV3Schema.Description = "" - crv.OpenAPIV3Schema.Required = nil - return crv -} - -// ref: https://github.com/kubernetes/kubernetes/issues/62329 -func fixKnownTypes(openapiSpec map[string]common.OpenAPIDefinition) { - openapiSpec["k8s.io/apimachinery/pkg/util/intstr.IntOrString"] = common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - OneOf: []spec.Schema{ - { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - }, - }, - { - SchemaProps: spec.SchemaProps{ - Type: []string{"integer"}, - }, - }, - }, - }, - }, - } - - // anyOf is not defined in v2 spec so can't be be returned from IntHash.OpenAPIDefinition() - openapiSpec["github.com/appscode/go/encoding/json/types.IntHash"] = common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - OneOf: []spec.Schema{ - { - SchemaProps: spec.SchemaProps{ - Type: []string{"string"}, - Format: "", - }, - }, - { - SchemaProps: spec.SchemaProps{ - Type: []string{"integer"}, - Format: "int64", - }, - }, - }, - }, - }, - } -} diff --git a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/kubernetes.go b/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/kubernetes.go deleted file mode 100644 index 9a33e143d0..0000000000 --- a/vendor/kmodules.xyz/client-go/apiextensions/v1beta1/kubernetes.go +++ /dev/null @@ -1,96 +0,0 @@ -package v1beta1 - -import ( - "fmt" - "net/http" - "time" - - discovery_util "kmodules.xyz/client-go/discovery" - - "github.com/pkg/errors" - crd_api "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - crd_cs "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/client-go/discovery" - "k8s.io/client-go/rest" -) - -func RegisterCRDs(disClient discovery.DiscoveryInterface, apiextClient crd_cs.ApiextensionsV1beta1Interface, crds []*crd_api.CustomResourceDefinition) error { - major, minor, _, _, _, err := discovery_util.GetVersionInfo(disClient) - if err != nil { - return err - } - - for _, crd := range crds { - if major == 1 && minor <= 11 { - // CRD schema must only have "properties", "required" or "description" at the root if the status subresource is enabled - // xref: https://github.com/stashed/stash/issues/1007#issuecomment-570888875 - crd.Spec.Validation.OpenAPIV3Schema.Type = "" - } - - existing, err := apiextClient.CustomResourceDefinitions().Get(crd.Name, metav1.GetOptions{}) - if kerr.IsNotFound(err) { - _, err = apiextClient.CustomResourceDefinitions().Create(crd) - if err != nil { - return err - } - } else if err != nil { - return err - } else { - // Update AdditionalPrinterColumns, Catagories, ShortNames, Validation - // and Subresources of existing CRD. - existing.Spec.AdditionalPrinterColumns = crd.Spec.AdditionalPrinterColumns - existing.Spec.Names.Categories = crd.Spec.Names.Categories - existing.Spec.Names.ShortNames = crd.Spec.Names.ShortNames - existing.Spec.Validation = crd.Spec.Validation - - if crd.Spec.Subresources != nil && existing.Spec.Subresources == nil { - existing.Spec.Subresources = &crd_api.CustomResourceSubresources{} - if crd.Spec.Subresources.Status != nil && existing.Spec.Subresources.Status == nil { - existing.Spec.Subresources.Status = crd.Spec.Subresources.Status - } - if crd.Spec.Subresources.Scale != nil && existing.Spec.Subresources.Scale == nil { - existing.Spec.Subresources.Scale = crd.Spec.Subresources.Scale - } - } else if crd.Spec.Subresources == nil && existing.Spec.Subresources != nil { - existing.Spec.Subresources = nil - } - _, err = apiextClient.CustomResourceDefinitions().Update(existing) - if err != nil { - return err - } - } - } - return WaitForCRDReady(apiextClient.RESTClient(), crds) -} - -func WaitForCRDReady(restClient rest.Interface, crds []*crd_api.CustomResourceDefinition) error { - err := wait.Poll(3*time.Second, 5*time.Minute, func() (bool, error) { - for _, crd := range crds { - res := restClient.Get().AbsPath("apis", crd.Spec.Group, crd.Spec.Versions[0].Name, crd.Spec.Names.Plural).Do() - err := res.Error() - if err != nil { - // RESTClient returns *apierrors.StatusError for any status codes < 200 or > 206 - // and http.Client.Do errors are returned directly. - if se, ok := err.(*kerr.StatusError); ok { - if se.Status().Code == http.StatusNotFound { - return false, nil - } - } - return false, err - } - - var statusCode int - res.StatusCode(&statusCode) - if statusCode != http.StatusOK { - return false, errors.Errorf("invalid status code: %d", statusCode) - } - } - - return true, nil - }) - - return errors.Wrap(err, fmt.Sprintf("timed out waiting for CRD")) -} diff --git a/vendor/kmodules.xyz/client-go/dynamic/README.md b/vendor/kmodules.xyz/client-go/dynamic/README.md deleted file mode 100644 index 3ff78e3d8b..0000000000 --- a/vendor/kmodules.xyz/client-go/dynamic/README.md +++ /dev/null @@ -1 +0,0 @@ -Forked from https://github.com/GoogleCloudPlatform/metacontroller diff --git a/vendor/kmodules.xyz/client-go/dynamic/kubernetes.go b/vendor/kmodules.xyz/client-go/dynamic/kubernetes.go deleted file mode 100644 index a9dfaa003f..0000000000 --- a/vendor/kmodules.xyz/client-go/dynamic/kubernetes.go +++ /dev/null @@ -1,325 +0,0 @@ -/* -Copyright The Kmodules Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dynamic - -import ( - "context" - "fmt" - "time" - - v1 "kmodules.xyz/client-go/core/v1" - discovery_util "kmodules.xyz/client-go/discovery" - - "github.com/pkg/errors" - kerr "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/fields" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - utilerrors "k8s.io/apimachinery/pkg/util/errors" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/dynamic" - "k8s.io/client-go/kubernetes" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/cache" - watchtools "k8s.io/client-go/tools/watch" - kutil "kmodules.xyz/client-go" -) - -func WaitUntilDeleted(ri dynamic.ResourceInterface, stopCh <-chan struct{}, name string, subresources ...string) error { - err := ri.Delete(name, &metav1.DeleteOptions{}, subresources...) - if kerr.IsNotFound(err) { - return nil - } else if err != nil { - return err - } - // delete operation was successful, now wait for obj to be removed(eg: objects with finalizers) - return wait.PollImmediateUntil(kutil.RetryInterval, func() (bool, error) { - _, e2 := ri.Get(name, metav1.GetOptions{}, subresources...) - if kerr.IsNotFound(e2) { - return true, nil - } else if e2 != nil && !kutil.IsRequestRetryable(e2) { - return false, e2 - } - return false, nil - }, stopCh) -} - -func UntilHasLabel(config *rest.Config, gvk schema.GroupVersionKind, namespace, name string, key string, value *string, timeout time.Duration) (out string, err error) { - return untilHasKey(config, gvk, namespace, name, func(obj metav1.Object) map[string]string { return obj.GetLabels() }, key, value, timeout) -} - -func UntilHasAnnotation(config *rest.Config, gvk schema.GroupVersionKind, namespace, name string, key string, value *string, timeout time.Duration) (out string, err error) { - return untilHasKey(config, gvk, namespace, name, func(obj metav1.Object) map[string]string { return obj.GetAnnotations() }, key, value, timeout) -} - -func untilHasKey( - config *rest.Config, - gvk schema.GroupVersionKind, - namespace, name string, - fn func(metav1.Object) map[string]string, - key string, value *string, - timeout time.Duration) (out string, err error) { - - ctx := context.Background() - if timeout > 0 { - var cancel context.CancelFunc - ctx, cancel = context.WithTimeout(ctx, timeout) - defer cancel() - } - - kc := kubernetes.NewForConfigOrDie(config) - dc, err := dynamic.NewForConfig(config) - if err != nil { - return - } - - gvr, err := discovery_util.ResourceForGVK(kc.Discovery(), gvk) - if err != nil { - return - } - - var ri dynamic.ResourceInterface - if namespace != "" { - ri = dc.Resource(gvr).Namespace(namespace) - } else { - ri = dc.Resource(gvr) - } - - lw := &cache.ListWatch{ - ListFunc: func(options metav1.ListOptions) (runtime.Object, error) { - options.FieldSelector = fields.OneTermEqualSelector(kutil.ObjectNameField, name).String() - return ri.List(options) - }, - WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) { - options.FieldSelector = fields.OneTermEqualSelector(kutil.ObjectNameField, name).String() - return ri.Watch(options) - }, - } - - _, err = watchtools.UntilWithSync(ctx, - lw, - &unstructured.Unstructured{}, - nil, - func(event watch.Event) (bool, error) { - switch event.Type { - case watch.Deleted: - return false, nil - case watch.Error: - return false, errors.Wrap(err, "error watching") - case watch.Added, watch.Modified: - m, e2 := meta.Accessor(event.Object) - if e2 != nil { - return false, e2 - } - var ok bool - if out, ok = fn(m)[key]; ok && (value == nil || *value == out) { - return true, nil - } - return false, nil // continue - default: - return false, fmt.Errorf("unexpected event type: %v", event.Type) - } - }, - ) - return -} - -func DetectWorkload(config *rest.Config, resource schema.GroupVersionResource, namespace, name string) (*unstructured.Unstructured, schema.GroupVersionResource, error) { - kc := kubernetes.NewForConfigOrDie(config) - dc, err := dynamic.NewForConfig(config) - if err != nil { - return nil, resource, err - } - - var ri dynamic.ResourceInterface - if namespace != "" { - ri = dc.Resource(resource).Namespace(namespace) - } else { - ri = dc.Resource(resource) - } - - obj, err := ri.Get(name, metav1.GetOptions{}) - if err != nil { - return nil, resource, err - } - return findWorkload(kc, dc, resource, obj) -} - -func findWorkload(kc kubernetes.Interface, dc dynamic.Interface, resource schema.GroupVersionResource, obj *unstructured.Unstructured) (*unstructured.Unstructured, schema.GroupVersionResource, error) { - m, err := meta.Accessor(obj) - if err != nil { - return nil, resource, err - } - for _, ref := range m.GetOwnerReferences() { - if ref.Controller != nil && *ref.Controller { - gvk := schema.FromAPIVersionAndKind(ref.APIVersion, ref.Kind) - ar, err := discovery_util.APIResourceForGVK(kc.Discovery(), gvk) - if err != nil { - return nil, schema.GroupVersionResource{}, err - } - gvr := schema.GroupVersionResource{ - Group: ar.Group, - Version: ar.Version, - Resource: ar.Name, - } - var ri dynamic.ResourceInterface - if ar.Namespaced { - ri = dc.Resource(gvr).Namespace(m.GetNamespace()) - } else { - ri = dc.Resource(gvr) - } - parent, err := ri.Get(ref.Name, metav1.GetOptions{}) - if err != nil { - return nil, schema.GroupVersionResource{}, err - } - return findWorkload(kc, dc, gvr, parent) - } - } - return obj, resource, nil -} - -func RemoveOwnerReferenceForItems( - c dynamic.Interface, - gvr schema.GroupVersionResource, - namespace string, - items []string, - owner metav1.Object, -) error { - var ri dynamic.ResourceInterface - if namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(namespace) - } - - var errs []error - for _, name := range items { - item, err := ri.Get(name, metav1.GetOptions{}) - if err != nil { - if !kerr.IsNotFound(err) { - errs = append(errs, err) - } - continue - } - if _, _, err := Patch(c, gvr, item, func(in *unstructured.Unstructured) *unstructured.Unstructured { - v1.RemoveOwnerReference(in, owner) - return in - }); err != nil && !kerr.IsNotFound(err) { - errs = append(errs, err) - } - } - return utilerrors.NewAggregate(errs) -} - -func RemoveOwnerReferenceForSelector( - c dynamic.Interface, - gvr schema.GroupVersionResource, - namespace string, - selector labels.Selector, - owner metav1.Object, -) error { - var ri dynamic.ResourceInterface - if namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(namespace) - } - - list, err := ri.List(metav1.ListOptions{LabelSelector: selector.String()}) - if err != nil { - return err - } - - var errs []error - for _, item := range list.Items { - if _, _, err := Patch(c, gvr, &item, func(in *unstructured.Unstructured) *unstructured.Unstructured { - v1.RemoveOwnerReference(in, owner) - return in - }); err != nil && !kerr.IsNotFound(err) { - errs = append(errs, err) - } - } - return utilerrors.NewAggregate(errs) -} - -func EnsureOwnerReferenceForItems( - c dynamic.Interface, - gvr schema.GroupVersionResource, - namespace string, - items []string, - owner *metav1.OwnerReference, -) error { - var ri dynamic.ResourceInterface - if namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(namespace) - } - - var errs []error - for _, name := range items { - item, err := ri.Get(name, metav1.GetOptions{}) - if err != nil { - if !kerr.IsNotFound(err) { - errs = append(errs, err) - } - continue - } - if _, _, err := Patch(c, gvr, item, func(in *unstructured.Unstructured) *unstructured.Unstructured { - v1.EnsureOwnerReference(in, owner) - return in - }); err != nil && !kerr.IsNotFound(err) { - errs = append(errs, err) - } - } - return utilerrors.NewAggregate(errs) -} - -func EnsureOwnerReferenceForSelector( - c dynamic.Interface, - gvr schema.GroupVersionResource, - namespace string, - selector labels.Selector, - owner *metav1.OwnerReference, -) error { - var ri dynamic.ResourceInterface - if namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(namespace) - } - list, err := ri.List(metav1.ListOptions{LabelSelector: selector.String()}) - if err != nil { - return err - } - - var errs []error - for _, item := range list.Items { - if _, _, err := Patch(c, gvr, &item, func(in *unstructured.Unstructured) *unstructured.Unstructured { - v1.EnsureOwnerReference(in, owner) - return in - }); err != nil && !kerr.IsNotFound(err) { - errs = append(errs, err) - } - } - return utilerrors.NewAggregate(errs) -} diff --git a/vendor/kmodules.xyz/client-go/dynamic/unstructured.go b/vendor/kmodules.xyz/client-go/dynamic/unstructured.go deleted file mode 100644 index e99d497842..0000000000 --- a/vendor/kmodules.xyz/client-go/dynamic/unstructured.go +++ /dev/null @@ -1,179 +0,0 @@ -/* -Copyright The Kmodules Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package dynamic - -import ( - "encoding/json" - "fmt" - - "github.com/golang/glog" - "github.com/pkg/errors" - kerr "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/jsonmergepatch" - "k8s.io/apimachinery/pkg/util/wait" - "k8s.io/client-go/dynamic" - kutil "kmodules.xyz/client-go" -) - -func CreateOrPatch( - c dynamic.Interface, - gvr schema.GroupVersionResource, - meta metav1.ObjectMeta, - transform func(*unstructured.Unstructured) *unstructured.Unstructured, -) (*unstructured.Unstructured, kutil.VerbType, error) { - var ri dynamic.ResourceInterface - if meta.Namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(meta.Namespace) - } - - cur, err := ri.Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(err) { - glog.V(3).Infof("Creating %s %s/%s.", gvr.String(), meta.Namespace, meta.Name) - u := &unstructured.Unstructured{} - u.SetName(meta.Name) - u.SetNamespace(meta.Namespace) - out, err := ri.Create(transform(u), metav1.CreateOptions{}) - return out, kutil.VerbCreated, err - } else if err != nil { - return nil, kutil.VerbUnchanged, err - } - return Patch(c, gvr, cur, transform) -} - -func Patch( - c dynamic.Interface, - gvr schema.GroupVersionResource, - cur *unstructured.Unstructured, - transform func(*unstructured.Unstructured) *unstructured.Unstructured, -) (*unstructured.Unstructured, kutil.VerbType, error) { - return PatchObject(c, gvr, cur, transform(cur.DeepCopy())) -} - -func PatchObject( - c dynamic.Interface, - gvr schema.GroupVersionResource, - cur, mod *unstructured.Unstructured, -) (*unstructured.Unstructured, kutil.VerbType, error) { - var ri dynamic.ResourceInterface - if cur.GetNamespace() == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(cur.GetNamespace()) - } - - curJson, err := json.Marshal(cur) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - modJson, err := json.Marshal(mod) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - - patch, err := jsonmergepatch.CreateThreeWayJSONMergePatch(curJson, modJson, curJson) - if err != nil { - return nil, kutil.VerbUnchanged, err - } - if len(patch) == 0 || string(patch) == "{}" { - return cur, kutil.VerbUnchanged, nil - } - glog.V(3).Infof("Patching %s %s/%s with %s.", gvr.String(), cur.GetNamespace(), cur.GetName(), string(patch)) - out, err := ri.Patch(cur.GetName(), types.MergePatchType, patch, metav1.PatchOptions{}) - return out, kutil.VerbPatched, err -} - -func TryUpdate( - c dynamic.Interface, - gvr schema.GroupVersionResource, - meta metav1.ObjectMeta, - transform func(*unstructured.Unstructured) *unstructured.Unstructured, -) (result *unstructured.Unstructured, err error) { - var ri dynamic.ResourceInterface - if meta.Namespace == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(meta.Namespace) - } - - attempt := 0 - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - cur, e2 := ri.Get(meta.Name, metav1.GetOptions{}) - if kerr.IsNotFound(e2) { - return false, e2 - } else if e2 == nil { - result, e2 = ri.Update(transform(cur.DeepCopy()), metav1.UpdateOptions{}) - return e2 == nil, nil - } - glog.Errorf("Attempt %d failed to update %s %s/%s due to %v.", attempt, gvr.String(), cur.GetNamespace(), cur.GetName(), e2) - return false, nil - }) - - if err != nil { - err = errors.Errorf("failed to update %s %s/%s after %d attempts due to %v", gvr.String(), meta.Namespace, meta.Name, attempt, err) - } - return -} - -func UpdateStatus( - c dynamic.Interface, - gvr schema.GroupVersionResource, - in *unstructured.Unstructured, - transform func(*unstructured.Unstructured) *unstructured.Unstructured, -) (result *unstructured.Unstructured, err error) { - var ri dynamic.ResourceInterface - if in.GetNamespace() == "" { - ri = c.Resource(gvr) - } else { - ri = c.Resource(gvr).Namespace(in.GetNamespace()) - } - - attempt := 0 - cur := in.DeepCopy() - err = wait.PollImmediate(kutil.RetryInterval, kutil.RetryTimeout, func() (bool, error) { - attempt++ - var e2 error - result, e2 = ri.UpdateStatus(transform(cur), metav1.UpdateOptions{}) - if kerr.IsConflict(e2) { - latest, e3 := ri.Get(in.GetName(), metav1.GetOptions{}) - switch { - case e3 == nil: - cur = latest - return false, nil - case kutil.IsRequestRetryable(e3): - return false, nil - default: - return false, e3 - } - } else if err != nil && !kutil.IsRequestRetryable(e2) { - return false, e2 - } - return e2 == nil, nil - }) - - if err != nil { - err = fmt.Errorf("failed to update status of %s %s/%s after %d attempts due to %v", gvr.String(), in.GetNamespace(), in.GetName(), attempt, err) - } - return -} diff --git a/vendor/kmodules.xyz/constants/LICENSE b/vendor/kmodules.xyz/constants/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/vendor/kmodules.xyz/constants/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/kmodules.xyz/constants/aws/constants.go b/vendor/kmodules.xyz/constants/aws/constants.go deleted file mode 100644 index e75577e5ad..0000000000 --- a/vendor/kmodules.xyz/constants/aws/constants.go +++ /dev/null @@ -1,31 +0,0 @@ -package aws - -import ( - "log" - "os" -) - -const ( - AWS_ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID" - AWS_SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY" - CA_CERT_DATA = "CA_CERT_DATA" -) - -const ( - AWSAccess_Key = "access_key" - AWSSecret_Key = "secret_key" -) - -func CredentialsFromEnv() map[string][]byte { - awsAccessKeyId := os.Getenv(AWS_ACCESS_KEY_ID) - awsSecretAccessKey := os.Getenv(AWS_SECRET_ACCESS_KEY) - if len(awsAccessKeyId) == 0 || len(awsSecretAccessKey) == 0 { - log.Println("AWS credentials for empty") - return map[string][]byte{} - } - - return map[string][]byte{ - AWSAccess_Key: []byte(awsAccessKeyId), - AWSSecret_Key: []byte(awsSecretAccessKey), - } -} diff --git a/vendor/kmodules.xyz/constants/azure/constants.go b/vendor/kmodules.xyz/constants/azure/constants.go deleted file mode 100644 index d1da70197f..0000000000 --- a/vendor/kmodules.xyz/constants/azure/constants.go +++ /dev/null @@ -1,40 +0,0 @@ -package azure - -import ( - "log" - "os" -) - -const ( - AZURE_SUBSCRIPTION_ID = "AZURE_SUBSCRIPTION_ID" - AZURE_TENANT_ID = "AZURE_TENANT_ID" - AZURE_CLIENT_ID = "AZURE_CLIENT_ID" - AZURE_CLIENT_SECRET = "AZURE_CLIENT_SECRET" - AZURE_ACCOUNT_NAME = "AZURE_ACCOUNT_NAME" - AZURE_ACCOUNT_KEY = "AZURE_ACCOUNT_KEY" -) - -const ( - AzureClientSecret = "client-secret" - AzureSubscriptionID = "subscription-id" - AzureTenantID = "tenant-id" - AzureClientID = "client-id" -) - -func CredentialsFromEnv() map[string][]byte { - subscriptionID := os.Getenv(AZURE_SUBSCRIPTION_ID) - tenantID := os.Getenv(AZURE_TENANT_ID) - clientID := os.Getenv(AZURE_CLIENT_ID) - clientSecret := os.Getenv(AZURE_CLIENT_SECRET) - if len(subscriptionID) == 0 || len(tenantID) == 0 || len(clientID) == 0 || len(clientSecret) == 0 { - log.Println("Azure credentials for empty") - return map[string][]byte{} - } - - return map[string][]byte{ - AzureSubscriptionID: []byte(subscriptionID), - AzureTenantID: []byte(tenantID), - AzureClientID: []byte(clientID), - AzureClientSecret: []byte(clientSecret), - } -} diff --git a/vendor/kmodules.xyz/constants/google/constants.go b/vendor/kmodules.xyz/constants/google/constants.go deleted file mode 100644 index 94256951ab..0000000000 --- a/vendor/kmodules.xyz/constants/google/constants.go +++ /dev/null @@ -1,38 +0,0 @@ -package google - -import ( - "io/ioutil" - "log" - "os" -) - -const ( - GOOGLE_PROJECT_ID = "GOOGLE_PROJECT_ID" - GOOGLE_SERVICE_ACCOUNT_JSON_KEY = "GOOGLE_SERVICE_ACCOUNT_JSON_KEY" - GOOGLE_APPLICATION_CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS" -) - -const ( - GCPSACredentialJson = "sa.json" -) - -func ServiceAccountFromEnv() string { - if data := os.Getenv(GOOGLE_SERVICE_ACCOUNT_JSON_KEY); len(data) > 0 { - return data - } - if data, err := ioutil.ReadFile(os.Getenv(GOOGLE_APPLICATION_CREDENTIALS)); err == nil { - return string(data) - } - log.Println("GOOGLE_SERVICE_ACCOUNT_JSON_KEY and GOOGLE_APPLICATION_CREDENTIALS are empty") - return "" -} - -func CredentialsFromEnv() map[string][]byte { - sa := ServiceAccountFromEnv() - if len(sa) == 0 { - return map[string][]byte{} - } - return map[string][]byte{ - GCPSACredentialJson: []byte(sa), - } -} diff --git a/vendor/kmodules.xyz/constants/openstack/constants.go b/vendor/kmodules.xyz/constants/openstack/constants.go deleted file mode 100644 index 3e675a8094..0000000000 --- a/vendor/kmodules.xyz/constants/openstack/constants.go +++ /dev/null @@ -1,27 +0,0 @@ -package openstack - -const ( - // swift - OS_USERNAME = "OS_USERNAME" - OS_PASSWORD = "OS_PASSWORD" - OS_REGION_NAME = "OS_REGION_NAME" - OS_AUTH_URL = "OS_AUTH_URL" - - // v3 specific - OS_USER_DOMAIN_NAME = "OS_USER_DOMAIN_NAME" - OS_PROJECT_NAME = "OS_PROJECT_NAME" - OS_PROJECT_DOMAIN_NAME = "OS_PROJECT_DOMAIN_NAME" - - // v2 specific - OS_TENANT_ID = "OS_TENANT_ID" - OS_TENANT_NAME = "OS_TENANT_NAME" - - // v1 specific - ST_AUTH = "ST_AUTH" - ST_USER = "ST_USER" - ST_KEY = "ST_KEY" - - // Manual authentication - OS_STORAGE_URL = "OS_STORAGE_URL" - OS_AUTH_TOKEN = "OS_AUTH_TOKEN" -) diff --git a/vendor/kmodules.xyz/objectstore-api/osm/doc.go b/vendor/kmodules.xyz/objectstore-api/osm/doc.go deleted file mode 100644 index 936b5522b4..0000000000 --- a/vendor/kmodules.xyz/objectstore-api/osm/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -/* -Copyright The Kmodules Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package osm // import "kmodules.xyz/objectstore-api/osm" diff --git a/vendor/kmodules.xyz/objectstore-api/osm/osm.go b/vendor/kmodules.xyz/objectstore-api/osm/osm.go deleted file mode 100644 index e2d3d90ba8..0000000000 --- a/vendor/kmodules.xyz/objectstore-api/osm/osm.go +++ /dev/null @@ -1,302 +0,0 @@ -/* -Copyright The Kmodules Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package osm - -import ( - "io/ioutil" - "net/url" - "os" - "path/filepath" - "strconv" - "strings" - - awsconst "kmodules.xyz/constants/aws" - azconst "kmodules.xyz/constants/azure" - googconst "kmodules.xyz/constants/google" - osconst "kmodules.xyz/constants/openstack" - api "kmodules.xyz/objectstore-api/api/v1" - - stringz "github.com/appscode/go/strings" - "github.com/appscode/go/types" - otx "github.com/appscode/osm/context" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/credentials" - "github.com/aws/aws-sdk-go/aws/credentials/stscreds" - "github.com/aws/aws-sdk-go/aws/ec2metadata" - "github.com/aws/aws-sdk-go/aws/session" - _s3 "github.com/aws/aws-sdk-go/service/s3" - "github.com/ghodss/yaml" - "github.com/pkg/errors" - "gomodules.xyz/stow" - "gomodules.xyz/stow/azure" - gcs "gomodules.xyz/stow/google" - "gomodules.xyz/stow/local" - "gomodules.xyz/stow/s3" - "gomodules.xyz/stow/swift" - core "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" -) - -const ( - SecretMountPath = "/etc/osm" - CaCertFileName = "ca.crt" -) - -// NewOSMSecret creates a secret that contains the config file of OSM. -// So, generally, if this secret is mounted in `etc/osm`, -// the tree of `/etc/osm` directory will be similar to, -// -// /etc/osm -// └── config -// -// However, if the EndPoint is `S3 Minio Server`, then the secret will contain two file, -// `config` and `ca.crt`. So, the tree of the file path will look as, -// -// /etc/osm -// ├── ca.crt -// └── config - -func NewOSMSecret(kc kubernetes.Interface, name, namespace string, spec api.Backend) (*core.Secret, error) { - osmCtx, err := NewOSMContext(kc, spec, namespace) - if err != nil { - return nil, err - } - cacertData, certDataFound := osmCtx.Config[s3.ConfigCACertData] - if certDataFound { - // assume that CA cert file is mounted at SecretMountPath directory - osmCtx.Config[s3.ConfigCACertFile] = filepath.Join(SecretMountPath, CaCertFileName) - delete(osmCtx.Config, s3.ConfigCACertData) - } - - osmCfg := &otx.OSMConfig{ - CurrentContext: osmCtx.Name, - Contexts: []*otx.Context{osmCtx}, - } - osmBytes, err := yaml.Marshal(osmCfg) - if err != nil { - return nil, err - } - out := &core.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Namespace: namespace, - }, - Data: map[string][]byte{ - "config": osmBytes, - }, - } - if certDataFound { - // inject ca cert data as a file into the osm secret so that CaCertFileName exists. - out.Data[CaCertFileName] = []byte(cacertData) - } - return out, nil -} - -func WriteOSMConfig(kc kubernetes.Interface, namespace string, spec api.Backend, filename string) error { - osmCtx, err := NewOSMContext(kc, spec, namespace) - if err != nil { - return err - } - - dir := filepath.Dir(filename) - - err = os.MkdirAll(dir, 0755) - if err != nil { - return err - } - - cacertData, certDataFound := osmCtx.Config[s3.ConfigCACertData] - if certDataFound { - // assume that CA cert file is mounted at SecretMountPath directory - f2 := filepath.Join(dir, CaCertFileName) - err = ioutil.WriteFile(f2, []byte(cacertData), 0644) - if err != nil { - return err - } - osmCtx.Config[s3.ConfigCACertFile] = f2 - delete(osmCtx.Config, s3.ConfigCACertData) - } - - osmCfg := &otx.OSMConfig{ - CurrentContext: osmCtx.Name, - Contexts: []*otx.Context{osmCtx}, - } - osmBytes, err := yaml.Marshal(osmCfg) - if err != nil { - return err - } - return ioutil.WriteFile(filename, osmBytes, 0644) -} - -func CheckBucketAccess(client kubernetes.Interface, spec api.Backend, namespace string) error { - cfg, err := NewOSMContext(client, spec, namespace) - if err != nil { - return err - } - loc, err := stow.Dial(cfg.Provider, cfg.Config) - if err != nil { - return err - } - bucket, err := spec.Container() - if err != nil { - return err - } - c, err := loc.Container(bucket) - if err != nil { - return err - } - return c.HasWriteAccess() -} - -func NewOSMContext(client kubernetes.Interface, spec api.Backend, namespace string) (*otx.Context, error) { - config := make(map[string][]byte) - - if spec.StorageSecretName != "" { - secret, err := client.CoreV1().Secrets(namespace).Get(spec.StorageSecretName, metav1.GetOptions{}) - if err != nil { - return nil, err - } - config = secret.Data - } - - nc := &otx.Context{ - Name: "objectstore", - Config: stow.ConfigMap{}, - } - - if spec.S3 != nil { - nc.Provider = s3.Kind - - keyID, foundKeyID := config[awsconst.AWS_ACCESS_KEY_ID] - key, foundKey := config[awsconst.AWS_SECRET_ACCESS_KEY] - if foundKey && foundKeyID { - nc.Config[s3.ConfigAccessKeyID] = string(keyID) - nc.Config[s3.ConfigSecretKey] = string(key) - nc.Config[s3.ConfigAuthType] = "accesskey" - } else { - nc.Config[s3.ConfigAuthType] = "iam" - } - if spec.S3.Endpoint == "" || strings.HasSuffix(spec.S3.Endpoint, ".amazonaws.com") { - // Using s3 and not s3-compatible service like minio or rook, etc. Now, find region - var sess *session.Session - var err error - if nc.Config[s3.ConfigAuthType] == "iam" { - // The aws sdk does not currently support automatically setting the region based on an instances placement. - // This automatically sets region based on ec2 instance metadata when running on EC2. - // ref: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-region.html#setting-region-order-of-precedence - var c aws.Config - if s, e := session.NewSession(); e == nil { - if region, e := ec2metadata.New(s).Region(); e == nil { - c.WithRegion(region) - } - } - sess, err = session.NewSessionWithOptions(session.Options{ - Config: c, - // Support MFA when authing using assumed roles. - SharedConfigState: session.SharedConfigEnable, - AssumeRoleTokenProvider: stscreds.StdinTokenProvider, - }) - } else { - sess, err = session.NewSessionWithOptions(session.Options{ - Config: aws.Config{ - Credentials: credentials.NewStaticCredentials(string(keyID), string(key), ""), - Region: aws.String("us-east-1"), - }, - // Support MFA when authing using assumed roles. - SharedConfigState: session.SharedConfigEnable, - AssumeRoleTokenProvider: stscreds.StdinTokenProvider, - }) - } - if err != nil { - return nil, err - } - svc := _s3.New(sess) - out, err := svc.GetBucketLocation(&_s3.GetBucketLocationInput{ - Bucket: types.StringP(spec.S3.Bucket), - }) - if err != nil { - return nil, err - } - nc.Config[s3.ConfigRegion] = stringz.Val(types.String(out.LocationConstraint), "us-east-1") - } else { - nc.Config[s3.ConfigEndpoint] = spec.S3.Endpoint - u, err := url.Parse(spec.S3.Endpoint) - if err != nil { - return nil, err - } - nc.Config[s3.ConfigDisableSSL] = strconv.FormatBool(u.Scheme == "http") - - cacertData, ok := config[awsconst.CA_CERT_DATA] - if ok && u.Scheme == "https" { - nc.Config[s3.ConfigCACertData] = string(cacertData) - } - } - return nc, nil - } else if spec.GCS != nil { - nc.Provider = gcs.Kind - nc.Config[gcs.ConfigProjectId] = string(config[googconst.GOOGLE_PROJECT_ID]) - nc.Config[gcs.ConfigJSON] = string(config[googconst.GOOGLE_SERVICE_ACCOUNT_JSON_KEY]) - return nc, nil - } else if spec.Azure != nil { - nc.Provider = azure.Kind - nc.Config[azure.ConfigAccount] = string(config[azconst.AZURE_ACCOUNT_NAME]) - nc.Config[azure.ConfigKey] = string(config[azconst.AZURE_ACCOUNT_KEY]) - return nc, nil - } else if spec.Local != nil { - nc.Provider = local.Kind - nc.Config[local.ConfigKeyPath] = spec.Local.MountPath - return nc, nil - } else if spec.Swift != nil { - nc.Provider = swift.Kind - // https://github.com/restic/restic/blob/master/src/restic/backend/swift/config.go - for _, val := range []struct { - stowKey string - secretKey string - }{ - // v2/v3 specific - {swift.ConfigUsername, osconst.OS_USERNAME}, - {swift.ConfigKey, osconst.OS_PASSWORD}, - {swift.ConfigRegion, osconst.OS_REGION_NAME}, - {swift.ConfigTenantAuthURL, osconst.OS_AUTH_URL}, - - // v3 specific - {swift.ConfigDomain, osconst.OS_USER_DOMAIN_NAME}, - {swift.ConfigTenantName, osconst.OS_PROJECT_NAME}, - {swift.ConfigTenantDomain, osconst.OS_PROJECT_DOMAIN_NAME}, - - // v2 specific - {swift.ConfigTenantId, osconst.OS_TENANT_ID}, - {swift.ConfigTenantName, osconst.OS_TENANT_NAME}, - - // v1 specific - {swift.ConfigTenantAuthURL, osconst.ST_AUTH}, - {swift.ConfigUsername, osconst.ST_USER}, - {swift.ConfigKey, osconst.ST_KEY}, - - // Manual authentication - {swift.ConfigStorageURL, osconst.OS_STORAGE_URL}, - {swift.ConfigAuthToken, osconst.OS_AUTH_TOKEN}, - } { - if _, exists := nc.Config.Config(val.stowKey); !exists { - nc.Config[val.stowKey] = string(config[val.secretKey]) - } - } - return nc, nil - } - return nil, errors.New("no storage provider is configured") -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 817b51f0dc..d49fac649e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -26,16 +26,12 @@ github.com/appscode/docker-registry-client/registry github.com/appscode/go/arrays github.com/appscode/go/context github.com/appscode/go/encoding/json/types -github.com/appscode/go/encoding/yaml github.com/appscode/go/ioutil github.com/appscode/go/log github.com/appscode/go/log/golog github.com/appscode/go/runtime github.com/appscode/go/sets -github.com/appscode/go/strings github.com/appscode/go/types -# github.com/appscode/osm v0.13.0 -github.com/appscode/osm/context # github.com/aws/aws-sdk-go v1.24.1 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr @@ -125,8 +121,6 @@ github.com/evanphx/json-patch github.com/fatih/structs # github.com/fsnotify/fsnotify v1.4.7 github.com/fsnotify/fsnotify -# github.com/ghodss/yaml v1.0.0 -github.com/ghodss/yaml # github.com/go-openapi/jsonpointer v0.19.3 github.com/go-openapi/jsonpointer # github.com/go-openapi/jsonreference v0.19.3 @@ -174,8 +168,6 @@ github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru # github.com/imdario/mergo v0.3.7 github.com/imdario/mergo -# github.com/inconshreveable/mousetrap v1.0.0 -github.com/inconshreveable/mousetrap # github.com/jetstack/cert-manager v0.12.0 github.com/jetstack/cert-manager/pkg/apis/acme github.com/jetstack/cert-manager/pkg/apis/acme/v1alpha2 @@ -215,15 +207,11 @@ github.com/modern-go/concurrent github.com/modern-go/reflect2 # github.com/munnerz/goautoneg v0.0.0-20190414153302-2ae31c8b6b30 github.com/munnerz/goautoneg -# github.com/ncw/swift v1.0.49 -github.com/ncw/swift # github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/go-digest # github.com/opencontainers/image-spec v1.0.1 github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go/v1 -# github.com/orcaman/concurrent-map v0.0.0-20190826125027-8c72a8bb44f6 -github.com/orcaman/concurrent-map # github.com/pborman/uuid v1.2.0 github.com/pborman/uuid # github.com/pkg/errors v0.8.1 @@ -251,8 +239,6 @@ github.com/satori/go.uuid github.com/sergi/go-diff/diffmatchpatch # github.com/sirupsen/logrus v1.4.2 github.com/sirupsen/logrus -# github.com/spf13/cobra v0.0.5 -github.com/spf13/cobra # github.com/spf13/pflag v1.0.5 github.com/spf13/pflag # github.com/yudai/gojsondiff v1.0.0 @@ -330,9 +316,7 @@ gomodules.xyz/jsonpatch/v2 gomodules.xyz/stow gomodules.xyz/stow/azure gomodules.xyz/stow/google -gomodules.xyz/stow/local gomodules.xyz/stow/s3 -gomodules.xyz/stow/swift # gomodules.xyz/version v0.1.0 gomodules.xyz/version # google.golang.org/api v0.6.1-0.20190607001116-5213b8090861 => google.golang.org/api v0.6.1-0.20190607001116-5213b8090861 @@ -496,7 +480,6 @@ k8s.io/apimachinery/pkg/util/errors k8s.io/apimachinery/pkg/util/framer k8s.io/apimachinery/pkg/util/intstr k8s.io/apimachinery/pkg/util/json -k8s.io/apimachinery/pkg/util/jsonmergepatch k8s.io/apimachinery/pkg/util/mergepatch k8s.io/apimachinery/pkg/util/naming k8s.io/apimachinery/pkg/util/net @@ -678,84 +661,45 @@ k8s.io/client-go/informers/storage/v1 k8s.io/client-go/informers/storage/v1alpha1 k8s.io/client-go/informers/storage/v1beta1 k8s.io/client-go/kubernetes -k8s.io/client-go/kubernetes/fake k8s.io/client-go/kubernetes/scheme k8s.io/client-go/kubernetes/typed/admissionregistration/v1 -k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1 -k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake k8s.io/client-go/kubernetes/typed/apps/v1 -k8s.io/client-go/kubernetes/typed/apps/v1/fake k8s.io/client-go/kubernetes/typed/apps/v1beta1 -k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake k8s.io/client-go/kubernetes/typed/apps/v1beta2 -k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1 -k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake k8s.io/client-go/kubernetes/typed/authentication/v1 -k8s.io/client-go/kubernetes/typed/authentication/v1/fake k8s.io/client-go/kubernetes/typed/authentication/v1beta1 -k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake k8s.io/client-go/kubernetes/typed/authorization/v1 -k8s.io/client-go/kubernetes/typed/authorization/v1/fake k8s.io/client-go/kubernetes/typed/authorization/v1beta1 -k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake k8s.io/client-go/kubernetes/typed/autoscaling/v1 -k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1 -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2 -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake k8s.io/client-go/kubernetes/typed/batch/v1 -k8s.io/client-go/kubernetes/typed/batch/v1/fake k8s.io/client-go/kubernetes/typed/batch/v1beta1 -k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake k8s.io/client-go/kubernetes/typed/batch/v2alpha1 -k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake k8s.io/client-go/kubernetes/typed/certificates/v1beta1 -k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake k8s.io/client-go/kubernetes/typed/coordination/v1 -k8s.io/client-go/kubernetes/typed/coordination/v1/fake k8s.io/client-go/kubernetes/typed/coordination/v1beta1 -k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake k8s.io/client-go/kubernetes/typed/core/v1 -k8s.io/client-go/kubernetes/typed/core/v1/fake k8s.io/client-go/kubernetes/typed/discovery/v1alpha1 -k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake k8s.io/client-go/kubernetes/typed/events/v1beta1 -k8s.io/client-go/kubernetes/typed/events/v1beta1/fake k8s.io/client-go/kubernetes/typed/extensions/v1beta1 -k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake k8s.io/client-go/kubernetes/typed/networking/v1 -k8s.io/client-go/kubernetes/typed/networking/v1/fake k8s.io/client-go/kubernetes/typed/networking/v1beta1 -k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake k8s.io/client-go/kubernetes/typed/node/v1alpha1 -k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake k8s.io/client-go/kubernetes/typed/node/v1beta1 -k8s.io/client-go/kubernetes/typed/node/v1beta1/fake k8s.io/client-go/kubernetes/typed/policy/v1beta1 -k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake k8s.io/client-go/kubernetes/typed/rbac/v1 -k8s.io/client-go/kubernetes/typed/rbac/v1/fake k8s.io/client-go/kubernetes/typed/rbac/v1alpha1 -k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake k8s.io/client-go/kubernetes/typed/rbac/v1beta1 -k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake k8s.io/client-go/kubernetes/typed/scheduling/v1 -k8s.io/client-go/kubernetes/typed/scheduling/v1/fake k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1 -k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake k8s.io/client-go/kubernetes/typed/scheduling/v1beta1 -k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake k8s.io/client-go/kubernetes/typed/settings/v1alpha1 -k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake k8s.io/client-go/kubernetes/typed/storage/v1 -k8s.io/client-go/kubernetes/typed/storage/v1/fake k8s.io/client-go/kubernetes/typed/storage/v1alpha1 -k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake k8s.io/client-go/kubernetes/typed/storage/v1beta1 -k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake k8s.io/client-go/listers/admissionregistration/v1 k8s.io/client-go/listers/admissionregistration/v1beta1 k8s.io/client-go/listers/apps/v1 @@ -809,7 +753,6 @@ k8s.io/client-go/tools/pager k8s.io/client-go/tools/record k8s.io/client-go/tools/record/util k8s.io/client-go/tools/reference -k8s.io/client-go/tools/watch k8s.io/client-go/transport k8s.io/client-go/util/cert k8s.io/client-go/util/connrotation @@ -843,19 +786,12 @@ k8s.io/utils/pointer k8s.io/utils/trace # kmodules.xyz/client-go v0.0.0-20200116162153-e083ae16abca kmodules.xyz/client-go -kmodules.xyz/client-go/apiextensions/v1beta1 kmodules.xyz/client-go/core/v1 kmodules.xyz/client-go/discovery -kmodules.xyz/client-go/dynamic kmodules.xyz/client-go/meta kmodules.xyz/client-go/openapi kmodules.xyz/client-go/policy/v1beta1 kmodules.xyz/client-go/tools/queue -# kmodules.xyz/constants v0.0.0-20191024095500-cd4313df4aa6 -kmodules.xyz/constants/aws -kmodules.xyz/constants/azure -kmodules.xyz/constants/google -kmodules.xyz/constants/openstack # kmodules.xyz/crd-schema-fuzz v0.0.0-20191129174258-81f984340891 kmodules.xyz/crd-schema-fuzz # kmodules.xyz/custom-resources v0.0.0-20191130062942-f41b54f62419 @@ -874,7 +810,6 @@ kmodules.xyz/custom-resources/client/listers/appcatalog/v1alpha1 kmodules.xyz/monitoring-agent-api/api/v1 # kmodules.xyz/objectstore-api v0.0.0-20191127144749-5881939b57f0 kmodules.xyz/objectstore-api/api/v1 -kmodules.xyz/objectstore-api/osm # kmodules.xyz/offshoot-api v0.0.0-20200103145223-2c4f520520d2 kmodules.xyz/offshoot-api/api/v1 # kmodules.xyz/prober v0.0.0-20191216013129-7c91e2b0edb2