From 46f8320c3e3c252db84e4901878d5cb905b5b366 Mon Sep 17 00:00:00 2001 From: Alex Jeannopoulos Date: Sun, 26 Jul 2020 18:54:58 -0400 Subject: [PATCH] prep v0.9.25 release, added listen and scheme args to cmd line for generated makefile --- Makefile | 3 + README.md | 21 +++-- _test/dbmeta/main.go | 2 +- code_dao_gorm.md | 3 +- code_http.md | 6 +- dbmeta/meta_mysql.go | 10 +-- main.go | 5 +- packrd/packed-packr.go | 158 ++++++++++++++++++------------------ readme/main.go | 2 +- template/GEN_README.md.tmpl | 5 ++ 10 files changed, 117 insertions(+), 98 deletions(-) diff --git a/Makefile b/Makefile index 3af1e79..1ee38db 100644 --- a/Makefile +++ b/Makefile @@ -176,3 +176,6 @@ gen_readme: ## generate readme file --connstr "./example/sample.db" \ --database main \ --table invoices + + +release: fmt gen install example gen_readme ## prepare release diff --git a/README.md b/README.md index 01f6496..36f5923 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ $ cp ../../sample.db . $ ./example -## Open a browser to http://localhost:8080/swagger/index.html +## Open a browser to http://127.0.0.1:8080/swagger/index.html ## Use wget/curl/httpie to fetch via command line http http://localhost:8080/albums @@ -142,10 +142,10 @@ Options: --generate-proj Generate project readme and gitignore --rest Enable generating RESTful api --run-gofmt run gofmt on output dir - --scheme=http URL scheme for server + --listen= listen address e.g. :8080 + --scheme=http scheme for server url --host=localhost host for server --port=8080 port for server - --listen= listen address for server e.g. 0.0.0.0:8080 --swagger_version=1.0 swagger version --swagger_path=/ swagger base path --swagger_tos= swagger tos url @@ -277,9 +277,9 @@ The following info is available within use of the exec template. "AdvancesSample" string "\n{{ range $i, $table := .tables }}\n {{$singular := singular $table -}}\n {{$plural := pluralize $table -}}\n {{$title := title $table -}}\n {{$lower := toLower $table -}}\n {{$lowerCamel := toLowerCamelCase $table -}}\n {{$snakeCase := toSnakeCase $table -}}\n {{ printf \"[%-2d] %-20s %-20s %-20s %-20s %-20s %-20s %-20s\" $i $table $singular $plural $title $lower $lowerCamel $snakeCase}}{{- end }}\n\n\n{{ range $i, $table := .tables }}\n {{$name := toUpper $table -}}\n {{$filename := printf \"My%s\" $name -}}\n {{ printf \"[%-2d] %-20s %-20s\" $i $table $filename}}\n {{ GenerateTableFile $table \"custom.go.tmpl\" \"test\" $filename true}}\n{{- end }}\n" - "Config" *dbmeta.Config &dbmeta.Config{SQLType:"sqlite3", SQLConnStr:"./example/sample.db", SQLDatabase:"main", Module:"github.com/alexj212/test", ModelPackageName:"model", ModelFQPN:"github.com/alexj212/test/model", AddJSONAnnotation:true, AddGormAnnotation:true, AddProtobufAnnotation:true, AddXMLAnnotation:true, AddDBAnnotation:true, UseGureguTypes:false, JSONNameFormat:"snake", XMLNameFormat:"snake", ProtobufNameFormat:"", DaoPackageName:"dao", DaoFQPN:"github.com/alexj212/test/dao", APIPackageName:"api", APIFQPN:"github.com/alexj212/test/api", GrpcPackageName:"", GrpcFQPN:"", Swagger:(*dbmeta.SwaggerInfoDetails)(0xc000990480), ServerPort:8080, ServerHost:"127.0.0.1", Verbose:false, OutDir:".", Overwrite:true, LineEndingCRLF:false, CmdLine:"/tmp/go-build435445761/b001/exe/readme --sqltype=sqlite3 --connstr ./example/sample.db --database main --table invoices", CmdLineWrapped:"/tmp/go-build435445761/b001/exe/readme \\\n --sqltype=sqlite3 \\\n --connstr \\\n ./example/sample.db \\\n --database \\\n main \\\n --table \\\n invoices", CmdLineArgs:[]string{"/tmp/go-build435445761/b001/exe/readme", "--sqltype=sqlite3", "--connstr", "./example/sample.db", "--database", "main", "--table", "invoices"}, FileNamingTemplate:"{{.}}", ModelNamingTemplate:"{{FmtFieldName .}}", FieldNamingTemplate:"{{FmtFieldName (stringifyFirstChar .) }}", string:"", ContextMap:map[string]interface {}{"GenHelp":"Usage of gen:\n\tgen [-v] --sqltype=mysql --connstr \"user:password@/dbname\" --database --module=example.com/example [--json] [--gorm] [--guregu] [--generate-dao] [--generate-proj]\ngit fetch up\n sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n\n\nOptions:\n --sqltype=mysql sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n -c, --connstr=nil database connection string\n -d, --database=nil Database to for connection\n -t, --table= Table to build struct from\n -x, --exclude= Table(s) to exclude\n --templateDir= Template Dir\n --save= Save templates to dir\n --model=model name to set for model package\n --model_naming={{FmtFieldName .}} model naming template to name structs\n --field_naming={{FmtFieldName (stringifyFirstChar .) }} field naming template to name structs\n --file_naming={{.}} file_naming template to name files\n --dao=dao name to set for dao package\n --api=api name to set for api package\n --grpc=grpc name to set for grpc package\n --out=. output dir\n --module=example.com/example module path\n --overwrite Overwrite existing files (default)\n --no-overwrite disable overwriting files\n --windows use windows line endings in generated files\n --no-color disable color output\n --context= context file (json) to populate context with\n --mapping= mapping file (json) to map sql types to golang/protobuf etc\n --exec= execute script for custom code generation\n --json Add json annotations (default)\n --no-json Disable json annotations\n --json-fmt=snake json name format [snake | camel | lower_camel | none]\n --xml Add xml annotations (default)\n --no-xml Disable xml annotations\n --xml-fmt=snake xml name format [snake | camel | lower_camel | none]\n --gorm Add gorm annotations (tags)\n --protobuf Add protobuf annotations (tags)\n --proto-fmt=snake proto name format [snake | camel | lower_camel | none]\n --gogo-proto= location of gogo import \n --db Add db annotations (tags)\n --guregu Add guregu null types\n --copy-templates Copy regeneration templates to project directory\n --mod Generate go.mod in output dir\n --makefile Generate Makefile in output dir\n --server Generate server app output dir\n --generate-dao Generate dao functions\n --generate-proj Generate project readme and gitignore\n --rest Enable generating RESTful api\n --run-gofmt run gofmt on output dir\n --host=localhost host for server\n --port=8080 port for server\n --swagger_version=1.0 swagger version\n --swagger_path=/ swagger base path\n --swagger_tos= swagger tos url\n --swagger_contact_name=Me swagger contact name\n --swagger_contact_url=http://me.com/terms.html swagger contact url\n --swagger_contact_email=me@me.com swagger contact email\n -v, --verbose Enable verbose output\n --name_test= perform name test using the --model_naming or --file_naming options\n -h, --help Show usage message\n --version Show version\n\n", "tableInfos":map[string]*dbmeta.ModelInfo{"invoices":(*dbmeta.ModelInfo)(0xc00117d540)}}, TemplateLoader:(dbmeta.TemplateLoader)(0x89c9d0)} + "Config" *dbmeta.Config &dbmeta.Config{SQLType:"sqlite3", SQLConnStr:"./example/sample.db", SQLDatabase:"main", Module:"github.com/alexj212/test", ModelPackageName:"model", ModelFQPN:"github.com/alexj212/test/model", AddJSONAnnotation:true, AddGormAnnotation:true, AddProtobufAnnotation:true, AddXMLAnnotation:true, AddDBAnnotation:true, UseGureguTypes:false, JSONNameFormat:"snake", XMLNameFormat:"snake", ProtobufNameFormat:"", DaoPackageName:"dao", DaoFQPN:"github.com/alexj212/test/dao", APIPackageName:"api", APIFQPN:"github.com/alexj212/test/api", GrpcPackageName:"", GrpcFQPN:"", Swagger:(*dbmeta.SwaggerInfoDetails)(0xc0008ba360), ServerPort:8080, ServerHost:"127.0.0.1", ServerScheme:"http", ServerListen:":8080", Verbose:false, OutDir:".", Overwrite:true, LineEndingCRLF:false, CmdLine:"/tmp/go-build469802175/b001/exe/readme --sqltype=sqlite3 --connstr ./example/sample.db --database main --table invoices", CmdLineWrapped:"/tmp/go-build469802175/b001/exe/readme \\\n --sqltype=sqlite3 \\\n --connstr \\\n ./example/sample.db \\\n --database \\\n main \\\n --table \\\n invoices", CmdLineArgs:[]string{"/tmp/go-build469802175/b001/exe/readme", "--sqltype=sqlite3", "--connstr", "./example/sample.db", "--database", "main", "--table", "invoices"}, FileNamingTemplate:"{{.}}", ModelNamingTemplate:"{{FmtFieldName .}}", FieldNamingTemplate:"{{FmtFieldName (stringifyFirstChar .) }}", string:"", ContextMap:map[string]interface {}{"GenHelp":"Usage of gen:\n\tgen [-v] --sqltype=mysql --connstr \"user:password@/dbname\" --database --module=example.com/example [--json] [--gorm] [--guregu] [--generate-dao] [--generate-proj]\ngit fetch up\n sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n\n\nOptions:\n --sqltype=mysql sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n -c, --connstr=nil database connection string\n -d, --database=nil Database to for connection\n -t, --table= Table to build struct from\n -x, --exclude= Table(s) to exclude\n --templateDir= Template Dir\n --save= Save templates to dir\n --model=model name to set for model package\n --model_naming={{FmtFieldName .}} model naming template to name structs\n --field_naming={{FmtFieldName (stringifyFirstChar .) }} field naming template to name structs\n --file_naming={{.}} file_naming template to name files\n --dao=dao name to set for dao package\n --api=api name to set for api package\n --grpc=grpc name to set for grpc package\n --out=. output dir\n --module=example.com/example module path\n --overwrite Overwrite existing files (default)\n --no-overwrite disable overwriting files\n --windows use windows line endings in generated files\n --no-color disable color output\n --context= context file (json) to populate context with\n --mapping= mapping file (json) to map sql types to golang/protobuf etc\n --exec= execute script for custom code generation\n --json Add json annotations (default)\n --no-json Disable json annotations\n --json-fmt=snake json name format [snake | camel | lower_camel | none]\n --xml Add xml annotations (default)\n --no-xml Disable xml annotations\n --xml-fmt=snake xml name format [snake | camel | lower_camel | none]\n --gorm Add gorm annotations (tags)\n --protobuf Add protobuf annotations (tags)\n --proto-fmt=snake proto name format [snake | camel | lower_camel | none]\n --gogo-proto= location of gogo import \n --db Add db annotations (tags)\n --guregu Add guregu null types\n --copy-templates Copy regeneration templates to project directory\n --mod Generate go.mod in output dir\n --makefile Generate Makefile in output dir\n --server Generate server app output dir\n --generate-dao Generate dao functions\n --generate-proj Generate project readme and gitignore\n --rest Enable generating RESTful api\n --run-gofmt run gofmt on output dir\n --listen= listen address e.g. :8080\n --scheme=http scheme for server url\n --host=localhost host for server\n --port=8080 port for server\n --swagger_version=1.0 swagger version\n --swagger_path=/ swagger base path\n --swagger_tos= swagger tos url\n --swagger_contact_name=Me swagger contact name\n --swagger_contact_url=http://me.com/terms.html swagger contact url\n --swagger_contact_email=me@me.com swagger contact email\n -v, --verbose Enable verbose output\n --name_test= perform name test using the --model_naming or --file_naming options\n -h, --help Show usage message\n --version Show version\n\n", "tableInfos":map[string]*dbmeta.ModelInfo{"invoices":(*dbmeta.ModelInfo)(0xc000191540)}}, TemplateLoader:(dbmeta.TemplateLoader)(0x8a55b0)} "DatabaseName" string "main" - "GenHelp" string "Usage of gen:\n\tgen [-v] --sqltype=mysql --connstr \"user:password@/dbname\" --database --module=example.com/example [--json] [--gorm] [--guregu] [--generate-dao] [--generate-proj]\ngit fetch up\n sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n\n\nOptions:\n --sqltype=mysql sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n -c, --connstr=nil database connection string\n -d, --database=nil Database to for connection\n -t, --table= Table to build struct from\n -x, --exclude= Table(s) to exclude\n --templateDir= Template Dir\n --save= Save templates to dir\n --model=model name to set for model package\n --model_naming={{FmtFieldName .}} model naming template to name structs\n --field_naming={{FmtFieldName (stringifyFirstChar .) }} field naming template to name structs\n --file_naming={{.}} file_naming template to name files\n --dao=dao name to set for dao package\n --api=api name to set for api package\n --grpc=grpc name to set for grpc package\n --out=. output dir\n --module=example.com/example module path\n --overwrite Overwrite existing files (default)\n --no-overwrite disable overwriting files\n --windows use windows line endings in generated files\n --no-color disable color output\n --context= context file (json) to populate context with\n --mapping= mapping file (json) to map sql types to golang/protobuf etc\n --exec= execute script for custom code generation\n --json Add json annotations (default)\n --no-json Disable json annotations\n --json-fmt=snake json name format [snake | camel | lower_camel | none]\n --xml Add xml annotations (default)\n --no-xml Disable xml annotations\n --xml-fmt=snake xml name format [snake | camel | lower_camel | none]\n --gorm Add gorm annotations (tags)\n --protobuf Add protobuf annotations (tags)\n --proto-fmt=snake proto name format [snake | camel | lower_camel | none]\n --gogo-proto= location of gogo import \n --db Add db annotations (tags)\n --guregu Add guregu null types\n --copy-templates Copy regeneration templates to project directory\n --mod Generate go.mod in output dir\n --makefile Generate Makefile in output dir\n --server Generate server app output dir\n --generate-dao Generate dao functions\n --generate-proj Generate project readme and gitignore\n --rest Enable generating RESTful api\n --run-gofmt run gofmt on output dir\n --host=localhost host for server\n --port=8080 port for server\n --swagger_version=1.0 swagger version\n --swagger_path=/ swagger base path\n --swagger_tos= swagger tos url\n --swagger_contact_name=Me swagger contact name\n --swagger_contact_url=http://me.com/terms.html swagger contact url\n --swagger_contact_email=me@me.com swagger contact email\n -v, --verbose Enable verbose output\n --name_test= perform name test using the --model_naming or --file_naming options\n -h, --help Show usage message\n --version Show version\n\n" + "GenHelp" string "Usage of gen:\n\tgen [-v] --sqltype=mysql --connstr \"user:password@/dbname\" --database --module=example.com/example [--json] [--gorm] [--guregu] [--generate-dao] [--generate-proj]\ngit fetch up\n sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n\n\nOptions:\n --sqltype=mysql sql database type such as [ mysql, mssql, postgres, sqlite, etc. ]\n -c, --connstr=nil database connection string\n -d, --database=nil Database to for connection\n -t, --table= Table to build struct from\n -x, --exclude= Table(s) to exclude\n --templateDir= Template Dir\n --save= Save templates to dir\n --model=model name to set for model package\n --model_naming={{FmtFieldName .}} model naming template to name structs\n --field_naming={{FmtFieldName (stringifyFirstChar .) }} field naming template to name structs\n --file_naming={{.}} file_naming template to name files\n --dao=dao name to set for dao package\n --api=api name to set for api package\n --grpc=grpc name to set for grpc package\n --out=. output dir\n --module=example.com/example module path\n --overwrite Overwrite existing files (default)\n --no-overwrite disable overwriting files\n --windows use windows line endings in generated files\n --no-color disable color output\n --context= context file (json) to populate context with\n --mapping= mapping file (json) to map sql types to golang/protobuf etc\n --exec= execute script for custom code generation\n --json Add json annotations (default)\n --no-json Disable json annotations\n --json-fmt=snake json name format [snake | camel | lower_camel | none]\n --xml Add xml annotations (default)\n --no-xml Disable xml annotations\n --xml-fmt=snake xml name format [snake | camel | lower_camel | none]\n --gorm Add gorm annotations (tags)\n --protobuf Add protobuf annotations (tags)\n --proto-fmt=snake proto name format [snake | camel | lower_camel | none]\n --gogo-proto= location of gogo import \n --db Add db annotations (tags)\n --guregu Add guregu null types\n --copy-templates Copy regeneration templates to project directory\n --mod Generate go.mod in output dir\n --makefile Generate Makefile in output dir\n --server Generate server app output dir\n --generate-dao Generate dao functions\n --generate-proj Generate project readme and gitignore\n --rest Enable generating RESTful api\n --run-gofmt run gofmt on output dir\n --listen= listen address e.g. :8080\n --scheme=http scheme for server url\n --host=localhost host for server\n --port=8080 port for server\n --swagger_version=1.0 swagger version\n --swagger_path=/ swagger base path\n --swagger_tos= swagger tos url\n --swagger_contact_name=Me swagger contact name\n --swagger_contact_url=http://me.com/terms.html swagger contact url\n --swagger_contact_email=me@me.com swagger contact email\n -v, --verbose Enable verbose output\n --name_test= perform name test using the --model_naming or --file_naming options\n -h, --help Show usage message\n --version Show version\n\n" "NonPrimaryKeyNamesList" []string []string{"CustomerId", "InvoiceDate", "BillingAddress", "BillingCity", "BillingState", "BillingCountry", "BillingPostalCode", "Total"} "NonPrimaryKeysJoined" string "CustomerId,InvoiceDate,BillingAddress,BillingCity,BillingState,BillingCountry,BillingPostalCode,Total" "PrimaryKeyNamesList" []string []string{"InvoiceId"} @@ -287,7 +287,7 @@ The following info is available within use of the exec template. "ShortStructName" string "i" "StructName" string "Invoices" "SwaggerInfo" *dbmeta.SwaggerInfoDetails &dbmeta.SwaggerInfoDetails{Version:"1.0.0", Host:"127.0.0.1:8080", BasePath:"/", Title:"Sample CRUD api for main db", Description:"Sample CRUD api for main db", TOS:"My Custom TOS", ContactName:"", ContactURL:"", ContactEmail:""} - "TableInfo" *dbmeta.ModelInfo &dbmeta.ModelInfo{Index:0, IndexPlus1:1, PackageName:"model", StructName:"Invoices", ShortStructName:"i", TableName:"invoices", Fields:[]string{"//[ 0] InvoiceId integer null: false primary: true isArray: false auto: true col: integer len: -1 default: []\n InvoiceID int32 `gorm:\"primary_key;AUTO_INCREMENT;column:InvoiceId;type:integer;\" json:\"invoice_id\" xml:\"invoice_id\" db:\"InvoiceId\" protobuf:\"int32,0,opt,name=InvoiceId\"`", "//[ 1] CustomerId integer null: false primary: false isArray: false auto: false col: integer len: -1 default: []\n CustomerID int32 `gorm:\"column:CustomerId;type:integer;\" json:\"customer_id\" xml:\"customer_id\" db:\"CustomerId\" protobuf:\"int32,1,opt,name=CustomerId\"`", "//[ 2] InvoiceDate datetime null: false primary: false isArray: false auto: false col: datetime len: -1 default: []\n InvoiceDate time.Time `gorm:\"column:InvoiceDate;type:datetime;\" json:\"invoice_date\" xml:\"invoice_date\" db:\"InvoiceDate\" protobuf:\"google.protobuf.Timestamp,2,opt,name=InvoiceDate\"`", "//[ 3] BillingAddress nvarchar(70) null: true primary: false isArray: false auto: false col: nvarchar len: 70 default: []\n BillingAddress sql.NullString `gorm:\"column:BillingAddress;type:nvarchar;size:70;\" json:\"billing_address\" xml:\"billing_address\" db:\"BillingAddress\" protobuf:\"string,3,opt,name=BillingAddress\"`", "//[ 4] BillingCity nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingCity sql.NullString `gorm:\"column:BillingCity;type:nvarchar;size:40;\" json:\"billing_city\" xml:\"billing_city\" db:\"BillingCity\" protobuf:\"string,4,opt,name=BillingCity\"`", "//[ 5] BillingState nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingState sql.NullString `gorm:\"column:BillingState;type:nvarchar;size:40;\" json:\"billing_state\" xml:\"billing_state\" db:\"BillingState\" protobuf:\"string,5,opt,name=BillingState\"`", "//[ 6] BillingCountry nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingCountry sql.NullString `gorm:\"column:BillingCountry;type:nvarchar;size:40;\" json:\"billing_country\" xml:\"billing_country\" db:\"BillingCountry\" protobuf:\"string,6,opt,name=BillingCountry\"`", "//[ 7] BillingPostalCode nvarchar(10) null: true primary: false isArray: false auto: false col: nvarchar len: 10 default: []\n BillingPostalCode sql.NullString `gorm:\"column:BillingPostalCode;type:nvarchar;size:10;\" json:\"billing_postal_code\" xml:\"billing_postal_code\" db:\"BillingPostalCode\" protobuf:\"string,7,opt,name=BillingPostalCode\"`", "//[ 8] Total numeric null: false primary: false isArray: false auto: false col: numeric len: -1 default: []\n Total float64 `gorm:\"column:Total;type:numeric;\" json:\"total\" xml:\"total\" db:\"Total\" protobuf:\"float,8,opt,name=Total\"`"}, DBMeta:(*dbmeta.dbTableMeta)(0xc00040d4a0), Instance:(*struct { BillingCity string "json:\"billing_city\""; BillingState string "json:\"billing_state\""; BillingPostalCode string "json:\"billing_postal_code\""; Total float64 "json:\"total\""; InvoiceID int "json:\"invoice_id\""; CustomerID int "json:\"customer_id\""; InvoiceDate time.Time "json:\"invoice_date\""; BillingAddress string "json:\"billing_address\""; BillingCountry string "json:\"billing_country\"" })(0xc0007abe00), CodeFields:[]*dbmeta.FieldInfo{(*dbmeta.FieldInfo)(0xc0011be640), (*dbmeta.FieldInfo)(0xc0011be780), (*dbmeta.FieldInfo)(0xc0011be8c0), (*dbmeta.FieldInfo)(0xc0011bea00), (*dbmeta.FieldInfo)(0xc0011beb40), (*dbmeta.FieldInfo)(0xc0011bec80), (*dbmeta.FieldInfo)(0xc0011bedc0), (*dbmeta.FieldInfo)(0xc0011bef00), (*dbmeta.FieldInfo)(0xc0011bf040)}} + "TableInfo" *dbmeta.ModelInfo &dbmeta.ModelInfo{Index:0, IndexPlus1:1, PackageName:"model", StructName:"Invoices", ShortStructName:"i", TableName:"invoices", Fields:[]string{"//[ 0] InvoiceId integer null: false primary: true isArray: false auto: true col: integer len: -1 default: []\n InvoiceID int32 `gorm:\"primary_key;AUTO_INCREMENT;column:InvoiceId;type:integer;\" json:\"invoice_id\" xml:\"invoice_id\" db:\"InvoiceId\" protobuf:\"int32,0,opt,name=InvoiceId\"`", "//[ 1] CustomerId integer null: false primary: false isArray: false auto: false col: integer len: -1 default: []\n CustomerID int32 `gorm:\"column:CustomerId;type:integer;\" json:\"customer_id\" xml:\"customer_id\" db:\"CustomerId\" protobuf:\"int32,1,opt,name=CustomerId\"`", "//[ 2] InvoiceDate datetime null: false primary: false isArray: false auto: false col: datetime len: -1 default: []\n InvoiceDate time.Time `gorm:\"column:InvoiceDate;type:datetime;\" json:\"invoice_date\" xml:\"invoice_date\" db:\"InvoiceDate\" protobuf:\"google.protobuf.Timestamp,2,opt,name=InvoiceDate\"`", "//[ 3] BillingAddress nvarchar(70) null: true primary: false isArray: false auto: false col: nvarchar len: 70 default: []\n BillingAddress sql.NullString `gorm:\"column:BillingAddress;type:nvarchar;size:70;\" json:\"billing_address\" xml:\"billing_address\" db:\"BillingAddress\" protobuf:\"string,3,opt,name=BillingAddress\"`", "//[ 4] BillingCity nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingCity sql.NullString `gorm:\"column:BillingCity;type:nvarchar;size:40;\" json:\"billing_city\" xml:\"billing_city\" db:\"BillingCity\" protobuf:\"string,4,opt,name=BillingCity\"`", "//[ 5] BillingState nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingState sql.NullString `gorm:\"column:BillingState;type:nvarchar;size:40;\" json:\"billing_state\" xml:\"billing_state\" db:\"BillingState\" protobuf:\"string,5,opt,name=BillingState\"`", "//[ 6] BillingCountry nvarchar(40) null: true primary: false isArray: false auto: false col: nvarchar len: 40 default: []\n BillingCountry sql.NullString `gorm:\"column:BillingCountry;type:nvarchar;size:40;\" json:\"billing_country\" xml:\"billing_country\" db:\"BillingCountry\" protobuf:\"string,6,opt,name=BillingCountry\"`", "//[ 7] BillingPostalCode nvarchar(10) null: true primary: false isArray: false auto: false col: nvarchar len: 10 default: []\n BillingPostalCode sql.NullString `gorm:\"column:BillingPostalCode;type:nvarchar;size:10;\" json:\"billing_postal_code\" xml:\"billing_postal_code\" db:\"BillingPostalCode\" protobuf:\"string,7,opt,name=BillingPostalCode\"`", "//[ 8] Total numeric null: false primary: false isArray: false auto: false col: numeric len: -1 default: []\n Total float64 `gorm:\"column:Total;type:numeric;\" json:\"total\" xml:\"total\" db:\"Total\" protobuf:\"float,8,opt,name=Total\"`"}, DBMeta:(*dbmeta.dbTableMeta)(0xc0004012c0), Instance:(*struct { InvoiceDate time.Time "json:\"invoice_date\""; BillingPostalCode string "json:\"billing_postal_code\""; BillingCountry string "json:\"billing_country\""; Total float64 "json:\"total\""; InvoiceID int "json:\"invoice_id\""; CustomerID int "json:\"customer_id\""; BillingAddress string "json:\"billing_address\""; BillingCity string "json:\"billing_city\""; BillingState string "json:\"billing_state\"" })(0xc000020c00), CodeFields:[]*dbmeta.FieldInfo{(*dbmeta.FieldInfo)(0xc000276640), (*dbmeta.FieldInfo)(0xc000276780), (*dbmeta.FieldInfo)(0xc0002768c0), (*dbmeta.FieldInfo)(0xc000276a00), (*dbmeta.FieldInfo)(0xc000276b40), (*dbmeta.FieldInfo)(0xc000276c80), (*dbmeta.FieldInfo)(0xc000276dc0), (*dbmeta.FieldInfo)(0xc000276f00), (*dbmeta.FieldInfo)(0xc000277040)}} "TableName" string "invoices" "apiFQPN" string "github.com/alexj212/test/api" "apiPackageName" string "api" @@ -302,10 +302,12 @@ The following info is available within use of the exec template. "selectMultiSql" string "SELECT * FROM `invoices`" "selectOneSql" string "SELECT * FROM `invoices` WHERE InvoiceId = ?" "serverHost" string "127.0.0.1" + "serverListen" string ":8080" "serverPort" int 8080 + "serverScheme" string "http" "sqlConnStr" string "./example/sample.db" "sqlType" string "sqlite3" - "tableInfos" map[string]*dbmeta.ModelInfo map[string]*dbmeta.ModelInfo{"invoices":(*dbmeta.ModelInfo)(0xc00117d540)} + "tableInfos" map[string]*dbmeta.ModelInfo map[string]*dbmeta.ModelInfo{"invoices":(*dbmeta.ModelInfo)(0xc000191540)} "updateSql" string "UPDATE `invoices` set CustomerId = ?, InvoiceDate = ?, BillingAddress = ?, BillingCity = ?, BillingState = ?, BillingCountry = ?, BillingPostalCode = ?, Total = ? WHERE InvoiceId = ?" @@ -361,6 +363,11 @@ Table Name: registration_source |ms sql |y | y | y | y | y | y| n ## Version History +- v0.9.25 (07/26/2020) + - Adhere json-fmt flag for all JSON response so when camel or lower_camel is specified, fields name in GetAll variant and DDL info will also have the same name format + - Fix: Build information embedded through linker in Makefile is not consistent with the variable defined in main file. + - Added --scheme and --listen options. This allows compiled binary to be used behind reverse proxy. + - In addition, template for generating URL was fixed, i.e. when PORT is 80, then PORT is omitted from URL segment. - v0.9.24 (07/13/2020) - Fixed array bounds issue parsing mysql db meta - v0.9.23 (07/10/2020) diff --git a/_test/dbmeta/main.go b/_test/dbmeta/main.go index bf7940b..e72899a 100644 --- a/_test/dbmeta/main.go +++ b/_test/dbmeta/main.go @@ -30,7 +30,7 @@ func init() { goopt.Description = func() string { return "ORM and RESTful meta data viewer for SQl databases" } - goopt.Version = "v0.9.24 (07/13/2020)" + goopt.Version = "v0.9.25 (07/26/2020)" goopt.Summary = `dbmeta [-v] --sqltype=mysql --connstr "user:password@/dbname" --database sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ] diff --git a/code_dao_gorm.md b/code_dao_gorm.md index b6d5927..705405e 100755 --- a/code_dao_gorm.md +++ b/code_dao_gorm.md @@ -55,7 +55,8 @@ func GetAllInvoices(ctx context.Context, page, pagesize int64, order string) (re // GetInvoices is a function to get a single record from the invoices table in the main database // error - ErrNotFound, db Find error func GetInvoices(ctx context.Context, argInvoiceID int32, ) (record *model.Invoices, err error) { - if err = DB.First(&record, argInvoiceID, ).Error; err != nil { + record = &model.Invoices{} + if err = DB.First(record, argInvoiceID, ).Error; err != nil { err = ErrNotFound return record, err } diff --git a/code_http.md b/code_http.md index 85d7636..035df26 100644 --- a/code_http.md +++ b/code_http.md @@ -138,7 +138,7 @@ func GetInvoices(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { // @Failure 400 {object} api.HTTPError // @Failure 404 {object} api.HTTPError // @Router /invoices [post] -// echo '{"billing_city": "cjuHwSGtQsvxoudomCbYKIpzZ","billing_state": "ZYmdoDEweNWlqtWNoZnIoLHSU","billing_postal_code": "EXQosbeNyzdoEZxEsunUdwKab","total": 0.4938656834813154,"invoice_id": 72,"customer_id": 86,"invoice_date": "2092-01-02T22:21:00.61433147-05:00","billing_address": "dfaDgvowdMJWOQrTfwwNUVAcN","billing_country": "igXpMTfRsqHWhALluklMJLYZK"}' | http POST "http://127.0.0.1:8080/invoices" X-Api-User:user123 +// echo '{"invoice_date": "2311-01-24T01:05:44.420640458-05:00","billing_postal_code": "EOINbzuauKmMHiaDymdYsvXDx","billing_country": "cqtEUexVoitsOvqknKNnhShPI","total": 0.932417421427433,"invoice_id": 50,"customer_id": 37,"billing_address": "UgIfqiLZTewHKFZZuTZDwdHpf","billing_city": "mWRUstvZAmHtOuvtsJzocfFFw","billing_state": "gInXWdcekISCnmaDBcsDRWcyB"}' | http POST "http://127.0.0.1:8080/invoices" X-Api-User:user123 func AddInvoices(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { ctx := initializeContext(r) invoices := &model.Invoices{} @@ -191,8 +191,8 @@ func AddInvoices(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { // @Success 200 {object} model.Invoices // @Failure 400 {object} api.HTTPError // @Failure 404 {object} api.HTTPError -// @Router /invoices/{argInvoiceID} [patch] -// echo '{"billing_city": "cjuHwSGtQsvxoudomCbYKIpzZ","billing_state": "ZYmdoDEweNWlqtWNoZnIoLHSU","billing_postal_code": "EXQosbeNyzdoEZxEsunUdwKab","total": 0.4938656834813154,"invoice_id": 72,"customer_id": 86,"invoice_date": "2092-01-02T22:21:00.61433147-05:00","billing_address": "dfaDgvowdMJWOQrTfwwNUVAcN","billing_country": "igXpMTfRsqHWhALluklMJLYZK"}' | http PUT "http://127.0.0.1:8080/invoices/1" X-Api-User:user123 +// @Router /invoices/{argInvoiceID} [put] +// echo '{"invoice_date": "2311-01-24T01:05:44.420640458-05:00","billing_postal_code": "EOINbzuauKmMHiaDymdYsvXDx","billing_country": "cqtEUexVoitsOvqknKNnhShPI","total": 0.932417421427433,"invoice_id": 50,"customer_id": 37,"billing_address": "UgIfqiLZTewHKFZZuTZDwdHpf","billing_city": "mWRUstvZAmHtOuvtsJzocfFFw","billing_state": "gInXWdcekISCnmaDBcsDRWcyB"}' | http PUT "http://127.0.0.1:8080/invoices/1" X-Api-User:user123 func UpdateInvoices(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { ctx := initializeContext(r) diff --git a/dbmeta/meta_mysql.go b/dbmeta/meta_mysql.go index 3542a52..4839a0f 100644 --- a/dbmeta/meta_mysql.go +++ b/dbmeta/meta_mysql.go @@ -146,7 +146,7 @@ func mysqlParseDDL(ddl string) (colsDDL map[string]string, primaryKeys []string) colsDDL[name] = colDDL } } else if strings.HasPrefix(line, "PRIMARY KEY") { - var primaryKeyNums = strings.Count(line, "`")/2 + var primaryKeyNums = strings.Count(line, "`") / 2 var count = 0 var currentIdx = 0 var idxL = 0 @@ -156,15 +156,15 @@ func mysqlParseDDL(ddl string) (colsDDL map[string]string, primaryKeys []string) break } count++ - idxL = indexAt(line, "`", currentIdx) - currentIdx = idxL+1 - idxR = indexAt(line, "`", currentIdx) + idxL = indexAt(line, "`", currentIdx) + currentIdx = idxL + 1 + idxR = indexAt(line, "`", currentIdx) currentIdx = idxR + 1 primaryKeys = append(primaryKeys, line[idxL+1:idxR]) } } } - return + return } func find(slice []string, val string) (int, bool) { diff --git a/main.go b/main.go index 529fc7d..4ea193b 100644 --- a/main.go +++ b/main.go @@ -101,7 +101,7 @@ func init() { goopt.Description = func() string { return "ORM and RESTful API generator for SQl databases" } - goopt.Version = "v0.9.24 (07/13/2020)" + goopt.Version = "v0.9.25 (07/26/2020)" goopt.Summary = `gen [-v] --sqltype=mysql --connstr "user:password@/dbname" --database --module=example.com/example [--json] [--gorm] [--guregu] [--generate-dao] [--generate-proj] git fetch up sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ] @@ -1017,6 +1017,9 @@ func regenCmdLine() []string { cmdLine = append(cmdLine, fmt.Sprintf(" --rest")) } + cmdLine = append(cmdLine, fmt.Sprintf(" --listen=%s", *serverListen)) + cmdLine = append(cmdLine, fmt.Sprintf(" --scheme=%s", *serverScheme)) + if *daoGenerate { cmdLine = append(cmdLine, fmt.Sprintf(" --generate-dao")) } diff --git a/packrd/packed-packr.go b/packrd/packed-packr.go index a37fc89..49fef16 100644 --- a/packrd/packed-packr.go +++ b/packrd/packed-packr.go @@ -11,48 +11,48 @@ import ( ) var _ = func() error { - const gk = "79fd8255dfe5485a1ee2feb8b2e5e745" + const gk = "d9ac9ed36c9c88dc058d5c921be826cf" g := packr.New(gk, "") hgr, err := resolver.NewHexGzip(map[string]string{ - "0b83c1027ea0e0af49fefc4f25bd6ee1": "1f8b08000000000000ff84964d6fdc361086cfe1af18082d20056edc26690f067c486d24709b388bd8c9c530d65c71b4cbae440a24b5ee62a1ff5ef04ba2f6c3d5c15891cf3b9a19be1ab9a5e59a2e1176bb378d6458cffcfd2d6db0ef09e14d2b9581ac6a4c46c8f9397c280d9702aebe7dbf06ea7e6b62b62dc60d2eccbbb7846ca8829c00009c9fc395426a30e0f0bc42010a4ba918700da5db648e0de0650896ff5a9018e31b1ac571835fc534104d42a9c030a8946c802d9c38550e917f3b8cfc858aed911c735d0055f83fc19d7888fe768cfebd65a76befdc26032e62bc800f91de8d91aeb1c6939198db4c23057c88f47e8cf4114db9babefe3c8955d9452e96c0580d5c547252e72019e2fd1ee219baa8514343db076d1417cbc7d7f776e9465492148490aa132570c14d5e00ec52cd2534748df95169e1c0dd0e14154b849f9cc4baf22cfcb6105c5cc29be14e43df27e11fb2dd6e94f57df60897305d1a13f50ffb0550b0be27bdb3fa9dcb0918ea52f1058259c5eefb9a721e7a5104342fc0d711cad4cfdc942be0e1b6a41a83c52fdc82bd149a4e09c8fc7a3682896d0fe964f388c49af1b4c6ee2622efb843dcaf27a037d421e8d713307ae5108d3b1e6658d1ae360758d5983777ade2c25479d689b590cf2234fe027e66d9991d32392fbc45e2697db1d3cbeea0aa6889d0a05949a6a1920a1835746153d34675a5d1b04481ca8d1d37bbf6b5febceea351867375cb7f622515ded18d5d47a5a472cb33852d5598fbac7ed09adbfee5e1158b4619f9c17b7901c91be38b19ee07f769a0ded7f615b74e8c35f90a46812f1176e4954dddd9d07b325c4fff68292e32411bcc9ec8ab2b59778dd0f0f0f8daff74410254facdec29a49510695e1edb4fcca7ebd34b84637e3782e1bf30b9b830498edc0236c94ff223c79ac58292a202b994f3ca12f3585650dcdb87bfacb0f959c55f775f6ff79e3255d8bf7b4f992969e4a2ab12dd54d306e0842e49ef455dcc31ea66521fefd89eae95da9f71d3a0e78e37a3f480656fa5413d3d94292b2ce0c8e4348e93a1dadbaeae9d73c76b21659d9cb39e8bc058fe3a18c876273c641a383accf565686a2a9b293466fba2ac758815dee899e20d55dbbf717b2abfd613f33506c987cec81b512a8c9d3d90d0cec8398f48502945b7f05223a825c6173335f0c1a15960f086e73fa3589ad5e88d3fdec31e5f3bc235cccfdf1fb4ee8ebb300ce8f9c612c310f884669c36f1bfa26400d9811b6695ff4ea682dc9e56784c01f938f8ce5c2b8a307a37b43e03b9b6dff7f835b7c247927c2602437af25f000000ffff070054ffc40a0000", - "0fd6a9a2b807d8c0e9c5085e9382e691": "1f8b08000000000000ffbc50cd6adc30183cdb4f315d7a5883a3f4507a08e49066b3a5b48492e41eb4d62757a095b29f65ba8bd0bb17494e59fa73ed49f6cc683433312ad2c611564afae7e9608fcf8a2c0512a31761ff625729b59797d8143046f118781ec2bddc534a301324f4ec8660bc43f0a877213119375a02d3e05941b3df2346f124779696bb217fc33884ef94b98d0c7227a7575a2dbff97162f68c0bdc31dffbb0f5b3533dd40e5be354257f53d5b45b692c556505a00bb25cc9b9ffde6b3d842306ef021d83b8ad671f234b3712de6a4356e1ea1ab5ce67a7bdb8f58ab6199f52428c307ad1896f6cf6924f5fe874c363b64751fc8b3d273ff962f9747aa194fa18c9a994ca818b943aacd9ff986eb4a621908271e1c3fb3e77abfd3ac4b6990e36275dc52814d9c7834d6955d16b6c3e8a07da19a7d6d3c1766ddb188daf7e1c89f1e61aced86cd054242fd2a3e89ad4b60dd334db505fbb2a5677471a96a97e897bfcafd1fe58075de993f39d95610a333bbc2bc15f9b14a816120f678baebb36b58b6ffb330000ffff56140cec28030000", - "13dfaee4bf0d3c35e83f54d3ad36e25f": "1f8b08000000000000ffec564f6fdb3614bfeb533ca80dd214a995a4dd0e1174c8d22d08860c469b9d8ac0a0a527958b44aa2495c525f8dd0792b224c7992c67c34ef3c5e2e3fbf37bff29574c91474820ac0557fc7d1807414dd27b5220683dfb4814591289bf910a8d89035ad55c28080bce8b122327b36cf248d10aa522553d73a470c049d5d766394b791515bce0bd883db983fbeae48280d78a72066f3a8659cdeba6240a17a42c8f2001251a8cd77c055fac0127106a3dbbe42ca7c5ec866758cefd8d871fc6cfe8c66f0d299f553c602ab85482b262932fa8504a6bf713caa654a0030000644d05c251166a55634bb6bf9f85e0021238893bd2e7264d514a48e0d4134de0fe860a529e59df4ee1cb0052da48c52b462ab4800e2f798687c743cc1517a84821ddf51f92b3f3d02a0ae1b12ad79fd9b2fd3abcf3d6bd9bb0762c81b331a3379e6da7dd565d6bba3b59ebeb830560823ea436a5b811524f711159a8f1a082d620082b105e2bb22c5dfa8fdbef6b9673384f60d69d2418d38946d1fc5e693d609e7d56a24995d501c640025a0f2eaf59868fc6c45abf036459aba94de226649ad9787a94cb95420919510412786f5d97281e688af093956119e8e0654e883a852b54176539e2c59b9d1c9ff05b83521d8140d50826618a88ac399378140f81ec40b12f84fdec5f64d998fdf1eb6dfbbbf8b7ecff5e6744e118849d1cdb2826886c01f988258e03d9c9b10d64824807a4ef0f13bca0b2a3081ce1bceb3e3fd2bb7931d6b27e563c37d5ddffa26102535e30fa1d333bb572524a8c770adde36a0f7e49bf634ad2af38901804821ec3eb9c629959e7079ed8b9fe8ba5770d1e4570c9cba6622e164e66e60937a888759db2a2e5b551f11cf376eddeae6ab421d9ba70467c50dd8c83a70c732e8d19db06bdce2b3ed036b21db4069429a9b117bce2375ce02d29a4318777f146d974c99e3abddacc53a67efc00b55f68ed9aed692e33fd646e372017198af56cdec7b0aff8d672fb30f0cbbc372eb046a230db5c25bd2263d6abe1ec295a0fe9790f3e0c2f1457a45cd8c216997d5efc103f0de1a4f875499d73694b53a282133066cfcad51a680edbd57a2de7825644ac7ec59567dbb04659fa2f5472a772b47ec3bfa9dfb0ab420770508f536339a524a654423fed262daed6e04ecda71b253e6dc7fd7367fa4a15fc4f7991e798da8e78da7153f7e3cb9c9dbc4aff337fa7aee1ff5b73526b4e7ea28c27b84fdc82f499732d69d3e0cdda5ff476b0d3ef71750caf1f48d9a07bd2b41b5c6ba805652a87f0e0d5bbb39387d0b1da97cac6e59783db3b387865afbd8ef6cfe5c2fb1c04f0360afe0a0000ffff5a6f5d1ec40f0000", - "1e0cb57ee676484cd9eddbd5098743bc": "1f8b08000000000000ff2c8fb16edc301044fbfd8a01d4dc09175e9f32b9200810c08d7f8022f7a405282e412eef2c17fe7643b29bc514b3ef6106fcaeec8d23a60d4ee6ac95d17a295a0d25f559324e4b7b77ab4e72a66118f05761bc96e48d69c02fc9be0a37dcb5a2549dab5f1b7c8edfdf8d46c76ffc753f687431251a5dd33d6e49269ad5b5be120d78e5669876e076c1d425199e62cb4fccbbb2197e041add9ef6f64bb7d20d7a872dbc57823eb8fa9961aae9825638c85d824f69c373e18cde381e44fc17e37fb73f343aed07ecc68573e41c3644a91c4c8f51a7caab3ef830045d57ce8689933e610ac921f5c8103bd38007e7a8f54a3449be9293c8fe4a44f4190000ffffcd9078ef62010000", - "24f336b2e644d299c7702d48cc77c3e6": "1f8b08000000000000ffbc91416bdc301085cfd6af780da56c8aa3dc5bf6d0267128851068ee8bd61aaba2b6b48cc7b08bd07f2fb2bdb06cdb6b4f23cd1bcd7c6f9492a5ce07c28d3571e7220f3b47a25dd4321cfa9b9cd5fd3d9e4952d23f84a7565ecc4039c38f30e8a6d08a8f0112e1486030fae07a02531bd9a2e338407e1252d26f66dfd3fa58ca193e9cb54723666fc6b36cd76b194dcc91718727e697284d9c82ad61f7687cb08ba80ac55f1037ad1cd1c6207414fdb0c43a2536c111de779e7a8b4f5b2c60df4217f543b4d494fc98335282efd63afdca7e307cfa4ea72fec4a7bcc15ff522fc5e738b77c3b1d28e73a250a36e739e02ee75b6cd65d7d4c490fd152ff6ada5fc6adbbd057a6eae279f17d8ba42adfcd892d1ebfeac6f3289b0f4bbf1affcbea9f9ef453e1fb3c93bddb22f8bea00258592ffe525515934c1c70c626665565a5aef3c1f72aab7596fa1d0000fffff6861c5cb7020000", - "24fb6130ce9337283a64cdeb1f73d77c": "1f8b08000000000000ff8c945f6fd33014c59f934f71895448509ac1847898d4876d5d61b07f6a2721046873939b60e1d8ad7dc356ac7c77e4c4ddbaf247ed4b1dfbdedf39b64f626d8125970851c1d48d598afb9b0a890991552aa37a21a2b60df7f6e01dd2a110d66633d24d4e17acc6b6056e8041d9c89cb892400a2a24606004cf1154091a73a58bd824506a5583b5d9359b0bf4dde4c6c025d077746b63466ccecc7ab9f08f4e7ec134ab0d0c61c12a04f7f3438dcb060d61017181256b0419e7e355f24797e1bf1086209b7a8efad19c710698e73e61ec6f41942e50f7d2c51c8cd2e4a772259a5aba5ad45a6918c289d6178a26aa9145ea8a275c16fd62e84eebefa719e7740fb99284f7941df7ff69672c7ddc0097f4f64dea850d692eab04628da673fde5db4b6bb35a1528ae58fe8355fe2cb32da9144811135375e7b64fa9f3d6fb4bc08681590a381841646d6650604ee78d203e5b8ab68dc230e0a5d77f368228720d6eaa37633ae78c4b73285771579642f4e26b1475e420e83b5d6318046d18b49bc0d103f0a1ccdaec4af39ae9d5475c990f8a4b2c9c8d75e3f8281b6bfe13b5db599c7488da98a5e8396e2b23286bca660bcd25957134305e6dbe828181cbc96476720d8302a6979f663039b93e7e0f93d3e9ec71eef2e2ec739482590a7ff2dbd79284410b280cc23f1c2d94a14aa3d9c9d4edc0dc6ed83a3b3d3f75831d1dec2ab0c6a6bba0438f1c1f65539c7359c4662992fe06ce5455f561905c74f2fd8ccb73c74dfacb7219eb08b32e533ee17dd5739fe0753d2fbb486e303552a3a57b4c61f8ba4b6c8fcd25411fe083917bb1a6eaee5835d283a3a7df9ce87fec070fc3fd0dfef662eedf97b00d436b51166d1bfe0e0000ffff9fb98df146050000", - "26364aab4fd746ad627ffcee075ec736": "1f8b08000000000000ffbc554d6fe336103d87bf6260140bdbc8ca979e0ce490c468e1364d0d38db4b5174696924134b915a92726b08faefc550d4a79d2229dafa6272e671de9be16858f0f80bcf10aa2aca758272d7ec9f798e75cd98c80b6d1ccc1900c02ce18e1fb8c595fd2a678dc9891c67ac5967c21dcb4314eb7c65b9d346ac321d95a5486617feac3498952b554a39630bc64edc0492dfe10e2868b4c758aba4b3d9af327ac213ca0da6bc94ae73508ce8416b59d59d8d48a34f9fb69baaa6e8ab25db3cc00b3f48840d3a2ea4651fdff2635505df248984f51d44fefc56a53ada3cfc848e479bcd13d435ab2a913628bfa1955f7c04540915f187fdcfcfb0e77921f1cdb42fda9f1a906e95755cc508df524c4f3af03e6b8796043cea3c47e5de91e0348a171fa42f578c81e752da41f4a8552ab2e83e4976463b7d28d37ba5b4e34e6845e46cb5a24eda3b53c6aee921b07e03c20207a3ff0083b13609e814dcd1f79da70f60e7ef48a8d6b7091d17dc6d0332772ef035a6cab7415519ae321c66f79d4099d8baaeaaa8ae03a8c9d3672c2dfe9f29ac96ff7e16745dddddd13735d6d605813bf8d06f2a7643fe35ccc6f0d92dbb79d4b2cc955dc3afbf2d9b351d69c4bd22f05127d88aec701fae1dbed9aa04ff5c93cac6ed3f2b6facebdb1ed6ab1bc03a8d1d2cb4fe1a3e8f91c15ed79f8731a9d52fa0e10318014b2929b7a9ccd63e52da5ef6cbb9c0abaaa780710643efcea073e7bf0dd040c621b6766744cecdf9473c5f5476e01bc9dedafbd2e9ad8a0d36159c9e1bb9a7478de157a8bc79046ddc24fc22abde35bd52b23fa1cadc714a31f48d78bed7befdfafa0f0ce3f0c1d14b1a18c6489ac693a823d318dd4ec7c9890bf3f553bd9ca1e53a76a7adafcb603facc560d9ce859bfa96d58cf941d77dec60d1593fb184b2685c98628a5ca936e08ec2b69389a6164b4b15c39c66d7511b371a60cbc9445bf434f30505112aa39963d095465d0c1dd6cce0074cb5c13d3f91a493fe82091cbc092c3f0995dd4238cf15a031da804821a5c2d29ca6d7aad04529b9c3247a9fda9e79be08a17bb54ac8207067b0e0e6557531577040282d26e07427a69168015dfc4e59816fbe802a28f8854b9150cc8984024daa4d4e65e6313dcdff5dad5a09f38608eefd5f5f366abc8bcaf52f4f7035cd96a3e3fe79fc07cd45d1e60b588e1eb510fd953790d5ecaf000000ffffa2d1fd05fd0a0000", - "273ee27d605fbcf55a2597b5b3bb87c9": "1f8b08000000000000ffb4545b4fdb4a107e8e7fc51cebe8e01c1987529e52452ab70aaa0a22925ea4aa429bdd4958eaecbab36b025df6bf575ecc256e0cb46af3127b66bef9beb9d9398153a9106256c853264436d3999d1779ec7dd4ebc1b610ce65234b25b7476c8ede031302ac0e7f0c8c54b31c81906b0a66e7b2319be45807dbea19a4027b86956f8f593661e6d62dead78aeaf5a89ccf195d559cc0d4133903620f0d275958a9d5df93356633038d2604c736e758588073a355300c498b92e3430b23366f8261a2c555659c6b81f990f1af6c563367cd504b25425c75a4e189eb96718ec6c0e6c606383d39476efdf33207f81b26f39210b61a7056c865f0c1783cdc27d2d4806dfd0aec449716097a4b4ae01aac7ea71748dec3e7421bfba50a467ea661cdb9b17e3b3a3e829be11daaa9ce0e95b14c71840defd7e01aceac2d60783c1a435c3df67b3de7fecd0cd205d28136d6fbfebd61a8c97adfae20864febdb855c7f6f90faa5417ab1f9329a968aaf38846411b8b313348556063f92b4482910fc5fdbbf95686c0a85098114cacfc24a982eb8a8c3ed25f4072095b492e5f23bee6a65f1d226d48d3aed5dea0fe0bf67cdd8f928eac8292051052264a2ea664229b466efbe0ae1ff0c40c9bc12d921b425a930c684dbcb141629dc64104c2ff3ef13ed30515778078d3a3e8a2200b897d24a9fede054138ed805264d29107ebf2d07007c90d14e3e242c1861d27db6dc0f2c9782594c560f64979059fcf385dcc1ebaa1e4cf95651bd7e37a9298578f91318a72ddf8915921fd902246a0cbad276c128c031dc7efb2aa7701a52c06065d92b6e2e50b72fef5d239ededf9f957716d505870bb98d7b84c947cea112de473f020000ffff00bbdf6e44070000", - "35a3d495c4db180498c3159030d961b1": "1f8b08000000000000ffc4576d6fe3b811fe2cfd8a390177900a594ed27dbb6c5d60b1d8971cee768d24872eb05d2c68696cb1914995a49db839fff76286a45f125f924f2deeb2b2a4e1ccc3679e99a17a515f8919c2ed6d257a39f6779fc41cd7eb3495f35e1b07799a649395439ba54986aad68d54b3e1bfac56f4603a777451182fc3d6b99e7e5b67a49ad92c2dd27438848f9797e34fba16758b6fb572a81c5ccbae038b0e5c8bd0a268d058986a03753070ab1e41745acde05aba1694067220d5ac4aa70b551f709a5f0301a8ced1f65a59fc87910e4db971e95115709b26d7d5478e9917d505ba3c0b1e0697ab1eb3cd8ae28021c51b90b9d15d5642a6f4803194a0f4c03a6d303bb06c6cc46c2e76ed0f59bdbbe9a5414b66475991aeef92f7cbc5e74f8799d30a84e2dd43dc3db329c0e18de38c3dc62cdee795e21d2695493c948112b24dc4cd162e50355bec06ddc22870e20a41c052740b04a11ab068a4e8e47f10a403a78141d38bb880f64b3b34014a001cbdff59fa0dfc253cfff702ada3ec360852b99282d30f345351e3edfab034fe87197f54989edcbe1352bd86ba15c6a21b2ddc74f0ea90f72f83dde583cfbd935a598fc92a399dfa454c545849dc100eaefa12d018381d712aaadf84b1ade8f2a5e88a3491537ef9c30894ec88b7e48c8854a2bb40b344f3ce186d480f86bd146992f83ca6c93a4d93ef257c871184e039878b7239e0684f394291476d4824248aba9348d9b4a8a83fc1f3a3a360c099deb3f2929fa14223ebd011bc8c0ec27fa2a288098ef87f5750c2c036e4677157545d4b0c28b392388a74bf691aefd27e14aae930901dea732e7ad0d3c0d4d05fb82a1736166a6c4657b8e237a1a4ed4e870225e6b8f3924a186b2797d8ad4219df83918bcd1342f1d5c7fee62f25b43e37c1b8d8bba32c04b1ec3e7ebf50754ec19e9858ca669a24d448af705506eca7233042cd1076f091feefa666bb84c44fa24fda8ad5458d934ba34893754c83eccfd9eb0004b1bda8ddc220b856386875d77836ad13c6318fa81aca8b0858f414644f880c5a8b36e5261f5d7a7704d2af57e8aab3719a900f887701858a28ea16eb2b9f5e0449916672896a270c48cbe524d506069bf87c064fb989304a90fd9bb0d2c72c60a235378fe19040d6f3de4f276a0750eb792f8cb45a71b7e11651bde587986f5c95602ade55017f1fc111fcf4d34396a89a02fe06479cb03857cc02a929c5fba9e82c121d4b61a03772291cf2062c8ce0ebb7b09bdb34211f1cfa94f733a66e7c36ceb3e3a38affcb8a324d88e4d3c0f2aec5c9f3e7f18fedd6e5430e8faa17cf1e7379541d9fbc7cbacf9727d5f18b477cbe3ca9fe7afc74973f9f3cbaf160f25477c72f5e3dee908c9e8ef15575fca8cf57d5f1cf775d86d964c75e11178b894277a04e5c2b2d1509fd4b8511140496178459b3ef257fb030e62beeb5b5a0864b47bd6e4567b91a8dc2c6cf33d92f9f8170732e14d9bf6548a7a36dc15597fa595ebcdebcdb19db54f40e0d41d4342144d7815e185fd036b4bfefd41b378d6fbf28b8f70d8781880718e0c5644c206377d8e90a8577b55f97d439f9ef40810e87f001ddd93892b73bb7c24991fb38374c0f2f1e98098283565898202ae88dbe91d8501af1c619513bb8a6cecb3dd74fce0976129768c96682bb478a6d470ca36c17547e6fa684197a9b26b2274eb32c8d1cb75b8ebf8641779b7d19bcd7e65a98061bfa4593fecbe01c453738ebb33573b6e9fbb43e7c7c55177d275d6ec250aa3ea0cbdba284aca463020b4b98ba85a9d1733072d6f22cef70ea60a19cece01a61868ef2b79874b28e7bf46b792e31df818b3813bca7094eb541d61151bbaa828e2401ec50e51bc4050ce0f83548eedeaf410e065e05b287ed562e8d9c5ff4a2c6edbaaff25b1184178e18b5f0df38422ab0644ca9d2253be9c1b5da122047501283a23b1b1398ddca977d11e4f98337a8ceec874e4f44f7bb92b5b02e2fe08f3fee55afb78dea1d0e61229ac84709334dbc2abc71fc9a104ab5557614b5eca3cc491725840332c1e3447ed4d68db5a1849ee35c3b247d15e9cef275ca15f15e9bb970416dfea42b1c5a10b696120cf6062d2a27e85b209c20bcadd7eedef287c43b1cc25b835cd71e42384c27343663e14515b3f99ba661a9c497f1d5c2749489e99cb66aa472d33cfb7109fc7f4653fb3774ad6ee8d7efe7bfd2656cb4d3bc79ef6904a2ef5135b98927f285a18f949da0adb6eea1057bd189ecd3189d6e0aefec57ad4949462f666d6c25be78e97c5b6ebacba68a63f5b136ee1779bb7b7c7c22b61f9701590859145be1d0808afdd78280f1e78bcb92a408bdb60e1ae1048f8848298c46909151e60f44be124802b9ff60fb3344d93f55f6b085a9c84df54ed137584e20d78cef7cfb31bfe9ced61f79590c7b62b2d52f5aaabb61d7e97f030000ffff0ee76ae3bc120000", - "441a465b0481cf25a0dff9e324942dc1": "1f8b08000000000000ffbc92416bdc301085effe15afa1945df02a144a0f293ea4d9b89442086dee41b646aea82d05594bb388f9ef459237b84b4b6f3dd99a37f334df8c6254a48d255c28e91e07e7a747452305128313617a1a2f98abcb4bec733046f12df8431feee444cc303324f4c1f6c1388be0506a21311b3b8c044fbdf30adabb09318a07d98db4d486f40f6311be53d2f632c84ece27592dc7743979ef3c76b8f5fece85d61dacaaa13ab4c6aa229e65956e5b69462a9925009d234b49eafbcf5c9b3e3ca37736d0731037e55bc7e8a51d08afb5a151e1aa41c1f96cb513374e519be233336284d14b9eb8f76692fef8858ed77e48f6c8197f53d7e227972d1f8e4fc45cc7485631e70f76cc5b6cbcfb395f6b4d7d200563c3fb7775622b7c5bc4aa0270dac1558337318ac9291aef65ff430ecba8c5197de45ca6ba54b2ff285ae3e7b0292e35fecf1812e06fc4ccdbdc95d1509db8cdab7ed5c09a11310b85341cbcc5ee6dbd7e2a59e6ea04d52483b2f605eac539cdae79f1ff90cfffb864fdd256172d49aa135f573baa9355c5d54254fd0a0000ffffeb7d75577d030000", - "47dbe9e0edc0925a11e198ed62f6cae7": "1f8b08000000000000ff8c91c16adc301086cf99a7184c0f6d20f23d90cb620a6993ed9634e745b1665d515972ac714910f3ee41f6c6311b1fd6278fbeef9f11a34ed7ff74439892323aeca66aab5b1201b06d177ac6af808858d4c133bd70315587f6fd2f726f7d138f15db960a808b2225d50643eefbefdd56a480093796ff0e4faa0e6dd90c3d3543e907e70ab85892a839f4b66c821a066b0af806f05ff7c77becf106f310f54075f0663ecb7dd4260497643ecb71f5f8785b25c94da0bc8494f08b310eaf6f50fdd14f8e6efd21a86a734fac5555dda108a4640f932502d506470f2b626d5d84ab733e482937189b5d217993f709bbdeb6ba7ffd49af79c5f1ce46ce57bdceeb5f61228b44fc11ac2783b892383211d806bf3664f4d7d969e863cee7d0c71c43eee1d9e1e93746262602436734d3276f94662602d647ea79dd9b9908447254f32f7fd272f4966c56ef07c776292fd477363ecc6509002931b59dd34c58181df6f1d9bdec1b62ed9c6a82e2b67305aaf149d7c5332c6dcc19d6b49c3344438e4e4580b7000000ffff40e26ec4d5030000", - "4a50571365c55eab93f57a1e52042786": "1f8b08000000000000ff84924d6bdb401086effb2b5ee24b0c967a2f6d21d8b49796b46e028510a2b176b45ebada11da954d1af2dfcb4af2471c83afa3679e7967b40fa5d435fbf8f8119fbee0fa6e6d036c00c1b0e796226b54d6311ac71418ac6d4490ae2d19d623ff10b96e1c450e5375a2ba710eb5685bd992a2158fad750e2b8693106778960e6bda3056cc1e5b6a3deb778ea9529309e6cbfb051637b7f8daf932a9822a0cfb6230ee824293a0da11b015e29a5164d90ec8344991966b2804d688825e93e36ecd2845334af22961d98528b5fdc71a5b1bd73b9126f9dc3b2a4726b5078efd374f35438681294543e55f329c2b353fb21e2e6a3de2569266235d1b66f8fdebfb1fac9ea1b9a2ce4590d7f876bbfc7118df8f4ccb485b174aa97de4d16ac5cf4eee71b84525adcaf0b0e4d85ade586fd07229ad0e83bf2163bd79bc9e8c00673fc9b0ce9603343dea651042c365faaba3e4b86fa8f40df39653083a5043e598b96ff40933548e99053b7ecb0c953d935ec83e5d1f1c637055148511f5f2b27ba4b8d2244fe9844f862339971bc963ddb82be4afaf097f6b1b465cd09c778ceb5f3690d6e70de3712e1bba1e3c2f19af7759a27bf0bde47f000000ffffa7724c4920040000", - "4e17fa09573eade805ccd186d7c99d03": "1f8b08000000000000ffcc58ff4fe33816ffb9fe2b9e42d9b6bbeb84e948235da5de4d8132f4b640051dddee0d7b95499cd48b63671c07860df9df4f76d2242da0634e2771d188c61fbff7b1df173fbf0cfd9648a5617179f1f7d562b23c1de7b91bcb20e3b42810aa668f27cb298cc6d0eda76bca39044453f869ff37773f76f703bc7fba7f36d8c8ce27cbe9d57275747176365bb69522a681cb08304e14d5fa611c4a15133deaedaf7b8005bcab290e2f27e747a7bbba378a087f0d8f91a209e03b7084ac30e7112c78fde3a39f69c001f4a007381c368c9f67f3e5eae27c355bb469bf40b7dbcf0489e900c6306722fb06bfc30f3fc05aa6dac080193c3e36c3867076be3a9e5d8e5def86890db8981cfd72395c4d7f9d1e7d5e4e0ee75b3ef3651c1311989d27c4bf554380e15fc10be89d2732ce6be6ab7f4c3efd678af49e44bb044f8cbdb81a6f54b3d21a32402ca45fa1dfed974e1efc3c408dbb63926aaa1015010b6bba3292aba3f327d154f40e73966a389d4e8ee111ee7dc01c1e21a501f4520f3c2feac1560c8e57e79fcf0ea79796292f172e70376fd6285acb2e66f3e96a7e7c329f7cba1ae314f0afe0c48409d7e4e3b89b9b9fc2816b042f3eb5ca565a8ebbf9d6f8b5246d13c6ddbc3dfc1e8a2a132b866af4dd0426ba796b543808dd648c072b264239027f4dfddb55a2a8a25f616f0f0ecd1ce835055f0a4d98a00a753e527f2da1d7abdff07ffb3414edc3563edd7e0b1b3c237971f554f2e2aa25692bd0d6d3ed1bac25b25d784a912dacbd7099f25b74d58168845a895f0b35d88e197566b7ccd860db9cedacde70b6b196b429c8bb561b6c4b64b7e618911dac25bf5b5e0ce50e36f89f66430f21b4f7060fb2ff604d7902a1544089bf064dd25bc0b0d63a49479e171315534e6e5c5fc6de0d9791373c78f7c13b187ac3bf7824d31207d2cf622a340d704c6e69c83875d73ae625fb1b58e52e4e2fce7f1b59bb10327f47e6702fd72cb5988b3a1fc9fd2df40ea79f66e7909f5cc1189c91fbe3dff6f6c029c0fbd71782ff9ce07faef0ef3f55b00779a298d02138d707efdf7f79ff21dec7ef0f523b3888613fbd16cecfd0edbe337f86450fbafdb3c92fd3139bb5b3abe50021f7787a32f93c5fae3e5d4ce6a6bc971b7cd3d897154f8670c304518ca66f1635c2f908e83712279c82a6a93631b3c5ba46cdc5ae3261675384365b6ed46a8dcd143061de21600a215f51a2e92a606a843a1fe3db8029c089294465a73240a87d218ca051402c14010d9fb62fa8134988a8069c99fb7e9d95072592375918122e3ddbc87877c3f26558350e9d6eff9e28c144044e283311540d8f33409ba5762ace0b0b99262792f6c7f3e3c0bebcb88699342b6c2e4192245b46763a55db553a11cb966fbcf2f57c72361d00268079107212a5d07ba63a43b73f592c6cb36c96abc23382e6ee7d1a5c1bb28776c0aaf2e86ccba554dd51e5a08eedef98601a3036a17401308ea8a08af09959c2f5489278a5bc671b8348a28ea951b03165bc61dd6c77dcedd77dfea0a50fb5c79e69087a6f7c888f3825224bfe2f8e31f2cd6656cdd92cc71b3f9bb85b0408e7cf1fd336c3c3a851782641540c387c2149373c75f2d54415f2522ab497378135d5c66a37a5c79c455ba2f01db41306a1306e64c35883149028f907f535eaec45d2625b29e6baaea133b869df03c0f7e60bc1452890bea5e224331f75910ca46ff94cebffe1e0c381d133183677f578642114d024b56a014b134e1ec000f676aff791e7ae018ba2fa50743c07aacfc31d7b2ad4b9768d446a167ecc04fb8a1067a231d40cccce4ce35caf12490bbbd642946aa2996fcb6badd6c29e68b7e7308b8454149cfa238f6870ed5c3933708cbfee68b3a348c21d7d6e4f167611d252f2d24f4ca4dae46240132a022a34d839eb325f06e6d621fc2165e98ba53e925ea2a43625ff3532e5cbab24ff48a5486e5e4fea9bfa87cdc4ab74cce8c966d652081ababef422e95957bcc8a502296e39c9528f091a86244d59245e900eff6449e245d27ff0f9f6ee24272272a58abc6f9e4919afcc9cefbe5911428a4654944940cb9b4053d8bc04369c36fd2fcdec511ccc99b0ff8793e72c8435494f18e501b8e02cac372b09a72850e9de5dea50c9185c3b67da5ecbbda55a1428cfa9088a02fd3b0000ffff30f743bb46120000", - "598cf1a5fb9105728174266f31dc72df": "1f8b08000000000000ffac564d73db36103d13bf62c39976c8c4a1da6b521fa20f77dc49a4d4b23d9dde206021c301011a002d691cfdf70e004aa2647ba607fb6093cbddf7deee02bb6e28fb4197084f4f15a7e67b7a9bd21ab75b4264dd18eba12059ce8cf6b8f639c972b4d658179e441d0d168542e67342b27c29fd5dbba898a907f7b591d6e8817b50eb9c94840c06306ca5e2975a18900e5a871cbc018e426a047f87409b464946bd341a16c117a416e60ca80e4ff7c83c3c52d5a203a9bd8147496358726dac61e85c45fca6c11e95f3b6651e9e080100d8a918538fc0c32fe7add44b30025677b8e35d51070d5a616c8d1c84540a8304586ce0e33fc04cdd488520145d92ec8007d0a111920d06f0957a747e64ea5afa37e23a82ec734511d3b65ea07dcbb43ac467547ea62fbfbf2151c283178966ee6d8966ee94e8aad55ed678fb66b5eb01ee99b6249dccaf66397f50205acd0ae6d7d0ddad6a94fe9e817b505d4c49c823b550ec4eeec4daa9f117a6d51ce23d4cfa2c32633968e341846f24eb3bc23988da5793e02f8abc739e1a0ff17b5ea61a4cacbdd174a1f0da7ca3d6dd51f5d77c36edd3dc3ba3a1a11b65280766ac6d1b1f95bd127a42fc5278203fe476d384ea5f50192adb236ea31d0495cac5dc8e1c4f68f862e71f117ae95d6a87d63f8797d1de833f727c0edff99fc28f51e14bea79b4f7e08f1c9fc377fea7f043cabf534b6bd7c75e500e4db236d4b9782023c7c1fb84a017b167e83a301e8245811635c33898a9a70bea9064e3211c7ede87895e8d8749d997a6398cdaa3f0c30027d991d7fbfd633726cd7289365e8838f9fd1df5b0924ac10241ea47f303392c50188b806b64ad0f97d33d289275a1e94a852513d7ccc8341ba0e02cdb0dffb82e2870745eeab45fd21712586340c15df4432b28c3a7ed598cef19caaef04f24e3cedfc2a773e8565f75a9b9b4c87cb133dc862d351301b32c49e62cfb7ffeceb232b45c0a781748aa11d55f38b7451968338bbeb53ae970d5145745ce42ae61170684b85635e5dca273e142e625c9b6092f68a8ae370d1625bc3b8788debdbe02cda588edf410e696034675e808338d44be4316c6820cb9fdf61924fc9170a76d7d2151f1a2fc0cf2c3874820825314913ec99264314fe9fe456b66e24673b46a23f532ca12d5e5aef6459934c6baefc3ab39fa4204946d92d2a5a0a50ab33675f615f0f5716317c6a8c0d021ace1fc3cc0c0cf9ffb968d119bc9434b55b13edb1b03f6be870178268a75591e290f5aa2943fd15f99d5c8b4dabf3cf77de858f8e76b37fda190da9fa59ec40a84cdf029dde77963a5f6a2c8e793af93d135b088fbbe848babd937f8c5e53dbc321e80eeaebc4ba9857a264b1013974ed751a67dec27c9ac5985a7f1b0fabb45bb89eaa3d67e085a1b8fb65955734675f12bd33e11862f3db6aeb81f7f8f191db58c7569922df92f0000ffff2b73faee920a0000", - "5cb8db77eb52e7f9cc5f078523050ba8": "1f8b08000000000000ffbc55df6fdb36107eb6fe8a9b50acf6a0c859d7270f0196a60ddaadedbcdad9060c43c1506799ad4c7247aa4ec6f27f1f48298e65589e3b74cd4b94e3fdf8bebbfb2ece15b8101221655abcad75c12ce6a5caed4a57a9f7c9780c57d1e85c3eb35473fb9aadd0fbd60a0c8c90658540c81515b020b502e7f239bbaeb075b5e11b8404bbc4f0f6945976cdccdd73d1fe196afd30ab572b46b79bf4f22e71088f79bac963d053349c84b642c9ff0bd79c9506767a101fce39476d01de1925a3614aaaa839b616e788c912e1c1426055c0e40c1a082fe442e517aac0cb6037de3b0762d1bae55312a10b3fe1ed39954db1989a115b0138d7eb07de836676b9e533fbe5e52ba6b590653e5bb3b2449adfeae868a94648ef3d2f5455afe42bb42c6f73a5cea12c02b8f82be980e8eec3b52a6e8371a50aaca68cbf6765dbc87cd7b5a9db0e6af7b19957da2e03e7680c3c3a3d05a7aedf21b7feb81a31fc9289aa2684c73be14c8b6ef0f3f97cfa8c48d14ed8e34f097ba36a8b04e30e12f80856bd546ba4d0c4cfb50a0e9c3be9df8113efc17727077f6866f9f2cf8014f952c143e7e6eac7d9cfafb741bc90c632c9114ebd7f081f6169ad86e9d51cd2f035198f9d7b901ba40f48cf95b1de4fee0d53453640fb02ec370b7bc9de63102df81dba29c0ef27e75a9c5c19a4496d90be7df45db2a825df7fcd86ebc8357f83462b69f03712162903826f5afb5f351a9b8136d191e2acf328053302970cb8bd099c841456b04afc8d174a5abcb1431a1d7f0392c3dcc1fb241938d7df9b0c902814d8e3148b4c1999308da13659907e7faa74940cc422e6fbea0ca4a802cb01a1ad49c6a51f727b93c13a038a55479bd764108874ee4640ddb31701edd74769daf90da2c91910b222ecef9032e84d3efafe4802cee50553ddf2cf889eb0a29d71875d0200f7487aabe74f70a10867ec030e779140fcf9cf6800a081d15f7c4aa819e1707434dc5f59258238863d37b691cee767b2096f696d4df90e522bc02635c5d5ddfe579e66c743fe94353eb0b719bc6dd476b697e4fe33136a859c47de03f8d77bb04fe8f7d7604785fd64f669fdc054639f0060cba7e9d63adccda8ca3bef032537572249fe090000ffffb63231ca860a0000", - "5cf046e5f8e532c6c48af125e28997af": "1f8b08000000000000ffac575f6fe336127f163fc55440aed2c291b6bdb7e072e86e36c906974bd238bb2db05d14b43492d950a442524e7c86befb6148c9b11db7dd87e42136677e9c7ffc71386e7971cf6b84860bc598685a6d1c242c8a0bad1c3eb9984571d5f80fa96bfa50e8f2b9732d7dd736fccfada81597b4b04b5b702963c6a2b8166edecdb24237f91f8d1646abdc3ec8a79845b550d3475ed76860136549a6f35aa8431bd4f1b69997807cf83c1312ed0e9a60b556a2a06f31630000bf6f392c51098bea9ec0fab0b1f64196b3780fb0d687f6411e96462cd0e4cdd23ec87d30296679fbb04fd370e7d4604638fc67cc188b7e8778b5ca1a5d7612fb3e2f75e15358ad32de8ab39f6faefa7e58975c6fad1b5da21c252c65acd0ca3af864d1fc0797700c7167d1c490e76bd93d2ea1b35842a50d58a78d50b5578275a62b1c0805c3a933b6e006129f469ec3fb4ec8f203770825fdb3ce6fd5153cce51c18cb4f0c82db4682a6d1a7221a4c4922cce9670f82b14ba698544a824af59f46c0f60b0c65894e770c91d5a77a29b46b857f2b56572d3970fe2aa6b66685e33adc1e20b57ee5a5ddcbca2a3600ff63abab6afebe8daee3abaed94130d7e7eb5da6d18dcf6746da7beb740683181c14e839d77aed48f8a456b04fd1573ae40db2c88e8620c376024396d75da200855e94dcabb658b9bc8158bae7833a6c67ac6aa4e159074f08650294cbd2249c7e4572c32e83aa3a0cb68276dc97338176a8a66810624ef5431875a28b05e122cae01490a091a03688c36e98a459d9170740ccfcd32fb747b99c4d47d8ff27cb5ca82998fdababe3f5aaf6fb4717d3f3646ea2ad91f56ab38a5bb7c374720bbad16ca51d84ec3bb9b0b28b1124a38a1156391d19d4333f8ce3e60c53be992745464e7a77749bc76f086ab653cd90cf317c3db8f5c95124db2d99fb34138a110d294b128b4ba9bf00a51d5fa3e3bd1aa12f5b950b7de5b129ca62ca2e21cc310c36da7927837e9386591a8a882f0dd312821e95422a9ebec8c3b2eab243ea5e28275dcf8ecc3e609b83986ba83b0f0fdc1e2fb7842eb94453d1bcf950ed41fe94f4e3889b05a6543c217aad2d91d09fbde031668acd06a17f23988075089b630a2757b801f9e5503d8a169ec75454c11c54bdfd7d33ed0ed27e2332f5ca688bc3bb093a00b75de421325f6833fdd5eee60b1e1e2cfd0a7a41b4391a240653184f2aee5c51ce1c7eced968e1c0f847e7c7cccb84765dad4f980b0f9e5c5c9e9d5f4f4f0c7ec6d36778d0cc6e7da3af89b3be081efb9c51beee6bb118ff2be0ff79046a02485957ff5d64de5181a7e8fc9765f99c00f44de72e64942f784e69aecba4595d0eb6c1fe4ddb2c5be8f2730ac4fb4525367be85a2e7da0d5cf4cdb4d04a61e1df433ee316ff8eac615ad8be521fdec33194b3fdca4bed07b163a03224857b1a7ba23f547c72134a6f6873a90f97868b09e87b4a9dbae199d1cd002603298b28477defc151d5b8ecc608e5aa24fe72b0f80ad39f2f8fe0c0fea6e2090453f641d2a61e505a7cb96b73c3085d67bbaf81502417d4cfb814ff7b4ecec01b225b768b0f1d5a97c2be74294516450b3ae790a2c93e222fd17c897f3d7cd78a434a39feba9da4a840a24a165ca6f06f781b845147dbff41f8150577040b2ebfbcfdda7b25f926e363e5d20de918d32fc2cd3f73d921453a1987b90974016c3c60a7f4541b5f1c0aca9b7b26da5ea71e3b3c5e857bfaf3ca0e75fbcca528b9d37f4d9a9d624fc0f1991c1fd409f062ec7c7e98dd76f4ce2bd381e6df4eb9efc6e318b22112f9965f2571a7ee957e549e71f13aed4d9a91e6080e16c08b02ada507e2c00e81927c83b03e973189f4b97c4ac850be5a6fbeecbea95c6add9e698341d2b3f570b2910b187446e002818769a432ba8151292ae00b2e24390f5d6b4f295ef239f123cb04665a4b7f81bbb192857bca02bd0666a55900a7cfd30c618761662303d06a9cc95aa387728598b6f224779b353e550efdbc24949f3810a4d6ed6f2aa68e1a0c6657da896a998c4d7802c3afca6c7a717e7175b7b5be3bbdfdef96e0d3f4f687947e5b1dc3bf0e47136c278827e15ec400060b140b2cd7dddf47d5b3ff070000ffffeddfa650250f0000", - "5e1adf8cb5c8d39cd95dad0ecfff4ab1": "1f8b08000000000000ff84924d6bdb401086effb2b5e924b0c967a2f6d21d8b49796b46e028510a2b176b45ebada51b52bbb69c87f2f2bc91f710cbe8e9e79e69dd1de9752d7ece3c37b7cf884abdb950db00104c39e5b8aac5159c7681c5360b0b61141bab664588ffc5de4ba7114394cd491eada39d4a26d654b8a563c36d6392c194e429ce2493aac68cd58327b6ca8f5acdf38264a5d5e62b6b89b637e7d83cf9d2f932aa8c2b02f06e336283409aa2d015b21ae1845966d814c931469b98642608d28e835396e578c5234a3249f12965d8852db7facb1b171b51569928fbda37264527be0d87ff35433641898523454fe26c3b952b303ebfea2d6236e2469d6d2b5618a9f3fbefec2f2099a2bea5c04798d2f378b6ffbf1fdc8b48cb475a194da451ead56fcf4e81efb5b54d2aa0cf70b8eade5b5f5062d97d2ea30f81b32d69b87abcb11e0ec3b19d6d962802607bd0c4268b84c7f75941cf60d95be61d6720a417b6aa81c32778d3e6286ca213367c7af99a1b263d20bd9a5eb83630cae8aa230a29e9fb78f14179ae431fc717f1f0d47722e3792c7ba7117c85f5e12feda368c38a339ed18d73f6f20ad4f1bc6e39c37743d785a325eefbc44f7e05bc9ff000000ffff6236e43020040000", - "66b3078653631dbd94d9ba366eeb54c2": "1f8b08000000000000ffb457cd6edbb8165e5f3f052b2081d4ebd2dd74511759a46ed2164dd2dcb8c5bd406e5030d2914c842235e451628f6160de6176b399ed3cd73cc13cc2803fb2e41f65900e264020e9f03bbffcce215db1f48e1540964b3a5132e7057dafabf4d24b2f5809abd560c0cb4a6924f1801042a25449843946e14b2f2a5423146653307ff5f27590e46503e66ac4558d5c846fa18af026a1c1a8c690ae25f2124619dcd64534f0c2e592664c9dfee7f262b58ad6a25265201aa197161c67f52d4d55392a7495be80549985412847857ae12425cf32010f4c43f4749511ab71f63d7a42150597857deada7c8f050da9ba07bdf81e5d64c51e9f86ebba3220b78252aa10400b25982ca8d285b3ffe8e22855193cae3f4a3564209133f11740830c6d30c96030c86b99120d9686275a2b1d97608ce5ad41cd653124a0b5fd573a214b677534220624ea059db00a6b0d27f3142ae44ac67989d459c9e3e8c08cc9c17d3424c1a0b39424ce845005bdd45c621e477ffcfacb6fe4c090df7ffa790f7eb00a21c6863c9f82be079d90e31a67a7b54c3fdf83d63c8338c53909cd639bcd3e8724af8538079ca9cc765bc82721f10e703b3b26847a80ec1bc8ac525ca221e32352b2eada9bb8b9554aacc1ff8a46b72cbd0399d1b7fe399a6860085f0de8684c08415dc3b081af06cd1bcfbda3215177d6c18ed7ebcd046ede7808393cb41a6d001ab0d692a4381f12c945ebc9be6c2fda7a868a564cf2f4ca533eae0897083a67292c57892f49f0d12587dde0691576eed21a2033565520211b9303130d49953847bbfbecd1aa4e2d4dd7e04d581c4d91a577a8590a24d7aaf4418ec9ff6544fe1db63076638b3a649c0446853c3db31b0eba9ea11f6d62928921899a579f5fd4b2ebaa969e5c71c383d4cd6cbb31678a657e82c7de977148bb74010f5eed54ab3260bca2476690830e783a11c0645dc54997021e4da7aea1de4d2fc8b32312459ddd0dadf651728c9bb6131c247e762d6796ef8c1cef9859255b84b37d3f5dc76dbfe83af8b86477e05f83d126094aa937d49c041bc717bd82821b041d881facb5ae8621f590b1e0c68f93f1119180f4cc2acb38c2b48a864d0a5e789c65da7be6b9537976645915ead270e6942113791ce58c0bc8082aeb024186c1e3e687c5861a74d9186a619069848c28e909f97810a1725e97ba472cb849de3c25445792dd081b26f6ed05f1424fb2845cdfb83dec228367d44c1adbb193f6385897bd00fcb2677d83b44fab7801483a074f7fe90b4fbd437f12d2332769ad7fae711c5e95a153cc548dc3f5eaa9d22543043d26121ee260e30bcc71bd92b4e80f4add196fcd96b3819fc13d08b7d6c13ae1b849d0c2ded9f1e2c4c39042bb7862fbcba611b017f0e044b14f30103ddc23c2065ab8dfae6fcd0583faa536fbcdd5ff729c85c1bcf8c06426ec80ee4ceba41b582d995e781eb8f166cf62a53b5ee9d7bd882de729ceed15a6071c6f606c7ca71c447632b7a37a677da232780ff20a7ea8c1e02632e9d4de29854af6f8ed947d5bd1de13fbd4ec0934eca96e8fcae6a6d9c937ec32381c307bfa6eb390f49ccdaf20bd3f37c594ff08a1b3acf4dcdf6bacf4ed02c16c0568215390d9d3156d239bf8f9bec6df2e427b61759bd829c564c6b88c7bc8d456a3cfd21435b0b26b6a0ddfa15817fb8f736c9b677dcef7136d936c7dba9b6cdb655c9f5e1fe5ecdf9a7dcdc1d03bbaf3edb3217ede19c8749fd2d69db702d013d0b83e2650d801cdb2ffbd7af9fa132c2e19d7d64fa0bd87b6df9f60f1f8c9117a4772e13c74db2a651b8efd6f587a052c3be5029cd3c9b185fc4d0f974a09ebc0fe78b653bb91852b5d0ba2c7f63a9bd94f636f759727e7b15ff5484cad996e812fe0e1cbd9343eb445f35bd0c665f578ce538660c6e4fac6615ad9b2a9fcaadd787fbb9b1cfb03ac0d2cf021d918478798fa7bfd6af067000000ffffe07f4bfb70100000", - "6719979fa5623fe6f4985a3c4fa67ba6": "1f8b08000000000000ffbc924f6fd33018c6cfcda7788838b428f338200e937a18db8a10689ada71439a9cf84db070ecd671582bcbdf1d394eabaa400512e2e4e4fdebe7f7d87b41b5d4845c70f3d46dd4f6a95f0bee883586b976adf210b2cb4b7c1e82deb395b37de5ee794b214076e0a87b5d3969349c41ea05472775a308962a63056a6b5a78cf1e79a968ec75f11b52c37da598bbe58e97bcdba7c5f81b9793b5c6e20277d6de1bb730bd16054479986e2ca480360e75cc9db4a4ab2fb85494da5a727c988fcaac77a8870c8c8528d98a7f27545ca9319c4575bf563faddc1695d18eb68edda4b380f796eb86f0b296a404aee648aa3fe8dab01b236811e35d08f01eb21eebd883952db7bb8fb4bbb64d9c8fa1e277d9e3e47b338c7cdcad2984c27bd22284e1c04508c9118157deb3d608520fbcfac69b11333bd134c3d452d72bf787f50596e6b9bbae6baae212a9dddb3745849f0c98c167936ea32286dc7b962eb3daa810f29498e3f61d5b5229b598761b35cbb289acf1c9340d59bc98434b15674c5224222f30d44d42964d44b91c6e9b565e0dc3eeb6548d6e1ccaffde96f898ce59336265a72e8c584e5df86fcfe2a7cdb30168c47344d392ebad8ebf055e0ff0124f6b9ebb03cb3d5c766cf1749601f8a772cea3c4fcac5eefd7566a87fc8bce47d58723dbeb1c371438e8cb42b62ffa110000ffff9414cba602050000", - "781e6feba6c4879b7a4a678821c5c894": "1f8b08000000000000ffbc534d6fd43010bde7573c2a84ba287585843880f650b65d8490aa8a9673e5c4e360e178568e038d2cff77e4c40b4b0169b970723c1f6fde7b9ec4a8481b47385192ef3bf6fdfdb8533290e858847e674f52aacecff1690ec6286e831fdb702d7b4a096680841e5d1b0c3b04c6d20b89c1b8ce123cb5ec15b4e71e318a3bd9582abd217fc33884cf94739732c8460efbb42ad73c9cbc678f335c797fcd61cba3533554f3039d3d8c82e3009d738f5a16ea5b692c2d6d3d0539e3a3e5dd043d67c01eaa11b7f22ba195d6967095d5fd59fd691b1ed0b20bf410c466396bc4e8a5eb084fb521abf07a8d45f57ba7596c58d136c7879410238c2e75e2c69b5efae9034d17becbf8982bfe963d4cbee319f26eda514a758ce4544af381b394961751781ea3e85991bd91ed17d9159bc5234d2b9c7a1a461b8eacaff191bf0d175a539b8718175ebdacb3f9cb03ac10ab0a40c15ce3d951a831e526d564f72edf8aadf14328bceaffe5ef6f46ae3227a36771ebbc2a5759e19bf9fe640d672c622e99e586d1bb1caa71f6a23edcdb5c91aa5fa036bc9bf6eaca0fa456c7e21e2ef74f6cd52c14f33617e823e8fffb9c52b827af1a71b80e7546a852559cacbe070000ffff3d217dff6c040000", - "7e226fb971f533cd4812901b01df863e": "1f8b08000000000000ffbc51416b1b3d143c5bbf623ef351ecb251ee051fdaa436a5250d4dee415ebddd8a6aa558fb0c360ffdf7a25d1942d3424fdd8b5633d268669e88a5ce05c2d29af8341efce9a927d67dd43c3cfb65ceeafa1a3b6211fdc0e9d8f29d192867b81106dd31b4ec620047f4c430185de83d21511b934597e200fe4e10d18f66efa95ee6f20f172edcad61b337e385b6755b9ea69462c2153ea67417791b8fc136b07b6c5db033a98a8bdf585cb57c421b03d389f5cdbc3622c9849ef07fe7c85bbcdb6036f6297451df444bdb828f394304aeabe7f47d728349e7cf747e9ffa228fe9c49fd897e42e4e928fe767cab911a160739e165ce5bcc6aa76f556440fd192bf37ed0fd3d72ef42fa19a9279cebd86a8c578f025c452448fe4a9e5af811e0e3ee7a50280426f70fb417fa3bd0b76351efc5a4d8cebf025f63d25fcb741701e32c1e59bf1525f83e94201b3528bea7483377fe555b25a14b793811d719dc12c3c6b4d0f34f85753795dffa58be2f3551189f8984201a7da6b0f2f984b88e0bccaaa8aab9f010000ffffdeb87d7253030000", - "8283a349ac3185b19ba08f41b749fe72": "1f8b08000000000000ffc4555b6feb44107e8e7fc5609d870439cee1709e822a51b5279c422fa109170910dad863775b7bd7cc8e9b86c5ff1dedc6cd4d0929a2e2bcc4c95cbef966be19c7da1433a9104251c9df73e438d731975511364d3018c037c8d6c613a63ae16b5162d380342020ab55c2522b600d3932083052e5050261a229858c74097c87606d3c15b302db6476df41aa67dfb9603113e6d99db63f5de9af2775590a5a380edbb01e6397d66c01d6925039c29b4c6291c2f00496b52f54a6e3339de2c8d94dd3580b326bc3e2314957e63b5c9c52de82597bd00bde8d2a7530fee1c94e456e763905af46c855b8383f42cbda8aa462087f55e18a5cfb0087708e26215979dd3ea5b0a749821503dc1badbc614c3aad136c2daf3ab5b12051c231412bc1771b3193ef2faf44554995c793b9c873a4e9a2f2814c3542b88e3cd3455daa2b6411b758e15119267592a031f0eeed5bb07a768f09bb958a4b9d623116c983c8dbb1c5bb0be5d24742163521bcdf491795dc4efe389d8e3f1069da497bffc234083f105d6b1ee95aa511a4b3d50e68029982d20c99f3411f08b92665e0391c1c8aafb58e42071a7a32b7ba6624186cf5077f01eb4b3d4772f37aad1db0606dffb0f8fda6815d917ec9917f733cef982b08dde77030b0f64d6c901e913e6ac34d335c1bc69ad895fa1fba596dde483ca03b32d8ddb1107eee9f56b2ff83411ad606e98b775f06eeacf7dc7c77ee7b8c6fd1545a19fc8924234540f0796bffa346c31154c60792d72df647657a60834ec24fae1fa9244b51c83ff14c2bc627ee52efe5871cfc73dfd03441d0b1f6f05c22b75caec09e205f642cc83825ba9589dcfd1e860a7b4147661eefb31350b2705d7696fbedcfa29bf05304f308c857edadbc41c735b2f5cfb0821a9ec08fa290a9606c67ba8421cf66f34d1a4607de05b7c824f1116f14f6bedae0f76fe8059de5096fcc2b4e85de2eb4674d1ce68bd584a36aee9369ade5e60cdd7dfe274182cedcedf4b7939beb759c9f412f58c915fc1d0000ffffd54d490107090000", - "85f6f39bf92073a60d92ec0415889623": "1f8b08000000000000ffecdbcb4fdb301800f07bff0a2b67d443a910e288a0522f1c063b215439a9eb79f223f8d1ad54fddfa784bee2da6957d601feb870a81ff1effb1227b2cdbc835026705932494d76851e3b082134afff229499673eb2b392645728cb99cdce5605546d7e578a6f0a7e1a25d745d74a7182e5a6b4d4caaadc4d228da9d384ba75a1749c7787b279d9ea479c73b2ae659e79f7ce717edde8cafcc29412ddbc505db8386b3136879326d2323963329c4c26ed792f021d4a4b28d12d50aff59ba443692ffa716a05d82b85a1340273dea01af65295f4d2b70b32664ec0c83393b60f83d983c16c8e385969ce68cb03baddfddf43b75b9f187ad13f28a997a781fec78c1e022d7ee0f0ad6bac669246a40fe4b76d61fa6d43ce7bbf4e0bd5afeb5b97d7db8b25d20930d829d6a0922ba181b992d436869e38f8f51b1114191696c91928f072c60a7f25a7086692c0c96e650085cdc16825a80f8d31b62488b54c90ee0313e4382f558a72d25dfd5ef7642c16657b089a170c0520302edfbea97210bfaa1e9ea661c5007008bef83bc3fa67317007ac00bd1bd8be4021d71b105f8f7a3626051338bc8138e10ac797000755694b0026cdf210d6eba2ed053ff0c7e29b5783dd2f562ee7e194a709164a921920af26a0eee7ba627893ed5383f788e3e0e836d447049ff70ecc70788fe65383e3e29c49acc373d6e3533eb347be93ab9626eaf57b0e59fd3a3e7159be37a53957e1258434785c499a38f175853e71e414ebe41f45e904d1ac48ef051a9f7c4a506b7ad64c4961151cf008d4ce52f5946330daeff7b7df4637b783e1dded4d10cda4257a820b325f9c62660e761f82072b1eab768e8dc1a418505adb8e75bbb79d28f49bbffb9142b77be639656dfb29e7e4b860a02d2763fd75fe23ac1fec6cac83b73ceec0ad8f3b68eb89f58bc810cdb66fec9dffbf299cb14a54f54b652cd58daf8754cffd47a2d2871d959cd148602e0104a683d05367d1f9130000ffff2a0789b2773a0000", - "86581ab0bcb7eb520de0ec77a97e99b5": "1f8b08000000000000ffbc3bfd5324b7b13f7bfe8acee254e06a771638dbb1712e290eb8f355f8b800e79714bebad5ce68676566a541d2006be0fdedafba5b9a0f582ee77aa9a42a3e466a75b7ba5bfd25ed4566160ba9fdc71df8cb5f61fd7cae1c2807020aa9a5155ee63053a584aa94c24990b9f2e04c6d33094a433af6725195c24bb7913c42b55b96b030b99aa94c786534dca8b284a984d2383f84a5a9612eae254ca5d47023ac96f9131c1bc9da1a729224177fb8385499d44e7e5c9f7b5fb99df1582d8ad4cd952c73972a339e8abc90e30035daad4436977fdcde7c996e8ea6652d53775d6cb48b4d25356f2435b61897bccc8d79dde865bab901177fb8786bf64dd6ae2a4c6e325a50283fafa769661663b71065a9a5f3e342eabf392f7cedd24a476a5fb46c03909ab7e25ab9961c7f8f32456b7b0b703b7f9b5aa1b3f9ab85705eda8d2f5a177605a7b232d6c39eb079777b9686336173e29165fa2cd39f59c99fcf2f4d92f3b944dd8237a684ca9abcce245adedee9877d58dfb3527839042b453e84baca859720740eb92ca5971b707a70760ea252b8f457997988a608336b1668c1ea5a6ac8851753e1640a3d7a688c4966b4a69506fc5c423e853082e6eabc55ba00a145b9fc4d3240c0457cc403423399c925e0540e46d3c8ac148543deae552ef334495e2f692f8833975ea8d231a37dc45353fb80b1ac17c4459df9daca21f11e89d2093590994525bc9a963200825f5632b9517e4e48acbcaa959579c4a6c542ba2191234837a4ad08ad8da743ead22479e7c1d5156acfc14561eca2a3e5569bbf2afddbbc46bd2f36c0e35e11935a54a5c403ecc0998584da09646e21fddce42e85b78d57697900a5b3b2ce65a40a336341d765494b99730717eeaa4c8febb2fc27afea9a5e297441965e5d16e328cbb1bb2ac76bb8e2b531e506180b17456d655113f2f4299e76730c3746b88d04f785c294b795cc90f5a9702a8369ad4a8f4eb0308c294d924921f504fd279bc2189476152960ba241c37c65e8299c199f473389bcb52d7deffc9c1453edd660daee427426e8f1bb80d56ddfe74fb8c351fa98e9fa3b937570b69c59ec9a5fd9383c2fcea8c864a6497a290a869fc5e49bebb72cc701b699224e89de9b406b52aa39336823881c6003ea8517ba1b4cc018d53f11949c7f29680c60c9be65338bb2a95972f3be7f683c333c3a2a518d23b79335396e60621582e6932994cdc5599ec9d1eec9e1fc0f9eeebc3031888725a2fdc20594f00002e76f1f35dfe11e0ddf1f9c1db8353787ffaee68f7f45ff0f7837fc1ee87f39377c77ba7074707c7e7707c720ec71f0e0f87bcf45cf9527ec43f8f7fde3dddfb69f7747debbbcd8dc760bbd62be79144a4d0077873727af0eeed31d15b6fa1d1afbd39383d38de3b388381a06137e841245f7d75720cfb078707e707707c02bb7be7ef4e8ee1e4183ebcdfdfed8e251b288c646d6d6d0dceadd06e66ec02cf9b37385198040d174818d181dc255f8dc717b0f911828ce00bffa7b49785b4fd413c413b3013a5930095550b61973be06d2d0140d4de341f9929779ee028a5de81d1167fe47226ead2efc0c5c7e42b666e1f57c0049dd0ce20a0ff7429973fa2063f352afc919dc84ed8d18fb8eb9da0961f0780f6bcc316f249e503c8a73b83003a400feecdb49eed0c94f62fb7879b4353f9213ad257cd8a09cb6ceb2390717ca9c400f4b5b0d95c58b6a0cfca2c7cb3ccc207c92ce2e8c96cebbbcda73263e6425c0b420b92a129964bcfaa7f74ea37b9b3f5dd6623268f902ca373feb39510a31e6eb52262e8209fed8f10adf83f6f53cfcae777d81433d733aa683981ef674c87665bdb09c04f8d67bb633ccd9a49f240c714dd6bf46d988060181414e231e161476ba5f34dc2a31c54c6390aff14f2f7774f20b3750eb35a5312e38680ee1ce642e7a5b46e080b712931a11f46f7eca4bd9616849520ae85a2a09bc2de5c669780b908857133235f7b917558947940e13eaeaf35717d74c6634d7c78adb4b04b78a79d1765c931623299bcde3dfb09a7158fb789d9ba9b9bbaccb150087332c704ed7fc785194f95e62d80abad6cc650124a634961a1127e9e265f63542ea487510dcfa5a0c45e6e6e746944de8883c24f137d92afe106d1ac088a3d5c632b6ec69c863f8d6949a86238683d4d151fd184f5a8e058317d3e7842aeec06ee586a188ddc558936faca8538fa0b469baf4623cc6c9db730485bc606cd6c437b21948666983284f88107a2fde04c2a7e925dc60f349b96bb38ba30795d6216c5d4b946707e155cf37730ce662a186f8fbfd16ce15f398d46d13017643dca85793a88d26d79bd96f6c62a2f494998d3e59145d6d43a8f55d664d2395649345acc9dec36a81968e35b73456564792b82e46bb6d9f84994f858b4357146274aa0e4a64a374bd7d6e0662e3594a2d6d91c1d776bfe7e2eb85638fbc7211a1089a6cda4946bd00693716241d602c2d1373381dc5690a6e3b4631a007888da2d10d32795d420606acd8d93164f65a86f914e3937ceef7cbff9fde6d8dd88a29076ac742e6fd3b95f94b4fc8393749ac6596dcb312e551291cca4cfe670adc8d92d30ab2d9596097bae9504389b4b10cf73109c3925e45903755148fccc8c76a694c9dd5dfa56ea9f64593db003267785da56baa0ea349ec370fe30a96d4c10bdb3146ec936c395624e1bc0532ddca54b931730216dcd65594d6004a572bef5b2e0852da4770d186142b85e821b2c6592a29f9934c04131086e6b562f3a8068a7c1b544533ebb2ac944f269d7261af53aa84a91313d6e8ab8de7c72e2e7a8706618e42d6e042590cbebb85994de4100ef0a2f94c09d8a20986be37382754e1a721334529979639729bc8945724438390a3a984026349e9eda718ce8c9ad7b8aa92848a7c2cd93de4924ad87be4088693ddf1b14ffa8d020bf50eb1c25f22cdfc90b887c26002f90c7595d366324bde0311027c63ed7da52e442fa2c8577ced592d53ec16de6ca55a5589259618cae6a8fe4d242795568639960a13cf027d12a4c449abc80c2a40b93339881e0999df47535844a380793e8af27d4c8200c4e7a4fac7674119686340a265def1e8592bc80d383ddfda38374c124df87c5568a7c21931720aa6accae7e8cf1272d0cc1712a016f9586339a1d729a13dc0b28ad7c73eaa4a693242a35fe0b979c9866fd35e2a26e11e546a8536b4a4c879217900bb3121e53a9268b0a368c9ba72c4c6474c65015314f7881a290e54a5c5ca03bb0b2b2d2494d521460cd4df022d9bc3d0cb49e3cd6da5aa75d12d2aae4055cbc3d393d22fe88973791c98febe9182df3532ecc278cd5e922df40f8b37f1cfef3dfc1bbabf236c2ff847e97607f0a6963038abe36821de17e9b19da7d9c7a1fd25ed89733549232ba018c2931c1f2e16b3a7921dcd75e95ea37c9310ab53fb362216f8cbd1c026d3e9f1238aafeec265867aba2681eb9c96a340bce3951706a757ba3507a5418ad32fc8b458628cc4a60c26ee81f027dfb250d3204e46461350328909928cd98803642ea7cc6fd3099c37eb00e97ecd5d64aedcb653b3b4c467024ac12fbaff1afe5d93f0e9311bc37ce1756f2c791caac7166e6d1f786c3948c82234e92f7a5d0985d0694c9084eacc842a6d2e702ce9795744972649ceff6f0b07e700d47a491a3a5bb2a879111378c7e1fd57674865f69e8ead44e726cad2a5420659de42429c379e4e4459e3790dc7783d7cbe88186643358f2592dca068e90513e2472ccb27493d0c93c8577b3482366835e6ac0ea2bcfc97845197799e7dc57ab5df484e82999ca2b79ebad4891fb492f930153219694adbdf195615958d0b2c8e1b997e937b72c1860524aa42621dd17d7f255078002040e8626b2f6d48c0d055c8bc71b8c5bedb234792d4b73c39d3bd42256a06155578a4370738e82bd19636112fa109394922edc1535baee122eb507eeaafc84621cecc020c00e8671b230cd1c7711daa9e8311a80e9d24bd7594aa548334bcdddb347380af32976945b3aa1a11c6009f4a1cd1777f36ba1339993d2d84ee34d05e733313c8852f9250ab4144b2c7da80c3537ba0992336317c293daace34bafed60139424be678ca4fab2a3a3a68d3f198de2e8beb2af2661318cc0cf957bd414e5eca4b1cf474853386ff0a3d14b4599dd94dadb7ccce95682369c604ece76c4d6dc313a48c78b65c77ee0bc61a5313fb9984a3a31ed9ed052982589674b17742f43b53bdc50e1ef2a99a9d9f2b31ba79228b64a28980659a709ca53386e198f46f25666afdaba86b41852e3de0925bea90f4064bbe02eb3aae23c03b1d55e82f27c9b14a6e6c27552023a67940428cd9a478e71b92151e3282559ecce48d0417a02334c8749b52c4d85c6e20d64b5f366a1c21554a73f64669cdbc2bf4c0d19c9ae34a6023fb7a62ed872a8e2c0638c0c852b1a7d6d2e653289b9c5394ebda174da5880669c86d22421ec4283289d81ca5475d95e7a692f6f3d7be6e9f2b1e5923be418315dd28e3b3e93d666fed55f1a67ffd7a85d966d1b04628d1c03c0f33c905954c232a1c6e4319c52bb3b0e25e3311cf644d58aa7b24a7bea7cb5991c4d5c0bab4c4d16bc681d6a0383e56470198e93b5878704093d91f33a2d3a160b396c98c4714d239ccfefc73a220e20002e09eddb61702a2734095363ca8d2e31a6f31f441ea63884b5a51019335a6e53d486b855bba66b88a7a6d9689a24777760852e247c7d299743f8fa5a94b5849d5790c2c3037ae1bb3bd6c20c067f5c1b6d7f7b3d205078787834397ab9790e7f5cc3794612fe7978b8bb03a973c49734a57db827d36211eb7b3155e4bba99ea5c3e6a407d1de2453fed1b33f2aa5ba8ec735582525225d3ba7d2894b29597e62c2afeeee067777e9c3c3e0e161425c040c910c62ca1f19570a3f47eb6b6a926e5a141285966fc34f2fd88b9209bb3a9b8370ed79460de1acb005a5c9c828427ef2d2f957b59376827833a37f0d347b01a9bb27f21c93d1088f2b0ec9c91059b856f2066e62938a4183939fa221dc37c50800dc031d10203b847b60e34bee47a351f3ffe41e455b9774d971cfe11461277777cdc4808607f0f03001b84feeabb2b602cb89274bda99c76b7cb8c5e9c3f3e8135873686ee45386e2f853f80f55b5129ec79fc1bf2716b2dcc302f119422dc033143f87e111c0530c675a5cca6716b7738fd67119f3e8e0c51e914b5a7def809585729e03db27ee40a17d508d8920b8f00d392524db298b193522493a6632a14336787848e9bf036208eee1ee6eb082d2801c0b2e6374cf2c6e26bf1405b446f92cb20ecc17a37daaf1e7d13f85fd1d641e9bc5e7c83c86fd1d643a06f4390a1db0ff92a8c8017ffa2f09ec7713fbfd62fb7f9058072bb9479cc22f01d12f03f865f0cb6003cf7bc0b09a70bbf8332cc4b9010c0825b00b595b8363e3a5e3d6c655398423d7eb2b701b88afd0a8b6126d336d21bda00494ae18a85f1b03fa552ded323cfbe2a734e18d19c5c4da1b503ab3f49669186f9901b310046d5e2751fe833901e5e6c62e3a6fa9d264c431cd31d9c09c367ae4bcd0b9b0790ff1faf1c971735b1d2e082d7075bad1490862a2c0cddd9c3beffbafe1487ac13d9a4343efcc927b1ca6d0baac28a81e47bee11ede07d27f974bfcdcc52dbf8b5bc6913d7e33762835dc375d8b9f31c1ba878c5ee7419e97fd08bdeaffc97db8e004b85f123bcbc7ffb987e53d2c93fb2aeaf4df80eae47eb17457e517a05c38f80240be0cfe595a87d9c84fca617a9c8ce07a33fd21ddfe06d637ff3cde7a39dededcdedca046c108dea85b9983b0562c616a6a9d3b50d4a88f050873984fc90a1b5c2f19d7660fd72e55c9cdeea9d9b40353553869952887d0fcbb1065193f3af3b3d208ff0de57d9dae5243749b886e7edf237a448f73650e85294c4a5d16c8e8dedf1bca0edf9ebcdf3dff89ee36e7c2e6586ce66958fc810e4b1eeeed415a6b2ce6d11ea86cb3cec7319d995a7b6965dedb6c664a6343fdc16d7004ef818c46da8c025cd53c89d046f362f51b9e104e13e346b778a37fee6df4545622bbecd584cd8bd2eba0725d2fa6549cd3914e1b849bab10b2eaada42b20dea6d2604deda54d0b93fa455506d0ba2a2cf51c9b57aa2c5bbe8181ad74eb9b486beb8755b4a2286e94cecd8de39ac21ba04b6b2a9043b9bd777af80622143535a4462fe086dc78b8519cf02ff9ad475942add56d7034876f7a4b1a96be87f5cdefc62f37576c3fa473587a3475bfb8114bee1fa1c1507b22e78b91f8ceb091ecd69f57a13e953381a569a767446d19aa4abd81a9f45e5ae0c7c5ade89bc2be2bb36033ded0056961660b32ce6072cd4d5dc3d077c4d0f60f4ff64a95615fbbbcc94c94d74a6773a98bdbd527399ff65eb52a2db993e4d5423a2f1695ffada1ff2dd3ef7b197a14949552e8ba0a5d3dde4928ea8a42bad048e405b1bd170cdc752b56c92af9427c91af6f56f1c5fb64d586eb373ef9b20c2d3535eb7405485ccd93ce1e0e795b19e28362e53b0ca8d74ad0054f26cab2e5e325f3b1dde36346b698958c825a62f105b7233cb99cc9e856a675410be872db5d95b78f04d390da26525bdff448d13d5a3617ba90391cd5ce1f5063c300fd4bf790e83d952ec656fada6ae4a8ebd5a2cf642159194fd00cf2ba2a15f5fd87a02509d64a90a52c84f62da43365cd99455f80fc7cda1bc0d23d75f3661f5bbc8f55aa8bbd0fcfcd48666a18348a9ba1de5b20ccfda0c6a5f13690586881ba9e6720c962ece31c8b32bfb92973695bc7b2c99c6df5387bcdfa617f66a5b74a5e23f9f8c2b194baf07336268aaebd1d750f1ac7de5a3b556899432e33b510258c303cd271a68019b9f9611533bc170ee9c410e3a4d3db34667298189b4b3be92f0af74f64676fa5df6dfbf3e891e8cd38a58a2cabc6c4d9dbaecc0d3aea72d2f79493197d2d75131f4983f4c8df0cf11471825cd82a836e8fe6492bea33d45caf80efd0fb6c6fab2b113c7924c4e6fd43471e562e0ce9f9aa367c1475f3f30ba5c37b172be94622488a83c7e60f2b24453b0d37c91d2223f89f77ef61bd34e632de58912f548bca9a6bfecdc2b3226f8e18a5f3cf5a5d636fad85628adce89723cca3342c7a05762f26c77d3e9aea5ddbb9aa541ee24bcc4e4350695257c5d74094193ccab83a8f0386d0bbfbe7d8dafdd117bdba8974e30630447d3bdefa6e85d8bbecc3b47321cbfce6c2743bf231da8766e7633adf309d6f7b74f6bbf7f931bcc577ac8e9ecac4f52f797ddf7f3791b1090343be31e030c8f72c7862e8ecd0a97994ba8438207daf6e0bcffff0a084eb1fce7ff9e9705c74a9aa56696ad6c3107e9da35c7847e8b1f00b0d775e7e2d4a9537718af41ebddc10165c1057dd82383cffec1dc2aed350e14e0833be904052e3372d0cc71b36b64f9e865a34fcea2b86ab10ca185cc55f2b415e53348a71ab672754cc87e3c7bfec693c2a0f3be56bfe2d126a0753d5beb41dbb24a53349e2cae58c9ec62a0df97495ef4615c74425bea365be43599ec30dd2691beff44e5270b3ddc51b0d7ee1923495019bd8f6f3d91ae555c39e5d6ef517f1e82a4431c686ea916fd14222cccd0cfe1d1917e574eb110f3bbf51e84da132e8e18c1745df27c4bb7508f55feb307b6014ea4555755f9f357cc5bd876defef1f3e87a6eb2b434cdfa65fa349cc87b74319fbfd103e9c1d9c7eda3f78f3eef8609fa5f46df8b591d1deaa69ed0de51217a294b7bf6e6fad7e56132737600420b05c468deb4bb2ec3849cccc95e37761881a4d2f49cea4e42c2ceb90dc818beee7ea0742bd77e18515d5dc8dbbab3692ff0b0000ffff4db6351b753b0000", - "96e347bb6cbafe09a6a3226ec17ed79e": "1f8b08000000000000ffbc545d6f133b107dcefe8ab9ab3e2457c9a6b7b7bc0455226a5215d1a2d0840f0921e4eece6eddeeda66ec252dc6ff1dd959f25125a59580a7c4e3e39939e7ccacb519e65c20c44cf1cf199668302964622a55c6ce45fd3e8c42d0da646aa84ecd6b56a1734d1418682e8a1281309594414eb2026b9319bb2cb1811aff1fb8007385fe6ec40cbb64fae775d61c7dad17d3baaa18ddadd2efce1bf023d4297165b8147faaa5192b34dca31f2e86698aca005c6b2942604232ab536c22d6121305c25eceb1cc6070048b165e8a5c26c732c3131fd7ce590b3c6f60c984b817e015de0da958140ba919b10ac0da9d38700e1433576b98e99bb373a6141745329db3a2409adda900345423c42be4b12ceb4a9ca36149932bb61645e69b0b3f8d39698a5ac3c1fe215879798da9715e994a66584e587ac38a46c1649b5e278c9735211ceeef6f3c678a6f3e3e9dcd266322491bcf9e3dedd985ac0d12f4373a81ef60e4999c237966bfcb1f0bd6f6761bd3730edca69cf071b16a9f7cab57c628188dcfc6b331c4fe30e8f7addd4b34d257a453a98d7383556022c9f8a27f81d7723e4ed80dfa1d01778f480c1f7a43c57b6f35d2a0d648ff1dfc1fe5b548b77f36daf3c036b940ada4d0f89eb841ea02c1bf4dfc4b8dda7441e900a4606212a65f77c046add4dc7a4a5c70c359c9bfe1b114066f4d9b3a8fdfb8e861eae05cd4b276b7325d40229f7f0b28d49830d2de8bb6d25dbf67bb53c59da8c5f390ef9f2310bcf4245b84a6261186b99d9adb2eccbb40a16a67791bb53c8f8d255da61a1cc13b56f28c196c245da4a1d0cdfaa730eeeed8e0857f9de76bad3da5b3a84572ae87798ea9c16c4db02463725ba5fb93e2933fda50f8a5a1dbac5af9b9aea3dfd76da600003cc87e05580830f7c37db1a642dba3d7ced0899616463f020000ffffc6c5182e8a070000", - "98b806a0047f99c90a006149f9719ea9": "1f8b08000000000000ffcc5a7b53e33812ffdbfe14bdaebd2d7bca38c070d4547653750c0c4cae76598ec7de555114232c396871249f2cc330b97cf7ab9664c7491cc8bca89d3f8658ea6ef5af5f564b2e487a47460c26938414fcc43e1d93319b4e7d9f8f0ba93484be17a45268f65107be1730914acac5a8f76729050e646333ce658fcb4af31c1f04d3bd5bad0bfc5d6a954a718f3f351f33fc5b899264f8eb1a8211d7b7d54d92ca71af245a2ade1bc9a4aa380d7cdf0b2693841279f8af93e3e934b0cf6349595e8ff85e5bc0888b8d91143cc55fc1fcdc9f55ce9928d3db31a75639252bcd54e047be7f4f14843e00c0350c00d54cce582a05855e0f9c1ddaa3995450893b211f0454255a900b2005f7bd5455f49da085e442973026c565a91517a3ab57fbaaa27b27435caed703f7049495a9e237ac04c5fe5bb1529740ee09cfc94dcecc321a7f95285fdf32a044931b52325f3f16ac11526a55a51a26be87be83d63fbb786be003baad1f083266c107dfdb578c687671faeb33f4a9a1bbae548e5ca74c2bceeed9efc2b2aee2528eee5a8a25dedf887844e66779c7443cd6cc17055d4bddcad0d55c072c67eb70514357731d329dde1e1cfc5af3ade2ca90ee9ad2bc663c478f0d45261dddab3a68e7f22b99913941c6d3d75c6432f8e04f7d13262764c4e8292bab5c6384d8bf18160519b1128e98decbf37a22b15131c7330b0d1c6e74e742efeecce34089a83ed29df14fec29baeb927f32c4074493b650a63292b2c9b43129d124f86032eb5c6a929fb2542a8ae1ac17eda871fe5a59026b815e0fde9f9f9fbc534a2a601fc9b8c85de4cf866700f725654e8d76e44aca829ab91fec6c6ea2debfb1d2a4ad73aaa31ddbd11679a989ae4ab821b4cecf996ff6a5c8f8e8d4541148cd43a518606949de134173a6c0d6183fab443a471f46f37413dfb3a4d01fc0ac3825c7ec218c7c6f3251448c18fc6862040328861f1199899ffe00125d4753399d5a5d26938622393346b281e714b00b44c635930913743aad75488ede9d87418fd2bcd7276a343c08628cb4039a47cb24cd5c53f59088e94a891afd9cbd8eb85832d9888b0e4b35944e57244b8666a88cd0625f6295232ed6348cb78655f6a5b867ea7de3af7379c445e86cd56daca75866266c6cd832de321b3c2852b4c3c5861368696ce582ebb0126963d78eb5b36509d122bf0950eb549414a6f00a29f6edbec078c3c39768411419976d812766c4f7bceb9c09744ace4498bae1c8f73c9e81991a0c60d3c8f19c9001089efb9e370596976c612a0c5f5d6ec12fbfc0d6e6d5e26a51683718c989342529fca95eef72f32a8aa2cb3e2e7885a27ddff3b2304dfeadb8662a863439b5691e3b2891ef4d8d0fac05b9e09a939c7f620e7aa8e095c964c7174198ea8fe0364c7306e219b8c7612345c10f06a641878c830e9a10a3b165054ba76ae1a1d1b1764faa3f1a7d8dba7f909ce39bd029d7a55a0c0b0862bbe570a53106926a2e054c263f76bdc5f6cc6c04cc14638bd209728bcb398c4ecb4512d42c06e5d6ae1735c01a64180d53dfd6ff457e13a33632bf2f44bb575c42d8a58f5375d99f3365d70b1ebb6647ec748bf69b68558cd0a1588a5117db0dfc7bfb9a8f20347f638bd4c46c8119ab9243a9c67f90bc62a1e18c8c9b0b4cd92068bbf53eb639dbf29adbfe6302960c952962d8da8c617727426f1a3d1f30fbfe79f6fb71b7f71ec0695f165294acced5fbf686c3688bbb8d18ae51677ca127bf1155de923cbc8f7cef2179cf08c5376f72c6741818e9426f9c3f162c8821204591f394a0ab4d6bf333a4b7a8b21e543adb7813748920e92ddb40414a62690f84dc4871cc121b3d43d46901e9a97c28f7b28ca59ad1700538d5a2a9ddf304c236f95f062c869ff1ea52fc2db8ae291e375566a20ff1d96e32396584eee579a892b7923edac8438ae59ac2949a8b3c63a00b31762632b2efa35971b4646617f95971b78406d599a58cdb32f6079bbe573e709dde1a8289efa5a434ad362572bec2bc53ea58ea435909daf7bd5a82dd082667e6e92da16ebda7e55c08ac6ce7d205069affab459a66ea90f09c7db57a435132a5bf8d2cdbd67d1b596f09b53b8475045196912ad7eb904e7dcfeee99b860503163b95beed299121f6bdba21e963ac243626a3d886f31913368d1ecc1b92e18b9f32fc11d5bbc363f630df249900af474d74b7f76bb15b18b370317cbf525ddc9c24465b47dca8e9b2aec03a73c1857e13161d1bc518eed8a37b3345105648d87e21717aa68d864599bc7d44078677cc9405da548ea5578e61b2af9d374f5510b35ac86914d7c564c5cc7401cbd6eeba60b676bf259aaddde7e06cedaec4d39e5a04f47a7b5d40afb7bf25a0d7dbcf017abdbd12507b6a11d0eeceba80e637405f0b08b7394f03dadd5909a83dd50664b651cfa3a9b3fb45a06c6c2d41e086bf5bffb5b2ff4593bf1bc08aa41fae9bf32f9cf2dd205665fa70dd447fe13cef46b12abd87eb66f7374feebf7f7646d065f5cf8c7aebe85ff76b6b0068d633badaceb955102f86072fb0a0fdd7ebb90342e02510d3f79a6e5b4b1831ed3a712e3269ceb5493360ee3b2693e4c05d79d8cddaec06a4d7837f9c55e331518fb8c0170b829b4730e77946e2391995d01ccd9ba1e1416bfec0dcd71406c17783b597a6acd0603a183370a224ad52d61e311dbc550c0aa26fcdb1b756158380d3c059274d5959c2f6e6264ce4cd9f2cd5d3aeabbea4be9a4226dc4f578ac1ce734ccd1671816d674d36085a6d4f0cf406ecd9bfb117a720a4860ce760c3b56a25d4e4667f6ad69a519920b5c0dd01b339ab9d18134de172c4f415ce62d04380fff77bbd5ca624bf95a5eebfd97cb369183e3e7e0ae03f1b7b05dfb82899ea5725535bdbaf6dfa5897af6cda97ce593a72cce411eec8b1c75d3e4e8c7cdfb35e9dcbb2c01e39e3ac2b38fd41d7f19e6911027bd4dc7def54df6b453f77d7ada66588a16e3854d4ccd61d367a2a0679876accdd795e1a45af8c9a3fc8bba70467636d7b872c0c2ad3b762f6645c509b2d7df85b19c436c62358d461eed0c88a345ab96ea3293bb3dbd8ce442590f35283cc80d21c5843fcd42decfa55a9fc1ef23b6ad472597a79d86b54ad2faa48ad6c5e3b8b9fcbe0c63adf3b95ff02c9ba9c2873093b3baf4308a1c534f715c300c6e48e851d1f3320c27ba2408f0b683e70b0378ad07137d75cc72d5ccec174ea7b2863003f39290811b9fa104c263321d36910fbdeecb3853e04bd7a7ee1420ffe075afe2a1f98724cf35f2d7c09a7fb66e173589b2f163e87a9f960e173985adf2b209b79f72d590ee3418f8bd9c707b1f9e265c5cdc711d30d61b8e88768214c2e1709ae608081e1cf6e52b130ff3f0000ffffcdc4073773240000", - "98bd8313eccf7f2c5ced7e406e17bef8": "1f8b08000000000000ff8c545d4fe536107df7af182dfb00d12579476d251628455aba884bb50fab95ae634f92591c4fea0f029bdeff5ed949b8a25da9e505db997b66ce9933f34571dfa30d5fcfe0a75fe0f8a1230fe441428b169d0ca8a121833018941e013505f01c9d42200b6515b01f8c0ce84fc43fa0ce8d819e3535a46420b6309231502318f661032f1ca1934f0835a285513a8bfa5f1827e2e8e808b6b21f0cc2c5fd1f97707e77030d3b081dc23495fe4ff3f032e07e0f5a0659a712e7d70bb6761bdc7e2fc4d1115c3d6708f1d0210c8ebfa10a33cbfbabed43130dc88132ac540abd27dbfeff0465ce70b7a0fe4a067dce731070cd9805506c83249bf11b3686c7944db1468856e3cc6c57563897bc034d0e5560f7528a026ee523a67e088002a2c754fbfa960990f5411a9319301b0f7524a3d375ad02832ae1c6fb88b0ebe523ee203068f283912fd0a1194401654b815acb6e4ed45280f99a73b4bc8289025a2e7bd67318a7864783e031c4610383f41e76a7a7f3eb0e1a23db8ce0318455e4b5aee5a71a1b194d80dd2240a9b87f154314707f757e797b55f673ca55768752f7280a90c35079744fe8aa5e922d5bce718b85aec9c2367fddc048a1033fcab6c5241b059056c3e23f9fa1a82a56806414502eeadc40c7c6a04b415af221e8f2fc1334d1aa64779f883d51963e3b77b656167b71922812693407806d7051050f0e07871e6d164982e331cb865275071f06591b14d96bb9bae4e1993ac44086bea3cf0227d28d933d8eec1e3770fde9fe16749dc313e3edb834e550efaa8a6615931a797e45015faec97e3dee4218fc5955b514ba58e7feb4644f5bb6a4d2e9244526d4967f189cd139ffcba1d7ecfa1f067e23fbbd8b55cbae3fc943f661f1b2d8ed76652d7d2792816171477a159ff38c39940141424d56ba97344e35d9838b12d67db4f60dd49b988c9597611e5a23a3555d5673c47a55992d4cd3fb72befdc63eecf76787873b7661593fdb59cfdcaa55db8413695d0773a7dee8fdbae692324bca0d249b1acf4bb3d083b44036a0932ad013cee7462a4c46c367748a92553a7cedf713e1080e7d34c19722819f5555da696f69bc61512d555764353e975de8cd2c62f25d74c6e7621b0caa4bfe491615629a9cb42dc2fb6cd4df658f1b789f16dd8d6d18ce7e86327f4837bfdf8b025e6bf90f4d53c48a53ce2393d0e12f08fc914774fbfd34015a0d8bfeeb96b87e5dc9971824192fa6a997ee51f3682f58e307c3ea11de653fbc83e3f2826d436d79d1eb8f64f1b393c380fa24814e535588a24ac7e5efef000000ffff5a0546b349070000", - "9f5c9cb8b3f5c650f0d77f517185c4c7": "1f8b08000000000000ff8494414fdc301085eff9154f70018964db2b6aaa5670e052a942704288ccc6b38e55c7b6ec09ab16f1df2b2759d88565d9e3f8bd6fc7e337b96b7ddfb393fb737cfb8e939bce2498048266c791841556c63282654a0c564690fc105b8671a816c27db0249c4e8b37a89fd6a2f7caac4c4b62bcc3da588b25c3fa2467f8eb0774f4c858323bac293a56ef18a745717c8c8bebdb4b5c89045c915396632a1acdae99889b46d16545372b6056908ed19465e4244dbed4905855b8e918ad578c965c6ea71d92f8defc6385b5916ee3a2606a0aa6c1ca9286782496f1cc51cff0139d8241a0f60f69ae8aa2c4dd354b34fc689c46e4d647952668206d9cbe3f399e055cfe26cdaabc9e44a75b5e0621056ef3e066c8b66faa8c868bc8f9def4aa9a2adb9adba0de68a6cab6e6922def6aa6ca8b667bdca414d29ab4e688f9b1521e4f1ec71c8c97e89c41729ec4fb43c35e796bfdda385d154dd32c2975055096f39f3c3c724cc6bbfa6bf5051fff362dcdea1d4220e9eac501f30e6199739e2d3b0cf1a9fe8cf0ca109f3044bb4368bd136ae521e7a7fec59f1066f598b6bd9821da3a27fe7cb1e8b96a7dbf108e7daa3ae9ed7bcc47cd704fc6d63dff98189f3433aaf32315e35ebe0476cc32e62ce773ed8ba7a7cda7014714cc8366216b2bed2be9833d42f5fc3c91b64153e03e26ecb7cf7b70d04c4aed37cf0b72d03c8c9afdfe79790efad5a879efff1f0000ffff767e09f27d050000", - "a3c30097370ebfb911476f1fb6985459": "1f8b08000000000000ff548e3b8b84401084f3f915853a899ca3181e5c72677c9199188c38bbc8eaacf80269fabf2fe30334e907d5fd558938144418b47d1a042fb37e2158743b1b7cff4081590020423f34767ac0937e94268bb79d82f92e16322f217d27ef8ca33113c1d8dae1c4a4abd68048657ad2951ecdbfee0cb32252b993f6157489d5dc4265bf7fef76eeece870177700286494a47509c8284dc6bd7a089ae35f39f8399ffef9da6fa6b7982cc2587c020000ffffe141b80b1d010000", - "ae024cab00dcf43b182c850a5839fe89": "1f8b08000000000000ff8c8dc14a34311084cf7f3f4593d3efa5e709bc88085e9615d9f3d04e9a184ca643ec8810f2ee328cec4111e658555f55155ede3808f64e9ef5bcab1367190320e6a2d5f03f2022ba4557934f73bbb298c501fc73bd53562fe9e1e97c1ac3c11e8768afed8516cd536855429bd69692fb15beb3698d53506a2d7a0737001f5cbf2f67bcc5ed879e65d1d55fbd6d8aee54531f576fabd3e5f278dfc73602d0bb492e894dd079d63968cd7310e3942828592ec9218df127788062ef0f50ad783639007a49f21384af000000ffff7b0eb70fa2010000", - "c6fe1e0132426554b754ea0334957cb4": "1f8b08000000000000ff8c94d96ee3361486eff514ba6c51889bf6c7a1a8639a09c54373f18c3198772f28a7a863c7cedc11c2ff7f67d7866bb650fffa45aeafdfbfab4a63cd09efaa2ac0299b00f55f555dd7b5b29857a211b505a270a31aeb3323ed48ba9ad2dab8d5045069d76a938e79d955d2824a47dc64a409366f65826263843582f1998d7c625c0c7dd71c16de2fd33ccbb1e7f794159c89e0def7b0cd16e3c9aecbff1cc15827262644dbb2860d7260cb200fcba2ee39dab846a333aabcea332703110f1a6cd08393ded0e84195287c26e3ab226f2d3fa4feb0ccdf58e2c9366b30670874bbc4932df974e4a1768d1aa90f9870c987a269bfd258e9f4275547d8cbf8c1ab0614c64b4cb0a7b37fd9ccba5af82103148620ecc19703e84c5db6b63eb725ca3fc629dcbc4c66b1702f7fdbd00474349eeccf27c4b76c0db8a88e9b59133da6e403e604e15aea83fc3d501f20a54be9b2785da4350bf5a727a04d1a1b3205192f6f115dc18d84bfc26d3225f7313993a0adcf8230225e3620ca84c1508d2467b33e69413421fb088e5ad421c7ebf81e16b3ac96467a3016e2e71b621d9b7ace866668d9308e6aed15ef9ed8cb09eccf6b87bfcae62abc6e723991feaad8778c60d0f42755e1e213de66c105ebf9c486be6f60545d3b4c0798d7f5b19fb71807e9ee8ab968b9e8e606d834483633351dbe61c44bbc63303eb43de70d9ffb71597a18567e78cd4888f69ed215bb104ddb4f3d1b58cb051fbea0ecffc31b98f41e9c360e3e7af70796727945cde7ff8681fe5d13e3e8456e969c45593441a6eaefaaaaaa7f030000ffff71a6e24fb4050000", - "c7e2ec56f4756dd2a3b957cc11d97e1f": "1f8b08000000000000ffe4594d6fdb3813beeb57ccab368514b8f28b62b107033eb86e13146dd36cd29e8ac265a491424422bd24edd625f4df17fc906da58ea5200eb0c8fa22911ccdf7f350a6e624bd210582d6c994b39c16c9a998a7e76ef68c5458d74110d06ace85822800000853ce14fe54a11be5557347f990f285a2a51f97bcf0775c8681bbd33ac9083ff9ebfcacaec3f554c5332c9b49375bf0f94d9150365c91aa4c96afc2200e82e1102e512c51807417caa4222cc540ade6b85e5362912ad081713dd01a046105c27345ae4a1bd3c0dfbf633987d11892f548828d773884535493b2d47a4b34b9b48a8d06a86ba012085c9c4fa14275cd33501c0a544040963445e039084cb9c82219432e786572fcb971a1aec1ea05ca405d9bfc3f4fde1045ae886cd6333f0cf2054b219270ece28bbb7d8b7c89c05f4d6dcd750002ff5ea054706c0cdab4b76a9d74aabe700a62881ea042ce3993380014828b18b4abb940b928d5001457a4bce03fa4153005b2e9c908df6d68a79d4d12d64127e7a4c0f6e892feda9af9243214b1f585e6d6f6ffc6c06809dace791fadefc6ab170f4d80beb0118feed4e4d6d7627ba5666f4d3207f011a52405ce4690572ab99c0bca541e8547cbd0a633aeebad60d442b0754c0313ab5dacd705f9b7067bb9485394b21e8029e3e856899bd28e7614dba06cb4eeb5cfb6d72c4ee50828537ffe11adfb2f863ab8334f7543135ab7da6e0f2f505694e859c1518283fee168e1b138e1a184f00036f01470170374c35f6bcfff39c532b37c3fe5199e9891ac6bd0daa0ddad26e7825644acdee36a228a86e99b26d2da4b9d72fbb43334d01a5956d7f6022febfa200cf2dfa18f3e91d62d85161230f62dd25e72d18c0f4a325d2430c9b21e2440b2ec371250fc70f0b75e3c02fcf7ebed867fd7f3fbe12ff80f39c9734c1566fbc9c0dae9fd2e60d2fa70a0f68bed2900b567a4f7052adc6df121506d6c6c358f71636bd885e92ff38c28ec016b27b87b7b3f18b61b6f1e01de9daabb11de43c5a140de98eac2f9baf70fb7fb9b62f579056801ef9064d33bcd4f816ffa07fb6428e70d96d88b72322bf8c894d378f30894d3a9ba9b727aa8b883727a534d63e209febfe89dbda7c024f70876ab3746b73ae59e89809ee4b1ffbf85d62fc1ed285b679fee9cb639014ded682188a29c6d1f833662cd61a8b1f3814a856c926502cc0265057c5f91aa1c85a55d9971167eb7920d4d7cb978774b32bb9a2d04f5621fc94f5fcd4bfa0b5faf144aa04c35b215f939ab7cb525fd85b32b23e19ff56ea250b72cb8c866290ad5127d8fabdb6e7bd11b5c79c9e9c42a34bfb6644a1a858e6c3f7092f914959c643bd3e91835a725c29c5366185d7137f97a327dfff6eccd6cfae9ece4dd29205bc292086a1acc51e9467f14b72be24ae10c9d13756d7a974bf34f18d9320adb9ac3b89156c836a721ee9c3db940929dd012a38db6fde450f22239218a9479b49eb3c7ed169a361326674eddae48c747720406a9adc737e6dbf328c46622de06aeb7301ab772e3f772e3fa18ecc1ff17561121af49197dfd669a27f2998807f0c2e9e81db08f714e84dcc4e882b1b4e3dddbc2a313f10d73863f9cab278257be94a940ffeeefbac7268cb44272ddb0e3e128cd8b9664dcecbd9bb763ebc50b37abbd7fce9b6989842de68d6181922f448af2f77ddc4b46b1ff20323cdefa247283ab013c5f92726129340147485a836365088f9ebd7cf5ff656845cd5ed55afc7af4f91b1c3d33cb4e87bf98cdca1097fd9a02c7c3e09f000000ffffae97e9f8671a0000", - "d18a550df0a6e3d2c7ae5d9b5fb9edb5": "1f8b08000000000000ffac554d73db36103d13bf62c31399b854cf4d7d882d67c69d54f2d4b1a7d31b082c243820402f405baaa3ffde014849946ccff4201f2c72f1f6bdfd20765b2e7ef005c2cb4b25b9bbe9df66bcc1cd8631ddb48e02142ccb85b301572167598e448e7c7c524d32102a8322e48c65f94287655757c23593076dff5d769385a32667256393095c74dac86bab1c680f9d4709c18144a52d425822f0b6355af0a09d853a62415be5ce80dbf8f48022c013371d7ad0363878d23cb9f5d0969c40ef2b16d62d8ea47ca04e0478610c00601bc594070419fff940da2ec029785ee256f7997b689194a30625286d0cc610a05ec32f7f83704dab0d82327cc1b23d1fc0c0c6583699c0371ed0874bd7343a9c48eb8072ac958298754d8d74cab406c65752616eaf6f4e28d4f3c19b42737f5aa1b93f16faabb34137787fb2da8d08774a1bd67f99dfdce2f6d180eaac284458c170b5aacbfef70cfca3197c4ac69e3841b1fd72af88662e7c759d9590ae611f1fa17024c1ba002a9eb16c0c8473504da8ae225e15f9009eb900e93c2ffb1a5c11dd595e1bfceefee4e497dcfc713b9f8d651ebcb3d0f2b5715c8270445d1b5264efb81e09bfe51ec5f7b9ddb5b1fa5fb98e951d0977c90e8a6be3536e07c02319596ff1896194deb5f548e135bd4ef611fd01f035fd803fa69fa2c1b7a297c93ea23f00bea61ff0c7f4175cde70e28d1f73d75c42db5b5bee7dfa2093c61e7d2430f2d8290c1d985e00a142422b300d661e78cd3db26c7a01fbbf8f71a257d38b3eb22f6dbb1fb507eefb01ceb203d4c7dde33026dd6281942e449afc61c9033c6b63a046d0f6c9fd4009352a4708b842d1857839fda361d9e0da5fa9b864d29ab974ed1a387812dbe19fd60507893e68dbef97fe8445d5e450489f70488a0b7cd99c25ff91a11c0affc232e9c33dfc760ec3e6abaeadd48422145bc37ddc52731539cb92659ec4ffc37b12656cb956f0218a5497dc7e91928a32ca6684a123dbc7e1ab193e17b988b9c65d1819d25ab55c4a42efe385cc4b966d7abe1843f57ddd6251c2877348ecc3eb3bd452abd4ce00716e7910dcc68e08d76a945b66e50874ccedd7cfa0e1f79e77d6355f351a59949f417ffa94045404a520fa235db22ce5a9fd3f486eaeeeac44326b6d17292c555d6f6b5f947d8ca9ee3bf7ea1643a122cba60f6548c16a13676ddfd977c857878dad9d3351616058c1f979a4819f3f772d9b22b6578f1d37c5ea6c678cdcbb1e46e2b92a5665791039dbb0ff020000ffff099f892465090000", - "d387d529769879aa6637046dd6a543b0": "1f8b08000000000000ff8c90418bdb301085cfd6af98e6941447a1507a68c9216d52e8a59466ef61ac197bc5cad2228fb301a1ffbe287660097bd8933d33ef8dbe372911b7d6332c08c3a90bb13f2191ee8296fed92d72569b0dec8852d24789a391bfd873ce60074068476fc4060f1200890061b0be730c914d8854da29e9076c1ccf3629ff603dc82397d91e051b1c6e639acbf228c71822ace110e31f3f7094df681d530dd4c080670683ce417b6daa42f20ee6d2c8054cf0c217d1bfa66f7da3fb9c92ee03b1fb87e609bb9941dfad58c132f2303af9a0be86ffe165d8b52d1b6102ebe5dbd7ba849902ad2029002821be6f61ff531ff1cccb8968a52adb5ea55ba0461f8afec7b5feb4056f1d2455156f6419a32f9d1ad65feafb0ba92a2b55cda26973399a7ecb5517b7ca2a25f694b37a0d0000ffff4833476a07020000", - "d9d4b846bb4fb186c438eae71862c8c8": "1f8b08000000000000ffac564f6fdb3a123f8b9f625668b7f2c2a1da1e830db06de2a601dc386ba77def50a0a0a591cc96e2282415274fd0777f202527b6e387e6101f6c73e6c7f9cd8ce68f6a91fd12254225a4664c56351907098be28cb4c33b17b3282eaaf0a3a8f43f64fbefd4ca520be50ff6de6642a9983100801f1097d2ad9a25cfa84a7f4afdd7aa494b32559a4ba1307336adeeed8d8a9f8bb6374a3a7c36bc26eb4a83f6d9172a1bbc61d136b294faa8242d33ff2fded56d59d9d3d8b5284b4a0ba9d0c6d07fd21482180d60b5c41c82f6e03d4f3a60637f6feb0c95cc73856b61d07bdab6bca2bc51d87569db7251cbabfe495e8a0abbae8f7d1f950b3a80fab18bcb29b387af5794a3da333062ec561848d810e9c746aafc4c3884dc7f5967a42e810a58af50c3d26b612d2cd4680a32559f0d8539480dcb7b38fa1332aa6aa9100a254a163dda0318ac3116a5294c8543eb4ea9aaa47b21ae1d93db5cc189cba65aa279c9b0068b4fa8dc4c5f5cbd20516f0f0e12cdeccb12cdec3ed1bcd14e56f8edc572b76570976966176124413f99a0b1988323b0abc6e5b4d62c7a40f84fb6121ac8f25ee42b394de15cea059a5b34a044a3b3956f41b041c28a46678f806404091a03680c9951cba2c628383ef117167dcbf2aff36912af9cab8f53df3fbd99cf645dd71d3f9cafc8b8ae4b8736f7edc77f5ad2f1c8b7d3f50ac1dbad496ae7d3e6083e5c5d408e85d4d249d28c45861a8766e0e667588846b964b451f0f3c975123f10fc47e8fb78bcede61f46d49f85ce159a64407df2238a0fc2b1776134622c3a3069f829e94296e752cf035bd2933eb2cf1b9dc4fbe1c62316c9c2e70efe75025a2a685914292af927e1842a9278e2d30ad60913e2ee2f8fc1adb0cf38480b6f5edfbe89c7fe3c6251e73381ae319a758c8587f93f279d42685b3e847aa10be2d75ed87501708bc64ad2fb906fbd7800e56833236b770078f6a81ac00e4d656785af11993de59e2dbaaef7cd2f589139ae45f50476daebfa0cefa07d311c067f9d4ff7b05809f94fe889d76d5c5132436db177e5432db215c27bfe7647e78987525eafd75c04142753a603c2a6d38bd3c9e56272f49ebfe52b57a9def88aac83df547f007e1416af845bed7bbc91775ddf81fe552519411b56ce43479f40257e61b2dbd46378e7cb365f8622091d42a6e2b31a75e2b79bbd51d7f7b55f646318cea7a4f5c299e794e839b9a116c324cb486bccc232124b61f177c59a2ff994ca2f9463e24c83a3d05efb2b9a9f7d8413c897fdab55dbc2abed2dec237ab296a1eb82f10f8da32fb234c261bf9e7b0b46e812e195134b15e0637895518e3ed5c15c50f893ed3af8f73e63d7f1b67db8c017ce349b3a6dbbf1160deabceb60181a4fa29a5278a73901ff4493ccddc1f0be19ea13efdc18ec8d1aa6fb2864bea81cbf3252bb228917ff9f1ec36bfb5dc7013724b4a4ede91c7c9912d59fc8602fd9cc852d2990deac8bda5086d6fa7512ea6ce7ae7761db83897618f698d461122328a2fabb8e7dc4bd417e494e16f7c9a644c730bc27f3c5c5f9c5e5f5cef97a32ffb223f8ba98bf1bb1e8079cc07f8f3626d89e1377d23df1010c66286f317fe88ddeab8efd1d0000ffff86d17d16ec0b0000", - "df90ed91b91f834b703af48173581e1f": "1f8b08000000000000ffb454618fdb4410fd1cff8ac14255825c271cfd641ac1415b0a821225a12055159ad813df96f5ae3b3b6eeecee7ff8e76edbb3469ae0509f221f2ceceee7b6fdeccb66d415b650862acd59f25096a9d963695aad671d745d329fc4072ae75dba62be12697175851d7817280b06d4c2eca1a100b25092038ad7202bb05a6dc72317613d8b2ada06dd3356e340da7c57f83322017e4f79ea0e006dded76312c3dfcb7aba6aa90af3c0fd0ca89bffd884dc85b63e94e6e3c2197b3aa03d18f88b9405368e2ff55cb799e532d006f9c3521b0605b3439bd1f41c60a006a2c09fcef6d437ce53f949110d8a276fd1600c4218fe96d434ea88071415b6cb438af6336893fb8d3a96bfad49da6a936c47be9cecbc381d201c2d93184e582f880b61356a63c862836e02ccb909f5bdd54261efcce73720ece663368ede60de5d2f9ba62ad1698ff85e550d9748125154b729e4bebcb3c7ff5ba6dd3ca16a40f338ffceedbe2192add30c1a34fe13c5faf174f992d1f1d7bf46f8e2d6d23c4303da0023720f667bb23ee3a785592bcf6b9172235c4fe3f9b4edbf6f3d411bf237e6e9d745db60f2c2c4bd7dd7fe337deaff9ecc1adebf3b3590c7f3c3cafd5c3df1c71d638e22fcfbe8afc149f1e8cf12e904997e46a6b1cfdce4a881360f8628887b64ba076219183c834f4829b401b8d72b9846c0eca2851a8d5357d6f8dd0a58c7912c1d0910910b3cf62c2e24723634efab68e13984da291da8684cfe66094869b9bbe0f1fc3cc038c98a461130a3dcee532815d029c78470ab4878e3c65fe0e8b81ddddd168d445d1e8b648f792f19b71e21bfe1e4661b01ecfff5b5afd78783ae933cbd54bd40d8de3108d27d11d936c0e2f51ab0285064f7a504ffef0b98a03871333b2246145efe817345793afdfd3f71135c47c44d87b3abc19098815d44bbb7377453da9ff74eb0598be3df6de04e11f18d046a31ef71f921c7178343ca107078f885f6403a8ff5ea9eb61ddc3fba73ddbeb5b077dfd2adbabeda2d1ce0fca4fab5f5fec89048849d4456d4ba6e8bae8ef000000ffffdcaa41747b070000", - "e8d95dc8f39f830987d6d471ba97e102": "1f8b08000000000000ffd453c14e1b31103dc75f31b27a48aae2bd23714821a4a888a6259c9159cf3a6ebdf6cab1a990eb7faf763780127917710ba764679edfcc1bbdd7f0f20f97083132dea855ff75c36b4c89105537d67998920935e88b8df70d2564426364b515a82f7fae6e52a20400a02d0a6e9f4b6442a5f29bf0c04a5b17529913698d2adb7ff4a0171cca5098a0f541e777d00acdb6dcd44af4d39d0d1e1d2533421eb9836937f91ecea07dcdbe5aab636a9b55302594d6544ac6c86ebd0ba5ef45fdea18a63d117c7e25657d6706914c7695e5623da5c51e01fc036fafed5f7429d12fb0443fd7fa60c4ec8560f5e3f62d86b91083cfdf981fa3e346227caa146a01a767c0d6fc41e395a92c3bb7022fdbfab60582aa7630b672aae6eee93b3ecd9dec2716a7310e77634423763f70f22c7b58f3dd912e7dd708ee7170ef8bc5f562bd38ced52f506366f5b467f4a532a35e97cab0abaeb47d9fc9cfad7944f7ed25296bbb54669ab7febbbc9f27ce24e2034462f04823173ad6a4e4b5e4f3f331029457948f5597ab183dd68de61e81f246dd4bf45c6b262df375a329b0947298710017621c10ba138f6344b7f43ee67f000000ffff462a5900c5070000", - "f8ee17d2548efe8541c2485cd4285fd4": "1f8b08000000000000ff8c525d6fd33c14be8e7fc5592faa644abdedd52b2e4045827d70032b02ee109adcf824583876b14fc48495ff8e4e9c75a54c88ded4f179befcd829696c8d435868e5ef3a1ffabb0e49592b3b2fa9dfd9c5388ab3337883f4cada94e4470a4343b7aac771041341413bb8868c77401e3a245010ad69107c0b011b1f74192b6883ef2125f9496d2dce6ce2351807f4157976a5486d557c18ebf993ed772aa83ec20a76aa43e0dfbc0cf87dc048a8a1d4d8aac152e41ce7d51fac687e22acc00dfd16c363b8c801d4acfb9bc67f47223e680cd95a6f21fa40f356e3edd03bc662083ec00aae43b8f574e307a76b06df18a7f350705b4fb75936740f8d7784f7242ff37f3d05ab1f0f601c3dfbbf9e8d2305e3ba0aca80714afdf9cb694ab2f71aed7bd57c53dddca53cb2aa813c29fbc1ffe0e353cdd972be0a921045d6db841e9eafe1eab57cc78ae5f29fb4d358096e69af212ffde0a85cee2d2b210ad3e6ca5fc239245114be6d2312db95d3fe0a2e2a38dd9f5b140799d607da9b8957667a25df9ade50f9c0aa443102da8893c5d302c70c8e3ee680b9e493352c167f11d830aa9cb0ec97a9dce721881f40b99cafa992d75cf58b0975b206672cebb373e61d3c9fc99686e01855c3ea62baabec330f66d5833bad192c4691123a3d8ee257000000ffffb64a6789e5030000", - "fc68900ae6dfce8d9e2da9e9fef5d5cf": "1f8b08000000000000ffec544d4f1b3d103e935f31efea45daad1643a5aa07a41c523eaab4b4a209c74ac859cf6ead3a76623b90c8f27faffc912d0a14384655b998cce733cfccb3ce316cb944281855b76629d6b79431d22962e70b51783f383e861163ce91a9d5abc67ea573f41eb8010aed4a36962b095601650c28182e3b81a0b1519a05b373e486ce04e6341bfe072ec1fec0e03ba796cea8d9ba59fe199aa2d64ac3115c683d9606b5bda45c20ab81cdc0d03b84860a016d340e02922760968d5d43a3a4c5b52567e9adb7e8de3847e68aa1b8a6cd4fda650c64a74405a546b312f695f1354cd4bd19b52d3616197069dfbfabc33069a00adce080b770fe819c6b7e873a6495150c87502c94b19d46538498038d76a565e075a7c3750e2ba1b1ebed34d5e0c0030a83cfe73eca19f84120fbcf5df672d3cf90b2971b0700304b01a743289c233c4e395d0aef8bde370c3731c11997ac344b510da287b770a5ba0e35fc3704c9452e16fe92bd8c0b8d09c1e8539a56f726748b60cab7d5832eeddc92e9427369dbb23834906e85cb0e0e4d112bd511e4b5e673aa379f71633e292e91795fa43a6c3649fc9c46ccdf56a83713759fd9ee01d5e09ca6b243f8bfe52858084f273296ad22678ae165b01befc1b930a95436c79233255673f9052d2563335a5935968dc6394a0bdee77d12e772f447152be57d388792791f1f38f21e12ecb091610f9e4c1b2acb3d4198979d659b72ebb8c478487f8b48ff89f309719ee462dbc34ce892b42ed6d8ecbbac781b013f62201fb3e4a2869374c60f38e0ac9fb357e4153536ddd69895554f55bdabdc871b2d337bafe624519207fcfd8d1be92e8cf9220b30845dc7cd66116e9bb3cab9f85d85e2bb2c3251fdf3a2c2b771bf020000ffffaa617d0192090000", + "04f8800a287dd3623fb6080922d2ff00": "1f8b08000000000000ffac576d6fe336f27f2d7e8aa9f0df7fa58522a5bd3787e07268364f1b5c2e49e3ecb6c076d1d2d2c86643910a4939f119faee87a1245b76dcbb0297bc88ade18f33f31bcd936b9e3ff21942c585624c54b5360e221684b9560e5f5cc882b0acfc87d433fa50e8b2b973357dd7b6fb9f5931535cd2835dda9c4b1932168433e1e6cd34cd7595fd5e6961b4caec937c095930136af2cc67333430465992e96c26d481ed8ec36d35af0159ff792124da1d34c1665a899cbeed9c154637aa586633ad6b17320600f0eb9633052a61513d92227d5059fb248b69b80738d307f6491e14462cd064d5d23ec97d3029a659fdb4efa4e2cea95e8d70f897903116fc0ae16a9556ba6824b66d56e8dcd35bad525e8b8b1fef6edab67f2eb8de7aae74817290b098b15c2bebe09345f30f5cc231848d45134296ad658fb884c66201a536609d3642cdfc2158679adc8150d06704630b6e20f234b20c3e34421667dc2114f4cf3a7f5597f03c4705533a85676ea146536a539109212516a471ba84839f21d7552d244229f98c051b7d00bd36c6822c836beed0ba535d55c2bd91ad2d95635bde899ba69aa2794b5abdc657a6dcadbaba7b43439d3ed86be8d6beada15bbb6be8be514e54f8f9cd623752b86de9d64e7cdf81aefd7419ec34d879e30afdac58b046d05f3ee70ab44d3b1115465f014392d355a70d8250a51ea7bc5bd63846ae5870c3ab811a6b192b1b9543d4c07b42c530f107513c905fb1c0a06b8c8226a59b7425cbe052a8099a051a90bc51f91c664281f5924ee31a10c510a13180c66813af58d0180947c7b069a4e9a7fbeb285cadfe2fed144cf23956d8b64759b65af5b28fdabab65dad44090a6140de51cfffeb61db1e6d6e938c90a88ab61d7a2c35a1f477ab551853e93fcc11c88d5a0be588a5d3707277050596420927b4622c30ba71687a57d3332c79235d140f07e9e5f94314ae0dbce76a192663563f195e7fe4aa9068a271ab4f7b61422ec4316341d719efba8146416edbf454ab52cc2e85baf7d6a2ce68cc028ae531f43edc378a22d753bf16d6a16adb3066812829e2f0cd312821e92d0652cfd20beeb82ca3f09c5e0658c78da7df5d4fc0cdb17b4f202c7cfb6ef16d98d073cc82960d794009e053e007279c4458add29ef1952a75fa40c2b6f580051a2bb4da857ceec43da8409b1b51bb3dc0b3cd510f76682a7b5b526689fcb5eddb49dba5e70f94ff3c77a9a264df819d76675da0b7d09413fbc19feeaf77b05871f147e8733a1b5c91224765b173e5a4e6f91ce1fbf470eb8c0cd36a729465cfcfcf29f7a8549b59d6236c767d757a7e33393ff83e3d4ce7ae929df2b9b60efed72af19a3e708b77dccd77290df2b6ed0a9bf6ad2886951fa3eb2e750c157fc468bb5125f05ddcf5bb332a2c842121a84b998afb420bfc1e3324051c4359b974521ba15c19b1df4eea5a8adc43fb063cbe0cddc0ebdab5ff3b8277762d56fdd85a8b2f85a3164d53738ceefbf4dabf9112075ac1ed6483fe2dd96c0ec978de265b833e194d936433c2e281ef1d371623252445a898fa3aa35e436b667a5b635fd74ff2615963db8609f4cfa75aa989337fa6ca2fb5ebcbd9cfaf5c2b85b95f41f8945bfc6ff5de2d68db6de9ec031c4331dd7f78adfd5e7c0c942851ee5e8631e4eb025f5c42f4fac9127b77699f4b403f12751a401746573d9814c42c208efad183034a8dbb2e33c22fef165f61f2e335bd945f549840a7ca3e49bad4024a8baf6f8d2f0cd035db7d4d983cb9a299c0a5f8d7869c81f754afe93d3e35685d0cfbe8124516040baa848ea2493f222fd07c097f3e38a9c501510ebf6e9314254854d182cb18fe0e879d3068e8faff137e45ce1dc182cb2f875f5b7f48b649f910b978241d7cfa49b8f9672e1b244f93617f4ea0e9c0c60376424fb1f1c121a7bcba4da2ed35eab1fdbe90bb973f8e6c1fb7cf5c8a823bfd9f936627d809383e95c30e9300cf87e1e17f3f6c1b3af187719fe67f3ee5be195e47cf8692c84fcd320a1bf5a8f4b3f21917ae698fd38c4e8ee0dd02789ea3b53463dfd9de51928f12d6731948c49bf02921bbf0cdf47899f26df75aebfa421bec242d5bef83232e60d019810b04de2d80a5d1150c87a204bee04292f1aeafef09c5eb7c8efc9698c0546be90bb8192299bb97b44baf3eb3e2b403c79b0592b0fdfe3862400db65f836ba3fb70753e6df12473e3189f2b877e4515ca6f6d0852ebfa17155247ed14a637da8972190d632a81fe477e3ab9babcba79d87a7e38bfffe796e0d3e4febb987ece1ec3df0e06156cc78917e15ef9000673140b2cd6f3d17bd5b27f070000ffff49b647a4b4100000", + "0d5e95193151c6c27d06c4f2719d6dad": "1f8b08000000000000ffc4576d6fe3b811fe2cfd8a390177900a594ed27dbb6c5d60b1d8971cee768d24872eb05d2c68696cb1914995a49db839fff76286a45f125f924f2deeb2b2a4e1ccc3679e99a17a515f8919c2ed6d257a39f6779fc41cd7eb3495f35e1b07799a649395439ba54986aad68d54b3e1bfac56f4603a777451182fc3d6b99e7e5b67a49ad92c2dd27438848f9797e34fba16758b6fb572a81c5ccbae038b0e5c8bd0a268d058986a03753070ab1e41745acde05aba1694067220d5ac4aa70b551f709a5f0301a8ced1f65a59fc87910e4db971e95115709b26d7d5478e9917d505ba3c0b1e0697ab1eb3cd8ae28021c51b90b9d15d5642a6f4803194a0f4c03a6d303bb06c6cc46c2e76ed0f59bdbbe9a5414b66475991aeef92f7cbc5e74f8799d30a84e2dd43dc3db329c0e18de38c3dc62cdee795e21d2695493c948112b24dc4cd162e50355bec06ddc22870e20a41c052740b04a11ab068a4e8e47f10a403a78141d38bb880f64b3b34014a001cbdff59fa0dfc253cfff702ada3ec360852b99282d30f345351e3edfab034fe87197f54989edcbe1352bd86ba15c6a21b2ddc74f0ea90f72f83dde583cfbd935a598fc92a399dfa454c545849dc100eaefa12d018381d712aaadf84b1ade8f2a5e88a3491537ef9c30894ec88b7e48c8854a2bb40b344f3ce186d480f86bd146992f83ca6c93a4d93ef257c871184e039878b7239e0684f394291476d4824248aba9348d9b4a8a83fc1f3a3a360c099deb3f2929fa14223ebd011bc8c0ec27fa2a288098ef87f5750c2c036e4677157545d4b0c28b392388a74bf691aefd27e14aae930901dea732e7ad0d3c0d4d05fb82a1736166a6c4657b8e237a1a4ed4e870225e6b8f3924a186b2797d8ad4219df83918bcd1342f1d5c7fee62f25b43e37c1b8d8bba32c04b1ec3e7ebf50754ec19e9858ca669a24d448af705506eca7233042cd1076f091feefa666bb84c44fa24fda8ad5458d934ba34893754c83eccfd9eb0004b1bda8ddc220b856386875d77836ad13c6318fa81aca8b0858f414644f880c5a8b36e5261f5d7a7704d2af57e8aab3719a900f887701858a28ea16eb2b9f5e0449916672896a270c48cbe524d506069bf87c064fb989304a90fd9bb0d2c72c60a235378fe19040d6f3de4f276a0750eb792f8cb45a71b7e11651bde587986f5c95602ade55017f1fc111fcf4d34396a89a02fe06479cb03857cc02a929c5fba9e82c121d4b61a03772291cf2062c8ce0ebb7b09bdb34211f1cfa94f733a66e7c36ceb3e3a38affcb8a324d88e4d3c0f2aec5c9f3e7f18fedd6e5430e8faa17cf1e7379541d9fbc7cbacf9727d5f18b477cbe3ca9fe7afc74973f9f3cbaf160f25477c72f5e3dee908c9e8ef15575fca8cf57d5f1cf775d86d964c75e11178b894277a04e5c2b2d1509fd4b8511140496178459b3ef257fb030e62beeb5b5a0864b47bd6e4567b91a8dc2c6cf33d92f9f8170732e14d9bf6548a7a36dc15597fa595ebcdebcdb19db54f40e0d41d4342144d7815e185fd036b4bfefd41b378d6fbf28b8f70d8781880718e0c5644c206377d8e90a8577b55f97d439f9ef40810e87f001ddd93892b73bb7c24991fb38374c0f2f1e98098283565898202ae88dbe91d8501af1c619513bb8a6cecb3dd74fce0976129768c96682bb478a6d470ca36c17547e6fa684197a9b26b2274eb32c8d1cb75b8ebf8641779b7d19bcd7e65a98061bfa4593fecbe01c453738ebb33573b6e9fbb43e7c7c55177d275d6ec250aa3ea0cbdba284aca463020b4b98ba85a9d1733072d6f22cef70ea60a19cece01a61868ef2b79874b28e7bf46b792e31df818b3813bca7094eb541d61151bbaa828e2401ec50e51bc4050ce0f83548eedeaf410e065e05b287ed562e8d9c5ff4a2c6edbaaff25b1184178e18b5f0df38422ab0644ca9d2253be9c1b5da122047501283a23b1b1398ddca977d11e4f98337a8ceec874e4f44f7bb92b5b02e2fe08f3fee55afb78dea1d0e61229ac84709334dbc2abc71fc9a104ab5557614b5eca3cc491725840332c1e3447ed4d68db5a1849ee35c3b247d15e9cef275ca15f15e9bb970416dfea42b1c5a10b696120cf6062d2a27e85b209c20bcadd7eedef287c43b1cc25b835cd71e42384c27343663e14515b3f99ba661a9c497f1d5c2749489e99cb66aa472d33cfb7109fc7f4653fb3774ad6ee8d7efe7bfd2656cb4d3bc79ef6904a2ef5135b98927f285a18f949da0adb6eea1057bd189ecd3189d6e0aefec57ad4949462f666d6c25be78e97c5b6ebacba68a63f5b136ee1779bb7b7c7c22b61f9701590859145be1d0808afdd78280f1e78bcb92a408bdb60e1ae1048f8848298c46909151e60f44be124802b9ff60fb3344d93f55f6b085a9c84df54ed137584e20d78cef7cfb31bfe9ced61f79590c7b62b2d52f5aaabb61d7e97f030000ffff0ee76ae3bc120000", + "11dc899afbfb530ae3f155d3182d65a0": "1f8b08000000000000ffbc554d6fe336103d87bf6260140bdbc8ca979e0ce490c468e1364d0d38db4b5174696924134b915a92726b08faefc550d4a79d2229dafa6272e671de9be16858f0f80bcf10aa2aca758272d7ec9f798e75cd98c80b6d1ccc1900c02ce18e1fb8c595fd2a678dc9891c67ac5967c21dcb4314eb7c65b9d346ac321d95a5486617feac3498952b554a39630bc64edc0492dfe10e2868b4c758aba4b3d9af327ac213ca0da6bc94ae73508ce8416b59d59d8d48a34f9fb69baaa6e8ab25db3cc00b3f48840d3a2ea4651fdff2635505df248984f51d44fefc56a53ada3cfc848e479bcd13d435ab2a913628bfa1955f7c04540915f187fdcfcfb0e77921f1cdb42fda9f1a906e95755cc508df524c4f3af03e6b8796043cea3c47e5de91e0348a171fa42f578c81e752da41f4a8552ab2e83e4976463b7d28d37ba5b4e34e6845e46cb5a24eda3b53c6aee921b07e03c20207a3ff0083b13609e814dcd1f79da70f60e7ef48a8d6b7091d17dc6d0332772ef035a6cab7415519ae321c66f79d4099d8baaeaaa8ae03a8c9d3672c2dfe9f29ac96ff7e16745dddddd13735d6d605813bf8d06f2a7643fe35ccc6f0d92dbb79d4b2cc955dc3afbf2d9b351d69c4bd22f05127d88aec701fae1dbed9aa04ff5c93cac6ed3f2b6facebdb1ed6ab1bc03a8d1d2cb4fe1a3e8f91c15ed79f8731a9d52fa0e10318014b2929b7a9ccd63e52da5ef6cbb9c0abaaa780710643efcea073e7bf0dd040c621b6766744cecdf9473c5f5476e01bc9dedafbd2e9ad8a0d36159c9e1bb9a7478de157a8bc79046ddc24fc22abde35bd52b23fa1cadc714a31f48d78bed7befdfafa0f0ce3f0c1d14b1a18c6489ac693a823d318dd4ec7c9890bf3f553bd9ca1e53a76a7adafcb603facc560d9ce859bfa96d58cf941d77dec60d1593fb184b2685c98628a5ca936e08ec2b69389a6164b4b15c39c66d7511b371a60cbc9445bf434f30505112aa39963d095465d0c1dd6cce0074cb5c13d3f91a493fe82091cbc092c3f0995dd4238cf15a031da804821a5c2d29ca6d7aad04529b9c3247a9fda9e79be08a17bb54ac8207067b0e0e6557531577040282d26e07427a69168015dfc4e59816fbe802a28f8854b9150cc8984024daa4d4e65e6313dcdff5dad5a09f38608eefd5f5f366abc8bcaf52f4f7035cd96a3e3fe79fc07cd45d1e60b588e1eb510fd953790d5ecaf000000ffffa2d1fd05fd0a0000", + "18330058cdf2606d4ac7b79d74226a94": "1f8b08000000000000ff8c91c16adc301086cf99a7184c0f6d20f23d90cb620a6993ed9634e745b1665d515972ac714910f3ee41f6c6311b1fd6278fbeef9f11a34ed7ff74439892323aeca66aab5b1201b06d177ac6af808858d4c133bd70315587f6fd2f726f7d138f15db960a808b2225d50643eefbefdd56a480093796ff0e4faa0e6dd90c3d3543e907e70ab85892a839f4b66c821a066b0af806f05ff7c77becf106f310f54075f0663ecb7dd4260497643ecb71f5f8785b25c94da0bc8494f08b310eaf6f50fdd14f8e6efd21a86a734fac5555dda108a4640f932502d506470f2b626d5d84ab733e482937189b5d217993f709bbdeb6ba7ffd49af79c5f1ce46ce57bdceeb5f61228b44fc11ac2783b892383211d806bf3664f4d7d969e863cee7d0c71c43eee1d9e1e93746262602436734d3276f94662602d647ea79dd9b9908447254f32f7fd272f4966c56ef07c776292fd477363ecc6509002931b59dd34c58181df6f1d9bdec1b62ed9c6a82e2b67305aaf149d7c5332c6dcc19d6b49c3344438e4e4580b7000000ffff40e26ec4d5030000", + "1ee77fe9c2727334139ec325c23519ce": "1f8b08000000000000ff2c8fb16edc301044fbfd8a01d4dc09175e9f32b9200810c08d7f8022f7a405282e412eef2c17fe7643b29bc514b3ef6106fcaeec8d23a60d4ee6ac95d17a295a0d25f559324e4b7b77ab4e72a66118f05761bc96e48d69c02fc9be0a37dcb5a2549dab5f1b7c8edfdf8d46c76ffc753f687431251a5dd33d6e49269ad5b5be120d78e5669876e076c1d425199e62cb4fccbbb2197e041add9ef6f64bb7d20d7a872dbc57823eb8fa9961aae9825638c85d824f69c373e18cde381e44fc17e37fb73f343aed07ecc68573e41c3644a91c4c8f51a7caab3ef830045d57ce8689933e610ac921f5c8103bd38007e7a8f54a3449be9293c8fe4a44f4190000ffffcd9078ef62010000", + "267b79ab53880bf9c2abb43982caa01e": "1f8b08000000000000ff8c8dc14a34311084cf7f3f4593d3efa5e709bc88085e9615d9f3d04e9a184ca643ec8810f2ee328cec4111e658555f55155ede3808f64e9ef5bcab1367190320e6a2d5f03f2022ba4557934f73bbb298c501fc73bd53562fe9e1e97c1ac3c11e8768afed8516cd536855429bd69692fb15beb3698d53506a2d7a0737001f5cbf2f67bcc5ed879e65d1d55fbd6d8aee54531f576fabd3e5f278dfc73602d0bb492e894dd079d63968cd7310e3942828592ec9218df127788062ef0f50ad783639007a49f21384af000000ffff7b0eb70fa2010000", + "2a0d75d2f1e59e37b9e0923eec034385": "1f8b08000000000000ffbc92416bdc301085effe15afa1945df02a144a0f293ea4d9b89442086dee41b646aea82d05594bb388f9ef459237b84b4b6f3dd99a37f334df8c6254a48d255c28e91e07e7a747452305128313617a1a2f98abcb4bec733046f12df8431feee444cc303324f4c1f6c1388be0506a21311b3b8c044fbdf30adabb09318a07d98db4d486f40f6311be53d2f632c84ece27592dc7743979ef3c76b8f5fece85d61dacaaa13ab4c6aa229e65956e5b69462a9925009d234b49eafbcf5c9b3e3ca37736d0731037e55bc7e8a51d08afb5a151e1aa41c1f96cb513374e519be233336284d14b9eb8f76692fef8858ed77e48f6c8197f53d7e227972d1f8e4fc45cc7485631e70f76cc5b6cbcfb395f6b4d7d200563c3fb7775622b7c5bc4aa0270dac1558337318ac9291aef65ff430ecba8c5197de45ca6ba54b2ff285ae3e7b0292e35fecf1812e06fc4ccdbdc95d1509db8cdab7ed5c09a11310b85341cbcc5ee6dbd7e2a59e6ea04d52483b2f605eac539cdae79f1ff90cfffb864fdd256172d49aa135f573baa9355c5d54254fd0a0000ffffeb7d75577d030000", + "2abc8a64424b38646d2136dad58d4a2e": "1f8b08000000000000ff8494414fdc301085eff9154f70018964db2b6aaa5670e052a942704288ccc6b38e55c7b6ec09ab16f1df2b2759d88565d9e3f8bd6fc7e337b96b7ddfb393fb737cfb8e939bce2498048266c791841556c63282654a0c564690fc105b8671a816c27db0249c4e8b37a89fd6a2f7caac4c4b62bcc3da588b25c3fa2467f8eb0774f4c858323bac293a56ef18a745717c8c8bebdb4b5c89045c915396632a1acdae99889b46d16545372b6056908ed19465e4244dbed4905855b8e918ad578c965c6ea71d92f8defc6385b5916ee3a2606a0aa6c1ca9286782496f1cc51cff0139d8241a0f60f69ae8aa2c4dd354b34fc689c46e4d647952668206d9cbe3f399e055cfe26cdaabc9e44a75b5e0621056ef3e066c8b66faa8c868bc8f9def4aa9a2adb9adba0de68a6cab6e6922def6aa6ca8b667bdca414d29ab4e688f9b1521e4f1ec71c8c97e89c41729ec4fb43c35e796bfdda385d154dd32c2975055096f39f3c3c724cc6bbfa6bf5051fff362dcdea1d4220e9eac501f30e6199739e2d3b0cf1a9fe8cf0ca109f3044bb4368bd136ae521e7a7fec59f1066f598b6bd9821da3a27fe7cb1e8b96a7dbf108e7daa3ae9ed7bcc47cd704fc6d63dff98189f3433aaf32315e35ebe0476cc32e62ce773ed8ba7a7cda7014714cc8366216b2bed2be9833d42f5fc3c91b64153e03e26ecb7cf7b70d04c4aed37cf0b72d03c8c9afdfe79790efad5a879efff1f0000ffff767e09f27d050000", + "36938e84a94102a9c026b5d38dca976e": "1f8b08000000000000ffbc51416b1b3d143c5bbf623ef351ecb251ee051fdaa436a5250d4dee415ebddd8a6aa558fb0c360ffdf7a25d1942d3424fdd8b5633d268669e88a5ce05c2d29af8341efce9a927d67dd43c3cfb65ceeafa1a3b6211fdc0e9d8f29d192867b81106dd31b4ec620047f4c430185de83d21511b934597e200fe4e10d18f66efa95ee6f20f172edcad61b337e385b6755b9ea69462c2153ea67417791b8fc136b07b6c5db033a98a8bdf585cb57c421b03d389f5cdbc3622c9849ef07fe7c85bbcdb6036f6297451df444bdb828f394304aeabe7f47d728349e7cf747e9ffa228fe9c49fd897e42e4e928fe767cab911a160739e165ce5bcc6aa76f556440fd192bf37ed0fd3d72ef42fa19a9279cebd86a8c578f025c452448fe4a9e5af811e0e3ee7a50280426f70fb417fa3bd0b76351efc5a4d8cebf025f63d25fcb741701e32c1e59bf1525f83e94201b3528bea7483377fe555b25a14b793811d719dc12c3c6b4d0f34f85753795dffa58be2f3551189f8984201a7da6b0f2f984b88e0bccaaa8aab9f010000ffffdeb87d7253030000", + "3ceb52e1f1f3624e5a1a43ca87b692d5": "1f8b08000000000000ffcc58716fe23816ff1b7f8aa7942eb0bb4e3a8c34d2217137b4a5536e29a042f7766fba874ce2046f1d3be338ed7428dffd640792408bae733aa9178d98e4e7f77ecfcfeff9f9b9f46b229586c9f5f8eff3496f76d95daddc580619a7eb35429bd1f3deac0f9d2ed49be992720e01d1147e3afedd3d8edde3001f5f1e5fb5b6b2c3deac3f9dcdcfc6575783595529621ab88c00e34451ad1fbba15431d19dc6f1b20158c0bb82e2f4ba373abbdcd75d2822fc253c458a2680efc1117283394f60c1db1f9ffc4c030ea0010dc061bb64bc190c67f3f1683e9854693f43bddecc0489690bba306422fb0a7fc00f3fc052a6dac080193c3d959f25e160343f1f5c775d6fc1c4169cf4ce7eb96ecffbbff5cf6e66bdd3e1ce9af9328e8908cccc13e2dfa93640fbafe005f4de1319e705f3f41fbd4fff99227d20d10182eb9bd16c70d59fffdabfde594209f754a54c8a167ab62ce369772b97e57e93166221fd02cd7a330f47ebe7162a031393545385a8085858d0e5319f9f8d9ec55dd17bcc59aae1b2df3b872778f0017378829406d0483df0bca8013bd13a9f8f6eae4e372eac72c36b5c5f9536d615b393c1b03f1f9e5f0c7b9fa65d9c02fe0d9c9830e19e668c07e744d36e7d65b278edc02d82834fa137249aa6fa4cc631d3ddfa6a27a95fcb616d8fb2784155b7beaa3af53d0c7a2c06938dfe2685bf537d9c56d5c753ab5eb34f45f83a139ac5f4573bd94a0ead1d8416c6933913a1ec80bfa4fedd3c5154d12f707404d64bd04b0abe149a304115aa7da4fe5242a351bce1fff62929aa7b387feacd0ad67a41723c7d2e399e56246d61db79ea4d83554476eb592eb283550de7fb63876eb37b4aa1ca2e29844a6ccf8d621b54dcd862bb9cd52db0e5ac62156953e7f7bd36d88ec87e2933227b58457ebf6a19ca3dac225d2d51db0954b0d6ff346f1a08a1a3377890fd074bca1308a5024afc256892de0186a5d649daf1bc98a89872b2707d197b0b2e23af7df2ee8377d2f6da7ff148a6250ea49fc554681ae098dcd19071ea2e75cc73f637f0ca9d5c8e47bf77ac5f0899df8e2903b3254b2de6a2da47f270078dd3fea7c108561753e882d3717ffcdbd111386bf0fef599e06f3dfccf39fee3a70decc12a514ce8109cdb93f7ef3fbfff101fe3f727a9fd3889e138bd15cecf50afbf333fed7503eacdabde2ffd0b9bdf83e9ac85907bdebfe8dd0c67f34fe3ded09c1af904df34f6796d94212c98208ad1f4cda24638ef00fd4ae2845330479b89992deb056a3a0b95093b9a22b49d72a956686c878009f30e015308f98a124de701531d54fb18df054c014e4cc9ca5ba51642d5a3a303a50262a10868f8bc7f42b548424435e0ccb411cb2cdf28915c646148b8f46c27e5ddb7f397f6a61fa9d59b0f440926227042998960d371392db435b5579b0e18325d5624ed7f9e1f07f6e5a00d33682c6c8f4b92243b4ed66a9bbe2f5f442c2b6be3e5afa3de55bf059800e641c8499442e3853a0ef5666f32b1ddba31b7094f07ca53fa79706dc81eab01db944767572ea5ea9e2a07d56c83c904d380b109a50b8071440555840f8c09d72349e2e5f29eed2022896aa646c1d695ee96753bdd6ebd595c345a157d2856ec85d6a1f1c69bf88c5322b2e4ff621b23df4c665eeecdfc7bbbce26ee1601c2f9cbdbb4caf0d829155e481015030e0f24e996a748be8268831c4a85aa791358536dac76597acc5eb4250adf433561100ae352368c35480189927f525fa3da51242db69362aeeb1a3a839b5b4100f8c15c3c5c8402e95b2a4e3273ab8c64207dcb676e141f4e3e9c183d83617356773b1642014d52ab16b034e1e4110c604ff7621eab956bc0f57a7353753c0736f7d33d7f36a873eb1a89d4187eca04fb821067a274d47c98999916bbb012490bbbd643946aa2996fcb6ba156c19e6957c7308b8454149ce2964934b8762c1f693966bdee6939237b957c694e167611d252f27c9d9848b5c9c5802654045468b06376c97c19985387f0c794a5074b7d24bd44496d4afe6b64f2975749fe994a912c5e4fea9bfa87cdc0ab74ccd7b3c92ca51034747de945d2b34b71904b0552dc7192a51e13340c499ab2481c900ebfb124f122e93ffa7c7776921311b95245de57cfa48c9767ce779fac082145232af224a0f949a0296c5f021b4e9bfed766f42c0e864cd83f22ad562c8425492f18e501b8e04cec6a6e249cf51ae5cbbb4f1d2a19836bc74cdb6bb97754d76bb45a5111acd7e8df010000ffff8e23a27dc7120000", + "40b2aab99d4f237575b7d8898abd5cb0": "1f8b08000000000000ffbc914f6bdc3010c5cfd6a7780da524c551ee2d7b68936c28851068ee416b8d5d515b0ae359c832e8bb17d95a08db167aca49b6defcf9bd27554f7d888433efd2d390787a1a48ec90ac4ccfe359cee6ea0a7724aaf687f0be937b3751ce08331cfa7dec24a408491848e03087388c04a62eb147cf6982fc24a8da47b71ba9364bf9468847edc689dbb9f928fbfa5b561373625ce296f93ec936eda36fe177d886e857d1148abf209e77f2822e45a117b1d7ebd9aab28b03e17d1f68f4f8b4c10af62df6c95e274fdb723fe70c5584bed6d9070e93e3c3773a7ce1a18cc752f12ff5b5789796918f8767cab955a5e8735e0e5ce67c81f39ad547553b254fe383eb7eb9a166614f4cb5c5f3eafb026a9adabcc187ff6ad76c9ad02f3336b8f96ab78167a9042dde2a9c3f53b0b7c5d1e705ecdd06318cc51c808afaeaf54dd330c99e238ed8c46c9a6ccce97d0ca3c9a6ee32bf030000ffff4118a0fde9020000", + "5dbc64433d21cef756d8ea900c9eddf3": "1f8b08000000000000ff548e3b8b84401084f3f915853a899ca3181e5c72677c9199188c38bbc8eaacf80269fabf2fe30334e907d5fd558938144418b47d1a042fb37e2158743b1b7cff4081590020423f34767ac0937e94268bb79d82f92e16322f217d27ef8ca33113c1d8dae1c4a4abd68048657ad2951ecdbfee0cb32252b993f6157489d5dc4265bf7fef76eeece870177700286494a47509c8284dc6bd7a089ae35f39f8399ffef9da6fa6b7982cc2587c020000ffffe141b80b1d010000", + "6a1772728ccec9bd40ccfe203ebfed97": "1f8b08000000000000ffac564d73db36103d13bf62c39976c8c4a1da6b521fa20f77dc49a4d4b23d9dde206021c301011a002d691cfdf70e004aa2647ba607fb6093cbddf7deee02bb6e28fb4197084f4f15a7e67b7a9bd21ab75b4264dd18eba12059ce8cf6b8f639c972b4d658179e441d0d168542e67342b27c29fd5dbba898a907f7b591d6e8817b50eb9c94840c06306ca5e2975a18900e5a871cbc018e426a047f87409b464946bd341a16c117a416e60ca80e4ff7c83c3c52d5a203a9bd8147496358726dac61e85c45fca6c11e95f3b6651e9e080100d8a918538fc0c32fe7add44b30025677b8e35d51070d5a616c8d1c84540a8304586ce0e33fc04cdd488520145d92ec8007d0a111920d06f0957a747e64ea5afa37e23a82ec734511d3b65ea07dcbb43ac467547ea62fbfbf2151c283178966ee6d8966ee94e8aad55ed678fb66b5eb01ee99b6249dccaf66397f50205acd0ae6d7d0ddad6a94fe9e817b505d4c49c823b550ec4eeec4daa9f117a6d51ce23d4cfa2c32633968e341846f24eb3bc23988da5793e02f8abc739e1a0ff17b5ea61a4cacbdd174a1f0da7ca3d6dd51f5d77c36edd3dc3ba3a1a11b65280766ac6d1b1f95bd127a42fc5278203fe476d384ea5f50192adb236ea31d0495cac5dc8e1c4f68f862e71f117ae95d6a87d63f8797d1de833f727c0edff99fc28f51e14bea79b4f7e08f1c9fc377fea7f043cabf534b6bd7c75e500e4db236d4b9782023c7c1fb84a017b167e83a301e8245811635c33898a9a70bea9064e3211c7ede87895e8d8749d997a6398cdaa3f0c30027d991d7fbfd633726cd7289365e8838f9fd1df5b0924ac10241ea47f303392c50188b806b64ad0f97d33d289275a1e94a852513d7ccc8341ba0e02cdb0dffb82e2870745eeab45fd21712586340c15df4432b28c3a7ed598cef19caaef04f24e3cedfc2a773e8565f75a9b9b4c87cb133dc862d351301b32c49e62cfb7ffeceb232b45c0a781748aa11d55f38b7451968338bbeb53ae970d5145745ce42ae61170684b85635e5dca273e142e625c9b6092f68a8ae370d1625bc3b8788debdbe02cda588edf410e696034675e808338d44be4316c6820cb9fdf61924fc9170a76d7d2151f1a2fc0cf2c3874820825314913ec99264314fe9fe456b66e24673b46a23f532ca12d5e5aef6459934c6baefc3ab39fa4204946d92d2a5a0a50ab33675f615f0f5716317c6a8c0d021ace1fc3cc0c0cf9ffb968d119bc9434b55b13edb1b03f6be870178268a75591e290f5aa2943fd15f99d5c8b4dabf3cf77de858f8e76b37fda190da9fa59ec40a84cdf029dde77963a5f6a2c8e793af93d135b088fbbe848babd937f8c5e53dbc321e80eeaebc4ba9857a264b1013974ed751a67dec27c9ac5985a7f1b0fabb45bb89eaa3d67e085a1b8fb65955734675f12bd33e11862f3db6aeb81f7f8f191db58c7569922df92f0000ffff2b73faee920a0000", + "6ae44828c0257859553f6df80cd4db7a": "1f8b08000000000000ffb455618fdb4410fd1cff8ac14255825c271cfd80422338684b4150a22414a4aa421b7be2dbb2de7567c7cdddf9fcdfd1ac9d4b93e67a20d17cf2ceceee7b6fdecca66972dc688b10ab4aff55202b63d2c2a55c56266edb683c861f91cf8d699a74c95467fc4295d8b6a03d28d8d43663ed2cb08302191478a33304b701c2cc513ef423d8902ba169d2955a1bec4fb37c83b6c017287b4f14abb5f2bbedbc5f0afc77cbba2c155d090f30dab3dc7ec426e4ad54e14f6e3c419f91ae02d18f88b9503637489f54cb799661c5006fbcb321302797d719be1f51a44a00a8548120bfb735d2957c68cb21b051c6775b0010873cc2b7357ac61c86396e546dd88b8ec928fee04eafaff1be3b6d5dae91f6d2bdc8533da50384b363084739d2016dcfa46d710c91afc13be23e3f73a62e6ddcfb9d65e83d9c4d26d0b8f51bccb895baaa4acf55f6b72afacaa6735560be402f5c1a29f3ecd5eba6494b97a339cc3cf2bb6b8b674a9b9a101edd87f37cb59a3f25727474ecd17f39b6703523c1f8800adc00bb5fdc16a96de15581fc5a722f982b889be6f3d423bd435a661728374ec7e37df0b9f3dcb64da337601176d1b994f4eb49db4ef79912934cb479dbde8dffadb83b9b3cd8f5c8ec6c12c39f0fcf2bfdf0778f34ad3dd297675f4532f3a7c768b80dd4d305faca598f7f9066a40408bee8e3a14913a87c48a4509234748e1f41130d32be84e90cb4d5ac95d1d7f883b38c973ca451047dff2680449245a8f29f2c0f29e986204e60328a067a13123e9b81d5066e6ebaae7d0c13011810724d36d832ccf832816d0294887fb97287fe3d25fa5ee53dbbdba3d1a08da2c1ae48779291cd3891f1b8835118c3c7b3ff9756374c42277de6a87ca94c8dc33844e35174cb643a8397cae85c31f69e74a042fef0718b03871313b540268deff05765af46dfbca7ef236a90e888b078dabf3009b06365166eeb6f8b7a52ffe9d60b305d7becbd09c23f30a089061deebf2439a0f0c408a107074f8e2ca63da87c2ff575bfeee0e58f60bad7b70afabad574afb68d065b19949f97bfbdd8130910a3a88dfab98dfe090000ffff10c1d0a5a9070000", + "7469e2ebf5c1ecbcac024c458eacac39": "1f8b08000000000000ff8c94d96ee3361486eff514ba6c51889bf6c7a1a8639a09c54373f18c3198772f28a7a863c7cedc11c2ff7f67d7866bb650fffa45aeafdfbfab4a63cd09efaa2ac0299b00f55f555dd7b5b29857a211b505a270a31aeb3323ed48ba9ad2dab8d5045069d76a938e79d955d2824a47dc64a409366f65826263843582f1998d7c625c0c7dd71c16de2fd33ccbb1e7f794159c89e0def7b0cd16e3c9aecbff1cc15827262644dbb2860d7260cb200fcba2ee39dab846a333aabcea332703110f1a6cd08393ded0e84195287c26e3ab226f2d3fa4feb0ccdf58e2c9366b30670874bbc4932df974e4a1768d1aa90f9870c987a269bfd258e9f4275547d8cbf8c1ab0614c64b4cb0a7b37fd9ccba5af82103148620ecc19703e84c5db6b63eb725ca3fc629dcbc4c66b1702f7fdbd00474349eeccf27c4b76c0db8a88e9b59133da6e403e604e15aea83fc3d501f20a54be9b2785da4350bf5a727a04d1a1b3205192f6f115dc18d84bfc26d3225f7313993a0adcf8230225e3620ca84c1508d2467b33e69413421fb088e5ad421c7ebf81e16b3ac96467a3016e2e71b621d9b7ace866668d9308e6aed15ef9ed8cb09eccf6b87bfcae62abc6e723991feaad8778c60d0f42755e1e213de66c105ebf9c486be6f60545d3b4c0798d7f5b19fb71807e9ee8ab968b9e8e606d834483633351dbe61c44bbc63303eb43de70d9ffb71597a18567e78cd4888f69ed215bb104ddb4f3d1b58cb051fbea0ecffc31b98f41e9c360e3e7af70796727945cde7ff8681fe5d13e3e8456e969c45593441a6eaefaaaaaa7f030000ffff71a6e24fb4050000", + "88911553e25120a7da86677cc92bbb53": "1f8b08000000000000ffbc50cd6adc30183cdb4f315d7a5883a3f4507a08e49066b3a5b48492e41eb4d62757a095b29f65ba8bd0bb17494e59fa73ed49f6cc683433312ad2c611564afae7e9608fcf8a2c0512a31761ff625729b59797d8143046f118781ec2bddc534a301324f4ec8660bc43f0a877213119375a02d3e05941b3df2346f124779696bb217fc33884ef94b98d0c7227a7575a2dbff97162f68c0bdc31dffbb0f5b3533dd40e5be354257f53d5b45b692c556505a00bb25cc9b9ffde6b3d842306ef021d83b8ad671f234b3712de6a4356e1ea1ab5ce67a7bdb8f58ab6199f52428c307ad1896f6cf6924f5fe874c363b64751fc8b3d273ff962f9747aa194fa18c9a994ca818b943aacd9ff986eb4a621908271e1c3fb3e77abfd3ac4b6990e36275dc52814d9c7834d6955d16b6c3e8a07da19a7d6d3c1766ddb188daf7e1c89f1e61aced86cd054242fd2a3e89ad4b60dd334db505fbb2a5677471a96a97e897bfcafd1fe58075de993f39d95610a333bbc2bc15f9b14a816120f678baebb36b58b6ffb330000ffff56140cec28030000", + "93bd183343e73a133e7c243e834a15f8": "1f8b08000000000000ffac554d73db36103d13bf62c31399b854cf4d7d882d67c69d54f2d4b1a7d31b082c243820402f405baaa3ffde014849946ccff4201f2c72f1f6bdfd20765b2e7ef005c2cb4b25b9bbe9df66bcc1cd8631ddb48e02142ccb85b301572167598e448e7c7c524d32102a8322e48c65f94287655757c23593076dff5d769385a32667256393095c74dac86bab1c680f9d4709c18144a52d425822f0b6355af0a09d853a62415be5ce80dbf8f48022c013371d7ad0363878d23cb9f5d0969c40ef2b16d62d8ea47ca04e0478610c00601bc594070419fff940da2ec029785ee256f7997b689194a30625286d0cc610a05ec32f7f83704dab0d82327cc1b23d1fc0c0c6583699c0371ed0874bd7343a9c48eb8072ac958298754d8d74cab406c65752616eaf6f4e28d4f3c19b42737f5aa1b93f16faabb34137787fb2da8d08774a1bd67f99dfdce2f6d180eaac284458c170b5aacbfef70cfca3197c4ac69e3841b1fd72af88662e7c759d9590ae611f1fa17024c1ba002a9eb16c0c8473504da8ae225e15f9009eb900e93c2ffb1a5c11dd595e1bfceefee4e497dcfc713b9f8d651ebcb3d0f2b5715c8270445d1b5264efb81e09bfe51ec5f7b9ddb5b1fa5fb98e951d0977c90e8a6be3536e07c02319596ff1896194deb5f548e135bd4ef611fd01f035fd803fa69fa2c1b7a297c93ea23f00bea61ff0c7f4175cde70e28d1f73d75c42db5b5bee7dfa2093c61e7d2430f2d8290c1d985e00a142422b300d661e78cd3db26c7a01fbbf8f71a257d38b3eb22f6dbb1fb507eefb01ceb203d4c7dde33026dd6281942e449afc61c9033c6b63a046d0f6c9fd4009352a4708b842d1857839fda361d9e0da5fa9b864d29ab974ed1a387812dbe19fd60507893e68dbef97fe8445d5e450489f70488a0b7cd99c25ff91a11c0affc232e9c33dfc760ec3e6abaeadd48422145bc37ddc52731539cb92659ec4ffc37b12656cb956f0218a5497dc7e91928a32ca6684a123dbc7e1ab193e17b988b9c65d1819d25ab55c4a42efe385cc4b966d7abe1843f57ddd6251c2877348ecc3eb3bd452abd4ce00716e7910dcc68e08d76a945b66e50874ccedd7cfa0e1f79e77d6355f351a59949f417ffa94045404a520fa235db22ce5a9fd3f486eaeeeac44326b6d17292c555d6f6b5f947d8ca9ee3bf7ea1643a122cba60f6548c16a13676ddfd977c857878dad9d3351616058c1f979a4819f3f772d9b22b6578f1d37c5ea6c678cdcbb1e46e2b92a5665791039dbb0ff020000ffff099f892465090000", + "9ec72c1db17b72aeed9a9dfae4794622": "1f8b08000000000000ff84924d6bdb401086effb2b5e924b0c967a2f6d21d8b49796b46e028510a2b176b45ebada51b52bbb69c87f2f2bc91f710cbe8e9e79e69dd1de9752d7ece3c37b7cf884abdb950db00104c39e5b8aac5159c7681c5360b0b61141bab664588ffc5de4ba7114394cd491eada39d4a26d654b8a563c36d6392c194e429ce2493aac68cd58327b6ca8f5acdf38264a5d5e62b6b89b637e7d83cf9d2f932aa8c2b02f06e336283409aa2d015b21ae1845966d814c931469b98642608d28e835396e578c5234a3249f12965d8852db7facb1b171b51569928fbda37264527be0d87ff35433641898523454fe26c3b952b303ebfea2d6236e2469d6d2b5618a9f3fbefec2f2099a2bea5c04798d2f378b6ffbf1fdc8b48cb475a194da451ead56fcf4e81efb5b54d2aa0cf70b8eade5b5f5062d97d2ea30f81b32d69b87abcb11e0ec3b19d6d962802607bd0c4268b84c7f75941cf60d95be61d6720a417b6aa81c32778d3e6286ca213367c7af99a1b263d20bd9a5eb83630cae8aa230a29e9fb78f14179ae431fc717f1f0d47722e3792c7ba7117c85f5e12feda368c38a339ed18d73f6f20ad4f1bc6e39c37743d785a325eefbc44f7e05bc9ff000000ffff6236e43020040000", + "9ecd3f03cbe3e3ef5337a260a193f876": "1f8b08000000000000ff8c945f6fd33014c59f934f71895448509ac1847898d4876d5d61b07f6a2721046873939b60e1d8ad7dc356ac7c77e4c4ddbaf247ed4b1dfbdedf39b64f626d8125970851c1d48d598afb9b0a890991552aa37a21a2b60df7f6e01dd2a110d66633d24d4e17acc6b6056e8041d9c89cb892400a2a24606004cf1154091a73a58bd824506a5583b5d9359b0bf4dde4c6c025d077746b63466ccecc7ab9f08f4e7ec134ab0d0c61c12a04f7f3438dcb060d61017181256b0419e7e355f24797e1bf1086209b7a8efad19c710698e73e61ec6f41942e50f7d2c51c8cd2e4a772259a5aba5ad45a6918c289d6178a26aa9145ea8a275c16fd62e84eebefa719e7740fb99284f7941df7ff69672c7ddc0097f4f64dea850d692eab04628da673fde5db4b6bb35a1528ae58fe8355fe2cb32da9144811135375e7b64fa9f3d6fb4bc08681590a381841646d6650604ee78d203e5b8ab68dc230e0a5d77f368228720d6eaa37633ae78c4b73285771579642f4e26b1475e420e83b5d6318046d18b49bc0d103f0a1ccdaec4af39ae9d5475c990f8a4b2c9c8d75e3f8281b6bfe13b5db599c7488da98a5e8396e2b23286bca660bcd25957134305e6dbe828181cbc96476720d8302a6979f663039b93e7e0f93d3e9ec71eef2e2ec739482590a7ff2dbd79284410b280cc23f1c2d94a14aa3d9c9d4edc0dc6ed83a3b3d3f75831d1dec2ab0c6a6bba0438f1c1f65539c7359c4662992fe06ce5455f561905c74f2fd8ccb73c74dfacb7219eb08b32e533ee17dd5739fe0753d2fbb486e303552a3a57b4c61f8ba4b6c8fcd25411fe083917bb1a6eaee5835d283a3a7df9ce87fec070fc3fd0dfef662eedf97b00d436b51166d1bfe0e0000ffff9fb98df146050000", + "a2d5586edb9ff79f53fe610c4e91de3d": "1f8b08000000000000ffbc7bfd531c3992e8cf537f451e9e8d03477735e099d91966bd1718b0c7ef307801cfbb0dc6e15657a9ab35a8a5b2a4027a80f7b7bfc84ca93ef8f079e22e7623764c49a9cc54662abfa43e2fec72294df8b8037ffb3bac9f2d9407e54140258d7422c812e64a4ba8b5145e822c55006f1b57485006f24990cb5a8b20fd46760fd5aed6b0b4a59aab4204650d5c29ad6126415b1f46b0b20d2cc4a584999406ae8433b27c8063237bf60c39c9b2f37f3b3f5485345e7e5c5f8450fb9dc9442dabdc2f94d4a5cf959dcc4459c949841aefd6a258c8bf6c6fbec837c733ddc8dc5f561bdd625b4bc31bc9adab269a97f909af1bbfc83737e0fcdfcedfd87d5b74ab2a5bda8216542a2c9a595ed8e5c42f85d646fa30a9a4f90f1f44687c5e9b44edab966d00520b4e5c2adf91e3ef71a168ed60016ee73f664e9862f172297c906ee3abd6c55dc189acad0bb0275cd9df9ea3e142b8927864993ec9f41756f2e7d34bb3ec6c2151b710acd5503b5b368544cbdb3bf9b00feb7b4e8a2047e0a42847d0d4a508128429a1945a06b9012707a767206a854b7f974580648a3077768916ac2ea581520431135ee630a087c69815d6185a69212c249433882368ae3e38652a1046e8d51f9201222ee2231d109a296c2901a74ab08646e65a541e79bb54a52cf32c7bb5a2bd20ce5206a1b46746878867b60911a36e96c4455384c6c911f19e88d209b550d8652d829a69190121ac6a995da9b020244e7e6e949365c266c452fa119123483fa2ad08636ca043eaf32c7b1bc037356acfc37965ddb2a7e54e9bbf2bf3c7a241bd2f3720e05e11935ad65ae201f6e0ed5242e30532b79461614b9fc39bd6ab743c8032856e4a99a8c2dc3a308dd6b49439f770ee3febfca8d1fabf7855dff4b43015597a7d514d922c27feb39e3cc315afacd51b601d9c578d935543c8f38778bacd31dc04e13632dc170a535ed7b240d667c2ab02668dd2019d606519539e65d34a9a29fa4f36850928e36b52c06c4538aeacbb003b8753191670ba90da3421fcbb87f372b6cd1a7c949f04b93d69e1365875fbb3ed53d67ca23a798ae6de422da5137bb694eedf3d54f6776f0dd4a2b81095444de3f7a3e4fb2b270cb791675986de994e6b54abb226eb228817680c10a21a4d10cac812d038159f917c22af0968c2b0793983d3cf5a05f9a2776e3f783c332c5a8a21839337b75adb2b8460b9e4d9743af59f75b67772b07b760067bbaf0e0f604de859b3f46bd97a060070be8b9f6fcb8f006f8fce0ede1c9cc0fb93b7ef764ffe09ff79f04fd8fd7076fcf668efe4e0ddc1d1191c1d9fc1d187c3c3112f3d5341cb8ff8e7d1afbb277bbfec9eac6ffdb0b9711f6cd705e5039248148600af8f4f0edebe39227aeb1d34fab5d7072707477b07a7b02668d8af0d20b26fbe393e82fd83c383b303383a86ddbdb3b7c747707c041fdeefeff6c7b20d1446f6ecd9b36770e684f173eb9678de82c589ca6668b840c2480ee426fb66323987cd8f1065045ff93f6582aca41b0ee209da81b9d05e02d44e2d855bed40708d0400d104db7e1456ef3cc0a1a5d981f1167f94722e1a1d76e0fc63f60d33b78f2b608a4e68672da2ff7421573fa3063fb52afc999dc84edcd1cfb8eb9da8969fd700ed79872de4932ad7a09cedac45d035f4e0c1ce9af9ce9a32e1c5f6687364eb304247fab25d3165996d7d04328eaf951880b914ae5808c716f44599c56f9659fc2099251c03996dfdb0f95066cc5c8c6b5168513234c5721958f5cf5efd2177b67ed86cc51410926574c67f761262d4a3ad4e440c1de5b3fd119215ffefdbd493f2f91336c5cc0d8c2a594ee4fb09d3a1d9ce7622f043e3d9ee194fbb669addd13145f79a7c1b262018060585784c78d8d13ae9439bf0280fb5f59ec23f85fcfddd63285c53c2bc3194c4f811a03b878530a596ce8f60292e2426f4a3e49ebd7497d2817012c4a550147473d85bc8e2023017a1306ee7e46bcf8b1e8bb28c28fcc7f5676d5c1f9ff2581b1f5e2923dc0ade1a1f84d61c23a6d3e9abddd35f705af1789798adfb856d748985429c93252668ff6f52d9c94c19de02f8c6c9760c25a10c96140e6a111679f62d46e54a061837f0540a4aec95f6ca682bca561c147edae8937d0b5788e691a038c03571e26ac269f8c39896c52a8683d6c354f11e4d584f0a4e15d397832794ca6de08ea581f1d87fd668a32f7d8ca3bf61b4f9663cc6ccd607076b79c7d85a3bdbd25e0a65a01da60c217de081e83e38934a9f6497e903cda6e32e8d2e6dd968cca2983ad7083e3c06d7fe1d8db39d8ac63be06f3c5f8697dea051b4cc45598f4b611f0ea2743b5e2fa5bb722a485212e67465629135b5ce63b5b385f49e55928c167327b70d6a0ec686ce5c511945d98920fb966d367d12253e165d4d5cd0891228b99932edd267cfe06a210d68d19862818ebb33ffb0105c2b9cfee3100d8844d36552cab768a3c978b1246b01e1e99b99406e6bc8f349de330d003c44dd1688e9e35a1a103073f6ca4b87a7f2e6e6db9c95745a2ce452dedded4c26dde02fd687bbbb9b1b94908434fa1e93fc1f37efee763a481c434869cabbbb89bf125525dd4499525ee78bb0d444ff8397741c2745e3f404cfa492c8c55c866201978abce512d362ad8cccd8f571058e92d00bebc3ce8f9b3f6e4e381dcc10cf53109c7a65e49a23755149fc2cacf156cbece6267f23cd2f52d777ecc1c9dfa1b9285351799b0e723cc09815b7368cee5d0abf62a3e352b3a40da05b10fec2e7d9739892ba1752d7531883563e746e1a8270950cbe05234c0837c890a3a94d737454d316386a16c15dc3f6811e24197af44de92c9c7ed66463e5ac6f54ad7d78a8b528981e7755fc603e3b0e0bb4186618e4356e042550cacbb45994de4104ef0b2fd6d0bd9222da7bebb4a2794f5b7253b4725904eb5639bc4e557642387d1775308542183c7e8de72033905bdf0d505591cf845f6483a34c5a8f8d85181407ce3b2afe5ea5428ea531254ae449beb3e790f8cc009e238ff346b76324bde8721027064fdfd952e242862287b7de3792d53ec56d96cad75aacc8ac30c8d74d407279a582aa8c754cb05201f89368553621cd9e4365f3a52d19cc4274ed5e86a61e412dbc876972f853ea8410062f4320567bba884b631e06d37e784842c99ec3c9c1eefebb837cc924dfc7c54e8a7229b3e720ea7ac27e6482012caf2cc1712e026f9481539a1d719e14dd0b28a3427beaa4a193246a35f91bd7ac98a7fd3de1a276132557a8536735e653d97328857d141e73b1360d8b368c9ba7344e1474c6501529d1788ea290fa515c5ce17b70b276d24b435214e0ec55f422c5a23b0cb49e3cd6b367bd7e4bcccbb2e770fee6f8e41df147bcbc4e4c7e5ccf2768999f4a613f61b0cf97e506c29ffee3f0bffe3b78ff595f27f85fd0ef12ec2f31ef6c41d1d726b077b8df7686769fa6dec7bc19f6e51c95a4ac6901534e4db07cf8da5660cc179aa0b4fa43729043edcf9d58ca2beb2e46409b2f67048eaa3fbd8ad6d9a9289947698b06cd829356149c7abc3f522933aeac5105fec5224314f65160c26ee91f027df3351d3604e46ce37106502073a1ed84803662ee7dca0d3559c27eb40e9fed35ce4913f4aa9b1d656378279c12fbaff0afd5e93f0eb331bcb73e544ef2c73b5538ebed3ca0ef8d87291b47479c65efb530989e4694d9188e9d2862aa33e402ce56b5f459f6cefad06f026201e25b8e4823ef56feb31e2546fc28f97d54dbbb53fcca635ba8f192636b5da302296d25274929d23d272fcab285e4c61dbc5a250f34229bc19ad119a15b384246099528314d336d4628cb1cdece138d944e066900cbb7b224e3153aedb22cb931d7f8e409d153329597f23a389123f7d3412603b6462c395b7beb2be3b2b8a06391c3f3a05468af6930c0e494484d63bd202ee5cb1e0005081c8c5d6813a89b1b2bc00e4fb018b7ba6579f64a6a7bc5ad3fd42296b071555f8a23f00b8e828319eb601a1b19d39c922edc1575ca6e32aed5d7fc67fd09c5b8b6036b11766d94262bdbce711ba29b4a1ea30598ad82f4bda554cbb4b3d41d3ebd87a3b29f524bbaa3133bd2119640efba7c71b7bc14a69025298ded345d75703e93c283d02aac50a05aacb076a23ad65e993648cead5b8a406a739e6fcdb6a34d5092f89e3192ea754f47ed3dc0743c4ea3fbcabd9cc6c53086b050fe5e5795b393d63eef21cde1acc58f462f15657633ea8ff331a76b0dda70863939db115b73cfe8209f2c573dfb81b39695d6fce47226e9c4747b424b6196249e2d53d1c50e15ff70459d035fcb42cd575fdc38d554a9d742c134ca3acf509ec273cf793c96d7b278d91546a4c5981a0f4e28f14d8d0422db07f7855335e71988ad091254e0eba838b510be9712d039a3244019d63c728ccb2d891a4729c9627746828ed21398617a4caaa5b6351a4bb050343ed8a58a7758bd06939d736e0bffb40d14243b6d6d0d61e16c53b1e550c581c718198a773ce6d25ec86c9a728b339c7a4de9b47500ed380de55946d88501a1bd85dad68dee6ecd4c90d7813df36c75df72c91d728c98ad68c73d9f496b8bf0f26fadb3ff7bd22ecbb60b02a9c84e01e0691ec82c6ae198506bf2184ea95f9e86b2c9040e07a2eac4533b6502b5ceba4c8e262e8553b6210b5e760eb585c17232ba0ccfc9dadd5d86841ec8799d161d89a51cb54ce2b8a111cee7f7531d9106100097c4feef283a95639a8499b57aa34f8ce9fc2f228f531cc2ba52888c192db72d6a63dc6a7cdb76c453d36e34cfb29b1b70c25412bebd90ab117c7b29742361e725e47077875ef8e686b53087b5bf3c1b6f7f7fb946a07077776f72fc62f30cfef20ce71949fce7eeeee606a429115fd696f6f1a2cd8865aaefc54c91efa67a960e9b97014477154df9c7c0fea894ea3b1edf62959488f4ed9c4a272ea5a4fec4845fdedcacdddce477776b777753e222624864105379cfb872f835595f5b93f4d3a29828747c5b7ebbc15e944cd837c50284efce336a086785ab284d464611f253903ebc6cbc7453c45b58f37ba4390848fd3d91e7988ec7785c71484e47c8c2a592577095ba5c0c1a9dfc0c0de1b62d4600e016e88000d921dc021b5f763b1e8fdbff67b728da46d36dc92d8753849ddedcb4136b34bc0677775380dbecb6d68d13584e3c58d2cddc5f13e235d0109e471fc0da437b251f3294c61fc27fa8eb47e179fc09fc7b6229f51e16884f10ea009ea0f8250cf7001e623835e2423eb1b89bbbb78ecb987b072ff5887cd6e97b079cac940f1cd83e71070aed836a4c04c185afc92921d95e59cca81149d63393291db2b5bbbb9cfebb460cc12ddcdcac3d42698d1c0b2e63744f2c6e27bf16057446f924b21ecc57a37da8f1a7d13f84fd1364ee9bc597c8dc87fd13647a06f4250a3db07f91a8c8017ffa1709ec4f13fbf362fb1f90580727b9479cc36f11d16f6bf0dbda6f6b1b78de2386c709778bbfc0429a5b83354209ec429e3d83231ba4e7d6c6673d82777ed057e03610dfc1516d25ba66da52064109285d3150bf3605f4cf8d74abf86e8cdfe2c4476a14139b604199c2d163a851baa606cc4210b47dde44f90fe604949b5bb7ec3dc6cab331c734cf642373c69ab10fc294c29503c4eb47c747ed7577bc6174c0d5e9462f2148890237774beebcefbf82773208eed11c5a7aa896dde23085d6554d41f528f10db7f03e92fe4fb9c2cf5ddcf2dbb4651cd9e3476787d2c06ddbb5f81513ac5b28e8791f94a51e46e8c7fe9fddc61b5280db15b1b3baff9f5b58ddc22abbad934eff1b5093dd2e57feb3fe0a944b0f5f01c8b7c9bf4ae7311bf945794c8fb3315c6ee63fe5dbdfc3fae65f27db3f4cb637b73737a8513086dd72211dd729e3f932747d72a135fc9fd3e32370d2d7d67809de726952e06907aa80afa4fbc49fcac7925751e38cdec372caa60cbc9161576baa3d84e122747fff90cd8eec80aab2452ab8e98690d672061f597dadae77f8666b509376e5792c83b4321754a176d714cad3e568618d573ea065b449203135e3ee3fdd6e2bc3f7cfb8306fa58404c6634ff78bb481f15813aab60532287e0bbbac95c68292efbd826db3dc995c2853829397d279ba83b85e253a6f4ddbad1bf59e920eb3f50f278770253cccd535ca5ae53267c5bc3f3e39c3adfeb8490dc46ec02e55687b22b8dccb0acf47dedac677641b5b2f06b6f11a0980704eac60661b537a507489938a53b6de72461eaac5f582716ddeb33394607b32a811b903335579e994d02368ff5d0aadd3476f7eaead08df514dd0eb38b644b789e8e68f03a2efe8e5b72ca1b295cda90307053d2a09962a8737c7ef77cf7e21db58085716965ec9f2e20fe448cbf82804a473d6618d15804a7ae7431a33856d4c904e9683cd16565b176b53be2241f07b1665ec38c2d5ed7b1b630d2f567fa0f7e412226d748b37fad7c1464f642d8a8b41bfa07dae7c19dd816996333e16787a3ad56f3e869055ef245d0ff2369501679b205d5ed93c2c6b1d419bba72d48f6e9f40b36cf9760eb6f2adef12adad9f1ea3954471a54c8967875c50b0402f22e818c656ccdec9e16b4850d4f0920623841f7153ea4a7131b8e287445a4363d4750c4287af074b5a967e84f5cd1f262f361fd97e4cf5b12c6d7b42e24aacf81ca1c150ebaae44bb3f488b595ecd65f1f437d22e7a20818f2ba03ae39d28dd84d84201df0cbf54ef46dd3a72fb36833c1d2e57965d1815b934caebdc56d19fa8118dafee9c15ea96b30d42e6fb210fa529962214d75fdf8492e678327d3ca4876f0412da50f6259873f5afadf33fda197a117678596c23475ecf8f24e62c15f55d2c726332f48addf68e0beef1f25abe42bf125bebe7b8c2fde27ab365ecdf2c9973ab65bd5bcd7312271b5ef850738e4756d890fcaa3de62d4bb54822eff0aa175c7c70be6637bc007b9792834a3a07669fa7980273ca59ccbe456664d450be8e183ffacafef09a625b54da4b6be1b90a23bd662214c254b78d7f870404d2f0bf42fdd51a3f754a69a38191a6790a3be574b3e9385e4643a4173289b5a2bba131a8191245827416a596146d0427aab1bce3a8702e4b7f9c142903ee47ed1ee638bf7f198ea525f2c70a39a991a458de2662835888407994613b781c4627bdc0f3c034916631fe7df54152cac2ea5eb1ccb2673b635e0ec15eb87fd9993c1297989e4d3f3592d4d15166c4c145d073bea1f348ebd8df1aac2aca594855a0a0d630c8f749c2960266e7e7a8c19de0b8774628871d2e96d9b76254cad2ba59b0e17c5bb49df4bef7a4d7dfa410295112cabd6c4d9db3e9a1bf4d4e5651828a7b0e6529a363e9206e917247684a7888ba7cad505f4fb770fda945fa0e607cd9d1ebd2ff63dfb12c19347426c93ce9e3c9c5c5ad2f3e7c6f25134ed6f7b94896fa19ca4dbaa28290e1e9b3f3d2229da697c65d0233286fffbf63dac6b6b2fd26d26f942b5ac9dbde41fc43c29f2f68851a9f7a4d5b5f6d65928964fad7e39c2dc4bc3925760f7624bdce7bda9c195aeafb50a909ef9f69ac5ca90ba6abe22a4cce05ec6d57b383282c1bb909882f77e51482fb212ddb4010c51df4fb6ee1749e53df661d6bbac677e4b61fbb73529dac746f87d3adf319def0774f6fb6f3d52784b8fa43d3da34aeb5ff0faa1ff6e23631b06465c197018e43b383c317476e8d4dc4b5d621c906150d3c7b7a57850e2d520e7bffc2e3d2dba5075a734351f60883ffd8a7518dd4db97419c3cb2f8556651ba748efc9cb8d60c9cd92badf2c896f8b0787b0ef3454bc2fc48c2f26907429905796e30d1bdba740431d1a7e1198c2550c650caed24fe1a06c281aa5b835b0136af4c4e3c73f1b6b3d2a0f7b151afea11b6a0753d5a1b43dbb24650a49e2ea55a6e5ec31df8d2a4e894a7aa4cd7cc7964d095748a7bb94a1125bf0458c4fb75dfcfa296b2b0336b1eda7b335caab4603bbdc1a2ee2d1c710a5181bab47be618d893037baf8478adcb0a11bb174d8f9fdca600a95418faa82a8863e21bdbb8058ff750e730046a15ed475ff6562cb57da7bdcf6fefee15368fabe32c6f46dfaa9a3c47c783b96b13f8ee0c3e9c1c9a7fd83d76f8f0ef6594adfc79fb259139c9a35c1522e712eb4bcfe7d7bebf12757697203c60002cb65d4b8b920cb4e93c4cc42797e3388a8d1f4b2ec544acec28a1ec91d38ef7f3efe786cf0a383ca897ae127fd551bd9ff0f0000ffff11fc8c36d23d0000", + "a42f6cfa87833f9ac66f4293e399925f": "1f8b08000000000000ffbc55df8fdb44107e8eff8a21aa68827cce51fa80824ee27aeda985b68426074808557bf6d8d9d6d95d66d7cd1ddbfddfd1ae9d1fb6e290a2c2bd5c323b33df3733df4caccd30e70261c8147f5ba98c194c0a9998952a87ce459309dc04a3b5c9dc50959ad76c85ce355660a0b9284a04c254520639c915589b2cd86d898dabf19f810b304bf46f4f9961b74c6f9eb3e6abc7fa7e5ead568ceeb7e9c526b10f0f79dac943d053d4297165b814ff15af052b34747a101e2ed314950178a7a5088619c9ac4ab1b1584b4c14080f728e6506d30ba829bc10b94cae6486d7deae9db31678deb82533e2be0b3fe2fd2515355848cd88ad00acedf503e74031b3dcf399fffcf215538a8b2299af5951202dee55703454210c779e57b2ac56e2151a9634b986d6a2c83cb9f02f6a9168ebe15666f7deb89219963396be6745d3c8a4eb5ae33683ea3ed6f31a36624853d41a1e9d9f8395b7ef3035ee348c107ecd785911c2e34e3853bc1dfc7cb1983d2392d4097bfc29616f64659060d262021fc1c897728de49bf8b9a460c1dab37e0d9c3907ae3d39f85d55e60fcf13d3a58487d62ee40ff39f5eef537821b46122453877ee217c84a5310a66370b2f91078946fa80344f97e8294c27939df1b9d4c623f11c04c2c63a9364e0db73e7a63b4f6fdb72fa5f3ab515f7357b8f7ec1c1755a3304f8edec52f1b31b8d34ad34d2d78fbe89f24aa4872fdf681d3a93bc41ada4d0f82b71831403c1578dfdcf0ab58941e9e048411749581b3d061b0d5273e76be2821bce4afe175e4961f0ce8c687cfabd888ed70ece45d1c0dafedec480441ee08053009931d27e1a23a5e3a081de54c37134e079c8f7c505085efa2a0784a622111664949abb18d63150401d6f5fa3812fa475633ceb1e5d78b65f9eb4ffd66d194d2f8090655eed238aa137f9f8bb130bb036c9986cc33f237ac2b266c6adea2200d831e9454f9e602e09e7ec038eba4c20fcfd6b360050d3e8079f112a46381a9f4cf7175672bf1ca39e7b5cafcee7af641bde94b537e50da56601ebd414a4bbffb33f8c4fa7fc29323ea2db18ded6db7671b0c8c367c663f99c27de03f8c77b7068d177d7a0b385fdc51cdaf523530d7d02803d9fba5b6b7f37c3566ebc8f406eaf4414fd1d0000ffff948e6509b20a0000", + "abfb948144ce2666cf818384c00cc754": "1f8b08000000000000ff84924d6bdb401086effb2b5ee24b0c967a2f6d21d8b49796b46e028510a2b176b45ebada11da954d1af2dfcb4af2471c83afa3679e7967b40fa5d435fbf8f8119fbee0fa6e6d036c00c1b0e796226b54d6311ac71418ac6d4490ae2d19d623ff10b96e1c450e5375a2ba710eb5685bd992a2158fad750e2b8693106778960e6bda3056cc1e5b6a3deb778ea9529309e6cbfb051637b7f8daf932a9822a0cfb6230ee824293a0da11b015e29a5164d90ec8344991966b2804d688825e93e36ecd2845334af22961d98528b5fdc71a5b1bd73b9126f9dc3b2a4726b5078efd374f35438681294543e55f329c2b353fb21e2e6a3de2569266235d1b66f8fdebfb1fac9ea1b9a2ce4590d7f876bbfc7118df8f4ccb485b174aa97de4d16ac5cf4eee71b84525adcaf0b0e4d85ade586fd07229ad0e83bf2163bd79bc9e8c00673fc9b0ce9603343dea651042c365faaba3e4b86fa8f40df39653083a5043e598b96ff40933548e99053b7ecb0c953d935ec83e5d1f1c637055148511f5f2b27ba4b8d2244fe9844f862339971bc963ddb82be4afaf097f6b1b465cd09c778ceb5f3690d6e70de3712e1bba1e3c2f19af7759a27bf0bde47f000000ffffa7724c4920040000", + "ac60daf3c3958d476b98234112b3896c": "1f8b08000000000000ffcc5a6d6fdb3812fe2cfd8a59a1b7900a454eda5c5078d7c0a54dd3e6b0dbcde565ef8020c83212e57023933a8a4a9afafcdf0f33a464d95652a72fc1e64b2c726638cf70663443aa64e9351b73984e13568a43fbf4814df86ce6fb62522a6d20f4bd2055d2f08f26f0bd80cb5465428e077f564ae2403ea171a10642d54614f820b9195c1953e2efcae854c91bfc69c484e3ff5a562cc75f17108c85b9aa2f93544d0615334a8bc15825752db2c0f7bd603a4d32a6f6ff75f861360becf34465bc68467caf2b602ce4c6584991e2af6071eecfba105c56e9d544645639ad6ac375e047be7fc334843e00c0058c00d54c8e79aa64068301383b744773a5a196d752dd4aa82bb4a090c04ae17ba9aeb3b7322b9590a682092bcf2aa3851c9f3f7fa3eb6cf7f000971b0cc03d41c6ab548b4b5e81e6ffad79652a60374c14ecb2e0b48cc15f15ca37571c3266d825abb86fee4ade0aa98cae530353dfc3bd83ce9f5dbc33309d42f246c95c8c937f1efff6e1848d21906cc20398cd7cef8de6ccf0d3a35f1ec39e12d345ad0b2be4881b2df80dff4d5a496b09d18ee942c91e51bf327987b21e276ac2e4dd5cd669993d1e5b4d4c73217bbce08f169211d35cc83e37e9d5dede2f8d98b584e4c8749165c55cce09bac681cc95637bde44c742202773b23eb9e45f1742e68a84ce7c72cf4336e6d911afeac2a067daffe88e251bf30ade71b35b14cd4462bd718167ee9238dc2213d2ec6c3f8012c55b70c8762c3ef1b5d92e2af1c9f1ee31c3ba4b729db3944f67fdbbc30c2336243e518615473c553ac398330f6e8941e20b6da91beb0d06f0fee4e4f0add64a03ffc82665e1a2753e3c37ce1b9571a724fefb0393ea30585a6c5ff022a3c80e529511c6a0113d0cb63737833f7cef575e512272cef45949134b1f2cc8aa0c337505972c6bd251f047e31256cc11254d48e9a1d61c309326ef99cc0aaec1a6543faf65ba401f468b7453dfb3a4301cc13c17271ff86d18f9de74aa991c737846ce89fac6f00ca193170f479098c6a7abd9ccea329db614c931d9d7babf53c02e10f9762fb9ccd04fdcaaefde9e84c120cb8ac190e9f1c15e10a383ef6545b44ad2ceb5491e89b8a9b56cd02fd8eb9d902b261b0bd963a996d2e98a64c9010d55115aec4bacf24ec8350de3ad6195374ade70fdbeddaf13f54ec8d0d9aadf580fb1cc4dd8dab063bc5536b8d5acecba8b7527308a6ce59c6bbf96696bd79eb5f35509d1323f39a8dd549414a6f01c29ded8328876c3c39aa1649a4daaaec0431af13defa2e01237a5e0324cdd70e47b9ec881a64623d824399e133202290adff366c08b8a2f4d85e1f3b32df8f967d8da3c5f5e2d0a6d3d951c2aca75e18fcd7a679be751149d0d71c17314edfb9e978769f26f2d0cd731a4c9910df3d841897ccfbe03ac05851446b0427ce20e7aa8e13945b2e38b204ccd4770f5e18281440eeef1a095a2e1078249e89071d44313a23776ac60e974233c241d9bed49cd47d297d4fd9d1502dfd74eb93ed562584210db0acbe5cd18586a8492309d3eeb7b97eed26c049cf2b845e904b9c5d50246a7e532096a1683766b378b12b016197ac3ccb7af8e657ef251eb99df17a22d8d5710f6e9e3545dddcfb9b2eb398f5db3c777fa45fbadb76aceb203b9e2a3ceb75bf837b69c8820a4ffb1454a3e5b62c4ea645fe9c9efaca879489c116d7389211b04dd6dbd896dcc7676cd753b1880154765ca18b63663d8d98e703749cf5b8c3e7c1df7efde2d38edab52c98a37b17ad3ad64485bac5c62b8409df16d9ffcca7475c58af026f2bddbe43d6719be7993636ec280a44bb3717257f220868095652152865b4d9ddc4f905ea1ca66549b7ce355d02782a5577c03056985a93d906a23c5314b4c7a86a8d312d223755bede6394f0dcfc27bc0e90e4db33d0f20ec92ff65c0a2fbd1aeaef8dfd2d6b5c9e3b2cec9fb109f6d9e9323ceb2dda20875f25a6577d6f3906235a770ad173c8f0c742a27ce4424fb269a27474b4605e8a3fc6e050daa330f1957320e479bbe57dd0a935e11c1d4f75256d1c942c6d4628679abf50765f6552db3a1ef35126c21981cd3d36b96b9f51e96732a31b39d28e71868feaf16492ddf3e1305ff6af50e64c5b5f936b26cebf96d64bd6699ad10d61194f19cd585598774e67bb6a66f7b1d74586c7286b6d14586d8f79a6e6588be92589f8c62ebcec75cda30baa53724c7177fc6f147d454871ff8ed627f450ede8c927777ebb5d82d8c51b8ecbe5fa92e1627d459858eb855d3455d8979e65448f32a2c7b0ac518aef99d7b334510d648d87d2189ecd890866595bcbec30d0caf39a585accd1c2baf1c62b2af9d570f65105a2d14591437c9e49e99d91296ad9d75c16ced7c4b345b3b9f83b3b5732f9eeed432a0972fd605f4f2c5b704f4f2c5e700bd7c712fa0eed432a09ded75012d16405f0b08cb9c8701ed6cdf0ba83bd5054465d4e7d134d1fd245036b6562008e2efd77fade87fd2e0ef07704fd01fac1bf34f1cf2fd20ee8bf4837503fd89e3bc1fc57de17db06e747ff3e0fefba323225b55ff98d45b47ffa65f5b0340bb1ee96a3be74e423c3dd87b8205eddf60e00e084154c0a8efa56edb281873e33a71217345c7e9ac1da0eb9de934d973373cb6589b5ff80c06f08fe37a3261fa0e17f86241707907749e47124fd8b882f68280860ef63af37b743d551282ef066b374d7969803a181a38d42aab53de1da10ede2a0625335774626e74cd211059e0ac93a6bcaae0c5e6264cd5e59f3c35b3be9bcda4b9894326aca76bcd61fb734c6d89b8c4b6bd261b049db62786ec12ecc501d94b642095811ce760c3b56a1534e4549fd25a732a72520bdc1d30d359ed944c3483b33137e7388b4e0fc174fa2ca9b8bee1fa38bde2a8d97030980fbe579599cda6539183e4d08c1e2a6de0d5e66c369c53e21852d25931adf8f1ee5300ffd9d82dc5c669c5f5b0aeb8de7af1d2c69ff5997bbbfe95839a9e20a540c4921e9be4d5f3c8c8f73deb160b611ad8336b9c75196b38ea3b1fa41e23b067d5fdd767cd6d5df4537fe26b7b8e189a8e4547ed6cd3a2e356c7a0ae518d853be23352f49cd4fc415d3f24389f18db7ce4615053e38be1970b99d9701bc2dfaa20b64112c1b20e0ba74e562469e5da95366fcd6faf7b239d41212a032a872c2b80b7c40fdd5aaf9fd6aaef21bf27c9ade6b5a787bd46dafba294d649074f97063e97025af37eef5cf01788f6d5485b88f8f9892142082da685cf46463061d73cecf97a0411de300d665242fb4589bb9feeb91d6c2f0497ae07e9961c658ce04727052122d790bca415329b05b1efcd3f0c19423068e697ae14e17f60d42fea966bc7b4f821c89770baef3e1ec3da7ee6f118a6f6b38ec730753ee340367afbae580efdc14ccaf94718317d6274cfddcb3b6e5ac270791fa22537395b263887113a863fbfcbc5ccfeff000000ffffce582ff2e4250000", + "ad09206b692edbb5c2364f1b69afbe76": "1f8b08000000000000ffec564f6fdb3614bfeb533ca80dd214a995a4dd0e1174c8d22d08860c469b9d8ac0a0a527958b44aa2495c525f8dd0792b224c7992c67c34ef3c5e2e3fbf37bff29574c91474820ac0557fc7d1807414dd27b5220683dfb4814591289bf910a8d89035ad55c28080bce8b122327b36cf248d10aa522553d73a470c049d5d766394b791515bce0bd883db983fbeae48280d78a72066f3a8659cdeba6240a17a42c8f2001251a8cd77c055fac0127106a3dbbe42ca7c5ec866758cefd8d871fc6cfe8c66f0d299f553c602ab85482b262932fa8504a6bf713caa654a0030000644d05c251166a55634bb6bf9f85e0021238893bd2e7264d514a48e0d4134de0fe860a529e59df4ee1cb0052da48c52b462ab4800e2f798687c743cc1517a84821ddf51f92b3f3d02a0ae1b12ad79fd9b2fd3abcf3d6bd9bb0762c81b331a3379e6da7dd565d6bba3b59ebeb830560823ea436a5b811524f711159a8f1a082d620082b105e2bb22c5dfa8fdbef6b9673384f60d69d2418d38946d1fc5e693d609e7d56a24995d501c640025a0f2eaf59868fc6c45abf036459aba94de226649ad9787a94cb95420919510412786f5d97281e688af093956119e8e0654e883a852b54176539e2c59b9d1c9ff05b83521d8140d50826618a88ac399378140f81ec40b12f84fdec5f64d998fdf1eb6dfbbbf8b7ecff5e6744e118849d1cdb2826886c01f988258e03d9c9b10d64824807a4ef0f13bca0b2a3081ce1bceb3e3fd2bb7931d6b27e563c37d5ddffa26102535e30fa1d333bb572524a8c770adde36a0f7e49bf634ad2af38901804821ec3eb9c629959e7079ed8b9fe8ba5770d1e4570c9cba6622e164e66e60937a888759db2a2e5b551f11cf376eddeae6ab421d9ba70467c50dd8c83a70c732e8d19db06bdce2b3ed036b21db4069429a9b117bce2375ce02d29a4318777f146d974c99e3abddacc53a67efc00b55f68ed9aed692e33fd646e372017198af56cdec7b0aff8d672fb30f0cbbc372eb046a230db5c25bd2263d6abe1ec295a0fe9790f3e0c2f1457a45cd8c216997d5efc103f0de1a4f875499d73694b53a282133066cfcad51a680edbd57a2de7825644ac7ec59567dbb04659fa2f5472a772b47ec3bfa9dfb0ab420770508f536339a524a654423fed262daed6e04ecda71b253e6dc7fd7367fa4a15fc4f7991e798da8e78da7153f7e3cb9c9dbc4aff337fa7aee1ff5b73526b4e7ea28c27b84fdc82f499732d69d3e0cdda5ff476b0d3ef71750caf1f48d9a07bd2b41b5c6ba805652a87f0e0d5bbb39387d0b1da97cac6e59783db3b387865afbd8ef6cfe5c2fb1c04f0360afe0a0000ffff5a6f5d1ec40f0000", + "af968bb57cf33c0a3620f64271ceb348": "1f8b08000000000000ffc4556d6fe34410fe1cff8ac1ba0f09729c72dc07145489aabd700777bdd084170910dad86367aff6ae991d370d8bff3bda8df3aa841451c127b7f3f2cc33f3cc6cac4d31930a211495fc2d478e731d73591561d30483017c8d6c6d3c61aa13be1525360d480302b25a252cb502d69023830023555e2010269a52c84897c073046be3a99815d826b3fb1ba45afb6e048b99306b77dafeeb4a7f35a9cb52d0d271d887f51887b4664bb09684ca115e64128b148697b0aafd56653abed6298e9cdd348db520b3362c1e937465bec5e515e52d98b527bde0dda85207e33f9eec54e4e69053f06c845c85b7376768595b91540ce12f2adc906b3fe0106ed024242bafdbff29ec559260c5001f8d56de30269dd609b696679dda589028e19ca095e0f94ecce4bb77ef45554995c79385c873a4e9b2f2814c3542b88dbcd6455daaf7c8226eb1c2b3324cea244163e0e5c505583dfb8809bb958a4b9d623116c9bdc8dbb1c5870be5d24742163521bc3a481795dc4f7e339d8e5f13693a487bf5c434085f13dd6a1ee95aa511a4b3cd0e68029982d20c99f3411f08b92665601d0e0ec5d7da46a1030d3d993b5d33120cf6fa833f81f53bbd4072f37aae1db0606dffb4f8fda68143917ece917f753ce7cc9553fb456c901e9026c91c1de87030d81adf68c32e5766a010d6d6b126862f2e9a66b88d74b64d95ffa4f7cd9e8ec43dba9384c38d0ce1a7fe5525fbdf1ba4616d903e7bf979e01e81232f4477e12712dfa1a9b432f82349468a80e0d3d6fe7b8d8623a88c0f24af72ec4fd0f4c0069d841f5d3f524996a2907fe0b5568c8fdca5ded3cf3ef8fbbea16982a063ede9b9446e155d812341bec85890714a742b1379fd4f4285bda023338ff7c9252859b82e3bab6bf047d44df831824504e4abf636dea0e31ad9fb1dd9400d2fe10751c85430b6335dc19067b3fbee86d18997e30e99243ee00785bd2f77f8fd137a416775f03bf38a53a1f70b1d591387f96435e1ac9ac764da6ab93b4377cdff4a90a0b3703bfdcde4c3ed36cecfa0176ce40afe0a0000ffffb634365635090000", + "b05c10f88a23c4c4dd1fcda8f80e1d5d": "1f8b08000000000000ffb457cd6edbb8165e5f3f052b2081d4ebd2dd74511759a46ed2164dd2dcb8c5bd406e5030d2914c842235e451628f6160de6176b399ed3cd73cc13cc2803fb2e41f65900e264020e9f03bbffcce215db1f48e1540964b3a5132e7057dafabf4d24b2f5809abd560c0cb4a6924f1801042a25449843946e14b2f2a5423146653307ff5f27590e46503e66ac4558d5c846fa18af026a1c1a8c690ae25f2124619dcd64534f0c2e592664c9dfee7f262b58ad6a25265201aa197161c67f52d4d55392a7495be80549985412847857ae12425cf32010f4c43f4749511ab71f63d7a42150597857deada7c8f050da9ba07bdf81e5d64c51e9f86ebba3220b78252aa10400b25982ca8d285b3ffe8e22855193cae3f4a3564209133f11740830c6d30c96030c86b99120d9686275a2b1d97608ce5ad41cd653124a0b5fd573a214b677534220624ea059db00a6b0d27f3142ae44ac67989d459c9e3e8c08cc9c17d3424c1a0b39424ce845005bdd45c621e477ffcfacb6fe4c090df7ffa790f7eb00a21c6863c9f82be079d90e31a67a7b54c3fdf83d63c8338c53909cd639bcd3e8724af8538079ca9cc765bc82721f10e703b3b26847a80ec1bc8ac525ca221e32352b2eada9bb8b9554aacc1ff8a46b72cbd0399d1b7fe399a6860085f0de8684c08415dc3b081af06cd1bcfbda3215177d6c18ed7ebcd046ede7808393cb41a6d001ab0d692a4381f12c945ebc9be6c2fda7a868a564cf2f4ca533eae0897083a67292c57892f49f0d12587dde0691576eed21a2033565520211b9303130d49953847bbfbecd1aa4e2d4dd7e04d581c4d91a577a8590a24d7aaf4418ec9ff6544fe1db63076638b3a649c0446853c3db31b0eba9ea11f6d62928921899a579f5fd4b2ebaa969e5c71c383d4cd6cbb31678a657e82c7de977148bb74010f5eed54ab3260bca2476690830e783a11c0645dc54997021e4da7aea1de4d2fc8b32312459ddd0dadf651728c9bb6131c247e762d6796ef8c1cef9859255b84b37d3f5dc76dbfe83af8b86477e05f83d126094aa937d49c041bc717bd82821b041d881facb5ae8621f590b1e0c68f93f1119180f4cc2acb38c2b48a864d0a5e789c65da7be6b9537976645915ead270e6942113791ce58c0bc8082aeb024186c1e3e687c5861a74d9186a619069848c28e909f97810a1725e97ba472cb849de3c25445792dd081b26f6ed05f1424fb2845cdfb83dec228367d44c1adbb193f6385897bd00fcb2677d83b44fab7801483a074f7fe90b4fbd437f12d2332769ad7fae711c5e95a153cc548dc3f5eaa9d22543043d26121ee260e30bcc71bd92b4e80f4add196fcd96b3819fc13d08b7d6c13ae1b849d0c2ded9f1e2c4c39042bb7862fbcba611b017f0e044b14f30103ddc23c2065ab8dfae6fcd0583faa536fbcdd5ff729c85c1bcf8c06426ec80ee4ceba41b582d995e781eb8f166cf62a53b5ee9d7bd882de729ceed15a6071c6f606c7ca71c447632b7a37a677da232780ff20a7ea8c1e02632e9d4de29854af6f8ed947d5bd1de13fbd4ec0934eca96e8fcae6a6d9c937ec32381c307bfa6eb390f49ccdaf20bd3f37c594ff08a1b3acf4dcdf6bacf4ed02c16c0568215390d9d3156d239bf8f9bec6df2e427b61759bd829c564c6b88c7bc8d456a3cfd21435b0b26b6a0ddfa15817fb8f736c9b677dcef7136d936c7dba9b6cdb655c9f5e1fe5ecdf9a7dcdc1d03bbaf3edb3217ede19c8749fd2d69db702d013d0b83e2650d801cdb2ffbd7af9fa132c2e19d7d64fa0bd87b6df9f60f1f8c9117a4772e13c74db2a651b8efd6f587a052c3be5029cd3c9b185fc4d0f974a09ebc0fe78b653bb91852b5d0ba2c7f63a9bd94f636f759727e7b15ff5484cad996e812fe0e1cbd9343eb445f35bd0c665f578ce538660c6e4fac6615ad9b2a9fcaadd787fbb9b1cfb03ac0d2cf021d918478798fa7bfd6af067000000ffffe07f4bfb70100000", + "b90aee21f6dfc810704f9344330644a8": "1f8b08000000000000ffb4554f6fdcb613bdf3530ce21c62612dfd8e3f186d01c7765d037163785de41004582e399226a6382aff5876547df78294e485db1c0a14ddcb8ad4db37f3de3c723f2bee3ab4e1cb29fcf013bcbb6fc9037990d0a04527036aa8c920f406a547404d013c47a710c8425905ec7a2303fa63f117aa3363a0634d352919882d0c640cec110cfbb081678ed0ca47843da285413a8bfa6f1cc7e2e8e808b6b2eb0dc2f9dd6f1770767b0d353b082dc23896fe7773ffdce334819641ee538bf3ee395bbb0d6e9a84383a82cba74c21ee5b84def1575461567977b9bdafa301d953a6954aa1f7649b7f5ea0cc156e17d69fc9a0cf750e06ae15b3018a6d9064337fcdc6f090aa29d608d16a9c95edca0ae79677a0c9a10aec9e4b51c08d7cc0340f015040f4987a5ff7b200b23e4863b20266e3611fc9e8b45cbbc0a04ab8f63e22ec3af9803b080c9a7c6fe433b4687a5140d950a0c6b29b0b3514605ee61a0daf64a28086cb8ef50ce334f068103c86d86fa097dec3eee464dedd416d6493193c86b09abcf6b5fc54632da309b05b0c2815772f668802ee2ecf2e6e2ecb6e2eb9daee50ea0e4501b2ef2b8fee115dd549b265c319b744e88a2c6cf3db0d0c145af0836c1a4cb6510069352cf9f3998aaa6225484101e5a2ce03746c0cba04d2920fa08bb38f5047ab52dc7d12f648d9fa9cdc395ad9ec2549a248a2d11c08b6c145153c38ec1d7ab4d924098e876c1b4ad51e7218e4dea0c859cbdda50ccfd2210632f40d7d363889ae9dec7060f7b081ab8f7737a0f7199e146f876528877e575734ab98dcc8e75714f0f98aec97776d08bd3fadaa86421bf7793e0dd993862da9f4749c9089b5e1ef82333be7af0cbd62d77d17f895ecb736560dbbee381fb2f74b96c56eb72bf7d2b72205189674a45df1299f3187322048d89395ee391da73dd9438a12d75db4f615d52b4ce6ca97613eb44646abdaece680fbd565b6308e6fcb79f50bfb304de34835588475f7965d80ffff6f9a4e0fc8b4979068f5723d6d67bff32857ef539d48eb75314ff2d53c5eaec1e4dcd2d206528c8de76598e8415a201bd04915e811e7e75a2a4c41c427748a52945a7cc9c323e1000e7d34c197e2d0f656b5d8e1349d56d5bf565d2d2a2bb21a9fca3674661e4aca7174c667713506d5a63ca6c80b318e4eda06e16d0efeafb2c30dbc4d17e7b5ad194e7f8432bf482b3f4da280ffa8f7717ca95ace0736f5027f40e00f3ca04b4840ab6199ee7a475dbdfc215c609064bc18c74eba07cd833d678def0dab077893d3f806de95e76c6b6acaf34e7f208b9f9cec7bd4c789741cab4214557a5c3e7f060000ffffbe479ff4c7070000", + "b9644b6bd09343d1b0424958ea55169e": "1f8b08000000000000ff8c90418bdb301085cfd6af98e6941447a1507a68c9216d52e8a59466ef61ac197bc5cad2228fb301a1ffbe287660097bd8933d33ef8dbe372911b7d6332c08c3a90bb13f2191ee8296fed92d72569b0dec8852d24789a391bfd873ce60074068476fc4060f1200890061b0be730c914d8854da29e9076c1ccf3629ff603dc82397d91e051b1c6e639acbf228c71822ace110e31f3f7094df681d530dd4c080670683ce417b6daa42f20ee6d2c8054cf0c217d1bfa66f7da3fb9c92ee03b1fb87e609bb9941dfad58c132f2303af9a0be86ffe165d8b52d1b6102ebe5dbd7ba849902ad2029002821be6f61ff531ff1cccb8968a52adb5ea55ba0461f8afec7b5feb4056f1d2455156f6419a32f9d1ad65feafb0ba92a2b55cda26973399a7ecb5517b7ca2a25f694b37a0d0000ffff4833476a07020000", + "c155276ed69201c090709d088434e28e": "1f8b08000000000000ffe4594d6fdb3813beeb57ccab368514b8f28b62b107033eb86e13146dd36cd29e8ac265a491424422bd24edd625f4df17fc906da58ea5200eb0c8fa22911ccdf7f350a6e624bd210582d6c994b39c16c9a998a7e76ef68c5458d74110d06ace85822800000853ce14fe54a11be5557347f990f285a2a51f97bcf0775c8681bbd33ac9083ff9ebfcacaec3f554c5332c9b49375bf0f94d9150365c91aa4c96afc2200e82e1102e512c51807417caa4222cc540ade6b85e5362912ad081713dd01a046105c27345ae4a1bd3c0dfbf633987d11892f548828d773884535493b2d47a4b34b9b48a8d06a86ba012085c9c4fa14275cd33501c0a544040963445e039084cb9c82219432e786572fcb971a1aec1ea05ca405d9bfc3f4fde1045ae886cd6333f0cf2054b219270ece28bbb7d8b7c89c05f4d6dcd750002ff5ea054706c0cdab4b76a9d74aabe700a62881ea042ce3993380014828b18b4abb940b928d5001457a4bce03fa4153005b2e9c908df6d68a79d4d12d64127e7a4c0f6e892feda9af9243214b1f585e6d6f6ffc6c06809dace791fadefc6ab170f4d80beb0118feed4e4d6d7627ba5666f4d3207f011a52405ce4690572ab99c0bca541e8547cbd0a633aeebad60d442b0754c0313ab5dacd705f9b7067bb9485394b21e8029e3e856899bd28e7614dba06cb4eeb5cfb6d72c4ee50828537ffe11adfb2f863ab8334f7543135ab7da6e0f2f505694e859c1518283fee168e1b138e1a184f00036f01470170374c35f6bcfff39c532b37c3fe5199e9891ac6bd0daa0ddad26e7825644acdee36a228a86e99b26d2da4b9d72fbb43334d01a5956d7f6022febfa200cf2dfa18f3e91d62d85161230f62dd25e72d18c0f4a325d2430c9b21e2440b2ec371250fc70f0b75e3c02fcf7ebed867fd7f3fbe12ff80f39c9734c1566fbc9c0dae9fd2e60d2fa70a0f68bed2900b567a4f7052adc6df121506d6c6c358f71636bd885e92ff38c28ec016b27b87b7b3f18b61b6f1e01de9daabb11de43c5a140de98eac2f9baf70fb7fb9b62f579056801ef9064d33bcd4f816ffa07fb6428e70d96d88b72322bf8c894d378f30894d3a9ba9b727aa8b883727a534d63e209febfe89dbda7c024f70876ab3746b73ae59e89809ee4b1ffbf85d62fc1ed285b679fee9cb639014ded682188a29c6d1f833662cd61a8b1f3814a856c926502cc0265057c5f91aa1c85a55d9971167eb7920d4d7cb978774b32bb9a2d04f5621fc94f5fcd4bfa0b5faf144aa04c35b215f939ab7cb525fd85b32b23e19ff56ea250b72cb8c866290ad5127d8fabdb6e7bd11b5c79c9e9c42a34bfb6644a1a858e6c3f7092f914959c643bd3e91835a725c29c5366185d7137f97a327dfff6eccd6cfae9ece4dd29205bc292086a1acc51e9467f14b72be24ae10c9d13756d7a974bf34f18d9320adb9ac3b89156c836a721ee9c3db940929dd012a38db6fde450f22239218a9479b49eb3c7ed169a361326674eddae48c747720406a9adc737e6dbf328c46622de06aeb7301ab772e3f772e3fa18ecc1ff17561121af49197dfd669a27f2998807f0c2e9e81db08f714e84dcc4e882b1b4e3dddbc2a313f10d73863f9cab278257be94a940ffeeefbac7268cb44272ddb0e3e128cd8b9664dcecbd9bb763ebc50b37abbd7fce9b6989842de68d6181922f448af2f77ddc4b46b1ff20323cdefa247283ab013c5f92726129340147485a836365088f9ebd7cf5ff656845cd5ed55afc7af4f91b1c3d33cb4e87bf98cdca1097fd9a02c7c3e09f000000ffffae97e9f8671a0000", + "ca5b109049f53ac110406fdaadb1f9a4": "1f8b08000000000000ffbc534d6fd43010bde7573c2a84ba287585843880f650b65d8490aa8a9673e5c4e360e178568e038d2cff77e4c40b4b0169b970723c1f6fde7b9ec4a8481b47385192ef3bf6fdfdb8533290e858847e674f52aacecff1690ec6286e831fdb702d7b4a096680841e5d1b0c3b04c6d20b89c1b8ce123cb5ec15b4e71e318a3bd9582abd217fc33884cf94739732c8460efbb42ad73c9cbc678f335c797fcd61cba3533554f3039d3d8c82e3009d738f5a16ea5b692c2d6d3d0539e3a3e5dd043d67c01eaa11b7f22ba195d6967095d5fd59fd691b1ed0b20bf410c466396bc4e8a5eb084fb521abf07a8d45f57ba7596c58d136c7879410238c2e75e2c69b5efae9034d17becbf8982bfe963d4cbee319f26eda514a758ce4544af381b394961751781ea3e85991bd91ed17d9159bc5234d2b9c7a1a461b8eacaff191bf0d175a539b8718175ebdacb3f9cb03ac10ab0a40c15ce3d951a831e526d564f72edf8aadf14328bceaffe5ef6f46ae3227a36771ebbc2a5759e19bf9fe640d672c622e99e586d1bb1caa71f6a23edcdb5c91aa5fa036bc9bf6eaca0fa456c7e21e2ef74f6cd52c14f33617e823e8fffb9c52b827af1a71b80e7546a852559cacbe070000ffff3d217dff6c040000", + "d3ff6e01dc99201cdf5c9c6f1591ed79": "1f8b08000000000000ffec544d4f1b3d103e935f31efea45daad1643a5aa07a41c523eaab4b4a209c74ac859cf6ead3a76623b90c8f27faffc912d0a14384655b998cce733cfccb3ce316cb944281855b76629d6b79431d22962e70b51783f383e861163ce91a9d5abc67ea573f41eb8010aed4a36962b095601650c28182e3b81a0b1519a05b373e486ce04e6341bfe072ec1fec0e03ba796cea8d9ba59fe199aa2d64ac3115c683d9606b5bda45c20ab81cdc0d03b84860a016d340e02922760968d5d43a3a4c5b52567e9adb7e8de3847e68aa1b8a6cd4fda650c64a74405a546b312f695f1354cd4bd19b52d3616197069dfbfabc33069a00adce080b770fe819c6b7e873a6495150c87502c94b19d46538498038d76a565e075a7c3750e2ba1b1ebed34d5e0c0030a83cfe73eca19f84120fbcf5df672d3cf90b2971b0700304b01a743289c233c4e395d0aef8bde370c3731c11997ac344b510da287b770a5ba0e35fc3704c9452e16fe92bd8c0b8d09c1e8539a56f726748b60cab7d5832eeddc92e9427369dbb23834906e85cb0e0e4d112bd511e4b5e673aa379f71633e292e91795fa43a6c3649fc9c46ccdf56a83713759fd9ee01d5e09ca6b243f8bfe52858084f273296ad22678ae165b01befc1b930a95436c79233255673f9052d2563335a5935968dc6394a0bdee77d12e772f447152be57d388792791f1f38f21e12ecb091610f9e4c1b2acb3d4198979d659b72ebb8c478487f8b48ff89f309719ee462dbc34ce892b42ed6d8ecbbac781b013f62201fb3e4a2869374c60f38e0ac9fb357e4153536ddd69895554f55bdabdc871b2d337bafe624519207fcfd8d1be92e8cf9220b30845dc7cd66116e9bb3cab9f85d85e2bb2c3251fdf3a2c2b771bf020000ffffaa617d0192090000", + "dc7f7462bf5ebe7b105f56044bb1471b": "1f8b08000000000000ff94565d6fdb36147dae7ec585b0015291395bdbed21401eba182db2b5a9d1a47d09028316af6cce122990943343d07f1ff825d1f1c75c3d4997e71cdd7b79f8d190624d96085d37a905c56ae6beef488d7d9f24ac6e84d49096b54e93e4f212de179a090e375fbf4d81d87795e86d83618071fdf64d926c88842c0100b8bc841b8944a387c3f30a39482c84a4c0141476905aac075e7bb1ecd73c091a5f514b861bfcc277854824253d864229450d7461c9317350fe6d5ff933e1db0339662a0722f17fc42d79507f33aa7f6be8f1da5b3b4881f1a0e7e183d2db51698a151e55a2763056f2f041e9dda8f40175b19a4e3fed689526c8f81228ad80f152ecd4395006bddfbd9e268b0a15d4a479545a32be7c7afd6042b7bc14499e2449d9f20218673acb01ba98730d35596376909a5b60d781247c89f093a518575ef8770382ab6b980c5f0afa3e927f4cbb6ea4f57dfa04d7b01b1a13753ffb0590d3be4f7a6bf57b9b13505485640b04bd0add773565ccf722f7d02c0757872f533d335dac80f9cf8228f416bfb201f348d4ade490ba783a0223dbeea3a3c1031463c6e31c331a919ce3f6e12e1e019da1f6812e1e018357f6a161c4812996a4adf41eacacf5e4be918ceb324b5bbee6e299fbc65fc1cf34bd309b4cc6726791305b9fcdee65465096a440a851af0455500a099468b230a9292ddb422b58224769b71dbb77bde4baf97a084619e6d586ffc45248bc271b13472985b4e199c48648cc5c56df49c54cff32bfc4825146fce0bd2c8768c5b86286efc17d0a88f3b559e2c689a12657c14870254297bc32a95b1b3a4ffaa7eb60722378c99693bfeebfdc3d9025a49cd4989ad5f3ea46546dcd153c3ebd76af56f310a770484b73494784386b077c99b62bc6251f11c7ec6f39c57f61e7615c1fab8019b42be1a3f8c0b0a2a1faa80387884b312f0d7c3ef6c00b3c98d47e40c094e204ccd88b1c4e08fca304dfcb612685168bb68c644e48341e7d5426aae57c99b1a0203313ea8cb97821d30815bc55d7e86867f4b5706847bd131ad5ae194e50b9417b62e482338843e3eedaaab2ab6d7c164254c7dca7e6dc131c7dea5d6efaee5338f1dbb0266cc7a3d98b556612b5de9eafd258bcd3b95533c96a22b77fe3f6ac621a079faf715078df6a71cb0b89610a4f2b90568b390bf841444ab285b37b4a0c3cde97e22579da3b061d19d8d13f215fead568e03fde1dfeb5a75716eea7c29d55df49d59eb190fcc936df1878b4437e443d6ed4e14219eddde6acf2dbbcbb62c484cc18c3ff35876c3c332e6c1b737f6a6d487501626dae46e12264884f4974c27a4cd227ff050000fffff0e408ccff0b0000", + "dfd6e2ff6259b2eba9e5291c25aeb460": "1f8b08000000000000ffbc924f6fd33018c6cfcda7788838b428f338200e937a18db8a10689ada71439a9cf84db070ecd671582bcbdf1d394eabaa400512e2e4e4fdebe7f7d87b41b5d4845c70f3d46dd4f6a95f0bee883586b976adf210b2cb4b7c1e82deb395b37de5ee794b214076e0a87b5d3969349c41ea05472775a308962a63056a6b5a78cf1e79a968ec75f11b52c37da598bbe58e97bcdba7c5f81b9793b5c6e20277d6de1bb730bd16054479986e2ca480360e75cc9db4a4ab2fb85494da5a727c988fcaac77a8870c8c8528d98a7f27545ca9319c4575bf563faddc1695d18eb68edda4b380f796eb86f0b296a404aee648aa3fe8dab01b236811e35d08f01eb21eebd883952db7bb8fb4bbb64d9c8fa1e277d9e3e47b338c7cdcad2984c27bd22284e1c04508c9118157deb3d608520fbcfac69b11333bd134c3d452d72bf787f50596e6b9bbae6baae212a9dddb3745849f0c98c167936ea32286dc7b962eb3daa810f29498e3f61d5b5229b598761b35cbb289acf1c9340d59bc98434b15674c5224222f30d44d42964d44b91c6e9b565e0dc3eeb6548d6e1ccaffde96f898ce59336265a72e8c584e5df86fcfe2a7cdb30168c47344d392ebad8ebf055e0ff0124f6b9ebb03cb3d5c766cf1749601f8a772cea3c4fcac5eefd7566a87fc8bce47d58723dbeb1c371438e8cb42b62ffa110000ffff9414cba602050000", + "e0c4601e1b54d131fc83ee2815be18de": "1f8b08000000000000ffac575f4fdcb8167f8e3fc5b911bd4dae42d2f6e90a2dd252a01469cab00cedee43a5d6939c64dc3a76b01d0636ca775fd9cecc6486592dd29287093efe9dbf39ff6868fe9356083565821056375219884810e652187c302109c2b2762f2e2bfb92daff669a5582727bd08f3aa79c878400007c83b06266d1ced35cd6d90f26fe5cb45925559d158c72cc8dceea477dc7c3e7a2f51d67069f0d6fa4369542fd6c865a3b6b483046564c1c5652b0dcfe156edf8da4ecdce825ad2a99958ca30ec13f59068e8c0ab09e6301ee762f9f553a6043cb373a43cd8a82e3922adc662d946c45f198555236c679d175692d8b9663df675d97d2865dfbaf7c456bec7b1f975d5441e51ed4b76d5c2173bd9fbd9605f21d013121f75441448628bc6f192fcea84128ec8f368a890a6409cb050a98db5b58520d0daa52aada478a63014cc0fc110eff805cd60de30825a7150936f200066984045906136a509b5359d7ccbc90ae2d91635dce88abb69ea37a49b706894f5499a9b8bc7e41455e1eec5534d52fab68aa7715ddb4c2b01abfbc58ec4602b7354df5ccb52bf05d0b5a8d0518097ad19a422e0509d608fbe40b2a40ead4936c2667195c303143758f0a386d45beb0e509da5148d98a7c03886288502940a5a48a3b12b48ac3d1b16598f9724e3fdf4ca2b0eb0e522f60962fd056cd5166abc9d33e4a6dfabeeb5809026185bcb61dfaff6ffafe68c36d691689a2e8fb6ce818b65ad31f5a8a30b6d577bb40b06634920963a36c249c5c5f42812513cc30290809946c0daac1d4f40c4bda7213c5ab8bf4e2fc360ad70afe47c563988cbdfa5dd1e623150547150da80fb6dba50331b126c43121c19ec6949e4a51b2ea82891ba72df24a37da6f5a616336383d61daa0e8fb3026012b6dace13fc72018878e04019755fa811acacb283cb79f01b4a1ca39eed913300bf45f089886d7afee5f87893dc724e86d28d0b44a909e10f7f17f35cc7084ae4b075f2f4529d35b4bec7b07b847a59914bb902f9e3c800ad4b9628dd9033cdb5c0d6083aad6d3d2e614cb9fea9ecefadedb668735cd4d2a68fd0476eaef7c88b7d0361bf6833fdf4c76b05853f677e8737bb73285b31c85466fca4943f305c2bbf4cdd69d55bc30a639cab2e5729952874aa5aab201a1b3c9e5e9f9d5ecfcf05dfa265d989a7be10ba90dfcdbfa7092de538dd7d42c765d5ad1fbde97b4dd8ba2183a37c3d62de2186afa13a3ed2e91c0dbd8379b335b5208ab8460c2f62eea4a2c70637a9514700c656dd259a398306544be9f340d67b9830edd6fcc0c7edaf85ee99e2378a5d76431cc8c35f98219db1fedc81aa38726b9b66f24c48014309d6dd0df93cdd84ec6c32ed99ab2c9a895279bf911affcbda64a632418b7112ae6aece5c9791aa4ea70d0e757dc76f1f1bbb3b24309c4fa51033a39e53e517d20ce5ec86472e85c0dccd7f3aa71affa9de8b793a91d527596064548bb16b51bb5b517af61e8ea198fb4db7ebe060bcf8588f9e6c42d0f74ef8496be42756296ad06f445e82a2a242383074ce1d3c81835c166893d1897317f6a4fb1efebbabb1efd3ae5b33a433a3da55a9777d3252e3321f86c6fbc4ab89742be631d89c8f72f300c3faef4a1c1f4c02fa8e0f03357691b7797bedd3369cfd36b1c9f255840e3704b492e381e86c9948d97c900a3d65d55a47549b7ec3846e94cc516b3bc15d256ef15a13c6169c0b836e7560c24d33042e65f35584d6632f30bd9286958fd1aa881318fe6d496797179757b75be7dbf39b4f5b84cfb39bb73109bec131fc72b81241768c7860e6890da03047768fc5ba7b78ab7af257000000ffff62848d307b0d0000", + "e4a5c1fe4048203a8591e1256cfaaa5e": "1f8b08000000000000ffd453c14e1b31103dc75f31b27a48aae2bd23714821a4a888a6259c9159cf3a6ebdf6cab1a990eb7faf763780127917710ba764679edfcc1bbdd7f0f20f97083132dea855ff75c36b4c89105537d67998920935e88b8df70d2564426364b515a82f7fae6e52a20400a02d0a6e9f4b6442a5f29bf0c04a5b17529913698d2adb7ff4a0171cca5098a0f541e777d00acdb6dcd44af4d39d0d1e1d2533421eb9836937f91ecea07dcdbe5aab636a9b55302594d6544ac6c86ebd0ba5ef45fdea18a63d117c7e25657d6706914c7695e5623da5c51e01fc036fafed5f7429d12fb0443fd7fa60c4ec8560f5e3f62d86b91083cfdf981fa3e346227caa146a01a767c0d6fc41e395a92c3bb7022fdbfab60582aa7630b672aae6eee93b3ecd9dec2716a7310e77634423763f70f22c7b58f3dd912e7dd708ee7170ef8bc5f562bd38ced52f506366f5b467f4a532a35e97cab0abaeb47d9fc9cfad7944f7ed25296bbb54669ab7febbbc9f27ce24e2034462f04823173ad6a4e4b5e4f3f331029457948f5597ab183dd68de61e81f246dd4bf45c6b262df375a329b0947298710017621c10ba138f6344b7f43ee67f000000ffff462a5900c5070000", + "eb90f85f22d36b7b6ef7e6dc328db475": "1f8b08000000000000ffb454db6e1b37107dd67ec554286aa958af54d70f850a01f5adb08bc2162cb509100406458e243a2b7233e45a7668fe7b407ae5cb466b3b41a21749c373e61cce85ce099c4985d06685bc604264739dd96591b7bd4f7a3dd813c2b96c6ca9e4f6942dd17b604280d5f18b81916a9e2310724d31ec5c3661d31c2bb00dbf412ab00b0c6787ccb22933eb6351fd0d527f8dcbe592d14dd004a65ec81919876838c9c24aad7e9cad099b1ba815211eec718e8505b8345ac5c088b428393e8e3062cb3a19a65adc84e0520bcc478c7f60f34a39ab432d9508ed5091da49bb2a19e7680cecf4fbe0f4f412b9f5afcb1ce97f33999784b05ba3b3423e251f4f26a323224d35daeed7d0ce756991a0f7c409dc82d5ffea1592f7f0aed0c6be0f60e40b0d5bce4df43fe3b353b86bde899ae9ec4419cb1447e87bbf05b7b0b0b680d1d978026de77ece0cd215d2982f303818f47a0fc1636dacf7cec91928847574a4c9c21f7def070fc8100b4854c2fb66bf6d78bbbd57c8edff0cd2a03448bfedfc9ecc4ac537ac4d67159d66e7680aad0cbe2169915220f8b58a7f2cd1d8140a1381148b95c501325d70498bdb6b180c412a6925cbe5273cd0cae2b5ed50376935d77430845f5e3511ce27494bce00890289908950fb0ea5d098bdfb6784ff340425f360b245684b52b1e91d6eaf5358a570974130fd54ff88689f89ea86f7d4a4e593240180072b8df2d93ece34e1985d61a76e05e2e79bed00808f369ac547840523ec745f6df77f964bc12c763637e4809059fcfe17b9a757b77ad4e5b5a36afcee52531a76e9f183d94e1b5e950d969f990224aa353a78bb6214e9185f8ae6514ee122a680e1c66b6fd8b928dd3cbcf78578797ebf74de5a850d8e1bb2c63da3e493ea35493e070000ffff51a1b4af72070000", + "f5eda7d9c47f2bba43e01fedf5a101ff": "1f8b08000000000000ffbc54ef6f1a3910fdccfe1573281fe0040b97cb49274e910e05a2544d2a1ae80fa9aa2ac73bbb38d9b5b7636f49eafa7faf6c36fc88204da4b69f60c7cf6f66de9bb1b509a642223459293e2598a3c13853b129cabce95cd4ebc12804ad8da7862a6e5eb1029daba3c0400b99e508845c510229a902ac8d67ec2ac71a6afc7f1012cc1cfdd9881976c5f4fd71527ffa5cff4faba26074b7a6dfcf1bf023d49c44698492bfaaa419cb343c683f1c0c39c7d2005c6b254360422aa938d6116b89c90ce12015982730388665092f64aae21395e0a98f6be7ac0591d6b07842c20bf012ef86942d93056a46ac00b0762f0e9c839299f90666fafafc8295a590593c5db02c439add950168a84268ae91272aaf0a798186c53557d35a94892f2efcd4e6708e5ac361ff08acbaba466e9c57a65009e613c66f58562b18efd2eb9489bc2284a37e7feb3a2bc5f6e5b3d96c322652b475ed9fe75dbb54954182de5625f00d8c3a570b24dfd9cff2c782b5ddfdc6749d03b72d277c58aeda475feadc981246e3f3f16cec3d398835d217a4299fa3a71ff47aebe099d2c6b3881424c27d74a2c8c0bf7de7066ba48fadf2fd161556d374ca6ed06f14b8076d37e17d77588aee1b8d34a834d25f877f476925f9ee47a6b508dac497a84b2535be2361903a40f0671dff5ca1361d28750052b03c0ebba2db60a30637b7be252185112c175ff1444983b7a645eda7ef67f478ebe05cd4b076bf321d4022cfbf0314724c1869ef45abd49d30017ba99aeda821d2c0f7c7314891fb261b84a6221946bfc5cd6d07161da090b5bd3a8d1abe8fad955e510d8ee12dcb45c20cd6922e692854b3f970363b7bf67de95ffbbf8dd29e5359d420b5d0c334456e30d9102c4e98da95e9e1a478f2271b0a3f347497556b3f3775f4dbbdcb14008047bb5f0396022cfc705f6ea8d0f2e88d6f68472b0ba3ef010000ffffed775f0eb8070000", + "f8d356df5b482fccbd281c1d890bcb36": "1f8b08000000000000ff8c525d6fd33c14be8e7fc5592faa644abdedd52b2e4045827d70032b02ee109adcf824583876b14fc48495ff8e4e9c75a54c88ded4f179befcd829696c8d435868e5ef3a1ffabb0e49592b3b2fa9dfd9c5388ab3337883f4cada94e4470a4343b7aac771041341413bb8868c77401e3a245010ad69107c0b011b1f74192b6883ef2125f9496d2dce6ce2351807f4157976a5486d557c18ebf993ed772aa83ec20a76aa43e0dfbc0cf87dc048a8a1d4d8aac152e41ce7d51fac687e22acc00dfd16c363b8c801d4acfb9bc67f47223e680cd95a6f21fa40f356e3edd03bc662083ec00aae43b8f574e307a76b06df18a7f350705b4fb75936740f8d7784f7242ff37f3d05ab1f0f601c3dfbbf9e8d2305e3ba0aca80714afdf9cb694ab2f71aed7bd57c53dddca53cb2aa813c29fbc1ffe0e353cdd972be0a921045d6db841e9eafe1eab57cc78ae5f29fb4d358096e69af212ffde0a85cee2d2b210ad3e6ca5fc239245114be6d2312db95d3fe0a2e2a38dd9f5b140799d607da9b8957667a25df9ade50f9c0aa443102da8893c5d302c70c8e3ee680b9e493352c167f11d830aa9cb0ec97a9dce721881f40b99cafa992d75cf58b0975b206672cebb373e61d3c9fc99686e01855c3ea62baabec330f66d5833bad192c4691123a3d8ee257000000ffffb64a6789e5030000", + "fd9281a7f02a0f4b78d32780e921a2c2": "1f8b08000000000000ffecdbcb4fdb301800f07bff0a2b67d443a910e288a0522f1c063b215439a9eb79f223f8d1ad54fddfa784bee2da6957d601feb870a81ff1effb1227b2cdbc835026705932494d76851e3b082134afff229499673eb2b392645728cb99cdce5605546d7e578a6f0a7e1a25d745d74a7182e5a6b4d4caaadc4d228da9d384ba75a1749c7787b279d9ea479c73b2ae659e79f7ce717edde8cafcc29412ddbc505db8386b3136879326d2323963329c4c26ed792f021d4a4b28d12d50aff59ba443692ffa716a05d82b85a1340273dea01af65295f4d2b70b32664ec0c83393b60f83d983c16c8e385969ce68cb03baddfddf43b75b9f187ad13f28a997a781fec78c1e022d7ee0f0ad6bac669246a40fe4b76d61fa6d43ce7bbf4e0bd5afeb5b97d7db8b25d20930d829d6a0922ba181b992d436869e38f8f51b1114191696c91928f072c60a7f25a7086692c0c96e650085cdc16825a80f8d31b62488b54c90ee0313e4382f558a72d25dfd5ef7642c16657b089a170c0520302edfbea97210bfaa1e9ea661c5007008bef83bc3fa67317007ac00bd1bd8be4021d71b105f8f7a3626051338bc8138e10ac797000755694b0026cdf210d6eba2ed053ff0c7e29b5783dd2f562ee7e194a709164a921920af26a0eee7ba627893ed5383f788e3e0e836d447049ff70ecc70788fe65383e3e29c49acc373d6e3533eb347be93ab9626eaf57b0e59fd3a3e7159be37a53957e1258434785c499a38f175853e71e414ebe41f45e904d1ac48ef051a9f7c4a506b7ad64c4961151cf008d4ce52f5946330daeff7b7df4637b783e1dded4d10cda4257a820b325f9c62660e761f82072b1eab768e8dc1a418505adb8e75bbb79d28f49bbffb9142b77be639656dfb29e7e4b860a02d2763fd75fe23ac1fec6cac83b73ceec0ad8f3b68eb89f58bc810cdb66fec9dffbf299cb14a54f54b652cd58daf8754cffd47a2d2871d959cd148602e0104a683d05367d1f9130000ffff2a0789b2773a0000", }) if err != nil { panic(err) @@ -61,45 +61,45 @@ var _ = func() error { func() { b := packr.New("gen", "../template") - b.SetResolver("GEN_README.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "86581ab0bcb7eb520de0ec77a97e99b5"}) - b.SetResolver("Makefile.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "4e17fa09573eade805ccd186d7c99d03"}) - b.SetResolver("README.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "98bd8313eccf7f2c5ced7e406e17bef8"}) - b.SetResolver("api.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "e8d95dc8f39f830987d6d471ba97e102"}) - b.SetResolver("api_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "273ee27d605fbcf55a2597b5b3bb87c9"}) - b.SetResolver("api_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "96e347bb6cbafe09a6a3226ec17ed79e"}) - b.SetResolver("api_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "8283a349ac3185b19ba08f41b749fe72"}) - b.SetResolver("api_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "df90ed91b91f834b703af48173581e1f"}) - b.SetResolver("api_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "5cb8db77eb52e7f9cc5f078523050ba8"}) - b.SetResolver("code_dao_gorm.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "4a50571365c55eab93f57a1e52042786"}) - b.SetResolver("code_dao_sqlx.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "5e1adf8cb5c8d39cd95dad0ecfff4ab1"}) - b.SetResolver("code_http.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "9f5c9cb8b3f5c650f0d77f517185c4c7"}) - b.SetResolver("dao_gorm.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "ae024cab00dcf43b182c850a5839fe89"}) - b.SetResolver("dao_gorm_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "d387d529769879aa6637046dd6a543b0"}) - b.SetResolver("dao_gorm_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "441a465b0481cf25a0dff9e324942dc1"}) - b.SetResolver("dao_gorm_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "24f336b2e644d299c7702d48cc77c3e6"}) - b.SetResolver("dao_gorm_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "f8ee17d2548efe8541c2485cd4285fd4"}) - b.SetResolver("dao_gorm_init.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "d18a550df0a6e3d2c7ae5d9b5fb9edb5"}) - b.SetResolver("dao_gorm_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "781e6feba6c4879b7a4a678821c5c894"}) - b.SetResolver("dao_sqlx.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "47dbe9e0edc0925a11e198ed62f6cae7"}) - b.SetResolver("dao_sqlx_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "fc68900ae6dfce8d9e2da9e9fef5d5cf"}) - b.SetResolver("dao_sqlx_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "0fd6a9a2b807d8c0e9c5085e9382e691"}) - b.SetResolver("dao_sqlx_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "7e226fb971f533cd4812901b01df863e"}) - b.SetResolver("dao_sqlx_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "24fb6130ce9337283a64cdeb1f73d77c"}) - b.SetResolver("dao_sqlx_init.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "598cf1a5fb9105728174266f31dc72df"}) - b.SetResolver("dao_sqlx_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "6719979fa5623fe6f4985a3c4fa67ba6"}) - b.SetResolver("debug.txt", packr.Pointer{ForwardBox: gk, ForwardPath: "a3c30097370ebfb911476f1fb6985459"}) - b.SetResolver("gitignore.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "1e0cb57ee676484cd9eddbd5098743bc"}) - b.SetResolver("gomod.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "c6fe1e0132426554b754ea0334957cb4"}) - b.SetResolver("http_utils.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "35a3d495c4db180498c3159030d961b1"}) - b.SetResolver("main_gorm.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "d9d4b846bb4fb186c438eae71862c8c8"}) - b.SetResolver("main_sqlx.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "5cf046e5f8e532c6c48af125e28997af"}) - b.SetResolver("mapping.json", packr.Pointer{ForwardBox: gk, ForwardPath: "85f6f39bf92073a60d92ec0415889623"}) - b.SetResolver("model.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "26364aab4fd746ad627ffcee075ec736"}) - b.SetResolver("model_base.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "0b83c1027ea0e0af49fefc4f25bd6ee1"}) - b.SetResolver("protobuf.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "13dfaee4bf0d3c35e83f54d3ad36e25f"}) - b.SetResolver("protomain.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "66b3078653631dbd94d9ba366eeb54c2"}) - b.SetResolver("protoserver.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "c7e2ec56f4756dd2a3b957cc11d97e1f"}) - b.SetResolver("router.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "98b806a0047f99c90a006149f9719ea9"}) + b.SetResolver("GEN_README.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "a2d5586edb9ff79f53fe610c4e91de3d"}) + b.SetResolver("Makefile.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "3ceb52e1f1f3624e5a1a43ca87b692d5"}) + b.SetResolver("README.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "b90aee21f6dfc810704f9344330644a8"}) + b.SetResolver("api.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "e4a5c1fe4048203a8591e1256cfaaa5e"}) + b.SetResolver("api_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "eb90f85f22d36b7b6ef7e6dc328db475"}) + b.SetResolver("api_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "f5eda7d9c47f2bba43e01fedf5a101ff"}) + b.SetResolver("api_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "af968bb57cf33c0a3620f64271ceb348"}) + b.SetResolver("api_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "6ae44828c0257859553f6df80cd4db7a"}) + b.SetResolver("api_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "a42f6cfa87833f9ac66f4293e399925f"}) + b.SetResolver("code_dao_gorm.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "abfb948144ce2666cf818384c00cc754"}) + b.SetResolver("code_dao_sqlx.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "9ec72c1db17b72aeed9a9dfae4794622"}) + b.SetResolver("code_http.md.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "2abc8a64424b38646d2136dad58d4a2e"}) + b.SetResolver("dao_gorm.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "267b79ab53880bf9c2abb43982caa01e"}) + b.SetResolver("dao_gorm_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "b9644b6bd09343d1b0424958ea55169e"}) + b.SetResolver("dao_gorm_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "2a0d75d2f1e59e37b9e0923eec034385"}) + b.SetResolver("dao_gorm_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "40b2aab99d4f237575b7d8898abd5cb0"}) + b.SetResolver("dao_gorm_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "f8d356df5b482fccbd281c1d890bcb36"}) + b.SetResolver("dao_gorm_init.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "93bd183343e73a133e7c243e834a15f8"}) + b.SetResolver("dao_gorm_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "ca5b109049f53ac110406fdaadb1f9a4"}) + b.SetResolver("dao_sqlx.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "18330058cdf2606d4ac7b79d74226a94"}) + b.SetResolver("dao_sqlx_add.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "d3ff6e01dc99201cdf5c9c6f1591ed79"}) + b.SetResolver("dao_sqlx_delete.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "88911553e25120a7da86677cc92bbb53"}) + b.SetResolver("dao_sqlx_get.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "36938e84a94102a9c026b5d38dca976e"}) + b.SetResolver("dao_sqlx_getall.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "9ecd3f03cbe3e3ef5337a260a193f876"}) + b.SetResolver("dao_sqlx_init.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "6a1772728ccec9bd40ccfe203ebfed97"}) + b.SetResolver("dao_sqlx_update.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "dfd6e2ff6259b2eba9e5291c25aeb460"}) + b.SetResolver("debug.txt", packr.Pointer{ForwardBox: gk, ForwardPath: "5dbc64433d21cef756d8ea900c9eddf3"}) + b.SetResolver("gitignore.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "1ee77fe9c2727334139ec325c23519ce"}) + b.SetResolver("gomod.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "7469e2ebf5c1ecbcac024c458eacac39"}) + b.SetResolver("http_utils.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "0d5e95193151c6c27d06c4f2719d6dad"}) + b.SetResolver("main_gorm.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "e0c4601e1b54d131fc83ee2815be18de"}) + b.SetResolver("main_sqlx.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "04f8800a287dd3623fb6080922d2ff00"}) + b.SetResolver("mapping.json", packr.Pointer{ForwardBox: gk, ForwardPath: "fd9281a7f02a0f4b78d32780e921a2c2"}) + b.SetResolver("model.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "11dc899afbfb530ae3f155d3182d65a0"}) + b.SetResolver("model_base.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "dc7f7462bf5ebe7b105f56044bb1471b"}) + b.SetResolver("protobuf.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "ad09206b692edbb5c2364f1b69afbe76"}) + b.SetResolver("protomain.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "b05c10f88a23c4c4dd1fcda8f80e1d5d"}) + b.SetResolver("protoserver.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "c155276ed69201c090709d088434e28e"}) + b.SetResolver("router.go.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "ac60daf3c3958d476b98234112b3896c"}) }() return nil }() diff --git a/readme/main.go b/readme/main.go index b536deb..bb06c65 100644 --- a/readme/main.go +++ b/readme/main.go @@ -32,7 +32,7 @@ func init() { goopt.Description = func() string { return "ORM and RESTful meta data viewer for SQl databases" } - goopt.Version = "v0.9.24 (07/13/2020)" + goopt.Version = "v0.9.25 (07/26/2020)" goopt.Summary = `dbmeta [-v] --sqltype=mysql --connstr "user:password@/dbname" --database sqltype - sql database type such as [ mysql, mssql, postgres, sqlite, etc. ] diff --git a/template/GEN_README.md.tmpl b/template/GEN_README.md.tmpl index 9047f06..29459dd 100644 --- a/template/GEN_README.md.tmpl +++ b/template/GEN_README.md.tmpl @@ -249,6 +249,11 @@ Table Name: registration_source |ms sql |y | y | y | y | y | y| n ## Version History +- v0.9.25 (07/26/2020) + - Adhere json-fmt flag for all JSON response so when camel or lower_camel is specified, fields name in GetAll variant and DDL info will also have the same name format + - Fix: Build information embedded through linker in Makefile is not consistent with the variable defined in main file. + - Added --scheme and --listen options. This allows compiled binary to be used behind reverse proxy. + - In addition, template for generating URL was fixed, i.e. when PORT is 80, then PORT is omitted from URL segment. - v0.9.24 (07/13/2020) - Fixed array bounds issue parsing mysql db meta - v0.9.23 (07/10/2020)