From e0404cc27811fe94e40b67e3f4bbbbd74ca3c846 Mon Sep 17 00:00:00 2001 From: invocamanman Date: Mon, 3 Oct 2022 16:24:28 +0200 Subject: [PATCH] update bridge mock --- README.md | 9 + compiled-contracts/Bridge.json | 4 +- compiled-contracts/BridgeMock.json | 98 +- compiled-contracts/ProofOfEfficiencyMock.json | 17 +- contracts/Bridge.sol | 9 +- contracts/mocks/BridgeMock.sol | 50 +- contracts/mocks/ProofOfEfficiencyMock.sol | 8 + deployment/deployment_v2-0/README.md | 4 + deployment/deployment_v2-0/deployPoE_v2-0.js | 16 +- .../deploy_parameters.json.example | 3 +- deployment/deployment_v2-0/genesis-gen.json | 64 + docs/Bridge2.md | 166 ++ test/contracts/bridgeMock.test.js | 154 ++ test/contracts/depositContractMock.test.js | 2 +- test/contracts/real-prover/real-flow.test.js | 3 +- .../real-prover-test-inputs.test.js | 2 +- .../real-prover/test-inputs/input.json | 1887 +---------------- .../real-prover/test-inputs/proof.json | 16 +- .../real-prover/test-inputs/public.json | 2 +- 19 files changed, 587 insertions(+), 1927 deletions(-) create mode 100644 deployment/deployment_v2-0/genesis-gen.json create mode 100644 docs/Bridge2.md create mode 100644 test/contracts/bridgeMock.test.js diff --git a/README.md b/README.md index f68a70839..23e2a6d0b 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,15 @@ To run the docker you can use: `docker run -p 8545:8545 hermez-geth1.3:latest` Polygon `zkevm-contracts` was developed by Polygon. While we plan to adopt an open source license, we haven’t selected one yet, so all rights are reserved for the time being. Please reach out to us if you have thoughts on licensing. +## Note + +In order to test, the following private keys are being used. This keys are not meant to be used in any production environment: + +- private key: `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` + - address:`0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266` +- private key: `0xdfd01798f92667dbf91df722434e8fbe96af0211d4d1b82bbbbc8f1def7a814f` + - address:`0xc949254d682d8c9ad5682521675b8f43b102aec4` + ### Disclaimer This code has not yet been audited, and should not be used in any production systems. diff --git a/compiled-contracts/Bridge.json b/compiled-contracts/Bridge.json index 3130f303d..b698724a0 100644 --- a/compiled-contracts/Bridge.json +++ b/compiled-contracts/Bridge.json @@ -503,8 +503,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614adb806100206000396000f3fe608060405260043610620001075760003560e01c80635d5d326f1162000095578063bab161bf1162000060578063bab161bf1462000414578063d02103ca1462000449578063e73758811462000478578063ed6be5c914620004ac57600080fd5b80635d5d326f146200035e57806381b1c17414620003835780638624c35c14620003ca578063b7e6a7d414620003ef57600080fd5b80633ae0504711620000d65780633ae05047146200023a5780633da816821462000252578063508935f814620002885780635a64a1da14620002a157600080fd5b806322e95f2c146200010c5780632dfdf0b5146200015b5780632f3a3d5d1462000182578063318aee3d14620001b1575b600080fd5b3480156200011957600080fd5b50620001316200012b3660046200278e565b620004c3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200016857600080fd5b506200017360415481565b60405190815260200162000152565b3480156200018f57600080fd5b50604754620001319073ffffffffffffffffffffffffffffffffffffffff1681565b348015620001be57600080fd5b5062000208620001d0366004620027ca565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff90911660208301520162000152565b3480156200024757600080fd5b506200017362000566565b3480156200025f57600080fd5b506200027762000271366004620028e9565b62000640565b604051901515815260200162000152565b6200029f6200029936600462002957565b62000740565b005b348015620002ae57600080fd5b5062000173620002c036600462002a13565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200036b57600080fd5b506200029f6200037d36600462002b2b565b62000d2a565b3480156200039057600080fd5b5062000131620003a236600462002c12565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620003d757600080fd5b506200029f620003e93660046200278e565b620017d9565b348015620003fc57600080fd5b50620001316200040e3660046200278e565b62001a57565b3480156200042157600080fd5b50604254620004339063ffffffff1681565b60405163ffffffff909116815260200162000152565b3480156200045657600080fd5b50604654620001319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200048557600080fd5b50620002776200049736600462002c12565b60436020526000908152604090205460ff1681565b348015620004b957600080fd5b5062000433600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006385781600116600103620005d057600181602081106200059c576200059c62002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000614565b8260218260208110620005e757620005e762002c2c565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200062160028362002c8a565b9150806200062f8162002cc6565b91505062000570565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007335781600116600103620006bd578681815181106200067b576200067b62002c2c565b6020026020010151836040516020016200069f929190918252602082015260400190565b6040516020818303038152906040528051906020012092506200070f565b82878281518110620006d357620006d362002c2c565b6020026020010151604051602001620006f6929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200071c60028362002c8a565b9150806200072a8162002cc6565b91505062000650565b5050909114949350505050565b60425463ffffffff90811690861603620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff89166200089d5785341462000893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007d8565b6000915062000bb1565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200099e576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562000965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098b919062002d01565b5060208101518151909450925062000baf565b8415620009b357620009b38a88888862001b20565b620009d773ffffffffffffffffffffffffffffffffffffffff8b1633308a62001f4b565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000a83919081019062002da0565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000acf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b17919081019062002da0565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b89919062002de9565b60405160200162000b9d9392919062002e55565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000bf0979695949392919062002e92565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000ca4906200202f565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000ccc62000566565b6040518263ffffffff1660e01b815260040162000ceb91815260200190565b600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d454400006044820152606401620007d8565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6b919062002eff565b60000362000efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d415443480000000000000000000000000000000000006064820152608401620007d8565b60425463ffffffff85811691161462000f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d415443480000000000000000000000000000006064820152608401620007d8565b60425463ffffffff16620010c9578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200105b908b8b63ffffffff168a62000640565b620010c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b620011e6565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200117e908b8b63ffffffff168b62000640565b620011e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662001357576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162001279919062002f19565b60006040518083038185875af1925050503d8060008114620012b8576040519150601f19603f3d011682016040523d82523d6000602084013e620012bd565b606091505b505090508062001350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f45440000000000000000000000000000000000000000000000000000000000006064820152608401620007d8565b5062001762565b60425463ffffffff9081169087160362001394576200138e73ffffffffffffffffffffffffffffffffffffffff86168484620021a8565b62001762565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff1680620016c1576047546000906200147f9073ffffffffffffffffffffffffffffffffffffffff168462002200565b90506000806000868060200190518101906200149c919062002f37565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b8152600401620014e595949392919062002fb8565b600060405180830381600087803b1580156200150057600080fd5b505af115801562001515573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620016af9392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a1505050506200175f565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175d919062002d01565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff1615808015620017fa5750600054600160ff909116105b80620018165750303b15801562001816575060005460ff166001145b620018a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007d8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200190357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019819062002736565b604051809103906000f0801580156200199e573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055620019ee620022e0565b801562001a5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b189073ffffffffffffffffffffffffffffffffffffffff168262002428565b949350505050565b600062001b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620024ac92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007d8565b600080808080808062001c29896004818d62003018565b81019062001c38919062003044565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007d8565b73ffffffffffffffffffffffffffffffffffffffff8616301462001daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007d8565b8a851462001e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007d8565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001ef6919062002f19565b6000604051808303816000865af19150503d806000811462001f35576040519150601f19603f3d011682016040523d82523d6000602084013e62001f3a565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620024b3565b50505050565b8060016200204060206002620031f5565b6200204c919062003203565b60415410620020de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007d8565b600160416000828254620020f391906200321d565b909155505060415460005b60208110156200219d5781600116600103620021335782600182602081106200212b576200212b62002c2c565b015550505050565b6001816020811062002149576200214962002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002186919062002c8a565b915080620021948162002cc6565b915050620020fe565b5062001a5262003238565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001a529084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162001fa6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff811662000560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401620007d8565b600054610100900460ff1662002379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007d8565b60005b6200238a6001602062003203565b811015620024255760218160208110620023a857620023a862002c2c565b015460218260208110620023c057620023c062002c2c565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620023fb91906200321d565b602081106200240e576200240e62002c2c565b0155806200241c8162002cc6565b9150506200237c565b50565b6000620024a58383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b600062002517826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620025c69092919063ffffffff16565b80519091501562001a52578080602001905181019062002538919062002d01565b62001a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007d8565b606062001b1884846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007d8565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200267d919062002f19565b60006040518083038185875af1925050503d8060008114620026bc576040519150601f19603f3d011682016040523d82523d6000602084013e620026c1565b606091505b5091509150620026d3828286620026de565b979650505050505050565b60608315620026ef575081620024a5565b825115620027005782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d8919062003267565b611829806200327d83390190565b803563ffffffff811681146200275957600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200242557600080fd5b803562002759816200275e565b60008060408385031215620027a257600080fd5b620027ad8362002744565b91506020830135620027bf816200275e565b809150509250929050565b600060208284031215620027dd57600080fd5b8135620024a5816200275e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620028635762002863620027ea565b604052919050565b600082601f8301126200287d57600080fd5b8135602067ffffffffffffffff8211156200289c576200289c620027ea565b8160051b620028ad82820162002819565b9283528481018201928281019087851115620028c857600080fd5b83870192505b84831015620026d357823582529183019190830190620028ce565b600080600080608085870312156200290057600080fd5b84359350602085013567ffffffffffffffff808211156200292057600080fd5b6200292e888389016200286b565b94506040870135915080821682146200294657600080fd5b509396929550929360600135925050565b60008060008060008060a087890312156200297157600080fd5b86356200297e816200275e565b95506200298e6020880162002744565b94506040870135620029a0816200275e565b935060608701359250608087013567ffffffffffffffff80821115620029c557600080fd5b818901915089601f830112620029da57600080fd5b813581811115620029ea57600080fd5b8a6020828501011115620029fd57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002a2d57600080fd5b62002a388762002744565b9550602087013562002a4a816200275e565b945062002a5a6040880162002744565b9350606087013562002a6c816200275e565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002aa35762002aa3620027ea565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002ae157600080fd5b813562002af862002af28262002a86565b62002819565b81815284602083860101111562002b0e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4c57600080fd5b8a3567ffffffffffffffff8082111562002b6557600080fd5b62002b738e838f016200286b565b9b5062002b8360208e0162002744565b9a5060408d0135995060608d0135985062002ba160808e0162002744565b975062002bb160a08e0162002781565b965062002bc160c08e0162002744565b955062002bd160e08e0162002781565b94506101008d013593506101208d013591508082111562002bf157600080fd5b5062002c008d828e0162002acf565b9150509295989b9194979a5092959850565b60006020828403121562002c2557600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002cc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002cfa5762002cfa62002c5b565b5060010190565b60006020828403121562002d1457600080fd5b81518015158114620024a557600080fd5b60005b8381101562002d4257818101518382015260200162002d28565b83811115620020295750506000910152565b600082601f83011262002d6657600080fd5b815162002d7762002af28262002a86565b81815284602083860101111562002d8d57600080fd5b62001b1882602083016020870162002d25565b60006020828403121562002db357600080fd5b815167ffffffffffffffff81111562002dcb57600080fd5b62001b188482850162002d54565b60ff811681146200242557600080fd5b60006020828403121562002dfc57600080fd5b8151620024a58162002dd9565b6000815180845262002e2381602086016020860162002d25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002e6a606083018662002e09565b828103602084015262002e7e818662002e09565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002ee860e084018662002e09565b915080841660c08401525098975050505050505050565b60006020828403121562002f1257600080fd5b5051919050565b6000825162002f2d81846020870162002d25565b9190910192915050565b60008060006060848603121562002f4d57600080fd5b835167ffffffffffffffff8082111562002f6657600080fd5b62002f748783880162002d54565b9450602086015191508082111562002f8b57600080fd5b5062002f9a8682870162002d54565b925050604084015162002fad8162002dd9565b809150509250925092565b60a08152600062002fcd60a083018862002e09565b828103602084015262002fe1818862002e09565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600080858511156200302957600080fd5b838611156200303757600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200306057600080fd5b87356200306d816200275e565b965060208801356200307f816200275e565b9550604088013594506060880135935060808801356200309f8162002dd9565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200311b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620030ff57620030ff62002c5b565b808516156200310d57918102915b93841c9390800290620030c1565b509250929050565b600082620031345750600162000560565b81620031435750600062000560565b81600181146200315c5760028114620031675762003187565b600191505062000560565b60ff8411156200317b576200317b62002c5b565b50506001821b62000560565b5060208310610133831016604e8410600b8410161715620031ac575081810a62000560565b620031b88383620030bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ed57620031ed62002c5b565b029392505050565b6000620024a5838362003123565b60008282101562003218576200321862002c5b565b500390565b6000821982111562003233576200323362002c5b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b602081526000620024a5602083018462002e0956fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a26469706673582212206d9bd925e024fe2a07cab332e02c93926998dbd13988731f092787e24b21237c64736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001075760003560e01c80635d5d326f1162000095578063bab161bf1162000060578063bab161bf1462000414578063d02103ca1462000449578063e73758811462000478578063ed6be5c914620004ac57600080fd5b80635d5d326f146200035e57806381b1c17414620003835780638624c35c14620003ca578063b7e6a7d414620003ef57600080fd5b80633ae0504711620000d65780633ae05047146200023a5780633da816821462000252578063508935f814620002885780635a64a1da14620002a157600080fd5b806322e95f2c146200010c5780632dfdf0b5146200015b5780632f3a3d5d1462000182578063318aee3d14620001b1575b600080fd5b3480156200011957600080fd5b50620001316200012b3660046200278e565b620004c3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200016857600080fd5b506200017360415481565b60405190815260200162000152565b3480156200018f57600080fd5b50604754620001319073ffffffffffffffffffffffffffffffffffffffff1681565b348015620001be57600080fd5b5062000208620001d0366004620027ca565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff90911660208301520162000152565b3480156200024757600080fd5b506200017362000566565b3480156200025f57600080fd5b506200027762000271366004620028e9565b62000640565b604051901515815260200162000152565b6200029f6200029936600462002957565b62000740565b005b348015620002ae57600080fd5b5062000173620002c036600462002a13565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200036b57600080fd5b506200029f6200037d36600462002b2b565b62000d2a565b3480156200039057600080fd5b5062000131620003a236600462002c12565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620003d757600080fd5b506200029f620003e93660046200278e565b620017d9565b348015620003fc57600080fd5b50620001316200040e3660046200278e565b62001a57565b3480156200042157600080fd5b50604254620004339063ffffffff1681565b60405163ffffffff909116815260200162000152565b3480156200045657600080fd5b50604654620001319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200048557600080fd5b50620002776200049736600462002c12565b60436020526000908152604090205460ff1681565b348015620004b957600080fd5b5062000433600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006385781600116600103620005d057600181602081106200059c576200059c62002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000614565b8260218260208110620005e757620005e762002c2c565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200062160028362002c8a565b9150806200062f8162002cc6565b91505062000570565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007335781600116600103620006bd578681815181106200067b576200067b62002c2c565b6020026020010151836040516020016200069f929190918252602082015260400190565b6040516020818303038152906040528051906020012092506200070f565b82878281518110620006d357620006d362002c2c565b6020026020010151604051602001620006f6929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200071c60028362002c8a565b9150806200072a8162002cc6565b91505062000650565b5050909114949350505050565b60425463ffffffff90811690861603620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff89166200089d5785341462000893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007d8565b6000915062000bb1565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200099e576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562000965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098b919062002d01565b5060208101518151909450925062000baf565b8415620009b357620009b38a88888862001b20565b620009d773ffffffffffffffffffffffffffffffffffffffff8b1633308a62001f4b565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000a83919081019062002da0565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000acf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b17919081019062002da0565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b89919062002de9565b60405160200162000b9d9392919062002e55565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000bf0979695949392919062002e92565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000ca4906200202f565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000ccc62000566565b6040518263ffffffff1660e01b815260040162000ceb91815260200190565b600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d454400006044820152606401620007d8565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6b919062002eff565b60000362000efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d415443480000000000000000000000000000000000006064820152608401620007d8565b60425463ffffffff85811691161462000f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d415443480000000000000000000000000000006064820152608401620007d8565b60425463ffffffff16620010c9578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200105b908b8b63ffffffff168a62000640565b620010c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b620011e6565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200117e908b8b63ffffffff168b62000640565b620011e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662001357576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162001279919062002f19565b60006040518083038185875af1925050503d8060008114620012b8576040519150601f19603f3d011682016040523d82523d6000602084013e620012bd565b606091505b505090508062001350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f45440000000000000000000000000000000000000000000000000000000000006064820152608401620007d8565b5062001762565b60425463ffffffff9081169087160362001394576200138e73ffffffffffffffffffffffffffffffffffffffff86168484620021a8565b62001762565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff1680620016c1576047546000906200147f9073ffffffffffffffffffffffffffffffffffffffff168462002200565b90506000806000868060200190518101906200149c919062002f37565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b8152600401620014e595949392919062002fb8565b600060405180830381600087803b1580156200150057600080fd5b505af115801562001515573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620016af9392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a1505050506200175f565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175d919062002d01565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff1615808015620017fa5750600054600160ff909116105b80620018165750303b15801562001816575060005460ff166001145b620018a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007d8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200190357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019819062002736565b604051809103906000f0801580156200199e573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055620019ee620022e0565b801562001a5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b189073ffffffffffffffffffffffffffffffffffffffff168262002428565b949350505050565b600062001b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620024ac92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007d8565b600080808080808062001c29896004818d62003018565b81019062001c38919062003044565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007d8565b73ffffffffffffffffffffffffffffffffffffffff8616301462001daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007d8565b8a851462001e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007d8565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001ef6919062002f19565b6000604051808303816000865af19150503d806000811462001f35576040519150601f19603f3d011682016040523d82523d6000602084013e62001f3a565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620024b3565b50505050565b8060016200204060206002620031f5565b6200204c919062003203565b60415410620020de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007d8565b600160416000828254620020f391906200321d565b909155505060415460005b60208110156200219d5781600116600103620021335782600182602081106200212b576200212b62002c2c565b015550505050565b6001816020811062002149576200214962002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002186919062002c8a565b915080620021948162002cc6565b915050620020fe565b5062001a5262003238565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001a529084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162001fa6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff811662000560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401620007d8565b600054610100900460ff1662002379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007d8565b60005b6200238a6001602062003203565b811015620024255760218160208110620023a857620023a862002c2c565b015460218260208110620023c057620023c062002c2c565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620023fb91906200321d565b602081106200240e576200240e62002c2c565b0155806200241c8162002cc6565b9150506200237c565b50565b6000620024a58383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b600062002517826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620025c69092919063ffffffff16565b80519091501562001a52578080602001905181019062002538919062002d01565b62001a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007d8565b606062001b1884846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007d8565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200267d919062002f19565b60006040518083038185875af1925050503d8060008114620026bc576040519150601f19603f3d011682016040523d82523d6000602084013e620026c1565b606091505b5091509150620026d3828286620026de565b979650505050505050565b60608315620026ef575081620024a5565b825115620027005782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d8919062003267565b611829806200327d83390190565b803563ffffffff811681146200275957600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200242557600080fd5b803562002759816200275e565b60008060408385031215620027a257600080fd5b620027ad8362002744565b91506020830135620027bf816200275e565b809150509250929050565b600060208284031215620027dd57600080fd5b8135620024a5816200275e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620028635762002863620027ea565b604052919050565b600082601f8301126200287d57600080fd5b8135602067ffffffffffffffff8211156200289c576200289c620027ea565b8160051b620028ad82820162002819565b9283528481018201928281019087851115620028c857600080fd5b83870192505b84831015620026d357823582529183019190830190620028ce565b600080600080608085870312156200290057600080fd5b84359350602085013567ffffffffffffffff808211156200292057600080fd5b6200292e888389016200286b565b94506040870135915080821682146200294657600080fd5b509396929550929360600135925050565b60008060008060008060a087890312156200297157600080fd5b86356200297e816200275e565b95506200298e6020880162002744565b94506040870135620029a0816200275e565b935060608701359250608087013567ffffffffffffffff80821115620029c557600080fd5b818901915089601f830112620029da57600080fd5b813581811115620029ea57600080fd5b8a6020828501011115620029fd57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002a2d57600080fd5b62002a388762002744565b9550602087013562002a4a816200275e565b945062002a5a6040880162002744565b9350606087013562002a6c816200275e565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002aa35762002aa3620027ea565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002ae157600080fd5b813562002af862002af28262002a86565b62002819565b81815284602083860101111562002b0e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4c57600080fd5b8a3567ffffffffffffffff8082111562002b6557600080fd5b62002b738e838f016200286b565b9b5062002b8360208e0162002744565b9a5060408d0135995060608d0135985062002ba160808e0162002744565b975062002bb160a08e0162002781565b965062002bc160c08e0162002744565b955062002bd160e08e0162002781565b94506101008d013593506101208d013591508082111562002bf157600080fd5b5062002c008d828e0162002acf565b9150509295989b9194979a5092959850565b60006020828403121562002c2557600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002cc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002cfa5762002cfa62002c5b565b5060010190565b60006020828403121562002d1457600080fd5b81518015158114620024a557600080fd5b60005b8381101562002d4257818101518382015260200162002d28565b83811115620020295750506000910152565b600082601f83011262002d6657600080fd5b815162002d7762002af28262002a86565b81815284602083860101111562002d8d57600080fd5b62001b1882602083016020870162002d25565b60006020828403121562002db357600080fd5b815167ffffffffffffffff81111562002dcb57600080fd5b62001b188482850162002d54565b60ff811681146200242557600080fd5b60006020828403121562002dfc57600080fd5b8151620024a58162002dd9565b6000815180845262002e2381602086016020860162002d25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002e6a606083018662002e09565b828103602084015262002e7e818662002e09565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002ee860e084018662002e09565b915080841660c08401525098975050505050505050565b60006020828403121562002f1257600080fd5b5051919050565b6000825162002f2d81846020870162002d25565b9190910192915050565b60008060006060848603121562002f4d57600080fd5b835167ffffffffffffffff8082111562002f6657600080fd5b62002f748783880162002d54565b9450602086015191508082111562002f8b57600080fd5b5062002f9a8682870162002d54565b925050604084015162002fad8162002dd9565b809150509250925092565b60a08152600062002fcd60a083018862002e09565b828103602084015262002fe1818862002e09565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600080858511156200302957600080fd5b838611156200303757600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200306057600080fd5b87356200306d816200275e565b965060208801356200307f816200275e565b9550604088013594506060880135935060808801356200309f8162002dd9565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200311b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620030ff57620030ff62002c5b565b808516156200310d57918102915b93841c9390800290620030c1565b509250929050565b600082620031345750600162000560565b81620031435750600062000560565b81600181146200315c5760028114620031675762003187565b600191505062000560565b60ff8411156200317b576200317b62002c5b565b50506001821b62000560565b5060208310610133831016604e8410600b8410161715620031ac575081810a62000560565b620031b88383620030bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ed57620031ed62002c5b565b029392505050565b6000620024a5838362003123565b60008282101562003218576200321862002c5b565b500390565b6000821982111562003233576200323362002c5b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b602081526000620024a5602083018462002e0956fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a26469706673582212206d9bd925e024fe2a07cab332e02c93926998dbd13988731f092787e24b21237c64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b50614adb806100206000396000f3fe608060405260043610620001075760003560e01c80635d5d326f1162000095578063bab161bf1162000060578063bab161bf1462000414578063d02103ca1462000449578063e73758811462000478578063ed6be5c914620004ac57600080fd5b80635d5d326f146200035e57806381b1c17414620003835780638624c35c14620003ca578063b7e6a7d414620003ef57600080fd5b80633ae0504711620000d65780633ae05047146200023a5780633da816821462000252578063508935f814620002885780635a64a1da14620002a157600080fd5b806322e95f2c146200010c5780632dfdf0b5146200015b5780632f3a3d5d1462000182578063318aee3d14620001b1575b600080fd5b3480156200011957600080fd5b50620001316200012b3660046200278e565b620004c3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200016857600080fd5b506200017360415481565b60405190815260200162000152565b3480156200018f57600080fd5b50604754620001319073ffffffffffffffffffffffffffffffffffffffff1681565b348015620001be57600080fd5b5062000208620001d0366004620027ca565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff90911660208301520162000152565b3480156200024757600080fd5b506200017362000566565b3480156200025f57600080fd5b506200027762000271366004620028e9565b62000640565b604051901515815260200162000152565b6200029f6200029936600462002957565b62000740565b005b348015620002ae57600080fd5b5062000173620002c036600462002a13565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200036b57600080fd5b506200029f6200037d36600462002b2b565b62000d2a565b3480156200039057600080fd5b5062000131620003a236600462002c12565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620003d757600080fd5b506200029f620003e93660046200278e565b620017d9565b348015620003fc57600080fd5b50620001316200040e3660046200278e565b62001a57565b3480156200042157600080fd5b50604254620004339063ffffffff1681565b60405163ffffffff909116815260200162000152565b3480156200045657600080fd5b50604654620001319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200048557600080fd5b50620002776200049736600462002c12565b60436020526000908152604090205460ff1681565b348015620004b957600080fd5b5062000433600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006385781600116600103620005d057600181602081106200059c576200059c62002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000614565b8260218260208110620005e757620005e762002c2c565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200062160028362002c8a565b9150806200062f8162002cc6565b91505062000570565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007335781600116600103620006bd578681815181106200067b576200067b62002c2c565b6020026020010151836040516020016200069f929190918252602082015260400190565b6040516020818303038152906040528051906020012092506200070f565b82878281518110620006d357620006d362002c2c565b6020026020010151604051602001620006f6929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200071c60028362002c8a565b9150806200072a8162002cc6565b91505062000650565b5050909114949350505050565b60425463ffffffff90811690861603620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff89166200089d5785341462000893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007d8565b6000915062000bb1565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200099e576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562000965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098b919062002d01565b5060208101518151909450925062000baf565b8415620009b357620009b38a88888862001b20565b620009d773ffffffffffffffffffffffffffffffffffffffff8b1633308a62001f4b565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000a83919081019062002da0565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000acf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b17919081019062002da0565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b89919062002de9565b60405160200162000b9d9392919062002e55565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000bf0979695949392919062002e92565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000ca4906200202f565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000ccc62000566565b6040518263ffffffff1660e01b815260040162000ceb91815260200190565b600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d454400006044820152606401620007d8565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6b919062002eff565b60000362000efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d415443480000000000000000000000000000000000006064820152608401620007d8565b60425463ffffffff85811691161462000f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d415443480000000000000000000000000000006064820152608401620007d8565b60425463ffffffff16620010c9578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200105b908b8b63ffffffff168a62000640565b620010c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b620011e6565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200117e908b8b63ffffffff168b62000640565b620011e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662001357576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162001279919062002f19565b60006040518083038185875af1925050503d8060008114620012b8576040519150601f19603f3d011682016040523d82523d6000602084013e620012bd565b606091505b505090508062001350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f45440000000000000000000000000000000000000000000000000000000000006064820152608401620007d8565b5062001762565b60425463ffffffff9081169087160362001394576200138e73ffffffffffffffffffffffffffffffffffffffff86168484620021a8565b62001762565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff1680620016c1576047546000906200147f9073ffffffffffffffffffffffffffffffffffffffff168462002200565b90506000806000868060200190518101906200149c919062002f37565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b8152600401620014e595949392919062002fb8565b600060405180830381600087803b1580156200150057600080fd5b505af115801562001515573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620016af9392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a1505050506200175f565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175d919062002d01565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff1615808015620017fa5750600054600160ff909116105b80620018165750303b15801562001816575060005460ff166001145b620018a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007d8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200190357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019819062002736565b604051809103906000f0801580156200199e573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055620019ee620022e0565b801562001a5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b189073ffffffffffffffffffffffffffffffffffffffff168262002428565b949350505050565b600062001b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620024ac92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007d8565b600080808080808062001c29896004818d62003018565b81019062001c38919062003044565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007d8565b73ffffffffffffffffffffffffffffffffffffffff8616301462001daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007d8565b8a851462001e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007d8565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001ef6919062002f19565b6000604051808303816000865af19150503d806000811462001f35576040519150601f19603f3d011682016040523d82523d6000602084013e62001f3a565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620024b3565b50505050565b8060016200204060206002620031f5565b6200204c919062003203565b60415410620020de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007d8565b600160416000828254620020f391906200321d565b909155505060415460005b60208110156200219d5781600116600103620021335782600182602081106200212b576200212b62002c2c565b015550505050565b6001816020811062002149576200214962002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002186919062002c8a565b915080620021948162002cc6565b915050620020fe565b5062001a5262003238565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001a529084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162001fa6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff811662000560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401620007d8565b600054610100900460ff1662002379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007d8565b60005b6200238a6001602062003203565b811015620024255760218160208110620023a857620023a862002c2c565b015460218260208110620023c057620023c062002c2c565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620023fb91906200321d565b602081106200240e576200240e62002c2c565b0155806200241c8162002cc6565b9150506200237c565b50565b6000620024a58383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b600062002517826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620025c69092919063ffffffff16565b80519091501562001a52578080602001905181019062002538919062002d01565b62001a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007d8565b606062001b1884846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007d8565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200267d919062002f19565b60006040518083038185875af1925050503d8060008114620026bc576040519150601f19603f3d011682016040523d82523d6000602084013e620026c1565b606091505b5091509150620026d3828286620026de565b979650505050505050565b60608315620026ef575081620024a5565b825115620027005782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d8919062003267565b611829806200327d83390190565b803563ffffffff811681146200275957600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200242557600080fd5b803562002759816200275e565b60008060408385031215620027a257600080fd5b620027ad8362002744565b91506020830135620027bf816200275e565b809150509250929050565b600060208284031215620027dd57600080fd5b8135620024a5816200275e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620028635762002863620027ea565b604052919050565b600082601f8301126200287d57600080fd5b8135602067ffffffffffffffff8211156200289c576200289c620027ea565b8160051b620028ad82820162002819565b9283528481018201928281019087851115620028c857600080fd5b83870192505b84831015620026d357823582529183019190830190620028ce565b600080600080608085870312156200290057600080fd5b84359350602085013567ffffffffffffffff808211156200292057600080fd5b6200292e888389016200286b565b94506040870135915080821682146200294657600080fd5b509396929550929360600135925050565b60008060008060008060a087890312156200297157600080fd5b86356200297e816200275e565b95506200298e6020880162002744565b94506040870135620029a0816200275e565b935060608701359250608087013567ffffffffffffffff80821115620029c557600080fd5b818901915089601f830112620029da57600080fd5b813581811115620029ea57600080fd5b8a6020828501011115620029fd57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002a2d57600080fd5b62002a388762002744565b9550602087013562002a4a816200275e565b945062002a5a6040880162002744565b9350606087013562002a6c816200275e565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002aa35762002aa3620027ea565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002ae157600080fd5b813562002af862002af28262002a86565b62002819565b81815284602083860101111562002b0e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4c57600080fd5b8a3567ffffffffffffffff8082111562002b6557600080fd5b62002b738e838f016200286b565b9b5062002b8360208e0162002744565b9a5060408d0135995060608d0135985062002ba160808e0162002744565b975062002bb160a08e0162002781565b965062002bc160c08e0162002744565b955062002bd160e08e0162002781565b94506101008d013593506101208d013591508082111562002bf157600080fd5b5062002c008d828e0162002acf565b9150509295989b9194979a5092959850565b60006020828403121562002c2557600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002cc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002cfa5762002cfa62002c5b565b5060010190565b60006020828403121562002d1457600080fd5b81518015158114620024a557600080fd5b60005b8381101562002d4257818101518382015260200162002d28565b83811115620020295750506000910152565b600082601f83011262002d6657600080fd5b815162002d7762002af28262002a86565b81815284602083860101111562002d8d57600080fd5b62001b1882602083016020870162002d25565b60006020828403121562002db357600080fd5b815167ffffffffffffffff81111562002dcb57600080fd5b62001b188482850162002d54565b60ff811681146200242557600080fd5b60006020828403121562002dfc57600080fd5b8151620024a58162002dd9565b6000815180845262002e2381602086016020860162002d25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002e6a606083018662002e09565b828103602084015262002e7e818662002e09565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002ee860e084018662002e09565b915080841660c08401525098975050505050505050565b60006020828403121562002f1257600080fd5b5051919050565b6000825162002f2d81846020870162002d25565b9190910192915050565b60008060006060848603121562002f4d57600080fd5b835167ffffffffffffffff8082111562002f6657600080fd5b62002f748783880162002d54565b9450602086015191508082111562002f8b57600080fd5b5062002f9a8682870162002d54565b925050604084015162002fad8162002dd9565b809150509250925092565b60a08152600062002fcd60a083018862002e09565b828103602084015262002fe1818862002e09565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600080858511156200302957600080fd5b838611156200303757600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200306057600080fd5b87356200306d816200275e565b965060208801356200307f816200275e565b9550604088013594506060880135935060808801356200309f8162002dd9565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200311b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620030ff57620030ff62002c5b565b808516156200310d57918102915b93841c9390800290620030c1565b509250929050565b600082620031345750600162000560565b81620031435750600062000560565b81600181146200315c5760028114620031675762003187565b600191505062000560565b60ff8411156200317b576200317b62002c5b565b50506001821b62000560565b5060208310610133831016604e8410600b8410161715620031ac575081810a62000560565b620031b88383620030bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ed57620031ed62002c5b565b029392505050565b6000620024a5838362003123565b60008282101562003218576200321862002c5b565b500390565b6000821982111562003233576200323362002c5b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b602081526000620024a5602083018462002e0956fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a2646970667358221220c682c391f614b82ccb707f75b48ab8543a10cdee82867a718bc7956f22464e0464736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001075760003560e01c80635d5d326f1162000095578063bab161bf1162000060578063bab161bf1462000414578063d02103ca1462000449578063e73758811462000478578063ed6be5c914620004ac57600080fd5b80635d5d326f146200035e57806381b1c17414620003835780638624c35c14620003ca578063b7e6a7d414620003ef57600080fd5b80633ae0504711620000d65780633ae05047146200023a5780633da816821462000252578063508935f814620002885780635a64a1da14620002a157600080fd5b806322e95f2c146200010c5780632dfdf0b5146200015b5780632f3a3d5d1462000182578063318aee3d14620001b1575b600080fd5b3480156200011957600080fd5b50620001316200012b3660046200278e565b620004c3565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200016857600080fd5b506200017360415481565b60405190815260200162000152565b3480156200018f57600080fd5b50604754620001319073ffffffffffffffffffffffffffffffffffffffff1681565b348015620001be57600080fd5b5062000208620001d0366004620027ca565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff90911660208301520162000152565b3480156200024757600080fd5b506200017362000566565b3480156200025f57600080fd5b506200027762000271366004620028e9565b62000640565b604051901515815260200162000152565b6200029f6200029936600462002957565b62000740565b005b348015620002ae57600080fd5b5062000173620002c036600462002a13565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200036b57600080fd5b506200029f6200037d36600462002b2b565b62000d2a565b3480156200039057600080fd5b5062000131620003a236600462002c12565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620003d757600080fd5b506200029f620003e93660046200278e565b620017d9565b348015620003fc57600080fd5b50620001316200040e3660046200278e565b62001a57565b3480156200042157600080fd5b50604254620004339063ffffffff1681565b60405163ffffffff909116815260200162000152565b3480156200045657600080fd5b50604654620001319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200048557600080fd5b50620002776200049736600462002c12565b60436020526000908152604090205460ff1681565b348015620004b957600080fd5b5062000433600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006385781600116600103620005d057600181602081106200059c576200059c62002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000614565b8260218260208110620005e757620005e762002c2c565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200062160028362002c8a565b9150806200062f8162002cc6565b91505062000570565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007335781600116600103620006bd578681815181106200067b576200067b62002c2c565b6020026020010151836040516020016200069f929190918252602082015260400190565b6040516020818303038152906040528051906020012092506200070f565b82878281518110620006d357620006d362002c2c565b6020026020010151604051602001620006f6929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200071c60028362002c8a565b9150806200072a8162002cc6565b91505062000650565b5050909114949350505050565b60425463ffffffff90811690861603620007e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff89166200089d5785341462000893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007d8565b6000915062000bb1565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200099e576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562000965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200098b919062002d01565b5060208101518151909450925062000baf565b8415620009b357620009b38a88888862001b20565b620009d773ffffffffffffffffffffffffffffffffffffffff8b1633308a62001f4b565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000a83919081019062002da0565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000acf573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b17919081019062002da0565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b89919062002de9565b60405160200162000b9d9392919062002e55565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000bf0979695949392919062002e92565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000ca4906200202f565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000ccc62000566565b6040518263ffffffff1660e01b815260040162000ceb91815260200190565b600060405180830381600087803b15801562000d0657600080fd5b505af115801562000d1b573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d454400006044820152606401620007d8565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000e45573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6b919062002eff565b60000362000efc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d415443480000000000000000000000000000000000006064820152608401620007d8565b60425463ffffffff85811691161462000f98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d415443480000000000000000000000000000006064820152608401620007d8565b60425463ffffffff16620010c9578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200105b908b8b63ffffffff168a62000640565b620010c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b620011e6565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c8201526050810186905260708082019390935281518082039093018352609001905280519101206200117e908b8b63ffffffff168b62000640565b620011e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c49440000000000006044820152606401620007d8565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662001357576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162001279919062002f19565b60006040518083038185875af1925050503d8060008114620012b8576040519150601f19603f3d011682016040523d82523d6000602084013e620012bd565b606091505b505090508062001350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f45440000000000000000000000000000000000000000000000000000000000006064820152608401620007d8565b5062001762565b60425463ffffffff9081169087160362001394576200138e73ffffffffffffffffffffffffffffffffffffffff86168484620021a8565b62001762565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff1680620016c1576047546000906200147f9073ffffffffffffffffffffffffffffffffffffffff168462002200565b90506000806000868060200190518101906200149c919062002f37565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b8152600401620014e595949392919062002fb8565b600060405180830381600087803b1580156200150057600080fd5b505af115801562001515573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620016af9392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a1505050506200175f565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001737573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200175d919062002d01565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff1615808015620017fa5750600054600160ff909116105b80620018165750303b15801562001816575060005460ff166001145b620018a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007d8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200190357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019819062002736565b604051809103906000f0801580156200199e573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055620019ee620022e0565b801562001a5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b189073ffffffffffffffffffffffffffffffffffffffff168262002428565b949350505050565b600062001b6383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620024ac92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007d8565b600080808080808062001c29896004818d62003018565b81019062001c38919062003044565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007d8565b73ffffffffffffffffffffffffffffffffffffffff8616301462001daa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007d8565b8a851462001e3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007d8565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001ef6919062002f19565b6000604051808303816000865af19150503d806000811462001f35576040519150601f19603f3d011682016040523d82523d6000602084013e62001f3a565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620024b3565b50505050565b8060016200204060206002620031f5565b6200204c919062003203565b60415410620020de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007d8565b600160416000828254620020f391906200321d565b909155505060415460005b60208110156200219d5781600116600103620021335782600182602081106200212b576200212b62002c2c565b015550505050565b6001816020811062002149576200214962002c2c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002186919062002c8a565b915080620021948162002cc6565b915050620020fe565b5062001a5262003238565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001a529084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162001fa6565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff811662000560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401620007d8565b600054610100900460ff1662002379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007d8565b60005b6200238a6001602062003203565b811015620024255760218160208110620023a857620023a862002c2c565b015460218260208110620023c057620023c062002c2c565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620023fb91906200321d565b602081106200240e576200240e62002c2c565b0155806200241c8162002cc6565b9150506200237c565b50565b6000620024a58383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b600062002517826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620025c69092919063ffffffff16565b80519091501562001a52578080602001905181019062002538919062002d01565b62001a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007d8565b606062001b1884846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007d8565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200267d919062002f19565b60006040518083038185875af1925050503d8060008114620026bc576040519150601f19603f3d011682016040523d82523d6000602084013e620026c1565b606091505b5091509150620026d3828286620026de565b979650505050505050565b60608315620026ef575081620024a5565b825115620027005782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d8919062003267565b611829806200327d83390190565b803563ffffffff811681146200275957600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200242557600080fd5b803562002759816200275e565b60008060408385031215620027a257600080fd5b620027ad8362002744565b91506020830135620027bf816200275e565b809150509250929050565b600060208284031215620027dd57600080fd5b8135620024a5816200275e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715620028635762002863620027ea565b604052919050565b600082601f8301126200287d57600080fd5b8135602067ffffffffffffffff8211156200289c576200289c620027ea565b8160051b620028ad82820162002819565b9283528481018201928281019087851115620028c857600080fd5b83870192505b84831015620026d357823582529183019190830190620028ce565b600080600080608085870312156200290057600080fd5b84359350602085013567ffffffffffffffff808211156200292057600080fd5b6200292e888389016200286b565b94506040870135915080821682146200294657600080fd5b509396929550929360600135925050565b60008060008060008060a087890312156200297157600080fd5b86356200297e816200275e565b95506200298e6020880162002744565b94506040870135620029a0816200275e565b935060608701359250608087013567ffffffffffffffff80821115620029c557600080fd5b818901915089601f830112620029da57600080fd5b813581811115620029ea57600080fd5b8a6020828501011115620029fd57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002a2d57600080fd5b62002a388762002744565b9550602087013562002a4a816200275e565b945062002a5a6040880162002744565b9350606087013562002a6c816200275e565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002aa35762002aa3620027ea565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002ae157600080fd5b813562002af862002af28262002a86565b62002819565b81815284602083860101111562002b0e57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4c57600080fd5b8a3567ffffffffffffffff8082111562002b6557600080fd5b62002b738e838f016200286b565b9b5062002b8360208e0162002744565b9a5060408d0135995060608d0135985062002ba160808e0162002744565b975062002bb160a08e0162002781565b965062002bc160c08e0162002744565b955062002bd160e08e0162002781565b94506101008d013593506101208d013591508082111562002bf157600080fd5b5062002c008d828e0162002acf565b9150509295989b9194979a5092959850565b60006020828403121562002c2557600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002cc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002cfa5762002cfa62002c5b565b5060010190565b60006020828403121562002d1457600080fd5b81518015158114620024a557600080fd5b60005b8381101562002d4257818101518382015260200162002d28565b83811115620020295750506000910152565b600082601f83011262002d6657600080fd5b815162002d7762002af28262002a86565b81815284602083860101111562002d8d57600080fd5b62001b1882602083016020870162002d25565b60006020828403121562002db357600080fd5b815167ffffffffffffffff81111562002dcb57600080fd5b62001b188482850162002d54565b60ff811681146200242557600080fd5b60006020828403121562002dfc57600080fd5b8151620024a58162002dd9565b6000815180845262002e2381602086016020860162002d25565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002e6a606083018662002e09565b828103602084015262002e7e818662002e09565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002ee860e084018662002e09565b915080841660c08401525098975050505050505050565b60006020828403121562002f1257600080fd5b5051919050565b6000825162002f2d81846020870162002d25565b9190910192915050565b60008060006060848603121562002f4d57600080fd5b835167ffffffffffffffff8082111562002f6657600080fd5b62002f748783880162002d54565b9450602086015191508082111562002f8b57600080fd5b5062002f9a8682870162002d54565b925050604084015162002fad8162002dd9565b809150509250925092565b60a08152600062002fcd60a083018862002e09565b828103602084015262002fe1818862002e09565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600080858511156200302957600080fd5b838611156200303757600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200306057600080fd5b87356200306d816200275e565b965060208801356200307f816200275e565b9550604088013594506060880135935060808801356200309f8162002dd9565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200311b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620030ff57620030ff62002c5b565b808516156200310d57918102915b93841c9390800290620030c1565b509250929050565b600082620031345750600162000560565b81620031435750600062000560565b81600181146200315c5760028114620031675762003187565b600191505062000560565b60ff8411156200317b576200317b62002c5b565b50506001821b62000560565b5060208310610133831016604e8410600b8410161715620031ac575081810a62000560565b620031b88383620030bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ed57620031ed62002c5b565b029392505050565b6000620024a5838362003123565b60008282101562003218576200321862002c5b565b500390565b6000821982111562003233576200323362002c5b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b602081526000620024a5602083018462002e0956fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a2646970667358221220c682c391f614b82ccb707f75b48ab8543a10cdee82867a718bc7956f22464e0464736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/BridgeMock.json b/compiled-contracts/BridgeMock.json index a607a1f7f..30a26fff7 100644 --- a/compiled-contracts/BridgeMock.json +++ b/compiled-contracts/BridgeMock.json @@ -3,22 +3,6 @@ "contractName": "BridgeMock", "sourceName": "contracts/mocks/BridgeMock.sol", "abi": [ - { - "inputs": [ - { - "internalType": "uint32", - "name": "_networkID", - "type": "uint32" - }, - { - "internalType": "contract IGlobalExitRootManager", - "name": "_globalExitRootManager", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, { "anonymous": false, "inputs": [ @@ -143,6 +127,25 @@ "name": "NewWrappedToken", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, { "inputs": [], "name": "MAINNET_NETWORK_ID", @@ -391,6 +394,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxEtherBridge", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "networkID", @@ -404,6 +420,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -428,6 +457,26 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxEtherBridge", + "type": "uint256" + } + ], + "name": "setMaxEtherBridge", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -473,6 +522,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -532,8 +594,8 @@ "type": "function" } ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620067c1380380620067c1833981016040819052620000349162000331565b62000040828262000048565b505062000400565b600054610100900460ff1615808015620000695750600054600160ff909116105b806200009957506200008630620001f860201b62001b931760201c565b15801562000099575060005460ff166001145b620001025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000126576000805461ff0019166101001790555b6042805463ffffffff191663ffffffff8516179055604680546001600160a01b0319166001600160a01b038416179055604051620001649062000323565b604051809103906000f08015801562000181573d6000803e3d6000fd5b50604780546001600160a01b0319166001600160a01b0392909216919091179055620001ac62000207565b8015620001f3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620002745760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000f9565b60005b620002856001602062000399565b811015620003205760218160208110620002a357620002a3620003b3565b015460218260208110620002bb57620002bb620003b3565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620002f69190620003c9565b60208110620003095762000309620003b3565b0155806200031781620003e4565b91505062000277565b50565b6118298062004f9883390190565b600080604083850312156200034557600080fd5b825163ffffffff811681146200035a57600080fd5b60208401519092506001600160a01b03811681146200037857600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600082821015620003ae57620003ae62000383565b500390565b634e487b7160e01b600052603260045260246000fd5b60008219821115620003df57620003df62000383565b500190565b600060018201620003f957620003f962000383565b5060010190565b614b8880620004106000396000f3fe608060405260043610620001245760003560e01c80635a64a1da11620000b2578063b7e6a7d4116200007d578063d02103ca1162000060578063d02103ca14620004bc578063e737588114620004eb578063ed6be5c9146200051f57600080fd5b8063b7e6a7d41462000462578063bab161bf146200048757600080fd5b80635a64a1da14620003145780635d5d326f14620003d157806381b1c17414620003f65780638624c35c146200043d57600080fd5b8063318aee3d11620000f3578063318aee3d14620002265780633ae0504714620002af5780633da8168214620002c7578063508935f814620002fd57600080fd5b806322e95f2c14620001295780632c3f58cd14620001785780632dfdf0b514620001d05780632f3a3d5d14620001f7575b600080fd5b3480156200013657600080fd5b506200014e620001483660046200281d565b62000536565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200018557600080fd5b50620001ce6200019736600462002859565b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b005b348015620001dd57600080fd5b50620001e860415481565b6040519081526020016200016f565b3480156200020457600080fd5b506047546200014e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200023357600080fd5b506200027d6200024536600462002877565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016200016f565b348015620002bc57600080fd5b50620001e8620005d9565b348015620002d457600080fd5b50620002ec620002e636600462002996565b620006b3565b60405190151581526020016200016f565b620001ce6200030e36600462002a04565b620007b3565b3480156200032157600080fd5b50620001e86200033336600462002ac0565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b348015620003de57600080fd5b50620001ce620003f036600462002bd8565b62000d9d565b3480156200040357600080fd5b506200014e6200041536600462002cbf565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200044a57600080fd5b50620001ce6200045c3660046200281d565b6200184c565b3480156200046f57600080fd5b506200014e620004813660046200281d565b62001aca565b3480156200049457600080fd5b50604254620004a69063ffffffff1681565b60405163ffffffff90911681526020016200016f565b348015620004c957600080fd5b506046546200014e9073ffffffffffffffffffffffffffffffffffffffff1681565b348015620004f857600080fd5b50620002ec6200050a36600462002cbf565b60436020526000908152604090205460ff1681565b3480156200052c57600080fd5b50620004a6600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006ab57816001166001036200064357600181602081106200060f576200060f62002cd9565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000687565b82602182602081106200065a576200065a62002cd9565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200069460028362002d37565b915080620006a28162002d73565b915050620005e3565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007a657816001166001036200073057868181518110620006ee57620006ee62002cd9565b60200260200101518360405160200162000712929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000782565b8287828151811062000746576200074662002cd9565b602002602001015160405160200162000769929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200078f60028362002d37565b9150806200079d8162002d73565b915050620006c3565b5050909114949350505050565b60425463ffffffff9081169086160362000854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff8916620009105785341462000906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200084b565b6000915062000c24565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000a11576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af1158015620009d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009fe919062002dae565b5060208101518151909450925062000c22565b841562000a265762000a268a88888862001baf565b62000a4a73ffffffffffffffffffffffffffffffffffffffff8b1633308a62001fda565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000af6919081019062002e4d565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000b42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b8a919081019062002e4d565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bfc919062002e96565b60405160200162000c109392919062002f02565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000c63979695949392919062002f3f565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000d1790620020be565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000d3f620005d9565b6040518263ffffffff1660e01b815260040162000d5e91815260200190565b600060405180830381600087803b15801562000d7957600080fd5b505af115801562000d8e573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d4544000060448201526064016200084b565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ede919062002fac565b60000362000f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d4154434800000000000000000000000000000000000060648201526084016200084b565b60425463ffffffff8581169116146200100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d4154434800000000000000000000000000000060648201526084016200084b565b60425463ffffffff166200113c578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c820152605081018690526070808201939093528151808203909301835260900190528051910120620010ce908b8b63ffffffff168a620006b3565b62001136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200084b565b62001259565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c820152605081018690526070808201939093528151808203909301835260900190528051910120620011f1908b8b63ffffffff168b620006b3565b62001259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200084b565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff8516620013ca576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8516908490604051620012ec919062002fc6565b60006040518083038185875af1925050503d80600081146200132b576040519150601f19603f3d011682016040523d82523d6000602084013e62001330565b606091505b5050905080620013c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f454400000000000000000000000000000000000000000000000000000000000060648201526084016200084b565b50620017d5565b60425463ffffffff9081169087160362001407576200140173ffffffffffffffffffffffffffffffffffffffff8616848462002237565b620017d5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff16806200173457604754600090620014f29073ffffffffffffffffffffffffffffffffffffffff16846200228f565b90506000806000868060200190518101906200150f919062002fe4565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b81526004016200155895949392919062003065565b600060405180830381600087803b1580156200157357600080fd5b505af115801562001588573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620017229392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a150505050620017d2565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af1158015620017aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017d0919062002dae565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff16158080156200186d5750600054600160ff909116105b80620018895750303b15801562001889575060005460ff166001145b62001917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200084b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200197657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019f490620027c5565b604051809103906000f08015801562001a11573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905562001a616200236f565b801562001ac557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b8b9073ffffffffffffffffffffffffffffffffffffffff1682620024b7565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600062001bf283838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200253b92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200084b565b600080808080808062001cb8896004818d620030c5565b81019062001cc79190620030f1565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200084b565b73ffffffffffffffffffffffffffffffffffffffff8616301462001e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200084b565b8a851462001eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200084b565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001f85919062002fc6565b6000604051808303816000865af19150503d806000811462001fc4576040519150601f19603f3d011682016040523d82523d6000602084013e62001fc9565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020b89085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002542565b50505050565b806001620020cf60206002620032a2565b620020db9190620032b0565b604154106200216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200084b565b600160416000828254620021829190620032ca565b909155505060415460005b60208110156200222c5781600116600103620021c2578260018260208110620021ba57620021ba62002cd9565b015550505050565b60018160208110620021d857620021d862002cd9565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002215919062002d37565b915080620022238162002d73565b9150506200218d565b5062001ac5620032e5565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001ac59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002035565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff8116620005d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016200084b565b600054610100900460ff1662002408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200084b565b60005b6200241960016020620032b0565b811015620024b4576021816020811062002437576200243762002cd9565b0154602182602081106200244f576200244f62002cd9565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012060218260016200248a9190620032ca565b602081106200249d576200249d62002cd9565b015580620024ab8162002d73565b9150506200240b565b50565b6000620025348383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b6000620025a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620026559092919063ffffffff16565b80519091501562001ac55780806020019051810190620025c7919062002dae565b62001ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200084b565b606062001b8b84846000858573ffffffffffffffffffffffffffffffffffffffff85163b620026e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200084b565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200270c919062002fc6565b60006040518083038185875af1925050503d80600081146200274b576040519150601f19603f3d011682016040523d82523d6000602084013e62002750565b606091505b5091509150620027628282866200276d565b979650505050505050565b606083156200277e57508162002534565b8251156200278f5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084b919062003314565b611829806200332a83390190565b803563ffffffff81168114620027e857600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114620024b457600080fd5b8035620027e881620027ed565b600080604083850312156200283157600080fd5b6200283c83620027d3565b915060208301356200284e81620027ed565b809150509250929050565b6000602082840312156200286c57600080fd5b6200253482620027d3565b6000602082840312156200288a57600080fd5b81356200253481620027ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002910576200291062002897565b604052919050565b600082601f8301126200292a57600080fd5b8135602067ffffffffffffffff82111562002949576200294962002897565b8160051b6200295a828201620028c6565b92835284810182019282810190878511156200297557600080fd5b83870192505b8483101562002762578235825291830191908301906200297b565b60008060008060808587031215620029ad57600080fd5b84359350602085013567ffffffffffffffff80821115620029cd57600080fd5b620029db8883890162002918565b9450604087013591508082168214620029f357600080fd5b509396929550929360600135925050565b60008060008060008060a0878903121562002a1e57600080fd5b863562002a2b81620027ed565b955062002a3b60208801620027d3565b9450604087013562002a4d81620027ed565b935060608701359250608087013567ffffffffffffffff8082111562002a7257600080fd5b818901915089601f83011262002a8757600080fd5b81358181111562002a9757600080fd5b8a602082850101111562002aaa57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002ada57600080fd5b62002ae587620027d3565b9550602087013562002af781620027ed565b945062002b0760408801620027d3565b9350606087013562002b1981620027ed565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002b505762002b5062002897565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002b8e57600080fd5b813562002ba562002b9f8262002b33565b620028c6565b81815284602083860101111562002bbb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002bf957600080fd5b8a3567ffffffffffffffff8082111562002c1257600080fd5b62002c208e838f0162002918565b9b5062002c3060208e01620027d3565b9a5060408d0135995060608d0135985062002c4e60808e01620027d3565b975062002c5e60a08e0162002810565b965062002c6e60c08e01620027d3565b955062002c7e60e08e0162002810565b94506101008d013593506101208d013591508082111562002c9e57600080fd5b5062002cad8d828e0162002b7c565b9150509295989b9194979a5092959850565b60006020828403121562002cd257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002d6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002da75762002da762002d08565b5060010190565b60006020828403121562002dc157600080fd5b815180151581146200253457600080fd5b60005b8381101562002def57818101518382015260200162002dd5565b83811115620020b85750506000910152565b600082601f83011262002e1357600080fd5b815162002e2462002b9f8262002b33565b81815284602083860101111562002e3a57600080fd5b62001b8b82602083016020870162002dd2565b60006020828403121562002e6057600080fd5b815167ffffffffffffffff81111562002e7857600080fd5b62001b8b8482850162002e01565b60ff81168114620024b457600080fd5b60006020828403121562002ea957600080fd5b8151620025348162002e86565b6000815180845262002ed081602086016020860162002dd2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002f17606083018662002eb6565b828103602084015262002f2b818662002eb6565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002f9560e084018662002eb6565b915080841660c08401525098975050505050505050565b60006020828403121562002fbf57600080fd5b5051919050565b6000825162002fda81846020870162002dd2565b9190910192915050565b60008060006060848603121562002ffa57600080fd5b835167ffffffffffffffff808211156200301357600080fd5b620030218783880162002e01565b945060208601519150808211156200303857600080fd5b50620030478682870162002e01565b92505060408401516200305a8162002e86565b809150509250925092565b60a0815260006200307a60a083018862002eb6565b82810360208401526200308e818862002eb6565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b60008085851115620030d657600080fd5b83861115620030e457600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200310d57600080fd5b87356200311a81620027ed565b965060208801356200312c81620027ed565b9550604088013594506060880135935060808801356200314c8162002e86565b9699959850939692959460a0840135945060c09093013592915050565b600181815b80851115620031c857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ac57620031ac62002d08565b80851615620031ba57918102915b93841c93908002906200316e565b509250929050565b600082620031e157506001620005d3565b81620031f057506000620005d3565b8160018114620032095760028114620032145762003234565b6001915050620005d3565b60ff84111562003228576200322862002d08565b50506001821b620005d3565b5060208310610133831016604e8410600b841016171562003259575081810a620005d3565b62003265838362003169565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156200329a576200329a62002d08565b029392505050565b6000620025348383620031d0565b600082821015620032c557620032c562002d08565b500390565b60008219821115620032e057620032e062002d08565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60208152600062002534602083018462002eb656fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a2646970667358221220071a3a3e8b3a3d43e84c344417fec0a759911060bf7b5c82dd0052fb7caf27b864736f6c634300080f003360806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001245760003560e01c80635a64a1da11620000b2578063b7e6a7d4116200007d578063d02103ca1162000060578063d02103ca14620004bc578063e737588114620004eb578063ed6be5c9146200051f57600080fd5b8063b7e6a7d41462000462578063bab161bf146200048757600080fd5b80635a64a1da14620003145780635d5d326f14620003d157806381b1c17414620003f65780638624c35c146200043d57600080fd5b8063318aee3d11620000f3578063318aee3d14620002265780633ae0504714620002af5780633da8168214620002c7578063508935f814620002fd57600080fd5b806322e95f2c14620001295780632c3f58cd14620001785780632dfdf0b514620001d05780632f3a3d5d14620001f7575b600080fd5b3480156200013657600080fd5b506200014e620001483660046200281d565b62000536565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200018557600080fd5b50620001ce6200019736600462002859565b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b005b348015620001dd57600080fd5b50620001e860415481565b6040519081526020016200016f565b3480156200020457600080fd5b506047546200014e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200023357600080fd5b506200027d6200024536600462002877565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016200016f565b348015620002bc57600080fd5b50620001e8620005d9565b348015620002d457600080fd5b50620002ec620002e636600462002996565b620006b3565b60405190151581526020016200016f565b620001ce6200030e36600462002a04565b620007b3565b3480156200032157600080fd5b50620001e86200033336600462002ac0565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b348015620003de57600080fd5b50620001ce620003f036600462002bd8565b62000d9d565b3480156200040357600080fd5b506200014e6200041536600462002cbf565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156200044a57600080fd5b50620001ce6200045c3660046200281d565b6200184c565b3480156200046f57600080fd5b506200014e620004813660046200281d565b62001aca565b3480156200049457600080fd5b50604254620004a69063ffffffff1681565b60405163ffffffff90911681526020016200016f565b348015620004c957600080fd5b506046546200014e9073ffffffffffffffffffffffffffffffffffffffff1681565b348015620004f857600080fd5b50620002ec6200050a36600462002cbf565b60436020526000908152604090205460ff1681565b3480156200052c57600080fd5b50620004a6600081565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b6041546000908190815b6020811015620006ab57816001166001036200064357600181602081106200060f576200060f62002cd9565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925062000687565b82602182602081106200065a576200065a62002cd9565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b6200069460028362002d37565b915080620006a28162002d73565b915050620005e3565b509092915050565b60008467ffffffffffffffff8416825b6020811015620007a657816001166001036200073057868181518110620006ee57620006ee62002cd9565b60200260200101518360405160200162000712929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000782565b8287828151811062000746576200074662002cd9565b602002602001015160405160200162000769929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200078f60028362002d37565b9150806200079d8162002d73565b915050620006c3565b5050909114949350505050565b60425463ffffffff9081169086160362000854576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600080606073ffffffffffffffffffffffffffffffffffffffff8916620009105785341462000906576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200084b565b6000915062000c24565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000a11576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af1158015620009d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009fe919062002dae565b5060208101518151909450925062000c22565b841562000a265762000a268a88888862001baf565b62000a4a73ffffffffffffffffffffffffffffffffffffffff8b1633308a62001fda565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000af6919081019062002e4d565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000b42573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262000b8a919081019062002e4d565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bfc919062002e96565b60405160200162000c109392919062002f02565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162000c63979695949392919062002f3f565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062000d1790620020be565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62000d3f620005d9565b6040518263ffffffff1660e01b815260040162000d5e91815260200190565b600060405180830381600087803b15801562000d7957600080fd5b505af115801562000d8e573d6000803e3d6000fd5b50505050505050505050505050565b63ffffffff891660009081526043602052604090205460ff161562000e1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d4544000060448201526064016200084b565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000eb8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ede919062002fac565b60000362000f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d4154434800000000000000000000000000000000000060648201526084016200084b565b60425463ffffffff8581169116146200100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d4154434800000000000000000000000000000060648201526084016200084b565b60425463ffffffff166200113c578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c820152605081018690526070808201939093528151808203909301835260900190528051910120620010ce908b8b63ffffffff168a620006b3565b62001136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200084b565b62001259565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c820152605081018690526070808201939093528151808203909301835260900190528051910120620011f1908b8b63ffffffff168b620006b3565b62001259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200084b565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff8516620013ca576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8516908490604051620012ec919062002fc6565b60006040518083038185875af1925050503d80600081146200132b576040519150601f19603f3d011682016040523d82523d6000602084013e62001330565b606091505b5050905080620013c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f454400000000000000000000000000000000000000000000000000000000000060648201526084016200084b565b50620017d5565b60425463ffffffff9081169087160362001407576200140173ffffffffffffffffffffffffffffffffffffffff8616848462002237565b620017d5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff16806200173457604754600090620014f29073ffffffffffffffffffffffffffffffffffffffff16846200228f565b90506000806000868060200190518101906200150f919062002fe4565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b81526004016200155895949392919062003065565b600060405180830381600087803b1580156200157357600080fd5b505af115801562001588573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620017229392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a150505050620017d2565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af1158015620017aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017d0919062002dae565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b600054610100900460ff16158080156200186d5750600054600160ff909116105b80620018895750303b15801562001889575060005460ff166001145b62001917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200084b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200197657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055604051620019f490620027c5565b604051809103906000f08015801562001a11573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905562001a616200236f565b801562001ac557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012060475490915062001b8b9073ffffffffffffffffffffffffffffffffffffffff1682620024b7565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600062001bf283838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200253b92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462001ca1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200084b565b600080808080808062001cb8896004818d620030c5565b81019062001cc79190620030f1565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462001d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200084b565b73ffffffffffffffffffffffffffffffffffffffff8616301462001e39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200084b565b8a851462001eca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200084b565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162001f85919062002fc6565b6000604051808303816000865af19150503d806000811462001fc4576040519150601f19603f3d011682016040523d82523d6000602084013e62001fc9565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052620020b89085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002542565b50505050565b806001620020cf60206002620032a2565b620020db9190620032b0565b604154106200216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200084b565b600160416000828254620021829190620032ca565b909155505060415460005b60208110156200222c5781600116600103620021c2578260018260208110620021ba57620021ba62002cd9565b015550505050565b60018160208110620021d857620021d862002cd9565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262002215919062002d37565b915080620022238162002d73565b9150506200218d565b5062001ac5620032e5565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262001ac59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002035565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff8116620005d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016200084b565b600054610100900460ff1662002408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200084b565b60005b6200241960016020620032b0565b811015620024b4576021816020811062002437576200243762002cd9565b0154602182602081106200244f576200244f62002cd9565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012060218260016200248a9190620032ca565b602081106200249d576200249d62002cd9565b015580620024ab8162002d73565b9150506200240b565b50565b6000620025348383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6020015190565b6000620025a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620026559092919063ffffffff16565b80519091501562001ac55780806020019051810190620025c7919062002dae565b62001ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200084b565b606062001b8b84846000858573ffffffffffffffffffffffffffffffffffffffff85163b620026e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200084b565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200270c919062002fc6565b60006040518083038185875af1925050503d80600081146200274b576040519150601f19603f3d011682016040523d82523d6000602084013e62002750565b606091505b5091509150620027628282866200276d565b979650505050505050565b606083156200277e57508162002534565b8251156200278f5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084b919062003314565b611829806200332a83390190565b803563ffffffff81168114620027e857600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114620024b457600080fd5b8035620027e881620027ed565b600080604083850312156200283157600080fd5b6200283c83620027d3565b915060208301356200284e81620027ed565b809150509250929050565b6000602082840312156200286c57600080fd5b6200253482620027d3565b6000602082840312156200288a57600080fd5b81356200253481620027ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002910576200291062002897565b604052919050565b600082601f8301126200292a57600080fd5b8135602067ffffffffffffffff82111562002949576200294962002897565b8160051b6200295a828201620028c6565b92835284810182019282810190878511156200297557600080fd5b83870192505b8483101562002762578235825291830191908301906200297b565b60008060008060808587031215620029ad57600080fd5b84359350602085013567ffffffffffffffff80821115620029cd57600080fd5b620029db8883890162002918565b9450604087013591508082168214620029f357600080fd5b509396929550929360600135925050565b60008060008060008060a0878903121562002a1e57600080fd5b863562002a2b81620027ed565b955062002a3b60208801620027d3565b9450604087013562002a4d81620027ed565b935060608701359250608087013567ffffffffffffffff8082111562002a7257600080fd5b818901915089601f83011262002a8757600080fd5b81358181111562002a9757600080fd5b8a602082850101111562002aaa57600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c0878903121562002ada57600080fd5b62002ae587620027d3565b9550602087013562002af781620027ed565b945062002b0760408801620027d3565b9350606087013562002b1981620027ed565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff82111562002b505762002b5062002897565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011262002b8e57600080fd5b813562002ba562002b9f8262002b33565b620028c6565b81815284602083860101111562002bbb57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002bf957600080fd5b8a3567ffffffffffffffff8082111562002c1257600080fd5b62002c208e838f0162002918565b9b5062002c3060208e01620027d3565b9a5060408d0135995060608d0135985062002c4e60808e01620027d3565b975062002c5e60a08e0162002810565b965062002c6e60c08e01620027d3565b955062002c7e60e08e0162002810565b94506101008d013593506101208d013591508082111562002c9e57600080fd5b5062002cad8d828e0162002b7c565b9150509295989b9194979a5092959850565b60006020828403121562002cd257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262002d6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362002da75762002da762002d08565b5060010190565b60006020828403121562002dc157600080fd5b815180151581146200253457600080fd5b60005b8381101562002def57818101518382015260200162002dd5565b83811115620020b85750506000910152565b600082601f83011262002e1357600080fd5b815162002e2462002b9f8262002b33565b81815284602083860101111562002e3a57600080fd5b62001b8b82602083016020870162002dd2565b60006020828403121562002e6057600080fd5b815167ffffffffffffffff81111562002e7857600080fd5b62001b8b8482850162002e01565b60ff81168114620024b457600080fd5b60006020828403121562002ea957600080fd5b8151620025348162002e86565b6000815180845262002ed081602086016020860162002dd2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60608152600062002f17606083018662002eb6565b828103602084015262002f2b818662002eb6565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a084015262002f9560e084018662002eb6565b915080841660c08401525098975050505050505050565b60006020828403121562002fbf57600080fd5b5051919050565b6000825162002fda81846020870162002dd2565b9190910192915050565b60008060006060848603121562002ffa57600080fd5b835167ffffffffffffffff808211156200301357600080fd5b620030218783880162002e01565b945060208601519150808211156200303857600080fd5b50620030478682870162002e01565b92505060408401516200305a8162002e86565b809150509250925092565b60a0815260006200307a60a083018862002eb6565b82810360208401526200308e818862002eb6565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b60008085851115620030d657600080fd5b83861115620030e457600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200310d57600080fd5b87356200311a81620027ed565b965060208801356200312c81620027ed565b9550604088013594506060880135935060808801356200314c8162002e86565b9699959850939692959460a0840135945060c09093013592915050565b600181815b80851115620031c857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620031ac57620031ac62002d08565b80851615620031ba57918102915b93841c93908002906200316e565b509250929050565b600082620031e157506001620005d3565b81620031f057506000620005d3565b8160018114620032095760028114620032145762003234565b6001915050620005d3565b60ff84111562003228576200322862002d08565b50506001821b620005d3565b5060208310610133831016604e8410600b841016171562003259575081810a620005d3565b62003265838362003169565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156200329a576200329a62002d08565b029392505050565b6000620025348383620031d0565b600082821015620032c557620032c562002d08565b500390565b60008219821115620032e057620032e062002d08565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60208152600062002534602083018462002eb656fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a2646970667358221220071a3a3e8b3a3d43e84c344417fec0a759911060bf7b5c82dd0052fb7caf27b864736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5061509c806100206000396000f3fe608060405260043610620001935760003560e01c8063715018a611620000db578063b7e6a7d41162000089578063e73758811162000060578063e737588114620005ab578063ed6be5c914620005df578063f2fde38b14620005f657600080fd5b8063b7e6a7d41462000522578063bab161bf1462000547578063d02103ca146200057c57600080fd5b80638624c35c11620000be5780638624c35c14620004b85780638da5cb5b14620004dd57806391e57e2d146200050a57600080fd5b8063715018a6146200045957806381b1c174146200047157600080fd5b8063318aee3d1162000145578063508935f8116200011c578063508935f814620003605780635a64a1da14620003775780635d5d326f146200043457600080fd5b8063318aee3d14620002895780633ae0504714620003125780633da81682146200032a57600080fd5b80632c3f58cd116200017a5780632c3f58cd146200020e5780632dfdf0b514620002335780632f3a3d5d146200025a57600080fd5b806322e95f2c14620001985780632b5e42e714620001e7575b600080fd5b348015620001a557600080fd5b50620001bd620001b736600462002d31565b6200061b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015620001f457600080fd5b506200020c6200020636600462002d6d565b620006be565b005b3480156200021b57600080fd5b506200020c6200022d36600462002d87565b620006cd565b3480156200024057600080fd5b506200024b60415481565b604051908152602001620001de565b3480156200026757600080fd5b50604754620001bd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200029657600080fd5b50620002e0620002a836600462002da5565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff909116602083015201620001de565b3480156200031f57600080fd5b506200024b6200070e565b3480156200033757600080fd5b506200034f6200034936600462002ec4565b620007e8565b6040519015158152602001620001de565b6200020c6200037136600462002f32565b620008e8565b3480156200038457600080fd5b506200024b6200039636600462002fee565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200044157600080fd5b506200020c6200045336600462003106565b620009be565b3480156200046657600080fd5b506200020c6200146d565b3480156200047e57600080fd5b50620001bd6200049036600462002d6d565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620004c557600080fd5b506200020c620004d736600462002d31565b62001485565b348015620004ea57600080fd5b50607a5473ffffffffffffffffffffffffffffffffffffffff16620001bd565b3480156200051757600080fd5b506200024b60ac5481565b3480156200052f57600080fd5b50620001bd6200054136600462002d31565b62001719565b3480156200055457600080fd5b50604254620005669063ffffffff1681565b60405163ffffffff9091168152602001620001de565b3480156200058957600080fd5b50604654620001bd9073ffffffffffffffffffffffffffffffffffffffff1681565b348015620005b857600080fd5b506200034f620005ca36600462002d6d565b60436020526000908152604090205460ff1681565b348015620005ec57600080fd5b5062000566600081565b3480156200060357600080fd5b506200020c6200061536600462002da5565b620017e2565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b620006c86200189f565b60ac55565b620006d76200189f565b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6041546000908190815b6020811015620007e05781600116600103620007785760018160208110620007445762000744620031ed565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250620007bc565b82602182602081106200078f576200078f620031ed565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b620007c96002836200324b565b915080620007d78162003287565b91505062000718565b509092915050565b60008467ffffffffffffffff8416825b6020811015620008db57816001166001036200086557868181518110620008235762000823620031ed565b60200260200101518360405160200162000847929190918252602082015260400190565b604051602081830303815290604052805190602001209250620008b7565b828782815181106200087b576200087b620031ed565b60200260200101516040516020016200089e929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b620008c46002836200324b565b915080620008d28162003287565b915050620007f8565b5050909114949350505050565b60ac54341115620009a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b620009b686868686868662001922565b505050505050565b63ffffffff891660009081526043602052604090205460ff161562000a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d4544000060448201526064016200099d565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff9190620032c2565b60000362000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d4154434800000000000000000000000000000000000060648201526084016200099d565b60425463ffffffff85811691161462000c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d4154434800000000000000000000000000000060648201526084016200099d565b60425463ffffffff1662000d5d578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c82015260508101869052607080820193909352815180820390930183526090019052805191012062000cef908b8b63ffffffff168a620007e8565b62000d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200099d565b62000e7a565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c82015260508101869052607080820193909352815180820390930183526090019052805191012062000e12908b8b63ffffffff168b620007e8565b62000e7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200099d565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662000feb576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162000f0d91906200330b565b60006040518083038185875af1925050503d806000811462000f4c576040519150601f19603f3d011682016040523d82523d6000602084013e62000f51565b606091505b505090508062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f454400000000000000000000000000000000000000000000000000000000000060648201526084016200099d565b50620013f6565b60425463ffffffff9081169087160362001028576200102273ffffffffffffffffffffffffffffffffffffffff8616848462001f08565b620013f6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff16806200135557604754600090620011139073ffffffffffffffffffffffffffffffffffffffff168462001fde565b905060008060008680602001905181019062001130919062003385565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b81526004016200117995949392919062003452565b600060405180830381600087803b1580156200119457600080fd5b505af1158015620011a9573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620013439392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a150505050620013f3565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af1158015620013cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013f19190620034b2565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b620014776200189f565b620014836000620020be565b565b600054610100900460ff1615808015620014a65750600054600160ff909116105b80620014c25750303b158015620014c2575060005460ff166001145b62001550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200099d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015620015af57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556040516200162d9062002cd9565b604051809103906000f0801580156200164a573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556200169a62002135565b620016a46200227a565b6703782dace9d9000060ac5580156200171457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120604754909150620017da9073ffffffffffffffffffffffffffffffffffffffff16826200231d565b949350505050565b620017ec6200189f565b73ffffffffffffffffffffffffffffffffffffffff811662001891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200099d565b6200189c81620020be565b50565b607a5473ffffffffffffffffffffffffffffffffffffffff16331462001483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200099d565b60425463ffffffff90811690861603620019bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200099d565b600080606073ffffffffffffffffffffffffffffffffffffffff891662001a7b5785341462001a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200099d565b6000915062001d8f565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001b7c576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562001b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b699190620034b2565b5060208101518151909450925062001d8d565b841562001b915762001b918a888888620023a1565b62001bb573ffffffffffffffffffffffffffffffffffffffff8b1633308a620027cc565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001c19573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001c619190810190620034d6565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001cad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001cf59190810190620034d6565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d6791906200350f565b60405160200162001d7b939291906200352f565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162001dce97969594939291906200356c565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062001e829062002832565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62001eaa6200070e565b6040518263ffffffff1660e01b815260040162001ec991815260200190565b600060405180830381600087803b15801562001ee457600080fd5b505af115801562001ef9573d6000803e3d6000fd5b50505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052620017149084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620029ab565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff8116620006b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016200099d565b607a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620021ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b60005b620021df60016020620035d9565b8110156200189c5760218160208110620021fd57620021fd620031ed565b015460218260208110620022155762002215620031ed565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620022509190620035f3565b60208110620022635762002263620031ed565b015580620022718162003287565b915050620021d1565b600054610100900460ff1662002313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b6200148362002abe565b60006200239a8383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000620023e483838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002b6292505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462002493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200099d565b6000808080808080620024aa896004818d6200360e565b810190620024b991906200363a565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462002584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200099d565b73ffffffffffffffffffffffffffffffffffffffff861630146200262b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200099d565b8a8514620026bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200099d565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e16916200277791906200330b565b6000604051808303816000865af19150503d8060008114620027b6576040519150601f19603f3d011682016040523d82523d6000602084013e620027bb565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526200282c9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162001f5b565b50505050565b8060016200284360206002620037eb565b6200284f9190620035d9565b60415410620028e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200099d565b600160416000828254620028f69190620035f3565b909155505060415460005b6020811015620029a05781600116600103620029365782600182602081106200292e576200292e620031ed565b015550505050565b600181602081106200294c576200294c620031ed565b015460408051602081019290925281018490526060016040516020818303038152906040528051906020012092506002826200298991906200324b565b915080620029978162003287565b91505062002901565b5062001714620037f9565b600062002a0f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1662002b699092919063ffffffff16565b80519091501562001714578080602001905181019062002a309190620034b2565b62001714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200099d565b600054610100900460ff1662002b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b6200148333620020be565b6020015190565b6060620017da84846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200099d565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405162002c2091906200330b565b60006040518083038185875af1925050503d806000811462002c5f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c64565b606091505b509150915062002c7682828662002c81565b979650505050505050565b6060831562002c925750816200239a565b82511562002ca35782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d919062003828565b611829806200383e83390190565b803563ffffffff8116811462002cfc57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200189c57600080fd5b803562002cfc8162002d01565b6000806040838503121562002d4557600080fd5b62002d508362002ce7565b9150602083013562002d628162002d01565b809150509250929050565b60006020828403121562002d8057600080fd5b5035919050565b60006020828403121562002d9a57600080fd5b6200239a8262002ce7565b60006020828403121562002db857600080fd5b81356200239a8162002d01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002e3e5762002e3e62002dc5565b604052919050565b600082601f83011262002e5857600080fd5b8135602067ffffffffffffffff82111562002e775762002e7762002dc5565b8160051b62002e8882820162002df4565b928352848101820192828101908785111562002ea357600080fd5b83870192505b8483101562002c765782358252918301919083019062002ea9565b6000806000806080858703121562002edb57600080fd5b84359350602085013567ffffffffffffffff8082111562002efb57600080fd5b62002f098883890162002e46565b945060408701359150808216821462002f2157600080fd5b509396929550929360600135925050565b60008060008060008060a0878903121562002f4c57600080fd5b863562002f598162002d01565b955062002f696020880162002ce7565b9450604087013562002f7b8162002d01565b935060608701359250608087013567ffffffffffffffff8082111562002fa057600080fd5b818901915089601f83011262002fb557600080fd5b81358181111562002fc557600080fd5b8a602082850101111562002fd857600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c087890312156200300857600080fd5b620030138762002ce7565b95506020870135620030258162002d01565b9450620030356040880162002ce7565b93506060870135620030478162002d01565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff8211156200307e576200307e62002dc5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112620030bc57600080fd5b8135620030d3620030cd8262003061565b62002df4565b818152846020838601011115620030e957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200312757600080fd5b8a3567ffffffffffffffff808211156200314057600080fd5b6200314e8e838f0162002e46565b9b506200315e60208e0162002ce7565b9a5060408d0135995060608d013598506200317c60808e0162002ce7565b97506200318c60a08e0162002d24565b96506200319c60c08e0162002ce7565b9550620031ac60e08e0162002d24565b94506101008d013593506101208d0135915080821115620031cc57600080fd5b50620031db8d828e01620030aa565b9150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003282577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620032bb57620032bb6200321c565b5060010190565b600060208284031215620032d557600080fd5b5051919050565b60005b83811015620032f9578181015183820152602001620032df565b838111156200282c5750506000910152565b600082516200331f818460208701620032dc565b9190910192915050565b600082601f8301126200333b57600080fd5b81516200334c620030cd8262003061565b8181528460208386010111156200336257600080fd5b620017da826020830160208701620032dc565b60ff811681146200189c57600080fd5b6000806000606084860312156200339b57600080fd5b835167ffffffffffffffff80821115620033b457600080fd5b620033c28783880162003329565b94506020860151915080821115620033d957600080fd5b50620033e88682870162003329565b9250506040840151620033fb8162003375565b809150509250925092565b6000815180845262003420816020860160208601620032dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60a0815260006200346760a083018862003406565b82810360208401526200347b818862003406565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600060208284031215620034c557600080fd5b815180151581146200239a57600080fd5b600060208284031215620034e957600080fd5b815167ffffffffffffffff8111156200350157600080fd5b620017da8482850162003329565b6000602082840312156200352257600080fd5b81516200239a8162003375565b60608152600062003544606083018662003406565b828103602084015262003558818662003406565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a0840152620035c260e084018662003406565b915080841660c08401525098975050505050505050565b600082821015620035ee57620035ee6200321c565b500390565b600082198211156200360957620036096200321c565b500190565b600080858511156200361f57600080fd5b838611156200362d57600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200365657600080fd5b8735620036638162002d01565b96506020880135620036758162002d01565b955060408801359450606088013593506080880135620036958162003375565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200371157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620036f557620036f56200321c565b808516156200370357918102915b93841c9390800290620036b7565b509250929050565b6000826200372a57506001620006b8565b816200373957506000620006b8565b81600181146200375257600281146200375d576200377d565b6001915050620006b8565b60ff8411156200377157620037716200321c565b50506001821b620006b8565b5060208310610133831016604e8410600b8410161715620037a2575081810a620006b8565b620037ae8383620036b2565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620037e357620037e36200321c565b029392505050565b60006200239a838362003719565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6020815260006200239a60208301846200340656fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a264697066735822122041b81085076df150c23359ece841c1df061b92460d436c8c3820d1f9f90ca69e64736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001935760003560e01c8063715018a611620000db578063b7e6a7d41162000089578063e73758811162000060578063e737588114620005ab578063ed6be5c914620005df578063f2fde38b14620005f657600080fd5b8063b7e6a7d41462000522578063bab161bf1462000547578063d02103ca146200057c57600080fd5b80638624c35c11620000be5780638624c35c14620004b85780638da5cb5b14620004dd57806391e57e2d146200050a57600080fd5b8063715018a6146200045957806381b1c174146200047157600080fd5b8063318aee3d1162000145578063508935f8116200011c578063508935f814620003605780635a64a1da14620003775780635d5d326f146200043457600080fd5b8063318aee3d14620002895780633ae0504714620003125780633da81682146200032a57600080fd5b80632c3f58cd116200017a5780632c3f58cd146200020e5780632dfdf0b514620002335780632f3a3d5d146200025a57600080fd5b806322e95f2c14620001985780632b5e42e714620001e7575b600080fd5b348015620001a557600080fd5b50620001bd620001b736600462002d31565b6200061b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015620001f457600080fd5b506200020c6200020636600462002d6d565b620006be565b005b3480156200021b57600080fd5b506200020c6200022d36600462002d87565b620006cd565b3480156200024057600080fd5b506200024b60415481565b604051908152602001620001de565b3480156200026757600080fd5b50604754620001bd9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200029657600080fd5b50620002e0620002a836600462002da5565b60456020526000908152604090205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff909116602083015201620001de565b3480156200031f57600080fd5b506200024b6200070e565b3480156200033757600080fd5b506200034f6200034936600462002ec4565b620007e8565b6040519015158152602001620001de565b6200020c6200037136600462002f32565b620008e8565b3480156200038457600080fd5b506200024b6200039636600462002fee565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e098891b81166020808401919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006060998a1b811660248501529790991b1660388201529390951b909316603c830152605082015260708082019290925282518082039092018252609001909152805191012090565b3480156200044157600080fd5b506200020c6200045336600462003106565b620009be565b3480156200046657600080fd5b506200020c6200146d565b3480156200047e57600080fd5b50620001bd6200049036600462002d6d565b60446020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620004c557600080fd5b506200020c620004d736600462002d31565b62001485565b348015620004ea57600080fd5b50607a5473ffffffffffffffffffffffffffffffffffffffff16620001bd565b3480156200051757600080fd5b506200024b60ac5481565b3480156200052f57600080fd5b50620001bd6200054136600462002d31565b62001719565b3480156200055457600080fd5b50604254620005669063ffffffff1681565b60405163ffffffff9091168152602001620001de565b3480156200058957600080fd5b50604654620001bd9073ffffffffffffffffffffffffffffffffffffffff1681565b348015620005b857600080fd5b506200034f620005ca36600462002d6d565b60436020526000908152604090205460ff1681565b348015620005ec57600080fd5b5062000566600081565b3480156200060357600080fd5b506200020c6200061536600462002da5565b620017e2565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166024830152825160188184030181526038909201835281519181019190912060009081526044909152205473ffffffffffffffffffffffffffffffffffffffff165b92915050565b620006c86200189f565b60ac55565b620006d76200189f565b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6041546000908190815b6020811015620007e05781600116600103620007785760018160208110620007445762000744620031ed565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250620007bc565b82602182602081106200078f576200078f620031ed565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b620007c96002836200324b565b915080620007d78162003287565b91505062000718565b509092915050565b60008467ffffffffffffffff8416825b6020811015620008db57816001166001036200086557868181518110620008235762000823620031ed565b60200260200101518360405160200162000847929190918252602082015260400190565b604051602081830303815290604052805190602001209250620008b7565b828782815181106200087b576200087b620031ed565b60200260200101516040516020016200089e929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b620008c46002836200324b565b915080620008d28162003287565b915050620007f8565b5050909114949350505050565b60ac54341115620009a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b620009b686868686868662001922565b505050505050565b63ffffffff891660009081526043602052604090205460ff161562000a40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4272696467653a3a636c61696d3a20414c52454144595f434c41494d4544000060448201526064016200099d565b6046546040805160208082018c90528183018b9052825180830384018152606083019384905280519101207f257b363200000000000000000000000000000000000000000000000000000000909252606481019190915273ffffffffffffffffffffffffffffffffffffffff9091169063257b3632906084016020604051808303816000875af115801562000ad9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aff9190620032c2565b60000362000b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4272696467653a3a636c61696d3a20474c4f42414c5f455849545f524f4f545f60448201527f444f45535f4e4f545f4d4154434800000000000000000000000000000000000060648201526084016200099d565b60425463ffffffff85811691161462000c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4272696467653a3a636c61696d3a2044455354494e4154494f4e5f4e4554574f60448201527f524b5f444f45535f4e4f545f4d4154434800000000000000000000000000000060648201526084016200099d565b60425463ffffffff1662000d5d578051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c82015260508101869052607080820193909352815180820390930183526090019052805191012062000cef908b8b63ffffffff168a620007e8565b62000d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200099d565b62000e7a565b8051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e08b811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c811b82166024860152918b901b909216603884015288901b16603c82015260508101869052607080820193909352815180820390930183526090019052805191012062000e12908b8b63ffffffff168b620007e8565b62000e7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4272696467653a3a636c61696d3a20534d545f494e56414c494400000000000060448201526064016200099d565b63ffffffff8916600090815260436020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff851662000feb576040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff851690849060405162000f0d91906200330b565b60006040518083038185875af1925050503d806000811462000f4c576040519150601f19603f3d011682016040523d82523d6000602084013e62000f51565b606091505b505090508062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f4272696467653a3a636c61696d3a204554485f5452414e534645525f4641494c60448201527f454400000000000000000000000000000000000000000000000000000000000060648201526084016200099d565b50620013f6565b60425463ffffffff9081169087160362001028576200102273ffffffffffffffffffffffffffffffffffffffff8616848462001f08565b620013f6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606087901b166024820152600090603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000818152604490935291205490915073ffffffffffffffffffffffffffffffffffffffff16806200135557604754600090620011139073ffffffffffffffffffffffffffffffffffffffff168462001fde565b905060008060008680602001905181019062001130919062003385565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16636c9452218484848d8d6040518663ffffffff1660e01b81526004016200117995949392919062003452565b600060405180830381600087803b1580156200119457600080fd5b505af1158015620011a9573d6000803e3d6000fd5b50505050836044600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052808d63ffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff16815250604560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c86604051620013439392919063ffffffff93909316835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b60405180910390a150505050620013f3565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690528216906340c10f19906044016020604051808303816000875af1158015620013cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013f19190620034b2565b505b50505b6040805163ffffffff8b811682528816602082015273ffffffffffffffffffffffffffffffffffffffff87811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b620014776200189f565b620014836000620020be565b565b600054610100900460ff1615808015620014a65750600054600160ff909116105b80620014c25750303b158015620014c2575060005460ff166001145b62001550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200099d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015620015af57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b604280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8516179055604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790556040516200162d9062002cd9565b604051809103906000f0801580156200164a573d6000803e3d6000fd5b50604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556200169a62002135565b620016a46200227a565b6703782dace9d9000060ac5580156200171457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1660208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660248201526000908190603801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120604754909150620017da9073ffffffffffffffffffffffffffffffffffffffff16826200231d565b949350505050565b620017ec6200189f565b73ffffffffffffffffffffffffffffffffffffffff811662001891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200099d565b6200189c81620020be565b50565b607a5473ffffffffffffffffffffffffffffffffffffffff16331462001483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200099d565b60425463ffffffff90811690861603620019bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200099d565b600080606073ffffffffffffffffffffffffffffffffffffffff891662001a7b5785341462001a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200099d565b6000915062001d8f565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526045602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001b7c576040517f9dc29fac0000000000000000000000000000000000000000000000000000000081523360048201526024810188905273ffffffffffffffffffffffffffffffffffffffff8b1690639dc29fac906044016020604051808303816000875af115801562001b43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b699190620034b2565b5060208101518151909450925062001d8d565b841562001b915762001b918a888888620023a1565b62001bb573ffffffffffffffffffffffffffffffffffffffff8b1633308a620027cc565b899350604260009054906101000a900463ffffffff1692508973ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001c19573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001c619190810190620034d6565b8a73ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001cad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405262001cf59190810190620034d6565b8b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001d41573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001d6791906200350f565b60405160200162001d7b939291906200352f565b60405160208183030381529060405291505b505b7ff0b963192bdc6349c23af9bd17294b4c7b9b5a73a2a9939610ea18ffd1c5dc2a82848a8a8a8660415460405162001dce97969594939291906200356c565b60405180910390a18051602080830191909120604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087811b8216838701527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a811b82166024860152918f901b90921660388401528c901b16603c820152605081018a9052607080820193909352815180820390930183526090019052805191012062001e829062002832565b60465473ffffffffffffffffffffffffffffffffffffffff166333d6247d62001eaa6200070e565b6040518263ffffffff1660e01b815260040162001ec991815260200190565b600060405180830381600087803b15801562001ee457600080fd5b505af115801562001ef9573d6000803e3d6000fd5b50505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052620017149084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152620029ab565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152826037826000f591505073ffffffffffffffffffffffffffffffffffffffff8116620006b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f455243313136373a2063726561746532206661696c656400000000000000000060448201526064016200099d565b607a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16620021ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b60005b620021df60016020620035d9565b8110156200189c5760218160208110620021fd57620021fd620031ed565b015460218260208110620022155762002215620031ed565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206021826001620022509190620035f3565b60208110620022635762002263620031ed565b015580620022718162003287565b915050620021d1565b600054610100900460ff1662002313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b6200148362002abe565b60006200239a8383306040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606093841b60148201527f5af43d82803e903d91602b57fd5bf3ff000000000000000000000000000000006028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6000620023e483838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002b6292505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fd505accf000000000000000000000000000000000000000000000000000000001462002493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200099d565b6000808080808080620024aa896004818d6200360e565b810190620024b991906200363a565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462002584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200099d565b73ffffffffffffffffffffffffffffffffffffffff861630146200262b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200099d565b8a8514620026bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200099d565b6040805173ffffffffffffffffffffffffffffffffffffffff89811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e16916200277791906200330b565b6000604051808303816000865af19150503d8060008114620027b6576040519150601f19603f3d011682016040523d82523d6000602084013e620027bb565b606091505b505050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526200282c9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162001f5b565b50505050565b8060016200284360206002620037eb565b6200284f9190620035d9565b60415410620028e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200099d565b600160416000828254620028f69190620035f3565b909155505060415460005b6020811015620029a05781600116600103620029365782600182602081106200292e576200292e620031ed565b015550505050565b600181602081106200294c576200294c620031ed565b015460408051602081019290925281018490526060016040516020818303038152906040528051906020012092506002826200298991906200324b565b915080620029978162003287565b91505062002901565b5062001714620037f9565b600062002a0f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1662002b699092919063ffffffff16565b80519091501562001714578080602001905181019062002a309190620034b2565b62001714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200099d565b600054610100900460ff1662002b57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200099d565b6200148333620020be565b6020015190565b6060620017da84846000858573ffffffffffffffffffffffffffffffffffffffff85163b62002bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200099d565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405162002c2091906200330b565b60006040518083038185875af1925050503d806000811462002c5f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c64565b606091505b509150915062002c7682828662002c81565b979650505050505050565b6060831562002c925750816200239a565b82511562002ca35782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200099d919062003828565b611829806200383e83390190565b803563ffffffff8116811462002cfc57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff811681146200189c57600080fd5b803562002cfc8162002d01565b6000806040838503121562002d4557600080fd5b62002d508362002ce7565b9150602083013562002d628162002d01565b809150509250929050565b60006020828403121562002d8057600080fd5b5035919050565b60006020828403121562002d9a57600080fd5b6200239a8262002ce7565b60006020828403121562002db857600080fd5b81356200239a8162002d01565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562002e3e5762002e3e62002dc5565b604052919050565b600082601f83011262002e5857600080fd5b8135602067ffffffffffffffff82111562002e775762002e7762002dc5565b8160051b62002e8882820162002df4565b928352848101820192828101908785111562002ea357600080fd5b83870192505b8483101562002c765782358252918301919083019062002ea9565b6000806000806080858703121562002edb57600080fd5b84359350602085013567ffffffffffffffff8082111562002efb57600080fd5b62002f098883890162002e46565b945060408701359150808216821462002f2157600080fd5b509396929550929360600135925050565b60008060008060008060a0878903121562002f4c57600080fd5b863562002f598162002d01565b955062002f696020880162002ce7565b9450604087013562002f7b8162002d01565b935060608701359250608087013567ffffffffffffffff8082111562002fa057600080fd5b818901915089601f83011262002fb557600080fd5b81358181111562002fc557600080fd5b8a602082850101111562002fd857600080fd5b6020830194508093505050509295509295509295565b60008060008060008060c087890312156200300857600080fd5b620030138762002ce7565b95506020870135620030258162002d01565b9450620030356040880162002ce7565b93506060870135620030478162002d01565b9598949750929560808101359460a0909101359350915050565b600067ffffffffffffffff8211156200307e576200307e62002dc5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112620030bc57600080fd5b8135620030d3620030cd8262003061565b62002df4565b818152846020838601011115620030e957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200312757600080fd5b8a3567ffffffffffffffff808211156200314057600080fd5b6200314e8e838f0162002e46565b9b506200315e60208e0162002ce7565b9a5060408d0135995060608d013598506200317c60808e0162002ce7565b97506200318c60a08e0162002d24565b96506200319c60c08e0162002ce7565b9550620031ac60e08e0162002d24565b94506101008d013593506101208d0135915080821115620031cc57600080fd5b50620031db8d828e01620030aa565b9150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003282577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620032bb57620032bb6200321c565b5060010190565b600060208284031215620032d557600080fd5b5051919050565b60005b83811015620032f9578181015183820152602001620032df565b838111156200282c5750506000910152565b600082516200331f818460208701620032dc565b9190910192915050565b600082601f8301126200333b57600080fd5b81516200334c620030cd8262003061565b8181528460208386010111156200336257600080fd5b620017da826020830160208701620032dc565b60ff811681146200189c57600080fd5b6000806000606084860312156200339b57600080fd5b835167ffffffffffffffff80821115620033b457600080fd5b620033c28783880162003329565b94506020860151915080821115620033d957600080fd5b50620033e88682870162003329565b9250506040840151620033fb8162003375565b809150509250925092565b6000815180845262003420816020860160208601620032dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60a0815260006200346760a083018862003406565b82810360208401526200347b818862003406565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b600060208284031215620034c557600080fd5b815180151581146200239a57600080fd5b600060208284031215620034e957600080fd5b815167ffffffffffffffff8111156200350157600080fd5b620017da8482850162003329565b6000602082840312156200352257600080fd5b81516200239a8162003375565b60608152600062003544606083018662003406565b828103602084015262003558818662003406565b91505060ff83166040830152949350505050565b600063ffffffff808a16835273ffffffffffffffffffffffffffffffffffffffff808a166020850152818916604085015280881660608501525085608084015260e060a0840152620035c260e084018662003406565b915080841660c08401525098975050505050505050565b600082821015620035ee57620035ee6200321c565b500390565b600082198211156200360957620036096200321c565b500190565b600080858511156200361f57600080fd5b838611156200362d57600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200365657600080fd5b8735620036638162002d01565b96506020880135620036758162002d01565b955060408801359450606088013593506080880135620036958162003375565b9699959850939692959460a0840135945060c09093013592915050565b600181815b808511156200371157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620036f557620036f56200321c565b808516156200370357918102915b93841c9390800290620036b7565b509250929050565b6000826200372a57506001620006b8565b816200373957506000620006b8565b81600181146200375257600281146200375d576200377d565b6001915050620006b8565b60ff8411156200377157620037716200321c565b50506001821b620006b8565b5060208310610133831016604e8410600b8410161715620037a2575081810a620006b8565b620037ae8383620036b2565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115620037e357620037e36200321c565b029392505050565b60006200239a838362003719565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6020815260006200239a60208301846200340656fe60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b6200080a1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b6116cd806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80636c94522111610097578063a3c573eb11610066578063a3c573eb1461021c578063a457c2d714610261578063a9059cbb14610274578063dd62ed3e1461028757600080fd5b80636c945221146101b657806370a08231146101cb57806395d89b41146102015780639dc29fac1461020957600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461019057806340c10f19146101a357600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b6101026102cd565b60405161010f91906111c0565b60405180910390f35b61012b61012636600461125c565b61035f565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b366004611286565b610377565b60655474010000000000000000000000000000000000000000900460ff1660405160ff909116815260200161010f565b61012b61019e36600461125c565b61039b565b61012b6101b136600461125c565b6103e7565b6101c96101c436600461139c565b610483565b005b61013f6101d9366004611431565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61010261068e565b61012b61021736600461125c565b61069d565b60655461023c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010f565b61012b61026f36600461125c565b61072b565b61012b61028236600461125c565b6107fc565b61013f610295366004611453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6060603680546102dc90611486565b80601f016020809104026020016040519081016040528092919081815260200182805461030890611486565b80156103555780601f1061032a57610100808354040283529160200191610355565b820191906000526020600020905b81548152906001019060200180831161033857829003601f168201915b5050505050905090565b60003361036d818585610826565b5060019392505050565b6000336103858582856109da565b610390858585610ab1565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061036d90829086906103e2908790611508565b610826565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f42524944474500000000000000000060448201526064015b60405180910390fd5b61047a8383610d64565b50600192915050565b600054610100900460ff16158080156104a35750600054600160ff909116105b806104bd5750303b1580156104bd575060005460ff166001145b610549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610467565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105a757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105b18686610e85565b606580547fffffffffffffffffffffff00000000000000000000000000000000000000000016337fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16177401000000000000000000000000000000000000000060ff8716021790556106238383610d64565b801561068657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060603780546102dc90611486565b60655460009073ffffffffffffffffffffffffffffffffffffffff163314610721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e577261707065643a4e4f545f4252494447450000000000000000006044820152606401610467565b61047a8383610f26565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610467565b6103908286868403610826565b60003361036d818585610ab1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b73ffffffffffffffffffffffffffffffffffffffff83166108c8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff821661096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aab5781811015610a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610467565b610aab8484848403610826565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff8216610bf7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610cad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610cf1908490611508565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d5791815260200190565b60405180910390a3610aab565b73ffffffffffffffffffffffffffffffffffffffff8216610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610467565b8060356000828254610df39190611508565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290610e2d908490611508565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600054610100900460ff16610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b610e818282611110565b73ffffffffffffffffffffffffffffffffffffffff8216610fc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260409020548181101561107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610467565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906110bb908490611520565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109cd565b505050565b600054610100900460ff166111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610467565b60366111b3838261157d565b50603761110b828261157d565b600060208083528351808285015260005b818110156111ed578581018301518582016040015282016111d1565b818111156111ff576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125757600080fd5b919050565b6000806040838503121561126f57600080fd5b61127883611233565b946020939093013593505050565b60008060006060848603121561129b57600080fd5b6112a484611233565b92506112b260208501611233565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261130257600080fd5b813567ffffffffffffffff8082111561131d5761131d6112c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611363576113636112c2565b8160405283815286602085880101111561137c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156113b457600080fd5b853567ffffffffffffffff808211156113cc57600080fd5b6113d889838a016112f1565b965060208801359150808211156113ee57600080fd5b506113fb888289016112f1565b945050604086013560ff8116811461141257600080fd5b925061142060608701611233565b949793965091946080013592915050565b60006020828403121561144357600080fd5b61144c82611233565b9392505050565b6000806040838503121561146657600080fd5b61146f83611233565b915061147d60208401611233565b90509250929050565b600181811c9082168061149a57607f821691505b6020821081036114d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561151b5761151b6114d9565b500190565b600082821015611532576115326114d9565b500390565b601f82111561110b57600081815260208120601f850160051c8101602086101561155e5750805b601f850160051c820191505b818110156106865782815560010161156a565b815167ffffffffffffffff811115611597576115976112c2565b6115ab816115a58454611486565b84611537565b602080601f8311600181146115fe57600084156115c85750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610686565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561164b5788860151825594840194600190910190840161162c565b508582101561168757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b0190555056fea264697066735822122015dd8047eba7f7221e0d7792549e5a01ba1b6dfaad0c6a70dc82ef386e0c5cc464736f6c634300080f0033a264697066735822122041b81085076df150c23359ece841c1df061b92460d436c8c3820d1f9f90ca69e64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ProofOfEfficiencyMock.json b/compiled-contracts/ProofOfEfficiencyMock.json index bb27ad7bb..e174c0e0c 100644 --- a/compiled-contracts/ProofOfEfficiencyMock.json +++ b/compiled-contracts/ProofOfEfficiencyMock.json @@ -765,6 +765,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "string", + "name": "_networkName", + "type": "string" + } + ], + "name": "setNetworkName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -959,8 +972,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614608806100206000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063aa0f441811610186578063d2fd1b31116100e3578063e7a7ed0211610097578063f2fde38b11610071578063f2fde38b146107b0578063f7552761146107c3578063f7d2cd7f146107d257600080fd5b8063e7a7ed021461074d578063e8bf92ed1461077d578063eaeb077b1461079d57600080fd5b8063d307b743116100c8578063d307b7431461066a578063d8c276881461067d578063d8f54db01461071057600080fd5b8063d2fd1b3114610644578063d2fe3c341461065757600080fd5b8063b4d63f581161013a578063c89e42df1161011f578063c89e42df146105e5578063cfa8ed47146105f8578063d02103ca1461062457600080fd5b8063b4d63f5814610558578063b6b0b097146105bf57600080fd5b8063ac2eba981161016b578063ac2eba9814610532578063adc879e91461053b578063b02286c01461054f57600080fd5b8063aa0f441814610515578063ab9fc5ef1461052857600080fd5b80636b8616ce1161023f5780638c4a0af7116101f3578063959c2f47116101cd578063959c2f47146104e657806396dc3d39146104ef5780639b7967601461050257600080fd5b80638c4a0af7146104815780638da5cb5b1461049457806395297e24146104d357600080fd5b8063715018a611610224578063715018a61461045d57806379847057146104655780637fcb36531461046d57600080fd5b80636b8616ce146103ed5780636ff512cc1461044a57600080fd5b8063423fa85611610296578063542028d51161027b578063542028d5146103b15780635437988d146103b957806357177ef5146103cc57600080fd5b8063423fa85614610369578063456052671461038957600080fd5b8063116c40c3116102c7578063116c40c31461031657806319d8ac611461032957806325d0a8f51461035657600080fd5b8063076f9e36146102e3578063107bf28c146102f8575b600080fd5b6102f66102f13660046139c7565b6107e5565b005b610300610a89565b60405161030d9190613aae565b60405180910390f35b6102f6610324366004613ac1565b610b17565b60035461033d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161030d565b610300610364366004613ada565b610b24565b60035461033d9068010000000000000000900467ffffffffffffffff1681565b60035461033d90700100000000000000000000000000000000900467ffffffffffffffff1681565b610300610d58565b6102f66103c7366004613b49565b610d65565b6103df6103da366004613b66565b610db4565b60405190815260200161030d565b6104256103fb366004613b9b565b600160208190526000918252604090912080549181015460029091015467ffffffffffffffff1683565b60408051938452602084019290925267ffffffffffffffff169082015260600161030d565b6102f6610458366004613b49565b6110c8565b6102f6611203565b6103df611217565b60045461033d9067ffffffffffffffff1681565b6102f661048f366004613bcf565b611291565b603e5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b6102f66104e13660046139c7565b6113c5565b6103df60075481565b6102f66104fd366004613b9b565b611a0d565b6102f6610510366004613b9b565b611a50565b6102f6610523366004613b9b565b611a9f565b61033d62093a8081565b6103df60065481565b600a5461033d9067ffffffffffffffff1681565b6103df61ea6081565b610599610566366004613b9b565b6002602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff928316602085015291169082015260600161030d565b6000546104ae9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f66105f3366004613d21565b611fed565b6004546104ae9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546104ae9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610652366004613d56565b6120dc565b6103df610665366004613e2c565b6123d1565b6102f6610678366004613ac1565b61253f565b6103df61068b366004613eb5565b6040805160208082019a909a52808201989098526060880196909652608087019490945260a08601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b81168287015291811b821660c88601529190911b1660d0830152805180830360b801815260d89092019052805191012090565b60045461073d907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161030d565b60035461033d907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6008546104ae9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f66107ab366004613f29565b61254c565b6102f66107be366004613b49565b612a32565b6103df67016345785d8a000081565b6102f66107e0366004613f92565b612ae9565b6107ed613319565b6004546108059067ffffffffffffffff166001614166565b67ffffffffffffffff168467ffffffffffffffff16146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084015b60405180910390fd5b60035467ffffffffffffffff680100000000000000009091048116908516111561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b6004805467ffffffffffffffff1690600061099883614192565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550600685905560078690556005546040517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b505060405133925067ffffffffffffffff871691507f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050565b600b8054610a96906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac2906141b9565b8015610b0f5780601f10610ae457610100808354040283529160200191610b0f565b820191906000526020600020905b815481529060010190602001808311610af257829003601f168201915b505050505081565b610b1f613319565b600755565b600454606090610b3f9067ffffffffffffffff166001614166565b67ffffffffffffffff168263ffffffff1614610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108a3565b63ffffffff821660009081526002602052604081206001015467ffffffffffffffff8181169291829168010000000000000000909104168103610c4057505063ffffffff831660009081526002602052604090205467016345785d8a0000610ca5565b505063ffffffff8316600090815260026020818152604080842060019081015468010000000000000000900467ffffffffffffffff90811686528184529482902082516060810184528154808252928201549481018590529401549094169201919091525b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660c0808401919091527fffffffffffffffff00000000000000000000000000000000000000000000000086821b811660c485015291901b1660cc82015260d40160405160208183030381529060405293505050505b9392505050565b60098054610a96906141b9565b610d6d613319565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600454600090610dcf9067ffffffffffffffff166001614166565b67ffffffffffffffff168267ffffffffffffffff1614610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108a3565b67ffffffffffffffff808316600090815260026020526040812060010154808316928291680100000000000000009004168103610ed257505067ffffffffffffffff831660009081526002602052604090205467016345785d8a0000610f32565b505067ffffffffffffffff8084166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c088811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b600881101561103b577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b168252600890910190600101610ffa565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611070919061420c565b602060405180830381855afa15801561108d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110b09190614228565b6110ba9190614241565b9a9950505050505050505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b600480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0906020015b60405180910390a150565b61120b613319565b611215600061339a565b565b60035460009067ffffffffffffffff7001000000000000000000000000000000008204811691611266917801000000000000000000000000000000000000000000000000909104166001614166565b611270919061427c565b61128c9067ffffffffffffffff16670de0b6b3a76400006142a5565b905090565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b600480548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6906111f890831515815260200190565b6004546113dd9067ffffffffffffffff166001614166565b67ffffffffffffffff168467ffffffffffffffff161461147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084016108a3565b60035467ffffffffffffffff6801000000000000000090910481169085161115611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b67ffffffffffffffff8085166000908152600260205260408120600101548083169282916801000000000000000090041681036115b257505067ffffffffffffffff851660009081526002602052604090205467016345785d8a0000611612565b505067ffffffffffffffff8086166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018a9052608082018b905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b600881101561171b577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016116da565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611750919061420c565b602060405180830381855afa15801561176d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117909190614228565b61179a9190614241565b6008546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611804918d918d918d91906004016142e2565b602060405180830381865afa158015611821573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611845919061435c565b6118d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f494e56414c49445f50524f4f460000000000000000000000000000000000000060648201526084016108a3565b6004805467ffffffffffffffff169060006118eb83614192565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555060068b905560078c90556005546040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018e905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b50506000546119c8925062010000900473ffffffffffffffffffffffffffffffffffffffff1690503386613411565b604051339067ffffffffffffffff8c16907f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050505050505050565b611a15613319565b600480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b611a58613319565b6003805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114611b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108a3565b600354600090611bab908390700100000000000000000000000000000000900467ffffffffffffffff16614166565b905060008267ffffffffffffffff1611611c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b60035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115611d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016108a3565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611e415767ffffffffffffffff8082166000908152600160205260409020600201544291611d839162093a809116614166565b67ffffffffffffffff161115611e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016108a3565b60035467ffffffffffffffff68010000000000000000820481169170010000000000000000000000000000000090041660005b8467ffffffffffffffff16811015611f305781611e9081614192565b9250508280611e9e90614192565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668010000000000000000878416027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617429092169190911790559350819050611f2881614379565b915050611e74565b50600380544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a250505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b60096120ac82826143ff565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516111f89190613aae565b600054610100900460ff16158080156120fc5750600054600160ff909116105b806121165750303b158015612116575060005460ff166001145b6121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108a3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561220057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8d811691909117909255600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100008d851602179055600880549091168a83161790556006889055600480547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928916929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000087151502179055600961231885826143ff565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516179055600b61235983826143ff565b506123626134ea565b80156123c557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6040805160208082018c90528183018b905260608083018b9052608083018a905260a083018990527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b82168186015288811b821660c886015287901b1660d0840152835180840360b801815260d884018086528151919093012061016c84019094526054825284901b60f88301526000929161010c01835b60088110156124af577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b16825260089091019060010161246e565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516124e4919061420c565b602060405180830381855afa158015612501573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125249190614228565b61252e9190614241565b9d9c50505050505050505050505050565b612547613319565b600655565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108a3565b6000612633611217565b9050818111156126c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016108a3565b61ea60835110612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016108a3565b6000546127829062010000900473ffffffffffffffffffffffffffffffffffffffff16333084613589565b600554604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128169190614228565b60038054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861285083614192565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083813360405160200161288c93929190614519565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206003805478010000000000000000000000000000000000000000000000009081900467ffffffffffffffff908116600090815260019687905285812094909455825482900481168452848420909501879055905404831681522060020180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016429092169190911790553233036129cf57600354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612a2c565b600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612a2393929190614565565b60405180910390a25b50505050565b612a3a613319565b73ffffffffffffffffffffffffffffffffffffffff8116612add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108a3565b612ae68161339a565b50565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b8051612bdc3330612bb58467016345785d8a00006142a5565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16929190613589565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041660005b848110156131a0576000868281518110612c3057612c306145a3565b602002602001015190508467ffffffffffffffff16816040015167ffffffffffffffff1610158015612c70575042816040015167ffffffffffffffff1611155b612d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b60208101511580612dd1575060055460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291612d8b9160040190815260200190565b6020604051808303816000875af1158015612daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dce9190614228565b15155b612e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016108a3565b80515161ea6011612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016108a3565b83612efa81614192565b8251602080850151604051939850612f1794509192339101614519565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012067ffffffffffffffff8781166000908152600290945282842091825591840151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169282169290921790915595505b81606001515181101561318b5783612fba81614192565b945050600082606001518281518110612fd557612fd56145a3565b602002602001015190508667ffffffffffffffff168167ffffffffffffffff1610158015613024575067ffffffffffffffff808616600090815260016020526040902060020154811690821610155b801561303a5750428167ffffffffffffffff1611155b6130ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520696e736964652072616e6765000000000000000000000000000000608482015260a4016108a3565b856130f681614192565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016680100000000000000008a8416027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161791851691909117905591975090955081905061318381614379565b915050612fa3565b5050808061319890614379565b915050612c14565b5060035467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908216111561325d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016108a3565b6003805467ffffffffffffffff8581167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a25050505050565b603e5473ffffffffffffffffffffffffffffffffffffffff163314611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a3565b603e805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526134e59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135e7565b505050565b600054610100900460ff16613581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108a3565b6112156136f3565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a2c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613463565b6000613649826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137939092919063ffffffff16565b8051909150156134e55780806020019051810190613667919061435c565b6134e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108a3565b600054610100900460ff1661378a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108a3565b6112153361339a565b60606137a284846000856137aa565b949350505050565b60608247101561383c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108a3565b73ffffffffffffffffffffffffffffffffffffffff85163b6138ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108a3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516138e3919061420c565b60006040518083038185875af1925050503d8060008114613920576040519150601f19603f3d011682016040523d82523d6000602084013e613925565b606091505b5091509150613935828286613940565b979650505050505050565b6060831561394f575081610d51565b82511561395f5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a39190613aae565b803567ffffffffffffffff811681146139ab57600080fd5b919050565b80604081018310156139c157600080fd5b92915050565b60008060008060008061016087890312156139e157600080fd5b86359550602087013594506139f860408801613993565b9350613a0788606089016139b0565b9250610120870188811115613a1b57600080fd5b60a088019250613a2b89826139b0565b9150509295509295509295565b60005b83811015613a53578181015183820152602001613a3b565b83811115612a2c5750506000910152565b60008151808452613a7c816020860160208601613a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d516020830184613a64565b600060208284031215613ad357600080fd5b5035919050565b600080600060608486031215613aef57600080fd5b8335925060208401359150604084013563ffffffff81168114613b1157600080fd5b809150509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114612ae657600080fd5b80356139ab81613b1c565b600060208284031215613b5b57600080fd5b8135610d5181613b1c565b600080600060608486031215613b7b57600080fd5b8335925060208401359150613b9260408501613993565b90509250925092565b600060208284031215613bad57600080fd5b610d5182613993565b8015158114612ae657600080fd5b80356139ab81613bb6565b600060208284031215613be157600080fd5b8135610d5181613bb6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c3e57613c3e613bec565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c8b57613c8b613bec565b604052919050565b600082601f830112613ca457600080fd5b813567ffffffffffffffff811115613cbe57613cbe613bec565b613cef60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c44565b818152846020838601011115613d0457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613d3357600080fd5b813567ffffffffffffffff811115613d4a57600080fd5b6137a284828501613c93565b60008060008060008060008060006101208a8c031215613d7557600080fd5b8935613d8081613b1c565b985060208a0135613d9081613b1c565b9750613d9e60408b01613b3e565b965060608a01359550613db360808b01613b3e565b9450613dc160a08b01613bc4565b935060c08a013567ffffffffffffffff80821115613dde57600080fd5b613dea8d838e01613c93565b9450613df860e08d01613993565b93506101008c0135915080821115613e0f57600080fd5b50613e1c8c828d01613c93565b9150509295985092959850929598565b60008060008060008060008060006101208a8c031215613e4b57600080fd5b8935985060208a0135975060408a0135965060608a0135955060808a01359450613e7760a08b01613993565b9350613e8560c08b01613993565b9250613e9360e08b01613993565b91506101008a0135613ea481613b1c565b809150509295985092959850929598565b600080600080600080600080610100898b031215613ed257600080fd5b8835975060208901359650604089013595506060890135945060808901359350613efe60a08a01613993565b9250613f0c60c08a01613993565b9150613f1a60e08a01613993565b90509295985092959890939650565b60008060408385031215613f3c57600080fd5b823567ffffffffffffffff811115613f5357600080fd5b613f5f85828601613c93565b95602094909401359450505050565b600067ffffffffffffffff821115613f8857613f88613bec565b5060051b60200190565b60006020808385031215613fa557600080fd5b823567ffffffffffffffff80821115613fbd57600080fd5b818501915085601f830112613fd157600080fd5b8135613fe4613fdf82613f6e565b613c44565b81815260059190911b8301840190848101908883111561400357600080fd5b8585015b8381101561412a5780358581111561401e57600080fd5b86016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561405257600080fd5b61405a613c1b565b888201358781111561406b57600080fd5b6140798d8b83860101613c93565b8252506040808301358a83015261409260608401613993565b818301526080830135888111156140a95760008081fd5b8084019350508c603f8401126140bf5760008081fd5b898301356140cf613fdf82613f6e565b81815260059190911b84018201908b8101908f8311156140ef5760008081fd5b948301945b828610156141145761410586613993565b8252948c0194908c01906140f4565b6060850152505050845250918601918601614007565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851680830382111561418957614189614137565b01949350505050565b600067ffffffffffffffff8083168181036141af576141af614137565b6001019392505050565b600181811c908216806141cd57607f821691505b602082108103614206577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000825161421e818460208701613a38565b9190910192915050565b60006020828403121561423a57600080fd5b5051919050565b600082614277577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600067ffffffffffffffff8381169083168181101561429d5761429d614137565b039392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142dd576142dd614137565b500290565b61012081016040808784376000838201818152879190815b600281101561431a578484833790840182815292840192906001016142fa565b5050828760c0870137610100850181815286935091505b6001811015614350578251825260209283019290910190600101614331565b50505095945050505050565b60006020828403121561436e57600080fd5b8151610d5181613bb6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143aa576143aa614137565b5060010190565b601f8211156134e557600081815260208120601f850160051c810160208610156143d85750805b601f850160051c820191505b818110156143f7578281556001016143e4565b505050505050565b815167ffffffffffffffff81111561441957614419613bec565b61442d8161442784546141b9565b846143b1565b602080601f831160018114614480576000841561444a5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556143f7565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156144cd578886015182559484019460019091019084016144ae565b508582101561450957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000845161452b818460208901613a38565b919091019283525060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020820152603401919050565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061459a6060830184613a64565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220d93e6b3c9abd3027260831a60249b76635afed83f16d3621abc34c4abf81c08b64736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102de5760003560e01c8063aa0f441811610186578063d2fd1b31116100e3578063e7a7ed0211610097578063f2fde38b11610071578063f2fde38b146107b0578063f7552761146107c3578063f7d2cd7f146107d257600080fd5b8063e7a7ed021461074d578063e8bf92ed1461077d578063eaeb077b1461079d57600080fd5b8063d307b743116100c8578063d307b7431461066a578063d8c276881461067d578063d8f54db01461071057600080fd5b8063d2fd1b3114610644578063d2fe3c341461065757600080fd5b8063b4d63f581161013a578063c89e42df1161011f578063c89e42df146105e5578063cfa8ed47146105f8578063d02103ca1461062457600080fd5b8063b4d63f5814610558578063b6b0b097146105bf57600080fd5b8063ac2eba981161016b578063ac2eba9814610532578063adc879e91461053b578063b02286c01461054f57600080fd5b8063aa0f441814610515578063ab9fc5ef1461052857600080fd5b80636b8616ce1161023f5780638c4a0af7116101f3578063959c2f47116101cd578063959c2f47146104e657806396dc3d39146104ef5780639b7967601461050257600080fd5b80638c4a0af7146104815780638da5cb5b1461049457806395297e24146104d357600080fd5b8063715018a611610224578063715018a61461045d57806379847057146104655780637fcb36531461046d57600080fd5b80636b8616ce146103ed5780636ff512cc1461044a57600080fd5b8063423fa85611610296578063542028d51161027b578063542028d5146103b15780635437988d146103b957806357177ef5146103cc57600080fd5b8063423fa85614610369578063456052671461038957600080fd5b8063116c40c3116102c7578063116c40c31461031657806319d8ac611461032957806325d0a8f51461035657600080fd5b8063076f9e36146102e3578063107bf28c146102f8575b600080fd5b6102f66102f13660046139c7565b6107e5565b005b610300610a89565b60405161030d9190613aae565b60405180910390f35b6102f6610324366004613ac1565b610b17565b60035461033d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161030d565b610300610364366004613ada565b610b24565b60035461033d9068010000000000000000900467ffffffffffffffff1681565b60035461033d90700100000000000000000000000000000000900467ffffffffffffffff1681565b610300610d58565b6102f66103c7366004613b49565b610d65565b6103df6103da366004613b66565b610db4565b60405190815260200161030d565b6104256103fb366004613b9b565b600160208190526000918252604090912080549181015460029091015467ffffffffffffffff1683565b60408051938452602084019290925267ffffffffffffffff169082015260600161030d565b6102f6610458366004613b49565b6110c8565b6102f6611203565b6103df611217565b60045461033d9067ffffffffffffffff1681565b6102f661048f366004613bcf565b611291565b603e5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030d565b6102f66104e13660046139c7565b6113c5565b6103df60075481565b6102f66104fd366004613b9b565b611a0d565b6102f6610510366004613b9b565b611a50565b6102f6610523366004613b9b565b611a9f565b61033d62093a8081565b6103df60065481565b600a5461033d9067ffffffffffffffff1681565b6103df61ea6081565b610599610566366004613b9b565b6002602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff928316602085015291169082015260600161030d565b6000546104ae9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6102f66105f3366004613d21565b611fed565b6004546104ae9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546104ae9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f6610652366004613d56565b6120dc565b6103df610665366004613e2c565b6123d1565b6102f6610678366004613ac1565b61253f565b6103df61068b366004613eb5565b6040805160208082019a909a52808201989098526060880196909652608087019490945260a08601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b81168287015291811b821660c88601529190911b1660d0830152805180830360b801815260d89092019052805191012090565b60045461073d907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b604051901515815260200161030d565b60035461033d907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6008546104ae9073ffffffffffffffffffffffffffffffffffffffff1681565b6102f66107ab366004613f29565b61254c565b6102f66107be366004613b49565b612a32565b6103df67016345785d8a000081565b6102f66107e0366004613f92565b612ae9565b6107ed613319565b6004546108059067ffffffffffffffff166001614166565b67ffffffffffffffff168467ffffffffffffffff16146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084015b60405180910390fd5b60035467ffffffffffffffff680100000000000000009091048116908516111561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b6004805467ffffffffffffffff1690600061099883614192565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550600685905560078690556005546040517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b505060405133925067ffffffffffffffff871691507f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050565b600b8054610a96906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac2906141b9565b8015610b0f5780601f10610ae457610100808354040283529160200191610b0f565b820191906000526020600020905b815481529060010190602001808311610af257829003601f168201915b505050505081565b610b1f613319565b600755565b600454606090610b3f9067ffffffffffffffff166001614166565b67ffffffffffffffff168263ffffffff1614610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108a3565b63ffffffff821660009081526002602052604081206001015467ffffffffffffffff8181169291829168010000000000000000909104168103610c4057505063ffffffff831660009081526002602052604090205467016345785d8a0000610ca5565b505063ffffffff8316600090815260026020818152604080842060019081015468010000000000000000900467ffffffffffffffff90811686528184529482902082516060810184528154808252928201549481018590529401549094169201919091525b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660c0808401919091527fffffffffffffffff00000000000000000000000000000000000000000000000086821b811660c485015291901b1660cc82015260d40160405160208183030381529060405293505050505b9392505050565b60098054610a96906141b9565b610d6d613319565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600454600090610dcf9067ffffffffffffffff166001614166565b67ffffffffffffffff168267ffffffffffffffff1614610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108a3565b67ffffffffffffffff808316600090815260026020526040812060010154808316928291680100000000000000009004168103610ed257505067ffffffffffffffff831660009081526002602052604090205467016345785d8a0000610f32565b505067ffffffffffffffff8084166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c088811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b600881101561103b577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b168252600890910190600101610ffa565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611070919061420c565b602060405180830381855afa15801561108d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110b09190614228565b6110ba9190614241565b9a9950505050505050505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b600480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0906020015b60405180910390a150565b61120b613319565b611215600061339a565b565b60035460009067ffffffffffffffff7001000000000000000000000000000000008204811691611266917801000000000000000000000000000000000000000000000000909104166001614166565b611270919061427c565b61128c9067ffffffffffffffff16670de0b6b3a76400006142a5565b905090565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b600480548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe6906111f890831515815260200190565b6004546113dd9067ffffffffffffffff166001614166565b67ffffffffffffffff168467ffffffffffffffff161461147f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084016108a3565b60035467ffffffffffffffff6801000000000000000090910481169085161115611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b67ffffffffffffffff8085166000908152600260205260408120600101548083169282916801000000000000000090041681036115b257505067ffffffffffffffff851660009081526002602052604090205467016345785d8a0000611612565b505067ffffffffffffffff8086166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018a9052608082018b905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b600881101561171b577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016116da565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611750919061420c565b602060405180830381855afa15801561176d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117909190614228565b61179a9190614241565b6008546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611804918d918d918d91906004016142e2565b602060405180830381865afa158015611821573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611845919061435c565b6118d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f494e56414c49445f50524f4f460000000000000000000000000000000000000060648201526084016108a3565b6004805467ffffffffffffffff169060006118eb83614192565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555060068b905560078c90556005546040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018e905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561198557600080fd5b505af1158015611999573d6000803e3d6000fd5b50506000546119c8925062010000900473ffffffffffffffffffffffffffffffffffffffff1690503386613411565b604051339067ffffffffffffffff8c16907f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050505050505050565b611a15613319565b600480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b611a58613319565b6003805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114611b7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108a3565b600354600090611bab908390700100000000000000000000000000000000900467ffffffffffffffff16614166565b905060008267ffffffffffffffff1611611c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b60035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115611d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016108a3565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611e415767ffffffffffffffff8082166000908152600160205260409020600201544291611d839162093a809116614166565b67ffffffffffffffff161115611e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016108a3565b60035467ffffffffffffffff68010000000000000000820481169170010000000000000000000000000000000090041660005b8467ffffffffffffffff16811015611f305781611e9081614192565b9250508280611e9e90614192565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668010000000000000000878416027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617429092169190911790559350819050611f2881614379565b915050611e74565b50600380544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a250505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b60096120ac82826143ff565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516111f89190613aae565b600054610100900460ff16158080156120fc5750600054600160ff909116105b806121165750303b158015612116575060005460ff166001145b6121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108a3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561220057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8d811691909117909255600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100008d851602179055600880549091168a83161790556006889055600480547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928916929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000087151502179055600961231885826143ff565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516179055600b61235983826143ff565b506123626134ea565b80156123c557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6040805160208082018c90528183018b905260608083018b9052608083018a905260a083018990527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b82168186015288811b821660c886015287901b1660d0840152835180840360b801815260d884018086528151919093012061016c84019094526054825284901b60f88301526000929161010c01835b60088110156124af577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b16825260089091019060010161246e565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516124e4919061420c565b602060405180830381855afa158015612501573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125249190614228565b61252e9190614241565b9d9c50505050505050505050505050565b612547613319565b600655565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108a3565b6000612633611217565b9050818111156126c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016108a3565b61ea60835110612757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016108a3565b6000546127829062010000900473ffffffffffffffffffffffffffffffffffffffff16333084613589565b600554604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa1580156127f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128169190614228565b60038054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861285083614192565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083813360405160200161288c93929190614519565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206003805478010000000000000000000000000000000000000000000000009081900467ffffffffffffffff908116600090815260019687905285812094909455825482900481168452848420909501879055905404831681522060020180547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016429092169190911790553233036129cf57600354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612a2c565b600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612a2393929190614565565b60405180910390a25b50505050565b612a3a613319565b73ffffffffffffffffffffffffffffffffffffffff8116612add576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108a3565b612ae68161339a565b50565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108a3565b8051612bdc3330612bb58467016345785d8a00006142a5565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff16929190613589565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041660005b848110156131a0576000868281518110612c3057612c306145a3565b602002602001015190508467ffffffffffffffff16816040015167ffffffffffffffff1610158015612c70575042816040015167ffffffffffffffff1611155b612d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016108a3565b60208101511580612dd1575060055460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291612d8b9160040190815260200190565b6020604051808303816000875af1158015612daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dce9190614228565b15155b612e5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016108a3565b80515161ea6011612ef0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016108a3565b83612efa81614192565b8251602080850151604051939850612f1794509192339101614519565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012067ffffffffffffffff8781166000908152600290945282842091825591840151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169282169290921790915595505b81606001515181101561318b5783612fba81614192565b945050600082606001518281518110612fd557612fd56145a3565b602002602001015190508667ffffffffffffffff168167ffffffffffffffff1610158015613024575067ffffffffffffffff808616600090815260016020526040902060020154811690821610155b801561303a5750428167ffffffffffffffff1611155b6130ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520696e736964652072616e6765000000000000000000000000000000608482015260a4016108a3565b856130f681614192565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016680100000000000000008a8416027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000161791851691909117905591975090955081905061318381614379565b915050612fa3565b5050808061319890614379565b915050612c14565b5060035467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908216111561325d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016108a3565b6003805467ffffffffffffffff8581167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a25050505050565b603e5473ffffffffffffffffffffffffffffffffffffffff163314611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108a3565b603e805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526134e59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526135e7565b505050565b600054610100900460ff16613581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108a3565b6112156136f3565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a2c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613463565b6000613649826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137939092919063ffffffff16565b8051909150156134e55780806020019051810190613667919061435c565b6134e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108a3565b600054610100900460ff1661378a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108a3565b6112153361339a565b60606137a284846000856137aa565b949350505050565b60608247101561383c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108a3565b73ffffffffffffffffffffffffffffffffffffffff85163b6138ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108a3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516138e3919061420c565b60006040518083038185875af1925050503d8060008114613920576040519150601f19603f3d011682016040523d82523d6000602084013e613925565b606091505b5091509150613935828286613940565b979650505050505050565b6060831561394f575081610d51565b82511561395f5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a39190613aae565b803567ffffffffffffffff811681146139ab57600080fd5b919050565b80604081018310156139c157600080fd5b92915050565b60008060008060008061016087890312156139e157600080fd5b86359550602087013594506139f860408801613993565b9350613a0788606089016139b0565b9250610120870188811115613a1b57600080fd5b60a088019250613a2b89826139b0565b9150509295509295509295565b60005b83811015613a53578181015183820152602001613a3b565b83811115612a2c5750506000910152565b60008151808452613a7c816020860160208601613a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d516020830184613a64565b600060208284031215613ad357600080fd5b5035919050565b600080600060608486031215613aef57600080fd5b8335925060208401359150604084013563ffffffff81168114613b1157600080fd5b809150509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114612ae657600080fd5b80356139ab81613b1c565b600060208284031215613b5b57600080fd5b8135610d5181613b1c565b600080600060608486031215613b7b57600080fd5b8335925060208401359150613b9260408501613993565b90509250925092565b600060208284031215613bad57600080fd5b610d5182613993565b8015158114612ae657600080fd5b80356139ab81613bb6565b600060208284031215613be157600080fd5b8135610d5181613bb6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c3e57613c3e613bec565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613c8b57613c8b613bec565b604052919050565b600082601f830112613ca457600080fd5b813567ffffffffffffffff811115613cbe57613cbe613bec565b613cef60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c44565b818152846020838601011115613d0457600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613d3357600080fd5b813567ffffffffffffffff811115613d4a57600080fd5b6137a284828501613c93565b60008060008060008060008060006101208a8c031215613d7557600080fd5b8935613d8081613b1c565b985060208a0135613d9081613b1c565b9750613d9e60408b01613b3e565b965060608a01359550613db360808b01613b3e565b9450613dc160a08b01613bc4565b935060c08a013567ffffffffffffffff80821115613dde57600080fd5b613dea8d838e01613c93565b9450613df860e08d01613993565b93506101008c0135915080821115613e0f57600080fd5b50613e1c8c828d01613c93565b9150509295985092959850929598565b60008060008060008060008060006101208a8c031215613e4b57600080fd5b8935985060208a0135975060408a0135965060608a0135955060808a01359450613e7760a08b01613993565b9350613e8560c08b01613993565b9250613e9360e08b01613993565b91506101008a0135613ea481613b1c565b809150509295985092959850929598565b600080600080600080600080610100898b031215613ed257600080fd5b8835975060208901359650604089013595506060890135945060808901359350613efe60a08a01613993565b9250613f0c60c08a01613993565b9150613f1a60e08a01613993565b90509295985092959890939650565b60008060408385031215613f3c57600080fd5b823567ffffffffffffffff811115613f5357600080fd5b613f5f85828601613c93565b95602094909401359450505050565b600067ffffffffffffffff821115613f8857613f88613bec565b5060051b60200190565b60006020808385031215613fa557600080fd5b823567ffffffffffffffff80821115613fbd57600080fd5b818501915085601f830112613fd157600080fd5b8135613fe4613fdf82613f6e565b613c44565b81815260059190911b8301840190848101908883111561400357600080fd5b8585015b8381101561412a5780358581111561401e57600080fd5b86016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561405257600080fd5b61405a613c1b565b888201358781111561406b57600080fd5b6140798d8b83860101613c93565b8252506040808301358a83015261409260608401613993565b818301526080830135888111156140a95760008081fd5b8084019350508c603f8401126140bf5760008081fd5b898301356140cf613fdf82613f6e565b81815260059190911b84018201908b8101908f8311156140ef5760008081fd5b948301945b828610156141145761410586613993565b8252948c0194908c01906140f4565b6060850152505050845250918601918601614007565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851680830382111561418957614189614137565b01949350505050565b600067ffffffffffffffff8083168181036141af576141af614137565b6001019392505050565b600181811c908216806141cd57607f821691505b602082108103614206577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000825161421e818460208701613a38565b9190910192915050565b60006020828403121561423a57600080fd5b5051919050565b600082614277577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600067ffffffffffffffff8381169083168181101561429d5761429d614137565b039392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142dd576142dd614137565b500290565b61012081016040808784376000838201818152879190815b600281101561431a578484833790840182815292840192906001016142fa565b5050828760c0870137610100850181815286935091505b6001811015614350578251825260209283019290910190600101614331565b50505095945050505050565b60006020828403121561436e57600080fd5b8151610d5181613bb6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143aa576143aa614137565b5060010190565b601f8211156134e557600081815260208120601f850160051c810160208610156143d85750805b601f850160051c820191505b818110156143f7578281556001016143e4565b505050505050565b815167ffffffffffffffff81111561441957614419613bec565b61442d8161442784546141b9565b846143b1565b602080601f831160018114614480576000841561444a5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556143f7565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156144cd578886015182559484019460019091019084016144ae565b508582101561450957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000845161452b818460208901613a38565b919091019283525060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020820152603401919050565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061459a6060830184613a64565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220d93e6b3c9abd3027260831a60249b76635afed83f16d3621abc34c4abf81c08b64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5061463e806100206000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c8063aa0f441811610191578063d2fd1b31116100e3578063e7a7ed0211610097578063f2fde38b11610071578063f2fde38b146107ce578063f7552761146107e1578063f7d2cd7f146107f057600080fd5b8063e7a7ed021461076b578063e8bf92ed1461079b578063eaeb077b146107bb57600080fd5b8063d307b743116100c8578063d307b74314610688578063d8c276881461069b578063d8f54db01461072e57600080fd5b8063d2fd1b3114610662578063d2fe3c341461067557600080fd5b8063b4d63f5811610145578063c89e42df1161011f578063c89e42df14610603578063cfa8ed4714610616578063d02103ca1461064257600080fd5b8063b4d63f5814610563578063b6b0b097146105ca578063c0cad302146105f057600080fd5b8063ac2eba9811610176578063ac2eba981461053d578063adc879e914610546578063b02286c01461055a57600080fd5b8063aa0f441814610520578063ab9fc5ef1461053357600080fd5b80636b8616ce1161024a5780638c4a0af7116101fe578063959c2f47116101d8578063959c2f47146104f157806396dc3d39146104fa5780639b7967601461050d57600080fd5b80638c4a0af71461048c5780638da5cb5b1461049f57806395297e24146104de57600080fd5b8063715018a61161022f578063715018a61461046857806379847057146104705780637fcb36531461047857600080fd5b80636b8616ce146103f85780636ff512cc1461045557600080fd5b8063423fa856116102a1578063542028d511610286578063542028d5146103bc5780635437988d146103c457806357177ef5146103d757600080fd5b8063423fa85614610374578063456052671461039457600080fd5b8063116c40c3116102d2578063116c40c31461032157806319d8ac611461033457806325d0a8f51461036157600080fd5b8063076f9e36146102ee578063107bf28c14610303575b600080fd5b6103016102fc3660046139fd565b610803565b005b61030b610aa7565b6040516103189190613ae4565b60405180910390f35b61030161032f366004613af7565b610b35565b6003546103489067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610318565b61030b61036f366004613b10565b610b42565b6003546103489068010000000000000000900467ffffffffffffffff1681565b60035461034890700100000000000000000000000000000000900467ffffffffffffffff1681565b61030b610d76565b6103016103d2366004613b7f565b610d83565b6103ea6103e5366004613b9c565b610dd2565b604051908152602001610318565b610430610406366004613bd1565b600160208190526000918252604090912080549181015460029091015467ffffffffffffffff1683565b60408051938452602084019290925267ffffffffffffffff1690820152606001610318565b610301610463366004613b7f565b6110e6565b610301611221565b6103ea611235565b6004546103489067ffffffffffffffff1681565b61030161049a366004613c05565b6112af565b603e5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610318565b6103016104ec3660046139fd565b6113e3565b6103ea60075481565b610301610508366004613bd1565b611a2b565b61030161051b366004613bd1565b611a6e565b61030161052e366004613bd1565b611abd565b61034862093a8081565b6103ea60065481565b600a546103489067ffffffffffffffff1681565b6103ea61ea6081565b6105a4610571366004613bd1565b6002602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff9283166020850152911690820152606001610318565b6000546104b99062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6103016105fe366004613d57565b61200b565b610301610611366004613d57565b612023565b6004546104b99068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546104b99073ffffffffffffffffffffffffffffffffffffffff1681565b610301610670366004613d8c565b612112565b6103ea610683366004613e62565b612407565b610301610696366004613af7565b612575565b6103ea6106a9366004613eeb565b6040805160208082019a909a52808201989098526060880196909652608087019490945260a08601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b81168287015291811b821660c88601529190911b1660d0830152805180830360b801815260d89092019052805191012090565b60045461075b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610318565b600354610348907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6008546104b99073ffffffffffffffffffffffffffffffffffffffff1681565b6103016107c9366004613f5f565b612582565b6103016107dc366004613b7f565b612a68565b6103ea67016345785d8a000081565b6103016107fe366004613fc8565b612b1f565b61080b61334f565b6004546108239067ffffffffffffffff16600161419c565b67ffffffffffffffff168467ffffffffffffffff16146108ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084015b60405180910390fd5b60035467ffffffffffffffff680100000000000000009091048116908516111561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b6004805467ffffffffffffffff169060006109b6836141c8565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550600685905560078690556005546040517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015610a5057600080fd5b505af1158015610a64573d6000803e3d6000fd5b505060405133925067ffffffffffffffff871691507f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050565b600b8054610ab4906141ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae0906141ef565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b505050505081565b610b3d61334f565b600755565b600454606090610b5d9067ffffffffffffffff16600161419c565b67ffffffffffffffff168263ffffffff1614610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108c1565b63ffffffff821660009081526002602052604081206001015467ffffffffffffffff8181169291829168010000000000000000909104168103610c5e57505063ffffffff831660009081526002602052604090205467016345785d8a0000610cc3565b505063ffffffff8316600090815260026020818152604080842060019081015468010000000000000000900467ffffffffffffffff90811686528184529482902082516060810184528154808252928201549481018590529401549094169201919091525b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660c0808401919091527fffffffffffffffff00000000000000000000000000000000000000000000000086821b811660c485015291901b1660cc82015260d40160405160208183030381529060405293505050505b9392505050565b60098054610ab4906141ef565b610d8b61334f565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600454600090610ded9067ffffffffffffffff16600161419c565b67ffffffffffffffff168267ffffffffffffffff1614610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108c1565b67ffffffffffffffff808316600090815260026020526040812060010154808316928291680100000000000000009004168103610ef057505067ffffffffffffffff831660009081526002602052604090205467016345785d8a0000610f50565b505067ffffffffffffffff8084166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c088811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b6008811015611059577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b168252600890910190600101611018565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161108e9190614242565b602060405180830381855afa1580156110ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ce919061425e565b6110d89190614277565b9a9950505050505050505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b600480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0906020015b60405180910390a150565b61122961334f565b61123360006133d0565b565b60035460009067ffffffffffffffff700100000000000000000000000000000000820481169161128491780100000000000000000000000000000000000000000000000090910416600161419c565b61128e91906142b2565b6112aa9067ffffffffffffffff16670de0b6b3a76400006142db565b905090565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b600480548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061121690831515815260200190565b6004546113fb9067ffffffffffffffff16600161419c565b67ffffffffffffffff168467ffffffffffffffff161461149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084016108c1565b60035467ffffffffffffffff680100000000000000009091048116908516111561156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b67ffffffffffffffff8085166000908152600260205260408120600101548083169282916801000000000000000090041681036115d057505067ffffffffffffffff851660009081526002602052604090205467016345785d8a0000611630565b505067ffffffffffffffff8086166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018a9052608082018b905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b6008811015611739577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016116f8565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161176e9190614242565b602060405180830381855afa15801561178b573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117ae919061425e565b6117b89190614277565b6008546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611822918d918d918d9190600401614318565b602060405180830381865afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190614392565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f494e56414c49445f50524f4f460000000000000000000000000000000000000060648201526084016108c1565b6004805467ffffffffffffffff16906000611909836141c8565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555060068b905560078c90556005546040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018e905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b1580156119a357600080fd5b505af11580156119b7573d6000803e3d6000fd5b50506000546119e6925062010000900473ffffffffffffffffffffffffffffffffffffffff1690503386613447565b604051339067ffffffffffffffff8c16907f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050505050505050565b611a3361334f565b600480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b611a7661334f565b6003805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114611b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108c1565b600354600090611bc9908390700100000000000000000000000000000000900467ffffffffffffffff1661419c565b905060008267ffffffffffffffff1611611c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b60035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115611d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016108c1565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611e5f5767ffffffffffffffff8082166000908152600160205260409020600201544291611da19162093a80911661419c565b67ffffffffffffffff161115611e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016108c1565b60035467ffffffffffffffff68010000000000000000820481169170010000000000000000000000000000000090041660005b8467ffffffffffffffff16811015611f4e5781611eae816141c8565b9250508280611ebc906141c8565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668010000000000000000878416027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617429092169190911790559350819050611f46816143af565b915050611e92565b50600380544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a250505050565b61201361334f565b600b61201f8282614435565b5050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b60096120e28282614435565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516112169190613ae4565b600054610100900460ff16158080156121325750600054600160ff909116105b8061214c5750303b15801561214c575060005460ff166001145b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c1565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561223657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8d811691909117909255600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100008d851602179055600880549091168a83161790556006889055600480547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928916929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000087151502179055600961234e8582614435565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516179055600b61238f8382614435565b50612398613520565b80156123fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6040805160208082018c90528183018b905260608083018b9052608083018a905260a083018990527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b82168186015288811b821660c886015287901b1660d0840152835180840360b801815260d884018086528151919093012061016c84019094526054825284901b60f88301526000929161010c01835b60088110156124e5577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016124a4565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161251a9190614242565b602060405180830381855afa158015612537573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061255a919061425e565b6125649190614277565b9d9c50505050505050505050505050565b61257d61334f565b600655565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108c1565b6000612669611235565b9050818111156126fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016108c1565b61ea6083511061278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016108c1565b6000546127b89062010000900473ffffffffffffffffffffffffffffffffffffffff163330846135bf565b600554604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015612828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284c919061425e565b60038054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018612886836141c8565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508381336040516020016128c29392919061454f565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206003805478010000000000000000000000000000000000000000000000009081900467ffffffffffffffff908116600090815260019687905285812094909455825482900481168452848420909501879055905404831681522060020180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001642909216919091179055323303612a0557600354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612a62565b600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612a599392919061459b565b60405180910390a25b50505050565b612a7061334f565b73ffffffffffffffffffffffffffffffffffffffff8116612b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108c1565b612b1c816133d0565b50565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b8051612c123330612beb8467016345785d8a00006142db565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff169291906135bf565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041660005b848110156131d6576000868281518110612c6657612c666145d9565b602002602001015190508467ffffffffffffffff16816040015167ffffffffffffffff1610158015612ca6575042816040015167ffffffffffffffff1611155b612d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b60208101511580612e07575060055460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291612dc19160040190815260200190565b6020604051808303816000875af1158015612de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e04919061425e565b15155b612e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016108c1565b80515161ea6011612f26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016108c1565b83612f30816141c8565b8251602080850151604051939850612f4d9450919233910161454f565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012067ffffffffffffffff8781166000908152600290945282842091825591840151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169282169290921790915595505b8160600151518110156131c15783612ff0816141c8565b94505060008260600151828151811061300b5761300b6145d9565b602002602001015190508667ffffffffffffffff168167ffffffffffffffff161015801561305a575067ffffffffffffffff808616600090815260016020526040902060020154811690821610155b80156130705750428167ffffffffffffffff1611155b613122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520696e736964652072616e6765000000000000000000000000000000608482015260a4016108c1565b8561312c816141c8565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016680100000000000000008a8416027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016179185169190911790559197509095508190506131b9816143af565b915050612fd9565b505080806131ce906143af565b915050612c4a565b5060035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016108c1565b6003805467ffffffffffffffff8581167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a25050505050565b603e5473ffffffffffffffffffffffffffffffffffffffff163314611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c1565b603e805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261351b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261361d565b505050565b600054610100900460ff166135b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c1565b611233613729565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a629085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613499565b600061367f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137c99092919063ffffffff16565b80519091501561351b578080602001905181019061369d9190614392565b61351b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108c1565b600054610100900460ff166137c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c1565b611233336133d0565b60606137d884846000856137e0565b949350505050565b606082471015613872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108c1565b73ffffffffffffffffffffffffffffffffffffffff85163b6138f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c1565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516139199190614242565b60006040518083038185875af1925050503d8060008114613956576040519150601f19603f3d011682016040523d82523d6000602084013e61395b565b606091505b509150915061396b828286613976565b979650505050505050565b60608315613985575081610d6f565b8251156139955782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19190613ae4565b803567ffffffffffffffff811681146139e157600080fd5b919050565b80604081018310156139f757600080fd5b92915050565b6000806000806000806101608789031215613a1757600080fd5b8635955060208701359450613a2e604088016139c9565b9350613a3d88606089016139e6565b9250610120870188811115613a5157600080fd5b60a088019250613a6189826139e6565b9150509295509295509295565b60005b83811015613a89578181015183820152602001613a71565b83811115612a625750506000910152565b60008151808452613ab2816020860160208601613a6e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d6f6020830184613a9a565b600060208284031215613b0957600080fd5b5035919050565b600080600060608486031215613b2557600080fd5b8335925060208401359150604084013563ffffffff81168114613b4757600080fd5b809150509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114612b1c57600080fd5b80356139e181613b52565b600060208284031215613b9157600080fd5b8135610d6f81613b52565b600080600060608486031215613bb157600080fd5b8335925060208401359150613bc8604085016139c9565b90509250925092565b600060208284031215613be357600080fd5b610d6f826139c9565b8015158114612b1c57600080fd5b80356139e181613bec565b600060208284031215613c1757600080fd5b8135610d6f81613bec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c7457613c74613c22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cc157613cc1613c22565b604052919050565b600082601f830112613cda57600080fd5b813567ffffffffffffffff811115613cf457613cf4613c22565b613d2560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c7a565b818152846020838601011115613d3a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613d6957600080fd5b813567ffffffffffffffff811115613d8057600080fd5b6137d884828501613cc9565b60008060008060008060008060006101208a8c031215613dab57600080fd5b8935613db681613b52565b985060208a0135613dc681613b52565b9750613dd460408b01613b74565b965060608a01359550613de960808b01613b74565b9450613df760a08b01613bfa565b935060c08a013567ffffffffffffffff80821115613e1457600080fd5b613e208d838e01613cc9565b9450613e2e60e08d016139c9565b93506101008c0135915080821115613e4557600080fd5b50613e528c828d01613cc9565b9150509295985092959850929598565b60008060008060008060008060006101208a8c031215613e8157600080fd5b8935985060208a0135975060408a0135965060608a0135955060808a01359450613ead60a08b016139c9565b9350613ebb60c08b016139c9565b9250613ec960e08b016139c9565b91506101008a0135613eda81613b52565b809150509295985092959850929598565b600080600080600080600080610100898b031215613f0857600080fd5b8835975060208901359650604089013595506060890135945060808901359350613f3460a08a016139c9565b9250613f4260c08a016139c9565b9150613f5060e08a016139c9565b90509295985092959890939650565b60008060408385031215613f7257600080fd5b823567ffffffffffffffff811115613f8957600080fd5b613f9585828601613cc9565b95602094909401359450505050565b600067ffffffffffffffff821115613fbe57613fbe613c22565b5060051b60200190565b60006020808385031215613fdb57600080fd5b823567ffffffffffffffff80821115613ff357600080fd5b818501915085601f83011261400757600080fd5b813561401a61401582613fa4565b613c7a565b81815260059190911b8301840190848101908883111561403957600080fd5b8585015b838110156141605780358581111561405457600080fd5b86016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561408857600080fd5b614090613c51565b88820135878111156140a157600080fd5b6140af8d8b83860101613cc9565b8252506040808301358a8301526140c8606084016139c9565b818301526080830135888111156140df5760008081fd5b8084019350508c603f8401126140f55760008081fd5b8983013561410561401582613fa4565b81815260059190911b84018201908b8101908f8311156141255760008081fd5b948301945b8286101561414a5761413b866139c9565b8252948c0194908c019061412a565b606085015250505084525091860191860161403d565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168083038211156141bf576141bf61416d565b01949350505050565b600067ffffffffffffffff8083168181036141e5576141e561416d565b6001019392505050565b600181811c9082168061420357607f821691505b60208210810361423c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008251614254818460208701613a6e565b9190910192915050565b60006020828403121561427057600080fd5b5051919050565b6000826142ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600067ffffffffffffffff838116908316818110156142d3576142d361416d565b039392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143135761431361416d565b500290565b61012081016040808784376000838201818152879190815b600281101561435057848483379084018281529284019290600101614330565b5050828760c0870137610100850181815286935091505b6001811015614386578251825260209283019290910190600101614367565b50505095945050505050565b6000602082840312156143a457600080fd5b8151610d6f81613bec565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e0576143e061416d565b5060010190565b601f82111561351b57600081815260208120601f850160051c8101602086101561440e5750805b601f850160051c820191505b8181101561442d5782815560010161441a565b505050505050565b815167ffffffffffffffff81111561444f5761444f613c22565b6144638161445d84546141ef565b846143e7565b602080601f8311600181146144b657600084156144805750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561442d565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614503578886015182559484019460019091019084016144e4565b508582101561453f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008451614561818460208901613a6e565b919091019283525060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020820152603401919050565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006145d06060830184613a9a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212201971b0a57741e737daf5b68be11cb664f10ffcedf610b4a2ab313efebe45a7b664736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102e95760003560e01c8063aa0f441811610191578063d2fd1b31116100e3578063e7a7ed0211610097578063f2fde38b11610071578063f2fde38b146107ce578063f7552761146107e1578063f7d2cd7f146107f057600080fd5b8063e7a7ed021461076b578063e8bf92ed1461079b578063eaeb077b146107bb57600080fd5b8063d307b743116100c8578063d307b74314610688578063d8c276881461069b578063d8f54db01461072e57600080fd5b8063d2fd1b3114610662578063d2fe3c341461067557600080fd5b8063b4d63f5811610145578063c89e42df1161011f578063c89e42df14610603578063cfa8ed4714610616578063d02103ca1461064257600080fd5b8063b4d63f5814610563578063b6b0b097146105ca578063c0cad302146105f057600080fd5b8063ac2eba9811610176578063ac2eba981461053d578063adc879e914610546578063b02286c01461055a57600080fd5b8063aa0f441814610520578063ab9fc5ef1461053357600080fd5b80636b8616ce1161024a5780638c4a0af7116101fe578063959c2f47116101d8578063959c2f47146104f157806396dc3d39146104fa5780639b7967601461050d57600080fd5b80638c4a0af71461048c5780638da5cb5b1461049f57806395297e24146104de57600080fd5b8063715018a61161022f578063715018a61461046857806379847057146104705780637fcb36531461047857600080fd5b80636b8616ce146103f85780636ff512cc1461045557600080fd5b8063423fa856116102a1578063542028d511610286578063542028d5146103bc5780635437988d146103c457806357177ef5146103d757600080fd5b8063423fa85614610374578063456052671461039457600080fd5b8063116c40c3116102d2578063116c40c31461032157806319d8ac611461033457806325d0a8f51461036157600080fd5b8063076f9e36146102ee578063107bf28c14610303575b600080fd5b6103016102fc3660046139fd565b610803565b005b61030b610aa7565b6040516103189190613ae4565b60405180910390f35b61030161032f366004613af7565b610b35565b6003546103489067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610318565b61030b61036f366004613b10565b610b42565b6003546103489068010000000000000000900467ffffffffffffffff1681565b60035461034890700100000000000000000000000000000000900467ffffffffffffffff1681565b61030b610d76565b6103016103d2366004613b7f565b610d83565b6103ea6103e5366004613b9c565b610dd2565b604051908152602001610318565b610430610406366004613bd1565b600160208190526000918252604090912080549181015460029091015467ffffffffffffffff1683565b60408051938452602084019290925267ffffffffffffffff1690820152606001610318565b610301610463366004613b7f565b6110e6565b610301611221565b6103ea611235565b6004546103489067ffffffffffffffff1681565b61030161049a366004613c05565b6112af565b603e5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610318565b6103016104ec3660046139fd565b6113e3565b6103ea60075481565b610301610508366004613bd1565b611a2b565b61030161051b366004613bd1565b611a6e565b61030161052e366004613bd1565b611abd565b61034862093a8081565b6103ea60065481565b600a546103489067ffffffffffffffff1681565b6103ea61ea6081565b6105a4610571366004613bd1565b6002602052600090815260409020805460019091015467ffffffffffffffff808216916801000000000000000090041683565b6040805193845267ffffffffffffffff9283166020850152911690820152606001610318565b6000546104b99062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6103016105fe366004613d57565b61200b565b610301610611366004613d57565b612023565b6004546104b99068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b6005546104b99073ffffffffffffffffffffffffffffffffffffffff1681565b610301610670366004613d8c565b612112565b6103ea610683366004613e62565b612407565b610301610696366004613af7565b612575565b6103ea6106a9366004613eeb565b6040805160208082019a909a52808201989098526060880196909652608087019490945260a08601929092527fffffffffffffffff00000000000000000000000000000000000000000000000060c091821b81168287015291811b821660c88601529190911b1660d0830152805180830360b801815260d89092019052805191012090565b60045461075b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610318565b600354610348907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b6008546104b99073ffffffffffffffffffffffffffffffffffffffff1681565b6103016107c9366004613f5f565b612582565b6103016107dc366004613b7f565b612a68565b6103ea67016345785d8a000081565b6103016107fe366004613fc8565b612b1f565b61080b61334f565b6004546108239067ffffffffffffffff16600161419c565b67ffffffffffffffff168467ffffffffffffffff16146108ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084015b60405180910390fd5b60035467ffffffffffffffff680100000000000000009091048116908516111561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b6004805467ffffffffffffffff169060006109b6836141c8565b825467ffffffffffffffff9182166101009390930a928302919092021990911617905550600685905560078690556005546040517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015610a5057600080fd5b505af1158015610a64573d6000803e3d6000fd5b505060405133925067ffffffffffffffff871691507f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050565b600b8054610ab4906141ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae0906141ef565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b505050505081565b610b3d61334f565b600755565b600454606090610b5d9067ffffffffffffffff16600161419c565b67ffffffffffffffff168263ffffffff1614610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108c1565b63ffffffff821660009081526002602052604081206001015467ffffffffffffffff8181169291829168010000000000000000909104168103610c5e57505063ffffffff831660009081526002602052604090205467016345785d8a0000610cc3565b505063ffffffff8316600090815260026020818152604080842060019081015468010000000000000000900467ffffffffffffffff90811686528184529482902082516060810184528154808252928201549481018590529401549094169201919091525b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660c0808401919091527fffffffffffffffff00000000000000000000000000000000000000000000000086821b811660c485015291901b1660cc82015260d40160405160208183030381529060405293505050505b9392505050565b60098054610ab4906141ef565b610d8b61334f565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600454600090610ded9067ffffffffffffffff16600161419c565b67ffffffffffffffff168267ffffffffffffffff1614610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f42415443485f444f45535f4e4f545f4d4154434800000000000000000000000060648201526084016108c1565b67ffffffffffffffff808316600090815260026020526040812060010154808316928291680100000000000000009004168103610ef057505067ffffffffffffffff831660009081526002602052604090205467016345785d8a0000610f50565b505067ffffffffffffffff8084166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018890526080820189905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c088811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b6008811015611059577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b168252600890910190600101611018565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161108e9190614242565b602060405180830381855afa1580156110ab573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906110ce919061425e565b6110d89190614277565b9a9950505050505050505050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b600480547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc0906020015b60405180910390a150565b61122961334f565b61123360006133d0565b565b60035460009067ffffffffffffffff700100000000000000000000000000000000820481169161128491780100000000000000000000000000000000000000000000000090910416600161419c565b61128e91906142b2565b6112aa9067ffffffffffffffff16670de0b6b3a76400006142db565b905090565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b600480548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061121690831515815260200190565b6004546113fb9067ffffffffffffffff16600161419c565b67ffffffffffffffff168467ffffffffffffffff161461149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f74206d6174636800000000000000000000000060648201526084016108c1565b60035467ffffffffffffffff680100000000000000009091048116908516111561156f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b67ffffffffffffffff8085166000908152600260205260408120600101548083169282916801000000000000000090041681036115d057505067ffffffffffffffff851660009081526002602052604090205467016345785d8a0000611630565b505067ffffffffffffffff8086166000908152600260208181526040808420600190810154680100000000000000009004861685528083529381902081516060810183528154808252958201549381018490529301549094169190930152905b600654600754600a54604080516020810194909452830191909152606082018a9052608082018b905260a082018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b82168185015286811b821660c88501529190911b1660d082015260009060d801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060948401909252605483523360601b9083015291506034810160005b6008811015611739577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016116f8565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161176e9190614242565b602060405180830381855afa15801561178b573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117ae919061425e565b6117b89190614277565b6008546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611822918d918d918d9190600401614318565b602060405180830381865afa15801561183f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118639190614392565b6118ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f494e56414c49445f50524f4f460000000000000000000000000000000000000060648201526084016108c1565b6004805467ffffffffffffffff16906000611909836141c8565b825467ffffffffffffffff9182166101009390930a92830291909202199091161790555060068b905560078c90556005546040517f33d6247d000000000000000000000000000000000000000000000000000000008152600481018e905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b1580156119a357600080fd5b505af11580156119b7573d6000803e3d6000fd5b50506000546119e6925062010000900473ffffffffffffffffffffffffffffffffffffffff1690503386613447565b604051339067ffffffffffffffff8c16907f2cdf1508085a46c7241a7d78c5a1ec3d9246d1ab95e1c2a33676d29e17d4222390600090a3505050505050505050505050565b611a3361334f565b600480547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b611a7661334f565b6003805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114611b9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108c1565b600354600090611bc9908390700100000000000000000000000000000000900467ffffffffffffffff1661419c565b905060008267ffffffffffffffff1611611c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b60035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115611d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016108c1565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611e5f5767ffffffffffffffff8082166000908152600160205260409020600201544291611da19162093a80911661419c565b67ffffffffffffffff161115611e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016108c1565b60035467ffffffffffffffff68010000000000000000820481169170010000000000000000000000000000000090041660005b8467ffffffffffffffff16811015611f4e5781611eae816141c8565b9250508280611ebc906141c8565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff000000000000000000000000000000001668010000000000000000878416027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001617429092169190911790559350819050611f46816143af565b915050611e92565b50600380544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a490600090a250505050565b61201361334f565b600b61201f8282614435565b5050565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b60096120e28282614435565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b20816040516112169190613ae4565b600054610100900460ff16158080156121325750600054600160ff909116105b8061214c5750303b15801561214c575060005460ff166001145b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016108c1565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561223657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600580547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8d811691909117909255600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100008d851602179055600880549091168a83161790556006889055600480547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928916929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000087151502179055600961234e8582614435565b50600a80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8516179055600b61238f8382614435565b50612398613520565b80156123fb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6040805160208082018c90528183018b905260608083018b9052608083018a905260a083018990527fffffffffffffffff00000000000000000000000000000000000000000000000060c089811b82168186015288811b821660c886015287901b1660d0840152835180840360b801815260d884018086528151919093012061016c84019094526054825284901b60f88301526000929161010c01835b60088110156124e5577bffffffff0000000000000000000000000000000000000000000000006020820285901c60c01b1682526008909101906001016124a4565b505060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161251a9190614242565b602060405180830381855afa158015612537573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061255a919061425e565b6125649190614277565b9d9c50505050505050505050505050565b61257d61334f565b600655565b6004547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461265f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016108c1565b6000612669611235565b9050818111156126fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016108c1565b61ea6083511061278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016108c1565b6000546127b89062010000900473ffffffffffffffffffffffffffffffffffffffff163330846135bf565b600554604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015612828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284c919061425e565b60038054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018612886836141c8565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508381336040516020016128c29392919061454f565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301206003805478010000000000000000000000000000000000000000000000009081900467ffffffffffffffff908116600090815260019687905285812094909455825482900481168452848420909501879055905404831681522060020180547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001642909216919091179055323303612a0557600354604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612a62565b600360189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612a599392919061459b565b60405180910390a25b50505050565b612a7061334f565b73ffffffffffffffffffffffffffffffffffffffff8116612b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016108c1565b612b1c816133d0565b50565b60045468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016108c1565b8051612c123330612beb8467016345785d8a00006142db565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff169291906135bf565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041660005b848110156131d6576000868281518110612c6657612c666145d9565b602002602001015190508467ffffffffffffffff16816040015167ffffffffffffffff1610158015612ca6575042816040015167ffffffffffffffff1611155b612d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016108c1565b60208101511580612e07575060055460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291612dc19160040190815260200190565b6020604051808303816000875af1158015612de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e04919061425e565b15155b612e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016108c1565b80515161ea6011612f26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016108c1565b83612f30816141c8565b8251602080850151604051939850612f4d9450919233910161454f565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152918152815160209283012067ffffffffffffffff8781166000908152600290945282842091825591840151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000169282169290921790915595505b8160600151518110156131c15783612ff0816141c8565b94505060008260600151828151811061300b5761300b6145d9565b602002602001015190508667ffffffffffffffff168167ffffffffffffffff161015801561305a575067ffffffffffffffff808616600090815260016020526040902060020154811690821610155b80156130705750428167ffffffffffffffff1611155b613122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520696e736964652072616e6765000000000000000000000000000000608482015260a4016108c1565b8561312c816141c8565b67ffffffffffffffff818116600090815260026020526040902060010180547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016680100000000000000008a8416027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016179185169190911790559197509095508190506131b9816143af565b915050612fd9565b505080806131ce906143af565b915050612c4a565b5060035467ffffffffffffffff780100000000000000000000000000000000000000000000000090910481169082161115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016108c1565b6003805467ffffffffffffffff8581167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090921691909117680100000000000000008583168102919091177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff16700100000000000000000000000000000000858416021792839055604051920416907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a25050505050565b603e5473ffffffffffffffffffffffffffffffffffffffff163314611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108c1565b603e805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261351b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261361d565b505050565b600054610100900460ff166135b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c1565b611233613729565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052612a629085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613499565b600061367f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137c99092919063ffffffff16565b80519091501561351b578080602001905181019061369d9190614392565b61351b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016108c1565b600054610100900460ff166137c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016108c1565b611233336133d0565b60606137d884846000856137e0565b949350505050565b606082471015613872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016108c1565b73ffffffffffffffffffffffffffffffffffffffff85163b6138f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108c1565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516139199190614242565b60006040518083038185875af1925050503d8060008114613956576040519150601f19603f3d011682016040523d82523d6000602084013e61395b565b606091505b509150915061396b828286613976565b979650505050505050565b60608315613985575081610d6f565b8251156139955782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c19190613ae4565b803567ffffffffffffffff811681146139e157600080fd5b919050565b80604081018310156139f757600080fd5b92915050565b6000806000806000806101608789031215613a1757600080fd5b8635955060208701359450613a2e604088016139c9565b9350613a3d88606089016139e6565b9250610120870188811115613a5157600080fd5b60a088019250613a6189826139e6565b9150509295509295509295565b60005b83811015613a89578181015183820152602001613a71565b83811115612a625750506000910152565b60008151808452613ab2816020860160208601613a6e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610d6f6020830184613a9a565b600060208284031215613b0957600080fd5b5035919050565b600080600060608486031215613b2557600080fd5b8335925060208401359150604084013563ffffffff81168114613b4757600080fd5b809150509250925092565b73ffffffffffffffffffffffffffffffffffffffff81168114612b1c57600080fd5b80356139e181613b52565b600060208284031215613b9157600080fd5b8135610d6f81613b52565b600080600060608486031215613bb157600080fd5b8335925060208401359150613bc8604085016139c9565b90509250925092565b600060208284031215613be357600080fd5b610d6f826139c9565b8015158114612b1c57600080fd5b80356139e181613bec565b600060208284031215613c1757600080fd5b8135610d6f81613bec565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c7457613c74613c22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cc157613cc1613c22565b604052919050565b600082601f830112613cda57600080fd5b813567ffffffffffffffff811115613cf457613cf4613c22565b613d2560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c7a565b818152846020838601011115613d3a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215613d6957600080fd5b813567ffffffffffffffff811115613d8057600080fd5b6137d884828501613cc9565b60008060008060008060008060006101208a8c031215613dab57600080fd5b8935613db681613b52565b985060208a0135613dc681613b52565b9750613dd460408b01613b74565b965060608a01359550613de960808b01613b74565b9450613df760a08b01613bfa565b935060c08a013567ffffffffffffffff80821115613e1457600080fd5b613e208d838e01613cc9565b9450613e2e60e08d016139c9565b93506101008c0135915080821115613e4557600080fd5b50613e528c828d01613cc9565b9150509295985092959850929598565b60008060008060008060008060006101208a8c031215613e8157600080fd5b8935985060208a0135975060408a0135965060608a0135955060808a01359450613ead60a08b016139c9565b9350613ebb60c08b016139c9565b9250613ec960e08b016139c9565b91506101008a0135613eda81613b52565b809150509295985092959850929598565b600080600080600080600080610100898b031215613f0857600080fd5b8835975060208901359650604089013595506060890135945060808901359350613f3460a08a016139c9565b9250613f4260c08a016139c9565b9150613f5060e08a016139c9565b90509295985092959890939650565b60008060408385031215613f7257600080fd5b823567ffffffffffffffff811115613f8957600080fd5b613f9585828601613cc9565b95602094909401359450505050565b600067ffffffffffffffff821115613fbe57613fbe613c22565b5060051b60200190565b60006020808385031215613fdb57600080fd5b823567ffffffffffffffff80821115613ff357600080fd5b818501915085601f83011261400757600080fd5b813561401a61401582613fa4565b613c7a565b81815260059190911b8301840190848101908883111561403957600080fd5b8585015b838110156141605780358581111561405457600080fd5b86016080818c037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561408857600080fd5b614090613c51565b88820135878111156140a157600080fd5b6140af8d8b83860101613cc9565b8252506040808301358a8301526140c8606084016139c9565b818301526080830135888111156140df5760008081fd5b8084019350508c603f8401126140f55760008081fd5b8983013561410561401582613fa4565b81815260059190911b84018201908b8101908f8311156141255760008081fd5b948301945b8286101561414a5761413b866139c9565b8252948c0194908c019061412a565b606085015250505084525091860191860161403d565b5098975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168185168083038211156141bf576141bf61416d565b01949350505050565b600067ffffffffffffffff8083168181036141e5576141e561416d565b6001019392505050565b600181811c9082168061420357607f821691505b60208210810361423c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008251614254818460208701613a6e565b9190910192915050565b60006020828403121561427057600080fd5b5051919050565b6000826142ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600067ffffffffffffffff838116908316818110156142d3576142d361416d565b039392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143135761431361416d565b500290565b61012081016040808784376000838201818152879190815b600281101561435057848483379084018281529284019290600101614330565b5050828760c0870137610100850181815286935091505b6001811015614386578251825260209283019290910190600101614367565b50505095945050505050565b6000602082840312156143a457600080fd5b8151610d6f81613bec565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036143e0576143e061416d565b5060010190565b601f82111561351b57600081815260208120601f850160051c8101602086101561440e5750805b601f850160051c820191505b8181101561442d5782815560010161441a565b505050505050565b815167ffffffffffffffff81111561444f5761444f613c22565b6144638161445d84546141ef565b846143e7565b602080601f8311600181146144b657600084156144805750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561442d565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614503578886015182559484019460019091019084016144e4565b508582101561453f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008451614561818460208901613a6e565b919091019283525060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020820152603401919050565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006145d06060830184613a9a565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212201971b0a57741e737daf5b68be11cb664f10ffcedf610b4a2ab313efebe45a7b664736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/Bridge.sol b/contracts/Bridge.sol index d423899f6..b6c6a751d 100644 --- a/contracts/Bridge.sol +++ b/contracts/Bridge.sol @@ -53,7 +53,7 @@ contract Bridge is DepositContract { function initialize( uint32 _networkID, IGlobalExitRootManager _globalExitRootManager - ) public initializer { + ) public virtual initializer { networkID = _networkID; globalExitRootManager = _globalExitRootManager; tokenImplementation = address(new TokenWrapped()); @@ -107,7 +107,7 @@ contract Bridge is DepositContract { address destinationAddress, uint256 amount, bytes calldata permitData - ) public payable { + ) public payable virtual { require( destinationNetwork != networkID, "Bridge::bridge: DESTINATION_CANT_BE_ITSELF" @@ -411,10 +411,7 @@ contract Bridge is DepositContract { bytes calldata permitData ) internal { bytes4 sig = _getSelector(permitData); - require( - sig == _PERMIT_SIGNATURE, - "Bridge::_permit: NOT_VALID_CALL" - ); + require(sig == _PERMIT_SIGNATURE, "Bridge::_permit: NOT_VALID_CALL"); ( address owner, address spender, diff --git a/contracts/mocks/BridgeMock.sol b/contracts/mocks/BridgeMock.sol index 3f4a98376..edc89f76b 100644 --- a/contracts/mocks/BridgeMock.sol +++ b/contracts/mocks/BridgeMock.sol @@ -1,24 +1,64 @@ // SPDX-License-Identifier: AGPL-3.0 pragma solidity 0.8.15; import "../Bridge.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; /** * Bridge that will be deployed on both networks Ethereum and Polygon zkEVM * Contract responsible to manage the token interactions with other networks */ -contract BridgeMock is Bridge { +contract BridgeMock is Bridge, OwnableUpgradeable { + uint256 public maxEtherBridge; + /** * @param _networkID networkID * @param _globalExitRootManager global exit root manager address */ - constructor( + function initialize( uint32 _networkID, IGlobalExitRootManager _globalExitRootManager - ) { - initialize(_networkID, _globalExitRootManager); + ) public override initializer { + networkID = _networkID; + globalExitRootManager = _globalExitRootManager; + tokenImplementation = address(new TokenWrapped()); + __DepositContract_init(); + __Ownable_init(); + maxEtherBridge = 0.25 ether; } - function setNetworkID(uint32 _networkID) public { + function setNetworkID(uint32 _networkID) public onlyOwner { networkID = _networkID; } + + function setMaxEtherBridge(uint256 _maxEtherBridge) public onlyOwner { + maxEtherBridge = _maxEtherBridge; + } + + /** + * @notice Deposit add a new leaf to the merkle tree + * @param token Token address, 0 address is reserved for ether + * @param destinationNetwork Network destination + * @param destinationAddress Address destination + * @param amount Amount of tokens + * @param permitData Raw data of the call `permit` of the token + */ + function bridge( + address token, + uint32 destinationNetwork, + address destinationAddress, + uint256 amount, + bytes calldata permitData + ) public payable override { + require( + msg.value <= maxEtherBridge, + "Bridge::bridge: Cannot bridge more than maxEtherBridge in internal testnet" + ); + super.bridge( + token, + destinationNetwork, + destinationAddress, + amount, + permitData + ); + } } diff --git a/contracts/mocks/ProofOfEfficiencyMock.sol b/contracts/mocks/ProofOfEfficiencyMock.sol index 58c3c24dc..6dba5d1f1 100644 --- a/contracts/mocks/ProofOfEfficiencyMock.sol +++ b/contracts/mocks/ProofOfEfficiencyMock.sol @@ -326,6 +326,14 @@ contract ProofOfEfficiencyMock is ProofOfEfficiency, OwnableUpgradeable { lastBatchSequenced = _numBatch; } + /** + * @notice Set network name + * @param _networkName New verifier + */ + function setNetworkName(string memory _networkName) public onlyOwner { + networkName = _networkName; + } + /** * @notice Allows an aggregator to verify a batch * @param newLocalExitRoot New local exit root once the batch is processed diff --git a/deployment/deployment_v2-0/README.md b/deployment/deployment_v2-0/README.md index 9a9d6ce8a..1e4eb2a1a 100644 --- a/deployment/deployment_v2-0/README.md +++ b/deployment/deployment_v2-0/README.md @@ -32,3 +32,7 @@ To verify contracts run `npm run verify:PoE2_0:${network}`, for example: ``` npm run verify:PoE2_0:goerli ``` + +## Notes + +- `gensis.json` has been generated using the tool: `zkevm-commonjs/tools/fill-genesis/create-genesis.js` using as generator file: `genesis-gen.json` diff --git a/deployment/deployment_v2-0/deployPoE_v2-0.js b/deployment/deployment_v2-0/deployPoE_v2-0.js index 3e7d6345c..fdb4e9cff 100644 --- a/deployment/deployment_v2-0/deployPoE_v2-0.js +++ b/deployment/deployment_v2-0/deployPoE_v2-0.js @@ -21,7 +21,7 @@ async function main() { const atemptsDeployProxy = 20; let currentProvider = ethers.provider; - if(deployParameters.multiplierGas || deployParameters.maxFeePerGas) { + if (deployParameters.multiplierGas || deployParameters.maxFeePerGas) { if (process.env.HARDHAT_NETWORK != "hardhat") { currentProvider = new ethers.providers.JsonRpcProvider(`https://${process.env.HARDHAT_NETWORK}.infura.io/v3/${process.env.INFURA_PROJECT_ID}`); if (deployParameters.maxPriorityFeePerGas && deployParameters.maxFeePerGas) { @@ -41,12 +41,12 @@ async function main() { }; } currentProvider.getFeeData = overrideFeeData; - } + } } } - + let deployer; - if(deployParameters.privateKey) { + if (deployParameters.privateKey) { deployer = new ethers.Wallet(deployParameters.privateKey, currentProvider); } else { deployer = ethers.Wallet.fromMnemonic(process.env.MNEMONIC, `m/44'/60'/0'/0/0`).connect(currentProvider); @@ -106,7 +106,13 @@ async function main() { } // deploy bridge - const bridgeFactory = await ethers.getContractFactory('Bridge', deployer); + let bridgeFactory; + if (deployParameters.bridgeMock) { + bridgeFactory = await ethers.getContractFactory('BridgeMock', deployer); + } else { + bridgeFactory = await ethers.getContractFactory('Bridge', deployer); + } + let bridgeContract; for (let i = 0; i < atemptsDeployProxy; i++) { try { diff --git a/deployment/deployment_v2-0/deploy_parameters.json.example b/deployment/deployment_v2-0/deploy_parameters.json.example index 44d51f65e..2ea0431df 100644 --- a/deployment/deployment_v2-0/deploy_parameters.json.example +++ b/deployment/deployment_v2-0/deploy_parameters.json.example @@ -9,5 +9,6 @@ "maxFeePerGas":0, "maxPriorityFeePerGas":0, "multiplierGas": 0, - "trustedSequencerPvtKey":"" + "trustedSequencerPvtKey":"", + "bridgeMock":false } \ No newline at end of file diff --git a/deployment/deployment_v2-0/genesis-gen.json b/deployment/deployment_v2-0/genesis-gen.json new file mode 100644 index 000000000..5c6d7e4bf --- /dev/null +++ b/deployment/deployment_v2-0/genesis-gen.json @@ -0,0 +1,64 @@ + +{ + "defaultChainId": 1000, + "sequencerAddress": "0xC949254d682D8c9ad5682521675b8F43b102aec4", + "genesis": [ + { + "address": "0x9D98DeAbC42dd696Deb9e40b4f1CAB7dDBF55988", + "pvtKey": "0x00", + "balance": "100000000000000000000000", + "nonce": "0" + }, + { + "address": "0xC949254d682D8c9ad5682521675b8F43b102aec4", + "pvtKey": "0xdfd01798f92667dbf91df722434e8fbe96af0211d4d1b82bbbbc8f1def7a814f", + "balance": "0", + "nonce": "0" + } + ], + "txs": [ + { + "from": "0xC949254d682D8c9ad5682521675b8F43b102aec4", + "nonce": 0, + "value": "0", + "gasLimit": 10000000, + "gasPrice": "0", + "chainId": 1000, + "paramsDeploy": { + "types": [ + "address" + ], + "values": [ + "0x9D98DeAbC42dd696Deb9e40b4f1CAB7dDBF55988" + ] + }, + "contractName": "GlobalExitRootManagerL2", + "reason": "" + }, + { + "from": "0xC949254d682D8c9ad5682521675b8F43b102aec4", + "nonce": 1, + "value": "0", + "gasLimit": 10000000, + "gasPrice": "0", + "chainId": 1000, + "contractName": "Bridge" + }, + { + "from": "0xC949254d682D8c9ad5682521675b8F43b102aec4", + "to": "0x9D98DeAbC42dd696Deb9e40b4f1CAB7dDBF55988", + "nonce": 2, + "value": "0", + "gasLimit": 10000000, + "gasPrice": "0", + "chainId": 1000, + "function": "initialize", + "paramsFunction": [ + 1, + "0xAE4bB80bE56B819606589DE61d5ec3b522EEB032" + ], + "contractName": "Bridge" + } + ], + "timestamp": 1944498031 +} diff --git a/docs/Bridge2.md b/docs/Bridge2.md new file mode 100644 index 000000000..2e249cb55 --- /dev/null +++ b/docs/Bridge2.md @@ -0,0 +1,166 @@ +Bridge that will be deployed on both networks Ethereum and Polygon zkEVM +Contract responsible to manage the token interactions with other networks + + +## Functions +### initialize +```solidity + function initialize( + uint32 _networkID, + contract IGlobalExitRootManager _globalExitRootManager + ) public +``` + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`_networkID` | uint32 | networkID +|`_globalExitRootManager` | contract IGlobalExitRootManager | global exit root manager address + +### bridgeAsset +```solidity + function bridgeAsset( + address token, + uint32 destinationNetwork, + address destinationAddress, + uint256 amount, + bytes permitData + ) public +``` +Deposit add a new leaf to the merkle tree + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`token` | address | Token address, 0 address is reserved for ether +|`destinationNetwork` | uint32 | Network destination +|`destinationAddress` | address | Address destination +|`amount` | uint256 | Amount of tokens +|`permitData` | bytes | Raw data of the call `permit` of the token + +### bridgeMessage +```solidity + function bridgeMessage( + uint32 destinationNetwork, + address destinationAddress, + bytes metadata + ) public +``` +Bridge message + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`destinationNetwork` | uint32 | Network destination +|`destinationAddress` | address | Address destination +|`metadata` | bytes | Message metadata + +### claim +```solidity + function claim( + bytes32[] smtProof, + uint32 index, + bytes32 mainnetExitRoot, + bytes32 rollupExitRoot, + uint32 originNetwork, + address originTokenAddress, + uint32 destinationNetwork, + address destinationAddress, + uint256 amount, + bytes metadata + ) public +``` +Verify merkle proof and withdraw tokens/ether + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`smtProof` | bytes32[] | Smt proof +|`index` | uint32 | Index of the leaf +|`mainnetExitRoot` | bytes32 | Mainnet exit root +|`rollupExitRoot` | bytes32 | Rollup exit root +|`originNetwork` | uint32 | Origin network +|`originTokenAddress` | address | Origin token address, 0 address is reserved for ether +|`destinationNetwork` | uint32 | Network destination, must be 0 ( mainnet) +|`destinationAddress` | address | Address destination +|`amount` | uint256 | Amount of tokens +|`metadata` | bytes | abi encoded metadata if any, empty otherwise + +### precalculatedWrapperAddress +```solidity + function precalculatedWrapperAddress( + uint32 originNetwork, + address originTokenAddress + ) public returns (address) +``` +Returns the precalculated address of a wrapper using the token information + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`originNetwork` | uint32 | Origin network +|`originTokenAddress` | address | Origin token address, 0 address is reserved for ether + +### getTokenWrappedAddress +```solidity + function getTokenWrappedAddress( + uint32 originNetwork, + address originTokenAddress + ) public returns (address) +``` +Returns the address of a wrapper using the token information if already exist + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`originNetwork` | uint32 | Origin network +|`originTokenAddress` | address | Origin token address, 0 address is reserved for ether + +### _permit +```solidity + function _permit( + address amount, + uint256 permitData + ) internal +``` +Function to call token permit method of extended ERC20 + + @param token ERC20 token address + + +#### Parameters: +| Name | Type | Description | +| :--- | :--- | :------------------------------------------------------------------- | +|`amount` | address | Quantity that is expected to be allowed +|`permitData` | uint256 | Raw data of the call `permit` of the token + +## Events +### BridgeEvent +```solidity + event BridgeEvent( + ) +``` + +Emitted when a bridge some tokens to another network + +### ClaimEvent +```solidity + event ClaimEvent( + ) +``` + +Emitted when a claim is done from another network + +### NewWrappedToken +```solidity + event NewWrappedToken( + ) +``` + +Emitted when a a new wrapped token is created + diff --git a/test/contracts/bridgeMock.test.js b/test/contracts/bridgeMock.test.js new file mode 100644 index 000000000..2032db8db --- /dev/null +++ b/test/contracts/bridgeMock.test.js @@ -0,0 +1,154 @@ +const { expect } = require('chai'); +const { ethers, upgrades } = require('hardhat'); +const MerkleTreeBridge = require('@0xpolygonhermez/zkevm-commonjs').MTBridge; +const { + verifyMerkleProof, + getLeafValue, +} = require('@0xpolygonhermez/zkevm-commonjs').mtBridgeUtils; + +function calculateGlobalExitRoot(mainnetExitRoot, rollupExitRoot) { + return ethers.utils.solidityKeccak256(['bytes32', 'bytes32'], [mainnetExitRoot, rollupExitRoot]); +} + +describe('Bridge Contract', () => { + let deployer; + let rollup; + + let globalExitRootManager; + let bridgeContract; + let tokenContract; + + const tokenName = 'Matic Token'; + const tokenSymbol = 'MATIC'; + const decimals = 18; + const tokenInitialBalance = ethers.utils.parseEther('20000000'); + const metadataToken = ethers.utils.defaultAbiCoder.encode( + ['string', 'string', 'uint8'], + [tokenName, tokenSymbol, decimals], + ); + + const networkIDMainnet = 0; + const networkIDRollup = 1; + + beforeEach('Deploy contracts', async () => { + // load signers + [deployer, rollup] = await ethers.getSigners(); + + // deploy global exit root manager + const globalExitRootManagerFactory = await ethers.getContractFactory('GlobalExitRootManager'); + globalExitRootManager = await upgrades.deployProxy(globalExitRootManagerFactory, [], { initializer: false }); + + // deploy bridge + const bridgeFactory = await ethers.getContractFactory('BridgeMock'); + bridgeContract = await upgrades.deployProxy(bridgeFactory, [], { initializer: false }); + + await globalExitRootManager.initialize(rollup.address, bridgeContract.address); + await bridgeContract.initialize(networkIDMainnet, globalExitRootManager.address); + + // deploy token + const maticTokenFactory = await ethers.getContractFactory('ERC20PermitMock'); + tokenContract = await maticTokenFactory.deploy( + tokenName, + tokenSymbol, + deployer.address, + tokenInitialBalance, + ); + await tokenContract.deployed(); + }); + + it('should check the constructor parameters', async () => { + expect(await bridgeContract.globalExitRootManager()).to.be.equal(globalExitRootManager.address); + expect(await bridgeContract.networkID()).to.be.equal(networkIDMainnet); + + // Smart contracts start with nonce = 1 + const calcualteImplAddr = await ethers.utils.getContractAddress( + { from: bridgeContract.address, nonce: 1 }, + ); + expect(await bridgeContract.tokenImplementation()).to.be.equal(calcualteImplAddr); + }); + + it('should bridge and verify merkle proof', async () => { + const depositCount = await bridgeContract.depositCount(); + const originNetwork = networkIDMainnet; + const tokenAddress = tokenContract.address; + const amount = ethers.utils.parseEther('10'); + const destinationNetwork = networkIDRollup; + const destinationAddress = deployer.address; + + const metadata = metadataToken; + const metadataHash = ethers.utils.solidityKeccak256(['bytes'], [metadata]); + + const balanceDeployer = await tokenContract.balanceOf(deployer.address); + const balanceBridge = await tokenContract.balanceOf(bridgeContract.address); + + const rollupExitRoot = await globalExitRootManager.lastRollupExitRoot(); + const lastGlobalExitRootNum = await globalExitRootManager.lastGlobalExitRootNum(); + + // create a new deposit + await expect(tokenContract.approve(bridgeContract.address, amount)) + .to.emit(tokenContract, 'Approval') + .withArgs(deployer.address, bridgeContract.address, amount); + + // pre compute root merkle tree in Js + const height = 32; + const merkleTree = new MerkleTreeBridge(height); + const leafValue = getLeafValue(originNetwork, tokenAddress, destinationNetwork, destinationAddress, amount, metadataHash); + merkleTree.add(leafValue); + const rootJSMainnet = merkleTree.getRoot(); + + await expect(bridgeContract.bridge(tokenAddress, destinationNetwork, destinationAddress, amount, '0x')) + .to.emit(bridgeContract, 'BridgeEvent') + .withArgs(originNetwork, tokenAddress, destinationNetwork, destinationAddress, amount, metadata, depositCount) + .to.emit(globalExitRootManager, 'UpdateGlobalExitRoot') + .withArgs(lastGlobalExitRootNum + 1, rootJSMainnet, rollupExitRoot); + + expect(await tokenContract.balanceOf(deployer.address)).to.be.equal(balanceDeployer.sub(amount)); + expect(await tokenContract.balanceOf(bridgeContract.address)).to.be.equal(balanceBridge.add(amount)); + + // check merkle root with SC + const rootSCMainnet = await bridgeContract.getDepositRoot(); + expect(rootSCMainnet).to.be.equal(rootJSMainnet); + + // check merkle proof + const proof = merkleTree.getProofTreeByIndex(0); + const index = 0; + + // verify merkle proof + expect(verifyMerkleProof(leafValue, proof, index, rootSCMainnet)).to.be.equal(true); + expect(await bridgeContract.verifyMerkleProof( + leafValue, + proof, + index, + rootSCMainnet, + )).to.be.equal(true); + + const computedGlobalExitRoot = calculateGlobalExitRoot(rootJSMainnet, rollupExitRoot); + expect(computedGlobalExitRoot).to.be.equal(await globalExitRootManager.getLastGlobalExitRoot()); + }); + + it('shouldnt be able to bridge more thna 0.25e ehters', async () => { + // Add a claim leaf to rollup exit tree + const tokenAddress = ethers.constants.AddressZero; // ether + const amount = ethers.utils.parseEther('10'); + const destinationNetwork = networkIDRollup; + const destinationAddress = deployer.address; + + await expect(bridgeContract.bridge( + tokenAddress, + destinationNetwork, + destinationAddress, + amount, + ethers.utils.parseEther('10'), + { value: ethers.utils.parseEther('10') }, + )).to.be.revertedWith('Bridge::bridge: Cannot bridge more than maxEtherBridge in internal testnet'); + + await bridgeContract.bridge( + tokenAddress, + destinationNetwork, + destinationAddress, + ethers.utils.parseEther('0.25'), + '0x', + { value: ethers.utils.parseEther('0.25') }, + ); + }); +}); diff --git a/test/contracts/depositContractMock.test.js b/test/contracts/depositContractMock.test.js index 69766d43c..9f04ccfa6 100644 --- a/test/contracts/depositContractMock.test.js +++ b/test/contracts/depositContractMock.test.js @@ -15,7 +15,7 @@ describe('Deposit Contract', () => { // load signers [deployer, acc2] = await ethers.getSigners(); - // deploy bridgeMock + // deploy deposit contract mock const depositFactory = await ethers.getContractFactory('DepositContractMock'); depositContractMock = await depositFactory.deploy(); await depositContractMock.deployed(); diff --git a/test/contracts/real-prover/real-flow.test.js b/test/contracts/real-prover/real-flow.test.js index f635f4d3b..e398c8202 100644 --- a/test/contracts/real-prover/real-flow.test.js +++ b/test/contracts/real-prover/real-flow.test.js @@ -30,7 +30,7 @@ describe('Real flow test', () => { const networkIDMainnet = 0; const allowForcebatches = true; const urlSequencer = 'http://zkevm-json-rpc:8123'; - const chainID = 1000; + const chainID = inputJson.chainId; const networkName = 'zkevm'; beforeEach('Deploy contract', async () => { @@ -109,6 +109,7 @@ describe('Real flow test', () => { batchHashData, inputJson.numBatch, inputJson.timestamp, + inputJson.chainId, inputJson.aggregatorAddress, ); expect(circuitInputStarkJS).to.be.eq(Scalar.e(input[0])); diff --git a/test/contracts/real-prover/real-prover-test-inputs.test.js b/test/contracts/real-prover/real-prover-test-inputs.test.js index eb8f01a5e..8d93e72a5 100644 --- a/test/contracts/real-prover/real-prover-test-inputs.test.js +++ b/test/contracts/real-prover/real-prover-test-inputs.test.js @@ -8,7 +8,7 @@ const { generateSolidityInputs } = contractUtils; const proofJson = require('./test-inputs/proof.json'); const publicJson = require('./test-inputs/public.json'); -describe('Real flow test', () => { +describe('Real prover inputs test', () => { let verifierContract; beforeEach('Deploy contract', async () => { diff --git a/test/contracts/real-prover/test-inputs/input.json b/test/contracts/real-prover/test-inputs/input.json index 59ae9cf62..6de53a4e4 100644 --- a/test/contracts/real-prover/test-inputs/input.json +++ b/test/contracts/real-prover/test-inputs/input.json @@ -1,1881 +1,16 @@ { - "aggregatorAddress": "0x8bc553Ea895c600b898891cAeac19DC98bEe0A28", - "batchL2Data": "0xf90a792b843b9aca008307ef0b8080b90a6560806040526005805460ff191660121790553480156200001e57600080fd5b50604051620009a5380380620009a58339810160408190526200004191620001e8565b81516200005690600390602085019062000075565b5080516200006c90600490602084019062000075565b5050506200028f565b828054620000839062000252565b90600052602060002090601f016020900481019282620000a75760008555620000f2565b82601f10620000c257805160ff1916838001178555620000f2565b82800160010185558215620000f2579182015b82811115620000f2578251825591602001919060010190620000d5565b506200010092915062000104565b5090565b5b8082111562000100576000815560010162000105565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014357600080fd5b81516001600160401b03808211156200016057620001606200011b565b604051601f8301601f19908116603f011681019082821181831017156200018b576200018b6200011b565b81604052838152602092508683858801011115620001a857600080fd5b600091505b83821015620001cc5785820183015181830184015290820190620001ad565b83821115620001de5760008385830101525b9695505050505050565b60008060408385031215620001fc57600080fd5b82516001600160401b03808211156200021457600080fd5b620002228683870162000131565b935060208501519150808211156200023957600080fd5b50620002488582860162000131565b9150509250929050565b600181811c908216806200026757607f821691505b602082108114156200028957634e487b7160e01b600052602260045260246000fd5b50919050565b610706806200029f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c681461013857806370a082311461014d57806395d89b411461016d578063a0712d6814610175578063a9059cbb14610188578063dd62ed3e1461019b57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610106578063313ce56714610119575b600080fd5b6100b66101c6565b6040516100c391906104eb565b60405180910390f35b6100df6100da36600461055c565b610254565b60405190151581526020016100c3565b6100f860005481565b6040519081526020016100c3565b6100df610114366004610586565b6102c0565b6005546101269060ff1681565b60405160ff90911681526020016100c3565b61014b6101463660046105c2565b61039b565b005b6100f861015b3660046105db565b60016020526000908152604090205481565b6100b6610401565b61014b6101833660046105c2565b61040e565b6100df61019636600461055c565b61046d565b6100f86101a93660046105fd565b600260209081526000928352604080842090915290825290205481565b600380546101d390610630565b80601f01602080910402602001604051908101604052809291908181526020018280546101ff90610630565b801561024c5780601f106102215761010080835404028352916020019161024c565b820191906000526020600020905b81548152906001019060200180831161022f57829003601f168201915b505050505081565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102af9086815260200190565b60405180910390a350600192915050565b6001600160a01b03831660009081526002602090815260408083203384529091528120805483919083906102f5908490610681565b90915550506001600160a01b03841660009081526001602052604081208054849290610322908490610681565b90915550506001600160a01b0383166000908152600160205260408120805484929061034f908490610698565b92505081905550826001600160a01b0316846001600160a01b03166000805160206106b18339815191528460405161038991815260200190565b60405180910390a35060019392505050565b33600090815260016020526040812080548392906103ba908490610681565b92505081905550806000808282546103d29190610681565b909155505060405181815260009033906000805160206106b1833981519152906020015b60405180910390a350565b600480546101d390610630565b336000908152600160205260408120805483929061042d908490610698565b92505081905550806000808282546104459190610698565b909155505060405181815233906000906000805160206106b1833981519152906020016103f6565b3360009081526001602052604081208054839190839061048e908490610681565b90915550506001600160a01b038316600090815260016020526040812080548492906104bb908490610698565b90915550506040518281526001600160a01b0384169033906000805160206106b1833981519152906020016102af565b600060208083528351808285015260005b81811015610518578581018301518582016040015282016104fc565b8181111561052a576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461055757600080fd5b919050565b6000806040838503121561056f57600080fd5b61057883610540565b946020939093013593505050565b60008060006060848603121561059b57600080fd5b6105a484610540565b92506105b260208501610540565b9150604084013590509250925092565b6000602082840312156105d457600080fd5b5035919050565b6000602082840312156105ed57600080fd5b6105f682610540565b9392505050565b6000806040838503121561061057600080fd5b61061983610540565b915061062760208401610540565b90509250929050565b600181811c9082168061064457607f821691505b6020821081141561066557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156106935761069361066b565b500390565b600082198211156106ab576106ab61066b565b50019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200bc4422a3c70571f82d7aff8ad633b2be9f8e29ff037eaead009019ed70ed47864736f6c634300080c00330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000064220434f494e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000342434f00000000000000000000000000000000000000000000000000000000008203e880804540fe81b86397975b3e06d7df107fc39900b03d50c3d99b49972bfe5691be601d96ba212ab37b950d159e39259af50d230e3f22acaadad25fea949f6b980c441b", - "contractsBytecode": { - "74539727d90c7d5dc8599b1a63f390e4e4aefd87c712930ecbe0fd01b84e9504": "608060405234801561001057600080FD5B50600436106100A95760003560E01C806342966C681161007157806342966C681461013857806370A082311461014D57806395D89B411461016D578063A0712D6814610175578063A9059CBB14610188578063DD62ED3E1461019B57600080FD5B806306FDDE03146100AE578063095EA7B3146100CC57806318160DDD146100EF57806323B872DD14610106578063313CE56714610119575B600080FD5B6100B66101C6565B6040516100C391906104EB565B60405180910390F35B6100DF6100DA36600461055C565B610254565B60405190151581526020016100C3565B6100F860005481565B6040519081526020016100C3565B6100DF610114366004610586565B6102C0565B6005546101269060FF1681565B60405160FF90911681526020016100C3565B61014B6101463660046105C2565B61039B565B005B6100F861015B3660046105DB565B60016020526000908152604090205481565B6100B6610401565B61014B6101833660046105C2565B61040E565B6100DF61019636600461055C565B61046D565B6100F86101A93660046105FD565B600260209081526000928352604080842090915290825290205481565B600380546101D390610630565B80601F01602080910402602001604051908101604052809291908181526020018280546101FF90610630565B801561024C5780601F106102215761010080835404028352916020019161024C565B820191906000526020600020905B81548152906001019060200180831161022F57829003601F168201915B505050505081565B3360008181526002602090815260408083206001600160A01B038716808552925280832085905551919290917F8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925906102AF9086815260200190565B60405180910390A350600192915050565B6001600160A01B03831660009081526002602090815260408083203384529091528120805483919083906102F5908490610681565B90915550506001600160A01B03841660009081526001602052604081208054849290610322908490610681565B90915550506001600160A01B0383166000908152600160205260408120805484929061034F908490610698565B92505081905550826001600160A01B0316846001600160A01B03166000805160206106B18339815191528460405161038991815260200190565B60405180910390A35060019392505050565B33600090815260016020526040812080548392906103BA908490610681565B92505081905550806000808282546103D29190610681565B909155505060405181815260009033906000805160206106B1833981519152906020015B60405180910390A350565B600480546101D390610630565B336000908152600160205260408120805483929061042D908490610698565B92505081905550806000808282546104459190610698565B909155505060405181815233906000906000805160206106B1833981519152906020016103F6565B3360009081526001602052604081208054839190839061048E908490610681565B90915550506001600160A01B038316600090815260016020526040812080548492906104BB908490610698565B90915550506040518281526001600160A01B0384169033906000805160206106B1833981519152906020016102AF565B600060208083528351808285015260005B81811015610518578581018301518582016040015282016104FC565B8181111561052A576000604083870101525B50601F01601F1916929092016040019392505050565B80356001600160A01B038116811461055757600080FD5B919050565B6000806040838503121561056F57600080FD5B61057883610540565B946020939093013593505050565B60008060006060848603121561059B57600080FD5B6105A484610540565B92506105B260208501610540565B9150604084013590509250925092565B6000602082840312156105D457600080FD5B5035919050565B6000602082840312156105ED57600080FD5B6105F682610540565B9392505050565B6000806040838503121561061057600080FD5B61061983610540565B915061062760208401610540565B90509250929050565B600181811C9082168061064457607F821691505B6020821081141561066557634E487B7160E01B600052602260045260246000FD5B50919050565B634E487B7160E01B600052601160045260246000FD5B6000828210156106935761069361066B565B500390565B600082198211156106AB576106AB61066B565B50019056FEDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EFA26469706673582212200BC4422A3C70571F82D7AFF8AD633B2BE9F8E29FF037EAEAD009019ED70ED47864736F6C634300080C0033" - }, - "db": { - "0x00324c96c4d448a15f1cbc91abbbf0da550c105d6dc67a3b5c5b913e8fe14f68": [ - "f2732903cada13a6", - "2d0b5832f4389d0e", - "6d0e804548a4c73a", - "f36c9e03cf7de4a4", - "0e0b52e3d88a540f", - "f7a418dbf22e32f9", - "74e6ce36c3735944", - "ff263b6877de0605", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x01b39f099fed91ffda239d031e1c7ef8dea9c16de69728b2ea9996900781732c": [ - "26017710258817d2", - "e701bbe9ef19e630", - "76157a84863c2dce", - "4cc018802af3294a", - "1a046fb530406f91", - "20069fd5bea1b4cc", - "d591f614d9ec3e7b", - "c92c50aea4dba418", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x025f5877474577d40a2cf5f5eb9230590111edbe5add14c209bb0a9cd367c1e1": [ - "f2732903cada13a6", - "2d0b5832f4389d0e", - "6d0e804548a4c73a", - "f36c9e03cf7de4a4", - "bb5e1eb0c82d9ddc", - "fac8c5306c96c3dc", - "01e56430f37f9cfa", - "b60c3115ce0e055f", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x02960b7853947260b2ace6c06c9a175666a33439ee5ad0c1703da32e8f284b6e": [ - "54cc3ff6061acb44", - "ff6aa8d5abf41809", - "2d013ed02eddeba7", - "d512aec849b90d2a", - "2f5c24da0a124a90", - "1eecac5b0216555d", - "c55fd3d2f6247133", - "e3be238a6a0c4a6e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x033a324429e53e852479cc5a10d7c8d5f608c4d3a292a6c2d96e28acf873c521": [ - "b95e61290e3741ec", - "8aa5cb05b17c46a4", - "ac16be8f890c4dce", - "3687fbdc6d23c9fe", - "b46f521e1ecf03e4", - "2f39a82b54ab77ef", - "2c460bc9a7f86c55", - "a011a9d76688c6ba", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x0349d7755853f9ebbb423d9863617ca2ff47b51543c08d4e90bac68c44f0f2b7": [ - "0000000000000706", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x044366eecb55d5bf61ede64a271e7c6dc9ff834c3589cad42fcd47a5576d16d1": [ - "cf9c0aac93c2795e", - "2e5eb66245be66bd", - "3133c738fcd09fee", - "16d120fc58466271", - "c18dd77cf7d9cd39", - "e5c65304b18203d4", - "67e31e8cfd2d7d77", - "224fb1886b66a0d2", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x04ae508271716daa6271b66f1560894c082b6d2b488d5a17aaedadd9699c9bfc": [ - "ee702bcc0e3f11d8", - "f211475451eba60e", - "aa32a255aa9a9c52", - "cbca203ac4e41f91", - "b3fbbac43dac352e", - "d5764e9dcc92f8b9", - "e293c078ec31d7e0", - "56e9c2fcfa5b5300", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x06ca431672e2565390b56c13510367885d5cf12c5b58eb5b06fd5a9ce0d6f8ed": [ - "99771c0182e0c77b", - "603c12afaacc2af2", - "5a1eb61aa65fcdb0", - "a3bbd113344df96a", - "58a898bf83f0ed57", - "c1ebcb25aa3f88c0", - "914f5acc6f8b9f59", - "1cf12dcddd9efcbe", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x07783259a592784bd073bc533304e3e466085f4471bab6c2f319cf869f5c78f6": [ - "43d622e997d04342", - "14698ce38f591424", - "f8389ce656db1b39", - "15b0bd49bbf53b7c", - "676d88f8a5dc44ed", - "40e15a797d0e3062", - "deca25bcc316dd37", - "fa658ba0e5ce6b48", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x0af5a04ea8d00dd4b40f2789c00c9ee00d5b94cc723278bc19a7be4a1fc0b554": [ - "9d868ae8fb312f22", - "82a7b98e4442f9d5", - "4c8a19f95b75afcb", - "425279b359a9a725", - "c39d84b2613d5bab", - "a9687d30fb524c23", - "c7da134f3a301fad", - "835935a55e881d2c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x0e85a75fd1ef45ecc4ff757e6e70bddf9930cbbb63881b4e9127bc21a730c930": [ - "0c8d2c7dcb60856e", - "2708e94d769a08da", - "5344015a5b52d453", - "d9e9bb30c02fc6a7", - "a121f34d4fbf0e1d", - "e83287d1f9bd2210", - "458fb43d74f026b7", - "aab894751926ef3c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x0ffa087602fc915936c40e734a296af993f691ce2f2194608dbf3940b0b9d5a3": [ - "53003efc5a882a2c", - "71c4406173090ceb", - "cf4cf951cbd3c61b", - "b620b5d2a610c23b", - "b6f550ee6f3814dd", - "001bf9b8037bf8c3", - "4900df1fbe871106", - "8aec723795316451", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x113b66c5700c0b6810b8fffd777531735f19135afbf08675cc59cf4cbb6126f1": [ - "d2f93148f0e9b440", - "c7fb7fee7170fb02", - "9f4455aaad80b814", - "7510c40143e202f2", - "4d076cc9ffeea0f9", - "c386e46b0bde26d3", - "a0b762d2a928848e", - "19a6597c2273f9a5", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x13ae903c06e26707fad2f010be3ecbabe29e9a89e7d01159255e214218c7c276": [ - "e0044fdc1474c033", - "883a316f9343165b", - "e4e2f29e98c70655", - "ea599e10ff71e714", - "4da410ec9a9d6183", - "8a8d0724e24ef487", - "fe638477c19ae53a", - "b0f222ec737798c3", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x15b0bd49bbf53b7cf8389ce656db1b3914698ce38f59142443d622e997d04342": [ - "2d5fe74e5bad8d69", - "4967311860bdded6", - "05d28a6313c024cb", - "7ded441ddfcd1567", - "775bad2c716ef752", - "6df93eea7bf9b6ff", - "9018858ac0c3450d", - "63dae7b97154f692", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x19a6597c2273f9a5a0b762d2a928848ec386e46b0bde26d34d076cc9ffeea0f9": [ - "1328b62fdd50d22f", - "3f8666d61d741e58", - "2394d235026619c2", - "17f0fe85ad062fcc", - "233a6fbd1ff198da", - "dedcae2720a67d7a", - "8b26189e2f06d457", - "50694996314b782e", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x1a1bcc5f4e7a293b4fdd86d78b9c40bee2e3403734b95da37c263f878235a9b1": [ - "1d0048662380202a", - "05ae2b06cd31f3fd", - "125f3a8aae554cd1", - "1d21e2259c16d1cc", - "811426ec122b5d53", - "0b3457cd582e83fe", - "dd8c287701325a3c", - "ef73c0528f6a8c1d", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x1f1bd6bf225d02e39de9954b3f348a1e8a329b0e689d5df46c0c321bc3f99d54": [ - "6bdd2c9493c5ff73", - "6fe9dfd4f49099bc", - "fc3f171d4626d45c", - "bacf0e7e9a45a0ba", - "2fcd47a5576d16d1", - "c9ff834c3589cad4", - "61ede64a271e7c6d", - "044366eecb55d5bf", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x224fb1886b66a0d267e31e8cfd2d7d77e5c65304b18203d4c18dd77cf7d9cd39": [ - "19a7be4a1fc0b554", - "0d5b94cc723278bc", - "b40f2789c00c9ee0", - "0af5a04ea8d00dd4", - "e5e2eead23138a1f", - "0481b09abc0453da", - "d374be4cb8fb9ac4", - "e1054333505ceff5", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x252dfdcae7a51b6b83e67b8e036262863c0743a4407c648ffe5c9dad4395f968": [ - "ee2e087a0f5395c9", - "0cb3074a3e717f21", - "56c0a01e10e05b66", - "5df79b91d326a8ed", - "f436b520d7dc9380", - "b9398e14298ea31d", - "9583ddd6cfb1a037", - "d644c12f40514ac9", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x2933852381b0646187dde2376e119cf16333ce9c71675bdad4e5807c9bc6c03a": [ - "f6fef0b9e53c30e0", - "427a4fa23100ec85", - "4a1d60f12d00edcf", - "fc2ac24c9febbddc", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x2ec2422ff28ec93d6ca2e83d8fa7bac0731d99de6df6d01fcb40b64733b75efa": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "aeaa508e37dbbf79", - "cd628595a834f647", - "d198ab4a73345594", - "7cc25cb7e11c022f", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3280afb401254525402a11b10f05178955c4c5298ae356b50630a7dc1cd70dbc": [ - "473cb7f846caa703", - "49fc868bdf548525", - "f13f01e2ef5deeae", - "b9adbd0ee41a6429", - "3cc515bb485c97a1", - "be355db6ef584fbb", - "9afbb74eec905b94", - "dab7987d36e6e283", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3687fbdc6d23c9feac16be8f890c4dce8aa5cb05b17c46a4b95e61290e3741ec": [ - "191c13f993ac7212", - "1511042f750f9e7c", - "69c1121f57b0f1b9", - "49351703cfc425b2", - "91a5a89dafd3630d", - "755e43008097aeaf", - "598689d7204b9c06", - "b61945c05d9727da", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x37d517214e91c04bd8c950874a84e549892f6a8cbad10d580ed725bbac95e2e1": [ - "fa19e33a43b158a8", - "526f7fbee619489e", - "b39d41630b64a9b0", - "bebd4f07348b62ad", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3828b5bf1fd81b0dd737a0f41f8d505061a0c19d47b9671e2e30f64bce2f1fcf": [ - "190297febf906b1f", - "104de4282f42b79e", - "0fa8a0b0352f4a65", - "1461ba4b90ef4ed5", - "4c4c25295f6ee836", - "ac47a0f22027e86c", - "7eeb6a69c0f44512", - "e379997e1b2e52a8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x384e169811b16bb9160b49955d70d0531dc0d00419140e18f73e41a725e29952": [ - "d9323bb703807435", - "49176abff1b1ce97", - "821866e7a60ec08e", - "cedb55ac57782e2f", - "271aadd663d45d12", - "72a72bd3dccec60d", - "d9469873f4bb83dc", - "a6dc98056139e59b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x39b5577372842cfc1208731da94a4baaf397f5757ae0a4a80647b33f377a5512": [ - "1b5349c04cff9e1a", - "ee3e98fab708e7ef", - "2df93df3aa0fece4", - "f7e09baca1958412", - "48be72ca12f86225", - "e07b5c20f837c76f", - "b82e867d182759ff", - "eacb5e2f83edc1b8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3a5c3e4b105197a5dbc29461cd728506b0aebf91c9cc44ae1ff7e12cf8ef0d77": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "cb40b64733b75efa", - "731d99de6df6d01f", - "6ca2e83d8fa7bac0", - "2ec2422ff28ec93d", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3e0781f7ae9fc0d28eb78cd1aee6c30c6d401bb685c18466d791cabf35af3340": [ - "0000000000000013", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x3efad1dd58c2259d339438195426ad0af57d81efba5d4445b69b044f5e694795": [ - "00000000dea00000", - "0000000035c9adc5", - "0000000000000036", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x401e7c7f4b5bfa62e6aa75eebb5f8b4325ef5dfb16dbb902bbfd2115c078cb2b": [ - "9127bc21a730c930", - "9930cbbb63881b4e", - "c4ff757e6e70bddf", - "0e85a75fd1ef45ec", - "703da32e8f284b6e", - "66a33439ee5ad0c1", - "b2ace6c06c9a1756", - "02960b7853947260", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x482e8c294d00c0144f63a0adb13b91cade721abbc164eada778713d1d7d6894c": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "fdbec11a4e21a6d5", - "261bf5c8fe409ebc", - "c5fc7f4f60e17df6", - "de045a639a63f6d8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x48d724c8ca5bf46644c9702e043c958d74d5d1c85dfa2a22742d4f4f0f0b44bb": [ - "0000000002ad7600", - "0000000096a7b22f", - "0000000000001527", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x48e18876309d193be6ff61d818c3cfa9cee7ff76a44b3e1623e9b188ba5b8293": [ - "2e30f64bce2f1fcf", - "61a0c19d47b9671e", - "d737a0f41f8d5050", - "3828b5bf1fd81b0d", - "689be829d15a73b1", - "b6d3fe1a9611c04d", - "1bf145d3bb3b88e1", - "708ba9203340e54b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x49d0dbc2ccb4e4674012c2072fa0456fb7f4c069bb872be9f5c72ff651a59cca": [ - "711304eabb385953", - "5b1e62ad9291cac8", - "ad28214e598605d7", - "f6691d832032e75e", - "4bbbf9c415721a38", - "0c49ace009394b5c", - "8a468b89c1932e81", - "c6a92f9f208cd7ed", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x4a72551a4990003d07f50a9cceefc5662a4d14319d350c1a4c427d8ddb6bdc94": [ - "27953bcaa4a4ba2a", - "60101e69e99e156d", - "282fb267b4bcb6af", - "b6633a0ee9f9800c", - "36b549e9ad90eaf4", - "4c0896b4767fb945", - "10ecff87603b39fe", - "ca1de2351dd252b8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x4cc018802af3294a76157a84863c2dcee701bbe9ef19e63026017710258817d2": [ - "e9684d3a5404f56b", - "523e335a7b82d6e0", - "8fa1954c2216fac7", - "c27b7fdd3afa90f7", - "2ac37d6a27623b10", - "4d218fbbb6159032", - "dceb1aa93a5e742a", - "9b3ec59c0ea39dce", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x4d30090ee3e37d753298c0c37fa7b192e6cef068bf5853df1ae895b45551bcdd": [ - "7a8ea92dfe57a655", - "c80ac33c6de70bfa", - "bcdb74dfad04a13d", - "af39e6c5162d98ee", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x4ea97bd5ced85989de4bfd3a9d376161300fa2ef103d564a15bb14c7a937e518": [ - "bbfd2115c078cb2b", - "25ef5dfb16dbb902", - "e6aa75eebb5f8b43", - "401e7c7f4b5bfa62", - "0e563c09bff65bef", - "8494278ec434d3da", - "ad18f681da50e169", - "f852910d096d6128", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x50694996314b782e8b26189e2f06d457dedcae2720a67d7a233a6fbd1ff198da": [ - "0000000000000006", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000043434f00", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x509c40594a0bb8e17d4af7315739d6ad84532343c02cb4ac5fa0432750aee282": [ - "000000009aea2400", - "0000000096a98b12", - "0000000000001527", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x50bfde96231581e3c0a2e9ec229d5ba027451c70154f07f84d4ca980b8bb9eef": [ - "8c6a5c769dd1e9f3", - "6c42e732c3226db4", - "2378d6c9fcf5de7c", - "9b6f7b92aed41c16", - "59fd8a7eeaeef15d", - "7ecb341a7f641701", - "1cd998a87282e033", - "f62b38db6866ee3e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x5c9797a021d486399a075f0298ae3414ed7c9533764efdc24d342ec1bcc9b876": [ - "000000000000002b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x5de73af6b159cb97c4975f42a1a147852bf365dbfe85c0c920bf98a3d441fee0": [ - "0bf97ced7bc46a99", - "0f822d5f4b10a86c", - "07757603a69d3544", - "057ea8f36c3395da", - "4d342ec1bcc9b876", - "ed7c9533764efdc2", - "9a075f0298ae3414", - "5c9797a021d48639", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x618f2a108c99ff3287497d281b0013c9cc9d554b5899232d3949151b59c5781c": [ - "5998ca13d0ce3cf0", - "f53104fd9a9e0673", - "999d491d8dd64ca9", - "92b59c062f00fdb2", - "36b549e9ad90eaf4", - "4c0896b4767fb945", - "10ecff87603b39fe", - "ca1de2351dd252b8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x6559abf87387f35dd7d2ddb171dfe063d35670be3a0def73b7884af01fefdbf5": [ - "5c5b913e8fe14f68", - "550c105d6dc67a3b", - "5f1cbc91abbbf0da", - "00324c96c4d448a1", - "b6f550ee6f3814dd", - "001bf9b8037bf8c3", - "4900df1fbe871106", - "8aec723795316451", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x67e1114340d35467ffc77281e5d0e88f405a19cf87d56b5749599f4d1eeb917b": [ - "097b5c54ea9caa96", - "133042a53b9b37f5", - "3143844cbe65f19d", - "f8c181661d12bebe", - "8dbf3940b0b9d5a3", - "93f691ce2f219460", - "36c40e734a296af9", - "0ffa087602fc9159", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x68b6512920c35ebd1d13d79d622e5500c08b8dc7177783fd501719286551ca5a": [ - "20bf98a3d441fee0", - "2bf365dbfe85c0c9", - "c4975f42a1a14785", - "5de73af6b159cb97", - "5137dbb84b592051", - "faa55e48efd6bb10", - "56b7458e17c5051c", - "878e6a4aa4fc7636", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x6b2dcbca78f728bc2c0bb6002046ede3712188e09511edad5ac51dc9b5063855": [ - "8897b6ed83925307", - "72a0bba47a285f44", - "6fc27381b8ce92e8", - "ea427b1f5a8d42cb", - "ea9996900781732c", - "dea9c16de69728b2", - "da239d031e1c7ef8", - "01b39f099fed91ff", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x6be96e37aa7df385c46adf50cdc48de8730b0eb2e23bca348c93b98f56433af2": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "f5c72ff651a59cca", - "b7f4c069bb872be9", - "4012c2072fa0456f", - "49d0dbc2ccb4e467", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x6ccfd8928d64d4633da53a45e73db6c60ad9668b9fe341b593f9da19f76688a2": [ - "dbeff2c6ec972dc7", - "5152e80e008d8c90", - "1d6d5b51b9850571", - "ae8c053f87f7a059", - "3318ac36321e0ed9", - "1d27887b85834dbe", - "04297cbe543c496c", - "cfff41c25c63cfd0", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x6e73a88be7976d6884e918402442efeffcb564d8c6ba41396f2fd1e383f21d9d": [ - "b088bc15de9a8c7f", - "d661131b5e83d557", - "551093d3e13fcda5", - "a5d5edfff03e3131", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x725ce977e752df10bc32ed6c34c5a6680c333840b9269e0f1102e6a17844fed2": [ - "17fd146c02e38ac9", - "1b056df0359aa064", - "0e852163d714aff2", - "59f6080a6b7c8ec3", - "d791cabf35af3340", - "6d401bb685c18466", - "8eb78cd1aee6c30c", - "3e0781f7ae9fc0d2", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x7924624d7ea4002d37551317f0986ef7c8e73cbc9bdfd9ec973e445cce931684": [ - "0a19b20df0c9f8f3", - "1bd16e0c816cf5a0", - "0b661e98e5d335ec", - "2b0e517f5ab841cd", - "2bab80f97ab20fd8", - "4f759e865dd0f0d5", - "bca1bd46023d9363", - "8d5748cc86f3bd45", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x7cc25cb7e11c022fd198ab4a73345594cd628595a834f647aeaa508e37dbbf79": [ - "50be1e236a76a6ac", - "18ae8bffb89e47b3", - "adfcaa1062b08f99", - "56acfca2e7a1aab2", - "7c263f878235a9b1", - "e2e3403734b95da3", - "4fdd86d78b9c40be", - "1a1bcc5f4e7a293b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x7ded441ddfcd156705d28a6313c024cb4967311860bdded62d5fe74e5bad8d69": [ - "e0044fdc1474c033", - "883a316f9343165b", - "e4e2f29e98c70655", - "ea599e10ff71e714", - "6c0c321bc3f99d54", - "8a329b0e689d5df4", - "9de9954b3f348a1e", - "1f1bd6bf225d02e3", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x7dfeb32a84c6591a3e1ec19f92737cc96e9be66a1399c76c4a0c471ce9b90b05": [ - "973e445cce931684", - "c8e73cbc9bdfd9ec", - "37551317f0986ef7", - "7924624d7ea4002d", - "07d944447257a696", - "586017191f109bf1", - "0274d68153e5c1db", - "47c6e9a0e613387a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x806252b2e82401a88a6d71fd6be99c3b672aaf381f1a570c1eb4ee776bc80780": [ - "f2732903cada13a6", - "2d0b5832f4389d0e", - "6d0e804548a4c73a", - "f36c9e03cf7de4a4", - "3d60f0b76a99d645", - "7bc8efcb6e6bcd57", - "5c346287cb4cdef2", - "ec4f1286559b964a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x835935a55e881d2cc7da134f3a301fada9687d30fb524c23c39d84b2613d5bab": [ - "0a44719489f535a4", - "1229df73671f52db", - "029ed729f6652510", - "1c93b6b5e1ec7280", - "23339327be6326a5", - "50b917b4f162a716", - "f009e6702f1f7078", - "9c8547a6161e997b", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x885c46e80f65fe4a7bd088d4ecc8259e5f372ac9fc633b1b429e7316c43b683b": [ - "6ef0faa7f1f6bab1", - "860cc76dd612ce23", - "872b40060b65b15a", - "ae746a6650a49f97", - "4d076cc9ffeea0f9", - "c386e46b0bde26d3", - "a0b762d2a928848e", - "19a6597c2273f9a5", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x88f58e7b3d80988eaae5107de58dc702dcb278f9a95cc87019722cafefc140ff": [ - "36ade260d606e5b2", - "785e389c5b4a0343", - "ac73bca5f1913713", - "98eca5ed8242306f", - "d62a22384814b347", - "ae0c7d8b00167e62", - "3b54c9316589607a", - "c3ab68e7086f82af", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x8aec7237953164514900df1fbe871106001bf9b8037bf8c3b6f550ee6f3814dd": [ - "d321b5869c5b2b8b", - "37e8002fba1dd801", - "455ed835270d721a", - "2559c02c19e7eaaf", - "019a13f5de157fee", - "4d5f6d058b74a972", - "cea5ed3eac880e12", - "e1683fca2155a14a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x8b64b27b266c1f9c0ae45402a88bdf8f5fcdfb4ebffe586d0de197651373924a": [ - "d321b5869c5b2b8b", - "37e8002fba1dd801", - "455ed835270d721a", - "2559c02c19e7eaaf", - "ea9996900781732c", - "dea9c16de69728b2", - "da239d031e1c7ef8", - "01b39f099fed91ff", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x8d5748cc86f3bd45bca1bd46023d93634f759e865dd0f0d52bab80f97ab20fd8": [ - "000000000000000c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "00000000494e0000", - "000000004320434f", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x92b59c062f00fdb2999d491d8dd64ca9f53104fd9a9e06735998ca13d0ce3cf0": [ - "0a5d6dfa555095be", - "17e7d819ffe73d9d", - "15ffcc5ffef271ce", - "130b5448474b4e99", - "5fa0432750aee282", - "84532343c02cb4ac", - "7d4af7315739d6ad", - "509c40594a0bb8e1", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x94c91709b01f53593c8336e84c25d77c4731c3c7e84a26ef80885f712fe1c1ac": [ - "0630a7dc1cd70dbc", - "55c4c5298ae356b5", - "402a11b10f051789", - "3280afb401254525", - "11dcd9225e2afe1f", - "8bc642efa250e07b", - "6890a46b634a7109", - "b766bc03e2f81638", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x972e13325decd61f0fa55e14b2fc62fda99fde51fdd80be6d01affe1eff77c84": [ - "097b5c54ea9caa96", - "133042a53b9b37f5", - "3143844cbe65f19d", - "f8c181661d12bebe", - "7451c50ab09111ae", - "6a49ce7b40c6803c", - "4900bf5d11339ea0", - "eb2c8285a090fac3", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x987e2292642d3bab6e21f20ae9c829d521153d74ceaa3122dfa018099cb40f24": [ - "f319cf869f5c78f6", - "66085f4471bab6c2", - "d073bc533304e3e4", - "07783259a592784b", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x98a4a4f9981d8c0996dc1c11b0b74c1dd6b85e4e87964b2d8667dc0fc47a667e": [ - "283e400389d0856c", - "1bad95541ffe4482", - "1ed3276488442ef7", - "678847707aa22573", - "90bac68c44f0f2b7", - "ff47b51543c08d4e", - "bb423d9863617ca2", - "0349d7755853f9eb", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x98eca5ed8242306fac73bca5f1913713785e389c5b4a034336ade260d606e5b2": [ - "8667dc0fc47a667e", - "d6b85e4e87964b2d", - "96dc1c11b0b74c1d", - "98a4a4f9981d8c09", - "a316b85aea631a3a", - "484f511ac898333b", - "e59ce930da94e34b", - "b40222d119f33591", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x9b6f7b92aed41c162378d6c9fcf5de7c6c42e732c3226db48c6a5c769dd1e9f3": [ - "097b5c54ea9caa96", - "133042a53b9b37f5", - "3143844cbe65f19d", - "f8c181661d12bebe", - "b7884af01fefdbf5", - "d35670be3a0def73", - "d7d2ddb171dfe063", - "6559abf87387f35d", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x9c8547a6161e997bf009e6702f1f707850b917b4f162a71623339327be6326a5": [ - "000000001e969062", - "00000000d8c8ceb7", - "000000003b4ddc68", - "000000000ef19087", - "0000000096b802ae", - "00000000ae21358d", - "0000000033a393b6", - "000000001275353a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0x9d5236ed63f947fc6870f158d59f90ddbb6d4541adb8b137d3fc6d089870130f": [ - "34500c5ddd3f2f0d", - "6c58d1d43a30992e", - "5df5e3d5177735f9", - "ec22fb99d9702be3", - "6a0a842d7a3ab504", - "971eddd1be3632d4", - "7352403a62cd84f2", - "ee9307ba85fbdcec", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xa3bbd113344df96a5a1eb61aa65fcdb0603c12afaacc2af299771c0182e0c77b": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "93f9da19f76688a2", - "0ad9668b9fe341b5", - "3da53a45e73db6c6", - "6ccfd8928d64d463", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xa5d5edfff03e3131551093d3e13fcda5d661131b5e83d557b088bc15de9a8c7f": [ - "43d622e997d04342", - "14698ce38f591424", - "f8389ce656db1b39", - "15b0bd49bbf53b7c", - "558538089b4d974a", - "9d1fe0bc8095bb23", - "65db7a9b206e7943", - "c1b3fa68b299760e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xa6dc98056139e59bd9469873f4bb83dc72a72bd3dccec60d271aadd663d45d12": [ - "0647b33f377a5512", - "f397f5757ae0a4a8", - "1208731da94a4baa", - "39b5577372842cfc", - "361bd1000cd6bb80", - "8756053cf9998f6d", - "e84b20d5e76c534c", - "9053e4d622dfa680", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xa70971a517540c726ac771eb54b103856a6636c178eb3bd497e4e808f8c164ba": [ - "70218dbdea716e3e", - "e7438adbee0c12a3", - "062351db247adb68", - "a6cb020b2bef40e8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xae746a6650a49f97872b40060b65b15a860cc76dd612ce236ef0faa7f1f6bab1": [ - "501719286551ca5a", - "c08b8dc7177783fd", - "1d13d79d622e5500", - "68b6512920c35ebd", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xaf39e6c5162d98eebcdb74dfad04a13dc80ac33c6de70bfa7a8ea92dfe57a655": [ - "097b5c54ea9caa96", - "133042a53b9b37f5", - "3143844cbe65f19d", - "f8c181661d12bebe", - "9f1f6a3aad936a2f", - "558a935f5221f8a8", - "c9756cd02baaccb3", - "c0c218f0a26b83cd", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb0360327b22364b7da62879cbfae20656cc9344b3ccf143d0c971dcfe90d2c1b": [ - "4b046ea0b6bb1ed6", - "d7194b8492565426", - "ffc13b1347c0ad62", - "c8542994078d37bb", - "15bb14c7a937e518", - "300fa2ef103d564a", - "de4bfd3a9d376161", - "4ea97bd5ced85989", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb0f222ec737798c3fe638477c19ae53a8a8d0724e24ef4874da410ec9a9d6183": [ - "2e30f64bce2f1fcf", - "61a0c19d47b9671e", - "d737a0f41f8d5050", - "3828b5bf1fd81b0d", - "2fcd47a5576d16d1", - "c9ff834c3589cad4", - "61ede64a271e7c6d", - "044366eecb55d5bf", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb4c7dc842e395d074266beec08b50fd43605e152118d77a15467ee28fa6e3879": [ - "e0044fdc1474c033", - "883a316f9343165b", - "e4e2f29e98c70655", - "ea599e10ff71e714", - "23e9b188ba5b8293", - "cee7ff76a44b3e16", - "e6ff61d818c3cfa9", - "48e18876309d193b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb60c3115ce0e055f01e56430f37f9cfafac8c5306c96c3dcbb5e1eb0c82d9ddc": [ - "18163274d4ece0ba", - "a35922dcee052aab", - "8b16d9bed3604ecc", - "2fc81ab266119757", - "778713d1d7d6894c", - "de721abbc164eada", - "4f63a0adb13b91ca", - "482e8c294d00c014", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb61945c05d9727da598689d7204b9c06755e43008097aeaf91a5a89dafd3630d": [ - "0000000000000012", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb6633a0ee9f9800c282fb267b4bcb6af60101e69e99e156d27953bcaa4a4ba2a": [ - "0a5d6dfa555095be", - "17e7d819ffe73d9d", - "15ffcc5ffef271ce", - "130b5448474b4e99", - "742d4f4f0f0b44bb", - "74d5d1c85dfa2a22", - "44c9702e043c958d", - "48d724c8ca5bf466", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xb9adbd0ee41a6429f13f01e2ef5deeae49fc868bdf548525473cb7f846caa703": [ - "3949151b59c5781c", - "cc9d554b5899232d", - "87497d281b0013c9", - "618f2a108c99ff32", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xbacf0e7e9a45a0bafc3f171d4626d45c6fe9dfd4f49099bc6bdd2c9493c5ff73": [ - "190297febf906b1f", - "104de4282f42b79e", - "0fa8a0b0352f4a65", - "1461ba4b90ef4ed5", - "80885f712fe1c1ac", - "4731c3c7e84a26ef", - "3c8336e84c25d77c", - "94c91709b01f5359", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xbd4d8a80ab1070eee29201e1586fea85fdcbf2cb8f02a96ab94c252b6077f543": [ - "d01affe1eff77c84", - "a99fde51fdd80be6", - "0fa55e14b2fc62fd", - "972e13325decd61f", - "59fd8a7eeaeef15d", - "7ecb341a7f641701", - "1cd998a87282e033", - "f62b38db6866ee3e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xbebd4f07348b62adb39d41630b64a9b0526f7fbee619489efa19e33a43b158a8": [ - "43d622e997d04342", - "14698ce38f591424", - "f8389ce656db1b39", - "15b0bd49bbf53b7c", - "9f1f6a3aad936a2f", - "558a935f5221f8a8", - "c9756cd02baaccb3", - "c0c218f0a26b83cd", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc0c218f0a26b83cdc9756cd02baaccb3558a935f5221f8a89f1f6a3aad936a2f": [ - "09bb0a9cd367c1e1", - "0111edbe5add14c2", - "0a2cf5f5eb923059", - "025f5877474577d4", - "0de197651373924a", - "5fcdfb4ebffe586d", - "0ae45402a88bdf8f", - "8b64b27b266c1f9c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc1b3fa68b299760e65db7a9b206e79439d1fe0bc8095bb23558538089b4d974a": [ - "1eb4ee776bc80780", - "672aaf381f1a570c", - "8a6d71fd6be99c3b", - "806252b2e82401a8", - "0de197651373924a", - "5fcdfb4ebffe586d", - "0ae45402a88bdf8f", - "8b64b27b266c1f9c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc26347106dbed013abff5b1215160f769571f46d4e37aba429bb6efa2a0b12d8": [ - "4a0c471ce9b90b05", - "6e9be66a1399c76c", - "3e1ec19f92737cc9", - "7dfeb32a84c6591a", - "bec932f86b62f61f", - "96cd01a97d29088c", - "5009b6a20e79d3bc", - "0e3448c0dafa1501", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc27b7fdd3afa90f78fa1954c2216fac7523e335a7b82d6e0e9684d3a5404f56b": [ - "8cd573e883e33d6f", - "88f6dc555c77978e", - "533b2fed4d5f7a5b", - "f49ba56977c054b5", - "3f6a73e2c1ea6637", - "84358701a2595e79", - "4f71f5610f674032", - "f7dbd4589ef882dc", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc6a92f9f208cd7ed8a468b89c1932e810c49ace009394b5c4bbbf9c415721a38": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "429e7316c43b683b", - "5f372ac9fc633b1b", - "7bd088d4ecc8259e", - "885c46e80f65fe4a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc8542994078d37bbffc13b1347c0ad62d7194b84925654264b046ea0b6bb1ed6": [ - "8c72d106d99fa852", - "2584c3c5a7146e4d", - "5dd1653b8fcbadb2", - "f02015d625ad4fd8", - "9f1f6a3aad936a2f", - "558a935f5221f8a8", - "c9756cd02baaccb3", - "c0c218f0a26b83cd", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xc92c50aea4dba418d591f614d9ec3e7b20069fd5bea1b4cc1a046fb530406f91": [ - "29bb6efa2a0b12d8", - "9571f46d4e37aba4", - "abff5b1215160f76", - "c26347106dbed013", - "067dfbd7a583eb7d", - "acacf30c5b51f3c5", - "809fb22c9bf0c875", - "f4e1e86aaba39e8a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xcac69bbdfea518c46dbed54c9ef89caf2ba16e82d1582f765a9835bdb03f0987": [ - "d3fc6d089870130f", - "bb6d4541adb8b137", - "6870f158d59f90dd", - "9d5236ed63f947fc", - "c89fa5713b527017", - "31a1957120f88e8f", - "f95933d832242c16", - "807f2f6598b96af2", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xcbca203ac4e41f91aa32a255aa9a9c52f211475451eba60eee702bcc0e3f11d8": [ - "9127bc21a730c930", - "9930cbbb63881b4e", - "c4ff757e6e70bddf", - "0e85a75fd1ef45ec", - "d29327ebcbbe8085", - "c9ee8cd588ba0dfc", - "30b41e550de79479", - "2725b538d1167308", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xccd8dad7d14664f6397849ed7f5b08c624af4410a8e83331ef6640d4d2719b48": [ - "7a8ea92dfe57a655", - "c80ac33c6de70bfa", - "bcdb74dfad04a13d", - "af39e6c5162d98ee", - "59fd8a7eeaeef15d", - "7ecb341a7f641701", - "1cd998a87282e033", - "f62b38db6866ee3e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xccf8439f8e863ae8425556d8153c1eb3e2a1b0c81391491948e7867b68f49e6f": [ - "1eb4ee776bc80780", - "672aaf381f1a570c", - "8a6d71fd6be99c3b", - "806252b2e82401a8", - "5ac51dc9b5063855", - "712188e09511edad", - "2c0bb6002046ede3", - "6b2dcbca78f728bc", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xcf9cf9dbf23fd2d2bd1c251e48ed076fc57cdb3aaa6ae9a594d2d734bebaf281": [ - "5a9835bdb03f0987", - "2ba16e82d1582f76", - "6dbed54c9ef89caf", - "cac69bbdfea518c4", - "ea9996900781732c", - "dea9c16de69728b2", - "da239d031e1c7ef8", - "01b39f099fed91ff", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xcfff41c25c63cfd004297cbe543c496c1d27887b85834dbe3318ac36321e0ed9": [ - "251aebfbe691eb13", - "1cae7a62b13d7b36", - "29ae48a1dfcc96ca", - "1874b28f2903dbbe", - "d074b8cee5dcf415", - "2346a1b4c0f390e8", - "47969c1f5a6a25b1", - "da62fdf84a21108e", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xd512aec849b90d2a2d013ed02eddeba7ff6aa8d5abf4180954cc3ff6061acb44": [ - "b290aea84ddd324d", - "628208769d141dde", - "ddca88ad90fc6cef", - "44319fe123f41701", - "d96e28acf873c521", - "f608c4d3a292a6c2", - "2479cc5a10d7c8d5", - "033a324429e53e85", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xd5d55d73a0abd086f188d9a51f6f70ebc9855f70648c0d9deb152cf6d89582b5": [ - "eee1acd4b4dc3706", - "69f55b52ff448932", - "f134fed12c27b8c9", - "df868bf0475f8d45", - "3cc515bb485c97a1", - "be355db6ef584fbb", - "9afbb74eec905b94", - "dab7987d36e6e283", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xd644c12f40514ac99583ddd6cfb1a037b9398e14298ea31df436b520d7dc9380": [ - "97e4e808f8c164ba", - "6a6636c178eb3bd4", - "6ac771eb54b10385", - "a70971a517540c72", - "fe5bab37aead6a81", - "8ad5f132207f32ea", - "7de0e4c0f8b066dc", - "319c41386cc5760f", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xd9e9bb30c02fc6a75344015a5b52d4532708e94d769a08da0c8d2c7dcb60856e": [ - "49cf61f9c7542450", - "9badb0ab55631fd7", - "688e80fd85541190", - "a01d4aef70ecbd23", - "f73e41a725e29952", - "1dc0d00419140e18", - "160b49955d70d053", - "384e169811b16bb9", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xda62fdf84a21108e47969c1f5a6a25b12346a1b4c0f390e8d074b8cee5dcf415": [ - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xddaa128de1eaad619e30223b46698c409d14446772bffe9cdb4ea64c9ba87770": [ - "0f7f6e1a22a50be8", - "179ade4b02e4a25d", - "208eb8d7d6bf8ccd", - "0d153d830b26c8a6", - "b69b044f5e694795", - "f57d81efba5d4445", - "339438195426ad0a", - "3efad1dd58c2259d", - "0000000000000001", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xde045a639a63f6d8c5fc7f4f60e17df6261bf5c8fe409ebcfdbec11a4e21a6d5": [ - "711304eabb385953", - "5b1e62ad9291cac8", - "ad28214e598605d7", - "f6691d832032e75e", - "57a8a03dfd01f95c", - "a9bfeecaabd18f76", - "6c10aa5a2219b784", - "fe67f3dc996a8c57", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xdf6d9a96623ddd2f4a469c716b409fdab178491ed025bb1e5dceb02db63bc449": [ - "49599f4d1eeb917b", - "405a19cf87d56b57", - "ffc77281e5d0e88f", - "67e1114340d35467", - "aaedadd9699c9bfc", - "082b6d2b488d5a17", - "6271b66f1560894c", - "04ae508271716daa", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xdf868bf0475f8d45f134fed12c27b8c969f55b52ff448932eee1acd4b4dc3706": [ - "4c427d8ddb6bdc94", - "2a4d14319d350c1a", - "07f50a9cceefc566", - "4a72551a4990003d", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xe1683fca2155a14acea5ed3eac880e124d5f6d058b74a972019a13f5de157fee": [ - "304f238e3dc4fdb4", - "71b961e0ce031561", - "e9da850623ea0000", - "fa87dd85ce0f4c00", - "1a046fb530406f91", - "20069fd5bea1b4cc", - "d591f614d9ec3e7b", - "c92c50aea4dba418", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xe36be81cee5c5996efc554d2b8d703b9606237c4a1ba3bb09c3360a78d1d8baa": [ - "49599f4d1eeb917b", - "405a19cf87d56b57", - "ffc77281e5d0e88f", - "67e1114340d35467", - "eb85d0129c982d6c", - "22c401d2a3ff0764", - "8909fbbbc37451d9", - "d7c33d0141e39b1a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xe379997e1b2e52a87eeb6a69c0f44512ac47a0f22027e86c4c4c25295f6ee836": [ - "eb152cf6d89582b5", - "c9855f70648c0d9d", - "f188d9a51f6f70eb", - "d5d55d73a0abd086", - "11dcd9225e2afe1f", - "8bc642efa250e07b", - "6890a46b634a7109", - "b766bc03e2f81638", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xe50326def02c606217fab3306a987ad6dbb14dd374a0bbbed6cdc6e3af146ab6": [ - "a833a8282bb4c68b", - "7ad5fda9d8d3133e", - "486585a021e1316b", - "ea0b6d2d85070a19", - "fe5c9dad4395f968", - "3c0743a4407c648f", - "83e67b8e03626286", - "252dfdcae7a51b6b", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xea427b1f5a8d42cb6fc27381b8ce92e872a0bba47a285f448897b6ed83925307": [ - "d3fc6d089870130f", - "bb6d4541adb8b137", - "6870f158d59f90dd", - "9d5236ed63f947fc", - "06fd5a9ce0d6f8ed", - "5d5cf12c5b58eb5b", - "90b56c1351036788", - "06ca431672e25653", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xeb2c8285a090fac34900bf5d11339ea06a49ce7b40c6803c7451c50ab09111ae": [ - "5c5b913e8fe14f68", - "550c105d6dc67a3b", - "5f1cbc91abbbf0da", - "00324c96c4d448a1", - "0de197651373924a", - "5fcdfb4ebffe586d", - "0ae45402a88bdf8f", - "8b64b27b266c1f9c", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xec22fb99d9702be35df5e3d5177735f96c58d1d43a30992e34500c5ddd3f2f0d": [ - "a4b30724e512b3c9", - "452c896272c24fd4", - "abe437260388b291", - "37100879e5158d1f", - "1102e6a17844fed2", - "0c333840b9269e0f", - "bc32ed6c34c5a668", - "725ce977e752df10", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xec4f1286559b964a5c346287cb4cdef27bc8efcb6e6bcd573d60f0b76a99d645": [ - "18163274d4ece0ba", - "a35922dcee052aab", - "8b16d9bed3604ecc", - "2fc81ab266119757", - "8c93b98f56433af2", - "730b0eb2e23bca34", - "c46adf50cdc48de8", - "6be96e37aa7df385", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xef73c0528f6a8c1ddd8c287701325a3c0b3457cd582e83fe811426ec122b5d53": [ - "00000000f885dc00", - "000000000056f80a", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf02015d625ad4fd85dd1653b8fcbadb22584c3c5a7146e4d8c72d106d99fa852": [ - "255e214218c7c276", - "e29e9a89e7d01159", - "fad2f010be3ecbab", - "13ae903c06e26707", - "775bad2c716ef752", - "6df93eea7bf9b6ff", - "9018858ac0c3450d", - "63dae7b97154f692", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf36c9e03cf7de4a46d0e804548a4c73a2d0b5832f4389d0ef2732903cada13a6": [ - "befa884b5ed7ee4f", - "e1cb073cbf035f2a", - "0512f8b10bd41eb3", - "e522bc358b2d72c4", - "19722cafefc140ff", - "dcb278f9a95cc870", - "aae5107de58dc702", - "88f58e7b3d80988e", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf49ba56977c054b5533b2fed4d5f7a5b88f6dc555c77978e8cd573e883e33d6f": [ - "db4ea64c9ba87770", - "9d14446772bffe9c", - "9e30223b46698c40", - "ddaa128de1eaad61", - "7ba2b9f948b84832", - "f849cec2a70d3369", - "4090d0fac2a1e36f", - "e87e15901773ca37", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf62b38db6866ee3e1cd998a87282e0337ecb341a7f64170159fd8a7eeaeef15d": [ - "bbfd2115c078cb2b", - "25ef5dfb16dbb902", - "e6aa75eebb5f8b43", - "401e7c7f4b5bfa62", - "b3fbbac43dac352e", - "d5764e9dcc92f8b9", - "e293c078ec31d7e0", - "56e9c2fcfa5b5300", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf7e09baca19584122df93df3aa0fece4ee3e98fab708e7ef1b5349c04cff9e1a": [ - "ed489953a6e8f8bf", - "dedc8916b02e569f", - "aa3245b2fad9434c", - "35eff909690cf5e0", - "1ff7e12cf8ef0d77", - "b0aebf91c9cc44ae", - "dbc29461cd728506", - "3a5c3e4b105197a5", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf852910d096d6128ad18f681da50e1698494278ec434d3da0e563c09bff65bef": [ - "d6cdc6e3af146ab6", - "dbb14dd374a0bbbe", - "17fab3306a987ad6", - "e50326def02c6062", - "fa1aa6ed3a190fdd", - "df4fa22e1d9a39cd", - "8fa503d5e710bbe0", - "f3bfd7d078555ecb", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xf8c181661d12bebe3143844cbe65f19d133042a53b9b37f5097b5c54ea9caa96": [ - "5467ee28fa6e3879", - "3605e152118d77a1", - "4266beec08b50fd4", - "b4c7dc842e395d07", - "775bad2c716ef752", - "6df93eea7bf9b6ff", - "9018858ac0c3450d", - "63dae7b97154f692", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xfa658ba0e5ce6b48deca25bcc316dd3740e15a797d0e3062676d88f8a5dc44ed": [ - "1eb4ee776bc80780", - "672aaf381f1a570c", - "8a6d71fd6be99c3b", - "806252b2e82401a8", - "94d2d734bebaf281", - "c57cdb3aaa6ae9a5", - "bd1c251e48ed076f", - "cf9cf9dbf23fd2d2", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xfaee9a03c1cc739d8e954043e6d2c85a6bd0c206825afa43949bd1a10f53d2a8": [ - "8c6a5c769dd1e9f3", - "6c42e732c3226db4", - "2378d6c9fcf5de7c", - "9b6f7b92aed41c16", - "aaedadd9699c9bfc", - "082b6d2b488d5a17", - "6271b66f1560894c", - "04ae508271716daa", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xfc2ac24c9febbddc4a1d60f12d00edcf427a4fa23100ec85f6fef0b9e53c30e0": [ - "43d622e997d04342", - "14698ce38f591424", - "f8389ce656db1b39", - "15b0bd49bbf53b7c", - "48e7867b68f49e6f", - "e2a1b0c813914919", - "425556d8153c1eb3", - "ccf8439f8e863ae8", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ], - "0xfe67f3dc996a8c576c10aa5a2219b784a9bfeecaabd18f7657a8a03dfd01f95c": [ - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "cc59cf4cbb6126f1", - "5f19135afbf08675", - "10b8fffd77753173", - "113b66c5700c0b68", - "0000000000000000", - "0000000000000000", - "0000000000000000", - "0000000000000000" - ] - }, - "defaultChainId": 0, + "aggregatorAddress": "0x292c1b849531C841e422BD38a6F6c70Ca7Ae1e8F", + "batchL2Data": "0xed03843b9aca00825208943fab184622dc19b6109349b94811493bf2a4536288016345785d8a00008082057980805e020faf21744658c2c0d8058f1264533edc969d8dc8ca2cda0c04b2a2a0efaf1b0d326d5778de72715de172ce5a9f39e99ac4e8a760dc5f8c6d871180ca90641c", + "chainId": 1401, + "contractsBytecode": {}, + "db": {}, "from": "", - "globalExitRoot": "0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5", + "globalExitRoot": "0xa5188a238fcbb387479e5e3108339d0314e807a0b14d141390d723dbe8e45687", "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "newStateRoot": "0xe36be81cee5c5996efc554d2b8d703b9606237c4a1ba3bb09c3360a78d1d8baa", - "numBatch": 20, + "newStateRoot": "0xa37d06ecd291d1269a9f532535d7a269260959ef3c07b384947482cfc3550c15", + "numBatch": 7, "oldLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "oldStateRoot": "0x2933852381b0646187dde2376e119cf16333ce9c71675bdad4e5807c9bc6c03a", - "sequencerAddr": "0x8bc553Ea895c600b898891cAeac19DC98bEe0A28", - "timestamp": 1664178560 + "oldStateRoot": "0xc6b9bf11177fa5ed4435be8c6a53e19723f9ed187f9ed7b1bec4d404919543b6", + "sequencerAddr": "0x292c1b849531C841e422BD38a6F6c70Ca7Ae1e8F", + "timestamp": 1664801979 } \ No newline at end of file diff --git a/test/contracts/real-prover/test-inputs/proof.json b/test/contracts/real-prover/test-inputs/proof.json index b7617951a..699c0c16a 100644 --- a/test/contracts/real-prover/test-inputs/proof.json +++ b/test/contracts/real-prover/test-inputs/proof.json @@ -1,17 +1,17 @@ { "pi_a": [ - "793439930978302745357608169777910479883976211397120563566877775968608944302", - "8328895785455292378197500320584324435691318820886278210053898351203503292080", + "17725108043689880547430607796818332710218314664673646389603828095215371918732", + "1335461676644128156881925797208139685107783862126666539158173153568879099363", "1" ], "pi_b": [ [ - "2639912261865916862760459357497611678856457919150307312314134850405212619278", - "6256883393029964617675180546758989137764176697991664464231889979463012022260" + "16304460975589797287003167247933239446176783294882676519884713714599437456843", + "16640637784844881573042215118601236347460897560434471171094286617480508294627" ], [ - "3233319066588073534876368071586492591374612278367656830032355827362319302779", - "13608231077691758766240023344577861004024663449344150395035997295812128277764" + "6303774052270993994311235288724936877187618510707699010859529060893477592809", + "8991077555601611883015086273110156838576071012533949653761592875588327996919" ], [ "1", @@ -19,8 +19,8 @@ ] ], "pi_c": [ - "2679836508756401541815407478656444137001373591250441882970478577514723134809", - "3753162208440243421075801837536280017436250951756096431611457244094582899147", + "9598701645615535400366987688017391893737769376674613307030003600552498644879", + "19085338477615102388762142090535176605512726097732361175107940295515808620357", "1" ], "protocol": "groth16" diff --git a/test/contracts/real-prover/test-inputs/public.json b/test/contracts/real-prover/test-inputs/public.json index 2ebd37525..8c405e042 100644 --- a/test/contracts/real-prover/test-inputs/public.json +++ b/test/contracts/real-prover/test-inputs/public.json @@ -1,3 +1,3 @@ [ - "149315018905048293643295343639335218362117850994883456884403126574315024531" + "1195089806287684402577889461684836130221392963785446391283718830064330600935" ] \ No newline at end of file