60806040523480156200001157600080fd5b50604051620010b2380380620010b28339810160408190526200003491620001cf565b6200004385858585856200004e565b5050505050620003c8565b6004546001600160a01b031615620000ac5760405162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015260640160405180910390fd5b600480546001600160a01b031916331790556000620000cc8682620002fc565b506001620000db8582620002fc565b50600291909155600580546001600160a01b0319166001600160a01b0393909316929092179091556003555050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013257600080fd5b81516001600160401b03808211156200014f576200014f6200010a565b604051601f8301601f19908116603f011681019082821181831017156200017a576200017a6200010a565b816040528381526020925086838588010111156200019757600080fd5b600091505b83821015620001bb57858201830151818301840152908201906200019c565b600093810190920192909252949350505050565b600080600080600060a08688031215620001e857600080fd5b85516001600160401b03808211156200020057600080fd5b6200020e89838a0162000120565b965060208801519150808211156200022557600080fd5b50620002348882890162000120565b604088015190955090506001600160a01b03811681146200025457600080fd5b6060870151608090970151959894975095949392505050565b600181811c908216806200028257607f821691505b602082108103620002a357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002f757600081815260208120601f850160051c81016020861015620002d25750805b601f850160051c820191505b81811015620002f357828155600101620002de565b5050505b505050565b81516001600160401b038111156200031857620003186200010a565b62000330816200032984546200026d565b84620002a9565b602080601f8311600181146200036857600084156200034f5750858301515b600019600386901b1c1916600185901b178555620002f3565b600085815260208120601f198616915b82811015620003995788860151825594840194600190910190840162000378565b5085821015620003b85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610cda80620003d86000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80635347b40a1161008157806395d89b411161005b57806395d89b41146101bd5780639b2cb5d8146101c55780639ce110d7146101ce57600080fd5b80635347b40a1461018457806370a082311461019757806374823132146101aa57600080fd5b80632faf7d6b116100b25780632faf7d6b14610127578063313ce5671461016c578063437a8ae61461017b57600080fd5b806306fdde03146100d957806318160ddd146100f75780631e34c5851461010c575b600080fd5b6100e16101ee565b6040516100ee9190610674565b60405180910390f35b6402540be4005b6040519081526020016100ee565b61012561011a3660046106c2565b600291909155600355565b005b6005546101479073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ee565b604051600281526020016100ee565b6100fe60035481565b610125610192366004610730565b61027c565b6100fe6101a53660046107c5565b61039a565b6101256101b836600461089c565b61054c565b6100e1610667565b6100fe60025481565b6004546101479073ffffffffffffffffffffffffffffffffffffffff1681565b600080546101fb90610922565b80601f016020809104026020016040519081016040528092919081815260200182805461022790610922565b80156102745780601f1061024957610100808354040283529160200191610274565b820191906000526020600020905b81548152906001019060200180831161025757829003601f168201915b505050505081565b60006102896002856109a4565b6102949060026109df565b905060005b818110156103925785856102ae8360016109fc565b8181106102bd576102bd610a0f565b90506020020160208101906102d291906107c5565b73ffffffffffffffffffffffffffffffffffffffff168686838181106102fa576102fa610a0f565b905060200201602081019061030f91906107c5565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86866103536002876109a4565b81811061036257610362610a0f565b9050602002013560405161037891815260200190565b60405180910390a361038b6002826109fc565b9050610299565b505050505050565b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116906370a0823190602401602060405180830381865afa15801561040e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104329190610a3e565b905060025481101561047757600a60ff8460ff1660025461045391906109df565b61045d91906109a4565b61046791906109a4565b6002546104749190610a57565b90505b600554604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160029273ffffffffffffffffffffffffffffffffffffffff169163313ce5679160048083019260209291908290030181865afa1580156104e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050b9190610a6a565b6105159190610a8d565b61052090600a610b8a565b6127106003548361053191906109df565b61053b91906109a4565b61054591906109a4565b9392505050565b60045473ffffffffffffffffffffffffffffffffffffffff16156105d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a656400000000000000000000000000604482015260640160405180910390fd5b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000163317905560006106068682610be4565b5060016106138582610be4565b50600291909155600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93909316929092179091556003555050565b600180546101fb90610922565b600060208083528351808285015260005b818110156106a157858101830151858201604001528201610685565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156106d557600080fd5b50508035926020909101359150565b60008083601f8401126106f657600080fd5b50813567ffffffffffffffff81111561070e57600080fd5b6020830191508360208260051b850101111561072957600080fd5b9250929050565b6000806000806040858703121561074657600080fd5b843567ffffffffffffffff8082111561075e57600080fd5b61076a888389016106e4565b9096509450602087013591508082111561078357600080fd5b50610790878288016106e4565b95989497509550505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c057600080fd5b919050565b6000602082840312156107d757600080fd5b6105458261079c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261082057600080fd5b813567ffffffffffffffff8082111561083b5761083b6107e0565b604051601f8301601f19908116603f01168101908282118183101715610863576108636107e0565b8160405283815286602085880101111561087c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156108b457600080fd5b853567ffffffffffffffff808211156108cc57600080fd5b6108d889838a0161080f565b965060208801359150808211156108ee57600080fd5b506108fb8882890161080f565b94505061090a6040870161079c565b94979396509394606081013594506080013592915050565b600181811c9082168061093657607f821691505b60208210810361096f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826109da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176109f6576109f6610975565b92915050565b808201808211156109f6576109f6610975565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215610a5057600080fd5b5051919050565b818103818111156109f6576109f6610975565b600060208284031215610a7c57600080fd5b815160ff8116811461054557600080fd5b60ff82811682821603908111156109f6576109f6610975565b600181815b80851115610ae1578160001904821115610ac757610ac7610975565b80851615610ad457918102915b93841c9390800290610aab565b509250929050565b600082610af8575060016109f6565b81610b05575060006109f6565b8160018114610b1b5760028114610b2557610b41565b60019150506109f6565b60ff841115610b3657610b36610975565b50506001821b6109f6565b5060208310610133831016604e8410600b8410161715610b64575081810a6109f6565b610b6e8383610aa6565b8060001904821115610b8257610b82610975565b029392505050565b600061054560ff841683610ae9565b601f821115610bdf57600081815260208120601f850160051c81016020861015610bc05750805b601f850160051c820191505b8181101561039257828155600101610bcc565b505050565b815167ffffffffffffffff811115610bfe57610bfe6107e0565b610c1281610c0c8454610922565b84610b99565b602080601f831160018114610c475760008415610c2f5750858301515b600019600386901b1c1916600185901b178555610392565b600085815260208120601f198616915b82811015610c7657888601518255948401946001909101908401610c57565b5085821015610c945787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212201543fa1deb03549665b696c301783102d6f03f9aab3728f8379562135f1e206064736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000085d19fb57ca7da715695fcf347ca2169144523a7000000000000000000000000000000000000000000000000001ff973cafa80000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000002b2120434f4e414e20526577617264204576656e74202868747470733a2f2f646f67636f6e616e2e636f6d2900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000294765742024434f4e414e205265776172642061742068747470733a2f2f646f67636f6e616e2e636f6d0000000000000000000000000000000000000000000000