60a06040526b033b2e3c9fd0803ce800000060038190557fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470608052620000489060001962000116565b6200005690600019620000f2565b6014553480156200006657600080fd5b50600062000073620000ee565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060145460096000620000ce620000ee565b6001600160a01b0316815260208101919091526040016000205562000137565b3390565b6000828210156200011157634e487b7160e01b81526011600452602481fd5b500390565b6000826200013257634e487b7160e01b81526012600452602481fd5b500690565b6080516121dd6200015a600039600081816107160152610fa001526121dd6000f3fe608060405234801561001057600080fd5b506004361061028a5760003560e01c8063782d6fe11161015c578063b4b5ea57116100ce578063df6cb01d11610087578063df6cb01d14610554578063e7a324dc14610567578063ec4515dd1461056f578063ee85ab3214610582578063f1127ed814610595578063f2fde38b146105b65761028a565b8063b4b5ea57146104e2578063c3cda520146104f5578063c867392814610508578063cd75629a1461051b578063dd62ed3e1461052e578063deac3541146105415761028a565b806395d89b411161012057806395d89b41146104865780639af772841461048e578063a39744b5146104a1578063a457c2d7146104b4578063a9059cbb146104c7578063aced1661146104da5761028a565b8063782d6fe11461043d5780637ecebe00146104505780638322fff2146104635780638980f11f1461046b5780638da5cb5b1461047e5761028a565b8063313ce5671161020057806367da3184116101b957806367da3184146103d45780636fcfff45146103e757806370a0823114610407578063715018a61461041a57806371ca337d146104225780637647b90d1461042a5761028a565b8063313ce5671461036057806337feca841461037557806339509351146103885780633bbd64bc1461039b578063587cde1e146103ae5780635c19a95c146103c15761028a565b80631778e29c116102525780631778e29c1461030a57806318160ddd1461031f57806320606b701461032757806323b872dd1461032f5780632b112e491461034257806330adf81f146103585761028a565b806304a809e51461028f57806306fdde03146102a4578063095ea7b3146102c25780630c33c522146102e2578063176da34814610302575b600080fd5b6102a261029d366004611c95565b6105c9565b005b6102ac610692565b6040516102b99190611d6f565b60405180910390f35b6102d56102d0366004611bbf565b6106bd565b6040516102b99190611d19565b6102f56102f0366004611c95565b6106db565b6040516102b99190611cc8565b6102f5610705565b610312610714565b6040516102b99190611d24565b610312610738565b61031261073e565b6102d561033d366004611b4e565b610762565b61034a6107d7565b6040516102b992919061203d565b61031261080e565b610368610832565b6040516102b99190612072565b610312610383366004611b1c565b610837565b6102d5610396366004611bbf565b610854565b6102d56103a9366004611b02565b6108a3565b6102f56103bc366004611b02565b6108b8565b6102a26103cf366004611b02565b6108d3565b6103126103e2366004611b1c565b6108e0565b6103fa6103f5366004611b02565b6108fd565b6040516102b9919061204b565b610312610415366004611b02565b610915565b6102a2610987565b610312610a06565b6102a2610438366004611b89565b610a29565b61031261044b366004611bbf565b610b07565b61031261045e366004611b02565b610d2c565b6102f5610d3e565b6102a2610479366004611bbf565b610d43565b6102f5610df9565b6102ac610e08565b61031261049c366004611b1c565b610e2a565b6103126104af366004611b1c565b610e47565b6102d56104c2366004611bbf565b610e64565b6102d56104d5366004611bbf565b610eb3565b6102f5610ec7565b6103126104f0366004611b02565b610ed6565b6102a2610503366004611be8565b610f4b565b6102a2610516366004611b02565b6110de565b6102a2610529366004611bbf565b61116e565b61031261053c366004611b1c565b611311565b61031261054f366004611b1c565b61133c565b6102a2610562366004611b02565b611359565b6103126113b0565b6102f561057d366004611c95565b6113d4565b6102a2610590366004611b02565b6113e4565b6105a86105a3366004611c46565b61143b565b6040516102b992919061205c565b6102a26105c4366004611b02565b611468565b6001546001600160a01b031633146105fc5760405162461bcd60e51b81526004016105f390611e7a565b60405180910390fd5b600068014d1120d7b160000061061133610ed6565b1161061c5781610628565b69152d02c7e14af68000005b9050610632610a06565b61063c90826120f7565b6014600082825461064d9190612116565b90915550506040517f388800acc4e2bfa52a9b94825c003f3b0c4ac8a4bd4a00e15aa78fa5f7b9568c9061068690339030908590611cdc565b60405180910390a15050565b6040518060400160405280600f81526020016e1119599a4815dbdb99195c9b185b99608a1b81525081565b60006106d16106ca6114e5565b84846114e9565b5060015b92915050565b601381815481106106eb57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035481565b7f797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f3581565b600061076f84848461159d565b6107cd8461077b6114e5565b6001600160a01b0387166000908152600760205260408120869161079d6114e5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546107c89190612116565b6114e9565b5060019392505050565b60145460035460009182916107ec81836120c0565b8210156108045760145460035493509350505061080a565b90925090505b9091565b7f5fae9ec55a1e547936e0e74d606b44cd5f912f9adcd0bba561fea62d570259e981565b601281565b600c60209081526000928352604080842090915290825290205481565b60006106d16108616114e5565b84846007600061086f6114e5565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546107c89190612080565b60116020526000908152604090205460ff1681565b6004602052600090815260409020546001600160a01b031681565b6108dd3382611726565b50565b600e60209081526000928352604080842090915290825290205481565b60066020526000908152604090205463ffffffff1681565b6001600160a01b0381166000908152600a602052604081205460ff166109655761093d610a06565b6001600160a01b03831660009081526009602052604090205461096091906120c0565b61097f565b6001600160a01b0382166000908152600860205260409020545b90505b919050565b61098f6114e5565b6000546001600160a01b039081169116146109bc5760405162461bcd60e51b81526004016105f390611ed6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000806000610a136107d7565b9092509050610a2281836120c0565b9250505090565b6001546001600160a01b03163314610a535760405162461bcd60e51b81526004016105f390611e7a565b6001600160a01b0382166000908152600a602052604090205460ff1615610a8c5760405162461bcd60e51b81526004016105f390611e9f565b6001600160a01b0382166000908152600a60205260409020805460ff1916600117905580610ae457610abc610a06565b6001600160a01b038316600090815260096020526040902054610adf91906120c0565b610ae7565b60005b6001600160a01b0390921660009081526008602052604090209190915550565b6000438210610b285760405162461bcd60e51b81526004016105f390611fde565b6001600160a01b03831660009081526006602052604090205463ffffffff1680610b565760009150506106d5565b6001600160a01b03841660009081526005602052604081208491610b7b60018561212d565b63ffffffff90811682526020820192909252604001600020541611610be4576001600160a01b038416600090815260056020526040812090610bbe60018461212d565b63ffffffff1663ffffffff168152602001908152602001600020600101549150506106d5565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff16831015610c1f5760009150506106d5565b600080610c2d60018461212d565b90505b8163ffffffff168163ffffffff161115610cf55760006002610c52848461212d565b610c5c91906120d4565b610c66908361212d565b6001600160a01b038816600090815260056020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610cc9576020015194506106d59350505050565b805163ffffffff16871115610ce057819350610cee565b610ceb60018361212d565b92505b5050610c30565b506001600160a01b038516600090815260056020908152604080832063ffffffff9094168352929052206001015491505092915050565b600b6020526000908152604090205481565b600e81565b6001546001600160a01b03163314610d6d5760405162461bcd60e51b81526004016105f390611e7a565b816001600160a01b031663a9059cbb610d84610df9565b836040518363ffffffff1660e01b8152600401610da2929190611d00565b602060405180830381600087803b158015610dbc57600080fd5b505af1158015610dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df49190611c79565b505050565b6000546001600160a01b031690565b604051806040016040528060068152602001652b98272219a960d11b81525081565b600d60209081526000928352604080842090915290825290205481565b601060209081526000928352604080842090915290825290205481565b60006106d1610e716114e5565b848460076000610e7f6114e5565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546107c89190612116565b60006106d1610ec06114e5565b848461159d565b6002546001600160a01b031681565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610f01576000610f44565b6001600160a01b038316600090815260056020526040812090610f2560018461212d565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f1ac861a6a8532f3704e1768564a53a32774f00d6cf20ccbbdf60ab61378302bc878787604051602001610f849493929190611d2d565b60405160208183030381529060405280519060200120905060007f000000000000000000000000000000000000000000000000000000000000000082604051602001610fd1929190611cad565b60405160208183030381529060405280519060200120905060006001828787876040516000815260200160405260405161100e9493929190611d51565b6020604051602081039080840390855afa158015611030573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110635760405162461bcd60e51b81526004016105f390611efb565b6001600160a01b0381166000908152600b6020526040812080549161108783612152565b9190505588146110a95760405162461bcd60e51b81526004016105f390611f27565b864211156110c95760405162461bcd60e51b81526004016105f390611dc2565b6110d3818a611726565b505050505050505050565b6001546001600160a01b031633146111085760405162461bcd60e51b81526004016105f390611e7a565b6001600160a01b0381166000908152600a602052604090205460ff166111405760405162461bcd60e51b81526004016105f390611e9f565b6001600160a01b03166000908152600860209081526040808320839055600a9091529020805460ff19169055565b6001546001600160a01b031633146111985760405162461bcd60e51b81526004016105f390611e7a565b6001600160a01b0382166000908152600a602052604090205460ff1615156001146111d55760405162461bcd60e51b81526004016105f390611f55565b6001600160a01b038216600090815260096020526040812054906111f983836120c0565b90506000611205610a06565b61120f90836120c0565b905061121c6002836120c0565b6001546001600160a01b031660009081526009602052604081208054909190611246908490612080565b90915550506001600160a01b03851660009081526009602052604081208054849290611273908490612116565b9091555061128490506002836120c0565b600080805260096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b80549091906112bf908490612080565b90915550506040516000906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611302908590611d24565b60405180910390a35050505050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b600f60209081526000928352604080842090915290825290205481565b6113616114e5565b6000546001600160a01b0390811691161461138e5760405162461bcd60e51b81526004016105f390611ed6565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b7f1ac861a6a8532f3704e1768564a53a32774f00d6cf20ccbbdf60ab61378302bc81565b601281815481106106eb57600080fd5b6113ec6114e5565b6000546001600160a01b039081169116146114195760405162461bcd60e51b81526004016105f390611ed6565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6114706114e5565b6000546001600160a01b0390811691161461149d5760405162461bcd60e51b81526004016105f390611ed6565b6001600160a01b0381166114c35760405162461bcd60e51b81526004016105f390611df2565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b03831661150f5760405162461bcd60e51b81526004016105f390611f77565b6001600160a01b0382166115355760405162461bcd60e51b81526004016105f390611e38565b6001600160a01b0380841660008181526007602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611590908590611d24565b60405180910390a3505050565b6001600160a01b0383166115c35760405162461bcd60e51b81526004016105f390612006565b6001600160a01b0382166115e95760405162461bcd60e51b81526004016105f390612006565b6001600160a01b0383166000908152600a602052604090205460ff1615801561162b57506001600160a01b0382166000908152600a602052604090205460ff16155b6116475760405162461bcd60e51b81526004016105f390611fbb565b6000611651610a06565b905061165d81836120f7565b6001600160a01b0385166000908152600960205260409020546116809190612116565b6001600160a01b0385166000908152600960205260409020556116a381836120f7565b6001600160a01b0384166000908152600960205260409020546116c69190612080565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611718908690611d24565b60405180910390a350505050565b6001600160a01b0380831660008181526004602052604080822080548686166001600160a01b03198216811790925591519190941693919284917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f908590a4611790828483611796565b50505050565b816001600160a01b0316836001600160a01b0316141580156117b85750600081115b15610df4576001600160a01b0383161561185b576001600160a01b03831660009081526006602052604081205463ffffffff1690816117f857600061183b565b6001600160a01b03851660009081526005602052604081209061181c60018561212d565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006118498483612116565b9050611857868484846118fd565b5050505b6001600160a01b03821615610df4576001600160a01b03821660009081526006602052604081205463ffffffff1690816118965760006118d9565b6001600160a01b0384166000908152600560205260408120906118ba60018561212d565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006118e78483612080565b90506118f5858484846118fd565b505050505050565b600061193e436040518060400160405280601981526020017f5f7772697465436865636b706f696e743a203332206269747300000000000000815250611abb565b905060008463ffffffff1611801561199857506001600160a01b038516600090815260056020526040812063ffffffff83169161197c60018861212d565b63ffffffff908116825260208201929092526040016000205416145b156119e1576001600160a01b038516600090815260056020526040812083916119c260018861212d565b63ffffffff168152602081019190915260400160002060010155611a71565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600583528581208a851682529092529390209151825463ffffffff191691161781559051600191820155611a40908590612098565b6001600160a01b0386166000908152600660205260409020805463ffffffff191663ffffffff929092169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611aac92919061203d565b60405180910390a25050505050565b6000816401000000008410611ae35760405162461bcd60e51b81526004016105f39190611d6f565b509192915050565b80356001600160a01b038116811461098257600080fd5b600060208284031215611b13578081fd5b610f4482611aeb565b60008060408385031215611b2e578081fd5b611b3783611aeb565b9150611b4560208401611aeb565b90509250929050565b600080600060608486031215611b62578081fd5b611b6b84611aeb565b9250611b7960208501611aeb565b9150604084013590509250925092565b60008060408385031215611b9b578182fd5b611ba483611aeb565b91506020830135611bb481612199565b809150509250929050565b60008060408385031215611bd1578182fd5b611bda83611aeb565b946020939093013593505050565b60008060008060008060c08789031215611c00578182fd5b611c0987611aeb565b95506020870135945060408701359350606087013560ff81168114611c2c578283fd5b9598949750929560808101359460a0909101359350915050565b60008060408385031215611c58578182fd5b611c6183611aeb565b9150602083013563ffffffff81168114611bb4578182fd5b600060208284031215611c8a578081fd5b8151610f4481612199565b600060208284031215611ca6578081fd5b5035919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611d9b57858101830151858201604001528201611d7f565b81811115611dac5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526016908201527519195b1959d85d19509e54da59ce88195e1c1a5c995960521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252600b908201526a085ddbdb99195c9b185b9960aa1b604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b6020808252600b908201526a1b9bdd08185b1b1bddd95960aa1b604082015260600190565b60208082526012908201527164656c656761746542795369673a2073696760701b604082015260600190565b60208082526014908201527364656c656761746542795369673a206e6f6e636560601b604082015260600190565b602080825260089082015267216578636c75646560c01b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526009908201526808595e18db1d59195960ba1b604082015260600190565b6020808252600e908201526d33b2ba283934b7b92b37ba32b99d60911b604082015260600190565b6020808252601d908201527f5f7472616e73666572546f6b656e733a207a65726f2061646472657373000000604082015260600190565b918252602082015260400190565b63ffffffff91909116815260200190565b63ffffffff929092168252602082015260400190565b60ff91909116815260200190565b600082198211156120935761209361216d565b500190565b600063ffffffff8083168185168083038211156120b7576120b761216d565b01949350505050565b6000826120cf576120cf612183565b500490565b600063ffffffff808416806120eb576120eb612183565b92169190910492915050565b60008160001904831182151516156121115761211161216d565b500290565b6000828210156121285761212861216d565b500390565b600063ffffffff8381169083168181101561214a5761214a61216d565b039392505050565b60006000198214156121665761216661216d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b80151581146108dd57600080fdfea2646970667358221220c7516639aafaa549d5ee6004e643aaa497ce229f7407f0d4ee3907e3c42f485464736f6c63430008010033