0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614bac80620000f36000396000f3fe608060405260043610620001c35760003560e01c80638dae45dd11620000f3578063ccf5a77c1162000095578063e30c3978116200006c578063e30c39781462000533578063e4d274511462000560578063edc42a221462000585578063f2fde38b14620005aa57600080fd5b8063ccf5a77c14620004c7578063cdd914c514620004f7578063dfa96efb146200051c57600080fd5b8063b0994f0811620000ca578063b0994f081462000435578063be46096f146200045a578063ca41a247146200047f57600080fd5b80638dae45dd14620003b2578063a676e8ab14620003e1578063a6ef995f146200040657600080fd5b80634bf98dce1162000169578063715018a61162000140578063715018a6146200033d57806379ba509714620003555780638456cb59146200036d5780638da5cb5b146200038557600080fd5b80634bf98dce14620002ea578063522ea81a14620003015780635c975abb146200031857600080fd5b80631754f301116200019e5780631754f30114620002865780632a564f3414620002ad5780633f4ba83a14620002d257600080fd5b80630f6f86ec14620001c8578063146ffb2614620002455780631544298e146200026d575b600080fd5b348015620001d557600080fd5b506200021b620001e736600462003a7c565b61010860209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156200025257600080fd5b506200025e61010b5481565b6040519081526020016200023c565b3480156200027a57600080fd5b506200025e61010a5481565b3480156200029357600080fd5b50620002ab620002a536600462003aaf565b620005cf565b005b348015620002ba57600080fd5b50620002ab620002cc36600462003b31565b62000993565b348015620002df57600080fd5b50620002ab62000bf2565b620002ab620002fb36600462003bf8565b62000c08565b620002ab6200031236600462003cb7565b62000ea4565b3480156200032557600080fd5b5060335460ff1660405190151581526020016200023c565b3480156200034a57600080fd5b50620002ab620015bf565b3480156200036257600080fd5b50620002ab620015d5565b3480156200037a57600080fd5b50620002ab6200168e565b3480156200039257600080fd5b5060655473ffffffffffffffffffffffffffffffffffffffff166200021b565b348015620003bf57600080fd5b5060c9546200021b9073ffffffffffffffffffffffffffffffffffffffff1681565b348015620003ee57600080fd5b50620002ab6200040036600462003cfe565b620016a2565b3480156200041357600080fd5b5060ca546200021b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200044257600080fd5b50620002ab6200045436600462003d25565b6200176b565b3480156200046757600080fd5b50620002ab6200047936600462003cfe565b62001b36565b3480156200048c57600080fd5b506200021b6200049e36600462003cfe565b6101096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015620004d457600080fd5b50610107546200021b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156200050457600080fd5b50620002ab6200051636600462003cfe565b62001c09565b620002ab6200052d36600462003e03565b62001dab565b3480156200054057600080fd5b5060975473ffffffffffffffffffffffffffffffffffffffff166200021b565b3480156200056d57600080fd5b50620002ab6200057f36600462003e7e565b62001dd3565b3480156200059257600080fd5b50620002ab620005a436600462003cfe565b6200216e565b348015620005b757600080fd5b50620002ab620005c936600462003cfe565b620022d4565b8173ffffffffffffffffffffffffffffffffffffffff81166200061e576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff81166200066d576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200067762002387565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526101096020526040902054859116151580620006e5575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b156200073a576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600090815261010960205260409020541615620007b4576040517ff8fb7c2700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000731565b73ffffffffffffffffffffffffffffffffffffffff84166102221480620007f2575073ffffffffffffffffffffffffffffffffffffffff8416610333145b8062000815575073ffffffffffffffffffffffffffffffffffffffff8416610111145b1562000866576040517fd8ce8acb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000731565b61010b5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a811685529252909120541615620008ee576040517f022bc84100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260240162000731565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b168086529184528285208054918b167fffffffffffffffffffffffff00000000000000000000000000000000000000009283168117909155808652610109909452828520805490911682179055905133937f844cb5c635052898ad92bea4ece14519111765d835105e76aa1f77ad0d0aa81f91a4505050505050565b60c95473ffffffffffffffffffffffffffffffffffffffff163314620009e5576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562000a5d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a83919062003f02565b73ffffffffffffffffffffffffffffffffffffffff161462000ad1576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101562000bed5761010a546000908152610108602052604081206103339185858581811062000b095762000b0962003f22565b905060200201602081019062000b20919062003cfe565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169290911691909117905582828281811062000b8b5762000b8b62003f22565b905060200201602081019062000ba2919062003cfe565b73ffffffffffffffffffffffffffffffffffffffff167f91d24864a084ab70b268a1f865e757ca12006cf298d763b6be697302ef86498c60405160405180910390a260010162000ad4565b505050565b62000bfc62002387565b62000c066200240a565b565b60005b815181101562000d2c576000610109600084848151811062000c315762000c3162003f22565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835290820192909252604001600020541690508062000cdb5782828151811062000c835762000c8362003f22565b60200260200101516040517fa5ea89da00000000000000000000000000000000000000000000000000000000815260040162000731919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b8083838151811062000cf15762000cf162003f22565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152508062000d238162003f80565b91505062000c0b565b5060c95460ca5460405173ffffffffffffffffffffffffffffffffffffffff92831692639f3ce55a923492911690829062000d6c90879060240162003fbb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2a564f3400000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815262000e1d9392919060040162004089565b6000604051808303818588803b15801562000e3757600080fd5b505af115801562000e4c573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff167f59eab5b5f813ac9e0c10035dfb55b5e3419eff53c0f7a869fb3c22400ea036d68260405162000e99919062003fbb565b60405180910390a250565b8273ffffffffffffffffffffffffffffffffffffffff811662000ef3576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff811662000f42576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838060000362000f82576040517f4618044a0000000000000000000000000000000000000000000000000000000081526004810182905260240162000731565b62000f8c62002489565b62000f96620024f8565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808c168552925290912054167ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeef810162001040576040517f6dad9c7800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916600482015260240162000731565b73ffffffffffffffffffffffffffffffffffffffff80891660009081526101096020526040812054909116906060821562001109576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018b905273ffffffffffffffffffffffffffffffffffffffff8c1690639dc29fac90604401600060405180830381600087803b158015620010e457600080fd5b505af1158015620010f9573d6000803e3d6000fd5b5050505061010b549150620013c5565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a0823190602401602060405180830381865afa15801562001177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200119d9190620040c9565b9050620011c373ffffffffffffffffffffffffffffffffffffffff8d1633308e6200256d565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8e16906370a0823190602401602060405180830381865afa15801562001230573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012569190620040c9565b620012629190620040e3565b9a508b935073ffffffffffffffffffffffffffffffffffffffff85166200135957610222610108600088815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b73ffffffffffffffffffffffffffffffffffffffff167f0f53e2a811b6fd2d6cd965fd6c27b44fb924ca39f7a7f321115705c22366d62360405160405180910390a25b73ffffffffffffffffffffffffffffffffffffffff851661033314620013c057620013848c62002651565b6200138f8d62002771565b6200139a8e6200287e565b604051602001620013ae93929190620040f9565b60405160208183030381529060405291505b859250505b60c960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639f3ce55a3460ca60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634878f8f89896040516024016200144395949392919062004136565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe4d2745100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152620014f49392919060040162004089565b6000604051808303818588803b1580156200150e57600080fd5b505af115801562001523573d6000803e3d6000fd5b50505050508a73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8780a94875b70464f8ac6c28851501d32e7fd4ee574e4b94beb28923a3c42d9c8d6040516200159f91815260200190565b60405180910390a45050505050620015b7600160d555565b505050505050565b620015c962002387565b62000c066000620029c5565b609754339073ffffffffffffffffffffffffffffffffffffffff16811462001680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e65720000000000000000000000000000000000000000000000606482015260840162000731565b6200168b81620029c5565b50565b6200169862002387565b62000c06620029f8565b620016ac62002387565b60ca5473ffffffffffffffffffffffffffffffffffffffff16156200171a5760ca546040517f94fbfd2e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260240162000731565b620017258162002a56565b604051339073ffffffffffffffffffffffffffffffffffffffff8316907fb044c1a1a05a729c402def784b4e4cb01612ff03eee6f0beb3eba0f0606260a190600090a350565b8673ffffffffffffffffffffffffffffffffffffffff8116620017ba576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff811662001809576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff811662001858576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610100900460ff1615808015620018795750600054600160ff909116105b80620018955750303b15801562001895575060005460ff166001145b62001923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840162000731565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200198257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6200198c62002aeb565b6200199662002b8e565b620019a18a62002c31565b620019ab62002d5f565b61010780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b1617905561010a88905561010b87905560005b8581101562001ab957600087878381811062001a1b5762001a1b62003f22565b905060200201602081019062001a32919062003cfe565b73ffffffffffffffffffffffffffffffffffffffff160362001a80576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62001ab087878381811062001a995762001a9962003f22565b905060200201602081019062000516919062003cfe565b600101620019fb565b5062001ac58b620029c5565b801562001b2957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b8073ffffffffffffffffffffffffffffffffffffffff811662001b85576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62001b8f62002387565b60c9805473ffffffffffffffffffffffffffffffffffffffff8481167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169133918391907fc96d462e42a71473da49a1d58c1754b9b2d319786692d621dc7f921331c517e990600090a4505050565b8073ffffffffffffffffffffffffffffffffffffffff811662001c58576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62001c6262002387565b73ffffffffffffffffffffffffffffffffffffffff8083166000908152610109602052604090205483911615158062001cd0575061010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff85811685529252909120541615155b1562001d21576040517f12f3df0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240162000731565b61010a5460009081526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166101111790555190917f5e023c7a09fa0534ce3199f65fc3e635a5e851c5adc88ebda3b9d332ae07cbe991a2505050565b801562001dbf5762001dbf85838362002e02565b62001dcc85858562000ea4565b5050505050565b62001ddd620024f8565b60c95473ffffffffffffffffffffffffffffffffffffffff16331462001e2f576040517f8c56efb100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca5460c954604080517f67e404ce000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff93841693909216916367e404ce916004808201926020929091908290030181865afa15801562001ea7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ecd919062003f02565b73ffffffffffffffffffffffffffffffffffffffff161462001f1b576040517f79d1e58f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62001f2562002489565b60008381526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b1685529252822054169061022282148062001f80575073ffffffffffffffffffffffffffffffffffffffff8216610333145b1562001faf5762001fa973ffffffffffffffffffffffffffffffffffffffff89168789620030d3565b620020e2565b508073ffffffffffffffffffffffffffffffffffffffff8116620020575762001fde88858561010a546200312b565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152610109602090815260408083208054958f167fffffffffffffffffffffffff0000000000000000000000000000000000000000968716811790915561010b54845261010883528184209084529091529020805490921617905590505b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018990528216906340c10f1990604401600060405180830381600087803b158015620020c857600080fd5b505af1158015620020dd573d6000803e3d6000fd5b505050505b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f6ed06519caca659cdefa71015c79a561928d3cf8cc4a3e9739fde9fb5fb38d648a6040516200215991815260200190565b60405180910390a45050620015b7600160d555565b8073ffffffffffffffffffffffffffffffffffffffff8116620021bd576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620021c762002387565b61010a5460008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8781168552925290912054166101111462002252576040517f82f5d0a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260240162000731565b60008181526101086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555190917f0145163d8d460d1ab21463758d147fdfe79d4b57c81ca3d1439996104ae6895991a2505050565b620022de62002387565b6097805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556200234260655473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60655473ffffffffffffffffffffffffffffffffffffffff16331462000c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000731565b62002414620032f6565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60335460ff161562000c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640162000731565b600260d5540362002566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000731565b600260d555565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526200264b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262003364565b50505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f06fdde03000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620026d591906200417d565b600060405180830381855afa9150503d806000811462002712576040519150601f19603f3d011682016040523d82523d6000602084013e62002717565b606091505b5091509150816200275e576040518060400160405280600781526020017f4e4f5f4e414d450000000000000000000000000000000000000000000000000081525062002769565b62002769816200347a565b949350505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f95d89b41000000000000000000000000000000000000000000000000000000001790529051606091600091829173ffffffffffffffffffffffffffffffffffffffff861691620027f591906200417d565b600060405180830381855afa9150503d806000811462002832576040519150601f19603f3d011682016040523d82523d6000602084013e62002837565b606091505b5091509150816200275e576040518060400160405280600981526020017f4e4f5f53594d424f4c000000000000000000000000000000000000000000000081525062002769565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff8616916200290191906200417d565b600060405180830381855afa9150503d80600081146200293e576040519150601f19603f3d011682016040523d82523d6000602084013e62002943565b606091505b509150915081801562002957575080516020145b15620029735780806020019051810190620027699190620041ab565b6040517fb5a2f1c600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240162000731565b600160d555565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556200168b8162003653565b62002a0262002489565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200245f3390565b73ffffffffffffffffffffffffffffffffffffffff811662002aa4576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff1662002b84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b62000c06620036ca565b600054610100900460ff1662002c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b62000c066200378d565b600054610100900460ff1662002cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b73ffffffffffffffffffffffffffffffffffffffff811662002d18576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff1662002df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b62000c0662003831565b7fd505accf0000000000000000000000000000000000000000000000000000000062002e33600460008486620041cb565b62002e3e91620041f7565b7fffffffff00000000000000000000000000000000000000000000000000000000161462002eff5762002e76600460008385620041cb565b62002e8191620041f7565b6040517fcf9e29460000000000000000000000000000000000000000000000000000000081527fffffffff0000000000000000000000000000000000000000000000000000000090911660048201527fd505accf00000000000000000000000000000000000000000000000000000000602482015260440162000731565b600080808080808062002f16886004818c620041cb565b81019062002f25919062004240565b96509650965096509650965096503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462002fb2576040517f200688cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240162000731565b73ffffffffffffffffffffffffffffffffffffffff861630146200301b576040517f2911594800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260240162000731565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018690526064810185905260ff8416608482015260a4810183905260c4810182905273ffffffffffffffffffffffffffffffffffffffff8b169063d505accf9060e401600060405180830381600087803b158015620030ae57600080fd5b505af1158015620030c3573d6000803e3d6000fd5b5050505050505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905262000bed9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401620025c8565b60008082866040516020016200316192919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052805160209091012061010754909250600091839173ffffffffffffffffffffffffffffffffffffffff1690620031c69062003a4b565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190526000908201526060018190604051809103906000f590508015801562003213573d6000803e3d6000fd5b509050806000808062003229898b018b6200435d565b9250925092508373ffffffffffffffffffffffffffffffffffffffff16631624f6c68484846040518463ffffffff1660e01b81526004016200326e93929190620040f9565b600060405180830381600087803b1580156200328957600080fd5b505af11580156200329e573d6000803e3d6000fd5b505060405173ffffffffffffffffffffffffffffffffffffffff808f169350871691507fd5d4920bb61e6141c8499d50a7bd617dae2b1818c9d6b995d3f2ba4975e32ea490600090a350919998505050505050505050565b60335460ff1662000c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640162000731565b6000620033c8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620038ca9092919063ffffffff16565b9050805160001480620033ec575080806020019051810190620033ec9190620043d3565b62000bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840162000731565b60606040825110620034a257818060200190518101906200349c9190620043f7565b92915050565b8151602014620034e557505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b60005b60208110801562003533575082818151811062003509576200350962003f22565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b156200354257600101620034e8565b806000036200358657505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff811115620035a457620035a462003b77565b6040519080825280601f01601f191660200182016040528015620035cf576020820181803683370190505b50905060005b828110156200364b57848181518110620035f357620035f362003f22565b602001015160f81c60f81b82828151811062003613576200361362003f22565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600101620035d5565b509392505050565b6065805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1662003763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b603380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff1662003826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b62000c0633620029c5565b600054610100900460ff16620029be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840162000731565b6060620027698484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516200390191906200417d565b60006040518083038185875af1925050503d806000811462003940576040519150601f19603f3d011682016040523d82523d6000602084013e62003945565b606091505b5091509150620039588783838762003963565b979650505050505050565b60608315620039fe578251600003620039f65773ffffffffffffffffffffffffffffffffffffffff85163b620039f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000731565b508162002769565b62002769838381511562003a155781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200073191906200446e565b6106f3806200448483390190565b73ffffffffffffffffffffffffffffffffffffffff811681146200168b57600080fd5b6000806040838503121562003a9057600080fd5b82359150602083013562003aa48162003a59565b809150509250929050565b6000806040838503121562003ac357600080fd5b823562003ad08162003a59565b9150602083013562003aa48162003a59565b60008083601f84011262003af557600080fd5b50813567ffffffffffffffff81111562003b0e57600080fd5b6020830191508360208260051b850101111562003b2a57600080fd5b9250929050565b6000806020838503121562003b4557600080fd5b823567ffffffffffffffff81111562003b5d57600080fd5b62003b6b8582860162003ae2565b90969095509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562003bf05762003bf062003b77565b604052919050565b6000602080838503121562003c0c57600080fd5b823567ffffffffffffffff8082111562003c2557600080fd5b818501915085601f83011262003c3a57600080fd5b81358181111562003c4f5762003c4f62003b77565b8060051b915062003c6284830162003ba6565b818152918301840191848101908884111562003c7d57600080fd5b938501935b8385101562003cab578435925062003c9a8362003a59565b828252938501939085019062003c82565b98975050505050505050565b60008060006060848603121562003ccd57600080fd5b833562003cda8162003a59565b925060208401359150604084013562003cf38162003a59565b809150509250925092565b60006020828403121562003d1157600080fd5b813562003d1e8162003a59565b9392505050565b600080600080600080600060c0888a03121562003d4157600080fd5b873562003d4e8162003a59565b9650602088013562003d608162003a59565b9550604088013562003d728162003a59565b9450606088013593506080880135925060a088013567ffffffffffffffff81111562003d9d57600080fd5b62003dab8a828b0162003ae2565b989b979a50959850939692959293505050565b60008083601f84011262003dd157600080fd5b50813567ffffffffffffffff81111562003dea57600080fd5b60208301915083602082850101111562003b2a57600080fd5b60008060008060006080868803121562003e1c57600080fd5b853562003e298162003a59565b945060208601359350604086013562003e428162003a59565b9250606086013567ffffffffffffffff81111562003e5f57600080fd5b62003e6d8882890162003dbe565b969995985093965092949392505050565b60008060008060008060a0878903121562003e9857600080fd5b863562003ea58162003a59565b955060208701359450604087013562003ebe8162003a59565b935060608701359250608087013567ffffffffffffffff81111562003ee257600080fd5b62003ef089828a0162003dbe565b979a9699509497509295939492505050565b60006020828403121562003f1557600080fd5b815162003d1e8162003a59565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003fb45762003fb462003f51565b5060010190565b6020808252825182820181905260009190848201906040850190845b818110156200400b57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162003fd7565b50909695505050505050565b60005b83811015620040345781810151838201526020016200401a565b50506000910152565b600081518084526200405781602086016020860162004017565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000620040c060608301846200403d565b95945050505050565b600060208284031215620040dc57600080fd5b5051919050565b818103818111156200349c576200349c62003f51565b6060815260006200410e60608301866200403d565b82810360208401526200412281866200403d565b91505060ff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835286602084015280861660408401525083606083015260a060808301526200395860a08301846200403d565b600082516200419181846020870162004017565b9190910192915050565b60ff811681146200168b57600080fd5b600060208284031215620041be57600080fd5b815162003d1e816200419b565b60008085851115620041dc57600080fd5b83861115620041ea57600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015620042385780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a0312156200425c57600080fd5b8735620042698162003a59565b965060208801356200427b8162003a59565b9550604088013594506060880135935060808801356200429b816200419b565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff821115620042d557620042d562003b77565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126200431357600080fd5b81356200432a6200432482620042b8565b62003ba6565b8181528460208386010111156200434057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156200437357600080fd5b833567ffffffffffffffff808211156200438c57600080fd5b6200439a8783880162004301565b94506020860135915080821115620043b157600080fd5b50620043c08682870162004301565b925050604084013562003cf3816200419b565b600060208284031215620043e657600080fd5b8151801515811462003d1e57600080fd5b6000602082840312156200440a57600080fd5b815167ffffffffffffffff8111156200442257600080fd5b8201601f810184136200443457600080fd5b8051620044456200432482620042b8565b8181528560208385010111156200445b57600080fd5b620040c082602083016020860162004017565b60208152600062003d1e60208301846200403d56fe60806040526040516106f33803806106f383398101604081905261002291610420565b61002e82826000610035565b505061054a565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e0565b8361027a565b505b505050565b6001600160a01b0381163b6101605760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101d4816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c591906104e0565b6001600160a01b03163b151590565b6102395760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610157565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029f83836040518060600160405280602781526020016106cc602791396102a6565b9392505050565b6060600080856001600160a01b0316856040516102c391906104fb565b600060405180830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b5090925090506103158683838761031f565b9695505050505050565b6060831561038e578251600003610387576001600160a01b0385163b6103875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610157565b5081610398565b61039883836103a0565b949350505050565b8151156103b05781518083602001fd5b8060405162461bcd60e51b81526004016101579190610517565b80516001600160a01b03811681146103e157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156104175781810151838201526020016103ff565b50506000910152565b6000806040838503121561043357600080fd5b61043c836103ca565b60208401519092506001600160401b038082111561045957600080fd5b818501915085601f83011261046d57600080fd5b81518181111561047f5761047f6103e6565b604051601f8201601f19908116603f011681019083821181831017156104a7576104a76103e6565b816040528281528860208487010111156104c057600080fd5b6104d18360208301602088016103fc565b80955050505050509250929050565b6000602082840312156104f257600080fd5b61029f826103ca565b6000825161050d8184602087016103fc565b9190910192915050565b60208152600082518060208401526105368160408501602087016103fc565b601f01601f19169190910160400192915050565b610173806105596000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100dc565b565b60006100697fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d79190610100565b905090565b3660008037600080366000845af43d6000803e8080156100fb573d6000f35b3d6000fd5b60006020828403121561011257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461013657600080fd5b939250505056fea2646970667358221220f0c2ca5d324798dc11cd8dc9935a2a74f970e69636c5bf6a957534670d15362464736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122049adbb011d447737035c669c07abfb22265a0399e5af8812252ee52812caa34264736f6c63430008130033