0 txs
0 calls
constructor
No constructor.
functions
predictAddress
viewfunction predictAddress(address poolManager, bytes32 salt, address owner) view returns (address predicted)
deploy
nonpayablefunction deploy(address poolManager, bytes32 salt, address owner) returns (address hook)
events
No events.
errors
No errors.
creation bytecode
0x60808060405234601557615614908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c90816395c3385614610196575063ef34f29114610032575f80fd5b3461019257602073ffffffffffffffffffffffffffffffffffffffff6101366100bb61005d36610258565b9291869491946152d3916100e76040519661007a848601896102ca565b8488528388019461030c8639604051968791858301948590929173ffffffffffffffffffffffffffffffffffffffff60209181604085019616845216910152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018752866102ca565b60405194859383850197518091895e840190838201905f8252519283915e01015f8152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826102ca565b51902060405190848201927fff0000000000000000000000000000000000000000000000000000000000000084523060601b602184015260358301526055820152605581526101866075826102ca565b51902016604051908152f35b5f80fd5b34610192576101a436610258565b929190926152d3908184019284841067ffffffffffffffff85111761022b5784936101f59361030c863973ffffffffffffffffffffffffffffffffffffffff91821681529116602082015260400190565b03905ff580156102205760209073ffffffffffffffffffffffffffffffffffffffff60405191168152f35b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126101925760043573ffffffffffffffffffffffffffffffffffffffff8116810361019257906024359060443573ffffffffffffffffffffffffffffffffffffffff811681036101925790565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761022b5760405256fe60a06040523461033057604051601f6152d338819003918201601f19168301916001600160401b03831184841017610334578084926040948552833981010312610330578051906001600160a01b038216820361033057602001516001600160a01b03811691828203610330576080525f6101a061007b610348565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06100d9610348565b600181528260208201528260408201528260608201528260808201528260a0820152600160c0820152600160e08201528261010082015282610120820152826101408201528261016082015282610180820152015261200030161515600114801590610323575b8015610316575b8015610309575b80156102fc575b80156102ef575b80156102df575b80156102cf575b80156102c3575b80156102b7575b80156102ab575b801561029f575b8015610293575b8015610287575b610274578115610261575f80546001600160a01b03198116841782556101f493916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36101ee81610368565b506103de565b50604051614e01908161047282396080518181816103d4015281816104a001528181611064015281816112d1015281816113e9015281816117c901528181611d8f0152818161205301528181612317015281816126c0015281816131940152818161426b015261447c0152f35b631e4fbdf760e01b5f525f60045260245ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610194565b5060023016151561018d565b50600430161515610186565b5060083016151561017f565b50601030161515610178565b50602030161515610171565b506040301615156001141561016a565b5060803016151560011415610163565b506101003016151561015c565b5061020030161515610155565b506104003016151561014e565b5061080030161515610147565b5061100030161515610140565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761033457604052565b6001600160a01b0381165f9081525f80516020615293833981519152602052604090205460ff166103d9576001600160a01b03165f8181525f8051602061529383398151915260205260408120805460ff191660011790553391905f805160206152738339815191528180a4600190565b505f90565b6001600160a01b0381165f9081525f805160206152b3833981519152602052604090205460ff166103d9576001600160a01b03165f8181525f805160206152b383398151915260205260408120805460ff191660011790553391907fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775905f805160206152738339815191529080a460019056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146132155750806321d0ee7014613177578063248a9ca3146131e2578063259982e5146131775780632f2ff15d14613139578063334410a21461295b57806336568abe146128fe5780634cbf1c79146125ef5780634de0d32b146122c4578063508a81dd146120c0578063575e24b414611fb75780635e35359e14611e4c57806362d0609a14611ddd5780636c2bbe7e146113ca5780636fe7e6eb14611d2e578063715018a614611cbf57806375b238fc14611c8557806379502c5514611bb05780637dc0d1d014611b8a5780638da5cb5b14611b6557806391d1485414611b1b57806391dd7346146117955780639a0bf14a1461176f5780639b44937e1461145d5780639e252f08146114375780639f063efc146113ca578063a217fddf146113b0578063ae7f653a14611336578063b47b2fb114611235578063b6a8b0fa146103b6578063c4e833ce146110cd578063d547741f14611088578063dc4c90d314611045578063dc98354e1461044a578063e1b4af69146103b6578063f0a56fc81461037c578063f2fde38b146102c85763f564b477146101be575f80fd5b346102c457600319360160c081126102c45760a0136102c45760a43562ffffff811681036102c457335f9081527f50efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694602052604090205460ff16156102745760a0610227366134ce565b205f52600e60205260405f20907fffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffff6dffffff000000000000000000000083549260581b1691161790555f80f35b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177560245260445ffd5b5f80fd5b346102c45760206003193601126102c4576001600160a01b036102e96132c9565b6102f1613f86565b168015610350576001600160a01b035f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b346102c4575f6003193601126102c45760206040517ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b07319418152f35b346102c4576103c4366137cb565b5050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102c45760e06003193601126102c4576104636132c9565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102c457610496613664565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422576040516104d2816133c1565b6024356001600160a01b03811681036102c45781526044356001600160a01b03811681036102c457602082015260643562ffffff811681036102c45760408201526084358060020b81036102c457606082015260a435906001600160a01b03821682036102c457608081019190915260a090205f818152600e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016610100179055906001600160a01b038116906401000276a382101580611028575b15610fca5777ffffffffffffffffffffffffffffffffffffffff000000009060201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14610fb8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818201828111610a4a571c5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808201918213600116610a4a57800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c678000000000000000169060401b1717171717171717171717171717693627a301d71055774c85810290808205693627a301d71055774c851490151715610a4a577ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101818113600116610a4a5760801d60020b906fdb2df09e81959a81455e260799a0632f8101905f6fdb2df09e81959a81455e260799a0632f83129112908015821691151617610a4a5760801d60020b9181830361090157509050905b5f52600e60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffff82549160101b64ffffff000016911617905560206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b5f831215610fb257610912836148af565b620d89e88111610f54576001811615610f2b5770ffffffffffffffffffffffffffffffffff6ffffcb933bd6fad37aa2d162d1a5940015b169060028116610ef0575b60048116610eb5575b60088116610e7a575b60108116610e3f575b60208116610e04575b60408116610dc9575b60808116610d8e575b6101008116610d53575b6102008116610d18575b6104008116610cdd575b6108008116610ca2575b6110008116610c67575b6120008116610c2c575b6140008116610bf1575b6180008116610bb6575b620100008116610b7b575b620200008116610b42575b620400008116610b0b575b6208000016610ada575b5f8413610a80575b63ffffffff8160201c9116155f14610a775760ff5f5b168101809111610a4a576001600160a01b031611610a4357505b90610898565b9050610a3d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff6001610a23565b8015610aad577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04610a0d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6b048a170391f7dc42444e8fa28102908082046b048a170391f7dc42444e8fa21490151715610a4a5760801c610a05565b906d2216e584f5fa1ea926041bedfe988102908082046d2216e584f5fa1ea926041bedfe981490151715610a4a5760801c906109fb565b906e5d6af8dedb81196699c329225ee6048102908082046e5d6af8dedb81196699c329225ee6041490151715610a4a5760801c906109f0565b906f09aa508b5b7a84e1c677de54f3e99bc98102908082046f09aa508b5b7a84e1c677de54f3e99bc91490151715610a4a5760801c906109e5565b906f31be135f97d08fd981231505542fcfa68102908082046f31be135f97d08fd981231505542fcfa61490151715610a4a5760801c906109da565b906f70d869a156d2a1b890bb3df62baf32f78102908082046f70d869a156d2a1b890bb3df62baf32f71490151715610a4a5760801c906109d0565b906fa9f746462d870fdf8a65dc1f90e061e58102908082046fa9f746462d870fdf8a65dc1f90e061e51490151715610a4a5760801c906109c6565b906fd097f3bdfd2022b8845ad8f792aa58258102908082046fd097f3bdfd2022b8845ad8f792aa58251490151715610a4a5760801c906109bc565b906fe7159475a2c29b7443b29c7fa6e889d98102908082046fe7159475a2c29b7443b29c7fa6e889d91490151715610a4a5760801c906109b2565b906ff3392b0822b70005940c7a398e4b70f38102908082046ff3392b0822b70005940c7a398e4b70f31490151715610a4a5760801c906109a8565b906ff987a7253ac413176f2b074cf7815e548102908082046ff987a7253ac413176f2b074cf7815e541490151715610a4a5760801c9061099e565b906ffcbe86c7900a88aedcffc83b479aa3a48102908082046ffcbe86c7900a88aedcffc83b479aa3a41490151715610a4a5760801c90610994565b906ffe5dee046a99a2a811c461f1969c30538102908082046ffe5dee046a99a2a811c461f1969c30531490151715610a4a5760801c9061098a565b906fff2ea16466c96a3843ec78b326b528618102908082046fff2ea16466c96a3843ec78b326b528611490151715610a4a5760801c90610981565b906fff973b41fa98c081472e6896dfb254c08102908082046fff973b41fa98c081472e6896dfb254c01490151715610a4a5760801c90610978565b906fffcb9843d60f6159c9db58835c9266448102908082046fffcb9843d60f6159c9db58835c9266441490151715610a4a5760801c9061096f565b906fffe5caca7e10e4e61c3624eaa0941cd08102908082046fffe5caca7e10e4e61c3624eaa0941cd01490151715610a4a5760801c90610966565b906ffff2e50f5f656932ef12357cf3c7fdcc8102908082046ffff2e50f5f656932ef12357cf3c7fdcc1490151715610a4a5760801c9061095d565b906ffff97272373d413259a46990580e213a8102908082046ffff97272373d413259a46990580e213a1490151715610a4a5760801c90610954565b70ffffffffffffffffffffffffffffffffff700100000000000000000000000000000000610949565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f54000000000000000000000000000000000000000000000000000000000000006044820152fd5b82610912565b81607f03607f8111610a4a571b610660565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f52000000000000000000000000000000000000000000000000000000000000006044820152fd5b5073fffd8963efd1fc6a506488495d951d5263988d268210610597565b346102c4575f6003193601126102c45760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102c45760406003193601126102c4576110cb6004356110a76132b3565b906110c66110c1825f526001602052600160405f20015490565b613e7f565b613fc5565b005b346102c4575f6003193601126102c4575f6101a06040516110ed81613442565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c0602060405161115081613442565b60018152818101905f8252604081015f8152606082015f8152608083015f815260a084015f815260c085016001815260e0860190600182526101008701925f84526101208801945f86526101408901965f88526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b346102c4576101606003193601126102c45761124f6132c9565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102c45760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102c4576101443567ffffffffffffffff81116102c4576112c59036906004016132f3565b50506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422576040611305610124356148db565b7fffffffff00000000000000000000000000000000000000000000000000000000835192168252600f0b6020820152f35b346102c457600319360160c081126102c45760a0136102c45760a4358015158091036102c457611364613df7565b60a061136f366134ce565b205f52600e60205260405f20907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff61ff0083549260081b1691161790555f80f35b346102c4575f6003193601126102c45760206040515f8152f35b346102c4576113d8366135be565b505050505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102c4575f6003193601126102c45760206001600160a01b03600c5416604051908152f35b346102c45760806003193601126102c45760243560043567ffffffffffffffff82116102c457816004019161016060031982360301126102c45760443567ffffffffffffffff81116102c4576114b79036906004016132f3565b91906064359267ffffffffffffffff84116102c457606060031985360301126102c4576114e2613df7565b6115476115346001600160a01b03600d541697604051987ff8d9d0ec000000000000000000000000000000000000000000000000000000008a5260048a01528760248a015260a060448a015280613855565b61016060a48a01526102048901916138a5565b9160248401359460038610156102c4576116098894859461161e946001600160a01b036115f161014460409b8d60c48c0152604481013560e48c015283611590606483016132df565b166101048c015260848101356101248c015260a4810135828c015260c48101356101648c015260e48101356101848c0152836115cf61010483016132df565b166101a48c0152836115e461012483016132df565b166101c48c0152016132df565b166101e48801526003198784030160648801526138a5565b90600319848303016084850152600401613c05565b0381733e157499c42fe59c0072bc3aeddca068ceb1095c5af4908115611764575f935f9261170b575b507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f391906002036116bf576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081015b0390a3005b6040805160608082526004908201527f6d696e74000000000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081016116ba565b600294507f261bf5276691f2ca3f4f5b0804aa42bcb54195a7f08c63d234843763b1f797f392506117539060403d60401161175d575b61174b818361345f565b810190613a0f565b9490949250611647565b503d611741565b6040513d5f823e3d90fd5b346102c4575f6003193601126102c45760206001600160a01b03600d5416604051908152f35b346102c45760206003193601126102c45760043567ffffffffffffffff81116102c4576117c69036906004016132f3565b907f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b03831690813303611abd5782019282840361014081126102c45760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff406118516040519761183d89613426565b611846886132df565b895260208801613555565b926020880193845201126102c4576040611966946101208251916118748361340a565b61188060c082016134c0565b835261188e60e082016134c0565b6020840152610100810135848401520135606082015280828801528251946119385f60209761197a86516118c28b8261345f565b83815287519b8c97889687957f5a6bcfda00000000000000000000000000000000000000000000000000000000875260048701906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190613788565b03925af1938415611764575f94611a80575b506001600160a01b0383949551169051918560801d600f0b86600f0b905f81125f14611a56576119be6119d0916148af565b84846001600160a01b03885116614b86565b5f811215611a24576119f6946119ed6001600160a01b03926148af565b94015116614b86565b6040519181830152808252611a0c60408361345f565b611a20604051928284938452830190613788565b0390f35b925f8413611a37575b50505050506119f6565b611a4c946001600160a01b0391015116614b0e565b8083808080611a2d565b5f8113611a64575b506119d0565b611a7a9084846001600160a01b03885116614b0e565b87611a5e565b9293506040833d604011611ab5575b81611a9c6040938361345f565b810103126102c457915192916001600160a01b0361198c565b3d9150611a8f565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f6e6c79206d616e616765722063616e2063616c6c00000000000000000000006044820152fd5b346102c45760406003193601126102c457611b346132b3565b6004355f5260016020526001600160a01b0360405f2091165f52602052602060ff60405f2054166040519015158152f35b346102c4575f6003193601126102c45760206001600160a01b035f5416604051908152f35b346102c4575f6003193601126102c45760206001600160a01b03600b5416604051908152f35b346102c4575f6003193601126102c4576001600160a01b03600254166001600160a01b0360035416906001600160a01b03600454166001600160a01b03600554169060405191611c0a83611c03816136cb565b038461345f565b6001600160a01b036007541692611c6b6001600160a01b0360085416916001600160a01b0360095416936001600160a01b03600a541695604051998a998a5260208a0152604089015260608801526101206080880152610120870190613788565b9360a086015260c085015260e08401526101008301520390f35b346102c4575f6003193601126102c45760206040517fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758152f35b346102c4575f6003193601126102c457611cd7613f86565b5f6001600160a01b0381547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346102c4576101006003193601126102c457611d486132c9565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102c457611d7b613664565b50611d846134b0565b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102c45760206003193601126102c4576004355f52600e60205260c060405f205462ffffff6040519160ff81161515835260ff8160081c16151560208401528060101c60020b60408401528060281c60020b60608401528060401c60020b608084015260581c1660a0820152f35b346102c45760606003193601126102c457611e656132c9565b611e6d6132b3565b6001600160a01b0360443591611e81613f86565b166040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481855afa908115611764575f91611f85575b508211611f27576040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039390931660248401526044808401929092529082526110cb9190611f2260648361345f565b614aa1565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152fd5b90506020813d602011611faf575b81611fa06020938361345f565b810103126102c4575184611ec5565b3d9150611f93565b346102c4576101406003193601126102c457611fd16132c9565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102c45760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3601126102c4576101243567ffffffffffffffff81116102c4576120479036906004016132f3565b50506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361042257606062ffffff612087614454565b907fffffffff00000000000000000000000000000000000000000000000000000000604094939451941684526020840152166040820152f35b346102c45760406003193601126102c45760243560043567ffffffffffffffff82116102c4578160040182360360606003198201126102c457612101613df7565b6001600160a01b03600d541693604051947f5e47ebcc000000000000000000000000000000000000000000000000000000008652600486015283602486015260606044860152604085806121586064820187613c05565b0381733e157499c42fe59c0072bc3aeddca068ceb1095c5af4928315611764575f955f9461227d575b5035917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d018212156102c4570160a48101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd36839003018112156102c457016004018035919067ffffffffffffffff83116102c45760208360051b36039101136102c45760017f53062b1c1dd477b1a6f9d3a132f37e6bbdb2d2f25cd2a848777ef81077dc823992115f146116bf576040805160608082526006908201527f72656465656d00000000000000000000000000000000000000000000000000006080820152602081019590955284015230928060a081016116ba565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9d96506122ba91945060403d60401161175d5761174b818361345f565b9590959390612181565b346102c45760c06003193601126102c4576122de366134ce565b60a435906001600160a01b0382168092036102c4576122fb613df7565b60a08120906fffffffffffffffffffffffffffffffff61233b837f000000000000000000000000000000000000000000000000000000000000000061435c565b1690811561256b57825f52600e6020526123a360405f205460281c60020b845f52600e60205260405f205460401c60020b61237885600f0b6139c8565b90604051926123868461340a565b83526020830152600f0b60408201525f606082015230908361415d565b6001600160a01b03602081845116930151168160801d5f81600f0b135f14612563576fffffffffffffffffffffffffffffffff16915b5f81600f0b135f1461255b576fffffffffffffffffffffffffffffffff16925b826124ef575b5082612440575b50916060917fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f899360405192835260208301526040820152a3005b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905293919290602090859060449082905f905af1928315611764577fe3b43c74eda3ceb102b5671a13d2b222882fe5b0fc99567be0a26ba9e4083f89946060946124c0575b5091935091612406565b6124e19060203d6020116124e8575b6124d9818361345f565b8101906139f7565b50876124b6565b503d6124cf565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081523060048201526024810184905290602090829060449082905f905af1801561176457156123ff576125549060203d6020116124e8576124d9818361345f565b50866123ff565b505f926123f9565b505f916123d9565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f206c697175696469747920617661696c61626c6520666f7220776974686460448201527f726177616c0000000000000000000000000000000000000000000000000000006064820152fd5b346102c4576101206003193601126102c457612609613df7565b60a0612614366134ce565b205f52600e60205260405f20604051907fc7715bc6000000000000000000000000000000000000000000000000000000008252612653600483016138f1565b61265f60a483016138f1565b60a4356101448301526001600160a01b03612678613664565b1661016483015260e43562ffffff81168091036102c457610184830152610104356001600160a01b0381168091036102c4576101a48301526101c48201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166101e482015260a0816102048173f6975114a3bdf582926846988ed6eed49a71642c5af4908115611764575f9161286c575b50600435906001600160a01b038216918281036102c45750602435906001600160a01b038216928383036102c45760209361276a612777926fffffffffffffffffffffffffffffffff95506060850151903090614068565b6080830151903090614068565b828101805160020b6127c26040840191825160020b86865116600f0b90604051926127a18461340a565b83528883015260408201525f606082015230906127bd366134ce565b61415d565b8060801d5f81600f0b125f14612864576127dc86916139c8565b16905b600f0b5f81121561285c576127f486916139c8565b16905b60a0612802366134ce565b209286865116945160020b905160020b90604051958652888601526040850152606084015260808301527ff6ce0596cc52d2a0d79c7990af39900c6e552f542a8c4342ebabb6f63957f9d360a03393a35116604051908152f35b505f906127f7565b505f906127df565b905060a0813d60a0116128f6575b8161288760a0938361345f565b810103126102c4576040519061289c826133c1565b8051906fffffffffffffffffffffffffffffffff821682036102c45760809183526128c9602082016138e3565b60208401526128da604082016138e3565b6040840152606081015160608401520151608082015281612712565b3d915061287a565b346102c45760406003193601126102c4576129176132b3565b336001600160a01b03821603612933576110cb90600435613fc5565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102c45760206003193601126102c45760043567ffffffffffffffff81116102c45780600401908036036101206003198201126102c45761299b613f86565b6001600160a01b036129ac84613841565b1615158061311c575b806130ff575b806130e2575b1561308457604051906020820190602082526129dc856132df565b6001600160a01b0316604084015260248401936129f8856132df565b6001600160a01b031660608501526044810194612a14866132df565b6001600160a01b031660808601526064820196612a30886132df565b6001600160a01b031660a08701526084830190612a4d8282613855565b60c089016101209052610160890190612a65926138a5565b9760a4850199612a748b6132df565b6001600160a01b031660e08a015260c4860197612a90896132df565b6001600160a01b03166101008b015260e4870199612aad8b6132df565b6001600160a01b03166101208201528061010489019c612acc8e6132df565b6001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252612b0b908261345f565b5190206040516020810190602082526002546001600160a01b031660408201526003546001600160a01b031660608201526004546001600160a01b031660808201526005546001600160a01b031660a082015260c081016101209052806101608101612b76906136cb565b6007546001600160a01b031660e08301526008546001600160a01b03166101008301526009546001600160a01b0316610120830152600a546001600160a01b0316610140830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018252612bed908261345f565b51902014613026576001600160a01b03612c93612cc29382612c647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd9982612c35819a613841565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255613841565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006003541617600355613841565b167fffffffffffffffffffffffff00000000000000000000000000000000000000006004541617600455613841565b167fffffffffffffffffffffffff000000000000000000000000000000000000000060055416176005553592018212156102c4570160048101359067ffffffffffffffff82116102c45781360360248201136102c457612d2360065461367a565b601f8111612fc3575b505f90601f8311600114612efd57612e636001600160a01b03979488612d98819787612e9298612ec19c9b9885985f92612eef575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617600655613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600754161760075582612dcc82613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600854161760085582612e0085613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600954161760095582612e3488613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600a541617600a55613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600d541617600d55613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600b541617600b55613841565b167fffffffffffffffffffffffff0000000000000000000000000000000000000000600c541617600c555f80f35b016024013590508e80612d61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083169160065f5260205f20925f5b818110612fa85750946001600160a01b03612d98819a600188612ec19c9b98859b98612e6398612e929c889b10612f6c575b505050811b01600655613841565b6024910101357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600384901b60f8161c191690558e8080612f5e565b60248484010135855560019094019360209283019201612f2c565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f601f840160051c8101916020851061301c575b601f0160051c01905b8181106130115750612d2c565b5f8155600101613004565b9091508190612ffb565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f636f6e666967206e6f74206368616e67650000000000000000000000000000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f636f6e66696720686173207a65726f20616464726573730000000000000000006044820152fd5b506001600160a01b036130f760648401613841565b1615156129c1565b506001600160a01b0361311460448401613841565b1615156129bb565b506001600160a01b0361313160248401613841565b1615156129b5565b346102c45760406003193601126102c4576110cb6004356131586132b3565b906131726110c1825f526001602052600160405f20015490565b613ed9565b346102c45761318536613321565b50505050506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610422577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102c45760206003193601126102c457602061320d6004355f526001602052600160405f20015490565b604051908152f35b346102c45760206003193601126102c457600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036102c457817f7965db0b0000000000000000000000000000000000000000000000000000000060209314908115613289575b5015158152f35b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483613282565b602435906001600160a01b03821682036102c457565b600435906001600160a01b03821682036102c457565b35906001600160a01b03821682036102c457565b9181601f840112156102c45782359167ffffffffffffffff83116102c457602083818601950101116102c457565b906101606003198301126102c4576004356001600160a01b03811681036102c4579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126102c45760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126102c45760c491610144359067ffffffffffffffff82116102c4576133bd916004016132f3565b9091565b60a0810190811067ffffffffffffffff8211176133dd57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff8211176133dd57604052565b6060810190811067ffffffffffffffff8211176133dd57604052565b6101c0810190811067ffffffffffffffff8211176133dd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176133dd57604052565b359062ffffff821682036102c457565b60e435908160020b82036102c457565b35908160020b82036102c457565b60031960a09101126102c457604051906134e7826133c1565b816004356001600160a01b03811681036102c45781526024356001600160a01b03811681036102c457602082015260443562ffffff811681036102c45760408201526064358060020b81036102c4576060820152608435906001600160a01b03821682036102c45760800152565b91908260a09103126102c45760405161356d816133c1565b60806135b981839561357e816132df565b855261358c602082016132df565b602086015261359d604082016134a0565b60408601526135ae606082016134c0565b6060860152016132df565b910152565b906101a06003198301126102c4576004356001600160a01b03811681036102c4579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8201126102c45760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c8301126102c45760c49161014435916101643591610184359067ffffffffffffffff82116102c4576133bd916004016132f3565b60c435906001600160a01b03821682036102c457565b90600182811c921680156136c1575b602083101461369457565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691613689565b6006545f92916136da8261367a565b808252916001811690811561374e57506001146136f5575050565b60065f9081529293509091907ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b838310613734575060209250010190565b600181602092949394548385870101520191019190613723565b60209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b6101206003198201126102c4576004356001600160a01b03811681036102c4579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc8301126102c45760249160c4359160e43591610104359067ffffffffffffffff82116102c4576133bd916004016132f3565b356001600160a01b03811681036102c45790565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102c457016020813591019167ffffffffffffffff82116102c45781360383136102c457565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b51908160020b82036102c457565b6004356001600160a01b0381168091036102c45781526024356001600160a01b0381168091036102c457602082015260443562ffffff81168091036102c45760408201526064358060020b8091036102c4576060820152608435906001600160a01b0382168092036102c45760800152565b6001600160a01b036139c2608080938361397c826132df565b1686528361398c602083016132df565b16602087015262ffffff6139a2604083016134a0565b1660408701526139b4606082016134c0565b60020b6060870152016132df565b16910152565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610a4a575f0390565b908160209103126102c4575180151581036102c45790565b91908260409103126102c4576020825192015190565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102c457016020813591019167ffffffffffffffff82116102c4578160051b360383136102c457565b906020838281520160208260051b85010193835f915b848310613a9e5750505050505090565b9091929394957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820301855286357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61843603018112156102c4578301613b52613b37613b1c613b0e8480613855565b60a0875260a08701916138a5565b613b296020850185613855565b9086830360208801526138a5565b613b446040840184613855565b9085830360408701526138a5565b60608201359060ff82168092036102c4578360808060209586956060600199015201359101529801950193019190949394613a8e565b90602083828152019260208260051b82010193835f925b848410613baf5750505050505090565b909192939495602080613bf5837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08660019603018852613bef8b88613855565b906138a5565b9801940194019294939190613b9f565b8035917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea1823603018312156102c45760608152613de592820191613dd7906001600160a01b03613dbc610140613d94613d56613d18613cdb8a87613c8e6020613c878e6101c0613c758780613855565b919092610160606082015201916138a5565b93016132df565b1660808c015260408c013560a08c0152613cab60608d018d613a25565b8c83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160c08e015290613a78565b613ce860808c018c613a25565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08c84030160e08d0152613a78565b613d2560a08b018b613a25565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08b8403016101008c0152613b88565b613d6360c08a018a613a25565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8403016101208b0152613b88565b9660e081013582880152610100810135610160880152610120810135610180880152016132df565b166101a0840152602081013560208401526040810190613855565b9160408185039101526138a5565b90565b908160209103126102c4575190565b335f9081527f7ea4fe4b1bd1a95e05a1660ceb7679ada20cb5ab55b68fe91cbb5774952dbf89602052604090205460ff1615613e2f57565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527ffacaf2747a7486cf5730e9265973fb54447d3ace6e7e4711f6360826b073194160245260445ffd5b805f52600160205260405f206001600160a01b0333165f5260205260ff60405f20541615613eaa5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f205416155f14613f8057805f52600160205260405f206001600160a01b0383165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556001600160a01b03339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b6001600160a01b035f54163303613f9957565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b805f52600160205260405f206001600160a01b0383165f5260205260ff60405f2054165f14613f8057805f52600160205260405f206001600160a01b0383165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556001600160a01b03339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000060208083019182526001600160a01b0385166024840152604480840196909652948252929390925f906140c060648661345f565b84519082855af15f513d82614138575b5050156140dc57505050565b611f22614136936001600160a01b03604051917f095ea7b30000000000000000000000000000000000000000000000000000000060208401521660248201525f60448201526044815261413060648261345f565b82614aa1565b565b90915061415557506001600160a01b0381163b15155b5f806140d0565b60011461414e565b916142125f926141e161425e9560406001600160a01b0381519661418088613426565b169586815260208101928352019283526040519460208601525160408501906001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b60e08501526020820151900b610100840152604081015161012084015260600151610140830152565b61014081526142236101608261345f565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190613788565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115611764575f916142b4575b50602081519181808201938492010103126102c4575190565b90503d805f833e6142c5818361345f565b8101906020818303126102c45780519067ffffffffffffffff82116102c4570181601f820112156102c45780519067ffffffffffffffff82116133dd5760405192614338601f84017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020018561345f565b828452602083830101116102c457815f9260208093018386015e830101525f61429b565b9060405160208101918252600660408201526040815261437d60608261345f565b51902060038101809111610a4a576001600160a01b0391602460209260405194859384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa8015611764575f906143f0575b6fffffffffffffffffffffffffffffffff91501690565b506020813d60201161442a575b8161440a6020938361345f565b810103126102c4576fffffffffffffffffffffffffffffffff90516143d9565b3d91506143fd565b51906001600160a01b03821682036102c457565b519081600f0b82036102c457565b60a0614461366024613555565b20805f52600e60205260ff60405f205460081c1615614886577f00000000000000000000000000000000000000000000000000000000000000006fffffffffffffffffffffffffffffffff6144b6838361435c565b161561485c57815f52600e60205260405f20906001600160a01b03600b5416906001600160a01b03806005541691604051947f89b4f2e0000000000000000000000000000000000000000000000000000000008652614519600487016024613963565b60a4860152600f60c486015216918260e485015261010484015261012483015261012082610144817315525f9b5895977691c1337fea64e9952b2b53e75af4918215611764575f92614788575b5060a08201515f848152600e602052604090819020805460c086015190921b6affffff00000000000000001660289390931b67ffffff0000000000167fffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffff9092169190911791909117905560e0820151600f81900b15801590614777575b614656575b50506040816001600160a01b0360808160607fd06db7d30787f57c9bc64cf2fcac5362c74bcbb3ab63b6b6ace57b25046a2766960151169201511682519182526020820152a27f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b6fffffffffffffffffffffffffffffffff92916020918085161561476f578416905b61010084015185811615614765575f86918216935b6146fa60405161469d888261345f565b838152604051998a97889687957f234266d70000000000000000000000000000000000000000000000000000000087526146db600488016024613963565b1660a48601521660c484015261010060e4840152610104830190613788565b03925af1908115611764577fd06db7d30787f57c9bc64cf2fcac5362c74bcbb3ab63b6b6ace57b25046a276692604092614736575b50916145e8565b6147579060203d60201161475e575b61474f818361345f565b810190613de8565b505f61472f565b503d614745565b50845f809361468d565b505f90614678565b50610100830151600f0b15156145e3565b909150610120813d8211614854575b816147a5610120938361345f565b810103126102c45760405190610120820182811067ffffffffffffffff8211176133dd5761484791610100916040528051845260208101516020850152604081015160408501526147f860608201614432565b606085015261480960808201614432565b608085015261481a60a082016138e3565b60a085015261482b60c082016138e3565b60c085015261483c60e08201614446565b60e085015201614446565b610100820152905f614566565b3d9150614797565b50507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b507f575e24b400000000000000000000000000000000000000000000000000000000905f905f90565b7f80000000000000000000000000000000000000000000000000000000000000008114610a4a575f0390565b90600a54916001600160a01b035f931615614a79576001600160a01b0360055416604051917f21e94f29000000000000000000000000000000000000000000000000000000008352614931600484016024613963565b60a4830152600f60c483015260e482015260608161010481733e157499c42fe59c0072bc3aeddca068ceb1095c5af48015611764575f905f925f91614a26575b50826149a0575b5050507fb47b2fb1000000000000000000000000000000000000000000000000000000009190565b6001600160a01b03600c5416803b156102c4575f92836064926001600160a01b039460405197889687957f46155743000000000000000000000000000000000000000000000000000000008752166004860152602485015260448401525af1801561176457614a11575b8080614978565b614a1e9192505f9061345f565b5f905f614a0a565b925050506060813d606011614a71575b81614a436060938361345f565b810103126102c4578051906001600160a01b03821682036102c457604060208201519101519190915f614971565b3d9150614a36565b507fb47b2fb10000000000000000000000000000000000000000000000000000000091505f90565b905f602091828151910182855af115611764575f513d614b0557506001600160a01b0381163b155b614ad05750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60011415614ac9565b9192906001600160a01b0316803b156102c4575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af1801561176457614b7c5750565b5f6141369161345f565b9091906001600160a01b031680614bfc5750506001600160a01b03600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af1801561176457614be15750565b614bf99060203d60201161475e5761474f818361345f565b50565b9092916001600160a01b031691823b156102c457604051937fa58411940000000000000000000000000000000000000000000000000000000085528260048601525a945f816024818389819bf1801561176457614daf575b506001600160a01b031684308214614d2e576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af18015614d2357916020918493614d06575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af1908115614cfa5750614be15750565b604051903d90823e3d90fd5b614d1c90833d85116124e8576124d9818361345f565b505f614cbb565b6040513d85823e3d90fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481019390935291926020928492506044918391905af18015614d2357916020918493614d92575b50614cbd565b614da890833d85116124e8576124d9818361345f565b505f614d8c565b614dbc9195505f9061345f565b5f936001600160a01b03614c5456fea2646970667358221220e5359d0f5027be7cc92ba55f76c892606d45c2bf6562b6a346a5379479c4273964736f6c634300081a00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0da6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4950efbde2d46c37e9785f1791697f77e94bb7b701e19f1930a668820722d37694a26469706673582212206858df95cf732ea125a14ff88e94e975704f2d94287f80b53aeae785dfff030064736f6c634300081a0033