0x608060405260043610610164575f3560e01c806377553ad4116100cd578063bcc9e60e11610087578063d3695fa511610062578063d3695fa5146104d0578063d6491eaf146104ef578063dcfbd2931461050e578063f926c2d21461052d575f80fd5b8063bcc9e60e14610483578063ce525841146101d3578063d2f7265a1461049d575f80fd5b806377553ad4146103a157806384e5253c146103d457806390de348a146103f3578063a89efd8c14610412578063ad5c464814610431578063ade8971a14610464575f80fd5b806359f54f401161011e57806359f54f40146102af5780635b47b69d146102ce5780635cd067cf146102e8578063630afce514610307578063639af6d01461033a57806370986fe11461036d575f80fd5b80630e01617c1461016f5780631d02c42e146101d3578063292a3f0b146101f357806331b8c946146102125780633d83908a1461025d578063580de36014610290575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506101ae6101893660046122d1565b600160208190525f918252604090912080549101546001600160a01b03918216911682565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b3480156101de575f80fd5b506101f16101ed3660046122fe565b5050565b005b3480156101fe575f80fd5b506101f161020d36600461233b565b61054e565b34801561021d575f80fd5b506102457f0000000000000000000000007fd713fe57fcd0a7636c152faba6bdc2d3b27d1581565b6040516001600160a01b0390911681526020016101ca565b348015610268575f80fd5b506102457f0000000000000000000000000291c873838f7b62d743952d268bebe9ace1efa481565b34801561029b575f80fd5b506101f16102aa366004612369565b6105e0565b3480156102ba575f80fd5b506101f16102c9366004612369565b61070d565b3480156102d9575f80fd5b506101f16101ed366004612389565b3480156102f3575f80fd5b506101f1610302366004612369565b61082e565b348015610312575f80fd5b506102457f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da81565b348015610345575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b348015610378575f80fd5b506102456103873660046122d1565b5f602081905290815260409020546001600160a01b031681565b3480156103ac575f80fd5b506102457f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa581565b3480156103df575f80fd5b506101f16103ee3660046123c5565b610a2c565b3480156103fe575f80fd5b506101f161040d36600461241f565b610aee565b34801561041d575f80fd5b506101f161042c3660046122d1565b610caa565b34801561043c575f80fd5b506102457f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561046f575f80fd5b506101f161047e36600461241f565b505050565b34801561048e575f80fd5b506101f16101ed366004612448565b3480156104a8575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104db575f80fd5b506101f16104ea36600461233b565b611019565b3480156104fa575f80fd5b506101f1610509366004612476565b61102c565b348015610519575f80fd5b506101f16105283660046124b5565b611040565b61054061053b36600461251f565b61111d565b6040519081526020016101ca565b6101ed82827f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b0316636352211e866040518263ffffffff1660e01b81526004016105a191815260200190565b602060405180830381865afa1580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105099190612530565b6040516331a9108f60e11b8152600481018390525f907f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190612530565b90505f61067684836115a8565b90506106818461163c565b6040516302c06f1b60e51b815260048101859052602481018490527f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b03169063580de360906044015f604051808303815f87803b1580156106e7575f80fd5b505af11580156106f9573d5f803e3d5ffd5b505050506107078184611731565b50505050565b6040516331a9108f60e11b8152600481018390525f907f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015610772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107969190612530565b90506107a283826117c2565b7f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56107cc83611846565b604051630167d53d60e61b815260048101859052602481018490526001600160a01b038216906359f54f40906044015f604051808303815f87803b158015610812575f80fd5b505af1158015610824573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018390525f907f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015610893573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190612530565b90506108c383826117c2565b6108cb612287565b6109167f0000000000000000000000007fd713fe57fcd0a7636c152faba6bdc2d3b27d157f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da83611921565b6040516323b872dd60e01b81526001600160a01b037f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da16906323b872dd9061096690339030908890600401612552565b6020604051808303815f875af1158015610982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190612576565b50604051635cd067cf60e01b815260048101859052602481018490527f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b031690635cd067cf906044015f604051808303815f87803b158015610a0d575f80fd5b505af1158015610a1f573d5f803e3d5ffd5b505050506107078161192d565b610a34612287565b5f610a43888888888887611a63565b604051632139494f60e21b8152600481018a905260248101899052871515604482015260648101879052851515608482015260a481018590529091507f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b0316906384e5253c9060c4015f604051808303815f87803b158015610aca575f80fd5b505af1158015610adc573d5f803e3d5ffd5b50505050610824878787878587611b6f565b6040516331a9108f60e11b8152600481018490525f907f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015610b53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b779190612530565b90505f610b8485836115a8565b9050610b8f8561163c565b60405163486f1a4560e11b81526004810186905260248101859052604481018490527f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b0316906390de348a906064015f604051808303815f87803b158015610bfc575f80fd5b505af1158015610c0e573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038481166004830152602482018890527f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da16925063a9059cbb91506044016020604051808303815f875af1158015610c7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca29190612576565b505050505050565b6040516331a9108f60e11b8152600481018290525f907f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015610d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d339190612530565b90505f610d4083836115a8565b9050610d4b8361163c565b604051632ab4fd0160e21b8152600481018490525f907f0000000000000000000000000291c873838f7b62d743952d268bebe9ace1efa46001600160a01b03169063aad3f4049060240161014060405180830381865afa158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd591906125c7565b80516040516323b872dd60e01b81529192506001600160a01b037f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da16916323b872dd91610e289133913091600401612552565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190612576565b50604051635aa6d46160e01b8152600481018590527f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b031690635aa6d461906024015f604051808303815f87803b158015610ec8575f80fd5b505af1158015610eda573d5f803e3d5ffd5b50505050610eec828260200151611731565b604051632e1a7d4d60e01b815266853a0d2313c00060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610f51575f80fd5b505af1158015610f63573d5f803e3d5ffd5b505050505f826001600160a01b031666853a0d2313c0006040515f6040518083038185875af1925050503d805f8114610fb7576040519150601f19603f3d011682016040523d82523d5f602084013e610fbc565b606091505b50509050806110125760405162461bcd60e51b815260206004820152601760248201527f47435a3a2053656e64696e6720455448206661696c656400000000000000000060448201526064015b60405180910390fd5b5050505050565b61102282611c2c565b6101ed8282611ce7565b61103583611c2c565b61047e838383611d48565b611048612287565b5f6110578a8a8a8a8a87611a63565b60405163dcfbd29360e01b8152600481018c9052602481018b9052891515604482015260648101899052871515608482015260a4810187905260c4810186905260e481018590529091507f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b03169063dcfbd29390610104015f604051808303815f87803b1580156110ed575f80fd5b505af11580156110ff573d5f803e3d5ffd5b50505050611111898989898587611b6f565b50505050505050505050565b5f66853a0d2313c00034146111655760405162461bcd60e51b815260206004820152600e60248201526d08e86b47440aee4dedcce408aa8960931b6044820152606401611009565b5f611177610100840160e0850161264c565b6001600160a01b0316148061118e575060c0820135155b6111f15760405162461bcd60e51b815260206004820152602e60248201527f47435a3a2043616e6e6f742063686f6f736520696e746572657374206966206a60448201526d0ded2dcd2dcce40c240c4c2e8c6d60931b6064820152608401611009565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561124a575f80fd5b505af115801561125c573d5f803e3d5ffd5b505050505061126e8260400135611846565b5f8061127d8460200135611dcd565b90505f611291610100860160e0870161264c565b6001600160a01b0316036113a4576001600160a01b037f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa516639cb90ba66112db602087018761264c565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482018590528701356044820152606087013560648201526080870135608482015260a087013560a482015260c087013560c482015261010087013560e48201523061010482018190526101248201819052610144820152610164016020604051808303815f875af1158015611379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139d9190612667565b91506114c7565b6040805161016081019091525f90806113c0602088018861264c565b6001600160a01b031681526020018381526020018660400135815260200186606001358152602001866080013581526020018660a0013581526020018660e001602081019061140f919061264c565b6001600160a01b039081168252610100880135602083015230604080840182905260608401829052608090930152905163c440844f60e01b81529192507f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa5169063c440844f9061148390849060040161267e565b6020604051808303815f875af115801561149f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c39190612667565b9250505b60405163a9059cbb60e01b8152336004820152606085013560248201527f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da6001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611534573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115589190612576565b506115748261156f6101408701610120880161264c565b611ce7565b6115a18261158a6101608701610140880161264c565b61159c6101808801610160890161264c565b611d48565b5092915050565b5f828152600160208190526040822080549101546001600160a01b039182169190811690841633148015906115e65750336001600160a01b03831614155b15611604576040516310bb5c9d60e31b815260040160405180910390fd5b6001600160a01b03811615806116235750336001600160a01b03831614155b15611632578392505050611636565b9150505b92915050565b604051630380585f60e21b8152600481018290525f907f000000000000000000000000d00182e777f6da3220355965412c9605fcd80aa56001600160a01b031690630e01617c906024016040805180830381865afa1580156116a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c49190612730565b9150506001600160a01b03811630146101ed5760405162461bcd60e51b815260206004820152602960248201527f425a3a205a6170706572206973206e6f7420726563656976657220666f7220746044820152686869732074726f766560b81b6064820152608401611009565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000007fd713fe57fcd0a7636c152faba6bdc2d3b27d15169063205c2878906044015b6020604051808303815f875af115801561179e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047e9190612576565b5f828152602081905260409020546001600160a01b0390811690821633148015906117f557506001600160a01b03811615155b801561180a5750336001600160a01b03821614155b1561047e575f838152600160205260409020546001600160a01b031633811461070757604051636522e96960e01b815260040160405180910390fd5b5f611852600a80612851565b61185c908361285c565b90508161186a600a80612851565b611874908361287b565b146118ae5760405162461bcd60e51b815260206004820152600a60248201526910b83932b1b4b9b4b7b760b11b6044820152606401611009565b6118ce73cbb7c0000ab88b473b1f5afd9ef808440eed33bf333084611dfe565b6040516317a790f160e11b8152306004820152602481018290527f0000000000000000000000007fd713fe57fcd0a7636c152faba6bdc2d3b27d156001600160a01b031690632f4f21e290604401611782565b61047e83838333611e56565b5f5b60048110156101ed5781515f90826004811061194d5761194d612892565b60200201516001600160a01b0316146101ed5781515f90826004811061197557611975612892565b60200201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e19190612667565b9050826020015182600481106119f9576119f9612892565b6020020151811115611a5a57611a5a836040015184602001518460048110611a2357611a23612892565b6020020151611a3290846128a6565b85518560048110611a4557611a45612892565b60200201516001600160a01b03169190611e7b565b5060010161192f565b5f80611a7188888887611eab565b9050611abe7f0000000000000000000000007fd713fe57fcd0a7636c152faba6bdc2d3b27d157f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da85611921565b8515611acd57611acd87611846565b83611b64576040516323b872dd60e01b81526001600160a01b037f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da16906323b872dd90611b2290339030908a90600401612552565b6020604051808303815f875af1158015611b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b629190612576565b505b979650505050505050565b84158015611b7c57505f86115b15611b8b57611b8b8287611731565b8215611c235760405163a9059cbb60e01b81526001600160a01b038381166004830152602482018690527f00000000000000000000000085e30b8b263bc64d94b827ed450f2edfee8579da169063a9059cbb906044016020604051808303815f875af1158015611bfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c219190612576565b505b610ca28161192d565b6040516331a9108f60e11b8152600481018290527f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a56001600160a01b031690636352211e90602401602060405180830381865afa158015611c8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190612530565b6001600160a01b0316336001600160a01b031614611ce457604051631963d1e760e31b815260040160405180910390fd5b50565b5f828152602081815260409182902080546001600160a01b0319166001600160a01b038516908117909155915191825283917f3942babd464ceb1c7d319f75245a8cd41334592b45507f072e7020e63c22a8dc910160405180910390a25050565b611d528282611f83565b5f8381526001602081815260409283902080546001600160a01b03199081166001600160a01b038881169182178455929094018054909116918616918217905583519283529082015284917f649442545e0f313a6d8087b19bc47bd2bd9b63f79d23a773446e00d2ea01d169910160405180910390a2505050565b6040805133602080830191909152818301849052825180830384018152606090920190925280519101205f90611636565b610707846323b872dd60e01b858585604051602401611e1f93929190612552565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc0565b81516001600160a01b0385811690915282519084166020909101526107078282612093565b6040516001600160a01b03831660248201526044810182905261047e90849063a9059cbb60e01b90606401611e1f565b6040516331a9108f60e11b8152600481018590525f9081906001600160a01b037f000000000000000000000000274d12cc490d93371e36e1204ae4988cb83d26a51690636352211e90602401602060405180830381865afa158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190612530565b90508084158015611f4657505f86115b80611f4e5750835b15611f6d57611f5d87836115a8565b9050611f688761163c565b611f77565b611f7787836117c2565b9150505b949350505050565b6001600160a01b038216158015611fa257506001600160a01b03811615155b156101ed57604051632235921760e01b815260040160405180910390fd5b5f612014826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661217a9092919063ffffffff16565b905080515f14806120345750808060200190518101906120349190612576565b61047e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611009565b5f5b60048110156121685782515f9082600481106120b3576120b3612892565b60200201516001600160a01b03161461216857825181600481106120d9576120d9612892565b60200201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612121573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121459190612667565b8360200151826004811061215b5761215b612892565b6020020152600101612095565b506001600160a01b0316604090910152565b6060611f7b84845f85855f80866001600160a01b0316858760405161219f91906128db565b5f6040518083038185875af1925050503d805f81146121d9576040519150601f19603f3d011682016040523d82523d5f602084013e6121de565b606091505b5091509150611b6487838387606083156122585782515f03612251576001600160a01b0385163b6122515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611009565b5081611f7b565b611f7b838381511561226d5781518083602001fd5b8060405162461bcd60e51b815260040161100991906128f6565b604051806060016040528061229a6122b3565b81526020016122a76122b3565b81525f60209091015290565b60405180608001604052806004906020820280368337509192915050565b5f602082840312156122e1575f80fd5b5035919050565b5f608082840312156122f8575f80fd5b50919050565b5f8060a0838503121561230f575f80fd5b61231984846122e8565b946080939093013593505050565b6001600160a01b0381168114611ce4575f80fd5b5f806040838503121561234c575f80fd5b82359150602083013561235e81612327565b809150509250929050565b5f806040838503121561237a575f80fd5b50508035926020909101359150565b5f808284036101c081121561239c575f80fd5b6101a0808212156123ab575f80fd5b9395938601359450505050565b8015158114611ce4575f80fd5b5f805f805f8060c087890312156123da575f80fd5b863595506020870135945060408701356123f3816123b8565b935060608701359250608087013561240a816123b8565b8092505060a087013590509295509295509295565b5f805f60608486031215612431575f80fd5b505081359360208301359350604090920135919050565b5f80828403608081121561245a575f80fd5b6060811215612467575f80fd5b50919360608501359350915050565b5f805f60608486031215612488575f80fd5b83359250602084013561249a81612327565b915060408401356124aa81612327565b809150509250925092565b5f805f805f805f80610100898b0312156124cd575f80fd5b883597506020890135965060408901356124e6816123b8565b95506060890135945060808901356124fd816123b8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f61018082840312156122f8575f80fd5b5f60208284031215612540575f80fd5b815161254b81612327565b9392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215612586575f80fd5b815161254b816123b8565b604051610140810167ffffffffffffffff811182821017156125c157634e487b7160e01b5f52604160045260245ffd5b60405290565b5f61014082840312156125d8575f80fd5b6125e0612591565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101208084015181830152508091505092915050565b5f6020828403121561265c575f80fd5b813561254b81612327565b5f60208284031215612677575f80fd5b5051919050565b81516001600160a01b0316815261016081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c08301516126dc60c08401826001600160a01b03169052565b5060e083015160e083015261010080840151612702828501826001600160a01b03169052565b5050610120838101516001600160a01b03908116918401919091526101409384015116929091019190915290565b5f8060408385031215612741575f80fd5b825161274c81612327565b602084015190925061235e81612327565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156127ab57815f19048211156127915761279161275d565b8085161561279e57918102915b93841c9390800290612776565b509250929050565b5f826127c157506001611636565b816127cd57505f611636565b81600181146127e357600281146127ed57612809565b6001915050611636565b60ff8411156127fe576127fe61275d565b50506001821b611636565b5060208310610133831016604e8410600b841016171561282c575081810a611636565b6128368383612771565b805f19048211156128495761284961275d565b029392505050565b5f61254b83836127b3565b5f8261287657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176116365761163661275d565b634e487b7160e01b5f52603260045260245ffd5b818103818111156116365761163661275d565b5f5b838110156128d35781810151838201526020016128bb565b50505f910152565b5f82516128ec8184602087016128b9565b9190910192915050565b602081525f82518060208401526129148160408501602087016128b9565b601f01601f1916919091016040019291505056fea26469706673582212200ac1931e2013619a251d4009250be116d297be6b0a73eadf77022bbe19ab105664736f6c63430008180033
0x61018060405234801562000011575f80fd5b506040516200301f3803806200301f83398101604081905262000034916200053f565b80805f8082806001600160a01b031663059e01136040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000076573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200009c91906200053f565b6001600160a01b031660808190526040519081527f39b3d3f08f5292d52497444fc183b3915a339c0b41fb021bf52ae59505e455b29060200160405180910390a150826001600160a01b03166377553ad46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014191906200053f565b6001600160a01b031660a0816001600160a01b031681525050826001600160a01b0316633d83908a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000197573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001bd91906200053f565b6001600160a01b031660c0816001600160a01b031681525050826001600160a01b031663630afce56040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000213573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200023991906200053f565b6001600160a01b0316610100816001600160a01b031681525050826001600160a01b031663ad5c46486040518163ffffffff1660e01b81526004016020604051808303815f875af115801562000291573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b791906200053f565b6001600160a01b0390811660e05291821661012052811661014052604080516318dc64a360e11b8152905191841692506331b8c9469160048083019260209291908290030181865afa15801562000310573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033691906200053f565b6001600160a01b0390811661016081905260e051909116036200039f5760405162461bcd60e51b815260206004820152601660248201527f47435a3a2057726f6e6720636f6c6c206272616e636800000000000000000000604482015260640160405180910390fd5b60e05160a05160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015620003f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000418919062000564565b506101605160a05160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156200046d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000493919062000564565b50506101605160405163095ea7b360e01b81526001600160a01b0390911660048201525f19602482015273cbb7c0000ab88b473b1f5afd9ef808440eed33bf9063095ea7b3906044016020604051808303815f875af1158015620004f9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200051f919062000564565b505062000585565b6001600160a01b03811681146200053c575f80fd5b50565b5f6020828403121562000550575f80fd5b81516200055d8162000527565b9392505050565b5f6020828403121562000575575f80fd5b815180151581146200055d575f80fd5b60805160a05160c05160e0516101005161012051610140516101605161295e620006c15f395f8181610223015281816108d001528181611757015281816118ea0152611a7801525f6104ae01525f61034b01525f8181610318015281816108f10152818161092d01528181610c3601528181610df1015281816114e601528181611a9901528181611ae90152611bb701525f818161044201528181610f0801526111f301525f818161026e0152610d6301525f81816103b20152818161069e015281816107a4015281816109c401528181610a8101528181610bb301528181610e7f015281816110a3015281816112a90152818161144e015261165401525f8181610555015281816105f8015281816107250152818161084601528181610b0601528181610cc201528181611c420152611ecd015261295e5ff3fe608060405260043610610164575f3560e01c806377553ad4116100cd578063bcc9e60e11610087578063d3695fa511610062578063d3695fa5146104d0578063d6491eaf146104ef578063dcfbd2931461050e578063f926c2d21461052d575f80fd5b8063bcc9e60e14610483578063ce525841146101d3578063d2f7265a1461049d575f80fd5b806377553ad4146103a157806384e5253c146103d457806390de348a146103f3578063a89efd8c14610412578063ad5c464814610431578063ade8971a14610464575f80fd5b806359f54f401161011e57806359f54f40146102af5780635b47b69d146102ce5780635cd067cf146102e8578063630afce514610307578063639af6d01461033a57806370986fe11461036d575f80fd5b80630e01617c1461016f5780631d02c42e146101d3578063292a3f0b146101f357806331b8c946146102125780633d83908a1461025d578063580de36014610290575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b506101ae6101893660046122d1565b600160208190525f918252604090912080549101546001600160a01b03918216911682565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b3480156101de575f80fd5b506101f16101ed3660046122fe565b5050565b005b3480156101fe575f80fd5b506101f161020d36600461233b565b61054e565b34801561021d575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ca565b348015610268575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b34801561029b575f80fd5b506101f16102aa366004612369565b6105e0565b3480156102ba575f80fd5b506101f16102c9366004612369565b61070d565b3480156102d9575f80fd5b506101f16101ed366004612389565b3480156102f3575f80fd5b506101f1610302366004612369565b61082e565b348015610312575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b348015610345575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b348015610378575f80fd5b506102456103873660046122d1565b5f602081905290815260409020546001600160a01b031681565b3480156103ac575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b3480156103df575f80fd5b506101f16103ee3660046123c5565b610a2c565b3480156103fe575f80fd5b506101f161040d36600461241f565b610aee565b34801561041d575f80fd5b506101f161042c3660046122d1565b610caa565b34801561043c575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b34801561046f575f80fd5b506101f161047e36600461241f565b505050565b34801561048e575f80fd5b506101f16101ed366004612448565b3480156104a8575f80fd5b506102457f000000000000000000000000000000000000000000000000000000000000000081565b3480156104db575f80fd5b506101f16104ea36600461233b565b611019565b3480156104fa575f80fd5b506101f1610509366004612476565b61102c565b348015610519575f80fd5b506101f16105283660046124b5565b611040565b61054061053b36600461251f565b61111d565b6040519081526020016101ca565b6101ed82827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e866040518263ffffffff1660e01b81526004016105a191815260200190565b602060405180830381865afa1580156105bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105099190612530565b6040516331a9108f60e11b8152600481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190612530565b90505f61067684836115a8565b90506106818461163c565b6040516302c06f1b60e51b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063580de360906044015f604051808303815f87803b1580156106e7575f80fd5b505af11580156106f9573d5f803e3d5ffd5b505050506107078184611731565b50505050565b6040516331a9108f60e11b8152600481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107969190612530565b90506107a283826117c2565b7f00000000000000000000000000000000000000000000000000000000000000006107cc83611846565b604051630167d53d60e61b815260048101859052602481018490526001600160a01b038216906359f54f40906044015f604051808303815f87803b158015610812575f80fd5b505af1158015610824573d5f803e3d5ffd5b5050505050505050565b6040516331a9108f60e11b8152600481018390525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610893573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b79190612530565b90506108c383826117c2565b6108cb612287565b6109167f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083611921565b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061096690339030908890600401612552565b6020604051808303815f875af1158015610982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a69190612576565b50604051635cd067cf60e01b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635cd067cf906044015f604051808303815f87803b158015610a0d575f80fd5b505af1158015610a1f573d5f803e3d5ffd5b505050506107078161192d565b610a34612287565b5f610a43888888888887611a63565b604051632139494f60e21b8152600481018a905260248101899052871515604482015260648101879052851515608482015260a481018590529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906384e5253c9060c4015f604051808303815f87803b158015610aca575f80fd5b505af1158015610adc573d5f803e3d5ffd5b50505050610824878787878587611b6f565b6040516331a9108f60e11b8152600481018490525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610b53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b779190612530565b90505f610b8485836115a8565b9050610b8f8561163c565b60405163486f1a4560e11b81526004810186905260248101859052604481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906390de348a906064015f604051808303815f87803b158015610bfc575f80fd5b505af1158015610c0e573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038481166004830152602482018890527f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb91506044016020604051808303815f875af1158015610c7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca29190612576565b505050505050565b6040516331a9108f60e11b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d339190612530565b90505f610d4083836115a8565b9050610d4b8361163c565b604051632ab4fd0160e21b8152600481018490525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063aad3f4049060240161014060405180830381865afa158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd591906125c7565b80516040516323b872dd60e01b81529192506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916323b872dd91610e289133913091600401612552565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190612576565b50604051635aa6d46160e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635aa6d461906024015f604051808303815f87803b158015610ec8575f80fd5b505af1158015610eda573d5f803e3d5ffd5b50505050610eec828260200151611731565b604051632e1a7d4d60e01b815266853a0d2313c00060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610f51575f80fd5b505af1158015610f63573d5f803e3d5ffd5b505050505f826001600160a01b031666853a0d2313c0006040515f6040518083038185875af1925050503d805f8114610fb7576040519150601f19603f3d011682016040523d82523d5f602084013e610fbc565b606091505b50509050806110125760405162461bcd60e51b815260206004820152601760248201527f47435a3a2053656e64696e6720455448206661696c656400000000000000000060448201526064015b60405180910390fd5b5050505050565b61102282611c2c565b6101ed8282611ce7565b61103583611c2c565b61047e838383611d48565b611048612287565b5f6110578a8a8a8a8a87611a63565b60405163dcfbd29360e01b8152600481018c9052602481018b9052891515604482015260648101899052871515608482015260a4810187905260c4810186905260e481018590529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063dcfbd29390610104015f604051808303815f87803b1580156110ed575f80fd5b505af11580156110ff573d5f803e3d5ffd5b50505050611111898989898587611b6f565b50505050505050505050565b5f66853a0d2313c00034146111655760405162461bcd60e51b815260206004820152600e60248201526d08e86b47440aee4dedcce408aa8960931b6044820152606401611009565b5f611177610100840160e0850161264c565b6001600160a01b0316148061118e575060c0820135155b6111f15760405162461bcd60e51b815260206004820152602e60248201527f47435a3a2043616e6e6f742063686f6f736520696e746572657374206966206a60448201526d0ded2dcd2dcce40c240c4c2e8c6d60931b6064820152608401611009565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b15801561124a575f80fd5b505af115801561125c573d5f803e3d5ffd5b505050505061126e8260400135611846565b5f8061127d8460200135611dcd565b90505f611291610100860160e0870161264c565b6001600160a01b0316036113a4576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016639cb90ba66112db602087018761264c565b604080516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482018590528701356044820152606087013560648201526080870135608482015260a087013560a482015260c087013560c482015261010087013560e48201523061010482018190526101248201819052610144820152610164016020604051808303815f875af1158015611379573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139d9190612667565b91506114c7565b6040805161016081019091525f90806113c0602088018861264c565b6001600160a01b031681526020018381526020018660400135815260200186606001358152602001866080013581526020018660a0013581526020018660e001602081019061140f919061264c565b6001600160a01b039081168252610100880135602083015230604080840182905260608401829052608090930152905163c440844f60e01b81529192507f0000000000000000000000000000000000000000000000000000000000000000169063c440844f9061148390849060040161267e565b6020604051808303815f875af115801561149f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c39190612667565b9250505b60405163a9059cbb60e01b8152336004820152606085013560248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611534573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115589190612576565b506115748261156f6101408701610120880161264c565b611ce7565b6115a18261158a6101608701610140880161264c565b61159c6101808801610160890161264c565b611d48565b5092915050565b5f828152600160208190526040822080549101546001600160a01b039182169190811690841633148015906115e65750336001600160a01b03831614155b15611604576040516310bb5c9d60e31b815260040160405180910390fd5b6001600160a01b03811615806116235750336001600160a01b03831614155b15611632578392505050611636565b9150505b92915050565b604051630380585f60e21b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630e01617c906024016040805180830381865afa1580156116a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c49190612730565b9150506001600160a01b03811630146101ed5760405162461bcd60e51b815260206004820152602960248201527f425a3a205a6170706572206973206e6f7420726563656976657220666f7220746044820152686869732074726f766560b81b6064820152608401611009565b60405163040b850f60e31b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c2878906044015b6020604051808303815f875af115801561179e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047e9190612576565b5f828152602081905260409020546001600160a01b0390811690821633148015906117f557506001600160a01b03811615155b801561180a5750336001600160a01b03821614155b1561047e575f838152600160205260409020546001600160a01b031633811461070757604051636522e96960e01b815260040160405180910390fd5b5f611852600a80612851565b61185c908361285c565b90508161186a600a80612851565b611874908361287b565b146118ae5760405162461bcd60e51b815260206004820152600a60248201526910b83932b1b4b9b4b7b760b11b6044820152606401611009565b6118ce73cbb7c0000ab88b473b1f5afd9ef808440eed33bf333084611dfe565b6040516317a790f160e11b8152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f4f21e290604401611782565b61047e83838333611e56565b5f5b60048110156101ed5781515f90826004811061194d5761194d612892565b60200201516001600160a01b0316146101ed5781515f90826004811061197557611975612892565b60200201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e19190612667565b9050826020015182600481106119f9576119f9612892565b6020020151811115611a5a57611a5a836040015184602001518460048110611a2357611a23612892565b6020020151611a3290846128a6565b85518560048110611a4557611a45612892565b60200201516001600160a01b03169190611e7b565b5060010161192f565b5f80611a7188888887611eab565b9050611abe7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085611921565b8515611acd57611acd87611846565b83611b64576040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd90611b2290339030908a90600401612552565b6020604051808303815f875af1158015611b3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b629190612576565b505b979650505050505050565b84158015611b7c57505f86115b15611b8b57611b8b8287611731565b8215611c235760405163a9059cbb60e01b81526001600160a01b038381166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015611bfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c219190612576565b505b610ca28161192d565b6040516331a9108f60e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611c8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190612530565b6001600160a01b0316336001600160a01b031614611ce457604051631963d1e760e31b815260040160405180910390fd5b50565b5f828152602081815260409182902080546001600160a01b0319166001600160a01b038516908117909155915191825283917f3942babd464ceb1c7d319f75245a8cd41334592b45507f072e7020e63c22a8dc910160405180910390a25050565b611d528282611f83565b5f8381526001602081815260409283902080546001600160a01b03199081166001600160a01b038881169182178455929094018054909116918616918217905583519283529082015284917f649442545e0f313a6d8087b19bc47bd2bd9b63f79d23a773446e00d2ea01d169910160405180910390a2505050565b6040805133602080830191909152818301849052825180830384018152606090920190925280519101205f90611636565b610707846323b872dd60e01b858585604051602401611e1f93929190612552565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611fc0565b81516001600160a01b0385811690915282519084166020909101526107078282612093565b6040516001600160a01b03831660248201526044810182905261047e90849063a9059cbb60e01b90606401611e1f565b6040516331a9108f60e11b8152600481018590525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190612530565b90508084158015611f4657505f86115b80611f4e5750835b15611f6d57611f5d87836115a8565b9050611f688761163c565b611f77565b611f7787836117c2565b9150505b949350505050565b6001600160a01b038216158015611fa257506001600160a01b03811615155b156101ed57604051632235921760e01b815260040160405180910390fd5b5f612014826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661217a9092919063ffffffff16565b905080515f14806120345750808060200190518101906120349190612576565b61047e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611009565b5f5b60048110156121685782515f9082600481106120b3576120b3612892565b60200201516001600160a01b03161461216857825181600481106120d9576120d9612892565b60200201516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612121573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121459190612667565b8360200151826004811061215b5761215b612892565b6020020152600101612095565b506001600160a01b0316604090910152565b6060611f7b84845f85855f80866001600160a01b0316858760405161219f91906128db565b5f6040518083038185875af1925050503d805f81146121d9576040519150601f19603f3d011682016040523d82523d5f602084013e6121de565b606091505b5091509150611b6487838387606083156122585782515f03612251576001600160a01b0385163b6122515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611009565b5081611f7b565b611f7b838381511561226d5781518083602001fd5b8060405162461bcd60e51b815260040161100991906128f6565b604051806060016040528061229a6122b3565b81526020016122a76122b3565b81525f60209091015290565b60405180608001604052806004906020820280368337509192915050565b5f602082840312156122e1575f80fd5b5035919050565b5f608082840312156122f8575f80fd5b50919050565b5f8060a0838503121561230f575f80fd5b61231984846122e8565b946080939093013593505050565b6001600160a01b0381168114611ce4575f80fd5b5f806040838503121561234c575f80fd5b82359150602083013561235e81612327565b809150509250929050565b5f806040838503121561237a575f80fd5b50508035926020909101359150565b5f808284036101c081121561239c575f80fd5b6101a0808212156123ab575f80fd5b9395938601359450505050565b8015158114611ce4575f80fd5b5f805f805f8060c087890312156123da575f80fd5b863595506020870135945060408701356123f3816123b8565b935060608701359250608087013561240a816123b8565b8092505060a087013590509295509295509295565b5f805f60608486031215612431575f80fd5b505081359360208301359350604090920135919050565b5f80828403608081121561245a575f80fd5b6060811215612467575f80fd5b50919360608501359350915050565b5f805f60608486031215612488575f80fd5b83359250602084013561249a81612327565b915060408401356124aa81612327565b809150509250925092565b5f805f805f805f80610100898b0312156124cd575f80fd5b883597506020890135965060408901356124e6816123b8565b95506060890135945060808901356124fd816123b8565b979a969950949793969560a0850135955060c08501359460e001359350915050565b5f61018082840312156122f8575f80fd5b5f60208284031215612540575f80fd5b815161254b81612327565b9392505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215612586575f80fd5b815161254b816123b8565b604051610140810167ffffffffffffffff811182821017156125c157634e487b7160e01b5f52604160045260245ffd5b60405290565b5f61014082840312156125d8575f80fd5b6125e0612591565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152506101208084015181830152508091505092915050565b5f6020828403121561265c575f80fd5b813561254b81612327565b5f60208284031215612677575f80fd5b5051919050565b81516001600160a01b0316815261016081016020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c08301516126dc60c08401826001600160a01b03169052565b5060e083015160e083015261010080840151612702828501826001600160a01b03169052565b5050610120838101516001600160a01b03908116918401919091526101409384015116929091019190915290565b5f8060408385031215612741575f80fd5b825161274c81612327565b602084015190925061235e81612327565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156127ab57815f19048211156127915761279161275d565b8085161561279e57918102915b93841c9390800290612776565b509250929050565b5f826127c157506001611636565b816127cd57505f611636565b81600181146127e357600281146127ed57612809565b6001915050611636565b60ff8411156127fe576127fe61275d565b50506001821b611636565b5060208310610133831016604e8410600b841016171561282c575081810a611636565b6128368383612771565b805f19048211156128495761284961275d565b029392505050565b5f61254b83836127b3565b5f8261287657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176116365761163661275d565b634e487b7160e01b5f52603260045260245ffd5b818103818111156116365761163661275d565b5f5b838110156128d35781810151838201526020016128bb565b50505f910152565b5f82516128ec8184602087016128b9565b9190910192915050565b602081525f82518060208401526129148160408501602087016128b9565b601f01601f1916919091016040019291505056fea26469706673582212200ac1931e2013619a251d4009250be116d297be6b0a73eadf77022bbe19ab105664736f6c634300081800330000000000000000000000000f7eb92d20e9624601d7dd92122aed80efa8ec6a